From 6cfd0f8962698e90ab3abe1959fd289f339af723 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 20 Jan 2020 12:13:23 +0100 Subject: [PATCH] gotthard2: first edit --- .../gotthard2DetectorServer/RegisterDefs.h | 12 ++ .../bin/gotthard2DetectorServer_developer | Bin 169796 -> 169976 bytes .../slsDetectorFunctionList.c | 158 +++++++++++++++--- .../slsDetectorServer_defs.h | 2 + .../include/slsDetectorFunctionList.h | 2 + .../include/slsDetectorServer_funcs.h | 4 +- .../slsDetectorServer/src/slsDetectorServer.c | 10 +- .../src/slsDetectorServer_funcs.c | 92 ++++++++-- slsDetectorSoftware/include/Detector.h | 16 +- slsDetectorSoftware/src/CmdProxy.h | 4 + slsDetectorSoftware/src/Detector.cpp | 14 +- slsDetectorSoftware/src/slsDetector.cpp | 13 ++ slsDetectorSoftware/src/slsDetector.h | 12 +- slsSupportLib/include/ToString.h | 21 +++ slsSupportLib/include/sls_detector_defs.h | 8 + slsSupportLib/include/sls_detector_funcs.h | 5 +- slsSupportLib/include/versionAPI.h | 2 +- 17 files changed, 322 insertions(+), 53 deletions(-) diff --git a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h index 17bba40ed..45aab3351 100644 --- a/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h +++ b/slsDetectorServers/gotthard2DetectorServer/RegisterDefs.h @@ -144,10 +144,22 @@ #define ASIC_INT_EXPTIME_MSB_REG (0x05 * REG_OFFSET + BASE_ASIC) + +/* Packetizer -------------------------------------------------------------*/ + +/* Packetizer Config Register*/ +#define PKT_CONFIG_REG (0x00 * REG_OFFSET + BASE_PKT) + +#define PKT_CONFIG_NRXR_MAX_OFST (0) +#define PKT_CONFIG_NRXR_MAX_MSK (0x0000003F << PKT_CONFIG_NRXR_MAX_OFST) +#define PKT_CONFIG_RXR_START_ID_OFST (8) +#define PKT_CONFIG_RXR_START_ID_MSK (0x0000003F << PKT_CONFIG_RXR_START_ID_OFST) + /* Flow control registers --------------------------------------------------*/ /* Flow status Register*/ #define FLOW_STATUS_REG (0x00 * REG_OFFSET + BASE_FLOW_CONTROL) + #define FLOW_STATUS_RUN_BUSY_OFST (0) #define FLOW_STATUS_RUN_BUSY_MSK (0x00000001 << FLOW_STATUS_RUN_BUSY_OFST) #define FLOW_STATUS_WAIT_FOR_TRGGR_OFST (3) diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 6b9e1fa8bf642718c6b492694e0641785506ef2f..7798bc2af3e7639b661953d2dbedadf23cb4f809 100755 GIT binary patch literal 169976 zcmeF43!Ge4k?`-#-04i-9mq|0APf@-A-o?(fdQFO1_&-FtEix82qZu>B#{gX2&Tme zMujyZYE;&Z%CfBDnnm0NmL=^vXk4QP43KwvAcO$n6$0cv-@oeCy>t3b_spb?Jp6X@ zJL$T0&!bMAI(6#QdED8jpM6GERh1Y0RePWD!2g8BM^|f*^jcz)Qn|#!?snf5z`l#tsXUsbO=vgz4K8`3F2NJXnXTJZ#f>PW*3VGgX{GMg-(e^7p zrx1h(@^=!Ug|IK-y@b;Vg9-B2M3_JrD-ZmgLC7i;{`Ve(-_7sIgaP&}G#x@1LpYIe z0^wkS{2fF%hA>lsZ+~@8gnY`LUV*j{7#0M=dZ0Y*&5_c z;JLwwkoqm7;zv5qck_Ir^Zad|Tb$>Jhf+)fp^E&@b>4pr+=b5b6{Nr1dG6$WtMfdL z^f~8wA@6T;o`1sg{5wNEu@4e-0{P8%-rvXb?auQTcwXo{U(E9Z&hz)lZ?W^dFYlK* z&w1V#oaa{FZ*rc0!t++=xs~|7_Gr%&eh#HRY3KQJaHE{(Nj#5po@>c(yz_h>&&|&B z)5Jg9d48Vf^PT6d#GmXue}VTio##C7uXCPVc{_->1;VY)`>*o6z<>3yw5t%Pw_m)dA^M}$2!md%JV7C^E;t`3G%g^&MoxM;Qa*W{mbNcp7Y$s`-`0C zM$%7no+l9hYUlY;p4*(~f8=?d^L!!Cw>i(}kl&ro^DUHjkMsO{;^&>`M|i))dHy)> zmpjkD;d#CD9O)5~c@2bD2roJB#}I#~^ZXv3kG!;6^~W$Y-yojrOd0P(+U63Ym@$3g ztky|awoaTFMlBhU>@Eqjn>FK-Pfuy}F1>WxRkJSlX0={<$;@lKDOXQzC9_MXUOoBJ z$y2?{TW3t4rvK0KX3e~E>h#u2c{^$HEanz zwt6$899w66+PmV4Ni)4mFPqXz(XCfbBkmPbu9yYI6DLyC^cfSU&A4Pz>(m+3y^E(# zpA7cWX)`9ZUNwEz)XA56pPe<`$eqa0s8AF1o5mrR>6YYG&!3M*#J zZ1t{~G>uFpE2;mismhf}t>MqCDN@a;GcIYJ=FPeW;;#rJQsOL&I~{_&nPIk9&6+l4 z3Kh6=%B0EOq}CZzi9LDhXO(d=C$G3_njnn!$wK+0OD>rLDHA8oy6R%*ozx4`HIG>& zk@kWdej>h0%bEaOF=^^_?{im9ZB@Z&oeck>Lmrez%AqsQKI^@wO+5bS| z6&0T@gvQT2iiWPjrU?Iub&3*Ut+4Rxg}m!=#(%&#lGJPSot-nsmy3G(;FZ+x4f zzS_G$Uh>yGrP@1$z9xTX3w%%rpDVB_@$&?>z9xNij2M9Yox-3$Hp)j}Gn85cHsfc4 zz+%wwcecR&Lik*P>q7WEfyEHx?|gyHNW4&BGXyRYSPVP?E;St;l%=v3*jXKivi8wQh~+r<8PV3VmR`*TwpUMR|_nLAAbdbZGx~~U@_47 z+bFQvDVqegG4&;ZO}}pu*o^M20-N!OZaAOFk z1(pc~f5Qcq2@8K&fn~D6-zb4?g3utaOjh_CBXF~V-Z+8Z6T(LdY?F;+1#SuP;{`q= zgijRs%n&|B;0Yn@@9tb1c)2x=g(JOt=wSXOgWuaY_o%yrs{Fd~Ue5E+%%vOW&IvMJ zE=_+(CvlA%Pfa(UQ{&~II>5`2hIniI>ipWqao*Ojgz*1VGqyVQNKvm8^-NLk6nsd* zmlS+T!M7BAOu^R_d``jl6n!^ETcl{46m6BF?NYR5indMB)+yRPg)F3yjTEwyqTi>G zpA_Fr$958&(-+( zugz*){7;|1$7`<14F2w?Gea);bmQgT<@b2`n#|A@p9j8L;j{w}bKrd(cwYw|?!bWq zk8t3O17{t0qyz8g!23J!C1PX35!HT+hras8>2%%q(rs6c z_wrT#g#1a3bHD!XjF&&j_j4;UHO(uCTjihSjc%O#l|zWj?@7`hJ^%DB{U*9hac30c z?jh|x5_jOp(f+{irm+!*X*|)1RbHAtn-+bSjMuohcG&$(Yt!2wA0Rq(+_g&wO4@Oy z()v57XI1lR^n&kSe8EjMUT$vS=hp=_`PI~aHFaBEKh#T8hOe|N{!ZHeU8b#Z@egzN zFCCpjXZZdlD{gD=Y-($qdq^5RJpWw-yy5wiYw&^P@Xh4rX2>r?ei`!1P!@bx?bn97 znmB33f%(uWv`UyKI$wB_+SKIvoia{{e$TJ-tHLzzIkl!F-rq^w8fdTf*7<~BcT-2u zIlCjXdr@IrO)g#k0WU4^{qs^GzyI!LDKD$#!OIKL|1$|~g!zQK2zkOX!bZYQLYi@6 z4Bo<4BBKWH`o=821~)F^C7X=L$h-<39oZ~fD`eQG?x zH_knw5RSpZ_ppup*J+Dd+QJ7%2s&wt>gJB1Cf9*{b@up+iL;A$gb_8gAHV7Cw52aH*<9ss{oG;D;^p68<7LRJh!&Hv zP=>s9^u6VoPb^rfaXjcUc~V=XN}fYHGo76Ut?LWl71_*YE-aDeG3s|1^&3Z;Lz~wG zW4$%OA@rFs^qGU3R|f|nM*uM4kOo7^Kyo;o4_?~;X zCZ?l#leBw(DKksilsj~smU+n4VVTs=+pi2APeR9&4joS>=(v|Yx4p(2ynaz3m-fBj zsYQimyd1%XMTOw$&VpNZuo0PhW_CyOQ(g1~&w_hyc1P|N2e%2_^Rqkh8y(yW;9i{F z(VC+EFD)tzT;Ey9yg(Usx#gJ``R&gy_@E!ZoA|Be_j!I({65QX4ZqLv>+`#j-zt8e z;g>NZ^EAI6zZ*I`GEXgn=L2ao+Wp2l@lz&^{#kQtGMt+4S+xQh;ZCca;o#;A=8gBE#ow}tpL*4yqx+$&`PI4|Z24{{?RKYb+pTU}soNNI2KjEOL0`_BmzFV1WL$#G z^+d+UjFd5QU^=s-sU!c*{T4Z6i_6N}!r{-zD!74M-j$)r+KNqmu z3aX<|x+Wak88{g0oAw5poe;)jAv=thA#VMvO=)big2WfvG`};${PJ~_B|4+ClXoTL zPJKeuH?l|n4IcbGJUAB|A-J2m{eo~0;g^K}Ap9rcUc!BZ`w9O=cz^)E2E(UdQGyp| z887}FUgV+W-xIv}cjE=`l=hD~yjTb?@bhFAHgz-~Ep|!2wB!-j^Wzp5JIc>@7W}*A zo!DFOGU8d7U&u4^%Mj|HgJ*XWU-Js%=ZBHUq6lYv{Di~DMUr>#GA4F#J@d}yqkSDW z0=1>f*#A0zhTmpavtG+sG-h=30LP{sXg1C#;iK3c==ltDD(V>8^UN8-F^ax6MtD@F zte0uqA(S3n`U`#C(jakTy3pezMCF@=>K?r-LJFEF&U50WiGC&1g^RZchA1R z^8B`6Wzk7pX;064{-i>dIZhWYDx)@^4yH06_!Qxjgo%WU2$KjG6D}c4CQKn*O1O-0 zIbkc~3iC9j?6^p! z-m@t$cWpnlLzGt^3+HWP&!tW~um?Lk)AhAp_9EJ%{vBR+0pnr)NH3lGd*LlI8qFhb zypOTFf4XHr_c?*qg+8yeMDxjSSich8yW8ojW|O2olF0wtVg7!Jd1{aOm(c~{$1kG) zN0$Gd(!UG(OW2L#$5&q8W%b-iJZz>m_#gThx^zu|F?8THjs8^M)a`>+$-Wzd>y9{)B;E?wFLq-sY6q=Vf%?VszgL z=)QL`ro9tC#CYa5@4!YnKDRnJ4jbuMY$V=^Pcsl70PU&%glgnO=KYM>THpJvzK;{< zamVg`Jgl$Z9NIg>y#;F5%Cp$DDjSh)@N4oIgdSf`9)xiInXB@Decy2!?>A;cn17&T z`$zr?=KGlqj(ly1_|AM~Wp!BYuPwhvjrJ9!S>d$RiimdlWGA{Fj;v znHM_?*FNrNGcR=(w$Dpt1N55e8|Kt%Qxk9dJU=bz1Lp3*X41TDX*Nrm!?TSGKNVzn zw|(9?jn|Gne*aP*UYTEW@qaGI&$XO(NC&GaU&6{ojCBL0oz>oo>06`k3IX%TU<+lv zVr6ZSvc^)@hT$3BZJ#$Lq=`9l@EY-6wRo>dyn~2$@$d}qw$E$mou;+qu@s$oShXj# z;Rn|F5n<=Q3Y%@{;z;td?J^yR0U3iy|3r_MrVZBvK;^z05_{5pL`PA|%Py9pb%j9=ysWf%h7WvUqY%UT%M%rsj*Y}U|ADV9O{8C7J zLn8j7u#C(`;gi{n->FkQRex7iF@252X~o7${hahJZ_c?^ZFuF)=RL|@gN*%2etoEzp43gyLRm{?{1X2!u#UyabeAR4vEfks zba6Uh9ov)XzK}>alXTFpc7)8AwJqWGfhH&4Dvq!Gx}?er{?t@xt47cKkvjjOso*m& z4wfKu&|47NYeU+DKZQ7SUs~b{jq!Wo*B?ThzL)gG4<2T&AU=NH1&;u;CM+~c{|fCS z?3;(_`;mP^9J6nRWtN&<$ZrO`=F4y9k$D4QXF#q%rqWT0!r`bF8)=ui&Y zqCWC7M-DEdkNmkQlz~mq^?XxTU)h8V;0x^5_PzC$pBM8sHJI}0x7v@|!?L~O>7R^U zQnswu$L|-1?{lMhkDO2+FZeUO68~V7$CBbWZBZOqXNlr0EsoP3#bLcZj`lXGL)wco@>ddcDLE-KF(fov8Ct-osDz;fC|^bmq_akZw$c{r3Un$W8xZae9@< zMV=QdYbpdUNSlz?TIPQEyU|+>@%*yt^V+9HZ!IXLgK9ostb=~y)NMqVHf{^bN?q@~ z9~r)n+CurfjJ9ZX;*2VeqkNV)pLXILSRBU}9!i{xoj3;-$I-TsI2Sl^#umrXwvagI zI&lswj?*5Mb*2;NsNy(`=OI1Vq;b0+TO6k)isQ=aJBs6|-Vl0RS$$V=oc1UmS5{9d zj^pExRQ|ZKdUA1`mMD%ZtEU#nX^-M0W%WG?nK*=cvu1)!d5kmZ%(AAA+^@uL#qS8* z{AkJx3dkREGKJ2<*unUIk;M$Mm;rD4p-U$JzBqrCnm> zOW&Q&EQgMx#I9xT#~NPJmQg<_`mo_##-Dy(+CMj6g`UJO%6NTAF%7|^^rOcJ{K|Y% zVA)@jdCYVszXI#nvYmP3qlV{KU>&QNPnM&FeR-j-O3t$)JDBya%u|jX{FK>A>>EvG%D@xx8+v#4ATtSnx&P1f_1lrV+a%3E+Dm-jvS!i$*l3-gr0hBC0zT^pZhH(F zEOl{s|BGV!$vgCG8t+@sPio7#Y3{c)JL#)CoxZx$X|GGHy(UY0m07oQ+e_k4?n8U+ zN!@;3LEZkh4|SVjb-T2Wb(8p)_MvX&`VsOk?XP|1k>WZf`-=abP*16^-h04noY{uV z3``4N^p*Qw`qh%oFQpq77RM>uzZ~A$a-BCf`>kHk__DpxAE1K^s({K7x#+JXZjIHQ&*8c<6|ASh5bUr>hf$8G` zKFJKf;+t$fNY*@bUqiU(hqVdz(4njF7ct3coI4D7-|UwD_gA(2^DmEUZTnMI`whQm z4`Tmj#^RrfxQ^( zGVC9W_bU3`_hPVrBwT-%y@sbF&n-!L?$1~<@Ypw`4SVH7>G7?{y2}2&I%KpTa+#v8 zwaBQzv5X?8yUfPuwEny4C&k}}_eJfDUey<0mU&J$JAJsdyUmdp^SayV?@P>0>Mad=qSXF^J!-GM>a0jseu1pq zT`ViP3CId^8^{><*OnE^iDd=3sYq6Sfvnv97Lk>t9Df+6W3-Hm=@5m(t!B*&j_>Yz$5N9!tBKwCw$l)7svDP0N0siuv#|`Em{+_H(=( z^1(-^w|U`t6`B9ZUQnU0@f)(Ap`Y?*3FoQAw{bdg_1(j@=_NyR=~|v8z3{yaf4YoC z-nR}2*REK%Q<}$wyjm{nq5*4pFE$k<$Qf5{U)f_u+v*-O_GTpan9;7R9puw;PJ{eN z4-JH9k6FC$%gtwZ`FzUy(9{=zEGPVYO802l3xP~a8RR`?K%P1ELn?Oxvco({XjA)5 z&hff&wO)+V-RebMq~0=~%G$b|0T#PV>&UObTE|VSGf+mnC(vlneBn*0e7pITH_}%# z^wkm6kKp!Ik>e5Ufl!)1`as&>Bzg8v`|0j`#Dw0kuY~(t{O7C>(vR?C4-?rK%X+Nl zb@~HoIhU;P8T4&A53*bPXoJkzRp!q!nP+`F!#SSzD%*EOzOoloXcL>bw{k@WqxB_d z;0&PlpKSi2QC_$YzA4m6vL}){z%$w}-cLC!JQGpI7hY~IL0#+jv${&YyNmM;&&>^1 zAFZ!8I$Fl4*IfFf@8J>nt`Eosc`w^|vp#$9k^pkQTCheq-XWZ&2`O$FJ*MLGM(KEKB0;AOwh zbKv=<%n*M|DxHA`jgK`jzBY`~xQ`t~+t=ne?=?)HZ?!nf#t`TBFwU~E5@(*)L-PMN z`xRGoQa<|`(cc--;j*7m_Lf9+u}4Stn#egaiA#O6nHAV?%6`$t$Ld(S=QnB( zfweuTH?Y#Vyp#5Trf^@G&?D{9p!EFG%CNQYxC~nhmwg1<9_&XDdqegmDBlGy?SWkw zybPXS<+b2%fsd;?p$$H6?!*pbd|T)b3&bXq_ngC%eVQ4b;omUD-D+u;k!A~N2+Di0 zA0-X-6FWG=v({-f@4ubOW>%5+BXtezOy zHTMi;R`csO(_XY$%pa4}MaGvh>;LRs>By|LcKV~mwS5OM4{hIp?rUdnZoXRddH*zL zTsbEe>9;uz0ec$#0io@fd76C~VmnHmW1fs-U+TCZUHE?a4rZB2!NTd6x+H!t z&*+lq`R4vSOWnNx@ougO;nVnCQj^aPPv^6z$2e~o=gZLdziBwHstf-$&VDTE{B3r) zw={b*u;!J{d#4-R;^)0uh0z@o`*Fc$t=D{x=v~$%_T;>1((lE1=Ce;A^k+BeILbaD zJ+mnGWE*z0_>961Vvx7duSqAxSTvm&`7;W}k|2np?#(_>9i)o{NSiO#>I2Il6eicysF8o+R3Xr%&S-XC%IOPJczxhw&NHtv>nsZ4%j0HTUljfFxmqZ z@4*^vb{=y;O+U`kn_S0wIkGp2AK9DaA#(%HzuMjd%PT5l`{RE4Z2DtKdw2sj-AHV@ zEb~G_(Y%nd7c#F?AH^=~TSpmPGM<$=r=NPz=6omocbCtn5%_hp-QEq1j#oRe8F-t) zrvalQ6n_RV{k&+d`E01GI9tSA6P*h0W$&-XKkL7{=9=##t<5z_j~~V6nr9pBViU1v zxs7(xGd|oGp>qg$+x#?Vti(Rd4H^K=6pO4KdGmcW)Qbi}YvO zI+SbfY#P>6e4nlo>fZ(1Gk2WMV$>WB>-*YOk57TA*wb)K|WuKoZow7bC_F5_-upG+yaWPHi#zL{|S zllo8>Im=^vVTyd=qj`7mxD0;UF#j@XdRV*54`D1rPL;=^`yzcOx-ZgqqWdC!C%P}v zccS~ycbZmopR~X7+x%?IMZ^}uwo^Zw#*_U)-RhlB%iP4~OIhX|($5=IwtirIH{Big zJG)~=<|lqn`(a+Cod?j){TV9=(!K$5EB^kH?R=M&CwhE`)6V8gQXP40sLRyHivLIZ z^ATY`jP=v~mJfW(Y;*i(+d_E}IZ?e0FN2*;y5~n^UHTWcc`Va5pD)&hq|vzWo4Utw zOUgg_WjZ?x_4sR*PV|M;p=6&Z6k>Hjr#)AgSfpZznlIo zb(X)3t%C%w4J=(I5- z=97&XDod}1bj}mK&KS@nC$^1d*%D>{7^I{^W^lfB+PTGIU`uX5Q zKQEDIhWoMDJIXy&{NlF}*^KmeW@D#}FI|2AY2zQ`qKw1wILiH5B4@!JM zu?7*^{mm=no)>rsu8YPd@@3s^U&d0g!^+anyE5rQ-#B-_g*1k10XvPxa(0N)MVb6c zzVpO3UB-Nn^5d~xYyh6)u^l)b+kw>|_6+(8`!B;9L-W~;>(7*LI~mu@*Ut;bQ_;gE z+DC2B&O|%Zof^((#KwHyX@}>-c2F6@&Z69SZ0Ammbg+T;A*4>EeKr)gParlZxKiyS ze9pYkSr~gLwq{WrSI%gsqIX^GE9tc!FHnySDou95swlAw+<;)RtIqA#L6Y^c!w4|;L`*BH{ zUP7M@MV}2ppAlSrHiEHD^w0?Lf5>d2bbQ?U817vGT0nC zw*)71OR=l5Kjn@dPyCzErh3rdMt;PX{KP*Xc0~r?W#i)CHncFuYMlR@28l1cb>r4b z-=YlROGJy>APvYY_z^1?WosB~&ciQI%dgnJqK~D1*mCI>pY>+3U6Sj~WGwXyCbAAh z-oZuUe<`!3p*|kk%e_BzVqvMK7u|Ldu;c+8`-xmX&b73;bJtSb=5BjUu=ctho?h?t z`Rl_rmb;VuTyc8^*EJO+sPFAM4AJkb6UXDftrKfMIhb?V zE8rVJ?^;^X#Wx+p(39bsJ#ts>-E#Q5@HY)Qt`SH1%CE#%zCPQOZjn_Ou2Yuc`4w2( zWVMbH)Z;K6$CRI9SHWko>w3LYL*k)VScfU}c&7&OdgP(nR#L9iqnL-m%BGNa=-OZ{ zFhS4wJA8=hANpAHp&ngpe49Tvo5BBOyjDGnOvifFeW&~*o$`raS=UITFY4E0D;4pN z{HW82Rq$2nh8#*h(gxhx74!1eYT4^T``A0pU;HbgTe!0&BmT3b4wf_0_}O$`H->(` zhB~hfgWQQP&+4~bE%}s^9kZ?EPN+59Z}N=+SzQ;K`&;JkUH&Jv&(>I7`IR*t-81tH zbtP}*0lxyPtaLP`5KSH5kawxZCsUD~XRCu+0pRQhy}u$(iGR>++%xZ2WvE4HqK24%N#QD zm5LtOVLatmU~R{TX~*q`=T~6mb-pRhSgUr-wXE5SevfDt`L*$sF_JQRTBrFljy(;BvZrAzzN|y=Wy!l2nmR<=lhH5^-t9C%UPd(Dt*zf%X_9{ zXv6+#sbf6$$(^K=xVw-0Onh{ajdiLsmWeGVc9?^g{_H+SYdqS&SJ?Rb9jgc9NQU$2 zV&kcw!q$nU4DAp6>R2iF2d!-qd(w;UKe|@NO8Tdcm1~K&7TS2$_L8x39XLYKSc$%p zF-qs#yi?sSb_VbskCl?9FJq;Y)6-aKW50|`Nj)#RR`$3Ak2h(M`(gDyfyd~x=pE&= ztY52+6@N5(7Tu&{m2d7XpD5;=@>>j z>qncTv)e=uZ-5>`8@8a%H=a)DTCxAZscsPa8F-I%tfc9Sj+JtH(i4#_{j~J8Vq043 zAoH)Fqp537!k+7vs=O!t5gnSc5_+3cNZvj1LD#CK-0pk`o}m8lK=tK1V1nvPr@oQRUZgJ>-*lW2eYvTV zIXllb9u?_J=bh>^(kY+#mGL*$m!wy`&i~1eI;p;tx{1CdpIBcSZaDj>#EyyHN&dtQ z*WRhK>dlSlP4SB+=N8Cy?vrwFW(9gP;WzY~=@+Um@&B=ZcL{9~?LSt31)r=gfRjE& z9eds%o7^Xk?Wy^r_u54FqASHN;~Q|;rJ*6KpaeT7D zVD$PR^t$+F;e)ot9NNO}w;55B_v*7=_VPP#NRQ=P8WCP}G`civP=Nl-$ z`NCm3CUI}K{OY~dI@UQf!qa%3^Jm&9ai30ZUagl&+}V=9tJc%;fIED<-i2%4a{od^ z6Z2p8f689n!8zt0bMIl@#$R26CXqd4Bj(!dxidTO+m@HPJSCwL^PElkFGrb0I%;t%!X*nkM3j$#TpSlVw>aI-5H1z0yx*%rhDW1nC?}ZTnH1SjiuI(67$e#{Y%dM`PX|@ z^8JV0hX;7|JDJcJ)IHeI$+(3* ziLlA9e)CA?i110q6L6v2Ew_4D`^WW&+Ml_jw&#-;&)U2_>i^c}@fu(9dm@QG8_B-N za%ev$cD;dY!W`9e%F%xlho$l=$q4^DgH1#5uXX ze9MPEww3Mp zhO}(+4Qcy+GTi@@lKtbomGMER49?4H8RuCU_yICcIQ6r$cUlJDeZ(iid?ugP`;~hu z=i^Q}dgcRr{gYOX&ikEmY~5eW;X5Uw^HXQ_p)OOLGTu$wLX-GyM0boBC~H!bd6|`| zzM9ZhR{q%;Oz|P4o(RjLt*mXjw~xQRleV*OBh3iQmAkQZufCRBKCRem9$e zQ_gHF2j6*Sxl_*aupGTlUG5wBb2%AiP3Wo4f|P6fX5l}5Xl}?W`QE3b6&}mI>zO}y z>RQ~0=kSw5M~kc}l}i8BuJmEv#>;OQy(`FzH76N2wOvKAb9`aMgF z-#+@5iKcx#Oq)w{KQ-~?yc>Edoqyj*Px`C!Zv zhScV`f10=l4D{sN00QUy{XDtHzu}Meodn?QZNT`}lX-dRFs{BIW;$Y_(X^WURy(w> z4r$Un661{4_3#~P%BI%ime`v)ejoZwGkdNoNFWeui;!9;ZKHhZG>fp zb8UnbhI4I%wT2t+(DJ0=hB~;7hI4I%=MCrD2%AIPTh>N+UHiS){A}NC1eLLVRinKc z@$|dNo_d2f#WJ|w^OyyrZ!tiPYmufCUG(mlj)`zYR5hrg%u+ma={Jj;7|mi%k- z>C>Y%q^rX5v8)YLbT22izTC-)PeAK~zKX_heygy9s#Hf`bHQO5@f&<~fw-RLA8={y%Y4p_FJ}Vf zzW9dQI;B0cI!+A54nyDQx(53%7kIRFKXB+9P5aI-rsF%A-UZCsgW^vFt~2-)VDygS zPX%V4uW<7h;dNpzseKUJJ+}836*gk4*B^|nLVv!0UMk%x?RVVIiu8Mdj=zbpmEivp z3mFpi*Qy_a&Shr%tu(S1v20JCiv)lW-kjF5yWK{dkO7?rG(Xljf5=(@4q~65Ftw#LpYXj3Sk1_Jij^Irb`t6yp#Fpg!jXg%2`z+k2^SJBC$tiBgqsNS3AYm#5*{EdCM+Wq2%897 z3I2amf5IrjIKp^BGvRE)`Gm=YnS|>Ia|yQ+77*?t+)HRDEG4WaY$R+Ucn?y4LY6Rw za4g{z!UV#3go_B%2v-x@2=fTH5$+`1L&y`B5SA0x6J8?hB-AaU{)7g?k%SWoErfFk z7ZNTfv=VZJn+Wp>w-Xi;9w00xEF%;Mn+RJ8exCXhMiIsl#uJ(eXA{mROeV}ETt}Eo zxRtPga2MfTg7&BL=qvlncldIie?BnZd{g)nz+6J2@MPe944w)+)ZiJwgABe3m~Xym z{A+>ffC|qBt}*yaz@EWh0p4YPkFNu7H~1Fd*A4y_@D_u=2mG?ZKLCEg;2!}$XYd`s z8x8&m@KXja1b)KcUjnZ)_P$cN@G9FyD34JVyZEW$=E$ z|7vhO@Eryp0{mlxj|5&|@NvNZXz;s$zi05tz~3>r8TeL%&jkL4!S4tD2ZKKZ{56Bm z2abGMp8%d?_=|yWF!)ozvkjgJe4W9c1HQ)K>w!OO@D0GT44w9|C{U;M;*eZZPY^sq+o~8SsY$2^!}D;3|VZ0leGv&m`a-22TdwYVfCkUp06J@MeQ&0l#SQ=YTgEd>!yJ z2Hya@!QdN#pEUSuzy*VE23}+EEx;=c{toct2Hys}%-|mZKWy-wz<)IOXTZNV_-^3E z2Hyw#kiicE|Bt~B0i(N>Crf}C#}xh(Fk`yHj{yIN!7G4&VQ>L>p}|i9|IFZLfq!D~ z3&8l#HJ>fOw;Q}2_=g7b{mIl13{C-m-{673^9@b|f6L$zz_%DY3i#^=j|RTU;IY78 zG584J8x1}d_)7-A6F6sZBk=VGHvwO3a0~F~3_c6E)!_F7f5zbRfTtV$G2l-dd=c>F z244z1#o$i^Uu^J9;E4ub1$?2w*8*Q)@ND3Z7~BT@A%njPe6GRsfTQ`(w}9Vg`0oLq zY48Hz7K85qeviRF1wPf_g}^5p{GY%l8vFq8I}QF7@bLye1bmFazXOiW0Q?d7FvI^D zc&x!IfbnCfJgft5FnB%i0R}$+>N2LVU+ z_%Pte9v=Z*ZTasnKHKv1i7jG>Fz;*i@}B>bSM_`DMYt!yF&{6&4R|ffS%qTUso_29T;tO$1(xB&^=Bj5%maKW~0 zFergL8QkCm?uX!pByj7&4Nc&@?OE>cD5m9e;D#k|KLEE+0@n_1-vn;#j%+YIftv*` zNZ`H&ZbSn2TX2~Ku5o8J$R=CU7I$vjJyDiuA^}!8Ipv`#zKn-jl$c0q(sC z+%@1%OWRvh?-RHa!F@1+yA0fi61eYyJ1>Fz zA8;Q|;9dgvkpynU@3O&16Sx*|=O=KV0(U_IHy_-`61WG!eLR8N1n$BFZlC|n2A@da z#)JE00{0Pc6BD?Bzt092C2*&Lo0Py^1n%Ml?wjB)N#K41ZgK**4cwFj?#LzC;L-$c zBDl*ExTF4%4K7dMJ^*fN0(S$rPbF{9o)PGZZo)VByeMvXMuuaNkMb8dhY3`3czL+{ep$X0VI9UUo0y ze!tFmy;=6B)E~zB9qXTZ@9kLNU7dQibL_!(Z-B!;S?AOJGy^0ad+Ov~)}2lrPAaZL zc*e6tywi%~74h2EPvgA-wtiZ+uCKALus{0>>sXs4a2B?FT~7|{s%P{4uny5V{nU8& zY3vT`UeC7-Xd69yT3?mRrj9Z{hRchZT*!-|k|+Bg;jip%lXQCLK6kj;z55M(_ch$J zcy@8UWqq^HX+K(=_Albu%kXRnJR1zZ@n}i5IDm-I^e8; zz>RY=4UKb0de=T)cmDQy>5Cc{rVrXaZ^-%KyM1{V$h!&K=cUe-`**g_^C!rj^LFH| z?4332dzZcM#3O%MTMxfo6y0Z?VPAsYM-Pw3RU@||gF9{S?WEdpUx}Slko^L>#~?bV zK;4@6mA$F#>qORNU#IN(sP*#cwn5?EkhY=W-jKHb?Ck*G0$%opoL*)7C%WyQYOeAx zKm9O0TgOKi0`}bNc}?hy%4*-np6bO9=^dd`|ID_|!qF*YOX|5z>q$SNUPIXjho8-< ze~fo^08Ztll^#{&EE+3TOHfu2_=gFYIb70snbHRRHMVNseZgVPz_ zjUDXi8OSi6@o}p0u}mM7vwXVuJK{ewe~;+QPgy$K;}P@U_IOBn`2Wi9V=wU?m!z(Y zm-OAkct>ks^b z?lqUT9a7Cw_`rdl+z*yJYJac3KV^}=g}qa<&&eNnYDeyn?t7U0TK2+Hc6k0%znSzG zwPU$DwpUSx%8nkdk;oewx-<8~3%igad+GNjqk201V@B6@i*$*pyM}MKw z2afig39V88iFr&Vr5^>R8?@iwWpzQPiY{(X?4R;p86@B2E~*cGw(2cWpHss6#O?A+ ztBchyu8Y|pQg^kH((E@BSsN1C5A2Ig%YCJC?pxxBF7`I3Jkd$vv$cD^c64sXAUktj zg|^~udXWv%h}|Ljgg#T{|9Z}G(4;y&S2I}kZA{~Dd**jVye@Ihy|=!bl%3{HGPXu{ zY=_@+7ugD^S6BVQ@BgaYEa{~l*r0xOS050WY3r>I?2URn^%kf{(H>FGxJTb^$4=-| zyCA>XKJ>}lE~$^6VdgG^ruD(j+3PbR-#bO#O0-9rJ(@n}_DZ&g*gA}RJ)YZ5&V~A* zn^Z;~H5pO;>F5?4gT409p6lWX^F|w&`=nzkrE7K1bmboY3+d{?UMM@xh%Of$PUumG z?-SZ@u|Darx`+(kv%SFo`aX0^qXUCuP;iEtIMbBKj3BK{j*i~ z7VV#H?qHwaUI=aMfw_q=pKv>2A>jeSV!|>)fv}0NmEcoenlOqWw5E<`-=o;tFJo&T zVfUE`JdU_xs|b7udmAJ8AmT^xfy9sCQN$O$F7ZbaKY~XPKZ3F4+9Q~Is{9&@&)lOW zf(H;Mg8L!U@Hm#~muic~*+@UAuj6i;`_$N+?iFW`!WP-1z#ZnyKQnw+SLN|_lgC$S z!&jaDVQ1!LPNy~jcBt9}-y?r$Sy0Crt`We@mAz;Aw!7*uhsNEOug-a$eC?YVGRKPT zftnk|9?-nR9!T9leP#Z(pXATCHrYQ|pRxKl{t4d;?>EV8>ExRyi>MECow_s1`?zfG z9M5%Z?kw#p<<;*`9iNu7-prvXcSxqYe@Nb|PslAZ+e4YmnKN6R`4w|l(L1uAgfj6p z%%&}v&;BaKa|ky-8uGKKT@Qs9VrxK`+!wWUH)p46i*b4n6zwi?BL7d6hv-$g&o6pz z@$%FoZ)e=`aY=n%HXa_{Lw)pohEtzyVSSV~X|o>WPUbtY+>K9#{){r?v3%P`{9zU8 z!U}Y>+}Ec1&lz8Q#*1z`ufL~bMn!aOK}QcnM-Ml+ zL??^Pi=C=+xTr(!YtepxlJVc#vpt&ESbJ(;KN49&b~E&o{Nnw!k4N&Ox@M%vpU8J- zVeE+ReMR1BU)hRmy>7B~S`V^ivJm&r$hV@p!sZwsG`hvc+u`UHo5NJpE^ox#at!T3 zJH$HtV?Ea+jEj%sp^)$LEPc#;2KaTnDu0sYK|9Obv?Xdoe1W24D&j>2He=LpbS^C8 zAU<=-?&y<^`aFGNANs^F`UIgbeIj_NsUTyv^jX#&3f^S7OG3sr3HVf5R0&>Mr1&BG z<-81VeYX4fu>~FIZz_a$2VZ`prfo^Z{+b5z%E~>pTcR}+Stk)&XS1XK_|}%{bM^sB zIWi{{J{0v6#xc3)Li(cIlOgxd2+h(bwH;?zJEA{j42b)peIG&2!^Ltl%i^NrW$cLK z$~f%!?UKBA>A6Ve@^$!;81r@9Wxmq9U_W?Rd=8HBK<{Rh@k#QQ`i;d7$h;IjyLs-Z zU$93zA09?Br8*8@*Iw7f6^s!PP1f7txv)ZUuggFctBp@eT)_UGo) z(r1h1Euurl7A<>Uq1Wl7w^$$T*GnI@Hi^d(o9pe-Jg?Gr_+B5{;c)I0+OLB8F9_@J zS6F|Szp*~~7o*qODwZ4bLF^IFDi}Ldc7NV84SPICub}PFmuBD4Kkn(J4G%_lE597Q ze6OV`qYo<51r^vO%Fq8YTFTf+|EDh!V|p2V;r18RNBz9A{x>-XAajM>5V;$y#2Q(p zed9Mh_YKwS=GTYY+(OVwjH#cAz6&I@Zj z;aR}ENAHc>4!?HDJP94t3y-3__}1ETjlUu_ntHCtY+pnkowA;bJv%VlywBhwId~)1 z7;-cFCm@9~%9?UeDlqH zl&fR^#^mZy=$|oqSq&SW>Pcp6zY9y6~?oSC!g^&N!krsjRun+QhDKZQ_m4lf8~#!^@0c(|VTg zq))8Zy8Qph!&(2w!#>+l<>c`5dzpuO!KQWZ+3R_e#?bbQ*J2;EdX%xx#dlD&7jtyz zPY~Q#_P5A;@%!g5U|yMApZs;tJc|4h@t(}ZUoJYM(e13qANm#TL9J+gvjQ3Km8bRW zr-cuGRZi}j);p%7JuXG(sfz3!J%<(Usd~6)J|*q$mfp^6RG|NQDkGZbiBC!Q@eGtR zj$u8cJu>+z`?2?{`#yQWyXpJBPRV-IW5yTTC*VhW&1|1QlyAAUw#Yw)pUZQ3=Kqmz zIhI;4eT98tgV+}~kbPlQEE(?$F!+3wtbSG1pMrPZt4K4tP7@ow7#!`-$-G&WG^l>>cN-yWX+S>L~i|i*RjAi;_Z^^mEux{% zdkmfPM!wuf-`BNaWIfo9OqJ+MMY@E07ghJuM(S5?rp-xH=Y26n_1fU)H_e!ej9Z>prU&dhoHJ?=ribJ&CrCl|mQxy(~uuzGiY$W?yMh`ydxm zSNB^b0et9fJkUJgiL1wCeMP?$^6Bt9)A}6{@(Os4%R~l6M&0x!HON}&99WSwW9kkn_Q$A!lk zLVR|WyEfbT2Dy&?dyQmNVO6a9t+q{={ zDAnG{_UP5VFuOs<7S*vki~C9&dpGo~v#rah-*I;Zdh^YwOI2OC){Feee)4$D>@TfL zrM5KkU9R8IhxP1(&lv#en??FKI-^mEf9LH)Yw}(gN5_@3!<3)cANq^#*5BUv?B}Zd zZF`x|m5#}Mpjq`LXBK_gPqhcK;o7Ao$COI@B>hSG%s8#Tkv&ljjr6m!G`^8~8 z4Uk)vfxm{_Rw@Hd+m{*}i}Y8~+|=1;*spi}9N8~@vd#BGU33f_+&f)1*)UY?VYZQ^lt@n zB0j@CmXVJZ%Sh}KtW-uSpgWRp<>y7k^u%*chn|Y`Wd(Fq#Lvr%>3`Gtd1Wy@Z##Z| zzL@?uou6}x>3Q4n^B;=of7AInznGrA#?K!7y^IqjeZA3{&mQmAWUel@s@$z9c1^E7 z$colGyej{P#uqKm8N0E+Fo}OpUl-e9NPBn<$So=t??duyE`P+ zM13f4KI`fAy_NN#l{K)JvShAhE{ih;dN)P19{9MmkF5vBzG`EQ{Pexc`jR_x!eR8PES^z1D? z@n-OJ=brO4xo@E4Jo3$`ORE1KubI4M>oW9js4m$(uge?dGu>mK(&)cZT{f}DW?%N$ z?86=#LZA0VI6fuuCAHaFTuGnb&l7tPPLr_?d*^Vg6L$(_UUJ3{yIZJvCU?DakNZ6X ziM#N)(ai&DJjIo`2e4?YZ2U@S190z??45und{-szapGXdIS(31S08 zb3z#ho3E_#biCfD`**a5G07DmW@{jYZdb5GVNySsl2 z_xO)2ai<%$o!;q2TKNV9cMW!s2magUD*uwR%AZ>-XLF5ayrtaCHlqW2WPeos{?H+H z+6o=n5_IrR=^(Aru@ySD86C5GpredE7WtC;q?;=pyKl30d^?ZbKm04{qDt2vkSm?H zI65ivFUg)c)lIAemefsr4>lumxf7Yg-xS_eCBAN_@7-zjHMxoHT(jf%cwRPW=i1Nq$jc6b$%o~k#=(R zZTMYh^zW~X#(l|S-|M>eJ?`5@V`iw)vbc9zq)y{UF810lLy+G|_Q_tE@(`kvLl_u4)|+FD8bd#~kBe9th& zccGR8kK}t={fNKc8n5Mh=WeEpFL{w4T%!`kvrN#9xyH)&Azn}w3qOC zgw<=w+p}I$r{wos>K|$fZH7NvyAG#ahdb>$yhOV`*?awCnSR0Y4ahfe@(nCs`;Lc< zH?}9U_it%b;E&R={&l0p#t1*!+iQLx|F$ywrQaxj_b#JP=J$JJji~~^5+hcYj#6=r$4ey`ZPbOfbJrGW_qXREzQpZd#C>m<>%Pm>8XgH zZ-%eqXse6NQA+syD)xoF8Fe}Fty7oi{71!mmEK!imzHSEaQ5xGGT-Z60ehi6R5zbp zOjm3>J9PP#>Ob$IofS^uOu+oK;NEUgKv0Kjne=DeLi39*|!hjLNMJ_UF4%`|({* zaGCQKEY)>I`S!(!7cA9pU-Y(qcg1jCIdBe!}N$P3=4Q4k$Nx8voO# zrb6(1Q$fnkJgsrl%}Y3|wu!V3F83>N&w~^E^PS9JoikT+jdvS)w{dnyTcpD`hUNLB zkvVg|wO{Ci?5%!Z59`-f*Gv7LrMzdI`aNs)<4l|C@T%9&4 z1vvxNJj{QgsiW;h&eF&;=X--1?(zZVJYYJg4&in=M}=Qf@NEKzbGC8txE(NgmkrluNw{`u!HZZ|bcX z?)f`AH^B3C86Wws$*<=7x~nr)&8u-)t@cy-wTCdgL%m$2gj*aQ+N8+Aj??=Nu{XUKOr0FNR-onr@Zfd<$cwiv`44YC*%wXdoUs&l&lSu zTz^cAqfvWj20_zU^I;8}pB_JIvDb1y=u2w-$JJi@>d==oe!@zx{e1A%_<&Ze^88VY z)t9toIq(6%_>x*zuJGEvANrD7N3QT%{*mvt<4bC*&U=ILBdLrJJ3qV!`uEmWR-YEu zCiHBY)d&82seiEb8RRlE1Uk8!Ug=KIxn52rT|aS-VNfOw_-lI#~bKI_S5VW!kg&yDxe7?3H@r&=()HbsHCS&=Q zP|-Tx5*xp2OO0R98{Kt2EZcpp&Ey8X>#4k(+@uB??;o*#5&5v9I$ApgA8J@Caiy*S z-@(xFU`5Y;sU$BF`k*hq{yy2&2cw&*ql_!jnfUP8#?uYO^^0}1)lYTwAk)#2Z(aKT zAjWR;9b3!V+ittFK*lTZGA8Yj-mYM5Dw^xOV09?tYf#xyni)T}y?fxtmSTP+?b5f@ zoJr1J^whRHitCbW+dW>7sz64I+NoyX+spsjTi@wlT%RO=%l4fiW%>^IH@xrcV|D1Q z?+ocf-^mv9<89q{Mil>@ z!7v+h*jpOwZ{Hi1k-3nJ#f&-iRk?<-{qp0Y=V&e#FbBn+X-M{^UVWLBo|}W7B0bk= z^^^SqCCbVhUK9={FVT+FMu-Hlg%B|gy##@jx(`S3DrKB2fC$u>{+r(WBtf;wm$ zCEM!UV!D$2)qeF><8iru_0i(GBzdgkQK^1aN5AUdhknHzgnb5YUcb7?>epMpvbj=^ z{p#{!UM1W8ZPTwlQ(TW^o4;xO>hr~PCHY%%zpB6n?bAHzz{r-idC`}Qew+8jeC=&s zgrB42ya;@9JnD4~s8SuroIuBzn|f}8cwDV^Z9A*~cZ%!Z7WtU1{%@&yP;#HdkBezf zwq3GM^x6&;$Xt;U=ytbJBH=UnP z71Q&!<5$08`rmYZ4k@N*ugPbnF-#cr)!>vwb#^gP=xn5=;#}M{$4CcHUp)czpI!1BUNPjsm?F09?zxHF; z{KS#70ctNFV0Dl)Mz1>O%w7%Gbb~ET1&Kdb){SNV2(X-`N~IF{95P7nJ8zs@RkRLV z|1Q#O;ojP8ot{-!`}@e7(gA0f6g~!+vm**056nDQ;dcVVSA|amro9wC8CdKbXkae^ z>&$b~K4-CHuYq5i)BC2Syv$aqOU^48-2%@ySo1mcrmp*ho5<7I2LW%wb7jrOn=F(vHiM&HXchGA3_@w`rO9s{m?dMKZ^dc@5TqGZC&o3s=-xW=9y0RufPxDOZ#cv z-{;i*?{0#JLkWW$;(DKB^y>ov@X#jj)}tgRqmZtEn(}cSw6IW2;TZ z(jsH{j#kg^$WX_UJiYLyw7n@uDvxA&zAi?Svl8}DUg0OcP6h0*L^eauYNFV z=W-5m-6GCiTK}A4ZDISKVm)sAo@9T5(4l)h$YX@`QGU}OgMWNaQF-9ptsUmyN&dFa zW9r%E_jzqm!Wji}{U>hg3yuf4NV%OA2|i8G0DoJBEzGV7EU z`WtK3*YrTk6VUR6L(3CJ%lnmh$JU2PVur~gS?tzXpDR^PC;dJ6ngPQQ67%tPgcJrR-)x$vY7GV9569s03mu$S7O zGRQBgOTHGJ>DFamN!ux9s%#bU?pr<7N%v1VyxS1cvq$UIFQB)Ep|{fLEkd957P_3=r9OM7f~_`ccrPI-Zx4JN->Kgs#nmzy}_ z?C2-rh^|om^or@HpOw~6_3uFDx6pQ+i?E z&|i`_=<||e*)NPoWybl6##xITSh-Vf_{8B zefTi;2#;gGq`>&)qOk(KQ1U(~?Z@b0{Y5YNz(xI7e0!hT&x`NeUqRc6-hNW*>(uLU ztJezNt#InKBCMC%7wxnIX@ixLp5Il3;r}Y!wVDBj`you~H;Z0l%Y2d&z8<*j|ckm!px% zRp?Lh${!Bj)y8#f1jXdiSNujy~{9Y*}P8`uNAE>q23=x7hLZ+oEM3?035FX`x- z!KLSvrlUm`-gF&3U~uRs+M7E1&Gc#PYxUWQZ0>Yqb7v@e?oB7j$i2lpa@;PuCypW$&MtO1H|s@E`s_{3==9$A39<$ZM;- zWrVF39^kj&JV*FV;1&}k?-V{WU6VrprG|N4o9q=9cnII&iD217EZ@r#d>wHjSo{O% zRrOCDT3QF_xc1}7KX7x`Sad9KG!~5qj>jV4Xe>GfIPw)V1EX(s96KF&55~nJUjcQ9 z$N052#t+spewgTRowvb%*EZMjZNfQSJ^|h@mAe&X4i7w!HR}2j=a?j~mTLHh&nokT zj#c6O`P_5L&*jU_Yd;9Dkq7k~@SB!za+N8wy|YA_lX@t#%)C?X=Ag_D@hxQ5G7jG; z-?1#e_q}KyAJ!MY2L6K2^ia0V!Q-*n=HMyWKOB|&3%&y{cC5@BpLE9OtF3Qg2WFU` z$K&&Q8=u|z`;*iGUxduxyN%DC;rLu~@B2D*Ndvm%Ky(RVujrC;{_CGmXVWD`cKG#H zPxUc4^?Wj{r|J&jf%y60XYd3%gXfYuihswbUMf6-e=UqExLFP<=c(ckn1elFD)!gI$j z-A!NcKGqk&sxQj;{93B>Rk2NbV-NkNoSs03XYgr>tmmcQFpgxN?bNo_$F`_G z-?Bckm3R1E;`zkZu#f0CdkXrRw6dll`=De!L+)rBQ4Jn=M3D1zd~xT5+dH|BZBcmN z(+_%R53^xnJ!W=TO7?DTr#-gO9-j;6L{S;Z@BgX(#CKS9e(2wBroZ-2x1~y*AM*5$ zKCfn=eMirk{)~ zIIBH^v)TcEnBn+g^l_?*It}2^s zc8qD=P|Igb*<^}Zq5SOUbKPP(qJ_36BcYbdO9nST47Df+GTMMwSC`l5^8K^?G9 z)!yRwsQ9AtmGOiv<3FY-16#Es&mEmbY0ALv4MXzIbJjN*jwgsWb$D`${IQGW?$M|Y z_U_T5%|TH9<8{a7DUyBJv|k0|hHFE9b?#6W94K4B8DyuIXj}CDIO~S_@oCR8@-cK3 zY?<7a#g4D|sYe&*-lhNRnlyCO!&C9k2~B0fgYU}yXv}NqOL}kVtB?U~8j-V#C(xnX zSy1z5r=dgT&TrTD6;seBey*Q+^!?1xH$i72-{QaFUd|u!?cg6(Ovi^)gb!z0&G$Li z{{0E(+Ka7EX9QjH2k4UbGamAs_IUVqbi+G%#*>qArk;XZzK=Mbs6X*OX@A;h+kC|oJiU(muJd?$oo(~WxaW^LDc$?9 z!=F2icBH>$jfK@8(6O-o%$FDo-v$kD^JsXRrGa(3@;&qi9`*h0iTgrw&nf8_mC5O2 zDtjt(d#*>u8DlqFKJF*q{T?6pTRxJH$}+zdJSxkNuaoiM7=0xmE^EK6FXK8tE@j*Z zv9-kh;mK`d`ChH?PQ#5%XxmG;pI6@b%L!y~CNek!8RR)_8GONxQ$iE(TJ~h~mR{rz zoC!8ri{;zX#Bq0TWRux@`c==j(N{?;{y`nLpW&Bx)w}#os&`LXS=>H_EMfzQZ!FS_ z&L+DUdMQWsUOt`f?7hAz@)kSeIWKQ(Z>hb9%_HM-@JFX1Y@`9R2x%=x;?z(w2`D~CFD`NbiKP3ysj>q!BTOMV6|Wzcd4wD91^2xp&C8#XAv z^3YM$k<5!_ujR~Br;b-_J9Kmb-%zO7%J-~T^H5ot|G~K5F8E-X;AQpCusQ#{aQ)eV z`rojTB08;KsObIx-p$5du1Org?jD~;U3GrWz7Ouzd0FLGO;NtsnkT*T#a5Gf=^b`0 z41LNxFU$XVz}fKl2gYX>2Ef5=^r6%ts4(p|6CR2j1Tg6jiIaQ#lSw;QlXR;JgO^>8 z>M81B?dph+)~+tvCF^y_iF*DaJ|w;^k&R0D^m62Xs&>PlRdK?TKlZUn8B(XL{#s!BtG5@ud=Y-g3-Cjpj~`O@ zrK1zHzkXk3Ehrb6px?{hE(tICk3^tz=pQ{=8S}M7=bJK?QvZ}f8=Z&Ndy`p~wa z>?zOcyFoHJ|BM4>T<3kk83!u1UGuQRm;N)(zH8bC+GexAYUY@ZDXq4B{JlKVK5j41 zU5r0c_NU%y*0m1-|6me1{n5wC+xS35wscPu>zkgOhOwNkLr#-cPD`wuCg&i_l}ip# z-zm$;=?g!2nSG(^Ku|qo`$G=R(jSsfqoZ^Ws@bzAYqT|sX%A$ff~Ry5^hGk8kMD;p z-)rXO@?ZA3l?OGC&<;1#4zvMn{^n+LAKwn!7P3!)HQGr3*u7gWuO$8auCvF>7MwJD z7VZ(<^G~0G_pyyJ^f8RjJF=gXw;T8D=dEb-=&rf%d_{Vw1Ujolh^S}Lm*w$sT za*w@4{AB6;@UkiLxO9p*$s@G9y9PY%a|5=W@ljX&kJrxsV|C&Ydk6^~q z`z4DvYVqtkb|g1;9lPkT#oK4`@a;!;)=GZv&e~5|yti3A-;XPJ){k3syTyCE#k1=T zQMvAp*biB}>n)zF!9VWR*PY?G(c-<+;^CW?dtRgb>^-ltcA)%wm&IevSJq@BJh#VT z#Nxfj;@N!+5uV-0Q1n)d_dbiqnsfzg&k-JLy*fs@yCiS2c&uB9-#o&5!s2bU`F+6R zsSn=6`?1AqvUoRJJiAsLUtw&sn|Mld$taCg`Y_X)Vkj2u5| z${t6jO{)}pM8*TPQTR3E=NMzespDr|{gq0=O}@bTL6Y@@Le>xbyKtRt{sOjn0k(Mp z+nh({3E2N;jhgrIWsIx9r(Iuc9&cQGY5U6`bFdTraZ<*dN#{4YbIp8oM`ID=K+gOj zvcqn(GV~(+d(rxgMTVHWs*UvjW8KC6#HK1M=U2zF)1CYMh&DZ&wyb15xq|iNv&LCV z#*UkZ9XA&{PU6sQ<@8n7H}wpl>{VwC>$vPw*I#s(uH*d-JM@1}9cSI3a>1gYY-Qm% z)-~^`psYyNi|Nb8j%U9-d5C>86Fcld=&t@ylJ;cXXbPP9!J)DwPxV97^n9T7v5ENK z&Aj3oK+N?OXdgp(?ApRSnSlP^SpJ2SD!p(J}f-)>+Iv0dTSZfSL_?D_j^sfpT&uIdA^A6<1b2w3PN(y14qG*Pth-AA0@PrpKSV=nY$8i))AQ_Fu!5$p<{mq zWsKuj(RD)jUdp;zJhz!*Jo%^{PnZ)&Yk@MJP=6gyD6gm)+Q@Uk%Bk}d`H9AQ`gbm{te<~4PSh|S`X*5xefZMuhK8{iX4zu z?BUZ&|DH+GvrqlB((j%mJ!=N1mA+?^^vTmq&-^5B{W*tuTIFw;Bz@6oroVWS^!PAO ztNbPT(^qguy|iNmd^9%NyEQ-L8kl`_lgY!GljH|KC9UWPoo{~6_G9{%j0Z<#O-}kT zeNS~Aa+FtYbHAT$<@QJdxz{;8>qW@Uf)erlvmfUF+H&l?Tju#%j-7XxKZ(x&`8t(Z zsjK?%^T@vJ7f{;ABxBRnDqkQ^dR{6iM|MoP>cXIFA{|sBc z_`ca^6qRq+L$v%nx+8D-e|#F{lUEl1D{c9Vk+QB7m2cOTwER4}CvW-tPNRJC$}0Z? zTfQB?qw?MOE%KK~cjYbrs?#W6)^hy*x7?O5yQ$ds5eq$?G)qXx_SEGfgVnGtezgo@y;E*8Yn4>FlpuedOfvNn4jq zHocDP9zUGTiB8L_hjZ))wL4gkWsOJgx{>___=ApD3?Dz56x+t`m#?{!v&9PAy%DV~ zldrwnIz={~t<$7_ofq+4B=AQCvQGTEV-?szvIbnSi(hFl(fyEO&q+Cq2?xaXB3$Cc4w5z1tTC88#fFl2JwI`tUE_S>P+1}4gxqm7 zKg5rC{Qj~flyOA%&ptbr&^0W+y`pm_(#tuf)0$6g%a-*>PMxg3aOzR~dd!1pcaOHb z{PD)!@;Ug1xP`a;417bS_=aZV8=8f0=uCV=tmBq*&k6TqJX-!M^4GOmwHa75WKTd9 zK0$PU^+U-rS-)hyD|21GT{bpH!;cY;Zj$?xWS+yf%}hA{n2Hmpj#qzYDf9QG<%;{A zSJStr9TL8YonL)xQKj6oQT^~D&KTS|U&9_=B7TOO$p`zNxZ8@u3R%y5C|p{7I9#M* z51k*vn=!thwou|8TvxNKys+kb?z?5ej0qt?4^Iv%y|x2Kk}q9pSyp{<}33SXUmtru#P&w%E;>(fMl6neJ6`nWi|`M>Q^4K=mxsuf%cFvP7W{M_=S#pnbw4_j z^|;+FvIbiw-+-I6E|c&GUgX~c^o75s{p0ny;x8tG`8-uT^*q~n`gz89Zsoa)=RTgJ zJdg2++^as{Q#NrA(A#a8>T!#Az=rvIfZk`r{5?P)uwnilpby(He-F?>8+JB4ceH%W zhRyTBK4HWBJwShM!~8u!ciXUOUfR!^FyZ;j@&o^G?E(6N%0)2Nhi=w!!Sms`bq19S z))-iai1vl;X3mS;(qCA2K0yCv?y2Lk$lNJ>ZR5y>-QUD`z&RoF{XSi@0Ono`#-~Rs zBp-gW@={3csjbc2wg1u=h5@!%(p7& zhtl`P4xVfFj4&=mu-c*MTTka!A3Pu4Eo485;4S9;Li~#d4hRlD*qhY9$a}>zr!*fk zwi|!sX?;U6_v~KoSc@F!_e5pvrcLF2$(g(pE;NWf5ZhJt$%l~}aH@|@)B7Lg{n_vG zF1iOjYD7{C@#G%zwmBqx6d%B>TX!cyqtxQx)gKnp#%8Ek}75%oE#6 z>L~V=*vUuOwmQPP3$okNleM4QwAR-ZrM12; zp_%&Xoh9`W}9Qfe4Fho8|K?==h`seW(#eYZ?i47Ve>q@>(w^Qx7k+NFyCfdYr}k- z?R6&Xx7KF6{0iN-J)WFDxy|P7+b%C3v44BQ7{qw3_teSQPJgI)j&bSP`_&iSI_j1Qr~LD;U@Kvsfo# z-fQsY$osh5eaT$a+WA-8G8ro>p1EG^hCs`7KB~eoIp>ak8pkJ&e(j~*C2twmACUft zt@Ub|=PX3lFQ}||;gne)$%-@Ir$+yWW`A$V7&_p_fIUN!Ui2^NiMwDaJjs){!^ug% zJWqP;D??BIG&Qe@)3650`t$XV%Dh5#xxr{aP2q0l&JsK&8zSE z#s)jW|78?t@> z5>IdJwqd>wd%F$ub=VCy%-3P>wPC&vyUB+6I_wr3=IgNAY?!aZK5D~!9d^iu`8w>A zHq6&ye`&&gYjxOXj1CK~m_mm=$JodIw{qs4S#wW(Gf^AfKWE{1ANmPBR>3;f0sJ+Z z=L^<8LWaus96Bm~Jo+^I(OHvPa{fZ~gE3AzczllZp-Il;c=HaOXUM#jwD(9}-?HVS zd&HkDvajVc_lx$R;hR)F^;*`1UtGtzZ+x;sm)sAEze)7&kyE;N5gK$Z5Y#MzFW`t> z9F_HuEepLW^C__}w5;b$S?cHc?iI$LD|MWO4JUI99$D``A%37GJB*!sESqoWhrs8X z(ktgZEDf6XkFGF2P_a8jr>zj4P4Z3bm)oZsKbO^~+y9>PV?5XK+{|+)&%Hbk@*L+m z!BhMX_?vjDcp@JC*!Bg#Pyde%^ZWD(8|L@vXKa|?r(d*TexEKp)7UwFpDwmxexIIg z!~8ydrVaD^bcGG``}BMp=J)A^ChWJiPcLaT=gB@WMW4>ypF}?`$DgVDfn-j6ioOl3 zee2>g7Y2V$-&PqmeY-~UwtY)%m%TZCJG{X3ZSv5*4J>_I``JFRpC{?#o}DdwN+#IZ zxpX@_d$0J6Y+sf>t$q3L&^5EO`f}d6_shuB&QpRTr|Qi74E>Nd&!=AeL3znne^_3e z_+gT#oPJu4UMxpvmY;&ZFY>$qkDs?Z-e7tB>{rlV?@;}vJbw0aqrc$2-md`fDxN=e z{480MKfoUt%C)c4*XtUC3_>%Yyf6TpzPB)H<4ToKU zt)@1Hv~7atnakDRv_#TilU5)vHD5+1p83l0qUk0-`Bp&^Ty!V-qL;=^d<8hV&cnS8 zqQ|21h}%9CpGUmvL)rDX+ScO~{5bUvwLP^Srwl)|9&fa?Vgt$9AElf3N~zC!2alIk z2>o`BsdDXjm9}L(M;Xt(!`yWta{ZhsBUvCi`xNp!mPm$wwpw-XkoGOTGg;!LuG&Y2 zZC=ll*YjTcJs;<#=|@d^9TQ#vmuEpKeABXIUTpK*ZS#8(oEN?Nzv$Ip^pv!f+JJVA z;$5xFDqgt!(Qz3Y`2CHJ4M+bbYit<$HuF)QgFJWhjPpFq^El7*JY`1{!6KeZd75~l zvEhK#ss7mTejDbG4Y$}Ze{8tThWTT|M{SrtHXO2H{@CzI8|IG zv0?t$@V7S19~-`6!hUPVhQBjoL-6DjV}sgz*m`p2IahC?hsyV(gG4X9jbG8V*YPX5 z_wD>9n47$VU*xjHK^P^5mOq-}-jtznr;ny!cg-U8}a9@DBav?8=A+_z}}!`|{LDbgr$o$ z8JU+ybh&*?$Y)eHuRUZuOV$KuSL{E2wEEI-hI&33pSbRqW4>Ip7+reul#X$wi81Oj zty0%_@O?a(U<`pC+1rpreu{MeDfaf^BW8VtIY&h6Gti2EMrnP{(rV`kQQO;jLIv}b z3i032#%jlhuR<=MfiiUutjY}I{`bt@^SpLOmVe3mmONg1v-c0-ovL(9bX%?Br2qBY?$y><(e~5 zZa=x~H7x(-y5kkJhiN5V^@$2_8T)mAqSyfH*TT1@_4oy{^0X%_ z=h}K$e@G-NCv81^-sH+kRgSEP4-ER)KcQ#oa&UpAV=6fipPDZRwBgwDSHT0;nI`i|zudXq_~+qg>~pUAF8c#`w(<1yjPcyc za~IEjJV$vR<2lJQ>zFrwzk2ROpL3NB^T+Q?Y?wcOUuMJn@w?WB`Q!Hn8|IJSZ?a+j z_}yZ|{PDZPhWX?7n{Ajsey41hKYn+cu;1G8yRS{>c0oV7Lgja|eFENEgg>6`LlzG( zp4st8{WOx7)$3XQnR6Cp`)7cs^w0d1InNyCJY~#x&ZuQiRN|4Oyrb{RpJ(nP^BwvC zYg}bX<^(dAQrr5RJB@AqPOY1 zt^d;|KhcLp%UBmfAF=j`{V)^#Vb1637;XIU=*)GGm7lo&F`-p-@YkPNr}x@Qz1J4E zB$DHAURH5}Jh_LY{8yC4Q_9+_^7oULhNlRB%A?^aLxbY{H8|8q@{qHyN>?G{tA$_6 z4_$p*5ohp{p^UH953vW~L&f2&@l)(~J5u%pd(-4@hw7!l$@*f}uY>X6;%NbWVp_mn z_sS)>p?D7^UgpM2*duz@$#twNz6qRfRu-LD7hGIWv#|PsM)EmQwx4@+_aB|HwCKro z@QU+KKU)_hW$ivO_WcvGr{?(bU?d0%k_G3lFPAgEtO-`%xZ-nWZ^Ri(laGC@tn}O< ztbSm6qI7n!v>x`W&*6b@iT%b{_wMrQ$1j&NGGmPCvOdDv;@I~qytPHe_i&4TCA5g& z;@#yF@cCv$sn%yvtEfcXZNj&{o1-mO-*K5iG5K;7tjsm(WeSK%=1# zzD+?NWx*fDA=W^1_;TOE^}-LyFQOS7-Dd=?dDDC*PUC1`4jZSDeH%q%-(QP7M|Jvy zP4h-smxnK618|pXId{317qSP1bJnPTkgQPFyuaE+Wj?E!hgw&Cz<@xSIT&9 zt$yH>H-G8q;+v~){CGM0S^2#nAkQ)Ca2NgN5N&r58~i3on`D~1;N*kj`nwl1A`;s&~V?tNI24)4!Z_-4fUr-(qVddcyKt}mCj^3cc#O> z0gW9<@3qJ)u@heH{e>F`M@D)(hr8E=ZRz3N>EY0ej9*C=1aY~$I)}oMK}y**IJ|FV zSl>CYGd(;wnvuY+!GV#!fzh;-6aO!gFSGd59a&26jAt)wI* z!@V==VPn?_Ol)ikYrDILt0zQkuC4Q9pkc<0h`8+RB(80+XCzNa618E~o)vAY_Jp-9 zjp4+Et?Az%?Hf*ahZ8e5q}KKKr3XehO53fSCh8m58Bwqz<0>N( z*E!O+qp!bjWM8!)*L5O{!|Bd$*Fc%DXLxXzw(iQXr9a)7Nr$6D-JOVOk8MkllJ?%d zOxW$X9u*M1*yawGy7mUWZ@`t`kECViJu$1LyZQ!JT7E1OA>CnmjL_eo4)^qp^wLkr z)+fu*GPzsw1Eh#Xv2> zkv=q=APw{M^`L8d`gVrtk>0BCx^U-kdMMm8>c;V_bm#nPfzttB;Syq!Dv%w%($+Ng>jpnzQf7?a| zhpZN@4mYDBH+1&(PpZx~4i0wj*q2^7!^oM{z9NIDp4DEn?i%bKMM!4^tI{J~tGd&> z`}+p2&8+I(-QC%h6DA>S)6c@|>g}V;NqDTkcT!auHEh-+`-ajXV$j*uo9;I9SG!|y zSUY}Zq;q&=bZ8-Je9K_C+0f!}Y5mcG(8#UnMJomdO{Qc+3!^z~lBHXa)@ZO<78OVR z8wbKIgDWf^sngYA#(L8uXeCFzd7kr{!B zTRE~9V>hn<;81!X92{7&V~|0>Q$1z`v{Kd62iLbR&b&nm6DgNW{W!+9AR?3wy9-?` zvKfUn>>3)`7t&m5m1{wfK@R;hG(0HXxjI~$>D!;KrhkTuSH7D3cBdJ6(mjluBJR>9 ze7ZATodYN$MUf$2va?Dys*P<8kIxF^k5YGPA~k z-JSh?-Qmtotc$*Z?)2WA0%AV@TKQATXgXZFt8=gNVOdToS$ugV^~hq1u&cAX%kn*9 zz0WJ*y+!*?@ZL1gDCP|1z6`cYf6mKxkJeY3w@{L=MSWhs(!8f`&fQY2lwXd@I)bS6 zMS;C?o}0YsE<>rFH2u@SgF~IE)fv=+2lsRXT3GQ#BrHr9N#*9zl@a`ofolf__ozb2 zB^GW@-I?l4CyqKNI!zKp`SdV^F#NrAugu9v^#`3~ zyJ1nPt6TZ9TkwZ5I?!msC-5SsYh27ula34+rUQ)|8cuih+V_52rZ$1in=+*ko2NFM zmQ5ZqIJ-8X2-Uf-q#cA=@bR>pK-x~suAPi@i|sfX^Z(`do6KlWPhXc<_@W{tebfh5 z8nY|M$YYervYpfrH05I1_RA;)jd{k*?!key887Rw(skgi?PBhc>C+)~LtoDzV^eDy zeXgnNXi*<-Ne}l8^`?hA`(>bWWekk&+QEd9`CZR&Cw5zi@zot}?;q^y?0<_#ON=)% z+_#gNq`{P|uno*$gDESvA9G;IV?b>{SB{NyQCoEGdymIkQBe&f$rBMDUmzRZsR$ zXcDfjVm{`lZDHDBxKfgxcRl0CN<+ewG#ET3;bqfc(kclPX_yg|zyM}QUDswtcgg&l zn&Vz!jFm9qqRyjGcW{##oANGuE+z>6n5^>noJv}qx@tV=$ z+Ng&MPclgLP;Y0(@Uyj{w!XQeJylo5oXovrG_+mS*50sLgQIt`C0w}J1n&JJ-sP`5 zjmIFJkv^iM8g0;}#na)InKFd{RSMFWB`rcmI5;|z>7%>!({*rPF0DdSUG&=5eeG}^ zf;R#g$oRX%xQd>!$t7 z!>x7AOnJji`wb5!r$u$XxC^xqsfFc^(q?0&mbvjN%U%7~s!p3cf9Y>M!+2Sl`tCc8 z`eI?8HonNM;cj=|ZscWH^DoISY!=1X`LIS*KJ2mLXQ7qhjFP2Wy9R|~%S$60t!X^* zm|DV#JVLCv9^*=~aa`F#un~7#o)BDusfQ&#Y5&lP3B;O&aUoOld?H`)9g91&Z{V#I zhOz)m<2!T1_+U?ukVio{$MF3QQ)5Kl*#MHrC>c$c3AdXBNZIlj9Vp9I%kg|{R~5Bl z_406|BtyDJ)3U^{*SA$Q%~0>)2*!#@Ah;v|$<;Y_j2HqL*Tu_%kZLlSPZ;?`B{qux z1j29=_VuU_23#qbHInqmo-}@{?E^}fl*3!+fL6*-N3ptWVo|E{VyN8J_V)*Eu&7_h zpLmR~t*=vBL?j>w&dHCXDl}%}X7R}x=51A{%wjBQ8TZ%p_A&taHiP6R1!_WmV|!9< z5hq8I8oI(>dBdA``J+ldha%Rw@swnB(O#;B?BF ziqClqvh>Qq~l_emO-&{EmfcQda-EypD^QoXxCbSPwccjJ=y#7El+qfJ|Uptr*a& zba_bEJ%&X6=HR>eOh(f&KhfXn@XFf8c9!O)>qcSqI=9@BX7M8(dJ`3w#>AVsrxzWi zZ|&G3%l%n-wzW66v^3Obg^A4=GCSDRxTPUn-_dpzv9659`lbd!cCgbw8B=dt+d$Sq zSi|g8%{wgXAFTTfrJZxZ`Uv{dYG?Uw6uX9J*0p;22Kq8Aw@@Ja1Ae!c;T7&>SYa23 zMV43^OZPLSlC{CMrnWFz$hT{2jBzqs)%oTMX*9D`5*WO6w>G3*%@R3Sp&4?wu`W#$ z9~Gd(kDvt6dKd2zUOdr~5yIdNF|h?_fVCf);_CPv?!=&HVY*>2em1kHwHS{Gj#{yW zy3<`UAbRMF*&N~FM&${L9pjo=*-}dg-90?m@7Ct9Rx}?*uNeV+SS&seemypXD;&lW z;;cJa>^j6Bf`wl;w`y7V;?I@kMKQti3etQG9kvN%8ExOnl`C~qNL##Ks_sk|(VE^d zI4BHZZE#rMgCJfl{at_gb@u)===LBnk3>q;de1O5OXFK<8O&sKJA?@cyM{Y6y<&Gb zJ=ilkfSFATr?HZ(?H%IFWr35dTx1WCZxCZuW`8Otrp)x-G)wY=DxQr9T`ekuy1`{3 zAe$EipI)cZ*8C>+E7Ugf6&QY-Tk9H99WC{>?F|BNY;LY!e^o=!+OWR4xjhI*&3a7G z*Dcm=5a^aDe)n{0Hw)0&DW`rVeq^|FAj4cKob{>e`!IQ|(u^G!WKCSi`pVhSn{$O{uoVjq6q{Ha6mEX(fofWi*Y0Og*V!N0YXT zsiO}|-aIn;x4AmCZ)$C5+tl1tpK93B(7N#|32$q!ZEa80)?Lxj*oLhDVJnc-Q3{Pkymb*0I_SDPo!rK@k;*w`+GM+r?E zNgeXVNxFt@Er_a-QE4w9miU&2*2ZRffvdX@OMHDpQ|(o$+6@Sa<5Pq?S)8P6>sX&v zmdZ*_n8T~5B@L0LK9bfCQ#_C1hNzfkzcKtcNoQmr)zq*7RbpkzwYLd1@?!a75lxuk zMRwXebqX`iiBqwywQ{=8oD=>SOcS+^|J; z5Dja1R)5u&+Rcr1sn*&p8=d}YZElR}?A{x;HA<%yg`{y!&2?|`VJV}jwhfnTQ=^p8 z*b?)(rMVR*Zm_!AVgNU6sa@YB3TaDfW8=nJ%~#r+&M7jpd3|Gh)JIxs+eN9S8k^C; zTiRQjZT}T~7gwi5xoA^A7k6cItLkhYzo}VtNqs$Duz^nme{gUjtA1*wWF| z){tsx+}0qB+K}?#6vGz-z*dz36V61)Yp+&DRJh#Q%E;zu&J7cqUBfZJHD4Jui>c#e zaheWcYunt|CS#pd6e`NDtoAA5CrO{vPbcIb#ZQtRO};6rYo79>_?Fh@jSLSd*{dw{ zB0F%xK+5OlD`|z8pY+AXt!kmr2CWS(GR*rUnxu)xJ{B)*JIGtaQo#|pVJltB^sCyA zcIgQO);G3EHv%V1pXuOfaO*ZT&{>^v0bcWlcC|OGLK7OA8bq0Ih{gl@nW`)at7~q# z3Mi}p8!O9E*c90zB9*pZ8!;xm$Z@`K;hcmwZh9fOSoy(M!FFXgIu0H`+!zSQKw)t>v zxZu}ge#X?9d~?Hc@z&TpeLM-v!czs6lb;RC!GoF!cp8?4r-M=so(-FT=hZu+QE&(L7<%S8K z=!k~KEuzA*<{aiL7TM&R8zy*W?A_4Xa79PMmO9LLTc>>CF@DRY+BRcj3a<=q zcG%|HZGL#FZBru_nUM{HU*EX3v0n90oJSlcWwkW6G)M<@H2JW^GYW~q&YJJ!h6!Hd zmNzmYf?K;~iw>(%yG;xi{H+b>=$1{*?J}jaxVd2wUTedKhE`Z7?6A1&J6h>XwwY|5 z^M&Q;*3{}Mrkgg8$>OA3XEXTrMsAqknKE^P8|9lF=6nNg?yhynn#bFN3Vm`uNfzyx z(aR2ZJ#Nu$4}GXlN>|-a58GdJ5T}@|nuup_ISVuP2#SDsAL2CwhbOLy2rFk@$l;Kf zeJLKE3CN!x3p5_4tS5li5P3W74#esivj1BBA;U09oEq$>V+AFS=onz7b#UhZJHk2g zs5{8hy30_{&qVlm^{fMt6{g6E(wR}WOY>xV-dTpSCv(iA7PP6` z&$WNlwNm zEo;%N7PD`sJ8O#zIBY`8S%-Xi>7^*$fT!6+>t2?E>Tr)938J9v{we$rS|SI3Wf-4Bii#_Fgtx_YSf*Ha(CY z-l>~eSjRFaVZ22sNfeiF`gp!|aM4dw;Az?7zt?rYDe`C0z{_6N04Jt_Pj2}_*4_-w z;-W^eNI{MVP|NybypE`P!Qp!}n1wlM0QifKTlOAHKCZp|P}9|A+211S>U*qj^6m#9 zGwC_GaTF1F`PnV9@n&YH6XJ9eP;&Bh@vLWA9T}(Ps2Uq&@KFzohUrT8_fwJzMIKz# z>EO;V(~syJXjRjU6zS`sX}a>rrfIR%9|2tLS6GiDp zr70&Pqm~~|+AKViSBM9+ngf7XcV_QXUH@Q4^u1ZjoDnp!a2CUHnRcyHw~`7WqI_)F z=zxT#jqVl;i8WeXXQD`KLbGEdU04(j)3dlMtlCdbJPmF8*h9ZmOZoDV1$i%JNtHaVx$i4QCpXmw8Xjed2vkr z)t0sEj;y+}rfT}E_6=9ZC?B&vIRQ@yqAru=CH>E36^)^J$`ripx=k#PlLNg`W>e6m zc#@f(71ERcGqU%4JAnfy*4sm}OI-F2NF&KPUw6Spyg?pW+DW@*Z?TU~5$nJaC(Fri z3s+U-99$L}C&f1#-t#5lyvZv&tE_w8?Iw5`r5%N<*r=+(UR$C7`*w?bLV;SWW>^ne zINv_ua26GbWFWEuN7B2{)>un2ULFqHYS?Q#F&{l-g6!`a3cLF< zopO^xgyizU-iz!Lj1}2Q65&MWCfrRAE26oTWXjCWTrQyYz* z>>N?_em0SMiG-O#Mcx8rOmFD8(7WHF?Ml7v!{);YaD&b9X0xAXa2RZhwAEfs;vqG9 z7hf!QbM`JRh3ztS4-)$cla(Fd8kS!ba*2-*b zrpj0<%hB}%G8nlT_j02Rnd5{*Iu9AzC;T=|!+2`;t@I8usg}WYq-SJELRSpyzq*IR zHhS0KP#+ZdJMXv?pqGvnUUJDLpwsQJ2RLlj7hbryyZgdW5A3ivkJ}J-5C?(ysLV`4 z4)Wt%Vbtyf0fJnE*}{+>KeecsfJ3Z<;rSyY``W6is}bCx&OHOwt5&XBoH;+d{PHY( zb8mw!TKaxpkI+tc>Fwm)hnf-SRl7IJjXC}1U;+FVidJvjp+jziVRBShzh5YGb&BSmS$Oe0=l4fDWs_$XFRviXr=9zl*lsjB#D=-i9d0xy zg)3uXe4M{bdBXv{FM^vPvdi(~q`Y|S$}lQMy^?7bT8@EqX*V}Ch;rLW^e)t8A6~Wn zX?46fzOdm-k=YiBiDeENy+ppM3p+cjckHO{>Zy z`^eG^X2Lo8>S9g|R8RJgkwKM#2{nQv+ZT^wijS%j)t(ojGwN|g#!5=u(~DIWrF5=j zc7esZ6^lWXgt!uPW2R_;x+oL2I@{yk!eh?9xZLGDVXQ=mjH6^%8kQ%l7QX@mH0}mu zKoy0dtvlS877NSqeKh8in54$pM0rj|vf@eSU=BwNiLb=@CdD(EH&3n^bD8GNb4@IB zl6N=W$-V&{7Aaw3+U)olN>6rJE>+odW#h)g`LyNWP_yhjV!1Mdgw)+nAIBT|1U5q9 zG0ggM^Y9GmF?0z^{(NCt4oyDIWDpVNr_aIBJaTz1qMJ*lPh(CVF`>{iMOjMlWck=F z!&$n_FNb(>E$Mk2Bw9_;0m{pzUH1$_`~+l~43Ya($=a;^?J<&Q`OT>9AWr5d!S zlk0OxuDaKyk8y;`7*CjP=hU35&5ny0Z`5s6UWRdBug;3HF{Qb(CdS8g6&=vupEgS* zId#m6^XkX+by%m8V)N&u$%^yROyGG=x(V@KS{YAd-Nq{}k|jS*c<0){oZ3^jM099U z&Pj_9Ilkn>kvvSeIcK^wPQ5cdvMg|`%D?WJ-c9?1U^D-iz9ecsA2kqc_Y^}`U{5UO ztD~MNmFij3E4vQn#A!z8cSm-)qBh7b)F889Ky!JTxTd;#!xcoQY7P-EnaTOC_;~9eeZ1hhvT| zh-Jx#iBZ|e+m;$1w__gJiw-86!`9gR>W#DV7spOsMvN03#Fjec=?nJ!tVl{uIo`=y zk&Wy&Q;MvQ52;ugZq=ieEaHgsgSA`Or(Vl&`qRBslSb!gdVMR$YGZ=E=rL(YJE;gEJZXTZ10?RPD`axj||;(pYX zcO=0c1Lw#!fSGe-wW)U!Jg%T*K*!}wHa^_*Se#~@G#TRX*_B^PxO$z+T*<9BCp)r0ZM?i0releLa%?HuFx5%bm_C{z!* zJ!C3-jAWj%Ps|*-c)=X~*3Ni3>7^Yl-VXGwR|rid8l|m`eJ3I(F*Q4oN-UE; zAx_ULN-BNn>E?&DF|L{IE#*+69G^rKRgTQLMl-V%@mwBmHrK9OggAXCmp2cMxb%9F z?SNcaf;B{Mm3z>n;^{py!0b>BJ^imE-yky0&l>U8V5`H%%cIVmqU9gYk~ z>%OO*ZeiHY(s@s3W@I7CpLy=E?nG=J;7(~K;j$FOelxoz%p*A(LXjgA&)jLpK6dae zkM^fg1Ln@5Ddmq@__6@lSmp~(rW%} z=CP4h*XeC9c@fP$Fr-vo0;ywgVul)HbK~r}7`*w)l?aPP1@fX09_7PDin_rhUsg6Q z!X05%Js%$75l(t*UX=9Kh$d4r;XllbZ6Db+mu2+0S?G*FqVnY`40H5|^CPDbv)a!s z@2~+w_H58frsE?{+9jf|EU*_>Zg}!GHp?A9;($cCMZJZshO*+wX0#0Jc42#63!Q$l z`|;GV4y`MB1c#qM?t=c^T@m6od1d1iSF-DNMf2GTwE|UZRRju;8B;FgPB0l# zTyTUK1<0-h+uAaHTw2%GqBal5-A#J=J_Z@e*D=@?oo1H^7N?elG!V(DaMI3ymI+qN-~5?RQ)ib zdcvg|P>nA`XZAQWnny=Ki9_^)1236e3yE7*?*~)^L)X@fQLX!zMgN2tC9*V%5SaYp zB2}ONt_@##8^YS?{!)KGyfy)iA)mUT2kLe*xl+~5U;I7tZVptkxO*!LshwR|R)~YP z^&Zg?k_`Jcdidt*)FX8bJ8;z|qjKkl_ob$uJ zGMk~KRc2n1N@;0oGK?*`()RS#A{jFLM*AJqlO_s4ce`P1#_6-}Om|ta&p=${E<;m9 z);+4*&4P!_FxlY2X1ifz*7%7_w(BQrq)Z}Z-Kc%Adyr@Y=pIl9gnI^u)y>7VZIarQ z>og$4mW+P!+MMXKAq-ZMQyczW3d9Yl?)p)^zSZQ>G`L5*lW1IhX_l=aGCRqlFQ@$9 z>B8TPF05^9tPAUhnN6CF@8X+D5gBO|zVx{R2Bkdd<6P7+%f6#FFi(MQ$Fg z#sp>T)71rg#b;20z?|N=hq&v_V@j1Q1F6o8(=t!Sdv8C>fM5w8`mv>v8$Rl|t)#7u zYjQ;W{l@=J@h6$OUp{voxJNEun8kCD3D<0X@A(1WC+4?hVGvB?x03Jr7V*pH6a%Ty zfr22I$!{4C-)GdnLjJAlE(nMUW&zCOcRCN>K@4tsjd^e3w;1>`o)R7@6a1m@v4Y^m zQ>O;2h=;yGq3cP0Z+|r}ui)=b-Vp>J<+9=MkRcJdg1_&hrG%lRPJQPVzj@6I2;K zjPctf9}w{VWNb*Nb~n1*jU6(c$e#}jM>p2hvAuu&XkUN#Fc(^eYpPaXx^ngEW#J_& zFIrg@%m>9VUIrSf`0sqjSl`S)CjM`TH1Xra^R@cu?=w+MGVy1G&-xlse@KpgMg_@f ztPli+Zzitb*d_d%Oin)+q-625>5@Tl^7l!bOcZ}aehQ}Vm$>Bgv*agH^hX*vO-9FL z@$@+a7T(Q!VeRGe?|T{K3U9kfGo3bz+zNXn&SPo7;G=FZrtAZ0Y2E zL&;{rX}+9)H+i?@BJzNUQ<#k;i=`kcbELNyk8^q^p?C;^4uZ+_6LRi6gF-8=ZKh5F0K5Und^xt zO0Ljs}2!`Tb2*O{JLPe$Y4#9fg%|sR@ zrCm!!T8rK<0i`D;-#^gTO%OEw9HDg97*Sv2IU|_LW%iG-e~ zp>HR&c*P+JeGR1*uawuKWRmwX!R15u!JOzHVipi^=3J4>lJg2ANl{Xg%>96bEYy(F zxxCLWK#)zS)uVxG=g^?d@0lK;WKW#8nV zU+`%4g2HP^HtXUSg;iDjGwaI_5m$PVr22}Wl|I7j>{ZIO1PHSm<+X6BBzRjBanqMc zFKy?a(lIGKnM|&bpW;G=ij%u3Az4<~NM^Ivf;PmX)jkzWzlQg@d!?A?6B0i64Iq~m z6v+F$bI2y~Uy0Z8?(|RM_VQ5|Ml63l5Rwd@;mxY7ZqP+#Io&4Y78tctU{q2;foh)u zqnVWSg7c*+Nvqk~$fDqa-y@{JXtu&oLKX?mv_@VNzhBF1_xBTgC>`kbukvqErwv{x zzzz$n2bg{k#2JuLoMGR92%pk&x886J5gLDv-uGd4pF{-n)Nfqw!h8A$I8676Yu1(7eqWP(J8Utmh;am(HD8SbA>hoWz+$Wz4|}76mhBUOuys z=~v-dL1Ah2%-7FsoQojY@KRdi3{WUoek5x8l0bfn=OzkEXU>!a3BZ!sQR+*#_&1Swu5>p4CJ-wuupqH=+(cW_sFRex$%#+?3HwM%ai zS+&F2UMsBawaR$8Oa!SiBP&SHxl^_jtx&VfMiIJ-@67a%cBfx{?vn4Sfxf}aniVkx zY?&S1yJF|S=&H=VjM#&#Ml-{%j8%wp=6|iARkE+@f2Ft}r=_IX99wPFDrvyLG~}9< zUDCdpk#0UOva(mqVB~Og9J_kYhNbC@_av^Dly3b z25cOc4}od$*fTgdG{RR**%+eP>)j-p1#Z+{j(-wdB)ix%e2BO$Eis>sN^@2(A#JeF+I(Wt=NUXf*#dE7-%$1_i?r z3S6^7B?L=Z50Po8Ht?{Ar>FiZ3gyxZz!mzx?t$ zTlC+8B!tspsesIH3WLOT=gm4-VS=J@K3{xDyi@GmybJ8cpCnC()s;l=1h*9=rLW(S zxVbQS880(_sIlMCe~%hWhI(RVCc~-YgL>ix#|@+=wJYb2L{c1blp|)q6y@k7O!9Ff zyvZkN=uIdYhCUSPQt$-VnHN*x$`!^tMtf2?Km$aN7DFBN{x`s$bMNfQZ(JXlo}ct z4pMTFT1Eq zpU~*+x^@NmkFceWHIo%RE%@VC^z7#Ix#j|cH}v+Q&;~4%c1K)N`t+ZO3Te%bD;h=X z#SF`8e$!lVL0VrLCB>~@DYMrdj`hm6LHp^_H6mZaC?hFZh5Y7+%*h8l!>w49L^so* zL!I5P4MZSVb`VLUHRX#ZUAsr}wU*Yww3+K8wrOKAke-ziUR=CZMVBp*1A|i1;82%r zLN@Xv2)4W(G~MWs=@K%Az&hk`688zyX?7!j{ppC=B7W@qLU>0y6;->YqQZFo zkJC#(qyWqhBbD0f(%3@0^Z^Kx<*}5uJZ0};wBg$msnjUrK&I~^PG0JGkm*}1fnZ2r zN1G89I*`H29dG?{WtEO1(Xf(|DoQ5uC#o?Kw9AjEv}AzkE}j_uyOTlSyF4Jsk2s+w zL+J1kI-(qgNFqKea*!X%Fgu4Bp~FXrb4Ze8xyeC(-eg{T`H`gL>xdP^Dh=w8pG$d? z!Dw*y9rD)BGmW}+oP9@}w8Kv-nHL0AcgU}#F9=rOA-^p=iQpRfkxV4mXQD7a>h5BEOQAR8W3R%CTVeg?Gs7JvK_n z7eWP1eue8kA7q{>IPl>ZKZ4@11jtET$g7m^wIGmX-CJ=i_U#cQlr=GfIC=rEX zwDKowhVoZP+sL1+CCXnRO(K78jjvG5P5xvJQ2q*a^$-FhSn6xm66Lp0R}g8gl>!N@ zORYg5er$zj>hE&X#fcY7&8%(8Z=tSq;tyx7)4&)s{2dXuAb*9p=;W``t`8I{H-jLI z;5i!a)(;AUGZhZ5ap~tOENi0jSEwz3KQry%at*&Rg3nTTxwwh=E7X-!eYJ393}`&_ zU+=Fl5GPdpR~Vcd1H2Wg%RLS%3|y1VU30-gP*I9-ysPsa^?O6mJ%Jm z67WmT6FPn+f;qt@!1vkqD4;!F2mF`^4+#ER{^3vJoA`D7Nd#vF+ktPg{1Uhic-+H( zAMnE-d;s{E2j|lJ5#s0D_7r+Q0qoj8LHmCm_-ZR3LeF8~LmvDsVD~5W|4)D?DDNit zCiqVQ@4Xn9UxBCR@Kf-|a7Fw0v+j!V&&`8>=clvrt02nd|JpqGw|*#*m4A3Eu%$=F z5%=flKlp`g{6+W1_^o;Ho5r*8k9{@9-<}7*?CaV1w|^tXPv^mZ?160jp?`?+#b4|G z9R0z!v+-{_8sqX5w@=5Jn5$?I|Yi)h|C^p|D8 zYwt+}HRN+9^sWQmhCEBWz|FuzbfO~`7FAY!18b8O9s&-l02B^_cLFc>;Ew<|?O}aL z<7Wkb0esy@&G;z!e*yRionpww|08haKPQ5{7XC5t(6ksn349qs{h*D19{BNx&44QT zO=F0;4};{OjXw)`jHNOMF9Tlt{vbHOP$T%406$KrclECazSN`tO5g|Z2tQ!+dn@pb zJ#l_-13peCcJzJ-c-tp~;2MknC%`8VGMD}@fFIeC2%fj`Uk1MCTV}8qdSn6Pz>maX zYUn!-d=%mw|DOe}_vo8VLp|~gZEo?;20rocq_O$G2Kdr-F~2qeA0I0Sj>5M&j3--w z-CxMdTY+1={I8TDPa2)SFqj)0ApX#&5~_!V-kX8je`;(Sf$so*^6ErX{%3*LVz%8! zdWnAkxatk@)Gf)72h5=Kzmi5c7X6aM{OLtA;Ov z-wb^7FTt_-T?2gZSFwD(Q{t~l1oztb4+GC@O9aO){Aa*N{*^Jv!iRykJwzH)PX&z*hr2ftO6uCoySi(C?wme;)9|+el;K1;BTsj}P1W zECYU={^0Q2fRDXB5iGayUBJB_e|7^Oepf;8IPucHZv#&LCG=VP-vj*oz4Uim-Yo*p zOhonlW8fz}{cs2H@iP*^0gL}R;H$^X)I;j?_rN1w`Tq_)|7Ywqu=4m*;8`~#zZQN0 zIEg$-`E!t`V)$}w9r@Y(&jH?6oCwA(Tm}4aeazol;7h-p2pAHTpId-Oo{QW2D&X#a zi{)_u_%5$Ldx2{hBv5&p{{6sr7sUPd1U~WoxWBv}_$Dv? zmB9Dijr<{3l7AZb;9ar&Tnl_%RNwMoP~yGx?*@J%ia#s(1K^=MkujxjR`3zvJ3ain zfDe1{mw^vql#N;Ze*i9~Ki+HM$AHUz0?#b}o|1U#3p=RqS?pCnH{BBJv-5zDJd8fH z_%*;w|A<+hmG8~Kx1t|In|~v6EPD~<@63YPK@aiwdGx&X?(&}pTukS0x8=PC_+hU;n}82q7R$>uz>mL&Hn8|Zz=x~i@#{zUS-v@lxcjEE)HsGZm{$Bt;=C$9affw2N+MI$p!Iy!L zeJ&B%oBs%WQ$t+;9{}I_c4WlT_haCe;Y9GHm9J-jANyo%ubx?ozWyO&nANxE0AIZz z=I^V4o94xEHShy}8_VMc;CnwvAF=gs2VU#dXD9H;2V?s70w4A4i+2Inc=)$TJmb&3 zmi|8ncKh-~9{v{i#-GRI;RC>rdGhdYz=zqS^Po-t6X0!L{x1OEzA%n2#r{jy#PA~E zd*RP=oBk5u6JC4N0C#)&bpSj2v5fJ42k_lDz+V)O$j317tdGb2>j3agF9KVB-449> z_hSBh26)KJ|Es`vdgXr$c+=}+{`?Sl>`O8H6W|A5i1|}k27Mn-1oLfqrN9Sw#N~y+ zN3cgnY<({Regb{t`qO0s@5Fwx>05wXzLy9#S^aPg@RJuObUcvyjsjn^71-u?BXHBo zn7%7gvDOVK}0zx^TbP5WZ{J_fvq@p3KsNqzqc*sVK?e)>FcJ^kB_7Y_hm zL;mtNr=UFeSK!B|#pBg~0{466KM8y__LXbD7l4x}*C%XwXV8f@b;j+x5cp^x@?-h8 z8u&Q&=XDnUa^T|6#`b0t@HXi0wfI*8pNz^sE4T*u@DJkhM}Ti1itW)40B<@J%j=&4 zcYlrX+P2RZfW==(_VB+v_&V_8Z;0_920l<1!#@E&_94>gdFyHb zg@fSLz(ZdCYk-SuX%8#kHNa06#{6voE?XS)YZvg||BmZ-gWx|M&%gcz__F#K|Fgio z=f~su*MO_uht5-aW(D5??(cDdZ=X-8}?^Z=h+9?R=~;Bn%e{Jt0XZjYYZflr(r+hd;t?k-CN zCv16N27atOw!a<%zSm3tBjDqSxc@&5eB(ROVYWWWa>n;ZY#v zmjPGy6K3(NfbZJFoW;WHfoE-t%i9Y4xK~~`@I36{A&M1xM}d!(#Pace;O+>&Josba zOHme%|DOOpj(&9Z$34K69=+cJz8d@gPTOA}1-|LN*x&Fo;6+~ll!@>nFMTEO%~APh z1sh~O;>Dj&{DCOGJa{eeWnTOy;CQ}%R?rUoAmv|U$Iq*Qd%g7iz?-(lQ2Ip8NAqYv8l`6}?XMKS+= z0DSbb^kK`dp90@^7@NSRFJwt)sGT;ka4B%vU!YGcya2fJ4Y52d0ls<%G}`#Jz)#?> zTV(UE1s;p)R~~Eve&oMm{0`uGOx_Pz{50@A;1`phjQ4}Un>>Dx0atqRb2ISW9{xvx z58M#jC!YqswKkT|2Y`#kKC<+F57>N7*7WBmfDc9Vo)r|GLw`dbKWOpi0zd5W=T*SP zSCPiXuLABxpYFAA4e)$~zsACE1fJ*Vhc4hn{~V8Z0}_u@9~GeeWeoVJN6-6#ukrYC zJMd-K!c&|7UjRSi;eP@6cJz&-{~N%Eu7%n2gufNR!@yTV->p`j9tC#$w?v=(x4>sI z9$9*x0=^O9aP2+wTx5;T>c;E&z?-g&?YAo6evjVuz&G6!+rzEE?by4QTKcqm z1FkH^A7abD0n!h6@$V)6jG&1c2q;kSSfT^{S#e*->N zorv_+6TnBk`KBx|UiaQu|CP;0KhaqCS^CcfZtqA${`8f=cYYlH+W2+A%g1S73%3E^ z?A50q`0@F%yuK6oZuILcTmKIMA5O;l^G@LF{ssHr#(x#~Qv91EHvjJe-+NUo?~enI zt%&8}Y2X8Irp+w=`3q=UkDlUJ!T%d$d%FzyE-!v5@FMIpCtvG;dvRVnfAE`u$6p`Y z6Wzcq*pCNodDj8o>}yECfF0#jgcEME;fVSNcmm@bYeikiR(vbAuM(Dv1}E_-f#5fNLy# z74XR&&|uqV0J!P%!1#S+JbVZ6J#?NM!58?0z>j(59|Er09_!=J0K31Cm%j%d-y8G) zJHWSsf3Gd?KY_1fytxTn$^Qg!@l&z?sQf(I2IK8s8@~wnAnoni@AbefCy)=DUlZ_? z9(^g``On1t`C8z^6y9X>+YS7@hyPySL)XI}%g=+r_kKH;kG}$b@^51O@&(|^)_DEu z8^D**zg_+hO8S=AU;0B}*}ssad})tg0GF|z=IS>sg!kV1#)ZI5Z;9=Vi-C);jQc|a z@B{3tp!F#LTF@X^h2f4vp>!OzF-^H;#d7lF**nLJ+!;om3F zR}d`i^G)D+Ui>lOCwgLfegb^o2jcqtXA%11Nq8EV^v@GtiM{Xo{?-g!#r(zbvlIBi|3T;4^n<`xGyd0GcrS3c zGp6SzfxY_O0es{UWX|G$7Wkl7-v0r<>ASH!d>eQKeo_Uk51abfOxm?#IL#(L_G)(x z^C<*wFXT0qs^gREsisCg<(&em_aHXJrgyRnGCiCc*~QLQw!&uY)?ar0t-QGEwQGZJ zHj}3My7vlnanQwuwJEmw4W@SX5AI;Yq(o;@ouhkAlzwX_)jhgv*FINr!Bx)nt?D&$t`!+{dJwWD|Xt?z3-d-k54(bMHvg;La#O&$dc{m)3j?iBuE9 zQayarIwMT-zug>#%KlLsIXJ)zSLIy%+DlgRX0Q24nL92BsBLO*Xsu0gRZ6PvDn16k zrD1iI1ap-{j1+H9&ffRvZKO>1_pFc)E|E6H&fvb0ROj$;=RUIodgoAT=O7z2>#y2U zyScG08$&O52~r!In%CDhrJ6Tvkk6&J*RF4Bps9Bb1$?|oZvh@LU);*bzGl8IQ)|A7 z(>Ktj8>Pt;+PYF*nb8zyQ2GKcjgni3Tiq4Hl5A^T^M>K{?~kSjy7mRK8@r}vV^ib$ zy40GLYgPw6daq4SRv5XsmUQ3vk(~8@-FDeoOs*-;TBSPmyRhsi*YCn+v2}G-iko5T z(~yN|N&@?B(v;jOgU_Km*qj;|lqS_!`FIC=Rfkf2Lu)j^e32yzvNbbTZ6g8p%Q}1u zDi}ikGugFr1R`&I7ehYwp?TUbQ<%NEf@8l2+MVKSOXmBe!SLw7`q9ij#n&5t4L0Sc zvPg=hDrLW!-9E@IP}~m5zIWF7utHs2&>D?FR)g>gI5?B?A^_uZAtcgH2e0=>^O zN}xQXJ}}*|oSo#Brl7~{iEeD)oQicr`)00O9Z0v!rej1!j|9jj?o4)b+xsl*Wf!tA z1r7+!d@EVOsAc4WTdh!@rjHt=4WjzfG>hqMT(V5BFxS0GZbqCAmT$(UEkWxql|wXWlckvs1J3zmG{v@O8TX z*Vwu9*pXCmys?k~iC_^MEFh$n*nj{o!(w)|0RoS`V@7!G!Q&-Dy1Kp(&z0|EnC`JX z0TIatBunIg2q7UvhDae{B_uupA;C&~0KNdf|Nm6g?drLfXsKuVcAu`tsZ;0GbxsAn ziw+WjMKa&p&ENFFGRbsM-MQAoKC1`~Uk2&RK>P&a|45?1t z=ge{f7p~e9re)r2*D;Htc`9xL=S!UB!*^~TE<1?8?<6eK99Uv(@Hi&3kv2(hsvZcJN1D0R zO5Wy21Qj)#pgF?!mYp{My`wNA4=|JY)&l%sI&$W~B*gF}!CiXNH|0m#Mdp=J4<00A>$|G6zY?g@c*i$%jm)qK} zpejfqBOZ9z5lQMqZ%we*G~=78HZG-$LColrKme3;#UoE2ZFAv-oGB7h(Jqd^syeK3n9QbVUXHNQHUi`C9+)E_1E){# zq*-3ga1&~eT{Xh7TlkmCL4T5YIdz}^)Oa08vGZjp)rYlGQ>Ark1TeQnz^Asv4J;5x4S-cre zV`*TTl=rvYvD7&2jgE4LqCYkLx5U(^(r4F74>=Wm*QUW^@AaE|)gO(5np4EjEbPgsO?i^=80=RCIrkl15lpBMmumJ`Gde;V%%+oxDwT)|CZhhU7uD4ue&f?7IPV zVq zA2l#hYbgI2f3Q_mA#Gc#N8LADS9-IyM)bl!FzobQjYS#VhQQG!dsww(f+#uNUEn}* z)IHSuez8OYV?=0|yB6D~SSDN|7ds5w?2dRi**uA`R)@QewfBhoq2VMp8fgD?C$x{T z=BIgtZ<`Ft21CBJoA1O?W1cB~mIvBCv!Wtee1#e!$>5DOY!qry&N3VJ5%xKzwL$_RtVo zKlue{V>T6#9XJ=zTPv*T?H+TbJw4CMtTxkxVbNYtu=*6k8VZ%QwRK(kay#v60W>f; zU{)0R0U}-+oW-VXaNQ;ObJ$;QBjb@=ay^Y3oWjZ5re}Hh^)&?613T3u4AwplUo80^zFn`~*x_n|NAPN) z^fFosK*DLXW!?tl0J3(h2eE2@)5-6oBPoj%x6E&s!SS^N4x)#M?yXo@yZ2&Z3P;Q(KF)5e?D-pC4XqS=WJiJ*cs zBLvGM^qNX{6too+Syb*~cFtxy4Mu3b-h`L0s%tnKjyG&^CIU2#(Te3W1WTyqw@E8h z5pJ*qH(6U*Go2OzxSuzTlblN6Uz5SWyj+5GY46N_A_wzUI~%63w$J41o86EJ3! z`FZ9aLiX;P1Cqe%;#|J4k|jc;HV)r{PAhEus3H)HB=ES7DX1l1C+6 zW&DnAW_>wLv1@K`YtC(G#IK;@VEOirvdXK&Bu(rf`~#tvWx+?q*8h_hbTNNSlCCTk zSK(p&U_NQt*GYrUuz7?-c}N^G@m=ha5MwoCGm0wH>>fx^FGrybI$Jb&_@Q8bqXSi-&x?O2sCn%-3lI2gtK|a6@zP|C% z!}oux4$24g9IY$SA^r7dABsw{Play>+?Q;*Kxm%~W;K?pJTZ${QRhd#b8(vx}M64vFaQUcu8x zC{2N!3PJ}&Xcdre+i5CKHtl-Z>ib8Creb7Rq@W+ncb`+yitUR$K2Ij~5uaX8!7w^G zej?gl_l2ZmlEe*evszE3g<)Dm0k~X@p2`O$OlVaC#joKJW_?_)egop-!jr%2y=Y?Ans)*>=_OEynmQnrfFm zj2G0EkMzx`y;@_q@gEBH|Fe8$DmZUOY>+S?-8ww}HU&2$XE_^T0P$ku|D=B!k^6Ck zf$c9@{U2kVv3_JCz;t!K>Y9=5q)~@~-Hg0CV05vSW2_m?&q8}?Mqa)_61mVfDkUA_+eFuejY z@_mMcl`;R{@io9c!>QG5ud}Y^b$)!M_o|-h_y*_aI0bhA+yM{X1Y z+zD_j%W|A*ey;yI-{oZao8gq3=OfliE3RMf@`_Hilw*XiCN|Fyr!uYuFPBYOUNdM3E%oN6mewVW&CC9xq|FP4v7?gck8oO1|it$%*V zGvP$XFF7-uVgbJOWpMZ>-H9W=@+*F3IK?pkk zV{WKC!6`@0C!<(rH-uw3oZ&Qf$~E%FcVa#F5bk$9IOXVh^A&J^1Wve9dCE=lP2m2; zwZ=_{+6QSgf96#C1m_sQgBun8azC_oEyF4I$-zzFbR!+Yvta+qnc!Yi4AjrR4_t!L zzg*rYT&sTSeNC|d9|8A!0i+|t{gdAb&TA9}_tq#w?aE_0r0YFMj|9gu#&W1lI)#H? zvztEv_apA*BR^yLYX$co;J&U2osJCmUw-FnJ^JhqZZv=I-N=_LZ?E9~L4tj4MUamS zN1BZa?&R=>*O6wpj2FT~4VU}-^7f79Wqt^-%F{{MS5@8tL62YEQ?Fn}qxrb^6KLx# qVhg#Ud8eW^#$Vvea+{wq#On%6-eEC1|J1=?w literal 169796 zcmeFa4V)ZB(fB`iH@A6DHYAhTKsYWCLc*JXQQ-t`h2u>@QTZt-0)Yg`Lr5YyUc^8a zJTxL`;6VjNjqf}>s1c(gBDd-xQBb2sxRAF!2q8dt4s?yjn?uI`3<@APvfIQuwz zJ1H>oY*KxY3c!+TNiL~|G?Gk4jt$ai?j^}H$y<{C)$>1T+}LVO^1YJ|o@d@s?PSgl z(sT-(@GeKomFGgy1fEaexukaPB?(-?BLlm4?dJv^c_ghI-Kyq|0gKL?WU099Lx1210QUz zaygPDJdnR5NKK>>q+>|Ok%o}uuaR^jX}sL}jrY8B7{x-46vGW8F(%kUwdc z0i*`f2_*TW8+H4W{?XfCf9r)o2A1|o{?W|z%lKc|7J?m4l73ZB@=3|Ru}OrvKhRtc z;JO#-5OeQwoj}^p+=mysr~d8E|NE1qFUsG$gNsvVuHoe%fKjAuh)7(gz|6y!R++vv z*g28=dP9WNk4Mgd*8SbwA8y@$jr%6+KIEYkQ%|ZQzf-N}p8$8Jb$>D6UufMIdERW@ zPvHBUb-$43H(2*~a=+rcft=Wl9`qjayVZLB8}5H#-Cxc9LhJrq?(ehize#?Jt@{x? zUuxawd0w#Yn|Z$8y1$eAP1b!g@4Gsp9Y^>%jQXUl`wPL1vF;~xKf$`MCBI45{b}51 zt^22V|77d_Iqpxl?lwYost+4JV@_e0j|6QJMuf*FZ|9vuto#4r{z&WoUC^KY9(|I*E%eXi`H9x^m&orl>%N8O z=UDd*d_Uc~KauyZuyLJC3?$=oNp&a2er=Ii*=|$`LINslC-M^3fapza7{1}ep8_a!wBaCplbh_13+E4!l^j-n*T%Pde?Cv!_hGWa}JnA@1m*A&iUt0zjXG6&g|w(&YSfaXX+Kxn#t_^ zX;(}+f66rH!seMXrtAN+o!PT4nKq;Oe4b98GG)s7?{v&`qcB9 zoyq6UyrkKg73SDH^CIWsizm-=&c9%4GetLFGM#rXo_g_YC_ejaikdO=?CCSlo7_BY z<_zcDX)~sPJ%9Sl$<3F}m_2RE`OamtXBcv4H&2;)sn$sz&z?5>e91@Zdj5ISXU?7q z1Qi`o;Jg|{E}(S+A*4^z<=nF8|9I5=!BC`I_B834?Fm< zLqY4e=gq#9iq8;2qkC>eLRVo^1pmak==#@%@4}Uay1py-O*wp!U)T3?FBDZdr*ch` z zN=*VAs)M;qMB8M+ER3fsK)w6IhHT{#pbUV~4+a0vki@27!%nJ6~X9 zAm1Xe7*hP*DzF%){M|0FF+3LtY>d<&2y6_jI|LSkjla7Du2;}mDDc<-UL>$-mwN;@ zhVp#^ivi7FUf_KLxJ}^k0lZjXF#!2{SYR=r`CB5e7=HXM6<7>M{@MjL#^eft#qi^= zAh4MrtPxlYbpF-}Z0wZv0vnzBqQFMJZxGlR-J1k9#^+XnLq$O!8!wXp{#=1&Qovt- zfn@^1-(Z0o0yr(OOepvpDX>gf_{#_^lMVjH2y7+@^#aReg}-qEXBBiN2>iYPK2TsY z**HYtrT{-l;Nt`MaDh(<;3EY-F@W9e#Z{h@TiH-J&{@O)bI%)cOvAi`?)Iwkt0y@* z$2}pJZkTtS=R3JH;~|~IHLN>2ojs+-$sfC?_WgDfpOzuPOMPg6}EDZi==@(KadCDn;9+Xv-9Bo1(2#w0(-c zkfLv-=qoA4eTx2*qCcg^k?3zJ`d^Cvn5rkyUsLqo6#Y3x|4z~0Q}q87;~~ZPNHJbg zjGq+aDaH6oG2T*)zZBy!#rRAyUQ>+U)DRM5I>i`IG3HaqfD|$z)sKXfN+CB=E(y7k zLe8X+Q=pm4=W5*imu5FC{?2C?IoTS2$ZZ$-L(jOV;X>!aMNYoPAGYkXz*i`ow&39w zyqg7&u;7sv>{;+A3-&EIW5J^>cy|ll!-B_H@SYZ2XTf_}aJ>bOwcx!icpnQMXTkeg z@OTT}&w?jd@I(vV-+~XY-~%oAAPYX&g5P1mhgk5T7JQfmzte&zS@63o_}v!#9t%F) zf{(D^1`B?#1s`d_M_KUE7TjpTSqpxj1s`L<$69cc1s`X@$6N3T7JQ-wpJc)Bx8M(0 z@W~c@iUohrfZaouy2mhVADiUltK1XwM>Nd)%2B?PKf-l$%lw+`GTyCnPjbdK%=_ZLyvy|n8IO*8 zT$g+kS*Ez-0lz9LX!v7S-7fuO`<)|LSl%ovIv)%G=sn zaI13#k9Lu^X_z-G?H5~lo~`n?Hg@C&@Xj`#kw(?feq7U?w52P3GF#=&x^yD6IQb9O zI6isBXfb^(=tItG#$LOB=7J^qjssn$KdCKJCHDcHez924x~{)X`ew%eWQlJcp?(vo z-vqwdFT2tk@2vFpWz39Y%U*ervzr^j#RW-~TB(_eKyMFZ8+#xjq zoO{>U+y&I}aq9T^+>REWYh501>~N~FZ}#8AIURo2Wu(4&$6dcHqqKebm)ZtRgLCkI z2=JhK_>gf%O1|)A{TUOrtZ$n9HM{Ho(!Q4j?ORvJ6sWDn zIY-Kd@40`}M08}=OS=z{GBcD-xx*%CncuoJD3kg*yO*Kk3FvsjqT`7K9rrNiI%}LE zYg!ArwCi|JwidE@IlQ&41@Eb1!7kfdN1u9nZb$aXE_%FYz&$&+Bln7hTMzEJxgGg+ z7Vdd)FU;*|PEr3CTML8M6bt_Il+i!e?!Ulw09Wu{Kd$S!)^dH0Yl`bLTx+;K%hlz& zj%yXyr@5jt{HM4&T-O#m{3l!C`5@YicK@YmirEzw3FLO#G7k@pSr_H%?UqukuBa;+PaA1O2(ynAlG@^2Ho*xXp~pHLzBu^s}AT!kuNg-1G;LVt%MxkjGRj$=W3CUB+c_`lPB`l-)hwpc`bQ*TN(>) zO+aTrU$HRhJ^$-8rRJsU1|v_Qkued_cWs=$sDB&!WbPyH^L-WH9~ymkgZU19;BT|) zwXLgO-WHybO4jQ&>NS9R^+!hcLsoOux_#5++sU_`R^2*H-8NCTamWnv-B5$PoIgJ; zI!yYwB$?|;A0IbbbmXA4zooGw|I+RjZmi;@4aX19<$`zVpS-8-8p!gT((;`+Zz9=k zwVlVfl00a~w8z!oT%=7H1FKq*&4Zk%eBP@YNdKU{H19j&{EPT*_$T8Py}8z}rk|o0 z)n=Q}2 z7+8f)lUk=*lVb{Zxe)ZUiYkh1J#$9*2G-c}8Tbb2n9PZ3A z#V3LO~3JYb`|~OYWmw%tsQNRS!|mD>1;o2u&e0DHQ47o)9>!T zOzg9?^A5h5(^?RpMceQAZjO%Gv@^)q3Bh|TWC!p0yj%BbV;bA6AnyxpnqO;>U%o$O ziA*aNc~+v|sZWUdhW6-B;lYRD!KvU#-rdyg7ore8_ilM6_7=Phc^2ds@QnO?Qr)xg>~7xIyn^@h!^xvH#2G&R+u~!ZRQX$Rgyt&zy=n2KGF2hCoL# z*2W2s%9Lfv@<@)aiRT%~H6?ner{8t*&v2VZDw{O#~_3bD}$GZ3!wfr9idHkT-8SOLvprPKT zrL9=RhRW+)TJ?^ML(=?e@_eDO8=Xsp&Zi8W_((;rh%ZyiTKf&HYv)bAl5e#st=>*lHy_sV4xU8lM#KSbVo%^*ztK8gSdY?UC?7IOZ81`xa=YE|swqKcX^=D+} zyBWjpLS9Z{j{8pR=EKmxhvrszhoFDof&S&0_{%(*Um_oLu38PxWlp)hI;eN3JGN7| z!N~V^-X#U|lU$X%{a1%7FRCt&%>$Ird+?+Ve4uvJ! zT)fvg-%ZQ+9&r=mO{3c(SOKJbx|8lisvU}Ayby+9vJ=Ivi|3Etx z3;wFc4)>|K9j^ERkO$%qq3nA7?m+!6Blb!`>e-*Mq4W-cSJ^7}9q~S&YOiv{f1tiD zu1iXNb8O-pf=^_gn|4~#bpyiuho#$!p9^UJWa9nSpbUSV@F}nna%c8eIa7C6Rh+&{ zP z&*gjG_x{;hkhMggXWqYnSu+$GWqbuX7Tx$y#(t<9dB^C+;r`!^ZsqEO*L=D9|0))I z@*nkFYsM#k#dDQ>eCQgrrZtlq8}x&gaEz?8`oRT^k)@469}xf9bB$eNWj%f1IdI9g z?`^C+6X$Je2<0ipXeVcTh?=<=QUU8_|1*wIsJtCINnltCH|u@kACrY zTEch44}c_zvs2(L2N9?=)4JvRKcJ-WeHx2Ob9Wu%0XLi0smO`B%hrVrmJ` zLmyu-UrYN-nM0hM3dZk!^dtNG{o~(je{6Le@869D?|Eqx+H@6j1N@=Lt@>#Gab!TB z$gKsXWYE#^d{cK?b^CDeZPXT&mAcA$ep;gL!oz>l7R}Z>ACJGIe3o}EvflYb{2f<# zDDRwWz4NK~JK7fV&KcG_ljHAbTgW@7TJKDWzta|$b%OQIh4FXL=K(#$9z^YaQT&~z z@EyCa&WOLGazp5``|79T@3e*a*nPD*{*H^kO8H~=)yv}VG==Zjef2Z(ciO^tl6`ef zqEGBgz458jryTT5+W$AY_6sS29f9-TNI71C{>M9hp;#C{1m7Ti(Wfu^;EjCf>XSFb z^VhySm@=dfCv7FgkypFgP}l;2f1+;5QE9)OdHF%&cVOPY8c))eQ9l{-u>Mr^Pd_K^ zo|>;hPU1I1Uw=DJgZBvI=ur~a6tNxxOH4;3cOS9j?xTU+4a;M^rTs_oK|f-Aa`zq{ z*r}{}_)l6k%9F-M;d|s(+T+T1fxdc@dCVgQ&sAX6e=8dU*ZII?Y;6i_A-8{mrc9i0$uhEUw)lKX<}kpymA8lw8PK5yFRC%Gmm`C(5$`&%MZTI^hLh& zrqa&j=bbO>qh)w*`FwqO|NH{)mhji@DD5LG+Qr_nX4u2cHiAlgfOrsC@!a7gH1F4^}if3l0;*=~=aL!>Si@1Kj)Pu_t) z%esllQ0ep>E~I5&d7bLobKE%ci~X?fP8 z%(8fkpRxPeN0fK47W;6q=9Y@rJj&M9>YIKqb^S48>qixitsgVCepJEO>I>cDdZs&+ z1^I8385eyihSk@%?(* zJ6ZOw8s9tG-aAb94vgrCGEKPCv4Z#%{QIMh7$27 zJ<5h;y?0bL`~ulQT7J71jXg(RFUne$%=0y0GjE(}zT3ce zW#UUyGetibpWfiWPoQ(oOU<{h@GY^Xk!~@urfNfnb6m8ldOX?H-erlKKn;)`r%=@bS?Mtz3{ySKdk5?=an(Rng{DWO7pmYSM9Q%=CKC!0)AOi$+(sm zisTiKYoT57Ip@<7|4n{;4-KR+t|f{!=_NiU%%`l6Mdy>7^G&}=yXz&-0ckhgJs!PV-+R`K zLBwi24wc`N+OiUAL#N_4J+#pMkz<{E~jugbkDRC043L>|!Ero;X(ZeV=+5au|8x9>y4g zuhNf3Y23V_>*t0p`l`?x$uN;OGB=m_!DV}>-10t!50O-|{G>0(l&@>~hlwl>`tLci zwu&!X_^y1p$COX~{cTqH#`o(kL?=u9Kk~ALvD`4r_z}U2A5r!eYd*h=_kpM$rVoVq zoJRSyV_NR@d&0vaJ@LmlFCsl*c+qE{xuH3X4HNkljDs@%oh8VScOXL!Mt&Sb+}VM| zogIMhbARH_CK7ixfw(iCX`idQHSG@$*2JRwq1+Q+ru(I;+B3eJ%Xkv|Rm+tatq9+r z`{m#Va9v^gyW}Ubf2DO#T%)&2?wu<4&xR+f`EIopOSand57y-x9!bl(UZG*B?9s>$ zSNNX-Be%dm+=!0hDlstVn|8DAF8->lmhm@JhOCVitUgdMWl)C(^7AC#=;_9S#Qspu zZW15X&<OH8EiRO62ZJGhUxE@0wV%=v@#fR4O!1t zz6)O31G~_B2|QQjwcu}tkIReD1|MH8VuzvM7P`YdvB~5)`+Fq5&*vWg4OiSP=9{H_ zvw?3&%6qXNx_^V7i^>2u+ZAb5#wQY^1 zC8jffj;zHENV9j2{U@P(yRP0N7S0_Q*pB{FjU8$`N}VH~Ody_df*0^%fBI~{1;IW% z#u{T>?Mw2wk(h4nr_wH)XqU~6g+ZIBKhK89Gy1E3R}E~&aQN+zl);IuDtYze-t?>J zoe&qk)1P;cCDC)aN0x;5HxA%l>gN2xxv?gIkLCJsO+GU+ozEN>;hf>@TS4Ccss6O8 zF8r5>DSx>5U}mJVBy%IM=9SJn#~HZE%{#RU!?SVyoZSAkPW}*)yR|#E4=w5ULZ7*; zBg@>$+tR3dl=u?e3nlhs3wE^ljEGW(K4LPr6shxd8J%D84Z2I`UBSD-cVb`f(6{8X znEW-CTgx=%gCEKsN6D*H`Kc7;Y+;NPi_k?|EUl%#7~0Hz-9~I-eFr*K7t==l$X{X8 zr_-iSZ*MJaEAXziGrImp`c7GWnTSgeTg9!$5667Xy`cUdvZuG~T*6wfbuTcsh`pA+ zZ9C@}{GNRnRqT_h3ih~-GISU3r`@jZvT=$>tBs>^E@8~}p1eDlm~DqTl4K66&-c7C zh)dhs! zCdf~0EjgP-zISu2>7m3-G%UW(DVf&?O>!U0 zA0M9BfcdYEfp6vcz<#LVWpzPPM>9|J&>_-B(fHbKc=Jb7UumPQR{K-7w7<%2J!=FW z5fdNre7lT|u6=3JE+Q8h&$M;WuQ>~5cu()U+lrB`-F8MExv%k|^~mX<-@u!aGUNqh zNE#V34EZsXdEgM{fdVt0gr89zLmBc{Q%C&4{%ckpv4NvHeoESc`?ZWmZ0+2fF-~B2 zV=wJ5dRNaCz=wo?gS~-1v?uGY`iusatH=QAQ_q}6V#0FV&vRma`msFQXM&HPHpsus zH$AM~<%gon=%-4P$i7hCiR=sIoyfjW-ihoB<(XdfFcO$!_arbJ#cbT8K+u4K7Sv@}I^h9R@xn}S6tF-e# z+IaxFf+X$h(Qn1yU$ULon({=BZ?W3h_>xqX9TLbg^|9jr(eZphFb*U6w87*9-~7#% z-)ys?8#+{O!%J^#BkQvwV;hId_`)`i`m~wP$7NyoF8rqM(Yq!4Kl%B^VxbOytF1Q+y`Puxvz4(`x|KiRy}|si zr}D)vN6$p^lYXgV^D||9d_jJTJB=ZNIEAPcU`;4TYGPdda*QMPj%{U*D80RJO^f`Bj z*h9{@;fmiz`bOvr@YfYZzjTfLv4(%>MbX2N9_3sf>1W=PjRi?^b|Povum)l5{%;!| zg6pEOk$hQq8-XqrJFG1IJS+2E;2S5-KA*we@>>_4A1gzTN@^{30Xo#^%Q^>YG!D&w+5`=||COtix>rjBA` zK4-PVb3r?3AHvR}+(@^xS3m8orF}@L!)c$j@%Hh=1_f8DeT2{c^TopW{jfD-@7Vo} zc8WdgYG3(Y>+wAGSgZXhXsc69J&c_i^(SMeil3;bJQ=T5GA0vK;$(pbI&1L2rv&J0p-mEdZ=*cEm`K$F2pPcT& zLayl^Xz@|P5Bdu}&enq1&tfyk+?oAT=}yil6j|qEbLiX>oXjo7uEze9vp*d1Z$g{O zL3cCx@xJ6I{sFNoe0-M;iyy3SVlLcp>!0f7ec`SBZmoao^L z4Z7wu`~tOH#r73>EcL^dOEpqU#BHNF1C2ek<;S#mE-Coz4_PPq5US*B>tAaL`Gg;hRyuG|RjRi^S zdz+*Dp?vhi9QZ1BAUsidFEsL8+k&gWx(AkX6eM5alk_$0p{o3a{hgBib}4l@fPT9_ zeRd-2Iulse*^hOd@vQ6Yi#m$Q#ZGBOyc8uKbFr-)hQVZPjmeP(N>Z zBeJfwa1OMxpEk2Vt|=!Y^A~w0>)z^TUQS=+Tq)PN!IAYJIa60;q?U23DMREt>%@`% zH|xYYPL7td5b?cy+q`SmX{0}@O=Z?;yvN`zNzMgUpL4j^Uu*?rX|S$O-+Zi#?`lVc z&z92$3;$HFy06?jj05HUV}}0k8=8#%jc79ZSIW{hR8q_k0NIiDvcR%X;1zAiE*s@*PH{va~Z!XV}W=090mCX`%7iWOXkc1#%Z^66r>#L zpFBr_G02)4vPJDB>a+$vCeAkUsh6w?dhLyxz8aV#sNH1yIz8+jgY$q8PA15e54IHc_`xLE!7fNL;IL#nm_f_vGn9zWKIcrFZ+1$>FFGD95Q7E z^;d+NtV&TfNO+blh?Ezm_m zr^=BnhNoQlK4`~((2ku3&sAXMb-q#0G!mQOO4f&^?}T+!T^#6c^f6`hv?lZ~^z4D? z*#pp}`=e(kqGu^KaAsIfW(oGcvq~ zE;N4JhfLj1f_EuXwCc_07GpdVPmFej(%PoM1r4?VopyoTd#q z=Zrdf%jg>vkb9}UatISv`cB9yQ7GB1)eIKqT>G)n|bme2F9>@uw zF(2v5aKANW=y>2N<>~n#s~W|2WvqiET`9Vfaj3d-6}VMJ9hcf(qAOQ}BgJf9>;=(L zI=APU%68Gcz&orf<(t0fN-3u&U5S1d9q+G}aTk~KA`2v*Cen|baT&>b4+Gn}?q)11`_(y)!X_V+lshj9XwULaDG`OXqjx^6Sf9k1Yh`1yl`O$4o zgs+k|A-!kE^+jU+LT&8TW{e^eWq#2V+StZ#NnN8D1o6p=E|GH>0=fAe6L;_cJ0H!O zOi}q0#Lu#CJbG`dbxs3vx~nhebp9i;v#O)SN4eGTn5)35o6(aZ-<9`V1y*^%ISeA- zC014DM%mT&Umq?N`6~xCW_*i@#zF2>o$&ahRTF!<@A9p`J;i+twl5#7~;^_tY>ZpNF^DA^H8~EX4|BoE5L*laKmIY(LNQ zjN##o;WXoP7-M!QV^&~fgv^J%S4bO3uaanEZ)0OY@)`dzC+%;f{)D#(pojcT`s~zaZvP_OA@XCeBv5&wqBJuCs8~tX%c?2voLNcJ0={wu9eJ z>T>uXv4k7vcE}Gj`m9^~tY2rpT6>?If53^~FXs}e&f@t#9+ls!+& zcIR|2Tji%!_7;8uB^R(VHu)ir-@ zS6y?rR8ZH$OO(BtcG+x|ZPpr<&wE;ReZ(p+tn0JA)b*n!%G*SF<@~=!clWq9n^1D?95XSOg{JtdRRnE|ajFvte%{k24xSI?3p?+~<7WA8tCyZ+u zbCC_SG2n@e?UShkzZs|Fd@y>J-~MCnh>x-*&d;cA3_n}Me!^d$I#c?2Yhkd5nRkp$7ts{jbYe3IP46)@ z^|$KtZS$>>5z)6sMyS0Z-xB*L^|?#<67u5v=36t~qi@Z4*EyVgD?Ti~jbelDG~b!A z8hvNRs>tJj7pA>_YToZ*tV#W34WguBGW< zl6*|W2jpHxXX{?W5^)Sx3@-d!;c{+ywo`Qc*mU+au7_Wj>&x#UVB_*l;w&yp=etz0 z$LIAWo+tPe_6MnV@^`J8og8a$cc5>(e%ET!0)9K0bS7yQsfBba=`K>9w3M`tw3U?p zE`1-lt9<{2HLXZ#xan{#~o0!C~x0`MF1F-K1~o9Pq97yH*3PlJiQP?A8G~-;DL| z@OQ1OJ}doI;>LYaejm}3W%d|ad#hv*mED&#o`rq0vJQzX)O}EDqm5Qt(t36(ans_% zz_&mj!FC*TRS*Zh*HL2~ZyO(n4SmhiA->JLI7iC_p|O*$X9em(=4yS@6;Dtvm1BHAVPpe*59rpjK7b}ei_XI= zTFiQ<(!$xY;tPwu`Jnk`HEpxn;@fItyO^@2{q@XYsr%Kf85iGyJ378r9k!$R^!Y7Y zd{$ODA2sDHBOm;`P1t(Mr)5DodLFRsdtO?uf8j4??k?q`JL@A}of+^-e$Pz46&}mE z!T!=B{wQdD79SdPG>N~t)c0p~eIMj)?A)n_-p9y`wcECk-p9;%Q99VSz~PO$HgDH; zhWQpBqTg=SwLSPY_w9k&2D0x)Y=Zn98AryF^6%3!4$K z4C}AFPZ}z7*hhKye~~Bu6dZHXb4NRJ4t4$C%sJn{ncIQ!yM^@%^Kxbc@9Oj6p&e{! zT1kE@E!tNGG-)0Q9iVmj0(ycrQ22``k5%Nc%HsQ~AdkMzO>CK4Qh&enKQfM^-=*B} zV}9594t}4RbO@=5bUJA|DMz}6bO-4^(h^dn<8BCaoZ8W$9=+M%Z2f(k!P)xz+Xgqm z%J2IIXY21f49?cyKQTC4f8T9zBdz>?ZE&{!zR%!n{r!7`v-S6%0^D0xe?O$--pO9U zSi~;wi~iO=wwyk86aC)Ux@rSR9_V$MbBV5uFIbqmt&X!Zvp51RI5&!AlQ$UE1W>jQGF<2m~xWo_;_uKHZAeD?s?wlO@f4z9;> zZOZVy+{<&hm;7t;>ElBG^6Wqlm$gsicSHL#XYPk>lEMy`EAv9F5ArJ1uUxCJQL5A? zxcrQXzRVpLk9Itrqal~E!-ZF=i;b+gJdib`YDFGUcXL1gKw=2+kJ-3LcdavRVa`fBiXZ`I(Y0r%634XU&;xRNHj5x3b@TsmJIOL6f zJK+9wbT-UDVD_IXelT!<1E+zJJBr^8m^rw@BkzaTiFuxmL3}-tE#6vKhaFwF54H;9 z`Cfi^xLMk7+W*Gnd;TYm^DwEMw1)H|X)CG!Pfb~)D3^L@xfx*A92DLiIQ-3~F~A}H z^}r$h-Gf5Ycnn^j*4WwI1KOik6-A7tXT1qOA){{1o++R|E(iqYN(j-!r zbTa95(iGAx(j3w}(k-L~q`OG>klIK~NGnL|NE=Abuc$vMLmEdqgmfh7MAB)bb4b%k zSCCpr^GUap?jS89zXkkP z11|vni-CU#{GfsF1V*?kAASb>djl^5zTd#V1OBan{{(!Gf&U8pO9L+jzT3ddf%)Ab z>{Ky9~S*_90Dr{5 z*8qRWz@G;`*}yjfpJd=$fR8uuZNSGG_`ASa1K$CBl!1Q=++g5E!0$2eZ-6Hm_7THw(JeinF?fnNq5Vc^Zc zX#=Cr<#&g)Ed~G&H1KfXeg@{Ze^VF%`p#J3Dg#dh-frZ~LBLxKd?@fH1HTLSRRbRm z{IY?M27bZ7#{#c6@Cm?A8~6jjYYluV@Dm397;wSB>@82NH1OHL;qSgr27c7w&j(&= z;ERC&Vc=Q7e>3o9zz-RC4)9_FUjzJrfjy-3QNDd2 z7(J`-kAN2%_$R>FMv7kq%pz>UDH_bClcz-Jiv zB;b!3_=CV7HSkA)Pc`uAz^54aEMU$r)_kS_pJ3o=z)c380sKA#Hv=DS;46XOYv8%S zha0#B_+1A667XRLo)7#E1Ai4bjQ_n2c%s373wXSNzXyz;LTURkaJ_+l0=%bze*w&I zA?Z8!0Q(019q>p4{}Fh&ffoaZ_V!iyY1W6n6+X=Gd`sr+}+T;99}C3EWHIY7@A9Ud?!^1n%SD z`Xz8zf#V#bSh?Q^$5}=(+&{q$OyD+w8#+l+}>L=#1_W+d^EVd z6S#}P?UTTL3*5K_u4Y@t+c$xGC%Ewm+->0YOW^(tZbAb0j_nz5Vgh#xxcw8j9Jm7# zxNn0yFoF9AxPub77r-5y!0lbka8_ZQFCPJSNCI~)xI+`T1>g=#;Ff@UX9DNsGv1^G zt`6M061XG5y*q)M4(>e(-0k2FPv9N~cSHiWFTZWwkieY{fIB6Dn+NWL3Ec0%eJFu@ z5!|T>+``v#9uPr)CBH$aOWp*p8(bg-t+`+J-CY#xZVGn@n$4&w}6|O!2JQ-tORZyxKAf=d;BfqU6R0k5Zvqp zZZ5dy1n$S+E=}P64eqi8ZVR}}6S#?g&v;iPa32EqnFQ`Ca91X9)0Sks&n9p)|CRCP zBye|wyDEWO5ANy&ZqKC|Z*BtjkAGymTmqN=XU4lGfjbf0wF%sn;69hY9Y+~03EVtz z*ClX&0QdO>?iFxfNZ=Mw#=Hb>HMlP(a6a|DK7l(4+?Nu#J^r2XZb;xh2JXfL?s{-v zPT=kV_mu>06}b5c+~7wt-c1SI(co@Q;HHE7?*#5mLdTO{+Sy$Tuc&IB$G?tc@wuXkj;yArq)!2P5Pr}M2WGVG@b+zfC(>%wWd zf9BhT3EW0-KhLL$(JDwv)yO)yi6_yuUiN<+$XZLM?Ef&aTlT(yM6A~$nJ-%Fp?YuD zG&P>WtTF2P=riw|xItox*42-dIF<-#u8)dZR4zn?XA#JjMj-|O|)(z>u#)D>baTYfwvWPzt;GD%wAxNf6^8j z2QyIKBTh}ub=+#zq2`zv4}*PMCEgnne=o*sv+fzK>6>-WvUPopweSI~h4*Jok;MMC z@^yW0P*>e=>jrfQ_ui%^(bu*Ib+6+rblOJulhsw_GO2@%Z^PzAO)lWYFv*jcLij7O zPV$|e+07YH=G^Xjzd9Gh0gj5-Tl^$_{&sBq+t-}gvX_K?d1Kj6qj1AKzrJDKXy?jD`=8!9KYdQa!t~yq^M{@;@A12fJoDt) ziJkLPr^?wJo%7ujC62p|{#N!J3S!A6o}Bk&4>fE5!Ec|0=i&Oq6Xu9kCLTJ&vf4HihqCwqJ!4Sn?{6*^4o=ax zq@J6#o{S^DA4dEd{xhro5#GW@JPB|`_NZtcvR5me?MIwqfmruVo^jb?ndi*&8`O`!&wbCP|ES*nXblq)WA(J7~L{bq&un#z*>gM$g8oC8o7AFL?TO zmmCP&*Bx}V#&1g;)6i=6blf)3NsV9){Y$$$bpt4i@0*BulK3Qd5NCD&tb6Q{TT2Wp zWsClz9VzGawPU$DwpCGv_95y2CZ=_!87tZ^O-!rwE#!doEjjm+n5`IX5(nO6A4}@{ zKJZ`nb3%h&q0t2n(?nqWKwW%+WmU+ zzizPkO_wSs`yjs=DSd-)#O@Gz!kDRYZ@l(UXrfOJNIN$UM&?+3=cbu+4c6hzQJ!Ai`@07S6BUl-`UfC^R-^;feq?bcZ~t5M@w&GU}x0h$+ti~VzHg< zZLT%(oydpYWU7v3#;0BxleukDA3d9y^MD%Hcw6VL@n!sOmHt+uJ<7yZy6lB3*&fg& zdauX5u*tblANrT}k?)v3B4Y#{9F0e#gPpd(p6lWX^G2hW`_%6%rRzsM)0O+j>!hm( zd!ekJk-how$tCqD!*>hpw@Bvwuc?d3plue9jV==Ty+b^G9kgqk|Dtz#Dw1*5c>#J( zKp*;GaxCdReA27%nsKDOt_f_7Zu+vmO81S*nVvG|2<>s%)9Ss{sJ~g%vavNip?^MI z_aP^9Zy5Kw->+hEukFi-FWd=f40((r9YQ*ibRy|A(mAB*q$@}*r1_-VNq3MIk%ZRN z!8{XNo3lew2Z*h0;0X@O76v6{}Cxk`M!sDn<-%B5|^lT^})Yoyhnfuh3IopZ~hLzg+7+6364Y7=~e{Gnw*fA(ID0%ks(`YjPxM5rUahPku_xG$u*58(Va0)B?|)pp$vUWly$U2?w6lI`qys*U6H z+!)$j-UjD+N_6uC-a@C-)%Sj zql`Y5-^LJsSVgk10vXM@Dv{iSH@c_9MPGE2c>|b-RciBZz$Y~bpVUD7c%;6}AwxT- zn`}njDxKA3Wb<+KFOkX8=fzIden@}g+z1`_H8p`h$+Tx=dzkjrv3?+ZiN5PIPV(dT zQ2iVBAMKN)rTONMYzO|`H9;R;%IX31$-4Obt#RqNrLNq=@--<0)#u&QI z94(^T%wa0(FK@=&avbeJJ4EtvT+j6g-o?kUPr&!CIfnWSkcCc_dw|JxhQRZD_ zyy%YTUG%W+w@dQgrso`)%lF5RgwB`#C^9a)eKb5YdxKd65dG?7!;DAotA4_7BlXk! z7lX3wJa^PD*rT0q*`RNjEUrLDg#BFG>^Rd7&{}R@QPKFTV2-c!oE(=0QNO@>w?|2{jw(RD6th_D?)n?T}j{f{hIqR+kV&w0Pf9e(SfYHxj{2YD{Kp@eT) z;%=QE%9xG!w~!9eEn4;nq1PItXPPnEua_}u+9c8=X0EqG^SnyiVM-s`VSjAtpH@)+ z{|f5wR#<6i7P7Mc5%n^V1$HkQ7^JY3|b%x9I~-!%2bU;F-*Sy)B7;&xTBv@vV=|I!O-pw&uXct`KCh3m zc$J~u_>!VAVdjq&>EufNos7#+mh`HVPbj04*O>Yk|9ey)qIthMn|J#Rp*90D{E)tSHhPP&1Yr3#Ml5ne%3%=bFE68!~JXzb86E*(cIRw zk8SI{89F{ctB?Jv^FOR#$qClttKPwWl|8?EzY-pn>{lVrc6Pr?HI?_hzeW0$Gqmgc zV*I=1=MW=IJN&1}t1*@JE9cej{YrRPvR{Qf+u8kU{2Sb_DzyzQJ)$_s&?O14XD4SwYaE~Ox0~-SX75-rRp0EHPf5GGskc2F70ADy%COfYHI8SH>~Re0 z8OAH-|2Ues$?kFTg15gfxei#;m(6c**C*X#$W+qM`%ojgY$-Qu)e@gbD**tUq z)>?YK^c7+y2NNqfh*(KdUt%S_&5Z>YKV8U=lI_m9cCmP>ADDWTi&G}QQAe2=7|tvg zU!I&Xt@Uk|`+NXjYM!yLy6YKnRtGUIHy4TX!WXD#p69tIj*56@{k`k0#IS865y#f` z9kI>G09n7&@%&5np9J?o+~1vsX5)iu3fm%#Eha`){gXd4?@0_Oai7t9Chl3wQ@TwZ zsE?joPV8;=+TDY`V(KhwQ!f5b#+A;YWlv!;#;ouCDe#My>nmM+$eG`N3glYO-&5sU zNJF1v46Xe}uAC#^*R^5#y4OjcDlwK~dowvtQDr}Eq<-ZrZO%9Soomu{dzrps?W@=N zg}59|;Rg1=Y3y&Euw0XA5y{88s3-Zq2X2oQib*vP!ut~khV;g9-?f*R zZK=EVbzqm2lxHHxg~!61Xzwa#Xtv4k3XAUFk?%P7p;X*PDZf?8awV3p#Cm_9zh}>j z^1#TMx|A6&CFD}CZQe^el-i@6Y>!^;3u8BkZc!Qgr}$WDA$CLKg3VY_zvK1_Xb^yB=T7KjGoqOXipGl z=5FnQ#y3-LyqPq<3H?_4z#GwTEA0bT+n3UfG5Hmnn_6*(|L9#lhxSXKZ1bH^7uA7} z_D+{ui7eg;^i|C36}{JKm+<T;_h$d8_?cubse1#(hShjg zvnTQC-s|>e^L&Tx!IyilLvM4VlDel-yQG9%kLDER_Vr6U@tvNNhku88XuZTbM>cP# zsiU+X_E%&lnmw33`LEvcb*rfj;(K;h-74_^g*HO3eurfI;ZQ?6W6a-XwM(UOt-DhG z?q=#D{SX@|>SNYi1iuLPet;w0=g>V=V5XBcR4?gjMMYB)eWYl>ads}Hi|`dM%59Zr>dk>QJ$XX!iaFWtYrqvurZ zq}Y44=gaMXxIVFdJ;T(&tT#n%Yu1~@_K&S!U&1;`h&wHS$A5$~c(VOWe6=~prnj>j zn&s?=0qK?zz3dA&HXZKk~t3kr>HD*mWlk% z6ldB7=PH*t(?h%`>DQ4>|6S8| zW$Z2a*56*_dvj*f53h^G2UMh^canYCV;?oXl&GF}_FT`3{q>cO`@0Q2J8RtU3ZCAx z<2+5q0hF8zoW3FTSA`v$j^!hxfBYOu@0TUW@&**3^kJg8UaP`^B6Ul%2)d?VQWLXb|r%JalY! zV2z`=-gMw=Mz?d0lf*(m6TYYt=Q43tk(@0T=|DMCk8^KgIuP9+&hb?IL=Rn2EI}4pF`V`-{&|k650pb&jt`+>a;gb7FVBS}cr`^Y=FvfjReTj5&*c1LyLOE^$U1 zaZh^wAK%JvI&gMi2YCc%DeiTA`Tb($Y^kx>HjP0Uc7OP0*1kK?l#2 z4!%`7HbKW`L&tl2preeP75awyq-QGC-KU#&d^_vzPnkMMKP}^DtH`#ibUlH7rLqWm zLYWl$izEh4WfSXqC1n%8+v-cd+)AIrpB0=vCBAEG>`gKCHT|Y7^fwv%e20D4gSW2o zUisr{@8z1+E~zgv*Bx|!$@BkR|Gt8|;Tox%Bl1aqD?r~3;*=sB@3o1H4&Ln^+xmCT zsFZVI9$?|vf|_%R&(@Hrh({L1hnRes8E4TNzs zQTgEfVOu*SAB|1B;`oX3Ony^HfAfInZNZ!|IOCn)C-8P7f0CY~!|$4eauVB}m@DEP zsi(A)EpLP0Uq=33WoR5h9wX*-#W9ZPqR}5_Xld!47OB&u(Tkn7Gx^Oc%AU0N&rZ{q z_zf$53#EDVN~diQzq?iqe&uqfX&JwjRRjLE6;8_vegn?VL z=Xd>5{LWK5@MwO!svqy~zS3#>26=M!@uE!LaX&>q1Eik(CPWGT$Q(4_0rRtii9;Jj zdkLRMnR?B8d)7B{`x(6Bqo8c>_T}RTcBdvBFS)yIP(|i4+K7FUj*CSug%GWdb zn&0IRePd!Qd;g7-3j9l|>wjTrF*?Ex<&E*{xVM*ye}1$4*S|6J$^3q2tQl26cPQVL zUw`PGo{IEQ1$2eBA~LG{K7!;L++TX9KeSEyG(V|;?ifG+)jK_JX?`y6o&GnKpO5!W zPeuIP6~2yVOkH-i?YArHvf-^$mvBEv#j!`*<8^5Ybw-)B?_T%*?}YYH+1$ThFmLUt zzf=g)IpDA#)m|I_-$g7;iwLCW@@(s$F@{n>lA zo^LH&ZZB}pffM|5;^VVoVw|hOZ0CbNNQ*%-M#1fe*5``h6g%UrYa9 z>h}!gJ!94H8B;&@sHqIE%8d2hT)khLub1*07A~%@`?yoz@&dk)a&8KeA=gu z4>vl)<()7VQ0M)poe<6YgJ)(>%qL9UpN5vFt$l}2o4P+Qdz!Mt-RB!ST3%ppjNG$d z*Q?=d9$@zOrM>C^Zj*gc_$3A3B5*Kgn*gutm4@?_hD^S{@%2{Sn)X~L?bVXj^1D9l zPwH0hNBXB5Zr(f7u<+b*4L8@P-RFx1f34K*x=c7%ZJ4(&{b@f3TuVc4z{rMq58lu) z@6Yh8A1OFnRecyidBeTh>~P5go1Sv1H%Whwh2Ja9oj1~Pw-(pJ^VPmf|E|fe;P-M@ z_*K~zxU5#Vsr;&j3C-nbY#kz?alKdYRMo zEq)IjUs6kT-Wh@)N&EQl(}Q!JzhK(R)TfEH3EgXE>I46s)R)cr4E@p{3Z0xauXHEq z+%RUP*|DLb|Dg(haY#qo0?gJG2)=ejEEt=|0S&yFYSufF)P=FHLt}c)uY- zJA9Hl2=Dh??6fS0-$M5{;dgt$d#QiZW3-|4lj=OaM_}g5L1#^5L28Yi*|A zAa`TGQJflNc>iTHEKa%bHwi-Jt z<8|rQwr}>>SsSM($=iy@P6e{po)@(A6wfo>o)=i_^Q$L9pD6xkvq%)i= z_xM}iTjRWn+THNVt;8q#Mz;CLGHvemkNJ1IwRvJZ_1aby)Ir-Q*;a$&bS3$#KvlsJwd z>^CFzWj#b~F7_Jfm3`1IaF6k|pTOql9oZY8_VO}Q2iarvs?_-9cvI#qYnQ!O#8%M8LEJkwSnuog%V^{AwDG>QF{#gO zOzelYG4UvRCGN%rr)^#C+^Hc|j{kI#_!aoU`_g_|_tY1=>fY~*@NgJuNPSfA0RsZR z)k^rh(&`f{gFc~qVP2$NDc@VgJJ95<=1Lh2c{lxVBXg?)xD|~Be?@EIjX8X$xs9X({`jkv7RDQE*6-?pmdByxaf_D6 z4J{v3S~~pI0Y7sWB4?i9U6SsNVlQg9Iv?LdImD}(7`0$+{3%n;Bq^t>&Ac^?KWVEq ztzB((ifOAS!9Qt@nYZl57Gwy8uDDt^BV^{sXZuz{KC3qA4=3^gnV0+ zGPQ5Tc=zER>ZI{g7Vp*u^z4vsdLFqo9J!T7Zjt&dw~(FPbQHKAW2>gXhu5elx~Am# zI!k1h?p+S#^kl<#X^)pJzQ1hvPI;c}4JN-xKFR*rmm1mQY{@6y5m}+~=@lcNrj?dY zb?>ClZ=mhi7cFC0e!o)3+Ro5z&=AR;myF!$p9^#w<%w?dp}!<=kmt7CiDddr!=o~K zz9L=rX4oq-zNOtld3Z(7^-y~S-b6ZwZ%f)M*OY13{iR(4S+-N#6q=$o-C){O?G@UU zd!Ie$VJv7=*LkL{^k4rqt6#HcUE=L3YO|$`;{zDS`!j|o5+gi;cu9fr%Z0iExlrUEtU_7T=!zd(O*fJCWN@NPR84`M*uQmho(vRj*}1z0|&FqaFCxdrZFP zx}4PBSn%7ew&j_}y^hz%%y|7~>2_6n;t292pZQ{!x=uR(oYB4Dh8|}0m5g8HtMWo@ z4P?2(Vrw8r6&70qJ)yAJ8t7()#n!+kQrObDLUYvi?WXOCdBlzw>9@~aBXmeiuFz)2 z?mYOFQ=Ry|9^^WBKI1m0ZOrXz7rCRcS&=b)wTXsoZ4Bxp zyusGf`U!8a_Y@Z1g!Y;6CbZ9lH=%tdyum&z$&1~D7x}c`-q_({w}swmY}Ou83Z zo;#EJJ8Cb%E47z+AHH?z;Lu(&wo7C$g|^GV^vUJOPx8vX2;bGlwQL2=uSkBzKI+L< z!0r;8AmV=^;D3q%6w)g8vDC?5WziVg3D{|(>!Z1_*a0%G10GOM?1NR%x*R5b0p~;lg4p9(Yg=u zr-3_!BzdQ36J3)+{-uUHPK(3}3p|wH)d^vVAr}9M;QRAV2#bFJxw?qBWA};DGC=j( z_e1{xHgBkl)&qyS=tba27XgR5XcKVgE7%H*yj49`b$#W&0_qUy_*F*74-vhFuK*dY z^EUWz+vcj@-1m3+1bDtg&Ps{? zf!Fj0^&4_##T_ z=VG9rOUAyhMwZkgOZGyRkamhJDd)ewvrCr5?C>K@J>h{*J)(L(5!6#U@{VK%{V0#WIlM~2rAD@==^{k8=^oajVQO8cKPlaR0jQyxj8K09Y--w*w5uf?1jFo|ml>v+u zQlG~PYX+)!w=>3pV{=u;W^AtdVd}>_5@Q>y&xg$z*~ByaE=^%f(57IFsGdC%dCj-7 zrXg`qvYsJlw2i6;4?N1tIjUdmIbmm!^VnL0^PWD@Lwgt-CX!>u4ogYwRwwPTnf5p; zm=lF%B!ACODmo;AnW64blfT%;#iSLyE) zZ87Z!4|H6A+O&o6d9x+2;DOAWw5{znr!A%3v6=MTtla7SOSkbACSPeccpCND&LCfH zTWHa?g%)=U`5OI;UDmhX?Oa12-h)28JNd&3T2_tEpkfQ%umw&OX#L<>Mvt`vYSnOooPpv zP1aa7d$x6~ew#5#9%3(w4^{V|!wcPa4la_Xz$#Bic3(qbohul(H}^1ZjW0SHx5gKp zx|%v*pQ^pZb&2?*N|mwRl<}P&%D{)?mpG#{HI*{3d+Y1TyTo2!w?1FR^PmoQ^^iYy zv79{`)xn%SnmWaCyr&uql2Q_vP5b%ijj#>5>f9miw503UgB;2w+7`K=XWg*$`?P18 zd;+@e?}0Atc>j5eF8004_}4XQ=xBnc;-3?m(!zsB<$N@2O?prI05*;EGk-lYlrszR z7xqDh%9-C`+yAQv`oz!mf<@m80e#(MCjDFdH=N74mfr$i>-WQllfs8nn_bDi_LbfC zwf8qZon~aomyjjbqYp`a)`wRi8?Gkh;^z{$;APyQml=B{e%pI4ZOl8-+;g=VXID_q zD=c|=MNm(9*ZU05NYQu#E<2t+W7_=b9(X#3{N`9ZonzYkNXL;nDczr;9UtsNJ2Kv4 zy709?7dGwIi!S^uGg;j@MY*6qB@84o1&{axNQ7Tn8=GA=T1zZ`Qx=F`&WE}u&u z|Nq!~8~D1aD&hOwkMM@hIpq5i;A!yU4r9z2FlO|~!NRyC{0t0$Ulbhs9zRbNT zDT9#FqNq5-qlk>6R0n-=2DPK;Fv>`DIwOvZR%K@DJfH=c8GNQ{m5SxF&ws7G&pG?v z+=RmT`ucl+4V>Py_FjAKwbx#I?X^D-eQfbO)5l&9-Rm7WUT@_H9o1!i%Xn0mpWZ0_ z!2#NeM_kr^16Rj&e7ul(d>>y+{2!j&I@a%+BRdT@I-z%89@lrxf0y4wm~PzCkKVmR z+3Cl#e6smgZoegtyL&^Q%zhU^?R-0Jm9#QHsQvbH{PM1Lm)~ja?oq3YWtUDrmc|E= zxv|hL20q#O@Jl{w_ww2Fz~5Ur18wm$UT|nze@p#6d>-kSC$2sY9nbamE_lE3_h!F> zj$0onESvR#rqj8+W82p{=QoX>X8A7XA!G1DTeQ*Yf~}KK7i^uVF8JtzqzU$>@NQ@n zmrPzUpQ6o2^SDpl67!Do%ztmp^Lf_uY~{I{XM|@r&z(H? z@l5i_9WPp*o_Wh_D)6r^pzQ@=Z?j?RoUpgsFus8v;_b9y6;9Y6+c3GOA)q&5!_!v)~ zdpzVmZtfo{<^G{KkN9Av1vO7_=h740G4e$Gc`r6mM7zf>#S115Mt3ma;~sm6_?lQ5 z?QxP_v~NB-SuUid-k8rT(j!Rm);-k3HAVMhQ^=G8Pr zktN-lLhn_VF!9IZc7G$`vN=!@j(^WBHbklovBql2`uW)VDZl^yd9>j&)Z+K|jC$XKx)IlUVFpQ+xMM<_eu=%4I&CJ!l7R(mb5?bX=>T)Kk! zpR<_%Ig|Mx*$<3O(DwSc>Y7(7IzhW%$Xud?7yUHm>DcATC(0wa7OS5xZI$x-)K|H; zq|nQpjc)Auw9$=cHy$iQzWDkjanThs|LRHmJR)l;Pj=}#RL!aAzOE^S?jn)A%BEx%}+ily}BFa@xX=Uu9dU+U-@3*!Gaav$Ti!Z?RFj_s{H=(zUUb)Camy z#BfnFm}k!` z;JImj-|x5OlruN~2VNmQ7e60-c!u(qzXE;FrmX=_+uW@A#wId1SoU+Lo_}s_;y!!- z*IbL|&a+9|4CdLsYVqbWy7LEZS@FN-Q38s^MLsLNB;0^fMOkWQ*s{p9!9w zKP$S+;w`awcAhuPH@KVggBI@;izoXio_5L`?47^G;+0!G<^<(_&5)kGUsL96Req;g zJl5J|EiA+f)|N9C?{yZ>t{;bZcKx{MZ5GeBcuzu)HNOx~){~`=3hwYb%i=L#Ec2Bi z-XV*(-O^iW@pSIf!TT?Z*JSa|v3PckE~IDI=!!O3ymKv{I}a@N5zGT`VBYKK#;o%b zaeT43@sY6k_M0n5ja_4Yu_PYX`F(tVc_q8WCw!gkVZ9;$`p*gah+_v&x%%tnf*XH{dD}SiwuQ{wx_6KU zzWGb|<^}lXF?@3#87JWXo3%mSC(or{1wQWb;`2ED+AI5CZl8mn==PJ+=S(}k$sKFv z<2&q&=m&Df51}7cX?5sjv(0XC%lp(S*N2d8$X^iLeLQZW*&anBk*1Q!8rBFeEkeKOT9fMah~cQ z%+hmN(#EFZe~WvIlEi&P^=pWqt<*Xe%=(>scSoryx|Ll^?-!8zEAJ@y!rL0uTJ2`s~{NH;dl-WJy(fen7U7y?g zzE!1+%j7Ie_1=9;bbOafpRq{UGsnd5_qn51Wu76}HbjAS0+Ifn<)iI=TTFusv{%*9>`@7gEut82L@$v1~$p044|w0<|+j{kD! z7a8-FzJ#rK`61@>C=b6fhb;3$laHJV?L6~OxpV9@(C~hFs@=ySx}1mBGuX5F^ilKZ zqj*YRf*)*kDf3j)H!WlAi7dUMUC7`!8};mD(I{=?*fHu1nh)PxuH#h3s;x~QFA@BB z)5p!&m3Xs$!x(|_4Py`O`^(5mS+9u3HZ$}m>ui6*m^fU6k^Y48Ykxw1 zMJ@0K&1I`+rYZUp_ER;MuDkvrbf33$nMcq%*ZBmymU+B9H(T1wABAf>Li+`W=QCxl ziuU3ei| z7iyN8IX9W>kh#w?aF;Ex^kl9^bd5OGHE5STZ(%8e&=vllWPU{NUZ#x_wvatKWh2Zb z4dTZQ;M?(gcHxBV*YQe+_Usqj(jkAp;O1=?xoynOw+H8hCC{uiRpMpsROWoO9KoE; z9q>5Gmt{rS_RXAbkY@;^I&`ZDeYmwGHij>bp3S?OWpfZ4w^oj#mA4L#&3X~jn9cyq+I zW7?MV2fB_V?U=TwwhleYtGBt|Ew*~QFNWUhn4a|_*;`&LbN}o^*k$vv<8B$}>w1G7 zcb6W<=KpG=>a3Ji=kW9BzO2)#Z-XBqeE`0-S9Bq5@$fM{XRG!`#**-$`P05te&S0? zx!KF4{M=~y(Rph6!GND-;`mfy~uYyNrKe%}25 z_Biqn^ggKn&)EEB?wkD`Vg7bKMDx#MJM!lL=f{yhw6f&?1)D#8q^v82`P+3R%|DOr z$(#SKAX?1%pwk6P~1C|%- ze}(c4{I6Vl6zJn&Tb7^L^xCgG@(6rRY+7DBoZ~;J-@$q;Ydm_#2Li{3Vl3VrfKJOUdGpt;p=;{PJH2kGW;M}11`Ik zU*_Cu-pTwMJmxJ=t`9hM%yIB+`V{r!XY&gk-G?Uroa95Fuv>gD!X-|4mo?R_J{X$f zLrJ{uTR+3DaX!7Lq>z3>?v`2VGmm)ip^~%7W1s9>e10OPYgl~qLdQ&`m-8dXHJL0{QWc`xyu8ej0X4J$Y4L?9Qwn^@-k#P>+ zlrrJW$CMp8cCh+iD;U35lq&AOzMi%{YmdlH{QT? z8+7phiMwNtUnc9BKkzH6_xdX|><4H1$Yz4?RxOvfM>f`+TUuE2qtXKJN9Yr4OA`ll zO{rkpxl#tX<0c#vAMd`_+&M??L6|dI-mRPbW2yp zErBo3n3p{QLN|MFtd?mmWg?BodcVvY6qTS`*kbvvwAehwnP+k2o84kJUq*h+J9+Fa z2xy3I1vJW_v+Nfexn}{~V-I07S&v(=P1aybuuN)C+tES=I#Ny*oL`#fa+}6EGO+&6DBf$RrA2V zuRTE9R4=@VZ(*CYUvTDdf^`Pf3+8WFhY0tDWf=3Kx6Es@?!24!%h*%7Q%y-jt%>tPF1n8fhC=)vTX3^34eCVj}4nJ=Ce7vN8N4yA~SHp|5Pnmn% zA1j@MEuM`nF2WYirF_`=QpQ_lv_olo6VIMz_KeUkg|Pae*jvZuR^NFhvRlr662V)^ z`#H=n?%pjp%)#EO^NYNfJ$Fp$n7-Z2M;_O=>vGRb<@UAcfqutP`fln}-p}T)E71?( zLF|F}u4+$yh2DTuePEW}yC?6@{~PaOd$2?5Lx>ND9725Q@5J6df0`#Y7CR?>1bb|X ztLRVU-Ot+xI(+jTE#!>6XCd!6@}A?!+m&xVxjOan|B8GaUnb;_x!XV=n8RUCmcAKz zmOU?ZXwHyLsw|HoE0L#qvQ` zt|reqJ%9TDgU?qw`IFKmluy>D_`N^&Zq@Vk@{4}Q)A(c5Lp;MTIw5wj{m3K>Df%+D6dyX61Cj4Pimi#y#pl32$g}KY%n3tF@b1y^?#((6tbNN{u)has zcQQAC&t1PS*}tNEc3S?OeQe6V zo$pZj)a1(Ny*cv9t@D~iGxNoF_)6p~Lav;%``%tkx^L&-}jh0_KKNRYVogb3( z;@NfS=-Mqdt)1%%)7rT%;hFO4T@muGcSUX8NIRe9#gEaZS<5eD9iRU0v3Q~FFOSi_ zg7FmXNZas~{*d-Zf2w^dZM9U}?leBz$391Xk$BZ!!(5;3b2iNN*}iDQT%YZ4Y?$k_J!r$0 zIDXeRY?$k_{i6+YeYWq|FxO|>Z^HgyeYSrwKHKDu)2H{@oPFD+3+W>lpi}JMp3(== zU+eu~(znwd%3h#fdj28Cr8UMk|BnUBC;s?!v);yhnb;rAH<&M@FV!_+`YgE%PsW=v zPFxsg?nc4{795EynAG@FSSMlJYw#Ay`=s1C$XM0-`Onxq=_|^fyGi^8PxB1ss0t_K zd@=TEk~wkgYd`faw54BvSlT1L*6U@Qvt0Vn^0JqXne~yZIP+a#?7wgJ_ZClJ18(uy zGbHK7{*s=!vnr5D9@+s;PWn}O(&Jwle)6ZOc|(+jHBi={Z+b$;#bx|XE;MoZ(g!#- z96XD7Hh$pxZ+$gZ|DD^`-v5u^i|u~kpDzsJCr)Qyd9m0=`n{vyi-j~^kq7z`h?LD%`Y<4RdYSSvJhIVHGyawPBSu z%(Y?bY?y1qF0f&)4ZFyOxi+lUg#E$Vu+7bS_QdYWs;Y;piWNajM zci%DHy9f_D7Vv6zBNuRJrzK%tDVrB|RmM}|Uua%0n7nkJXQGG8*N*-!0`ok+c39Hzu$(rZTdDF=CHvM@U=CXofbOyFZC` zTFQK;?gx@F@iE#qu(qv#Ubx(wwbbr;Fm2n=wrxv%mz_Cnd+AxGZ9_xbHn6m9ZD-es z|2$0_cl>PGQ!>TR&gDDsvvqfO-D&yxb zHuej@P|vj^yRsLL9Xv(W3G;C&-iRg$1`=M_T&cIBz3lM7IR7b z`v1j!bb)Og6CV!00$)vi45`}~&vO^+eAC&I2A{MHeW^JWop|o+2a9GKdU8j699(QC zbg@gzOnezQy3WISd9h>RdBk7-X>=a(@SkRv;~86yW60y!jp}=9IgS~5XgMyiyy64N z*&pSb_i`!ErU0HSDHHzf7*q8+kkyMej~B?}g&WNs1JY(*FnPoakl~BR(BFwzeCc1T zRogqeMd$Bj?L*?FtlCD3PqJ+US}!{F_hLj#)6X~QwNH2nT%KhMk(=fv<6=v1fu;8{ zI4?Wpf7vO&*eR(i^#Sb~#c3_)mc4ZG6O+<6@cTRM8@B#+R^QP24~$27#(8e#*~4=` z&%->A@f_xf|0A2jcvkU*{paZ?P4)Md+c39psIXyf-%x48+`eI*4Ria33v8I%H(X@H z+`ggKhPi#iW*g@A4VT(5w{K{*VQ$~hX~OU(DG`>31QvaaY7m6lrovWp^nv$zftr89>`Poz^cyB@Bhf`JZ!8zls z`6WBI%G=knbeI96S=Bhb0#X-PcC~6OP|?zu#EaJdWqh1kAUcw(A4w`nJ-~| zq6}R6e%+raK7h_^F}J1V_%*unTSr&EXv<;eLqc6SYRlouCRbOga&$%Jz~GPl6MB|j z&c*2YoW1WZm$|m6nv?f2ZV-M4I*+kb!8 zhPnOs4{ey+e;=@6ZvXwb4RibNCvBM9fB%;abNlZ@Hq7n6e`Ukm{`*-Q=Jww&n6N+C z{@ZIc^ELl8L;szt7jA!6QnGyVN%}L}AL%@e(6V+tYkuaG71{GMz%$Oz{DLvhBE~!= zjCW3|WlvP>vADcr?@C`}>?7kHY$0o0C2__CGL}-``jmT&Z(Xis)9*mocvAtzPy8$6V|&8;uZ&NuHg~1P`87Ddc5r@ea7qtfZ0>J6EWYDfjw0t+DvzADvrv1e)AKQu-V6;#tVrtIGEx%fqvTKkM-D ztl>d%>cOErLPO5JDqn^4uNIcRbEdWP>N|=!gBNG-+CI)SvIpUVbNu;}$Jp<-ujCMW z)8uZ4>I&~@{T$Y>y-Dx~o_Am3Wo&#ldqht;x{-B7xnt*B-W#CC_20mS#kd9mm9sftlh^Z9zP;`Y7VaQGM-luf8UBt zrEW62?7B28A>Jh)rIXwIw@!#m{ZZ55U`eHdF zGeMs&>m#f!PCQ=btSu_OgIn|);YH>xZZ4gI&t3fswLHtcqW_3^72ZN#6Yy&Jq~74I zm^%c$IOmTmsvo{ICgl>osTX)O{2{j)_#-dmLqEhCXpUU!S8Nh_2)&SJaCDy$yyi`F zL6j!ofiY~9M)qwKO+3CHeGbd?dYk4FS(isH;sbDpW+``QmKL%Hg>%_bX7;0S4qNWP zILGH6Tk8D{RU&_(#S@Qz_3I@(w^u*>>D#`#f8}k}w|ugc{jB_+VG}x$Njox0mT2N9yhs?(P)bQyqdI+CyCUk@|`MW7+O~$8L&CKFem+EGbi6 zsCg_)7bL%98+R8y8^{}d@kkr&+mbO5vI^z$)LEO@KfpfU$}f7GXmh+n|M9r>4^O}9 zytRX;U$u6yp{=c@t=eCiKK-hyLC+)nJPp6Rwyn9bc}oV*Of#9#p6Sj70 zSXFM2FsyEPY@o*<8qWA5qp6{cpXpEf z-NS<;1IbL%PmYcbkNShjbh@iA>8FM?b|^V+kyqm-_fQ=+5M* z??gtgr1HEd-@&dCKQl}&gTte{R{Ql`Lw(87;jy#?b`K9_QbS`&$;tCprsw9Q9qCG^ z{T*HDRJWf=rZZ`OxYys@x~10d8tUB$+B!D|9_G#snad_8 zaqYvsnLIg3)aEtURkp9W&aZ84^rt3lOTK+9HJa@4rxG`;)(xbRLz&7jgDf(FB6-Xp zgc+l>-a4qF)KFi@L1j89jA&d}Cbc6qkjm_;7Ua4vlyNlK)e}@u+V3459@N@h?Y9mj zyV6O2Y^0|PHSM)^DO%FepGx~Zfz-nc!WUcJenn84%kAn9M1%JkDtAnUSa_zFUTG95P;VZ!6iJgp7Tw3|9tx_+gf9_#L=O`AFq zPWfLfK-bg;T%lF4vS*c_93MfG(Vvw)=Zc(zx}>#9g>6oa6GtUxlA}Y_K^DDZ1O8xF zrn_I{RkdM!ZZ@9ZGn_P8E7EemO)A`=IynYugFH8lrBz3^rP4Ot<)g#s0eIu9jMB)f zmapBE6-EYjsf~b33aAdT{*da*UVsXjlM>96u{@cTxSBmUOQyJ)jO-D4TQ zvd2G@|0;X^wQHH%5PL+6;3rBOq&p`ylti4;-p{e5DtG$ltX+4(>MH(QdrnBQ8hVTd zJ#RJ7%BporZzcb>XNE_t6|MHSVIntor3R)oXIqAcdv@$fE}v`k%vxX3K}^qDr&b0w<+sZu@y(=q`y+!+7 z$lhqu7+pL0z6!C6Zs!%d!|Q9MEu7@5QCHTlmG;clxl@XjaPv`JM-jEWH0IYXb3>cv zGLq;`(moA5Jkpg|o5n0SaBmNwg%w{^!ooC>L@tf)wBUCRT{|>SIJ@Fol#CbTqhh;sY@j6dFV73kB(IToC2t5Tzf1!(n9MBoFg9aY0m+JfJ_d9F$_y z*l0TA{C?Tz>xLW2qGdPr?VwfaMGllQ~YkRZKIx{G`S%^e9x|KmCH17eg!y# z+hrsZ@x3+G*YEEf9>_4;p+vUNl`{DqDTaJ~)qd?*W>^xqVI8J*DV@MJ(x}996{S=; zQU8oA#?%Bb+*jP<_TjNn+(PCBeC2pGmQDZni;HD&%4kWr3-Dx`K=2qMR8RMhZxXJp zVqD^;Z51ODi3qLVg%6LpX|OiJvJ!gP)g1; z12$8_M2eYRBS|rLX5^x>%N~;mg4-YK7(~Yys2whNA2k>dk=ZRn$Y-S5MaH7=QD3gc z`&FfF9`?7HF;zftx!({Cm306XPKyOy7crEsq)snZ|D;t_@qb$Rv$SM*6$bX8hFFP+Q;9*^#KLVmubS<1n;e+1}BxO@qUC@gst8@dtwU z^LUrPo+KmZWLnyY_E*$Fw`Na+JJ;kX45(3%$}DabHvHkSOgcq#8KCJfjaN~Hr8@78 z7k+bZ9f~{y4s^5}e!4%^n@OAYTjBh5jGwISW3F^j18Mav= z1qq6qhnd(Bog8N7LR?V8e7odLVS@H=3LF^DKnIm6De^1e$+#@SE#3y`WP{;KpKEy( zx$5iI>sR^P>slD@`dhCzGMJth9c0S1nPwuTu+mZ9Y^;BO@k>m;)W9#Hf7W14trcWHepczse*)%T`6`Kv}+8 z&aB5(YN9IFuJX4?G99bRRQtH=t7@8&{^1PHib){2BmgNWb2KSp7-TYCnA6}Lm<*BY zcAeO;-Z`BJeZS1YpvX#E#v4Y5F`JDtzXJ12sik^#js{#w&w4^Kb6t{otgD8UdEte( zt|2YBDFLkM5`#sl%8Q}8SvxS`wZrLv_EC`^P+MQ8yolPs4$_sMfGgj)mUIs?hb6Mg zDqEEqdANRs(31=`A-|E&ss2i!YeG@^iu$~CrVIC=%Nd&NNOpJONBa5w?!hs9bmqJ- zdb6kw=3__bwKFt39=d_g-5styK~7XLo0w0t4t!kObDD9Ai~x@(AM1zzPqI0#d}b<7 zclID<^-P8OAC~FWWX1e4wJt4)7y5#2_(D3JDj)-@wq#!_&6or;r_=U2A3c%>Kk%>7 zBGTb6>uw6-?X zXN8Fm(&%dsDj~ zF0k4)5A3Ooo^TAk8;6DQiiYitJ% zx*bEtsG=q6C8ikyBpJiE4yV(){A>dJ?$NGvzvyIO-+IS}aOY5^B)z&(H_vCzkVP~| z1(Cf(zF8a|8D*%Rm^_o?NtQqbRYuSux_STxb#p*MKo*MypVp+>)^aK9!?lfkb%WoQ zwz`HyXKQ_JM}xpyT3YHiUD@EZHEe2W>F~TUGw1K6dc^64%kVjgBX=t)*U=HZ(Rjwryi$P(xySLtA@e zOLGw3-q1!!6zYUGLbkbc+opy#OE;v^(a_#u!|1RQ3R<{vTkVzx4av?wU%2qfELg}R zUZK8U-qzUBkZ5bz(#VLujUZ@CFBt`ya#Fy~Cao7!Mi&;^JkqPT2W9Hm+Sbs%wWX;( z(a_w`w&h9*Z||sW>qykrUDnyyjt_ufB&?-1D=5UX^9{gKFZA$|zN3>I99qr7DBRXI z869#UlMbOKHn-JoYY5UoD>qE&OISx+KnH-c1Y%7LQ_XlhJ107uHlMSRMqIH)RzlOd}~8n zV+*YyD7yvE0I!~!G)$WENLn{c@f?90 zrXrr*%5dW(oza0rQ^RIViPfo~zD=mn7b_QwXu^yvveV`%b5@#d4Ylo^Z4LF2U=6J> zoWkYG*z&l!t!0~OE0)jNx{gk&JFGt`kEOG%p;>JZ6>DTxe`Ry+w#K?dTW#}}z<#y0 zG=^mk-W#rHltwECN#mMY>MnI*$)l;ZovFX3M#-bGHIj2{OB+JmY;Cp00B&fm-P9xo zsX4KwaZ9bzmHMV}iq34?)YuWWk=EJ{F{+8i7A$acM_Y?+zk(mc)hSa!v?*T@cX>;j z+H4oUsYPr_eLa?^-EB`n8jY{Jvd%QN9D0mOG_93mkVZx;M)KMC+iKgT?^4?o;09qX zPn0j?ij>>h=-C3EbHjw^pyKG@S}qT(#guWnI8BGLwQp-|m%h##3RUGGuZ|hw zr%9jFPN&chE_)YP0~btACu&^9^@?)so)6Qu$`u5+Es05hqMF&>l@pp8G(~!&$RP2xOH0_ zXsm&A0ba}I4)r&zK@%RD8pN1y4*LVznVKvKt7~b!5-6+v8!s#1uqpIIL@RB(Hfl_I z(c^sKA~^|fY=$>mt^n5!i~K3+z{GuOZ|TJO6W*r85hirC_=2jM75Pd+f4VqHcUfm` z=-UPF65c4StF5z@)Sa8Gwo3j&Z@M^1r`|?$06I|mN3y---vgY(88YF8KAhpAmP4Zf;mE-a1Ru#gnis zJT*``^lVrT9^6d9)37W&?UZuxY}gb$r`#crg6ou9d@0p~&9!wwUn07ZFI?z{xRkQV z@|znbco+=2!-gi~u^WDK!vqg=-lk?)M-~PzH%#!vMl>`wiwVmbgX9YreCt(PWJ5PM zOz=$KySc65vd)I)I^1_#rhMTMe(ToScH?7;tPE~;*tXg$-0(#E)9J7YV9Ew1@EXEd47+=+damr<)p?Fl zgd~#{?8h1#$V3sHL#)&d_YJX|n4=Sc5bY#Nco2crV43yP-N#AYp{C~$LVRZH?8G1| z9pU6iS6Zi2TBh4C&2or6;V{T#;_A8Zrqg*r4FwZ~;IUbHkX<=~=U2!P1QyhpyJlz6 zXy2IBFq1MYC)yQ>=!bMV)h9o_16{iQofk*M z%4VQ$7S)+)Qf71w6A7C=G#ci~QjfDoCWw=@DLWJDdEtqN;K0UcGQ+&9Ze5atD5BF* zeTLX_3MeN|cKe&)piHSjInE?uA&;6SSj)(X*SLE2IqB*g`A)a*$?iWg%eHo&RreHa zkM8@QBA zSnrmDYX3StT0utH?Nj6-#zEJ?DXWz0@==|m6Sha~`jNE&x|CvDzgyPpNI^~H;IH1LqMVt_+l*6gOHK~BN4gshbro@MG8!y*|4GJ)Hybw9NW0lve7SxA!# zK)%df%idL?6V#U*YMQz%KU+jy1&(Y|-gRk+Nz2KNBMZ-=XSY~Jn_&Z+5T%=fl0!F$ zkJif?ig9UTXqhevYlLG_fq)IV0pDxVlaG#&p@T=zd%?jt1#Zt16BlOqie~>#^^5Y8RVFa80BMmFl$QcWLTfc((3BYjG=?sMYVB*oW(?s zbn{R)0`vn}^x$2}wm%V2{jQ;|L5}RQbYnK!5}1}=%MH)PGqikWHmf;2hIeQ7#ncT9 zr^VizHOjeO6ANMy9OY@(Fm)@UFe1jshK&tLXwukjyY{NN>y+3K^6euYN~^^=b%H>z5fFlr2jka}wTaPEN8BBYkZUfsM@ymkeFpO{vVZ z_(7bc3HoK}L4`J>3qRQ4p&hi!f*oSRV+;jGeV8-HSk?J3%(spWup?-MQ=S8Cc9O7F z{7>x9f?lrsBbxHmhwTC}T*+tUFG@6NV_ubhM=X1*F10 zG*6y_mtD50`LXl7KO{B-Uy3Kh^sI@Vpq`t(UpP=Wa3Z@sBD;)bPk>a?YCnpIHdv!e zebig9yW03e;m&I9IHF`Z^qM*HpR;jVc$^mBY?#iM#FWKuh87DGUkQIYBeordhB`3>6q<{{7Tj*!tbjVJR5GUL}ADn!z497@9lo6UaY_AP9xo!8ugglN^!*BJLK`^&lH%~{^*Zu97iLm;dAbp1cnD8g{$Z4wHiy#v zPVSH}r^$_u1bhAMSWoPCHj{d&-VBApQ9rt(Hx``ZocC|PTyHsRSeERmQ3@R`Ex4JTbCMO;hpBv-^KoabqBDIcJETqcMO<4V#r%KTDxV3cAX7I zr(Hy@J32Q+X8rX>>6$b;n2knWp3+)3NqHTy7sCo&xA+O%4TXg)`V6I%1; zAdGo*J0a63SDK5m@k7xh7DdbhAuGF-yS(IHm!a7tf{ zTOZMbn9CHiW7j8j0ws_O8?qFc?TENa=D^7-&{bR5)m6P?M|F31bx%)p&I_J8d)UEe zYHEmH57)o9)DL-Jf%SHW09QXY?PTaBELXKvf@b>!1PZeGUpM@G0F^M zUYcCH6cEizb6uo!Lc51q#?+8@i{vmhZFc-zdNAZR~fsIl)0<&|nd1Qw67`_B0KV5{D!;{N11VYB#^f@?6BUk34y187sJm%1d z7=@o1@=}JUqhq)9X4x_~AL3<-NL?Z{T3yj0^2_C22c9rL1(|7Zv0yXhPeIhk1!c&| zKO+SQ(noVmYC(IuxI%^GYI}q95sq*f;fc`g*qB3_*>R!Zjkyi;OVjV`RYD;dlUtD2 z)cB~ZVgm*Sl4hwRr;J%~PWc#yj_Qz5eEys?S#eI9DKgJVHznRlEB%SAzc|^2y5z=* z?1DNlr?+%^Av`=M=Ve8S0=eYF5gI1koHwk9Quie@=X$}a@Bj2{=ho{zZyW!Zwj^dg zA2%>;_x!?^XHTx>E2Ew*l;T;}E4vKl&sX>xHrk!2^I+D4FL+%cf zE`#*Kr#d#+VLg}1irp)pH_elNrgRk9GVGi|&F{Ro7kXTq}d!^Eg=|q4 z9dC3Nfny0)Ysga}%g@UFZ%B022!|2MO6l|4FY*4nyrSR-rjpAr+ z!2j>&j-KGwhJfDmclOvjb}D84kfQ)HO>0#so(7M`h;d+wc zq4ZU9d{hpEn;Bp64}-g3A{ye8MO1XEAS6(Im82F7v(`UtdXzA16OLR19hkNbNEgvW z0WdoeFRxspKo7DH>Sj%IJM^=$qI_mN&O2>-X?H>S3}uGJ_NcJTkrPLC$XQ?~9M+EK zEbw-@0j;%P4&RbOrV(`o9Zj&ufjL$SV8$F-b?Tf5jtVFQXt`V?l4MO;aHxK3xIb#P|(<%mzeOI!*$G;fYKtKuI|dZ{yuw*%Ye#?Or6 zM1xoP+su{E79mRC#l^8BnIOF^3UQ@`Iaf%_kh`a(;K}R6nD0=pFxe&Tldv6KJzPn{ zoGnSZcEDm%ZFsV`OV=Bcj0Hy}J|(wc&h?Um=JK>8vqZAzCP}qQ35DNeOKWpWM|)>$ z>s+s)xn)!5=5`5|_iYW^G_1XikOsE>ceF5PVeb*tLK9wR*NmlH!9n22)`WYK!eUQz zyi)U=Io&31nqv`7PJ_$Ma+%R^t@OClE%!TEZtm?$XO?4V8B>nx?!A^F?z3gUE6XnI z(X!j99G1iG3OzFMj8k^(V%OWMa8DN{V2mmk!ZLQ3DNHIKk+2{Y&K=8!&9-EBlIvEO zK*_xRC^-+w&Mk?g;w7!pX9J9lH0IFL+cWYantL@!sj>vpNw}#5HO5lo9JV-@ z`SO(ri$wwQq7WX^;qp4&l#!2=jSF!ztVHL-BRs@OZqJL7+#d2|N+$A0n310$JI%5j zj9|n!*ORDxR7GF`KQhsfQ;Avi7c8Z)X+icmP)nxaqfXi+!W-V%zbd!tIGcgx&J>yK z!?=a5h3$E=y2l2tG;3sjM_nt8e!4r!bP^k0SM#{{8=vT>UVA^qb?W9+w*O zHQZgWhCoCueabo9!z5iw5F8?g0kV>BYg>kD6?N^c>R)j5+oYGf`5`Db^RtsU$<7MA zJIxDiAd(Z-X1#Ew-r>J;WK~2%ryjg*dab`GPuGCyCv7s*Pcn#3k5sY#oMaj+J+juk z!T$;UcG3NxpqhCD9Yr&F&@z?*B?{5Q{!TKvijOHwy^~EH3|+@E z4y^9^75gLIzbr$d1cqLerP}iob@!7h7*C?1Hv5i=qyPyqM z*(R**bJ}wZ(7;rn3dRaV1R_1tvkvRHvv+0X+I8u-n5#WuOqRQYi&a;q|V(G2N+!@UJMYb6Ficb4I7 zM(MNesSZf7rZ3ac0YQ^R*4>p?nZ*SeVX~QmjcudoteKN7zDhrrA$bxhYcw6hJ;OvB zK=(}sfPdZas7@(yHJPL~`34q{ZcBQlqd@t2eT30wHPv4yqmjdgzgD5FWUSzIP30vl4S^T)=tiBGeN-S9(w znSS%G7KT@In6LOM%px~AR^x)w_vuW&y)w}&Mq!Sx-$UK?_ABK|mR!_kMrj!*GgBU2 zwIz7i$JRz}yQt&lj`nu0j1lv9;_rk6PDtQ{1Wricgal4V;DiKDNZ^D7PDtQ{1Wric z|Hl$I#-9`~_>J)%JaSpwe4aa56kEXW?T^O1IKQpSJ#QAjf_q+A4kbkRs3Ou5``2b7!oz25{vb|g1VBTB#odbLkPce_=3I2%xRDt*Mv17wk z#KYgP@O7BqyI#-BYxw)0p3DB8Gp0PR_D^<=J7+s&G9j32O6vKJS4;2&{s{@3 zkiZ|L1S%3@vFzU(&x`ZS;hE1A@a*S#l;;4?V>}0Wp5l3$=Mc|fo+CU*d0yo4s*D^a_-&F8 zYdL??H^kJs8(S_mTKW?C3;Gdx7in&(tK+Eirm@sO&nTDg`|GOKZdko`?YaI1tIu0q z4MTdWnnAK1F_FMIX_?S<*Ac=geM2 zVBvkd7uH@Z|GtL~uJDdqmFTSbP%G?}kdN#nWLCT={uzmh6@3CCv*mqGKX13k*Gm4y z@=5LZc`NzXD}IJ#@$>gcNb%kB?*;Ncr}#?}zCqsS7hfib^IIOB=4(=?~wQUb+A@d z+%2Wwyn%n$7mo=3R^f9)@u%gzQQj{qzFcrF`4ir2iq{Hn+uC`rFaCz$G-rIz0?Zxazk@k;$y z!sknc2saBvDJ1S}fO%&?u_)dlulw~??1JKoVkqu8AbgG#swxZb7OeN)Mr2W3>UE)L zYtj28VBt}r`+j}h3PZC`6Hez(5cN%-lf2n~BUp!o*69+maEo9q6Rd^*Eum*<=sO6V zQ@KY%-#~72R?BNqJkEQG;Fj~UDEx<*WdxkOSoE^^i~>ng6qh86|5QSjYskXIyw6=B z!3*ch>pIOf4Ht7S(APtxoBJktoiA9s0JZorZ($ekyt`9`EIbX~=Izl0#q#<|$#r43 zAbdssm8_!zGX)~M8CAS`H<*TM=(@W)NW%|2IJX$Su- zoRG}p@pz^D%qdi8PJAah#7hbrAvS+KXd^sY>|@^SYj|HgF4?>olkmlF26jQV)^TZk+}C9Z`Ne>fG#F0ux-L_fiXJ;#v~OKsP!o@mPuJJ zI8%xex0bCP5(Q_ym5>5s*$RCLSs^&H8hMSqy_VPdAI7}({KoG32LBdy+2G{@?6ANl zfZ5|9&V`LRv5vxLVjXj0o&0ppiEWS370eQu#NH+ZOG1Jt#|%LY?zRLK*ewJl=llfe zUuON85Ns2I_xvD6(-jWWmY@cI+7eXYy8y*Q$v!XEk(5^u`C4Myi**WxCcwFeAY-yK z9A70FTp-a$=|Jw|H+GlAiwHD0K`Ie}0$&3#8C)nCh!U9$s)d5ug(jQ9Pe4UFainvG zh^NY%H*TYz*QgGnI&9SJI~}$t_xy{6t)*fzrS7j#wu;z3VFO2n!=B`j1;vIec)cc3 zwzd~@Hp7c8lk}etc|1eF1AvfT6kEA)@w~!?r!QO-JGrQY@mIkLZ{EC%=M^&aDm=w2 zTv$EtP4gNTqewPQ5C}b=@5;gm5Pk!bsjukGPH%}780E-udsW*T-95zczW9OV|Fc;0zyiPuw;KdesR^wuWykvE3 zEWwu|)s%l^6J$zfd4+S}4AcS&Ia9$YVBUfwkXa%9d0F(O2t_srBqBM?e(yVD zNcY2=PF*XadEYy6hsyugrgG#0*TRZLoNEvTYhLgw^yaTdnu3;<6QUv?TPX!l^S(|+ z7I=5_Z!Gr0!Ug;rL#^<>yx8j1Ys~)xsU3aY-QJr1;lbpZfy7|i+=Q@ZP;W+Dvm@}m zDy{Fe#_U2c5u{3IDoM{BJY4!$scxB#B6JPkUK|+fNxpjOLU+wjYB;^FGU9;agJa{B zeM4hw(!0{)53U(Yj|O?HL7mgTw~W@v%}~FW?7W5WBNm0|K?{2!Z>C(cvzb;sD^4FW1w-gp%GUwt; zw-sJL=b|}ZEWG~Lh1XwFc-8lU;vpS0?~1#uXs z!BPMj(-eBK8_t-2y21p7{d~T7pZLJA_wX)o(Er4#I=rqpcE`J;ATDkF?$~XG@r!tw z`xA}*SN(Ut!KAAvW?tN%Io_)$UT}hr)T9pbxjPn@$vE;6H(-W*bPy(Vf*#(`i5q@n z%7)<&gIWQe;0Er+Ot|v7l^tWf2{x#Bs2bZVU^7i0fzG&dtD4USE7*N_bF%r z>NnMe6r}d0QWD%`oG|BpkyyVR>q?k|;p;@dL{LUkvNHMIcbU_7ct%>0Dv52TLPxrK z-sp)!uq{k9joOs2Gj{LHHijo7M<)IeHRLS%9NdR1MHs0|HEPQxSJav;;_ zk099mc2IR=Bc@46AA;z#v8l6JaDg?NEib+`OV`T}q5-SXSY6Z5W-A0Z;a0R=%1NHh^A;W4i* z2$HeQZ9MQOKYyjK?GN+wZ{}5gWZ*80b)0dxy#Ch2$j?z8BP)GV+U=}2R*f~6sv;2z6#=Lf)AA=bR zhY($x6TV7#H<)ccuN!zISbkf1;7xvnfLjW{Jbz1;n?U>_eW?mz9eV0|p+ppl)5@Q$ z7s_8Dbt8YWjwpYHREhir>wAT|x`^7nL4%2xl|vW|VJWX!N0i?}T|K0_RtqGsZiV$c znZs6ip8l>fO`Le~)Xci3{1)mer|0csozuWLH2nFsrW}P#(aB%AT^lG=X%Zj8i!?r1 zJ1F!{R@l2HNWWNNSr3)JLahPjGm`;as^Pms_!Na#$TSgug}Q30uNE$k0F7t->--gZ zG6@y^6?&&f0B?mlQf zw@M(dn77Eg0Qf;$9|hFMg}_fa@Q~oI=O6wgzKP#JJ~8hU?<(M1th@wH0Z%&k?*)F; zfp-HRaNt~iKTP~mTc5)3r+|a{k5T_$2ENGZhw!r(c*23d104KG`Tqmp5c%DT+ywtw z;PLZ;`4xC}jywf_AJ)^wZ~bJ1e|jGL-TzNEe#vJe{5R&o&)gErqVK&A*zzO&Nbnc% zKYm{}e*E(hep?>=RbR=*f8cK-{HyZdAO31K{tXXC_{lu@`@Wuy-#QuL%Y1F{7w~^@ zUpD^0KSuZ;$b-Mk2I%FS(`CHc|12cGjXZN$R=E$J&`-Xj+NCGf;Qn+{a?I|{sFTTHuXfs5&4 zo^FibrNFnon>9_k7Kwj7@O>Zj!t!1Kyuso365y&UV%k>={#$?#zcr#a1U&9V{N4Efi4 z`SZQS-gU%J+!a&1EBw9-_|ShEUq;{$0$VG`84f;FQ%E&e&cdp|-MVNvim0aqNt=G*vo;HqCl z`jr7bN_{?H;9o52%fN#bA?xmgue<|?8--?C!n}KUE zYO8GgcHn+TJ}KZm?<(+~CSK}y2>7YH;m`8F3-~eYb&bt$H}LH^r$Kpd1%BGG2Ok6; zpA++TTl`N0-%n#-W%cbr;Ea?1cP0M6kb#YV0yvKTNPdgZpF_Y0Hj>`bdl~pJ?Pt=$ zOOVq=teXY(vl6)cuVdc5HhvxOeB>M8zZv+&A4K}s27K>O%)8&_-veC#LS#Sw7{nw~HlnU&mUkiNKr_e9-MDp7R{MaWW{b&Fl59_DYYXrX2NuL0I zDvUqHO9J2jaq3k0o9_(+-{auF6L_x!e;D{E+Xp5r{yo5Za594W_&V^tKgGwg^4$+C z%a(C|r2qIo!1w$U_RYr6E5<&2h%hU!a^MX1&bRa%(M#D!D1RpxEb!J6|DeOqR^S>s zivt$_GT^H1kvy&jzMt|68K&CeR`+=`+a_q6-)4n#?_^$!q@GXip8-#n#dH8C_`dN zBo8b9PXRwoc_%G@e+N9U3)t4ze&BKRd%(v3MDU&d=~>`Mo$@S}Arww!pdW7lu6Y-A zYSX_7xcuCx|7iw(3V4I%=W5_3OJd$0i$4f_S9L^hC-6ZhzxPS{D=3e}|0wVgr@Vg+ zyy}nfS8RFq0pFLxC$R8$fDb)Jo3ZJC2z+&fFJ%Abzsx?0B;>d2QB{Ff#WQk%b(bf_W+MDi0QELcK}bE z6UpzB!2RnZ`}Aet+y0KFdyD@K;9!5j$p!PhM}Y5j^#9+158{9Mn%{iy7r-S>{)G#$ zN8M3-Spqj7w`uB$p~9dC-_XO{q9gFj@`pAKC0y_mPv+J`p)U$G{p z{ehIX2KeD-U`wwZ`2Mpa`CbEj^+*H{0QgSq6Ls{P$b@Gl36>`Jdvw0eCC+B+##o!0}Y% ze_jb(fj$Q9I|W?-0R6SCpFaVX`98=a?^5qJ;MVga{JVhVdPA&Ce^_v|z-YqXi@;x2+-q%I)+5lYg)2Mvg1phE? zR_V|8lEC*|6ye_h?42I<=N}OKo3VKo|C7M`df?ac|9Rj&4!_?7t~nO*^Ao}ELdG`z zuYvFSTkI8fOY|wW1bul+)L)(i+)C#f)W>q*k@m=6SS$D|BYkZEK1zI`ziq(xIsEhi z-+FT7kG%u<#W^wWh?U>Ffp1tC`ClIge!xlp*TCb?(`Q=#zX^Qs9q6=$zXu$w`%8N` zAo$mkhmC&{xT-Mb_1OH5Nc;~Y|1HiG@jZ_Jcn0v(j=%B=+V?((pEnYJ|B}caT>`w{ ziBAA;^&|P+0DMa)I$`;F5Ab6S{>Oo9wnpRUF91L7#D5$3ApI98T3-i%_gx+N7yku( z#KC_7*jvZLpXl$ukgn!-l!d<%?9qZ#@E09>bvE#=7sqsutLQ^5@PkK@5%>aM2K-{E z|EGA}z;~5L{`xrZW0O&N&!#^J)&nH{2Z#^$E=c`+1o#o`=N?P{v%q&c^d|*A2u)kw z?*Pwt%JXC3dupTc_7UKbe)>;~{{padPWM}QK^Y*6YC(R>fe$+QtpQ$jMbsW^fJX`< z{pbYl3Gqw49^m~CV^b{ugTPz=D6%g%0hc@c-T{2kH>3XKKHvfT!5W+XtH3vOMeXxD zz$={eKLx%u%>NW`5#xs{C;sQePlWMQemVI$@r!|@@%bs<8Nm0E|24M%JO_B9BkEt) z1Md&%o#NF3KT7*vVfnobxa3pF)cSwhf$tv!$Hrd+y!&zL(8_-p`0&z5KDPqz{Y&~> zYrpOSzKi~%$)^8n;CtI5d-I^A{{;5J#yWe#^Lu8;M@Bs zv!#DI@S_fX5AgcuBKw^IzVljyy~OxO?*zUd{%*JW^k=}q{wlE-cLHBMkN(E;a}V&r zYohx5Ti~kyi1_~};Jq!8fA(YG0f*ni0)H;*A7u%z1Algd<$n?IxPyN#@LuLuAGZ0w z6V`V-@oyylwlgCAZUgRTyi;T8T><={qaO+2ij$)LZWr(z=9llZ__qMp;I9Y%!AAw3 z{{Ai-|2g1C-xb-nuLF;t8uhQ=27ZwFdxl_Ie~$q_{ZZs=)BhZJ{#U493&)nizf+#m zfG0{LeO&{*`(oTYy=u-_Kx`yIef<39xY{Au93 zu88d4{?`FJ{CtJ@Ik!aq^w)v!b>jaO_`w$<{rWlZ6-+h<^S5)LH~FTheVh#Z0P`(@ zyk8G|ze8`M;5%>!@V*~L{%oJXj(!gTFLm0}yMgbc{HtvF?*^_o81*lI3H*pd|L=e= z+Qeh=zXyE4iGLFKPUzF+VvowaUjwh|K?(U=RIu248Ms2?1t$J!;46S@EIfM|{#=4O zw)L|Vc-80Ohj|(4pH~4dWj*K?@CAM|@Ka9y&A?l)jO_7SfP+7um+OEl7_S8Nxf}RC z@GES79|FF=gFXygq5mo1J-?vNEd2MtPhTCipC16d-`|pd|TMzKWCDD3Q26!p$ zyUF5T59~Ka^PwLAmi+~B;-xeeoq0{bVlvr8Q^;{ zKKEPvc_ci_dP$(a=K$aK5qPli>v`F*Icl$)fbaXOsD7>lo^u|^{GH4*;3J=pV6R|U z>Sqjii4*^B;QH=}pFam)!Tihvp20s*gnWKRom%)WiQl^*%I|ByJtJDHCN@;_-g^!_s%f4mO(BKrS&OYdypTM`jJ z)xf?}zHPu){|huNeggP*C%#`Rtgn>`b$ zo^gTB_qzGGMuKg4!->9u;T>#fl<0J#Yi!&^>31;`J!6A|yMmk>n(H;=&26>Y8WIMY zLPoZf8ZzmDbZ}$%=CL8Y-M>jTxp(V6_@k>W}1fk!T>#cDgjPf^Wj!fO$kf% zLN+Zz;`ThY%6FS>vO%cq@3fJ_L%eX+==pEFU@dRYrS5*7qmAk3@SlQ2HztULJ5vPCAv6?GTg@|Z`lT(&XVNXssxv5)+gbF z7)ikAnq?<-LayOt8l=bDmKYkA`qEhWwjkR_M-r)#bsAtk7#RlH!k8}sQR()>pM0v; z8$spM*#!w0M8)`QpL~l@Y08dqcD0)AvVt?1>`HSreNTdq!SX?FF6{S4$A&hIrFSX5 zeoVz+lYb(MrAUzy+lL1-U42|O%Eh@{sLxjPpg~FFgS|p8%+rjlm)mBp^Iz#*EOynvrjUXo2!neOMvwFg1{*T1@-$lH)W4^Mwo{ZZz05 z>)O`F?dJR0p7|(BmN0~qOmZmEm+I>h)~{o~wfTI>*obVpukC*O7@O8*b9|dMe}-S- zjt0@!C+7r&in80&qo^V}j1;w%=uQp{q_sSumcZzMCJD=&8VS{Oo9wYpjwidvGRZn~ zWoNkcyLY6oOG#z;B3ybfl}^i^ef=_o(Ra}Ut6=8)Cw1XhPb9-;)rpo~xyf1JR-=pZ zHJ5hz-a;m~ZEX;mi# z^-v~0`rz#tOD8zIz}@*;h|%E`sm6PIl-2;B4WU;_@ktLFr^o*Hl*nK6P7T$Y&kK6J zaGlP|MAaS>A+3QX0T=RdQfvvIgU~_-X2ld<^U@ZQrlAZEnr378k@Q1YH)~2d&tJbO zm7&%(jTI~TWA@Ak=M&uiDm9?-SO<2jvy+_N@1q*xYJjOE&Bkf%iKK3m7n=H!&eRZ1 zSJDPN^Sxn7GbZKHlN5pVHKiWpU_+KLx(BX}>~7cv+5TlSTmPHoD2!-HYEYDuPpnuo zMPEYexbVV6I^Eqhl(*&DTIBG=@F?~tOQB zW(OrRa+9&Oamr%;W@+m?YL>Y=ON9le5!^o4^b{>)T(}&G2uW-j;|sUi=puP-QME^5 zRNsXeu^b#;$YNQ9w^>>w6~-rQI_P!0A){KHkV|Fi`jg$)*2{?=tx>*kU)zga?J!28 zN%|+L3C9Sm%Pk9xWObzwY8#^?R;w8rL;DFNFO_c0%64RIAe~H%q{cBflG8|6M(jFg zD~3lB_Osk{S-oPPLKHhlUvYSA|9tR}6RXiMl?fG znRM^E+-y-CaaU9e1NSkJBNu8NPftE<7?xQy3fmwt@U6eb0O@_?n(Gi9R8Oiel?nQB zs(OkRbnogGmx^9HHQv*kPUW&Er_!YVACz8+W;>MIZpE{b&arto(o)O%i5 z$v~{_&Wv>pXrq;mBk0^E^PtO<0(Xz>%1Y_@>#pZ19X6iB;2<55*V{WVmhR6=)=O=` zw~nXGsK#h(0@ozfyQ>Ku(_(8M=JY|PJxH}p>0dgAsoAJ)YFjWhEZy<{ZS3rMB)O_E zTpkC2L|}vi3xTwj69Q9=kbwvp&)Q>Fu-;`Ch*oO#PWSALJTpD&>fL1mM_2+RC$=0| zK)}a8AV)&7BN9?_0)Bx1fS>n0_uQ^q(<@O@%~V&Nx*zABd(L}K-4DMK8}7}tE6VV&VEddM5>wm$SuPW_S~8BNY7M}ih;d}+O-rVphaEI zA8%G-A5h|SFpg9jO-EwB+N4y@M)M+>uMD^hZMyvR1iD%jAD=-d=?lr06k#5FnrDwxv&!RAu$2@2huRksV&evjFUtBbRS4+aCaKB~<` z1u5xqBNe3AW+UWVG@qI&Hx{qX$6*00iGf9Ah2%yxXu&}%uG&Ppaeywbw%U8}4s@>A z$VXw@dWHwkbP1f@bY*j3Y?AJKGY7Y;4C7lu5NWh12K^0H9k!OT%oh!dl$eo2{3j7bb>b3v1ODwRJn@Xr8il?!cl8b$cr(I6;cK2W%fF%fwrp z18uH7;IrgDi)>!tJ(qA;GqP}Re(@+~ka}k6OxrNJ9%@deA+tl1f4UOu$E-y_|Fn+q zZHqzO*VMPR{hcYxSUOEr<-r;HpphaUvP0$6I$#wF${cJL z(@1NsF9L>8gwd2pn+Gd6Z|B!`-r8LhmnX~h{0#SViCS6C<|EKe8su^)ginDtYkLI^ z$0d5H!Jp2NG~pb#S@rPq@u`%5c-?|Yi|a5+azK^m3nxPTw-`PQJacx*5OWS%aVCo^ z=CYrnBtqo2K`TkUDoybTklZ;=wo_s8JW5!Qvdb-`+}y>Uh8bkKFk9VB%!e9hhYW%G znaWQY(^bHB5HtX{HeA!&Bjsw1RwF8l)-Mx>C3_*ks#7#;04k%k^EUO<)zPLkKob`U zWksU5G4VohHk92 zdudgjn|x;r-8nv{9L^p&RYXDIs2!-F`Wv;#yr<4&cO?7&FSMY*gx}8B5$Omap(A*; zN_y=u#XJb@hFqUtHOXf9qR0)s=xoVaJOxD`VRVirO|$ii#GN;8{!078gs~fA(^?dF z>=JEToK7U8TG^>9_0BJEGZtO;w~;y_>Y*SWHa%o>#eH$6X4WY>Gv>&f(Yr#QD-01f z*c~VgbT!WKZ&!Z^oyyV%@WfGec@d}@lxD=D?$O)BI^v?tFAh(SR|CNFNL#oH%4u6! zO!j~WKMH2Kg%oqDBd01&wf*3=u3(eI<_S|c=8mhQZkzJ{x$Re~lF{^EC3Ga+&5Mb{$M z2FF8y-e*X0XmtlR8FRJ4>nuG!A}s;E(zcPYA$|cm>*Yh1yh_V=7E#07@u@(KPP4g% z10NJ6SX8UAuF5pB6;$6WYP^$o_(C-!<1x;)KTd>xm^%C_VA|wrCWmSz_}ww}nbVRs|(E2Brk05&2D@9>Q#zowqOTZ0PMyBMW9%!rOd z#jE3uidenc`DS%3j02((EORr>^ld10fAeKXEV@j$kd`cO9jrDdMUN$Bbr-q-*uec~ ze@;ah9-84KVvS!J=SCwJ|W=i56C&zPYU1#zkjod}^(9$%tM zSKj?Ci6m@NZVR*=rN##MI^1~cvUtshd_=hqhk@OMf+%}i7nbmnCGLofwNRAg!+VGX zh^m-9O_)iX&=>-eKSv*h-PUI#9t6~F^hCkEyi{2qaTh6aX+?m7l5D-52o;og70&}Y zL}4c35#(nI+mv4Y9%Q#%8_+(9PqpT61*2ZZh-z2X)lceOKU|$_9j{&z>i;KsWhuDq zdbS!^_HP{A`VQZKyWVSt_4qiv*!e$;DfO(R*yG9ho7DKnjAxAYn2WGnT@sS$?F#i9 zeCV$CxBPy+QtYeimnY#>biD^#kcGxvI45~kT$oIQ4f-Lj2OwnE`;P*lLM^?)0|OM~ zgXwKy3Ebl2RbI~@K3p%K|0K_T)*1F`y1URZOxyED^SS=({2?d9)l8?gZhrSX zW1e`RcX`D$4Abvk=j4&;v9(%LwGVodc%TxY(zuajYG z-Y-MfS~F*#LfqhboG(ASBTl_5I<2L17dnmS%k=dBtDNWM-U0u$SH}m?X%7!Qf3Z9h z-BV7Lm7!H$d*>78YCPaNk4$&XjimFMJQ{nS4|yh@=y;Da=`=R~)vq%~^)I>;N51kK zekPsf6o1Sh`u!y0f71QF(5b#!+vhXr9%ukpIg;)}ek(oEY0Z}#FUPpJLRQoJW1&;q zY3+`ez8mAOr*wZE(P_<_8_%F)IJtSJ^t9H;x1swF*J?K%Dj%ZJ{hd?g6P@Se?e8`G z%X(<6S<-1Ok^R@8(~WY7&!YVYXQ6xH0b|G>e4o4vjs9hNpK-1H$@c|~&3_-dKl3|} zr27{)3Z2Ikitd|zQf<@wH@B2;ww34@Hdqfm(?#KCq|M~2Hqia3>FLd8h zhb~9bea`Q^_M;!|b)SxI13F3lisULLj1;#d_^l6&EqFO-Ru7OO4q&24fQ)Etv3D&=jiqB b%V>~~L{tu?qvLCwW4b>u9$7jtkG%W>#HxMp diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c index c721620f8..c5af818b6 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c @@ -22,6 +22,7 @@ // Global variable from slsDetectorServer_funcs extern int debugflag; +extern int checkModuleFlag; extern udpStruct udpDetails; int initError = OK; @@ -44,6 +45,7 @@ int injectedChannelsIncrement = 0; int vetoReference[NCHIP][NCHAN]; uint8_t adcConfiguration[NCHIP][NADC]; int burstMode = 0; +enum burstModeType burstType = INTERNAL; int64_t exptime_ns = 0; int64_t period_ns = 0; int64_t nframes = 0; @@ -345,7 +347,10 @@ void setupDetector() { injectedChannelsOffset = 0; injectedChannelsIncrement = 0; burstMode = 0; - + burstType = INTERNAL; + exptime_ns = 0; + period_ns = 0; + nframes = 0; { int i, j; for (i = 0; i < NUM_CLOCKS; ++i) { @@ -385,11 +390,45 @@ void setupDetector() { // Default values setHighVoltage(DEFAULT_HIGH_VOLTAGE); - // also sets default dac and on chip dac values + + // check module type attached if not in debug mode + { + int ret = checkDetectorType(); + if (checkModuleFlag) { + switch (ret) { + case -1: + sprintf(initErrorMessage, "Could not get the module type attached.\n"); + initError = FAIL; + FILE_LOG(logERROR, ("Aborting startup!\n\n", initErrorMessage)); + return; + case -2: + sprintf(initErrorMessage, "No Module attached! Run server with -nomodule.\n"); + initError = FAIL; + FILE_LOG(logERROR, ("Aborting startup!\n\n", initErrorMessage)); + return; + case FAIL: + sprintf(initErrorMessage, "Wrong Module (Not Gotthard2) attached!\n"); + initError = FAIL; + FILE_LOG(logERROR, ("Aborting startup!\n\n", initErrorMessage)); + return; + default: + break; + } + } else { + FILE_LOG(logINFOBLUE, ("In No-Module mode: Ignoring module type. Continuing.\n")); + } + } + + // power on chip + powerChip(1); + + // also sets default dac and on chip dac values if (readConfigFile() == FAIL) { return; } - setBurstMode(1); + // set burst mode will take in burstType and also set it + burstType = DEFAULT_BURST_TYPE; + setBurstMode(DEFAULT_BURST_MODE); // Initialization of acquistion parameters setNumFrames(DEFAULT_NUM_FRAMES); @@ -406,6 +445,10 @@ int readConfigFile() { return initError; } + // inform FPGA that onchip dacs will be configured soon + FILE_LOG(logINFO, ("Setting configuration starting bit\n")); + bus_w(ASIC_CONFIG_REG, bus_r(ASIC_CONFIG_REG) | ASIC_CONFIG_RST_DAC_MSK); + FILE* fd = fopen(CONFIG_FILE, "r"); if(fd == NULL) { sprintf(initErrorMessage, "Could not open on-board detector server config file [%s].\n", CONFIG_FILE); @@ -623,7 +666,7 @@ int readConfigFile() { int i = 0, j = 0; for (i = 0; i < NCHIP; ++i) { for (j = 0; j < NADC; ++j) { - FILE_LOG(logDEBUG1, ("adc read %d %d: 0x%02hhx\n", i, j, adcConfiguration[i][j])); + FILE_LOG(logDEBUG2, ("adc read %d %d: 0x%02hhx\n", i, j, adcConfiguration[i][j])); } } } @@ -633,6 +676,10 @@ int readConfigFile() { FILE_LOG(logERROR, ("%s\n\n", initErrorMessage)); } else { FILE_LOG(logINFOBLUE, ("Successfully read config file\n")); + + // inform FPGA that onchip dacs will be configured soon + FILE_LOG(logINFO, ("Setting configuration done bit\n")); + bus_w(ASIC_CONFIG_REG, bus_r(ASIC_CONFIG_REG) | ASIC_CONFIG_DONE_MSK); } return initError; } @@ -723,6 +770,7 @@ int64_t getPeriod() { void setNumFramesBurst(int64_t val) { FILE_LOG(logINFO, ("Setting number of frames %d [Burst mode]\n", (int)val)); + bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) &~ ASIC_INT_FRAMES_MSK); bus_w(ASIC_INT_FRAMES_REG, bus_r(ASIC_INT_FRAMES_REG) | (((int)val << ASIC_INT_FRAMES_OFST) & ASIC_INT_FRAMES_MSK)); } @@ -750,12 +798,12 @@ int setExptimeCont(int64_t val) { } int setExptimeBoth(int64_t val) { - val *= (1E-9 * SYSTEM_C0); + val *= (1E-9 * clkFrequency[SYSTEM_C0]); set64BitReg(val, ASIC_INT_EXPTIME_LSB_REG, ASIC_INT_EXPTIME_MSB_REG); // validate for tolerance int64_t retval = getExptimeBoth(); - val /= (1E-9 * SYSTEM_C0); + val /= (1E-9 * clkFrequency[SYSTEM_C0]); if (val != retval) { return FAIL; } @@ -763,18 +811,18 @@ int setExptimeBoth(int64_t val) { } int64_t getExptimeBoth() { - return get64BitReg(ASIC_INT_EXPTIME_LSB_REG, ASIC_INT_EXPTIME_MSB_REG) / (1E-9 * SYSTEM_C0); + return get64BitReg(ASIC_INT_EXPTIME_LSB_REG, ASIC_INT_EXPTIME_MSB_REG) / (1E-9 * clkFrequency[SYSTEM_C0]); } int setPeriodBurst(int64_t val) { FILE_LOG(logINFO, ("Setting period %lld ns [Burst mode]\n", (long long int)val)); - val *= (1E-9 * SYSTEM_C0); + val *= (1E-9 * clkFrequency[SYSTEM_C0]); set64BitReg(val, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); // validate for tolerance - int64_t retval = getPeriod(); - val /= (1E-9 * SYSTEM_C0); + int64_t retval = getPeriodBurst(); + val /= (1E-9 * clkFrequency[SYSTEM_C0]); if (val != retval) { return FAIL; } @@ -782,16 +830,16 @@ int setPeriodBurst(int64_t val) { } int64_t getPeriodBurst() { - return get64BitReg(ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG)/ (1E-9 * SYSTEM_C0); + return get64BitReg(ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG)/ (1E-9 * clkFrequency[SYSTEM_C0]); } int setPeriodCont(int64_t val) { FILE_LOG(logINFO, ("Setting period %lld ns [Continuous mode]\n", (long long int)val)); val *= (1E-9 * FIXED_PLL_FREQUENCY); - set64BitReg(val, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG); + set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG); // validate for tolerance - int64_t retval = getPeriod(); + int64_t retval = getPeriodCont(); val /= (1E-9 * FIXED_PLL_FREQUENCY); if (val != retval) { return FAIL; @@ -800,7 +848,7 @@ int setPeriodCont(int64_t val) { } int64_t getPeriodCont() { - return get64BitReg(ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG)/ (1E-9 * FIXED_PLL_FREQUENCY); + return get64BitReg(SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/ (1E-9 * FIXED_PLL_FREQUENCY); } int setDelayAfterTrigger(int64_t val) { @@ -1018,7 +1066,7 @@ int configureMAC() { return OK; #endif FILE_LOG(logINFOBLUE, ("Configuring MAC\n")); - + FILE_LOG(logINFO, ("\tSource IP : %d.%d.%d.%d \t\t(0x%08x)\n", (srcip>>24)&0xff,(srcip>>16)&0xff,(srcip>>8)&0xff,(srcip)&0xff, srcip)); FILE_LOG(logINFO, ("\tSource MAC : %02x:%02x:%02x:%02x:%02x:%02x \t(0x%010llx)\n", @@ -1424,11 +1472,11 @@ int setVetoPhoton(int chipIndex, int gainIndex, int* values) { FILE_LOG(logERROR, ("Unknown gain index %d\n", gainIndex)); return FAIL; } - FILE_LOG(logDEBUG1, ("Adding gain bits\n")); + FILE_LOG(logDEBUG2, ("Adding gain bits\n")); int i = 0; for (i = 0; i < NCHAN; ++i) { values[i] |= gainValue; - FILE_LOG(logDEBUG1, ("Value %d: 0x%x\n", i, values[i])); + FILE_LOG(logDEBUG2, ("Value %d: 0x%x\n", i, values[i])); } } @@ -1606,6 +1654,10 @@ int configureADC() { int setBurstMode(int burst) { FILE_LOG(logINFO, ("Setting %s Mode\n", burst == 1 ? "Burst" : "Continuous")); + burstMode = burst; + setBurstType(burstType); + + FILE_LOG(logINFO, ("\tSetting %s Mode in Chip\n", burst == 1 ? "Burst" : "Continuous")); int value = burst ? ASIC_GLOBAL_BURST_VALUE : ASIC_GLOBAL_CONT_VALUE; const int padding = 6; // due to address (4) to make it byte aligned @@ -1644,22 +1696,59 @@ int setBurstMode(int burst) { return FAIL; } - burstMode = burst; return configureADC(); } int getBurstMode() { - return burstMode; + uint32_t addr = ASIC_CONFIG_REG; + int runmode = bus_r (addr) & ASIC_CONFIG_RUN_MODE_MSK; + switch (runmode) { + case ASIC_CONFIG_RUN_MODE_INT_BURST_VAL: + case ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL: + return 1; + default: + return 0; + } } +void setBurstType(enum burstModeType val) { + uint32_t addr = ASIC_CONFIG_REG; + uint32_t runmode = ASIC_CONFIG_RUN_MODE_CONT_VAL; + if (burstMode) { + switch (val) { + case INTERNAL: + runmode = ASIC_CONFIG_RUN_MODE_INT_BURST_VAL; + break; + case EXTERNAL: + runmode = ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL; + break; + default: + FILE_LOG(logERROR, ("Unknown burst type %d\n", val)); + return; + } + FILE_LOG(logDEBUG1, ("Run mode: %d\n", runmode)); + bus_w(addr, bus_r(addr) &~ ASIC_CONFIG_RUN_MODE_MSK); + bus_w(addr, bus_r(addr) | ((runmode << ASIC_CONFIG_RUN_MODE_OFST) & ASIC_CONFIG_RUN_MODE_MSK)); + } +} + +enum burstModeType getBurstType() { + uint32_t addr = ASIC_CONFIG_REG; + int runmode = bus_r (addr) & ASIC_CONFIG_RUN_MODE_MSK; + switch (runmode) { + case ASIC_CONFIG_RUN_MODE_INT_BURST_VAL: + return INTERNAL; + case ASIC_CONFIG_RUN_MODE_EXT_BURST_VAL: + return EXTERNAL; + default: + FILE_LOG(logERROR, ("Unknown burst type read from FPGA: %d\n", runmode)); + return -1; + } +} /* aquisition */ int updateAcquisitionRegisters(char* mess) { - int64_t exptime_ns = 0; -int64_t period_ns = 0; -int64_t nframes = 0; - // burst mode if (burstMode) { // validate #frames in burst mode @@ -1680,7 +1769,18 @@ int64_t nframes = 0; sprintf(mess, "Could not start acquisition because period could not be set in burst mode. Set %lld ns, got %lld ns.\n", (long long unsigned int)period_ns, getPeriodBurst()); FILE_LOG(logERROR,(mess)); return FAIL; - } + } + + // set continuous values to default (exptime same register) + FILE_LOG(logINFO, ("Setting continuous mode registers to defaults\n")); + // frames + setNumFramesCont(1); + // period + if (setPeriodCont(0) == FAIL) { + sprintf(mess, "Could not start acquisition because period could not be set in continuous mode. Set 0 ns, got %lld ns.\n", getPeriodCont()); + FILE_LOG(logERROR,(mess)); + return FAIL; + } } // continuous else { @@ -1698,6 +1798,16 @@ int64_t nframes = 0; FILE_LOG(logERROR,(mess)); return FAIL; } + + // set burst values to default (exptime same register) + FILE_LOG(logINFO, ("Setting burst mode registers to defaults\n")); + setNumFramesBurst(1); + // period + if (setPeriodBurst(0) == FAIL) { + sprintf(mess, "Could not start acquisition because period could not be set in burst mode. Set 0 ns, got %lld ns.\n", getPeriodBurst()); + FILE_LOG(logERROR,(mess)); + return FAIL; + } } return OK; } diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h index 13d926435..218521e6c 100644 --- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorServer_defs.h @@ -29,6 +29,8 @@ #define TYPE_NO_MODULE_STARTING_VAL (800) /** Default Parameters */ +#define DEFAULT_BURST_MODE (1) +#define DEFAULT_BURST_TYPE (INTERNAL) #define DEFAULT_NUM_FRAMES (1) #define DEFAULT_NUM_CYCLES (1) #define DEFAULT_EXPTIME (1 * 1000 * 1000) // 1 ms diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index bfb95cffb..3836c51e5 100755 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -470,6 +470,8 @@ int configureSingleADCDriver(int chipIndex); int configureADC(); int setBurstMode(int burst); int getBurstMode(); +void setBurstType(enum burstModeType val); +enum burstModeType getBurstType(); #endif diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h index 8e566e300..8ee8b28a1 100755 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h @@ -205,4 +205,6 @@ int set_burst_mode(int); int set_adc_enable_mask_10g(int); int get_adc_enable_mask_10g(int); int set_counter_mask(int); -int get_counter_mask(int); \ No newline at end of file +int get_counter_mask(int); +int set_burst_type(int); +int get_burst_type(int); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer.c index 64c64a4b6..b84d7256d 100755 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer.c @@ -19,6 +19,8 @@ extern int ret; // Global variables from slsDetectorServer_funcs extern int sockfd; extern int debugflag; +extern int checkModuleFlag; + // Global variables from slsDetectorFunctionList #ifdef GOTTHARDD @@ -67,7 +69,11 @@ int main(int argc, char *argv[]){ FILE_LOG(logINFO, ("Detected developer mode\n")); debugflag = 1; } - else if(!strcasecmp(argv[i],"--port")){ + else if(!strcasecmp(argv[i],"-nomodule")){ + FILE_LOG(logINFO, ("Detected No Module mode\n")); + checkModuleFlag = 0; + } + else if(!strcasecmp(argv[i],"-port")){ if ((i + 1) >= argc) { FILE_LOG(logERROR, ("no port value given. Exiting.\n")); return -1; @@ -105,7 +111,7 @@ int main(int argc, char *argv[]){ int i; for (i = 0; i < argc; ++i) sprintf(cmd, "%s %s", cmd, argv[i]); - sprintf(cmd,"%s -stopserver --port %d &", cmd, portno + 1); + sprintf(cmd,"%s -stopserver -port %d &", cmd, portno + 1); FILE_LOG(logDEBUG1, ("Command to start stop server:%s\n", cmd)); system(cmd); } diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 9318dc779..5482e84bb 100755 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -39,6 +39,7 @@ extern char mess[MAX_STR_LENGTH]; // Variables that will be exported int sockfd = 0; int debugflag = 0; +int checkModuleFlag = 1; udpStruct udpDetails = {32410, 32411, 50001, 50002, 0, 0, 0, 0, 0, 0, 0, 0}; int configured = FAIL; char configureMessage[MAX_STR_LENGTH]="udp parameters not configured yet"; @@ -307,6 +308,8 @@ const char* getFunctionName(enum detFuncs func) { case F_GET_ADC_ENABLE_MASK_10G: return "F_GET_ADC_ENABLE_MASK_10G"; case F_SET_COUNTER_MASK: return "F_SET_COUNTER_MASK"; case F_GET_COUNTER_MASK: return "F_GET_COUNTER_MASK"; + case F_SET_BURST_TYPE: return "F_SET_BURST_TYPE"; + case F_GET_BURST_TYPE: return "F_GET_BURST_TYPE"; default: return "Unknown Function"; } @@ -491,6 +494,8 @@ void function_table() { flist[F_GET_ADC_ENABLE_MASK_10G] = &get_adc_enable_mask_10g; flist[F_SET_COUNTER_MASK] = &set_counter_mask; flist[F_GET_COUNTER_MASK] = &get_counter_mask; + flist[F_SET_BURST_TYPE] = &set_burst_type; + flist[F_GET_BURST_TYPE] = &get_burst_type; // check if (NUM_DET_FUNCTIONS >= RECEIVER_ENUM_START) { @@ -3843,19 +3848,23 @@ int power_chip(int file_des) { #if defined(MYTHEN3D) || defined(GOTTHARD2D) // check only when powering on if (arg != -1 && arg != 0) { - int type_ret = checkDetectorType(); - if (type_ret == -1) { - ret = FAIL; - sprintf(mess, "Could not power on chip. Could not open file to get type of module attached.\n"); - FILE_LOG(logERROR,(mess)); - } else if (type_ret == -2) { - ret = FAIL; - sprintf(mess, "Could not power on chip. No module attached!\n"); - FILE_LOG(logERROR,(mess)); - } else if (type_ret == FAIL) { - ret = FAIL; - sprintf(mess, "Could not power on chip. Wrong module attached!\n"); - FILE_LOG(logERROR,(mess)); + if (checkModuleFlag) { + int type_ret = checkDetectorType(); + if (type_ret == -1) { + ret = FAIL; + sprintf(mess, "Could not power on chip. Could not open file to get type of module attached.\n"); + FILE_LOG(logERROR,(mess)); + } else if (type_ret == -2) { + ret = FAIL; + sprintf(mess, "Could not power on chip. No module attached!\n"); + FILE_LOG(logERROR,(mess)); + } else if (type_ret == FAIL) { + ret = FAIL; + sprintf(mess, "Could not power on chip. Wrong module attached!\n"); + FILE_LOG(logERROR,(mess)); + } + } else { + FILE_LOG(logINFOBLUE, ("In No-Module mode: Ignoring module type. Continuing.\n")); } } #endif @@ -6579,4 +6588,61 @@ int get_counter_mask(int file_des) { FILE_LOG(logDEBUG, ("counter mask retval: 0x%x\n", retval)); #endif return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval)); +} + + + +int set_burst_type(int file_des) { + ret = OK; + memset(mess, 0, sizeof(mess)); + enum burstModeType arg = 0; + + if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0) + return printSocketReadError(); + + FILE_LOG(logINFO, ("Setting burst type: %d\n", arg)); + +#ifndef GOTTHARD2D + functionNotImplemented(); +#else + // only set + if (Server_VerifyLock() == OK) { + switch (arg) { + case INTERNAL: + case EXTERNAL: + break; + default: + modeNotImplemented("Burst type", (int)arg); + break; + } + if (ret == OK) { + setBurstType(arg); + enum burstModeType retval = getBurstType(); + FILE_LOG(logDEBUG, ("burst type retval: %d\n", retval)); + if (retval != arg) { + ret = FAIL; + sprintf(mess, "Could not set burst type. Set %s, got %s\n", (arg == 0 ? "internal" : "external"), (retval == 0 ? "internal" : "external")); + FILE_LOG(logERROR, (mess)); + } + } + } +#endif + return Server_SendResult(file_des, INT32, UPDATE, NULL, 0); +} + + +int get_burst_type(int file_des) { + ret = OK; + memset(mess, 0, sizeof(mess)); + enum burstModeType retval = 0; + FILE_LOG(logDEBUG1, ("Getting burst type\n")); + +#ifndef GOTTHARD2D + functionNotImplemented(); +#else + // get only + retval = getBurstType(); + FILE_LOG(logDEBUG, ("burst type retval: %d\n", retval)); +#endif + return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval)); } \ No newline at end of file diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 9ce25e4fa..c5dfaa8c0 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -173,8 +173,8 @@ class Detector { Result getTimingMode(Positions pos = {}) const; /** - * [Gotthard, Jungfrau, CTB Options: AUTO_TIMING, TRIGGER_EXPOSURE] - * [Eiger Options: AUTO_TIMING, TRIGGER_EXPOSURE, GATED, BURST_TRIGGER] + * [Gotthard][Jungfrau][CTB] Options: AUTO_TIMING, TRIGGER_EXPOSURE + * [Eiger] Options: AUTO_TIMING, TRIGGER_EXPOSURE, GATED, BURST_TRIGGER */ void setTimingMode(defs::timingMode value, Positions pos = {}); @@ -906,12 +906,18 @@ class Detector { /** [Gotthard2] */ void setVetoReference(const int gainIndex, const int value, Positions pos = {}); - /** [Gotthard2] burst mode or continuous mode */ - void setBurstMode(bool enable, Positions pos = {}); - /** [Gotthard2] */ Result getBurstMode(Positions pos = {}); + /** [Gotthard2] true = burst mode or false = continuous mode */ + void setBurstMode(bool enable, Positions pos = {}); + + /** [Gotthard2] */ + Result getBurstType(Positions pos = {}); + + /** [Gotthard2] Options: INTERNAL, EXTERNAL */ + void setBurstType(defs::burstModeType val, Positions pos = {}); + /************************************************** * * * Mythen3 Specific * diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index db42ce16a..e365d23fc 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -788,6 +788,7 @@ class CmdProxy { {"vetophoton", &CmdProxy::VetoPhoton}, {"vetoref", &CmdProxy::VetoReference}, {"burstmode", &CmdProxy::burstmode}, + {"bursttype", &CmdProxy::bursttype}, /* Mythen3 Specific */ {"counters", &CmdProxy::Counters}, @@ -1547,6 +1548,9 @@ class CmdProxy { INTEGER_COMMAND(burstmode, getBurstMode, setBurstMode, std::stoi, "[0, 1]\n\t[Gotthard2] 1 sets to burst mode. 0 sets to continuous mode. Default is burst mode."); + INTEGER_COMMAND(bursttype, getBurstType, setBurstType, sls::StringTo, + "[internal, external]\n\t[Gotthard2] Default is internal type."); + /* Mythen3 Specific */ /* CTB Specific */ diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 473d87484..c8a67bc97 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1180,13 +1180,21 @@ void Detector::setVetoReference(const int gainIndex, const int value, Positions pimpl->Parallel(&slsDetector::setVetoReference, pos, gainIndex, value); } +Result Detector::getBurstMode(Positions pos) { + return pimpl->Parallel(&slsDetector::getBurstMode, pos); +} + void Detector::setBurstMode(bool enable, Positions pos) { pimpl->Parallel(&slsDetector::setBurstMode, pos, enable); } -Result Detector::getBurstMode(Positions pos) { - return pimpl->Parallel(&slsDetector::getBurstMode, pos); -} +Result Detector::getBurstType(Positions pos) { + return pimpl->Parallel(&slsDetector::getBurstType, pos); +} + +void Detector::setBurstType(defs::burstModeType value, Positions pos) { + pimpl->Parallel(&slsDetector::setBurstType, pos, value); +} // Mythen3 Specific diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index b1178f1ea..1f429679d 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -2488,6 +2488,19 @@ void slsDetector::setBurstMode(bool enable) { sendToDetector(F_SET_BURST_MODE, arg, nullptr); } +slsDetectorDefs::burstModeType slsDetector::getBurstType() { + int retval = -1; + sendToDetector(F_GET_BURST_TYPE, nullptr, retval); + FILE_LOG(logDEBUG1) << "Burst mode:" << retval; + return static_cast(retval); +} + +void slsDetector::setBurstType (burstModeType val) { + int arg = static_cast(val); + FILE_LOG(logDEBUG1) << "Setting burst type to " << ToString(val); + sendToDetector(F_SET_BURST_TYPE, arg, nullptr); +} + int slsDetector::setCounterBit(int cb) { int retval = -1; FILE_LOG(logDEBUG1) << "Sending counter bit " << cb; diff --git a/slsDetectorSoftware/src/slsDetector.h b/slsDetectorSoftware/src/slsDetector.h index c7f287f65..c324d2d15 100755 --- a/slsDetectorSoftware/src/slsDetector.h +++ b/slsDetectorSoftware/src/slsDetector.h @@ -1125,12 +1125,18 @@ class slsDetector : public virtual slsDetectorDefs { void setVetoReference(const int gainIndex, const int value); - /** [Gotthard2] burst mode or continuous mode */ - void setBurstMode(bool enable); - /** [Gotthard2] */ bool getBurstMode(); + /** [Gotthard2] true = burst mode or false = continuous mode */ + void setBurstMode(bool enable); + + /** [Gotthard2] */ + burstModeType getBurstType(); + + /** [Gotthard2] Options: INTERNAL, EXTERNAL */ + void setBurstType(burstModeType val); + /** * Set/get counter bit in detector (Gotthard) * @param i is -1 to get, 0 to reset and any other value to set the counter diff --git a/slsSupportLib/include/ToString.h b/slsSupportLib/include/ToString.h index 6e9cca336..d5b2d7aed 100644 --- a/slsSupportLib/include/ToString.h +++ b/slsSupportLib/include/ToString.h @@ -204,6 +204,17 @@ inline std::string ToString(const defs::detectorModeType s) { } } +inline std::string ToString(const defs::burstModeType s) { + switch (s) { + case defs::INTERNAL: + return std::string("internal"); + case defs::EXTERNAL: + return std::string("external"); + default: + return std::string("Unknown"); + } +} + // in case we already have a string // causes a copy but might be needed in generic code inline std::string ToString(const std::string& s) { @@ -550,6 +561,16 @@ inline defs::dacIndex StringTo(const std::string& s) { throw sls::RuntimeError("Unknown dac Index " + s); } +template <> +inline defs::burstModeType StringTo(const std::string& s) { + if (s == "internal") + return defs::INTERNAL; + if (s == "external") + return defs::EXTERNAL; + throw sls::RuntimeError("Unknown burst mode type" + s); +} + + /** For types with a .str() method use this for conversion */ template typename std::enable_if::value, std::string>::type diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h index 5e6823adf..4da17e6bb 100755 --- a/slsSupportLib/include/sls_detector_defs.h +++ b/slsSupportLib/include/sls_detector_defs.h @@ -436,6 +436,14 @@ class slsDetectorDefs { ANALOG /** < analog */ }; + /** + * burst mode type for gotthard2 + */ + enum burstModeType { + INTERNAL, + EXTERNAL, + }; + #ifdef __cplusplus protected: diff --git a/slsSupportLib/include/sls_detector_funcs.h b/slsSupportLib/include/sls_detector_funcs.h index d2e2504e1..cbd43183e 100755 --- a/slsSupportLib/include/sls_detector_funcs.h +++ b/slsSupportLib/include/sls_detector_funcs.h @@ -188,6 +188,8 @@ enum detFuncs{ F_GET_ADC_ENABLE_MASK_10G, F_SET_COUNTER_MASK, F_GET_COUNTER_MASK, + F_SET_BURST_TYPE, + F_GET_BURST_TYPE, NUM_DET_FUNCTIONS, RECEIVER_ENUM_START = 256, /**< detector function should not exceed this (detector server should not compile anyway) */ @@ -443,7 +445,8 @@ static const char* getFunctionNameFromEnum(enum detFuncs func) { case F_GET_ADC_ENABLE_MASK_10G: return "F_GET_ADC_ENABLE_MASK_10G"; case F_SET_COUNTER_MASK: return "F_SET_COUNTER_MASK"; case F_GET_COUNTER_MASK: return "F_GET_COUNTER_MASK"; - + case F_SET_BURST_TYPE: return "F_SET_BURST_TYPE"; + case F_GET_BURST_TYPE: return "F_GET_BURST_TYPE"; case NUM_DET_FUNCTIONS: return "NUM_DET_FUNCTIONS"; case RECEIVER_ENUM_START: return "RECEIVER_ENUM_START"; diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index 4530378fe..45e4e8bec 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -9,4 +9,4 @@ #define APICTB 0x191210 #define APIEIGER 0x200110 #define APIMYTHEN3 0x200120 -#define APIGOTTHARD2 0x200116 +#define APIGOTTHARD2 0x200120