From 73afc87a489c5200b9cde2df16362b1f749e1c83 Mon Sep 17 00:00:00 2001 From: PS Date: Wed, 13 Apr 2022 16:23:53 +0200 Subject: [PATCH] visualizer work --- run_tree/win32/intel/debug/debug.rdbg | Bin 2147 -> 2028 bytes .../intel/debug/lumenarium_first_win32.obj | Bin 595431 -> 599172 bytes src_v2/editor/lumenarium_editor.cpp | 71 +++++++++++++----- ...lumenarium_editor_sculpture_visualizer.cpp | 2 +- src_v2/engine/lumenarium_engine.cpp | 31 ++++++-- 5 files changed, 79 insertions(+), 25 deletions(-) diff --git a/run_tree/win32/intel/debug/debug.rdbg b/run_tree/win32/intel/debug/debug.rdbg index 3304be4bd665ee11a87f027ea2e3ec724a195e10..715158d42cdae8eaf9e867c29aeba42e2dc545af 100644 GIT binary patch delta 272 zcmaDX@P>av7^^4)1B1onkId?m{h7I0GxG{cOC~$8=zw^W@3IO`PG)sybOXyfvMMop zf>{d~B`5Q;@=SJN(VX1FDh^cdG5G^?2%|4h){#3cv#7WvzC1I}*l2P*v%}c z*yOW}=96WaxfuO`>f9$kV1lvwfGiWR$sji*6&L7bOuooy%NPo^%@C*$fkmWw{JqOfLIV=(rXYncmy~Dr<#7sb3VgM$MK%|8QGmta{x@jldTtyg=H?ewg7{#4K-H5c zFmp|Q%4E!%mRVF>GWj8s!{jMUfs-AWLKq#uMzgX>u!1x|cn=t57$Hu4z$h_!H6!n2 zMMf`1XRu132uFNrCS38veKNd^Krev+h=!X`&j;l40Y&(MI7!#8EHS4vwOHHG#6-tT z6DXtsbaiHOYH@sWVu6B|LUCqQYJQqVsj-o!rh>kLhM|Fxi57^^1esBsk(iQNq?cGy zQdF#CEDIC~$Vn_o%P-1x0|uRAab;ezSAJ5wTOyE`qLU;5R500}Z6+tkMXSB;W-v~E U$!5X@;(;;W5i`Ga(d0gSSed zREi?xxW$k%p$H*VL?Mb0Li}E9z4u<#_xJhz_46p}xnFC&*ZZ>H`@Q$s=j`qDvcySW zCKm5E`8l^^$1~eX3>|rG~ZkDf%;gcF(v#)rv~}QaF2T zHS7B9H|pBq-_PDztyJDdTXp=wr#^c%z>z*@_U-caiN6cVTQviiqjwF2tC(=3r-X;AabSv{3GNtS^pO$aYAu-bo#4sEjQ&xvaPYY~xNdQyKUO?k%>z@O55Rp&82zOZ;p!_e z=_kOiMjL%=bhz@z7(G5FTWVi}1W%P!n!qo^c@&qP>?<-yKZdm2! z^GhlbC(JKn3On1`eU|#( z{<#ADeU$$m9-Ilj6MP*(ujdb^@{tp`ubn4`(^j`h4arP-VF-2W@|4qLj=mI4;<;%& z9DQdL(AKq=tD{4!E6iCzX4k8fr6BrsG_xRb!BPBudI1`~djA_-sN+J~8>=%Gg~-Ic zMT4<=#d`|_Fr7booy2o1X3|6$w|X3zYioZb-=R+@($-U3>r%*+ZQSL8&pOi9kK2P} zGQODUhqK)0(z#hFR3A(CKjNJy<=nn03vH2u*RUx)$u}NDG4)5xN#-VZ0+k;U%oM zqhObnw}!;R#wA+=eXzkM)=601x0!Vsn;lcE_7q;w+}cGpqlML%>}M^l=wh(@+gk1Y z*1AxI4puYUO4W~bLanK~<3rX-n1&BqdtmN7jHadPbDhZ-I@!hYS=c=N2s)6e4?Sw# zA@dkJ_jEPR{f}EW5xeIJce5L9>OJXfc6H|>yPo8&9Zy-8;oI25`V1!6)7p=MkM-h$ zp>7$}{?yRIObb&bH5Av!Y-jYfFr`yNTlyJWWdQXnRZkqqO&y-aZOa(Mrt@Gnt%k5^ zn9ZijP&U!SxWG+gP7mj;{W)y5Jk4g=2sU~on~Aw>hL2+N)Mz&C$FOOV$EM0NY$C^6 zhtQ;xW33%9%f_)8Ii5|6XW96kvo^xFg-vK&(0bdl*G1}t=dBH7k3DbwWM{>M3MW`) zErP=nt-B-16EoA=Y0ruY9h+&Dun5l2vYuo}d&R25kXvAtXP7m|nqb-UBSK~7Sr0Sx z)7C+Tmakd?n_O*Pw_ai8@B*t8fj<9+^()!KZ(6IY^w6}0RtpPu$0Dm6*(z^YRmiq_ zo91VFXvh+)3E743SaF)@wenE|Fcj3<2qS%5qH9^w97R zk=ITy8!Gz98bP32uB7;~I^kn91dgaxw2Py3&T7n_s8G%tOcdBQYpu>j3WWs6md{1vy-0TZR`ZNpGUh0biF2^1Ad-fo4HP5IoKLbmV=>R(jo)()#WtWNmS zy3M;{C)-fME*fZzeDZGVcXoWmHWc%&}|@!zeQ3=tPChd`J413NHNU;YC-B2(|Ugu^&fZ@g?BwTq(l{43~tQFJKx zPpg+jaNsIUM|dt?!+s^9I z#q1T>))OP`YuFqYWp^g`uHyD%Bv*;HFJrTGjE$X|5~@(r#y(HcbxYajtOOlbnoP)7 z#;%1+mr&hU`zYD)I2)^ULMXbN-JWc>3ie2{yDHhO$VMjE%P1~X)s7>(r<#o^0zJ{L zK($Pl*Cm^D>Z8JpGv2oxQIibY5_6H1m>)9AaDA()T*js@3 zhBkJ7k)!jI?Spoa(&>%tU+wF5s7+)07mJ`?Q-b+%p)z;d_c3&BW@E3+kJFP}_NZw6Kp*z{-|(H7%t#+%wObMSxn)xrBZG5{%&^l*l|E8`SW1$@hAUd*hoG66}y(MlWu3( zD~rv0#x7eEpR4l!fa@DusRpVYHvjpPk4w`8Y!2}0z3Fy&JI&H3dfOHCt)_NFu#_rU zGSfn9aFN^D8kyTWx4(*mR)hjClqIeA$dUbr_Q@X9eCK7o(k$l7;A@7%swiqwlx?~W&RX#d=-;lX|*RXNB@Ay;5|_^8~RQMnmU zkLo|Fzlv2p=}LRFayr8Brvyr*z>dQIovlIt39Ce%p&-Rg%Yhxo{m2=V*FSsYe`0T_ z_DUV#Sk9RYG&u+VCvHFVtN(;0po$IL*c@f60R3N3_0QPA?+A&t^>;Jvsy(-Z@4?Q% z9~z;luoJi$BXdU#%K2|I-h?yL#8S^%V)K8sA`klW9HwhFv8y!dg6;f&a;kWgO^4Qy zo5sW2FC%Bf@V@_UWbg?@_{`mrXcS1rW`GOy&gHlgs(HyjO=CEdtvb^#xP*}Ebhk6h(J&#G!m+@AdLk$cl%dacx3AF>cIrvH1FvPtJ?v68uWr3;oHwuA zIwsRzMRt3py@4G0y=g7MDwNvSF2UizFw-ZX~4SM z%{MClO+{9gRw@Qt)AeWL?1m3@!^oAzex_k=0NWjQHtdtIV==@%VBdkI5$=oK&)zK;MautK zRGUMKMavq)#$e*RfBN^!$nM{7WJd1rjNJZtxuZt(FE}x_iq8DY@(1$~^Y3MrmP1+> z(lIgqStM!kodwmb0A|t3=r?GnqNBB*IB>Mmx{^Wy?qGJd{>Sq64V)Mf`h#`FE}5t+ zPqE{Y-^TU}tg4bokp?s?B(?lM>)v>{mMdMdmt9(qonn`0N7;6oqI536ap$eU!}|5l z!>%e>G6C8w?A6W|((#JoE|JW%x;(BIFS23_HsnPGX%yFC2Ny@7T>MXeun^?a$bJip zl|vnbrFsv+QnSBMnp7>NXE!PW6c>Blh_?Ro-uugj~bS%Dj+^rzwv@y&sw5)zF?OxJs(ZJ zSb;JQ>_40*L8iX;f?eC1rK?W1%k`KqX-4-SkvlS@Z|@vF(JqDl-_vhd`F#t4aQ+ znno-v{U=!?E<0X#nQE8oN9VYISC15K^;!RvXu`W|5kmjn)n_;_m|ujSKJstik$CjpiwMpamv3e{mVVUaU`G%OD7{AsYYU>C#U5YPVv{a3XC2Vm>K zUWTm;8;PA-54JiiP8j)*z@kz46JV2J*TOb}Jq_CgmUd)Q*glwtcfrQukhmLm4{S5o z_i<&O0{amx)~@{3uq|NQZUvy1`9Hv>!rmXD6fRivH^X*-ZGrXV5!eS|AA=nL+YNRq zY&z^uu-)~ZY4*$~X^){fDiQzFpPq2Tt9rrKg3W-X^$Y9V|Lao!XK0bG@0U^l^9Re$ zfDyfi>eRoi#NaGw|6aD}ypjU#ZJfnATUfJ6NQ00QPr|7GUS3atqYnPZA3E}rVa>E1 z!_&A6w*R~8&`OXB)mvR6_$nOd1l=&jiW^ETrXEMZX5)YQ(-%FYUi5>l2-_c)>db=0 z6`L9aOLKNGEX~y+uy4U;!!Cy%2D=`1I4qq5b6{z-p4Odb*i*_;b(kM=JvIt%>~A$j zUzlNQJIM)6eVIP|0rFGp z`)!g3&bJ$qtY5WvSnG7gYxXWXp?Ij?>-KY&eI_one1ZK6flhrB7f}#W7TV=~1YO^< zJJHu)J^o{S-h^$liZ0C} zbj#Irv4=ZbYxp8AB2@7cdo8ZjB0>k&(#PxcvieF07j3Yo*4e+%ZKU1nZQQtu3Z378 z59?_9&5h{TI(>ALy#?m=Pwkty9jZ6eNBni6)m!X|KG;_@!+u0y|V}P3!T|z|KW>?R#7}BC0-t8@3a~Dcto*K_FlVTK>vNvZXebVSxW0~4%$h&=%9U9ST$9=nvJ^ZR&%YMevdEvgA))!i1(<-gE zkjc=e$t>5=*I;hyW@I|)3^Ggf6eF%M;vE=!v0ukWAkFW()^)_R(4EP=sK>zA2f}oE zF*vL09i$G{7s#yAaeu+w)~(2N)&t4Bu4j@tt3zZO>mSL?)!{c_zSj-O)Yjd|jMG6f zpX>L?l+=63bl2C&%+XbD!tB=V$yCzA$qd$-%rd=&%q4xAOiSJD7R*eY0b?JE(o=6? zY-;Egqz==ENPVZcPWs!fX`d>tyTDrY^q9XPk1e4Wk^FTDT|{!Mz5veHyD(a( z-iG(rXq`p2WsJ@$?yG6Ph+A&7eJDmBhqV%Q_#Kq$p&P>3OG@hWJMbPWsqOE9^T`7H?ikB#@ zum6eUkI${*t7XlY+um2p{=W3w9PER#bGJasoO>FQE~8^CwCO|{odRo>*BKV%!LfQO z$(v&JO0rjD^SJz`~$Rp$QB5d00;&c(o0eykwuJL-& zbwn?Y*Qq|Z&&KO4SgVnq>4W>Za(W%fJIm?gB**H8e#m{w>wG`t73K9(vUUZ%mu$xh z`a0RU6?8%v?3oHWjcn73I*07oih4fTl@)a%*;^I$8L}NJ>6ifQ#7a7a?AMiaCfTx; z^;EJ0E9;eH7gyFXm;kjeR;F>km|1n+;O$)sUp?{I{^<9vpWb=m!X$sCY<24EX~VA` zcCdgp(uV?Q?)WP6a17aBRMAOvES1xp!=VmI(2GdklAw!7j?foauBuaUsMu?&>RB`s zZdcV=wB4neo<(+kHNB4P#cKLE+0^Pf0!NSiVs)KN_E2@5PZl3!mXht2sQ1Fw-i1?T zg0JG|YoD2U(AOd5g|($S-l+6W^^1?jXSe=s^6Qnqobt%zvN&~C)z^xlb$x5-1P8_E z*U)KXzp0^fU@-}_19x^!T}bk_n)(dMC3SQpJngTIwRB1(?B!ZI6Bcu03c05z z>6IjZo1_nuoTTrN{Bmub6b1PZEX|FYx^om};WRx4#{RvIUIeezRqr5mjlMwY*}6I& z2Mp9!#jzQxr_*WA->j!+(Q))xeI0@A(Awg@`Ihch(wC~gjrJ|j*Gl=S>V~y_3HowF zUprkT$rlz{8RKhj>o-dKn(O3Jz6kwdXATnT^R?Pu!)a_n!Ir*-rGt%dO&6&;&%~hva?}%`j;uZDlA{KKIH_Ei)-Jo`;L|=Xd0F$j(TcTLmx7L}2E3QWnl3r238*D&&0KO+8&C_@(p+-X z;~=`x7OA?sB4?uUZ z_K{1D+6ZdO+7_1_wHwrgwY@Gm>U&UQ)=s$OsNX^Nvvz3~F0Kh3<)4k)i!4SEg&IBT zdo>XG5GzmbQR<=4x9Pq{VZkg`Hr&8vFPHlqG>Ek?U2@a`P$p}KU2@b(P;b^wyX2@# zpvPIe>XM_Zo48VEEzBiHMS-4YEhgxqqbh^)S*+%gqmn^pM4P(gs0TpLa$Gx?9Mu&x zp0#wBu-ic6SR3pTCOK#a#$Db^xf za#UH+ldP3@$x%rlx;GxF>bc~odqC-|-RF{{I)S?R(Emu)g^@;~7w9<-?BkN7MuJAM zHpV3!>!2~LO?SyrZ-7R#w%8>{tp$x_ZG%f#1VMCTAX0tvH|}Tw2l;-ESy}gl$F4lfdz!Efno-(RPWp zN3=_#T@|f&d#~dDE;;IX(Ov)rsZUryL|i0+=hJNU7Wep~OO9&!pr@s}fT> zOPH-4JgtjMI6r`vaNJ&(aCingdg20?uwQ{vtCd_h$t6cEN%yp+E@8H)oM;y(IxD6(N>C9v8S!pa9n~**ma^!73~=4 z6OKF1gay@6X}vtLlS__T30lj6Yg}?ve1@l0bP0_Hg*a}3OPC*`ofj=F(^l&^u9HjH zb(wb16*q|(-`iH}Ik2Kjm`I}KidF>Lz;U}>a#XuMp4P!7%zn|v|D*M_)kZEG9Pgr| zj){0&w8Vb4+QflLF5zS%+H}#*fIj88^Dbeg_xH3(F5!A%fUP!jT$G_8hJUGu%UyC* z!a!SX;lMZNxZ*D1>?B%}Xs1BCIo}zVu-~&iZBx)iT>1>P)mI$Y)g?z24D&SY z5>8{HZ5D0*a4&9wOO9HUW2>(@-x8M`b^K{hJLM8CDAPyUY7YnYaLG}dMcXFYVbP9> zmX&L(y<9fiB}bJTxYT!7SLq*0jaQly$L+C|VoPI$#7NBx}dX=h!+k@LK##kho_7Hzy}=@V>qi1YQB zfcgm?wMN8sF5wb-qOA^dV1!GUtfKW0Z7JwGj$7^$K7LQ~G`~wY!azqjuB%Iq3O@CM zCuX>W4;P~4{i98`)ln{-=aQp#iuSc=r$jp=TJ{uM9pkb&E;(wuA-eu660zx2TYb-g zDK0tcInYkNY@Of|?sS0mvNppd-01-AVeL(qaHj+GHESze!f6}y6>Ei{AR(^JfV)}T z>k`ffpk1sTcgazWU-TMyw@X-VMavc~^(9;Vz#VDh5|(e#7Kj!RoMx*ZIWWp4oW(@z zAX=tq{X|;_I?iP`xr9r&>7JJC66O}@1jns&$x#z#7!B8dlU;PwD=tN>BZRJ1O z%eMN76Rvd0Q8i|IT5Xpcl`2{r(UyWva@plXIHEB8DYHDWrAs&~f=-!0mmGBqw4Zm0 znr#Rlu|VIk7U>c$R6vJWtLT!WYJ(23R^KH@HJ?pKG>i8_By!Y)pl?}w$R$U02OVIo zr%R6d31k}hi%X7*eZ|wtxr9SZw27iE^R%E^A>u|)R9i&bCE6a*j*9l9Xy-(`AlgmQ z?uZsy;59IsiLd`Eh*-rXN7WUrp=d2cYb9D&(b7fRKF3x+^R6p$$x)-`dfGEC;X}<_ ztbZo(MG+TC;1bc2=Gp2OPFT++N39kuB-#zpZj0tXqB7Q4@Cq(;Mv_C}qQ?#hpyh>tR z!iUe-ZFPnl)5Rs+BM|L3(NY&+{WF1WfJBZO;Zmd;E!qUpCX4opX!AsSOSE@ITP50B z(YA^9MNq_jA|4d&C((Wp?UHC$MYG@VdK_@cQKdvHD_S+tYPy8$zs4foErAb+)=soX zMSDWDKB5f}ZG>o}MVlbnWYJzBqV*5Ut%z?);Jc!&5^b$$+eG_9w0)u-6zwO`ei7}G zXjk7r{bs-0Z^{t5gdr5ItZ3Clt0`Jz(e4)Q0nyrt_NZu2cv?{P5pjSgsu7}%7HxuP zlSO+)w0WYvCEB~9Z4#|ev`LF>b=F+}O=YCnf7~V9XtzYmT5PLddDmsTgez## zR*Dw&maWclT#QSOdQ`M0-a`H4cGP$g^Cj>U=sXub;}X6FdE3*{T*A#O&~F^K$R*sU zTHGVgd|yi1PC23_F59GCFLz`LFn=8~f-ik2YS63|61yVNCI z1;6KM<6XixEr#g&?+p>(m%tB2TQAzDq8$+JuxOo@+UgIkxQk1U`cky7MEg#(??FK- z;;1VkUYEe!_ic5F6Xv;ui$~E4MLQ+h8PQsPV5`eqHq|9Zy)D{%qU{cfxL3qZ%WQSU z^u#56rz6^7(awu@QMBykw)&IH=D6gjZK8c4+CGR{m53=xNHiMx&E6d;uM!Kt3_KR+7-}sE_~f3Tvo5}v;{8V z?#W79{l#&KF5xqSXfs56btURIfp3VoMgrG~miV!)Zg9dRm+++`=oh{w9On`)t3l^k zo9q&9Vt~%Erd`5Z0R2i@P`&3Ou4q8?JM>5uatXrXuymmIYpL_bZ8REJ!0RIOEB z1M9kkuh~RP7wvh`USQ(uzmG&*C4omp`%$!r)m|l0E;;Hh(VC0aN3;Q=eJ$EP(JrjU z`e%mqvWRyi(6`1^=cs6xB2{V8s)$xyv=q@=iuOdvRyKb-@}x_SdKTnkE%>~PxW^0f zv$)hHM=f4&t1#ByaS30gg8t&KU{1T_s5_t=tob$=!bK+NCTo>l!X(^i;|Kb*>t-0D z>%X^vWmtUICES1l#j>`|C489-!cXW?_=HRN(g}nwk)hpi38(E%Ha%7gxVyvaQJsjPf=UKi+(Zb%&nrOtS^LQ){A^;oP0uW0f5y6mPqUy>99Q2Zd~FIU z&Dwn~IjSS53~QZT!WR;t1FU6j$NEQzuhk*OviPz~j(P`FmbLd?!aX0*x2%2b5jLGi3T?h@|*jRqcKajZ-D><=o(+H#k0iw1OTgha z)~qiKVXXjFV6C)EnEjxNtTlECS5lx#5q$qIjgeaY9;h-0E^`TAgM+HDw$CL;)hx1A z0&8_#a#S}^Ro0$z3HK9019{g?cL~>tpuw!IEV3VEbkrV*Ls;DJ623|WRpW%0Tyj*2 zFKtzwwNfr&5`q$0Yd{owe1q@lQi*+s;*k&h$sXRfH`%QIz59_JnEed>IvU>+^zR+I z@wM-f@F|f8eE8oViaZeZcUq~oO}=c~q_D}pv}v6Z6V6bmj;Iu9um3peE3Hqp3B>A@ zpTpuBO{3*WrOlY0I3Jed(q>FbEFy8*^u$d3Xg_V*^|TpJ$E;6+c6o`O)jp6Ayc}J! zO=8;R=otRHJN?31v6i``O=1ddopYvv?i9X=zo$(~+zqKYFnVG&q$F3`kiz)18J!Yy z(x%NxJPdc*w7=43G_}{$qIY=-@+1RHo@CCGjAFS+k{lhJNCmK&j4UzK`UGz1oWy+S zUZNQAiW``Hmz%7-qfJq`JZX& zk);10Y1=sV*_b};+Jq@6q|aZI2GHpJC3t8yTgnkc1KHyCRIz_VtrV# z;B;(bceEV&EONBu{fTDGqO!iCv}s$@u2iSl6Zn|fWn^FY_c^t0JCTov&b4Gj+$N~E4EK^3H?O-oIt z#Ho}xRpmBfHF~Xr*6&=^b5(TJVSy^e&#nL0{MRql57f}tkNToQxs?Kmb@Y+;fl{Gu z?F0RNp@tm;D~s#s`u;NQvoIj_Xh2Xc^*DNkvC|6EwjQ^sjb<#1rM=jR8nTz#XQT*j z#hn;xnLcsaAKQ|A`IIZQ48}7tdLnfM9Z2-Xl$>eP9!yA^(KRtGZQ2bSCzgAh=$9Yx z#|1l~T++y1D3gRTK02-vXsTlP&0fTXCME>@^-wDvNcDI+)Qet=0ghhVDY5F-6A_VH ziK=Zq5fizU4vjlJ>yakqMgL3ZUOwBL$C-}ZiQBU>dVRLr{J9*hPoxLRJbWDw*rZM4 zLny7ucABEcS(%hbM<8}a7Iit3c1ETe6?XO=Jo%FL&jLi9K7;=ihBh6`RZL1)*{(D+ zRN4$p*2q?9dX_gVCM^xioWxXI*Z+59P_hj~^da3>G;J%YPCxf9il^%jy9XNK2me2I z$4WMdDx8!!2ZqLo{MdnLI~`|3uoVE)9!5GcNR!Y8yO#>Ifkt6;$WZHP8qp8VxEHiB ziyQS<+O&)7Q{cb6gy!{pn(m%6h{biBn1AivB~Gf@!zusDRVewBU+|&IA;!eGYOHHN;%OJb4|V+CKn@>kF128F}KM+!i;9Oj)vrtX5ZJ3%AkdV) zmf`mPr`luxs`j{BZ5Owi!)~>y|Ead6apUlH<(PlhoPtrI1q_Ez6m^XcA9{?BW?ss_ z+M_?{8F2K*o`G^svYRNv&)w9$G6E6SQq#wA8G#sG)G1KBO4|R*oabgvGnpg2zUho! zfg~r!O?;g@67Q$U&uL2<&zwZ%Mx^U1y#iJ7Xzl&I0`WStS-@ZHBAQQ)&e9h%0u}Wq z8G%@5ud6LJEe#gB+w-|?yezoA#(qyA5o=E>O#+%Nw2?v^G~H+;nKo#)(nb>Pajp~_ z37t^$ab)iV(bPI8QEEe@c~?iDefkE@rRDG!ouD%Hip)UmPK9uD3M_f+z_jEoqJB=B zBMVvHzxP=YwZQDNGN=;!jFM5`i*#b|K-F4%5lyG2Og=TO>VnPnZA>JB_Hu4`b$0JS zjf$CAYOSsaxu1>{4B?zaE>DsAM6Ez_iDlukd~J5b5W)Mrty(Z9-}Fqh*%l)H!; z%-p7iOdhiot{d~T^ay`d$iTf3iq^p>N5Pv)c$0;rod%_xo|U4@TI2B zpxuUEA}6l@Kc>dIEk&uvlf6N3lVA^^NTED#_jqxiftGXJ5s(>>KZtZ- zUZ7FXbg$%nUcm|=)4i4tcohs1It8lB$r4)QQ3a+6cl$6$fUU@T0~n<8wfJhtrV?WJAOPE!}J2k^m_rwG=HbiMUct-KzolafT#&U zze-5+3O56p!u^G&flT4=g}W%Gn;bo9!01QpR;AHP}x zoWt}HkuK6$>TZR8(SiNGU_OsjVm~~U!*ik`=y}#!i}pBZ0&9ar8wZ-m+Dy?FgC?=| ziD)}OFR*r0wBJCJS+lD3_bM(8n!;i&(bj{e>L(Wje#T?7sc!^6wYKToZv>u?G$XKT zJjO!5^k$%K@LlfT=I8jKd-Qo1$Y@n?dj}8VL#qce+ECHPinc_wk3~Bw+8NPG<$L+6 zfK0wQ`r(Cvr>$GMaADvA+PHF2pi*QFZqlDG(-V=07X^-5MS9I*d~_(%zbp>aiZs*q zy@hlL#=nIl`F)-GR-jVwmQ8I{7;L3u*& zgD&wj{2FAEmB1M~Nq_Jz7BnM#vcYpT+~|dm0hzQxkeQ%Go4n=egwU6tdU4-?Ox&=| zo))tOueavv<3W$}6sis~P0A_(G?nCl9@JUy1s2vei~hVXl)AztFM~|ptu>_+4lpD z`n$`|x8Bk_8DzATqU{y!s!(6NxyQskEA%Z0uXn)Qzb;y-Lx|JM-^T%N!b>0V3f?W$ zU1+?}LZNL!KMO@1^|I6zdRXXbp}1rGrU^7@jn4TXuoXvk<7GH>&8QqXPovTgf_u!q zi+69BW)8pX(Gie2X_dmxaZhfbPk4x%fzI+i3yOCp=u!4A6K$i=F7aLmZREHr!9Ts! z4MC>xT9BCp4_)&b^OR8dbx(^G%K6LN^Aka)>}in6cOG<_n|d46h$}98!%#`TY5;7< z;{7D**Otq$d}v$lIeI;)69;Vuo#AX>iub5^kBc|a=asDoGN-A5fT3YnPV958gs|K9H@wk)B>4=_lTB8nttg+EX^ipJp|K|Z6LGz4uH0D zij$)K3i_P2TcBP{R+vR^pTdkP4l-FPgMMc1ZcsYMwGgd6s55I%`GHS`>Up83^A(6fB7o&`O})Fi>;??nA-WHn2f5|cot#GvYy z8qaad5_O+aR}?#AWT4V}D7&iFAMEPe>mr^z^r>Xf3rx8ndScY4@<4r<#)JAXr=-- z&oCVa(G#yebqYj}6ytf?GeCMK*Qd^d=!spQx(K4%p+0p5l+Sb>l+APtM2`jIzm66^ zH0)D;&|uagK=hcdPep;~(PN*A0Zm~V4l)yCEa(RQeGKfk>iA6fxjwKu&>63GNn8{7 zD`*a?)c%&jx{iqUpi_Kt)*JLTYdIkLUeK>bfljb@ylBsZeqwDh=vSs`pmR*KK$n>2 zf{rk)0VOc)3_tRbK^tnHDw zQ{ue@dWXGL26`pxfo>pQL%+HUXqwPR+#`iv10Cav7n7zttPRwP4dXVQfnew=Xt16P zSNk70c5If#Utapv%R;Y#=9#qtWE%c4=snifg3RSl5$Kk_vKH52=JfR0V9UK&2@J9L z1!sO$4rEsN8XyzbNhnvS5M)l|S$I2?+1agzdRiZl(L$n~5$%~EUL<7-zXdXZ*F;Og z>!pmg9%SNv60KQ|r}YJyxOJkP6>a#_Ufe4n6L;Fx9zs9y`coq=1er=IkMy*DAfw^+ z>u%g~&<-BbH*-DjkkRn!oOOZj?nTTO&v@ZKfK2%Dab9?JEa9foyFq4fQ$aPVPSob(v(Tjhwa{$eh);iT0&vO<(ZhMuAK_mxD|%_JK?jZDx0wDW3ZQknxTLZDH>m@$M3D!>N`kWbY)9NxceW%AN#mWv~B5 z&)WnqDV zmfFYOIWtkeNxcoCDSR2UpWS66<9z{ifW7aE_dD^{dBsxS zvNs6gdV}hHpecMq+?@-&)FVK~`!?th7v3)3zr@>Nj-?K>cOl4hX)DN-Jqr4cy?4Z0 zeJ*)}H2gz>N7%g#WD4(RH+d^z(LKiAr$EO0JjkSe9rQhWw}|(Ycq?d29cOQMkSY5j z=nK}?YfHELH1LV_qrUZNpi=E0dF{Wp&{Ff+UwM(mk39KRKakO;k)|Km92kRA8#d!p z=6QV>ruKO*{QX-N{~#H6bU_s`!^2d=xA77KPM8AvQCHrAQa|dJTX09yRJmk{#lLs< ztF=O{-m&;M)qXV=L_c!&s~I4Zv&6fW!kmUyA7rvT13IraZwa($YJ^rxE#+{*b|9OV zqZ|SBRu3s3qCrCcOO8da#pB?&DZ;;Uj3C$H+0y1a4&p|#e`-6CY5jyWu znEF$+h-F@hc%l9Jm%>0C-s?_{_;b0}=!6eFswK1-MBk+ORfsj+Xlo$3tZ8bW6<(v4 zfbiO-Fy?(m5rJ}tKxUv$f=oA>er)kiqx@<;s2Z2pM;cS9RnU0wD!AlV zHH8`oJproDeHa5WndkNbCbIYo=nqbK5riWGjkyIfMe42gs67Z%8Qx(a)6}sblkgRZ ztGotBgC4sLr^hRt_6h_u*(-cvsoyxoLm+d=j0RQWhD-px#FvOuK&Gq~@7thh>|H9} z1L8d?bOAJ-MYGp=S)zmzggOd!16{&$Mte)de4&?x z<_j$sIwW)wWSVeWwBqYMttZHI>1og$u5C2PjOx7gIGwnKC9oY{QtK|7AX9jb&>|3h zyXIH#fJ~Y#Ad}?}i7SUI5mUAX2rqs@i8>%t;$F`iR1X4QVfVx0&H|Z)uX%xLo6y&w z0xq#1WD?q&yy{AT=CZdm$argtw=rlQdz-PBPbVG3{RBv}`zdx)t0#!}Wzc-~7KrzN zc#nf#W$(}8t%~cXKlo^>4|w&|r`;0CBESau6Opm9s8f!^eTwLn+&sV{KH<%&+&ft&j#ws|3D zfKG#8T?q}?5wLvL3Z1nxP|Lk18+F=J;oR7XATw9ify`<#@eGw-w=*ylw{vRlLh@U> z&#u5+Y+c_KXcTMWKfR7y2ApFrD4_4#9cYUeNlr3m=kCCT_9k7lZGN?lj|L$6@seLP z0*z$K2fe{d(`=y=pi%6N@Yzbw`x+m9weIpYzKqa1?`t&S1ujuP%vPg0E*tc+-V7Jo zdhzQ(_gGW+l}PjJaKE}qqx+QIO z7gGwz#N~kS#SfCXA5ton_6m*xnG5q5gbIWf3mpT|ufF{%p^R4|P3Q@senKOJJ_MPv ze*{G=7we^|C3KfiYoX^rrtlJ>HA4G@eiEu&*2~;ZsH;m@h5Lw@BeV=;D!DFN%{VVj zGodu0?n1ADOxe?-#m0MOYYH_Z3i1%9iTEPO6h0`LznoV%R;Z>>God_?Df_u-mxcW0 zC5uqa^3uYA5KZA3pj*1rzCc^|pxaa#&s^{U{2k~hlU2obZwkZ`=?(h=bKNfybv0C^ zpWKgw)=Z=i61|#}YIxLG=m*d({lR`50o(Mke@a!Z?Zsw*e&$*Sik3&D>m3NRXksdP zu^!%V!$Bpnni;Km16$4DslNb}!$bWcsJDLY01n9_kc{<2SDa` z1|2}=TdV;f8ZR6k!+<7D5Mr;egG?nAI@!wNgtdekfU0s6hJdgtqY2M~ z-e#HuTEg@;2&*@|he4(>=Q{($Dm>y_!TIU=>(`24|Tamu_iF}1l49*464KQ z@ME^B%UQ018Zl*e_2?&|vt3btIH!(!+*W-!a3H7&(}*W*HJxb;=w+t&L8iyYL1q+6 zcJq4N7}SsB7J&LQ^-IUQ8+ewD0R6@dd{HR)EAR-r-|z0FJ_s_Y>pqE|aFJY40Vn(% zl*@Dkl*G-yBoy-$o>Am{?}5f~+zOC6ayEf}WbZN1>p|X8F?Ny=oL1x#T2Cd{0e+PkM7~`o*#|NSt&v{B$3W(C1N$`&Oa_^Q@;=a1);fZ|;!0+NOy8T1!h@AY12y2jp8@^ATIbQ; z#LNXXW$!|enV8>>#`gs{Si1EOg~$I%)WaZM2{5u)zct)7!dd0K(S1(fyyww z2Qtg|_n;O$3bA=M{gZ4cu^D8R$scC#M@AbIlt*4o4GvYlDh0jR%<(a|Q?(AhiCy3cQzFIBq;1gyg_$ph`@` zp7lQHJPRtz+6N#k11Q_(Iq$yWw+=nK{cfm*TlG060DHz>s3A3&yT*z>kZ$K_x44yT=&f0$aVwMLL4|u|{vGYRw6If^fn^!hWD9 znLY$zpF!IM>cO-fG?L365bc;~zk$rM961N|<2PX_TyKsib`Tl@GTuKyrdjq}TQ%d< z4#<4sivxYb6;}nhvmaz8;j5t5?4@^Pnc2TWwBTBx8JdltI1VfXz0R~lyx)M#z#RmA z%iiBXCgGn#HRgF*9Z*k>YYU2HdJfcvJNzr?39LWp`&D3D7JF!0b>+a%LEV_D&c~|9 z)DX0gsXb^9(<7jRO#MNo@6$o1O9etpKp7nO5oi(97ogxi#=XEpOh1AuGu;6#W{P{& zyjaq&s)7!)c0b5WxR*fYhfuRY^wL3}3cTi>n2&+nGXu!%5jBZTSU%MX^c^?hLC{-Fy+H?GL4}(Mp2jWo$EOX{8Iwyl~Jb0HfEq{Ofe7_Q8hsL zk_?sH3&Iy-pame)z;}c`6k03vJqTY-qQo`OEwlbbU>4B>fB5keh+cPyNeDW^R7NNs zMDIBCsfr+aeWFh#h&NFvNvNJsvQSf@6nc}DsidWdsi4E0x($e4u85y{gUqmg0y6FY z31p_!lW*H<0rzPz=trIlqe14d)8c(kysO0FtAkAHh9Hx= zD`+u$dy03Ec&C8OQSu4MGdu198t~v!TjA*sXx%|( zH5ddk2kIN3U%2cNP$!Q20EDmPQDPg&RQxySA@=&-$4w0OmK2H)0v~2~Wf5zDIRpnS@V)y0Evmc%KpPY|ta@)#6${#%|vSUd0tars5`` zuIz0t-bchc2=q96hl_WLco%}6VDCHP{gk}s`tMs{H+CNt_hoXk7P-u(f2A11S`uW& zqc+HR?+0~fZ+r1(h<6O=N%lS~-nruaa9I$adD?J zAk(a7;_VFT#oouoJ5;?5z@ zN+8p$6p%SQTZ7D5;IWUe{+ZRi7euqdEd#y6hshd{Im!z`Ce5FqvwYay0wv%S;#Xm~ zrZ!X@RF$>+K|{DPSwcU7e&e#SEAf$@>j>5Wno5R(%qsOV=mmCH{uo!cOm~CKvM~lU zm$eh1>ReszRUWkkRby>9=nBV82OT$S1;}*dI0!#Aq4m#N%?PR{)DMK8oIslf!jDQo zn?R<4zk>ecgl*P%&B_7cR~U#J4>D)Z2_XFZ0@^N+DLdp7?*e25C`j*O^Qm8e-*ZCW zTJvH!zj^@l7i+^n#ybvlm9_bx>r970Caze>iz^E)mxuDabeSZYv@Xx46hR$6I)MF@jC2+_J(z~ntc*~V?KM$7% znY%$1K*n25ymW)!cpHOCaoKxBdjMqaH_*w@#L=Q|C{rj4WHRT_0&d)SB9dl4oKF!i z{c^@sM?ZovB^H8Ab?=F`LbQ-*+k|$4OvU?L4Lk6Nh(Af-uOL$$9d4$&8z57ijU8$< z2V}HTqLmk|nrL-Ers75*)4As4eUgXpesMoYB5RL;OcT0`)*EE18zfq;(0K7qB2DkO z7MN?Vi_yKV2bSTVPRzdTPVs>-u-h=H5Hlj3aOTxwFG_DI(koFR;o| zM15Uk8SOqBT9i%=3$L&5*wE(3=}|stk-C^ad@*e<_lFngVt)ln=!e3>=a6zT3<1R` zpuS!b;6kDD;o&cpC{r#0UqD&4Rd`My6FZ3hDQOj25*t3&RP45rIWcgQtLMi* zcfC-R&MC!V$8itHDrTu-n6p--PeuMj2||y?g-@`8H*GqC^6VnrsH@N- zp_M}Psne7|L%p&>lZ5C+3?}Xr=A?^Pgd)N`jb7zq0_zF26zU|DDU>5LNobMK8leL& z(eoi9-V%xlcoioKH5Ez|N*Br&8ZR_mXpztwq3uMtsKW3c7V(VGEupAzuQ3Ti$wF;} zx(a0pjTf3Ov`A=WIMyFCz}rPUEObWbme7)7UWr1X142oT=PklAYcd}bN{aHdIUWVo zMGsX#QY%ET*P(ax|C%y1^oSKVvhc z3bg^5LxE-tj{DpknNu1d3qqRH5mhNcPU6IQGsFnhz>YizA*`2RiItB(ww+&EBOTtm%kb zF0>Ma$7Z3e0Y$NQozNyw8TJ-}inDjSP!Xssdw1iCTa{qeBNSR`E*vEk1FFW} zGN3Z-jTfp2N@Q;W2xm%UNfb%~)nsoyP+9iUnYAp{?^8{I^j0IEN&&^OyQNSns1AGE zfa2MkCe#UplQGJ60hMEKSD|!J1NQa+m1l3JP(S*_LvK*RB!pOj-PuAppvLT_i=v9` z%@d-_qo(Z52UTJ(T__ov3c8!U(?ONlJ4dA$3K=m+CKK_-DA-a^zVDETP z1NP<%O#=1S&)*eZ$?B&Uk{O^sB{N7LC6lfHA~Q_K-5p-(-lsXwUX;0u^BfR549aEi zG0^|h*tv&ARd#KB2GAJ`4Fi*s5*1C$Y(Nf!LSkZJVp3sIVq)PbF;OY0$icECrNmcs zp;2L4Qkh|4pkZQ}X`axmC{d|A<_UW-@lbvDdN%H7FW!GXu1lYr-+e!8pO3R=6RF&K zQyqqyK~qt}{v6Hc<^}qgn-^(2H@S3zo0rHDg`x0?DZbK-sk~d&2{)A+>Q&{&Kn+rE zoT>PYB6&0hCG2y_!_DjT7B}p|9IYPNM z{B9^8sE=u2G%A(RXl_2E7r9wWZ*o&X>$q7@KcR`;pz83NJ4)5z)zDBWP}Ry!#s7~h zH_cS(P+wDMKUCU6!@1c;leyVW^SIebA8@mqzC{zeN7X6A|Kn7ha#K}8eXraq{69gt zJXAw%hWe4Z^hc#y8om4 z;){}F$_;{=s@z~xg+QI4_A#h*lJ4Z@G!5hCEKNe=Ij4H^+kEfGV(_-5nu;%C{;S+{ zsNu?;V5$tL^UCE*oFwJ)i!cq94b`OF9HSm+ zOR?P8X(Tt^^c**>h|t735W`*=|G%WBnJ=LXRSVTdxpnw|o+@8&s>4v%(mAfwj;^~4 zjUU~?&Gj^tn*f@~%?&gMO)QTfHbz|he4&QIS6zm3Lv>Pa3=|(gylru&iif(He&tHR z^e;Ev=;i@vdQg9EdeNiY^rjhTV((OS3ee|kRj1HYMNnbNEr#Ml65bSKsufTXw1+FX z=`1(>scjsZSh}5?I2yvuAR3P*cCf0`fIiz*okmkNK_w`cFY|UN*M@5>L-{}rrA=Jv zemca>1N1jH$<%2ennx&_o5$!8G_j*poh0=6Ue)2tKtrWK@mhto42qAMILkFvI@FW2 zhAWMu-P}y1)7)gxwRfYLLcO?|M)#tLeMZ$OLmz&M3}=?6s)XY8&)Zf7#m8Y>QJIRb zD_@{xTxlk4m=4KAvI0(&Lib50nx~jvEyZx@}@a-W(@snJa>JNbhj7iZ*bwn)Y*3Mi;sHlsXQ^P|8)E8uanT;Rvs;FjXzo=gO^v z@=Q>}pdMY*L=q})}eDud#k8di8HK2m$zDp_IpkX4Wem0bHSIG%Fvdlgf2My`x-TQ~5!iR&D@PiE;x?6$EvbU5_moa+$J2OvU$q{#2cN zL%pk9m#M;`8kOsYTCUs}Q^i63rQCQZKJCF9=uDLe)uh}csP~L(vt%VXm;!ZK*{M+P ztIlbrN{9Maxf7sPDmTManNVKX4dW~ps#Lkzrpke8rQBSo50pC_f7hy6<^ejCoe%Y) zvI|UA2z8Bei=aMIZn3FKpxP>T1=K3#mYQl66yJyRwv|DBtlV-_c`6~VS9TTDYGqfO zYBN-Ta<@W#qTC&(s)4#ex%;5Xlv``6I;cS9){kYpU5$QDjd4tt=p0vigsvNg=25zXn~^jWjc1hV8R&}>DK*_erV54{t=tf(D&_J` zT0`}Q8lzkn)CT2-o5~IKq;g}RzEp0Usp6r=DmQ_S4Rds~kEefmlqS;6_oJCa{kfS; zk8(4GW}u0ks`3Ts`KX#gzDaDTBB<%gErxnbxh1Ar0rd>+;Yu^;EH}?l+u>+lpxe25 zk%n;Nq48*9XQ?`T*LjSp(`c$DsF#&{1?maq+HhalP(Dzv&?c@lhYoS`8vV^pK6Oe$ zGoPZlSwN4ViCw7bB%#klRfq3r8!82Ak#bX^o>Fd_snVf{)^Mezw40k^I?c^HbnOFZ zmQgQmmeajxV&7AB%Ft)3s#9*NN~luhRzXcuZndd4Lw!igxY8=x$jxdxz)cxl=H@fH z@j*17QxuxmN>#@Xx5l4SbplKk2(@0hK~T>tH`r7mP#b6gSK3IQaI=YaaT5NHiKa?|`dhjDk;P`^rkE-f>R;ui1wwwK>~vG{XB%Gh1&>`ToW|p0 zLVztQ#2pBWYAaMnPF?( zLg6VlKHIEomfp5{s32t@hQgyf=zQE%r=X&g+W>_pZ{RkXstKx}a<4$)DI2)_*^i-o zpkkHlgep_6FDt$ihzBhpR5?(5jq7d8h1#gx*`~^a8mZiTsBe^8V5&l> zXO&w7wMDtbrYeDYPPr?fwi#!erAqSPRzVdiy9{cl>RfKBN+?op71S=}R-0-w)KcYc zh1#v$9j2;*dP}+cp!m)wJ{|VM*_I*e085lz54A_xhfQ@H>RsiYg4(Ox22(Xcy{FtJ zsPC0~#Z>$b%azLYf%-wYPE&b&AwN*IAJmV^4lq?9)JMtQHB!aghATk+&`0R0&XgCjxJ%hB~O+BvU0rRVX(F zYLD9aq?#%XYMpY^q4p|wf~hi~zEEx^l;>Afnm<)FR5sKGW#>Tsrrcap&4${j+&rk? zm78y>0;sQ)TL`sZ4YXf^}W6DyfZ%C3VtsO)-E9ftZrxyPXnDfg7A z8lZksZX?ubHQ**wU4i;px%~RnGs^Wbl@n^eN7=rR^{TX=sRE!5C^r!5SLFtoDj4dJ zazmhgQ*KXF^=7497u4^{4L6k=>acQSuE+lGu(IPADisfPRM`noM-)pmRT30GKH+Uk zhB~jNDaBN&P$!j}2E|YR;gc3qO@KPB+zcpw^bY%<%&XFt1$9>0*-%ZYbB?KUq0T9H zHq=Gs=9wxVs!_QGP?wZjXsRNpzm$u=ruA3l}~U4*t^iOiH@qz;kR~#=f*)yB_%}`^kUq z9(E&6>5ZSmxBj@{C&%)EYesz(@=@^^??1P18+mccs-r0@W(^rPBxS+YHFvDdnB`Oc ztoL=FX00jy^MUPOE}wp|#INTyGc)Ea@0Zo;&Or@5e*LH6^ha%Xj9yqeV%?!7|9_UA)G=eelMdPda=u z!#Q=!R(x3U*r)LmtNKlyapd*XpL%wCvGM5RXD;S_u3y%%f3{&dbjUw zp5KmMdFScv<4*Tje&_W0f6dyuW$-H@uQp!3`ujVrGVS}?-FWO|dAq3(%nN&`>W#14 z>_7T-!=jtlSI18Es=V`P*WpvY3%$R7*}x|^ET}zy%RRf>{}Rx@-8bK!tm@dkeUE+> z`<{0A+5P7Atc_WFp!&Vr&)uIrVn*5kYMkOIb>?ne*>T5DzIjxf>8N#ci#xU6=Nyq4v*kl6jl-u!I$_} z5*fjdi&;r@WNnK~bQFIQXvsuJMDiu1CZR5mD}wKlSdlBLp+zXv#aH0gOjx)LXZ#it z7TWi)tP>U*?$;s{;SO#|Jkc(R!owrtT9T-gmL!_5<}8B`j|k0`#2x153pY!~-Pcvp zl7xE7TB7ipmL$T*y0%A!y8A}*6_P0Jw&CQ{O2S>iElHTWB?(XRv_z3}wumed~K z{;_t83Qubpip*|F+s;vl4u*Bb67~Y z%f@FMRuXFC^9?Hrv+>!6mGre03*w0k54WulC^EujTh)R@+RCjYDl9C_Ro#+=x^Svt z4vaHl1uaS621z_&Vc|&uExJXNwIC6F{W{1@L{w%=;;v~yBEwuah+cieq6=COPq?e0 z1qu&M>L|N~hn2M;5utuKVX{nX--xixmL#gC1&IoG-6(rSc_Ip0Aa~z}mLxpsCfUs$ zQPz?~`r%6zmJtefg=e-Pp%FEbMD&g97buoTMBivzPm}b?8k?OJGWlsfHsIii<3cuW zH+bW?@yCwZfQpzG9R=My^@H)9ZdpEX@ zuc20Q2_)`*E4d@yW=r!IXcSP*{q*=UM~bIjII)9mw(5ti-CtvZ8{T@LYe9lXSxF;j zp0pC*dvF73oR!=SQYOeE5SM4XHB<+bCdl>oVpIi*1Bt_PUwVWd2gwy=E=ZXmpK%>Q z&T+4d$E<~VCSdVRwvwknas?>|seam;spnpqR^l9j#hXd(mOD}c_$Ig>)dqH^(euk4 zPkDl87!Ix>@Y881?npgv%{~m0InzoCIrFlWd+i*WZ)&zCujimappq(P8FAg(3W zOy~PS-n5b-Aeqg?n6KkN3Iv%4;#Z7sF6zOb0E&CtTBy@-tU-e0f~4VYF!wS_uLVhZ z*Gm2Xsc9zOYOxMX!o4xv=+(no1d_HA-`vya1cz2z3tj&Jre2WSK!R~YRu6sp*In zi7`SygCybhZfjfm)t#Z^A&j*`S4jj&i6E0f(r^b@&$CjHGC>+ajGwC$)+)KewbJpf zkJrt~wC^KFxYupTbj>Qqk6zKq^xG;&O7}sy;veIWcg&(6|HJcdATJ5>D2@Ku@r`|K zMfcT?@pk(&^!g``Zrxu&Zdgxi&xIgEds)eQ^us5P7xB5(LuHP8yKjP@hp(LJVeJ4( z#`n!Msilo&jz|4}gYn&Pt8u2{_BD>FKF#|K9@&t@`$MBJ!u&1{E`Y1N#QPc8ma1)} zIpb#Xsg*=C>9y48Wz=!~4+#UABQkwKHhHXwN%O|mJTO(-*w~s$7?dB{ps7mnw6PgC z6E)9_?Xj7tNyYZa`;2C!#?jayn~9n-wP{_=sIfM-ENjNtvaEHCEvuQRg=lP9%|zAV zEerdMW)#LL{-!Duwd~d4Us!9IA8Hh5e{LbFbms~SQPaBKO4PtcR9Z5jybv3h#6cLV z4A;K7dGM`meX`TXWQ_sBPj~$DwimU>ACiOG^2?6rnHoP$^hl+nvxiTvSNh<7?W|*d zS1o)nHp0+7&=@<5P!K16Qzey|2;vK+Gvh$Gh|bIe!6~IBv#6OgXK<}#`v@pRgsMS; zL3E)y5T0~BunQnPMJC{3e6>JiTp-*_*Le_x&k>9|eV(PPbq+sYe(;5Vo(e3irGj;i zAkTEYy^b$f&yEXIP6-^kR*}$8^m*5ggT_!Y^fsD8-!=9 z9@t(fo%k75}DH=DIgvlYMW*}ovf#< zH%OW&lnmmBlXRVV0c3*6ECdM>nGZoSMW!00Cuf3eSC2_Q0A-8NS(>`h(Sd5#JKA}i zW3YP>ZV!++F_=Lh1tRkV2!A0;k8UnVk;r@mk|HucfRu>L`2?VJ5ej$$yB86P2gwwf z=^$kyvw}ueJGw>fgHb7rR!?I3MCS;QYLOXBYth-i5XM$vd`l;}>O~m**uP$+u5>(T zDyohHsTY}dXz(USw}78u@M@$xw;oG5n;c#J!^h%NMB!x68g%h2hjB$1wIKYNzMkK{ zH&mJ!nul>8U5^(jLBH$#ZG(&(wt8( zc@WAK-PVI-o86GKode-@RhRCKbD-HGGY+IcWJ;Kb%+DZ2BID10O}$uz5+`G06rp?& zer#LM%=5G*w-dJb)JZ(Jbq(?djq*`RQJ&oJ+)uPZ1Q|QcQYy?kC!L}uwos z*yy}7ja6RPO#tDC2K2D=nTXEo=tXo6I0EC8Fs_?Q<=wn5%vBB2{3!{(uWIa+v5wfaS=f9xBUAJq0^$;xG!XtWsUD4IL3p$7Zcfg88o1rj!4o4k zwv~t_h}a>JLQ(35Tw|lvr3QnPh|F}56jA4GkX0hH6(o&clc5V;0;&|D+h^h6C^Aoi z@Hgc2v@He66q#)xH6n8XBwJ)0FJV{TijsHWviSyR-mLYQ+zN7BREPp86q(^5{FNv@ zCgVVgMP@dLt+h3?45UPMnZtz~BvAm(8VZY%GLvMHnmTUpCgm;4M}6_?{wmVGn&0 zMzAn^W>dy4N7sO$*~a#!yF|>Ucj5RCgA*_MjHjPa%s&@KvM`oX+ublegE2uE-_am8 z>S1IHqlun_5p~@wSlq(s0a7mJPYejJ_uaAlyzvkBvFUrRItoUqFs4wO8dS}NQ6-GG zKx#$Rbs$?sW-mR7&H;bG;O{DSHwR~Xm6q0ER&{t4doG^2jz92$EnpG zjN&secwNy(9`$EqDU9C2_=={&2si z_wuB`$Pz}!Ji2c$Y7NT6iKTEd$%8Kb#V`tmv5nSpt@AMWt1x=Jy1quIxYqrzVQvfO zIqLE~YAuJcLm0d05f}kYFzSVI(_DJvd(`Sb7qeJ6qv&g{H4}!9!#em9y2!>R7y-ig zo$lO+f%weB{#qD4=Fzx)7|6YF+`^eiZ=#F;To{SMSVeo-*a;(57-z}x0|w%kj~$*c z!t&{^A25)I;LH}zGc+At{1?OEr{499tfUXP*3U3Xg@HF=)N`$#uVZH{oFwY-BWlfn z!H**ATJO+MHnza17seTy1tXxt8<@eu=>G;){)khxG&nvu1nF8cK~g|^m|Mb|Aig5A z4kTS67d72x0+FG7nES|vi&Ac-P#7Nk;SZeDgrj}qx z(R(}yKd`B%^9vAOrn-(-5oWWSy0ulNKq(OulK#E1?rX@Jp7MZ(2`1|^L zgeHRUa@QkN2EyOk*O|YTTyHFR9U8Ed?%R*~GH0o=xV7^;2!C&1cfadREN(G~cR^}J zrd6@Av~`_FK=?cSx=twwFKwMU?*Za(^6SvRw~WQDL)jo#L}oQevMA*9HZCWwvDSGM zBu!-A00}TN#^pIZRp;>YdryY-TZsZBg%FpC~d@KzfVJ`yjl!=y9(Daf?j* z5?m^a%zV07ha-URGVCjbF@)|s;E3>l1qQD>y6SqGaR6)k85l*v2z!@SA8>SaKl3iO zBH=6r$r2;-B?zx3x@^F5avpSa9Wrq_&a{N{IY_?Q`|6zyUNvvUtTE2k$q8*jRJ*Je}+T;O|(vPd(V?MW_a$!ygnY}fHxZfJLHK(adW436@Ybs9WP~uULlmL`1LLQJL zk*NTgEiz|7Qbi`D0*5q_c@$)V$P|DS`(pmKxmh!az; z3q3)%9(Qze*KEX=CX9jAShGauH6TGE({U5MbR5UooK41-tIMti$rZg1fw)EQyS~CP zMr4XX;zgzjq)22Q`Wh1@G9}dQ1ZMUr7%9RSuo>q7w;Xfd&MCKU1#RKTS&Df^9n@7b05Plnrp8mriyiM!O?cd>KM`Wgg z@FuM@Wz^{;7Qz`A`-IVVJ5F#!=NTY%BJ%@CqR52pFt&9)fJBfKGjsJo%vYkfniDhj zF@%~#>9ru~W;Y~lK0EOrW~rq#NT$dv1o0J_->Bm$EIQXN9BqX0It^pv1dL!|45ydb zDBo>t@p^Fev<`;*+8WFl(IX3l-!re5MIA_j$b{^nfYaFLOxlBkgK*xWA*XS5vkOM1 zFxu{=T<$V-FOD$6d5+eii|2h9ypicq+z)bGjLCK1V^=FOgFzZa=6R4(k*Nf+U1y!5 z^B}xU>S6T>*@u}eLgPRxMQAO(a0WBe`v;t931c{|VPh$bT4C&_W2(oGxcm^tFuM6H zCVDZ9MqwNUNf6@^@e}r`A~P8z+00yB3yZ~CxB?m89`z({0!fp-XyaK&d(QzFz9M=7 zBtu5ijf)t)n)}saB^139L9)$Wyq3=a;dd+Pk@yN^wwY0*PQx1(v#>tj2ZukW|D6<9+ClMq;WU@d?&CJzV#5a8P6ugN{s_6AS2)~#|ulv{Z+iz^T zdb|dJREyAbkPK0%0%Ql>c+Sze<0Z&!VTRRVHKF0>9D}?j)=}X(eDmNxb@Uxtygc*Y zbGUr?jUxVZM0mA1KpB6+4Ld;Za{Jf;szuxDr2{vPJ$e!i2q^? zdLP7ABg|Zo2Aag?_mJhnbR5F^M$2FZ_JiCi%vm5#KdSw&p*(bc$lpsf928mq|wo-lMO%L<5wTdb)CKOH>{Gh zi3>dr87R!RK$7SJ%>Mf!dkeGs?^y6+G@k|u7ny313G~2uRBwOS*d+C!2ZLnM9GC&w zkg1|)>0v6l;0T~y=N)18pUD0fmZZ-Sa{q-T=sH4AbDMgER&YD#2>pWAUQX9tz;dsr z!DvSN9_1;vslV{;tyC09rWnd}5PnBc5BT1;t1Eab}wFe+cud2Y_o?H4irfye2Ii;nQ_cOO@yV;iJ~%6bw= zkr>7BNAEI772SRbX51e*h6{5%$W|Hy z)AKsyabf<#adUR?i1j#$l}lt&LHJwFa+dizt+Q+aGEQXlIBf#qR}&e%xN^g2AU_cb zJcUEP2n_%U5}6qwKJBfAR)d6y%zhBR_SEk(KAd-)#<{9+BS3;gg(pDbMP?~TPm$RJ zk|;9vGg#Y2#s!irGTA;rakT$3X7@(Obm5)@NfZ^jp2a>;WbOq?5t&IKSt3&ek}fiv zL2^Xqww?`G`9)|xNS+971IeLfSFpW%ox>U_%qbvwqQHKT6(SS(CvFJQWfbrvLsklN z0SJHjT(1K=L8?Wj_kXdfo0+Q{%|(X4d9T;5qac;C*W) z_aVtuneXcB!&?(F{1tvZuwLgec)IX6rtwioUSYNQ97vs6lGpPh5Ijm~$*co8E;2uZ zI7Ph;^!&TOXO>0l0>(YAjxJgPG5h~ z*lP5GNdQR`nHQOeI-gy{P%=d5I6@OdsOKe|i7e{w?A(7mRF3dI1mRa9=r#Nl6OoC# zj2kA4JkHKN7D8bSwY9=O;{df11Z$s#tiQZyvoqZ5&&!K0Im102uE504VEi+BM1z!d z#V*k#<3XwgSq4%m$Yzjw^w2~8oqOGGt>gR~2MUu6$jXX~^Yk4yuu2rV6`|@b)^7KK zOc0q25T_vXL6QVn15#rS3}a?H2$Cx@t^V;~#TDrGe{g;(2LB*Pk(n9r{OGtijC9%^ zS4VNcG=tQMsn15QOf$oSp9gYWWJ>YWFYpA0iV5VzXOk z{#_vHV(=qCt`UPz2l3R1(5pZb1bGjnq|eo9<-u ztnp#sliaNlqDw0XAN)azM_2?vyv`y7;%f-6a62`%!ln^#r#`LGCfg~U+YCD`=fWc>+41LaU0}Cx!i_((dXPIdeJFv zQ@yBb8?+f-l+wo8!*9ii(S>>va=hpbP@37s+0HB9i#Bs4=PU;7(dxGtDUnWCAD+j z(CJDuL#%o2^Yt-OHmYdn?A&Y0%ctjEwfN7F8RqjU-e;Qr#_bEVt(~(|o59V27wB|5 zXE%EewZG2U$&=AcbI{G$FE0h*eY+;#g5XraLe7H(3evTe-4-lJGDuHBUIB3lQsDt| z3v?VLP7vSLcJ+N#Jwh=cNg^`|Bt?)nLDEdpCw=S_&x{Yj7HhM;h=1PpG?q5H&CeNl z(@ZFDJ3l@xf4*y7k?QAMJM@-}vFX!CXH6N+uX1^2+Ss_bM+YVi9yl2PMhwi%q=AE+ z9omh4=*ekgvYwm}7dIsCF&h@FI@8p@oHx?jmz-TH=3a8F!sS@tQnDAChJ&=O13Ox%P@nn#KhD+qR?2T2A5EX zP!vUOYsOLum7P$CqWDCOqHO=y`+c4B{w&}B&x8B@Jg@irdSBPM&ULPH&V8SAO#LeU z@|yS}gI{||Wyd@_aO&uAb@YuQ<*dbT)Tml4x~5OvFQHV?$9#(ZjC`YS>A>&hlJB){t{fiq zcR(HZ+vo-0hW{A7<39lvxMTE(?*!CnFvY(Le*CV{husaRwP4co!CCi=zT#d$T?TjY zRSv%c-f-XOXYL17#Ro=zhEs}dLntZe1|jFswOg{zqst4o1B zZC11GaJ9!~^(1hPkJXSbT>axCHLR#VTz!%ElT|hF8>n6whqet1SNFm=^r1kwN)51@ z1#A$Ww=%3^lX1nA>JuKW4#kFZPY=Rpl1fZ^IAidDaRXT5kEz9#`lx)kdZez2Tb6e( ztaM{j|LOFzwRv zJ}6wx?wFQWHnN)ibXwkUnC`~(Hm0931C4p!nBi%8r;8?7W?@WPUd9s1sSqNQS1FCmgSay+R#{|Y zX~IMOY3XFO1Rwco)Pk5-tM&nW-l}~R(t$dQ$TPIwMe=lNP=L>tkKTdQtYK9u+P_gP zGC7Sa!Q`!Ja*h_7(!z!{%@W8QZO%&tEx4*@TDBxHFR28@uX_9a` zIWN(=k9s)|pS~b{>fjuFCS)%{(4Op3RKETzysi_bgws-RYF#qxUQMIbDmVQy8DCBm zi6v%ocjU~GVqh`C4A(-e`aA0WG!v?Iabi^t+Et)dH@e(_i7V^vvx+R4#OK3(@7lu7r)=GkeXXb$1tg(4xN8lTAS{E>h5&m##l&6~K3~kF^J8RbT5U z3Qp?B1w+C9)c)Mimnjy8N^Yp-K(jn;kcAp)_yxR5c20*MJxjfJybnMWAjTj}c>6@%BVX)h` zS$AyM&7W~tsC>SaK>jwnXm7D~x83MxI~2W#Mvoopxz`FOoAS9ejqH^#X#MO^{64EH ztWN&Qy3gBTKig390qSP-d(VT`Z|wM*ZK&}#)_!t?{D-XF4EqjS6*=_E5$iOC?mcSl zCOiF@b%bo6+o?Pgy@QtT=5|v?*rqS!*Ig(m7L)E_?wS9$8LZ zuzse9{2$#c`z~_5#q^a+)?XMZ`utDUXJnWDY^@}leA(C=m#vSm99nvX*Qr=&{Vy)$ z|7tZw{l!9euUe-WPW{Vzm?7f2RgEF>hUF0G=D%YDuGi)Mz=l|_um6F4c)h+@V4bm3 zqjmmGtb1y7Xz`y`Ka9cX(A~dyFh=Xx+t{uo+_suVTA8|$-#!OZI?Ubxb0EyVZk-Bk z3)mP=r$X1m?MNH;P9b|8mi3xQ`xX|L7q+{QyP$~u49V@I>;fz{i?*>*PlZ|+v$4%j z>1T@DSFL2-vILn>t&(QyrKOV zl%k=mMmDy}`l5PmWBUjR*-h*K3)7q0ACaSRGkZ7LyUpy=6mY7!U4@I@ZDBWLXwcIB zjUoPVyOd2a&0E_a`3SDHv;V@OAat>V?eozT+nIVOH&nNay_4+qr|c;cvX`(& zr{~&b^^-mAaSu_P4Y54_(VwCS3WJS?{T=ps{Cilp>}i+Nb}u_NuYF8eJu=IV)#n%4 z0o}V$c;O0sW&1yAO1f#<>dSrXX=VPmmJY7Flb+VszD50>-Ouib9x4$!*xxRW9x4$! zKfvB^>6?M@XuWliy#kU>8EkJQSNS2-1?ar9&)Y@0JFlhM6In?eZokILjdXh@D+@;2 zk1!k@Wn;F*b~>MdjSstdwApT1W9)Bex${_K%a1em+Bka?)w1FRv%y1a$J+xrLv*J7 z0hQREiH(PdjW5zjgK&1D{hNIyLLZ!j6jvfbi?e7b+;DXMOZLD*kNK5~Lx;wPYQ1dx zEvuqV4BDm2EQRF#p^zKsOkB;Xxw?PQuKR3vbk;e0*rBqMYcCfu*--qoD`zE$w zAJ`qRePJiz>Y*R(QrP~m2VhfREu)dLo)OaGtmtTXWCIXo%~>?9Uol?p}WyA{3(jk<2a(&8La44qf*YLmag2} zE*JeVk9_1{7w3!C+<*>?H7`$Gyx z-$RO(nDy|7`aea#bKfc*Jb}f1|5gWM(bSWPap;p_z7G1YCX9v?b~Y7|Pkd$d82GLkKI$0uWZDgn!?u9Ms%3YCJq3%sU!8@e3H*E59N2TP!A}9_ z0W|b4!0v~=1p71WPp}2B;A|f%xeOZ*dlj}W>~+`{us2{kz~Tszy#^MI&E5)o6P8B& zpRhE>Z^6=_z70#m_#dT$*(rcK5XQq|6J_VX-iKWV`vCS+SY@f~ldzaXvj2v)VM}5_ zqEXp(VZ&et!3JP8Y&a~(?e42?+GiP(nSi}md?8|_n5O$$EqhP;) zjfOn{TO9T~*pje+!Ip;Y6`@o`*b}goVV}XKst!8C*Phdsh5*)2 z#p56SX#+Q^QEg!pU~ypJ~eWOzfv|xGjtN9|D2&|xW_@u zh^3+W!Z03=w24(R{&{~W88rrdshYcDN4GJZU@;l1Ctx3feG;}QY!}!zuw7v>bX2Oo z-p8(_KX}tlDMPtv!(%e$Kiv?64X3*6s(H4yyQr!z#d~+`$DVUvPZ${(u;7qyDxNWk-ePcMQ_`6Nj~t7{iStY=Pj`h*tc<6vebUr zvQvtN&M&jyB+%oQd?q0N{{6 z0UP_7{WI*Qoi;82?ND4kPI}Suy1TGm=XKO>dne4dyX`ypPT{~FI#oU&y1dt(;)6}w zXX6W=4?`GmU|T5{a(7YM7X3KuJ(C!V#d z>(OWJNAB-Jf;kq!aE#P1RkKJ{Q)NMM-_9fK(qX-TbzNbd*eK|CI z;fFKlzqjr3nTDz3FBf{`ns3m_VJ##6*!W$wBbYvLbz%Fe*<*_86j*Dko`&LfM3i1n za-S%Disa?`0c3Plf)Cz0(YmV--ppv7Np^p2VT+PU1ICZNqq8lXW#7s6F$#Rm~&&zg~-IceH&iG z+^)}2@zy1DL>Q93rF(=S>0up&u`8Fyc(kt=HdD>3{SsDqSx|#|6-&NijMZ*4n5?1t9xN=>;TrFQxOz z=9bb|$bCjfVawSyO6!zjkTYRv9BtFnNREuv>#=Bejn$_}en&qb`C6=wi-z2wjP8mN zWoMPqnKZKY>Ln3y7b~mxk=(bezCm_1Y;m}6>C%PZZc|P##iBjEoK7kPd%T=ZC0o6` z&Lum#yxvT9TX}t+Y|#oj!h!8wK_`-3T0!?Dd!mBQCR?SVUQITmqCQ0S{fhcF*_#!0 z9LAR2ypm2PJFAk;pt1I)z8r~W6pz!N*3~I-zwmO%d1)PHnBaj11`>#no`7wQSLc(1lzO8Z2|I(i@EP^l8W1(se}-d9;C zCHSi8lQF&~x@&D;guY(Vw@4>E;%go%QOeiR*87qWlUvnSNYAP5E3JP$>MNp;#rT?2 zbhv&y))%Au#-i{)iEy+n{1NFP*e62$p%lh65(_h#4&oqG%Lq?1m^P>JX#@8k^ zBhEL}(s9*&HT3<)zS5!Vm3={5-)rnEqtBN|y%7z4kB5%M`_gS4Roxe<-%Rj@D6+fm zUk%|Y)qRs~UE?udQJqlTR8lfjt(Gsv(*3IWV)e_3SgS)ZzILJCYx^Fx^v}(GHF;eE z6NZf(JZb_rB7EGi5kn@98mSN0@zti}vD$tdMbG(;*G{KYMS`u5qTMI!`#OetHT13LhJ{mxGXAjx294B} zXx(YuLM0pH3;$4h6JHZsFRkng3;of|_m`zh*GA`dEsyfEAM-tDOBa{cv*UfqI{9&5 z3se5w)coLqQ!_OLNIlnV@9WvRrc13{ZR4X1V03 zg`jq*`j`{)AinSkIa@2LufEuwj$t6ck2Q>_`IFk_MsJB3mvi7!1j`{%9fVGcYa@00Zeb#omd)FKmmGBwl)~C&mmKv6s2gj4x#TDd*Fn#+7Uq(p z3WKs)iw?TzsEQ!ddsSR=R3hkQ4s76(qgsKoSZn8!qq>3U`=ChG(&+dtGwW5l{weCtPyWCD16= zuDIl=zd$3+8vjEGx1%ENDm8)w3%lf~vY>R*kW927;bv?fJX7Rws1SIEX`7%yh|7uYm@$_PR@sS^%QU(nz(~B@AfLK-NBT3A;aN z0BiX!IqDlwU)GMe_DQxrBiPdXBZfT*83Hg>-M$B3yD*DNrxg%DUvJ>Y$#i z)pp5IO+h_ad(0(Abq00!Vf`ajS4QfEexR2)aG*<$8Vef7+60%duY<<3Hq#|Xy$yPS zwPh|jY7=M-Yg=8yBnX2Z3Rtd?K7g#ur%L=M#023wpxnI+(^~HC3Kf)GetWEqVGc@)mfLY?b>=;ZI`gm zg5Kr0ESDU$Pqc%g#kRB6avL2QsmdEf6HmE>N<{0~-c~C(VIP;!4auHX-6agT4z_xa z<04$b0jHy<#kl0C#-cR`1*wRmay!{-B^RFS5)yXyv1?HUDW(Tj&y|QPK8_w*DDgt>>~EUBdC;Sx;-=lB1GE z>r50x5l1C;x7Ej7xQ$DWx*^(4(U$hG)h8Uc!X=D_o}O0SB}c6QZQ!`oE@8X(^0ekI zIcjw;)W4Af*Fq$6RCI4oE9sJ>QbC_`T)Im*%!+nOwC2y*Y7@sLxrD}uwpz6KKDG)` zTu@ba5d*{%RiSw$dz@V)h*OLhoDh`1n zo^T1HzrPn4;S#hITW#aQ5iX%;L`xTKJ!m_}ZFI>|B?ov~tV>wo0d`RB;J{3XL>TD< z4Pm6atu@^cE7z+{&k75luWm3Ik;SX1L_2d7`~#D2O#)FXBcC%uKb_K~9+E z5)OgGJguusI8yj+zY!wDO^gzYra z(=uJcTrtX4-*VgymmKwUhNpFR$x-Q|Wr%hcbcoBU;An%6+A_uycev!J^P*i6t>joQ zF4iSSH509+XhTIy6K%F=Z@PpN$~)t{gb!T8Mac`ER?Q_xbr9_d(Kd>O3lPx`iB^81t&VYA zoJ%MxTJ}WLPi_n(h{rkbic60AZjz^c?-H)-vOLZ261K5u8KQN5$yO&gUssnf-HNu> z(}L@zMXJ3nIVyMv zxSz#iE;*{&RIi0KU2;?((NaWf@T#r8=QU~UlA~sdmMhv_&<`A^UNeMqd_#2p_n3&? zT*4k9+FH;#F1+3)N5xI^w0M^=xIpJQZmmm>8b96BCc1>HB+*_61*wRmmWsGS0+-IP z)dfzt!X-zQdEL`0xP%!~w8o+>2K~rom%4;={2Wh9bP0nx2)t+lUBa0U=m>9;n=WCJ z0-a**flHVdW@0a4E!rhVRREn}t+GpwsslRCT0NH>)dF-38qWV7chON#fR1wDQ!Y8` z1jsb-v`daEG|SV9xP;3t(I$wtM6~6itrKkn5q42@|4tG2NZ_}k9Tn}IXctAhE?R+T z4@C3LHcfR@luMDSglLs!qkgk?RYj~Tf%Qd87Ok^ro9Ec-5^uWgE;(vguBVM~$x$zg z_L69GJuRpfh*M}Q`jZ65tO|%Q5HPBvMW0&w{lW4)=B90evqG+#)_PS{EMO!G^O3^+L zZIftQMf*au{f6lL?}Uh_CGcm_eiiL6(f$!Fu)te8$0dBtB3fC|s)<%pw1%Ld>B6QW zwv)h)qIDOow`k9cHe9svqD>U-HPK!dZN6v=gCedJ@dME|iMCa=FGSlf+6mE4i}tf< zzl!#kX#co`^S{7b(uFRe3q>m{S~byXiq=rHrlPeIt)pn&Me8lv^F%cNMXKQ!QsUZJ}uEMcXJ^<|12N;X1Nh!iB47rxu}pa^rkn#2XUWXR)n*;le2{;Ycak z3enWtw)&Oh{4P1FooF3J%Mfjxrv=q1;8iYs)+Jo4zvF4mUBXv1plcjA*Cl+xu*B0E zxP=Mp`-}ST%mmD=qv^PY1TeM~GqJB!_s1HT_SOWKnc2KmW<+i%P6}NH8Q9DH2CEC}b z9Tx41XxBswrmnEn@0<|#mN4PuQM8Ssof7S=Xo>IH>JKj4z$Hg%(H4o8FWO$wl2+QP z0P_#JwT(ga!akQG)j`qDi*`x0lvTF6$rTTF3E$m{wpFw*MB6Xg3DHi2f|LfQTq53- zz|_^Y`qT7`OO6VOwoSA{q8$^h`un!}i_6w_2|q%KHc7PHponutyaKw#g|E4U)9MdA zE!QP{rLx9Ww>d7>C0sLzHd(Y;qP-#7YL{^Sw^qd1wYK`36P9<$QE8x`_?&Q*OE|3t zU1e>eOOBcb`jxdDmoOGUzp%E*C7jTJuCTU-h<;E(w*oJ-xXmR;eF^%RwF53Ws@#WO z11q_NFBC=VEZPgAy(rqdqOBC|+Yf_Y!lNSIl|cH|l={O_HC&2RbwukfT5r*Ii}r%7Kb^OFuclkGfCtY&XXwW^@UT_H$7wA4~ zi<$WRZ{9{*Jz()ImmGBxRKVI9mmF09y2;utmvEB#DfSZ9io1kCxXH%d$uwh5b_w4j zgK*0Yw1qA?>XS{F|6*9&1d+&5he4%SJMNOBeg)yDQWXBpB^>|j(TXjt#-3k!zKI> z4f3(p%O&jZpgpWja>-FEL4MXgFhu8nUjg^B__a%p`WqC++C7&r`gh=qN7gF2|Dwm=Pelbi{fE==aQqEgT7`h$t6dP1Qlm(j7yGs6ZB1x#rcFFN9_TXVC_qn9CaL2lC|$# z!Z%-_7}jpP#+E~OSmurm1XU; zOZXyrkFAFCwtLzoe0c>L&f0jF@J%-;jkUL2a@0mpInKA)B`01T1D0p;luH~C@YM^}}c}C~>h&}p^v4NVQGYNq*HTAssKy2vdQ-KLSo$_f| zL@4dq!1^Nk>JWdir@Qw^o_sA9xBn*R&^^E^x&Ged8B^mGD^ug?nUdt3q}1dYZQ@gt zr)0&asu#k3$;Svz&Y@{dCC{1}zYq2bEqvJ~zK_y7lfp`OOU^NcbCOCnX%n9@wq*`J zlhg8JlXGUeSv$lf&zc*bf*C70=bz+R4XiCR?G>y*$-xkFI>-0%?aSGPn)_T`iQ;{9 zjUj=0cn;;cA%VDl^yJ8wQ{xxI;9#oAzw5k>rZ2@(8kPd!1>`XXY2w7U>Z*e>nGf>O>`b(F1p?8JnNd?_ znsk{+7tNiIcGG&S=Tv_O(UJC+!d@$9#?uo(UL3C<@@AoHrXz%qtH`Q<1eK66~|o)p~(M7NH)2s|E4nZoElG? zl1t+TBIC;bKd!l+%alS@^sOQ1F~LyILgD@=7mZ?iWQ9XaVuYOkKZPz)ELuz+Dnn1$ z{CAlfUK!H{WVz{tRJ2&2wyJC>a0AB6al~ck>6xz(GX2!49 zDZ>M$0-QdAYm6!UA2mk1HKyom!vf_C;i&;LX1Jz8DZDs0zN_Aq8Yrpn4iCf>qUVli zSoP$@`laE4>V=ZrVz>3-D6}{Fzp_*^-nsFfob;dVO*QSc7x;BzS^#(M4-XWtT^)6x z53z%ByKDbPgA?5bC%SduHhSu!xc{s&J}UD+tH^Y#nC{n4qy@_9{Ko@feyqWCE~+0+ z3q;@lv!T?6Al{h8f9dtlg9pD@_(;a?mO5o~XZ_BIK-DftdmcfY z2-DgrFimUulpWK7H+A9bpns2wE7Xphzms!rY@t)uf)$*SHscjNJv~sl5M6;M=X8rt z)pbV%D&S`SL+OEs%BN!9w7S9d_-2e zVH!f}&hh_|3{jknOCuQ-Gb5PRR4*D4sP+(6X*GpmZcolRL-0gbs;)(7uxGJCu$v9=tB#0@@d8L zkrrEyyfaEp{-wbKZ1*Dgp!J~5+y=eZwGA!N2Bv7*a?_>LuyE?%8#uZn0{&wQvuoDo zxd^A@ShVq?4E3km>od)9zy3k9Jb5pj81(PAN3Z+QS6)vV8F*AL{V=R>HJl0LXYd%N zEt=$(=G_3N3gpY#cSY%4ABL3)EgBVQShN1>2&Me=Fq>+{gr~(^>I`bm+Or@${)V_r z(zJhJ;LE2>cxMC{S_CrTD?lckPD+hN&y5+49^|TwCBG^j$q%i85KoSp zJcEtr+29%v`i#S01L4^=Xn%lArDdZ)q3lHg?Taxbi(sBNRGCQEUJ^*K8tQIK0?lA@ zmjrgy-^}U$tnURDZ{Sf?p_L$d>d&vvKT2)OUK*(Pl*xOckym?zCb*rIlMNL*3Nmrw zO})51pm#a$G{|(w??l>O7N{3At5@tXuV6WlS-s}1yb6X1T>`~(vbff`;gKl?WE%1V z$ao8c!rORV*cFt*B^H8y;Y}I}ihCc(q`4(pL|acA3NqEL7p+G-+{((`^eV`#_hOJ~ z{(hkwAd|UOdylSzs0l&8ic9tiHv*Z$LxgfbrttSdujAP})BbHBQ}GdyDXXxH8L9>{ zWiy2y>g1K}1p4fe2-?gmfUh%sBvh(1c2w@9szS{`cS1kD8#w9!z$W8ilHXc&Y z$JPYSSfA}rk?BGju^A7_Rf_E^7`c>m)=2m&1Y7Xk; zqwA0)Py?nmpvFweAiBTbr#ge0Gj#>ga{xZo4MdL^_*74j$x0MSzuh*%7yhbnw(DX1;e3Xp04Y7jlI;ZtitEt%GX9t-7u6iBlxnf<8xC*Iz( zRcJqGjV}9fpjUmfI~5IiL777DgZ|)Q_zlP;D~bz_%6jF;nCFb}=~mBGcbgYJ0c6q! zL1uvN+wRR;7lgjr;l&*WnYfXkd0O;Nerg*dAQto_5230c)1=g*KvPKusFfc4NnlA0 zb1azu1wXfqk_8}>H}Olaoozs^bnOi|@2adjZV0rEG!sSsS2Tq$g#Mfvcz^6y$|S6D z5VHgi#%DoBi#UWswnYOpU1%oA#Dzrr9Mq5FiXEl_UVLMq-Vk>VJFeXM`!$f!){AyX zw7-M~;dyuy_ma?Y&>*hhwrIsqB2KT~i0QzDmpJVeY$()AC`)LG&~Blhgd)y(S!xMA zDKuKB^jSPez)jky(?1RD!aVTsChX{@Z%$uBAL7zG=rqV2`HJ84 zC=RrS$3Y{|FFZ7Z;++HP#NIWcZ4){m-rJy$Ij&OhPcL;{kSV+gWQNQWx4gzYClr3$ z(_(}&{`SVi6p$%<8D#QZ16}5(-Urp>ic9@tsF+_p3~b5b<0R_&A?cP6@rnR5HEsd5 z<)F_%S2){O;yokY^Wu%iYXwZ%+8}eBZznVWWV-nU&?wG47nI3#FbFi~6{kh~9c1=+ zyynI2`!XO?Ndm|uY${r^XuUwAcsL9f`dH$&fJ_5-gJ`Sb6yg{##I3pLihlJgXd7#H zK|PqPFpFOGfW5E?$fT(V`iZrMpr<&lnP}}n$*esGGL4>umn)3s27U)>8fv;F(9*)7 zowzm7%pIeX@EV1Q9C92qfvI8%%bg5X#8|2#CtVBb#xwB-5IqUyQ{~He-gr=d)@p%L zm~NN#ysDhVPi6U3I4G69Q*?uEftHcB6t+8}x`$)^%QQ<=tr=y@rh$^;Ey$^y|7Q8>s4fdd(* zf`%|n2hl@RILd=wW!ej(C%SxUA7}#8K@dGQ=2M42^fZ`H9RtyGZ9a7hM9+o!)LBp_ z(|OQvrc0n~5Ptl;0;DI>eCisAo>%j!8z6f6%%^UG=oeC-x(!NWx(j-dN#U&)^vIk~ z`9Z^&B0%&Ao=+79WidsAUSk>sGFyKl=%&LPs46Zkx9LNl1-jrR2yr_De+SJGGHHlK zuT#M$Y!AA~$Ik(v<*a3ZVtL%X06Nd!EYT)|F0l3*=oh9O5Zxu>SGgd%=fJP#fxctf z2#RCc9|Y2G8-Dc*=nobPKy+iSU;PcDUo`yc$>%M;d)BXdfj00yGX!Lsl?K|#+P4yS zNxXl6-eYg2plv_T*fw^_7bL>q<4+{C>JGI4kpCu>jmRhcoKxCCSZD~|QF!62h)(bj^# zXwu|^5_oKX4*HZ+ACW&-*6Gc=v$zviFjB%gpq=!$F^8 zCiNoF_w3y%-b>;wr*XVvZ!gdtowzUXrS*fp zy)RIq#t%Hx-&$g+1sqXvsl`t|_|;&L(Q-)Bk9`%GFvNtHe-|ePd{C_pG82Al&{a;> z8HBBeMn3~eMqA4zg(g*=m%YPKhC&*(2e)wOH)(hiWL^$ zBk5P0gj&Am)i@Dka?S#ooJCh!3gaEEr~@)tUIbm$TlWW=H84WU)s}L&G3`KfJCa{z zfar#!Ftu8=bxgX(fk4wB`TQ#R1B-7}@~Z(LqYV?9C$s`&I_Pr{-Q46?KZy5dp=&OM zsXs-FSmTw56*{VaJP;_|z%=#GwO*s+KJ+L-Xc>rpdGV_dYr4+CKw>G=)Pd`~My~+f z3)f>02C4Z0 zek^nnL@SI#O?1dx&qg4#o`Z!(3cVuqq0knP>D=R@**KXqSqclq33U?c0s14zZ5=6M zw$N;$1ww0uP6}NFnI_y9t;iNn>kBfC84a4twT%avUY)-MhZ?uA1h(7ijfKe|Q+Te> zQcy0Zc@JdL>;#!Cze`*hoTZqu4}tJX6pWslAXB1+=MAb3z&F|bq_|T-CgDOaQ0*4_ z29(Doj)F`=d%IU%QP4d0mH-)VHSs_z|kRY!4m2WfUc$8H|;;++jzz}`IZ z9ux0*&|B>NNxYSDZuL9wO?5yE+4~5{H0z}umQFq#hzYtKg)^;198wcxLRy22w+m=7 zd%KBunRvejnVt17@^Y1Um7jW>ON4_=zEYs8?5zTNhrJ1Ya_jSl@taGsj|URmuYU_)wp2JzD^oybTGJE|aeHusPJ38}ppjmqp@emFzX`JIxkXeZlAmcp*8pPgO z#ccH`Q)7^c%K+imBqVdMWGa;K3Qho-v-ekp@`RQNodwZtq<$4w(kqcH)Lm$>&={c) zL8k2QK@rQucxe)Z9u;aW^fJg4ULmwm=!npdLKRDSncE3Hz!VJM4SOKg-?j)FXI)C5vnGH*U`HhEE8nP zelA*pkiV=K7b8@yth8__L{oSc=#EbQ9^)TZhu`DZJo6PnOeGt?1a100Fwgx7Qsd;K zmG1rn_CqsbK8W|KsQ!>gj|lw$x}#VAfT6xwpZa&HiZ#60{-B?Dt{5s>CXudwF3_yL zsbofNyqSW7iq-K7HhCDk8;|kDpkdsnAA)-8`RB0j4bz{U;~nhAxxnA}n)%oBfhKk( zv!k4Ag(sIeUFX(#vXkjsP%GW)qI@x5r>(a)HUdrInkIr~Fii!$&XfzvW|{}08%X?W ziFntDw@5p<*qa41?a9 zyv84c-s0i18#JG(`V-zPKJp3N>^zDC>0LWDnTkDWZt%x-4am<$9tS0GSHB3V&a?wm zgURZGvP>U=YH^nCU2Rp5>7Y=nr#!6#$fC?al@1)pfnS2^GaY%_Rx_DSf@U)ndd6Gh zB#>F-(WLPjzX=-5ad$yOnD%zVlgI2m0{Ry>@E4(u&*HrXc+)fnNTKdt>V_bbItNsX ziyQ;xal(gs*lHY8Q;?Z7o)*dg{mRva_q5d{j*9{{=N>E%I>+ATplPgi?1_gx%!G(K)-eejEG6%LLAk)CXy>0iauLB@6byR)MqdI*&IxbYUucy@#3N{yf zLg-ykA+Gpi(Y_HnCzRFCo0T32jqmSie+v~#@tWTrw4O8f1x=ub-TZ0-a3goft041p z=nm1o18FYOVt}n`Go^tZX4(sSgy|Zn0aHl~C(NA4`~;{jlLnc6XdlRonV&(yRCd#w zbHbTAflMI1FJ}X5*Fa;qfj*2e^DSeHP-~1fvq{oGCUp$bnk=t^j5b#&pNKOTQ2nNG zv0>)zLVnc&WZauU=9qN{Wa46nn>P;m)liU0y$FP7Vz9;!NMmZ2=9TCN+QHhNpn1ld zj@bZ&`L7eu6d4UNmAnb6&uhF?=p&)+AT!`*4gi^i8$f4xf4K+3F%JpDGR!kH_~jIo z$d$y1Rzau==r^vTW(MZJ$sE{T+?_%AJs%0XfsA({D3{|_gUl|w3G^~+dq7`v6AF#? zdS)%?8>5Z!25SoF2iCp>@vsf5Yd|w@OOKUt3#!YVnE^6umklz#unlB-;W&sM-tnv7 zLG;uO)*UkxJ>=t8WkK{<5N=-t)#QAALCtvO=7E}H|AYIn7rd@M3#!L~PmT8|9YoLH z_|=P``t02dGL88eWE#^1yR)Cy?kP|h(*Tg!4<>?M;4ITX;p}~X0_ML$jPy1jGocpA z^iFWffLd@{?|@2k+=LhL@C(y#AnccD);&-u)@n}ljskl@kFxg|$TT%-lGoHEkmAM! zI|AEqUcI{pf5P?7f?&q>b>NxXJ=4|z5PI&m|g`n;p*lK ztujRO-)5lMog7@CC2_*?AWZe}z6YAe^b2S+Qw)Z!DKQH48EaXfEljgO^O-crG-eqH zXJ^RwG3XA{1(5s0=53(GEqowUG27GHgFfUUQ$XJ^9R?j_It6;18(n0wd1aPgl?Ih% zZ#?L8rUoEW@d%I^Gj9ihW=nhkG8-cP6+AW032T7Nal08Pg457Dh0MBt4#Lilb=o}z z&&~1(==m!8gI8pv&}qkhw!(CWO6q~kSRMm1 zyHl0dy}e|K&=!!1%gVudGdE_QP^p>TKGYr57QKzs&jU@@EC;P)?E+{g(_f&EndllI zpJ@QdbRoTErWNir;d;d2snh%3GTYRmLH$n;>ZH_&|6Qb1-$n?x4P-)CR=#XsSA}%sb z+;4zP$IS;FWA8^GlkiiapM-t|_2sy*H}NDQ(_^4E+?V+OGgNohHi6o*Rz45)cVqF@ zJX`f(x&SK0bRD#WDSWPZi=1B-1084WA&^=3&LFc+&j<|$_2;;epruT&fetg}f=)06 zmjEj=?gTAkIte<$bOCgd$-*3D23$u_McyP&f#?lgKJ^929F7-b<}ssxE68k;y`cRZ zw-0oH=^zMi;|ikiAt1f13wMiv=v7|0TLeTe`tqpa+?lID z3t7A=+TWlbIbqmhFU|p7V6Bv^g{e64Rs${JEOlHhLN%7SRub32CCq)G8E zBNV;d#N1IbOlTB{ZU6~W6WlnzdI^MIlTdbstA(jN@xBEzjiFbh&}v4gH4^tJk@6j3`hlSnRp=&}ngl-Dm7P{*Z<{wOS^vW{a zvIL@+lHrDKkm=SJK&Jigg3ORAi%DTIuTxFX54=tdL1wq>A>N_l9V^}iptrf~GWPQP z_o2AI0=>iTi|nS3yDr|6m`9eew*tsiTmxh(ZVxgY`~t`{bsQ!X^JV)>AX8!n$dvea z8RkFJnyupgLfix1^$Jf0nZoq;7*lvN$TVh`c)u3!FQ7lUsrNyqS@<7=`0ZqVl?Up` zb3pKYpqT>-t*{lItiT$V0h!sL2FUEGeL+8QR}Tht=D6XYrCiA?Ak(ZJpeNY72ZWmu zkngY%y)x!W_WocrI{*6#*oDQbAd}Gdo|mv3s4IIbgN(O{c%K42#oiv`9VOmrpr_e8 zOT6!icLyl=47>M;`;52?K;78;w|I-K^qN%z^elVpf=sj8i?=_hJ9~$S_a*Vp1NC6< zqM*1pi2DGjC%X@e_ZRV6t8iw_-f)nqxDv>8euG_D6iT68DU-q68?=A60t+weubHwJ10hwmi0hwmC1@&idC-Dv znk??O$j#cvpaD$ut{s#5Tk&274P@`X#2fa$SGEFZ5PPeFOxb4QedhfjE|}QeOWdQy zJp+V?bkM*#;$0=)ouKF0`?+|(7w>J5**$$9ct?Q}ATzmF1n~qHRB6CBc{dpcGJAP8 z$gKOPpewxFZ3ofY82svUp|3$@S+mxdcPsc+b)k1b*SPF)&~&cjCy=S5&RUwJc>a45 z_$s@90KLZa7syN-jXuN$7;DQw<_3XZgu*^DFL1!aRiK+3*BNxq%oQNBB1=KI#{$jY zCG_J*nE#9zzs^>;*8=WNAlyv>$^w~b^aIdMPUv6nH7gN>+Yb=e97G3KziI`-eFvZ% zkSSa1WA6my5ztS3d|3%P%lU$PfVUX&AENQQlW+$=$hez<{$y`Ykcrb0_m#w*khlVg zdt`%`Z!pN@8x1n~W`mHA=D)8c@PPyt-e}$y05c@eFPNAWt)oD3S=&&>0oH$XihhjB9sa; znKNjgG|LoTn+Q}X%T;vz+XY8 zI@;Szb^m}&bvCxA(HxM`ii=iOv?`+21euEKfy~M^A+LEJ<8g6!Ad$QEDUfMGFVO~o zOm)LV8z+<{-l?SN!@lr&^gsHh`oq`g4#mQYY8@UPrymas&!qpIcw1O_o>fS93535# zi+=^M7@=PeH;eTmuozC>I{J?YQzE?(wBqxf@MV;Cxr3!*x>2NAJROO}XgKTWMTNu1 zQADvK;dy#SI4W)viHeUDF>-QIM26|JMNts{eR41gi+(-1I7%i(BLv!}XlOnPsiP+p zGupq3L9;22iiP4!guh-iw7YWnOsh&6ypW-+wOp0RD4v3?MAsC`DrBib7?ErThO(=M zzhVXdv1!-9w|~meL802%X^fU6L{F(0ZK=?Dp+iD(elIRbXsQsspTcChgwf{WO`!<1 z)wt;qcSE&>nhSLnN)gHsnkuwZXrs_Em*{B-5$_5`2fT{og&GJY3-uIA7s?WvDYR5* zqtIR=oE@P1PlEOL0o)WquME5G1 zxD|yw$`?8&ME|#|iQ9(>)X-U>>V-XRu17(2!$Z}$i0AGmlq!@Zlq+;d=$cT2qF$B^ zp{YU(gw`@){e3E5#JfV#QC^zbLP&w6SkQg;mKTZx{mI^V&;#~X7oys4u{RNf z3h=i99qSA>2K>!pbCAW9B-93UhqYvo&D2?_E9f3;bb;k#qAMOlbO~Z(4SgyFd!9d+7ijU~iUCHYkF3HIiL3bS{w&^}NMdk@m@RYll+ z2%@25pwjF<1uDwkvqI-VW!QTO6vf^vLf1g$*n0yM&EA_rw?P%ydlyuUyr>_?YDWIC zs}j2-pcUuBg@vL)mDyVoRD!*+LghhK*&7Ec$=-OO>Y#_%TN@O^-b5yz5gGs!*xeXZ zirvkHl0Y@s+Xhscy~#qILABW16%@9X$$$t(Xe2EW6W% zGC=j%OXoP{*qbRtXFK)Tn++<@UOMkFG#&IPduM_wus2s|E~pWEgA0Ha*}Yh3DX0m% zSAZ(9ceT)3P&4+f2gR{>qtIqh3-)dYRc3F#&|XkW_U;2!G2d4oG>Bd}1bUp^$3RuN z@F}6Qpw{d?4~l2+C7~;zw(PwIdWgL@gl>Y`v-dWr8hh`8f(8}lst)Y-gA&*sAygRD ziM`RF>g+8k6br&5V`zSPP!0CR3B`lDu(vv>CVOiOCDIweQ|xX4s>SZcLd`+Xur~=r zr)WO@5yen4wC?Qf464K4u0q{FJ=xn6^e}t-2&I5}!`s8hxB1j%cPd0f>7YJbI0IB0 z9p&RYbqvw@V?Xw0fgWaWw$M~iiaz{!cm->azD{O{F477nRo5buraO=sp@+h>$lyGO zQ07t2b4=(IXe@irf*P{-ywD}kc)g1`fAC1Dd8krc5*Rw`6AOf03E3Biq2_>KbJ7bbFW<^Egi~%5>&D zbA=XwGX5`BlvGF_%E%nIEIro}4Ga|30%ah{t( zw?Xf-_b%vJ_Tu8!B|65f)o)Oyb$T6{PxRMhHtMTnHt9m`V7BN4m=@bP54|p}FX!nd zM1yK4dufF9V{eMkV9;(onKFH@myp?~caYhy&yYE&|0eT|F5Mor9O69d@%cRG*(kIb zbcDUsl2rEQ3+)9R*Q1fbI;rQ7Ijuh=^SwSm=A8b8%mp2uj9M;n9(rw92Ina$M3)>t zv$s5GG<)NO;z3vR0Hm;f)j=}X^xI^9)7xNzH@IX^L_LB2_NhKXbcyl@dk2G_WN)fa zI*2ZSe2Ok$y0CYgP$uXWd$T}Y*_$my7dn5lcRDqG8oOr-<$~_$Q6138`+61`rPq+L z^;cy4`Z7$50Kzcc;`0?=XSzT#bP7b5WcZB+pRaTJ^Fo(Ej()r&G8NJN$wcXw$Q09y z$du4q$i(QAFfB@Ro!)fXeH7osg-L?n0)D9zo_I zokOO&exFP&{UuC`hdEC!%Ix7hbA=Xw=xuj6!2;2-2XDy{S^;XHD|bewM!F@Lrn)bg z=6VvDmijF+t#k;cMH|j@17!|yo|{6qLG9T~7jXyKt8fKn$PenMi#>r%Pw2X2y6Pv$ zJfqXdbk{S;^wO(fTF?mcsjet^(=a=A6PVyGP7sd^>m1(UsteTy?O|^sXeN6b2sH+M&feyrS?o;`Y6JR` zy~&{2?CmVn74#K*y9I%B*xgg859k29Q$Tb~!KHxr?LRI(lTJ-hQkbj0?ly+Zpy=h%A?^cH&$2^|Cd$lg<+h3q{mbRI-A zr%zo1En@E#p=*V35%M#;Z$P9I1iY3*=r)MHwDPIDptsqJw|Kkc2mQ+42+%w1Ei4ob zy2jp;pe5{$6)F$2VBbTcp>_B=XWk#8?=nQi9!uP1?+7MdY8S;g_1yjviJWh z>s;WXsNOfe3+Sw7ih@dsii(P5x?FcrOiC+EQv69qYPuSloNOX(hh+9cg$hN^&SE!|3} z0_j#6>O9na4YBuK_^_<<(z;v6P@2FW_*XhZMPaKbRuF{mNZrCX&>>L(0CRY4_+N1jEcVPZ5*lEgfk z3>P0_;vOkm1~jo)zLv`!Xs95lQPK^D+9qAP1*@y>P%i1(p-QA1VJIimSn0+;CtcQ|d&*;Eooj}=0kuH7 zwNPWFYr$P(UHL#|h~^_v=?&47CJV(=G+81h(qx%fM3YRh29rMT$~p;X^P;Rn_p5c4 z1Vxvdxb%m5NxCjWB}2V0tk0p+2ckVqJ`{auvQmtoNv?Q>CZ7m_Ngui##YGv~Op|pA z4OI-aM!F?X)1_N#s9jKN#TBZwUNjqp$>-uBnrspSX|hGUNRuzbo0#+|l68D>3Io%?;#T?kbw-KB=gggPMIEU0g!OLzEnl>>E1y1By7g}wBs zc+iDeIxYs#q(Z!aNuN_PQI0IW$cy!T$WX_iewS_q)H3N-8mbEFjQEBsofoHQ@~5~> zlWNgs3?`RFG)-#6Gnlxq$~t!3`hQ>6i7=EC>R;)`Kndy62MxOF4|P+zaZumNC5$&z z0u;T)z_}9YJLx7FY9!Ph>AC_ScS$?hQ1r=#RopWcb4PDU@F5_;_cBBuW#}p$N|SB| z)Nbi6G}Kb4M$)B^JoZR8%TU=+^w|~OY(cG(OO|UW`e>w?bo1Si_>vfc8w^zd)m++z zPD&sy*WBDm#-Is_FU-D6Prnh9NPR@6ycszZfK zy9x^5BthfzhN^~&l5PzYzBB^&nxSq$MN799szACH-+JW(6(e066uuRLw)D9VJud+1 z3)xrN{!sXm2Uvii0-+v}ZV(i{#Q`_iP$5wLrQ02hjb?yDg}z(&f;n> z6>_Jv(+o8i>KWNM9qN1OW*BNA)O6`Ch1xCMOhaWs&6I97RGHi{a}1RWl_}jksGsR8 z>fV-oDM@XBdQaK~Q2S)*LPHfpy)WGosQuC{HPkMs52RZLMK>|=9auw^L*+>K5Yz$b z9`nW3mM$v*S4q1P>Y%i%40RsrW9e2y(OpseYM-I5L9LeV4XDG?tu>Sd9|wLaUHY)_ zSLxae|fbkZzEnf}u7@Hw21q%;HNohO$F#lx_snN$ENb z6$7^R*}8BjZkH_vUze5l>h-T-w@+69Ixg!)0c#ZVQp;}S!aLhY6AE~t~zEi=?!sQuC{ zhx$#rhw2oLf5#vXNV@{6T6SD%s4A#mqfx_M>WsAGp#G6=yrB}H&Pg{B>R;(58EPcd1?jq=u1h!BP!pgo zN_P^}4RZTiQtG8873#9I)1Yq3#&Zpo4pk#v{NEFIufmPP=cc637v1-gw!}JwT66?k zgcCn;>b?_R(~q>!>%Z_i7@EH0MX&$B>n_ksFs0WtQs^6RiFN*A@y|rfVGS;NXp-h= zfQzPa)3m{&Y?_wPf{t!fiq_L)+=*y>k9c6Z_P+J3_-4A+-g>6!^mNVJYCTtUW`?F& zTNcYLfE(2oUExL;ej>p-Q)?@#Q#F6DxP~HkCcYGvI8*btwiS=e(mII6q&w-llyo;; z|4X{3uDj2I9!WaVI#x&7geK^EAL%K&_IVk4wyt}TPSnYlp?$Wa{o$QcHZ^ zs_T*MN43?DB>&PU;PEa0EBX7UA4c4qy5a2nymye-bygOwZFy|Ko8Rthv;XDc zTl&9P(renwJ6FU_jp=^mhqI#!w>1tt5Z14COv$ySM}Kpr-OAdyzsUnBM+Xk6`eoQB zm%6O(Ipghr=Pz3{Z|>s9?th^E^{u>LbE8*Z?0vDY>9iqB!d8_yB5!IL|1LS#_UqC< z)4Ym%?rHt9SiLH;Z>PZp4Z6?Hsd}dAoNf(gdX4g*HDSPs1$}FZ(&lKsR^JD&3`%?Y zWmn&OK6>SDvt8wDMD|=QU&PJRj@jD%H?7$RKO{Ot$g5gv17CbXIz@c^s@A^A75V}u z{+hpWq_Sx5t6GWG9TDY}cYf$t9X#}jsAz{H!YOw≧MB2|VKrkJ8`ys!T)_-C{?> z`Z~_YD1D$ABswfyzmPBycZ5@Z@?t`falEtWu&AZj)s4~)yFJRD#Yt3zGuMMSA`3i- zGm`F;n(9PFN5aFDQK2;+p{NLYBW%t%oEBVoD-s$S6;{RSfQ0+L=}ncX`v|)|ofC({LGPbT8HXb}*Mm6i?gCE~UhYXEe9U{ABh=xHq&F(&(oTm3 z*MN*f2YHa_P^TvePjGvpNS7yZq3p|OVl-`n<<{CR%xko58 zw9=D=*Ladh3obs)bwV8ho+R4tLBc{4n&aUabF;8;muDz4&67CjYLK;x&h;SSp+(8B zYx}KkM_6c7G@bNSJ}lH>FZU#&cASe@CM?sFgx8o!R8+XbvdgnhM1sGmPLw+;+-V8+ zXcleB;3UFssq!G9mj0|zR7991&x3?pHh7Q-OCcxjNV}zkqsS=BE;Dh2h1tW(JxNq- zOVe^t#*ynmLPP0)@-?lqFo)CSLEO&hQV$eu4{FVuMTe$y5^lFwdXmuC0M;tp9+m4s z!ouml2R6-6c$hoF<$=P(Nk>Rm8Nt!#0ipb?8!Wr2sgsrs5 z@Mw$EAU#sYrKJW>oGD?di_S07GCR3TAH(maSb}6v_(E7e zym@1!FGwXLV?b&cc?Tr(adVv=)anT{xdoDoTjHv(hx%JArG5-O2V@^88gJB++_3}A z;XaSyGl!vOvWUnqGx-7}{aG`)Mj3n`N_E=gaePw*cZwBx6vX#=Gg%Ij>1L<`sFaZw zPheJ)&COy#av2!~Qpw0-5Z`g;R$HkKBUh-^1l&DW^B59mvAA$wT9KDPDj6vR37Tlm zR8lK^-AlEy4ZycfCX25(X-WRB$!4d9oT;Kqf%cL+cZTlZT><{u48$%m%bXnsQiHq5 zs%{o#aPv!%tsn{W&Ezyl`cgA#6mPMVGSUsi*Nxk^s?b27AV%hZBruXo&E7G$+DEMz zxdviqB=9MVC6L~u7)&9u)TbcXxBMD(@T0VIKu$3e>L zh__tRc_5Y*xQV3-9RW&NVJ_W!FqZ5?bLkWi-<4+aDM)4=(M#8YxN^;P5)x2nwVC9B zxYpr0FE!Uc0~G)%at5T5kvmjqy*bl+2v%bq(YqfBlF7(IkW$uaEr{<1)WJvAbt~-_ zq0h~w+x!nZ5hGC`rHmwk1mSkCn(0)K%sQgaP!@$^F7}fx}SSVyD zO5<*@YW6%x3L~39^uPMWC>>gKd8_t`kJquG;@x5`!t2aXQC6%S@wzrtDLFT*7h)CUF ztD7NNS|4n6B#cVaZy6Y~7(uO;$#GPdi6r8cW18tGB7SBfE5DH=j}Y}sPxE-h915j5 zYFyWuKG#%fu9<{|g6PB8Jk$Cxt|M}t(SX!94A!e$RE$SDLez!iJn93oj>sj`hZZYM zL#w`(%;+P_Tt^>SbwqANePo&I(8$6Oq7H>oik|8uBDcLP-FvgCGdYX>@iBtO zXNl^6TSd$7wf63e7Pt?Ox70&}+8nO8a7<3rbr($ZgGDun4XX!( zGSMKofHY+i>PTH3yfd*P33rGmd><5WqnTvI;RGoW=={Fhm zIz46uPMwrGb`l!lD;N0ZZKbcO(BIvfr2S&hZY|K=15Iets3K2-&6Sm+QCExqdO76?7> zqn51wa9lC4Odk-N)tng)Qp_^1fcUeF04b#rqB{EuD2RoQgOst%H4u7`LCw&;BQT^{ zCIrOEGLM4LI#Yd(1?f+}c&ZA`2dZSDk3bSwp<%wDMJEFUV4sxdh_NGOh939oZmmHAk^P0W35F zB##yP6ofXA>g)%Q0+y);!S#wM6M&xrp>K(+zWRaKDMQ;|KLopg%2;SF2yI2x*~cLC z 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 diff --git a/src_v2/editor/lumenarium_editor.cpp b/src_v2/editor/lumenarium_editor.cpp index 1aba45d..833730d 100644 --- a/src_v2/editor/lumenarium_editor.cpp +++ b/src_v2/editor/lumenarium_editor.cpp @@ -207,6 +207,47 @@ ed_init(App_State* state) ed_sculpture_visualizer_init(state); } +internal u8* +ed_leds_to_texture(App_State* state, Allocator_Scratch* scratch, u32 pixels_dim) +{ + u32 at = 0; + u32* pixels = allocator_alloc_array(scratch->a, u32, pixels_dim * pixels_dim); + for (u32 a = 0; a < state->assemblies.len; a++) + { + Assembly_Pixel_Buffer leds = state->assemblies.pixel_buffers[a]; + for (u32 p = 0; p < leds.len; p++) + { + Assembly_Pixel led = leds.pixels[p]; + u32 index = at++; + pixels[index] = ( + led.r << 0 | + led.g << 8 | + led.b << 16 | + 0xFF << 24 + ); + } + } +#if 0 + for (u32 y = 0; y < pixels_dim; y++) + { + for (u32 x = 0; x < pixels_dim; x++) + { + r32 rp = (r32)y / (r32)pixels_dim; + r32 bp = (r32)x / (r32)pixels_dim; + u8 rb = (u8)(255 * rp); + u8 bb = (u8)(255 * bp); + u32 c = ( + 0xFF0000FF | + (rb << 8) | + (bb << 16) + ); + pixels[(y * pixels_dim) + x] = c; + } + } +#endif + return (u8*)pixels; +} + internal void ed_sculpture_updated(App_State* state, r32 scale, r32 led_size) { @@ -299,24 +340,8 @@ ed_sculpture_updated(App_State* state, r32 scale, r32 led_size) // TODO(PS): destroy the old texture } - u32* pixels = allocator_alloc_array(scratch.a, u32, pixels_count); - for (u32 y = 0; y < pixels_dim; y++) - { - for (u32 x = 0; x < pixels_dim; x++) - { - r32 rp = (r32)y / (r32)pixels_dim; - r32 bp = (r32)x / (r32)pixels_dim; - u8 rb = (u8)(255 * rp); - u8 bb = (u8)(255 * bp); - u32 c = ( - 0xFF0000FF | - (rb << 8) | - (bb << 16) - ); - pixels[(y * pixels_dim) + x] = c; - } - } - ed->sculpture_tex = platform_texture_create((u8*)pixels, pixels_dim, pixels_dim, pixels_dim); + u8* pixels = ed_leds_to_texture(state, &scratch, pixels_dim); + ed->sculpture_tex = platform_texture_create(pixels, pixels_dim, pixels_dim, pixels_dim); } internal void @@ -328,7 +353,15 @@ ed_frame_prepare(App_State* state) internal void ed_frame(App_State* state) { - UI* ui = &state->editor->ui; + Editor* ed = state->editor; + UI* ui = &ed->ui; + + { + scratch_get(scratch); + u32 w = ed->sculpture_tex.w; + u8* pixels = ed_leds_to_texture(state, &scratch, w); + platform_texture_update(ed->sculpture_tex, pixels, w, w, w); + } edr_render_begin(state); ui_draw(&state->editor->ui); diff --git a/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp b/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp index 8a0de1d..40e86ac 100644 --- a/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp +++ b/src_v2/editor/lumenarium_editor_sculpture_visualizer.cpp @@ -83,7 +83,7 @@ ed_sculpture_visualizer(App_State* state) ); // TODO(PS): TEMPORARY CAMERA CODE - cam_theta += 0.05f; + //cam_theta += 0.05f; v3 camera_pos = v3{sinf(cam_theta) * 50, 0, cosf(cam_theta) * 50}; r32 aspect = view_dim.x / view_dim.y; m44 proj = HMM_Perspective(45.0, aspect, 0.01f, 500); diff --git a/src_v2/engine/lumenarium_engine.cpp b/src_v2/engine/lumenarium_engine.cpp index 93f3e1e..2f0704f 100644 --- a/src_v2/engine/lumenarium_engine.cpp +++ b/src_v2/engine/lumenarium_engine.cpp @@ -5,6 +5,7 @@ en_init(App_State* state, App_Init_Desc desc) state->assemblies = assembly_array_create(permanent, desc.assembly_cap); Output* o = &state->output; + register_output_method(o, OutputData_Invalid, 0, 0); register_output_method(o, OutputData_NetworkSACN, output_network_sacn_build, output_network_sacn_init()); register_output_method(o, OutputData_ComUART, output_network_sacn_build, output_com_uart_init()); } @@ -15,19 +16,40 @@ en_frame_prepare(App_State* state) } +global r32 tt = 0; + internal void en_frame(App_State* state) { -#if 0 + scratch_get(scratch); + Assembly_Array assemblies = state->assemblies; + + /////////////////////////////////////// + // Temp Pattern Simulation + + tt += 1.0f / 60.0f; + + r32 hrange = 1; + r32 range = hrange * 2; + for (u32 i = 0; i < assemblies.len; i++) + { + Assembly_Pixel_Buffer pixels = assemblies.pixel_buffers[i]; + for (u32 j = 0; j < pixels.len; j++) + { + v4 p = pixels.positions[j]; + pixels.pixels[j].r = (u8)(((sinf((5 * tt) + (p.x * 10)) + 1) * 0.5f) * 255); + pixels.pixels[j].b = (u8)(((sinf((5 * tt) + (p.z * 10)) + 1) * 0.5f) * 255); + } + } + /////////////////////////////////////// // Output Data Output_Data_Queue output_queue = {}; - output_queue.a = scratch; + output_queue.a = scratch.a; // build output data buffers - Output_Methods methods; - Assembly_Array assemblies = state->assemblies; + Output_Methods methods = state->output.methods; for (u32 i = 0; i < assemblies.len; i++) { Assembly_Strip_Array strips = assemblies.strip_arrays[i]; @@ -65,7 +87,6 @@ en_frame(App_State* state) invalid_code_path; } } -#endif } internal void