From 7b8a1da761bb3fa02618e06a12eb1e5f98709328 Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Fri, 16 Oct 2026 04:13:12 +0900 Subject: [PATCH 1/4] fix(discord): compose checked own managed-role mention support Issue: #1615 Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 --- .../fonts/NotoSansSC-Bold.og-subset.otf | Bin 157484 -> 167572 bytes changes/1615-discord-managed-role.md | 11 +++++++ ...s-preserve-native-child-channel-routing.md | 10 ++++++- docs/architecture/botharness-architecture.md | 2 ++ .../verification/discord-1615-managed-role.md | 24 +++++++++++++++ docs/discord-connection.md | 28 ++++++++++++++++++ docs/discord-connection.zh.md | 28 ++++++++++++++++++ docs/product-im-installation.md | 4 +-- packages/core/test/messaging-discord.test.ts | 15 ++++++++-- scripts/dev-im-provider.mjs | 6 ++-- scripts/product-artifacts.mjs | 6 ++-- scripts/sync-docs.mjs | 15 ++++++++++ scripts/test/product-artifacts.test.mjs | 4 +-- 13 files changed, 139 insertions(+), 14 deletions(-) create mode 100644 changes/1615-discord-managed-role.md create mode 100644 docs/dev/verification/discord-1615-managed-role.md create mode 100644 docs/discord-connection.md create mode 100644 docs/discord-connection.zh.md diff --git a/apps/docs/public/fonts/NotoSansSC-Bold.og-subset.otf b/apps/docs/public/fonts/NotoSansSC-Bold.og-subset.otf index deee379cce5e298ef71cf1e7c9134a8fd427c84a..b74c47334562a691d4f17d673d595636692f427a 100644 GIT binary patch delta 32049 zcmcG$2UrwIw?AB`dqUGg9)@TWM9kSW>#kW$tB3)`hyf&sA|i@92nG}sp@9J;iXbYW zh>AJqoU?0ob&ad8HEhH3ogR1J``-87@Bcl|_dI{~oa$3uU481*uTGt+>apyySz0c? z-d%smcIzubCYKSW^~-@HhWomWuvD#J2ZFKHAN78yOMb5vtO z8m`A8I|&&<*zI_SMZ!Pz@ua=@)Ji9MK||OqdV{CMRswi~0aeJ*=L4#uVTM9~iw$A! zuz}1|b|&)-(-%lDkzTP=nO`w|jr0cTH>A%k)ohh&DtBWaMV*qf{kk}Ye&YT2c%9i}==?J;#= z*RYOE7VE?=XPwzp)`fLt8{oBo_g%5H8&rIAw>81*rbx|@ znlo*3*%o-QSvj38Rim{DgCrZ!4!LYBJEAbhE@M044GubqyxJ4ii7nNAVTm|f?WF8H za@fcXVv^d!?5^)~-&elB`Mwi(se86@9@lK#597Ly^BK2fT->+|{(k=P{;U0y{4@Qt z{qy`c`tS2U{?oIP{S%&&oFffj*ofz1P32DS<87T7m% zMxZ`$dElPFmqF?vtDr7HJ%R=V4Go$WG$ZKfthiv0;N~G7A=5%;gj@;j6FM;Tby)AP z;b950m9y7}+sz4|Gk?y$IqxI9BW8(zaqjjDK14%wujtteyDdDnP+Fu}WU;8jqMyXp zWjXf4#mgWmrmT z%B8gYwBmF~Z=L=j{cA@1jD8s-GLkb+XM8gd!z4q1;Y;TH%te{YGgC4%Gk?j-$WF?> zE50*phX!xJ_l3pcB;HBgNjCV%d~qr7Y4uVzx9>;a&!ZHhxKS43VReV@|7rNK|IP4) z|7rLM?I!e^FnYqIi7zMqF4}22{om_^&i`vC1pI$=!odG?C%Bq>wY$6Y(bC6De_Q%~ z=~w-1eT05ftTJ|RY~8Zo{!hI#_J8)y#eenA`~TP8S@_?3XG5R7yY*bXdA)Oeef`rX zL!Yk|KbQ;p`QYOBa+zmd-4lQ0iCOyVSnacJuj?pGtHk)+LrDYzb3bUtCxGYw?TX zhs7t0w-s+GE+}4Gyr6hiv3_*%u%a_X2aC#!5{s4>#T11X^(pFA)T5|bkynx3#$y`~ zZmifCx-n$qUYR{QyGgbxt3K;))~&3IS!c2;vvy>S$xJs;!^e!8jC~nO23!hHSKBI z&9s~}cQHfMrtC}El`=Qw$K;pEr;_yxll!e(wyxz`yS3(P6-mD({gQMe@nGVf#9@i; z5?$AfTjR6lr!}zp=4!Kq_=Ld;-4nVc=o0uvqNAhkM%|9O5Op}}VAQUtol!+mX;JH8%9Z?mL60s&?c|=Uaf{1<*j&m#L=Fa_jEKE!9@*-q+NLk46kfFf`gS!WJ33h4|>=`V~x;x7wsAb^O!02hu*=y`I zg&TpYr&iAy@spKr)k)h03TQ8OaY$Bru&+r=@uWj{oer;^h9&Dm3FgZVDvF6SoDO1$gr z<|WrBzgJEh%J-0D9ppM4kQ|Y0L~ED6U@eYtaWj);dn9Xdj>~Y+iU(afw~}@7M3Su_ zx6TSlwv3!F>mt8XuD>%dE!UDz8NH6MHp@ zagr648}*M-7letMa z<~DPOm@yBS2Smd>Wqu>(%qQj(vBzi@5RxpbLEG7~4x}xHlg?txxw5bz}&%BC`_$Tnp&YU zwZfYD%+wJZjI!0(lV;eK#@H5tG{Z2s2@alSsQ-`OD>W&?uwB`1qFsmK!gb~@bC0>t zJYpU*Z<%+jIcteww+-8pZOxWc#dcsV%?>e#NH69HbEGP%cUNE!;l%1 z{kr!wRe=w;maAq<@MSzv)~igfQ!&?>8~7sm1+Bi{`OExoGu^{iwyfIQZwTnmFsGQ) z%vmg;zz47}_K$2|* zm^-jPupQY>rZSt@Vl1P0|~8LX-oEc^?oOBi98>uhU;F20&fVf$kn1O8P31KH%f$PWtik7gILi`W=;F}s9a%Ieuz zb{QMT#^a)A1-p`6#U`+;aZ!}WCb4VTb!;-bo=w4pk;ta8>1+mTU^Ce)Hk;kR=CHYJ z9-Ge=u!ZbKwg}%>B$^MJq5r>AKbnah&5mKmvVQD1c0B9PPGBdplT3C1GWl;iOeSHC z(GXKihL~!y_F=X=+m9UmH$#+=t7MjVdvHKY9IpyoJF0LY$06Q%TrQg9`c1~JHKNxR z7khTNRJ6xsqNBLeyJaJ+d#Y?+8HX6NJ!PIT&zTp@OXd~xEAyIpgAU>UU(N0$Os*4~ zqd-lkU~>=w*okeis{^nF#bT$S3pAJTo&rI~Kup!%p^jb`HOmn~$J<*|@gsC0MjGUsJ zh^ZE3^u|Ps@)}HSQI=gLzMQPa)CL<|FQ=%(eV-1f!#k7O37F@M_x_SoEV~L*CzR{t z6y=qeI-*=Frzo$$)B$BlPElTtsXfYn$|=h6n4+$vMov+V!xVKTMma@!8K$UfdqU+4 z%!tJll_lTg6lFc8va)~3Davw3&X+AJ9v(T)tO+zBtzb9o7TtZ_T#jIW4r2}@AB;|u zAp@CX_|!nmJ1UO%^-_1nys2!Ls+GREj9wn{|Aq8oL^^}mY=`^?+ZGFk;oxAf3=S3a zniG+?BomOgApXdklkv!#k#WeI5)BmI%v;jGB8 zTGAJ}E$M^YhV({mO?n}>B0nLw#F>X-El5w~=A;L54e5?t&y#MLn31l?Ino8WnxKJL z73qXrNjf4|kROnp!3AZ8ZCr7GiV{Ep0q*!7io>Wj5hz*c2#7>nl#7>bh#Of!@ zAi{|dLBvj!LBvjwLB#sYAY#YMAY#YKAY%Pw5V2!r5V2!q5V50W5V51sy)&$@j3IWU zj3L%X#t=I~#t=JP#t{3nj3IWIj3JCl5JT(`8AI$~y$m9DkPIT$TLuw3PzDh@Kn4+8 zWO6?J(c7UTLJ1ua!U!D^TZp_RTY$U;n~%IXq6i%kn~S_Dn}fUwy8(G)HXFGYn}xg) zn~B_$H6U-uW+3-q_34T*i_^Kn}WOnyB@gU5nh2O+xO# zCL*_I*C5v+iqH|U3COkVD&)58O5`@|3gp)8a^zNQJaS7m4!H%p47oWQD?1hqD~|%6 zU5ea{U4oor7b91*G00WyBIHVTA#w#9jhwAIIleh`BC}Z8GXI2!_Gs3rIOWTMV~HsM zY>#*4pm6GU>H8hAx${hOFFDy$l{N7?K&2QuIYZwTIzl)23HpLJ z422Oe3jAOq1VA8!!W@_nF%SzYU=1WgI%Goul)yIFffLXHI0~oW0$hdL@Bp5|D|ic^ z;17_nH&u*=v1W9PGvmfIVsN*c>Bw|req#DDgPGyXC}tcpnVG?aFmsssdM1X6WmYhW z%z7rB$!7AIP0SXif~jKmGKX-%at0&pYq*wrz&yd==`F54{=mI{K#Q59$?dVr+_C3d zVx-#%gP&d)TMlN2v!gKbo5W6MXR)){NQ`2aV$_;|QEDnir8yXdmayB{9qev)KdV2& zo@CFlmvPts9{UUXoPEu{XFs!)tyO?RrO+s>6*`5p!cEag(M-`s@q?nP;zvbag|}ju zVx(fMVuE6-Vx}TQF;@|#h*88URw&jek`-x+EJdE8NKvXNS5ztXDh?@*E6yk`Dy}JR zD;_AGC|)XlQ+!l>Rn#c{(koddr?gPoDjk#!lpe~)$`;DD%8ttJ%3jL;%E8Lv%2CSk z$|=e~WvFtlGD;bv)GJpg*C>;fY04~RzH*ati?TvlrQEALtURGStGuMVp}eR3MfqI$ zTKQi2S!q=MrBbSRm5s_l<)-pdwNSNJbyp2h`KhL=W~t_=^eL)z)g{$Sl~E09UTv#( zQoF00s9UJps{PbKYQ4Hxy-$5YeOvul{fcwqnsS}F{+tgtmYd84ap7DPcaFQt)tY&j zwK3~sHqvae*(|eYvz2C|S-#mev)yKgd4X@j_uyCa*ECL=DVk8tJWYY-nmKFU!Muz4 zWb*~1%oEKk%&(Y#uuxdITXeJNZ86?rp2ZrAe2XHBy%v`&o?HB8QEzE$>1OF^*~zkx z4h@cjQ{t82t}s(H3yFp~Vq8dP%-O-I{xS@l%AC<}|c;Nm|Y& zE$1_$`@A;hOzWkjbu6@ANm{QK{pL-!envXglg<{TvmNQ&iF8g8kIie*sK+zXQ%8D^ zBt6HHo3Nj&d_j7CB)t`+w+=);(#K&yDDfUkyeATGk$9I7@6*KlI`O_Q z&Wdc!41OeLL=J5{`~n$%g^Va8Bkqt956Osn;$ugA9Egt#@o7nXx)Prt;*%`aMmmo? zPDWlKBR`OlpNMZF8TEmTaUf$Fld(^TpFj9bA>%reabL(diH!f9_(u@`IO2bcOsFCg zlgXqcGS!Ss)sm?NWGW@ocaiDUWV$4dncv=R8JV3&X4jJNPGrt{GS@)nej*V(iLfFO zqe#STF>ihsi~z;E^BZ}_dz1JJWO)=>!I9*dBsqnw??O_pk<>0EwHrzOk)#e1t)s?4 zKQS=My=e?7xkEN9NGT7cHl%bkDGei~dQ$pfa)qvS?TRadI z^1~r{gNAtu=;bgpWX+$x=t@$~5n_RXP%o;O76IGS6_#Jr3V@9KE z!7t-A^t3?l2{Wb#jdas|<>{~M1!^a0sD`?V8<#GEJ))p*fI#o2_q6OI(80o{+sAHE z`AQ7Y_kd|trFusIZ}C{HfI2*mosasAUe*z>6PGoI6XKp_onejmVVR5Stw2?pc+o1Z zf44h=@ev)MD-?F|cZA)%wwI!yoTr_I^I1yydIzt`=S5z#{y_49wfi_)jAPPLr8OL- zDdM`g0}xm>I357bi$j;YI(85=iIk%ORGUCK&0%Srjy6_lXrUOl{Fvn&d~(+k-Ra9Y z2M^$o_gOIoY{i``<_{Vo+^3^l=qT#iL*pgTHnjHwYTk%iYG?<6DtJxgaJO2PHZ@wS zskJ8dy0WXvm{6YMYmQQUpRFxzwtD3X2BVcPwRs}&f(JCQT|AsNe3zit{ zxnLC83?tHx807ZCDEViMyT@TH7KqEiNV145#RYH@Nh90H4zi2v$3^2Qa*;eGZ^$QH zvDN_#W?%t2XaG&2Ep&z-VE_yRUl<2dFoXz!NLU1VSPARE0C^ZZl*2C2?}H<763)XF zxCQs&F+7LYrs(0DDSA+vq6d4%g>h%Rm=+j2bY=Q5-ptR8FXPWlVP<0FFqc`#EXA;4 zEt6&n8j3M!*v{->4x0joTg*e;YmtKmiXQ~97_)iePFhcP06Ppfh9>FRnQRz45BIi` zai=O9_ltJ22iW5n23*4+;2HZH`#bxmf>H1a8-=67UC~6*TG3I_!!+&xtQe!1p_r}6 zQB*2UDz4&m{tBmZs`yK(R$Ad4?xt*nGkAMtS7mSIAf=CToN}r%7-#NioVOEk&OU~7 zwEm{@0Zz{KDnyLRRn=VegQ}-$pvp%zP8FaEQAMg2tCp*hRB5Ul)h1P$YLDuu>Wu1& z>W=EM>b2^l>YJ)g&8W@P)@lcJOZ6zVzdBq!Umd4TREz4(>fP$o>Kp1i>X+(IYKc>E zR-7H@$~EKKbKSXq+%RqoH(Afk;^uKNTs)V^iCh*}$Zg>&xqaL*?mTycd&s@yK5&2F zq|Ta|nK_ybF`HyI-7M5B(k$7`U{-0i&+LrZb+cd1YI#du$2aA>@&oy?{A50qkLKg} z6h5Ed%)&Ht+d)@b;U}us<*bX?rQC0 zy}&xt`mo;ml=W*HrAbecCl8}ZquI7UeZ3&KG*(fXJgmYu9aP9yB>A}?IzmIvs-0n zu-j}`ZFkY`q1^|&Z#s?6UDr`JST|WWQ@2RBPPb8~FV!8?ozmUYy|*X!TKmTKUG0b3 z``HKEFScK2Utqt}{-phN`-k=)>}wq?9o!w-IrMSxb(roj&mrDHbSQGDaya2|!{NEZ zXGd_fc64)W?by?CsH4AQu;W6YNpocq=k5) z(ulp1-1X_`SFi9=EqWw>x&#F`oirPtYC#nmn#5nMe#UF0Vjb*fg_#lA(^BT_T)!)IcPgiOCA|Np z;SLE{x&u`s7cdO-6vTT;-j?ZdUD-)nu`cz}Wn!DPy)D$JZoI1|EN@gwBqxTib++%# z*LbTn+}iB5@;lr8ntK1t{T=VbjJ2+c-Gao5Rcn1cC@V3V`ud7kf)QRzh2||){-#lD znOM!L1U>3LMr^q52W34`#}aY$y54YEG^}d~L&W{-Jm87=a9#5@wV;-otdb@Tm2hS% zS#~hIVA1YZ`P3?nYB-H+_sco>Y)Kqh0>&vOyVPn#IzP=pOTzk=pt~4{An7 zQV{#327o~O$R|sVa^#{$E@*>Ln}a zPpP7PLvP;T&udN=^UIg5Ugn}-vm{AFYx&LFN-8)_f1!myeZ?+fUzjE?7CWgZL9Hf< z)uIQdt36K@#`9|Nj_76PwmCbsc%L)V#n6vH!Samx&mS<}`se=w*xIlh zhhS*dxOKBRvC^P*IhCBZ!)-^tK|{4_iKnbilMoj-HxYX!LA+vcZ#;wVw5w~?3hwH)NOL{yrMZNoaHTA-din=HqOvVWzx91#uTU@E%&D5dH=*o z>#{?$$0dhw*AK1Dt8lBxO)op8~)cty1j#sb|@GvcFLZFfn|F30A&GhNh`%C*nk57`cBP6FOot-pvwpf`v*=!vz^;7%l{db5?dDHbq zUiK;FIT$4KVdVodW)~C|6y+Cl8hVG%&(q9^j&aRdR5~p!YC~ReA#L&^bBg0HyEGYd zQ|Eu#?>P7B&tJyeYdOs^cTR3-PN>Fsv?feP2M>}4tGsA4owUR#&?RckWqOm>H07rz zCQWzE3e&LkF|RSI_??F;uZu79+Ug$&OQV-8T(X#xTBx#fvU4(X@%5p+s zEpI-jsd0b9znSG&bT5Z$lAm*$u(H7!Vfk-)bZbAUE3au(0ShJvPn~|Nk>km|hfZyG zDJq{6i9?_2q$cVyfzu-w(N?_X`=Fiq&!EkW)N~f8GhTTALHPVf4CS?%t7grm-ll zC`fV$62|lr=)$An!kF%Yrad1>m+=>>lSS7;0Vaq&3bU<7NDdwnFDd)xhHoB{7G8C$ zFr3Aq(7!lHogv`VOcz$|DlP;3%4O>2LCCjl?gIH$FE)Dv92Q$`ae!7;{kPlzFcY1& zUB?ICZF7SN(Y&l76j!w=>k7E3F{|7Yw=ve1w}j3?{3(k^~h=SVUI;NLEW^&1;hQfFu=@wY|vN zO=R70vhFlVZcmb5$P4iGcSy=IlG>YyKN0Z`NvkC3vq;8xVsIsfp~UbT$y`S=-;%6& zlJ%Bk&mbE(qTg_awK@={VUjZ|DA+b576I#S7y%7$J63MAgMIY)Bt9XTIL&YvR}Mv{w8w%gT18mt0A3&IO<{R(b>fV%-a+`(fHG`s|! zEuoPIc-ev1UTEA78b5<3A<*O!G!22K7onLRn$L$8fzVdH{wUhM%{=@I^49IgF@* zk+|i#5qu}ZsEsg6g3;A5W)+MLg|RQeFB0_QoMF5JjK2>4)i7Z*Ow52uvtjZxn9>)f z?1ia)Vd@tMcnH(l!n7oqF2MAwFe4vkMnPb62z&)Wn_$*D2<{9a&JZdLIfgWcGthf5@B* znJBJ?%sr6#5wb=>)EzgAE5DXDZ}GLrx{+{06ygAa@w# zPKMk_$c=;CG{}7pd6tkj0rJj4z6SEcApaf|@K8_yh1O8m3<`gO!f8;r0`!GtPS78u=y}- zegvg1P&yV$_rVq(w)BQAA+RMKwrqkeM_|i4*isK$U0`b>Z2c9sHG^%dVB0GwYYF8V zDAx~!^2Jbo9V!%1(Ge>0pyC;9ZwTAtVEZH3(Gqqfz>cd>=?s-WLuEDWRKw26uyZx+ z`~+1DRE>wK2e8W=b_uYn3GA8)yVk(2YS=Bn?k=#~7j}oi?i|?t5cVixPk-2x3ws_z zbqlD@fa)`_caR?TR>9s~u=fq@YYhA1Vc+kt-w*bGg9DCmpeY;}1_zeIfl@ed0}i}~ zgBm#45DtdI!E`wI7!D1GL&oUnrv4d6r&oG647N8zM9oa_cCv*6@j zIC%+9*2Ad=a4G~&6~L+EaOxwRR>SEIaC#D)o(rc}!|Bs-`YW7Kz?mL!CKJw_fU|Aj z>;yQghqE`~>{B@V3C>x=xt?$?4$kd|^PX@%5YG2q3+H#k1tnbQ0vB@N!Y^>)cev;T z7l*;cX>f5PT)YIA%;8dNxYQFaje$$yaA_Z0egRk8!PVYyH2|(giNp48;?4vz&*GvE;<+lH^k=$ z`@s>h>7oAkD~H*K#==?g^r0tkRor~|6YLi=kGLb>cjOT~sxln?EC(2Cj)%cx(Rh3l zZnfr~Sk+*?(7pu^G>kT3yYiO4(LBDh*S(t4_iaBd7ki!bhD34o$-x-2+&no34p+4} zl>j*Ycb)#sD2s%aw4iF+xp>g!2-@RuJT=ff-CI?GQK{6X(Hybwh0BmrWqWZfm>UHD zfT}}>c2ymqnN{;IH3v&CVT!!S@DR39{!w*R`Q_HoMlWdJw%uz_o2j&4meXT`x~A7( zlj&+Xm##wIl&%o8zk1VUrkn(kzbbgd3zky!Yie}^*PM@D%>4Atw6APIp$Szqe`i}T zU-Z5@9fHL2t8SY6!mNOxVKHv2@WklO)xj`DYTeA@9T81sES zggwz!nYTS~gjMaos{n1Ga5_M##hB;>&uM#^^(yC!#B28)?6(W^jlN~Pc8YcEHeTD5 zArf4of#P5HF2iT>()|YZm;Wi?LF598zYEmgUu}H{x3e#rwzHWLxSicx%zV%U(Q)*_ zP&_oUcsNlVD5xw`X$x^Ks$3?nc-W-b_Z@Iqm5o=wtMZ>a;o1>gukHL2@z%o_{Be@c zqp{GlYRe-Pbh~J3!Lp{N$6~*~@%sikGhzoeK;gcf-}sNR3U^sq68pV1Z+`j3Syoo- z&Jp?D%Y(kZ`){?MKGx#_-P9)yV7s{V$sCK%g3iHjrirS_2Ic@G4x;CL8xk7I=tgxq{zD zo8zO6uh5y8ZPI(VN$=#N6L?zauG_*}uHj7w1=v9DN=IJ1;x!Ew2fysb&lj%zz-tX( zQC#;j04l0}f5`$wi+{Wt-Najvl{rC`sEhXY_tOmOr9xF+$*SCzRe43j#ks!@(?o)jXyLlp z^Gzl?uiJ0j;etrtyw?W{=x>^7uh29>``X@ zBWYB|lG@V`lK4Xw-}e&RD+HuT#FdYM;=6jV#9kb3%ra@x22Z^* zKQ!#H8-W(B_E@2`G>%E&Ps$xVc@VD+ms_}9Zec#+Ah`ClPF8=i(OpgFi0?mi>fS++ zv5j5ag5H!L%BQ6QottGUw%t?=4Qpy9R_xBp5V(>b@?klw(79@jTQgx5E2AD2#H9q?2 z{~DqMkrFJtri;)LvGO2|{d<(g{wHJ%v8FK_YZ|n%##qThN8Rq+fB&WHPVW*o8X-(L zbv5LHi)APNzwq-(t~Y~x2T%$58$mwWtwgr)c_N$mbZmE_W>6m-y|GvcivOxd9(Xt9 z8uG|@09BB`ZF@QPJB9-Bv3z_?Z1$%&e!vj%XV?@xYfKch2XVMQ{9eWmhpUJK)9Ig) z`lT*&0FUw`x>2ZM>SFNj5^CX&2bL>nyJoVlkR8R(XpD8=ZIL0niJ#@xXP}$-Nz%2N zE6^mNQ39{cK(u7bZP_X}r3BHEL#=u3=~CS1!xHkzXQH@Fa&b33@s9=@>N0h-fvTLQ zem{K+H-&Gh(>tg;cpwu4x=g4-hpr^{l-{@PpR##D7yAWfjWwm|1 z;)F9M&)Gyf^T}y@dLBLNl>gyoOpc_k)&|~-R(0w4`9*PEEBrd-M%|AXTiO0q2fm_p zeK&X`4yoVYVm_XE$lk_KAkQ9?3*_0uQ1CxykNg6fmEIP-zB{AzV6Zd0Db$kUe97daJ_o54_$;LNT8u~EM2QE~vz-MqdZzy14o7r|jJB9W) zP#eQ21$0nf5?07_fnl8jzdYMzxTAoEu*UGG0uPGU8d8-|&?#8BOPk?5)AYOR&6i#8 z_WvA5`7)5Ue|Noy+;z0t5TwGh=M9E)DsX|^>X#}|L8l#pcBwHmn{GvH0{vo&^oWOW z7Ka0M`0k&zxpeuG|2_r{9vqB?=LYa+1{+Rrc&NR{AeccD*A0RtBA#Az=Z#-pUc7wa zmG&U*WKZ2x)U77w_v!#M7zmJV*vjMCcP~S84IYUfGem1(9z<2Y)4&)2A46XY7=lT% z1%7nlW(8B_I;_AIUK&1FL3fmzTjPPepTXZ6LNr)-^go5KVFuprX@jTqK86$< z)W*l~+6FG$L~$~$G={}GNQG$zD|_q%pXwI&2p+gz-P!^0yTkp};Dp}^ zFh;BD-p*jp!hvc(0ly<0*@X8&s>mg~39#W}#LEMV@ zYh358>6zFoIX`HlZ)za-;nuqR{cZ>IHk99Vrdy2`R8wn#m7MJ&R5x*hg)GdkE^G+? z=eS=;_U#JjZbNe~$bd}4F)vsKC#(B5#t#zUuEDb@95MSM0Bujr zpWHOOZHgV^Y?#>$xY&=>K#|gt`}e9EZb3yu_TwLPXi5Co54!! zX}t77m3tuPaONRSdQuW;nAsc}L#<(Lb5lQ+HHYQkVQAL^>@@fJZ}d05c7IK)FNP5< z@KeinhF2|MDO@$oXbG!fuHj=#m<}O^QLXSBis=Ta6)c8OLv(AbD9>PMjew6d7*S%3 zW(LPL5M&+5cl=C;Za?y->fzA`mGAo**0+HR+;v{crfumC18(kAL;q@*b|5f%+U4ch z5654f`T+DX6PnTj zAIYaJ^%*5qHl>w6OaASsv+C!cJB;cax@msJ)SNl@D(;`SaFLUK!sssLrIdonVD**$ zk4O9xn7gH-x@2R!(zg1;-lsY0Mq7ON(3Cco0#4DLA0%H@$>z;vC1qT#RvN8)>C;Xn ztyaAJxt)sspg8^#kKeeax_=Wb{hwZWyZhCydnaxlzi0bI=!?#&H-2T;n`$~zGwojm z)%3Zp?VpWbskO&?)$Ng-bkbg`+HIUPjcW9CkGl4j)J1p2IBB3->snBoU<}pK5ML=o zMIW5d(Ewj5KqWn(LosudDf2jHj>1fQOOb9-K!|U604FU}9oQICKJ#$ccBd9oHim7Q zo)h9Ec}uTr*3#EggrY6Q6-5=CWm{@y+(FH3Ur=+p5Iv6-H4N?maj?~JsRKM_sM=8e z1Ad6R&+z9DFbLg6zmC|saIm_#6Rcz17x5k|mM;jH+deVMW#aObU2fWWvGfe>pkC2& z`OG-|c7ty>{0Jw`kk}1cL3_i#ZV&-i3@y8ZCk!x*=njwc?P*`B57kWiNIQJHLE&~o z;m)^5RP~&aD^ziXsj#;rPW{vBjv59NPx@8CDj7i2b4!WE# zyWm_?psu^LMz^SCu-DWfMfl76lBHa4321a*$w#XDMpGZDwE0h@XK18n&(+$Wp5T#9 zoIZiB(_L~hsS?B{KNLe$0mQQcy{#THmdCK+dj%Z z#>V74tWnpj(A7Smtnq>R@jacsE>FE^rQD>2|7z0uVD9eUP0Cl-ew7~RI;*w06C~&T zsvT+%x=$zlqLw^XN`8YSXIE|Bgd+X^S-DY%-WO6KjoNbB2@j>s&*scNk}bTqG< zl&7-%;Zu_vhIT!`9_JbF9_R%&7=Gyi2_EnH+7@)0%JN65GA^X*xU@KVD)D!24i^Nv+C+7oWz965c1G+PsjCtXr_5B^ZL!o$wOopwBl${7$!^QS zs({?t6t`O{==^kA$o-BtU-XEVtQXAT7B7>}tQQ6*t()eSKPz)=(yaZfs}r}Rl%*DC zY%JflFO{|tjX!Zo8xrxr9^WE`sgh{d>b5`Pw`7W`0`;iw{1eWMaM}>x3wpvk!?9k_ z3<3>rd%-lYs2<)MKR$QM8!q>UD)xvFTfKaMJTEjgJQ)aE(XS_Z<2)2>m@o)@ zFczs81W)ucG4x#Zl^*>H^g1r5HPnKoBWe`7xkLSjj1DMXvM;n?;n9O9@0Q)+aCsN6 z%bb@TYM9H_Iy9u~CF~yTB8{{K)6uHa{@43djC*y-F>qhsYeNon9^-hArhSz@s+Vk? zw|BuduC_&Ox~}0}^?|{sMqioOI7Ct}kOrFT3nEJV(!!``J{7i7%fnRZN1cOd%Z1rn zOAi)plB_c%RY9|D-0PEfZXSK}J~ zMTQDClbQqcL; zmsjsftxhd9Y~8izL>BFy>1v#c{hqWZ(Yf}PDyuBB!cfi)tR11FL!|D~5LNZz!5Am# z$5KN3QL^JJ_4gEL7d&PkOm$7EgSPg4O&P}O1?u32eZ8c`KE-pl`e%d{r52_Zh+J(? zYPHiicm~xO`_y$*)9DXyQ=1*sh132?Q&CM`KYGz(Zdq*X>S&k9F-hx3yXA*wPe=+r zop36tY~7CJlC(`F+sZe*$abVtxV2eHWvJxax=0=Er`FaQ2TT1_h9g7p7Y! zR6*58hJgk+t#FNcbvY1Zxc)QrhuzhV!@&+1YF6E91XLiP@g%$Y7axp`fHhe8;*Tdr z84mcuK&x0jdv^Myq%cmKWlLx;gUu+2HXkGuJ=scK3P1MV9a5b>3N|sVKk!oAQR@9l z@;*$%-b!JoB*sTo3)pS8d`;sTi@L^YOMl8)&`Gp zumGwIS>rG_-f(st_~QSZWN0uRdO)sW+;~{1Zq3u3RQ=j;Z#?`0S=D>}VKhK@gXKi% z>srmXk(ghlD{3tr5pavAZ;Xd^(kJ6F`bpx9YD4%$_zlh)#!tdeIj0-ECc|NU^&d3v zD;)jPg*6VUd7~THL(+7TIt?#gSUD{x{NeU%Rp+WXnyi{UY2@@FvqDQ|ZVoAEH`1{< zdds}xd98!I=6Ws8pSx*%Mkw8VoK{jBjLjGK*f&p*f>gP=dAT`x+;-`a?x*IGTQezO z@TREp$ywnzjlVto@FYhUsHSuqmQSymxQo-) z;!xd2J+o>5-Z{ZSTfuN4{epN#GEZ|{F)YqIb|BYUVy>&SHy5^_-#Kb9r~OK|(Ky}G z=8+vk$M@=X-f_d3?916#IAf1ET}vrQQqdr(T)lYZszos)5|hTc=7i>sO9|%gpIDo_ zi_Ycgb~=%&q=~oH+MCxeU3zlhX1CLh;meh^W)h+MRobt!#!MPHWd>Ir8vq`F%Y=>7 zV5XhXn(u&tNOzp08&Ec=B8Vu&%}$w|9l3$)wlaR{6c@=$McMNo@7{jJ zNndG_PK**G)<<%+D%@X-l>&PT+Izje($VUPK4&9u2kZ!OI&&wac=(nvg-%8XmG)(? zhSW-}z152b*0SpO&HD1#60X*+u7yrokJ+)t$H8dbW0JYlRx%$zM@W{^2&pG^R~fE_ z;y7Da-6RaoGmce)1n(rixpY=dV~*p}1>Vx>J*wsz%;vy!{SQ=m?BnN;*U%X z>uj{i6nd)GA5zje-o4bnKm9E**2lJ{pnc4*9h?C zCSkBLG?v^m44;SJls`3u&ci4;+^}aJ#>A@(Y$S{{Pv9kM^|FN3v97C@8>U7=JO6%Y zu$O%ajy#leU6hT9c}QHf z8ANKAE(S@vtz{MKpnbwt(wIQvN=|B;15q1C0yMLOT1WgXnjS*Nk@1?pLs}=3r-p54 z%_CM(>rj-%6;fpwmUaO&H4HiL1L?#~_~n<;U7L{mK3p>?ocIx9L(A0UFh)=N2%?ft z6f0EFoo4F`^i^S5Z9pn#Xcd-P_lgvC0SReFD69z?Y z-84vyE`Z;uYA0E%o>=#zKy$zR&WZbF?{B|1!u(sl6@;y^SX;D}sv~fT7^vvM4=V5m z$utK@RG!KEqCAi#ntASDog9!NOpDwe;o>tqD%iw!%f4K*A3Qt?QJh**H7V5w`DE+Q zF0WlxEwuFCqVQX=dgcoIFAJ5`r;pbbUK6C>?F(V4TA>|buN&bmYDYNeM#wSNwNYR? z7sop|UhunRU+iUEd(S`J@zC0IW4H>JUQei79A5AX1pNw|2N9 z4FmJ!92wipGey4BchihpQ5hy5@@rrWHFH0(GSfFhU{d4`FP}}zqtqteJNH+b;oX4P zqanbt2v-?|@wZd{N~_80^Hw>~fsI+m`UfTXrP{^#R_(8jt;SQBy`I-i(+*N##n1s+ z=N;H|-X_8}!g*UEX2Y0nrk zT)&&Dlv>A-kz_O76N8g!0sT)5>4Wi)n(rqj#=a_y=Q75D47ry~^2}j;eZGwOEYU38 zkAY#(Un*WIs%BBIU=7x__#@Zdj#fyvR&3D?5w8eSw0`6}e#CVN%{)LXl=-+G>&>dW z@&4*(>$5eWm;CGG20fwA50LbJx3C$oT!dXbv@Hrl;;yd@k!oLYSQET$x&&^h3Doy! zuos`v+*o4K<*3Nqd7E&&=vxlqMF&zSV{`h^SFz;0%uR$YA+#WlBoRwGH6C%PzSKRQ z{3SSwEhDs>6?^F91frOw5v3k_5W|1Umq`k}Fwh$pD1*N5#R-kjrKxAS>c?%+pVF{Y z#8rGJ+YZ}t)bh8Gxww<TRZ-CX%Zi~wKn-R!Vd8*lk*hXlN%Y|%M5u)(TqqLa{sqogHEB={WzUJOz zrR|BKx96V{bYCG(!Dd=8t{!*EnBAbZ>Zf_hD?{IS3Rnj&| zD9`Rse@`MI1Luis0iK-yA=c*gAsLP)?BJ{U&v~1g#stYE_tP-^885k=25#&+`YH)g z%>MLzGI>SZXif@da--?H6s!quQvZWw(a`w_+{0T@l26uyYoatPD*~Fu7Ma#TAzc;p z*x~_<`^5g>nZ8FJ6P`gf{c(`YCl~0HRKy{pXa%{h$0YA- z0k<~Z5e!FueUq&E`LirS?+{&-iTLH8^l>Jc+ud3ePR>5R?AF@Uq9c{L*^`efsehLKLRG6$hiTg}*9#N2VUjLakdVtv0oA1knOTAoji5NqmM zfGF@Xy1xM5Q%;{3kR8N=t}DbZ+C;w$iLI-`QYnBvj3^U@N6mKr`ul6}+48C2SvN7Z2U=3pw_3|+LfQ2E>4+E8~ zojg(7UJ>f*x7y!TV7ufe4u%)_9{0&N?%|vknC6w}XUrxKSfHBdowGK3S%Q->>p$Q> z7N6KexjM5f=S=q5FNb zw3Ga>Y#z%S)-}NV@3X!od^yr!bnWdWWV?K8{C?@Xbh!FjbGo7>>g@v zR?uS7`h2Z|<)MIPJ9DyPeN1z+HIuEgaASMt6Dda{ZO#^3t>Kg>APYf%)KNx#Iw=l785IiB^i%oBiSB| zy`Vq7{-d{;Bz^+@Rw6<;P9!ekZS#c$QMzD7#UE^yeA8`l9WE0|OZRySH_G>=7nv2M z#g?4!)||{si>sLvyb`5BL!0@*iqIuN*1oGfPx(~`pBI?F)=u$ncaS~hGlO#0B?eaJ zYYrbRKe0xA%B9--V1Dt5Lm5kQY|8947v3BPgDfzamW4QfIc$OO@p5(KPDB>Nb}xvs z*_Y&#;t=C0JgA9EIc9b|IU&Eg8!YEpoz6~CV0mQB>8b1N9bE1F1Zdz5M__5xsUf1t z``zWnK5s8Itm~nI(JHKexo>!Sz47$!(Ke+xi6788rDP8_G#-|ssIm>NZ+)Oo77Wp> zD?{`FQ@)ZTBwwv{X$k`UgwIAeS`DBFcDvdjt!g5M;-zc>GwdaLvkuEy?*&s*Jr6C3 zcP}|t{3Q3apzDv~9A7@&F3mRH3TU> z#KF)Ekd+I}5(|+H6aA*U&2zuze`mu30WY0gn+5t~G0piMq4mRvZ?+i?EWr@~%=9ML9zOfS`G2z^Hj zPY{bXi^O@q3DQwGO8-7Vmh>q^CWw~^@4--d(p=j75z@qdFh*p-xc&v>KYbRg?L-%q z6YLvNpK{W-le4Hb{Bj@kG3`Kx7ewUKymC@HE?k_C`;A*I7F8Dfm2+Rv@pu}xbH!Uv zl+qPYi^cW4bO`iOxwG^;sOn)i=nM5c$9%Lt4f?I{#b`jmgd8uAz6254Ojxh5&|22BA=nA+@|kt1gTD1T za|U=Og1g4IF!3Z3x)ILD8i z+d6<{KG}gK_6L1IJOWbf+ZO^`i+dUA#Q!rKI!%WTP6rE1Dsr+|+e55<)tIXST>PX{ zoq-B$`FByV3#S1-Fu24zGCMhSJxP2Nt5n%*vTTz)ZoE@&%o`89H@f>)&`&3^Ipq|ii|M*M?8{Im3Bd3w;Qx` z`4q?GwQ=4xACznazsd)$QUhdfBf`9(5_3umT2)C@_7)-tD?yOHUpy;H-}AvqYXGI9 z^sN@=ifm&)SR!|^{=oBab5cofS7C%{ zqS6@>rp6LlhAK)UScsR@1ZxmED5QG4H)9lbQzuOQ-8Ls!W1ANE_~M&)7vBhMxfW$X z0nC)iv}WwoeawabU?ZK`!oWiw*{c%Vv>newG7iB3P{7)pQ?48^eaeW%0;Fi$PE<+n znXV2_UAo|hYv-x0*}wvoRASYrHV%~80*VE5WKdJcV z=*!vHPdq;UV%a$(_)jaC()Jz5q`+Huo7IYQo_AK3c-()dbSa#oS)MCk59Ga~#^d42 zQrFs#N~hw9Cl}`luDaU_;HFo6J`J*?jm86R+cAD2>tsL4SZfJO6;QpBRm-7^K?PLX z^3saOzHFVgRxyJ`jE0D{%y|MhJFuKl&0}A(vJ>F(n0XwB$QLZ~7SHbL<|}lOSo;is zYWH87!SGeP_pLQe@=jV4?R|T9)t=IWLRm^&{@HF?i5|OvsDd|jy@){XB>Lhaj;lmE zu!ijK(jc-8ShY5YhGW4<`!80v_g)u;&^tBg>Jvi$xP+ezrY)C9lzKvApYMPPagTZ< zSPWbRh<8B0$4@=q2)%=@!OL^GjaXUKUy=Z&P?oUopXPHSnvI z$1ha9D5@18tJz1fi^+#w1py(G_MTU^3#p4xX1^=zqe`RBTUA>Ww0 zYv=P7zKb1K&vP-(2`+I+^1Y*}JYV$J5xG+|oTo!h-OnRrHHASz5S!;@vU@_k?~(?niIkWP&W zy*38qQ+lcH)fZySE5OzCv^LRP<;D6fVZA4gJQP;pmKJjK^x-Q7w}ms97Fqnp`uF{< zXyXx|to8LDU%;$#7%NoDt(m$nO0Y*VzIfvaugpLU%*H<;xe5*l(ehB%vVp1mJiuLy zigqzebEh_Y-88#SM5*&)N)BWsWS1N{lL}+gw98QYx#t*mCk*9Dn#7aw6@sqPMX{BM z8(Alh@mXq(Z)%tzJxMy8s7a_4Zm^~DKSJh)u8hcUEdd9dl(B~hBR2D(R}$7R1eKqo zpM!i1N*Fn|%$DDOEaq7BF~Lx~0y!8EfWdhqrupx#kPd`@Do)2Weiv=IN|qX-oVfwZ zdP6qdoN-NTGpweLe-canrzkzOg0nQ~PZHS)+KX5NQJmkwM5q@cdfRG&u}$Jk{}cU)+n`o811fx^ILQ79yFB%b@a8K!CqGnU6DNBEoc#2%t2Q;B2Xjh}W~a~3ntg0#xd7w7u<#r5 zM+x_mt{oiyWRbFm7n>8rMuCecU3qbF-<9Yq`-SCfeLon-+uF}_p6@Rt4dwTol}Q)v z8*lP>;!SJ_A72t%a-dYuCh8g$;cgpz0{zz|xg@#LoKs4wzC(=rM4|){6P6QY+A-j* z=mE`*JUgMCq1XmJ#UeR;-u%gW2iO{pZimd`y(H#Vv9}v@E*$9iyE!$2z-X%(-EaW5Svzwpq!wh`86_2B0{9RH^ zrqOqINlKf&BIv2)Y)PqRcP&Ak*EQPxKJpYs(AoFNTlE-G`tbtk&%JS6bsi{cyC;i& zw>~OgqoCOwx`+saKdrxCe;W*#9wvKMO&A}^KcN2<0iUlCT8rjn$P`<8TvbeSGxr|2 zf%+vo#rPc)rJx8z-A$RnAeE1$T`$`?Y3{kp6I_bV6y42vfW=Oeb}*men&F%;OJtV9me46wNYF?9X|GFbpol zhTm?~@FAI|P7@#G=Y6GS)HB|D|N1XQ%Frs8r(RbC!xiG3Yloi%g1+bD()#d3Bg{DU z>#4eF)sIatzP`rnaRuUY>vOEMC$&WiY5k!H*tVE$yCPyL<;_d(MOLg>w@&eOL0|dk z!6M}1Moc$9D)J}G*!u1AIq$5zm_a}v^(Ny)-(<&V-_m_$F=hJ&gx{1*f1=85kaZ91 zxoIA`E9kn?%FAK{U>ZPIyAr*MMa`-l4G>bwcV%omcn^)6!1Uw{*BPvPCZ@`AagX1 z|DbUV=0Jt7k#6&XwtYk5hzrelL$XMWX6jqAl8_jh_Kr+bbrr)*HX^&h*$j(z+r4fT zyERcc(S=V0oj~{HIy7$P345eK^pvhh> z_5DD4tNV&~8>TkCY#Ig1o=n-_{Bw^{JzvUqJMVVhu@27;trv#Az1`$|#3=1Qv!(pP zzZ7|_&6~p@JJqN$4*be^2iDGhqQ7wtd{!jKX2jf$7bI67yFj<_Fdvto_5RzFyi(Ch zBRl0-60EP;k-fWOZz1dIrM&dy{Cmx7i_2@A;7`oRHYhunTs(TK zuv&m5;B-Zp;90;7kskekeuL$7%11KP;IIf`H0UFFWjsuD(Qyi9J|2)cKBvnQd?b&A zf54vl)geXXx+bL#aabrNMQ@GqWStD=QQxnmhuH$vK0sEoXant~pPtQwn*GtPzYv5)GgU00<|{4x zN>b&6L>73}l`g4A52O&P{Dxy;kjC#DepgQ0o<9GM8C-8V;0Ng@{zsI?=(WVHhQ)OL z5B%CgG(JDbR-&GUx!59@hyB2hjYde36=1GxJWfA_&In59>x`J5)`(dk`fZ^##Zubz3TU)O zd`l715PR|xivX9o(B@AF{q@_UfqB%l&f3t{-^e6G#)1K8o;J4TRYSkS>hBjny#ILN z2WbRZ1B?@)-8xlsdvH|*xOjQF_%BLYn6x0NtV+pF<1A;TaDew*EMrG{gO}WEt(UWp zXKmQsjkh+A2w+6bxr8&g9!m%@7!E%F0d3ts_1~373$v5~1`30>PV57NWB%A(#t?@|9 zTN9)+)#LfF?b|~)E{fXMO3p}IjC1uWH?z*v;RfL?{m89 zCmG%&Rn$%bo`4ky`iL)%7H1XO!&ve1Vx)9AvO_R|mj1-!{Y`KF#PuqPe)x$caTv8O5^moUTuGfV2?}%3+=j0dS0J%=g)`} z<;7YLY((H8X~bq_J0Lw8J#p8@Ahu<89m##M{E5Sfb=CC}PuS}5ndhyhjd+(^V` z=JDJcK13BJd-r8B9Vc+UB#sseoMoGFVwj!UD`fjO`byvyn$?KRmf31W5y`7ziWLLS z@Ppqfbmu<6@=qiAEqCamHry0!p2W4`_H=k88qR7$sS-Em+8n@+p{2izp9F)o7-}i$!j{R9oG{ByJtJDiqz8q?KyiSc}KP9%n*VsYR}CR zj;b(*bom~fV91%{8+#aX5_v>N8FD^Yr{@@Qj<{O1>A>|NHPo^LXKji=Lb-GPf&M~gEXi@$**?%C}#!Hk*LN75;X zbj`uQOW9Y7E|w)k#H-`gvlp8$8RnT8Qsj~x_^9a3`8$_|1EB{(W5TRPGjl7Zbje&_ z_fzRgU9}2TG^j=d5m7)tot6bMEYE!EnYm&4-b%F26bg`a_?KIh#CGC3 z;cDHM<{EL+$$9$8h>IizG(h4?_+l(}r@(94w=*{tsURMmx!z>4CZ;nQ%6Ik^|K{no z%nfl7f;4KRUd5RNP|>_DoD;dAY1b7!lCftu)0i8CqLDyjZiV`acsL!bKW#m+Hcj(NTeROjBMr}E#pi8@ww~Hm%=E35NU7`7#QJ>3E;2jCr)Q_-9LyCU4#@?} z<#8Et>9H9-ij|USZoS9wMWg2|OG9^@SpUR?#6+4XNJr|&x1Qcu+O`}1DH|U?z>`a_+G+#{)YT|p*+8~T4#x~&*&uvi zj;WI_Ks!_$!0Y4?I$fppY3Yu@Rb+Ss+Ov5gT$j8W`#*o4+M8NpR-6`}*ZxAc<~^;% z2HD3(yzP-H?hA6e#DBiQS>SFrk=llr4YwO15_o+~wg)SUrk4#lxZqQTGUT%JYd3TV z6SW-_*pzn0ujs6E!_{WTCUg^96Sc?AEX6%_Il2$st%_-NeM(Qj8=`f`05t_x@w%?5 z3P+}z!AvHO%m^r5ivD~DlTwq?1zo01WAh5W;Ln_!*!R;_M3{>Y`LG$mBR9+u&Q6V= zxvHCIC~@&IXSPc)URwZy7lA1 z*Gu0X*F)C^>F?6!!N@?~=DO7_!b4!j7Voh6Tk0{(VX3tPjliY2?`;+%ciG_J;$(ZL zr}AQ6+4XFbv;wbyQnPjEuWWp6a;+|U-x;$#`HAP_^MuVadq>VSnJ_P*#Kz1yS0<_N zmcj=DY(#QmQc@yjxUzbTh+VCbOty3Dmi1A40!DnVUQ|_dxFcJYgc%U&fx=Ist9k{4lU@x_@lY- zFMiXsV9Su%!WpahKbF{Z^V|^_vBh-z_N}`%@7}UIB5KpVWUmAEdwhiS^r*ebW*N~3 z_a`R^1=+OxMz^b*YnMJVO}~=)B>h3rs=_5nPA^U?H)_`2a6Y}nOBq{aRUW!SM$OE) zx>Y7(+)*d&?HnEktF$lCs}`f@#=Z*4%4#NrLNC={Jp9oGO>1W&O-M2~KsIlCfrWoP zF17^YG?x?|VXG+h?!*RSTo?#>yws%=IEYf@0Z?k3&ADAf|DNg={nmrCRpVjqeYpSO zHgIoHs{IxOoI*p=RbZ&E9SMIaV2BkPB8T4$Zo?2Hw+vw^xM?zO(s9jB^Hf@n-{H00 zGtygNf3~1H;f(gd3NUP*pfi%^y^(2qBUs#`ZgEm*2Y%BHz%hZ zzg%qsjdf3Scva@2#Og91u^O2z?yp0XS(kG^WImsqqSg%V!=2D4S@fTNxYW8)d4DcQ zJ?`c1XEo2tJ|BC0{_&A|qo>d&0@}Ibdg#{>21fo^sD;PC6>W(^YrIrvENAV&M8Q0o zJAenT8vrhf>}fJx7mNS2t!FKA$9fz`t}LxZRIpUgKMu!u>8xu~K(cF$pKzx-DzVJ$ zNOEH4*>3Q$zM25>itKRq>&OK#t4PmDSpbHs1O1dYQW{G(N5qGqHe zXN{s~&7Ps$4np!YoriPLglyLw8o@OZ;zg53p_5Xyrq^gLP9LGyljFD_gsjyRPv8s) z*`_%%kwZ4S8?FA0n?ttIc9XcL$O!s43A4Pl)cbdgrEBTg-??@8*1lF;e?l7RqRCt> zTE19J;S_|Z=)|e`-VK`SsjaVWpdY7kuK3@Q>D(dX4k`q1CyznMZrHSG9*)b+cF3hC zn=iv)+HnRqihQOsTK{`N!)D+ObJnEK;AHxEN;$JQ)C*pw`Ll6hzD#e<=Iq-Cs*A1F7pA4E%v~?;P$=a-Xi4%ej!d^z2;B)Xq|F9xl!M=pXaAWk|D3 zo5#H(w=|pQbH-%cd6gD1E&`oVUAsR*@5is-`q;s?Qaq6tfL9Eflv=8ynM%fdnU~^e z>$d3DZJN6axNpS5QWb-*8M0YHq?LJwpJaAWtorpluJ!o@d|p96F5)c7QcbtToB@Y7 z!fYv~$!;3^rQCKx%r$S9aWXU&^0Mxi=oM{(X!t5l z`ODbe#0(|ausE3P({9nf+2wx;u2ry>-d@GcSFBZG_S0V}UsDZkilb$swppwz1^~wQ*NTtI-S_%IQ8^u516}DAsKUKR`r5 z@<4s`1TaKl`KTa-L)%6Lqi2P5uvJdI8p7#KTds={I&U2Ouki+IlUpnD2eiqS3n3?{ zj~&;&)#Tt&N7%qZTI~%U{<1gt+q~7@;2zo={MxdUmfCT~W49tbtz(>S2-=QIe|JRZ zaWj10>OO92m=UC14jrR{js7dWmQJ4f<>m13m*$%OwBv@6Gj!M*&VET)t3VoCC_|v1 zKHP`HDnkpgDA?$i`9<1)<@Y!LM}1%VUuOdg5%>Ckog$>-|L*zv|7iTBS_q=A*Wds$ zq7 z5C}T@wtinV9MLRxz;W5fQsvQavuA{d+S7Q4JiIUhZm5_ev}raECI_{y`e2054$UG zQ1_n)KlUI*kw6GHW>WCPS?}83TS18G6(QPtfm0?__MSmOiDz6Vc?n8imY?Pyd#635`Yq*hq)+=v~+LrxOnT26>LN5}xe zN8=S93;y>jnlzS5Eo~)FaEFCb5AZNsLI5vtpmItJ{!$hJQxy8G{0wdzAHeP6r*eN_ zy&KCOEPMHh+&--LV>y83AeIwYPGUKQ_1slPpseY zE4jB^D))|$;okFWxevTESAoAj;`L9wj{A(|3y%BBZQ;IQVc4$3b`?LE`-@j|M*RI9 z%MUC+xrQ6LU%VN=P&t`jq#hv)2a7B~8>F(ZY=}a83cKIq1r2#G32G0ip}Lc}Y~ZSa zsRPRfo*4LOpmC6DP>n&3gX#_P9n^QwhC!Lq8nv7H=HRD;Ukv_J+N*9`$7^KMk*!7! z92qt8?C24rqesV$P8gjsI&E~u=uM;dj6N{>;pnQ--^Zw=+L}&+zooyOe+&N({)46M zS{LcEwsFrd0VV-10p0;V0SyCM2XqdY5)c#cN5Jzyb)ZFH%fL2)lLDs%mQRbC?l#?f zhTDuuGcE>o3hEy8D!5~C|KQk}YeH;hh0K~aYfoqoX@aS%WduZYh?qIQ_58#0jSI93 znn>eJ+L=f5v3+6#V~@uji8~f|N_uPRCw(;0)mjhh8?1ky+&Fna@`>bcl+bbXbIQDw z1t~EpNhv8Q4^orU5~QX=BPl?TWs>kOnf&!X%H+o1GWjI5ZSwCj8UBCCB>UfGGN#d( z4r7Ln88`O%*iX`QZS()Fd|Ld6eEk2P^6CEnl8+0HvJ#J9w)L@a^goyDca+lvc|`xUnk}1$_!S7u4DMW$W_%r}<0r!}4e5kI5gD-!H#KzIw}{ zyry|Vo-&Wmt;}V)UvfX?-pjq6yE`{CcVq6l-08Vva(m=<$l04yoRgWeI43MeADlBW zr)f^(oCZ0LIW=-ro60s7Z_3&9M3qGF(IRSM!O833@!sU=5MUK(Ih=TeN%c? zdV0E)9-SVXK0SRzdiV6E>5bF9(>>Ca`gGXval@Srdp8uOv9zaY7t)TU9Zfr&W=JbZ zTb(v5t$mtRYDMbn)FY{fQd3h?Qro30rVr`OM5%&6Dkub5?&=-NH~&Uh|h{oi*FQf8_%t5yV5=GS)3vEZS2%o zef?PH6>LT6iuEh}SF~S#cln*=Wy^OgU%NbdS@<%)Wi_JLMu$buj1Ga_Id(ms(B^gR}k`OoLaMXZWQh=_{_i5MJK7FHUT7nT}E!xF<* zg)IpS37Zxc5H>k%>^yOfA(VxF4ZRXt6q*;BJs>nSG%0jV=<3j*&?%uqLkEUB&;B$! zes=imy0f0m+7^5#cz$r-pv0g)K@Df@oe@7HYKG_Zr0JH^&891+RZjafttjwYAO!T8 zWZ-l0-)914rIzoxvS+$*g*3iqg7mp&OOyKiE8>I2LF!=N+hjWas)wb4lx43s6Y*E= zzl(#^)WOe9?s3J^5{n}iCoDEt?6B0tQeR4USZHOBzZzk2z+#ETO={}cUJ7@dtgM4A zd+DvCi)7*CDz$K`C5?A-vX^I(?{UW>&niEq29}yqmQ!cZ7Jtb_?vbCP`@2*>S27j* zOXJ0+_VPL`u*f6j=UQQr=WHRBi{X-=vyZ2IMdqe6mR?wTVCjoRzRMa*3oP}eEa!S< z7oA&bByF7pDYH&X6PY1-$ql5pb$Xjb;;)`q0;N86^=1?Cmj@R4y0i4CuAhm_pfi?M zl8=|8)Y~h&mlAK|bNqOCKLkdH#R+^u*ut!aM$5x5rv8?oyxn^~x63 zk5YJU6jewMj6b_0DTmxt~)pUWp2 zu7KM{Ot=!RglM^4+(BZ>9pjD>JMIK`oz&oNat}!z?gjUT_@aA$PnvTTTm@;ted2zQ zmfSDy7wLkNYl!BjDb@-unWJ0^A6f0zdE!f4iQF#`0lrj^;JHjLy8*ZPcPII)x)b;) zZ2vQf=JzCA7PpDZ;d1#%siKLO?h1F0`&2zj@#{O*z* z!DaJN+$Me@zet`L@3tiq$#gP<1e3WWcfy#kc1D_%?i7z8&A5@4$EDJMo?QE>h#(0XR{(w7ReN|MtcydR!Xs#e4Jhcptt# z-{7AISMv^J{NKEfujYM1HSZIv1$2Q|9ZtOpYg^6|P-}=SwiB?n!8YQU*kC&zYaO=HA`>09 zS7L3AZTX7`A5P-1w!#Jfl56B))Q~2~!`o`MW3kTxulN*du;!ZYiuvax+b>2 z%Qd!_VO;~;M!Cjz4Ayqo{!6a09gQ{eN~+`<+fi5}ucT70vAq;)-~S}&V1Az4pFQ`x`kKZz+lui4#$i`3S=x&LdM|L zUt~1WpJWu$A7mub?_>m0BN>kLFER{i6&Z@Ok_Dr0+;iq;E+Nq;GH~9QP;bhV(V*iu4tFMvi+)IwO5S zIw5^dIwE~WIv{;Y+9Q2}-iPBJleS17kv2#l519$M=_P_`7VaXchx7vRMtYuj zAw5UxB0Wp$AU#8BBR#Dro>-kCwUC}99!O6RccjOO8`5LM73oppg7gS#62~1TBGPi= zg!B+`M0$`oAU#0rk?took?tckknTmjK$F2?NFZY+AK{3IL71T@ zLDX>7o<&BIYz(&WsQi3bHHPL@V`#37A$|@St;Z@<1`$771`$6?1`!`3gNUCggNP57 zLBt2iAmV4pAmXRXAmXRVAmRgM5b*&rhWM#6hWIHmhWN=chWJS`hIoG&L;OS;L;M68 zL;QFdL;N_zke=hm${^y$$ROfJ%OK)M$spoK${^xL$ROf}%OK*1$spo~${^y0$ROee z%OK(h$r$1X${6AY$Qa`L%NXMO$r$4M${6DN$Qa^#%NXK&$r$2$${5n~J!BB^-DME* z-DD8)U1bpQU1SjPon;X5on#R49c2*l9b^#k?PU=0?PL(~ZDkDcZDb7belmvm)-s0p zRx*b8mNJI;7BYtT<}!x(W-^BOrZR?jeG?f(d}A3zd?Oh|ysr!*zM%{vzJUxPzP=11 z-bV%zUrz=R?=6Ff_mV-x*G2Qr@pWVj@wH_P@t!h<_*ycCcn=vvyt|Ac-c803h9-z1 z-bKa`@9Zsuh!)0FD6^k%1)xZJJ26?`2%3W*w1+Ox1Ny)K7y=_<987{h2!h!V4vSzZEQfeV zf@DaCP3U?Gp%e_T9}dGwI0skYCftW7@Dkp_M_}-s<2W^E%2{!CoFnJT)#mDPjkxBV zAJ>8F#`Wd~a6`G#+(a&b3*u&T;d*Wnx0GAKC2&djiL!yq!eF`pzd3edh;|SovQrp= zUBNG=d)#C0W%cJ4!we{ov9TF%&DY?acz3=o29Av}LT!T)X*a$%KY$;~kK!lrQ~2rp zEPfupfYp@;m-rNZBfp8?!WZ(T{2%;2USG~1=g;t$`0M-~{vrR2f6c$=Kl7FR z4+W=CD@+wu3Oj|P!c|dQQBUEkXr^ebXs_s^=&9(Z7_1nf7_0DC1S*0Rp^9+DBE?e0 zaz(sijbgnbO_8bCtSC^FD0V9LC=M!)Do!cRE3PPRD()#BD_$txC@K_R6@Mvy>6Hql ziPBuDQ`S_9N_S-)WqoC1Wea5+Wk+QQ0Msy(X9D*ZFnJJmPUPqk8Qs@AD%sGZbZ)I-!W)Jf`Gb&2|j`mFkj zMyavUcxW1F+G;v$dTWMgMr-^vyEOYXuT0EL98DUSv@_{#GSp6Z=1%qCpudz7c#~H#K?b8lWagEA>NkN$`j445W%yF(V=*Cx{*FUKrj1_YvO=Y0+0xS)$;vGv z&*n=@g6hFpsUWB=_(-pUqTsMJBe)g#OS!=j5F|OzYym#>R}|-{J!l+h%W5-E6+162 znpqPnr1dk$LY(w@=0d0C;&-=qELGI9Hf#p-gkq*(6PSuGwqrSED?@z1_K?V;@bdn} zELYUp9y^_}cQ3mpot@=kUm!A97p*OeC{&-?KFiN^Yve4m!sje9HFDnGRB& zdDA3mUM=l&;xn80%p*SGL^?9Bp$RltLK-Y34VFtk=8YGAkrrm8g$-%ZTnY-S=iJto zv>im+4kv8`N!zWYZ8>TCjI{kgIx0vX1QW$)G7@&^9uthz#062E8YPD#+k?GUPoOR)Y+yO@==r zBSwStE8Ny*Y$6$#Kqi`yi8?Ydi%i~0CL5$i5smFK$jt8~q&bS_Bss^z?E?Iq#K?|&BuA*S zf5Q)Xg$b|acng8ISMXjczKMd5P~zt!ZhC0}EW~=Px(}T+Tfb_96C{|{b|ST8BYo4_ z30BE15nGNv*jg>O+~rnJY$eJq2W)xAV{47+SZvDH-8&bXN%BP}Y}IqY)>^q`FSq=# zCCM#Uxith^>*SUfwz?)`YrWi(AJKmvwvy$R{D=V&Wx~P`4t%8ri>JYP>Dl7p2`))STrT6RQa*TpH50|&WizXOf&o~#dyOJ>0nF?_vNDT&O5E~M5QG=Ve~xD zI)5;B)_RD$P~!&uDKeEdN~*D}YwH_g<$c!8HcQ+o+z@vOx(;$ls_QuYG z9+GdIJ+7%&oU6I7xc4dZd2Fp^s(3N7EF!KM;FaQ)fzU##5x-V{l*1@MjbWJ`#(VA< zJ2u1+v=xT7-7rEPf|0iz9n2te$b9?=O(7deHrYao$PTiHTp%~dee#t2NhoSS!%o=quejhc+<<%k z6&G;8DLHe_hI8OtxH_B<#sn?6_FNZ?2nKVbxCz`8ZUz^^&BJgYhFit0#ZX`q1_Gs+ zuQ`BWz-jI-_Z;2-S9JbL4126G;nVpgHY#!zMT#Bhs>>B86&KM> zKUBO#7tItul}e?R(m~l>*-tr2IYAk!j8RI;6lIRGM7c+KM0rkm1HJ7_Wrb2-r2>@+ zx>|dco61YoMAa6ZZ6DPTbhcAeL8>{b1uDI2xoVYaooXvO-dn1-s!yt4YK_`bT}$0q z-B~>V{jR?{SRJ8`R>!N?sMF8`7po2Ga`kET74<#!Gxb~b7xi}yrx7&P8V8NL##_@w z(?-)((@!&8GfuCWq6yM0)D&wDYffq|YHn&iY5p>?F>x~SHfd(k%VdnnB$F_c6(;LV za!ra%_L`h9xn%OtY)Hcwz(00)F)DF^)*6Jr~gSBB=y*5^xq)pT2Xt!u@YAa0J zn=UntGd*ki*7S#&pIK*g@!4kE%)KV zT(Nj!$ysVGy)AoM23qPZ*H{)?p0a#y`PTBQm8Df(s}@$BtVUSPuv%u7YPG}atkpBC zFM4aOwYzm|>p|9Itb?pWt>dh-taGhPtan-;vc7Kp#`>4eLg%7usB5nqs2i!9sf*U7 z=!$elbf$AyVy3tHr=++cE9a8+k3WeZH;zlTs4BdM2PT+%6cuqX8JrrU+VVR*xyPY_@RDa8=M6b8T50?UEHMmaKHvI_p;k z#%qhGiCRrUYW&uC2OM0JfwqeU8hsL5oTC#kF9;d>a8!|PTKGs~z8VFTA)LPA|v{mx7&l%Tv!o7a{5{vYqgm>))(sv?)7N@yMj1U?7(JRa zl8&zR0*&-;t!Ob_)YcNer3l*KuYy*6S#pp(@RoMc2q{DIsQrg%RB3eSc3KGb9BOnK)j(tZNnp;>@bxXAuavkxT5?F92+7i- z6(0o5GfDdBqxSSFxVR+DjI+GxU=N)8@*T$VpErk-ABHXf5d_^@c#n zIwi!+maP&hI~eU)pW3XEv@WH!b9141f8oU~*EGftjMuVyLdA{Wax-4gvV7@nile5p zxC7r2Yb;r$y7g%yd~b#jF!oVbxZCb_6P7toMGvw;*p#y=FMF#-Ydf}XC(kZDGD8ao zB!^~XWMpULXteQyai_ZPl+mGcoii8hn4CISd$(#eyC5Z{dUQs&^S!%qxvlXb8=_{T zaq&j;C+OS0+bMjF<}cLdtc#Gm^_YWpi_$njjmWIV5&}#JjGvm27L=mBDX~;9K2uyQ zd8D;3*@;?X z|8MAtH{&bQsf_~TZM7^|Fs~)Di|VFEFnTsKdX3){S~w;x=t;q&oi`6X_J79)2+eo4 zEjo9y{POnu%?vCKd1he(Tc&2hw#AI|n5|@@SSpQ7r_e_Fm_ESkn=n5?lRk6ZxS0+) zD|0po=NwKfx!nJ*vzE;lJenny_Hh}XJ11vWl1AFRv4b*4Fi!a_{kgFdMi%umYJpxF zlrcrRnK1@-NKG@lDWe5*CQ16tR?V9V>6?r4S#Q>O(WZI(Ba8gH)vP3H?Zkw{@h%%? z(MhXj?u*+SpSOBj;wC98cWZIVJIYosm29$nV5QVC%TIGsShww{gEmx($!f3aE~sa+ zUef6-FG!OMlGZ5nT~OfYs)kI;|aEIrsX+3~6%Yhh73hB-oTQMcroS=m`RnYkJ*Ge~1| z9Hqn@dz)Q?wze=aK4G$RYOt1Phme6s(*B%g`a9y1h{f|4FVYz6snXKZ(o;6#eM1GK zy|Jcq-lDyeGUjQtRjzl0*VAg|+)iiO#HSi19*`W^1gY9u_cp z?gHj0{EgwM|6n*}uC|599N0r#lz-Cb&?@B-Yh^I)JFRB7L>LEm?iDp;Q^baTRR#< zbeXnnEU#Zi0vnLP&170TGA))&yF;e;Bhzn?89`*mHxe|T1U)3dW64Z=GV>4#nL$Es zky)$AY&$Z00SR>^p-;)25oE3@nVU`Kd6F`aQo0IU*WWEWRKbXvaO%_Zh3*M52 zda`IdS@fDLUO|@BCri!}eG8&b)D!(H5}8Ss_90PzB-)fjKPEB7WSKizh8rPQ$%+#s zb`6QEN8%F6%GP9MDTxLpg4@v4Wl7<|lT_YO?ko4(fV_T9@pJYUmOe>N( zhh%jlS*J<%YO-ko$!SD#-jK~ZNp1qk^CMd<$(Cf2&yoB@vb6^(XhsSilWm7c;RI5o zB}G}JcswbwB_+vZdk0dgA*GwijucWBN_H+MyPl9gRuh9C+3iO5EGB#PUS#iAvfr8P z??(1-AqVWqfnstnfE=1h$~%$rBjm6PIh;?9gpi}2K-|LkDQr7&O9Y&*O7BQ$ob~vf(N-!K`w@pOHIh-Cge(OawUdb?Le;HAlD|6 z>&?jZ7v#n+J-IoZ+Ja8uuev(I8^5_bAOv%&ESdo%Fp2(`Syvpv)v2zB~G-L~N63*L5sheUjwz~?>G zuYv}Lpy4j??Fx;iLgTv7#21=Qg=W*B`7mhV2`#Qe%guUdRRpd3f}a3w`a+vLXd4gh z9H3n}v_AkHHbKX=&}k`j{t8`&L6@`8br^J0LAMXky)$&rgdV=o<0j-z@0Y6Z-qWfQB&82L|4RL1STXZ5aF&hMb0>n_*aQ814nb-@}N%KtFODjMBsC zH!x-&jNK384#NaXm=FUKonYcY@c#oQRl(#^n9>BM)`h9pARq?di1NuDB zp8-r5MCu^YOAnFHVW~GPO@gJ5Aj%!0`a#q@h`I*R97KCV^f-u4g6Kks(Lu~4h$)7c z&#-JJEISCxJz;qlSRMt-55fvpSTP$`NTwH0;?rh{Q(kNK;lwJ+y!f# zVa-ffa{|^>K+vi45s-2SQpZB79#Rt_btk00fiw$9 zYYl1rAuSZr;vnrRqjh*n$To-U29P~e583{Zy%4gaA^Re1(!i!VuxSNs%7z>Q zIWCaX6mq6QPBi3Pfz4{z>;;>L!RDE;ISn=+ht0QOa|PtqhuqPSI|FiaAomyKc|%?@ zwmLz(twFFg6AE}J=n4fRpdbg@ux&kT+YH+dz_uGu=n6%>p*RJK^P%`O6yKMe4sO;Q7uhyr5GyY` zbx;S8F5Np62+O6e;j}C`p()y#1FrElIRsnxV0mogD#vZ>9_sXW8_$2%Gk*9*;fpqfJW=y39 zonGOTAU3Wi01IYy_*R1X;0OVq+2MB8i96O6(UQfP9ysraGrcf?$T>3%4wU_MCKfPd z7Jcp$r_2<6SbEuli_u`4BI=Gr35>D~+c&DLN~Kb_j-^P}moGp{+2hN@!Bi4Q`$0Vy?qv_QxVk4sx_w=A(~IWDh*!+w3g*Y|Kbu@!FXR8x`+yG4c)sX@o*MUh=;^RJ; z?Z5YUtm7n6WxkfxMXo*u9uOKbbL%e^cdPl`CJlK~$Ln|IP-bk?rQeMG_Y9(LfTlx< zut?hcWFah)T%Qhy)@2b-RnYou^?H`pt-dYt_w#=z9=QSAaXAXt5+VB^))lTY>m>5` z+IByC;2^WEbJY;}*)f5?pZ)hDwm;WHmgM`w35un@FJ_s26f3P?+3F%A$xh*a5{d6W zBKiJe7_5>8zpSIN7ZHMkZ8u3#FFT+>j=uDR6Vk7jQQ#y+z3PG>81R?9^yrmePbZPh z7N0RUX2WXhR+O_qQRi6B7Kr%UIOdAa7w0l&W;=P-0cPoAgK zG{Qv}Q7O816Bd_?%#2lhb7fki2@}{<@iwccOS~oMhBHrf9YGhs)`~jH0z~{ZL)0Z! z?lzj?-irA$VH@+tTWeor{@7j3cmHa>6U)a4EZfy~t6;uTs7|}$0yP(#3A$ykSfFJ8 zrnN9zyx3IG(J$B>`^Fy%%F5sH0CS~dZ->_DD$2|pWlH2lcjI5XLCDGrnUxzdD=*j# zsl&Uz`cP4KX6Z$x?uMUOIpO;WTsP+3WPXZ01l@zk%Svxm<&x@tHV6~Qx0n+4F%K3Y zR*wIXf}`V^nuUB}gPGEL5A&>4uqC4IuRV5bkyyF@$HFUu?)&we!b=w&m`nZLMq6iN zYc@^HRPWE7+pT+O&@dOt^t~IZV}tjNaBpnFdk2`d_Pvdi_`ZJK$>JM%u5DRt6ACVi zWl@}Lc=>4y}wZ@C{_;f!?R!#n*{5lxbp?jlK?LWQTJiVi3*X8 z{65-t!Gg7U3tX@lCGkOiDHqv&SGHSZhnZClCd+p-OY6PN(rC%*vaTXC!D;ATJ62bv zGgLa_f<&$%hBEDv5{+6u}4GeAJ^Kb_Z4wf$+kNS+uwaN;jn^2G04*<$I$ zM?Bmhef$^*Jw7s$hw3JR&-c{k2;vn2o+*%b4J*E18 zxmRodLj0CJ_g4qNhS~SI5Ftfr(u})~=FNrw0#t=OZ!-Cfs66sFqz38= zh%DhVL>BRhNI$WvXD8J0NSp+l|C&cu&uj7w8RR#jipk%yy%6~uQ~`KfCf+7h{^|i0 z>pMcQ-d98%>h_~j-}^nr29-Jy)z|(Xeg6C-rJI25`z%AO;(jc|tBaYLE2eIju|{69 zMUl-(KNQC5-?B)SjY&Uw^~v($r?RWAw#-RY#Mb`atFmXoB8wGk#R|G)4}?#eyto2+ zZFvZvbY>~&PUK@o3x}Y}u@xA6f}?BoJ^%2u;YZ4UpOVG{xTp__O5JxBMN0u{m}_|71ewIS#DgEq%b@o>DoT z%R_xQOE>Y*4zAG0Jp6zG^q~UxqFzx4CG4#?TV$MUo@kcrZN_KG-iBuVhquYhV(aNI zC3sfbHQGuAHYS(EUt|M*@J^<~RM59eRyFe#>?5;eP9j*;4t3B}FP57*B5oF{*xSpPagr@cWnWfTw;SzART@62h+1i& z6Pz>*(SQShDGkA>*kqfio4~qKW+&etQl8v@;%eMxxo5~x+xWm%e1Z7PTSbRM0pNdaE52} zfGwV#>PM?=!54;7OgPNY;^3kG49>z1ylh$nw@&-f2{n+Le$-F{E?CVIJ@FOivrV<$ zu+ER);FFVU!d%r+@%>)>ZE26}I~ii^!3C_6L~AzU&E_W^pS-x=@#Rjuywd?6*Oxwb zfGJ=?dpp8f7*8KKf+O@Z{N;$7w{Y3;!wFAj!5+gUXH+1Ly*607f*lWg4Rt)=5*T`U zLIe+U4M*$3Xn={-#T)8^iuUk^AL=1O<3?GG(mwU@$k!_Rv>u)S%QH;zfrkL6Y1amD z$mEjpStLmcOezEXM?q!X6Bc`p)OA^@Q zsq|ArSZ+B+Fuqr9+?ReZ<$%WcC@+Y{`a*5ENlSdIg?hmkVq7ipBg!3PxxwiAJ(&q# z8OnOGy}~zkQuw~Ns{T_N+6e7L1FC5ZOW-11(HP=j8pX`gWEeujn&6J~SSmKfZR!~` zttn2sk?v^<6Cj8>Gy`XjJ*BOiL7?S8q1h+ar{vJ*JDR~+O_^X!W4>%H zUDg~Ax^*(NZ2=-jkGF<(u$7MTLpi*ser@oyTp^8Z13eLFSK8p*kYQ-j4p#H7{({@G zm~j8ujpM@{$HpY>bkWU;WG7h@^|EF$Q={}b^l?XM0ZXZUC$w>{w0kEAg~N1jC-8vI z^g$=M@7T1W&K2?9m#62Rovyg(CVoJ5ZOhb;8TWh_4e5#tPo&Cj5DO3J>Tckqz>k(b zw745=GuZV20L565xfmRKBIw~b4d?}J;Xcjn1zs?fUhIWu`?Q88ykEqkWq7S0?1SlaO@DCE)E6%>Q;{{KJNiQz ze^AsL0td(_@}$QGLIJF%A%hTN(`bjmFc6K-+QIOM8!yn7L!qHTiTVgMV>o<(8iv&) zz#PG6*fu(_m{k}x>@giM4gQ3a)NeYRLCmUVz(IpP2xf55h`yN# zjSVaWTmf#-nzLc54f|7Q!c3VTdI=}S2Nnmi1xa-6Y&?)rm#RadBXpxZLtzzcp*KU( zEG(mV*zGLX(dKjEIgBs86ugb6)NJ7qJhcLE*yJ{4p>*XEm`vmJcs4{yx9IT<=o~sN62{uF`$By3Mu$o( zDz;UvIiO^-zRjg~BGIO2(Z);RWDQq&$0qwn8cP)^(V5S2l!NM!{gsa6DDk zCz9NvGw|CI9#Krw^@N%9N)#&D66z8SgG}{;(NeuMHZIb6#X`C`8l|I+fvI3HgvQ{h zRhVHox=dc%5n3}AT0tGdpjdE|yXVHq*z86xt%P#Oph@u%1EJI|0W!dz?n=N1bfnxW zJi5}*U|5AGUSSyZN`w-8BexSlRJ9WDo5X>BPlW9?8w*EojjV`%vhvmFyLe;|zvHr4 z->MgW^w=6W2D5dk$p&8VsCF$U*DHKDL7}R&6H`Ae|wkady7|&vukW6oFgxWSQMBK`q zi92^IS50zG3r-uA$gHV#1`MW%2X(|-?borwl(reRzro)m@|{wNV$8YgAX{D~%!j{>Z^M=yO3- z>$a5}c)034m>0nyQ+=0@*SV>j=+Aj?`Ei7GaXfg^n7#v)#-P` z4;^PDt$JxbcWL})$gEq6Ujdy27N=&~ZHsWjc$N~w(~&}>Z|udl6Koouo8)JF87bVS zgL0v^U7lc^t{%B$Y~+-v%|`C7jK%y10)g8CnXChlKbCt$% z#dP(yYWy7A1`*c11Y>`-Q5Cw`X!2~c66Kvp`xQb>m_P#x(ec%x-HY&0mp}C`Mq|^2 z1{I@yET^m(5!4%_R(4F#sX7vdnYc!qBH1-MrUY@bj7F3|KggvgOVB^Bras%DAu7X| z?J$ma3KUg~J?Ax^(QfA1IhPh((U>>=@H|!g^=o@1$)PvO(667S6LzAWcBVx;G4LHj zPwfOZhjpTnu-UeERg32?oV#$IW|~TOeM05ZY3#Ov$88=CL!zbzIBkVFiwV!8@P)6j zjqEbVGyFBR*bR-)33c3!(ZNW=!QB`!!X0Y57k;9l)b2wcvx~Obhud6(==*&b77d~` z_T!kXbjp5M0Uq?-e&p#Z4L^W3Y6d-g0PoY%@`EtVkW&twfgV1Bj;jg1aRfE~6s>&} z5@4*M>?oe1H`ys*Fypz2IT<<~M<)ldH1-7KQ^!*%qMK-);Nc@{0eP$4(eEq6DrN$-(Wnd zHzrxK#2_HDhGdqeYG%~X|RdkUBC)zqD00YYJgTDO_;wZ{oV zJ~6R^tz>-Mr``fp#B$OCJd*S zFXAc->GO*i@eZcSOW>t`Cd@RN4ckkbT|$#Nj()v_mzGf5%Mbzw>9WhHZs%#?WjvmE zjXt`JUSk{maTyOOhR_~YAh?x{F!<5D?Ap$_<2kf`HResB((&l8O1cZ zPser$x=;CRGN#Se2)d8gSWEi;3fi$#)a)wMuvjNB2vvs|RiliygFCmTO|F8kZk+J( z{*l{<@0Wk*$oTv>*39p-A?zxK1hAK$xrS=-f|_23Mc$2{8oqdZX7H`nd&Yg4UU=)9 zbyZ*1LB?$#QCHNVYDDF9+gLPw-iF3EU`8I~| zX1fHa)H0Jlnb|Y8n3mjuaMc09=+6r2kGtr-g6WQX7^C=6@B1hOO6T2&B)dz3aXuT! zE(zu>nRVq)bRgHCZ40MP4`3cD^x6k_UkL5~5aJE5A0hvyl_QuI*c{9=ESPHWdkPky zz94jcQfU@R2R?%#)_8L3i;>4utzBJ>+&AM=Hi82YAjmNG1-u3bGjx9i6FK-`*!m~C+V0}# zitC?_v8KytJKX)%TM64#?A^-!f_UN`- zYTY&IVbWF2_i{XT=Pj_VYTeoGl@pDfW(v&ROEivVgM{f!Gx9TA^QGZeHt_J!MZ%r; zCCs!gBR81#B2(2zM9};{s`eyf$~fP6;oS`r)(vOqpl03a!}s`yFCA&Z2iTyA5x$8k zQY-kos<}IcIDnx#cZ?CjH!Q-pOGYnZuo_N?$cwJ#B~Gwyt)J21oQ-c9JdZl z?Y&MPhs5l3Vyt}Ko5%@`yrQ&Ki+X`2|bpHDITQgSE z-B{Dh^_^QY_s6Q0Q&vt{5uh=rH`H7rn$4*i&R2ooo|9>shI;}obg>Cn1A5c-CY%>W z+J{UyXMn}@fx!7;EbpM@f}kN?q2=nqBwD8B+~5$suH{@|KmDfVJTT&NFy$J-LfXfa zTY$%9C%@V1E>@0hOD~yn^Gv4Vp49s)^YPDVKQpeb^CsaD(|t4Qo}m39#=+|AMN4+f zJT}u{-|@SWwW90HI5(F*;%bJuHen<))BOsn@~H~7)$s*PGqAg8oOApUy=KO3R5=L7 zxu*kYxH)$WX3;hlC#;|sRkyo|WE6tmH zbNlM~<<7I?&&uC5`C|PX!$B{m#SIdJWW_~;d1pL==Zu}TnX2dchjhCQw;f98L|d-* zA9h@0j=rnOy}{V_wmmoBe1?b{iCIPmRl+gl*<8Z}2W}wHI45p^W}IL&XUXgdeeA@^ zW*R@3JHlw%S>!xnKAk3_Jm=H(BIgbkhTS4JiL=58XEZ+AfhlzdKUA$@=c$h?*BI^C zcvsEDfpuUS9!+>Hp=ZGaR$DkZXs4!fl5sPuOQ*Zx^Y+k{ZitUX zG}n!rhv_aycYLeuX=`^}Uiqr2q(1D(uhxVetCK$tQYgY!Wr+QCrx;jf} zqbg*tXoV-&M2mYvZ*CdQjeFT{LxbAfOu$HGV;!zsh($lVQqTomTTTP&a>2mU>vg%N zkVXYB?zuW#T%>&Yz8(GM#m&M1Il!B1XwqC*G)^BJvFtI;^yUV*Y!QrOjbqs}!8p*k z$aaMHL3RBXw%-rGX2ae#RYx7A=JmKvxXyv~xCD!{f_cwxnEU5?pY6>s4u4yZo27{o zjEaUyr8nthANP0$I|)yzssX+jck0!EI{+W(%Lb^)4QP*sDA}7d zup!r1Q;N=$*?kJ32O4s&w(f#4S2aF-b{D z;frs6H+}2N4Hq#8xx%y)nfAf+MqhLnBI^pQEY5ar(+N$64tYZ-HsaRX&lS3TG`w#5 zR1v&P$;dnU>aS%DLOr6pR_j$*91w z6Ry>&d35)o6KsKDR8!6h72`P#ZpL**r&`vGTaE^*b#tyry&AnzCw7FsZ_af_E84gP zR}1Jtm4P zio@KqvgiVv#c>UYL&2b+Qd`?%VzjzGK#f)_v>JnKG>XWpr3kzDD7zE{3RR5Ko?59z zYki?$wK^7zL8bK(i>886qcJLpuf9?5nyqPnvrCh<{IJmr%=3c1?*JYZQePBO4yM^4_*j1)g4@l563l+mT8__yMcyn-c@l{ z#b%o(SIZc7B~y6pF4Hro6jsG*k=Z6CHq1K`dA5;qSCBF=OwKYX6&qz=tu>iG6oyXq z0#BPx>Dr(f_$o$t6>@l|gWL-d4`p{3hi^Z<^ZvG*leUy-PiLYBR+Mw|90*b>|2T&n zLz3>uGY@N@WZb#*;FX^K7v$-aGNALXfE;(gZuPe=RR(;;#(W`H4C8WMY$G| zMvnzDe3VXAaA|7N2^BY4TJ&P-5yGwwSVDb-aBC4u30bEMj?bW(!p(&lbOZ5Q$};E* zJ6~Rg)wgq8CS{5;tu_-zLOkMcms2MkvGrMG1t8%a**LdIi_g(#i#R10^>9VpnoB!G zC@;!`eHp>Ud6WqI+@$~9hix&yNe}9DMY)6|@X$E3OdRy_K^IA>Gw{ppf1c?QAT9bvv)! zFQN$1@3`u*$tMD#eXx@vtqE$aR}J*$d-JR}jC*8WEqvhwZJd*S7sC?N4VW`~XE=l& z{~P3OuU+m|ed9WPJPzZ-oU)Qozovb#lKK#qxNPHj? z6t5iO6K+b3>QL=DSzjD}H)_mFfyr%M`DY@{(yoH3_;?BrD20*U%88{k2Y;}(lu{8+ zTrH(l1Ccm!tH*J@Aems0)h?@yy!Frr8rBTjWRb~9MPe)+%NqgW1W7?j5g-0TldU*iABt-T|6G+iW1Hi2r z^e@rjNt3}fPLvv!#+bM9Ko z&iY#QV`aU@Crla>9dd4WFT!rr@%1%}TrBfF0tV&2`2(PQ8 z=wvK-lU{moL`Pg5|3_R$bi~yG#AWtQbs!In3KALYa^eQ|_5#ZedD6S!C+?}F%>x{e z(C3&{Llt)0eyybnVm~xN&519~b?3NpBPxw0d)@M^>RlrHJ&ksXde3r$?2l0c2UpXp z#&fE7viydpRzoW^b7nQghP { + async ({ threadId, refusal, state, reason, nearby, managedRole }) => { const fingerprint = 'd'.repeat(64); let consumer: Parameters>[1] | undefined; let runs = 0; @@ -219,10 +228,10 @@ it.each([ messageId: '777777777777777777', actor: { kind: 'user', id: '666666666666666666', name: 'QA Human' }, conversation: { kind: 'group', id: '444444444444444444' }, - mentions: [{ id: '111111111111111111', key: '<@111111111111111111>' }], + mentions: managedRole ? [] : [{ id: '111111111111111111', key: '<@111111111111111111>' }], mentionedAccount: true, at: new Date().toISOString(), - text: '<@111111111111111111> Reply here', + text: managedRole ? '<@&888888888888888888> Reply here' : '<@111111111111111111> Reply here', reply: { messageId: '777777777777777777', actorId: '666666666666666666', diff --git a/scripts/dev-im-provider.mjs b/scripts/dev-im-provider.mjs index 0c563407b3..ff64b101b5 100644 --- a/scripts/dev-im-provider.mjs +++ b/scripts/dev-im-provider.mjs @@ -5,11 +5,11 @@ import { join } from 'node:path'; export const qualifiedImProvider = Object.freeze({ package: '@xmanrui/dsh-im', packageVersion: '4.32.0', - source: 'beaed4a6dabb583654d28fb09298716267039b4a', - spec: 'github:DoodleBears/dsh-im#beaed4a6dabb583654d28fb09298716267039b4a', + source: '1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6', + spec: 'github:DoodleBears/dsh-im#1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6', dsh: '0.2.0-rc.2', runtimeFiles: 421, - runtimeSha256: '42e1140e67ba2f74122db3d49bb2c8aece239b7d75f9564ce713a8a491902706', + runtimeSha256: '8e9416fc17b44d5af993654794e8a795b1a01784bcda68115e1479b1f6695358', }); export function withQualifiedImProvider(manifest) { diff --git a/scripts/product-artifacts.mjs b/scripts/product-artifacts.mjs index 7d6463a2a9..0db2a8a58f 100644 --- a/scripts/product-artifacts.mjs +++ b/scripts/product-artifacts.mjs @@ -15,16 +15,16 @@ export const productDshVersions = Object.freeze([productDsh]); export const productImProvider = Object.freeze({ name: '@botharness/im-provider', - version: '4.32.0-botharness.21', + version: '4.32.0-botharness.22', sourceManifestSha256: '3331e8f771a91abf396eb4e7ed5c0acc4c3b504cdccc7d715e37062708384cc2', sourceLockSha256: '3476c34c7d4515000d2617beaf2568b2a794b60de9b350cd8eafb7a2bf21adef', upstream: Object.freeze({ package: '@xmanrui/dsh-im', packageVersion: '4.32.0', - source: 'beaed4a6dabb583654d28fb09298716267039b4a', + source: '1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6', dsh: '0.2.0-rc.2', runtimeFiles: 421, - runtimeSha256: '42e1140e67ba2f74122db3d49bb2c8aece239b7d75f9564ce713a8a491902706', + runtimeSha256: '8e9416fc17b44d5af993654794e8a795b1a01784bcda68115e1479b1f6695358', }), }); diff --git a/scripts/sync-docs.mjs b/scripts/sync-docs.mjs index 94047eeff7..530e95d7be 100644 --- a/scripts/sync-docs.mjs +++ b/scripts/sync-docs.mjs @@ -389,6 +389,21 @@ export const PAGES = [ description: '配置 Slack 应用、绑定 Bot 身份,并验证已授权公共频道的收件与原话题回复。', }, }, + { + slug: 'docs/discord-connection', + order: 24, + en: { + source: 'docs/discord-connection.md', + title: 'Connect a Bot to Discord', + description: + 'Bind a Discord Bot identity and distinguish direct-user and managed-role mentions.', + }, + zh: { + source: 'docs/discord-connection.zh.md', + title: '将 Bot 接入 Discord', + description: '绑定 Discord Bot 身份,区分用户提及、自身托管角色提及与普通角色。', + }, + }, { slug: 'docs/qq-connection', order: 24, diff --git a/scripts/test/product-artifacts.test.mjs b/scripts/test/product-artifacts.test.mjs index 469f5109ce..ff72189434 100644 --- a/scripts/test/product-artifacts.test.mjs +++ b/scripts/test/product-artifacts.test.mjs @@ -272,7 +272,7 @@ describe('release composition', () => { expect(() => verifyProductComposition(entries)).toThrow('conflicts'); }); it('keeps product provenance independent when the development Provider selection changes', () => { - expect(productImProvider.upstream.source).toBe('beaed4a6dabb583654d28fb09298716267039b4a'); + expect(productImProvider.upstream.source).toBe('1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6'); expect(productImProvider.upstream.dsh).toBe('0.2.0-rc.2'); }); @@ -287,7 +287,7 @@ describe('release composition', () => { '@botharness/computer': '0.0.0-test.823', '@botharness/core': '0.0.0-test.823', '@botharness/ui': '0.0.0-test.823', - '@botharness/im-provider': '4.32.0-botharness.21', + '@botharness/im-provider': '4.32.0-botharness.22', }); expect(release.dsh.bundle.patch).toBe('./cordis.im.patch.yml'); expect(release.bin).toEqual({ From a1d4969199049165615bd9c4554a35474c60297a Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Fri, 16 Oct 2026 04:21:01 +0900 Subject: [PATCH 2/4] docs: keep candidate Discord guide outside migrated site routes Issue: #1615 Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 --- .../fonts/NotoSansSC-Bold.og-subset.otf | Bin 167572 -> 157484 bytes scripts/sync-docs.mjs | 15 --------------- 2 files changed, 15 deletions(-) diff --git a/apps/docs/public/fonts/NotoSansSC-Bold.og-subset.otf b/apps/docs/public/fonts/NotoSansSC-Bold.og-subset.otf index b74c47334562a691d4f17d673d595636692f427a..deee379cce5e298ef71cf1e7c9134a8fd427c84a 100644 GIT binary patch delta 22042 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 Date: Fri, 16 Oct 2026 04:49:04 +0900 Subject: [PATCH 3/4] docs: record packaged Discord managed-role qualification Issue: #1615 Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 --- ...s-preserve-native-child-channel-routing.md | 2 +- docs/architecture/botharness-architecture.md | 2 +- .../verification/discord-1615-managed-role.md | 33 +++++++++++++++---- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/docs/adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md b/docs/adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md index ae26f58701..5226fd2b29 100644 --- a/docs/adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md +++ b/docs/adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md @@ -28,7 +28,7 @@ Discord offers both the App's Bot user and its integration-managed role under th The Provider uses the same predicate for early ingress and final normalization. The original text, user mentions and source-bound reply route stay intact; a role is not fabricated as a user mention. Other roles and everyone/here remain non-addressing even when the Bot holds those roles. They may be retained only through separately authorized ordinary collection, without direct-mention attention. Missing or changed native ownership cannot widen intake. A disposed or replaced receiver cannot deliver a result from an earlier lookup. -This is checked addressing, not authorization to join a guild, acquire Message Content intent or access unavailable message content. Role ownership and application permission do not prove actual Gateway delivery. The controlled Runtime/Consumer regressions pass; fresh native role/user/negative-case acceptance and installed-product qualification remain pending for this candidate. Earlier #855 evidence does not qualify the #1615 extension. +This is checked addressing, not authorization to join a guild, acquire Message Content intent or access unavailable message content. Role ownership and application permission do not prove actual Gateway delivery. The controlled Runtime/Consumer regressions and fresh installed-product native/model qualification passed for the #1615 candidate on 2026-10-16 JST: own managed role and Bot-user mentions each received one source-bound reply; an unrelated role held by the Bot, everyone and here created no attention or send. The test App already had Message Content approval. See the [qualification record](../dev/verification/discord-1615-managed-role.md) for exact artifacts, cleanup and review limits. Earlier #855 evidence does not qualify this extension; public release remains separate. ## Evidence boundary diff --git a/docs/architecture/botharness-architecture.md b/docs/architecture/botharness-architecture.md index 23f27e2d21..2dd6c45b7c 100644 --- a/docs/architecture/botharness-architecture.md +++ b/docs/architecture/botharness-architecture.md @@ -912,7 +912,7 @@ The #1155 ordinary-text extension uses the same exclusive checked QQ inbound con [#855](https://github.com/BotHarness/BotHarness/issues/855) adds a **development-source qualified mention/reply** Discord checked adapter through the same Provider/Consumer and canonical Inbox seams. App/Bot identity is authenticated and checked against Gateway READY. An explicitly external-only Profile avoids standalone bootstrap; consumer loss preserves external ownership. A public thread maps to its verified parent conversation plus exact child-channel `threadId`, without manufactured message ancestry. Replies check current native permissions/source, run the authority fence and validate native author/destination/receipt without fallback or retry. See [ADR-0128](../adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md). The real channel/thread model, native identity/guild boundary and refusal/recovery checks passed under agent-operated E2E acceptance; [verification](../dev/verification/discord-855-mention-reply.md) bounds the qualification to that development runtime. Product Provider promotion and other Discord capabilities remain separate. -[#1615](https://github.com/BotHarness/DeepSeekBot/issues/1615) extends the same application-defined checked Discord boundary to the authenticated Bot's own managed-role mention. Current native guild/member inspection proves managed ownership and exact mentioned-role IDs before normalization; other roles and everyone/here remain non-addressing. No receiver, persistence or Core identity authority is added. Fresh native and installed-product qualification remains pending; see [ADR-0128](../adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md) and the [candidate record](../dev/verification/discord-1615-managed-role.md). +[#1615](https://github.com/BotHarness/DeepSeekBot/issues/1615) 将同一受检 Discord 边界扩展到认证 Bot 自身的托管身份组提及。Provider 在归一化前读取当前原生服务器与成员,核对角色归属及准确的提及 ID;其他角色与 everyone/here 不构成直接寻址,不新增接收器、持久化或 Core 身份权威。2026-10-16 JST 的实际安装包已通过自身角色/用户提及、Bot 持有的无关角色及 everyone/here 的原生浏览器与模型验收;该 App 已有 Message Content 权限,公共发布仍是独立步骤。见 [ADR-0128](../adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md) 和[验证记录](../dev/verification/discord-1615-managed-role.md)。 [#855](https://github.com/BotHarness/BotHarness/issues/855) 通过相同 Provider/Consumer 和 canonical Inbox 边界增加**开发来源提及/回复已取得资格**的 Discord adapter。App/Bot 身份由认证 API 与 Gateway READY 校验,显式 external-only Profile 避免先进入独立 Session,consumer 消失仍保留外部所有权。公开 thread 使用已验证的父会话与准确子频道 `threadId`,不虚构消息祖先。回复复查原生权限/原消息,执行授权门禁并验证原生作者/目的地/回执,不转发、不重试。见 [ADR-0128](../adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md)。真实频道/thread 模型、原生身份/服务器边界与拒绝/恢复检查已按 agent-operated E2E 指令通过;[验证记录](../dev/verification/discord-855-mention-reply.md) 将资格限定于该开发运行时。产品 Provider 晋升与其他 Discord 能力另行处理。 diff --git a/docs/dev/verification/discord-1615-managed-role.md b/docs/dev/verification/discord-1615-managed-role.md index 2318ad884f..55db32b65c 100644 --- a/docs/dev/verification/discord-1615-managed-role.md +++ b/docs/dev/verification/discord-1615-managed-role.md @@ -12,13 +12,34 @@ The original Runtime/Consumer regression failed with expected one admission, act The Core regression additionally exercises a checked event with `mentionedAccount: true`, original role text and an empty user-mention list through canonical Inbox/Orchestrator/Outbox. It must not depend on text search or fabricate a user mention. Controlled tests are not live-model or native Discord proof. -## Outstanding real qualification +## Installed-product and native qualification — 2026-10-16 JST -- Fresh current-App Bot-user and managed-role mentions, with original-location rendered replies and correlated native receipts. -- Unrelated native role, everyone and here negatives, with no direct-mention admission/model wake or unintended send. -- Verified current App/role/member identity, exclusive receiver window, and restoration of normal replies if an existing receiver is switched. -- Actual Client evidence and installed tarball verification, bound to the final Core/Provider revisions. +The Human confirmed machine-registered Discord QA1 was idle, then requested agent-operated testing in the built-in browser. The candidate used one isolated, task-owned packaged Host, with `consumerMode: external-consumer` set before credential binding. No prior receiver was stopped. A 30-minute cutoff guard was armed before connection. Official DeepSeek Flash was configured only for the isolated PersonaBot's Orchestrator and default Assignment; a real Web DM returned `42`, and canonical usage recorded `deepseek-official / deepseek-flash`. -The T3 preview initially reported an available tab but snapshot/open then refused with no connected automation host. The fallback browser reached Discord's login route without an authenticated chat. These are browser-access limits, not Provider failures or native qualification. No existing receiver has been stopped or replaced by this task. +The six installed product tarballs were verified as `1.3.0-test.1615.1`, with Provider `4.32.0-botharness.22` at the immutable source and digest above. Runtime-bearing Core code was built from `7b8a1da7`; subsequent integration commit `a1d49691` removed an unintended docs-site route/font change without changing runtime code. Local Core build, typecheck, lint, formatting, 80 integrated Core/packaging regressions and docs build passed. The integration CI at `a1d4969199049165615bd9c4554a35474c60297a` passed affected tests, build/type/lint, docs, isolated Host smoke and package preparation. No complete local Windows suite success is claimed. + +The built-in browser signed in as the designated Human account and opened the registered **DeepSeekBot Cloud QA / 常规** destination. Both positive tests selected distinct native entries from Discord's `@` menu, rather than typing a display name as plain text. + +| Native test | Native addressing evidence | Actual result | +| ----------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `DISCORD_1615_USER_20261016_B` | One Bot-user mention, no role mention | Exactly one rendered `USER_OK`, one accepted Outbox, receipt references the original source | +| `DISCORD_1615_ROLE_20261016_B` | One own managed-role mention, zero user mentions | Exactly one rendered `ROLE_OK`, one accepted Outbox, receipt references the original source | +| `DISCORD_1615_UNRELATED_20261016_A` | One unmanaged unrelated role, also held by the Bot; its permission bitset was zero | No new Source, Admission, model usage or Outbox | +| `DISCORD_1615_EVERYONE_20261016_A` | Native everyone flag, zero user mentions | No new Source, Admission, model usage or Outbox | +| `DISCORD_1615_HERE_20261016_A` | Native everyone flag, zero user mentions | No new Source, Admission, model usage or Outbox | + +The Provider reported six actually received Human messages and a healthy Gateway: an initial setup-only bare mention, the two positive markers and the three negative markers. The setup-only mention came from a browser composer automation attempt that did not preserve the intended text; its normal explanatory reply is retained as separate evidence and excluded from marker acceptance. Only the B markers qualify the positive cases. Native API readback confirmed the exact author, destination, `mentions` / `mention_roles` / everyone fields, and original-message references of both successful receipts. The role Source retained `mentionedAccount: true` with an empty user-mention list. + +The negative observation compared canonical table counts and settled usage across 101 seconds, starting before the three negative sends. All remained unchanged; the visible channel had no negative-case reply. Ordinary collection stayed mentions-only. This does not qualify content delivery without Message Content approval, which the current App already held. + +The temporary unrelated role was deleted, and native readback confirmed the original two-role set and Bot membership were restored. The exact task-owned receiver Host was stopped at 04:46 JST, before the cutoff; QA1 returned to its original idle state. Other App receivers and production model settings were untouched. Private native facts, screenshots and the browser recording remain machine-local. + +## Remaining review and release gates + +- Core #1927 and maintained Provider #30 remain draft; merge, public publication and deployment have not occurred. +- Current native screenshots/recording exist locally. A matched base/candidate visual pair and GitHub-rendered review evidence remain to be prepared; current evidence does not claim that PR presentation gate is complete. +- Head-bound HTML review aids and any reusable upstream contribution remain independent handoff work. + +Earlier T3 snapshot/open attempts refused with no connected automation host, and a fallback browser reached Discord's login route. Those failures are retained as setup evidence. After the Human requested another built-in-browser attempt, T3 worked with the existing signed-in account and the qualification above completed. The earlier browser-access limit no longer blocks native testing. References: [issue #1615](https://github.com/BotHarness/DeepSeekBot/issues/1615), [role tags](https://docs.discord.com/developers/topics/permissions#role-object), [message fields](https://docs.discord.com/developers/resources/message#message-object), [ADR-0128](../../adr/0128-discord-checked-replies-preserve-native-child-channel-routing.md). From 34b4078affc70e87fe5c7dc03235ccfe90d21b41 Mon Sep 17 00:00:00 2001 From: DoodleBear Date: Mon, 2 Nov 2026 20:45:01 +0900 Subject: [PATCH 4/4] docs: record native Discord requalification for managed-role mentions Co-Authored-By: Claude Opus 5.5 (1M context) --- .../verification/discord-1615-managed-role.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/dev/verification/discord-1615-managed-role.md b/docs/dev/verification/discord-1615-managed-role.md index 7cbae4c144..e088674854 100644 --- a/docs/dev/verification/discord-1615-managed-role.md +++ b/docs/dev/verification/discord-1615-managed-role.md @@ -6,7 +6,7 @@ This candidate recognizes only a native mention of the current authenticated Bot Maintained Provider source: `1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6` on DSH `0.2.0-rc.2`. Input runtime: 421 files, SHA-256 `8e9416fc17b44d5af993654794e8a795b1a01784bcda68115e1479b1f6695358`. Product candidate: independently versioned `4.32.0-botharness.22`; no publication or deployment is implied. -> **2026-11-02 sync:** the integration now pins Provider `518314f6cf495aea093c0a93b0107de25b66e60d` (`4.32.0-botharness.25`, 424 runtime files, SHA-256 `bc54309720ce66906b562d7afaae99669c2177d67717623f6999e906abe473d1`) on top of current main, including explicit mentions from other Bots. The native record below belongs to the earlier candidate and has not yet been repeated on this one. +> **2026-11-02 sync:** the integration now pins Provider `518314f6cf495aea093c0a93b0107de25b66e60d` (`4.32.0-botharness.25`, 424 runtime files, SHA-256 `bc54309720ce66906b562d7afaae99669c2177d67717623f6999e906abe473d1`) on top of current main, including explicit mentions from other Bots. The native record below belongs to the earlier candidate; the requalification section covers this one. ## Automated proof @@ -36,6 +36,20 @@ The negative observation compared canonical table counts and settled usage acros The temporary unrelated role was deleted, and native readback confirmed the original two-role set and Bot membership were restored. The exact task-owned receiver Host was stopped at 04:46 JST, before the cutoff; QA1 returned to its original idle state. Other App receivers and production model settings were untouched. Private native facts, screenshots and the browser recording remain machine-local. +## Native requalification on the synced candidate — 2026-11-02 JST + +Provider `518314f6cf495aea093c0a93b0107de25b66e60d` (`4.32.0-botharness.25`) ran from an isolated Host on DSH `0.2.1-rc.3` with QA1 in the **BotHarness QA1 / bot-qa1** channel. A real DM through `deepseek-v4.1-flash` returned `42`. The signed-in Human account sent each message from the built-in browser, selecting native `@` entries. + +| Native test | Native addressing evidence | Actual result | +| --------------------------------- | ------------------------------------- | --------------------------------------------------- | +| `DISCORD_1615_USER_20261102` | One user mention, no role mention | One rendered `USER_OK` reply referencing the source | +| `DISCORD_1615_ROLE_20261102` | One own managed-role mention, no user | One rendered `ROLE_OK` reply referencing the source | +| `DISCORD_1615_EVERYONE_20261102` | Native everyone flag, no user or role | Received by the Provider, no Admission and no reply | +| `DISCORD_1615_HERE_20261102` | Native everyone flag, no user or role | Received by the Provider, no Admission and no reply | +| `DISCORD_1615_UNRELATED_20261102` | One temporary role that nobody held | Received by the Provider, no Admission and no reply | + +`bot-attention` held exactly two handled `group-mention` records plus the setup DM. The negative observation lasted about one minute. The temporary role was deleted, the QA1 App was removed from the Host and the Host was stopped. Other-Bot role mentions have automated coverage only. The model's `ROLE_OK` reply repeated the role text, which rendered without pinging anyone. + ## Remaining review and release gates - Core #1927 and maintained Provider #30 remain draft; merge, public publication and deployment have not occurred.