From 07454c0d573a759e703a0cae985704d2e0678394 Mon Sep 17 00:00:00 2001 From: Tom Willmot Date: Thu, 4 Jun 2026 01:32:39 +0200 Subject: [PATCH 1/4] Add "Shared in Slack" markers to the comment stream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surface when a post has been shared into Slack as a subtle, email-silent marker inline in its comment stream — another signal of reach when a post otherwise gets no comments. Co-Authored-By: Claude Opus 4.8 --- .github/slack-mention-preview.png | Bin 0 -> 48450 bytes src/components/Comment/SlackMention.css | 124 ++++++++++++++++++++++++ src/components/Comment/SlackMention.js | 117 ++++++++++++++++++++++ src/components/CommentsList.js | 25 +++-- src/components/Post/Comments.js | 12 ++- src/components/Post/Summary.js | 21 +++- 6 files changed, 285 insertions(+), 14 deletions(-) create mode 100644 .github/slack-mention-preview.png create mode 100644 src/components/Comment/SlackMention.css create mode 100644 src/components/Comment/SlackMention.js diff --git a/.github/slack-mention-preview.png b/.github/slack-mention-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..abf2e91628123f3f7ecbafe5202cb26e776e979e GIT binary patch literal 48450 zcmeGEWl$VZ+ct{g?(Xgy+}&M*J0TDxxVt+H7Thhk1$PbZ1b26L3GB}Eyl>U1Q>W@w z?O$K*+WeYYGqbvTy4Sj|`w}8mm1U3-2oS))z>wu+CDp;epcKKtz-!?kfDu8&Z**W_ zXkc=ZVj3PbCAE=ThHWD)-XvQvIdwJb2Qkr*0$MH846EWr;WT#~7 znBWm(HA2wD;mAYK)IrS@|MQYiEJ5PmkT_f&HWuIi4C?>?8#F>@4CVaKx5z_U!V`%8 zGpl$+Ro?Lb3@#x={ofe8(nJoKKMu90IjB-*>?oGndcpz!V0s1rFtgvEkEUO%5RIzL;G)Y#tj1 ztKl`D5z`TMzE!>RJX)>kWfNgxV-xc_m~3|WiiwFa>oVAJY)vVCUci2zX zb~{~AS`O{#=%CH@!3d3ykAJ=F-uycn8XC&lan)C6Hq_VGchUK{v9)C)r3}Z&b0Bzg zVoDzl?d|^{t{|l>JUcgsiHW&w9uXTG8y$W7_~_oICoMgAJ0%h)uA%WK+kK-$Jhcx-Aadv&9PgzLnPx z4|X#JzxPv(H#$6>$6jg)f7REk4NpvHK8Q~;iimWNaxGRHB8C`R1`JmziA zqtaMd;1+(`z8R#Pgi8)>7I7upRs}~W3=duBWmiZ4Vw0GdDE#qu8xjK5LNz|t-`}qy zaNdB(($X_FHrCP6(xO9ReThkOBN5FIE=`O@9uglGSM>s_lwB$Oj$HYi&hgFf zEb=Ccu@vSh;n%Z=^HpX9*rMX%UftVK#+t9@=Jdetvd269iGr`Q-&do6e}tZn&f}u> zQ2q1geKQjilhcJN^ky+18a6gZ;CBA zsuHTXm~XB-m6iR%+Mz%+t$D8{dGj|KCt05D{O{d@cNf{c4l#dEqGU zoa^ZVv9J$bpv}_vPOp3GnS#*p)t@CLmz&+jqgV3_gHnjvycwIsFue2z@owiU`NAm< zZJ(o}qMB@1Y0TdgTiDA3r$r@|(=PAqdJ{cFvn$`;UoZ8xk%)NFXxg70r4+6g^zC~^ zqHf|u-j`~OMINU<F1{RrO-gbJ%((kvEOsCOdN^X5a|B;+OeC@Wiivf z3*MZ9G#rJP|H}ZJCM8*lk>9g98+vFgACSm!wx30lok0n2sJgHVUoVPI6|i5HuE zZ*QypvTF{3_R}Y{1St6Ao<}z414X&SuP}~j+D4vId$0>3WrepvCL;cC*Wu>AM^RRD zKdnMBNl2;-N#RI4pLU}4I4o?EzXowobwbg{-C zSa=oVuh53uI;#W$c?*cF9eLQwE-npSVe$TGA{VgVDfgM=roe*WLrM;Tdd{PZD%b6B>|YYPsv zdxwXVqA?!SifG#WBymDo8}?g=hl{gdrvhQg+cdq#9yF7{8a_MwenvX=04x!-1tKo% zAD$B-AtCb>+WkC9$;sIG_{){L9FLCQ8nARo!L>L!!NI{TcfB6Yjy)T+>m9bmc|C%H zg2IsS3vjCqTG^?op`rhP$NlZ{eRUwyAgMxS2vg+}WFfim?+2~fdf&S0A`rSC__mT6 zj&@fv5&G3qvKg~>>{Y57lh%CrI-G6I{33jxtW&#Y^Se#4c)#)<%z=b%^`urq7tUUV zis}5+;aYi{r6Kj3y1RPx-CE6SCqJk%Yu0oQJzuz_0U1w7uu}h3bU)~9Z6`P7>&|Ar zSty@pv3@ADx4R|&CnrnGZo60}cBF528*9JZ!5BE~H1_I#^tm7Y+<`)+#eR7u=ic|; z*qTO!4S#ykQt2^2!18~zftkd89bu&tOJihT`{qz1T^JU|Wv_P&V|}r6x2g3_;kkfA ze2SOZ})Jt9z_b>?H#W5 zj*En1J5#v=F4~d1McTUyqe61w&|&VVusi5x;Cwil-R^d-9!3Zq$4o$EMR#Q#6B!v9 z9WCL57aKqeE9A5nfi*Q8 zEzu*M$94rO8nz@D2lZUqCfK?-aj3~MsL1D}tRyEu%r|5S1IiYMSuX@a5v4`MM44_E zTg3gs0LoeQ{br06C`O#OG!gI$ms)~NaQ6}C`QH7L=^Q2c&33BnUcMbij~D9|F}=-6 zv?@3@Bon{yj^}3V@{pgm!%1sNJB2eMnm4=@ve=jAleLZL!vk7^P{cy7u|t+)c{WPR zM}C=)O_wqh;%D(X7Epx-{k?rTttlk9lI-uEtI%fE&ZMQKjV2gqoE0w2xCUk%K#~Me7WoD(`Mer{TL* zg6)lbKR@pAjz#GOHjJIy&2F5?WUh#@e~1{WBLwF5Mf>I8`-IKTh)m(_{i1Ouu6&82 zAi2kviEQ?|8x@hiMM&PzDl;5Yf`z$q_2FQCSiIbKSLEh8CJt6)7e4RLhXTYhA=uLt zY3@P%WJ|~r$lFYs#10pUJn*RX7a`?B)Y<&5;$~4~E$oIw2H-kUmh0oTrHsOFEUptc zr&XC5YIiS(BOt~x@wCapNfu4_Xsxfki77RSvr##Ir*t9lM$fWN$^GuReA;i(xO(+W|pS{EQL7v-X z^aJGI46;MY{%Jihd(YR_*U1mP6EvlpR^9#kUbmha_9M$keadE@ZhG~t@Ny-0vr8%z z?eF%ZqG9+s{If*@B<==J_tztdH8-i<8zpw57rGGx{5QHK_;=sNPrD$Sf=SXdD>t)J z0ztcYsFeMdit86r5xXI+)VFoOFIQ-_6czQY1_w(=Z2#*jrQIubO zBrIeRJWvC7`q~%Pu*i(4!e-1<4Y@6+$%d3vZPQq9+!htSVm^H#a&G5?{yF%A{_|c7 z+IQN@F-GzSND^53o)9zuF~JwB|UESoNT)9X}Nzumz)`4?T@55u#95poa+GGt^)O1DN@ND`(##L2l9R;Hb$M>bN zndPZ#DD~3!gVYCy_kd66k)l*HY9N^snY(;AQ#+aDjNAt%Je<~aXJpR7h;^P;A8-bk z^~NGV%r&z*-PUc-=1aiRi>CZx@_0GS_0PZt!Ps9f8hKA7M&R3FMEA{XrHg&njuYny zhV>qd!MCUh_A8iH7kpfEwg@$YL6Cfv=kj28Br6HjkS$aZewLgkzM@LU2DPF%9MYjq zn-Wb~Ew9OSH>L_JvNIBKTuv$lCfFK5NO4|lzA_^WjbGaQy3BMM{^hW2yo}oAGhE;> zezuVtw{G#3Z>l&tZ;r#B)cHlzNpEI=7M1L!NYLc>AdyCYB{fsWwbYHwW^uXR?d_~$ zeIHw}LffN>SgZ~9)@3oKLO`ql!-eK>TDKx8I^(K)%Z{iw>cOc58Oj1nmkVt~vMv?~ zzfxqs-zG;a$Z zXGiy!i?l!siPPVNL}$=#$HlDms-VkxMu0jO=J_DpOo}ceg+A%p}jyrDqCXdj;53 zw+<$nfsqcy61vxkxth^mmB{YSwK{*RT84tBVeF@KnkPh7BU7Vs*wkrz)xvGDDGs1( zkW%dpXH+AO%fau%H$^I{+?zX@TXlC6kZ0cB`_!MTd2oq)vlGpl1K>R0m%B2pA$Z539QO^+h><>Oc-Qy8kDCf{2>^7iGHh=$?)Ljd(=}UG z3X~YHLHuu9rdQY3%Z)aRmAdss-)JkN0IbbV0{wtVLdYrl$pwJXt`*nUL!>srkYa>q z-2D6maSQg{e_=?gDg)9I{c>i$_a@~ZR^qXLg(DEtfV|Mxa0S|*gI=FT*mfyR84yt< z4g7pq%-h@T6nc5eX_y%wFU zk)w$^g720`$hXZk{y9z-xmyv_zwpLBbHrsd${%urL$>jZPBMoz&AcvmFxmt4TVav` zQJ9SVYLkaCa&K^37}A?lUXE3-m0sqOnX%;Q`4J?e4mS-Hw0S%?7!3O1P{RrW>C>*i0ClXg4>&P|FCK=@^;k^Y7O4ok18QymC|{D>k-F@pby{?BJmNVxnM-Y zz<_8j<-~$Zp`oH80}GPbND{VER*_+(Zt(cTYeG)06M}oCZR|^3H53GmILUWN%(jE)B0P76O&gI8!LITl3j8&pc5WstJ3Dk;LIVgALOr zuRQJng7RqZiTOKo8qu$e-S?Tjs7&~4Mo#y}@%p$lzAx*RQrQokL*_$L4*UWf+%xD@ z11*A)-is0^hDqxJYm1oKW>h4WRe~m8!gqzwcO&z)YmDNdA_nPpN3!e#2E}i{`k)@E zz~Kto^hSDqkP5hcmzEBL^A&V@VZ;Of!qQ+hcMwKsH~kZ`gEHb-`2Nr5(b|ydAG~_9 z9!!@Vx5^48xZ%^)5YEKPeEV2`i1PK*#6}~ggddj7Zm_>_dGV7ue`^B40Q7~cFvbPY z+F`52u~W3xTD`w+enjQNcn^0DU*Fz)9Y*rfZ{GIx#tJB$kInS=+YuXDoOa*3j#iQ? zxI+(pRG@0kSoZb!9(Ntg>LXb^7S@n#800j7Ej+t-Tf}hj3)`+IHTPmMw!FMK2=yLK zq)Kmy?8jd)-uE__>FtSLrNv${P9c->lz*@2>q~U}SY}NW#Rn&)qh=mqT60wT6DlEI zysqCS{AxTGcT{u0GKuG}TT~O*&W%3*Nulr~lc)-MJ2q8v?XBjoo|?~_#0uqZX8B5B zw#aiFURhO0W`o8YMzKZX$z~@yXB^XyO+!)1VfFBRLgxnI8If3qWVzz-CFi^zrcMh% z0!Gj0HUP3Oi0lmxJ&e@2F%_eUpk1Kt6F{-KEX)9H5n5R2k5#-L+Q;LP+;S)5Fh9JB z9&CsSGILI*R3k6?@4k*c5v8RVf=Zu%DxyCg+Ces8qtRMcUcL1}T??`?`Y?K&n)zDN z3MRMZ_e*#I)mhdbqe1GEmJ2LiNPFWUc9#w@OgJI*IVx3rh;9C(K_rm@(YgZi1O$o( zN2oO1Ob^HD3FCSaG6=gge9J)CrCKfC?afzO^k@Ba%ZFSVZ}y>2@ zBjHdeGHweU(_flvHyJ@(nlVfjK{nSDjUVe!nvR761e`D6nCawXoNrmZ1Cf}_O>la! z`1R4@XxF4eg$7O|)F4A`R|B{%Qw8GMk5#*NrCbonugdz7UIr(kYG)V-=MHGy1 zL@n}>UY5nSbEo$xO-3RITb) zj2QFVH}!^U<~~ZEbZf-M!lbo7d0OXsPp79bhR4EwjAK%ucelSy2EKX7G<<)W^{qr} z@^1JtUJ;~2U&no0=i}z|#zYX+gDg?n0 z_5hI2Enq(LWh)kCaU9qLNPMn(A2uKIJnqj!f`VYiGxVvp?2H@0`uz;unFnQzZLLI; zO3OuSwR0>(w8lG+ioqz~$5^{Vj3L!*B(EOGZx#Pt^rl8)K>xPR)i(>qScE@sYw;PP@*F zAX+V&OSTf6PmH9iMOt$)1YFht}83?-CUtP~q}*K$0@=rmo33!+W_i&@k8$9f?M6z-)Ko( z71%6WW!b@K_lf(NZu=BXkZkq&9TF=~Y6)|~N-6al&Sc$6S^mm)b?=6GEg6zOE}A}9 z$ny-g_+N_Hs}AFL247b|KWW#L1fVpv$ge{h2N#+CKuO1O5gdrQz(+LQVn_{uKFa!d z?fzJ8b7dr8R8aR`VmU?LYH{56yhr1dQJ-GFo#sEzsZ$mjvLw0e{_xWl7&zegHu*!y z<#b^}5GNf?{jg_x2$OanK!eiF%rEqA1W0N$37^fwS<*1szfUbLJ_5*XVXToqFYBUUyZ+rJp{uD z$vSFn7FnKH|IvZQS0f`MtX)qOKBfGqZ8XBd8;%*v4j9MA#w7D4sH(DLc}cgW zWw4Q8x=?(tax(`upTde6OD@^Zj*&aXqI$KVogyYUxfqOkuGuF3Vh={@ zZh{s6sU&7b_gmHiT*i>*q8Q=}yz6|X0qYP4h<0U`eAUX&t>f^@<&@2d1j4(x9-M#< zj-f%@Qf0g=68OC!9zw$D$3P@P2t2e#;r-+(zFszCk7aRb~PP0quuZKtm{}URxphck_?v&D)4U9k@?KNX($gIp?5*_W__HpNFOXnotG~K8M!TeNtwM>P^bAO^Uobbsxw zIZriK8ds6v!jbm3?#R&;GqCZ9F6F;oMYnt%&uqcqt8PnQh*@!w30!?o6nK;`ps`)) zlkL1n_@&`=ur)IA!65LLAA$(Q?g&bN|B*lYD8o3lK2To+DM%ncx;DGn;_z{{BW5c9WLYtIH$*& zuiD48*2qeL_EUnlF+a%dP0m|x z;C2VhzXrA*$jQke;xMU(VU8+^V{zC~%sy^-*D$WaR~P8kThL3utpkKa$^+@5e1Y6k zQyZr19|?dC3ru5UBeV8Lux6y8NGI+!|wmIc(n9b@mrLnXE!1^anwR*-Ct?GeaLjHJd|hF44$_MgBca|@#>mS0_#B(RNc#{$JGZ80 z5%G~zznS@Q)tDota>7l~tkc|mW8j0tWB2-37L+m@s)pi3o zc`}t~{T`A7RBZ61DcM$$Nf0NyPP1LMx$n8qeNjo5H=1Wyui6+^bqJaa6@1ZMT99b~ zUi5G3eA2JkLBl~8U_0d!2n0Q;#(ug!jc_x(%Ft#Dc%bXAEf!n5@qa+m+!slxx}wQc zMM$~PW{)_`tK;z4k{)!0Q#t&0R8&+)lYsy$RByIMLPE!ztQv6OGB;O}uX-s7(j9LB z7auMOma)2*cbyyo|ALNd;1H;IQs5l+2Wf3zJt8iSl*1zCHz`tPp=j_)TrBi_!pvsZaXoNcQtEuiFAMf>Na;@<~p;1vi5SP_txKC1%!hu72&4X$L3+| zEU_Bpz^8C;|Hr^L@ zzU!IhO(tirnkvL&5`aVu`12Xuw*01jP(zbg9^>R3Xc=z%RcKf0F#pR1Ow)r?;U_|W zkH7;hodSFcKHHa&UH*fE87rJdK=zXt8%r!LrF*jc!7&~Mt%<<_k1(OOXSw_{_#~ow z7*3AU@)hZB)N248XH<|PLMBpB;```X9s6!W2}?{fAT&jqyWY=h3yd~pWf2_@{)|B^ z_$&=S+lnF*t^pbArl=TGzWGNW0h2c`nlF)Zeb(t?ZLj5Lc=q(!j5czO=g3QxC~QG| zwbtC^_~Pd%C;?tcl-T5lfbnw^l!Xxv=*8b^q2bzus< z`O&wJUFDf=u^APdZwM9pNF{7|B?hVtGpLSjjy)N`W9KQ=g7bemu%bv|Fo% z0c|H||He{^(8quay9Rly1IRZ*K2D?)$G#8Z>A-9*{q;y9b3uW`;_3PN!p%I7&m?hd zv;YO$0;Ol)e$G9#XF;&eHtq|{m)!t{FmzpY#v7acd=Ap;vx1(E=!FR)bHUQCHJLuj zKlZ-`> zNcl;_VmyspOJ*uZsHW|Nq2zVZIkBxg;NrF1m-@<`m&Vr(Y68S*5YG?d$UVt8eY4V& z6#F=e2Zf%)(5-nMW>Yv3nSHhkkU0i)5Ol`tD8_1sEH7F7gIv25Lrusw$A`1!(X`yW z_vkFIR8E?=iy1p%Ju-TgFKME^%(4r*oHM2X% zfIN4(IALzhHDukv&A2=ZjY4Yg@jX|=@2vlI+8BAGS~e;y9;n0 zNM?i$PXRGpne%32NKmDem&ZCuR^Se01dF^sNg&wyh}xBkk(z}V8+jd5);p;V!K>5pHuYWW4-;;d3O_{b^{m5fvrMWz z(E=p>T&K7DErLe^<)1=lGXCtZixOx|iPc|J-vIALFs`IObZFrrdJRr#T$;cqo1ZGV zC{wWy>jgr34VE)NXUj@@-$3&B*nAW?8l>kScR>oK?0)m%(8 z0{wp%7t`Zck!Wp;^R-lw7H!H9h!p!_Zbl-9_pM(M6L~qYK@c5{Wq+3{WbBCWXPRwP zcO7zxBcJC)l$4nk$(K}KQ_R`Y6~e>PX_ua-PGzLCNLHHlRi(AAcd&K+t84I%L;l{K z9SN>ML5D8&1(1jV0`M81YVB9srsbW>6&BGrZO717f_P1LVRt}5-7ay3?;Eq6NLjBZd+TNv{+^4FBaNc$P6oHfP(pN z(fl(Z__n*BEnQCvT*~6-V6D>*&_8KmjD7$zC}0{WHbS|EOx|%x;+W)>Ads-^h!cJp z&VnIeeRbdT)gA@PgyUQ~vMrNA)0fyPqfUa0CF^G;cydq=He;ay8pc26Xf5tV^fNag zu6CSm!w`Qm33zy5==Udw7Rt^(NKz4AZnDi}r)e!`7u)$KX4$TAVoiVQ8~?;u4QK$& zhHV<7)w9>_5Sp=ZaWVriD^~lX$p;1xS5xw%P;^AhQ?)_AOXqrS1!muAsPs`0zM4DZrrsTQD8G zoCBP*$c!~O?%DHUZk!>#SyoR!st8gvcoSk48=w`>^Qo)au0Il^VvtC2+K$3$irh_0 z06w0`*x1l(Dv}HWss^DAOQE^tAGBW1&wXypZ$itF0K5`Tzb{N0@yzpa!LS|(BIztX zrmRU((m=3zs^X)6I&7H-c+n$8FjaxV@Ni$Y?(wa`x&tP~A(5e~cOmkX<5lnlK2WH? zf91rW$Po5L+rr3KE*z$L(YKRg)axU&zu#;HqxMn9aAS@R38vTsq|PXFON{s9MRM1T^T9aa12DsY z5VuAmkz-cAB0KG(wJ?FSlmkPBd&{{!oEl0(;rN?jQ{5YkRKE@Ah!~jAj5-)FTa4L+ z@aH*`JC-m_Nf+BN0#H?$lITPf(-?SByixyjxps1*z=feXu z3S4xC8ZoYS7J@4*k%PCH2W4#Lt!yFBo3H1gLSMF8R_IHzoYq|z=h@-UO4SN~DrYma zkxD1FruV$h4E!+>L^^~2PN$}q{<_AFPM#t7q%p2AEiJln6e-D^x#lvb1SePV64K>+)O0rDY;Y9jU2Svo);<)K{W=tl|$GvHq*O<+jKp?qQ~ghx1&@gkaQ{LISv$qkJai!0DT-ws~x> zYU~|u(ht=c9wh4`&$*}}G$&|uJZA)O=PVigvUxyYKM>&n6@AmhyTAzzCfxd7aH}5EMO;t{(U+NIQ+~~{(4OC%Xv4q4u0A@s7N|>ov9LOQA8K$lEOF#Q~#oAaZ z_FzlyBG5a+1KL_{+hutAKerwj^s;>ZgRqsGvgrS3u1M320{26w#?E(4h|wQApOYlI1!1XSm=s_dX32*(%%jA=Kh3ys@PBm?16 zFknNVG6$H}QO>O#z}9B9dBFp7U~g(Ze{SGk9pK0DEo!#Yf~f~qBhwV+9w$?Ak11&A zA@a|bWXNY6JD3szKw5&zSL{e+CZ@iZDIun7M4j(YSv&Pe-4#6;VN~t9>O(|-n^z#J z*tYnEn1<+4Zr^b&Jp@arf?FP2!(?jy=N}as&!19CxAy7d?NG#(azDSoS&yf)YA(7E z*UKrQVVuG?@kAD-AxgQ@V4pKjyq<3JF*k-(!}BYj;$8(Sod5It0jMl}ij;``JYh*} zQo6w17WZmJqORG%f_MZB*?Dn^PUi$foO?At-PLO^NFwm0;a;7wIwZO7E|Ih~irM61 zMfhpI>po9j7>nFj&f|8J*Bvx}- zpN~aTHx%?t(p%^)bO)3Y-iO+tWw7R&V&B_Ou~F16F>oA6BtsHg)2j5fq8dv0!ah&` zD&MydHzef3Lto?Url_1<)An<@FWAeP{qns#n(FEWCqgO5V##czr7Gb}V}g9K{7MbJ z-CRm~dKr880|F#dp5MP$&OLv#My24Rr>Bn>;>y&WqUYn|b4c%D!z3bFE0RlMAT?Yo zE|pMM$CyN?$*7Q|Lr#spT&jScRe0pO{2~dDfT)0hii?F^7B9U~>sax<%;_cym6%a5 zOC!R#Op2r1Ld`FS(=LLLh+oTrvlULBjApdi6VrHTZF*}A`nbm52YsaSzzF)q1sjz_EREiHg^`O_bF%b zSi5>6s|_APM!ku=v{Kd4@!0AC=hP~dxILJdG2&CQKY@>cArN_$Bd`pkFWk$)PSJQ=2L=kDI* zfiRb(V*mR_!S)ud_`9DS{yMKnHqZ3s*Pu?Jy7%9S#J@vJ{qGrR{r?=~ti_r=#-~rAHqB3n`kyb2no@=T_vIHx zI;a2I-^rVTDE`kItey9d`(G~L|G?Axe@`g{?f>*g=>H-2r~_zzfy}{wmhBR>^#6@j z+o#Qird5L5m7dnjUv-s&6S%7nHQbjx;{DU!xPjf%J$KOdMY=I(+OPC~!ZBHEoH1Cl zs=SyyUytK}=s}4)va~7S@y&C%yJ>#eTq|+3k^1lE!53+Tw?3~`g01d8Clz4>gcRmSl#Gmw)YKCGGjAOi^3V1RS|B#Tk>ANL7f|N4)f4FZ`Tz|L-S~a^ zm*ehW^}-wAKGm+$3+)3qn&m2e9&=oi8jIA4D)jc|W5rQ050|Ta#xCIF=qN@)7=lxV5gEKNd&dG|3gaoKXlq)^bu>`u@Vm9>O zqCRWU#wWeOP!3>wc(?-q)@%sn$$EEZhu`IB`lk}%5UuuSb@iasCm=f#2WVjK(%-+I z1%N|t{c>@RC@Lz-7I5D|^FRW+zgTUf3azTGU1#SAz#@s5NyO&_Rbh%*xe1V|D?D-k zo55Hb8$-m=t1;>{sq$=LW=a8k@CvN}U#gVBsm29ewb>gC>yEcomZlwI z%?mI^QA{qpwlokhh!}>y&E88 z-HmXZMhdPhmC2~%3BcF$r1{`ipq|s?gG~F2wbuIG7YEhJG`9Y?KS0m64VW;yjtZhD z`A?aK?oAWAUoYB$JGY>a2LjrxaJma(_qFYYRm6}1fy)jv;gIhrTwH!{9*@?e$iOoR zJX$%+7Qq@%K-$Rb?ugCpOox<|^f6Pyz4Q4XQYXRzlPAxFcSR*;Z{e`z5YRsF|$|Sdbo&5)0Deotc?=ArOBT zduu`EqNSm+4xQU7jZ-&u_1ZpZD9}7s4&pAsUy&|}cMF}An+AM1t9$yv6%ryLXxyKc zCw2(qcJ%E#sd=seZUauDX|M~n-Ki~*Kl1o{9-LL$c(#DHctWi!OZ(X`a7dW6ZbQIG zIYjEu#MrZVdsG<509-SKSf*4oPCnSF`D~FKkaN=r!|N$TMugpG?S8vym{aDkzxj=8 zESo#EP^I6mLTk9P#hWSQ&5Z!G_koKT^3pZk4%>Y|?1`apY!J{0e`kcFi}=2{gxK8N z-1t3h!=B01pcaF#metn&*&3*>?zoZXgBrkgfn$iNAse>?IxS756yUHx49eW4Fbz-# zkf>#4Wjz2TSq&LV9XROXfBf~7*38yui}K~#X2Ne*60Kpt5eMO;jy;~POiN|{K=C82 zI9+Y^DmVYG2{!p*T?;r+C&vdmA_;$OD2_8L=x zm?HvNFv?J1mjw8c6%3;g@7?P5i&;`?G&wl(2e3;$UgF|^sU%%2lz>(TfCrGne<$N* z#U?KjuCtn>q3=1u1wwSWzl&3iR;mpJ%)ep=4r$f+1KSfaAvc`_?V8gVv)8mTkUDeq z4*@iu5g#}tSzOAJqnkdrv6&{5u%td@p=@S@rFvk2A*wO#FZBk#_wy?*K>9-L zcM%irGQG&hTfIRp(7!^6WC6B(_fViAK7r7f`Cf|FepldAGcEpi&*6EAhTN$}fjs zIRYNuZB}Iw3JM6#-%`#Zdow}LUkbqN(N@S>^r!X6r`L)VaCx(cU=cH>pi3h8w`c<> z5r(An!#cM&;%fz}!L(GRISppHdpr*sO4vJe6;fF=2L%Stj<5Fydx)b+QJ~APpMbc9 zgVGQ5mS&GyhhFsFO~6Uh)Mq6vC1q;wkz{&U4(#O~uG=IMf3F3;XqS>8T*&BzHf5O3XL>D*POD6%=db#+}i>k%thl@+vAa_(L~e&+z@A|G*NH#2^+8oMVfj z`-cFe5ourCR)-~-MCCCHc)@-7#chIxydUz&f7`6zR0Yt*(eYR-quZbM%Me8J}$XvUUj&njdug5o@VwO4LY?2)1 z(mS>~&##TwvOEH8VwNOz!R@3IP~U$5d$E3{5%R`gk0+oM+uVxF)dZG6kf1nIh9>{c z43Y-d8vB=X(T8$2o*Ew?2jZoDInxSPc>N8b6=2Fi+x_7JT6m0PO*R|wC$%2eUzS4Q zzLlK>IHy)KeOkCLtbXlqJNW}|>R2xVi3_U@Rt2{6=fJXs@CuULi$yCN%o&rmlp%a_ z-K;CEl!4+me+9hg7~Ctyy;$Yum;PgCu~(2Y+v9#HGjsxEEcisBqVzmaEQ_HBu)Bar z9x-FEdyEFmj=Uu3kOyW(COS^(rY#RFc=db9j_(y<#T{W3W9_Xt1xU}JxeC1p(wNES zO+S4jRESYVtx8dF`<6_*wvn5ke~3zCB<7Du`Y(er4e%eqHinku{i%i6984WqRKKLu zm-bR>F*{KDz8sf;{vJ50Oy&p?`b~dU=KI}2#4dUPu7O=M@=xMF>Dhpcs|vsxI)iPKAi+3pjEB}s`=CXGO^&>Y&W zJEl71R#PzI$nh%{g(QN7V*zY~&Py%*Zf_uqUb7u>4h=K*bVtvp9^;ZeQIX6Sv?VP) z1zvipA79BAfTYjgg|LdrYkiNhD~8m0qQ^K3gB2f6FAvsswr4?bqoOgEcBC5S5)yp_ zHv=f&>j{%2RFOB;QOi}K$E`n%Cx-5g8`~tu)f=W=Bq&YkOT9EBL5*dws}&agTkmhT zDkXgIS3ms$&Wb5A&GeVfI4?3uWZCDE3}$;|f>eACi!@)7m)?N69Uu(Bk!fsUavHI? zi4+4yG<+P-yJVZ|a}!xEa4?yD%K0UlzvJWmbrf=%Vhd^lVF;;G$VY!Y;a_IC_xHc_ z6tmR;SFZnit9e5~#ep1QD#)V3obOFey>vNt8|G=GHd%Mu(m~)K@Ig};<#6!)m-46w zw}y#=*gUCCOvk*kEG1Ys)7h+a;A}C#xvsIki_k=*BPzwxZbq0SUg)NSl5tozT@bKv z7{tiR>$qGGe(Y?D1p<>CJiXSaVm?S0ctG$368u1Cn_$z#VjKZhYY|A8pQb(LqUo!m zxhMTE7cg6*LfRqU=5~JalzcH_fl@HK3vV3!dycB-o(6h7z=W&g&sLms%)rTe^-|_V zQ(mt5u|RmgFAx(2$j`x#_s4D^k^yViOVG^GCVwzqP0*>j2Ew_5NliIiv8k!jHHP7c z__Uj`n-LNgrq?A-NM~ny-fOylca@i75} z+?dTH(&5jmynd?ea)S^F=^P-VyU|i6qFK8lR#DES8h?>Tqw35?Z+8tL5>C}4-SfE| zp&6ZAu?%NC$rGMh#!UiDBX1@;!qR_ZAXJ^;L=D6OZZ3idm7Xm+X!2pkRP5~P?c#vQ zX=XdzR~WNi5Go#j2Q06opRkO1$1^B+mSL#EPojkQK-CFcg_##!4J_|VamtWyA2ew$ zJ^7ahH;`^5r<|FVg$w~gAeww%Nww9#vGM`(gG0g$3*f}bYx=bNRT<+g=t#(Z@%yTIAtpNqgXU``?FEVxAu?rk0CjG27IA8Px>x8tMh}4#fF<^({YuX7~@2Qg1bGhZ5-;o zk@T#e58t>hV$u@;)KCCB;Dn1FeT0+x^;A1Z1K0pLOFacyWxP-=*jsU#FhU*c(dk3d-$nceL<;ZcoltgaZ}15_~R+kaWq08U(3ld3mt+0WJoHtu^Se` zh>I<{za8`!!0h|rGA^Z~&pyeHGLaGD0a#8b?S1BDjy#T%%`OCxP(6+nWSmi=$X_fI z<>9(er`;k zE%?lPgP>=n^S9Ywjfw+OxiSi=6;h7wXBGhB9i24@V3bQ>Q0etB=y}g!t8q`}IX#ZY zihC3`kG+dfdI`l4Kz!*Aa);yTg)t)w*G5{%DL|=-(U|F~FpL`qj2F_MzO6&6R4Q(m zflfr9)3jCH{^c-gwYQwK1~Z+yzzs6l3o*Z=sJyHhd+sN%7zC$77h+DO-I0ki7Ip_w zlUrD3a@*RqY{S?l_DKh7{smw?egB&{2w?6b8S#>4nwY3>Zo#|CE)-X;t$HJ-gYLFEmOScbgyY+5}=t5t>m%Z=6nCfc*Az zNV4zqYPY{X9DJleuiK-+9$f7gS4gVknLO}4?f_q;-KFCOgMY@W;@$YqCfWUpSl39X zol<*82DrSXytC!5W?;u8d7E@CC@GVIE#bd4!;A6gL69ps8(G zyathwx9-%U@6sMah>=JLQye1cU`+mUNtdqNQ#0J?GsCRmynhbzG251aQ2AteN4ZWqQ0t4mKw zAFCaAp?Kgp*h+cq7EG}92+d7`VGLW9AeQ98hfjA;vu4xv+l3p}(3_eY_Bk^0h zzZTah?C#?WC$bg<$?QHumZSr$!HaW1qB74p%Nm>K$TNjmA{ffHO1JG(UL@Lfpcn9; z0QOHjAXwuXq%3!cynk7tVim~cpwd={|CuY#{Z+QJPYhU_SPog%D-}sYbEt<95GxTRv}hggej76T{;+a{F>dz(rEia>qMV2hL@0sSQQz z8k{*e3AoXA?j!)DFcHm^SnQ^pM+_pBx0H8jx47vfks3N z(MR7Sn_O++Frz#8oR#(;IE!Q{qZt!5q7qzMW~37=Q>pg`v?l630;E>#ixOrXNDz{0)?Je*gSb3$x}D8Zr>B@mir|N8p0D{3f5>Wdbhc{Fg|{7j zLes-jl$r}Uq;ga4>suWC_nWQtW@{43Slt*&?E7$9&8CsU`0jIYA~8*#1YcSsZXcg1 zuH0Y)~Yy%_b~dV8<7qJ=G)$^QPngUM8Zb7|qv%0dF~+bXe*yFqux zuQH>WZj?2vr+8{ADjwg|W`adc1ErN`dT5cUzgq>0wr4; z#qOIWb&)`X!~5FEN(XN~XJ6Pjjg^`ciDaRBMF)tML0!>btOyaVEV1~woWE?ScLl6> za<R6Ih{;LeEI71OtyZYphqc+!s?Xa*I&<>ij zGg}yZno2)H4e%>}Qq|23>MOkj|zX0=n`n|l-EPmSeXDb#*e=CX_9 zhLquLuwx{T$Wf~tF16MTu;@lm_Oa~<;=Fqw&OsZq{EF(uCB-rs%i5Hd(7U0WH>yKb zL?2)ZykFJ`sz`2!JbeP_q_;Y2;~tKk*HlT6msvyzvO5soS9k7@X<6ZUD*xp*!YNW) z5H*0(ToP5@9+j!c0#&*Kjp3SMh~9h3BhZeY*$(-&`A}ChvRn3I<@q<2L^eThSc4&r z;W3qWsn@h3G-r~NlP4%9 zr#;(=#G;pkPuV}F7MXl{(0cq)WcBF!C2%7u6bzlr$-{}N*#(fO4T*qjDCB&9P20Fr zC)ehQH4Yjc6{reCe?MAiD&^{43LHscO2~DpJUVv;W;;^;4bWnJVv*+Oe|VyI=VVe+*soBm|YL8$}b|`1qWh{M2njUmA@g$>4`(J-*)tj7o@maKZ?v@3<4QfiZe=if&uW4Nt5vqpzdpYr-%Is*6(2S2NOH!SY!B1uDco%4*L)Fv8h2Qd41}<6 zi(Ml6G~*EMOd)C)thtA$UdlqoEiU^i*T27&uEgeaBbtpTQ|+gv{oG|95|TQKd|KA! zR4ZdL`9Ay**_x_rtP2A@35DF~V0 zjhYlchrX{2z523O|G;>vX+m604|S0~^M*)g$YZ&>wtXW1jRMhSBHq5?ylZGLi0|0w zhxmlI(V%JO0o%kL$Yve`#0gLE+4_{;$ZynEB3>YH`w($=oXWk-aUu-@`>|07IBKYztV4trk?4D1=E+g*2$P@gZum4+8lSq$XTGTxUPC; zV4}ZhfNL&ts{^RBZL2`tmp*1m_?^sR-MdWO(|$&*aE~ftXqvXFG^(#w}!nhiOGRoValD%-h^Lzo!|> zVg$C47skjJ<0_3s*W=%bM^|j`jrv537&v?n&oVJDmMKfDG-A*~=6TS|1KiG1pe0iq z0sk8iwT<$OYSts12rHq+{TIpkph#t+6usD3I**cz0l5?ta9cAssM@z`d%GWm%2sEu zlnLs|1AU0-v35l&k7Xha)L#PgGJG!H3<7I`o^ns|w0CK8wXRbUDNG;X+a~*cPmtYD zG!+sa{Wxgps12>dPG&V6nYPhTRrEz+cBnl&6z4leST`*EpP7$;5|3X1~Du0X+s%` zO&Ny@o=a1k%K+aUg}!rOIM+vLHIYGYF6O?IX>Z(eyY>2UNyEW%`%^^s<-fIn3tW-q zwUrmX3wG&%&eR~^l(RC;BqlX|04kuVo}h`P>m#GLj?qU+wTSucNt4aqeXbmhgrzhl zP`%cyr>)q>e-CPUQ^zn+mTfAMh@&o|@lgRzb8x0%UN&-x?w(G_D2ulM;WtT-XeK`|h@Os-DK#m^n$AE@cP|CS9rGu%wMiGqKBH(2IP;}u^HuICv*q5<||Z=;i(5{8Pk z4Q9a=d~#>^Kquqc|Az_xwQQGDHga9}Cc(&*G;3v8cF(>8lW7Pr;b1TH*%~Hb6CK6L zd6i(BRq+v**_>rB2iV(5f$mc|%jZbP@7>7wf*5YBbUsKq*zXGWKG$To7>=*KC}Tp* zS^yXH^SfU+{B8WS13!!SzlkD1WGZ1#7EUJ zYm3^{gr*S*5Xrz_EKmj9okwYJ6hCxmp?`hYgTskCAMcO)UM#Ys;7q*sjA)!C4^46) zQ7okSw~m5Iw?OQBRYhyiqO<}3NTw{bv_iEK6Ie2+Pv=m3==X2wn^HDEf3YYu3IN?f z-S4t5`jO<9!iH#E5uO!yml!rX5V)A$l)tb1arosije;(684l^I7Bo*!PxFx9-#<(h zctg>1r}T{j@i+TFUa%Tq=lldNZn2?VU8Zg5-bxg|)ORe((z?|c(TeV3xn!>>R>^n+ zN(o6<+;?;R@{Fq1elyCOT8e<*^#!B&ux^d-_OuVbv=yOb6X?gvm&1P)jf>;EKVJqx z-{Ry@$~_c~qtzjs`=;tDa`Vh#mRQKYzY=vEH4_!X&Q#shyy<0k>X#|}Aw~tCaD9)q z>p#Fh0Ycn>!yW#CaGij9#AB{ZGt`KohRFqQ`R3Nx%Im1#vA0#cy{DkUwd>~Th->7l z*i)iM?7#;PaFLW|zTb`e1+0VpKS}*q2DSR)fUufBz$+vB3)EQ>XnmSKAV()%Tcczm z%o0eR?^sFRBi+LY1wt8U=5!*3HX_Z=U+_-Ik_A`EGCoiXIq80V3iCmAdEmw3^qamO z;c?)zoXziPXq=woGN(kG;)n2*=49sGT{q zCkpqb5L6kFi4DFT*4s?k!F}Nk` z_8h3vY#d!{jkdx6MnhJ2J+Q7kgH~mChf>x(gBH)YaBR6J4XQ0|)}m~)&w#Jxt$q(j z(_lo%fA=l7$g+DM&>>gjWYcJ4!>CNn%UzEwSRVGd?am{1YId*R*A$`JaDtcsptrfF z0MHP}JbWFH&%F06$Q4t5t|Y>sDu!r&i=d)`waRs(@(ad`VY>aXs)`b4X!-+D9yYWx z29$3wKp~pZti+DGBi6NjI}KRRe6BW!TfzI5ocHH8td?B&KjHttwXTHFr2(wbKZkmk z{s)!ID?hb9n9YOQrJd(`jRM-~@qcxxjS{cpLgFRFk zPk@8j=XU2rGSS-TbdjJOq32|R{zyPt#x5ngJ}ZbG)DV)PAw-5BK`JH;KlA0q@TJT! zkU70=9OD+?k!>brhUINfHjZeBd_~Exsubx)iNqo{QDS~NXR#g#4AYeK2nAX1LroNM zUy6(mQRKVxr0v3M-$VW1-PJt*ez5INI(IY}`s@}w(c#o&GK^p)vjG3bbyCt~1e1W` zud|tbZv{)?>jvR@VP2qB(JXmdrt93gzP>Ib!G>s_y6ECM_|ZK#P>p&kUkVWguX+&Y zL>Mhk4Mos>O#Fo$_&W8C8FAR(s*x5y{&hU75;{bgfJ-%ege*g@fuJ7H+226n8idCC z!jg8ye=|Pe8KDb`0SYj!=(O!dsEDD)Xcm6XSwE7os+NSX}!I^nE4sK zo9uQ@xR?&0smeYh55r?M8T)m4U0Bz)fhF3&nLhTrofY4+FymOD?Cv`2E17#3aKP*Y z5Xu*mOlLsYdJj?inR-ttBnU8W$jsLp8}Y9*#N@_H^mjmp2Fzl%)AEe}&4;?IM+f3{ zzbaLu;q`*xcw@?o3iEThHiPL6sJaeKdwsolKHXQyR!?@)_0!eBsGi`C8u*?S_j&{- zf0FnnDN4ZE7X!KLRPzgO#LR(N17(4LR)+98kJAeKD zZDofm7`j?`g{Ab3Was5ki)JL@85NIOSMjaN$@Iq*$R^)a9(lflhKKo zP#d4SU1MV-qgdQbk_Zqo^0}kBe+8aW&H~tw6Ye9dFStL&G{vg_IaYLk5L9u)f-V14 zR8)YDZq(WH+%=BSY?Q|+6f(aC9)}7;xTmwe^7`vGJT#@3tj{as5=Rsv1IX&)Brg(oT0nR+-?Og`*l}C` zAh7>Gt-+|e$~r1Ze|J!7qZDxkJ&9f5x_ineBqSsuApwq{l9K+_RcS`X5&(|?vhD2b zj2bYQi*FA>A94|Rk^h&6Jqx$g`W_7!qi-OM6Nvyg*M^OZOlW$#frkg*s5u%F8tX9g zJB0d<1OBD@S#U#|hDXN6o`V`TXc=#U z$`h!ZuG@f2=@Ms4!^)}GQf^J=3Un}z}ed~EJGKGx_Uut&r0_nx7@6xloySsmN z1J-_bn#mWyBBu+mhzkn~5Me+!K?HQjSu@AS)!le_{)8fM#^}o;prf)rB(g=_Z+=6y zAqE)0N>kLRn3%^IyzBXYewF=87td#XP}&N*UXKBluuGt?0?!Hw8CigzzrYHFAK+dh z7!Qk1ZqsO)a>VULJ6B8_zNYFA(&83oJ*?W{H65Zlo!XwCpZ|Fh@>sY3Z!O^cH(;~$ zjrgO>hFQ%pQOMVFz~RSWNg z{ve>b$Bs9DHmWRLFp6!yvQiYTI-2YRd3e*Q+_oem!36QBc16VZYi60TDpkr=Z|NKmSAntjna6^15o!iN)Q zOT0CHJvjh~!wZ0u{EL(KEBaS$ega4@fSPVV7aldNTjm!VC+EG<@ynM^KpbXhm~m;+ zC%5;IHK}8H8L-;VRyxSltZi%n%o{(4giNr*_ECNkgjKBcb`Hcrz@LjijB$ux$z@#m z3dxII*bWC*92oj(N&UM$8nB0?QZ4{C^%d}gAi|iWo8*O!%ec@+&j1;Hq&0vQv-0v1 z>I&@n1q2!%393I;R18#9bZ~G0@bbpSMu9JgW9s>PMPc(Ya|ILpcq}|TkE1UwO$c}m z%LO#Dn+P(R8Zre)Lcz-qKJ7sVNvOep)xb5eKidg z*$lKpf65So)idyfYopTyOWVJkHk3e{lY(9$u?sxEI(qct_TR%x8F|QnS_IP9zLVwL z$S;sB_>4UupH7pOO5xGhDm;WTSlX%pDulwj-kDfRmnxI?zsI9Zdr zoFH6=38@6Az?8nPwxhEHk4D@Z6l18cjg_A+%C;AnYUz!NXcc;PKo4O3$;5cTVh+r4 z2nH4xQh}FRf1kkk*~={|fJp&89H0;7mzjZ%ik*p@8!rT;hF?J;y*m`4-yEQK!fq=a ze&5Vz5eYJumrX~gaNjZr?5;74@~0;Nd)1^cZ{t2sqIzRFIV8qWfS7{7wEj^uE=dtB z=9`c5-l|l*e#Xc^S$qSm2EkhS_hc*S0e{}TSN6R_r8_PZPmT|qqFOu{Yu*R5Dwnaa zB-@B-6r_QHb~IM{ION~Rh4f;W_54^#BH+=+RXdDg%nsL6K|R3-re$QbIc_QrQ}WmZ zCEzTExqA|crPyfjw5pc~xUY2wTffb&YdDyRYw5zq!A=SFzm zi-li@l_a}N89o5r9s&YwTLcaIX;exub)f9co2T~n^2}EFMeg1d4g|`h!w=)#F3!&v zTb^MbH-lFO@K2qJ&Fv`a%5x)Gu2}SOz0{Jq%4&w}FW}r3v+9imXx86X-&b;?Faa38 zduj)Uo=i@FmISFWew*TgSX%KZZr?+}uywJR;sHlW8n^8sJv3Eo$ zzHLf=e!hAWvRNd5xPqY-(80}1e@@2b`aLuLefCz#x0d6g2mK*%t^WzoJH3D3Gnz8> zr`Jv3dI19*%KMcq(2l1-Cp{yB3|?p`Colg32bu}TYvGGtW|eo7DZRc)52J_TVXY`y z4%Ja{_FGgZ)~Gg>6O(T8_|}pR4h||RDHYS|jC!oaD^uk9*Lb&|eOfZ4A3Iw`#+M8& zNc#6s7nC_L+>!*QsQeEU--UsjMm8)mDvBoI0bW>=CZC+*AZ<=}w@kkm`<2_;HmuM#@_|Z|{-fdq{?U0B?}Y#P5S^`i zkPT?8NzD-Xkmsfi8m#f5UYG}0B0VR5o5^kVcr^)XsL}Ks%|D%?Cx4nx zdQgVqh=qfrYF>GQIRIl?fPY+UX0$}JJ$h=Lq9%aT!SV8P<}t^AKV$+r;q^%hh)f@` zsa**u6J&k{dsCM&DuoJp(Bh$dtwV=`FD?D#{U{x>d$nquPT$nN5grM|=eJ~`F{#Vr{#bx0W+dcSk$a1;4i1cGL8@FQQm1s&^OEVoJt zrG5OyL-0~l!hOb&_-&?%9qd4GrMNr&duL6%ms2JS0Eq`2PNY|BNXuIwZcFnRJ~J}| zZg}VgcsI(VdxWsplE23K@`FZRGgHs8BXPb-7PGtXr|_V$u#q+&)TH&SkL3$-p!1DN zjfjY7c=(n0|6amwhp;TtVyWS*Wy0-lB~RaI`7m7ANJkrDbh zrI?BZnQOHM?>xgx-9$5fADsen{kDsD60QVp>s5I8y&enm$Uog%u~Qss0;Up&yJd{_p$)P9 z_O_aou{X*}LMqw_0k5;NUe;L`70b)Z6Fi#Mo9=zXNpGuM@iJ#>XKwVdY`Wj^qLAOo zvKn_gbWVDj|5dPYilfoI=(zoLC`8Yq$LIH1VqDyj_1HNc7qaFt)!x&-7ctmr)nmS< zj|!BE(?0$xkvtq~27?)t1C*?TJp-p|iYdp2a+Wt9-VJkdvi~$HrVon#j$Lv7pA|U` zsX$J?0EhQMW8R+PgNkii`?8V}D6sI2in>8ZVU<@_R%)EaK~yAhT$s$!)!^6QC^pCj zH$yC6D0<)<&b!UyTu?ga!%b+&s!p`j+;RT>dm)YvWu{U^?#pnpp&77!2s+bTb=wI~hjo3;5k zHtds@osC^XFYjD3lVxxtDf(_TYrKj93te}7asL=M|HGx_1@~(IrwkXR##UMF0Lm1! z^jx@&8$f)>CIinNx^w#H z;AUZXOZ^%dF%%Xb;Gj{#$=AydTu{U2LwiSthgk)gyV(R4_lYPy75d{eakvmkGA)&u zr`f)~r;DopGrc^yEfA&(Q%tEG*(zkUx3i;uDS#4oZoJn38s3aL7l8$=L{~= zp0eYU1v%B<*nHy-`_DGd37Qp7xu00VV@HBvci|(~0K8Ax85wPXbPLGY764QarWz6W zhv|%reUf%RwNwlY+$?9^Bj@Bi9^d(vpPz1E>1_}Zea7|}zearlqn`Ia1+Q&zYQVLJ z`9l-L-PaKC{J=0HQ0B7v4XR?_R$J?o(cMR}@fK#`Vi#cy^nE*@^6&L?z=?uV1>vkI z*u*t40e8IrkJk&|r@kJ_3@p9RC*%@smyQjDCdPQ~?CgBCJya6$!hU?6hyHVTB)v{t ze3=6TB{RPWQV!K#-iPGyGY>`@SlbQ?b|gviY=K;zNJPrnw^fgeR;mc zYi5mbc{xaCk7w*B*xJbGI26t-CG{H&{&944gdNyEeX44S9@AZ`H9Rqq);TaRQ2OQ# zGb7`gTZ33Yv;4=8Y+vE8+{U2VDkH#Zw(x)u_>h078}V)G{qkytGG`c3nrnngN^-o> z{m0!eWF>6Lh2>9Q4#TpuR{Z20Ngi1|5Z*uo5L=N}#+BrJ5Wq}zt*I{&yr_XJu`)%Ei-Jci6rPArT zi`dw4hSkd=V*B_B_1jxpTb~LroJTN~cZ2ucAcjXoLP0@8lkibHAug`}nXw~8({7x> zm(z-Bh{~BsF+m9WvT_f}56R=GOQ>Fn0V;Q?q)dxZSkQgoqclFoBbH;Dk)|E#u6k$~ zQb)*5*kueqVfF0tq;B%Wa+P=Up{h#Awq9KiAJ5sicK9&4mgRj7&OtHnYF_TePp{O@KV(GhTAX`zuLI#uCn^dG62srZwk9)N6s#m*mc_Y35)z(1@> z6Av-ucaE6XC7q>->rxAD)I_d?h2K{nA)1u<%6nm=DdGG$=zRao1n48^$r!YYxvT-C z|G@Yw*pD!hatiGT=b|tsNiZuZ=T%UoG9?%yar7X^h1*IRAnGr_{!6Q~+Hj zh8Bu!#2<9+Uhd8r!x>GMYUJ%cbw+6Y8|1iy$;s;k1X_;_?SU0`+q%1fY}MuQ%+RM* zX$}tTMa(Ktp^cC`fP#c|b_T3-5PB^mw%ryfF~NwaO!N^BEWT54rIPeAQ z;@5*2+ufH|IudHwDd6F~DZsNj*Hgwl(5W&3%u^Yh__LUo?OtC{-gcCC_TxglMs4zX zjDFMR7w5UAH}&6Iz#$72yT9#$)$az4oIixGi~LT;LJr5^df8s}Tghh{V7idu{qAQ$ zjKO~x4Duw)VYWUl8d6epzbo(>PYHszNX`A%0jnTKG|++BKL{XnR=e0pnXqnRyuNP$ z8tHxjWpoO_Aj<)x-lE_G*!juH$!TfPiCRzYOB(X{Qo10?kh-@z<3B?3bp-spVD#)3 zSWRIX&+i-as}V+vbJ1Wc3A`fZ`HWT8qs@`rR_5vcFhyzwX0bB@4a%kGmk~gK;&>kF5?nq)W4(mTR!(hAW0uRCvPECLjKI z$mV~QTa2A<5`}Vf4aVSr+wH~ghWQLuiy>SgFzv39Dnxpg1MYng8ysuPQ8*g}ftAyw1?Q1RXE2bO=Q-1i-FI*rJ_Z9h zD-c~T%>l>FTv}UbX#BGCazJ`@*xSrCr z4H1oN6da?yuBm*}KLHl6fYUv<1BwUXk1fcNR32CB2vk1T7-wW+Qo-6@G}v@2)L)ou zaa(o0GyJSj(?-_IAkE`8v-44l0n!g)?4hH>_@JDH81xFm=6+(|^ZmIh(mNV(LmP4&bHG?py(r_|~v~Js%`cin7@mlIH*OqlZs~0~owG=!=4= zWOxJ_N1&}xJ9N$u>=P$14oS(N^Q{q`6+mJH5R$DH5#CQ|=$C4axedqWPD(JjCOMql zfdCf2hKLs7evp|62!*@AMPx^WhN9wg{M>7sy^+)#K*Ese** zd{e%=*A#f(^7j%Y7$dc81DakKNYH_OSsGmT6V`OG7=$j&$LY=q7${8NJlh zy#o>Z%j$Qa$W*c@^ad^6>;mZDU&>GjI%t8VtBYKs|8qsr31m&D;*>`x0@Uerqdp6e*hd|m5wq>|S#|0WnY5XHxZxZc^~j`U)NOR67_ zhQonycU5@h+xVkW8)e~>afzn~m?T7NU+bPPl)t68)aw)aa6LY0B&|OjQAbjmFWshF z|Kh@#$!DstG{j|QaR<4Y1T~83aaX`>2P5bF&t#LL_kI|sXIJ7WrlP-RwwMmtqvc+l zK0C0pkGZ*h_a1A$-p2V)y=DI1Fkv9~{qkQ$>30V{gQhp3*~e1y4>swDn9{@cPWDN=kwIdrw^W?eG|*M zOCtt_N#?>-K#l+tY9G+dtt8R?k>vnM%Mh?n;E$G*MO2MxMN_I7uLjW>o8dIytKqPf zdEh}=mO!mAGVD-x+1$MIF>BpqITyl?Q4gO$Ha3kjq&cY{kHcA>0kJ+eF>iZ2#;i>7 z8uMT@#+358;1L$0s!Mn{2AOU#FjGkJq>yF_j{^vifl7cOX3Qko^C%LL*|^!I{Z`-( zgkPjnNn@!Zg!U>xD-kPI8jO)>8V;knwb5u{B@|iqSJ|2)h2u^>Toh?@Yc2SBXP`1g zt-O0R@QE$jE46`0XB*ar^ zYPNgdpuTR6M5z#%eFV~VECtFNNWd=ncI}?Y(u;hvHjfrQyeejkGVwKd_i5sQ(j|d1C)kPCHZdToj?`dk4y#g; zgQ`#|rn`PLGr5YgyoOtY;l=xwD#3X)dM7aWODur+>`BfS^3KQJ+>N*r9A?MaAa57j zip%r2gWqh1+f95U?0>)FFG=zx4eQ?aY3lw?)e!{<-*>s(Z)7b+Gc`p;qvl=YF`{I*J z1$sYwI&g+k_60iMX!k0PEqwZLzM&YH7qF)=^iFWnX|bmDBj4O;(LyMn6F#`Ft5!s8 z1B?;cfx1pHtkiFE384r=CH6jDljT$*!lx9*!kZBCO;~O7D$@iI_0XdRDn!*^1I)0M zHO2nhHX*ts-*1bkK9TMacG|C0rK$;?IN#^#>?qP0I%nB4&&8v>#Y7pt`&}H@ecoN~ zrAy5V>qe+UlnTEyG?@ykY<4zs(teGRUJFx{)r@p)Vh-LnBEI_V@maLgG|+c`FqfFR zFZf!@#@@OVJNTpkBE3pjgWqyo!|3@aJAFq~J{c9H$k8!@^1J^Oec>0tngCd}P)1!} z`$IJ^J&%o|LzefW1KZ2P7pXSDqlC|6bE;o|P9!6o++>KG2jTw;uqU2VrK>qC9*9Hj zT;7mUIz0eg5(UJrJCF`lZN^qP7sWYD1BZ+1I9HcR<4U?Gq{T=$Yz1@SagjZxJr=Op z{>Vts6w|TWIL1}+QcdSx@;fqYu#Qqcj17$&zl()ffebt*fx3Y|O$J-#R7pnx_!RV2npo$iVonoG2BXLDAPRaB^b#k^X5y9Q;PQYbGq;bV z0L#YiH{`e1JL#(Q=-N@P$H-h&X1t8EoSxlaY|^s3N@OKoaO$^LgpeSz<*MWl`RO#S zk-gE>?K{MZdBl~PoNa3{33{sKDfc6hPg*NIQSZy3tPI-x)z9qaXVQL|EjArFZFQRC zF=);0L5yu=*1LT>x6@26t0lk$Tm={O7FHB|ddbb9#PscY5;HsF*A)~Wzk3LcyfJsJ zXjjJO1x_v7h~=?WvEG~uc${tR%=c4R9^?u;&9YuJzs5~A20|K$8jqBzE43Wk$1gZT zS3MC);;fshvRo)Jk+k~v&gJ{qtn13l6`+B{b7-bdk$@4p)qM-X{5Bg12UOVu)Fm+P zhBXqIioy}DwAejq9f9vA5^`Y#Q`{3nn(+!4e}(Fk5cV%pGdaGWJVSD-Wzkk!2EP*G%*Htyt4(U*!qOKAlZQ)thDp*pQgy@>9?iiU~b7sc4&Ys)gQ$?GHA9{5N3jNrMbF5 z0dL&3?D^!F8A!YzB4rRKOoI8yAURhnYU=NYW@Zk>e=Pqn-L%oBY6z$U+X^wNANP8A z-Fh-FeO;Kq~*}h>_g>Ed-an&2!l$BDq8pvl_e-t!>;w+Z@|Cs%(w#kQV ziM{``TFh%x6hw%x2Yt=+NZ|7GRLJf#8L*)Qy+IdH5*QfoI|%{bbP#cf)*@p+!7_ee zI61a{SGz!W8Eu?q2nt5IFe+-H1HfumbteZLL3}ZgiSYue^H9c|~D<=%mq zZzL#mt0D@8wPWW815;hw5#U*A_C422JgH*T8HtdB0M*X00~76*LuwKO8~Er}#;JL9 zJYks41KSN{cI&`7m)2+unhziF>gWLeE3?H)_$U*!YLM0*tTu&H36*q#B;ci&!C&2{x~cgv==`Yt3&6lYv}CbRyui82 zhF>qCp&|HL^*6zRviOIUe`^6Nn47!O0(xAAjocCvt!>(C9{cjC?&UIb1jQ40&(B^| zecFkeq4;eke}#VK0QVmj4Exj@cYzkw;&ftfgzL93sv-9K9qK>r#5T0F6^^TYKH6E5*N#wdowA^ZW*gS2lJsC`tjT!2Da+`*j`pqG{MW@l7c9W>aa?zBcsOG zg((TIe+}bg-&fqyke~6pzx%X}#_Es^dX_TVe0ipXX1FN4k3ciO?5B#LmSSSpEsv*@ zokW(zFGoze-~F^=SaAf}tZP}Sc#p^#P+t_Gx?0JyLDVp&*0Sh1y|zx*0Z&3D6-b12 zUwd`_QXAD6nbJee(E7Y!Dj#>rTK>qGUujIe0HVe^MsU{JCV3W0BAkF##wnD8y=`N@ zcR()67qmT@$RRo`!8yMztw!(2Tj$F^5@)cT%VU<`djO{wm>D5n%7o^64@6*aLzW%ZwB)CWc zC63utV^~7vI-hZduk7v2ZpY9Na05krm&gxI`iL*?Vs3Wr{WLkZRo(EX3b-1`vFvx zQalcNv3VpxG571e^UWlf_Fi-f1m@jqvjIqJvx5&hHRJKauE#;69Y93({)4Lk4ZSyA zaoPR@T!5_K_qKQo!B&aOa(x#842{Zh3Cw9ii+KG|Z-Iug#2ri{-HWmrjB5urcey8E z9*Z6@#L^z5%>?EvrD)>)7tY~M;2{6HZvZOYV77e+|Aun9sb?%dG^_H*>?rLaaE2Q| zPlmjy`c_k#kWSjmU!=&G7EX&JhM;X34TFFh$#PkR^=@}YAcS5I>Gw2^0 zl1EZ;__h{?3`>>`0Oupck~PabB#e4Qy&x{xMC;M^TtxTQYHlayUB>&%;vVaVwEwWgRpbcZs*x(3EF2(Tcz05F{hybvL43Eqeg zKutluh3xeMT+Y*nKPlQ4Q;Cppb%iQE3(3ay%+Yx(x*2{GDj!@`sDWyNShJK?b#Scy zy_$fM!Ngab^{~TN<*UGIz9XJM;(<*M(^6}QGzv~Le;Ta5=TjV|IB=Ts$Oc!g{Hcr+ zsP_}`GmDCfvaq0wqc6SzW>lzykzyFLlz_z;M#)dWCC(Q<)tl{H6HB# zj$&N8My4AGZ+`)+ydI>;LQ$aDy2zrVql0zMo6MJPW2 zdZFDT5P?fTX;H1{$65)Q)kXP|ld{Zwm$a(*#2{o4N^@qZ&11bVb6mS}xZPNqY!MM9 zD+8tpz_@~gm8ne^+S)|R?O~qK=P$9a>5OSfJWT9uZHHG1d?C{#qZ5O*U|Kuae00hb z{Sbn|9)roDw#-whSy-z>_9%lpd#NJpHzfm89ZWMTHFDaZtr4xJ&7Q@Y_IL8|Nyh0` zo2ttEc!DyM?Vh@-oQ!?Vp-Tp=t>E0<6W7lRg{0*Ahl?$Em%mH5r?T(9QbwT}h&LyH z>SgMB#9j4lq;+@QAaF!}GwYF$l6rc}1kZDjJSz=~H zOgyn)sak@Q(zQ{d0^FB_ZLHuj^7J!n3|fm-SYCw4UCp zymjX^*3(=Xon|oq5}g8is6oGObVX+iFTXMyj{wE znY?1&R zk=+>dDEjfe@m%q$_nqU$9Y0r-!*MRvgU!vMP?R)zPSC29yLWQ40t*A!GB6FQ7gu`z z5i~QY8^xR%O%KfcBB(~aAG`Yy!t1%E{4d$(h%u|bMSCl3-4Cnlx~){FQ$`ovLy;e} z)NWv_A>R<-FsKFnMJ7fKO-)U6bDA^;iilwxBD`i?BDMXkyoH6E!CzwY@-2wIVPqBn z&9h_06OLR=)^r6CP3WEMTBF`r8pvov1yhFO;(j$;^20||)LwGn4zfLw#q0C;<~;y( zsw*V({QjMT$5ojYiyjGrHJwZbmPuko#1uV)L5sE434&5##S|JXxY8<@$0msCng*{@=4 zy#dI{!Vt*3<5VLPT*uO~VBD9HV^7uCT6Gj|W2|4#N|pPZ!W2}P{*o~=<;ckq$_cim z5UU8omyt>xW68@7*H}H|%DI42ReNV&jj4zHBK!ktRFokLC#O2SFoYd8ZEI%-#y%>5 zR^53->W|~q5CHz6coihq-z4|Nh=4%4M1{}=HV3%bLihS-o8{$l$Q3DK??Y+$x4f_8 zXP88VGOu9w&m!-BW)fMQB#Y zsnadbOsdH#D6r0E=pWHoQK5L%PrQkzJQD$5tgNgo5)yQDh}khQF*caC_;OPGb(%}U z&mhz(2~Nh&vCG;i1{#kMoQnDtu=eiRU-jnS$nMpC& z-2LcOkW^o{Ic<-Ys-;IqN6F69(t^z+$2Z9iVF$co1pmmVu?u1Tdb&_#OmE9ScUy3x zy-e4y@96F#a&Oa$$+28hr<~w z$_rls>a#uu!0JVuO?zcFy;v`ZC;fm9OGZJ)Qzi_s zo0wB%b|_x9wweH$g?vgb6a`?f;WS8xLFtOeqD%5a0m4fpi>Rom^*UJEat>8F1z@qs z#Gn`8$Bi9VyQCrso9{amwj0{Rc|gc5OJQZFOUoldssz2p*aqtJ`^bF>`1$MQ@xGhi zd-s$(dpjQfF!5^?r+wIF7!s|keDzB*;8~?Og^e36gt}eXP`Vmj06P*lb%O~ zQJ@4?&k^ZSk3O=KmYrVKntJ04u{M71%Z0}!h7S%D#^bClmZVp-0rOj%ppN$gL@R$E zn0((ZFvDuCl(@azzsH_s&1B}bwzp+1WuC%ZW5K{cUU$nZzOO8TgC|nY?^W9UzVy9) z1fH_WWk6?uQ4PcE*_kJ?MqWgF9@-JsvOn9vP$ZHh0!kWjFJJcFCh2G~U%v<1dz5eh zupjQm$g9E8hEhZmFRj$Lq~Cd)&CI+=!(-xC@T|`Vp*mF${r}~O`3WK1cmUM@Q;yh^ zMm!l_z^up#$k^ogE;=T0?95|u74BkpX1GWA}0L3g*^ zSo)@ownsx^tDlEz{ts2?S1vw!Xm05zK(}z>U?{Q$veWWFdRO0hGPK+couR#N#3xzn4bq8%d$kN zSaf^jJUk)N(wO8Go>5+#@gkZTyt04)P-Y(i^75#A#~Bc?YJe`#bZBpwKhV5WZb7xQ zASD=gz(e6D=r6~|#YuW@!T9;L>}{XQ#lr^;U%m{&0a^~HxpzWx@?drId?Yl}W!zr` z*+hL;9i65-#?daw--;f4FDr_drAEhgbT;r`MQ0Tta1oJ`egPJUR1_R*OF2g_cB;a> z{-s$IOuos<&$zZrJ2#Wh>aPb-9rrCTf>Xn1V z155D~1S1hBCgD*`3Ix3qB=SM4Lu+R;5Q&h94ar0X#~8iK$fZSr&m1J2Ck2 zNnue45y9OkD>bK5`y?4Hifn`wxFHX$tcuqxrCw=*6X?d?YHcZ8n9Fa5zrfZSY z(BKJ8gKicP!1!sEA#$K@c!c_riJcwmLHY2W=8k>bQW!;;wQL9K*+bSGlC!e_w3J8+ zY&x_0tP zRq<$OEqn}d3>yxEg#Q8zU?^(}fe_NHnx#x=YeUrsoO^+SiejKRN}T#Y#P6{N#=r>P zWCKS{M}{XYQv}>!GUU*;sjD$nkVl#WE}kB30rAYZ9S~7d;BXYaa0ujc*m*K1 zu#Lj$9HA8wB3_c)jf{*2@cOG>g5(Hf6}nGkZVYM&EooT=craS4{P_zo6YLKVsDl#A zf3ev|Lk3$2D9t4c!gW-7z%p<^9~xyZ49v7wm5w95W2F*0p|l#(Owkh$J04 z)(9;F-2;5(+ef6A$*2L~X<7n-k?X(q0<+)N86D!HdkHlSKwby)Am3U5lLIa|b^ulv ziuNWN204 zR#?O=Mtwj#q<;wS#~aqzH6{p{_}`W_EEoS<4|1%12qwt_rvi)OFZv4f-5ehiE?$py6keHahALvXk=RZG;slm@VnIUp=2 z;xP!4Bh0~sQqa`cSjuP9Mko<1VEs-=2*h6GB_(OJJ}Je-Du0!Y%d*JLAp*FMqS;_< z!nDay)QBd5hj4C3BYiL&`74bDs)~OR?Oh8eB7q8CUpQvbab!z&C9Y@nY3?nqdyqwhxP zB8b=_gM%LmO~H4hi8GNthX!r=2Kw4`Hss-W5lPCynUNiQKwAAnU;1_P5HS4!YKQvg zf7*+U-0b#X64-cd_X{&|adAz}`4}qcR}Q)IL`G<+=0!zw+}v32Swafl_=yv`BW;4` z$}9`qE^yu2YhXn=|7lVDQ~f8Iq79K0(*T4M&~jj^k&W+VWn|*U*stkPsR3s5FEfXd zl9Iw!v(5sKjI8|MvrNr=slLHQ#ZTE?{f2=}>EG`s$-VqN|i7P0NUtbt2dC-G6w%?!i9(TB)xqRTT@w}?kPYfp^#3w5!dc{Rc zLxPKXcD|C%ef}Xd)rbF__);m|df1Bd~86%l)Vit(vR&F4uw<343tMKvQT5tM0Ga4F_TP&&a1 zgOJ3AW`nr1Gl%N4ijES$AP6KndT&u*Zkm=>F=I%PsyiMZLr_bMT`l*^!Ab)Y$kqV> zkY0Z{PwVjF>&}oC@Sj`aTxry#pyIv>16;+u0VdlY?^j#F;tD+iz({oDWTk67Tbu_H zKn;zHRRdQnH&^d$X=76kE}#-qR-ZXn>q+&;kL9%+v&_y5T#5S?+GWe$9pf?QBhIuA z)8*G5oLAkpX_PEKyX{gX8Pfns<@Tr3-q2a#h4;-g-P7T+SXH$=1Z5k%qhWB%>gzl_3rybdyVEm6fi@{aOy+AE~ zC9Y(|u*q5bz0uWBDp3-i&Wg|bMqQg2M;pfUsipN0{RIkm;JJ{@pj$s!YKH~6-iehj zZ`>;eHy2Q-K+liKy&itruzb6Bu?vtUGbLW9bEbDMa8&(XGcZ`qo~%-T0)9J;UB&)x5ee3EaCFp7XA$$^TQ99SYJ2h)G;LE&VYhvR)S4GK9Tq1JCUMAO zW1g7&^$^=*J}93)(P$R&dWvm6;ZxN~cNHh)-!gJL{#OzBukG+qD|Mpc5`DPFS6?(tEgyh%lZ7-oywPb;ILrO-~KSoXl)mr&0;gx z3dDseCE}u~i#?*qBIyt2o0L;0gd>P94`)W~1K>eMo^5ZtFl%qObJc1e>g)RiM8g0s zD+rSm6$Rz1;%vV40xUf8bdQ&ol2Y}-h#+v4wLkgk3zB|G8t^zB1oOLc=X%aI8;5Ot<#E3#Wau9resn%H zpzR{&H#^bWWClEwXJ8%x)*jH|wBDE)a4e=kUb`aYTm((hL(Foo1C4 zp@lb?j0}c{7rvDRIC=N0y-hl}uLE^%>*B_<)qa6!(HSNW&CUz;HcK@gE?_AS8W>RL zp_A~<#`3OKT<+WFthEAVZh#G#XW*!R`U<;+6-u}m(MYWb)CGmm6+g9@pbrytP^Kb- zoXOizj0W4-QawQ4KRP}V2?~@zVP+qSlI!tPU_J4ndC?Y&@=BF?GgEktec9o|ah9+7bkOg0YH0r~Uk@KZr zhdCsc>rhd0WPfV1TT7CZksO73PVATsv{9(+bHcT6cJLx^0|F<%|Lb1-){Er5Dba3@ zik`Q`oV?F+5fF=>JY>@5YYe1(D2HIO>7yQWsR-c{80hf?Sqe>rI>v3ROr}c#LMPKM zRc@-mB#nr#a$MrMmk0e!&yV+avGUV|_%8;lwj{#4OC|kukK?1S zzVtBS^XuOI@rS9=%?_{@CwT=6kC9^8ZIG{McQOU6C&s7}lL)*|mOb8U4N2=A$-AA3 zJ=jO?Pio;mUO%|}Mn;tpaheLP76_^|$Z+5KVKP)=k0SsbWUVgI?+TJ{eYhGCyh9W8 zr|M;Vp8p<@d%spQax%h9FdcNRx{i@cp&U1JChixmxCRv+16)Eo(M4D-rSZcy-zV@_Xk;N&gM#UGYM6KM@u?LNY ze&7tc?A>D7V8c}h1_1-=HDIyD$PhP648#vdAE44bD4o3vEgz$S9D5>2H=QHQT@uD? zYwKCmn*u6<3Hvi09mTYb!;L}jo?&hg`kemZJ2~lUljEPd$J=Obr&y3n!C%P^m{<~c zI;c4d!xY?3T{vzO#WyiAX}|W=VDq>yYlv*THo#5yxHTV$i2MFM6LYNG>yAK1pHVeu zMUqe;x*ATD2PCj3y$P%5CpU;DwNqJmH&)(rDqffAxq@f9E zHk8X~cV>>EB4fw2yp{h_Y-iM9JCb^H_Vh^2Xf$%OkrR~<9FH_s%`&yfy#K(4y|Q1t z-+g+VDf$I#x7=~Ll~T!sZK~k>QBj{F@=l~FeiwythBTI1TBsDM^`hfx==R#MAa=S- zt^NFJf$GyX?r%FXpABsFe$T3VL9m=1Lnd$3gk_EeRmcvfu1}e^-=8Tj=;C^zU7Y<8 z=+;}fmatkLj(r~2&G?^RmthOq`;5J+9YpQLIoS_8P!F_mL6hS_{CMmeL>A)%W?I0= zOL0P~VQGslFXf&@lYbi7;+~i}224UP3B?@_eziaBMYv4T3eM3Hr1kYW!}@{+47?MnKo7 zG%-G1s+kvn6Zx$%Xc#ekRs}SWsGy~qc_BvJ{s;>Tfd|9RD3qAT;F7T>X@bV5C{q4r zhi=rSSF<;M&?V@V$FZu5rj)k0mz4bOe4TR&2Z-y$(-ku_7l*_| zMDEw46euQb+}?=^WttirzmGc}0+*5#|4f2}1mbe8Ew^@U5V$>-dv`R!ziHPr%(u^wdbZr=ar(x> z{t=XddTwA6Jawu+%e`%6Y(htQRcPs8;dWivw%b^D6H#0Lj|u1=1ui$o+Bvs{f=?97 zN8T-%oh9kZU7c>VS=Ki}##)}OJ8;w?xsDE#zJA91JAZ^ZYt|h(uA9-A~6w1$vD8ROj169zgh9JK$qXY^-jE zfQ}Cdo9hXw%L=Iiqav0<@Gp*0WW;CB&7qjxR8mT+ zpPJmeP;lAnxNWxSF$sYFUqvBg+Sz*pko*8x3#lTPk$+BN>E=UNgX;QB@ki^CcdZLJ zOwy?H?t0Ce22zgcZfE_Mo18GOtyovQW~w-I zSO&H4+YZhKdOy3QO`|EqKY3q_fgNFguX#ngyJm)fJB@S#_Uf3&OAgQL>jj&Ml{KfM zmb)W1!?TYE_d|rNM~~Zr@z1l9+1#$jBo=C|_f=JAWQDc1e~vRBxSsdgc9;jix83e^ zJmUHHWRalMbDG4-mRxRbX9$9bx_ABl^lD*XPni+qI+EiX%|~%}27Feme^RHcqhFqf zx^rjKbU@TY2Bfdlec>I3K2V)gOSdcU`swGjSrd?c#1nlne;J>!;_jFiMGsL8TK`HC zbzZ#d1h+q};Zp4&miJ+*^5=^efCn_4&~lR%_xl4Q9RnM(%;UMwlj#@ku4>;Z%XH#L zt&yJEpQfcAGM$-EBR)@-YM>P`x4WFJD(855T(GV45a3|MxKjH{ivrL3eBp{*!Met z920A#%jZ?5)6Xh9$lWg#?~l%~JBCFF+Hm42vdddmk!rZZGLBEF(?>a&ZOT@>A5?w9 zR;2f*j`-ady?aTwvhGpX_|Nap-TnE$DQaj8J9e%&c<;um&(~XSXZ?chr=@LPY`i~^ zL(@F-1t1AldJ?%ZL|kNQBV#*xuW2z^ zK9WmUGny}Gx`_}6O<}}E`P$>YasL#VCqLg!K;wAzhM%FAIcNb(UMw>5=g(2LD0S{i zpAM(BZ-t}WzttEkaKlATBv8F>ui}3JS<~9o#;e=?w6_M$*5hxiN%l)+k2G5CvKXK4 zLa2YGUG9F9J?4UIw>lRyE+W;_elM08i+DH*T z|KxEd^)Pl%{G&6XJCf=+9gFG`83L{5lRoeqeIlGN+a}1T7;}&z?ayaaJ5~qYDcQt10nC^1)qIx9H*T5mSzW2iK>AfMW~{P4hg$yb>|BdIx4sF)9br z*YNH6-b4u>fZ20im(~6KN9w7uzP=1^FS-{+`gNi~(xwAdGV_k}MUeIMqwnY^(1EWw zA4~$%93vTK;2n_ANM`G_epLUmK)ksbe{S5Ri{}_+VL6_fjjo@;&Up5rjD2pjUrOre z4zcsoB&p$ILHV9SdDox(QY|ir5J~wFwmt~t+n{3x z?l6B=R+f#4vAK1#wp`Z-QXLxc^W6sP8M!8;L>0_Vk(a-#7PJUUe8f^i?{> zfY1vewGha!JlFeZi4!0Ly|%hH-R9ves?-}l|0K>6z*bX&{ZB7ZuOld7XXX%PG3VCuOdM$*9eiaF@S3JB9CY88CN$J36LWkiXz z^N{NGmVeW3rH&nm$w`|w)eJ^w*V~9iYQW{WV(FfdOs=-MEDO87Df{xJhVq?Oox^!q z`jui+<8b*mysfb5`9t;~gz?oDqk`AHhwKtoKrxlYz-B0!larhX{|S`%6~(XTe)JX1 z1%IhomXnfIt;_85`+c!Bt8Qm^G6B%wpj_Wax8HsO3G=!j+~e*ZoAPhXP!QdKBXj6O znWi!nWe9AAb00g8EYQiBm@YFU%IuT8?xv748W(@t&nq|@uyJyg;~TOdlj2BKXy+vS z=y~XRd1%G8q*br5h21}({%Ly(7QTd&K!4@TMiWfBBFBY(_Pu=YZSK`{^Op!CIsg7Z z(tG5o8h!klD!C{1&8w-hrCldf(({YMXd6*+6DIF^W`55!7!9t~1TAl!*2ZBxj9|Ls zy)9gSmfG;5X~NAUH5(GbT@%@JD(BmMiN=-1i?WS`zAw>YKhba4_qNoHz3NkcGKPtO z(&q^Zp_jWu27LQg;59p2Ql1PwAK5$3zv_rS%G>%!{Bct7Wq%c-V#HJzw8%$rclWl8 zlw_OSr&wI4bW#4tH-h^+4E>1qd^H6{vX`0H=# z*AoB?j13h7zYDQ5HOn-^`l#e>fHypnq>;E%d8fg2THI}NV6}gs|IW)k*>xQ`eibEc zv@njo6DgOyMU5sg24{QQ{Z4KovyQl~UAlx)t)wB|KI;sV@JyPE zps;pgu-?Bia6Ep1Zf|bByIGG?rC0m&SY@_uu3WISy(wjK-Vp|#C^LDZEfUAd=)YBl z@9SR1Q~^nJVvECfTcHzj?_^)-eKE?uU+&$TPFb|R9JAWzJ($+e>`jt%jQv9;w5q$In7+#D;B@#p^866je6Ew!}A*n2IKZ=Kh9fs2%sP^>$>a z$7i+}?u79=tp;iFNEPbuK%a{S=Z4#^zu=KWe=#%d8!yun#q!gqQ1Vc>gl+J;@yg51}TW^?kFuK zbHN^OOM;6Fh8Yk8yEhXx35FlFAO19B_K!SIz3^%Iqiwt!E-+ih#XQ0}KXbU4<7fHW z!O5ViW4a+d&d4>^$H)d9JGS$qE zmFCsIi>AkM{fHUH6ndW-KSI-wj_ih;5(f~on$DlfYCdhJwj4KYAGBfa-yPc?AA`LP zdmTG_y@0A7e$WG5QSBhC|ww zQ8-=VSkL{v$-p}8beT?z=?tT>qd`x;SEk%?STK#}E*0TRtk6y1)dXp8DVCT+75+>G z&s~pAx-1T+$K|xR-1h-XPB1WNj#3|lRTvS_0#pej@guJzMn@=h?>wT@Y4?&Dn}6zy zC%A5L`-SoGNPC!k&3OOur7e;mrzBo>aYa;HOaq(XNh$Tt6?p)THr25v^#k(C+?zSM zVCTL0EP#)E?!aa|DVz%2qVp?ZTlwus^m&0I-7nZl#TY?8JH6hk!(=#TXJ`5R+?R5< z-^x)??wK>Men37t<65y(%cp*)UFK)#x(V#otgS}esvr?2|8s1c6mtex7jh%2%9VJ( z_V1e<_bSzs6RJl5SYXp2q|LU?nB@mrSR0rlIFL^E{n6_}{(!R(BUJ%Nrx`l8XiG~= zdGH84b87D7lkdt)FJ51!HcUIt?2MhwjVT^F83sV1hj-I-Q*oaHe$k%DkF~SjD@~b*7qq)u=)7EfdU5&hZL&_Qe<%>c!UrOliHby3VvoEtYqX;)i~~@z zR1(Yy<+ifQswV{;D4n*OYn7CR-YGkd?HszFW z+krEJjJ(^mgZ(LMiTXN+9>%Y)jBe`@y#$Q4H7_-Lx{)l?y>G*ZgZ-TpD^i2Q1-7qdHy1kLp^}5--CHVY3=nK9{rp^BTK0Ea)+G4$P2_Ff+N%(4By60L5 z5vBT6M!l8r6m8p1ETzPU1>ewQZjX9C208|RpB}Z;-X^}*eogd*Bx5Qor1i;_IZBWbQ~Jw+D+Lp# z-$ZDg7g)eIK#$S{UCP$>_k2#4Kjz8 zSHGcvWf6_ezc#;KRAbP(+E&+9Mg8-(>$pw5mNvFPCYlrptOs%#G#oB!MvTHlYgXS| z?~bG2+?;v&E+>%@(x$>iCZB}h#Cu&}U0ACmwz3T4S}lGu(Yf+t+^f*6U;-ch5@FoD zWCTGK86BV3r`@q!guEnD5P>6(eKeWlo2ExmVPSnfQpLO0>iX0Y5T1BYk;v@0 z-y@{NQn76`?O2!t*;YGsgLe7afgs6Xd zvoP4*1!F%82|2sWEMX(MCH~ggW5FRktD)vhyl6yP~4PK*L~?BxT$v z*`3U5gr6m?Wc^}i%uv|s;C4HMU^+ztaV?tH`KYu>K#oyLs>+#^s_TUjMbDkJ7e589 zl;c*&CP59^rDCe|K1bvVTAjHKRthfS<&)Hu=%>;F0v5 z?;JnZ2Pk|VX2v#0(JzFt|D=67Uvwn8%vP7EOc#}icro)83{W;UxAzlGI+JJUQ-f*2 zFw9YlFuEct3iHA*@uOZ&b0+2#Dl%S7lSRCH2oVYq^J{^sexG-qie9nO%F37U_(NwW zr5f&+h3OdEPQ*)#PIF2%!W+*h{A*b+HX3Qxdqb-+>nzQ!@-{JEzWIEYhtox(`OZ;2m}{90Z?H0}ry1oa4Z1wz-GHZe!9znMNzSJkVcX&T{#P8K z+WQnMjqQ`vpJ!z37L&k}&d2+ra7$TGutOt?kHug^a&=Nx#Fl0aVr9$DQC!A}R#hTx z(Y}9t+_BqD06kbn&j>exjdJ4|`W>QNAiH0L+MQ29$?CW;U6yy;zA*mGq)}`3lz65h zsIz!ltPxz{2n$2e-e~H({2AFY0Ao5W#prtbsvdO?(m?-P7 zmZ$Na>O_FwIV+MBZg}Y z>+dA2I7W_&is5r#^_CyQg4V9@d+*i==b#JQmqo7YH({K%(@t`=I*Zw2J2z>(&PtOZ zw_b{twwyXE0B=UTL2r}a+PauP+1JE@`s`V!AZ)iRLNv+rbPf97dlsY1#X|YC-F0(3 zVlk|}J;kw$(I2JV{HC~AtgipQVJwyAvlA4b6BGBHy;>s~0n=wTRrQ(aNue7d5xvIw zp+ik{ERu@CPsypJ2P07-H&x>Z%WS<5aVrZSI%fD1V)Xh+ke_hVpOk z?#^Y0C|xfp7sz>;vUGYLfE7~#BX;h(jL#p~?jsUGeUVgW2o~FNk!^cXaq-#J)z$7o zLz&V84I3LBKukZL zHO=R7#X$DuYe$D4T;th=xvTf6_;>t5nxPo(f=*@8H4%xdG4vH&>Uor7xboc*qfCFS zvva?6l5t!Y7yH-_H%dA^lbaPM9F8&6KNvA%BS#s0ZdW9JlO^wKJ~J{V1nnun66qyF zD_^Dln)qhMeXS$-d~JTT&Qd+RbOF_S>EkQeyW86_Q@ES2JYa=99Xm^R)cAQBS$rXr7SwplHj$(~cFD?VDCUBHs-$E-Liz?L{eAy3@Q+Im4*CdL5&i*O*`tc9Q|7`qj*lv6Xxt1*vA&Jn z6-;FE@bG}{O;B@jHQL@Wq8|$h&@y$n?!NePt2-cxB&V#UtgNU=!ElZyDk945{2hGO z4f(gf=%2qpsx>9RF8dFf>v!J2P81aWjkvhn|NK+_Sc(7FOaB)|rHvZ;U+W2J;pqR6 z2T<&3X~6j8pSLk0{x9_E|NTeTI$&U6o}O$n2l~JdNPpW8co@uRO)(XgA_4Fl7%4Hi K59K0y-~I=ItLFFs literal 0 HcmV?d00001 diff --git a/src/components/Comment/SlackMention.css b/src/components/Comment/SlackMention.css new file mode 100644 index 00000000..3e9eb87c --- /dev/null +++ b/src/components/Comment/SlackMention.css @@ -0,0 +1,124 @@ +.Comment-SlackMention { + /* Trailing space below the row. The node's height is bound to the same + * value (it spans the content band above this padding), so they must match + * — hence the shared custom property. */ + --slack-mention-trailing: 2.5rem; + position: relative; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.4em; + /* Trailing space as padding (not margin) so the thread line below keeps + * running through it. Matches the ~40px rhythm between real comments, + * which carry their spacing internally rather than as a box gap. */ + padding: 0 0 var( --slack-mention-trailing ); + font-size: 0.85em; + line-height: 1.4; + color: var( --hm-medium-grey ); +} + +/* Keep the thread's vertical line running through the marker and its trailing + * space so it isn't visually broken. Colour mirrors .Comment:before's line + * (Comment.css hardcodes the same #F1F2EE; there is no token for it). */ +.Comment-SlackMention:before { + position: absolute; + content: ''; + background: #F1F2EE; + left: -41px; + top: 0; + bottom: 0; + width: 3px; + z-index: -1; +} + +/* The Slack glyph sits on the line as a timeline node, masking it with a white + * background the way comment avatars do (matching Header.css). It spans the + * content band (above the trailing padding) so it stays centred on the text. */ +.Comment-SlackMention__node { + position: absolute; + left: -47px; + top: 0; + bottom: var( --slack-mention-trailing ); + display: flex; + align-items: center; + justify-content: center; + padding: 0 1px; + background: #fff; +} + +.Comment-SlackMention__logo { + display: block; +} + +.Comment-SlackMention__channel { + color: inherit; + font-weight: 600; +} + +/* Only the linked (manual-share) channel underlines on hover; the auto-share + * channel is plain text, so it must not. */ +a.Comment-SlackMention__channel:hover, +a.Comment-SlackMention__channel:focus { + text-decoration: underline; +} + +/* Push the date to the right edge so it lines up with real comments' dates. */ +.Comment-SlackMention__text { + margin-right: auto; +} + +.Comment-SlackMention__date, +.Comment-SlackMention__date time { + color: inherit; +} + +/* Match real comment dates: same size (.Comment-date is 0.75em of the larger + * header font ≈ 13.5px) and the same right-hand inset. */ +.Comment-SlackMention__date { + font-size: 0.88em; + margin-right: 0.5em; +} + +/* If a marker is the last item in the thread, drop the trailing space and stop + * the line short like a trailing comment does. */ +.Comment-SlackMention:last-child { + padding-bottom: 0; +} + +.Comment-SlackMention:last-child:before { + bottom: 1rem; +} + +/* With the trailing padding gone on the last item, the node band must shrink + * to the content row too, or the logo drifts out of alignment with the text. */ +.Comment-SlackMention:last-child .Comment-SlackMention__node { + bottom: 0; +} + +/* Cap the line with the same rounded terminal dot a trailing comment gets + * (mirrors .Comment:last-child:after). */ +.Comment-SlackMention:last-child:after { + position: absolute; + content: ''; + background: #F1F2EE; + left: -43.5px; + bottom: calc( 1rem - 4.5px ); + width: 9px; + height: 9px; + z-index: -1; + border-radius: 50%; +} + +@media ( max-width: 600px ) { + .Comment-SlackMention:last-child:after { + left: -23px; + } + + .Comment-SlackMention:before { + left: -20px; + } + + .Comment-SlackMention__node { + left: -26px; + } +} diff --git a/src/components/Comment/SlackMention.js b/src/components/Comment/SlackMention.js new file mode 100644 index 00000000..3e3b0917 --- /dev/null +++ b/src/components/Comment/SlackMention.js @@ -0,0 +1,117 @@ +import PropTypes from 'prop-types'; +import React from 'react'; + +import FormattedDate from '../FormattedDate'; + +import './SlackMention.css'; + +/* + * A de-emphasised marker in the comment stream noting that the post was + * shared into a Slack discussion. Written by the Human bot as a + * `slack_mention` comment; rendered as a quiet, single-line row rather than a + * full comment — no avatar, actions, replies, or threading. The Slack glyph + * sits on the thread's vertical line as a node so the line is not broken. + */ + +function SlackLogo() { + return ( + + ); +} + +export default function SlackMention( { comment } ) { + const slack = comment.slack || {}; + const isAuto = slack.source === 'auto'; + // Only public channels are named; private channels, DMs, and group DMs are + // anonymised so an org-readable post never discloses where it was shared. + // Fail closed to 'unknown' (never infer 'public' from a channel name). + const visibility = slack.visibility || 'unknown'; + + const channelName = slack.channel_name + ? `#${ slack.channel_name.replace( /^#/, '' ) }` + : ''; + + // The channel is named only when public — gating on visibility (not source + // or mere name-presence) keeps it fail-closed and consistent with the + // server. `isAuto` only chooses the wording below. An auto marker that + // names its channel always has visibility 'public', so this still names it. + const namesChannel = channelName && visibility === 'public'; + + // The named channel element (linked when we have a permalink). Null for + // anonymised contexts. + const channelEl = namesChannel + ? ( slack.permalink ? ( + + { channelName } + + ) : ( + { channelName } + ) ) + : null; + + // Build the row text around the (optional) channel element without a + // Fragment: prefix + channelEl + suffix render as inline span children. + let prefix = 'Shared in Slack'; + let suffix = ''; + if ( isAuto && channelEl ) { + prefix = 'Auto-posted to '; + suffix = ' on Slack'; + } else if ( visibility === 'public' && channelEl ) { + prefix = 'Shared in '; + suffix = ' on Slack'; + } else if ( visibility === 'private' ) { + prefix = 'Shared in a private channel on Slack'; + } else if ( visibility === 'im' ) { + prefix = 'Shared in a DM on Slack'; + } else if ( visibility === 'mpim' ) { + prefix = 'Shared in a group DM on Slack'; + } + + return ( +
+ + + + + { prefix }{ channelEl }{ suffix } + + + + +
+ ); +} + +SlackMention.propTypes = { + comment: PropTypes.shape( { + id: PropTypes.number, + type: PropTypes.string, + date_gmt: PropTypes.string, + slack: PropTypes.shape( { + channel_name: PropTypes.string, + permalink: PropTypes.string, + source: PropTypes.string, + visibility: PropTypes.string, + } ), + } ).isRequired, +}; diff --git a/src/components/CommentsList.js b/src/components/CommentsList.js index f3bd3039..35e6d925 100644 --- a/src/components/CommentsList.js +++ b/src/components/CommentsList.js @@ -4,6 +4,7 @@ import React, { Component } from 'react'; import { Comment as CommentShape, Post } from '../shapes'; import Comment from './Comment'; +import SlackMention from './Comment/SlackMention'; import './CommentsList.css'; @@ -12,13 +13,23 @@ export default class CommentsList extends Component { return (
{ this.props.comments.slice().sort( ( a, b ) => a.date < b.date ? -1 : 1 ).map( comment => ( - + // "Shared in Slack" markers render as a quiet leaf row and + // must skip Comment's withUser/withSingle HOCs (they need + // neither an author fetch nor a single-comment load). + comment.type === 'slack_mention' ? ( + + ) : ( + + ) ) ) } { this.props.children }
diff --git a/src/components/Post/Comments.js b/src/components/Post/Comments.js index bdffc027..55e485e2 100644 --- a/src/components/Post/Comments.js +++ b/src/components/Post/Comments.js @@ -67,10 +67,18 @@ export default withArchive( props => { const { post } = props; - comments.registerArchive( post.id, { + // Distinct archive id + opt-in flag so only this stream view is widened + // to include slack_mention markers. Post/Summary shares this same + // `stream:${post.id}` archive (so the count stays consistent after a + // reply) but filters markers out of its count client-side. The + // recent-comments sidebar uses a separate author-scoped query and never + // opts in, so it stays markers-free. + const archiveId = `stream:${ post.id }`; + comments.registerArchive( archiveId, { post: post.id, per_page: 100, + slack_markers: 1, } ); - return post.id; + return archiveId; } )( PostComments ); diff --git a/src/components/Post/Summary.js b/src/components/Post/Summary.js index 352ebd84..563f6ee8 100644 --- a/src/components/Post/Summary.js +++ b/src/components/Post/Summary.js @@ -34,7 +34,12 @@ function Summary( props ) { const continueReadingMessage = `Continue reading (${ _n( 'word', 'words', post.content.count ) })`; - const people = comments ? uniq( comments.map( comment => comment.author ) ).filter( Boolean ) : []; + // The archive is shared with the comment stream and so includes + // `slack_mention` markers; exclude them from the count and avatar pile so + // they never read as human comments. + const realComments = comments ? comments.filter( comment => comment.type === 'comment' ) : []; + + const people = uniq( realComments.map( comment => comment.author ) ).filter( Boolean ); const peopleClass = [ 'Post-Summary-people', @@ -52,9 +57,9 @@ function Summary( props ) { ) } - { ( ! loadingComments && comments && comments.length > 0 ) && ( + { ( ! loadingComments && realComments.length > 0 ) && (
- { _n( 'comment', 'comments', comments.length ) } + { _n( 'comment', 'comments', realComments.length ) }
    { people.slice( 0, 8 ).map( person => (
  • @@ -78,11 +83,17 @@ export default withArchive( props => { const { post } = props; - comments.registerArchive( post.id, { + // Share the comment stream's widened archive (same id + slack_markers + // flag) so the count stays consistent with the stream after a reply and + // the post's comments are fetched once. Markers are filtered out of the + // count above. + const archiveId = `stream:${ post.id }`; + comments.registerArchive( archiveId, { post: post.id, per_page: 100, + slack_markers: 1, } ); - return post.id; + return archiveId; }, { mapDataToProps: data => ( { From dee5978ba2c316d463b7d5aa36ecd56cf5030b7b Mon Sep 17 00:00:00 2001 From: Tom Willmot Date: Thu, 4 Jun 2026 01:37:46 +0200 Subject: [PATCH 2/4] Remove preview screenshot (added to PR description instead) Co-Authored-By: Claude Opus 4.8 --- .github/slack-mention-preview.png | Bin 48450 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/slack-mention-preview.png diff --git a/.github/slack-mention-preview.png b/.github/slack-mention-preview.png deleted file mode 100644 index abf2e91628123f3f7ecbafe5202cb26e776e979e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48450 zcmeGEWl$VZ+ct{g?(Xgy+}&M*J0TDxxVt+H7Thhk1$PbZ1b26L3GB}Eyl>U1Q>W@w z?O$K*+WeYYGqbvTy4Sj|`w}8mm1U3-2oS))z>wu+CDp;epcKKtz-!?kfDu8&Z**W_ zXkc=ZVj3PbCAE=ThHWD)-XvQvIdwJb2Qkr*0$MH846EWr;WT#~7 znBWm(HA2wD;mAYK)IrS@|MQYiEJ5PmkT_f&HWuIi4C?>?8#F>@4CVaKx5z_U!V`%8 zGpl$+Ro?Lb3@#x={ofe8(nJoKKMu90IjB-*>?oGndcpz!V0s1rFtgvEkEUO%5RIzL;G)Y#tj1 ztKl`D5z`TMzE!>RJX)>kWfNgxV-xc_m~3|WiiwFa>oVAJY)vVCUci2zX zb~{~AS`O{#=%CH@!3d3ykAJ=F-uycn8XC&lan)C6Hq_VGchUK{v9)C)r3}Z&b0Bzg zVoDzl?d|^{t{|l>JUcgsiHW&w9uXTG8y$W7_~_oICoMgAJ0%h)uA%WK+kK-$Jhcx-Aadv&9PgzLnPx z4|X#JzxPv(H#$6>$6jg)f7REk4NpvHK8Q~;iimWNaxGRHB8C`R1`JmziA zqtaMd;1+(`z8R#Pgi8)>7I7upRs}~W3=duBWmiZ4Vw0GdDE#qu8xjK5LNz|t-`}qy zaNdB(($X_FHrCP6(xO9ReThkOBN5FIE=`O@9uglGSM>s_lwB$Oj$HYi&hgFf zEb=Ccu@vSh;n%Z=^HpX9*rMX%UftVK#+t9@=Jdetvd269iGr`Q-&do6e}tZn&f}u> zQ2q1geKQjilhcJN^ky+18a6gZ;CBA zsuHTXm~XB-m6iR%+Mz%+t$D8{dGj|KCt05D{O{d@cNf{c4l#dEqGU zoa^ZVv9J$bpv}_vPOp3GnS#*p)t@CLmz&+jqgV3_gHnjvycwIsFue2z@owiU`NAm< zZJ(o}qMB@1Y0TdgTiDA3r$r@|(=PAqdJ{cFvn$`;UoZ8xk%)NFXxg70r4+6g^zC~^ zqHf|u-j`~OMINU<F1{RrO-gbJ%((kvEOsCOdN^X5a|B;+OeC@Wiivf z3*MZ9G#rJP|H}ZJCM8*lk>9g98+vFgACSm!wx30lok0n2sJgHVUoVPI6|i5HuE zZ*QypvTF{3_R}Y{1St6Ao<}z414X&SuP}~j+D4vId$0>3WrepvCL;cC*Wu>AM^RRD zKdnMBNl2;-N#RI4pLU}4I4o?EzXowobwbg{-C zSa=oVuh53uI;#W$c?*cF9eLQwE-npSVe$TGA{VgVDfgM=roe*WLrM;Tdd{PZD%b6B>|YYPsv zdxwXVqA?!SifG#WBymDo8}?g=hl{gdrvhQg+cdq#9yF7{8a_MwenvX=04x!-1tKo% zAD$B-AtCb>+WkC9$;sIG_{){L9FLCQ8nARo!L>L!!NI{TcfB6Yjy)T+>m9bmc|C%H zg2IsS3vjCqTG^?op`rhP$NlZ{eRUwyAgMxS2vg+}WFfim?+2~fdf&S0A`rSC__mT6 zj&@fv5&G3qvKg~>>{Y57lh%CrI-G6I{33jxtW&#Y^Se#4c)#)<%z=b%^`urq7tUUV zis}5+;aYi{r6Kj3y1RPx-CE6SCqJk%Yu0oQJzuz_0U1w7uu}h3bU)~9Z6`P7>&|Ar zSty@pv3@ADx4R|&CnrnGZo60}cBF528*9JZ!5BE~H1_I#^tm7Y+<`)+#eR7u=ic|; z*qTO!4S#ykQt2^2!18~zftkd89bu&tOJihT`{qz1T^JU|Wv_P&V|}r6x2g3_;kkfA ze2SOZ})Jt9z_b>?H#W5 zj*En1J5#v=F4~d1McTUyqe61w&|&VVusi5x;Cwil-R^d-9!3Zq$4o$EMR#Q#6B!v9 z9WCL57aKqeE9A5nfi*Q8 zEzu*M$94rO8nz@D2lZUqCfK?-aj3~MsL1D}tRyEu%r|5S1IiYMSuX@a5v4`MM44_E zTg3gs0LoeQ{br06C`O#OG!gI$ms)~NaQ6}C`QH7L=^Q2c&33BnUcMbij~D9|F}=-6 zv?@3@Bon{yj^}3V@{pgm!%1sNJB2eMnm4=@ve=jAleLZL!vk7^P{cy7u|t+)c{WPR zM}C=)O_wqh;%D(X7Epx-{k?rTttlk9lI-uEtI%fE&ZMQKjV2gqoE0w2xCUk%K#~Me7WoD(`Mer{TL* zg6)lbKR@pAjz#GOHjJIy&2F5?WUh#@e~1{WBLwF5Mf>I8`-IKTh)m(_{i1Ouu6&82 zAi2kviEQ?|8x@hiMM&PzDl;5Yf`z$q_2FQCSiIbKSLEh8CJt6)7e4RLhXTYhA=uLt zY3@P%WJ|~r$lFYs#10pUJn*RX7a`?B)Y<&5;$~4~E$oIw2H-kUmh0oTrHsOFEUptc zr&XC5YIiS(BOt~x@wCapNfu4_Xsxfki77RSvr##Ir*t9lM$fWN$^GuReA;i(xO(+W|pS{EQL7v-X z^aJGI46;MY{%Jihd(YR_*U1mP6EvlpR^9#kUbmha_9M$keadE@ZhG~t@Ny-0vr8%z z?eF%ZqG9+s{If*@B<==J_tztdH8-i<8zpw57rGGx{5QHK_;=sNPrD$Sf=SXdD>t)J z0ztcYsFeMdit86r5xXI+)VFoOFIQ-_6czQY1_w(=Z2#*jrQIubO zBrIeRJWvC7`q~%Pu*i(4!e-1<4Y@6+$%d3vZPQq9+!htSVm^H#a&G5?{yF%A{_|c7 z+IQN@F-GzSND^53o)9zuF~JwB|UESoNT)9X}Nzumz)`4?T@55u#95poa+GGt^)O1DN@ND`(##L2l9R;Hb$M>bN zndPZ#DD~3!gVYCy_kd66k)l*HY9N^snY(;AQ#+aDjNAt%Je<~aXJpR7h;^P;A8-bk z^~NGV%r&z*-PUc-=1aiRi>CZx@_0GS_0PZt!Ps9f8hKA7M&R3FMEA{XrHg&njuYny zhV>qd!MCUh_A8iH7kpfEwg@$YL6Cfv=kj28Br6HjkS$aZewLgkzM@LU2DPF%9MYjq zn-Wb~Ew9OSH>L_JvNIBKTuv$lCfFK5NO4|lzA_^WjbGaQy3BMM{^hW2yo}oAGhE;> zezuVtw{G#3Z>l&tZ;r#B)cHlzNpEI=7M1L!NYLc>AdyCYB{fsWwbYHwW^uXR?d_~$ zeIHw}LffN>SgZ~9)@3oKLO`ql!-eK>TDKx8I^(K)%Z{iw>cOc58Oj1nmkVt~vMv?~ zzfxqs-zG;a$Z zXGiy!i?l!siPPVNL}$=#$HlDms-VkxMu0jO=J_DpOo}ceg+A%p}jyrDqCXdj;53 zw+<$nfsqcy61vxkxth^mmB{YSwK{*RT84tBVeF@KnkPh7BU7Vs*wkrz)xvGDDGs1( zkW%dpXH+AO%fau%H$^I{+?zX@TXlC6kZ0cB`_!MTd2oq)vlGpl1K>R0m%B2pA$Z539QO^+h><>Oc-Qy8kDCf{2>^7iGHh=$?)Ljd(=}UG z3X~YHLHuu9rdQY3%Z)aRmAdss-)JkN0IbbV0{wtVLdYrl$pwJXt`*nUL!>srkYa>q z-2D6maSQg{e_=?gDg)9I{c>i$_a@~ZR^qXLg(DEtfV|Mxa0S|*gI=FT*mfyR84yt< z4g7pq%-h@T6nc5eX_y%wFU zk)w$^g720`$hXZk{y9z-xmyv_zwpLBbHrsd${%urL$>jZPBMoz&AcvmFxmt4TVav` zQJ9SVYLkaCa&K^37}A?lUXE3-m0sqOnX%;Q`4J?e4mS-Hw0S%?7!3O1P{RrW>C>*i0ClXg4>&P|FCK=@^;k^Y7O4ok18QymC|{D>k-F@pby{?BJmNVxnM-Y zz<_8j<-~$Zp`oH80}GPbND{VER*_+(Zt(cTYeG)06M}oCZR|^3H53GmILUWN%(jE)B0P76O&gI8!LITl3j8&pc5WstJ3Dk;LIVgALOr zuRQJng7RqZiTOKo8qu$e-S?Tjs7&~4Mo#y}@%p$lzAx*RQrQokL*_$L4*UWf+%xD@ z11*A)-is0^hDqxJYm1oKW>h4WRe~m8!gqzwcO&z)YmDNdA_nPpN3!e#2E}i{`k)@E zz~Kto^hSDqkP5hcmzEBL^A&V@VZ;Of!qQ+hcMwKsH~kZ`gEHb-`2Nr5(b|ydAG~_9 z9!!@Vx5^48xZ%^)5YEKPeEV2`i1PK*#6}~ggddj7Zm_>_dGV7ue`^B40Q7~cFvbPY z+F`52u~W3xTD`w+enjQNcn^0DU*Fz)9Y*rfZ{GIx#tJB$kInS=+YuXDoOa*3j#iQ? zxI+(pRG@0kSoZb!9(Ntg>LXb^7S@n#800j7Ej+t-Tf}hj3)`+IHTPmMw!FMK2=yLK zq)Kmy?8jd)-uE__>FtSLrNv${P9c->lz*@2>q~U}SY}NW#Rn&)qh=mqT60wT6DlEI zysqCS{AxTGcT{u0GKuG}TT~O*&W%3*Nulr~lc)-MJ2q8v?XBjoo|?~_#0uqZX8B5B zw#aiFURhO0W`o8YMzKZX$z~@yXB^XyO+!)1VfFBRLgxnI8If3qWVzz-CFi^zrcMh% z0!Gj0HUP3Oi0lmxJ&e@2F%_eUpk1Kt6F{-KEX)9H5n5R2k5#-L+Q;LP+;S)5Fh9JB z9&CsSGILI*R3k6?@4k*c5v8RVf=Zu%DxyCg+Ces8qtRMcUcL1}T??`?`Y?K&n)zDN z3MRMZ_e*#I)mhdbqe1GEmJ2LiNPFWUc9#w@OgJI*IVx3rh;9C(K_rm@(YgZi1O$o( zN2oO1Ob^HD3FCSaG6=gge9J)CrCKfC?afzO^k@Ba%ZFSVZ}y>2@ zBjHdeGHweU(_flvHyJ@(nlVfjK{nSDjUVe!nvR761e`D6nCawXoNrmZ1Cf}_O>la! z`1R4@XxF4eg$7O|)F4A`R|B{%Qw8GMk5#*NrCbonugdz7UIr(kYG)V-=MHGy1 zL@n}>UY5nSbEo$xO-3RITb) zj2QFVH}!^U<~~ZEbZf-M!lbo7d0OXsPp79bhR4EwjAK%ucelSy2EKX7G<<)W^{qr} z@^1JtUJ;~2U&no0=i}z|#zYX+gDg?n0 z_5hI2Enq(LWh)kCaU9qLNPMn(A2uKIJnqj!f`VYiGxVvp?2H@0`uz;unFnQzZLLI; zO3OuSwR0>(w8lG+ioqz~$5^{Vj3L!*B(EOGZx#Pt^rl8)K>xPR)i(>qScE@sYw;PP@*F zAX+V&OSTf6PmH9iMOt$)1YFht}83?-CUtP~q}*K$0@=rmo33!+W_i&@k8$9f?M6z-)Ko( z71%6WW!b@K_lf(NZu=BXkZkq&9TF=~Y6)|~N-6al&Sc$6S^mm)b?=6GEg6zOE}A}9 z$ny-g_+N_Hs}AFL247b|KWW#L1fVpv$ge{h2N#+CKuO1O5gdrQz(+LQVn_{uKFa!d z?fzJ8b7dr8R8aR`VmU?LYH{56yhr1dQJ-GFo#sEzsZ$mjvLw0e{_xWl7&zegHu*!y z<#b^}5GNf?{jg_x2$OanK!eiF%rEqA1W0N$37^fwS<*1szfUbLJ_5*XVXToqFYBUUyZ+rJp{uD z$vSFn7FnKH|IvZQS0f`MtX)qOKBfGqZ8XBd8;%*v4j9MA#w7D4sH(DLc}cgW zWw4Q8x=?(tax(`upTde6OD@^Zj*&aXqI$KVogyYUxfqOkuGuF3Vh={@ zZh{s6sU&7b_gmHiT*i>*q8Q=}yz6|X0qYP4h<0U`eAUX&t>f^@<&@2d1j4(x9-M#< zj-f%@Qf0g=68OC!9zw$D$3P@P2t2e#;r-+(zFszCk7aRb~PP0quuZKtm{}URxphck_?v&D)4U9k@?KNX($gIp?5*_W__HpNFOXnotG~K8M!TeNtwM>P^bAO^Uobbsxw zIZriK8ds6v!jbm3?#R&;GqCZ9F6F;oMYnt%&uqcqt8PnQh*@!w30!?o6nK;`ps`)) zlkL1n_@&`=ur)IA!65LLAA$(Q?g&bN|B*lYD8o3lK2To+DM%ncx;DGn;_z{{BW5c9WLYtIH$*& zuiD48*2qeL_EUnlF+a%dP0m|x z;C2VhzXrA*$jQke;xMU(VU8+^V{zC~%sy^-*D$WaR~P8kThL3utpkKa$^+@5e1Y6k zQyZr19|?dC3ru5UBeV8Lux6y8NGI+!|wmIc(n9b@mrLnXE!1^anwR*-Ct?GeaLjHJd|hF44$_MgBca|@#>mS0_#B(RNc#{$JGZ80 z5%G~zznS@Q)tDota>7l~tkc|mW8j0tWB2-37L+m@s)pi3o zc`}t~{T`A7RBZ61DcM$$Nf0NyPP1LMx$n8qeNjo5H=1Wyui6+^bqJaa6@1ZMT99b~ zUi5G3eA2JkLBl~8U_0d!2n0Q;#(ug!jc_x(%Ft#Dc%bXAEf!n5@qa+m+!slxx}wQc zMM$~PW{)_`tK;z4k{)!0Q#t&0R8&+)lYsy$RByIMLPE!ztQv6OGB;O}uX-s7(j9LB z7auMOma)2*cbyyo|ALNd;1H;IQs5l+2Wf3zJt8iSl*1zCHz`tPp=j_)TrBi_!pvsZaXoNcQtEuiFAMf>Na;@<~p;1vi5SP_txKC1%!hu72&4X$L3+| zEU_Bpz^8C;|Hr^L@ zzU!IhO(tirnkvL&5`aVu`12Xuw*01jP(zbg9^>R3Xc=z%RcKf0F#pR1Ow)r?;U_|W zkH7;hodSFcKHHa&UH*fE87rJdK=zXt8%r!LrF*jc!7&~Mt%<<_k1(OOXSw_{_#~ow z7*3AU@)hZB)N248XH<|PLMBpB;```X9s6!W2}?{fAT&jqyWY=h3yd~pWf2_@{)|B^ z_$&=S+lnF*t^pbArl=TGzWGNW0h2c`nlF)Zeb(t?ZLj5Lc=q(!j5czO=g3QxC~QG| zwbtC^_~Pd%C;?tcl-T5lfbnw^l!Xxv=*8b^q2bzus< z`O&wJUFDf=u^APdZwM9pNF{7|B?hVtGpLSjjy)N`W9KQ=g7bemu%bv|Fo% z0c|H||He{^(8quay9Rly1IRZ*K2D?)$G#8Z>A-9*{q;y9b3uW`;_3PN!p%I7&m?hd zv;YO$0;Ol)e$G9#XF;&eHtq|{m)!t{FmzpY#v7acd=Ap;vx1(E=!FR)bHUQCHJLuj zKlZ-`> zNcl;_VmyspOJ*uZsHW|Nq2zVZIkBxg;NrF1m-@<`m&Vr(Y68S*5YG?d$UVt8eY4V& z6#F=e2Zf%)(5-nMW>Yv3nSHhkkU0i)5Ol`tD8_1sEH7F7gIv25Lrusw$A`1!(X`yW z_vkFIR8E?=iy1p%Ju-TgFKME^%(4r*oHM2X% zfIN4(IALzhHDukv&A2=ZjY4Yg@jX|=@2vlI+8BAGS~e;y9;n0 zNM?i$PXRGpne%32NKmDem&ZCuR^Se01dF^sNg&wyh}xBkk(z}V8+jd5);p;V!K>5pHuYWW4-;;d3O_{b^{m5fvrMWz z(E=p>T&K7DErLe^<)1=lGXCtZixOx|iPc|J-vIALFs`IObZFrrdJRr#T$;cqo1ZGV zC{wWy>jgr34VE)NXUj@@-$3&B*nAW?8l>kScR>oK?0)m%(8 z0{wp%7t`Zck!Wp;^R-lw7H!H9h!p!_Zbl-9_pM(M6L~qYK@c5{Wq+3{WbBCWXPRwP zcO7zxBcJC)l$4nk$(K}KQ_R`Y6~e>PX_ua-PGzLCNLHHlRi(AAcd&K+t84I%L;l{K z9SN>ML5D8&1(1jV0`M81YVB9srsbW>6&BGrZO717f_P1LVRt}5-7ay3?;Eq6NLjBZd+TNv{+^4FBaNc$P6oHfP(pN z(fl(Z__n*BEnQCvT*~6-V6D>*&_8KmjD7$zC}0{WHbS|EOx|%x;+W)>Ads-^h!cJp z&VnIeeRbdT)gA@PgyUQ~vMrNA)0fyPqfUa0CF^G;cydq=He;ay8pc26Xf5tV^fNag zu6CSm!w`Qm33zy5==Udw7Rt^(NKz4AZnDi}r)e!`7u)$KX4$TAVoiVQ8~?;u4QK$& zhHV<7)w9>_5Sp=ZaWVriD^~lX$p;1xS5xw%P;^AhQ?)_AOXqrS1!muAsPs`0zM4DZrrsTQD8G zoCBP*$c!~O?%DHUZk!>#SyoR!st8gvcoSk48=w`>^Qo)au0Il^VvtC2+K$3$irh_0 z06w0`*x1l(Dv}HWss^DAOQE^tAGBW1&wXypZ$itF0K5`Tzb{N0@yzpa!LS|(BIztX zrmRU((m=3zs^X)6I&7H-c+n$8FjaxV@Ni$Y?(wa`x&tP~A(5e~cOmkX<5lnlK2WH? zf91rW$Po5L+rr3KE*z$L(YKRg)axU&zu#;HqxMn9aAS@R38vTsq|PXFON{s9MRM1T^T9aa12DsY z5VuAmkz-cAB0KG(wJ?FSlmkPBd&{{!oEl0(;rN?jQ{5YkRKE@Ah!~jAj5-)FTa4L+ z@aH*`JC-m_Nf+BN0#H?$lITPf(-?SByixyjxps1*z=feXu z3S4xC8ZoYS7J@4*k%PCH2W4#Lt!yFBo3H1gLSMF8R_IHzoYq|z=h@-UO4SN~DrYma zkxD1FruV$h4E!+>L^^~2PN$}q{<_AFPM#t7q%p2AEiJln6e-D^x#lvb1SePV64K>+)O0rDY;Y9jU2Svo);<)K{W=tl|$GvHq*O<+jKp?qQ~ghx1&@gkaQ{LISv$qkJai!0DT-ws~x> zYU~|u(ht=c9wh4`&$*}}G$&|uJZA)O=PVigvUxyYKM>&n6@AmhyTAzzCfxd7aH}5EMO;t{(U+NIQ+~~{(4OC%Xv4q4u0A@s7N|>ov9LOQA8K$lEOF#Q~#oAaZ z_FzlyBG5a+1KL_{+hutAKerwj^s;>ZgRqsGvgrS3u1M320{26w#?E(4h|wQApOYlI1!1XSm=s_dX32*(%%jA=Kh3ys@PBm?16 zFknNVG6$H}QO>O#z}9B9dBFp7U~g(Ze{SGk9pK0DEo!#Yf~f~qBhwV+9w$?Ak11&A zA@a|bWXNY6JD3szKw5&zSL{e+CZ@iZDIun7M4j(YSv&Pe-4#6;VN~t9>O(|-n^z#J z*tYnEn1<+4Zr^b&Jp@arf?FP2!(?jy=N}as&!19CxAy7d?NG#(azDSoS&yf)YA(7E z*UKrQVVuG?@kAD-AxgQ@V4pKjyq<3JF*k-(!}BYj;$8(Sod5It0jMl}ij;``JYh*} zQo6w17WZmJqORG%f_MZB*?Dn^PUi$foO?At-PLO^NFwm0;a;7wIwZO7E|Ih~irM61 zMfhpI>po9j7>nFj&f|8J*Bvx}- zpN~aTHx%?t(p%^)bO)3Y-iO+tWw7R&V&B_Ou~F16F>oA6BtsHg)2j5fq8dv0!ah&` zD&MydHzef3Lto?Url_1<)An<@FWAeP{qns#n(FEWCqgO5V##czr7Gb}V}g9K{7MbJ z-CRm~dKr880|F#dp5MP$&OLv#My24Rr>Bn>;>y&WqUYn|b4c%D!z3bFE0RlMAT?Yo zE|pMM$CyN?$*7Q|Lr#spT&jScRe0pO{2~dDfT)0hii?F^7B9U~>sax<%;_cym6%a5 zOC!R#Op2r1Ld`FS(=LLLh+oTrvlULBjApdi6VrHTZF*}A`nbm52YsaSzzF)q1sjz_EREiHg^`O_bF%b zSi5>6s|_APM!ku=v{Kd4@!0AC=hP~dxILJdG2&CQKY@>cArN_$Bd`pkFWk$)PSJQ=2L=kDI* zfiRb(V*mR_!S)ud_`9DS{yMKnHqZ3s*Pu?Jy7%9S#J@vJ{qGrR{r?=~ti_r=#-~rAHqB3n`kyb2no@=T_vIHx zI;a2I-^rVTDE`kItey9d`(G~L|G?Axe@`g{?f>*g=>H-2r~_zzfy}{wmhBR>^#6@j z+o#Qird5L5m7dnjUv-s&6S%7nHQbjx;{DU!xPjf%J$KOdMY=I(+OPC~!ZBHEoH1Cl zs=SyyUytK}=s}4)va~7S@y&C%yJ>#eTq|+3k^1lE!53+Tw?3~`g01d8Clz4>gcRmSl#Gmw)YKCGGjAOi^3V1RS|B#Tk>ANL7f|N4)f4FZ`Tz|L-S~a^ zm*ehW^}-wAKGm+$3+)3qn&m2e9&=oi8jIA4D)jc|W5rQ050|Ta#xCIF=qN@)7=lxV5gEKNd&dG|3gaoKXlq)^bu>`u@Vm9>O zqCRWU#wWeOP!3>wc(?-q)@%sn$$EEZhu`IB`lk}%5UuuSb@iasCm=f#2WVjK(%-+I z1%N|t{c>@RC@Lz-7I5D|^FRW+zgTUf3azTGU1#SAz#@s5NyO&_Rbh%*xe1V|D?D-k zo55Hb8$-m=t1;>{sq$=LW=a8k@CvN}U#gVBsm29ewb>gC>yEcomZlwI z%?mI^QA{qpwlokhh!}>y&E88 z-HmXZMhdPhmC2~%3BcF$r1{`ipq|s?gG~F2wbuIG7YEhJG`9Y?KS0m64VW;yjtZhD z`A?aK?oAWAUoYB$JGY>a2LjrxaJma(_qFYYRm6}1fy)jv;gIhrTwH!{9*@?e$iOoR zJX$%+7Qq@%K-$Rb?ugCpOox<|^f6Pyz4Q4XQYXRzlPAxFcSR*;Z{e`z5YRsF|$|Sdbo&5)0Deotc?=ArOBT zduu`EqNSm+4xQU7jZ-&u_1ZpZD9}7s4&pAsUy&|}cMF}An+AM1t9$yv6%ryLXxyKc zCw2(qcJ%E#sd=seZUauDX|M~n-Ki~*Kl1o{9-LL$c(#DHctWi!OZ(X`a7dW6ZbQIG zIYjEu#MrZVdsG<509-SKSf*4oPCnSF`D~FKkaN=r!|N$TMugpG?S8vym{aDkzxj=8 zESo#EP^I6mLTk9P#hWSQ&5Z!G_koKT^3pZk4%>Y|?1`apY!J{0e`kcFi}=2{gxK8N z-1t3h!=B01pcaF#metn&*&3*>?zoZXgBrkgfn$iNAse>?IxS756yUHx49eW4Fbz-# zkf>#4Wjz2TSq&LV9XROXfBf~7*38yui}K~#X2Ne*60Kpt5eMO;jy;~POiN|{K=C82 zI9+Y^DmVYG2{!p*T?;r+C&vdmA_;$OD2_8L=x zm?HvNFv?J1mjw8c6%3;g@7?P5i&;`?G&wl(2e3;$UgF|^sU%%2lz>(TfCrGne<$N* z#U?KjuCtn>q3=1u1wwSWzl&3iR;mpJ%)ep=4r$f+1KSfaAvc`_?V8gVv)8mTkUDeq z4*@iu5g#}tSzOAJqnkdrv6&{5u%td@p=@S@rFvk2A*wO#FZBk#_wy?*K>9-L zcM%irGQG&hTfIRp(7!^6WC6B(_fViAK7r7f`Cf|FepldAGcEpi&*6EAhTN$}fjs zIRYNuZB}Iw3JM6#-%`#Zdow}LUkbqN(N@S>^r!X6r`L)VaCx(cU=cH>pi3h8w`c<> z5r(An!#cM&;%fz}!L(GRISppHdpr*sO4vJe6;fF=2L%Stj<5Fydx)b+QJ~APpMbc9 zgVGQ5mS&GyhhFsFO~6Uh)Mq6vC1q;wkz{&U4(#O~uG=IMf3F3;XqS>8T*&BzHf5O3XL>D*POD6%=db#+}i>k%thl@+vAa_(L~e&+z@A|G*NH#2^+8oMVfj z`-cFe5ourCR)-~-MCCCHc)@-7#chIxydUz&f7`6zR0Yt*(eYR-quZbM%Me8J}$XvUUj&njdug5o@VwO4LY?2)1 z(mS>~&##TwvOEH8VwNOz!R@3IP~U$5d$E3{5%R`gk0+oM+uVxF)dZG6kf1nIh9>{c z43Y-d8vB=X(T8$2o*Ew?2jZoDInxSPc>N8b6=2Fi+x_7JT6m0PO*R|wC$%2eUzS4Q zzLlK>IHy)KeOkCLtbXlqJNW}|>R2xVi3_U@Rt2{6=fJXs@CuULi$yCN%o&rmlp%a_ z-K;CEl!4+me+9hg7~Ctyy;$Yum;PgCu~(2Y+v9#HGjsxEEcisBqVzmaEQ_HBu)Bar z9x-FEdyEFmj=Uu3kOyW(COS^(rY#RFc=db9j_(y<#T{W3W9_Xt1xU}JxeC1p(wNES zO+S4jRESYVtx8dF`<6_*wvn5ke~3zCB<7Du`Y(er4e%eqHinku{i%i6984WqRKKLu zm-bR>F*{KDz8sf;{vJ50Oy&p?`b~dU=KI}2#4dUPu7O=M@=xMF>Dhpcs|vsxI)iPKAi+3pjEB}s`=CXGO^&>Y&W zJEl71R#PzI$nh%{g(QN7V*zY~&Py%*Zf_uqUb7u>4h=K*bVtvp9^;ZeQIX6Sv?VP) z1zvipA79BAfTYjgg|LdrYkiNhD~8m0qQ^K3gB2f6FAvsswr4?bqoOgEcBC5S5)yp_ zHv=f&>j{%2RFOB;QOi}K$E`n%Cx-5g8`~tu)f=W=Bq&YkOT9EBL5*dws}&agTkmhT zDkXgIS3ms$&Wb5A&GeVfI4?3uWZCDE3}$;|f>eACi!@)7m)?N69Uu(Bk!fsUavHI? zi4+4yG<+P-yJVZ|a}!xEa4?yD%K0UlzvJWmbrf=%Vhd^lVF;;G$VY!Y;a_IC_xHc_ z6tmR;SFZnit9e5~#ep1QD#)V3obOFey>vNt8|G=GHd%Mu(m~)K@Ig};<#6!)m-46w zw}y#=*gUCCOvk*kEG1Ys)7h+a;A}C#xvsIki_k=*BPzwxZbq0SUg)NSl5tozT@bKv z7{tiR>$qGGe(Y?D1p<>CJiXSaVm?S0ctG$368u1Cn_$z#VjKZhYY|A8pQb(LqUo!m zxhMTE7cg6*LfRqU=5~JalzcH_fl@HK3vV3!dycB-o(6h7z=W&g&sLms%)rTe^-|_V zQ(mt5u|RmgFAx(2$j`x#_s4D^k^yViOVG^GCVwzqP0*>j2Ew_5NliIiv8k!jHHP7c z__Uj`n-LNgrq?A-NM~ny-fOylca@i75} z+?dTH(&5jmynd?ea)S^F=^P-VyU|i6qFK8lR#DES8h?>Tqw35?Z+8tL5>C}4-SfE| zp&6ZAu?%NC$rGMh#!UiDBX1@;!qR_ZAXJ^;L=D6OZZ3idm7Xm+X!2pkRP5~P?c#vQ zX=XdzR~WNi5Go#j2Q06opRkO1$1^B+mSL#EPojkQK-CFcg_##!4J_|VamtWyA2ew$ zJ^7ahH;`^5r<|FVg$w~gAeww%Nww9#vGM`(gG0g$3*f}bYx=bNRT<+g=t#(Z@%yTIAtpNqgXU``?FEVxAu?rk0CjG27IA8Px>x8tMh}4#fF<^({YuX7~@2Qg1bGhZ5-;o zk@T#e58t>hV$u@;)KCCB;Dn1FeT0+x^;A1Z1K0pLOFacyWxP-=*jsU#FhU*c(dk3d-$nceL<;ZcoltgaZ}15_~R+kaWq08U(3ld3mt+0WJoHtu^Se` zh>I<{za8`!!0h|rGA^Z~&pyeHGLaGD0a#8b?S1BDjy#T%%`OCxP(6+nWSmi=$X_fI z<>9(er`;k zE%?lPgP>=n^S9Ywjfw+OxiSi=6;h7wXBGhB9i24@V3bQ>Q0etB=y}g!t8q`}IX#ZY zihC3`kG+dfdI`l4Kz!*Aa);yTg)t)w*G5{%DL|=-(U|F~FpL`qj2F_MzO6&6R4Q(m zflfr9)3jCH{^c-gwYQwK1~Z+yzzs6l3o*Z=sJyHhd+sN%7zC$77h+DO-I0ki7Ip_w zlUrD3a@*RqY{S?l_DKh7{smw?egB&{2w?6b8S#>4nwY3>Zo#|CE)-X;t$HJ-gYLFEmOScbgyY+5}=t5t>m%Z=6nCfc*Az zNV4zqYPY{X9DJleuiK-+9$f7gS4gVknLO}4?f_q;-KFCOgMY@W;@$YqCfWUpSl39X zol<*82DrSXytC!5W?;u8d7E@CC@GVIE#bd4!;A6gL69ps8(G zyathwx9-%U@6sMah>=JLQye1cU`+mUNtdqNQ#0J?GsCRmynhbzG251aQ2AteN4ZWqQ0t4mKw zAFCaAp?Kgp*h+cq7EG}92+d7`VGLW9AeQ98hfjA;vu4xv+l3p}(3_eY_Bk^0h zzZTah?C#?WC$bg<$?QHumZSr$!HaW1qB74p%Nm>K$TNjmA{ffHO1JG(UL@Lfpcn9; z0QOHjAXwuXq%3!cynk7tVim~cpwd={|CuY#{Z+QJPYhU_SPog%D-}sYbEt<95GxTRv}hggej76T{;+a{F>dz(rEia>qMV2hL@0sSQQz z8k{*e3AoXA?j!)DFcHm^SnQ^pM+_pBx0H8jx47vfks3N z(MR7Sn_O++Frz#8oR#(;IE!Q{qZt!5q7qzMW~37=Q>pg`v?l630;E>#ixOrXNDz{0)?Je*gSb3$x}D8Zr>B@mir|N8p0D{3f5>Wdbhc{Fg|{7j zLes-jl$r}Uq;ga4>suWC_nWQtW@{43Slt*&?E7$9&8CsU`0jIYA~8*#1YcSsZXcg1 zuH0Y)~Yy%_b~dV8<7qJ=G)$^QPngUM8Zb7|qv%0dF~+bXe*yFqux zuQH>WZj?2vr+8{ADjwg|W`adc1ErN`dT5cUzgq>0wr4; z#qOIWb&)`X!~5FEN(XN~XJ6Pjjg^`ciDaRBMF)tML0!>btOyaVEV1~woWE?ScLl6> za<R6Ih{;LeEI71OtyZYphqc+!s?Xa*I&<>ij zGg}yZno2)H4e%>}Qq|23>MOkj|zX0=n`n|l-EPmSeXDb#*e=CX_9 zhLquLuwx{T$Wf~tF16MTu;@lm_Oa~<;=Fqw&OsZq{EF(uCB-rs%i5Hd(7U0WH>yKb zL?2)ZykFJ`sz`2!JbeP_q_;Y2;~tKk*HlT6msvyzvO5soS9k7@X<6ZUD*xp*!YNW) z5H*0(ToP5@9+j!c0#&*Kjp3SMh~9h3BhZeY*$(-&`A}ChvRn3I<@q<2L^eThSc4&r z;W3qWsn@h3G-r~NlP4%9 zr#;(=#G;pkPuV}F7MXl{(0cq)WcBF!C2%7u6bzlr$-{}N*#(fO4T*qjDCB&9P20Fr zC)ehQH4Yjc6{reCe?MAiD&^{43LHscO2~DpJUVv;W;;^;4bWnJVv*+Oe|VyI=VVe+*soBm|YL8$}b|`1qWh{M2njUmA@g$>4`(J-*)tj7o@maKZ?v@3<4QfiZe=if&uW4Nt5vqpzdpYr-%Is*6(2S2NOH!SY!B1uDco%4*L)Fv8h2Qd41}<6 zi(Ml6G~*EMOd)C)thtA$UdlqoEiU^i*T27&uEgeaBbtpTQ|+gv{oG|95|TQKd|KA! zR4ZdL`9Ay**_x_rtP2A@35DF~V0 zjhYlchrX{2z523O|G;>vX+m604|S0~^M*)g$YZ&>wtXW1jRMhSBHq5?ylZGLi0|0w zhxmlI(V%JO0o%kL$Yve`#0gLE+4_{;$ZynEB3>YH`w($=oXWk-aUu-@`>|07IBKYztV4trk?4D1=E+g*2$P@gZum4+8lSq$XTGTxUPC; zV4}ZhfNL&ts{^RBZL2`tmp*1m_?^sR-MdWO(|$&*aE~ftXqvXFG^(#w}!nhiOGRoValD%-h^Lzo!|> zVg$C47skjJ<0_3s*W=%bM^|j`jrv537&v?n&oVJDmMKfDG-A*~=6TS|1KiG1pe0iq z0sk8iwT<$OYSts12rHq+{TIpkph#t+6usD3I**cz0l5?ta9cAssM@z`d%GWm%2sEu zlnLs|1AU0-v35l&k7Xha)L#PgGJG!H3<7I`o^ns|w0CK8wXRbUDNG;X+a~*cPmtYD zG!+sa{Wxgps12>dPG&V6nYPhTRrEz+cBnl&6z4leST`*EpP7$;5|3X1~Du0X+s%` zO&Ny@o=a1k%K+aUg}!rOIM+vLHIYGYF6O?IX>Z(eyY>2UNyEW%`%^^s<-fIn3tW-q zwUrmX3wG&%&eR~^l(RC;BqlX|04kuVo}h`P>m#GLj?qU+wTSucNt4aqeXbmhgrzhl zP`%cyr>)q>e-CPUQ^zn+mTfAMh@&o|@lgRzb8x0%UN&-x?w(G_D2ulM;WtT-XeK`|h@Os-DK#m^n$AE@cP|CS9rGu%wMiGqKBH(2IP;}u^HuICv*q5<||Z=;i(5{8Pk z4Q9a=d~#>^Kquqc|Az_xwQQGDHga9}Cc(&*G;3v8cF(>8lW7Pr;b1TH*%~Hb6CK6L zd6i(BRq+v**_>rB2iV(5f$mc|%jZbP@7>7wf*5YBbUsKq*zXGWKG$To7>=*KC}Tp* zS^yXH^SfU+{B8WS13!!SzlkD1WGZ1#7EUJ zYm3^{gr*S*5Xrz_EKmj9okwYJ6hCxmp?`hYgTskCAMcO)UM#Ys;7q*sjA)!C4^46) zQ7okSw~m5Iw?OQBRYhyiqO<}3NTw{bv_iEK6Ie2+Pv=m3==X2wn^HDEf3YYu3IN?f z-S4t5`jO<9!iH#E5uO!yml!rX5V)A$l)tb1arosije;(684l^I7Bo*!PxFx9-#<(h zctg>1r}T{j@i+TFUa%Tq=lldNZn2?VU8Zg5-bxg|)ORe((z?|c(TeV3xn!>>R>^n+ zN(o6<+;?;R@{Fq1elyCOT8e<*^#!B&ux^d-_OuVbv=yOb6X?gvm&1P)jf>;EKVJqx z-{Ry@$~_c~qtzjs`=;tDa`Vh#mRQKYzY=vEH4_!X&Q#shyy<0k>X#|}Aw~tCaD9)q z>p#Fh0Ycn>!yW#CaGij9#AB{ZGt`KohRFqQ`R3Nx%Im1#vA0#cy{DkUwd>~Th->7l z*i)iM?7#;PaFLW|zTb`e1+0VpKS}*q2DSR)fUufBz$+vB3)EQ>XnmSKAV()%Tcczm z%o0eR?^sFRBi+LY1wt8U=5!*3HX_Z=U+_-Ik_A`EGCoiXIq80V3iCmAdEmw3^qamO z;c?)zoXziPXq=woGN(kG;)n2*=49sGT{q zCkpqb5L6kFi4DFT*4s?k!F}Nk` z_8h3vY#d!{jkdx6MnhJ2J+Q7kgH~mChf>x(gBH)YaBR6J4XQ0|)}m~)&w#Jxt$q(j z(_lo%fA=l7$g+DM&>>gjWYcJ4!>CNn%UzEwSRVGd?am{1YId*R*A$`JaDtcsptrfF z0MHP}JbWFH&%F06$Q4t5t|Y>sDu!r&i=d)`waRs(@(ad`VY>aXs)`b4X!-+D9yYWx z29$3wKp~pZti+DGBi6NjI}KRRe6BW!TfzI5ocHH8td?B&KjHttwXTHFr2(wbKZkmk z{s)!ID?hb9n9YOQrJd(`jRM-~@qcxxjS{cpLgFRFk zPk@8j=XU2rGSS-TbdjJOq32|R{zyPt#x5ngJ}ZbG)DV)PAw-5BK`JH;KlA0q@TJT! zkU70=9OD+?k!>brhUINfHjZeBd_~Exsubx)iNqo{QDS~NXR#g#4AYeK2nAX1LroNM zUy6(mQRKVxr0v3M-$VW1-PJt*ez5INI(IY}`s@}w(c#o&GK^p)vjG3bbyCt~1e1W` zud|tbZv{)?>jvR@VP2qB(JXmdrt93gzP>Ib!G>s_y6ECM_|ZK#P>p&kUkVWguX+&Y zL>Mhk4Mos>O#Fo$_&W8C8FAR(s*x5y{&hU75;{bgfJ-%ege*g@fuJ7H+226n8idCC z!jg8ye=|Pe8KDb`0SYj!=(O!dsEDD)Xcm6XSwE7os+NSX}!I^nE4sK zo9uQ@xR?&0smeYh55r?M8T)m4U0Bz)fhF3&nLhTrofY4+FymOD?Cv`2E17#3aKP*Y z5Xu*mOlLsYdJj?inR-ttBnU8W$jsLp8}Y9*#N@_H^mjmp2Fzl%)AEe}&4;?IM+f3{ zzbaLu;q`*xcw@?o3iEThHiPL6sJaeKdwsolKHXQyR!?@)_0!eBsGi`C8u*?S_j&{- zf0FnnDN4ZE7X!KLRPzgO#LR(N17(4LR)+98kJAeKD zZDofm7`j?`g{Ab3Was5ki)JL@85NIOSMjaN$@Iq*$R^)a9(lflhKKo zP#d4SU1MV-qgdQbk_Zqo^0}kBe+8aW&H~tw6Ye9dFStL&G{vg_IaYLk5L9u)f-V14 zR8)YDZq(WH+%=BSY?Q|+6f(aC9)}7;xTmwe^7`vGJT#@3tj{as5=Rsv1IX&)Brg(oT0nR+-?Og`*l}C` zAh7>Gt-+|e$~r1Ze|J!7qZDxkJ&9f5x_ineBqSsuApwq{l9K+_RcS`X5&(|?vhD2b zj2bYQi*FA>A94|Rk^h&6Jqx$g`W_7!qi-OM6Nvyg*M^OZOlW$#frkg*s5u%F8tX9g zJB0d<1OBD@S#U#|hDXN6o`V`TXc=#U z$`h!ZuG@f2=@Ms4!^)}GQf^J=3Un}z}ed~EJGKGx_Uut&r0_nx7@6xloySsmN z1J-_bn#mWyBBu+mhzkn~5Me+!K?HQjSu@AS)!le_{)8fM#^}o;prf)rB(g=_Z+=6y zAqE)0N>kLRn3%^IyzBXYewF=87td#XP}&N*UXKBluuGt?0?!Hw8CigzzrYHFAK+dh z7!Qk1ZqsO)a>VULJ6B8_zNYFA(&83oJ*?W{H65Zlo!XwCpZ|Fh@>sY3Z!O^cH(;~$ zjrgO>hFQ%pQOMVFz~RSWNg z{ve>b$Bs9DHmWRLFp6!yvQiYTI-2YRd3e*Q+_oem!36QBc16VZYi60TDpkr=Z|NKmSAntjna6^15o!iN)Q zOT0CHJvjh~!wZ0u{EL(KEBaS$ega4@fSPVV7aldNTjm!VC+EG<@ynM^KpbXhm~m;+ zC%5;IHK}8H8L-;VRyxSltZi%n%o{(4giNr*_ECNkgjKBcb`Hcrz@LjijB$ux$z@#m z3dxII*bWC*92oj(N&UM$8nB0?QZ4{C^%d}gAi|iWo8*O!%ec@+&j1;Hq&0vQv-0v1 z>I&@n1q2!%393I;R18#9bZ~G0@bbpSMu9JgW9s>PMPc(Ya|ILpcq}|TkE1UwO$c}m z%LO#Dn+P(R8Zre)Lcz-qKJ7sVNvOep)xb5eKidg z*$lKpf65So)idyfYopTyOWVJkHk3e{lY(9$u?sxEI(qct_TR%x8F|QnS_IP9zLVwL z$S;sB_>4UupH7pOO5xGhDm;WTSlX%pDulwj-kDfRmnxI?zsI9Zdr zoFH6=38@6Az?8nPwxhEHk4D@Z6l18cjg_A+%C;AnYUz!NXcc;PKo4O3$;5cTVh+r4 z2nH4xQh}FRf1kkk*~={|fJp&89H0;7mzjZ%ik*p@8!rT;hF?J;y*m`4-yEQK!fq=a ze&5Vz5eYJumrX~gaNjZr?5;74@~0;Nd)1^cZ{t2sqIzRFIV8qWfS7{7wEj^uE=dtB z=9`c5-l|l*e#Xc^S$qSm2EkhS_hc*S0e{}TSN6R_r8_PZPmT|qqFOu{Yu*R5Dwnaa zB-@B-6r_QHb~IM{ION~Rh4f;W_54^#BH+=+RXdDg%nsL6K|R3-re$QbIc_QrQ}WmZ zCEzTExqA|crPyfjw5pc~xUY2wTffb&YdDyRYw5zq!A=SFzm zi-li@l_a}N89o5r9s&YwTLcaIX;exub)f9co2T~n^2}EFMeg1d4g|`h!w=)#F3!&v zTb^MbH-lFO@K2qJ&Fv`a%5x)Gu2}SOz0{Jq%4&w}FW}r3v+9imXx86X-&b;?Faa38 zduj)Uo=i@FmISFWew*TgSX%KZZr?+}uywJR;sHlW8n^8sJv3Eo$ zzHLf=e!hAWvRNd5xPqY-(80}1e@@2b`aLuLefCz#x0d6g2mK*%t^WzoJH3D3Gnz8> zr`Jv3dI19*%KMcq(2l1-Cp{yB3|?p`Colg32bu}TYvGGtW|eo7DZRc)52J_TVXY`y z4%Ja{_FGgZ)~Gg>6O(T8_|}pR4h||RDHYS|jC!oaD^uk9*Lb&|eOfZ4A3Iw`#+M8& zNc#6s7nC_L+>!*QsQeEU--UsjMm8)mDvBoI0bW>=CZC+*AZ<=}w@kkm`<2_;HmuM#@_|Z|{-fdq{?U0B?}Y#P5S^`i zkPT?8NzD-Xkmsfi8m#f5UYG}0B0VR5o5^kVcr^)XsL}Ks%|D%?Cx4nx zdQgVqh=qfrYF>GQIRIl?fPY+UX0$}JJ$h=Lq9%aT!SV8P<}t^AKV$+r;q^%hh)f@` zsa**u6J&k{dsCM&DuoJp(Bh$dtwV=`FD?D#{U{x>d$nquPT$nN5grM|=eJ~`F{#Vr{#bx0W+dcSk$a1;4i1cGL8@FQQm1s&^OEVoJt zrG5OyL-0~l!hOb&_-&?%9qd4GrMNr&duL6%ms2JS0Eq`2PNY|BNXuIwZcFnRJ~J}| zZg}VgcsI(VdxWsplE23K@`FZRGgHs8BXPb-7PGtXr|_V$u#q+&)TH&SkL3$-p!1DN zjfjY7c=(n0|6amwhp;TtVyWS*Wy0-lB~RaI`7m7ANJkrDbh zrI?BZnQOHM?>xgx-9$5fADsen{kDsD60QVp>s5I8y&enm$Uog%u~Qss0;Up&yJd{_p$)P9 z_O_aou{X*}LMqw_0k5;NUe;L`70b)Z6Fi#Mo9=zXNpGuM@iJ#>XKwVdY`Wj^qLAOo zvKn_gbWVDj|5dPYilfoI=(zoLC`8Yq$LIH1VqDyj_1HNc7qaFt)!x&-7ctmr)nmS< zj|!BE(?0$xkvtq~27?)t1C*?TJp-p|iYdp2a+Wt9-VJkdvi~$HrVon#j$Lv7pA|U` zsX$J?0EhQMW8R+PgNkii`?8V}D6sI2in>8ZVU<@_R%)EaK~yAhT$s$!)!^6QC^pCj zH$yC6D0<)<&b!UyTu?ga!%b+&s!p`j+;RT>dm)YvWu{U^?#pnpp&77!2s+bTb=wI~hjo3;5k zHtds@osC^XFYjD3lVxxtDf(_TYrKj93te}7asL=M|HGx_1@~(IrwkXR##UMF0Lm1! z^jx@&8$f)>CIinNx^w#H z;AUZXOZ^%dF%%Xb;Gj{#$=AydTu{U2LwiSthgk)gyV(R4_lYPy75d{eakvmkGA)&u zr`f)~r;DopGrc^yEfA&(Q%tEG*(zkUx3i;uDS#4oZoJn38s3aL7l8$=L{~= zp0eYU1v%B<*nHy-`_DGd37Qp7xu00VV@HBvci|(~0K8Ax85wPXbPLGY764QarWz6W zhv|%reUf%RwNwlY+$?9^Bj@Bi9^d(vpPz1E>1_}Zea7|}zearlqn`Ia1+Q&zYQVLJ z`9l-L-PaKC{J=0HQ0B7v4XR?_R$J?o(cMR}@fK#`Vi#cy^nE*@^6&L?z=?uV1>vkI z*u*t40e8IrkJk&|r@kJ_3@p9RC*%@smyQjDCdPQ~?CgBCJya6$!hU?6hyHVTB)v{t ze3=6TB{RPWQV!K#-iPGyGY>`@SlbQ?b|gviY=K;zNJPrnw^fgeR;mc zYi5mbc{xaCk7w*B*xJbGI26t-CG{H&{&944gdNyEeX44S9@AZ`H9Rqq);TaRQ2OQ# zGb7`gTZ33Yv;4=8Y+vE8+{U2VDkH#Zw(x)u_>h078}V)G{qkytGG`c3nrnngN^-o> z{m0!eWF>6Lh2>9Q4#TpuR{Z20Ngi1|5Z*uo5L=N}#+BrJ5Wq}zt*I{&yr_XJu`)%Ei-Jci6rPArT zi`dw4hSkd=V*B_B_1jxpTb~LroJTN~cZ2ucAcjXoLP0@8lkibHAug`}nXw~8({7x> zm(z-Bh{~BsF+m9WvT_f}56R=GOQ>Fn0V;Q?q)dxZSkQgoqclFoBbH;Dk)|E#u6k$~ zQb)*5*kueqVfF0tq;B%Wa+P=Up{h#Awq9KiAJ5sicK9&4mgRj7&OtHnYF_TePp{O@KV(GhTAX`zuLI#uCn^dG62srZwk9)N6s#m*mc_Y35)z(1@> z6Av-ucaE6XC7q>->rxAD)I_d?h2K{nA)1u<%6nm=DdGG$=zRao1n48^$r!YYxvT-C z|G@Yw*pD!hatiGT=b|tsNiZuZ=T%UoG9?%yar7X^h1*IRAnGr_{!6Q~+Hj zh8Bu!#2<9+Uhd8r!x>GMYUJ%cbw+6Y8|1iy$;s;k1X_;_?SU0`+q%1fY}MuQ%+RM* zX$}tTMa(Ktp^cC`fP#c|b_T3-5PB^mw%ryfF~NwaO!N^BEWT54rIPeAQ z;@5*2+ufH|IudHwDd6F~DZsNj*Hgwl(5W&3%u^Yh__LUo?OtC{-gcCC_TxglMs4zX zjDFMR7w5UAH}&6Iz#$72yT9#$)$az4oIixGi~LT;LJr5^df8s}Tghh{V7idu{qAQ$ zjKO~x4Duw)VYWUl8d6epzbo(>PYHszNX`A%0jnTKG|++BKL{XnR=e0pnXqnRyuNP$ z8tHxjWpoO_Aj<)x-lE_G*!juH$!TfPiCRzYOB(X{Qo10?kh-@z<3B?3bp-spVD#)3 zSWRIX&+i-as}V+vbJ1Wc3A`fZ`HWT8qs@`rR_5vcFhyzwX0bB@4a%kGmk~gK;&>kF5?nq)W4(mTR!(hAW0uRCvPECLjKI z$mV~QTa2A<5`}Vf4aVSr+wH~ghWQLuiy>SgFzv39Dnxpg1MYng8ysuPQ8*g}ftAyw1?Q1RXE2bO=Q-1i-FI*rJ_Z9h zD-c~T%>l>FTv}UbX#BGCazJ`@*xSrCr z4H1oN6da?yuBm*}KLHl6fYUv<1BwUXk1fcNR32CB2vk1T7-wW+Qo-6@G}v@2)L)ou zaa(o0GyJSj(?-_IAkE`8v-44l0n!g)?4hH>_@JDH81xFm=6+(|^ZmIh(mNV(LmP4&bHG?py(r_|~v~Js%`cin7@mlIH*OqlZs~0~owG=!=4= zWOxJ_N1&}xJ9N$u>=P$14oS(N^Q{q`6+mJH5R$DH5#CQ|=$C4axedqWPD(JjCOMql zfdCf2hKLs7evp|62!*@AMPx^WhN9wg{M>7sy^+)#K*Ese** zd{e%=*A#f(^7j%Y7$dc81DakKNYH_OSsGmT6V`OG7=$j&$LY=q7${8NJlh zy#o>Z%j$Qa$W*c@^ad^6>;mZDU&>GjI%t8VtBYKs|8qsr31m&D;*>`x0@Uerqdp6e*hd|m5wq>|S#|0WnY5XHxZxZc^~j`U)NOR67_ zhQonycU5@h+xVkW8)e~>afzn~m?T7NU+bPPl)t68)aw)aa6LY0B&|OjQAbjmFWshF z|Kh@#$!DstG{j|QaR<4Y1T~83aaX`>2P5bF&t#LL_kI|sXIJ7WrlP-RwwMmtqvc+l zK0C0pkGZ*h_a1A$-p2V)y=DI1Fkv9~{qkQ$>30V{gQhp3*~e1y4>swDn9{@cPWDN=kwIdrw^W?eG|*M zOCtt_N#?>-K#l+tY9G+dtt8R?k>vnM%Mh?n;E$G*MO2MxMN_I7uLjW>o8dIytKqPf zdEh}=mO!mAGVD-x+1$MIF>BpqITyl?Q4gO$Ha3kjq&cY{kHcA>0kJ+eF>iZ2#;i>7 z8uMT@#+358;1L$0s!Mn{2AOU#FjGkJq>yF_j{^vifl7cOX3Qko^C%LL*|^!I{Z`-( zgkPjnNn@!Zg!U>xD-kPI8jO)>8V;knwb5u{B@|iqSJ|2)h2u^>Toh?@Yc2SBXP`1g zt-O0R@QE$jE46`0XB*ar^ zYPNgdpuTR6M5z#%eFV~VECtFNNWd=ncI}?Y(u;hvHjfrQyeejkGVwKd_i5sQ(j|d1C)kPCHZdToj?`dk4y#g; zgQ`#|rn`PLGr5YgyoOtY;l=xwD#3X)dM7aWODur+>`BfS^3KQJ+>N*r9A?MaAa57j zip%r2gWqh1+f95U?0>)FFG=zx4eQ?aY3lw?)e!{<-*>s(Z)7b+Gc`p;qvl=YF`{I*J z1$sYwI&g+k_60iMX!k0PEqwZLzM&YH7qF)=^iFWnX|bmDBj4O;(LyMn6F#`Ft5!s8 z1B?;cfx1pHtkiFE384r=CH6jDljT$*!lx9*!kZBCO;~O7D$@iI_0XdRDn!*^1I)0M zHO2nhHX*ts-*1bkK9TMacG|C0rK$;?IN#^#>?qP0I%nB4&&8v>#Y7pt`&}H@ecoN~ zrAy5V>qe+UlnTEyG?@ykY<4zs(teGRUJFx{)r@p)Vh-LnBEI_V@maLgG|+c`FqfFR zFZf!@#@@OVJNTpkBE3pjgWqyo!|3@aJAFq~J{c9H$k8!@^1J^Oec>0tngCd}P)1!} z`$IJ^J&%o|LzefW1KZ2P7pXSDqlC|6bE;o|P9!6o++>KG2jTw;uqU2VrK>qC9*9Hj zT;7mUIz0eg5(UJrJCF`lZN^qP7sWYD1BZ+1I9HcR<4U?Gq{T=$Yz1@SagjZxJr=Op z{>Vts6w|TWIL1}+QcdSx@;fqYu#Qqcj17$&zl()ffebt*fx3Y|O$J-#R7pnx_!RV2npo$iVonoG2BXLDAPRaB^b#k^X5y9Q;PQYbGq;bV z0L#YiH{`e1JL#(Q=-N@P$H-h&X1t8EoSxlaY|^s3N@OKoaO$^LgpeSz<*MWl`RO#S zk-gE>?K{MZdBl~PoNa3{33{sKDfc6hPg*NIQSZy3tPI-x)z9qaXVQL|EjArFZFQRC zF=);0L5yu=*1LT>x6@26t0lk$Tm={O7FHB|ddbb9#PscY5;HsF*A)~Wzk3LcyfJsJ zXjjJO1x_v7h~=?WvEG~uc${tR%=c4R9^?u;&9YuJzs5~A20|K$8jqBzE43Wk$1gZT zS3MC);;fshvRo)Jk+k~v&gJ{qtn13l6`+B{b7-bdk$@4p)qM-X{5Bg12UOVu)Fm+P zhBXqIioy}DwAejq9f9vA5^`Y#Q`{3nn(+!4e}(Fk5cV%pGdaGWJVSD-Wzkk!2EP*G%*Htyt4(U*!qOKAlZQ)thDp*pQgy@>9?iiU~b7sc4&Ys)gQ$?GHA9{5N3jNrMbF5 z0dL&3?D^!F8A!YzB4rRKOoI8yAURhnYU=NYW@Zk>e=Pqn-L%oBY6z$U+X^wNANP8A z-Fh-FeO;Kq~*}h>_g>Ed-an&2!l$BDq8pvl_e-t!>;w+Z@|Cs%(w#kQV ziM{``TFh%x6hw%x2Yt=+NZ|7GRLJf#8L*)Qy+IdH5*QfoI|%{bbP#cf)*@p+!7_ee zI61a{SGz!W8Eu?q2nt5IFe+-H1HfumbteZLL3}ZgiSYue^H9c|~D<=%mq zZzL#mt0D@8wPWW815;hw5#U*A_C422JgH*T8HtdB0M*X00~76*LuwKO8~Er}#;JL9 zJYks41KSN{cI&`7m)2+unhziF>gWLeE3?H)_$U*!YLM0*tTu&H36*q#B;ci&!C&2{x~cgv==`Yt3&6lYv}CbRyui82 zhF>qCp&|HL^*6zRviOIUe`^6Nn47!O0(xAAjocCvt!>(C9{cjC?&UIb1jQ40&(B^| zecFkeq4;eke}#VK0QVmj4Exj@cYzkw;&ftfgzL93sv-9K9qK>r#5T0F6^^TYKH6E5*N#wdowA^ZW*gS2lJsC`tjT!2Da+`*j`pqG{MW@l7c9W>aa?zBcsOG zg((TIe+}bg-&fqyke~6pzx%X}#_Es^dX_TVe0ipXX1FN4k3ciO?5B#LmSSSpEsv*@ zokW(zFGoze-~F^=SaAf}tZP}Sc#p^#P+t_Gx?0JyLDVp&*0Sh1y|zx*0Z&3D6-b12 zUwd`_QXAD6nbJee(E7Y!Dj#>rTK>qGUujIe0HVe^MsU{JCV3W0BAkF##wnD8y=`N@ zcR()67qmT@$RRo`!8yMztw!(2Tj$F^5@)cT%VU<`djO{wm>D5n%7o^64@6*aLzW%ZwB)CWc zC63utV^~7vI-hZduk7v2ZpY9Na05krm&gxI`iL*?Vs3Wr{WLkZRo(EX3b-1`vFvx zQalcNv3VpxG571e^UWlf_Fi-f1m@jqvjIqJvx5&hHRJKauE#;69Y93({)4Lk4ZSyA zaoPR@T!5_K_qKQo!B&aOa(x#842{Zh3Cw9ii+KG|Z-Iug#2ri{-HWmrjB5urcey8E z9*Z6@#L^z5%>?EvrD)>)7tY~M;2{6HZvZOYV77e+|Aun9sb?%dG^_H*>?rLaaE2Q| zPlmjy`c_k#kWSjmU!=&G7EX&JhM;X34TFFh$#PkR^=@}YAcS5I>Gw2^0 zl1EZ;__h{?3`>>`0Oupck~PabB#e4Qy&x{xMC;M^TtxTQYHlayUB>&%;vVaVwEwWgRpbcZs*x(3EF2(Tcz05F{hybvL43Eqeg zKutluh3xeMT+Y*nKPlQ4Q;Cppb%iQE3(3ay%+Yx(x*2{GDj!@`sDWyNShJK?b#Scy zy_$fM!Ngab^{~TN<*UGIz9XJM;(<*M(^6}QGzv~Le;Ta5=TjV|IB=Ts$Oc!g{Hcr+ zsP_}`GmDCfvaq0wqc6SzW>lzykzyFLlz_z;M#)dWCC(Q<)tl{H6HB# zj$&N8My4AGZ+`)+ydI>;LQ$aDy2zrVql0zMo6MJPW2 zdZFDT5P?fTX;H1{$65)Q)kXP|ld{Zwm$a(*#2{o4N^@qZ&11bVb6mS}xZPNqY!MM9 zD+8tpz_@~gm8ne^+S)|R?O~qK=P$9a>5OSfJWT9uZHHG1d?C{#qZ5O*U|Kuae00hb z{Sbn|9)roDw#-whSy-z>_9%lpd#NJpHzfm89ZWMTHFDaZtr4xJ&7Q@Y_IL8|Nyh0` zo2ttEc!DyM?Vh@-oQ!?Vp-Tp=t>E0<6W7lRg{0*Ahl?$Em%mH5r?T(9QbwT}h&LyH z>SgMB#9j4lq;+@QAaF!}GwYF$l6rc}1kZDjJSz=~H zOgyn)sak@Q(zQ{d0^FB_ZLHuj^7J!n3|fm-SYCw4UCp zymjX^*3(=Xon|oq5}g8is6oGObVX+iFTXMyj{wE znY?1&R zk=+>dDEjfe@m%q$_nqU$9Y0r-!*MRvgU!vMP?R)zPSC29yLWQ40t*A!GB6FQ7gu`z z5i~QY8^xR%O%KfcBB(~aAG`Yy!t1%E{4d$(h%u|bMSCl3-4Cnlx~){FQ$`ovLy;e} z)NWv_A>R<-FsKFnMJ7fKO-)U6bDA^;iilwxBD`i?BDMXkyoH6E!CzwY@-2wIVPqBn z&9h_06OLR=)^r6CP3WEMTBF`r8pvov1yhFO;(j$;^20||)LwGn4zfLw#q0C;<~;y( zsw*V({QjMT$5ojYiyjGrHJwZbmPuko#1uV)L5sE434&5##S|JXxY8<@$0msCng*{@=4 zy#dI{!Vt*3<5VLPT*uO~VBD9HV^7uCT6Gj|W2|4#N|pPZ!W2}P{*o~=<;ckq$_cim z5UU8omyt>xW68@7*H}H|%DI42ReNV&jj4zHBK!ktRFokLC#O2SFoYd8ZEI%-#y%>5 zR^53->W|~q5CHz6coihq-z4|Nh=4%4M1{}=HV3%bLihS-o8{$l$Q3DK??Y+$x4f_8 zXP88VGOu9w&m!-BW)fMQB#Y zsnadbOsdH#D6r0E=pWHoQK5L%PrQkzJQD$5tgNgo5)yQDh}khQF*caC_;OPGb(%}U z&mhz(2~Nh&vCG;i1{#kMoQnDtu=eiRU-jnS$nMpC& z-2LcOkW^o{Ic<-Ys-;IqN6F69(t^z+$2Z9iVF$co1pmmVu?u1Tdb&_#OmE9ScUy3x zy-e4y@96F#a&Oa$$+28hr<~w z$_rls>a#uu!0JVuO?zcFy;v`ZC;fm9OGZJ)Qzi_s zo0wB%b|_x9wweH$g?vgb6a`?f;WS8xLFtOeqD%5a0m4fpi>Rom^*UJEat>8F1z@qs z#Gn`8$Bi9VyQCrso9{amwj0{Rc|gc5OJQZFOUoldssz2p*aqtJ`^bF>`1$MQ@xGhi zd-s$(dpjQfF!5^?r+wIF7!s|keDzB*;8~?Og^e36gt}eXP`Vmj06P*lb%O~ zQJ@4?&k^ZSk3O=KmYrVKntJ04u{M71%Z0}!h7S%D#^bClmZVp-0rOj%ppN$gL@R$E zn0((ZFvDuCl(@azzsH_s&1B}bwzp+1WuC%ZW5K{cUU$nZzOO8TgC|nY?^W9UzVy9) z1fH_WWk6?uQ4PcE*_kJ?MqWgF9@-JsvOn9vP$ZHh0!kWjFJJcFCh2G~U%v<1dz5eh zupjQm$g9E8hEhZmFRj$Lq~Cd)&CI+=!(-xC@T|`Vp*mF${r}~O`3WK1cmUM@Q;yh^ zMm!l_z^up#$k^ogE;=T0?95|u74BkpX1GWA}0L3g*^ zSo)@ownsx^tDlEz{ts2?S1vw!Xm05zK(}z>U?{Q$veWWFdRO0hGPK+couR#N#3xzn4bq8%d$kN zSaf^jJUk)N(wO8Go>5+#@gkZTyt04)P-Y(i^75#A#~Bc?YJe`#bZBpwKhV5WZb7xQ zASD=gz(e6D=r6~|#YuW@!T9;L>}{XQ#lr^;U%m{&0a^~HxpzWx@?drId?Yl}W!zr` z*+hL;9i65-#?daw--;f4FDr_drAEhgbT;r`MQ0Tta1oJ`egPJUR1_R*OF2g_cB;a> z{-s$IOuos<&$zZrJ2#Wh>aPb-9rrCTf>Xn1V z155D~1S1hBCgD*`3Ix3qB=SM4Lu+R;5Q&h94ar0X#~8iK$fZSr&m1J2Ck2 zNnue45y9OkD>bK5`y?4Hifn`wxFHX$tcuqxrCw=*6X?d?YHcZ8n9Fa5zrfZSY z(BKJ8gKicP!1!sEA#$K@c!c_riJcwmLHY2W=8k>bQW!;;wQL9K*+bSGlC!e_w3J8+ zY&x_0tP zRq<$OEqn}d3>yxEg#Q8zU?^(}fe_NHnx#x=YeUrsoO^+SiejKRN}T#Y#P6{N#=r>P zWCKS{M}{XYQv}>!GUU*;sjD$nkVl#WE}kB30rAYZ9S~7d;BXYaa0ujc*m*K1 zu#Lj$9HA8wB3_c)jf{*2@cOG>g5(Hf6}nGkZVYM&EooT=craS4{P_zo6YLKVsDl#A zf3ev|Lk3$2D9t4c!gW-7z%p<^9~xyZ49v7wm5w95W2F*0p|l#(Owkh$J04 z)(9;F-2;5(+ef6A$*2L~X<7n-k?X(q0<+)N86D!HdkHlSKwby)Am3U5lLIa|b^ulv ziuNWN204 zR#?O=Mtwj#q<;wS#~aqzH6{p{_}`W_EEoS<4|1%12qwt_rvi)OFZv4f-5ehiE?$py6keHahALvXk=RZG;slm@VnIUp=2 z;xP!4Bh0~sQqa`cSjuP9Mko<1VEs-=2*h6GB_(OJJ}Je-Du0!Y%d*JLAp*FMqS;_< z!nDay)QBd5hj4C3BYiL&`74bDs)~OR?Oh8eB7q8CUpQvbab!z&C9Y@nY3?nqdyqwhxP zB8b=_gM%LmO~H4hi8GNthX!r=2Kw4`Hss-W5lPCynUNiQKwAAnU;1_P5HS4!YKQvg zf7*+U-0b#X64-cd_X{&|adAz}`4}qcR}Q)IL`G<+=0!zw+}v32Swafl_=yv`BW;4` z$}9`qE^yu2YhXn=|7lVDQ~f8Iq79K0(*T4M&~jj^k&W+VWn|*U*stkPsR3s5FEfXd zl9Iw!v(5sKjI8|MvrNr=slLHQ#ZTE?{f2=}>EG`s$-VqN|i7P0NUtbt2dC-G6w%?!i9(TB)xqRTT@w}?kPYfp^#3w5!dc{Rc zLxPKXcD|C%ef}Xd)rbF__);m|df1Bd~86%l)Vit(vR&F4uw<343tMKvQT5tM0Ga4F_TP&&a1 zgOJ3AW`nr1Gl%N4ijES$AP6KndT&u*Zkm=>F=I%PsyiMZLr_bMT`l*^!Ab)Y$kqV> zkY0Z{PwVjF>&}oC@Sj`aTxry#pyIv>16;+u0VdlY?^j#F;tD+iz({oDWTk67Tbu_H zKn;zHRRdQnH&^d$X=76kE}#-qR-ZXn>q+&;kL9%+v&_y5T#5S?+GWe$9pf?QBhIuA z)8*G5oLAkpX_PEKyX{gX8Pfns<@Tr3-q2a#h4;-g-P7T+SXH$=1Z5k%qhWB%>gzl_3rybdyVEm6fi@{aOy+AE~ zC9Y(|u*q5bz0uWBDp3-i&Wg|bMqQg2M;pfUsipN0{RIkm;JJ{@pj$s!YKH~6-iehj zZ`>;eHy2Q-K+liKy&itruzb6Bu?vtUGbLW9bEbDMa8&(XGcZ`qo~%-T0)9J;UB&)x5ee3EaCFp7XA$$^TQ99SYJ2h)G;LE&VYhvR)S4GK9Tq1JCUMAO zW1g7&^$^=*J}93)(P$R&dWvm6;ZxN~cNHh)-!gJL{#OzBukG+qD|Mpc5`DPFS6?(tEgyh%lZ7-oywPb;ILrO-~KSoXl)mr&0;gx z3dDseCE}u~i#?*qBIyt2o0L;0gd>P94`)W~1K>eMo^5ZtFl%qObJc1e>g)RiM8g0s zD+rSm6$Rz1;%vV40xUf8bdQ&ol2Y}-h#+v4wLkgk3zB|G8t^zB1oOLc=X%aI8;5Ot<#E3#Wau9resn%H zpzR{&H#^bWWClEwXJ8%x)*jH|wBDE)a4e=kUb`aYTm((hL(Foo1C4 zp@lb?j0}c{7rvDRIC=N0y-hl}uLE^%>*B_<)qa6!(HSNW&CUz;HcK@gE?_AS8W>RL zp_A~<#`3OKT<+WFthEAVZh#G#XW*!R`U<;+6-u}m(MYWb)CGmm6+g9@pbrytP^Kb- zoXOizj0W4-QawQ4KRP}V2?~@zVP+qSlI!tPU_J4ndC?Y&@=BF?GgEktec9o|ah9+7bkOg0YH0r~Uk@KZr zhdCsc>rhd0WPfV1TT7CZksO73PVATsv{9(+bHcT6cJLx^0|F<%|Lb1-){Er5Dba3@ zik`Q`oV?F+5fF=>JY>@5YYe1(D2HIO>7yQWsR-c{80hf?Sqe>rI>v3ROr}c#LMPKM zRc@-mB#nr#a$MrMmk0e!&yV+avGUV|_%8;lwj{#4OC|kukK?1S zzVtBS^XuOI@rS9=%?_{@CwT=6kC9^8ZIG{McQOU6C&s7}lL)*|mOb8U4N2=A$-AA3 zJ=jO?Pio;mUO%|}Mn;tpaheLP76_^|$Z+5KVKP)=k0SsbWUVgI?+TJ{eYhGCyh9W8 zr|M;Vp8p<@d%spQax%h9FdcNRx{i@cp&U1JChixmxCRv+16)Eo(M4D-rSZcy-zV@_Xk;N&gM#UGYM6KM@u?LNY ze&7tc?A>D7V8c}h1_1-=HDIyD$PhP648#vdAE44bD4o3vEgz$S9D5>2H=QHQT@uD? zYwKCmn*u6<3Hvi09mTYb!;L}jo?&hg`kemZJ2~lUljEPd$J=Obr&y3n!C%P^m{<~c zI;c4d!xY?3T{vzO#WyiAX}|W=VDq>yYlv*THo#5yxHTV$i2MFM6LYNG>yAK1pHVeu zMUqe;x*ATD2PCj3y$P%5CpU;DwNqJmH&)(rDqffAxq@f9E zHk8X~cV>>EB4fw2yp{h_Y-iM9JCb^H_Vh^2Xf$%OkrR~<9FH_s%`&yfy#K(4y|Q1t z-+g+VDf$I#x7=~Ll~T!sZK~k>QBj{F@=l~FeiwythBTI1TBsDM^`hfx==R#MAa=S- zt^NFJf$GyX?r%FXpABsFe$T3VL9m=1Lnd$3gk_EeRmcvfu1}e^-=8Tj=;C^zU7Y<8 z=+;}fmatkLj(r~2&G?^RmthOq`;5J+9YpQLIoS_8P!F_mL6hS_{CMmeL>A)%W?I0= zOL0P~VQGslFXf&@lYbi7;+~i}224UP3B?@_eziaBMYv4T3eM3Hr1kYW!}@{+47?MnKo7 zG%-G1s+kvn6Zx$%Xc#ekRs}SWsGy~qc_BvJ{s;>Tfd|9RD3qAT;F7T>X@bV5C{q4r zhi=rSSF<;M&?V@V$FZu5rj)k0mz4bOe4TR&2Z-y$(-ku_7l*_| zMDEw46euQb+}?=^WttirzmGc}0+*5#|4f2}1mbe8Ew^@U5V$>-dv`R!ziHPr%(u^wdbZr=ar(x> z{t=XddTwA6Jawu+%e`%6Y(htQRcPs8;dWivw%b^D6H#0Lj|u1=1ui$o+Bvs{f=?97 zN8T-%oh9kZU7c>VS=Ki}##)}OJ8;w?xsDE#zJA91JAZ^ZYt|h(uA9-A~6w1$vD8ROj169zgh9JK$qXY^-jE zfQ}Cdo9hXw%L=Iiqav0<@Gp*0WW;CB&7qjxR8mT+ zpPJmeP;lAnxNWxSF$sYFUqvBg+Sz*pko*8x3#lTPk$+BN>E=UNgX;QB@ki^CcdZLJ zOwy?H?t0Ce22zgcZfE_Mo18GOtyovQW~w-I zSO&H4+YZhKdOy3QO`|EqKY3q_fgNFguX#ngyJm)fJB@S#_Uf3&OAgQL>jj&Ml{KfM zmb)W1!?TYE_d|rNM~~Zr@z1l9+1#$jBo=C|_f=JAWQDc1e~vRBxSsdgc9;jix83e^ zJmUHHWRalMbDG4-mRxRbX9$9bx_ABl^lD*XPni+qI+EiX%|~%}27Feme^RHcqhFqf zx^rjKbU@TY2Bfdlec>I3K2V)gOSdcU`swGjSrd?c#1nlne;J>!;_jFiMGsL8TK`HC zbzZ#d1h+q};Zp4&miJ+*^5=^efCn_4&~lR%_xl4Q9RnM(%;UMwlj#@ku4>;Z%XH#L zt&yJEpQfcAGM$-EBR)@-YM>P`x4WFJD(855T(GV45a3|MxKjH{ivrL3eBp{*!Met z920A#%jZ?5)6Xh9$lWg#?~l%~JBCFF+Hm42vdddmk!rZZGLBEF(?>a&ZOT@>A5?w9 zR;2f*j`-ady?aTwvhGpX_|Nap-TnE$DQaj8J9e%&c<;um&(~XSXZ?chr=@LPY`i~^ zL(@F-1t1AldJ?%ZL|kNQBV#*xuW2z^ zK9WmUGny}Gx`_}6O<}}E`P$>YasL#VCqLg!K;wAzhM%FAIcNb(UMw>5=g(2LD0S{i zpAM(BZ-t}WzttEkaKlATBv8F>ui}3JS<~9o#;e=?w6_M$*5hxiN%l)+k2G5CvKXK4 zLa2YGUG9F9J?4UIw>lRyE+W;_elM08i+DH*T z|KxEd^)Pl%{G&6XJCf=+9gFG`83L{5lRoeqeIlGN+a}1T7;}&z?ayaaJ5~qYDcQt10nC^1)qIx9H*T5mSzW2iK>AfMW~{P4hg$yb>|BdIx4sF)9br z*YNH6-b4u>fZ20im(~6KN9w7uzP=1^FS-{+`gNi~(xwAdGV_k}MUeIMqwnY^(1EWw zA4~$%93vTK;2n_ANM`G_epLUmK)ksbe{S5Ri{}_+VL6_fjjo@;&Up5rjD2pjUrOre z4zcsoB&p$ILHV9SdDox(QY|ir5J~wFwmt~t+n{3x z?l6B=R+f#4vAK1#wp`Z-QXLxc^W6sP8M!8;L>0_Vk(a-#7PJUUe8f^i?{> zfY1vewGha!JlFeZi4!0Ly|%hH-R9ves?-}l|0K>6z*bX&{ZB7ZuOld7XXX%PG3VCuOdM$*9eiaF@S3JB9CY88CN$J36LWkiXz z^N{NGmVeW3rH&nm$w`|w)eJ^w*V~9iYQW{WV(FfdOs=-MEDO87Df{xJhVq?Oox^!q z`jui+<8b*mysfb5`9t;~gz?oDqk`AHhwKtoKrxlYz-B0!larhX{|S`%6~(XTe)JX1 z1%IhomXnfIt;_85`+c!Bt8Qm^G6B%wpj_Wax8HsO3G=!j+~e*ZoAPhXP!QdKBXj6O znWi!nWe9AAb00g8EYQiBm@YFU%IuT8?xv748W(@t&nq|@uyJyg;~TOdlj2BKXy+vS z=y~XRd1%G8q*br5h21}({%Ly(7QTd&K!4@TMiWfBBFBY(_Pu=YZSK`{^Op!CIsg7Z z(tG5o8h!klD!C{1&8w-hrCldf(({YMXd6*+6DIF^W`55!7!9t~1TAl!*2ZBxj9|Ls zy)9gSmfG;5X~NAUH5(GbT@%@JD(BmMiN=-1i?WS`zAw>YKhba4_qNoHz3NkcGKPtO z(&q^Zp_jWu27LQg;59p2Ql1PwAK5$3zv_rS%G>%!{Bct7Wq%c-V#HJzw8%$rclWl8 zlw_OSr&wI4bW#4tH-h^+4E>1qd^H6{vX`0H=# z*AoB?j13h7zYDQ5HOn-^`l#e>fHypnq>;E%d8fg2THI}NV6}gs|IW)k*>xQ`eibEc zv@njo6DgOyMU5sg24{QQ{Z4KovyQl~UAlx)t)wB|KI;sV@JyPE zps;pgu-?Bia6Ep1Zf|bByIGG?rC0m&SY@_uu3WISy(wjK-Vp|#C^LDZEfUAd=)YBl z@9SR1Q~^nJVvECfTcHzj?_^)-eKE?uU+&$TPFb|R9JAWzJ($+e>`jt%jQv9;w5q$In7+#D;B@#p^866je6Ew!}A*n2IKZ=Kh9fs2%sP^>$>a z$7i+}?u79=tp;iFNEPbuK%a{S=Z4#^zu=KWe=#%d8!yun#q!gqQ1Vc>gl+J;@yg51}TW^?kFuK zbHN^OOM;6Fh8Yk8yEhXx35FlFAO19B_K!SIz3^%Iqiwt!E-+ih#XQ0}KXbU4<7fHW z!O5ViW4a+d&d4>^$H)d9JGS$qE zmFCsIi>AkM{fHUH6ndW-KSI-wj_ih;5(f~on$DlfYCdhJwj4KYAGBfa-yPc?AA`LP zdmTG_y@0A7e$WG5QSBhC|ww zQ8-=VSkL{v$-p}8beT?z=?tT>qd`x;SEk%?STK#}E*0TRtk6y1)dXp8DVCT+75+>G z&s~pAx-1T+$K|xR-1h-XPB1WNj#3|lRTvS_0#pej@guJzMn@=h?>wT@Y4?&Dn}6zy zC%A5L`-SoGNPC!k&3OOur7e;mrzBo>aYa;HOaq(XNh$Tt6?p)THr25v^#k(C+?zSM zVCTL0EP#)E?!aa|DVz%2qVp?ZTlwus^m&0I-7nZl#TY?8JH6hk!(=#TXJ`5R+?R5< z-^x)??wK>Men37t<65y(%cp*)UFK)#x(V#otgS}esvr?2|8s1c6mtex7jh%2%9VJ( z_V1e<_bSzs6RJl5SYXp2q|LU?nB@mrSR0rlIFL^E{n6_}{(!R(BUJ%Nrx`l8XiG~= zdGH84b87D7lkdt)FJ51!HcUIt?2MhwjVT^F83sV1hj-I-Q*oaHe$k%DkF~SjD@~b*7qq)u=)7EfdU5&hZL&_Qe<%>c!UrOliHby3VvoEtYqX;)i~~@z zR1(Yy<+ifQswV{;D4n*OYn7CR-YGkd?HszFW z+krEJjJ(^mgZ(LMiTXN+9>%Y)jBe`@y#$Q4H7_-Lx{)l?y>G*ZgZ-TpD^i2Q1-7qdHy1kLp^}5--CHVY3=nK9{rp^BTK0Ea)+G4$P2_Ff+N%(4By60L5 z5vBT6M!l8r6m8p1ETzPU1>ewQZjX9C208|RpB}Z;-X^}*eogd*Bx5Qor1i;_IZBWbQ~Jw+D+Lp# z-$ZDg7g)eIK#$S{UCP$>_k2#4Kjz8 zSHGcvWf6_ezc#;KRAbP(+E&+9Mg8-(>$pw5mNvFPCYlrptOs%#G#oB!MvTHlYgXS| z?~bG2+?;v&E+>%@(x$>iCZB}h#Cu&}U0ACmwz3T4S}lGu(Yf+t+^f*6U;-ch5@FoD zWCTGK86BV3r`@q!guEnD5P>6(eKeWlo2ExmVPSnfQpLO0>iX0Y5T1BYk;v@0 z-y@{NQn76`?O2!t*;YGsgLe7afgs6Xd zvoP4*1!F%82|2sWEMX(MCH~ggW5FRktD)vhyl6yP~4PK*L~?BxT$v z*`3U5gr6m?Wc^}i%uv|s;C4HMU^+ztaV?tH`KYu>K#oyLs>+#^s_TUjMbDkJ7e589 zl;c*&CP59^rDCe|K1bvVTAjHKRthfS<&)Hu=%>;F0v5 z?;JnZ2Pk|VX2v#0(JzFt|D=67Uvwn8%vP7EOc#}icro)83{W;UxAzlGI+JJUQ-f*2 zFw9YlFuEct3iHA*@uOZ&b0+2#Dl%S7lSRCH2oVYq^J{^sexG-qie9nO%F37U_(NwW zr5f&+h3OdEPQ*)#PIF2%!W+*h{A*b+HX3Qxdqb-+>nzQ!@-{JEzWIEYhtox(`OZ;2m}{90Z?H0}ry1oa4Z1wz-GHZe!9znMNzSJkVcX&T{#P8K z+WQnMjqQ`vpJ!z37L&k}&d2+ra7$TGutOt?kHug^a&=Nx#Fl0aVr9$DQC!A}R#hTx z(Y}9t+_BqD06kbn&j>exjdJ4|`W>QNAiH0L+MQ29$?CW;U6yy;zA*mGq)}`3lz65h zsIz!ltPxz{2n$2e-e~H({2AFY0Ao5W#prtbsvdO?(m?-P7 zmZ$Na>O_FwIV+MBZg}Y z>+dA2I7W_&is5r#^_CyQg4V9@d+*i==b#JQmqo7YH({K%(@t`=I*Zw2J2z>(&PtOZ zw_b{twwyXE0B=UTL2r}a+PauP+1JE@`s`V!AZ)iRLNv+rbPf97dlsY1#X|YC-F0(3 zVlk|}J;kw$(I2JV{HC~AtgipQVJwyAvlA4b6BGBHy;>s~0n=wTRrQ(aNue7d5xvIw zp+ik{ERu@CPsypJ2P07-H&x>Z%WS<5aVrZSI%fD1V)Xh+ke_hVpOk z?#^Y0C|xfp7sz>;vUGYLfE7~#BX;h(jL#p~?jsUGeUVgW2o~FNk!^cXaq-#J)z$7o zLz&V84I3LBKukZL zHO=R7#X$DuYe$D4T;th=xvTf6_;>t5nxPo(f=*@8H4%xdG4vH&>Uor7xboc*qfCFS zvva?6l5t!Y7yH-_H%dA^lbaPM9F8&6KNvA%BS#s0ZdW9JlO^wKJ~J{V1nnun66qyF zD_^Dln)qhMeXS$-d~JTT&Qd+RbOF_S>EkQeyW86_Q@ES2JYa=99Xm^R)cAQBS$rXr7SwplHj$(~cFD?VDCUBHs-$E-Liz?L{eAy3@Q+Im4*CdL5&i*O*`tc9Q|7`qj*lv6Xxt1*vA&Jn z6-;FE@bG}{O;B@jHQL@Wq8|$h&@y$n?!NePt2-cxB&V#UtgNU=!ElZyDk945{2hGO z4f(gf=%2qpsx>9RF8dFf>v!J2P81aWjkvhn|NK+_Sc(7FOaB)|rHvZ;U+W2J;pqR6 z2T<&3X~6j8pSLk0{x9_E|NTeTI$&U6o}O$n2l~JdNPpW8co@uRO)(XgA_4Fl7%4Hi K59K0y-~I=ItLFFs From bbf9d9cc9b430e31b9a361a2878af77b70fa1d1a Mon Sep 17 00:00:00 2001 From: Tom Willmot Date: Thu, 4 Jun 2026 18:26:03 +0200 Subject: [PATCH 3/4] Attribute public-channel shares to the sharer When the H2 side resolved a sharer (public shares only), render "Shared by in #channel on Slack" via the slack.shared_by field; unattributed and non-public markers are unchanged. Co-Authored-By: Claude Opus 4.8 --- src/components/Comment/SlackMention.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Comment/SlackMention.js b/src/components/Comment/SlackMention.js index 3e3b0917..3d955786 100644 --- a/src/components/Comment/SlackMention.js +++ b/src/components/Comment/SlackMention.js @@ -74,7 +74,9 @@ export default function SlackMention( { comment } ) { prefix = 'Auto-posted to '; suffix = ' on Slack'; } else if ( visibility === 'public' && channelEl ) { - prefix = 'Shared in '; + // Public manual shares are attributed to the sharer when the H2 side + // resolved one (shared_by); otherwise they're unattributed. + prefix = slack.shared_by ? `Shared by ${ slack.shared_by } in ` : 'Shared in '; suffix = ' on Slack'; } else if ( visibility === 'private' ) { prefix = 'Shared in a private channel on Slack'; @@ -112,6 +114,7 @@ SlackMention.propTypes = { permalink: PropTypes.string, source: PropTypes.string, visibility: PropTypes.string, + shared_by: PropTypes.string, } ), } ).isRequired, }; From a891da9893683166c529bf78249fb04e1b052172 Mon Sep 17 00:00:00 2001 From: Tom Willmot Date: Thu, 4 Jun 2026 18:47:19 +0200 Subject: [PATCH 4/4] Show the sharer as a linked @username; fix the trailing line-cap Attributed public shares now read "Shared by @username in #channel on Slack" with @username linking to the sharer's H2 profile (AuthorLink). Also give a marker that ends the thread a short tail so the rounded terminal dot clears the node's mask and shows, matching trailing comments. Co-Authored-By: Claude Opus 4.8 --- src/components/Comment/SlackMention.css | 13 ++++---- src/components/Comment/SlackMention.js | 43 ++++++++++++++++--------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/components/Comment/SlackMention.css b/src/components/Comment/SlackMention.css index 3e9eb87c..f422844a 100644 --- a/src/components/Comment/SlackMention.css +++ b/src/components/Comment/SlackMention.css @@ -79,20 +79,21 @@ a.Comment-SlackMention__channel:focus { margin-right: 0.5em; } -/* If a marker is the last item in the thread, drop the trailing space and stop - * the line short like a trailing comment does. */ +/* When a marker ends the thread, keep a short tail below the node — like a + * trailing comment — so the line stops short and the rounded dot below sits + * clear of the node's white mask (otherwise the cap is hidden behind it). */ .Comment-SlackMention:last-child { - padding-bottom: 0; + padding-bottom: 1.5rem; } .Comment-SlackMention:last-child:before { bottom: 1rem; } -/* With the trailing padding gone on the last item, the node band must shrink - * to the content row too, or the logo drifts out of alignment with the text. */ +/* The node stays in the content band above the tail, so the logo aligns with + * the text and leaves the tail (line-end + dot) below it visible. */ .Comment-SlackMention:last-child .Comment-SlackMention__node { - bottom: 0; + bottom: 1.5rem; } /* Cap the line with the same rounded terminal dot a trailing comment gets diff --git a/src/components/Comment/SlackMention.js b/src/components/Comment/SlackMention.js index 3d955786..6adbcf8c 100644 --- a/src/components/Comment/SlackMention.js +++ b/src/components/Comment/SlackMention.js @@ -1,7 +1,8 @@ import PropTypes from 'prop-types'; -import React from 'react'; +import React, { Fragment } from 'react'; import FormattedDate from '../FormattedDate'; +import AuthorLink from '../Message/AuthorLink'; import './SlackMention.css'; @@ -66,24 +67,34 @@ export default function SlackMention( { comment } ) { ) ) : null; - // Build the row text around the (optional) channel element without a - // Fragment: prefix + channelEl + suffix render as inline span children. - let prefix = 'Shared in Slack'; - let suffix = ''; + // Public manual shares are attributed to the sharer as a linked @username + // (opening their H2 profile) when the H2 side resolved one. + const sharer = { + id: slack.shared_by_id, + name: slack.shared_by, + }; + const authorEl = ( slack.shared_by_username && slack.shared_by_id ) ? ( + + @{ slack.shared_by_username } + + ) : null; + + // Build the row text, interleaving the (optional) sharer and channel links. + let body; if ( isAuto && channelEl ) { - prefix = 'Auto-posted to '; - suffix = ' on Slack'; + body = Auto-posted to { channelEl } on Slack; } else if ( visibility === 'public' && channelEl ) { - // Public manual shares are attributed to the sharer when the H2 side - // resolved one (shared_by); otherwise they're unattributed. - prefix = slack.shared_by ? `Shared by ${ slack.shared_by } in ` : 'Shared in '; - suffix = ' on Slack'; + body = authorEl + ? Shared by { authorEl } in { channelEl } on Slack + : Shared in { channelEl } on Slack; } else if ( visibility === 'private' ) { - prefix = 'Shared in a private channel on Slack'; + body = 'Shared in a private channel on Slack'; } else if ( visibility === 'im' ) { - prefix = 'Shared in a DM on Slack'; + body = 'Shared in a DM on Slack'; } else if ( visibility === 'mpim' ) { - prefix = 'Shared in a group DM on Slack'; + body = 'Shared in a group DM on Slack'; + } else { + body = 'Shared in Slack'; } return ( @@ -95,7 +106,7 @@ export default function SlackMention( { comment } ) { - { prefix }{ channelEl }{ suffix } + { body } @@ -115,6 +126,8 @@ SlackMention.propTypes = { source: PropTypes.string, visibility: PropTypes.string, shared_by: PropTypes.string, + shared_by_username: PropTypes.string, + shared_by_id: PropTypes.number, } ), } ).isRequired, };