From 9711233cbffb39e3c879e7a13502ef895e4838ee Mon Sep 17 00:00:00 2001 From: Nick Partridge Date: Tue, 23 May 2023 08:10:41 -0700 Subject: [PATCH] fix(axes): start of week label on multilayer time axis (#2035) --- .../vertical-areas-chrome-linux.png | Bin 58977 -> 58749 bytes ...-with-log-scale-dont-clip-chrome-linux.png | Bin 45765 -> 45600 bytes ...n-tick-is-outside-extents-chrome-linux.png | Bin 0 -> 27630 bytes ...en-tick-is-inside-extents-chrome-linux.png | Bin 0 -> 27898 bytes e2e/tests/axis_stories.test.ts | 13 ++++ .../timeslip/timeslip/data_fetch.ts | 4 +- .../xy_chart/axes/timeslip/README.md | 27 +++++++ .../xy_chart/axes/timeslip/chrono/chrono.ts | 4 ++ .../axes/timeslip/continuous_time_rasters.ts | 66 +++++++++++++++--- .../axes/timeslip/multilayer_ticks.ts | 10 ++- .../axes/timeslip/numerical_rasters.ts | 13 ++-- 11 files changed, 119 insertions(+), 18 deletions(-) create mode 100644 e2e/screenshots/axis_stories.test.ts-snapshots/axis-stories/timeslip-multilayer-time-axis/should-shide-start-of-week-label-on-last-month-when-tick-is-outside-extents-chrome-linux.png create mode 100644 e2e/screenshots/axis_stories.test.ts-snapshots/axis-stories/timeslip-multilayer-time-axis/should-show-start-of-week-label-on-last-month-when-tick-is-inside-extents-chrome-linux.png create mode 100644 packages/charts/src/chart_types/xy_chart/axes/timeslip/README.md diff --git a/e2e/screenshots/all.test.ts-snapshots/baselines/small-multiples-alpha/vertical-areas-chrome-linux.png b/e2e/screenshots/all.test.ts-snapshots/baselines/small-multiples-alpha/vertical-areas-chrome-linux.png index 317a2f5829dfd7830c45d7c785970e2f637f7609..4a2bac1afd361068e56a2825229d97ecbebef309 100644 GIT binary patch delta 7939 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 delta 8169 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 delta 13557 zcmZX*1yqz>*forz5|V;+NC=2XcS`4gbcb|HH{J>Y5`ut$w6wGX5<`lVbPU}HLx+?| ze+PZu_y7L&u@-BwX6`uWI#=$!`Lukq9d+}I^h@ZWq23)8&K2`}ZxwH1S*V1XD!#P4 z$$Kt^4r{fX%14SOt0I*RGH_rN6#2RF7&IwTO9U;NWiSOyEdE$WeN zYz7WGmA-$kXspngN;vfGv&|Ko>amgVZ<;?4nm-V;(M)E$kHR=G!fXuDSrnY2PQ{;w<8&Ibt-Y%`MVR};#X9}FYfyA zl6*pCD+NaFpM^8AeR|x|q6tiiy-rBsjoA+(Y>vjJ?I;JayME>9OX`j!=ovQ;jnCAg z4^HbZZ0`_R2h&t4hE0B?+~Oqn_=tNtgIOa9#k5;~`=mQJ-zBi@wKIPuQqw9SNQgQP zB-)bT>UVk2QAa`gWK`9lI6cyhkuzDPqOhy6gd>qIqS#i}&!BHuf@JYf?~S|$NDdA11TBMy z5T7=I9*%GaJyzU0o2?oD3Pts#?KfWJ!u{Slwv;)amL7yq3DXQe(GiNDDpJr}fB?ot zsLDyGnr&T)6D5x&qxs2BtL}+by^~h`6DJrzy}2zAwG(1NK`6QKqaTM--ksKLbUd-@X?HEag^Ayg$@m=7Zo2!#KkKV-m)ls zY~-wghV}qWQAScrUt&=&aSMIN1o|S&rcrBzc(F{RKV* zv(db5{Dg*$iMp=P&Q(~p>tc<#f96;s@RV24f;n$EDvPX$#SA)}5zV5MJH^7V{xa24{kRioYr z@=@fEQ<`hK3mJ~Bym?#&NOzHUQ5;W3LalG{_sWSOuo4E%CgRy(-6x z{&hZmQM=7F_F)q~m7dEDA+|k)i{tt&yNW*9>klW-^f#!M6Da2@+T?rfS5mAyCaTCi zEVZ}P!YvqmBUvzLu$`MXB^gK~e@3Dd;Q@bkz&?>O6c4r*}A6d!2+B1Zyl8EPr4OrJoP(fy@tOcv3qA}>8DOWlVciySqn(0?Z#d;{-D z&75x?0e85}+04>QA)Q-aCEdlV1TLcMep`EIa(gjY_VlYQcdLH^^GV?Rt)v>iKg(eT z3N|B!=Ay3!2wF+s@{mLj!K_(oQXf^Oep#=KlB(|-GrZf?%3rblxV zs=9rr{P{*erd;61BhxqetQhybcs%bTsA~iI4aw8q?hjwy@Nzb8g(dMD{kn{~7*Llx z=MwkQCn8xo5n1)&Zv7_nVX=!0t`+(kj!A*|$x{r2B_Mgf&NvDYr%N?X-x5YYq7mt% z!NAQ3AytJs<)x@LG8xkpDlOd6X(zQZkFn+{Tml4t>@5Rt8QOne!USH z-%ty^3V#;VSDIin{O7V?%An89gQZ6EzM9QM6Fk~M*#5JdVL$6I^LNGHGzWVf>a>MX zN`~pFxVR`%V$R!+8KI|rys94utEP-=GivbE1%x}?eF1zP$$E2A+3#pGG7!ApkJ z(Lt1}NA3Gu1=72GyYv^4rswqX(NtNDjnputpw|{zlIcsK7}5P7w`r$mXZx~VB{-B% zs7yk#QMVFFK&w2sM-Y!b2BU~{i11TZAC}Bx+&lAhvCsqGs3-}y1K@{ z^Q1*NY|_;;W;Vyi4$*9ippUm6Kf zszEo0k0m#mGLmO`bn^Xt-UfuU=suZh--g6O)>n8jVWCD@x)tN8;zvxM}l(1;{+) z;pDZa8^s*#Q}@2ih`f`Erw^>oV;xS4%yZf^hsIlg2-AgSr{(KhGas2pK|l_*M;Y4nM{nU*;ojrj%yi>AQ(X*h{nfA z#*r;#b05@M%`OYrE3oL57fo)ddv$Wz$Uqm3bAly@+?tvCK4*~=6?V^PY(vOl)o#jd zeoiTtorHClgcS1@TJ3iA^hBi%K8>1l*(BwQhL&{iIfUR4gheNl;h}lZRZp_o&?~FE zUh!E85=>$XAD**pfqN||U=oYT|~v1!Yalam$o zl(&6IQUb3y+_0K=HBe^Uj&FEqAwP%CyG)8c-O6Pn4J~r$#}&eEDM(ecr2LDzuCrA@ zK!auEa0u}lgy!VQKDA+V%fb#1|Bh|B_bMMs>Fp@nu1<|bXS9Az^VP-fK%Llll~@RY z)Q9R~ks@;3hkr&}2rritl_RM8vso)sYl{LGtnBt#mr^xQ(6;&kz!3k1QMK zN}T^{T|GBtihrcQDTPUwXj0W9bwqDGrh!S<*4|aG0L?cAo|$*hy&(YKzWG?u(A;SR z{veQgdtV{K{X z0C!(iO-V`d+3#XrUtdo?`KbUGeqyUy*J8E+ZsRm5uX(ojcQ++^!s*fVyG@iyn-`l~ z#YIXF2tE}SV!bMZ%Gmw<{Uh&Zvk>~m1A{X&MuVUJ+C_(6R-KdL zU1ehXl52_1X0KDtbl+lYSduWWy7@l)aC!6PsZf$(sSb_bT2_PUmxhWAE{JjWEGgwf zk%cIMEb^;)7Pfo0Ri`(CpBi=eUL@`+Yq>6(ykmU$&kwg`^?fO-<%8ygPWt7vA-Q%G@VB9`u^4i=t*!nlL-NSr=8^CH zbzvwSFQ!x4)ReZgw3JHF<&{HuqZd{-aUL5mTviy3`SH%|homGT%v(MusHBq?{Fh%o z!m+NszJ#T=u5Gg}X=pjt)|9fk(>1=0d%IbQPP&N`}-NkqhtJk{HXj1y$ zZ8y99RsHB=7hYq~ENs`z=a-a3Ra9_i_^y!eG+(`p>smJNVEMa@wxT%i*vst~P^t{Q zq`Z7*Z$(VtmIY&cmv7+G=f4?+;O99oKmkYn#PBe8Wl3r2JC4A0<%Wyj(~;EGTbFMqLmyk2h;j3E&>hBq54TS`4$m1kg~TNOwBU25_Bl>{#R9#I%L3ZfY57$* zOknowM=tDZ>tVu+K(4!LH$A@%og_hBrXYt57`$A1C$L{t9$32Y`tOlp!VOTyxgzPR zO(3Zv=jR8$eM5slUf^>Wd#0;f^KtLLt2TN!d!o=%Qd8}molTtA7VA*R@gg=!=T>w<-rJUS6D*N!L6hJGOK>X8-2#FHFVH^N~k7!mEk6da_nrJ(dCsK`2! zT4wzj@i4jeSTwnk-B<7QoBB?dF`6DM!htvDrNftVZm~oJ<5S9?yo2+CTBK&2CeO zWxqBoL?;s-TS@lM#w=X_*#=YH{6C`-{O^_57t$O5bI^MXvUS&Qcth||?tiOP)PMGt z`at&R-vZwJ-w(uT$9sBxhdJNgNr32H8?r|RaI4t@rw7tW#Cez$}0cWzlYf@*m60pV--H4(WCb1h;6TW ztPm-XfT-{~d)<9aNKQ5qPPkp(Ph+OZziXG;^rEHYje7@f!IGf;zFz?Z5a+HLrs%R`0vUriXv#45R zd?f4CT#Qu;>~3olq=^ap=|rs5)AmO&qq{qKy1hFho8@B^bg;YA(b=h3fE*bez0VlE zx97?_@T1eM=6yQ*ZL&*r_Kh#g(o>RGEGYJAjb_J|H|R?rgi0&IL>^KNvbck7 zg`7`9R*f%74cKYN?#{zyZeQqg7ZO|D_QRKis?7#QH*tgW;br|*j^0?oJpmUij4&i7 z#zR^pFN}fe2M6t<3`Ie^Ps`bpDm}K)d^bPPO~?W%Ee zUJ74Sf^O}8_hWJznhxihRqeybge=C@^z%;0ftl=XyUS$Mhv_GRrE*66$le!8qi>N0 zez+QJ?^cg-pBY-CB0RZoGV3IPLGc9*t<``!?S0k9g&v`=!&#naCp^70}Ai16+aP5mB-49$T=0OW>zM-FKUuywUb0j zCm3#)27eX=Hv@x3Ka?w>5Q#rFii$vwf9~pjp*D+QTjH`mSBUlU*YNY|s&N-jdA=mx zB#w0*SP?3Mcu4eA*#WkaBUj}GPbP;&MQ&t_ri z9(mzbIYR8#<7myG>Y(U!PiYPe<*o7RMYCWgEYT9QT(y1FrpX#}wNF+c*BbCAPI#l+ z31GECVib$-a>VJwdDCGiM}0#@UFF+e2gBv#1#%1xFJ0bFmkXbztQ;L3iT+s#ws}%x zP&xx$UD!NI}*-WAKl+huq0 zw)jLWK8*q!O;I3Hw#Mw#taY@GTgTDKxlySYGiv!w_-NXE*g}BPbuvmzu#eYoYa}6Q z%p(Li3ZJusB=*9PSrGgg6<={|pS>j?E?;q$9n{OF$%osh+H#H0s4U#=_=p1r_&6;= zHcfdR6~WRwjwE6Q9a0T}=4p#vm^1|;o>k6ZT=_aCc$Yuhb(nHx7plul*DcNJvM8wR zdY3Y~MvnKZcTW8B=r63evVqI@b+nHCPe7JW3YaFtU2YbP{s;}N2x{|X?+guYfV}0zHR%W6>H?;(xL~>72L>CBglP&ys z`bru-9vs9IZ7-*m7u4|p=K5h7Wzh;yu`_b~_95QE!H?pS>c|J)ZYIu6&dIaA zDfSrk)m1-PT>6LY6T1}Rx?J2=j(r3r8Sky&>GD;fdK@A;Q#<8+pF{I#MTr0#q$5*a zjLCh=h}05(GLks?8H|YlGn{hDE1L&_Tuvw*%r&krIhP$bFpFUzP#F$A@Ju*q{+Lg0{zatU4p|Ex5}>zy6vipi~#R=&WT z=a(l}B0mzV5{&AsT~&YdTJmYEvjK36yEIOxGIv-%4xsr=%G{+vH;J;^dhg^meV5bB z3r@7hfYD&U61>uM7%na@K%sjwMYRR6Mu6>w#}bIONep9WIsBU1F%V`;3BT8J#WxtZqAq!L!R|e7H8m4#QG2)^{boK!8dZ$ z!=|mtMX3zPCto`eI3zjGrB4e$Hz}ri1;1>&OB-JG&NI#l4+%EWEUo1+(VNI&MmsHeO0G zl~%o5yB15v${&~aL~{?iR1%%GM}eb@l~boeQALDr^U2cQF3ZJr(Br7Jk!3__EOIWn z>VI}I09X;gN8l0@-{k~0*;Vyf$Gu#fNF$0yfj$mo8r!*?1$hxhwTh?eL=(##S z?*|KkO)g4zk#Vp+kVz&#cbfB>@vm9;o6_JuT%*RjrYHcERa;gW`gpo%zkl;9vOtX} zrgMGb%j>Lg768%QVa`5`2_fI>1f*4=o1xvIpwH?ui?_*mM<<8Gam@|Ya@tkypD}y! z0;iZVaaxFyl5%g&b%Q!+X!3%Y*{9h1L-CkyrNcDEO!WyVZ$T%0gTH+c(HtjH?5#_e z2ury>nC{nMz0Jgyy?>nM_LM6mW9IgxzcK4frrm)3yDq zX1pGxr2JlI`oCn{yIJ=3x>~{8kA|VWNYh_KVAu;fJ~NBG9C@MYvM|C}<7mfPD71n^ z3cE3sDl#!3)NePcJ~z(0jl)zTC#Dk#5f&@PIN8h0fx3~-`oNJ1oh6OSEjyJj!hCSm zSxqhu)FRgaMu3Jtu*ed`%`l?V)qS4R^!;@gr#4zxJP56jT|E{6@OLipR_1qi)d`c9 zj;coE-Cm={8Wy0C>yZMeA*=4rGe=l5-);`^$*EcFOC9z~iaAh<%%a2~`9LE?Q;K1k zZTFdN`_=3PyH{jv@haC%%7_9XVX_BQYVln~f=`&zbconf32R2*v|4}r^;&rYCKpGw zaeS~-h*hSi+YWr&EO0hNez^elCLVySf-k3fT4HYj{%Oo!0HhyKTe#K+OwaFF*!jr^ zfi1;pR07iLxuHD7$6xu}y3>_D%}g}SjQ#`VyF>YVZ5phb_Qs#}abp;2o*xVL0k+nI zl%=*n-Vhv5PRop3N!g4NEcu-aJq(a0$^CIk#f%!PT`DB$G%9{#+Rk^Gf}=yRML_V2 zu97XLgZcL%k`?0&{k-W#8fZrZjHd)0v~~bT=dB8bj+JtYiYh|fw3X}P8&*?H5vXxH;F}~)ZJrM0A-Wo+5l|4&?V)wi{39m_Yh<< zl9CtqrMu-DlNTSa0s|=x$1{x;(ux&m?>_v~^+IiMHPXe(|NgdY2KLd;y5gL;c!!mP z*bL+~nsQflNl=Vr(Yv$L=U{?GE+<-r{!&8sV9Tk17zg!+USe!WelN#7xj1%TWE4t%_WEYDG+ z>M_mt>qPob#wCg-w|WVC_x2Q{_%Vhc8D}LMw&ceR4B@=7KA~o8;eC#|b-mrcEI()& zv|IC=^N@c@@zjIe>6JqV{B^Ouy!f~#H#v@;itr3*EsGzO&p0gi$B^1jn!>zHfw_XWTM`=5z*`oL*<@fPo^vj>3N3i#}Fl6FoC zvtFY-d|oZ2kXM;II%5k32ZN#PLY)i315On@(ugMH#}H%<9F?wb7EMIF(7xKMzl=0ypvE^l(yK$3_Q z2=%tYAirIXn-Mw${HQ77%Qy(RjYZMkSFms zYxXVGBn|@Rly0-(P0lq>vLoT%j+qxZCf+UIuY$$(ax)9P8QXvaAUhm~)4hZ z<#1PH_qlSS=z^1Nby`4VUpxBt(Jtu?TDIYfSmOHQwB=u~GM%>hNVPfH@`Eqp8)ilN z^H;FFoSm{Zq7av~Y`xR=#-IUI=Z_gW#xJ9V&d!+rY^!r*)@6rGmkA#ehPm&ZE`h`i zXzi6;jvwEAh?Dwcs-~6ldZenRrHm2jU4=Jd;AR2&_*Ka`ygI^qn%icus(9?MB9)Hfc#z}ric7$!6Lz5#JrdZx;Iby*>iPau2V{S*^#XIB^3d-1nlv|%> zo_8#9Yg!KrawRU;^$Tx2#umXn8nON8ts0%ff-O>0{l#h<;Xr8mK%6Ii_s1vNNJTaO z##FhO^r-_JK}A4{*w4wHk~aOieGdx1B`qyoV%nUs)ERT23mxhDrjHB)f-v?~2v#=& z6_Ib{8`pOd5j|?#1PETuoab|5+sv`uE>-7@#Na1CX4N522Lj&nygtFAY+(<;9sA(bd&_j3SCMn-b5 z7@?9G=bE1GQp&;S9`heH3a0DB$!slp5iX*AK;V)A@`R6^;`vsX^r2smkM!#%$^Ds|!;f3K8HlJ!=?$KVw z0>CV(`5e{$7FI$}5})Bj%^k$3Q`Yz7{>Y?OQPHx){A#N+|KO;`6!LXjH{IV{f{nzPehd1&zmTMPm0<_ZpMQv^Uh@BkV=jx$qC!YbK6)Ce6BiX1Pu99J z@EbzU%S~DTUfX7$2(a|N7cbrWQGlZn1;m}>OfB3@@*mxx1wd!!446%KXX@0Z@ z6OMZCT{&%SfKyLaIq1gb5Vv1H;2`rV;4ckFPQI9Vxt{r_-@B<5ANtc8gu#6M9(dg6 zqVCE8@t)J8O#nYYJBZZ@ggY|~1`|D5jz2s+90Ve$To&0!KL7`yuRmFmxxeowEFyx~ zEUOpvJ6!t@`iIm14~|)O+)N~+t$p(~8VrVbp|`!UkzG?$qemBU557Pof4n=d=8G_D z)wzaVe@YR{w%GFa8<50w!VOA!YG$1wfvjh?h0;V1nReINGtXvL`wdo(&#n<#fRp$( ze^M=wNA5TID|TD+5z9XEB710ofHFez6vV|p5$|W&xp2X}>e5MnirH$aX<(nQJdBG; zTNhOjchiybANo3T_VFdhK_MkCYy*cYhCc9=pqE!xy>_djXQJAPa@^S4cn;#wn;q$|5~_glS3Qr9_<>V-?U4cb(EA`>YvABKv0W?gR^__shnpf2aoZDD)=`GV}5I z*wiErPHcd6>HtN(hT4FN%bPxTCI$hi&xyeiYVR{LeMz<-0@8>_mfDU{H1c=CRl?d z7G%CmQD6*GEwC8K5S#Iy51jGaEagcuGphG`;^gGij;Bqm59$YSDrxb{y%_favEyHW zWK6lHUKZWKA(m9e|0Mw05ToPc1HSB;qxPuFvt14;nQSdopeJehcu#4~oDv|&GNF@R z8#FQs3WKlT{)?E>eHuj!%n+$R0Zqw|IEaXd{sf4l+1uM=)29D}{EG)0A`Z);i_J=B z=&0B<{p1XARO~7;e}hk|#0^l$^OwJCNO|zCX%@gde*osE7V-LZx>=4K9+q-<=RrIB zz0E*||1~1hpx^3 z!?D6?yqb8|s>GGAGXj;EY-M`>lQdi|NA&W~(u~)%Q{=r*|1A|Z$FL3pw=Y#7v#O!E z_-^^Q;eVX+8@)bo7@N?>h7Z7o2YH>WlZ%QP{``#OaUc0>yf*}Qla4)-$^nsZKACwz z9)?ewUs)ON$lucvi~%Yr>TLe%^8X^@z@l&kX1+CFoi$h5A(=u$Lx1@-8Uf(>I<6gO z>pZzEi2vm$?d0(!a$~>sJR`q#C@=DUUBU+>O&@;&poBeh8On2VP5AlgH7GpzdNfvY;P*lV7t`XG%oP7iDY zuglDElNW84T&h(kw}*L&)0;R4wCPDIG9DY0U174VZcEbHO^y7P-M{h4j-tC_AWTj; zor$8a%C~;jWZ9?9tuptTYitXR`BHjdp?m^W+`b=q3of)wF#1)G@$Kl2jCzD-Kmvun zgmn+9)p(1Oy-tDl$X78hj+bADUG$DD9R=QxQ!dm+05NpIf|Vl2MiCc~mZfzX69Uw+ z?Rb)G7Rm;>=w$Ei6p30XUsT*i(&DP?FD7PtC_%h32?Z+qTqqC5+LG~IDGcyE=&hM(}Z}32>HAeE(5pa06U?{DVWJ8d12+;JU}w zWM$adPCb6{sKM6Y|8isI;UnYY2MfXYBqBI)9O6=i0ZZ)V2+s_wpO4Z}xHPIhHUhplaITdnq|w_^v&0sdFwa!KOX*~Q4n$gjzP zmn4lQrg3og+c4y{$Nrh!ec36{w1>Melj;6|-~r&i1_!@+H=h|d{b}bYtBtq6gMo1Z zZVN3c0@M!ZZoEGs*Z&`84bpWIpYz*%^70^czIUc`_xJ!*z<3|grk@8xpcU%jXpYLa z)6&v%SxxuOIF7(CZ#reg3kxnatYLrtLD{D468&RkBS>`Wnwr6V)`sxSPNS0vP#Dv; ztw1JANueN?T^y39HIBW#fH>8BrN!Fr-E=_hT))lF?>r+|`4TEw4tP77Wh;9+lq0|A zBRb=|ntto%jmz!%%Xj_#su}(}LS8#Fikg~4YT_r1Vq#*~#@MOf9iE)jFL7Bt+$b&| zo}26cy*+)Bd38by_Uu|e`;dH7!{_2?+!bNOL(QCa<}U8L&zP(NLNb(IuA%nj@5;<; zdpt8V?141Z#M*(D1U|hT6&<~wP#$nQbD(o)w%!-8?>bK6fMvaAT3^iw{AvXJ(Z@b( zJZj;uKM(e<6R!Ub0wb)o<@)N~#^Z?!D`j{qYYO5trm3k(Xu1a|dukU$DZflQ%0~IP z_9eu)S0#%A1(}hW&W!jQU(3s?4s6)T}%5R0p{Sy z$gQV9GXiMIt?8N=%>vcE)cNyJ&=CMiH%8)8Fg`xsDDY^MCw)v~bA5d==IT$(>lsY0 zZ!ysMQe2ehBgg4#-1x3G4(OyO*~&ezf6piFnm!J0c`7S=8x4pipvAUuB1>*^(1v8( z=Mva0tKa#)?s0R$t3JHlJSr**@S-8vEF)uMaVkuEXBWl%v^IX%N{oq4@oM|A7@(sd z{Xy-79o7n#j7KB-0~9;VTQ{#y5#0O>oQ{URet5p!<5NoP)eQ+C^%=0|0H;VL9`LcN zOHup`njEBIuj&UIAKD z{1`E?m&XwpeqEf}vC}QNyE4T5A)hUH=i1JWoc3tkJI_aHyBeA{FZ+Q41pHrtOCR5O zuSW?VA78+_vS~IP9t$L4PqcqT+WQ6Hi);to7|XRVBv!$4?Cro||GIr&=U322fWi*g z<6`RzG#|k1{h4mQFzoK>0df>+bz*>0{Mk=xj_O=mY$r8cE~|%je)43V;4He-PAsw) z0oOoGMRqP_m6b)SL8nNbE5q>3&J*y*w6cT4ri%EMmk5|@wlYxT~O||qR2^eyv;j1aAzJ84~seK?V zn?!J~Ld22ndX?6=Kt0A0k^SphKI56G5neUXf1bv-y|t-bu3vfQ$M(mE_rmk=UJSLF za{)CA?Ovf;puLH^wXWgcEgRS z6|u4>-IZ0hc6-oYtuY?sE@bNe=<(y65{S)vQYxvZDtmvg<1*iijv{T*vwB^AsdUz(MbKq=uK*bi&b7Q8{}o`R zL66VHQ>0}-H4RPM@P92(O-~U@Z6LOIl86wush^F`X8BxXu)Ibx9?8-4LtEEa_OG_5 zx|$!4O7K;_9S$z;^O|X{)IJc7XnQ_XFeFgt@bu{Ti68oj&CbrMsHmVJE^~^C?8gH0 z%Mb72g>_k1riuExbuF<~AAlq@HIPxYf#6F(1%h`{#RnvfJuXYbNW`VRbB^YrX2T!#L7#Da{xCar)H zB(Q$~0c41v_4R8v=HFI%(R9MZteUn^HEx2wu;0V6%0PR9304)b>p$OW#_0ljPV|zE zfHzWEm2&dBe&V3aATuv{uZu)VK4{^)`UK_!#sW6f0)7&S{+_S^A~H>Vef?b9qzbjvbqE!QYALqH~?g7b7&dx9K)PE(>29S#!b3<)cY}0yDBTE%bf_bYL@L-T9^EtN z*-O~F+%rxY`u~1KOt&Kmd*SxbWQ2j2v~hAi9u9cPpeMM%&Y%i6idTT0LBlCG5e_?r zCPYR6c1Bz;0~&d!MSVlV#?4mN0G9uC&)^o)^XJu`XXYMl`p5yF)JoNJzJEsF1^sIu_Q(W|BewGb|xUQ~Jy+*d0`LX%f3`AN*P`rgfB(*30YwltDCO!n zIl?sAg5%R+c9Xscf-Tw|2?>cXNviGb?at0lNNQ@Tl9pC@Obq5vQ?6cP&U_U{8e9}G zp#AxJw2O<2;>t?)RYeKdaJ~u;((F+B9K%^zS&dChI4z%1#6GXDuW!6NY^nbEhYoy? zj||g8h=N708UNwo!DIJ((Mx1_aCVjZk^Z9J-2vh)BW%LL3Kel*@A&%q@;UuQemrG= zIt{3djgB_z3P9xZx#sv`w}hG^hXjs9+2GgK({gqVMmD36v1+!s9e6Idxw!n@dY(|cysXcF zk2*Oyi7)WA3;`ZaGEaH-;8HwPTuZt@W&7ZuFN%a4l^oS$xwzzPTQx&+1)yJXlc>QU9*W z=dz7W$f_NbX4i~D>397qH7$+a04rF0w%u3ou;a-usK*El2dq!=lod_FAmhOMtE3Ml z%`GiCD&He6uf`S@&?;wi>Q0hcOu51j5A7bGn2kTbg-lIN6_=HWmz&7)IUPKs(9qD>$O)xr-o7l=s1!LmsWBU_vYD$% z?}h$nKGyL&hvKkzk{kaEKE?6>hGYK!7x}*itN-ukM0xxK$wayUl^hYop+j)L+}w3c z$rA&=YP7?*bz?c$I5?ZIsLI52(56pZ$8_El7>o%Vn!y6thq5yN^v36VTsg%1{-3*KvOLq;wx7wk7WKR<(f z(yBE#+8jz$DxD%GBkTS5J8kX4>lHG*dbxIRVIdvxXq&}GoWQ_9OIzE%61CEoNyD5% zLQzQuek52z$B@5H`k~l~5tkzD;109sr08DV!I+`2VbUaYxw*RLbaYV03Y{XiU$q^* z!bV;_Uh9E;O49d2QBza%SP!SK0ukP3z7A#36j#t~|E;w(Gll=XBjl~Ox1h>*e0|@G zsllL(Fxi1PJEC11cpfIiuc#!gU79%(AlVFoZ&gP}M_*4jv?CU%gln>dSn{BjPDSM8 zypp8CadB}mG&F?B%gY1rmXwluZpuYsTulrviyMyc*NNZlU_SWv)@yQRhUiv`iYku$ z=)x$Z2Lh=|;o08$t4u}3q#Q3ZLEn1wFYS83|6XeQ!i(qi>#mKH>>ob}-B)~h-`LIv zNm9Xu_Q1ss1Qxtc$_3A=D13pBAof;X9^>+GDRRNSqiswS2`AiU3@-%w{ZlqcACl8NL*N$Y(l=(1l%et*s(S&1{ge^Ce7AbV6hOQ_4oHz8Fs;wiTDufG}r~p(FKA- zwxB!pwKd&J%l|{b_gLl(2?;rUFp-H^I0(@$XPaN?`S}ysN5o*fpS@5Ohpi<=j&9AZ zg_DmjdHn7&{j%Fgse9uD0^vEO5%5aaRQmq&U9t-bTM`;mBC3gr2{5-B4lXYEqCY7o z{F?iwTv|C2*z$a2|J)66N=r&)tp!2K1Gxkogpr6|Z4{A2?EQ1K7UPqXL2+?7kj|k* z=4!tOFA$O!okxYY+B(Y1F#=v@=jOtLhwAIW5{()eQ2;Rz(R!vr*j}eiKdT|@eMFr$ z>!g+I_#=gj0J(9s=6JusVf-Ks_z!~E&uw3ebcy0pj<=;#@DQfoo#XoU{dZ02Dz{Xl z1Q`m?+w`#lyOg$-WYyW&JD+`itG@M8CRFA7Uw1>2FLLpIx91=CXRDw2Ut0Jh8T#N_ ze)xb_Qc{ww^4(#3>=lc49Ww8d3!cdRu>=n2hL z(l|M~BC@?&>b*^9<%~q$IR3#=mm$Z?IB9&_`%OD4nbGs7mG4~;JInGA1>whPwLGPb zwmgY@L55G^2pKY7j;Kh1$Vh=g?h(nd1?x{8TrX2-e3x52Vaf83qNwoA^;y=F5XA6e zcWSoPllzCw9K0BImHBT{27Ld-=%(x&}#kXGSW9>2*PK)ZClb$#Ij}Ne5AJkREL2Qs%d4|4IYP`uq z@@0cTNmVZp%i{9uue_8^+8jzb)5HS(u!i-*!ivvf0a!+GVzV3lF8GfBg)5U}u8gGd z2c2?U92^2}@MW5h^tV#%nz15XcGFHg0FKIH!tPVX9q6Z;TCc>!){a^%KbD=9AQc`~ z+zY$hpun{E+H~Yr4KmXYBO0pQco>SM*|ThTenIqID$DS-<@m;5X@FJ}31QdQqQ7lT zlAkz0`qqMtqr3wHw(%}CE1|cja85UUd*g7OEX8YR17D;IPw`1$69YrZGFC?yx&OE> zw(-cItWtl#t@HnT5`l>WXyC(oInk)uYfC=QuVA>Su;HfTfBNt&uejF0qhNfr2ATBS z5r(W~!?@CTZveKvTK3*PJcKgvxSsFctvo%}J)_P&b#0xAOiApoYiM}!dfORx*W8IX zwfM(jgGXF?#Y}ubLMkdq=QstHRoPB-?z4?eHcI!XzZ@W7=H3r6$%uMivOo+^*87Uf z%Y#)?rtHGP*tRtrp1)5e|7dT|ZOO5ZMvb^S(PjwJN`!>^T>YS_xDdra*5giA1UVK? zVv{6SFq;L$-Czbp5i)aDq{Ua0^AnVxL5UDwQbrf!x5;cE_7c03KFcRSi6O{C$ZuJc zD%S=qGRL1dKjB-1G_m2qJh1p&HKa2B2lX>BlW@=AF#gK?nrV8Q^Oi(an=8V`s` zB0z{Q-#OSu3T#}>MGKG#48tM(cLwdw@87>6pEOyJl70DyjyEx={xqGEcl;E!Pb z>WpT|T*;)f$BF2_v#%6NTcB)AOP8QJh&}74YTGVN=a^-^%8x4r(`h& zRc1@-vKlk|Nd!&QqW7`^2=3;qn*8nIQp-vI3wt@bZ3s4I=*hfw`7^o4a026-Xj2fsG}DY{sgvJ0_{ci}3IuBn$=#9<@53Hnki!qj_KMca4pGvFyT8 z_9QtEDNM}QK_@-0>Olh*{;6z8@7zl`pzCG2!q#7BYHDg^1o*MNrg=&nGmBZg5HnJl z=B45;$bZg=VEQ^<#Q)J}f4S|2qUZw;>5GA+!^7R(?%7#lLKe-JR-YtQMZnNl(xKlY zma_Y@lVCL;K}Q*MLZeI*i=D&__w_6e*6ZXPq zWo1nm)nXxB^ge3iM~ey@8qVeoVj4czX`GJ+;EIY0R{8qm5FBnlXQs3=*e zc*Q3uf7@jw-Y+kV+r_fsg41=h{%kd7&X$oV@`2}Qsa)0+f#HIEKX~0 ze+jcB<&vF{f!62$@R^#*7TB`KlbhJT~?TV7m3ZSdjow-o2jDbza^JcxgBoPn(M* zEm>d>Oh=i1*{Y8)kn|Y^Y&;|w{SNQyaUdKm{Xtl<7+f;+OvWU%J7@oX_q2MRIsE%Y zGJD|Wb6{;Stfnie3cX!=r97+$)-i6DnCgV4jw#skjy9glo&jm?Pd$>kI_b$}m;Qh0 zo5XhtFHX|b^`FS?b{@zF{lLcq9r&VDnS#L~O%pIauDl2Usquh}B(2RXQU5R5z~Z|) zl1bw8unq&N@287A9TwJ`;i2y&=Rh*Bx3=y%8x>`DW06!Xg!&k1 zN*;c+H`sN#V9I1{{aS`MA`pguzu8fxeiyFxlBJ?C7P+)VF@+NEo-e`-!j% zMTw2cW%vjejRcSngrb5vNnS%;rdhr8oe+hT5JhOu+FN&bULI16udHl_m=@F)`#5V;evMY-XK!0b1A{i|@XF5gTJz!<2lt!W%bv9l*KG zLuAJ*&@vr?web9u4E8+Jn`|o&hwhy2hq}e8OhU(<&l-0M(~b++eNnC!onvP?ag|YC zTtW?}BSqseqh<=6m8qGYXBy()qDAFDduyG6*b;-a#ZN_*T2U5%&TTQ0U0RC9HRn-E z4`Okp-$iNFoXu>Lb5SuIuJXqh6c|0}fvGMKjvZAHr<`l-sTfa?jIr4!UdgLlU<2iV3XAN7^087zi&Nk9!>QeDX5sJpJgg34C_HU%_oh&xbCQSv;COg z4rZ~bTT@~m{tzA^roN|KBxz#mMt1*? zsnYOpu?h0Y;Tr29G*On;uI*xaQBp=So+yk4JBGgM?3$z9(d2{nk>gz+zs^s~fT?U~ zR-}wTBAWpR($YIZu3MH+t;n@;VhF&`DoN8?ZH^mIGCl_gph`Xd#z`GtZ^Rln-2t94 z5|<2z04qrpzBIe50#5==NKZR5OUUB4X2=G)e$0i3lOI{G_zCc{kN6*LOFuAwkuAWE zaprm*H(8*TAi`-pa>y#_!fEG^PuNE46^&bj#BOjVu#eW0y5Z#lsX`$|_iox{NMuvw z@S3{>h@WKA0V#n$DlDw`%e3@uv+JJ2`L=RhU7ehWMYX2GQQOr&77i*VHa33*q;gW% zHw12!lu+mTo%jVT&mIo6rjE@Dm7yGU##M}dr)8OtVr-u-Vp1k_0GB5iQ}Xc$KL6ik z-)R=*z#H(y)xLLb5E!x1e!s~s!Ios=;DDXRYacSR7yJ@gv)+mT1Rd;XD1g9FbWF_L z`g#JuUI*y14S?9F?{{Mc^ZqZxMN6F_VH2xl(c)uFu)G<4l-1v?lgi%okj;x=60 zuZf6()b@&QM>W2+>zqCY{*zWw5Vt0&E%8GfLT)tzliWOjR;s2oLxwZuI-wwfdk>w# zn09u*lgKi75(`+>E)zp5C7xJPq4X7pY#4=aG#@CN$-c=`o9{}ILK+iQ~ym4~yoIRLu)d3a&F(qnm)~kVY6=X7$A2u&=@1wlAmlP&`!PD;~*(jQ@W109#A6 zcE(atg)Up@Adh|zY3zXG>0g;epR?Z}@V~XSWvyu5{g2;TxfyX^b>Le)@u+gyQE5FL zVumRIRSs+7fIVM5Xjp-X8(-AWfso+-5-HH`p4v>IoMg1^PmE|s{YCDApcHl0-yAw} zh>aJ90>K_)Uj_C0L(o8)H@NOU3+*};k7 zBf9lxYHC~!^+*yuS?j&Nj<0{>WDBZ*^a4{O%xg)WJ$pv{;zdsYBAUbXv60PEGXa=K zZ~!96db%vd=Lo>LD&s!Xy83#fg&(#YDRMvuV2y%qcn)&{R$4sXgb|_Jks(f!M?gee!+yr(>co%5sw%z1mJ7w60W(lNR#GTJl4AW& zsoC~b&^0f0JU}x_VI7K$#7>Ag8q7G+&_8~PEQEpCND5aiIU3q*Pe>@?wEf51>{zR# zNd}xZ+%uYW*ZC&M@|UMO51G<5G|rEMrZwWBN-iz}dfE$SU;nELiG1bh5&+?4Qjf2bcb&lPy$Vg90 zDk>K0Mg!GiJU)ek@3~TXtJu-SY=!ObbXDMw5po^8Tfe;D&`_Ve_Y(yK*X;;nc+m>U zCun%oNP!^-ax}~5KM!`l8eQ<{WMpCrj;|^+yPIEFkKTDQBl0hc9`@UoCp{YVk}|{x zSn>=Vby9t^t4JS@$OE;~Cum;NUt}8^T$wx6HQgK~r^X99z&YHDHyDr;jo z5}I|EICjlDbUxQ>p_X=bB1dft4fX>MS1Yj&eCWaAa80_H_1e* zhv-^}mCI)}n0zY%?5wJWMqW)#%~;OYHoOYIWQ^*l5n3Q=4Qvy)D)U=eTRRhHG(Kio zEDsp?dv<-@vW5I5*Z+B;uByW|DjE^@68RpJBqY6O`DOS;h6Ow z#C8{_%_}(CwITkGQecbTxhsfF-P%veh}8=NNeC8ORY2+GvU^S+t-$edlW&bFb8vFS z@6y-DqHhwxS3IvLEYL!)SpQccj;g?f?8I61`u0r6qpQ!uo8f?gBhHB#F|@fr>8 zut)6quTk0r^%y_Jm(Ov+kJ_IeUOn!M9x3$GjOdQI5I<64fOWpo$1jr+d6KH>x{t{JCiNQM zOIo*KfJs~Xck?=76cM+kwH^Rw0-o({%E3L(aHrn@a*vt2Ym~t5z|1g5^B|dpW%7N} z4DTGJwj_#gcBeo7Uj&&H^ed&7o*f&&1}sfZ^#kmA%xkKUT-M5*-IHCQLd_c`t3Yj zfcr9?tlw5++Q^g#KEu;rGwgrw1=t=gE*Jo`)Yyx5LweF&W4tK3Z1ur7Ta+J5`F$~X zf$K=Lxgr|aGe7tymi3F&JIgfkoPWj^mhA7Ihv(DeRSp3ro=ngUz4JQ44DZRe0)P$1 zQ9x%pJwsoQY@TEu9?H56XQoH-R9|W^|db8D;vImdXjm#5q1Q$Z9c5hSoBcd4mxo%6+dF?5HP8A9Yn@+oi4Qqot z?TU4(T&lHGshkxD+LUASM-)ih=<`KM(Zm-=x;@ zorLdkNN#b%)~hPCD&oo6KV1OklY*FVzPm%a1DF6|-2LN;EzEAKpB3`fAAm88Haq-j zwTjE58mcTCIRwzx;PfJt(vPpyFs%4G>YBRv$1Yn-#!|5u3x9|y7h+Rsd(6*T_z^w6yfa1cpU?6~yk^ z*LK!knASe$BbWcnmm8S?SM`F2_%uY>tm!@&G487;eD%j97uDptZTI)~na~dApgpeb zeW!|)MCkqD+t{DLMGQbyZriZrw!8sIJD|^;UtO61F(MZMD%l6-sBmfG_#dLH=7jEN zZu%m(kRhT{u}C<@Fc|>?VFQkcRGvd)y@+gOD*iXivTCyBGIzqj2lw~6#9k#Cg)Du_ z6Q=l;WkkTwm3u$PB-621(NZYH`{qpuAd7LIW0ECLTm*;7esE$5Hl%@j6&;=j$^KGg znEX$&VTWrsk@)XWo+^ARm5V#vCsd#z9KO`vW1*6K?R)qZpEQwcV}xzX%7J)ndI#9! zJJwR}mlUyCSL}q5IiUIlA{D(tIyNZh;~9!X;Um91Mto8+(VlP`HiaE@AKe~v2D8R9`XuM@0XebM*qwwCZj%+utovXnN35$qapbW15 zIiIeD$cpI_gD-%d`%$LglM)Y{UaEUFTc6!nt~bp~an<#0XT&1k6MLLV&=ryHFaAz` zlC~cZ6o>71cAV}qlDPj)r3@ztXQZ1i{)FdA_Wc4}$;*inL$^GnHiez2{Hw;ABd|#Q zvefek_EsobyfIAALF6m2*9vr1-B&` z2wpNF*mEESN)!FWOi)*$HT<&!t_BUoxldjk64U89 zM(01DzETfffdHBUknZ#iu^;w=+W@aMiYY+-J@XUMJj_{yAsPmh3t+)a(#TV&@QHA zjv8}LD%2v$Sx?zaT!;R>elZ`AHFC?E;FXhUCUyAr%-cuOS{?UFYEtn+54acH3Mn&EZRe)OYFs?swheSe)p@u-SLTX^b;TdjMA_v82xX3lgWkz+>+$#IYocf?bZlW*j+qEP6`(o-#-sHQWk+&j%e zsZFW6yGc+d!4TgM+lAhFS{#|=Vam^9I;{pSu5NJDd2!;QVqX*A@?o}VFOJB%Nf>Qe zHQp<4Ps$eKH!94$~`y!H`k1@h@^ zi#t0^4c{D2iX?oABa`6FgDRF!fQ8n@RP3-_hIY2g3akC7<2-O7*(wpI_SqpeZ?3*WE_mF>UoA^HY!Z|xmp?&(;FxI@i8TOUu2{+5iccfhj_ArJ)%WI`!4Ao7X*>HAMANJ}~CGx-K#%0=CJGd!!3 zSwv6P!$v#;=-0a#@`wjc5(uWr`34bkbUpPm`jI;JZE9tDxN(vI<7&F}34?<5!VOMG zL?qJE2c4AQ{iU=|U?v9uK;6x0I{jJKF1b!TnZ2Lrqx3DXy%nRg2S_>t-Pt-{Yv?}O z)qw=AkdTIEdRLSnb(WFea<6Qu7Lo4iCNq#OfCf^u15ju$Dk-57!Ego-x_{~py|Cq_ zpfa~@SIcOIt$Ao1naRVOPL}oBK-cL3XpHg|j!eujER4U`qvO#?8=v0ky{KhIBS%fl z&T92VZ_wj689D>f2{$uFvKIei8~>Yc-L*h(80~OAGrQVBfxffv-~)z?rjoS0g_+x3 zHhkyEZt8Y$oe>@LS^0i=FI3r{=s5a?g`;W4DO=wA>0mUXbLj7fixds#Nig)Op(Q8Xs{tnP`YC=CV*Q`G49W!gV2yg!~ zPB|+-AK>D#20i^m4ZkY;A}Q0ETo_c%!OgJ91rQ)G6|yB;xm`fVKUaH&ikZE@A+)`qPAlg_Az!JuWZBHoeYlUY|L)Parv1 z5Df-E!zG>2yQHb;?>dr2+_B&EY##C9%eLvg-5O&s4zC7{gl05(G)thdu;|ZP+R8m0 ztkeU^FfJ}mw+||byGe%8qX~~EMGw4k)<1-nohIgo0ufZg@mB?>#r^UPhPsc#`9$7M zUJlafm78FDW7V6|s~^)^$6eKt^gDTLCkVnxdcP2( zaYLJz_=UP}bRQX9tPoX)?yt;8d*woLveN%`(rhZKx5WUp3mm3dZ(K7xgid0^WYg&J zS$C(PqQh2WFB9RB+H`%t7FujPFLJPbPg|!|@yc-WyCDvb<ch`87%I8i4c>5ZahWOSjf&`Z_&uEGQpGpErTM%z#1UkpY;b2kyd7<)$U*EYm9`XW{ z?>;JCIB(Wa_==ay$Lec9s(XnihZe6`kDQ+y;p7{L6e$lWf27Fj;3{G}Q=!Y1bG*RJ zWvO!&sJ?iMb-Q>|zVH=(#uDKh?hdedEj7A*L1Eo(j^eO~zXxuM&6c-Bp5=gZ_i;iV zte*Tj{*>Q|F)2Aqbl&}-6(@DBQ^QjfUNj~(C=$DQ z?QED__&n8Q(MU2%M=A#Pyd}bVCw*TtdJS>*d>0Bf=&SL z(`s^hy4#XxeYX^}c4kdk1@{@J*!-66%Ud9M`*QT)N5oQ>0+C(vhu{pD+$p=<1dp@r zTu0-X^Sgwr#`~EW3$e^H2FZ~@wna02a@K29Scx_KNBZ^?FG7p* ze1;yKCb|{Snu*u%35EirMqHAHgZ&?7{NI6YCT(r)5pUap7;;#rFoo~AvZ|_T7%9yr z)Vq?X($|O3ssO$SNs99uS>RIsy8^A}p)#SewS)v&A{Es;&hzrw$z(g1hUNu0gl(wM za#H#`-()=Y5;UDBksS49wXz(=T@{|Bi3(1QndK}IQ^e*RVu}p@x(uZ zPDE-lOlrbNc~8L7y&{ZUTXJ6^VC5T%u23e?7ZzzJU0(EJ{>EO`=i5-fzR>Vv9Sv<) z$({&XhGuMeukXd3*RiO9V30gzI-AREeD%>eGAVO3o z?x|ULU%i2nI}l3=qXrw=FUlD!eSwe*y7GEXHU{3I#q`!6IEc1iMK1BJeaq`(>nYi@ z$Q?II_JM`F?))x-DLUOH)z4}F)J*zbb2}WdvJzhgR|!XNmJEyO6rt6Y^e3DHd1+rj zS)Z1jy4_(!r;{K;mQkWythW?#*<;7 zocL~0Ow*Z9B?}GYRXu7r$@M|7K(uTiXc41#+q{v$E{q`tDUUcB3VO811E?KaA7zLr zuCK`X#&)_jDr|f2Bk<)&)R`AsvkBRKJxFsbJ!dMe_yWg@@e^c9po|0PEjeYo$-EB-4@o5XZf>>K>)JNBdeMx^=y#ujB8E*sij_`<~ z!th6@%?PUzgPg@-1{q$`=wlBdho-_uBTOtT6BieJq`)=!qkQq3IYIjIaoz|~z2$&S zG;5#Uz?>tEV9xmRz#1wj+D!WRVU;RB$-6c!v71KZ5GKpL_t zGaW?R)CUM5o!=R#Ovgu0k4Lc9d(e6Sm6CD!IpIE zTyKeJH3QH-slt&Oq>H(I%0rco#_sDv+Q2%Z=pO3{Qs%5kn3fup_|)g|wQ3A~UemVe zI-usVl?l`=l2CvQ@tROL=E`$ioBr^MB{9a3=QGH;ml+gYT?)LQqk-;)Vm>G;&i|*L zQ>9t>D3H_v=C%EM*y@Fp>A4}TaLH=+Tp*({_qMy7 zP{-=`?703dp0wU0LlmuUtccOSqHN0gt~#EvV$sX}2umkfq{aVa57M=e=Lo zt3NwEERuv`^GB<;?5JF`1QB!!@$zZ%yNo&?KisD?5N1d`wvr9Jh+1>M^F9vLz+Cn2 zn2pw>4^grvIPT0iJ4v*DQC&R#?XsOqWFajz^?2oR!N2GGhawIkp=Ga;HHYki0z@ZI zD8J}tXBB(ElSjuhf2ZO7bn-kv)THDn!$fc1-^^K&H4jA@L~ZbPF2u*`I#}>=2{?RY(XZ2H7zDztwp`B5JY$f;PTXii~O9iSDto3a|)vg`;kzz z+RT=Hfl;VdsH7EohJ@et)Q#}dUnde$vi|fa;;W{BD%3s=Ffr=UC>=`+(XV-Vi3ISQ zqp)Hy)&r@ZIowb;o~4pB3QM_ng|r&o|1Ea|j8LQ1H*y1guC@!jnxT?SCw}wM%xKX6 zV!Sg^kj!m?iRTi2y+CwnxKy(^igw){pnZS(5L06%=2|=~Jm+;H4w#r(*W5b#F9K3| z9N#?TZ-bbve({YBDsyp?3+(lOq7MR*%hG{Z>EpD~pU}Q~q@Fve=Nx(6U#>8v%IgWq z_D;lgK1KFxr%_0?^i{q;azr#@j!%TL2c2m|NX$q>Iu>T4*$oyxRW8j2fiCyQ`xTK+ zW-1Fb>OEvrbW%%sFiu;xt_pwci zi}%Mpmz;us6QvO&74?P#ClhR*jxixdOt20JOBdqm*oK;S7aJ=SU3xS3My5L@T5jjf z0kh6E9)t+qW>WNa$r(=sAGcm>I=Xq_d&xht$G-si`H--~z)L7DsE5ZjMv*fmxkG&7 zB9{GNfLFvH5z?8h1|!C=O9lURk%z6?`~AR!Ep3R;+DFQ*Bi@4^N`L*u7ACog_r0+z zd=aG;Re4mg%niTGxWw5cwCX4q{rf%V^nU`pa-Y-4K;NR;bgxW2lnt~%b2U;9($wZ= zF0-u^-k9~6QuEbX6XXVctxyfO%&u&W+pXU^wr!T>yb?)U@py(lx$E`66A^bRRBgwN z#>kpVF%y$v@nSQkg>;;l~~3P z-+HuS%bxa^@RCJ)0#M_gGE?%CK54kQiC3x{UYbF@oQ-aB1#D*BaI1SYmt!*&0f6LD zOJQqS+801`%VNk>?vnF_S0=9CBY8Ti z6d80@O<8EI#pC@o_{4A<^x~gtZkKX$y)-E^1|O3ObHD%NsDvg*Pl$l`iMwJ+Ey}hl zk|b-|OUKshu8)&*LBroNK=;JDV*6MCQYc)ka0mScO5qVD`P-Mc1Fa;}J3-!Jaubn@ zF_*8>$tn8kf5!y$aV#HfGUT3c2IZmvCdea@6L1~qH{ILrp<{sGf59@MJUH@7G)h}d z8;{OnCiz%7+|4s(nIoE_QEcfMu6ykYHP!q4qw3Y{-XDGhCY88%b;Y4&9p(pMC_$whKbO8a;_jAoe9Us4q8 zuo}gD&|at>hy+4-M$aQ7a{{4Yk|?S~iX3T%lF@{C`BzvwcoS76zY^PYhaWNX#I}Qy z^;DOdQK!GnQD<9&uE(i2LuzN*omW+T`E#@vHpyBadlgsgLS>4&BWN)+lf|rS<)R8c z&0M;zwJ;O@HGS&K2GQ64%1zOlQq;4QoB+z2TKayk*3tNJDB4-pJ0r??4W;+E`!eCW zmVIP!_rd@CM$2Q%kP=DA$Y-Pfy}RRWXwv0cWjhah=|+B_j2F(rsUwj&U;c^FjJ5^T zdZ}R8Hur>v;wiT6x}oFVCo>m!08r*EX<2@ygWt5d-N-4~x@d$|-XuUr>x;)@8ZNIm zWJbHaLvORyn8uUM!~45a-n6*Zr&;H+oyi z95!?5vet*Cu)#d@Cak@9c34os*{Ww7a+pXWstq5)X}k}dRv5a%ySN1-ymQS##%g$EPSFs^+4PZc+dZA0}Oz0AQh{FW|LGFHK@@oM(zW8@Z zNdS5U_JWS!-*O%2*~tt9T$2lkWP5|Za}~d~Q$AfHfBT^xS+l)dufeBejd$$+;!45u zK!dVS<48mgc;e*rgD^?CHZ1`L=Cge$tNyZM;aE<-nNPQ+IrX|gG;X4~p296EQTK@m zyZ)Rb67Xbc>r)%X=9=&D_VpKldzbNWRV30ECG5W&(Bqps>e1ZoUMOF2LT3KPW9}L? z_1?m$=SPBv*#HU9SgXvnoV62bnB=s5PKE@0oVCytFrwDGw%pdiQX2IV4f2J6{R)pa z^%B>c&&f4wS==Lg2oeNZL^hhwpBDchDsn`WS|nb+Qvfv6onkD$Kvd1;zjlh^L{y$g zK94zF+wRj~*Xzq#N<&kZduP+5?>OfIftrh7?;;hxwcvku$GlwoEVxA^5LL$Vu>yEa zvm@}pJQ?!fs-sC{bBpRB{rBZ0l=WD~eu3AuZO-L01ij;SSeUL&W6K*rtql`sp)k-? zN*E^(R;lqQ#29V&#J9Fv9}4Jr$VbzdDH-33SwFrj8rwt7UbcJtJ{pDfwYjdcN%vub zL~#vragFH;?&T%(UafwkRHgFjnRBVb#v&8hzRQOHeKSV=8(}*g-B@M|eJ_VRaN~a& z8N{c-AQ2Fle;Y#>*s%g~>I3zTyP%h|0hX5@97~4IZGkwDaj!>XTdEGJ&KRY22dnYn z`|}xsNqySkoEaS_Mf#dvM?qLn`xeZY&$;-V-C@oX>B)PKlkeAUjr167cSv>Pp#EhR zP7`(v?TLMdAgTdF%v+imC7KuyE<~}sAO&!gzYUg2N_Z5-Do4WjeLfq$XvEN6nz1JZ4v8T=GY2^K!hly51bOxzh7Nt!aF0qCq z?`s2l#qiz<4L{)vupa`(e6Dt#poD;(g&vo47AJv}_Ylx~BV}Ph4|z!%y}l*-#1FQd zJfd{m{I=(K^XBn40NYU(S-x(kj*R>h2cNUmx{bg5+jgcy7oh$2yR@sL)vs|ZM|bRz zyP~c|MfYbe^u@B^BE7L>6AqYvpxkP_wY zL^aVg<#AkbgU!QqKX92)%<-|>P0LwXzL)(g2!lO(M43XjjswUP-bTE3sRkc@;Mv;i z=!V9?QNB51iSg9vGhF#@q`RUL&QyzO-d19W;`K`UkbVhl$oI*7$sf|5rcxu- zfDLT;erQPs(8AG1bRzc7E-g~_!_IxQ=|*AGl*4mlkH@wc@lciX7#D9qy=1F=vzROR zTQke!-2h$IW;x7_;TwE|qHOVGEi=gu`mi;Y=HRaZBJK>O6mzQDsU=YfSu+yt9FN27 zZenA_4&H=k?y^%rn)zwk`P6X%wv94cwJ4&SsJq@Quf^-eKWhE2?$Qs&6r^7k82eD; zYkt)J1820|5ug4}3UnUCHB0L>_{@3wAY)LuxE9y%z>(1CP@PP~{JBp5iPrJ8nfb** z?!_t_9pFfz63WT60^@0?MI&@z8^!Y@^232Yl@#42dube%2t=+VDqBq+euDxf5&!rpu)Y>b2?Y@dY`YAox1Pyt zu;u*L-8wZLTAI3FT%7DD+&pI!0yd4A8Kis}WHb11SwA#1_=E|?Lk`+NhTTD63&cPNEVXA1FW7-a=KyKfmMX`fZVrUT)n%-@vw4vC?vFdx_o!- z{mqnX?utMh9t8o{Eg<`4SmP_>Iy8z1ZEGFd@rY5+ObT26HlfR!*uH`J%*+zodV)mM zM0Et_;&*S~;&9Lyg@4A5|MFHGc`jj)D`g972w(Qn*1UVmRZl;D(EjG}(3|Tl!~1aM z>e6T^+0YK{2j+G(BMy#|!z2Fd7zkaAQ&#hiy}iJ%#Ys)75RcohOLkkoQn)208~vx! zM&x9woXduObq{JN79@4wav67PgROy}l`^KPio*g0dcp!aND~Gpw>r9zU()nm#>$FL zWP~Ayp*EbXkNgqxK8k|lFU-oKJUKa3-n6YkdgG4&m)lK}VQua3tet;yQA8#-BBFbE zI5It*j7~nacd^NN4ul99nWwT3bF;HQW5@+zZF81ZR^7m!dBDDy%YM5C14p^qxdZk) zR7&%t)A~6Rj+9$bFZXI+q;<_e#?D>&PZvX#(*y6485v5Aj;c`~k54!YV^Ox|zgiZ$ zoerMQ?vTc0RICk8ke-fCVy|1g66wyu_D75SBY}KLeqVX?X8?LSvh_~RF+uI>RMy(k z($0AfH5ZyUo@c+G8BaV?`0#F#%QnAMf`p4UF*@j0C*5~z$JgU^%k}L_)?+04C3$C9 zNJp}gfn65Ps3NcF+2q8>2a!zr*3c^rb1~YdH@u#+1{NAZR62UiE{wo!4gVC%U*FtR zgZ|1PdA74h;KUizWB#%8yeh~Q;h3LP))2z z-WKx_D#UDnhx*~8{A*YzmdjfgzjolAb7N!tV!V~Y*C|}eLq(S`cA0UwU+<&)hY>H< zas$ddyh#QHwD@V>qqtiv9pe2WeKGeCGLiFA)IQ*$ZIDf9h&Tc7K5-H$WaG zJ@`Ca%s7L8SlTucw$}d`3uDI9Of35QkvQMH2~+nLH25}IwYkdZ(jsMMl{&2#1AU*R57fCqExU{A}=)vfp{`EmaK3-pY?q@)_M9Y`ZpAIG$Z%zUi z=xa`=Mm@|un@eb2jaN=;quj=M+YTjH)S8=eBfLm;=EKm)lhbHIx!Duq!t=zFvq*pc z`itCPUHkKYtL`kLs_LSCkD~A>AR!~J^ix4Xw+492Ow_KG?GYpykaOOny$zJ@MEg0&Ids$Jp?&6l(T zRTpmw^omJBwy}-vU9Y@~)Qb_9zF_@{@x0D4)YytD<>NeGqG_C}aW@5WDfmP88T0$* zwC~E4ab~&Jp*IW2V?ob*oL?+Y*kec+SDm4?DCkcdQTyJsK8#r{SC598?<;^Ha)F z==QQ%PHOp=oCfP4#?<4YMj3~c&v-v63AfdG<7(VWSJFr`%AQN0@N=v9yHqGdZS#_@ zy1(AON^OYaw4j{FXw*lTW6QeTmNX$=48xE5I{%+x;s(v>`t0*+$rUhAm=lHMY10xBqt{{NA_V{fYPe z{e@iaL^s{0)67L@#VQI-!n*_$E>c~H^J}9 ze6rJ9c-lw3|2J{b_oKK$>+Aq~0$pqF%g1)_Biz)~xTb4ZKRcC~a)&EfDOR_ACqzOyC2xcF~^pn9kO_WOW)D{?`^Gj~qkV$*)rd`(E( zVV7fka5YtdvL)mnmJJ&c+-d18?9Bcv6<=PaXUXQwUDLh{>{RTiQ$A;tSIM}cr?U7v z{o3Dun6s?v-X7fR{xkkQ`=fDYcJs5)WP#K(ibtpSgMzOt3}s_VkB>iLFPp`!xmlJ6 zgzsL#PS@&Ns>}27MxcDE7Dk{JU0jy<4!Wp$Gtg0~0@fzX=I-w$jr8!342)StRRfbl zD3$ALqzR6>oYnZKhYz*PeF@!nF6HMfxvt}W98;WqoIF=!tJA@x_Q^(9&EzTpaaFY9+zwB*mC~cak~ruxcF#c+Iw+v-2#7EAJ)=b zIC0`Ne?*tnJIw1Q%_ZAJS=_BwvlOX7gHs($-e|2;Xxbk7s= zm@I!PEc_I!NRTuh+l_0FU4wGUM5#-QCjZ8JSfkNXJ~cn*IpVfNEE1CNLBlvGFuhU> zw{=TO5^iD=AA*DD^S_p+LrHW6yT`g6an z-Wy#uCS#oK%&`n>dVFXfo1(d($Fp7MX_<4lp2R?3nwgsz<$n0|QU%eM;LA)xEU_^q ze=CF|-B|O!-+6j#8P(WBLayWBtn_I-(qbaUJ$hk;NyT^eO(cn(&MR+;bQHGS@&%pD zjXfA=^{u`=&tJR?DQ)+Q8TBh2^(c*@=8QNO7(;Dd6xQU2hlxwI zEx1j;v&CO%qH#^aVe#eJ$@s8c`MMP6`dneNk<|6CHY_*$8Pm5KY%(8HX7b$T?i#$g z_g+r#)wvBaHVf(>X~YM z;}I@;-)?N}%GlT%R1IJ8$h)mdF_)8X*T32Av_QOLezKRSe8ZFM;5f*)jq;JPqpu^Ov@ZHYX`1W-TnEeoC!`g?A93JYP8}>k7t$`K@+bysq-6 zlHJF(m5qu#^XmniyxcL@7e0NUJ(~`9TU+rvxIL5-p4_Cr&~la?<`pjYFw%?!`b#y{pVmN}%fp1xwzF}u7_RAuE>_Sd?`^(7Ew zyhfbY*kAA6@1jaSO6qq8vqAAJV7~R^!NAyGCLR6r=Z*`|`&C^8(Oq=SvvWHx8<~^X znP9$_kg|dcb_%K@&FB^At7u(EdYK!xk+1kce@J!sN!BxTqtWBsn4?aGN4esEj3 z{$_jq^AFAYu9OT*jh_CNco$CgTx^9ctBVhxhwFI0EoDny7}2u2%$5x{@Lp34xE!*F z;%Wloacz=p1o&&+BAtIh0&;r?zPOS6Q^z=sfJ{1%z$pFE(fB8AtINH-tT&50O-sSM zR-ZOY`@R)YAM{I~d{|KXc@vMZ;k>Kg^0d%4&q$;lmGCEDL%nUA|*6>!f{>(e!xWr_RPnR0dw7ED}JTj9WiNe+DRk7~^3 z>%#SsO%}2~CnRz%S-k><7Qd1-Q7VDs20?Q%@uXY6kJ0K|l`uHFPXZk_B)JD_+O%vA zdgX8oDniy#gO#6*noh_0Ev>^=kVDdRWFx0Y_8M(tisb-O1d0IrN6g?!IA{Z$9Mw_fl1tYy19c7tn*?yTkZ7}hA{onJTu(+yoRlu**SMaB?YYg{mKIV z`~G#t*^uPsuE*~(y{xbUXxd9ee-yP)sJt}fi&EWRuXYc4W!=p;qv@NEPBLc}?ek1M zQIwI^4ZSNzNw%eBpAj;5WKU=})(HaJo6z`2pr0Qb>wj<6yG_BfY>$=b;M;W(MXB=* z!sA6nW(4{6Wa@iC%T9{rsab#P-k!vqLHpl3kCXuU{SRcFKlYOe;@B_dZ2hws2_jvhP{LH5#A1O+)k=9nlPnPT9 zCFGm8%;`0ZPc&9Og@))ee1`m+azWI}qCTaJ0Q>pkeqfp3uWK8$kI;wXfEX#xeLvW7ojyl{ub#w`Z!aRhcB3HaJ z^l7-}^pWO+s|+?0AupiJWdHy8NYPLHCI4T)c=%05ByDXUxVgFM>gtBZ#y+vO<^^z9 zW=>8}WaM?&SI9;4B|*$NS^{^}>w-I(ZZ-UahFT#b+hS)3tIyM{O#*tG=bKy1^-o)15IhKc4ud2;iw6ngj)h6`ye;f z)n$flSgl%I0NM0xoJ|3wSo-fa2n)CPk=>%=*7p7>1?@scwoG2C)DM(0zb{|(0NDY2 ztYFvx3)K$P3hkZ*p#*W)xMUm_4O4D1a`MKr)01)_7^u^iAZ_#{*|8~McYoimzrP=0 zP9nH6EiNrCs?F_fZOGc|S=Vr0e}LeCAc+wH^gz7RWuA7LiHT|E*Zk`@Z|odv)<>Jw z&!)7vAnEtmMJ#Ws_SY{GufoLbp}c(S6dkbir(?LZZ!EN?rrilSLW5bSC(dV|Mi}w? zLMAye)99PI+Y8bqNSJ5ctK2vhDBH51{+{P{wu?J5SZa+RTv?&n$}85{ z%Cl@gQm?^+kO!?sMZ$CDQOBjxiIL%&*TIn`TI;3r;wz^4Z_O z#$cvnhEeIiC7qq8@s~Ev^4v%uurZXr4gnd`OP5js)8+x7kqAl+hjS6_O+f6i9kqM+ z?j2HN3=BO(xvGxXtyUq&ZRU7>(>dDd!xp`98e(;G>Tfw zhpMR3vQ*N?H?OQbSIdjf`lZSKM_nNoe8B~~YV<(0ApTU1zN27qNrhnW zfwij0-;y^b;+P`=!MDdJf^4>1q4ZhBf8v6Ei zUuOhjgD37D`Q5K^B=%;>8TgP*9Z5pVUjV#UEEWs7ozyH5?MElw@d8Ca^UHa|_U32Q zpFgkOgmeM@Q+;a>Q-i>Gx(g z+;Prs`$fqJW2@7w;Dvidvg^ryq0^o*l%pFcxrXNEgfl9&$2WS#PjYr@;mva^Que#~ z?q2le#nVl^4oy!gp4hLftN>n%lq;UoU4CP<$k%A#oBCE+nJ+LXimcJkVEek9qGI)& z!E?rn%HU%YbWh^buRNc3cWs99HG6@=OC^A5z`ondaux#qn20?F0z?e;+J&32Wi~u9 zu^Z4(h2!fg#4aAkeUmo30wZL5@n~+by+1FN%7y=-eh*-?CKG;gM#hbm=f@cUV2tnn zTV>QeYq9w^-rQi9Nc33FON|_Gxqe9o90VoboAW(ywuyb zRLQRU)aB*nE`YUxME}r)gf3e1s#I|sd_dlEP*YRmsbEQt4-b*20P-Hi6?$Rm7cZ`v z*Pia{o&KGlpPyq3P3p6u+;RYl>?Lk)Zst38H1`i(4<;X5Sa7kayHdgJNodAOod+W{n=7TDJY%&pqvK73$zcqpgKZp|~|Vvlyv10y3NA8P$iUWRip zenhNMZmRytT}E3R0vK2 zmMIjoh}^$ROnNoWYBla5@T8etb70k@ce8-&~9ffeFd^9Je z#_46=P>`tTXdbJDC)(QDc(FWsmq|!SV0p^6tonFhZ_Q4`{cI=MKPX5SQV8&%!*q0X zB#Z+z+O7gBp*o08C_IWyg~x0{@Ct)y8x%*KK72O}!*DgE#PBx?c*G0XqwK7tiZ$6g zUiC9Mub7hLT$kRZrKR1ye?Jon7#eytm{B4)B!u)0q{`nPOvYpu7KXt#&Om?iJ3Q8Z zpQ7gh6rH198GVE84S>6lbg76tN(6s=F&Ib=fr4`Dv=CQSS33fz1aB|?4#?!j_uAU1 zS^$bv<`i*a6ybgijg95Nns(e9R53C#y2-^A3Mn3xUiElT)!jh$Q2OxUCg7Z1z-HrR zWMqVfh1CO<>TodMO$OK`a6dbitre+*=+MwQpq6$+4zG7@t%O1}`#Fvcfo_EZVglcq zn2HsX@e-22<_6d-t41%M92pt;TwPu9{rk9|Qeol+Rmx#6X_EVyV@n8QFHj3M zT(H1pMlbzN$IcK+F!A%3Xrk}3voFBVn5{X%tXfqfwhx%#GYtuCz=PA_qhV!Z(}8{n zNP>AZ8pvS;{{H@TpEEc}G_BLfiJFmNl^u3h_&=>3-cG(b~Yx@mIp z@84fQ=Y-Anzr~}}0pQZ2U1)QZlzXt8ni*yTec1|lAO`-qAU-Z%zP!1!L;H)0Lp|cQ<<@7|qpo<3oyJ(=7nTQ3<0i3Bz} zJSs{CFe=T>&CJZq2s%YxL4ng57Yw5nXr-b6L`zJP+8B^hy0v^>68fR_xs-_sHE6fQ z+K`}%@dhHgh$TulnHj_`Zm@B zNZIinvOM{&%7OcFFx`iZscKl16~wiHMzJo1}G0W)P0Upztmb5L~08 zdZMq-A}%ft4=d=d^89%nNQbihv5&|d@7!rEU$d5!^suhXlgAwBjv7`@_5d@6Lp4sA znYl@5#SNWkzuiE@3FfT~lD_jsrcL;*r(F*a>QPUkh;O^@9I(^mIaPsy-ee6n7#96x zH8hfTxPK0I(A!V^UUZA8aX*Nh%JPi{o52c8Vh7Xi$(P7k)b<_R+{ESNT0LWSdz=xI~YW%+0CkM@~oQdI9VNl|v_p%8vlR)GXNBqipF4tolK=gO= z_KG$_v8bVqL4K&Lfi-O^HX1l==5+fsYN8MPxSnN>$z@}s71)RU3m_E;dkNN25lXKv zkF8TqRh4K!KmhatWzIYesJ9(mJv}f7L7fb=B6jScQ=TS^CwhBdm~zLtK1&pqdGzQ! z=z;m&<$**7PIh+0B12m4D&2j;YNblg`rm_e7pbEm5!k0$`vXjo@~+5$k#So7M946M zK+;Ob_iPfcSt`-U)m~OVeh>u%z#%$`d1>wl3=Se==k#snzr(Blue09!`phVXbnuM= z(=Oyc2glZb4K%h7I!&TbD!fP-p%qDM0x_klum9rJtA!N{pRWJo-EkqO-Me5Xpv*`O zqvw%<>EkoEx~ib2HWAwL>gCHu(8e!=WN!gr3&q8C)njbzy&KF_U%q(J0GlSB$jj4g zT9f{@wI3Rqt2rJsa6jtQ9I18|fJy_xozB%;*TX)gKx|>+84UYM`wjgD?@KYaZ^DH| zyPst#Xpa@@5ZYBHLI)29^OpM4>GTRU;wdU1YVz_qbbA>XYhG=d5sJW znZQ0kPHq$o9viBN##ts_UUCl*>UeORf)HR{^YiXYNYoB*<*8SebguS*OM(hO#A|G9 z8!SL?9URyv5g~wT2S>-Pvy+V-AZ3s-GWJ4Qr;JpUl0?ggP5;DvT$R&=aXjU`AqE2x zfP>PqvcCX#_3i1`^O9gmfc8EE+Ap?SUp9oHd#*VU-0re6t=fb>_HZlX+qZ4_Re)66 zLtE~0=+FkOR`13p?tN5o9eS;bcX)Eb3wq4T+8P@9130H@r?Y^zzWxLoGE24(A3nUz zeS-&r2~HrXYi;#~w(#`w5}82584Xou$EyH-(<&Wr@9jmGqmypI(|grRN=e~EiI^lL z7{PLNa@KaWGP*y7obt1?GY~nO9c=lVZ~}>)0~Q7i0E!CV=YniG?*X$p4Tsr_pg@i^ zGR1?aFnCvOxGXm_e)~khA8Af`US?$c47f&UsGvBO(H?bDW&{ z45js2q6ZZ#!#&42S*BqL3B+~qeWyWj6b~W*P-cs&)5p=)7!#OIAn-9fDgiS(P=?s! z;aZGEtzKs|x9J$48#u}t?IUNV3=hX-CA-D>_z-|$0Y3C1cuDWipOKS74AOS7 zJH0#5o?+qPR?UT+!D34dJWtT{~k zU)>>(vn80m6Cktgot-+r(_|c+or_=++R@nwFEn;`5_y!B2_o=+Vgme=gN-}4Z(lSw z-(V=khX92L(y_maIopMd&GZXR;@eioFccNJt>^T@JpXrk2}F4=rhuwdS-*vnQi8Y| zF%czsYiukP^br4m0IOih$1*a?&!0=`=-dJd6CS|gG`M>!q3VIO&-Qm^Xm}W(@*B}^ z6ZkYRGMjoK_cd#(l(y{9bH$+}BX1$h<5a9<|13%L(r(@tjt9?OKNO8pfsut{QeeZz zXAq&#DbB(4TYKeCHp0?^8Q?akPMBUcepgQS3kX2nz59K5*wyl~qS9DOdAVa<{z1Ra zeu?Hlf4|co3TSUU@cO$c|2xpzR$yWIYEPTQvgjz8)0~pAa+g2}YU2udd31C%+qJ%_ zDJqam3P9t!(Ymfwl~^t)@3ee|N8nX|v=P{9WNNyujE!Na%rdpf{lu{!{iei-|rq6xrW35RC#gg63-D`e{pQ1j-%>RYg6#3bea*m;>-WOca5W|$&^Me+REQ5Dr%e47s z+Ak(?B3IQswn_^K(X48O+dgcTJU*$#7eYxO!wZ{r>%! z2c2_AB^lHDtPa{`~px+1d5876>7d$8@ZiZ67+*`IMX-lR61L;%JCx!dVR< zeyeu-6~N>GTPbfOFTDh#K)WYnk1mgWk|bp91Lqq39vfSsJ6AGl0)qAzQ1|erTo2Uo z&<{Z5l(d@m#f)$awKKM@u0!Rn6qS^eaE#BTLA(mI3_II^R)HU|^$mVING_f70@*!|)0OnzAoM zEI=Sq3t2J4r>eCpgU2d3P5)3%CK>>Dw<}4E*4*42QIH^zAtjfPgPr4nUdMF?m(7Qu z4q%HxdTdu(iu2(Fci7`t#sg1RqT0mZY4*sFegI8R3md=)<76~Ui2 zeh%RfS(>*HjO8;5zh*;5ia6d3LYTnEKKMuhPWB6}K!q?}n1+z+F<-LVF)K@iKg{PU zh3Uwa&nem?Az(5~UK%7wkNkryAHX#cgsj}aC6Eq32Uk<~e{uZ(%a3&72>n?jtZGoS SK5&2+o}A1x>AXi;p8o?T*zG+4 literal 0 HcmV?d00001 diff --git a/e2e/screenshots/axis_stories.test.ts-snapshots/axis-stories/timeslip-multilayer-time-axis/should-show-start-of-week-label-on-last-month-when-tick-is-inside-extents-chrome-linux.png b/e2e/screenshots/axis_stories.test.ts-snapshots/axis-stories/timeslip-multilayer-time-axis/should-show-start-of-week-label-on-last-month-when-tick-is-inside-extents-chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7fde5e26abe9f9696bf69346711778715f6ea1 GIT binary patch literal 27898 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

ZDkgdrZM1#CvEN{fOO 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 { }, ); }); + + test.describe('Timeslip/Multilayer time axis', () => { + test('should show start of week label on last month when tick is inside extents', async ({ page }) => { + await common.expectChartAtUrlToMatchScreenshot(page)( + 'http://localhost:9001/?path=/story/area-chart--timeslip&globals=theme:light&knob-Bin width in ms (0: none specifed)=0&knob-Minor grid lines=true&knob-Shift time=0.3&knob-Stretch time=8.6&knob-Time zoom=78&knob-layerCount=2&knob-Show legend=&knob-Horizontal axis title=&knob-Top X axis=&knob-showOverlappingTicks time axis=&knob-showOverlappingLabels time axis=', + ); + }); + test('should shide start of week label on last month when tick is outside extents', async ({ page }) => { + await common.expectChartAtUrlToMatchScreenshot(page)( + 'http://localhost:9001/?path=/story/area-chart--timeslip&globals=theme:light&knob-Bin width in ms (0: none specifed)=0&knob-Minor grid lines=true&knob-Shift time=0.25&knob-Stretch time=8.6&knob-Time zoom=78&knob-layerCount=2&knob-Show legend=&knob-Horizontal axis title=&knob-Top X axis=&knob-showOverlappingTicks time axis=&knob-showOverlappingLabels time axis=', + ); + }); + }); }); diff --git a/packages/charts/src/chart_types/timeslip/timeslip/data_fetch.ts b/packages/charts/src/chart_types/timeslip/timeslip/data_fetch.ts index 9326c6cbb8..a2ee2edf42 100644 --- a/packages/charts/src/chart_types/timeslip/timeslip/data_fetch.ts +++ b/packages/charts/src/chart_types/timeslip/timeslip/data_fetch.ts @@ -54,8 +54,8 @@ export const updateDataState = ( export const getNullDataState = (): DataState => ({ valid: false, pending: false, - lo: { minimum: Infinity, supremum: Infinity }, - hi: { minimum: -Infinity, supremum: -Infinity }, + lo: { minimum: Infinity, supremum: Infinity, labelSupremum: Infinity }, + hi: { minimum: -Infinity, supremum: -Infinity, labelSupremum: -Infinity }, binUnit: 'year', binUnitCount: NaN, dataResponse: { stats: { minValue: NaN, maxValue: NaN }, rows: [] }, diff --git a/packages/charts/src/chart_types/xy_chart/axes/timeslip/README.md b/packages/charts/src/chart_types/xy_chart/axes/timeslip/README.md new file mode 100644 index 0000000000..a361f72737 --- /dev/null +++ b/packages/charts/src/chart_types/xy_chart/axes/timeslip/README.md @@ -0,0 +1,27 @@ +# Timeslip / Multilayer time Axis + +The timeslip axes rasters a continuos time range into discrete time unit layers. + +## Usages + +There are currently two usages of the `continuousTimeRasters`. The first is in the `timeslip` chart type here... + +https://github.com/elastic/elastic-charts/blob/045fb037a97db7fcad0c3d0af2b31f7a4260149d/packages/charts/src/chart_types/timeslip/timeslip/timeslip_render.ts#L117-L118 + +The second is in the `xy_chart` via the multilayer ticks here... + +https://github.com/elastic/elastic-charts/blob/045fb037a97db7fcad0c3d0af2b31f7a4260149d/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts#L54-L57 + +## Logical structure + +The `continuousTimeRasters` function contains a lot of definitions before finally exporting a final function to return the required `layers` given a `filter` predicate, see the [`notTooDense`](https://github.com/elastic/elastic-charts/blob/045fb037a97db7fcad0c3d0af2b31f7a4260149d/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts#L30-L43) predicate for an example. + +> The `notTooDense` filter uses the `minimumTickPixelDistance` value to determine when that layer is suitable for display. This value is static and calibrated manually. + +The important definitions are the `AxisLayer` that each define a unique discrete time unit raster layer. These raster layers range from very fine (i.e. milliseconds) to very course (i.e. decades). Generally, these raster layers define the constraints, style and intervals of each raster layer. + +The `allRasters` array lists the `AxisLayer`s in order from coarsest to finest. + +Last of the definitions is the `replacements`, these are used to replace any number of raster layers when a given layer is present. For example, say one of the final layers is `days`, in such case we would also have `daysUnlabelled` layer because it has the same spacing constraints, thus it's best to remove the `daysUnlabelled` layer because it would be a duplication. These replacements are executed in order so best to order them from coarsest to finest as we do the raster layers. + +For `labeled` raster layers, the `detailedLabelFormat` is used only if the raster layer is the last/bottom layer, `minorTickLabelFormat` is used otherwise. diff --git a/packages/charts/src/chart_types/xy_chart/axes/timeslip/chrono/chrono.ts b/packages/charts/src/chart_types/xy_chart/axes/timeslip/chrono/chrono.ts index a002d1343d..2cf913949a 100644 --- a/packages/charts/src/chart_types/xy_chart/axes/timeslip/chrono/chrono.ts +++ b/packages/charts/src/chart_types/xy_chart/axes/timeslip/chrono/chrono.ts @@ -34,6 +34,10 @@ export const propsFromCalendarObj = (calendarObj: CalendarObject, timeZone: stri export const epochInSecondsToYear = (timeZone: string, seconds: number) => timeObjToYear(timeObjFromEpochSeconds(timeZone, seconds)); +/** @internal */ +export const epochDaysInMonth = (timeZone: string, seconds: number) => + timeObjFromEpochSeconds(timeZone, seconds).daysInMonth; + /** @internal */ export const addTime = (calendarObj: CalendarObject, timeZone: string, unit: CalendarUnit, count: number) => timeObjToSeconds(addTimeToObj(timeObjFromCalendarObj(calendarObj, timeZone), unit, count)); diff --git a/packages/charts/src/chart_types/xy_chart/axes/timeslip/continuous_time_rasters.ts b/packages/charts/src/chart_types/xy_chart/axes/timeslip/continuous_time_rasters.ts index 44c65c68c4..fd9625a1ad 100644 --- a/packages/charts/src/chart_types/xy_chart/axes/timeslip/continuous_time_rasters.ts +++ b/packages/charts/src/chart_types/xy_chart/axes/timeslip/continuous_time_rasters.ts @@ -10,7 +10,7 @@ /* eslint-disable @typescript-eslint/unbound-method */ import { cachedTimeDelta, cachedZonedDateTimeFrom, TimeProp } from './chrono/cached_chrono'; -import { epochInSecondsToYear } from './chrono/chrono'; +import { epochDaysInMonth, epochInSecondsToYear } from './chrono/chrono'; import { LOCALE_TRANSLATIONS } from './locale_translations'; /** @public */ @@ -38,8 +38,18 @@ export const unitIntervalWidth: Record = { * @public */ export interface Interval { + /** + * Lower bound of interval (included) + */ minimum: number; + /** + * Upper bound of interval (excluded) + */ supremum: number; + /** + * Upper bound of interval to stick text label + */ + labelSupremum: number; } type IntervalIterableMaker = (domainFrom: number, domainTo: number) => Iterable; @@ -78,9 +88,11 @@ const millisecondIntervals = (rasterMs: number): IntervalIterableMaker function* (domainFrom, domainTo) { for (let t = Math.floor((domainFrom * 1000) / rasterMs); t < Math.ceil((domainTo * 1000) / rasterMs); t++) { const minimum = (t * rasterMs) / 1000; + const supremum = minimum + rasterMs / 1000; yield { minimum, - supremum: minimum + rasterMs / 1000, + supremum, + labelSupremum: supremum, }; } }; @@ -89,7 +101,7 @@ const monthBasedIntervals = ( years: YearsAxisLayer, timeZone: string, unitMultiplier: number, -): IntervalIterableMaker => +): IntervalIterableMaker => function* (domainFrom, domainTo) { for (const { year } of years.intervals(domainFrom, domainTo)) { for (let month = 1; month <= 12; month += unitMultiplier) { @@ -101,7 +113,15 @@ const monthBasedIntervals = ( month: ((month + unitMultiplier - 1) % 12) + 1, day: 1, })[TimeProp.EpochSeconds]; - yield { year, month, minimum: binStart, supremum: binEnd }; + const days = epochDaysInMonth(timeZone, binStart); + yield { + year, + month, + days, + minimum: binStart, + supremum: binEnd, + labelSupremum: binEnd, + }; } } }; @@ -179,7 +199,12 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast month: 1, day: 1, })[TimeProp.EpochSeconds]; - yield { year, minimum: binStart, supremum: binEnd }; + yield { + year, + minimum: binStart, + supremum: binEnd, + labelSupremum: binEnd, + }; } }, detailedLabelFormat: new Intl.DateTimeFormat(locale, { year: 'numeric', timeZone }).format, @@ -208,7 +233,12 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast month: 1, day: 1, })[TimeProp.EpochSeconds]; - yield { year, minimum: binStart, supremum: binEnd }; + yield { + year, + minimum: binStart, + supremum: binEnd, + labelSupremum: binEnd, + }; } }, detailedLabelFormat: new Intl.DateTimeFormat(locale, { year: 'numeric', timeZone }).format, @@ -219,7 +249,7 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast labeled: false, minimumTickPixelDistance: 1, // it should change if we ever add centuries and millennia }; - const months: AxisLayer = { + const months: AxisLayer = { unit: 'month', unitMultiplier: 1, labeled: true, @@ -269,6 +299,7 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast dayOfWeek, minimum: binStart, supremum: binEnd, + labelSupremum: binEnd, }; } } @@ -282,7 +313,7 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast labeled: true, minimumTickPixelDistance: minimumTickPixelDistance * 1.5, intervals: function* (domainFrom, domainTo) { - for (const { year, month } of months.intervals(domainFrom, domainTo)) { + for (const { year, month, days: daysInMonth } of months.intervals(domainFrom, domainTo)) { for (let dayOfMonth = 1; dayOfMonth <= 31; dayOfMonth++) { const temporalArgs = { timeZone, year, month, day: dayOfMonth }; const timePoint = cachedZonedDateTimeFrom(temporalArgs); @@ -290,7 +321,15 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast if (dayOfWeek !== 1) continue; const binStart = timePoint[TimeProp.EpochSeconds]; if (Number.isFinite(binStart)) { - yield { dayOfMonth, minimum: binStart, supremum: cachedTimeDelta(temporalArgs, 'days', 7) }; + const daysFromEnd = daysInMonth - dayOfMonth + 1; + const supremum = cachedTimeDelta(temporalArgs, 'days', 7); + + yield { + dayOfMonth, + minimum: binStart, + supremum, + labelSupremum: daysFromEnd < 7 ? cachedTimeDelta(temporalArgs, 'days', daysFromEnd) : supremum, + }; } } } @@ -350,6 +389,8 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast }; const timePoint = cachedZonedDateTimeFrom(temporalArgs); const binStart = timePoint[TimeProp.EpochSeconds]; + const supremum = binStart + 6 * 60 * 60; // fixme this is not correct in case the day is 23hrs long due to winter->summer time switch + return Number.isNaN(binStart) ? [] : { @@ -360,7 +401,8 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast year, month, minimum: binStart, - supremum: binStart + 6 * 60 * 60, // fixme this is not correct in case the day is 23hrs long due to winter->summer time switch + supremum, + labelSupremum: supremum, }; }), ) as Array @@ -676,7 +718,9 @@ export const continuousTimeRasters = ({ minimumTickPixelDistance, locale }: Rast } replacements.forEach(([key, ruleMap]) => { - if (layers.has(key)) layers = new Set([...layers].flatMap((l) => ruleMap.get(l) ?? l)); + if (layers.has(key)) { + layers = new Set([...layers].flatMap((l) => ruleMap.get(l) ?? l)); + } }); return [...layers].reverse(); // while we iterated from coarse to dense, the result follows the axis layer order: finer toward coarser diff --git a/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts b/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts index 3e963a920e..7875b6a37b 100644 --- a/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts +++ b/packages/charts/src/chart_types/xy_chart/axes/timeslip/multilayer_ticks.ts @@ -85,8 +85,16 @@ export function multilayerAxisEntry( if (l.labeled) layerIndex++; // we want three (or however many) _labeled_ axis layers; others are useful for minor ticks/gridlines, and for giving coarser structure eg. stronger gridline for every 6th hour of the day if (layerIndex >= timeAxisLayerCount) return combinedEntry; const timeTicks = [...l.intervals(binStartsFrom, binStartsTo)] - .filter((b) => b.supremum > domainFromS && b.minimum <= domainToS) + .filter((b) => { + if (b.labelSupremum !== b.supremum && b.minimum < domainFromS) return false; + return b.supremum > domainFromS && b.minimum <= domainToS; + }) .map((b) => 1000 * b.minimum); + + if (timeTicks.length === 0) { + return combinedEntry; + } + const { entry } = fillLayerTimeslip( layerIndex, detailedLayerIndex, diff --git a/packages/charts/src/chart_types/xy_chart/axes/timeslip/numerical_rasters.ts b/packages/charts/src/chart_types/xy_chart/axes/timeslip/numerical_rasters.ts index bf2b26a939..f1f54d4cff 100644 --- a/packages/charts/src/chart_types/xy_chart/axes/timeslip/numerical_rasters.ts +++ b/packages/charts/src/chart_types/xy_chart/axes/timeslip/numerical_rasters.ts @@ -29,10 +29,15 @@ export const numericalRasters = ({ minimumTickPixelDistance, locale }: RasterCon labeled: i === 0, minimumTickPixelDistance, intervals: (domainFrom, domainTo) => - getDecimalTicks(domainFrom, domainTo, i === 0 ? 20 : 5, oneFive).map((d, i, a) => ({ - minimum: d, - supremum: i < a.length - 1 ? a[i + 1] ?? NaN : d + (d - (a[i - 1] ?? NaN)), - })), + getDecimalTicks(domainFrom, domainTo, i === 0 ? 20 : 5, oneFive).map((d, i, a) => { + const supremum = i < a.length - 1 ? a[i + 1] ?? NaN : d + (d - (a[i - 1] ?? NaN)); + + return { + minimum: d, + supremum, + labelSupremum: supremum, + }; + }), detailedLabelFormat: (n: number) => format((n - 1300000000000) / 1e6), minorTickLabelFormat: (n: number) => format((n - 1300000000000) / 1e6), }),