From a0a7ef5f194d8d19f9a7d22f39480392679830b0 Mon Sep 17 00:00:00 2001
From: Geoff deRosenroll
+ +
%} + +Using the [?tangents] parameter of {{!OCADml.Bezier3.of_path} +[Bezier3.of_path]} we can specify the tangents we want for each profile, +rather than leaving them up to the automatically computed derivatives (that +may differ for each edge path tracing between the profiles). Here we +contstrain them to cardinals so we can get a handle that sticks closer to +right angles. + +{[ +let () = + let up = v3 0. 0. 1. in + let tangents = `Tangents [ up; up; v3 1. 0. 0.; V3.neg up; V3.neg up ] in + Mesh.skline ~fn:200 ~size:(`Flat (`Rel 0.5)) ~tangents handle_profiles + |> Scad.of_mesh + |> Scad.to_file ~incl:true "handle_skline.scad" +]} + +{%html: ++ +
%} + +As mentioned above, continuous curvature loops are also possible. Here we +morph cyclically through circular and pentagonal profiles by specifying +[~endcaps:`Loop]. + +{[ +let () = + let circ = Path3.circle ~fn:64 5. in + let pent = Path3.(circle ~fn:5 5.) in + let profs = + Path3. + [ circ + ; translate (v3 15. 0. 20.) (yrot (Float.pi /. 2.) pent) + ; xtrans 30. (yrot Float.pi circ) + ; translate (v3 15. 0. (-20.)) (yrot (Float.pi *. 1.5) pent) + ] + in + Mesh.skline ~endcaps:`Loop ~fn:200 ~size:(`Flat (`Rel 0.1)) profs + |> Scad.of_mesh + |> Scad.to_file ~incl:true "edgy_loop.scad" +]} + +{%html: ++ +
%} + diff --git a/examples/dune b/examples/dune index b03f582..c49dbb3 100644 --- a/examples/dune +++ b/examples/dune @@ -15,6 +15,7 @@ resampled_path default_vs_euler_sweeps profile_skinning + spline_skinning morphing_sweeps) (libraries OSCADml OCADml.PolyText)) diff --git a/examples/morphing_sweeps.ml b/examples/morphing_sweeps.ml index 73f695d..c834647 100644 --- a/examples/morphing_sweeps.ml +++ b/examples/morphing_sweeps.ml @@ -15,7 +15,7 @@ let () = V3.[ v 0. 0. 2.; v 0. 20. 20.; v 40. 20. 10.; v 30. 0. 10. ] |> Path3.quaternion (Quaternion.make (v3 1. 1. 0.) (Float.pi /. -5.)) in - Bezier3.curve ~fn:60 @@ Bezier3.of_path ~size:(`Flat (`Rel 0.3)) control + Bezier3.curve ~fn:80 @@ Bezier3.of_path ~size:(`Flat (`Rel 0.3)) control and caps = Mesh.Cap.(capped ~bot:(round @@ circ (`Radius 0.5)) ~top:(round @@ circ (`Radius 0.5))) and a = Poly2.ring ~fn:5 ~thickness:(v2 2.5 2.5) (v2 6. 6.) diff --git a/examples/pngs/arc_points_2d.png b/examples/pngs/arc_points_2d.png index 32bd0e57905fb54de1dd4f6f1fc112e7613c7e74..4ed2f8dc41dac4bb9f6b57bdb4dc515a3702c2d9 100644 GIT binary patch literal 30507 zcmaI8Wmr{P)HXafsZuIZQZ}GcBAtq&fP_*aDTp8~-E8G3M=6z#4Jauc(zQ`Sq`OPH zyEpL8wc)(a^L{_Rb6w{LYmGVL9`_hy&bim+2W710ll-FjBQ1z*WtAfz_xv;eoA?sw@9>em!R1MmlPOce3M(CDrUDS@-u(Zyi z)kj?=RPm}!BUuv}_{ATaC;F-3>Auk2 z&84f!I?&*g(p;&->5+Sl=bO07!)y-?EvXrTbWQ@S-GGFIxS4TJh=Iu|C_)=6sEPf> zIan%cNiuZ7s|kKy8iieV*Z*hCZTjHNj_DF*uP@<3#F>0y0H*8Li?!y2LSIMTHL}x> z= |gwXDu_@&2|aFUPdk5&oF540-8zd$%U619@*z5TMlD$Kde^ z@^Pz-h&`g|PtX;G*N>uSs$fD(d>zoN2pRV>^116UC4Si8`u>YnpWI!?mv!N#(rm+M zeX+4~W~<{;2L;t5IaluAT|K78@FQ3rcSP}C290${{kd`5#a!%sgUM3X16WUFxl3=E zrih~^v{XLHE(j24_%lPA+*IA;I_DfxA3x4r9m`A 5}dYgXEBTJr8Tc!#{3GB3YDfggy;^5d5;y zgdz&Ud7}xJ6DMzVE6&H!$KZDTn2goC woMcyIjrl)AaM>r+y%#_pm2vm|iqx&3~-ij){@8Bugi~ z>v#EpcHHUt 4+1*~$b7C $+>U$}{Cc3Bjxdra3Z4#?}j=0oHXO#C! zHumw0wrliq7e7`iGh?F78+~ZyGai1@;rUW_qe~!vne}^;h{>&iBG;{<627$t%-+5U zzsuwR-xRKiFIUQ_W7hBG^GMA&X_}MK>H_HgLAo3TDPEV|p1)Rx(p@p$+mi4E@>@>1 zN3m;K`TmnByONSreRO_F=tY`87j`JNGY#^r64`PNVRA2M<+;RhV7~rMYyJAMix1_+ z9@srg`(aL3W2}S##2OIH02*UIO0^DWMVq&gF)a7q7du~`Xx;3eo?N3(Glav~5_*$p z_x?|gjQ8~~if_~x%c|@>xY@f4SXsX=(7HLn+np!rLnd;@zkT>cR6pB&Bv%~uITe-g zIXfZ;W1)q{Ll*30HU_rJgDn(Z*o&99p}Axs(}KWTvLXR_)kXA74=I`NoYND$=^Z ze1Q&$sf}axZ-Dv&A1!z9qwfCvu?fMauTbOx;YIH(6C0Zq<=Kek($%eQC-A9$ghn5) zMDBjuPQSsuxbU8(Uu!w^!s;jrYx;7MwyWYdZvMx*FxuvOC!@j)dFPS!Z`!gcRrZ~9 zgX{UfHL!Ce$}D`gWX?B5B}F;iZ%OIm!%042W|w?v=3LC5v5bU|stn}?L#E7J^RDdu z-lX~_jSZaVvg#4tcTl`|h*9^mWJ=87iVJFEjB{7}=W2Xr9G)|xq)4Ie`<8-;ZUZSP zyl!mqQ<&TdUWPK81%)Bn7E@hz^sTUPt?8G2xk_%$bln*`8`V`E`P<#uA7u6BotO1P z_nKhXtjz4Hcm-02NIrKxy6D_9(Ue_lrhjsYLE5WscT%@(*QJBbNnF3J=TwIAu;h$Y zrcTMM&xh|8D^b}W>IzvH%IfGGhxV`$s7d3b1XpnG$|p*m9z-39-PU?;PVF5fCr$9@ z<;w5T!l5$93hss*l84Llr0$tJF_~pTw*(G$L@PR;H#H3WM8cnWbLog6cZ`k_yC+>_ zw$Y?ksx28H=iv%SIx_Ys(>B{XZ-fqR{K{qB?$2F{S+CAB({ShI&Et#~6X0d&z8oj$ z{>0aB@9!>Sjb+h-KP4~Xn<#30QDg>q{W;H^@=)ad=D^o4Q#Q4Bo^4;{;>jt#&lZq^ zq2JRA7PU&z+nJO~FeML3No_RnG*fmsqLEw`|CJ0;yK4dED_kI`@&C`4Mmj_4z!eqf z%YHcv<5u;Cpl{I}D^X?FLV@E6KA65istXU^*n#yL=uh&9LZE0dn5lf;o_~>e{oeQj zp;Uf`PRVs<6us&jJM JSh9FR z@-NEw- GDUnTcgB8e`7?^4)tyvW @?ikH(}{em8ZCha&?y13R9_nPQu zqebt3Fq5KD35${=K3)M5EL0L}8UYR!Kc|*(PXycjncbaVtjo-d5$qriiXRnRk$iM3 zv#_|3Ij+|m!kR2*fA}VUjB3A{dZtoP*QrZqOUx-Nzz;6g+)a}@0}(ReR{h-3)n)Q| zusu@l>Sz9_BoeeZ70dimWn9Jf%Jg=;om=b)=w8rqhf*rM!WF
Abkr(Z2>~aL zgioqnDJ 6p 9L9#HqlO&rEd@6#SaeM(cZ^u$ny3d-qXD~GgZ=m-3qyq})lsvcH zXI_G ^c}1>F5$2`p1Z%6 zGK+ryp7t}KAoys5u>%i}=D=rh$K>&%0p7uwhraw<>9aQgIvNMpE?VX3RqS9`ACeNu zjl$wRZHVs*-%c!sEjD8`L>{J&IunByzpWwR@;)WL0P(9B%1@3^@4rVVK3guebUbA1 zNA+p|;AJ$Koz&+a;IFj%cX~}p-k4~W<{>GT2XWyn`RS#_FY%<_UkQP-;^Cg;VcCMM z-X}#=km?0yAYF^^8P#lGWVN&M$2u1QST}uX`P{>ycr7YbgKH{h!%(U5a3V%l5S*rl zI$MsDm xG60I#5Dvta055#n*ccx)$aI=W}A#B{4u(XsR*BqKY7(Oe$fsThu-oHhrs`>j3(uWx%iXH7aM)3FD_1VEOD|d%l zI?+cxutk?}u?P=1WAw+2y9QE=Y`Y_D{SQ{zs0F*-#d-78ip8Z`A!(8&j>?O{M`>I! zl!fU%B}gv45i04>?HEw8(aWqiFJ=p=TK-hbrm&(cLew!GU)h6arJh1S@tXuVwjb2B z7yU}Cy)lde!CQ+f1zhfS9<@5IT~S4@OCF9oaP8WUxd$?1E|7qBfulWh+ ~6g;65`6I zVAWpW#_w`U_R@7owz_Yf0A6$3Rzud^%#I5)8 &xN!B zq`+OvZK1kw$bE@$$6|d>nrtjkD?WfM=sqHOA65bAG6}8J>rb?i48C$5q}Bd4 Rz(`3VjRqF`$NL#XfHQ#g=*hYe0X~s(e{nJM(7DhdI)N@#etxXlLAGJ@bJdMHPNB zwQTOM*LRW EdDUaZnR0ZZPrvV_3glzdlfe=iN YR^T=Y?bSHt`_A5-S z-Hp)Ed2l^ZJyrI>(@sd|nG<-b@hl?~;^VO3PzUit80E6iF0Q@p4Ehq%rVcdY2KgZo zNqT{9ROME@5j3eP1+kpgOTOfoC$sm>Y0w )u3*SD|why(<$1Y1d7XMV2sz;h=M z_Pg@vu)gyF+~uo$GbU1ZkS^x(?)pbFGdmX^Hp@%`2Ti5-+ew9-)pjJ{mf$UcAqTgW z;27Blgdbsff}C?H$wpP@F)Z2@Q6Y^S(l!yUrg^$3DXmZmk&4ZzwHwu>qR#_P{2=^< zNUzeQ{64?nlh$QN=1}oWDbV&$OWP->cd(I@f27|07ydeLg7C`m>&GtzUDNCOTLWY6 zl99oWZe7t>7Jt>x1y0|VD7q?MXt(;$UZ6k834{Un$<)R(x=i%e<13PKf*-see`~qF zegXX){$^6!cBU mP z$g>g1!9fFllc{ywGVoip$$Cgk`fza~f3bxNNKgEIXFKQYh9sLBcp-8@kCQK%{ouy^ zTjFPSCI^M eLA8-JIkI*(t(xj%42EOOzJrqREFg`e{m;0ewd@!bH) zYfi+q=-h4cx-)`b;SCo&KET|arp5!+Iazp;*@OA);O&dTm5zC~hA46`NIIB$xs!1D zm%B7qt bg}c9?a4pD$TI_DSh0(Jb}T1MoQ^m _oNnT1yYfTj& z+RtI8<#@z!%lx68J;sVu%F| X!Cid@modE~D(1j+Rc z-&E#7F-YDRrXr_N?fNMBDUCjfk{q{dkafGN^}lNrA_EIlHWte1{|l)A#s2PDS!+-e z`s+)-P1wL@ZvJX2BU>qGF(Q#*jMdjW*!}g|edT9Sh#oga@6}$%pVjd7k+vBX&ddL? zZqLBY#;1g<+~wi!x|Ak<+fFi~f<&M4L#LAM{J btEeh7oR8EaDX`J@VWmz^>F+GhAG=X+ z{7fc9F~*dkxA2wiszXZoet}gPhx>)tc+(9T6%oP~K1kKOG_uAF<{5#1#c$q}#`T(y z)T37IO8TaJAoV#VIiby4Ij`GaI_{gyxX*N8LGqDZk|Vq1VYhB8T=(klru)kb-v2SS z-2PQh7m}a?yi)K7Q_zb)4u0cLN*88Z( SlE00o^A|7Z z*Z;P@F3l +smDPh7dh7jyqs?=l& 5c^>Drr+QA1%^jd8JrUEdnu)(=N;_LZS0EiDkdK;D*h5vjjptt z?)wWrU$+ZmgJ1tVj!t+S^)Ly0hNAxQgZBpBiHCKOaOC_9qy!yTj~0&n`+maYg4f(| zsoCl^2-~r_F~r Ux@oBhfeAC> zcn24vPt}O$(B5Lj9H7;gVWF%2fzeRUoU=I91y dSM^tR=G zod&O{%!<-v9pWB+v>mX!6P=KM2AZKAAzm{w-M&WmaWvYl|09MNWWDz|EoTg_OlX>B zz~D&lY&87+m}!2MVP3=ZL%<1e!DyQFs~w4*^09^xqb~(q0@uP5&gs>P-1^~Yivn^- zp_F|xeszwmjiWf6Ht=?u{vgAnLx}BDAVr8bA*DBtH=){ZoW~q}uH?lkiOtW)xB3-o zto3GMXE{kgiy_|Bx@vU7 = z!uY$zP170H5Mx~(CW7_Txa;dx)|n2h*N3kIyI(C-cW214pT*=YE<2lCfFoOe(fz zoj!l-QH^z^S )I|jzJS;MpFW*X4<67Q6Lh?smMKU8#~ z>|ehx4aGj(yEr^VwIm?Q^hiY4IYj35C5%BGHk~Zs{;Q{d6Zpbdi}SbH0Z?&<`xWP- zRDZ1g!Nn8ORkM_vOh4rNj*1?fL(*q^oIb3bTzPYfL80O!??6HLLB>&j(6seO+0Cov z*)Pd|zd|5IMS-U>un0c#KEnUGt})~J8cMJ~3cq*&L0^#P3gxY3O{FfY*CJYR#e}D) z;2Xt`Y{Tz{zbeuE%;X<`3Fh)TQ}d7Z6YkbQ9)t8_EN<8ESUBoQ3xH{I$VVQG@SgDM z*YNjCDs=+Fv~fKGo=^A<2V-9hqHbH^qX*cZM;xyv;B5%Z|9a8El|$1JToQwykf7iF z7r8+pTVv)mD*~W6AxnxrMTRK{$}-t~VSo8HBoe==6N(G2dnt<$s%F(D&3|s$;rqTu zc#kj0?O||jmYT^0oqs!? VSOZ(fS+gd)X;=R^gUB3vr0A~I_l#9~|U6fq&ys^S<%U&y84pTF~+ zKK~TOuExLTBbNhp$6tE1RMe5GGT odN?J6DyZ7s1!q1W7^9XCu@Q5G;n zlW>D@hl$8OijGEeK?+6%S>HQf=L_%N s2|4 z5eD9d7;|aqCWl7nI=Z58Ry&hb)H|qd`kYFp#g0UtwV=a!)HIcbn)yW$hg|z-s%#cb zw8SLO{sdB@GlbRi7FL9v1OHO~@cCjPYV7-$FaMMRr*c-%O)j*`vB7rF>(fdnPCUuE z^QV?ayyyM 2Q*V%{VlzXV)4niLJeFN|+zjFq{T^hdC%Hxr=5$Ds%OkFMrX%yNJr z $h(TaDrI@e0{)wD+6ELZ5)appbLTwFQE&~Ro68y#1=sM zB>Qk==C?ljoDk9c;RAu NE~eCskufwgY>v^YEVoL2%b_6Df5G4D%R2Yz z7H7PFu@^TwwNrL*VK?-zi))R=UlEO4!C`Q_#*#n$ro2fPCu=5d DR zdhG8lxt5pl@6};iova*Pi@p}U?)4h!Q2^;Y_yDVVRux7`K)q^ppxocdLD$-)f!^x} zf_v+ux%)}^WryS07GjcOS$=-?8UulIjG@}D_WOT*HtS(%8<7QyjXM>G`!QbEQwqe1 z(-_Jc!)SrR(UAI?{2TBHrPEsul?m=2U^s0XCEQIinm1$mBKMS7`fJvH5%%{Kx>fJL za3A|(mYJdF*6OiC(_iSZ*7f}rj8s8?Yk1XYV8bEpM$-u?gm&XJH&$ieF@oYo)ryJP zq3#$@8>eNRm8OHh+N-~C3;mKhWe#H<@QawCMemFoO$1VrUs?ZYV`!0+XSETpEk&Jb z%;gna8WNpR@+KYbt%31P7Q^`V+W&K9P udUwOdY#w9o<%I=H zC1xM9&`g1#n^Fk5f7lvJWjm<+LB(2n9?t3Mx-V?p_q0z_S1PN}wgOd1OB{UBDZqwG zfO+{*khtJm1KG#N!tP&Bz80TC8Ow>ZGS-hC3=J%?a?uImy}_1YFMq3EiA{hn;Mqy| zaa5s0bb`tfVGDj(pnZ{T*Y}hH<2|JW(jQrWmmAF=4H3ou@q||^qJ?k$SHm7j5$00k zw`TRJnPn1tZ>%bIa(;IA_VQ@(@h!%zGl6YEIM9Ef55_0}ZQCPFR}ZJGb*oI>lGbV8 zbCdBxe3OZ0wx_{g=s` jc&UR#u$rIE?_7v^3ph9;tUUbsL7eQKcti#bACqzGwaGDE(Ss;8oQ* z)YCrC{pLtmmAT%m5p&Rkce19}w^iz|1yi#(LsxZ7um8nVj)SL7uvk?lr((o$$}U9m z*FzL+tCZ#6+=4C&eT$EJ{D>~E>L+iVR6*I!;(ki;?)LuPRFfW$pKYpH@YL;z)KQyp z-KpzrSI<2C7nbIOWNl9VBJ0MOcYw%Zs5d39KVY~*&&<46PR%V(_UGdh4KT52>Y`^d z7tQE$bsZL-3dOn#ESYz9?^t;rT<#YtvGJHCypd|wMy*Vy!703r?!|9Vu%(agr+yFV z?B*jGX1!k>_@S4i&j9wfyu*OSin%^xjV4yJC{fSR ?88;quljZMMdzDS-rX-!h z1XYD7$jhoq5kiP)^*@HD8+EGliqn*)&adBUmePW~Ys3Dap7k)s%#|Bs;bG@u+Uk3y zdT( q5k~WlMUggN^~@J%w8(q zwythxaaL7b@5N6Q_WF)na`fP)G4wMfm1@X!FJ2NOZ2NLGajUKOuV-^clw_BX #YwFbm_`T)n@X)(;Pz zJlMtkiNgr**3BqO)Qwlx_IgXeJ$$S|zWK~|cmQc^GASLP^4w@=6_XVD V^C@HF70VwvPsU _PZ+DGcV$!H 4? z(VR)%pV9DeG2RidH*Kz39xrGLRj8PFcjB}Nfju~(O5SV ;w-q2Wx_(2F;zC$UH!GICI5Dxx4iLVRZ_ml{^dsmxCB&u-cgJA4 ze%dL~Cuvh+hdS47HNp5hTdTN^ii$ym2(jbydD#ZfUX4vT;Bf+p2^STt|5F}y!dE?l z|J2`m`98IWlMk9BCp-^(B_B5@^5LTRo(r$1UDSL@sd3goF_sb>oT}G63BQ3(zik#$ z{lT1095)!Ccl*>wT%13=F!T`Lm>)G;%)D>Lw;5D+_JR`(aryJ!*hz3f{YP8cBZkx}+0yJP&`_fgODe7=AD z`YZQ+U)S{>ulM_X-S@e!*Ci&z7 K!vo{9>T0F~}XQv@z&e`{~ErNNiG! z_RAvdDD4g#%w3kQ*Ss&CP|I)`G72IpVb>Ck )E*RRV-HSddgV$#vsG^sxP8$w%b#> z^JAwdjTuJ@of?fYcSx*2Ka=DR{sX^!P{A6;^Yxr!hhDREc Z^eLRuE5e3 r=We*mJDtDHWC+LvMa^+3#ai-75yyboT z`c3^#Wbu9#nLDV*NGyG9KC;RhWOcG!dO+%ZIz5tIMtwAHS8QZ!RFcQoo3apoP0;i6 zr;@(M{`WClXKPF!HNw7-ijoD3yV%p$+;OuE`)aV;x!>3+su5K%{1pPm9?tW1eG)zM z^)8KVzVyM9LLwG|Nav!EY{p`nI%j}-H0$Y_fW?!SPy0YR`hMnFxCHFZb0d9XG=5It z_$)Z^+16fIM;CD)h~H5eAIz>~7M-hb=NMg%)RHC><|bA}?A+_`zHTl0p{*^qT>FdY ziAx)lYPOWacfzw$*P?P2f~+@R*ae)v#SJ#RA8Px4CMG%gNUA+^4;cbJ$uu@V4MTI~ z9f4--#Y0mOwRXiEn>$$5lNzr%2Hnw4PcR_;4WmByu&13=BW1X^<;$r?Z!1f7a@0Jp zpFAqI)9Gr&Dl?llSY?;M2hEPgihzaKFCzs{qy1hpVlhzro)OS&$F3=I%q0S+?PAO} z_-hQWbFZ5(P%QVxoY R97KtH5F!EWkpQ)mJAPeU_FMOe!C*@7g<2 zY^S(_LW=M#qsU>YVQlv_Wo_lhU6;f19Y2>oUUc#4;94wuOD8u8>vh#SE(Nf9TUHzS zU8VbWamQnT!aIOMi}SZBS+|}t>&!1D{wrN=qUAgN?NVjRoF1e51`+=0i&wgYM_)K* z)4Kr}sx+VNm95{`8_<%B7)Cf&m)3N>i;Q_8U<}J1iCoR7WU2ak_i}^(rhStU#0xD> zYy55z(&T2bIandSte;KeLrmA_ _e&7Ik6zfV8AWva=>hJa6o+7 z?XW3qBAdNw5)~JW@KOzys(*)w3-5fDpAodQJn=j>c8Rc%2y4c$5--g~!)GfOd$NIC*9B>L9tY#bc6bfd@4}cB12QZC#>esBV zwOoyVxz9c&Po?!&O~CG`ezAXBz%x&+m#pL+6K?NUXr$K(VD8Dmwc-=4^I)ygeWGXL zrLZw^4Yd98TUGN+?Wa#-mE{~609}RS0ix}el>(x{y3xw`tC`vNrn_%U470eYf*A2; zhY_NlamJqdA1D%8RTjq3T7*%&;?l_LX3XaaDL>$OB?oB79jlDLhn |t= zZpg2|^h%#CmqL)ZLL-qELrrr#aXiG)-*B9Kh;zz*y!R#+=|D4#=f>Cl<9`9h)8A`0 z2}6BN$wR!(Zxyp|@)JB?!c5!MBVk0#-y_bxt>KNn*4N)m+3{e*cJ}S7+8IwNB}NvN z`(g$Uulj x84r5&*35JTtUv8~Qr8vmK>Z#>Lq^2HcFN?0Rz{YL z!dQ;vv79a=4`-RBQ8fw!sn_zQMdY>POUi~pHW_G=$Qw)582_7H J3%=Tv4C6%z2A#pJ+@hlbpMDFePiEHwp5d z5aZL=Mj{99qW0W}RJh|(a|O=w&R0y&eH^|C29j^5R3r+PpXPAZT~bL7QK;Db{PjV+ zfWrX)WMu5_VEHWk*eABO?>iUO4&DMx pk5)f5dRPgE>HkEZ-IS}Art#s_q1sv10Mg`U?pM8JMy4BLqJLg_JxjlYh|F{_Y zVKZ~tNshszx?1gbtjqGj ?{@%Y~Svf1ThgxtM+_g-7jQl`_(7a*Cltf(#Re9ph;oibb1j~?ef16(=q4_Ra7aL z`7Btl`DB1Nf17w`AlT{p+TGjjfu5_k2GF?yA%firjDCR&(`YmSTH{V4A-Q!DWwO!I z#U4)G6Q`hTGCg@D{lxaG;upGLmxz7C8n171Yj-QPsz(M17&{mTLVvEjjYB(vT|nSP zF`9~kf8l(8Vkj+N>F=KozTvxJ+A(|j* I2CfgyK5LKlAYzD;D}UEkOahBD3%Et!XFE#;so klc&2i-3|>{k2t5JhMdM^-%q)n zMQ^`Op0@HFh!7B+;$C18Ff@#ytIM1Dyi2wo>`M2Do_yP^qQ5iALR`O=9wByWJaEX% zaB{38=rXmQ80wjkj9N}hkE6)+mH5W{NBRc^7mcNP7ld)0>zd#etrMT1sgfW`>cQe> zqT8<|?M|xwME;Rene-8gN8aty7&)KLT r)!0!5`adWzgy65g^k{ z03+Qg_0k?X6_Wp{Vw}LTZQS?F2+QL42e*ST-K`A~DK@n1fBymr?mUcO2$fK50xF@i z>PyzXmN!qnltej_Iq0|#h!$cZ6+LEifK~`b+D&UYyE?JhO~O|gbtsP}+5HBE5Iy{& z03(ho;bLo@Yj|@FyO>+`Cp22#rC69+T3*5BH@&}Ix;%|<$?z`NvzCDTJ@jMSIIOxy z{y6vBuxDR3jLk(oNtMxl%_;A#v_{!6vVN` MM zvd{C{pK=rRCL(%`4K~`MLszGiN){|PXG#OxlimhLvsq?13|IO;*l4SXwm3cATiRz= zH~ux%g2C~tvCe|f3{AzH_jmV0BuTk~RKvQ~V}Q&XVH_=I|LC~1B%(Jm=U-5xQ15^r zd3$W`iuQzJ<8(R2yda|?`bQvaXbJxhv{ZiO|6OXl@uoKkw@WlnP!heXLttKFdo; z@K 7 zkB8Y5o5u#U2zULnvSc#C*)~@#y`Lsv@oDJ0#ehkO0K>B>(cSBo;UhXci`GL(NnuuC zj-5Yv_C^7`8epSfrV(=tD0P3ou6YUEBm^&XasUO~W>N0-$Z*MyK5pO9r@_2^;Rj|E zRmYy#OnSCNWVSw{Q4#sCWnWM$c|gb^J>5|G{MA!Sr #c~EjE#C)^6vjO zHUn6VGxfc6a+G>XKmPoBri^l}QZ29F*J>q8zq#j`-9f4L3_VQFrhp}+6P?Vxlu^bH zv?w1Kf(2UmrfMfiB~?Y{SryIm5EpyOrXmPe-(6q5WfMur|60fXyDY)B<6B @9i^DO4gZu<@imLkg}!kCt6c0n~UOr~JQ%Dx1C1p|Q z{*$Xy1rx{pB;1Y^&c3t2>G2a)jKCpkg#&roJ8_K?>-_3vh3g$+Po&xF)L% f=U=4c#4vZt0pDhZZ8%<}*5BLdyoM z%tv5uGWoWz|8z3j$uk1XQ-#{573*IXl`kZ(+#8Zq(q(m>9DVxZ11VL%+PvMR%3Hgx zXU}eQ3iUfQiw-ZW+}LtR%E;+~jm^y--3|BDcy*ZAzQ$3caPIuOyX&jYy*_ vb zQmz)1l`2qJ{MnCFyZFm_cp1q-2RN+4n6gx<^(^DBA(-q`2Bkyn!>bq4-&7v6{1->d zq;AKh@l+gHy9->(iaTG}yS|tX)A`o|#>X~F{Mylyw4{({62)v~2h(_^i&tLQnjIvr zj=s>8Q&ks>c{(MzvE(o=#_O}(k$q8}cJm@SWZc?pLd9lLF1wU5#3 L*MtvVCm&_F)jY2_krYlOGgiXRmI{PJv%Vvn=ThuZ1Y z02Td^_dn-Fb) B`1LsG+v&x4E83ZHb`z zr8e2Vi0RE_<&C%nbk|Cfp6%sCZNhTH)olhIKYoxN@tJ8ps>Qo$+P^*PLGdHl7k=%` zu2_{3-B_qq-ZQ4GgiTSX#IQI~WMFm1C{tGEn-5Mi&IIX#g{u4#QlRLf@kieq%Sm4J zVI70tEFX6F)nzrGxUpDYxP$UIg!QPdt9rFbC2YW|-;qeSrs)vcTb^fpA^oa>L-RnX zY~o?7>f-hCjL-6=Z4C )#wHAH!Rjgs6a zE H)l+N8v4@daFRxo&0b8Yr2)*pLNuI!MD)e)#Qwr^{U9=1(^v$-o9a zONBt0o)I8w!3}rL#0JRbtuKB^&x XvkTUoeM ze`YePsC{MhWm>2A$&49ToWU;~#+pMv<7^=8l92c2R%M_m?6$uLN^dXEGj+X}-jOx3 z2+w )6xPBFXmro@6K3V!ilQ~@jLoI6k>I>A z=H->%FBy7WgW|sBVbeo>6+Rp1399 =DxM z5_2}T1m(t _dpdcbaL^MxrlwWgM@rHkAbrI*s|4%?&mwjxqfe#+#F2H20VFL1@=O zu*cugXm!W(V6}a81c>N!OvrZ{RwT+eD(TW35FX*vtcssk7Xb1UwZ@;M97Qw zr>r?gXEK_T;_`XFYGmj22CR*ZyiX>qw&X1kuuJs z%OoIxuzu6)PGLbwH`NP3iBCL>8?Ibx&=hjcU!XwD>03SVfNvoxe?+flLo4R)I{CU~ z=u71U_I)YAK2J*~*9UpY%Hs_C{w$5k(wom>T^{+^uku69y>`CnqZKuDUp$D+GP2DS zGxAT}UITZKw5>3e=>1Y=&~>hsrd>B%`Oo0lb^| XB_wDX>XVO zeiPtv0g_q+qbV;`{zs6 {Z*L7w*lw!CV^@pE0_~*lY~jku4#pXJ#9Yf>%C;)@sG;$kL9~&V3UW zMZE}MYq$#;#&oNbS32t2p}O$EyZ<~OW6Taq+!&C^qz=B;V^aor`D}>2a-eHE04PG* zL+~=?qAm%y-*o)9k(w|DF;doyT$l!nee$>=_wk`cAU~{(BQ649-QUWKVrYa_9YQ G{ekcIW1yj7&rL?m1jX6F$l-lG oyDw@!5I;g6OPb?n0E75@x)3?22{9ShXt2KZc(!(r{8GVkyfJs2y~ zZ9c>eav}$IU)>aT(J3U@3z N^fLx6ir_dl_+3`y5`D&GXWN*04 zVrI0&g^9I!Qp5ICBqhAR38tkf8tm^io(6y&wDX-hj@duhX?!q-Ui!nvyET8 ->j adIT^)5P6)9X98XTc%`&Yg2tC`ES938T=1JHIMuNct>EK?X6?Y z(0Cwjb>hvq@O4&@;5@W%-Y?-}pLg2f@Lzwp<6uy$immALMK89@mat^sj|jy+ggf@k zujHOKNZrQEh=$3qWVDfw!bS4Ys>=*0+HmhaCTo-ax<;dR(tFPY#Td>m$ln*iI|lw} zjg~|W_bQR2ev+1(=n1B=y*qRd^|m%cJxPlcb4?_3)!ZudlFuGUB>T3b S`-&c9AoByEtIeWH{+dujK6&jAV204jSX z$3cd3j1_tcE(YgqEwat6=xo( BD?Pe)l#R^1G)4 z>~QmX)uCwW%@o0*4;=)~POh }ag)+m30yS#b_nXaAa|hVE0Q~v10g1x*ep$$R z^OO}t?h-` 9TO_AjlnkyE5YdJnPZy+ z5V~KW39^=UBJZ-pVa!gs$`u+A#{q*bhXDgkz#4P-mt!Q9U6$8ujg-9&fx3Bq!gkXK zY}#!7IcL*8JHYd>bO92aw5$8t;>2X!rL^@x;c!Q`)%Y)e4=A2(xYPM|=}qzHsKbdk z5t?OAX4rxy_t^SpHcCA!K~wR0K~`x!Q62W4#mcVz*bHonKS8Wq38hCiP*z<8X-C;V z0mH!7X*8aBRtPrm19>Lgm_TVaA-0AHrRuWqKT-HwuAq0kW $;6w;@Z;k6Gbdr|V;x4b?Ie!`2ohUn~$S z8yhb~Aug;ggjC-4{sT!Oy1o1b4KR&vbv!?jsZ%LJnj*PYaw03+NfT4NJxFp3aPK-7 zyYd#8ZATQ^x1QX;CBl+cVc!m9t*ma*JH! avPA#h^0rZW z#LDuQRe%l^URO)a+?Ge-wb1JQ*54@4F+#)vjqYqoucH?&l5-dx0r+Qq&lRf`B1rds z5Q7c4uPe*j_#|nFBQj?hk!-EvviW 2SNuuU4F|V*nz%4XnaI!&GHJnpZ^dK_S2<7r zd42 P5Dua{KO$s#|C~ z1AX`%Q)A>&{r$KvL>wcPMB32(Y)g==e?SxPM@pEXp;O(v2ugxAg}q0H }>0FAxU@hd6p@k;yKwUvdPHzyndXHMnCV>9;?v)KPc1U6fF^SfZN# z)W5mnS8!||p$;%v^$-354nHMHkkf#dIqDLygku|9q|DE9=ITrKF(dBRse$aivu|T< zia=S+otdPD`RL{;Z mz6&SwdvQd8Rl3R4MphxIIY<~ikjC(uW zwSl`^U_;c8L!gQh(wms!>-PT%U83jeQteC=GmkC=0}XN?Vmj*YLgj$UjS*h+w;gEC zBipQz6bX&EJ;k(gJeqiJJF`5-JDr<+DVO}10-OcZbfSE{WQ)g({daCCVU8si@h&(a z{cQ=OM7&3(*s9qp(Ut4fa{1Wo-LS`&2M%TM*|A*rtP!NPwB<_1#nc*%#NOy{R0hsN zA{_s~DEnAHeIDC%5FuA2juHn-EhBD7H0@P8P~#9ilG}EwgbC@4l~@)mvF4lZ2prxh z)ZMfs3C5ONZ)CLjma`7*fl(&m 29OiFD|I^Y3CxY$InTF>96BMa`Mw)=* zXvmc;18*9ZH@e1oFiZ$N1?-pftBc@#ta5~P6pAa->@JME$}a`{xobqgXg=c5>$P9K zs-JkQ4-w7|ht=?WTz@_2`5+6XFvN>qWRI_sT1uo*a859Kc38JbbUf^tv4XbzzuE%1 z44k_X+#g{4V=G#0MX*-Oziy(2`PK1c_dgx4pvP|@IdGuNWark!e(^V0bqFgs#fWUt z^LxnNGY?ri6Swq%pyY-FQz)KW?(vbVmP6x^dhF3wSD$`$m6%WMiV==FS{mGvYIgjd zha=8nWX6B8Z$kxAzS1i?@59TLJtd2kbpt-*T3)-dow$ z4nuy8kHr zM#UXG=4~EB`Je@hJVv~VC7W1k@ud pS6GU`gomZr8&v1 z7xX8CgJQkmf@{Z6WTgXc {9+bM zJ&29yB7!AmH;*ekZoy7)^i=g#C({%05wGaB+A1#Lj6<40; M5WgArWC_uM9+8RtL$kd;V>28Y4OC_B ZBfAh?)RdxdTGdBmC4O1*xi_dZ9i5&799sCus#R5=t@$p)9l&0>}Od4!F@x z9S54J{$q|`wo!^}JB8-HIXJ)|sBL`B=$^+zz^8XM)r@f07XY*!={KA}z1DC3FL0u% zeuV17!q-GI+inugR|hJHBV;Y=qeR_nzbv!T24O%{zJ?1B1Jgkfl^i?_THS`E0>C$< zS{6}m9xt;9@^}dEEQfF?zR3kJAB%bgTnkcEgreVsz >8WZ@eyr?@jl5Kg z;}4EEvgNMv*>(2XCf&g|shmZ#4ER?%sw1%>p2BKR9>y}ET&jqbOLxc#)M{cVzbKMp z02@&dvI*>53V9x%48owa=e(Y6GU~eE^Tw^)T?Kshs7H)YdRfFO6LwU=d(SggqOOd3 zV0<1z78M;sR%{JjJQpYlstB ibwEqo;Eg=9d~~*ne?3+E9L488 zS7_z!xez;)CJx26EXzf?!HaJ8uTwuSn*yAC(oDfdF8{PM^w45ND$Vl~K}u2{wU2$n zqsz-_;*j&-Ia556xQWWg)hivfK=S?F0a0V< #H_gmkHbtA5 aZ_>OOH!?G6u|5r>A{u9O)Ur-n-THsUdT=oS literal 30509 zcmaI8Wmr{R)Hb?kMFbTT5D*@fk_M$qQ4o=qk`x3)Qfkv|L_q~X8l
B&`yE~-2 zJ2u~3d*k=M=bY<0Kb{|~Ip&Ca++&Qn=Gs1=738EY6W%0*An3C6)5l5>gtGwucL5tb z`CTKC4?*@j(vKg$aKKvWlYM(ENR8L&?pdVxjQqb3dt#iABAwogzJEtLARBZNH52vl zvncDBT-NxwnCKbS8EThzRw+RlDlbs1+y46_^!fu1_9p~L(z&|K1T39~AKUXC9^_a` zwh;d-owk=$lZG@x?&Ww#wBX4>&5u+mM0N)DhKuC3sWS!qDEbM)pI27{Z?fxa%)sgf zJy0d4QE<4hAEE-?YI$QPODx4K2x;~Fn2?$VJ9CT^YIk{ClNKN=37>je%j)KP(8yS+ zV#DFfn>Sz&6L`dZ>(aN^@kvOkebnzS(JtFYC4c){R=n@uu|Sk_Y5XG6l=5q7_>fM{ zFh#p`7Z!vx4wBJs-Qmr& +3JnA~XjjOV^e&KXP{4~2GM45C4g_(e z6*Gt3jK;nt`GpvQRunCJ^cljO# 4YoDz_!5zttI{BViVU|`{|!mF2vc)PY59B zmIS+<=!*GE4Q(#b(Mn4GXRtl*V6-p&eALC!Q3P(mu>KCZu+s2F^Ot56JQKxOQ~)HX zn#3ux(rrd5A^+s}?bQR0TP$KLvat0Ny0D|&gyO}S6V%rk#-5l+f=YCZnbxV>uPl3x zyrL-t !`*>cyHI8H{v4*&YDwd685Qjq6FaHpD$y`n2O z$HsD 6PoQ?{yZ0Mf)v5LryEq5gm{(*+a=byFqgQbS(2|lwD)0QU9y=qT1B+<=D z?cNo#Ea?p*jPw4nv6`owSs_8iqr~!b{~N}MoWYaA(#`ZBL|fG 1n3$h^DZyWjjat~kQEu=5UjFeQSv8>$%jw2a>M4jgXWMyo%9 zr9FyU=NpP_WRA~hUx{HJTc=jY`a~@2aJ5f3%;}G)yf?3+i9s`G^zk_%PBY&P*D;=m z4C-2VH-!Aass6q!$^&JaDaQM}KUHb)v&>d+th#JJHuBfwoYt8)%-wvZ_HIEOrUnh; zRgCKjsEsR_x~cwXp*Xwm{ten&eBE$Q`ohj0YLhY=D{Fd&%4SF)h93Db+fT*+3KOW% zbPZufUCY)I7068{;86w$&%$uCdWYB18Di(T_rm7UFYsvXHEPC}d|~t&bSZ&n_wLF= zKs&4(9Gwn9KS;4wdfzlYF~(K|p?)fM2&!kf9(@7QL(`qTYsB^>TBf4wI-elrFL9Wx zTDQZTPR2%TEf)2sThpU(v}Di}Ryl`ZOh3x1My*;FP56*mrTNyg% zsyGBwEo$UE)pCh&U1*<+spz5Mrc+|yU6!)!+2qTSfNNX4d^}m}tu3Km+kb!?S28e# zdr*V^EA{-ZA@pC#n7;;RK;hdPm%o~(_mRUYFBKx|`lWwgXGe_C3}gm^7-y86BX97i z3A )-$rRdne4PN7KSd)XErUd3lu9(t!VXa?rLrpIqgXN%bul z*NxJD5!p{i`BdTAv%nFd!qD)ms&-K7nvY%-4uuPXpDj#~c8@nR aw4@7wlQu!w$BAR7lrnRp3x?kA*+3XV%H59n$1dOTiYNDimRiHAK8O5Y)~p21Dyf z+EsOpar@?4-C{aTQfdt}`E^zJW?xMddiI^PP4ZR8qe;z?R?19roJHe;L)|6-_cZTH z)AZ8Ma#*-RQXmb m5GwNO@+7770Jf-U4Qx(>Lx|6DTaDr0qW)$@lbHyD&=Q7N{geZ1YGF~ic~ z{BV*7Eh?ijHY&ESEmX9V;gX7wBM?=G{Vr4MlXV =OVMwB&;k zAj|d{D-JY7v~(oa0t1)6+E;$0!EpfHtJ-gDc{S(q3(*5YLy` xw7Fdi%}#$2pIjO7x96ob@h^kFM#AD?xea#8yi&YpyOQ>5l}LyxeQcBj8;aTD8bJ z#pTbyEHkqBnEQV%eB31prWyNl|GjIG7p?B6wCvu9_DBe~C^UZ=Z@PbAjD>n#;4u`< zKA>rfPyCiVGgKmrI^!hYY}*oB*znXG_uvI!Z^MH(d86hAGTus}&WC&g2eEke_vCY% z@a6)+fDkh*o=v0D6b!EMoH%3kKJ|pE13=r{@JX|1uB|j}2qm6v>>zdy-e)(s)C#xy zs*tuYA1gBxS3` !yALgCsV!IsSFTzs>G z-SL4?RVm3__nipK*GnGsfDxRL50%GdoTAgljjm0ui8}fCy{`O4NpJ&pO9_8WLv^>g zur&H^^+4dA2oA%a9 Mwv9Ed1G*U_*sa!0S`a z>XthZ?k0L3Ng$Fd*%>1b MeB^;{2W&keG!)6txi4JIFfeoH z46GIeY|!hmrkyAg5N_J9TA-^Io7jGH&!Z0}O-Jfd^7=4fzFN#5VSm6Z908bFr;F#z z%0)A){k*0otzc&9$)7XJ>M>wejzLMe%}1#es6R+bl*A1bR~$@k2bqb&{SK8eR;Pp~ z*(987Z~+v*u(LTEMXU~9s~(5P7-u9VA&jcAfgHQ-i_kjU@%5N7Wg(X#*T^V}GC+Pr zS6bk|
Lc&pQ}o!X2j zbD1wb9G?GRkjfBB#Gmv2yy5K|Yj)U$ZCOqEEzfvd7e) 1Eq{c1g7gHSASXibVvj`yi8JC|R;y6Qb0ncgVe1d< zeLg2?WRYydfqFg|iCaI;`YMNO$~19OV=6}Rg>TkJUTfpjSyuO~P#2p3ZZGmZ%ha8d zh3jSZS@DfwFKv@=RiV12krgoRlO`D4{n%t%7)5uFjYZr}lY$^x_*{uZsGO&+TO2jp zlD_?NTc_F$ox_xWIc%88-{Q~}LRc-Y%bYr9cUDp6kf4hjt4J>McSGZ}%b76mfWe)! z#uE2&TdS;9JO?efSuUq8F`P{xR` #=XljTnw*)dI0U1g$BWlXs2KIegk z=sSJ8BP}EWY&Rzc?)r}Qi}IeN+er+nSUN!<%Ph@Gy`QQ*xB9t?44$)A=vgsq-r)2B z=;$c!BMe3fTXW%cieyazm_`HS+q#d$2OTn}5|^8{3c7l9-h0k $k?P97lU@Ah1wA9ycjvz{*!xr3hz8>7wW7Nr@ {&nDOZQbceaCNP`y3<=!7_U3ed3=!cDch`CKF}KhIN*BP4 zK{mt76J@IFk20(|tG*0H9k@2OqFPP%p*ibPElcpmQPxbXT9HH3lOLhR$DK1GjqQTO zkW47f^;Q0s192r+X0;UjsxZlhnN6Cvuw4ReKuLy6!B9R 3yN@osRAcMR)9}_@&s!r+Yg0oxw6Hd$W5Vb#i3e69+*66F~lg%8U z;+t6af}||KL8;m-Nh`T!d?~p rU5P!tw74{NH*s?;I))(J8&)vS zG|R2Mr^;8@?<;TN4(Vl$SDbBd3F1U~jlXTC7sP9waOh8NSuC+3^046rP9SxkmOKvw z7TJ*b-0 I{ZtIxf~a;?mD#(P zA-~`7ns8R}cWZD)v0_DsdbOf2SjLtRc_$B!;Nn82q!h%DkN_&>#G8|f1+^;|=j$yi zb{QeLc5tXg_I&$)M!pS0G`W+Ajy!Zt4n)2!SnYcmz{u~&9JZJTA}<^}n3C(ji3))u zw+T8|@L)PfvlJo%g5mkWEw)3Nt_2Uqb)Byv9{}qP*Uwh|7Ca|ead4xpAgNC90=@6v zw3zeR@!!WH)PtKBgi4@}&9zf+f51dbr}Q4fX2bR4bys MQ(x*XcXmH1yYrkc$Ach;-XlRiG6re{mJuTT$O;E0;y6Npw8by5a@)EL^ z3Z_irKgv)~FPBwfSAU0rW28ew3(ljiG3YaNIKQZ~|Wbpybt5p`m8$An{4dEde_Ei(H0r!}tG45^NBx!Vb z4o Zc;_Z@JmkX0oFbf8&f?FiIG*9>D+`h&- zBt&C{-voZ2CjwN3{&bA<5CM`A&6sa!B8>GqCBO3ytGG~o38u%VfOE#k)~m&AQ$WXX z0nq9E%g+@ ACSraBtcAJ|0}@pA5{BF1yt)pC%JykR zC5@2-OPPKH!7VkSh#bqB-rApH{MA=(+94Bw*GQ44CB6gWOT#qb5sP~A1SmEmx6ug! zZ2o%yyurxemb5j%xEkRM* =XK>2QL@fq!D3QkTW zVqMI|w;f_kM)R=7#h0`&Emq(qkdn=`-?l5C^J&pGa5+3-J_>{M{@>EVUwa;Ciwc^+ z(%BOeW2l{J5>vkIy4ftQN*5H_sSK2}Hg-%xo4`}OxQONpr~7nb=8|_nS*ebN(*bJD zz8v18$=gaER%Udtb*Q}40abVW>*g^Ss?5(WIh7 !6eZL?26t!ktgJB2(tSj+ e>Fh$I2QWG0+UbvR=~K2^u3wEb%Zk=b4D zm!V@WxB|#gYqY4OF_$*-Fy|rj!j50YJG%JQ>1YN#E;|&|1}X5KszOaq(0 gJYSvxz~- 5>9OCPs_9>d7bO2lG7`&CM-7rXd;jYBulBQo z8vFCt@AV!QeHv=hyk^!ybbRGnq%g(a!-JaE+RBf52CcX83FzIfey@AwsVDwC@3XQp z`;6?jhA##}yj<8GmnGkst(4!T=_hMTb1pJYPB|0FpCFOhUUyePoF%7ygP^( u$Jj8CQVI3^f5_92A&Qm`T4XK0D!ud);P>swyQOZg-dn! M%L^ji vJbLJ%SH%Nqj&n(~$voa@Ikr(;RF(QVY+E$Pl5*X`?_4~H5!h+=cf zY$Tk(jsG1500`FbpgIA73Q6d)g|e{LKI$7Pzi8xWmwhnczI4N79_*mzH%82R?Z^{A zzLLPB4<-gZ#WiK+|LHlceTbfMdKpW_ZM-@=&~h}o)(-OeH=!ZXT@Z?60`dMNH#f`h zL`1miJv*0;9A`vTZcAE=>?P33oT)<9jUerDl?A!E#N&p09^GS0<_$*(w{?By_42)? zmIn7N 4dkrh)d9BZpoM<;73$AV%9e>ay%v7uxsm^Tse z7-n67kR~uTdJO+Ug`j8giQtY#xU;@q&>?In*3RNM%@!Bp@5PW74I=lkosF}xP``gv z*})`kv8#&U9f;cgnIOcOUXWW;Hgk^#w=h)nzb22*yE55`#Dv+>ihP=7sdnw>S+F)H zs9FLDL)15bHr-!4KWw8OS*)AMNI{TG_J80opNF@ecn5+M?!Z#7d+PDmyNkO&L(sQG z;F>u5InoeBd=VfI5q4o*1!r+TW ? zNdrRN%;4ApCmd<=KdMxjfGPz%jIGnRcXj1Oo&I+Fbjx5v;asqi7qS>7?#}`{R5q?d z)mlmbN%255@5|$r?yhs3MnlM230QGyXMM7zC&E#};ORK;p$xboivVec9wedjkguz- zbwDAnlI*<80S8W;45xtTJOv#=tsLB!A>?0l2Dr{Muy`@T6@nxSa~!Ot1#viQ-y??A z7s-BpoZ(Eg4D#eUanSm;Gj-;&zp8V(I-pyJ;yXLlT{M|+u{*0Vt~!|-uWX-3h>Z;# z){yw8So)vMq~wYMqOM;jp%p2zIsLNJjD@Z;NKft!x(ZyQ38XsC{>DnD;6tsxpeI1# z5;a2RD;^1a6E079=i7H#@<6H8J%C*=zc_AUaLI4nW&3(+RB`D*qUdFa!V^Rs%;8Y1 z_QoJ7f3j2BZ{nM0n1IuEn_A$qfxL*OMx*AK>7y1Lh$0r2l&30F!(G2+hTRhc&Kiv7 z2MZ&X6#-hb&Pzik-X{xVH1V@o(DTOt-T&J;m}IQ$8N^;%R_)g7yxTi@yLeH|36XMS zhy?{d0dn_#V9+M Wh`-~{~& ;~3;HD6!oJtR-T4>oF(++0t1 cQL6%~+0GgM jk-RNglXghD%Tx6OG=z@0s>njM3QDZ{RxknSj})kY|)0jc}gbvH=r` z8jb@w43jTO8A>uK8otw3VtpvE*a&gM<@}A!f!q{8L#?-WUvrf!=H`xbcMaBSFvcLd zNX)!K-M>5WeUA~D`nG7;Kul<1KXDqTF$v~$&3WgR2`De$L16d2DH df<2rwfvY(wX zKtpgm6tNilZV#KL4TSMN0quCk7UmZBZ%X-5D_;6qPbx3QK|@{r7#3#oJ{OL8?G|8y z%mC`G=KAL(GyKt_8;725@<$C={NZrIXU`KZFW qm5KfTM^`2Uiham zJMy>+@XJ(A~&FS8Oqn5!(GHNg?{T$yle63I pN_w1y$4lcZvy!8*{%?_=k;F||oJFjedC_x2?|5?P$MtcMGu zb>RXgUnCDSS8w+e@$x-8+liY9LhVA52{0l0Fs+Th91x%;LNk&o$mNZpxrpVP&UI-H z9Ap68^A%DtbRbSR$D)2FR#QW>1MRgBmL4_iH5>ZGl{6i9BT%{KmAJXKduE6hRoaKM z@4%-d_shtwkd15{1^M$1%l{(Kpn6T>S$^LwZl}{iRd90A(4^%S1e_qpsSXE;h$B1~ z4YzEn%pd#KZC2 A>9jGV{+CHTGF2| zWM^bHIGNfQ^jap-P8frbvT>200dmN@=Np2by!{xoo)`ZUXJR$cvTbY0!#^V A%}QSHIB&6NnL;sph=OTQ7{)y`+j !FK9q&A+x)aWk7-G1zbGFm?>e zUx6^sEp1{oC P)6n$ABsjD?pLj6ldO_KM_j{L$ZP8J%0yeKG&4&D z6D2Nqnrz}jqb ua i)KRA#fu1^Alj6B16&LrQ zDi1-D-Iva85HSb_n8K(MmvV7$DRg!W>3}0ufbfkAKqXrKvom!Z=`ubh7BwXQb6{8* zYXc{N2C8OFqWJz>Pz=>MO+xs5Xza8$Lga%}rpQG|j0b3L4YaFdRw63<3Nb9Np lb_fp;iio;7D#_IH`G?{?Nx!FHn4#}m_FEv*3rcdKb%WDU7C@#F9J6{ZLsK|QFK@bnS?TU zD^fH8v>?X75vLxnV=4u8YQm@&B~fH-4>N<)QRp+6XY_S?(F1Z=Q1uMODpZ}LL{w7L zZrV^oGIKm-`sfvJ?5=)Ew;Wa+E+8c*>p2YJ7Y^Sa=qMz%8AmVISwGmZ0zB%D;X*!y zRXCuzxWfA=z~zn$`7iv)4#5GR*=It;NC7y3H2sIkPq|ij^ #Wub`$Qli%%>or|bV% zNCgNZKj*d23)XcG=>!UA2QaeKh8#Wf@cADtZ@7UBWzM;bFBc=rDfuBWI0L;0+FO0k zwd)fJYAoh7hT#*v&ee*ZXc{~9+!KbP+CjA$p-a=#o;tdzXvCjUBx;Wi$%fb`aizVu z`%>ruQW>Bi{$Iv6GyW>sv@Gwysz&h$$u}v#a#C^Kc%9-iZB{jJONjFhKoseikMU!i zVSl9zcXH}~&@e7>b#dx%hl1~*6U23K>z;M=#Km<2{vrL6C9|qB_eMKF9WE@QM&OeI z13EQ;yzDG!u6d~d0w{ vQ^uM|Qjv!baw*fb@~EobyHezk8r%GzVj97>c8Y3m5Mhm->7m;GaS; zAQ!Sb@tkW+vaoH%f40eBm#tngdueIT7fyp8ytTlUp%s3Py+@ 61JBh=q8L?fcm^mwElvbScI)ZfE)OMjwswT@zC{SPvsnNOU~^Ecz 6b^*!3XiOkpTeK#LS~$r(uomAgTVFPs2Hb5HCPK5%fEqs9iI7no;>(y4{T=1 z6s|uKjiF-3KkSja6y=BK!o0;WA_h(`den1`$KP$f<4|qW%c$Mh=ns_CJ-GluadkVT zWv+THhZQ3io>N{rc)r!`pbbH9xERGsoZW1G8c1%v46$?8Q@LZ{i37#8XytGS^v=Gq zBwTgGYIw^rV1%_^Br#6JfeS&}b9rOtG^^Hwh$5VxUY(zgyLrf26|F-mV4bk_P@9^+ zS73!pceRhj=j3hJj>l!-R{iUCm&)~c_I rH%cC&4o>90jtw@AP^f zMJk9@P%x0jI)-!U`1aP7m(CwnFGAI}qoSfBrpCXdxf)aKbc8Ng{V=+0Os?Bna>iBs znW#An7t#~7ppA_w oI7{QXYU_N>~a z5aDfB?_u9|VT2ljb_|`yGVP*Te#ypj3v$Y?u72BZJREs!8VOQT3#;`nw^M2;`4G^t zID<88%O{gBbko(~`CE9sXrv*^9S**v@Yjjyp%#M&VnxMVlCVK|mwKCn=RSn?uZNU9)zZE9AS4+s)o2^7z} z4iNIU7!qy?>}%-R8x |M0+X^mIgn7`i(SK@-M s2B3j!iB9?k)c`GB%!20v3F5- x-{Nw3-_&A79|Zz=cXeJq6MsQ$V6HOvK7z`rqWiti96e zl@Zaz9?oox1Mb1V5DreFa4T;R J>??EmpB%TYV&sEMRs~-dODP9#e zGG$0Y11s(;J(j*SeU1(9bOrsshH4LHshYmlwa8MuVDE6%z$-!et;feFL3)Xej-++h zE~mTpJ-g5G={q@9{JrD%X-{PX7JTxC3+{F@ahs45C0(i0`{^eqUo`i`hhFV&BRfUY z_;ph%%>(~lWt#hxYois;>thj)bM2>Y1vf=()*@`&<|8!XxZmzd=I69!bj5$cm1m)< zUR}F1#1Kaz;%c^8ocrH$hr~%ND3;gsOlFLxwm)yD+LVrssc?#qjJ13tH2ijgf1;K< z%-2IY1n%3QZ<#MEx`Nvk-t{jiJXwxFJ`8R$we$I7mz}<;jRh%idDtSq wT+;9XZ s%m*ZiD#znCQaH?!6*1B8&B}sl^z`y7Ke9mwA0eY-;5Q3pr`45RI-aiB{{%a zpj^N}*Jxo{O3+l A^CyYG+JHDlD ze%%dRwVST9Ez9`|#d!kVw~HfT-CT5WXx)0+aB{c8eRWFq7%VTndB8y?PTAVZX3MiW z#8^4+V>*y^q_6*0^JIDOPa?;jutQFZ>pTeCpO`EStsu@F&Zn!`vQMR&IKi^xgV`Z$ zsJ~#j5~p&o0&(`%2DMsJWiyb!9=lUKkfps__ouhWp?&brYb}4@@fjbXbyvMMXgj~B zTLdD!_LP9a3|5Cz>U^XzG#$rS&I%dkJIq*Vt&f*Ykk5t0x;yN7Rt}tW4Cqi(Qk|Vd z>n?E`8(F-9!`~6ViY7>HTplK|r}3kOPV@J4vSOv^t3)82w*#&Os>h2 Ke|iuUT=ACMCd~VNZ%U4w*+xP z$jJcs^I{{piAEc_Gnr#D@(tVR_SPO2ohCp!#1A4$6Bn$e%LQoMoP*>9#VM68K8qPE z{2`IhZ_;>7q}LhkdX{L5t2c?)jfF4$^LEWxW>+4T>a 64t#khTK6bBf?&U(Bb}wxwUBLR!Cp= z_xq4(*wKO*^rEkSwOB?9x(iGxyoGZdkumM_T$M_zX&TWJlyO7?(ckAP%uG21sC(PK z7FVaEfuhwxrC-Eve7nCRxb}uJOYGBB{;_Hz6+H^XNa}u)DP}id9D6YCbfaXpNT@%` zW-2^Xl;vACfJXH^RUD`{eWC{PnHyRX!+to`NTq$+jk+2sT7QDr!*r=K-M`xix70|J z2ER&SZl{EucOEXl!Oj>=!Hv>)Eciv;qUJ@dNB~%0#FU =ETj5pNno#F#Yuz1h z*Iegy6mgG^(_GUp(P9^dERGD;hTT7Hc8fMR+#qw+XXy58ZEc +*^jf~&{Qnt!`T zcHQ^)a_8E$&E1dY5N?xMVyA!i2ee+l-jU43$9hsCCkWle%z?%jp%+_PYvF71ck90& ztL|Qh#O2-g_qg_phqEV6+DQ^|u#>E!!EfZ@ItY|g#6>*cpKoWON$lGw$A%W_o!6;# zS5qPyVgls|8q0v*KNu9*9CV7y&Vp8vD=ZMQhI@NZ*}OrjfzkEd&S6Rt5B4EpB90yf z?7~I-PY8r`w`Xl97Q~ctb{cy&zE{HWGzEHg?;9~P9MLWF*`s5_pT14uTq;)}yC2EyucE{cauoeX?RZ zcWiMyN}lLX9IOUPi|G@bxNLcP+IK7kG#wAXRCN5`8>RwkDc1%ah35Zov5j39R{~ok zYT&8LTYH3aSIvrX$z+HdTxvS)u5A{JmQDN6Fsy(UtxfJvy;d%lv&mz+);C&W+9n|7 zei-yQa=9`leE8njt++RUG%sQ?<>gz)Xq_TMLM%Z5y%-N^p)Ff3YnV7%@#C SI@tN>8-Apwl-gqg+BS3T1q>kzWpdH+B&OjNLHI!nZ~eY65m zRmKkXIu7sNNqAQQ2w2)=wXz!~Szn(dgmvLkB2L`Yqw5#fEWWaHi(7LP+fjn!iG~0w zl5f Pqlm+aFCU3m3#VH>y`T+C%i|y@gFyv*t#3= zns39Bw?P#^rUfmN+2+b6vCpnuhx!dR3&~w`kH-nPwe|+QZ L&-U#qj8aWWsb%CI8V$Pq#O|HThElDDO2qTw `oD7c|{D`IBV=j@<(t4?*p^+74z|(?_b3$x@$z6zUJ>x_<|PZ*(&z;f zj2`E1m|a-`4fs$If>wGp?Wq;QbmuLW;7LKdL1{>fl|6J_IlV9OPR3h6XIoq})hHa` z2~oFBWx0f%2%>bLc14+hPuW*Nn-V|E=vuo8i0EksakNi5cXI=i_viqYI~*?p%3db8 zDwbOmwF_y=c)ebAyT^coY(8i%rVa7SNlU0YX#)LDSN^&A*9LOk!wB2^addDOt9W$1 zuJD1NNH}S+8dg~bqr{2wXsEs*4irH}No6TidC=UEn1EFW$`jHcRO#i`|0+k4r7PDm z7yO? 7g3U?T*5tcqARC)b%?}@5uDPEawW=fNQ;Tw~u z<&Quk$FIBS{8$iMp#bJpnZlDMO;cN^9Ot#o%GkDN43vQ^2QdZa >vv;-Z0 zpGr&N;KB^}@$sIunrQ)tQ}=}OQ1cxL>xac|PFJdPz&8_v#S4qi!$Rd^z7b 8@L-tS?ax?!;e{c{%`~ @GZAL#3R}p`<`2H zFbjKOW!BwcDxJh#O%M;chdw~!D6qqBo}S)2cv|Dy_}1sw4KWVnpc*Y|4Roo7V$f+~ zPj;t1+AK=3N9#(HWU zSKbec|e? `fjbe4H5g0B@ 6EV9@*=HAGKma8i9fzWsbjjW?Ze1FL?|am~H5*`SFhjnhV@G zv6mHcINVSF{;G8NtJRVn)}CG9`quF9xs%o6PHJetKi0W&iI&u9lk1Ayb#;nk#h|{y z3`egroHa>$*`iUD` KtX%*f8f^INf(kp@*x xn;d=|3+#6{^Sz%$U)wl5H3hQj{4c)fTYalLvKcbV!*)j|MZVD2Y_veYQAlM1 zHBvktEP6#jsn98bIT~vr0#G&nOJY6|?|}5?ts9~Lq0D$UW+BH??bYo%&~HOyL*-)M zQV#tx$uDy&*r~LAs|TUqAo1yNFm~~uQ+{U%saajVv`Gv}%<}M^{GGkj(#?!~sDgem zMVg^s2fM!a^hX6b=DbHx2fv_ix-u~J3W65kzWJKrh2mEK%`y8N!`J*F@g(%ElT{Iy zQ# B==ABtFpKs{Fc~Vs7GYRBrBon^S6Gwlt=&zvckNP_npu>?~>kbuv>jsew^xi z|K`^Qeesv-Nk7WJo!of&CXVUZ# z7w6*8({aif)|K!{YehZMyr&zteLm5#8O0|>DAMtbZmJlTrlgcDcL=ELp3;3u|GuPI zpY(mD^%{=$@)h!$I%eh!k#jG?KHdv0KlJB@Xg6bMtvl%S0p-$g;+7I27 z(9YACB*mx#5zob%!a8ppXyG&ZIr8SL#?89VwuEe4e@w!?n|Z>CwKZLA!N-Daz@`Vy z`S-t&E|T&8cqOpZsIbzxBj!j7A)h&bA}pQ3Y^3hWp}zdu>NFA|JB|y*otv}Og3Ucm zx#II`e0lih92V56Bq4Soi3eK96P8Kf50Hz$?bS3n45uP<8aR#|Mmv&5G*^|y7IPWu zB#Z$q?HL@+?dTt}H8<%*t)hc;eP3T&ieQJ3FX2^g%qn&%)8Rd%1}0RKumErmstqDW zvNz`U^8VltXvZ$st9*WWV&)OoXpn_wZaxI{cal6>Btj+%%d|ZJ!O{JU(a_oq$-L`% z`iyP!Di)MTbV?W8jwEhA*O2#otG}-PZhr98vbvPlo&`H3E{zT)j(m&t>(pbxCwx8n zfnL`$ggh4~3hM|iL2s(jCKi0qCW77`XB5>2>4!ZZ7nkFIW>nThvBpC4qM{C*Au*<6 zfGMp6e&!yDh*& SxD@#W=lU$-QE9Eb{zqw48Wy)>ww }*V`bHn@b>br*z zTyI>jjm+J^!a+U)>C nV~~*GwDnq3FMWkI6j7Vp5{_dp2C}4KXz6 zla0*Drx|5X1!o8$=P=Pj>gpJdtJ8TocJto R+#df)d%0bCW{f16fyuL5H-4`A~Kz0*NkySk({#mLkuZ!ZnM3}DEs>VM&BUCgX zb?f#SZ6!J4J4D{Y&|5Z<*bI7RAL~WI;A!gPz1aPsV>?SnRy6J_2$4;hwI|C(xy++9 zVm0|y0`q4sreGSiPd}f~x0U>g!bZlSbJa<6iDv1N$mnGeYVOj v`Jf@K zNJNy;Qfbt~UNO&n-dEA3UNt@yk1#Z_4$mqLW6mq<6J;ymw5%KVG3kDpW`UTD#-Nlx*G86X( -(Dnv+gW?#r6YeD|)DD6c6qm=D_sn!&m|jO4CTn!}_`j zy5?$U`ZRS;t8w;UPfKnu=YWx|%j-_`HsgP*#naIq(EMBpIuzn$(({UO|67+EnHsK0 zc&~RRYTw1xBNUUPH!RLkHV5&}t;Lx$wW@)C>T=556guiH&2m&Ko;EE3hyX`lt_*%Q zl(+Tcio0hdZ!)M*N0Iev|F~Bv=l*3+^RXqUVhRYA*2cV|Hd=r#PvmT6zGyZ2k@mfG zC|I5qNeKwKkTD)}S=rwPkzd?{UC=A+Y`>SKmXvnwF*D9%(BwO1du@HBq0odxFV?Hm zV-u%Cy!MjQL-K2@7Bc?XB_>!37XfC1pS}~v`P%n=i|+b$Lb7jPO!a9v>oXpw$pS&V zE% +Q-BmI%%5KT8^Pao)g#pI)hnMGr;rkXz3cqZQ>4lG8^ztAZ0F zW1%r#b;)?*W9a$-|04z6^OnWT1zcdLU0JnQj!>t+gu4?8=wrt<+sFHzIq$``0GDF5 z^v=3pbeF?tUDu7CVl#v3t?M@6ZsH7ejbm(NOh>Rti1=A|mALpkx{i@vy=pe8bK3@4 z$kZLPuR*Yr+lZ}YgxhPX4ib{lwy!N}W(Ka)fn_D7Ztu4D`lH4`_+gY`=B#`jPB$(r z@Bj$D8@$b88|}NHn agwy$LZGo#GZ?@>0Xdf!shte zp0$L{bRI!XZY1>b6&j{bxwDbKFGHcJUl>FFw3Y4qO_b!ToLKH{)*2tnn>(L18H_l% zIp|SQg=PO@9N=Rw*;_iQBVP^E iye+UmcKPpzg>$nGWg4-?({W?(KI_t*QLwt@cPIv zx9$E^6Oc?