From b59b8bfb352f57d50acd67a048baa8390d37e374 Mon Sep 17 00:00:00 2001 From: bluebear94 Date: Wed, 23 Aug 2023 07:39:22 -0400 Subject: [PATCH] linebreak_optimized: Handle breakpoints separated only by spaces (#1821) --- crates/typst-library/src/layout/par.rs | 17 +++++++++++++++-- tests/ref/layout/par-justify.png | Bin 19571 -> 27297 bytes tests/typ/layout/par-justify.typ | 10 ++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/crates/typst-library/src/layout/par.rs b/crates/typst-library/src/layout/par.rs index 9e5d4a97e..235791052 100644 --- a/crates/typst-library/src/layout/par.rs +++ b/crates/typst-library/src/layout/par.rs @@ -929,9 +929,22 @@ fn linebreak_optimized<'a>(vt: &Vt, p: &'a Preparation<'a>, width: Abs) -> Vec = None; // Find the optimal predecessor. - for (i, pred) in table.iter_mut().enumerate().skip(active) { + for (i, pred) in table.iter().enumerate().skip(active) { // Layout the line. let start = pred.line.end; + + // Fix for https://github.com/unicode-org/icu4x/issues/3811 + if i > 0 { + if let Some(s_pred) = table.get(i + 1) { + let next_start = s_pred.line.end; + if !p.bidi.text[start..next_start] + .contains(|c: char| !c.is_whitespace()) + { + continue; + } + } + } + let attempt = line(vt, p, start..end, mandatory, hyphen); // Determine how much the line's spaces would need to be stretched @@ -996,7 +1009,7 @@ fn linebreak_optimized<'a>(vt: &Vt, p: &'a Preparation<'a>, width: Abs) -> VecAEhwaKilD8!gb>J$znHcT2$mi{9=Ykr5S{YikktC=taU-n`eJ zIJg@mf&jc%8P}aU?_oJ7XD26Tk4qNr9`4x`ufG+4$@vtFNy7B+Mg&~z*LG-7k0un; zaEsYDxa!l(k>sUa_T>c$e!-cDJ9;#8AS4}_!Em~sPTgy%@i7=bajtXed z`OUy^WItuh7-JlGggp7q2H8?x8l5sBW27-$ zVV*_2%lU%qf-rpG4%Lzw@Tosh>SPR=AQkds-Ktaeqno}K6-`N!+KtF< z?!Z(X^5Cgl41l(YKOLX`QjFHF>T?XEyz*Qt7Q{mED*EZ-+rwZonvgRzI){1&(9+4W@4-JL`E9$03XU$?$7*Zg^)h!YL%SWG>`tJFxk z;>}qbrQZI$HakCG6-~rG&epbd*W>OkeK5GRJEq7LkF+%N@$~hA#7xoEPUy||PtZHcNM57?4+8E%kJ^z8Zp^kL z79ab#HHrau$JQ(}1ij+dckXn8>-kifl`QU%(u`D&`i0E$=Dbb)fC}&e#)|BD6!+R! zp{g5NhvdkF3I;qvqE~Ir{VPa}D&+4vsQlS{7C)SQOeMz+-9sy;;y-;yfH}sAww(9_ zq~^v$cYKfF2aEt;SQ4O14|HcMIg#CPqAXjWoa|9nkKle}-6~u}n|w`Ft+a?#8%z~t z511{-Qn-@stqqFIO39s67)pU*+LGc5#NM z@pe+2?2Fj?)^u@V!{Q++X3|Knv=bU7FEV}P&vWgQD8%u|uOM=a#_wQcwul6&4^jmc zygmc7xrI59E?aX=vJQ~Ac92At9vRW%K0fy^UB1n5JuIr-lP?^bcVi}9hV%wo7R%q0 z_Y&JEUS0iSPq{zu$KFf<2kdMUD(B9yC`4ixY{>|W5jkuHETTtohKH1GzxtWOY{bki zQ86tM+Gg12fh@EaT&*jSa7Ql{<-WM6`Bg;eF~Ns?dfuI%Jwr^YZq>G5JRxXJDrsf2|zR9 z=lB>z1$jg$+GQjMvr(7UJ-+Fnnq(F3x>(mADUf&erS*t2`$5zLd^JdJej=~Q11W>uE|AMnn;NChp_+|&f8^^0L_Dxl&N$kBxgc70-XGvM^X{7r%GEvq`n?$Z%0Ctx z6sU)*0IIxXfm{@?!WUzvkn4EH!O@d5`<3foFmeQ zaUl5{io&`PVjHt!qQF*pCOW>Fzijxbe^&mz5C`HtQEtD5sA40;MAB@sd-p<~9W}+G z65K;PbG;-TI7xFgWw+Fq0+F2YIHaIb-UB40*-e_LM;_6kVBAzDFrlCXA71_~(PAc3 zYN*NUvq>&99u_i91ZHEj&M+_h4%C)mW~o?0x96ob_Op~}X+^-1Ig)#1ujNSE$&ZN) ztv77H4&T#uOV^N+v$SnCEh4Hi3IX_>>9EsNtCdE^l4{`VQRef>{uKF6Hg5B7d}1w$N+wrZ6(RLn8a84pn`U#{3-G*TtXZs)Zp z2T$(Qd~$-Dtit^hH+oUb)btjFf7txupY8ma3D2|3f$m+RngjL~%7q^U!uHKPSns{w zBAY4bnkB(gXMbPy(uhZv&XBi6lZ%2O0inc4q6 z>(7_QYpGLlI8@|x=aT*5el)|ZS=!I1u!ulkZz7+~V#=?{_IDsR7w}K(Mg)AMd#V3| z(*Tz(X5zxt(aHC|dwpqGdFSqWb!q|Q8$b^W$@4xm5H(v!7<#$fy(ETQxgHaiFgrfA z1Z&@)%j#X&SPwQBZIN=|i_A-IdXd&;xSq{%wa|e@bg)IK%haQjU`1 zDxYvzI-}x7x81p=@i=hVZv=dlzVr7nfcrnGQFU?#s>XI4oGr>5g8oL>!@ZvTvlcWk zpEa|v#u-~W1AJ(3pYIIc8qhYwHq7vf(ut2|fm>)$;0JeD?>`B{KS_nS>Xw%oECHFU zt(|A^hJEk);YX6i8#?kchxIB5!m--6?+>g7vLt?(n({H`yN3EueJVSeGa!}tRtVQ? z8TPY=$PB}-#8}vJ$bKYpcFO9`tnPz9qHlkG)!wbxUo5QExAA!Xogx^2{NlabPKMjJ z-Fs{t5^lrSzMLZh6oP%)-j6Cq>-y+@_Q6DlS=Zv&aEAtwm2*7*^o39nD_Ne=)Xb5? z?O&cz5%FIm)Omu||1b@{&~B5}L-^4@TeaKpx$U!OH}w1q7;bgf^3?!2tFe12umwY&Z4KqlGoK<94>62ORh~^m}=`EjQiBpvN+i zH2E%J72$|&g=PiZg^oXd?D95tx+mR)4?aXvE;658xE`qDfcDo7(Cplbdt>}+gE>1! z3t1N=K@cjcSn^0Q7DMReUMvda z2vB8PNnv*9ox13;gaUQ^+eWvj-{eUzuzgZcYs}sfK9i!~i37J!u5ak~p6)G&1Sb<+ zlDUU0kSt`EY`jAh&~~2)$i(3Z!aMeB^NI7QuJ3}KiucKmeMXvd_O8)f_8<*HPQq(wR+WVd`3h|)JDQ~2J}jub<-F3g)Lv+ zw@b`yw^r+Vih#Cs9h%}b9&9m>W51`nx&f#{B#kzBnKD~F&9B%cd9iARCmE$yCFAx- z!M5t)yjwrvWYm$5S&wQCve4D$mTyGVULWRyCle zDW}OYhStXB-`OZlK{dT=4D`czWADipN|Wh2=8cez8Vo&hRQ)|<$dHztg@%M>>n_OD$m160t31G{?}!sDq$`{+Wy1LE(FiwnWCP z%)&gXS$)4Uvr2BHMkw6pr+UTC-WT!+E6t5lt16MA<0Grz(g|o-!%9r)EVDVC;RnN z(Jk8DDO zb{Df&8tuif`OHhu2AZP;6_4Yq0M&9rfRz5?e_bIL?zc_=4|oy;c9NhcR(RNNw0PMx z;dYv6=e1_3e(Ke0_8x3t&8VtXFo=%r?B-b;y5rFBM}GRg5Ckzq$Z|mx$(Sqnyj-=Z z3n1I$q&9>9W3?eBl+JeA`QWx9qcH?w#x;7rQ}#Gmg_L4XSrq2)6<)N5*8X-6eMns| z!=#aC^{2?=9E;zH=8Zn)>kF)d$WU?l zBl`=|VHb?m(?t)yKbMIJmn0G+w}!p3v<5H{NuogD$MNXKJB483rqPZN3OuRdpXY&e ze#C8;B(pmc+&6_%(y#W=ixbpVdLBbga+RL;X+=1q{gRb9yd-U(T66tYS(}==7zHsY z$zr=>6;&nj1~+hdxc%}5I}3UZ=~Mm&?NS<*O-ask%Qn3V{jIkQ_&7a{-kHb=`(zbM zEB+1_#{1TnUz-8Jmp_bav}hp*1mkMZjE{GDKkfAoDiab3 z6+tQix*u6uQpk_r*^U0lHiXx9y&?#bJ<6=accuknoAriUv-0Ym>vG5NjRj0#`&x+B5r zD7fK#mXF_&TYIOPW$;(~%!jibZU}a~zHtxhdS2NNlU>@)O>LPNvRZw#@bKWi?C*a{um2rml zX)_J$_Yi5$v~`u{HGhL_21icWP!}Hs8gBo@_|s(pxT?;zPw&~-^wEy{lD%eZvhyxN zxmi|24G?nOmoIf-HX%FIbKqqA`gncQim}!{`83L($W8T|eJ56x(C;Mm6dXObcjkhEcPvdNi9oHXh4yG4uFp#3Xfl&Y0|S6@$2W)$?%2Va zXBT@zu)s%y-|(*P_VcFSmOei>N>7ce?ed(mdQ0|VomM>@;o7uI)W4e%UpI8pMJ24k zcqc%`wF>U7y}^Ne$|7}wO%q5BcAhs`rDSzx9TC8M4VPbOYL9~uT{(yT+lft}eY}uc z&HIs4_=8gNzt$-H-}F#D<&xZQ^mVozIreRAB<^YPUE}l}SHq;6;K4yafit@@AiYK?jdYAI}xhoVqwRw9ZV`U80Om7o#cr){eRlyJ!6`Lv(4*+MyH| zxB`1}UG?sHD*yD@6X$oo`#XrRa*Xj>f5er*r!ZU_!<@|fGaUEQ^sSYB+lj>UOhUdu zdY4Xz()SDYGvhBVY3JwE+6>$Y>@3ZOs;~z?h^Bf_vJYF%96FbU{iP&% zDp#%m>Dkqw}c?vZ4T{x>)WzA-;Qd@E#agut2Y>YMb8*ZNG=G zfh;FCXuaC*uKTV64|E}(=M;c(hs~PQqdlCYqpnaYga;dm=46BQ%!CGC|2r}C^$sB3 zCh)X@{Yx#S=Ncq-iO$3CvFUDMosS6z{~j6wALK;h?UI$X1JXLMEm2^m#V&{<_>O+N zx{R3J>1-~s$smGl`lI7pvEF*$2Mm93Y^8xkL+4q|hHo_-J0F@b1bssBRi$}4e}2r& zG+}xUP2^>zg!ptnnecLyJzdThF4F>eh*~SkHQ9OCU{w{ug|zsEgPn$ctI*7LNkA;B zDcSdP;%-%^@S=XRQ=*#D1$VV5yK5HSU)y`L02uHj4VLs<*S^qyzc=$%(!NuVLT{%^EVMy_kKV@oEhepc}t2qZ&ci&yxP4)EJ&CEhkqimb%&|v-<>Cr*zxL`a2 z^=1)~gp|p|`FU4|q>s>o@R{&Y<$K}9k#M1>RBXuzmXP~xHrf97xs(HT_^S$S!5``A z0@TjCbWYGzIO%?=#k__s%0IIoM8I>|-Pyu%B--`x)9l~73gYqB;#}@U&GL#~4?7W- zPeTa|yfLJR*>J$M6M^;SDj&bv(NZTgHZ#(M59K}MvM3@s?9%`GkyCyA_Pp293sqwm zF9>BCRXKbHKrdbXChh&1AK8)jT{!}-*T4WDfK$fZhs5&uvZ^kvPcqDiBa@G)6#v-wWzvYD9^Fp-8!$RR& z_6W;+f#@?Glm=)LfAm!G=^1PiV#dz4p+jm0CN)<0lTAE&$&cO2_8}FQrFmKPdLv%V zIIa$d6KsgT@wf*j0ML9}Wy}33iO+@BoX`r8&GwK-H@g9iQGx*Kp9o8b*Zp6^h<8A+ zLy&i_^4JP5xZ;_6Axd)}NisNt)G#GSL}oNI1nX>8M}OyBB5QlHNJ{SSvk05N(kr!? z$WRCNM!@M6!ds~lR#k~VBLFoIn({A0CeuMqrrDEhMX(=_ij~0`m&n&DHk?*HO`K$5 zAJ{VnL|FW^HW=(OpipAwpe#My$q#mQ2tZ^BnHt}sM%-mpgC`bt0odOQcvS+-W}L+r zc#YRXWrblJtcL99N-t$Wfub&t5T|z6C7>RI+9v+{n=NQF)2bKaa~==@D8UmG zgAav{&|fg&5T*jjtx4S_`z`&=H$YOghTT=Vc>%%Y%En=}b=0lVhitfd?XLy@inPPV zp!&g&1J9`^ZN-pDrOD58h{;M$?fly9 z;W)?^-|PhNW;}n$nQ_FT>F)z(>38jpJX1UEljVYPcVj+^b6Gv*lzq$`T{8?jmlhD^ z@4JrvXGC;Pl~!wugVNmV=LyD#bG;hdSh7h4p7rL!L50Ev|8wq~pj(*^xzenKmc7y1 zJ(8?3bL`36xaraFHwQ%0Do7Llm45J@NmK&JxA}B4l4|Wl&xi@~sfRuOEpTnRsLO-R z=1@~dr0?e5by_WpN;gy4QZj$G*7)z`t{*P|c!iaG-KFC!htbpEd`ZmXae`MUls#K( z&Su%qXd-G!BhrKm*;WR3gRFm?qL%eEye^$r)SkIDxT7mR7NBcB)}Vs~yw;_-w02d_EMMxDM%IaO0+MsjVrhO=BN`;plQcrXnYkRz(V@LWjjziL@} zDtF}U7YyIYvtOD3*+j}>!UqSlerP|$o^sF91jF%y_79Odfm_0Q|Jwh7hF%0_5^v%S zcuYNi9;pw}MnZv_Ua*Jtw{(8uuKNZOC*80p&S77FIwjc@*Vrff0u{#=?^8g+&$08! zxtQOvaV6PQJ%3AVIlcMVXgAAHi_%a(!wzWkX*^f$sT0K)D7Kh6iUl3+h3;1rNF^Wx zJyEo{(cQyI@YP&-MdX%f-!QWwMV9+h^ZCRo7{5<{2d$8oC3Gao>=&vYqAh6MWE;mP zrD^z@X%ReJCLlhnaj^#R7*bn#gFse;%QQP{=tyN|H&ZHoRjBEe%{Qt@hmtNuwi?(k z9akjuREKi|MZtFPrR7he!2K}wt{WI@?vYL@^z_t!15KLwOIhsQvzA-pOJYU1X=9Bf zTKl723q?O42|2$4+q9qh6;mQ9tXhAW;H>al=VKc9o+W@6El>NccgW7qhLdLn8kf}D zi)%JpuH%ctj!M^T#p@uGDc6*kh#Q}sSgVcti|r2@u1E7;uS8CC*0?-Zsaq`(>G^Fr z)~NVAPFHQO(H5sx4QpVaBb5K&R@{R0QHluRjdC-^p%1`a@vXhciVgw3O)Z zgt`El(cJ)Xm6R_(=5A)_V673Dqv4o0}>I-9$E6HSZL6z4*oBJbEQzSq47Y(m`43pFKmt8@$36NM2-C z*sOE_|GsQZRYF(Tds!9}72Xd>tEG?I$J)z$P-39DVhXv_wpC~6x0E$*h4S!3!*eCG zaz#B=k6FY`f0`6JgZ+a_L`QSk9t9WPaM8J@u?;b^SRe*45vl-fH{B_syqv4sG5fZS zP6_`?wkl$H+#m8(kw6Ljf&Tmmm4qXUJ3aT1Sl+~LvtRDI!qr-#9L4zsE;A9}YMb@a zY4$V!Xf=xp-HkbP_-Ak~aC5e76BoQyfO(4SIoGILtMzu(_B;+wz%P6t1}`*>+b#lR z-&h*frZ*us-JQXoyW$yyGCFN@9A`6|0SO9ZF6Jf8Uhx~=@@ zd!J_i%Aaa$GibssH?K+i|aKb0U^__m8Az4}n2fYk+- z{d(Jn31P7);>R!n)A_oClU#$>+L~Kg3u(oO6}h?56HkqP{S=6e5%&5MVyr2Q)U*e{ zDBXvG5Gi(Dd0AhwA%ynI#RGQC)v=qfFy(E+#RFj9D0U=-lG&fi^--e`6<^c-NB=#Ra1(kZ6wlm!rZwI}eM&cx^g>3HN@39%V|P^195@bfRD4A1^?1Sg6fslCry zY^#&sXfbCisS~W5eQ_&)lW=?tAyW0FcGS}Q^wo{yOVt}alE47_B~UmQwxt2l`k*U` zOW{w3SqEem;+4s>0sR?W36Hl=gvO4l)JUDztbkFX&G-HYl@Z1q2H604o&cEv zOREQLgUEiPDeN9ae>BVn)M}CL$X0TUX%C=}B8Evo1*)}UqXE=1V$=Tn!W+h?E zuid7|kX+jRm=6w+So3r`zb<>Jn!hml!7n?DS&|P0_3|JR-3*3Hess&OE%Cc@Xd4 zcz@=iH_)!i)pPf~wR&y~ZcJWy-Xee;^%M2!Z`z?*q?Si98;!1=P4Xznu!OWuUhW4p zwqIj2oVxcmniIMg`S-#`{fChDO<5g`0-f+H$kYvuW^{HCUHpqXniiY#5rqBy;-Bw? zJH0pZmue;u_9Gv<2SOM^ja(>DTk(ld462nnu&TZGxgMp3YR4m~!?3%^YM_fghZ7pS z(mw!~_Kyk`XaB=JWF4jQa0IXko{8x{H-X4qS=g{%De&j=8nu49_U##o_DNp7O{wjokW@X!S7Wm$|Tc3 zz0w2v-*_yo4+cnkWxXObc$Vo*^Pd&XpFyD}L|qt5wwR#CRE(yK6A&jCai!KkFkA-j_hy)xOV*23Dm+zIx>r{@KVy z*psR1Q@;qC@CM}(I;I7B@Vzs)Kx9mpVhvj1kj#W6dsOVObC3wi!R`m6pKX|@N)>r3 z8u)W6T>3nor0z~EwnUL2!ysmspO2MU??#C%=h*h`4aBx%SxWqTDOf5$evc7}gMMea z7V&gv?9Wa+QGmDBHlMNr|7uqhr6sm!Hk9xZY~1&9|+hYH4!X6;NtB<6syZg)*IWHdS&JYg>QvN(^9hXj;`P$GS-i3SIM=rqlt7h#w{C~ zOiy&Q>HJ^sj@XgE62oGnVZSSG`3JH!a#!cjgW+#`w|<@BUXMLVV;%T^fx`FxAiH-5{l5G3Kkf_GD7=k)Ft_z8`t>NQUNF3cS$w0bzb!1tQYq>6g`>wAq1 z9Cv?yvd?n&$1p~_(u_i;kTTZik%*7#8i+hJsGY+~PAM(*iEP7di&o#>IHmdQ zD?73jCT#D5D}{>n-XT{!0YnG~)@o2m6+I!O8ykTL@F$HfuS0}$7wvw9I>jU5c^vJX zI7lH9=_5SjA|nM_XqT;kECxvK!KvnN6TSDwCIRCBRmN|FrI_>m0d*+bSkK?1IlryI z4RJ;u; zLI`}MtEJ=k4#Kf`z&ks)W)7L-D+e}As)1M~*m=57T}1xxfp3qOTA=zqN?Z=v9! zdc%H3km}A8B_q|82EiSW5 z+YwZU&HF7)AqwVsaw|t6$nauC6vGqnsuXDUzaItaJgIa>)Tlc0_M+fOEK*L1hx=3PPlC9js8UDWuO;(F7`3g8S=JmYRod!_bXIDZwzg8 zIi~5B%!39IZq`38#EJFy{khde)}A2w7xHQXs(_e>h7^L|KlxeWDmNKey5{>x+(~Y? zQVb++yjx5L`JdUllzXEUvYsf5AGxc&xhGlQa%lPjPNbi|R7Ws|&)fxB3Q|`S)8#89JVoVNj{6327u_fs5`tTj;)^OO#u!2YDboy4&s7iQ zyXiBEiDd4I5P)i9xmhnTHHM=>_pO#-@8LSWXkAKCQ#3lz-}JpJ@<5}2rV(fcC)6~c z{W2LBe&D>k#L!n+{d2PmUlc|p7;;Qxk{#jfxcA$O6@<(i3NKSgFhV&?pF8O2?tv*5mhD>YxnMR0-kEb0R`XZ2)UWO&w;#6%U;&Hr> z%}RIO_kL2uV_O65KTN{TW;fp90y}z~RcBI+B8^t%y)VaXKX7QSLR}-h)WzT#5VM*% z$v+%&u=c2$`{Db6w3pRJ)2~3Jc99w&VHCXztv+l(;KQj8SJqgxxS^ zVvyO)m37Tvu&6*bRM zaVEGDyJeQ2o)JD7SYF*-#nyW%DL&wf=2?8$;*^&Ec@}E#@acLmU-xwv*(CJ&k*x_M z#Ac$i{xk%5-m}jh`?N84P(^~*kthcr1X|1t!Zc=5RaS@bui+td(~@Hv;N|3OauzjcNY;I7S(RE$W}Xi7fY6~7vla^#QPl>C*et|w_P^Yz+A zS>$57$Qps!TTfL{2So(h%75cjmK!0SaGDpb5Qr0{92It8+fp~%!^xg6igQlwA<(o+FZ~!O0;n;>KO{$|vh__U={qDhI zn4+^qAYMvH!vs5XbX6yTI1PAauu9uwp3xvb0KN0sJNfyos89=sg#<7D&6W9kKY*70 z8;YH~W?rr&!|6>hSy@2B_9w#Kc9kPjBWz4GE;owo>LFC_2! z>`xdXpd8VYz^;o@ERx)mBFelX(ud*p3@ycYiabs#Z=TG*qJ2~3XW4wTcvf>)hCxGJ z{$%o&rDUcA^^db9I1_A$9>@OHxEyrg*m?0$H2GxtPreV~Ya8O{w%Q4z9baGLbot(M zU|e{FrM+PDmqyNmbk-=K4C)MG=s_LyI3XA4X;J&T1?_65WBA2Om&umJOLw7}@9wr| zKtC_{3FLm>o6OLEl-T{zKYTUzKYHm!yIW61#IPc%OGq;LX~sLv#N&d?+brRxskrYt zCj$TBrX7!KO#|cI{Zr#&R=Wt0cKb&j9d*VsCbQuGU5t66i|%xS7RU95M6Fy1gaZ&m zpZKh=|4!w}vdKrRI^a+VdjHc4HIz?=1{5i&EqA!AYc(uoaNqo_Ikyo-LRkx|1~;(01QK8`eY{c#^AHsmLC{m0YgdQ6!c z5La=P;#WgQ?f{zc{9?zusqgxLsZtAxIhUf)=D4v7B(swIUf|Sw#*4;sxwC(Uf->b3 zA>_xtp(sYvNNu^R=Je#}V6N<*Vp>aLb$K@c#{e%E|QJQ2?h zdoEE^Ug~tQKcx&!KxS|@&oqqqUhNJvrb;Ew>jSyI|0lIKYBVt)=aZVEZuH{w8 z=@RfSWUDt6Z@KB+$1{5$JnG+qxuuEfNx%OK;hn(ne;RX8hoDk}e-~XZ+J*n*!2K`Y z_CLR}3Y7`gERTs&@?r<`<)!K${s-B_KN5=nul)oD*z=B@FSSLA2jrnA_l{_}UZ3h= zu0EE<_Az>;v!UfU0Z0TJiB~`7vz^X2KD8!sjv#nwj(diG#`IlL+t%+<$le$4#i>0? zuc~N&D@*wd_V9r|Wu1a6S!h3g?<9f~K6U(|L+coScN-ey{fCI?#$}^`n(%zK?It+O z1^5$+l*ZHnnlE6T9PA@PzXLQ~iTLMMYF`6cIhr3E#h&*rG1`;_uMK|~GNTu>iXn9O z^l&^%x@Nlim&nq$IaHdv5CLCt2O0jj%KOTKkShu}UnT95^ZMXlYM_k+?0EDsYhV;M)M%P5upvL5V%qI?LdKVxOLC%sO-)E z2#>*cHoY-_WpwX2`n+7*=TKtV;I1#=yJ+MlLVQPJqoKF|w^V&W)FMLJhW{_Ov#yYH z8X3fSy-Cy<-`Dzx#D2W~g&hVro=Iih0%X?eoabivt$e!Heo;r1S}oiQ7}ovMjGHsvQ&l_+MdOz!=o|cY zcaMwE*ZdlGAuExZSI(!4wSYx-J=asZK|1lmiPg-dx1RF`*J$uJ3G1whs>{7=ZYeST7=4&A%FUXfb(fAF~@hj;#8szFlA_|3d>-KLkt&p^skpnOi(9 zf!H(77qeU2=z=_G4qMpPC{9mwUHUj|Y>v%M=&I(!*yiWwcly5{A3OdUIW0@_w%+^{ zE@{vF_3woT2?4*?3oK zm6c%xsaQFEQ^Vuty#g$V&)317dvo{pXxWox+Ok^I! zU<^$;thOtX=WZ*kt+$BU2gDa*ViE0$T-84@vB^(Sp0SjN;i#k4gQPl+)KZ8-8I7nE zLQoT#^@S7B(xd_Pq|aI)WtnV09r>vjng@ExgI>w>ur4v|uS-RWYbt{U+hbF4>sYIS zi!8!kOa%b9c=cH^Kr#AkquuXHX15ayJgEOYZF3RIx@++)l#`^$*WX>0t#dc{ z&=y(^=ki~RUyYaHS2673pUBr;{}l4f2ot;zmT2Ues)3}0?OdF@M_uqT+Q9NWgza3R z2?3+qA71$fy5(?aW>4>^AP&*s}C{? zamH$k`Fh9v8q{Sf>T~&*(9bd7l{Z?pnk-Z7oq7D-%z{t943$T~`0QjKL}(Q3U)6mI z+3?p-Y|*;&vHL#oo|>I;lxBv$`okBqmA}jE2pfFA6^p!MT}kZcq_?E08QJA+f5bDE zo^&4CG;a;j826*?w@gGt=}}{d#wUPVv)jWEqpH ztD)sX9k_l;dZ$$&MNYL*U3e|YMpaDpYVn5jO>aJ4o>~M9rlK1$<`SN59be>fD*9z@ z_Ze>xxVL$-4JBtsBO5&M6lxOacrrRa`CfG4<9+tmMv@6kbO!j?I06098JK`Y5SvA_ zw%I$JI!Fy?PWcfqd0h15=|8=(vc7bIL5n+%OS`qA&txKhiPHYM9>uy}*uIaf?Or9N&E^SCaQcn(^Nl9M&r z>RjeCHyvAKRDB#!YAy$dt#Z4^ePwylbYWo|{Qls5Kh%F7PXXH^j5VCKqP6R)sy>mZ zr;fc2U1^^vOJGF%Ywsu&buAD#G5`YqUV-gd=^iimescy78gZ{#>}WwwG6JOAaiGCP zG^g>))%$JB%I^20hxGeA{`M&jpRoP&Dq1lUVa1&~v*}mn1zH7Jkcy`LwaaTf9H@2( zZJMnKxx3q^`=gON9zK<6AnkOOYiG$?aiNuc9hn4Q?k3!^0_v&2MMcKpk zpep-F7~ZQEYqvbE4dtT_9wMb4Q#}&id^3j zD``$yDY+`zzE{)zZ$@Di0Sx6i<(&)n4q9s*O-6Wz3{>9?9S|BcRm~eWuir|>_QG3w zwngO7{^&*Ml$RSyYx`e( z<{37t!0<>1n_Q~IZGI=A`z>+8uf~yDwq4@Lv1&&Si~|wPnnip{kH+}|Rf8#&)o)un zPV6mBu<(Ej%CkeH!-KxT*if9;r5*kp^$h0wV54M(-#xLV$@W?s!Qv!G`O4S(%Rpl3TJX^Q9YWa&sz^%iX#)R(xE!qI}$1Cspj2@TUEUC6!v9_;R*Y zSnECf&u0$O8gnm6d-*EVh>yQ~;{P()iYPefk-^R!J+C}IZfLv$JqnrH60t6@T>TYp zPo=APqDh_AbD)$36jAew&nhbpXX1g$9e2pbeKN# zt?ZcTpT`7#-l>$E{wv8dI+xfat`nG?LvPTUlSdnTQa`Xa>xZ&FW>nI3@6rlt9Vqf3 z(92c%PVeU3?!9V}mL$4mrmZ0byuDyd+Dm(_Rl1DFvs=fkjV4KI>ON{$0?e)qDEuR8R zZ~7+o*&mDZb)1~$0nr3u%Crlp{O%>j#f*v*`h2c%rspdts#dg}*6w+UbXR=vsx6z1 z@9&wu+b()z9Q=QU2gARQ9%`NE8lJ6_&di?d#UP!VY{`Pxx5*Q@9v&V7LkOmu z>n`NASf1`$@$UQI-H5eagc$cMm=De@LOuBOBkMhGb=?PjsogVFp#42~LT$_%3E@9$ zkCkQUxu1N@?r7OLSx`IIC(}@v$T8Oiag^Ek=J2jXDxTA%tsE#JGw#`fi?fr^M?3vd z?#}O1eqXZHQ^0mQ3}Ya}j)gX+X6$veQM$#1=6ZV*!)Q|jA6h*3x7SBKeQ_hTgJ>^B0{6ZcGqn){p@?E3+`t@gIIP8#L+#c)9<74 zpvElNl^>e$?$dr)shSi2d#PDTOc+}YY3+mTAwI-5F3y=3E=u4Q!g{xGz)5sY`$nw z2km%n434sEj|;-&{h|I8J{0v@L<|AS!ET0_2_rS}_V}7R^;%b)Q@r1FU*swBIwei2 zk-UOLT8Z)=Mc=c@9^8 z|M@HKl<@0Mm~kCd8+5wA!$}!B{Ey9HTeZT%t&giJg?{T`isvm6LE_XLpDnHz3IbNI z67I~NA7sc?a>Iu;0VX0cEBj7p`D3P^>RbP}zbZP0xAM!$&@z6EVTwN-i$o5zY764d zyWQLsGJBZ#+?x%ABgl^0_c9;1;tTWOEVx>+t!f5ij~YE zyZV0`>jmm8F};IRB_lU)ZTxw>`?8kqLJ{CWUa`W-_DH1^J;+seVUJeHZ%MwW#)Rgq zhHRx6@X_xzc8uzg;ZOI>#jFM;=WfY|{KrLNrEc9|GAztw=Ricc>=_!%kGa$ZtDjm1 zq+_=GZ*QN-FdyB<&eCElQuoNN#x&FT^8fDIMm&RCs`M;2iTz^tDbnJLUq^pH z%)KKY7WIopDf}AFD@6!y20bmJU~DW}AkdEvUMPQ_+Np2Tm@wCj$HH)9>8WV(!rhE( zKmAAcK)&?$MKQ9C@AiAXa&cOm3ohwEd`Jg=3UT*7o5&Ys8mI3alpXrgPk3(s;b?bz zP_?$W3q5XpLu1wc!r1~*FmP^J$WjPK?#&E zcyNBsY8m_iQQq*LoNv?k*Yk}o@1xIknWDBlr8Yy~#ne%rdRJ#vNfFR$Q9ZXSjy1~U zdB-&z0JU-$zK;mp#$7>(zfbJIM(XJ6KF|=If>-UZCB{m28MZ8@sD^>qFG#5BN36e+ z9oI4O-@%JJbD#P+Y9`#(nkzaXWi|=# z!@MX<2Fq>0b z6p-bDHUFrZ#$%`17@=ac1X`Vz->f#eGHlUmlqUOWQ|2nLxbWNTy6q7(a(7d9Qs?(X zKebqc*`ucXA62E|8oD+kwM;ko4R2;gR2Fvx+V$o#p*)B1)sv-pk0n)Gr6{Wd^UEn2 zNXE@7$^H<|jSE?YhFW09B6- zmS3Q=w$a`oxt;kM(3^{z15m>4j_!HCrH($9?pleULo&z~Nv0ZyV>ZSf@p5eYX zcoZxigyVprZ^8ga#l=riKraT~JDl{Bp;w@|z|i?Sy!AjPL+EP_Ca{9+W53HYP@IG^ z<^rebD)P<}fElFd%0<3Hjeo0gd0@8iY9C{1zsB1gK zyy^~|TNy81&MgXy)7Kl&zb2aBPo7Y%mMDZT*WA-Vv0qse=?C6+FzUe7XDz9JlXk?A z{QiCMgs8)b6zYV}^wr(rj(KQ%64VWtr!mD%jT6ZGFx z*EpN|%f(8e27s?o%)!d^VRExY$*`lS3l%Vvf4AQ7?h`aOW%7u2s>;GwK+!G(Gon_F zar$+0_^&3?b*Hl7wyjqYERKZ3<|vLHQ%&_Q5NWhHpM6hKG#GJ6s1P%6C+g4WcWKix z57g7Tn!F#d23S|NPX?KnOWuHzzl}_DDjnbQIzK7*D|7KUFxtZ|YemgG^UBTEeGEOr z7hmnF>{)!0&dwr@K^oa4Ww!sijJs*O{$b3%-Dq_{VeNK?f8}6he~SoflBkfdGuu&% zm9^aWQz4}{PuysSbGdfjlmi_B!KS1@;2HZ)Ad@Q9<-OFupfkV?O}jhHm&T56EM z%)Rl3Zy#o`tf>i1fS_)Q%s(20@Egl&wd3`Q&E=A~L*a-!2Q z^Fm)|brNcuOmw(vtCZ?pg35PuVzjo?597WeTcO^zY9)D9^vI-kjoyf3^B-rQy)cu} z!k&}tXA@<}yDcBoJ>M4w=eLc>DQ>^OBaQ0UV1Ni(nrVhXHO?Epa}B&>uuEuZCmZh( zkibl`g!SG1a3xaQB~hz%CWe$i#xf;xSx8PrVE!st%()Ls~u+&m`Q4sEN*KvAA?} zdk73`fbF+5{@A6lmF67bLP8Uo>y8w2VXSpz6Nu3En?La`_Th;-VN?}14~C*Zm!zzH->XGMabw@QEV|L zVEyy!`{C)oapz%CEyP%F#8qjQfDr=9g`V$Ymq$P=oE;h?bWph@(1QEQ31X~TA9OlD z+ookpt^31s_cJ%oQ0(5R`{FSNyUY8jaQc)W)qh_9>k#uap0cLchb`s4d)P&cP25x& zh<^sk0KY4d#6mxv@NyM>{EdK5yj zCCtmo)uY)+&LZ*LUiyJ;Pz#cIf=wF%-G^Yr!hdh~bGH<3YIgJK|8*7U*lq4IJpV6v z`@gLzIX6lR5>$Cg{-4ccYCOuF`#&kh|4*p}WFL7V@JO#u3juwEmg+7Gfto-^hGoFd z(0ck(Gh4DwccQnEm|Q}Sm6t0Wrz9B?^(!QD17LoZr2r=HkQafOR1l8zo#MTb+;>6L zH`#QTnPn<^X)H`aMx=O}J6X49kf0HZpp>5G$*E{0^RU{Ej)P@|kyN-5f!x@koczlV zRK)rOxJn{HMH91U1zlRVwC7pht$~1EzHS)4wJ6-H3CIuL~=qT>toyQeI7tjp1$H^hriZXU zy%m2&6wrSJ)>zN>z#09W(YSdhS!j0fvd=Ear!g+*NqFg?bnL$GZowe*B>d-R-nRBL z|LSSZD8|V8{5qqRw(~62JYDu4z1!JaFBz&|v+g}l{GS^~^oP_|C#(VwNCyffn!gpe zm>LVupa8A4zl)Z1xe=*l$Iao30{8c8x=loY9|7sqNuNu;B!~ph;og5z^47k?_;cS% ze^(LYII6ZSIVPk5qUj{a<&r*ogqvFvNNW^_dRo)N$|D{~4kawTEv;lsCe+;6AwXy` zG`B5qGf>aW0xPQ|cOp*s1A)smmC>J|1sX3pS(?Io=I^TMwG|)WM)f>_u`H~*)hepv z(MPNTppkH^d`5g0{GEsofL=vfK}Gck$Al`d3U|9ej`rLcqZMfDl_oEj2|(){FP#(f z{F)cAT}WY;^!{ROo&jvq_%;|{j*5zckAVi@I#oyxrI(9N8uPd2&&+~7L2m@0SvzTT zh&uJrcQ~j9;%K!1v?rtrXHlz<@3iH$-`y|b#-|;?Z?IOI-^na%XF%j2|8a0^8|C|o z0#?i=yg2>kgf4nOsPvhL!)O`T%_ylL7!BG61JIAJxDikrVT)@*G@mg}ZRSt}Tw#hB ztMjV_HjC=96^a(C=+oYb;w}*78sp1(3Q3g_Bf^y&=^V9$*M#AEr0&{ zC7SJqd{i;2Urw(s#^VB?GW{g8(iZhy?IaC|$!4*Z$31Ki@DDb0>mUk7c?uuk0o-hy zT3&dlL}hy@bIi$`1sWgFq5f&Ynk!PpgnBdbQEulZG!8oBju*{Ze#-1Tf@HG3oatxEGSJb)m+*a$zRFMRk=m4uwe9UY|X1m-6|J1OOQC5L>@Nq#@p z2TWFenNH0J)3NX*o!SNS8J3!SUknG>>+|YMxEC)0!c|R^bEwwfvwcg!c04bV{H)BH zROyDZn&49YhR$Xc2{yge!|O^5s$cIL9q*IQRRd05337=2?rm!Mu68>yiyvhycFM4t ze!#XPPHZ7DGWTYMM41;omQ?F~bJqYzj3!UXGPf`FgkZ%mPbC!1mC@2Dt>T5D!_841 z^jI*~_IkgrG=<>lN4kdm|IBqlNo4;{cHLsNd>*+jq;AA($I7WY%iTkBgCm+IUsZ!G1q;0xK;M7=%NvGRdQY=J(DSs6ClKWJkQlSSWP&)#kL)s&ty zN5qmO#R%+`X)vRcz0AI-RP1v^yh+}%y8=+p2?%na`#_PgV&y#BGjPNjn)2fcfidq5 zIu&`1{Y24eFEmbiTK6h&Y#)q8nX?^^lfeAfI#U75QuwFE6~N`yTxq_|Jx!R)D&@y< zj~PjixkyTX-`ig@>wnvB$8bi?VFTUY+^Po4V20YUHClUZ?;c0z1Uq26_vk*7BZ4{*9;$5 z$&?pvTkn{fsx2)Qfx7bjhuQ4-eNd~t%$L0OEjVVjH9wCWlg8c8#)ZM7|nKxqN!Tev-Edf z(sZ*A4fmB}tSqaC*3$+6EVPz0GO9i{6J$ROrQ=`pJ9+4D;W7&J$!`cFru}u7l@5Mi z_N~|yq&dFn6C3VetEgfjV5v316N=g5HFdhB=y(AE*1dKCkgy> zjA;lZh5)9%3V8!0$d)ean$;d-q2H3V2%ai%k2aPWALOn29Ef#!7 z0SKO%-Ha`Nt8R)v@`ja>(=dY@LoLJvLvKi$B_#uPpDs3E9`5t00+noOE6p??RBE`J z$Q2y|QY3ItuSRhlgdXc*L(g&eXcA!r&4TFBjTe+pn7ERW;aOI$9RYT?`r+nPT=_9m7*XkO8fcsmt{i`r=ris5*7*svN(@r!flUHLYX(^&JF5H`J_%NTu|;M3jx1-ifmaC?)^Gs`Bl606Br88; z2+&gcE53g2T%TPlX+4UXvULDt40yjrC2RB@l=On0T%EE%V3!@q zG>^s`C=ufC9AfGe76&MiwD;tbQ06vK#&ODYI!fR+a%2G{2`Sd|eq`%)NgA`f&11nG zs~*k-Xq16|>F<$V&?w-Lf3XbC5jK8&o&6KQ$-lAga7s|AadB_96j;T8((%O;drk4S zfseRzvn=nLWL}usT4b=a^T`6UzumLkCv7hk2Ru3_H;4pHy&s@!UIrsC%wbGkWUd3x z&fTN7k_J)00R>qWsBgvTOPo{Yo2%g8C zYsdzL?6CAOl;QhO)4=lc=*6!x2{7$pZ?;$gk(>NkMHizDWVLNa1!a;9>();3tG|3B zQdsp1YS+4A7i{}-SUeM|y9^X?yw!+w-ccD1u}|5H4mQvbCKT>yRlzZ&FYGwfQW=k) zk@&U=Uot;)$%Rh$$?s&3ZOFe7Q_aw5Gcroyxl2q%7Y%b7<&MG_AZGZ zA1{`W@dDp#5x6h?O-tjC^gyV?IZErmKXBzTNl<0 zm3nAKi}}+f%d_|tJr;W6#AIHAoWjRW#Qp3&@CS$&i`D(v8~2(KixX_o!7MhffLbLD z%7u0~)qirGH8-kjqnsi^7c<1xi^EeM-XY4~^*a}w5@q$Xdo@LH)T6f**#)f^bxa96hSf&dy&h=wr%|vO1pwm)f#xrx3EZm`S%&>$g|$URE(rH9pJw+cyiGkM&^8GR zjxovzxqp_${E(17N#aqLYMdlm!{Ez2UO6035QIts3{0hf!G8eZv=9>mDNSp+&a9hy zufDQzQTpmDR)OXL-2Mn7?(K+{Rv)T**(M4{Dx5L?@-WfteB=~0_WGO28n(pzV0tmo zouc8TOse2yo%_kViDDmu%AdCl6{XYwgPB9b_n)kyx&Q0i`mezBfAFX1=baR?66Zk@ znj>hVul<2@Jm|TpX?5X)7VqB!TxB@yV;Gkh-#sOp#BOE^x^@9`niEsz>xuy~ZR1CG zb1Vmn!v&uM4VtX!UII+gPlAm34gog{=C^Y!#TtgR5j;8!>$B@EKY!KvgCUYDBVM2? z(LBFusTd!;WcmhL$j{SjMzk+n#z03}8+EVmo%(YjZXNnag4Wgl?;e7KD#aH7Cx3~% z5&JTv@^hFB2?!*4VI-A58E0EQkR2%gxhe2!wLIM8YPQW3;UD#vGUzPr9Y;_9QZT`G z2o}hS?Y6mLrQXmyc|k|s1A;`)uIXYusnNccg6NqxX~=pQrXy7=^y4#BWJeOy!nFM} zO4-WQdGb9jAhO_n;di%5BB>XazvWqAVGn!r#+B3gd>STuFX4hVZ;K{fAp7obEY#^@ zeoM!UGC7Hm-`F!q_#*fr5&J1@`A_M{NX`d*){VsypBmS102|HQt|Qp>Kfy%sm^GfV ziR(&zHaa$KtnCY6?p$@gQ{K80W0aF>8W^acC*y#1a|TchOiG*$ce?AIa$b!4D_HXK z`=qYQ*#>`&tTdj-`4!sh8F8mmTXyMpSZFmwRh%_;KXHtC;rZ|Vo!(E7 zWo(WbtmMpRV4+rMCq%nh^H%CNzEWy=FfX7Ce3wE2DDNZx)`Y~bk3v()i6d~T43vVk zjoFkUbr!1cz29dKC*)c>0PgYIRF(44z{&x)PiumH?An(2NX2?Q``qyNd3v~&W=S}H zO~8S4l6kNLkl^s|*>b&TT-xYPR41Ij`S1Q}Q^F65_=!%7395}rIuR!iQxeeI)OUVA z3|_vu9_*S@J)m}Gnl@oR3)`FWY0DM^5GcZvP%XAKiQHdVPhZgDL+uh4`c!b4 zw><#Fufgk>=nPS>NbRRQ$IQ@`*E#rg9jt0AXrH=@iDkKs~;!o7FxWWK;!qv6&)LzB_BmVmjp@-wTyI0oWWyhfeH z9gnQ6XGsXjaj-e+40wiRAui9+FB1V)sdA{RJSHM_ zYPzmQLzOSNUvU4E~IogW7>d7YPPl#Z5x@xQctER z=Hks812f{6cuGa862%JEG>G~9*;Uu-3+au3FRn9LU#6(-+9vb-mU+UcS+GT& z7PqjUW~cs^K!S|g1bq&CEO|&a_%@~aZWCHdSA9*>w@uBIS}LMSr~?uDP4iHA4F5<` z?K&o?ilkCu7Uib63fg#^pQOP+UgPe=Fz=e&W|)22rid6a5lEt17_vu`5xTJ1rlZNa zf8YM@*n$d-UolZKH;#%hJ)Us5obVqlzW@?0u4fN?SE2mKwO*D>v5IlHYon?C_YPs( zKe5RbFdH?I4MA=S4y*J^^>4TC>RDO`v!9#r7AHbShA zZkPeg+uw#w>&++p0KTqdTwa$ssdDIrI@60p;s)O%f3#(Lw7=x7+6rHkTWT%;{P_A$ zmqvFj^DleYsQ@FBO$uGq$!pPapU}~>NZim zJunHy9@plV1cmx;el74UiOtG#k(3%SK=J%f*^&3JSdAIs868iqRI@Hwy>$ryRpbc- zqtMr8i3|A$E}72IaYeGctHW_8*8K~4;ticoxZyQn7$*DEY@p${5iX;phKzY zwkY3s=@JU8+HbR5pAnF{Za_S)Y&za>ah|La4qU%+)FEWAx21Dm-8;GQK-}{=43b~O znU(k*86Y@Up}c_T+@^IJYx*B%mte4z%^^~$=BepK@_7rNYw*d=^m zYELNcjgIeo3iB(xcb~nPwphRhEdad^@;dXyRB+)TGIBParz1@#2Nj{kFSBX00h-q~ ze^Ja+kDzb?-&t*!J*4?0(;7NZileuvwjXPHp^b9y?^rIfJ#`KWj<*&$9yyoV4`62l zW}h48+!3=oi@P?`7|h*PKt57Ky2_e+d1s)!n3`ZtwbYZ3sXEC@n7)|eD%Wq_-=-0{ zZVB*x+?9#CoSEz!{Em?~Ek7WUXEBQ0gjw_K4$nQ{fv*GmbExb?pxpi6($X~3gX1UL zKEP)_Z_h=-+*c#1bUKV*NPjNn+yYUySeQJ?zSiP>9`p(Ns{z5S_wzalk3CL}M3DxR zOVG%Ws_-T>x9W1Q#_jzpIVrCr_D0uZ2lr7XkV4zQG)2C>$~8gGvOWvEdATET~hSZIUFN9)h>5;W`Z&Zb9+Y`c~T<|fsz&gl9>M{ z)Sa0klH8h8dO(uM=vjZeM5$>CL#Mz3(c_?ix8chGPq9<`kPf|Ou3g*;m7#Qi`SyJn z7eKnQ_RD7~FQA-(3rBmy;rXZ}Ho=4RvvvZ~aLBU+er^~QFmC?t@8uZ_cV_!Ft1SU6 zQ4)Qa4g+>^GRZ$)ox5-1^Q1@xH@nl`DgeiJ06@Hn;^u(BEVTDp905+!U0Ye7rIk<# zN4lSmeQDKJ_1#;pQfLuNTut+?V~MAhtq&QHJ;D=IAY|)#;O*$)-jGz?Swf47xsb`- zxBiofydC&((ih8=pkwQaZ9s`DI@KDSnFEXCz2sFt%D0$)F_S`6rQSEgtPeh-SSNv+ zaIXH7XGK75Ei-=_4B^U$tBQ)9O{VJ3Rv>Ng%>+H1YcV}Wuaa1@pks& zqb$s{a75Sd;mKg0S3UeW7<|&X#y5=XKkyf@AdLI@bMSYs;D-n)ES`EYL{LruhoAbdP^_UUk|#U5ZnpcZiA&EeBU9=j2l&aLWs$!@ows-g~t?M6}RKf&2>MqQn+A zU5q!Si3rXHnjJbjr}8YyPauQ ztqizYRc{*PIZs-1(TJP0KZtoPuip5|a!L2pf;`zWg9@`BJW?ul$B`2yvvPC!s5kM^ zySv*9ysn~JU*DB-&;!4ptNp3D+-sX2@bZagJ}f1Yg=s zCP&&-sr#CR2+HN31Lv5Xd+#c$89T-Q9l!lwM1aBKVmFSfbl+g@KHUqtXyC{xVrXUg zZrlyHrY%DtS`|^OQCFi0?G=6h?7m#7OH1mbLfI=GT``x?Twhf9y<=L-z5H$G3%u?0 z4>^0irbL|M7pTw8^c`TS;b^`ZWZ}Bp?nXiB=ku58?#-Sjfde{V+5`cm#Wbo{E4^(J zptEcHqm1UB!9U8#{4OEL7d24#pzFqTJDqrr=W^lYyfZ!wx*)*3vqevg-Tav?B0P76 z7}u{C-w@ZJh)!vNz0aeT`E`d%xuH@+zRpi>zEWx+=-MvO z6LDsw*8KYqWu}5GyWrxDGYAE@D~!)69X#GMJh}C2FA!%ZaTH-A9iNI5hVy z&y8#&3{Xy=EQudWD|o+!?>@Lyq*)I+PLV@t?syV>3;vM{aP0n;WQ1cj=a@%}=|?y; z6II1{$>0}7eTg)qGtTiEeU$_`C4AfPyNKhZ1OFmHZ;soC2laz2IVQ0`XY-D^La{oi zhhJ*l-p$>xweq=Gl?>i8bQsx#uew*{y8?i6Wp!46@_E-xzNn8f0A_6&jGIH7Xdn5R zA)vO|AnJmarwM>3&TN0Z9w=H&yDcjp7mR3Ge~M=ITlFWp_Xfz$O?6YsJB literal 19571 zcma&L1yEegvp2kWaCaxTy99zmaJS%r;O@@i?(P;OSg_!>I0O$KoCSizB4L3A-aOC! z-}~MAs@|%%YN~sBre{ufpZ=YZ6RV;20TYc34FCXODk{io0RV7;004ZFzl<2qY>znPUxpsb1wohG`-epiXG4)_Aac%o*c}gJ7X6QL>M*Q?I(9N zi|09;MW{iHXIb(5P5C$~&I3F~jWZ3eVoh>QWSweCs?!KSPoPGhZW6ix=q8YqC4J~d z7Kr~AXSFX`+@%(#{~kqBD7a`?p~(v~M7MW=EA`nGAEGK|?|dr*E!{+&GN_&UCaict zu2Z{=a$C>`Mf-LB=Vm@-=~H5-5XaJY8+z0Ykz33oyRR)M3W6J&qR~SaA#nL$s7cy& zJ_aJ5>Q;DTzSfgn=`g2P+ST7#0!(iz008VftaVQ?u-E9a>Si@j_?aV-3(kU)X?+xq zs+ik9ltuqscEj@f6v)#@n=6&GCAn()gW2n+*_k2xsV9^qV1rBS=+9NspQ{r&5c5Mn z$9aR%@jm*s+`6|3QSvI@qZ*cGEjrCnX|feKR*GKkS}cZ+v<^@1TM{!2UMJj#KQFtA za>t&MZ^k-jg0_pF?#Av5Jb-XNg$%i{T7R0w%R8$&xUAwNeo^pk+P2mu3i&-7FQcI> zT*IJ*3S3T@SGHdor?n0tK~X24?rV`gEKT)sX&MrU+SpBZcC2&N}l996PqqcDpXCo!xui$HIQ;qqmCDarQWA|t>&x#D%H1tdPIYGPJ7KLYxm4N-N zivspbvHjD6^|1jcw#|aLojqcD12?`lC=10Wp`gfxph*9+WWI>V%j8~cSd-$CZ%k=b z(p!Cf9p#5Vp+W{#@cElnI!>vq9QccC@f?l1H9C9)7{lBONfD`!*83wEB8he^o+>d{ z$-H`_4ciD=Jvzo$WZCgMb2EgWQ#(DY=-iFGjWV);cv&$OA*5gVpcDTGoG(FZoh&EY zh(mFqjjGJ%JIo+g;c9ojsTz31*fyV1Gl8A*RqTw~K)B`cHzfMxwpP-RE;0mRw0ITU z1vHr48_#E=oVUCsw^#LWX1ka%cCJ!MYDo1^zXMVBM=xi~O_h$ac5_>TUsvddr#kD! zX{w6|>@^502gs}J#8!jkuwC8l9nlygvH9~p*B34?%#ygJ^%Ypap8n2LR7kY&v;dFq zZlF;(5l#lC@`zIhT^oSU^LjTy_zejLl2`?`r!5>t-IE?n!Q9nkybF-C!WM$Jr+&kHjVq9nnjs|X_hk|%#VVe728Ll*y^9Za8M?<+)~F&_*d_<&yCQp~ z_jQdgOAG)_{f0ZOrqf;tB&h>ch|zRQzC zB?pzi+o9Xg45|QQ%(gcxK}*SKzlHU$0#tBVc4*sVOmjm);+@2G!SW8)nb!-{%?ieF zeJlDr#zK*|4PG~Zm%jCUY*=?RViM2OffH>fZL8z$$E; zc>+`FIwJ7Rl)%r9OMK^$OR9x3mSwGZ*wg3eS=sD2he32x;K1AdW=cUh@9oIsx_hlX z1c(buhGyz+Idd7EW#`lN-Qn|_gI4aP^ds#Lcr2RZYwRKUV+5=*daP9GUp3@EgK~E$ z_|fBaNQjdv7oPBRg7*@%o^;*khe7!ni*LKDPhhCa~ot z(17c4RNMc3gF87*ebf5upmiLCNSyt&Hp8OmnnyDD6bcl3S*0ca_4#@`qj{?Fa|izw z&Z{ph#4exr;qpg!!1DlDZ{xKi`ic0lBlM*y8A=V2_|rbpPu_9%?pIfkzZ(UxLRR9b zyGNgk(`Ee?m)cc;sL$5H#*%c{%bHLh_*dz*rEF{9X_RfCDBfKytNwS_TmlaJYBd zu%_Vmq%t|*hZwY@=h}KY#cOLI>#vg_A(p#3dDypg<8}Cq-=m7H(>o$?0@Rb8uJuFn zJ7jM!-m(Ig7=+}+0dXb)#HgyUul4J*R)94rBP@rws5W~XoU4!}I@FOQe8BLTt2&&; z^vFbr@RldA&ww09zN--&IyUnGu<^@B59}G6KC%_Uywm5u#Vr9WzAZ?vQn%i0#9@Np z6UTV9Si&q)jk2s>0nJWTnj$dJw{7h#R0LqT_8b%;w5sTSR;N1Vshg*C<^9#)^3xD) zlG5oww8ff&y_)?SfA-snTCh68bk7Ppgx=dG2dt12GLnW)m z^yzPrYCZl)5g&Z*^B(i`ufT%4CtV4QI=rGw6P|GQ>}P zv`j&x!QVkj6=SnxWBv&-d&HThbkD6ZTgVN+&{;CzZAmTWMtTx=8+M}#f|>3-oV8!t z`e)iXeTgEv+%`l54*zY2eh83819?cO7hMo1{<|3>+;Q2=Cj;6+bJcib=xD|YVXzNH z0}O*5b63hz``SMuYliCLs^-%b2IEmB+%j*3M`#Mi`9L$))jse2-6++@spBdlS!>KY)793;i=`e&0tYBXO$`)l%MDtgdd8F$ero2;?Nb6VmO%@T4 zd$lU3i$-+=4V*O%|AHj*+T@|AZ zln$j9vBvEVV}G1}yJp!a?YS)1bDvX9WnhOexqlUe8G%v^0X*o_mY0kQz*qW%p+Mk9KD_0N5|4>d96sno)?>nqM{}_YTsPqv=m5!@}+$ z+kJzf2aZ>`+jK0G{S@wLKTNoH32^@5_B9}J8`Ox{*Q!(ETp^~5R~$pzrTc}H%LOij z@`@7%W2q0!y%mQByQ2aauJHFs(7NdIZ2pGf1y_Lw)&l@mU&!ROA`1jpHM0N^6+IRi z%);2ZWLT!;nR3gZ#3O(>LPDgipJZJE9K*95mgTG<{RZQ%2_z`7DOhw|w;^)hAEXFY z*HfW~PACfh2$IYzXb5$wi|v<|*9a-r#CWYk4(>TCN0OkrzQwqa+KhM3W>uF?EdCP; z<)4Y3!2A@ZM)kQpXBu4u!}-`CG#v`(8kn~(JBxBf?}#(^D{WAP?RV-*rQi;8Sg077 z*EEDFvM>iN@DKiN9lQu)Y%5^sfDR-S&fSzo@#hCF=n>@%hY5}?RX#1aUU>Y9VX4GQ z&@X7;8ttYXUi>w6Z0X(MfMz&-++y#${bn8JkgZJf7*jIO1q4SqIuU|H&W#CLT{Wbh zeJWcnleolLGF)k_w+HYbu0mL7U&q8yNMVQEO!Th)tLCoW3Mr#PtwsYCLQ9Fq14Gi6 zQxesHax%8==_hXn;~M?osf|9V;nO;O;l&=6PyLg)-BI4@Eov0b3<1N5qODqwg=_L%#9v5v ztu+XER1e4d6m2@j5bjtpptR-Lc{USM;q@&XI2~HGk&vwQJ+~QXcF;s*;mFIWTmBqg z*xcVzkz3#m&|ji^=fT!5nB^YKFc$i*gPr`5<3P}J3M<%^L! z*3Px{5>xh2=Q^$Awvq1R`dS)fA7&G+PoY?$px)aCqZajnr(Adta)pVgTf|Pu=?P=_H6R7AG$4 zvH$X!!e%CC19rIOGUMkw)9b))loQERiF5GFT>|yDZDlu;FK_Wf1D8D_^@QN zV3{=YF`cBvR+Y8xMI^@N+|)I(SQ? z9M(R27~SZ<_Uz;7Hy}V=13axc4C(p$QV(_dOkV?J2!>@dGG-o@YF+O3F$(l4CBD82 z1k(>6Y4n=FEaThkd>yEUJ}wJ|UO6R8;RamciNxM^W5)$Jc;d3*J&@-)tdC#JcU2J2 zAf|@jl8g7~JgT~Eg>kyR=SmIyGuItkyfxyX{esm~k8pwbCnWc9?@ipa)qbG+j;=He zIc~-REXxyFQ0}M-Cl~SMJ8ixh`8ny^5pPq1=Zf$9R(M9^ygiX>eu?924`j{v-Ld^& zkzrzq?RVPe&nWCd0~Qbz=A;R${m=EnfH;)r58`fr&nk69wQyPh*5$*G*yvkfke|r~ z25Z;ut?YgXET3Ij6|l5IWks$wha1iYCES+2dKbis)Zzb@+U3$u!#8uw!SLu^<0&i{ z_8*Z}32y>;-}x@*%!WR5#lA+q=eoDjHQja<<-HXIBdydpB6E{ntL>d$tL{^a5dXLf zu>qR}DZdJK&>+U)xUSyigQy6 zq~bHzuK0*hLA_Y-(I4tGuvc2rvEUn~Tpa`&(wk{HPppBjvS%;QZa%&U^)GveMP*`5 zyQ4Q*t5_rq_=)ld((F>j(0cRXP>u52mtmoY!_!fuU_=80A48#=;(;f0%@sR3k|3X+ zntHc-AW1Q^2w{hrIkhp@4&rKtXOJ)_p3nRvZ(lP^@4G@L-@7$=(j!9rI^3JnB_>ljkNlkIbMPCti_3xb`L$3=? zuLD+TgG2D&h71h~u?2s8KRl_(HQdjx4}U%xGTPBlgyN>rUQVQSU_c-v(dTwo7A-bq z43;gi(-o#`2QhTQ>rGhdb2+6*xJrIQ1`<3S0;qxM@B2t`G8>Rs-Nl;1)M5!h1QukGp8DW|0e7FTQEd|IYPE zcy}vHVvwa1zd$vUi%M48L{KzBYE?Z*rQe@NJoAT}A}7F=f5~c;8omJkbXyUYd(BwS+DDF+`?g0j9s!Y$=)rrfS0mG?YcnWT1 zI|pw`K>MU%2c!_{sM2CK#`o0yd5ZjTdZQCj&|Wd)rzusq#~5v9&Lf30`sA_*0p-Zo zL^CcUnCF5EYDO>MT}I@l#l2|4tAU!1Rs%|ukzL7d6@Z<9m_{)W{dOE(J8(DD7*3Lb z4b-fM1)=_Z7k+a+W`pvL_!}q|#W%j!c*>=4+(SNhafNSdSPi}LgJTpo4<4xUT?%t_ zNSQIddDU&G`7vDe!S!%c5bseO7Q)kPsONE*MHmb#CSeDq2_sD@rxI76hLWH^uJSmA z2s8(Fm2yTYakW(7+CporP2=dh|BzhT^pU>YsAGt#32ts87^K*=S3CmbHCYy~l3IC? z5TD;7B32O9TJ@d8?^xGKh*dOYvELZ!FIz2WZu}MAacngNIAY8$I@TRJ?J01=)g@2cnx=AU59+tp_fOv;*0zXg8E;K3dP@-6h zPtS#~mkr<#xFL97mq^CmwSn?fhQ93WnUa}AE!dxN@;vW1of?Lel-8`I*9VZ?AZ}hc z?0nu+XyY;YesOA8cJcrfn>i(#*(SldB~V@AI1a}4iJtqanF)r2^1gO~O(ru;{fgE6 znC|*9CDp%-Kt$Ot;GBVnuHqINmY5r9ca^@Q^*EU>xCe~Cww^vf?gP{c&t3pml=D7n z1REa3Vk4G9?AHY+Zr7D#1hZCC{*ONjm0OVSb4a7;?BpA&HEjy3n5460M2YVTe5qE2 z?P`7()P;uJ&kf|a*5&grfzghOv^UZxoW1$Ex!}zY7F`|od*`Yy$-n!7KKIaP{~ zan5+W;>OZt)cgDJ=*I3pW*xTE$9?eVI~9Ks#NMn@aa-B&>pK5T@Jly5+TS5GLL>;N zbZ?4_j!(AYU|ehdQV&YPMbH}=JSIg5n2DFi1+SexLEi@bu5@3q(gMU)*f8C~UT^`B z_(xzj>cI%ysmR^;c;e{SU&MFTKTcQI;bnu^=aY$s<2Yy|QX)jKID zE@5c4bdH^-Ia~Yw$EccQm~yhU7bpD15=xL3_R>>~#41r%2gtt(Cyk9WD*vH?rgt=u z#D;39t*3N@Ir$`L*hO2Qu*1^Tggw%Y+JR54!(&>@tNL^pj)-g%MMCHD?Tg{V!-?lk zlmS|s7bcVOhnt39-|gqmNPJY{)sm#|O!vT+EUX(pVqAU=oFT%dH}8~zF?{u?LnHi>`O>up25-4i ziDFJD$EwD~@lLwR%;@~fcU|m*UR=laMuVj3CdpMhd#YRjX326wHEBuC*Q_-@6x-9) z$_t%_MBXQlcYuz$ilh%eW9+g$hZCKCuD-|9^L*%f@cGo(CdbZt=ie7fW>zt(53XH= z+QW=XM)j*9ul-}{`}KDGm!F97{3?dAMT0#J_S5^t7G=m9vgYP%_+gvgA});`nx#%X z2%C;K=C0M#RfT?$F7^kB`3cyblBD5eE?Gk+Vrno!3i+k-%G z+D-BB_s z6^h$FU4uTLT(iEd_;ZKH|J<(DQE~1U+3d9K1Jk5CI0s`t=0o3^j#W9mEI~b_SHZ9c z|3Tv#UtlFvoAkauCl z<$iLig%b9p+qi-0+TE?a`AZ2_QkBmcv3VZ1*)cyoc!*8%QT`pjf!t%qE_GT+?u=p zHOV@!$F@sgJR#d*MzG4NMic4uR?oD*N}<9g}q@JzbT zx^?Sa$&5JzazWA(=B^E`JxaIiYyH3H*{s;$tCUP-7ZfR?*#3Gw>xi{GG}6v#qekqE z(Ur<8g^tf=ODY5i2ejaevGQYI2;$?5eS4-GLjaT0yZ3vxL6ZuB=w~#SC6tW4Avam6 zZl-0&KD$D!gqV@3?!yTV{YpaS<16o;SG7JBuxMAjUjGdR)v5+NYH<%RY7WfXH^DFnL|Oyi)C$8_ zms!7K#|b@hz=Ef+PqPc{L4a$<E{tF%&`<}Z4Uh-it#BYuM3U_S#skw!Q04x4HL=GY3yL#MI zY$yfT1^olL;KI1o28J`O9`#;w`_*85zsB+W{q3$AJ z2+kx(Xn&Vb7DNrGp9FY}ye)}BNJwSjs(auBF*G5QIC^F;B1@L%z-vsA$tz)Mv@>?( ze0MmuHL@1@&VfxIg9;Ga%4h&u!%Qr=GHj8!wKgL6HZ_8qFW-wZLt5;&?dj28Z`&a& z@i#EWm9lY>;5QBtX7aG@5mt=?9HUTLUcNqOciOcR)Ldsz$CfU?i7BY}U5To=djjxd zuD^Cy)8X$r=n@;r-bzdO5Fjx++tppdHv@W2K+iBPgr&?lBBed6R%mlo5L6LpFR zJLJU6JZcq#f3jGqvgbJj-9iMUwiYO+1e=gdnKyJzpO7p(+2O1VE6YT}VHz!ATP0%N zAaAsV-(m8W5(STeVtyW*Z>`}R^p0T9YSZJ6sJmkg=jy1T=zWhix+Ym<4zk>Q%X{=A zzXGJv3I8oV3G}%McT{;ylm+EOnqABW=FUldRG^{X2)*M>;;z> z7Ed35E=RN(Q1>{0K8E%RLHWej%Q+PF)d)I+Bz^F2PMb9~Y{{6auih$OMrT!D#H*SA z%oOki_~($lZfd%e{JX$z+;3A$tbK{+cn#Uc5v4ZWPW|MSeLcz#?ppL%ox0J(`WkrG z|4#gavcZ)hU2Vgz+yKIe-ph>dhxg2MVk3A(nZ{2jrkwLz=p}1HSM|m-9`Ht!pH~v*nRrPCwiK;Iwn_1@rb#!A~Bb~9+bF! z2J8vVjg3`ok>L0rF#M-XXv2UEBE0@EtLYdGZt}pY#lB-{4|d$gJu(sZbX@zu97gF3 zXssXRknB6;O^#Q=7cpFgq|ulNY>pS&cI4x+0AMQ}U+^`|nX)&;#n|NWc=bKViyn|{ z-TG&V^SSHp(;L%0F?92Qemze8(1_#BsPoyFe)o{t8^6IqlfrPopF1C~Ew_qS(970Y z(4%4beMD4aSJu&cTMqrm~tOY`0D$f$N#Lj$X!7mcKeIZS7!?0n;u>?t(S2)03gjc?$SNI{bGm8G4M8m zoV(7ita2V$=6m%Z=$#8K83z6|!dMyPX$kiaS!5`a%X9AaRALD7icNQ9&!oPC1j0xSBGIMZW_SQegPTylJFB{160EJp%O3gQgQthP2w+*fKy!$Gj4}w0=RJ6CkES_alh<}qCp@5# zCq*U{^V)cnn@BJlqaunGr0lb2Hhxg0Kq3++-tIB3`s1WT`aa_5XMN!X zWMK3j1wPVfw6tRS)!kK;6nzSBjKmKOL4;zJUfpK+wT>*V&?3m*T}!%|_C@u0G**+u zHV!y_j7#mayQol<+>ZzSXd0jhOBpS@I?EoVW~S3l#|JOua>C3Ks5zr5D(D&L0cUta z4~<|m;z`#zUiW+Yh1I}Rgs{ncLz>LHxVLq_2z`8}#r5#D)B=HB~H- zFA^YVFplK`mJVClm`M@MqTbd5T(*@WCUR*r$__*OkjXsuw}a~Ilo+g3Phw6x#DKwf zO?Z-KQWW9r(+8ZkY(a3g_5~QG7V1-OeP3shVbO1r0d1K`V-$RsZ z4+MUdaOK-8sd(rqf%>`XDvrzRHZW~^a^9%&6rw~a3;MX7&qF-Nn!|Dkk0j!C&>mSy z>@E3p`YrjoTLz&(1qhG;c#Suc?T0Q}c|}xo75$N}b4Mnwc*A5$g_a3Z73JpeFjqGT zJk4-$x%C;Lb0<7b;=51(-(@O2Qlj$aFi8#V(CN&GdU##)a<}H+6XTbEPK--XR)Ib; z3F5C1UHia){#7)L&LY_dW|F{3` z$mtuiW*BXq!0XUf@2IsdwJXKz?~HhOF2oH<=~0I9kcfDX1P240rhM|j7==-L=A>~e zBD6R=bgds1IB-%*ofB;};qXX^8N4a3{TQ8DS!mzQKNz98vuFhL2acr)+TN_DEc~Vp zNZY<&O87w=~KJ_=D0EaL7&*-C1Ff}f157= zupu-H7a^W&c=sXsu^3REtTObsKU$)tknfr%g>dWdEfNYy!i-nV)zfx+n@L-DB7rez zs0y1jKlZP;coGZ@3@j+)68Q!G;*=qiio{wog%gJ;y5+#&E22L9K1QoubTjB6ao<%W zSD-TL|5SHZOkhj+Opz)iLIM{Q7x;b3upSdQOrOtY2Acxh`0c3M4C3F<;56`Hi@3&& zfh$m_0D#7FQxMe!Ua%A7<8H(r=k5xb#O!fccZ8WkpyATwn8{#+KrmN&Xl;a90L&Q< zsY40cI?83gh~k6VzYKM=et&`2=Kwn_1gx$*vUC3P#B|&w{5}Y{^ZChf!0B&LfXw2w zpN6{bP`>So?>cA^{cH5U_P1yJWB>oS;==MjRj$B_3@s&=e~6vwT${Gce|-IqLPf;? z8uq^<02>?JUg{+wCw%#|6OUjDsIXwD% z=nYqTiLH09gg?paXN}3-RhIc-K>RcdJHhG$7J#QvEJ5Pmlr%V2#z#2g4}bt6GeiL9 zV}py2Fr!(I#gCTw5;b0=FD{bktZc(A(0S$3X@C)wkMkn=BroZet!{heNnP|{b}Q5l zjx_5E;qA*~EhGK~`2O3ww>`=I2e}_LHKk_6;xgf8zXe$ zmQz*G-s1P?e*eisyZFBWCkl3nN#F7MPY#-wzGp->uSmQfGP9j)B>}W;-!TU3f%ySP zYkQ%YHjraUsbpscXn*7#G7u$W#w>;jV$$z#+fFOZm= z^5W+^-;4b4wmnr?Mn*RUZ2PMFzn+am9*aFk$%AclCO3{|38^p_kDsLMM;#v@{2hWy70THb+a(e(^YY7 z@^fw=im+)+;;5(y0Hr5!7L93~}8{mqZ%on8oz@(0jg~B(ue@*nh4{r>Mkz zDJ5p=+T*slX0cwpxWGb}h@dTN%ch_2THcr&2|3;pdrWjgnch+`1%k&sp6=Je5|zLK zxqn)SxyWvY^P&B9y3^A!g+(J01jQ+hpEe&6RvNYEyAt!;#n?Z|u)bXWcvQ_7a$NfV zhxFzD3+X>#|6gFy|1V^)RKQXXk*3lA!Nzm({~b!Z=-XQVkNEi)j9GYnS9g{Fg705) zBfY8e_xbr(nOBhwf01{_6vz;`%eIS7{e)`v_v51k9UKcD)R!Q9nK)l{x=-5`f|$&R z4n>U;X=xh~V^nxk#*sdFnGC)*-nbz5aQj}NKL@;D`3Xz>p|lO9KtDgSXojqfn8EVj zV*2ZA$hdKkX|Ba;`nb-2Gt1}Gcy}28E{q!1?cw+8WG_fWuvK7Fsrk`+$W4dsH%Z^5 z@Q5Yxr@$|eUmE6~Ag>ZA83@QJb0;rY)%*a*ZxG!nv{t4^I#Tns&F`>pe z<7UXc7-PWZ81wLYb(+5uTGR7FR{|q*t<@!ITv)?cLif+BX?9ye`;F)Nr6*};8=k}- zfTk)e@hj+tQ@q=eXoX5*VOaBHRxG@C&M+CoEz#_^bB8Vzmm*(+gA^@kI1q8ej2F_I zcmUYv6bx-*i`yNo89$Hw%x==>DN)Q}8sv0$Sr=72D-;30)6Havh-89q$7cj;H}TP(a7wztZq+^dlFeK{uYGV0{Dh%z zS#^d?V>j>=9qbNkm-#U3^l*d6`8?4BcmJ*@zZb-UK;u#GcVJem+t~25)qvb<;OU~* ztG4Z0CN;eD+GNwfqr2<|7y~|0YnH}m|CF!bbjqE~&Epmrv=XwhuVl2YtX7UDUQ{6< z6p$1u6f6{K#Gso}WVKL=Qz#2-PX~3PzClw-jR)~?z4`Hg{7Ok;!xzBRyYsYn=I2qg zeG~X+{btXP(GS!Mti<)Ipn8 z??5u~#4$pEwH+uEQ2xE))eZd7qyUUF#39g#xzbjpz_+@~m`=>%#3 zMLMG7;qqHm78GI_cWdC%HA^!Ew0xZkXbgE?htH7lN20HOmaMe{IeWF?_T%{urJuC* z(XxegwSTjVE2c*=hS+pPe=`=8k8F`&GbwtIP(sf5!MhW{BI#pN4}bIvrS35=Y@e!{ z_qcmUGPyl}@5`mfetd|D9!S(gMxT?iOihsQ1#d@PWM|l>Xy9$h6w>x33;3bMu1YyH zZHBVeZRGwqtYxF3I7wGivQ`A-a#D`|@}}Le#n5+mBUk5b@(A_Dv-ER^5w!I{6IvUp z>P~8s_6XNIFJNGWg2V1T$k26xQ7w`Tx`f+Er8&AXeXb}7zIq*Gvg|ntYG-+Iy%UBe+!)Kqw zenkIH6Bjj@londX4;32IG7zWPVBLFHwdcrhzqnJS#~6fWjmO21$%!-;s(^&X=@0u~ zx^1tTW#*Q&?FAfl)_0TgFwS&P$RY9O>yzyub&ja$e9EIVE51hc;3%|QDcUjmu)s9k zSuF(~3!P%&@v{;B{R+Mnt@>|{%8LB#92;C~9$WMI{0g5Oii@c$el;-lW&7U% zx)?Tlg7bcRAblmN@J}Xp$K9L{{TW30^z`FY^n`fcftX>ojT#3Pmx@w?vYE`l;fm_s zNiyFj`OA5Ctj`&wbgwi0=o_yv>1OY7VOZNA^yqMegUt7i=j@loL%-IieTI*CJx{yF zcMz(gRyK{@B*}BFXCDpTMQL^~Uj4KY?=~;l9mOB(w{QM6MVgW0ct{a<65K#wW5{uw z^rLRL1D=dkA_Lp?_f#rcV?Mi}J#XEi7_+#stjr($37^m!ZPd(tineSk!|7~h{*S7W zN9;@4dyXZOPn&0eO|O<|$5N1E%f6(Yv`C7P1o9b+Vmlmj9eJ@2lBZtFv}fzri~Y|1 z+`8Pv&ntLZXC)|y=}v9dSpzZ)1MmeOr}VU?+%{i-)-G@?C*&DaPH(- zf<5#}9Q!r;>53_EuSUo2>i?@qDC7QD&wtZbK2=R$z6f4jn`mkF&F59=n56fccj7mhHbAzM&9##UaR2$iSw4Dufqa6n@|&r3isG zU!?DbM5An6F*edszABfEbl_J5SC7J3h zE{F*7$$aLSg2$_$?0@)eKn@#3GoWcJvMoAvY*K zfCmg&H)6N|7P4sa3mY==L0$XYBU|lUfq}}HBAmplJ2n$ej*qMrpsuRjG5B&jhd`(! zfKBmY#LWAQqkMup2@D+)UBt4kAhECDIKqgv&Xp~(X0|n{+ogTuJujtIgpvVQhT$@hX{N3pONBzzl#- z6)_YD<)4MVHAYp4n>q}DOurCA)M4L+Qw~BXvEC?s6zTydUlDglv4txH<6I>HEx`l| zFjhXqcY0WhP3jjAN~4*uTW%!TTnFMEN;9@6jI>$9K(4-26BPclP@H}uZe$XG*0>VD zgI0m+9${HlaA*wM3y_UhK;yAn+ADddOvYBL4G1@@#Cat%kDUXQ$FZC@9&*foH5ZVC zTYx}1rApk>k!U7(Im|n-({Sv^hV?peBuEVudjKioug^p~dJXC$X0g~)+MDQUY=7@Z zKV94Sl!@-}W)ERijQt4@#Mt;U!})naT}sVy(l^*p1T$OBZ*HQ)LoLPlqjj*GqsAk1 zeUn$dGWCcZsQb8GyXgsY+*Zdx^N+~|$SP$$m4{F+8fAyqeVB{k7|I_b?|mD`8n3(( zDl2!GMcr*5t$Y{7J<=B~?)`iHR+R`t;2D{enzHt_8Dn1K3u;f3b??IbHF7v4q*D0fB}to9M)QW1 zCcgR7Q^IAbdh$HrNn6`xO7y&7yS*xpwdRF-roPXs#xIbncQ67jr#@&> zk{c)6&uz=d zTT-gHSyCFZru4L}#9|6B+4>zFStLrK4RZ(|qVQc<54jHR)D`{Z*MRGHk_2IwbjduOe? zZ%*U%2yXj(Nmq@TUq}0yl0SJBk^rw@g_ZIammc9Vv)klu&uaO{u{`F$v3;dK!FAB)LS4oge z;uo^;Dcdk~C6u{YGpANH^xZR(IlLkqfqarhAU*?k@7-H&tI=Q(4_>Vagi9P=%P!_@ zs`$h8fM+X0N-9F-U_Y|KlBxG$c6%P;Azd#5O&gZVpckNCh<~ig86ajSOj6qih@*yA zk)(1>6VEJscHFJnl75BdZb*?+ceKCkY86!wZATI`-o?~~4IjSXYVa)r)QBgdvQ_6tT-kF;N)9b()?E8VHw(BCO*BP}9L9qFn5BJN*w6)&LzR-)#R z6_#p17}`szUh8L^xwjUHS!EspCy@8Q_Cp_V0nKvLgLMx`7NMI4P5l!W&|2van=(~v~CvojO)N)V`=L?Pkx zm!_r9H2u?JJTJ47GSohw{D0m7{wz1UWyk^o6jVF{AJJl*pC}S6%=7taX0a2hdFJNY z+ev`%fPBTlE}1cYz`(H~VSigyYJ07W!$PZ)AlE5o7o{MS8S&x&RB`U%OfX&?pIcrQ z<}T!taw{*Dh-NNR&HWYTZWHCsiz1iY3c0M2Xtrt*L*x=uF4Y%p!)d zw|?*YyFJf&p7VU4bN>1M^Lfts;~c_cxd=r$AR}Y&nM<5Y&Py8um$h-NZwgy`GYaA~ zz2)qyg^o9&YM(9z^@M$&)E#54H+-d!8}r-KkC={7KFU*@;{?zRelS9~a5HphYlfXN z0;*X1)|mLNPuZY8kSU@RJMC~3naE6{n0Syfk+|hQ?$n5T#WCc!lE4;gUFPJ#ijUJ* zzaO$jNhU$_)NagvM!=bLgb>5Zb8fjh@rK`?<-7=fOnY-jgL(vuh1As#TIMZCx}G;f z2U)IAw^x97P1Y2tOPzM7ptF{)agk1evVwQwg-^`y{|%ld@;m#zJg_)*JJD>8wYs_e zH)#IFn^gRj|4~2bL#N;I8N7ZGdu-4GS{%P@1#P(2|Dd#e%udyVt1)fUn6>oy=e>BT z($4EW!51I$C5WOrIatgu^4Pv8Qy-`w9tP6*#dfS?%F62LkQR#^OCgWu<_ zgF?vSfyF)Zg72z`8>%{$>{xnj1uDusOPl9dXqW=+mp`=1)o6`doRaEcGxJ0%zlfBOm&c*O<4?l z?jZUb_)OAG<6QZysr;7#4u>h6ouH|8mWqI7S0&v~%RSkB?!7D&ge!vkYRT3OH(t$g=25X@kgPJf~QLHtpNuLXQ!eM zZA|JO@K$r<>GwiH?-25Z)85-WQTx#!W_ft?`MrTP1B?^t8g)ta>?2<+)+%f=m(X3H z3-lQ$l8&TEmP+*WSo|c-KE`O#@prV2BIVY%eO|D;obaf!EfmqICnNeGy0Vyoe)i$P z`f-HwK^c3TbHR-z7G@toF4areAbstitBm)yAiUZatE-74V~Eb72rkyIDE$bL13Yz2 zr%LXRHVX{^k#nNm5h-4vR&D>SUT}=YD=!jZDI~P@(|VS;0Omwv!oRN$0yO)STZXR8r^_!VU1XC4=87os;Nne{<&H z^4ZT-gbQxzYS%dWxY8zR$Pt1(@%Tb$Kh9uPu`s`^lZresi8mZNoUC1#@@6 zu1g}bx_creKt^x^Zu&8JD>qfSSr%8|#CCL^vEwT=<@Qd>E0cFAGt zrlgCM(mlHnJZb1N`=6;MfxB_z=Wz3Hm8^mQ(mu;Q5IU#yplvHVIQ?m9aC+VOCA8{F z{GtTPMDbR5@FQwDO2kmk7&f7zxXQG=Ml^?5F+GC^(>v1{5LLjNg|{b$eE@B1e6P@z z>ce*r>!mZOd!VtGF9{gR+mu7nIPqRGvyV@+Ns%_(EjbGM?KmelK9oHmTkuFH(>kKq ziyL2{^Elnw^C7saT=^IURiN#hhj0z0QgjJ0#z#8WOw-Vf<0J#bO#{7%GSgtZMY+KZgYl7mSOv606vRxMZ z&&zXF1(6w%g^gMgd?1EiU4PR?+P%l2Zfs!sqWHB;&*{s@)Ao~qtMzU=NdNj=bC5;d zm6G1kFbm3}kALD0z_2yOoq`y+|Hb*mOc_E5{IL#1@Kpmj&|KLX01VSDWU3Sq?SFK~ zZI?W46F}CU`e3>2mS&QmnL6jy5-Am0WYK2^9g!LKD{24-o?UGT1 zq)f9dU|;b)+*!u~)o0$YTX7Wq%LZn$XRpq)B}QZngaXwoRJyzcx#-~yY@l=R>D2CSi-*2t(Ya{11gvdMx|q6|;C zsM(qAX2DM&Wgefkpd|07!=CV!(nxtpbTQmraS#)%SwanJ@jB0VbO$<6D3?$_-2Cx6 z;{mPN$gidg?tpw!vw)j#TFdsP8GmFslL9kZeX;E)Q?AEm(pQ#j4K|*JtC&xFi#WIL z+z2^KA&ydMS3bRp!mg^U-!p%0B&s{ooc((jpJmN+X3ME~Dgh$5o?8TWQNC}vAYWVf z^**$~D5CGX58nUq0NM4;hO#lGQmQ>&Lhv+}kZW85J`bR;~4G!$u;d9_!ybN#KKT#-HU4`eAi!d*|{V?+i*IWl;RA|}) zLi2(s@dtkVEaH172%Js3i@3oQzM3yJ;}5r1I4tuN_yp|sQ{!vbC+<+R7klX>9w&e# zFxRqQcj(8Ez$BSY+TbjViG+$5hNm!ihuAFX`06IDL*QM6lsWE529`K~6#a9%a#z?_ z!l#{P3orp7C0|4B*c`n)wDj14s&9RY)ngl5C);Mex*Xf!^UCUt3Q4}Jx;28F(1gwB zA6HP3JT`esTJI%&bz}3t-hLToiTv&RKZb|sB(48%0q^pJUqmbS{u3X0uX+4G0*{!_ T5t=^y`X**`+R?h+3Yqa23G{qD diff --git a/tests/typ/layout/par-justify.typ b/tests/typ/layout/par-justify.typ index 2e5b48063..e72a2a07a 100644 --- a/tests/typ/layout/par-justify.typ +++ b/tests/typ/layout/par-justify.typ @@ -40,3 +40,13 @@ This text can be fitted in one line. "a b c " } #"d" + +--- +// Test that justification cannot lead to a leading space +#set par(justify: true) +#set text(size: 12pt) +#set page(width: 45mm, height: auto) + +lorem ipsum 1234, lorem ipsum dolor sit amet + +#" leading whitespace should still be displayed"