From a94569b47437f40325ba5cc59a7a199777ee4203 Mon Sep 17 00:00:00 2001 From: Caesarovich <38408878+Caesarovich@users.noreply.github.com> Date: Tue, 20 Dec 2022 16:18:41 +0100 Subject: [PATCH] Now using newline as line separator in all cases (#81) --- index.js | 6 +- tests/snapshots/tests/float-option.js.md | 20 ++++++- tests/snapshots/tests/float-option.js.snap | Bin 378 -> 378 bytes tests/snapshots/tests/main.js.md | Bin 11323 -> 11955 bytes tests/snapshots/tests/main.js.snap | Bin 1518 -> 1513 bytes tests/snapshots/tests/margin-option.js.md | 5 +- tests/snapshots/tests/margin-option.js.snap | Bin 384 -> 385 bytes tests/snapshots/tests/text-align-option.js.md | 54 ++++++++++++++++-- .../snapshots/tests/text-align-option.js.snap | Bin 1102 -> 1096 bytes 9 files changed, 74 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 6a17500..70d3e16 100644 --- a/index.js +++ b/index.js @@ -218,13 +218,11 @@ const boxContent = (content, contentWidth, options) => { const top = colorizeBorder(NEWLINE.repeat(options.margin.top) + marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight); const bottom = colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight + NEWLINE.repeat(options.margin.bottom)); - const LINE_SEPARATOR = (contentWidth + BORDERS_WIDTH + options.margin.left >= columns) ? '' : NEWLINE; - const lines = content.split(NEWLINE); - const middle = lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(LINE_SEPARATOR); + const middle = lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(NEWLINE); - return top + LINE_SEPARATOR + middle + LINE_SEPARATOR + bottom; + return top + NEWLINE + middle + NEWLINE + bottom; }; const sanitizeOptions = options => { diff --git a/tests/snapshots/tests/float-option.js.md b/tests/snapshots/tests/float-option.js.md index 1b3f513..bb6b7f1 100644 --- a/tests/snapshots/tests/float-option.js.md +++ b/tests/snapshots/tests/float-option.js.md @@ -57,10 +57,26 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 - '┌──────────────────────────────────────────────────────────┐│foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob││arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo││obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar││foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob││arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo││obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar││foobarfoobar │└──────────────────────────────────────────────────────────┘' + `┌──────────────────────────────────────────────────────────┐␊ + │foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob│␊ + │arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo│␊ + │obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar│␊ + │foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob│␊ + │arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo│␊ + │obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar│␊ + │foobarfoobar │␊ + └──────────────────────────────────────────────────────────┘` ## float option (right) when content > columns > Snapshot 1 - '┌──────────────────────────────────────────────────────────┐│foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob││arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo││obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar││foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob││arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo││obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar││foobarfoobar │└──────────────────────────────────────────────────────────┘' + `┌──────────────────────────────────────────────────────────┐␊ + │foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob│␊ + │arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo│␊ + │obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar│␊ + │foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob│␊ + │arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo│␊ + │obarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar│␊ + │foobarfoobar │␊ + └──────────────────────────────────────────────────────────┘` diff --git a/tests/snapshots/tests/float-option.js.snap b/tests/snapshots/tests/float-option.js.snap index 06f35c775a00acff138cc8695df026c5688ba8bd..d6b8876db73d311213deb0034102c7a59dd283aa 100644 GIT binary patch delta 133 zcmV;00DAxW0{Q|nK~_N^Q*L2!b7*gLAa*kf0{~=H8OUwu*V64~0f1J*X&SSoz%P-y zWAdR2A5b^WS00fv{z|hwN+209qxyG9AXxdBlvqR#2`N^a$kPlWp$3p^e_|2TfMMnZ nlCua}^EeS?@)LDh{%2bnSk^EXA1xT8FN7a diff --git a/tests/snapshots/tests/main.js.md b/tests/snapshots/tests/main.js.md index e358912a29ae415709b1ccf3a8e0690bbe4bf6a4..3412078c1a3f07b028a24fbdbdd00338d5634228 100644 GIT binary patch delta 1198 zcmdlTu{m~w5aZ+o@%fWCD2PukP~n=~$f`E^1EU1jgf1=xAb2#TY4Sxz&O}u&GMPn47HB0OP`@#f*&@hJ z;N|AtEW)A0jKv+&lS_Ck!1m?w*x{wu@j~Pg_Mq7zIysDAmR43UCQObM)XI;2Qg?C+%s`liAa(Zy>@4$+Xd_VcIydJ9Ok;0btVZU4X3=1#;7|Lt~ NXIA?W6Y@+6TmU|DcK`qY delta 783 zcmdlSyE|fo5F?}d$p@H(CqH0enfy?AGf-;*hx+8x%+g4P2nsq(hT$4khskr;;m3J}^ zo5N&?7(xw5E!eEh1ss0NSPWVSRDg+PCQsl~fm;MNV3I&ECE6!X712V{Un}Y``Mr|E zWL`0c$@R((ljj0yeietwy5bI#=L6}zKpNuiof7|9kTm9MJ7`U5vaGd_P!2G$OsG(D z(9ZLzuyXP+EvPn)Pf7@mQFpaqsCG2SQPMCon*2~(VltzSJX?%+KH|)>M@h^bY!`wG-a39rTZl7X~s;R zt0Tb}GkKr9{Ny`2Cfo^%Dv@u73jwi!<;K#;6Bg1^Um`= zGs92u7!%r&_5II8QN@U%NrDxz5JoYPr54Agl@!YQ_9tD(3U7_y@A|yUY4<+s`s$wN z@+R}yu#gC)i)nX^x3b06>*`END~=nB13rsDIyKZF}u`Vv^!tj zU$@a++hJQ=<*c-LohS3OWxOa8v>ZZ-;QS40px zf2pyd5AC&(mX}b}%HPHEb$8%*R`3<64>u@vDrQ7K4b|UJBdvbcA+zP%u;|ScB#jd4J^P0 z-9ndsv`N$0uq_nFwnk%c1J73r)xZj72r0@ns@q(_yv2l64s@9#%qS2V$YfY6#>Z{0 zA?Q?92+|Z55Q+WhxeYu;0DN2NPN&%Lp%?>IKx!_!sg584qlDlSHi2>Y(K^wKgT#;p zxUm!vF&kJ6oTbiKARX{podd`>#hT4%F+EO(UqdtyiIWN)o5fH}TiTFETUAn7B4Exm z`q3QW1arhNyoDi@2^C=s&@gzz0oho01}iwxDiKh_BvPjUA~xVPcsxxNCMYhQjW}a~ zxRceME?0Y8NJmL9bM;I9!CFnpKfC2W`?b0mDCxoFav`+AsU{=`We~RU3{!YTW0yw%u?rl8K#o_adwN!9j*5$jcFunx8!6 zd(p+j5}V4{Z#{-S_vGz1i`Sjf(D=`Fpi_v&NE=32n;&^B%butszjhTS|crzaC zb>~OdT?gii(QEV=%ngm~^1~4km>oPAPWKtM9-e&{%Z$dicd-|T-0n!=^`qeAYIt7e zJS+SCkH^!yL({JD=@P+FrjS_C{2n(xTz}eC$W27H2l9jSZ=(Ii!wtMZ+@o{8)!B*u zOl&Rke!#yr9T=B9a-3b836vOm2J$-(=RA{BAk0)=2CWOtwiv6 zb1fYSk>knng|P{|=U?^pyvb^L99-C;eWR}z_C1BHE2De2U#Y0IwAeq}M#X(?#oOhI z*PIP^X<@ATh5x(GA)|B1=o~WIYdNo9@tw0n=j?C;x^s5uoE=*AmCmW4b1LYZ3fiV@ P>(}yMEIO_+u`2)oGTGxV literal 1518 zcmVoevVw?~NhQmXi zk!^uS8f!Fu0P*Q#*V9E7EV4~E?dc!r>EFq!|DfC6@q^&T1ly-+abg|W9^3QXdv*2Q zPtv?eC7IBUtRH_SiYi77O%kk#g)mBr0<}0ct&C9CcW-nZE4(#vv**hmr``CX=j$7u zw`V`SJ^QxSU)_Ft_I*kSc!#UA3;(>XnlF3m7DPe^p6Jn;pQ=+lGrOzU=@i_{ueEqm}VzA3w|gZa?R%=RV@vYFdi*F9!O8(nvpZR(@)v}1dm4RiN@~)bEBsN{+YV34;EBSAyeco!4&0wxG zVj(8VDpF7lG~)L5 z!l?4sIPwG&jc{xssv{yXK&58;(F#{2O(e1<$Dp&eq?Qj^LdQ;8bA+994DPZNz=>V; zm$ktN7z3x^(2q804jZw>DX_zAFk;{Wbp`^dfcFdIhfGtf*^HJmqP|R$!wim zjjcmdj>>}8LaU+|M1gPwbg`L^OeqwoWhDjg2I9NKuTU8x^VA{$Ajr0ev|x+s7)lak zVZA}d&NB^w^A^P!+-$s2nxQqA$TanEp%(8vW0jGmu}tDLaVA-CN0v-sk%rl;ImI~w zd`Ju7s9CWg6B;9%iLW8@I;&DmfUKGTN%$1TW!sED>eT1APTgiOl24v^_u{er@CZYb zI=N?0!zxRBbrQV-W==WaEZS}`P_YMku54?P}FtrdJH&4d* zlLzbW$YjsSe1P>0g~tw_ucU^KC;1qbkwj^?c$z%&RSblEONmrTE+>Y!QaBLEp3J6n zV>aYJ-b{u2-KW8I*Ma#ccnPH(d@(S#%MZsyXl~?SG&f+_dUWnZG9OHB?_w{GxZUy4 z)1mNGEV>|zp4I)qyA!$Hz>I5Rrh-4pm(r`6-{Z!I>-T#~#mV^g@af3Hv&5irX9F)1 zcW~Ypo0}ZWC)eUHhy80ap$W<3$Az`oP{lys@afK-dC$~z#IqfCZ4MS(qr+>ad@(ZY z&CVIY;*S*_MRKi+b8l0>5 zf1OMEgLQ7#>RfYn*VX0l!gKo{x(ABxfueh$=-fK*o)fy~ge%b9b3*r=(5|j@PXOH$ UK=%aDkvoIG0Yv;GEMhAF02+z_%K!iX diff --git a/tests/snapshots/tests/margin-option.js.md b/tests/snapshots/tests/margin-option.js.md index 016e8f4..c6fbf81 100644 --- a/tests/snapshots/tests/margin-option.js.md +++ b/tests/snapshots/tests/margin-option.js.md @@ -67,6 +67,9 @@ Generated by [AVA](https://avajs.dev). `␊ ␊ - ┌──────────────────────────────────────────────────────────┐│axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax││axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax│└──────────────────────────────────────────────────────────┘␊ + ┌──────────────────────────────────────────────────────────┐␊ + │axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax│␊ + │axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax│␊ + └──────────────────────────────────────────────────────────┘␊ ␊ ` diff --git a/tests/snapshots/tests/margin-option.js.snap b/tests/snapshots/tests/margin-option.js.snap index c593a1319dd22e16a208e8336c3dfb5ef7dff48d..c75d107b0cb7f47d675d8ac1f3dc06202eb3d5ae 100644 GIT binary patch delta 99 zcmV-p0G$7T1AzlFK~_N^Q*L2!b7*gLAa*kf0|3Jp-aH`d2zi_u;P|0RKcFuS8WIp5 zNDn%(m5{$w!cws^C;=x!iKO?yNE-Apge}g1A)i=5E(Apz6$}{Uk&ZPP005ZJMJLDx F006wIB1!-N delta 98 zcmV-o0Gb6W0;I7rC;=u$iKI8cNE-ApgeA^^0iRewE(B_(T>l`Caja Snapshot 1 - '┌──────────────────────────────────────────────────────────┐│Lorem ipsum dolor sit amet, consectetur adipiscing elit. ││ Maecenas id erat arcu. Integer urna mauris, sodales vel ││ egestas eu, consequat id turpis. Vivamus faucibus est ││mattis tincidunt lobortis. In aliquam placerat nunc eget ││ viverra. Duis aliquet faucibus diam, blandit tincidunt ││ magna congue eu. Sed vel ante vestibulum, maximus risus ││eget, iaculis velit. Quisque id dapibus purus, ut sodales ││lorem. Aenean laoreet iaculis tellus at malesuada. Donec ││ imperdiet eu lacus vitae fringilla. │└──────────────────────────────────────────────────────────┘' + `┌──────────────────────────────────────────────────────────┐␊ + │Lorem ipsum dolor sit amet, consectetur adipiscing elit. │␊ + │ Maecenas id erat arcu. Integer urna mauris, sodales vel │␊ + │ egestas eu, consequat id turpis. Vivamus faucibus est │␊ + │mattis tincidunt lobortis. In aliquam placerat nunc eget │␊ + │ viverra. Duis aliquet faucibus diam, blandit tincidunt │␊ + │ magna congue eu. Sed vel ante vestibulum, maximus risus │␊ + │eget, iaculis velit. Quisque id dapibus purus, ut sodales │␊ + │lorem. Aenean laoreet iaculis tellus at malesuada. Donec │␊ + │ imperdiet eu lacus vitae fringilla. │␊ + └──────────────────────────────────────────────────────────┘` ## text alignement option (right) after wrapping > Snapshot 1 - '┌──────────────────────────────────────────────────────────┐│ Lorem ipsum dolor sit amet, consectetur adipiscing elit.││ Maecenas id erat arcu. Integer urna mauris, sodales vel││ egestas eu, consequat id turpis. Vivamus faucibus est││ mattis tincidunt lobortis. In aliquam placerat nunc eget││ viverra. Duis aliquet faucibus diam, blandit tincidunt││ magna congue eu. Sed vel ante vestibulum, maximus risus││ eget, iaculis velit. Quisque id dapibus purus, ut sodales││ lorem. Aenean laoreet iaculis tellus at malesuada. Donec││ imperdiet eu lacus vitae fringilla.│└──────────────────────────────────────────────────────────┘' + `┌──────────────────────────────────────────────────────────┐␊ + │ Lorem ipsum dolor sit amet, consectetur adipiscing elit.│␊ + │ Maecenas id erat arcu. Integer urna mauris, sodales vel│␊ + │ egestas eu, consequat id turpis. Vivamus faucibus est│␊ + │ mattis tincidunt lobortis. In aliquam placerat nunc eget│␊ + │ viverra. Duis aliquet faucibus diam, blandit tincidunt│␊ + │ magna congue eu. Sed vel ante vestibulum, maximus risus│␊ + │ eget, iaculis velit. Quisque id dapibus purus, ut sodales│␊ + │ lorem. Aenean laoreet iaculis tellus at malesuada. Donec│␊ + │ imperdiet eu lacus vitae fringilla.│␊ + └──────────────────────────────────────────────────────────┘` ## text alignement option (center) after wrapping + padding > Snapshot 1 - '┌──────────────────────────────────────────────────────────┐│ ││ Lorem ipsum dolor sit amet, consectetur adipiscing ││ elit. Maecenas id erat arcu. Integer urna mauris, ││ sodales vel egestas eu, consequat id turpis. Vivamus ││ faucibus est mattis tincidunt lobortis. In aliquam ││ placerat nunc eget viverra. Duis aliquet faucibus ││ diam, blandit tincidunt magna congue eu. Sed vel ││ ante vestibulum, maximus risus eget, iaculis velit. ││ Quisque id dapibus purus, ut sodales lorem. Aenean ││ laoreet iaculis tellus at malesuada. Donec imperdiet ││ eu lacus vitae fringilla. ││ │└──────────────────────────────────────────────────────────┘' + `┌──────────────────────────────────────────────────────────┐␊ + │ │␊ + │ Lorem ipsum dolor sit amet, consectetur adipiscing │␊ + │ elit. Maecenas id erat arcu. Integer urna mauris, │␊ + │ sodales vel egestas eu, consequat id turpis. Vivamus │␊ + │ faucibus est mattis tincidunt lobortis. In aliquam │␊ + │ placerat nunc eget viverra. Duis aliquet faucibus │␊ + │ diam, blandit tincidunt magna congue eu. Sed vel │␊ + │ ante vestibulum, maximus risus eget, iaculis velit. │␊ + │ Quisque id dapibus purus, ut sodales lorem. Aenean │␊ + │ laoreet iaculis tellus at malesuada. Donec imperdiet │␊ + │ eu lacus vitae fringilla. │␊ + │ │␊ + └──────────────────────────────────────────────────────────┘` ## text alignement option (right) after wrapping + padding + margin > Snapshot 1 `␊ - ┌──────────────────────────────────────────────────────────┐│ ││ Lorem ipsum dolor sit amet, consectetur adipiscing ││ elit. Maecenas id erat arcu. Integer urna mauris, ││ sodales vel egestas eu, consequat id turpis. Vivamus ││ faucibus est mattis tincidunt lobortis. In aliquam ││ placerat nunc eget viverra. Duis aliquet faucibus ││ diam, blandit tincidunt magna congue eu. Sed vel ││ ante vestibulum, maximus risus eget, iaculis velit. ││ Quisque id dapibus purus, ut sodales lorem. Aenean ││ laoreet iaculis tellus at malesuada. Donec imperdiet ││ eu lacus vitae fringilla. ││ │└──────────────────────────────────────────────────────────┘␊ + ┌──────────────────────────────────────────────────────────┐␊ + │ │␊ + │ Lorem ipsum dolor sit amet, consectetur adipiscing │␊ + │ elit. Maecenas id erat arcu. Integer urna mauris, │␊ + │ sodales vel egestas eu, consequat id turpis. Vivamus │␊ + │ faucibus est mattis tincidunt lobortis. In aliquam │␊ + │ placerat nunc eget viverra. Duis aliquet faucibus │␊ + │ diam, blandit tincidunt magna congue eu. Sed vel │␊ + │ ante vestibulum, maximus risus eget, iaculis velit. │␊ + │ Quisque id dapibus purus, ut sodales lorem. Aenean │␊ + │ laoreet iaculis tellus at malesuada. Donec imperdiet │␊ + │ eu lacus vitae fringilla. │␊ + │ │␊ + └──────────────────────────────────────────────────────────┘␊ ` diff --git a/tests/snapshots/tests/text-align-option.js.snap b/tests/snapshots/tests/text-align-option.js.snap index 318862bb0954641d15d0ec036af90831df97e3c0..d70c7f93734fd140444a9d97ab5d5a9309f214b4 100644 GIT binary patch literal 1096 zcmV-O1h@M^RzV2S5mkF9`_{a6ljgM{nZY zS~zy<*h`Oq5GM{u^nk<(jvRRd9)cIBco4>E_rqzvY1&lOin`g2J@))(=4Yqhh666W zSJCJ1R5Q)##%WDAG!V{4f(BG*kfCN$zzU~By~-j%!e~wE=o3}fROk;6QfOx_;HY(MurR}GQE_=4U)|2XT`2x(P+$Be}<<38dmR5_|37F`WSG2iw zOZ3{e09>t7*9RPexa|Q5S{8yU6>!mp2xJ5zrB~H0{-7doqYj1eE+A^eL`o#?I+3{2 z>Bc^liN?0`CFGfQECSQCV-cIGP2G5Kx|8VKs)wky#3yb!)N(rJfvc_Yxmk-}tqM;@ zl+rt9P_3=u=@*p`8R7@LRwN8l_m#z8PB?xp?$ImceqQl5_ed%l01G1%fG@dJ5HVCH zpt=X16cP0_)kXpFS;!*KCMo4i_h-A-V?t3if=TED<^T>>p6SB_6mo`X#``+=e9lU7ily=&CZ^C`2K&R*KtQy{0?W*{IV^b*%TG8EnD!&BbDjWQ^s(NiUN3~(F9KHR}FBmy|Wujs+VpvD@;(dc|&2N~j9U!|a4 z+Tnu*Ayq!Z@zkIx4@ZufCKQIs)&l1^I8naM*Y4iKV8Vin1*raSPykRD2D2Qh34{40 ztVM&Vfx0l5TR}Y<%na0o!Nfpq7ED)A7Y6z7AtkVI*imq;+OZ(-#dGPsLj|*Rc&Sjg z&81Tfu($@ctDp*9Tm$n5kJ5l~R^XgH%2CEOka7SiAWgzR<~bx2IIe+$vq&m;+!d5M zk+}463{*Im%xIJO|B+IslU*YILnJ Ox_<%dzh`B4B>(`k&;oY= literal 1102 zcmV-U1hM-;RzVK(vfZKa1?^+580p@6cw zdA%I&Wgm+O00000000B+m(6Y)HxS3IT1Elg0_2)@d}=-vA%~_Y3iJyI&;&^jMS>tX zQoEGImP>B9q~hGtoO=jR9RlQ(o{GLepCm6}leGWad|^DnBI=Jeo-rUx1bXH!8VDm2JgGb!LIrxSgRC4$7sOzPzKcVS30dGgQh z&Zj$e^!9cxee!naaPi0C;$_3n>%rmT)m_TD1U;jQ!ae}tEqnVXDySkH?o%Ph4EC3| z7tNi#S%vs{QHTM4p{ms&VJphkg8Zx~NX4eJb`y!YbE0f5#xF{16>dOG!jOsSv0$I} zE<4fg^}M1jjz4D{sjw~1_QP$JoQH+WdZ<{U>$Qpo>8!Fj(soPPtL0tUU15()+bvH&F1(%GWPPpO)mPqtvjv zxm(d{6>foMZp9QycFJ1asBG6(rCN`?_vzM@6MMb-N%dv@1}vrAEl0Hd-hU7+uNR98 zaBEgs)0Wb0Yu2eH;HxHmea0zB#|eO-V=1`Z02f`zKtUpMW;K1qpH&9F^`Q`6MMO=R z$jQVVClj}OgEXc(*;oc&L!NA66_~P#RcvbJy7lA?R@wR94^dsoPdZAdba9X0#o|+?%&kU}DtD#$TIfBP*P9m)92{8d1;|0!# zm3>6C#^TpZ1S~X|NG``xX=`^+*aYKh5yYGX>E?tHf%T{}|8q8{N|6!VF}8`U0Y1%q zg^WZ)7;_>*)Mf1^vyaFWBgBnQ4aFEn@Q{XSfCLr5i$vo(+~6V+Ibb#plmh=A+1tGg zfsw#)mI`CF{ROvz+pr>pBu@7c8)Z;Iqcahg_T1)g1V3W?5doawSKR(;J&nDK#u#{H zZ43!*pitRmIc0JT}vJ`aqO4%-vlX+{pJy)HdQwLJEx3#XmRXwjv5tsaqSCF9EFr|>?=+k zxv+8k*E)N+$l0`SZ~|E)Cg(7cj#}rCZT