From 66396e82904f79958fff1b4284b44b727a1f7805 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Mon, 23 Jun 2025 00:01:04 +0800 Subject: [PATCH] perf(webui): improve styles of creating adapter dialog in platform and provider page --- .../assets/images/platform_logos/dingtalk.svg | 1 + .../assets/images/platform_logos/discord.svg | 1 + .../src/assets/images/platform_logos/kook.png | Bin 0 -> 1750 bytes .../src/assets/images/platform_logos/lark.png | Bin 0 -> 3421 bytes .../src/assets/images/platform_logos/qq.png | Bin 0 -> 8637 bytes .../assets/images/platform_logos/slack.svg | 1 + .../assets/images/platform_logos/telegram.svg | 1 + .../assets/images/platform_logos/vocechat.png | Bin 0 -> 59973 bytes .../assets/images/platform_logos/wechat.png | Bin 0 -> 9095 bytes .../assets/images/platform_logos/wecom.png | Bin 0 -> 4203 bytes .../i18n/locales/en-US/features/platform.json | 3 +- .../i18n/locales/en-US/features/provider.json | 4 +- .../i18n/locales/zh-CN/features/platform.json | 3 +- .../i18n/locales/zh-CN/features/provider.json | 4 +- dashboard/src/stores/common.js | 16 - dashboard/src/views/PlatformPage.vue | 371 ++++++++++++++---- dashboard/src/views/ProviderPage.vue | 145 ++++++- 17 files changed, 442 insertions(+), 108 deletions(-) create mode 100644 dashboard/src/assets/images/platform_logos/dingtalk.svg create mode 100644 dashboard/src/assets/images/platform_logos/discord.svg create mode 100644 dashboard/src/assets/images/platform_logos/kook.png create mode 100644 dashboard/src/assets/images/platform_logos/lark.png create mode 100644 dashboard/src/assets/images/platform_logos/qq.png create mode 100644 dashboard/src/assets/images/platform_logos/slack.svg create mode 100644 dashboard/src/assets/images/platform_logos/telegram.svg create mode 100644 dashboard/src/assets/images/platform_logos/vocechat.png create mode 100644 dashboard/src/assets/images/platform_logos/wechat.png create mode 100644 dashboard/src/assets/images/platform_logos/wecom.png diff --git a/dashboard/src/assets/images/platform_logos/dingtalk.svg b/dashboard/src/assets/images/platform_logos/dingtalk.svg new file mode 100644 index 00000000..323aaf14 --- /dev/null +++ b/dashboard/src/assets/images/platform_logos/dingtalk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dashboard/src/assets/images/platform_logos/discord.svg b/dashboard/src/assets/images/platform_logos/discord.svg new file mode 100644 index 00000000..fb73caa5 --- /dev/null +++ b/dashboard/src/assets/images/platform_logos/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dashboard/src/assets/images/platform_logos/kook.png b/dashboard/src/assets/images/platform_logos/kook.png new file mode 100644 index 0000000000000000000000000000000000000000..c99421c5508a6e4e91939e55519a7fc1ff5b1d41 GIT binary patch literal 1750 zcmV;{1}XW8P);Q@G0Eg@V0001o>j3}%|0+BbjEsy}nE=Pf$B+q%5dZ)H1awkPQvj1k)N(+tJOBU& zU`a$lRCwCeoy%?_ITVJgX=R_Z#6BH~eI!(G0O7I<7YngRfLIrF&mN&xuZiXb5Sqsv zWim-ORkrI~Z2z>CRYgjDah>y(%eH*7%+Vh1+HDi4wcB?O8LKtE<|c5Pd|})_{Owr? zji!mzM)#Eaf67g?Hn}C--$ZS-1Yb?$_67R?*Y-gpj}I{MMPh>cdvl>>lC&`}0K8$) z$WsA0!k}f6HS0rYn1s#N1);a-;1(N$Z&BDn0*tXq@RkNS5?}%q@tcerSb%$M7QW`;XDq-Y zRs*jhXkh`ycz`ArV1x(Au>cbSz~A50O$Tu7sN0JQpwI(!Jpd*Jz`*l1st4!w^41z3)hdhax3}7GyD0%3| zKR+*i-mmvd*Y{K#XFLz}mX~e){)=g)IJ}g~d7Stffcph>A9LfOX zM9g>|D*vYoJJ)hUekC&jo=P`5ybRRXIrdQa_}QI0;FLHz#8n;4zPGg3P2EHe@Oxmnvme3g9V@@_T4$?*Lm4 z1OljbwJir%0SBdZ9_mv&!1-yE=>}xf925i8h>)Cv;t!LW0ojh2gPu8(OeI2U4$1-i z9{Ne|0O`l6-$Q3=4#ol?=b(6gphkrB4sg#>WeO3}b5IQ67a>_f@;M^Ehv+#do+a}S z$jCV;2k?7{(E%OdM5W(DGgL;DyDmkfY)jFnT4hfcy}!%zU5 zP7DBs2v5?LTQ2~^Lxptz00Uqs%|ST;-9vRtdqxI8_Rw0qbbaLjbPpBc9UMLY#(->} z0$?f6g02jJ;h~M#Lv(+zUPA17Lj^ zE`%DO1DwU*g;D_Km#NT0WPo0jFHE_fciaTXIc;pf&iQ? z8MmX^SO`Ga!bJ>%t_)!21z0-)PX!3} z2)gJXlmg5`0c=f>x1qefm>}Z;0Khbnho~PW(L6-`Gy?z}(|CwFLlR8`5>e)%i3VVb2ABu%kP6^35v2f46DSB|e?oUM z+f47Fk?wFjJ%I9bzC!Jxadx8tn5sSWtUDrdt_FBi9+Ii`khxVJ6M9r?z}zbVrg{L~ z35j#1hbHR7ato~pwZ{b?wI0fJBKWZJK&k=lko`0gUOoU{K%s>K7+*^f4R{$5d?6Lk(czE3s_8(J@EXbq;R`CkOG@F3YQf8j!3(S5 zOUuEF>*31_!V4_oOH9IxY~ss|!V9h9OU)*F2)=T^@N&cOg3I`l)A*v>__E{p!t40b s^KlSZw|{L9ckOnlo44C{53c+C3)`>kng)F4RsaA107*qoM6N<$g0H6iU;qFB literal 0 HcmV?d00001 diff --git a/dashboard/src/assets/images/platform_logos/lark.png b/dashboard/src/assets/images/platform_logos/lark.png new file mode 100644 index 0000000000000000000000000000000000000000..d1372f134a209cfa1149d49532790d567c49cf7b GIT binary patch literal 3421 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 \ No newline at end of file diff --git a/dashboard/src/assets/images/platform_logos/telegram.svg b/dashboard/src/assets/images/platform_logos/telegram.svg new file mode 100644 index 00000000..8e4e9849 --- /dev/null +++ b/dashboard/src/assets/images/platform_logos/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dashboard/src/assets/images/platform_logos/vocechat.png b/dashboard/src/assets/images/platform_logos/vocechat.png new file mode 100644 index 0000000000000000000000000000000000000000..97ceb1d01bd2f121a5491df2f41b7f7ba3adc427 GIT binary patch literal 59973 zcmV)7K*zs{P)&-goWqJLhI5NkJ-IA8YURu6GT4`1U^M z)~zJ8*!q0ucVOMRc;wmxcE~n)2$R`!|09lk=uUg@vkx!lK@n~DjM(MyQ=k3dHjUk* zwH-2Z2l#CxW4nl0g?~F*V3Pu4qupSYd1FM|7@64ZnwEKeo2E|N9SI*&?r`{$=O?-CtjcZ>wwpJ5Vot3z+BwX^Kzy$)DPzwS3$jryTyMM?U_U z$FR0zGh^R~HsM0)BGNK4`s=}oFZ37!@Nkc#C6O{S%>YYMxtZPIYEmuC^@Kpn?HK&% zq#RXL^J|3v$HJP`|Ni0MeB-%<{`&=AzVQ67z4xz{!CU2iv;(}a`_XJ3fKypqT#VI^ zKXUH}A9~m`)}8j;r^R%7R7M=2rE+JuMMA@C;O;<9Q@62m1S_Jq;nLb9ntKK$2I;j> zHqg=5|OxN6cC-v8zE{_bBdI^&c7a{0fV^{I<@SiKw@ zHsIYV->Ds_xA&bI{ed_x7xt06?YP53Uh>kXKk3M$o|M@Zxf_S^BP>6?YP12NJ^{?M?vfqiP z9{9YYpOP_s0f&1R21wl>Ft-3p!sWEWArX$^>YDIIrc-W+lkDZ<{jv7U^9>M04#s_si*F^=el*rKK!`jo_gT%Cp?uUuA{B$ zmqBN|ZVKlf!BrQe@g<3EpYNUxn~D*|H??5J7osN)0U#roi|L#d9YSCm12mxs+2IF2 z0-+wJ`~YOc-3O(6i|X_2{2j-|`QNzg^M8NsXFh+r! zsQLgbxd*=~-f5Rzb~yPpuQ=_H6BfURB|d}8x(3}3H;99c01yDeb>$9W5-S1qEyu~X z7Pe%blT8kOu_)#FVwZ;=5+MjI!AS0+iT(|&+Hi@RTh|qaib+X3bQ;mWSS#IqFmz9I zVDLcEb7{w70&+uF7GU74v0Iz4KlvZu{N(3;{e%DGReyHb);~A1EBBq$TeRAOF$I9~)37=)qT<-prVkUHlC74ZUM_ApMTkMni4;g^zB&bI)Jha(@OwTs z)v>m0t$xywO_&t(CX@t>)|3xGaEspv^$#EYpKt!Xv;V(0{hhe2?VjyGyJu++?5zLv zC;$7%$3F8JzrbJlJe~9DJ@VP3!=5c3TZWZ8S%ed0lMWHdNro@f?*(_q&d!q)TpCe= zVx^-$!cBgGfy35qsDfM)85GEY?{OoIBgLs}05rnfz=%qBdgLlsECCWF&=6TQv`{Bf zS2=S`$dpr6{38bju1*H?%xV1d*}wnhS8Vr%vp>FJ!-m-Ud}}+vZhmVC57g*KJ?FH2 zAN}0tJnzxZdCm(mr}_sg*67&z{JG;yckMms*vg&RxdY9QjnNM>euM&Z+YN!hRo>9+ zY_H&L5H@H6RVAymJ_Rs!d2ytIjN!Q*PyvNdKt@+4W=+v0F zg%xRAQMBv{^WVJCCHRt|$noTg1P)2m&4>%G{M^U?@{*7I;|I>W^0Q}O``&j$Rpi$G zj(0$>g?3k7;<8B@Hv2Jh0NnQJGeWU zNv}g1vxl3&pFR2Mk%Hk9O`)hK=OEZ**OaoUE~!d(f;B;g(Zskm*&T^TV$Jv+%d7+u zYWTj6Q713R`}Y>Z+BWYy%FiXyT-*K6NpO2rhIP*cRfD+i?7O*zVx) z+er`tr^_pnY7n{(!TiHG>bVsb>8S}gmH@E09BtK0*tz*bX~L-(4IrI;Hi;pBV$(=O z_$eecH(=+oYZ!#ub2h&IjUPFgEL`-?|MTYKb8_=lm%rsL*Oot^7IdeJ zSzL^lEG|x-@S2ys;IdoVuki)+P#X7FS!@L-C^(1XnJS6^Q^Q>Um(Vvc4m*<$+3PKS8o6)$1IZ5^iCR{T$LIgN? zWRc_jn5@BDMPa=R|QeGu@Z|Tpb>?&!Pb0d&oy#KCXK3{4^UfeVSAw(!#t!$70ky2Qr)OuyAhL=Z_Y*jB^J()ET0xJY&7KDMs zs?}@ql8JZ(5Z9pjrIJP9v6_IEfY5lJIUy=!MQw0nSPR6+qk1;D0K!DZ09jAA?YW3>>tQlTg5NJzWENHPj_T5FS=uKe7m-gMcgKKkAZ{_*X2w#pst0Q+@EuG{0c z3~s-5>)Ny4^u`}~_zB1VDu-fczAAOB>UgjO-MPkj=Qwew8VoM=1Y312%wd$}lPG{~ zdhC4P@RamIy(R~=MRO>yYXS#OS`Mge#G!l8ymC#s8u6NYpfwM1G=6qxF~NgDZ&6tT zVp*qaC?{+iwGgYEtbElrnd;??S#6m;jyzdbk@JvkPLkomB}p%=Fal*zTPiSVc3_ib zV$v3_`r>=u{p?Tw<=g-D;)^%nQP9?QM?0|UjvQMmzxISJ)HS0lFtqhnSNDrxOG(F6N$ut5~1JIS*+=4gqQ0IY$Zek&%hl7=yDp*3+2Li$a!Q zQwbb;ZmpRw6{tfDSf3_|78ll05asEh(@f*f3m|OqR%x4wAwe=G5_-gBs&_KCk7>!F zmc*7;?{ZvMYZ005Nft|NIz5D#IE%*RnDArhPGbRb60OBQedMig{?C_v@I6;tb=B5? zo5>q>7u^Hq0x$As-G%@5lMjE|Nyq(BPNyfXxV-&PYA?hm=S8?hL(veOMEM{P5h&s+ zmhw4KD9a!P(+C`LuweKRQM}{0)MmMURXC9F6~RSm7EbDmZDG{WrEyINfsx zD2Fpbk>Q6sV69HM1Ob_bjh;$4aYHixIj0>Jpj;4sgb=DkhAu-wv}nO1W97r*h=EfG z$^uT$6IUi_G;y8|CPA1j6a&B{P`v{R488q~;yOi&>T@%}zV}2tNH<0m3}ia=w7|Ui zvK`~QKk=4x|K{S0*UwzB^|?Dczz*J>u={7s>8GC_`#kgMkKg}!&-vYHPLIj-`{z6% zg+1|twbUL1kL_^IR@aaimfo4sU5bdpb-IW8Xc5k*oS=~gj?fj7HX$Ej#xYzZ4HFF1 zbE506B7&^MAN|QnC<`Cep#(<9Yz(3pM^0^c@IwO(86iqgEu*!w-u+|Gde&thKTH30 zOmSP=J=lTyO}z){-~N=fi;L}vKmGb`*W7aB8xK73gjeX0aCrE=PR97?Pgxk^>x8k) zaw{AIw(O8G?U+%@VC5N4x zix7oPZ!u(&saj5`@zP$1v_qFMaA*XM5pwS06G=X+0^rpE2_*aMcmLRFPrLLJXKwxPXlY;WMccBzffpC!Nhcn^ z_n}8U=FeMOI4PHxIWhCA=V)+1I%6XO#i_MsmzA%p1jcTB!&=5R1& zXZJ}fw6y9Dj%jKneA$_T;@>J>UCxt2i#}I z-JF4qaMoH6214j)nSk#39A3^LKHuuWiRQ8p1?Zx9f{{)u2OpMPIED+)j6j35Xlf>kmj5=euBVbTIZf_O($DdMb^V~@DI*_ZBo*4E3*&fFKWMOs;P7p#z}mGd4$+nkEx$KnJF;DS?s77674=WR;zj8^^`FV6~2i+~^y=|)n!ZW8m##4V9uS~lKf@>LB(e6{W^Lp_9qY!)v91i=t~ z4Rnxj!CppxWk5QO{Dq%x3`Po*jy6H>joblp| zFaP%|;>@l8a=v!(zHIl)3#@EX?8J%=ThM4ZccjjS#-T$kqAd#G|N2EQtW5!D55RRWE~vkft7*_JV*+N zF#wIK{hLQY)!+-LCv;8;4&zXvL$Qvdnz2_Q&lGORXrA z2-zsvO3w~N;m6dF1c{hyd0Sk2uTX6Te#Ho)RV2VJDS+F8uT3W0`^n#5b?)E2@v0A< z2V>6zr{ix#*4_{cdp`2mBd3`U<2QcNkB;W z5#YLUQxQHCAgfyc0!;_Fcy$Co`2bVTZYYUxQLIAWLo$*3OSI86+cwJ+aW!#0WTDAhN}{FCz4Rp2+@; zflZ{|kikfc&A4*sD?j!l=Wnz9@>Lga7+msf(d~pEdCj`VyyB;yxBA+pr%jjRam!1w z{dBp-bUAwKcq!uWX}cm`-ad5A*&lu11)us~@BPBx|JBX+_2Rwp_jS>GQg89})7vAT z|Fr$LJ>by)vFD+OJX1Ah2MLQKfJC^%=Gfq``Hvj#j`4+@Hr*+QyOX8?w%sWK7!QLv$un};Vo{{a0}2fb_I=@ARAyty7@wL4CP9R1Mz_6Gau6ah zq)Q?h91*L^!??03*2lJ$Axksrj!=SZYpj)XQZza6njRAdDH<;2>!wtvgKyvKzxem> zedcHX;eBU*;mmiWeOqvM%4y%V^MNmX`42tl&?A0uc_|OiGKH&S;;y z_M3+s^@Bfn*7gs2&|@jvvcGm|jw5G-zH`BWjp(PRbBgOs@Q5WLLN_nufI*tc=nn*f z!97Xcsy2%cB}F|7%CfU-JJLOa)P%Zal@$(7`O(y76`^6ULUd!?=z+3{ghAkv7X8VU z+NL{r*Hg#JygD>Ar4Ysx*JHb~w|C<{$J}typA^S}%cPL5eD<;MRWjpcRtQ|szH#9N zZ@v1T{_Xca{`YSk9I+)nYmYr~)w6!}cV7C)ANaBNZ}*_Ro}J6FCqEQ=**WFqvAX2K zrY>`G29i}y*>iId)2a82GZjJZj;nTj@No~??eG^Ldh`!Hak~7~fBX8rtFDZTFDB`p z%jUhncVk|AtbbYi>V;Q4{OLdS$}@6#x;H6pJP$Hx!J+UjNQa)<7?46SKyw1gE)GPS zWr^Ytvd^ucdRi)EpytXYKK7mu0h|bC^&&C4R2Up~qZBqjXAX55tbAyleQs`AV~2v7 z5br)BoIq|w!SDlt7!FK^Y>?fgAXzn6*pBH)P+I`qNMc+D$66wA|nsJ7zr>O=&45_3U9k4KRKLfkP%CSH8<7gr1Ht+=;JJrT_xxv{3%!-)dR7QNf3h3IgstKQv_r% zOf?yJ&2wWk15x%H(AkL&t-~#NSQEX3d=#mG9?N9r>vxtYLaH`v6OOT7kf0i{Iy5K; zO5+lCQDGW%ZJhx#heNRF=Vf3RZ=eTCHZ!A6awt8+7jltfter+wpAOYY#(64YPQ7$!bDwh~)dh_|>#$%#w z_mIPW`%E=aN1%Y zQ=qYG3E`;#aoAZc&}vrMcTFKFKe@(e?C7-xO%HDeo;mQrARrGdsU?-_z@;%%7bV+D zOQ60&22PsVU6J6xkPVV3i3~yLWL;@ooiO<`gA#CcK{Xag{#1!{SoJ^vE_(T}yCh2k zvWe6Jq$1Rep@oNLu6L?RI+j6aV%x z-}k>?6rul%Y4~qJzU_aFw8*F2qz5rpSt5X~Yn2#9($ia?r zZj@7$IRF{~AR`!Zm{{jDOj3hS64xY}APcZl1QCPn>GaUV#;?N!Liz+ias>{cB&lC> zCO-5*(3rq%3>XZhH-(ok4T(l~3?eSi_`rw$`1fPO2Af+_w{CHPAZ*v7 z=^?aWNKkN;_|w*4gdS3*s*N6PBzdyc$kP~XI&t!$2EmW7lNj*TGx`83v3hZ8LtOI9 z3E8}$@JnW}=#Tggr94RIQre4V9GsZl3JOp&ibpZ7GX+f&D=anV0Ky>T;|3r;kkS;f zXk2!lU}DUaW)Ehyy_Q%}CvN9S&i22)?M*+uC0<@FXZx4EY;xey$Gm~f;PUd@DenLt zZ5gihOZ2T|@8`X8p^c+aW> zG(jX2LMS%lWaE)2URu%fW#AeKh~|kEjM6Jd7^{;%Zu6*q73?k5Zth zWGVMxWPsiR+tqpF4Dpn9C^aoI5|`u5C`e6)bhe#x?Ww=F>FC21d$$^w=x)W`CqXZJ z-+P`j*|hODr~Iup3*j7k*66+hnT(_ZqXtA84S#aN(hx%&8!ZzKQ8`(+)8rM+zWKD0 zF0FEC?I;l{sGzC?AtUu3gBzb%Gz5TjfTDux(V*QIqf8P_799*hLT5@r37A%w1SR1~ zdgAG|0va~_h{KoS(v0^Hq@_4aA+?a85LAx~9zpy2*ieXA#qo`wYEVcP4Vn+uK0+~m z`CDB6iEV!Gs`IwYf78y9KSM*~XG z4gjOE2&D%jkd#S(QUWl6L9TrX23;_-SGyJE^Fq;su=QNg&mXHG1Vi05!Ht^aRekS zc+e06YUDs@S8;nh;ow>%xh#T$3=%wvCLF}nz<87@+YSGq#jB~-pa<+QcSK85Qz{rw zg%ho&_~3Cq8r$<8?c$&XXi1aI=~@t^I5lcF8qCT(d}H0L3GogUMr)t{xAMct-qNUtgv}Qmzf@oYQ2&8!f0qh+G5*HiqT?dL+8#Ye3eAUm-BkgooFlPnG z*Y&I<)3b47X8R>8XsDaaF6|FcZ&nIz%#=EPEyN`*r4tLZ;75y>W2kEkIk;?NAg~A^ zhjC^4izcZnqZG)(+LUhWu7`=#cuAeKLrhG+e(?qG_~IGwS}tnK>JNI^sj=^2kNocC zO`8_jSvG=|Azp>G&k#HeHUe&tT018ZV%QT!V9Eh>HREKzg2ujbW{FKhqhJ^%Z+BifvNKl4-Ij74au`Q5 zSA*i3m9uI%t#?vYp9m#NQF@$4jtCF6+y@a=lpTQ-?qeyOI^ier8Mwo;uC*FE-H5I# z&=ZKj;4V;gj9CL7)v!sI9uqRFNrA?YN*1HQNxSO8&wMl%@A{xQ(7lSyAjud$8n{p1?Yiud_hHn7$h07qTrx{ zTB<27WxMnAu&i;Bgk@Lo2*?InjHxFB9MsevunCZ?2fMf!AC(vkrKDoqImJ^-1>8Ci zE}2f%R;;67g;5ewYQl4k2#F@dns5-)78W*MeAO4u;QZfU@!I^%c?te-8;`A>(@^nfAmr74mjcH-&$UtuK1uxmCoeeXp@*Z1cuie zO5_&vAq72f>9C&WpdcoQ#o-$01So+f=*fJMQ?CmzOrRVQo4)UJM-@)EY7D75h-{j7_dDU;J`~cO!TliN2ML z8wn5A`==fUh5`r}$6PJ}gu!J@r_+aAyZxs94?gP7e~jKN7x<(Xp1$38{pv6MX)aHX zoKCamsR?_hG=CYIxV8i>lW9xDNC%6FzCl`)S}0B}f=WZ3=o>5>+@<1suvAhkyAx%o zZfJ0-FB45M5!K8wqF*qEv}5GP1~Uf)%xc7Tieq4l4xdS&bj^<(?9pXXTpwNz#tk(v z5#Ti&~@h&2(aqF&XtFWb!pEE7j4YX{k1t!n8mM;@vsPT2qpafG+y&CyM#4g;0M_sdO&LQWm+I@b37tc7OE$sc!7vD5pex?t) z#%G^3?oi~?ol7vhE4FO1~1+57T9HTN(M6XRDZe|sR z!$j#+^32X+tH+RMeh$K+6z_?`ytbl)r{`!OLA3#Erou#_uyA@eGp3V;RsVE&e&y2h z&bwCbEvl{Oua6$I
8PWNFWv?0u2`>nnL4Ns#1puw5hL1=Ya1wb%}iFzCtwi6sYy84MUa*_&*Nsz44nnFB_q*op&|0YD(j6i^(8%Y}v8 z!a}>{=8b2?+O@dPqitETAuf)#X4N*+>2#L}ZA!3MR;|UMY9j%N@!+mdu`rg}doe=` zC}9$lc$EY?*d1rmb~0oU0KIgdX|@@X*TXk++hxDSefGTZ!w`2YtM1tKt$X%(^{d+f zZTZz)vP1N?xhGY`s}Q5PGIJJY2XiKtzS${GKoMG`HKfzg;-se2q{5IxIsqvM3s=6N zV$I3GA8ahjZu9EY#Na?;cnX&j3}7sP{a6U&vleQ?@y4RtA(GCD*$|*$G3Y*&EE+$S zkfk58*@H-i2x54Hgds#=ySAVk{*+4^!Vnx9CMgy?!#r`CN;q6rf&(@|=Yj$2Ifot% zibs&v@acd7O}1RMdQD#Wp%0&N&c$$Bq^xC4H?GR*bbI!gEobelEn$c4Glph)dPOM2 zPF_?BE7+P2flDZmO1h?Sqf=U{RuaJ3l}h-)jNwtxoGpJ&^d^RY+t>HmH}I)voH1GR z&mVsD!Ka-3is{sUtfBsZ{1Oj3;SsKD_)FkD?9v3c~Bt^T)R+G_&Z!agXGjjBU zC>UUC1sib5g?rPcc1SYFF=!;ciA1D~#2SjJ20RR&NIGUN!ZrF-%;S)oN2aOo}I4rXbEs|atL@A3kF`PKXt96H* zf~31FMJ;q0n{K(~+Dk6_@FjcP^Z$^9Yk%jui-VnBj%c@N?a?2$!pNMu9Jb1IV6uJ- z7|G6~5e)j|fMmt6c@hE#mw1oDrn2|iaAJcLTJopy(372?E;CCJchc^Y3w+!wU)iSr z_}BYB?Pp&9mzy?j+>sgAr4PlJQ#;EdlNDK2!acH91Gx= zq%q(bfdCo2R1j`c8Y7@X4{_Nsei%Yh!6BB!`c!MOLQhji!{r3De9D1E*bI8?8V4+q z-L=y?mI|MzHeFb=<`dt%=(AtD@!~D>KNoxWmD|UpwVT^yL4O6-m&yK&YajNGRd-H7 zZcvEcdy`8XwnbP?M$=xaDM&=Jc_SViHD&7>!dXnG&Q$7?uS!?XQ|9HE7ii)h1Xv^cVxIduPQE(lmqsNmECg z*YdW>rkij1kJWqbmFJ!J4*Xl5y!EYb%?nmAXkjCIf|#&mJ?eXl^OQu42Y=s>2IYJqWQ9DXY<*wjeAZ3aGg zz+>!yp+|uO6T-Lxv=w4M<9lRljiL`CJhsO~2vW-g+)CgpVB}$VA!V`ysw-n$HFBpOCp^)bt!?Pj;GSmO`AaNKgguGOFWuQ?A<7mn) z`S#6ia^dV7cGy$&ip(v^(0}{lmK$%lD5BLyuy5fNY5f3%MT_Megx(QXnLU8lhh%aD z?T{^ZCW%z&Hb|`VvN)2V5KQrk$LgXWw!88eIpfA`?V@dN+IHF_Zdcvw3;d*m58CCR zlTQ5g<)tN!>M3Y08ckY@)uhm^X*=Yg4U0fGnfOr%1pP{ZLsVwuTVwq-z{txS0%n*v zNb&)F4>6oX5Mr+=E|_CN^Tff#utS?oH>v_kfF;bOfL)V?kC6~U6`*>wr1`f4sSo`m zg;@F&44g>|a%jQ&Trg#HPS~xc718rKOodqi#p+-Yh^U5?v>KR*pdfR|aAsm!1j>ua z7_|aoF%hb_Hfed*+kg3z*fqB3N54D2_@ifSn5s ze`K_1^f)DkGTo9r6ktzzC*@PFxZZG)r#PCgDq)J5v?~{uZ~5XEuetMoP4iw|;Kjwo zSaawh&zWZGKLEws*P5AQFag+vnNBx)d2}h4L%G2h%s7u!g4r9 zT(D@Gp-2Ol=?Ltk;L|henTv}dH+XuS6)~k*hg`fg+hEOORK$UYAdgX}!7T5rq7`PI zA|k`%vL|vxgcomITNiq43()3p!Sq;FojQad%!3nCfWCM$i8)AyHjUJpNs9Nu5s-^K z=Ba&V_m~hiDI_2*mu}w3>&~z3aivJ*Y?*D3E3a%{_{hI}lAm-oHgM&wL&-~brXAu`2AvQ-I6G<#Y+u}~$6Qj?Ny9Jo!(XRgW}HpRu8@d9sq z*daTvd(Nq^jp=m4MrdwKA(&d94cm0ej3>Gl%^%QNi7CMGJ^TBuMCINe9b{|&Lcz^6}A-?HI_KF zp!2ZkpoSGX^pI>@gG?r0olGX*STzY#a&L+4#t(mZ+9nhJBCLIUej$Zx|AO_iseFh< zJvcMvQxmoF-3Ia66@^KM9t@PXR$LA-$*Z6hCqNWZfoFF(PGWO#ljQj(jGBGal^@FE3)2!Gic6!OmJFA~qK7!mI~ZfIM;*k{ zYm59lDP+=bInT$J!2f>s$%EJaT%G6rI`+pKtnXiNm7qY zjUk)pHd(lGIVaa{b5M`H57c*}#ChkP7yE6uU4G^BpMO8&Crw-GwQJcBwU>awC!PSL z$a>e91QISZ3*XM|$zqIX*$9&`qAAc)90K}a>_xJ+8`2Byo zHgftCeDm_A5lTy;nwRtOUeHFb(4)WOz@?4b2(A>Fy)A-4sGsVHEOjsXwS zCRV4=uooaQJL5K*sq-old%H*A3 z8>3ZF(Lj#53X~r^^>aBsi}Sgr@V0}!|HfA?c-O+39V22x+|_f>E--)gJ?!{nUcbD& zwEO%3<0JqG2Vmy)L}l6`fE(QTetgD7;zV!~!k(xnrz>p^kUuDJ97SWGy6_P;Ab7{3 z*+tb!I=s3Vs8JNvjUG{PdQ;+SUIQma&1Ko}&T9xwdT@cM%Np!ZuwrN4N`psc7y}{7 zxteIr2(po%YKa>iG(j~6!wOVcAj@b05Kkqv+cJpg3PfsEC`^n7wqKprQ6bk}cgW&G zd<*~SQy07+b{B8hkQbf*g-_@5^k2ej?33)cPM0|jfEI7;(CW$#@0*gskB}NM&Wo8} zG_Mg_NG*68O_{8&vUKe??Ud;1%B#Jzu}Q3gH!%M@j+t;m75U$ZiHM0yUDlBU8_p%OM=x4?X@kpb7JfJWB|V)U9k0H5Ypwu9)zqa^Z6S3reM zGg-ATiglKcC?6a)m3*x7WGGM}3Kl(US+FaN9%4dcKv_CZMc!I%reYXRN<;z>Em30y zq1NK$4?kp^sCt5GcB$j%1l1ALJ~>YTYLJ5uSmSsQ4?`$56{m(3%*{bcqA@aob8BLo z6sD#WLhxIhrZL=b)JK>th2wVy1R4SGi9nyhB&3rr+Vax!(wb$#2Sz*ZoOk5sKKhZ5 z85$=1!sWhn59fyh$n|GAHXqQ zAM-_H)8lB^WJhYLQFMdvVgehDh*Yo#SMZeWBoUFTDvBShVIHNaBc}_22d!WNl9>pO zEsb>d2v#Bi#dU|2TxZF5?XrVad!X#L|4bNWc$Ch-tJ0j51HB ziBXm$_l$&7f=|kA4pY)pP+sp4mvfWPL^c%3?hgtwqu_x`Ss6sd{p#8G@yD#$Zs)xo z#k%&&Y}@BFmT8wQPp9X7`J?Z>{_afn^B?#?t~vC`SDy5YXY3xE;yKD;soI{g1%xHN z1xXAq0ujOp?N9J%Ur~~TOF)~F!;4~m`cNbZfmh8K;x`h9tA^?g zzOKU_MQG{lO+=dl#V|2Np~4Ra0-URZm4u^KiUVs7qr+T{*EtFap|U$MjRu?A$pp9w zyevG-E8z%pp=3=3(iEW*u!8#dV*<1!hgek>(c_${xdfxYLqjP@2ng3xL4D8dk`E7Q z$)`nTzH$C%)uW?`AWe z6?_Ve>t}y5*`d_lun`&BtH`X9(rQEehy}96lvIo2X*%NxpDIUEM!V(Oi$3z)3*Pzt zAE=6VzrWiTcyayucF>-WeqoEY|CGg{ld)T{TDstAwIa@KKt_Ku2m>n!ECrF%tQgz4 zRV>j_bcD2tA)?9;7A`h1W=~Q9QfVf^DFa@r@hvUL*lnzlj;v`5cH0n)=uOG2CIZAr z^n*}Mh26(4#`Vk^No zFyu&91HnL{TicR7ffp4CK)_WU92(w^?hITDs}|N=cguB-!~TxQfBDn*zIfjwj{nW2 zO`CS!bPH2S_JX-F&6b)pHWORT8GFiM&w0aB4%ry*{m^HRdhzvFoPRa^?TUUQy~kBo zE#G+Ml`nkqtKal7f)1fkRl*ny!NsF~u#2H5>1=zCFhr;UN5S@c$jYLSTwO82j99wv z%V&Q7r~m9}-}2>ErMvxcy4|6NP7XZbq}Q?tK)%VDmE7MLns-7gPcWMmde3 zpf%H}4d+M|8%|0h5ex(%8&vTCuN~e5_TZO2M@Q&V;be|2`hy=6!yv*AZ~=xFj$1u& z$xEOSF!-2%3ai3^2Rn!k#o|CYE<)4M979j%B9yO9h%k&OWj`A;q}vW2#iP2ASswMX zRzb3flj7zw7a=m_O{NIMT_dCs7!79IjDZl$T3`~}9ZZ^flxgN^C%^vOzu5htlhzP%hoW!d9WVO)H_y8K z3(t?XaJ@>5!KqimruF*lM!6CNO<$sc;iN(-Nteunrf&+V;E|@~O;=s;8~^c#PyH*X zdn9-70xvGcq5D7NglJ9wwh;r(X6%W!elD0N&Mx)gQZ%!mgYhiGZpLoX=Qv-^?mX9W@E5Ys%)U>Lpl$g*YQv()Ha3qeIUj{D#H3%sR!BmbifSoDD zdI*A@NiTuFL>_h;14NzVvV(Ftc0ffeetZ90(Cbb=y*>OTuXuY-H~pwK!0V?&YJthD zXnrSLTJe|)^(&Yz=aY~A-uJxisMF85(=)Gc;(vbf(Vzb4`5)5)FG_9wT(PWS=n)yH z&|V4;O&m>Ws6n_8t$!LTkU#jXS@j#A`HT0weh9cH`c4-!6g=)f|L4iJyX^k`{Cyc0 z5SE!~qcjbyaRZ@w(=a&jS8SQ|E5-hBAX`LeL4v9Tpy~o}DYEP&94H#CI?z6>5Z1OS16xe79AGHA+^ zvIaQ6YmY~sd}JVUppevB5*sWjM30PilAKJLIFx8NV|DOegS0&66pxYQN`MGAou0Tv zwPe$mbNA0)ee-sw-}OJ`N5*|4N337pp76u}^(Ae)rSE5N5bCDptCu4k!JYMXF;z6v z_C8e{JB&6#j>K~#e0ECq#InwuT2j2B-tGtRa=B! z06fr=^fbhEux=xy&wQ@S{2Wz!tR3O+e$@iT_!MDNwIV7nn1+$El9z^^@@3+Zr{)^{ z8_XLa4{kz+VHIc>G+snN4LC?@3>$>w<5)N+k})(coZV6WkWKSAIM75{?1~td7DO6G9WA4D+Z2s1d^`5Y>qG;?-sx|l7y0ztZD}bEIq8)DI$h>^M(_^9k7hO+ zW`fh_d7CEM+AakTsWZ#~a6pg0OHc}7a0t6kewmI=_i)xJ;BsRJ6|@}uD|AI^1fNFv zc#p6i2Q5bFg14=W*WvnL(Ez*{g2r4XZ?lqt_IGz;lRp%<8G73wCG^;umk7n9m7aWH z1e<`V{6u3h6|IB-5fMFMQ~-P=wCLjyC*hbQ6v2o_m_-vwK-$OR5`tX@&wx_=CH80S4JhL6Y+oMi6 z=phH5v@@5wO*gfr^Z)u+F6VRNleuQq$3OedU(|oLhm_4DcY1+$IQ;O1>lWIHto!lP zoVH-|G!0G@n}->G<=`NsV;z!dMED$u4jxE_*i;@M0}>%SBNR;ph%tCUU>p&=jfm>X z#t1)5LjQ7nbE@*hqDLj%dJEBOOR11MiU%>{qLA#=sF zNP>!Sq(V~&+B#yowA>za`0+Ew9E|Rsh$*P_9Kk?+r72BM3MZBppzs3IY&z+mJ z3rV{${(}BHBzOEH^tyGiu*)v_hS8FDBP9NMq| zNN92eT(HSON+ciwv;YQ=A)Rg+3MXP9C-0Hk^g5cn4N&(jbTkR3 zC20W*5n|~t=6g-Q}#zpmzQFv{h#oZ zt8V!)8=|-^x830dKK|)XU$}9)bQJIG=~I7{)gt)}G|+}Y{A>&*9K}Y=@q<5@mg1s(s!sxzg+z9x z`$IDkCP*I`wu1)_0a$>IqE%0|l8;2lP7s4Z30%#bCk7qS9=pd)vHjW?t;Z3Y?O9%4 zW>K;4s@2;}rpcnFnuabV!zRPh5RsAk0TCk;zv7IEAuYin-WrarkA=xT+u!s}3Sn=- za)%dqa??%u#8>^d7qYfhk?aCM8!gB!ZQ8I`9Tab!UW-E^ z%-B8duC3gKMvUPRr54&Ekv23HnmG=gGQ{7iX&Rz}F1c&6oh+AlTcYdmT>lVV(W!7aVr?gieDzck;twA+rWw%zub{F%qwqs^FK ztd7QDPlGp$=(0AnTE!bhz*VbKVuezjwihid<4i zP@Ni-Uv9_BH>5-GQis837@Hcpu(X!E^TZ!+b@+oPvrMtCqLz= z9S)ag^R?}^)2J6ShwDT8$JioL+hEMLpo7^bbISx^5Z?iYVx`Cr@RXR~0_Sx4@4Iab zTe!Dax!nuAYQO#30jHewy-OQ6wOUzM^UDPzJ`fedW+Xcl+yop*H2xQE(Vse9O%?%} z<-|^opV+bCqag1gi;^7*m#r2&441qZ8uLg9qyiN=CU;M-$NUHzgs}^bK|1(770!Ni z1;HDLRl|@^4Jc`?^IfH9;+pOh6P;s1a0JpTj^)Jg zFQ_+LJ~$7h2<0~7(?*pPRD+Wnl0_7PW^!Z$dXF1pvass7FJHRns#teA*5;8LHf)&g z7?Vp{TlmT_xTocg6N66HZ=WU~ttQ8Grr;Du(~s7~Xd$pT>908Zjc4AnbTkRFx7>ES z7x=IzJYmm;h1E~zR!C}fYy>jmU=!Gs7#=o@9WBdoY%ClbDvQ07at`MTj3`(t`BZc+ z22N7sQG*C_tb&Jv!ZgRh5IhXTyAV{o0*DQ;=ZGCdGKhkJD16X$)&W{*ic_8%iMELb z;%3N{K|>>=F({0I5F@NOHO3f7MY$%NF>%tp;o`d(&hcoACQ|{>6zsT{u!X~+(#h== znd%5iHiHtf(wrk@dfuYcRv1Y_5<-HNA;_Yds$o6Jm_BCRsRuq{=luxUOtN9ahPdIT zNqpj+@BH0p6ZV&L#8}DFI5hRwNVZvfvJwswQ;nQL3ZoNZXj4G)Rgu%_7gyhM(BEBs z=^qk7?3N?9ndxmV@Zu|8F_~<$%?Z=x<=r!Rp`@VM9f96Zqa;WT71~E(HD>_W?1I9< z!vUZd#~yR17z3B6n1{h5ei&RBKP;z6ML{Fy7i&v(@gR%?gMgL7H0`Ifpjcy!nHHOLYUF~-XP}P#k&<6+9?Pa7vAk(%_1cr4`-9i+tbone zzVII(onCR_g}=`}eA(;Z%4z&${p^MJ$vE|XG2v6wK`Y*vb*6y0Hpy!*djIR!EIjO+ zH+&2K;=D@UAKPs%@Zr1en)^KRQIF>Zu~ocV7G9^PrjJ<%PdkEvXrI_3&Q78#j6?x8 z6mJU7xu9kYPNd>fI}9{|Cd$wqb^;LSnu8|>6qmffl!rLfTxby*A3qnDECkFv_}oTx zkIAvXr()emO;|OQ#E_2q^mBe$Zte(`E@k8d#)V>B^)-T>vpP22!3}{#lTObbGuLFB zn6(0WvxUDWf+UHF%vFJfK>FCA62~N42xyWc$7z0e)wa97>+|RQJW;X5 zKexHS=R~vzA9&D_yhVOy2|wNdBRXvcDuRdzdNdp{0QM9tHu1pGn+`o(9&Q^kHqa@6 z9}#lnM;w{TwM_--w3bI!*XbJF5MPaBUI4#eTv_zZRRDM#Mb{_-Baa6iY`7kk6p;%P z(xT(i^RVX~t^1MRV?t0|5F$>ysf{*X^jwW!D6%{un-XH43{ssncU=JICzA-cxhuzvmYy3c+3 zt$biysp$D4e0Y}N9qAs?)7fZ)W8 zPPmjoo|H4hMXw+A$ft&-@D8zvrMGPd^U)Y0au^3AX^!KC7j)tX3B_Gfq|P#vg2F}s zPN9=kF34V)x)_L@sL(8eVA{}g)w;JUJ2bQg3o^2)F132q?7Lvo9lqd6H#34*yc_i{ zX;4nQh>5Z5V<;4;9dj~qh~7>`Vl4C9=-m#SoE)(joBR3rKYsA4hv({3BPQ1bV{86H z<40-DRy0#>`o{s#Pzun*veCEem%hCE8JA2xb;(s%ZJ+|w13*?>;QwGj4_SM_u@P-= z?SR&=7Cam;`dbOxfIv2mS3}Rl7rQpD$O>dv%XHs4D?a?&l#WAb8|@f$&7s&-O(3Ev zDkQaRNQym-m;k307do^#xxU;Dym ze>*a+4UUVa$e@~5(ABwP4Z>Q2+H~@<&-|b7fAYuPzHm-#*g*6HM^;?mFJF0OJns1~ zc;R$uX?rIFhBZZpU~!ZTcpF%X3Du?u zG88}~CeW1YP;;XICt5Xz7R1o1mH@4MI*v>ddywKu5D+Oh0|-J5<50_Agk>9&qaYe_ z^oRht4gxdU0C7rGT-v!rj+kh3K7hqCB$OPqp-zWRb!=)7;*^uV;PYb`lcRm=K~j8v zkrr&52Z{cWFYg#kjC1uq2oYAiv|8cz)B{g?)}FXGzi^4K{^Do9`p4gM{7?MV%b&f^ zWxK9nvz@(@;Q5Bl5or(@*M9el7KB|av+tPWvH)lghbMkvB*Fe0&m#_c&xc`u-3w&quU|JmE$tN%2N3*Ce6 zfMZYHc9#Plb^LT1hwx|IJ*UgDad|n;+jQfq4`28Xzj*CED7i(Y@Fr@$YZn*Wfkz&7 z*ppxP`cE%!+N2W_5q`ru1{|ge^$QP7S~&y==e;^wpMp?+=V%K)#7P;A|0SvV7T{7~ z)xmY-9BjlB$0uresvqknZVLs#_M#DBw?QKP^pTV=Y$#F4K%gN0fuy9X;uPYO!e>x$o1tS5iG_IRnxj`^gSVj+Qoo-EOzDN3%>w4Xm+3_ zU@0|)N!J7!v->irDW}(jk%JF_sT@#^H5$w_c|omR^YK4<(>|a2%U`}xuC49cw*!-5 zsKvEwWAPO~`NW(~>y!;Ijkl(ktv9C@=Jm3J2Q6DMSc>Dd3(Xonq}z>Xs)*plCl=qB z_&5mk!C8>9PU7T`G-cJHaj|`_7=sVkPke<@rzq7EYUZwr~M3|gg zVfJsS?3@$&l#JmApQ?as;LghqIRYYFtj1y^>{Bf<)-UG{m@@jrxXt9+YxV8P?9TNg{) zZ@=)k7o7gH{Qd8NaFg^msSb`#35?$uFMY-7;M|#)-|v!y#*0=EYVhF}ld_wPYJ#G$ zI8m~wM;fTa33xdtJx&1-T|p{@VErOeH&jqV5d*{z=)p!{t$}GKMWYU6Prz3(PIHGn zXrSa)X3x=Bs;dZL(Jh)(NQKdu3&017faxP^o1rx~a^Mry6Co9)#yB_#l*@|bNV#s^ zI+-a+|B&ZHYiJ636lUgkj`%OFyLVC_>hO4_>G+=?_Trey{^9T#?L5XYx_3r zfWLuXbo%LS&jSzLb-FY?i5D}`OG(}#Si&@9r~&;lh4r!}?fEP(LTA1f+UzOl4pZ8MPz04InkSrc z!lCH3G!%YG8oJ8?GvBcm9t}`FA&L-(D7!8J1~VfP3T!afiApVk$)pXOXk*GjL%6nK z@zg>H!$(lkKuN10fm=1^jgLY^S=6a1ju`?eDT78By%&(TeTOMu4e68wr#U(%sQt-k zi~C%C^Ro^*;`Ck&-&WbIJKzhvxPE;*@Tg;+uyo5UwuASl7oUL81HksXwW${-peCQR zU+dg^6Hh}b4}kQ@j$B7MWn)&XqKXo7Wdm^zvPGvn9zeyO7EY^No)>4gH#Bg-8pTK{@yqI z>Mr{qwx)va5B&ps4!*D(Hf+d+HQTJ?WlZ&=>g9&7v0jcE7O%EmcIXkQ1}0DMlLMhU z05LB;Ms?N7)B#oNfx{u}l<35quON0}5)E0I;G_bUh)DlqSZ<2!%>5OBG`03YBQ#e+eWCJrfV5~y!GVWl#L z4>($sOBfJGV#$mc!o(;KKY_APHsgl@x5CY` z1CzMsns~$`*6kCM$y(m-q;XKt9H5NW+Bm4rLdtR{pcht}V5MO2dhttWqTz-(m|g?~ zPoKd6Nq{sIq7W1x9Q256HK5`=jx+cWLEH8~1eL8`(UiskjRAJNG-eO6a_7=>wXorx ziw^x;Fw&$3bz;OANrTVX5?rSZG`=x@#C>_GaX9qo==p*voPkpUs9F%RQBbOx(wKwT z9ym0Di#1bE*nSv2+gnILSOBcR1e$6mJm>lRO6KT*im zw)u8oA+EhPPWzqz^{kk*@5(8g&&v)P2T-quHypg35Mv$vkyCKcJ^(?OzE!1p*-9S$ zcIn{4YM7uLF#)gBl**%1o#08@fCbge5g%@JML4V}Kbi)>ZsDhoqZ3%6oyR$wmkgRj zL6i`r2uks^R3UVzG24oxZ!N_op^`zfG-!Sx2v-~E1gJs;Js2U9DN_bU@!?0q0R}&i zIQO^in2d^1!@+|a+mPv{e%nWN*F=j?Z`N2dQ)IO{JQV4{@{`YsQbVR}N=U~HA5~N(Z0+yU9q=b)+h*Itr_*H$>kM%wcmeb+V0bIu zd?@Y#ESxZErT8Uwio>Fq)Qj#Eb$G`xa=?Kic-NsbK|Bh7_(}J39Yjx?k#j_oKU69F z_~gOKkV?B4A!~@P3e2-4X%YZJ4mpz=zx7%o&qDXXONPLs}k7h zbVr2#C64aMFyF_-3ZAY&2!_Ux!lD2o0;7a?D4PHVXKUmykNR@qL>NlF=-W0t2qjoo zf49mN;l+`W6hIN+UYhaJdb+%{u=gVue{$iU$!@TQm0M7K@!hR?7C{*0J7zFK`v_yrZZkGt3J*Tw^k4Y%wU;dIwDW%J z1_wD?<-Xd1$=;7VVv@_#L+Z__EN^G-g@uk1RNVT3^BX}UIt)aZLC*=7K6#nc=Y1!R zTO9zX)bW?bi(+d8)9j>O>J!`5t@56ACl4SJvk4jD%|UIA#MX zXKEp}#)KS%`Dj?y2ZN)G!i))6DTFXUujOE7tPnc@XarC)V26t8L^8LOeS3qz=|gos zr(z?g&S457dXwrj4x|3bAnffFz$e-Yo4wEgBqP{!lB_Rt5}8M=d*N$;Yn$UX^MAo| zZs`A;;AFWiZ_6*R_RC9aDl1urbLyrB? zSMRaM)*q$Wvinpf`#<7v{ogjOskc-+Pu~x19}7Zn#_z9FwuQUT|1k0xQ0a0h#IYEo z8-Um~bSrGd>iwggOVGSuxaoY+blVagv{RFi3`?CrE<9JZ`m69F-lR@A^~$2*m~uIs%)PZb5O0IF+_uSu=@2tlV`&SoP5e z)yNf~jOc*zJB33$NNIW`^hnP)IGHF!)98CiP1Q-N1v9(`nm( z-=lu{kuN>!*)Mw0)=SJ*-Dfh{`JoTpTN@mH5xg`uoNbqcAK35Y+leqq{eC}kz6vC&JE3nYDJlsH{rN~nO!iuL${&Ae|D#Th z^;<8ocjP|kCb??OgQwH!>~QDGs@>GN!NDt=Cpr!^()~iTtP25&%<>cq;qj6%+161p zh2`K3@~zm+m(BNqNK%@$>I5;-A98VEIJ}_JVO9!(4iO6uf|BW~g`V{E`WTJzB)y*e zLmP_Z0Ln31S%-IY12R>oT54RSq!0^9hNOuanoQhf$|zJ5bS+3kGt>vAnnF4ynxcc? z;e*sZb(n+5RFm!Ts&k?T^H}m0B{YP15GAYGp{`orN~t!TF7LeOx>Mfsq&V)FSloJv zYlrS#Kbgej!NJ)H9={N2HD1P??NjU*DIblqryi0DBs@3o2EDUOUDs}Pz<`O%0FO>-yR#L$WBi$RHHCMrif zA_7�oYyx8jFG4(-lE3Sm~|{M&x2=#9~nj1V=A(t_CJNy=8#OycC;ahmMOG@D$^n zh$KQvE&M>Brw|ATVNPIVZp;b`)uPFl{d~kUYdIM!o_TY`0&3KV(B!C_6q+vY`rw0) zJ!A3YBcB;tpL@Lnlf#carv7_I9H_Z!nzCNai#jKYD~LH({>4~#$}0&0ZX$8}=vKLhJ1|+Z`|f+P$?QC$BHHKVg(ZfXw!AbX9KFo3buhk1Y-4oz zFsVS)12^+QVKX+;0Uy*LUN$~*Q=j;JqbHakq|dQUQV|frIW`O!)kfJi9t<-aa_XqK ze4-LtTDfW|L!BEPB3>6puEKpi_z=_L`D*gy@>Vq~Kx2b6aH181F2M%S2Wv4>m~1s; zvshiDER2a}J`Tc9T@!)=G*60<01tHI9SV!K#^(}DAgB>&s9H7v8AIjQ$4~G$$MJHr z#v&>YKf-qRZ|xozXxEEawbOow{?y4o_3l5~_1$MI#Mb8??Z9NZ{r0<$nd~gW7SFwd zl&Kd~4G(XMjHDqPhUm}%##}^Pyl2a-0Av{sl~uVM7y})Elp&WYQQbCmL=j|@i_JW$ zh{Dw5m!_3)yv3HIKz4nv9-7d|9{cQ&jg0r@GnLoM48ALlh}@ zhcfy3UCK=-y$_15AlgWPgL$e^z360`(WhwtV4x9EYCuwY90n6AyE~)a7rToyz5ZzY zFWll*kCIrgRQDK?=K?lxNM|pQnrA|44(P$0X6(H0VJ~>bO~<@rk01TV-PbNIw)nsJ zdHhTM;k%yv=Ij5@aXG!W~Kiav(Us#wu22G=M2Oq)3HhAVOL;+ejT*DVF(5$yV#w zF4;6w?kHKB!TTm>)k@+t^--B1-b9}xoDixzmmQI z=ypHogy)IcJ8W=zV@p1PtYH%MBi?ka9noMMyK3#h!J}( z%}awpfxR~jdHS(wg`s23T-lLe&I7<`O#?l1sOY?3Q} z>{%+Vo&#$Gt-S2v9=|cNmcrFcph9{}$2D82o-XylgqBH$6s=+aRBt({#9`Z_hs!;i zPg(Y*0@UD)YZ|?1Df8K}{EDX)Pa+}{Ra=EIkGpA~1|?6_?D7(90xkbcF(wY;p#eDP zJri_<_b|LJ*^0v=mfnP27)aR^)P7?i4pfq`Lii@m>GZHY_d51pAGXiYuUxzSFDKC7 z8Tq!3x)^&u<)sHa?nnOa>?JO*wnN*(3(KWlC*QsO+5fb9?b3T~vqIp6ph%+TZ)}WzN7YB~9=~c6lg9EEe z-KUaXFavE3om|jkLJIM!zFHp^eK$RmaLqKk~4AvL*433-+Av5J} z>_zF2yN@GWY3{XH5~3zR45B5K-RV$%@KCpc!9=hf0LbpIT-AjuAqtsJ*X(iVNxy#Z zngf1kk5gYnz+L|cN#QM178m2#pM33O*FE(u|HzMTkMtt6F}14!x5KJU(_MDBiwnFe zqj7;l=f^eFsSdjbmzX~EGAZ3S6ndA?^;YVYC=AL1Mkr{j-lGZZMpJRrAT}$?Iaw7M zTY#}rk&Ur~v15G3OKm@?T{{4b6dZv}CXEQWqJ2gbu*jv-nyF@`3HZ8rp3FiTr+iLu z33p00CEz@PU>Tzu&}5@2B?&*W4cO};pmP+OE7}~@Zyc4zx#K{{K^$+b=ngb*n|x+z z6lf9<9F0olQ{QfrU$OWAi2Ycj%s8WQUFp46r<&d}4L#-sE@!ywWl7p)-@{&d^69^G z@}9*6z-L6{|UyD0=RuQiMkX?nak*PxIV`GlfOjV+EeUcsTemm(Lk6t0Eco;Oj z#n2t*yw>&L8!n{-N76I~VKQS5GZ##zqY&}d(Fa3I;E*{^@mfz)M)<#aoxp60zD;BJ za%2$1qR}xtU^$5yn6B$0`G^)nSaG!mNOD#1_Ht*FWm3c`h60reWk1>+{-BUm;L*|| zhTVgRdWL|q+$YNcPzF);tZ-Xkd=^7@HY*4SrO^~Vaw>ys6wO^mGGFNywGZTaj+NM~ z;H(vAEI{K>H_{)u?+yq5+J3M2qo3XP{2%&_PyER%-+bL==ih{T%anDe$FWcOp{MP% z-$`#_ee0GtF88ftFZ7dUvQexoX$T*5xh7+>!_s!e!`-gvN9fhPk^^eH4SipX)cK9z z%|3+cvdhkelE|f|@S(v2nWR8($w5k3rPrsA3>XCDlGQODuXwD<5g2igT@gQWjK>)A zseWp%7+#Q!#OPwEZfM2JDx@*B!B|NhjW3PK6d5NA&Bhrx@x2j)D1_C(VITlZ3L2|Z zW8O{U$cv2-q7^`_%+bvyp70exrep#@? zuz4$saB|1I#!#(Wl*Mwa7=hBwb%fQ#)0D*o#YFUyR6v+0en`?375xF5#}9*r03-u1 z?Fz&Q%hy|m!xImi(t|J<1hKD2qKJY7l*lwnZV|wzRvkYfI8GQ|RSBVL(jaO~0ruTg zExE@NWuI#ls=hmzXe1vJGKUrepoU;*3;+^-;H8z@V>PV~<>_rqz&7?CwD5SG6K6C} zIszT_C{)evz#&87K$%2(yzo;{A&R$l9A(pha0j}AQ1(s^<8BM5Qy>6|(i$_Tk2&nL z*M97|e{kIg4?FF3&x}}%`}=dqX+QIjr@iIo-+1Ur$6mVK9*6#Lur949QmYPc4n5la ztV_;cTOg?IxXVq_GuN%rsw&p^HRs&M)Zn0$SKsQv6_i6fvG^kD<;C#8CET1@Fr`#U zucHE}2#Es$Ag+bQ3h9F|DVjcyofsIQS!58L(H}--PC=fCl*S(2Y>0TZ&Slr40*n|6 z7ciBQjSykzF);cg7e1u5dQCv> zVC^S{Dk*qKH6|2YeL9@tlC1E=8}Zb`p8dL~9(LN~3t#{2M}F^%8_xctOLzFlH)6vE zJMRzO!B2m~kq18cr(eCC(-%yqOOw!2SV2v{&(H=-?V5KOg6y0YOtg@g9)AaF_Ge%Z zQVHyxK(9_ASrPp+8(Tv;UN}4;y(MGDr5U;blqR4+4zbiT&Lo&&MjjI(VfNy&bE-Ii z1c(sgB4TKL>Y$*O%Blcy2$xxX)FYqKZ8%EeY|2*v*db_{0ndm?i{Zhg+YEs~V$;v0 z^5<;tq1gHPYCD;2_5r%0Fp0Cc#FC2_PcR0qVKVl)HoPaH`M?@0i{QS8ImQu-5JgX= zRGj7_la^r8G@emWK!8O4u1mGx?&`BcrsD`HtR5q2f@+18p|Le72E(s)Hv-BJ=#rTS z?RM}kf`R9G&vag(TO4_Wvz}Cd#S@Z+k{_LW^BK_<2G{N zVdJ;Z_*}`IHyVbKT#q5KqHuI;&|-s;gNJOS0+KsIffh17BP>@Y7&}7`ZYhi;J`x}C z**Ph-Gy&?mR3mu!QU;PY=8p*)u&FZ1!d9*FjYl%($RVAzwTc3beo-=5k5pB_C_o(o z5E5OdVxT2VaBt zNhUC7l0e46kqmDGfTr49O$b8NyQO+}0?L<$AZ3W7fXKld7eEy2v1`snAA7e{wKd!nj+p z>8Zs~)3cPjYz0H%K)Mks1xAECo^bFulUh?Y42(c#_l}wr=3UP6rz$0wJm$q<#9$6$ zS2t8f0pge&nYGj85z#To;-CnykkTp)g2Z8vo>Xo~W=F3K;$ZbNX|N;3nf5`!ctc+m8$ zUjW{QI+`eyM4rJMG)Z#NU=ZwjOKN}`8)hQwE5Q@;dSM@*N}5f)ba=q z{k7`$OlQZ?gA)-VXFzzxU}kt^d?HBK9v3v%@OzJ}ows6>vd2ozrOKpfqfvJv{23Up zGplZEE%Yc$Ef6$s+i}W1gArMlqlMwVRH$YzlzE- zLDw;eoWvrYcbG~^SmHgfAYNAhn^PzRbAySTMn|%$Ijmp=>16{bORou{v@;EN(x{m@ zL7}G-BB%@hOazbSu5yNr9;b%~Vk$pPX%+@!DweWC^MWKyQzJRay>roz8~o*X+fEBp z=#Y}El3|O6MC7LEoEk~EWJM@MTUdD*gJgE(Np_s!Ar#zzL(HIil-vcg6n&#vDt6{D zGD!#qqB*m(!3dN}spyZUnj^;RIPEZZh(LTvofy|fEx7W8ADObP%{W*lnN<(kQ$mNl zsSYn>Mm+=~%pfQheHgTaFe$frtY~Zs*+r7Hj{;bgaS>OtH*%ej8X7)iu&ix+FqYzL~yVVhhc(FuSQUvv6 zI7GHyB^s$%Ic+FHMs(AQJ z90)Lg=^EH6VjQjj9D)Nsy|KG81{l3YqCF7-rDW)tQAt2CwVsY68BTa;*y3!CbA(Jv zA>tEWT5&0t4Rs7$Ha+9fBP#|_yz&CKKLvva(s6K1jv^7QNfk@)k_~84g3Mf*XOc;z@f=F`bIH<#4)&m1qlCHi`jY1+>3@ zMYh$=LhKI>AwK+ME-xqBas4&hEzelHR(2Dv%*_?SC$)=UWnbx_m6PiF1Pj;xi!Pfa zfHn+O^iWfI%((OAQ$K4?%Ot2c=Ed@bNh+bfY-;l15VAUt3O^lW*W!|0kfwRQcDXY{ zC(*Dp6752Z)vgON7Y5aUX8XKQ4(=T3LROtGWd>JSsXf-5QlE|ZGT9s&<*Tu!^f?OL;Ti{|$sq%3G z?CN6)cM90_`xJ^&4NKB}F4ODj#Ux{RE=f>gpp+*Svuv9+L15A(){JkgYJeJm62lae z0QQ_%1RfJ1tWi%bLU!~=K|uTweSF_sl?ehVJLUmO#H)q8H3kr$tJ&jx+%Q$U<5G$y zoJb9pu{>F$-@%!_-A=#6x+N$|J(tLu9N6L{21-CJ5)fFVFbXL37DQIO$xN1P1Svi9 z7oty^WYEI2oVUS9%?OZ2>St5YOP}TBit#At$-%;pkO?6*bwccAv(ZR-pgoo}sgUCs z#E8X)6{5k(Kw-?p9D!m|^^C=eq1i^`^RY`|&(nZzT<8$$5O;W4Ly)UmmZ?x2h`7)L zMnF{O>;h`=A~6|D41dfTsR85w6h^~@YCP;!Fe>{JdMJP+U-;p1?zrju4n?1`KDMjN>bBsc|5!aq7ht} z^qLb3BcIDF+o1+RgnBRVi=!IBAo?L6PDLP5#0#h;2SX){BPgS3iy1PB4<1ptlA2hO z4Ap^8EH%3U5*luDyWb&Tv_zM`)g30QLD5v3Mv}y>I(&*yO|-ZH4%lg(G*+A%M$Sz{ zlyVr{hXG{XG~(6yqXv!Zhkw zGFEVSByfEevRGIUmcgTG=CGUCU6RGsVo1$CWXvVOMSoPT;c^r_^Tg9=CGvwbfhw8Z zr&t{1wHU^O>p}K#W9wv!FNSan79|JXnli8+4;#Tk01QbVBw){pW1$(Rv&}lSB}tZa z@LP>c1|56}L0FjpT<+-su7LA96|=#3D{K! zE1jIwq9##Q!)|lL!VdE?O!d_&uCRK$+^G%#5wE8A+o&lW(k)b+9s#O%J$G_J3a_lu z=i7a#pjP-H5V;fR+`(_HZpaxiGhy819k$?=f#sUt17XqL;k36;n51r_!9W`ldR(-QhbLBY|s956+Dq9Ul2G;1CQ_)K|k%U_}p$5Xf}w;9FTlVfU`(j=7-g z01*Us09|qT!4|mz%$P|6x;OP^T9PPtQ<-vPlg(%lv)t1ob-MdBU{au_~5}n0Ej@6sD>%YR8Ny8 zM@lu+(xHrxW>=VS5(sh4wR*j&Mg<0+JC@m?i-uAoWZbHkC+vKS&Ow7H5u8AZ zkrIhBaSWn)beyV5SfD#4jKPR$Ue z4?SHwy5pi`4X>#yA{U3t&LK4G)w|%5xx8;xAwb#mP>(A>XuYNMXk4Zxkd#z7Te4 zmq;ZO&w!j&@%W|S2-nnQxrs`3IC>OF!i=SeQaQm2Qxpvn8>#8Y4@)#C`-Ffs*g#un z(M0D^1Z>i}7c>^D5~(B@mZaL$5n(U5^lZZHFB?HPK}aY?nx>$%ojsAT&{G;#hMNXu zhQ^viOp`Y)Qy(v$N`+TXJwT=lffQIx9IUvc12R2a3dL4!DQPufUYrKdOo4$`mb?su zRVaerc-cSNDJQ(cqsGCsKd~(k;83VW;R7akYHtka5XH>35h@V3B`J~=Wi49U+&CT^ z7hxJi982fhW}J~x(Wd7q1r%(1Y-eP~9-J0uM4S#p1rc@vLhi}VTEF#O-*x$2_TK;h`<_!(5qm5tIFevZ#&3F8w74!* zU+LFA?A^?S_uk~fcH@otk7m(h@*30ANiML%rJE2hVmu(}iOhjQ8td?!Z=-MsPY5HD zIK0qZ;^#!fho&ByJU32G8sTEwxwf5~KF|UaI`I&Ja7{n^On(y-1|S`s8zaVb!yU}P z${8tOL=12C8wU4eDamztcG$=eW66@)O?uO7Sr9qxZ8ig}Y06RIUK=a7wm8c;$ursb ziH*yE$dVj6ISS@8$V-s^G&M160~k^lOmSk1v}SyW<~O6pniaz|SdIn2JV)=4W{s{< z7R6(OPKbk0tHW8IY0^vPjJdXIAH-ivh`JL18u{mCh> zS&Yqsj(D#%!?tz`6uU{q8di)NWE=oOhe-v~gmX@mxgn5vMV6Rl zxKi@UzPy!rMB*EV9l=4s^lQ_EgJ%!)hZ37-gBCE4^r1aOLr`rxNTGrPc^4w1y76*_ zI#KdYEG6;Ewo`mse${iBaFf`RvI)WCF*=XFThZEdY%No{aF9R(TcyupSWx3vE<#P; zUBm`30AoO$zwt>O1~39SjAO&m!27zt z)XOzWs?E*OZT3af6Knn8fXp{se5;NvggFL6nY3)Sa^!^U!6Q0pB)c)sK~WpL1`Vff z+I`lrl|++Y)QgMuvGMDE7rhXIjznV^JRDpaZm!wsJOU_$c;v7CQ#_39x6V<2`gIm{cnD0XqOdq$mJw$;zM(1z#O5qC{)a5VK9 z#@|P&%qQ4M?6{81PD7{>sJIrP?YHklm^!kCA?KcnN#aMVtEWp?`L8dHl)A7igJ zr>R}O2IT+{z{;VLdGyPI^Pa|wi-fhFN;6u*24c-$^$Fm^rk27^%XRuq4XG_x42@qW z7d~}l+=s*MoH78(>gk=Cutlr#>I_4}EkH|o^rUlA$vJ}Eq|0iw1}Qj!bXXD+OfG55 zb6FB>YM35_PwK+MEyr4)t!C~Hw+@PYMM@Q;rl>$FX=@B^&t_xlCZZbM6Jyy2Au1y0 zdmh)&F){URy<{^`-_yTYWePeY^A(9W2195DKmY* z7TheBWZqEWa3#2aY9q%h!bJZjdqeO$|-b6+;0DHu4%di?j&}2dqM1CsWr7} zP4P|&(+@y6(_zOebBn7-HG8DIc`Bi@8$k}6UH~}^avVY>$;6t=po-_x@?o_4Et*Km zyThN?PTX-gCQYIRvU&5H3A>@lX)&-@8aDgDA_UH5{Pk#c&w(&Ob8knR;2Od$j4>ZGLagZ3nG&k$g@PjH#?9a)&|=nsF${sMDd9?m8M|k!xNGDa zd)qjZcAXi_W?oG@RMGxj+aLZTxBYTmKK*{L2f8lxJ@0-O$Ms5rPwH}}>}V}ugK183 zt0Bnh3YW2gwXTlME`f7LLs1Gb5E@Lk-KA~34D2_yY>QLt5>iH^MU0Wod+VsVt- z#jSxYGdPw&2Bb)d$xtRF9~7)j=!`@hC&MgpTB68F@>)9#+oTyjk{rrTEG%aVF+xzm z!B~o+30XAhnI3A73}4(P$ZCgOaYiUwAfaFiu=+8LPn!PGBmtNfu*6yky2X{LeICGz zODZnUkR!_3gftoVXg+>I(xZ0q+h9CK2sb*(oB}=#3DBoqPK(jq0{sRkVh07d&phRI zUyd|r$9)RV1j=60%&C-qafMrpY91}9i3?QEjPq&n(%{v9l3fP-bDKqHV#%po!ah5D z{oU99Sf*>W$w3LuDh5MF984yR z>@nfsd@Im;N*Y&Tn4W}#-G{w#5PKLeo-HF4&baHw zLFAl6NEa6*MFQR;hrnm=mG$mD>H+c+OP{08KD$oEKAu}zjijEXd+5HODiP~3yRhaJ z7{+jCeYWJ}aJKj?rOBay@erxq0dqol0?buHQdh3r z^Q+`Cd0Gsl71L~Cj$z9-g3YT@&xc>k`F{U z59kOU63Aj=@tu0l4@WE$#~~q>p>4$goMr0QvDjMIiXEPy8PbyhiRZxa&W+ht8xsAh z;h?sw`}9o4+Ng`1th+<(u}9lX%tzhE1~x1oyhbt zuyWuCw{z^pWg=je=zkv{&oH$>BbxDn!fVljX%h;J`)P2pNCN8 zyyb+WRa;$k>GHy97N0h=TTY9Zn7cuEnoj~7H7wPQBbb!#nFKpPx@Ug5@;1V8Cm~k= zzv+j8qs+v$b~)UWCCZ?UlIp0&Ef-7+oUJzK%u+38nMB|iX;|SJr;h8~V@t9S8X8=c zCub;aTzAu4Vh?E5mShc>X1=%?3`)c@xK^fUU|RWEkTu8Gi-mDqC^RdAQ<_%tD3T>ig9Jz=i80dR zJ!QA$fl@+@l~rY(_~m8uVR@~#=62`VT#c&Jgi3N}Od&MHl2aZkrOqKA#~wP)gErMt zB-Spt2RS~zY*#yuf3-3Jebh$Vel=l%is6+Uv%N(rRkQ$7H|I2ed-1~7`FXV z+{!^Xs-0C9BVM80`^JXQjZ=99ab6Im`1?^7sqNsieG&o(8^`jec(P$q`b6YNSc(6BdS3K;Dr?<%yaNtQD&;Z;aN zN5{`u?jNEJhs0#SK@P||o0qAmXUej7V(qAgnrVT`Vp#$Ykpndr2G$AD95Su~O)2i%GyU zhK(c*mR^pNl64i$q8!yGP8@(eI)IVN1wdA97_gPwavFfpfi&LBe z!Qvtj@gY89MLRj7h-LN$rWt9vO+DJshu|10tQ;m4SX@pRa2^+_gcQy~Gqnd#QP^tl zj*uR^NpqbjHQg+h4`*y=hj1*D;%al8BY-{VFAU7h@=GTjcD|))NkXNM0W`cl>`#ET zCC)&UK*r)_n{%zXD4TVRJ9wo^HLYUXakO_1muG_s8+6F|`A9RtyIz0OZFTc?dPmZG z0vGC;&#Yhh^_Rc%!Zi-ktG@uhXK^u0I^`jG`Ns^BG!9o02q^DIp@dD zG>Xp*2hB!IQ?syuz2+)Q0r^l==P-p}*073Lkf@Vp3JRAT)+RikgBX?R;m`~!Ciy$o zSMgJC4LFp0I!KtVv@dyG^Oo*uxNpDbo?Bl+_(4g2gnsJpeQIC1=ickfUxbSmEP^pN zD=rgav!iq+sGz$WOO6z8kcc9^iFmk!IJ`#VG&#JwJ@Y|<7^&Ve+2O*-qrKM#&v|6D z7qOm%lryAHPp(boVZ)EJ>=>8LmQ5aFR;7xfM4%ck z^4a#dj1f4~+90@b%*DoNRUC~9OcF~8tn_3L2jN~^<=7-O{X59v$gFcNJrf+X@eQ;k z-gBdh7HT)Nbpkjc{Fvf85Nq09wgybQ8T3YTW198)d08G}B^!!~$w@!vWL3g zvR2s&Xp#`H@$tUV!AuAn3DIIoB0Nft5@?f-QFoKXb#yYpyv?%kRuOG>0*Q z5#cJmxUwCI9c3tbs6Zr+F{tWwV)AM@0H;K6JQAIu?HQG`MKf58g*pV65@ImmsteUu zEN!x?aTNF74vQSTKwqsacalgOQB8H8xBW{QBENByXT>AhAGpk6Jtd534<7^V{BJ+ z&UdJNfOloR77JYk=QQQTj#w&_O)n`MXz!!F=amhTPNU-DsiMXY1G?cqfKa?xGFKUB zaWRWcSMJz)d9Fe|HZo_4N+Gy9UH+<*Mf99Ls74N|ed4Yf6=9~Mq zFMRG>FFxcUzsN>Cj+wFeM9nO9^|d$*vM+(M_GUn7sAwQ>%HE4ap-RxrXi$Fh-c|{l zg+M6v+(8>~BOAC&n;i{fB1vKlQl!T)WdlZ73c>@j)w<--@tlY0+rFtM4I$V^4srZl zoR=96(lj;k0P165Yyw7-kCho5C%IeYC9K+tPXH zP$aPWsO_34L%790Y(QiIZshOQOh1okCIo z2$S_tC<&=l$&{pZ}`6N{Wljb zTxchCUC_b$U{;keiy6eoR9hA<#z8>H0__U}Mr_d7PJUX?(5B}E0GnxM#6m=xuxZ>t ze8yf6Q!?2+Y_~(oax=zmWXO@>7_b)_7)6%sirY7&d9R z*kQr7&@#1cTfOBq&-syuzW%-ccc3jj)#C-OCqA(*e(I&yRBbPz=~=N9CgDv1DUc^7 zH%e-BZe&$9Ls?l(4p9Ve!~+;q#ezv>w_8|-ymS<$mROx%TiJO=!e_V>oQa)d*WtG@ zjLw5GjIr&^vpZONlg~)&vUQT7unONcICcMv;3+vSskY*7O$^_FN^d8hQ1}ew4V4_1 z$U^oA!C~MIOwe9vsC*lU$e9zN#GJ*Ax!>rdGo_)c(YE)7P96hrGxJ<=A&WnJDf7Ww zabX!*4AKNR5B9z81d(3KDuqP~Fv+!FEs4`8l^V2VdotHfmjhWoM7UH`C(+fI#j4@N%VIR8 zS%5DHuCmVyZq%*sjdj7$e!yV3Cvbo@PAyFbz$*GKK#Xlv*beBjF%GDGRiZOrvqsP? zX4NMM*?==F#<;E!%*3?{D+wnt_J4SZm2IWen(KTUkcw&^VIVyKN<(sn8s?RWuKLDV zkR^$le8?lWb)xe?wefWyJ3NE6n9i1F&Gf>RAc)|TalWpsX;S5*opA;*!ZIA8QcoW{ z@@wFhWx#7&QhcI5$fxdc)0nf-#0G4=z4@+JU-*Rw`wwuWl;L=R!S#s8J+5B$+@Jkd z7cX72rsj{e4WLYOY+MW#>6Pip=H+EG8Fv4Pk4fwHuKaj%#6Qd0yr1wR%>lqQ~ zj&Cj9^ES7YWK?n{b6EP-P;ymoeWKx?r$j%|DVNag@gosHsH>?5bZg$L4 znwnC(xI$oep?UZ$X(3{R)-?Es047#*8u$vCear#TrN?#v#xTq*na$!>xokj$AU2CA zE?jB>=>nagELa*7>Wp>)kXn@KDrEshCaMt2qGPF(Bhm9LY*iM-fz+x2CO2*hbjtzV z+s{H1rV!Z!TJpm1f?`wZkdQIAL@8_7_~OV!iJQFCG<94HSeFiD`fNPy;Npg0pk^$L z3Ssv27BL^&wb3kHP9?tyK>iFrLfgDC@Jkm z@SJ01ZbFWQ$Tv2*CO1gMjGH~2Z%kh8DPl@JQk~^Ev<{gR=F>Jq51SD@bK`-j=7a|` zaz1O`I1H?rNzT_{F?7*3$!Gb+c;apHs&5i{=vr6f+Y1v|rW=FM&@ZO&O~Aw#!yW5{ zcl)#HI5SW3tbik5lz?u4WV0^p?n?B$pjBJ|YawMAG3tjQkQjZy1| zY{>fzGDCRdxzLq2x~JbKJyq*PkpgmlP+F*S{AAqcP;wj7V~L1NC?)u;+m?h za_KZqGrtsi+FQI)TBNXak_zRyGd~1@Mx{|G=AsEyxube}QL$c{xvIvFEVM6zoUD+Q0k^3z(>#@>Epi!x z@+vU0V{ETOYcLbj7C;a3z?mx0-E)JOQv~$@V&zWTFF2&F)Hp-0d2wt@UuK_q!L?8w zSNffoFFyOXF$+y_rAgTjdd%dL5*LdQgzo!Jm7WBUo)i$WdcqZJ@AaHxNotf7TLG&H zHol4>NHGplgoq=Xs46vti_5;*0TuFSqpWBSz0EO(ig9T~hJY+M%D4Q%p)9_I^B`;# zkw=0xwPqh&_rIt$m8w-o0bJR)=E9xU0@hx}wED$`WsC@~Qk`sj>sc?;I3d}FP`r(f z8_ettpd54RL`jZipom5SR0$zaozQ+sdEHyiF8#Rd`>R*Iz!pF8(baFf`PZJ$Va`&T zbrW!IVS^80etnf~E$@hWzi?P+bKoF*U}(*vd#Rt8Vgp7AW(1%Sof>^8aVl?mc^fu$Co9L`T^I0cJ{4mGV)npqd$ zHtO0g{D-@qcU`u(0uS2U?**>MRo(u|U;McX*F0pMyK`)rIz-bOZ5S6-SP!I0Yd7A2 z8pTAmj09rKiqhLe{-|1W*-yUZhswD8uEie**${p8T)4GgIjWsl&6|=;?vVSnnQjzj zaFJteSFUBiA{7_`BgX=oI(eGeh+7(O#aky>M9$%#Ol-|bt&nHig4MgQvwunB5XFV- znnA}L;$t41WMgN(jY4|sgNn0g?w?vs3$((ETLh?4Or$f0+hJ;<^_wc!swJrlKeK}5 z%`Go|EQaw!Sku<{22l4m``I87IgEXP2{m(6lo^YwPZT%;i3DSjK>G~HK@4OK>2xFw zowW?4EbGZ2b)Qt?utPfXHIFYF??T=2nv4HR<^$3Dy}-}B?z(>D#lDf3_1!k~RGd+( zuXYATggiafr@?(?zphWxI@2l#0fU3&h;tL6N&?LZVAFFIb~0(XfOIV`b;Z@AiHUWw zhzO-V_hcBoqK9wG%oV4+>|xd@+v$n5!KJ|&W(5OTeTwm7sWYE_!+?y>%sBU#l|+_F zF|KXSh@+jJP?K1+PYf3+r-`k(Y+#9=HX6tFyHcSL#6bFcKb^>9=gb9AHs=SJG(TP7 zERkEV?u+SLth2m&3O)0z```^OwH`%im8TB7Vr;1Q8mXS4!?lj69dH^QVd(?dp1_C- zjv=m{r80?p99U$kNJ?YkaD=<1$SrxeT37E_t1fjp=AxsJSo!0m`-?ygC zbDDGq6gkh;Q7K0TG4AUE+Jg{l&d9P7)K?){yA89;#%VYevx-FoVoV+SG>4b7j*JcD zJm;z9wdaG`)P^|{45{H5f_YAXBND8ey78G|ff&OAQZ)I{a6cSu<{^$ST}D!{_A+h<@;?O@CAO^FZ{yU8(#LJe{%7fhq6|BG9hCg+hQTE zm18Ow;b98Ejg}W6b@3fgxH2zsP_LfhaP~fln@^6o$ZO^-wJR6LK2c+Eh|3{%JbYjz zeX|tu&BEA+P{euxwkC{O`Qg`=jiE;xeVLGl1=2iv=1jySHDz=`AR67}1PfI|-4wXA z^jU4`V~lwax|3AI%d1I71IgQ=J{usPcpNN2WO*1JKQQeFo^uzFOZY@MOgKVvD;+{F zW<~Hts5#CLlQmT5PT_hKyIKq0^NFTTizm(<~3QxG} z>>aoM+<&aPJ^lwWJm3p_%bmB^%l_k!{|F6V#p2GIf%zF{qm_q7tg;Xit2qZUg|gCPbpF?5t&0Fa_A2D>^{iJO5YT~}ZDuyD=cVJad>!BFF;AA&fJz4z;@J_nhET|Vy1<0QdR)e6gPHBue8?BKp(J>mo00-MQll% zo_Nt_53-a^w{pz~hxKs@v^Cp!*4Q^5JU`{u9k2eWe^Yg1sQVA^n|Z(&_^mhI*mu9{ z(p~qy``tgiUA(wY@BFz@p3(r9dW5TZAQ}p({W`^Ium^ash1n3BNuKtkLF1>U6U~(P zGa>cc2AmMBIOLUwgB$^;=-zXin$zgQy{BUjoS6ATGO`ADFK2M{!G#UO49yBOFeZGdJ~!3^Fw$Rdab z=bmf`6M^;AH$tlp8j|slJs_>J&aEvlqZv$yf_c7*nDZQ3Oph{dW6F#=|8d$TMOY<; zUK|;5FqE=w;7L2H?pMC!_6x6)|3LKtUtpU(;+nha1>gU@Kd@~V_`@vrSsVW|QrNAE zQDu#@;5y6+I48|>-P$=2zd<){ioGh`j1MY$;7tgJW55NBfa$~iV}!|=!2;AcJO@Od zv_5YzVWY;bws@2>B7&&H#<1}OSDKX<48jzS5=^mf4$LNl^}|CL#m6Q@9n%jHV0E^j z7am5dQe|vGG9VNQ+j*3(%p`c}zySKd<;=-R`rg6y!ex=>lD7=#T+&OoYujufR`IL0 z{7<{L4YsK3poDlEieMlR@QCR&;#^oS`{CvSh!NoQDai3dAQrNaP67UiIc`OJ%7g6fis2b?3tMoXiD~P{3`|knXZ0`d zc>MME)NkT?k1z1+e)<>t()P|@>@)vFni*JGHWZ7G03BJ?m~7H@<0`~YJeb2{Gvek> zSp=Tmr#WH*7*jM+C}id=&OQ$Pj^H{W_%8S+pcapTP`vBzV>1O;w(bZ zw`bCtB?1s$7$YazU=^d7qm9BJ{yrrHE1YoR4y+?OxTKE=F%3EL>8 z4m#+hGVYu^!X?CK6XS*L-M2pXZ~xP}@%CY%J`j12FYwJbU+%lF`Sg2V_LI;0dlxQU zx;L|A$iCR$KHd1sONPT*_XH)9z#(CKKZSBH!&PqaM5b1rIJF3;SJ4CGo-aa{sW7R< z8a|JwlxDETRN=C~r0y;~Xa*~x3VC2LX|x6wIBCark}%PfkztH}6A4KiD~B;mZ12PV zArZKd&b%uQMGOHbeGYAOxCaeDu1eJ>vHf5&5T!pnbi54u0W+M(*i@rVI3YHKB*8u> zvGmaAc#Y#*rqQ01?=aTX0U2qIg|tphZ2-NsC}EQFK$-8o_LUK%ESO&xlG8kBO)5Gf zX5E-`p|4K9UnZ7XIdowIYL){%VpB9uEWMb%RLD@ZUBUmMi4j!j< z(6JDM#|0k++?TZ6yjifAc5X|ys=Xjq&RW#-EYj=bO3w1ZX3x6i=%0D4F)|HGx46hh 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 c_YRn^F;_l87r1aAAEKc%hgq347j|M%g7} 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 W?~2bF9{Ae{05cOy 0) { diff --git a/dashboard/src/views/PlatformPage.vue b/dashboard/src/views/PlatformPage.vue index 7afb1105..76f275ff 100644 --- a/dashboard/src/views/PlatformPage.vue +++ b/dashboard/src/views/PlatformPage.vue @@ -20,43 +20,22 @@ {{ tm('adapters') }} {{ config_data.platform?.length || 0 }} - - - - - {{ index }} - - - + + {{ tm('addAdapter') }} + - + @@ -167,7 +206,7 @@ export default { setup() { const { t } = useI18n(); const { tm } = useModuleI18n('features/platform'); - + return { t, tm @@ -191,6 +230,7 @@ export default { fetched: false, metadata: {}, showPlatformCfg: false, + showAddPlatformDialog: false, newSelectedPlatformName: '', newSelectedPlatformConfig: {}, @@ -203,23 +243,89 @@ export default { save_message_success: "success", showConsole: false, - iframeLoading: true, + + // ID冲突确认对话框 + showIdConflictDialog: false, + conflictId: '', + idConflictResolve: null, store: useCommonStore() } }, + watch: { + showIdConflictDialog(newValue) { + // 当对话框关闭时,如果 Promise 还在等待,则拒绝它以防止内存泄漏 + if (!newValue && this.idConflictResolve) { + this.idConflictResolve(false); + this.idConflictResolve = null; + } + } + }, + mounted() { this.getConfig(); }, methods: { - refreshIframe() { - this.iframeLoading = true; - const iframe = document.querySelector('iframe'); - iframe.src = iframe.src + '?t=' + new Date().getTime(); + openTutorial() { + const tutorialUrl = this.getTutorialLink(this.newSelectedPlatformConfig.type); + window.open(tutorialUrl, '_blank'); }, - + + getPlatformIcon(name) { + if (name.includes('QQ')) { + return '/src/assets/images/platform_logos/qq.png' + } else if (name.includes('企业微信')) { + return '/src/assets/images/platform_logos/wecom.png' + } else if (name.includes('微信')) { + return '/src/assets/images/platform_logos/wechat.png'; + } else if (name.includes('Lark')) { + return '/src/assets/images/platform_logos/lark.png'; + } else if (name.includes('DingTalk')) { + return '/src/assets/images/platform_logos/dingtalk.svg'; + } else if (name.includes('Telegram')) { + return '/src/assets/images/platform_logos/telegram.svg'; + } else if (name.includes('Discord')) { + return '/src/assets/images/platform_logos/discord.svg'; + } else if (name.includes('Slack')) { + return '/src/assets/images/platform_logos/slack.svg'; + } else if (name.includes('kook')) { + return '/src/assets/images/platform_logos/kook.png'; + } else if (name.includes('vocechat')) { + return '/src/assets/images/platform_logos/vocechat.png'; + } + }, + + getTutorialLink(platform_type) { + let tutorial_map = { + "qq_official_webhook": "https://astrbot.app/deploy/platform/qqofficial/webhook.html", + "qq_official": "https://astrbot.app/deploy/platform/qqofficial/websockets.html", + "aiocqhttp": "https://astrbot.app/deploy/platform/aiocqhttp/napcat.html", + "wecom": "https://astrbot.app/deploy/platform/wecom.html", + "gewechat": "https://astrbot.app/deploy/platform/wechat/gewechat.html", + "lark": "https://astrbot.app/deploy/platform/lark.html", + "telegram": "https://astrbot.app/deploy/platform/telegram.html", + "dingtalk": "https://astrbot.app/deploy/platform/dingtalk.html", + "wechatpadpro": "https://astrbot.app/deploy/platform/wechat/wechatpadpro.html", + "weixin_official_account": "https://astrbot.app/deploy/platform/weixin-official-account.html", + "discord": "https://astrbot.app/deploy/platform/discord.html", + "slack": "https://astrbot.app/deploy/platform/slack.html", + "kook": "https://astrbot.app/deploy/platform/kook.html", + "vocechat": "https://astrbot.app/deploy/platform/vocechat.html", + } + return tutorial_map[platform_type] || "https://docs.astrbot.app"; + }, + + getPlatformDescription(template, name) { + // special judge for community platforms + if (name.includes('vocechat')) { + return "由 @HikariFroya 提供。"; + } else if (name.includes('kook')) { + return "由 @wuyan1003 提供。" + } + }, + getConfig() { axios.get('/api/config/get').then((res) => { this.config_data = res.data.data.config; @@ -230,6 +336,17 @@ export default { }); }, + // 添加一个新方法来选择平台模板 + selectPlatformTemplate(name) { + this.newSelectedPlatformName = name; + this.showPlatformCfg = true; + this.updatingMode = false; + this.newSelectedPlatformConfig = JSON.parse(JSON.stringify( + this.metadata['platform_group']?.metadata?.platform?.config_template[name] || {} + )); + this.showAddPlatformDialog = false; + }, + addFromDefaultConfigTmpl(index) { this.newSelectedPlatformName = index[0]; this.showPlatformCfg = true; @@ -264,18 +381,48 @@ export default { }); this.updatingMode = false; } else { - axios.post('/api/config/platform/new', this.newSelectedPlatformConfig).then((res) => { - this.loading = false; - this.showPlatformCfg = false; - this.getConfig(); - this.showSuccess(res.data.message || this.messages.addSuccess); - }).catch((err) => { - this.loading = false; - this.showError(err.response?.data?.message || err.message); - }); + this.savePlatform(); } }, + async savePlatform() { + // 检查 ID 是否已存在 + const existingPlatform = this.config_data.platform?.find(p => p.id === this.newSelectedPlatformConfig.id); + if (existingPlatform) { + const confirmed = await this.confirmIdConflict(this.newSelectedPlatformConfig.id); + if (!confirmed) { + this.loading = false; + return; // 如果用户取消,则中止保存 + } + } + + try { + const res = await axios.post('/api/config/platform/new', this.newSelectedPlatformConfig); + this.loading = false; + this.showPlatformCfg = false; + this.getConfig(); + this.showSuccess(res.data.message || this.messages.addSuccess); + } catch (err) { + this.loading = false; + this.showError(err.response?.data?.message || err.message); + } + }, + + confirmIdConflict(id) { + this.conflictId = id; + this.showIdConflictDialog = true; + return new Promise((resolve) => { + this.idConflictResolve = resolve; + }); + }, + + handleIdConflictConfirm(confirmed) { + if (this.idConflictResolve) { + this.idConflictResolve(confirmed); + } + this.showIdConflictDialog = false; + }, + deletePlatform(platform) { if (confirm(`${this.messages.deleteConfirm} ${platform.id}?`)) { axios.post('/api/config/platform/delete', { id: platform.id }).then((res) => { @@ -290,7 +437,7 @@ export default { platformStatusChange(platform) { platform.enable = !platform.enable; // 切换状态 - + axios.post('/api/config/platform/update', { id: platform.id, config: platform @@ -303,13 +450,13 @@ export default { this.showError(err.response?.data?.message || err.message); }); }, - + showSuccess(message) { this.save_message = message; this.save_message_success = "success"; this.save_message_snack = true; }, - + showError(message) { this.save_message = message; this.save_message_success = "error"; @@ -324,4 +471,84 @@ export default { padding: 20px; padding-top: 8px; } + +.platform-selection-dialog .v-card-title { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +.platform-card { + transition: all 0.3s ease; + height: 100%; + cursor: pointer; + overflow: hidden; + position: relative; +} + +.platform-card:hover { + transform: translateY(-4px); + box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.05); + border-color: var(--v-primary-base); +} + +.platform-card-content { + display: flex; + align-items: center; + height: 100px; + padding: 16px; + position: relative; + z-index: 2; +} + +.platform-card-text { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; +} + +.platform-card-title { + font-size: 15px; + font-weight: 600; + margin-bottom: 4px; + padding: 0; +} + +.platform-card-description { + padding: 0; + margin: 0; +} + +.platform-card-logo { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 80px; + display: flex; + align-items: center; + justify-content: center; + z-index: 1; +} + +.platform-logo-img { + max-width: 60px; + max-height: 60px; + opacity: 0.6; + object-fit: contain; +} + +.platform-logo-fallback { + width: 50px; + height: 50px; + border-radius: 50%; + background-color: var(--v-primary-base); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 24px; + font-weight: bold; + opacity: 0.3; +} \ No newline at end of file diff --git a/dashboard/src/views/ProviderPage.vue b/dashboard/src/views/ProviderPage.vue index eecf1663..220393de 100644 --- a/dashboard/src/views/ProviderPage.vue +++ b/dashboard/src/views/ProviderPage.vue @@ -198,20 +198,20 @@ :key="name" cols="12" sm="6" md="4"> - - - {{ name }} - - - {{ getProviderDescription(template, name) }} - +
+
+ 接入 {{ name }} + + {{ getProviderDescription(template, name) }} + +
+ +
@@ -307,6 +307,23 @@ + + + + + mdi-alert-circle-outline + ID 冲突警告 + + + 检测到 ID "{{ conflictId }}" 重复。请使用一个新的 ID。 + + + + 好的 + + + + @@ -359,6 +376,11 @@ export default { sessionSeparationEnabled: false, sessionSettingLoading: false, + // ID冲突确认对话框 + showIdConflictDialog: false, + conflictId: '', + idConflictResolve: null, + // Key确认对话框 showKeyConfirm: false, keyConfirmResolve: null, @@ -411,6 +433,13 @@ export default { }, watch: { + showIdConflictDialog(newValue) { + // 当对话框关闭时,如果 Promise 还在等待,则拒绝它以防止内存泄漏 + if (!newValue && this.idConflictResolve) { + this.idConflictResolve(false); + this.idConflictResolve = null; + } + }, showKeyConfirm(newValue) { // 当对话框关闭时,如果 Promise 还在等待,则拒绝它以防止内存泄漏 if (!newValue && this.keyConfirmResolve) { @@ -645,6 +674,16 @@ export default { }); this.showSuccess(res.data.message || "更新成功!"); } else { + // 检查 ID 是否已存在 + const existingProvider = this.config_data.provider?.find(p => p.id === this.newSelectedProviderConfig.id); + if (existingProvider) { + const confirmed = await this.confirmIdConflict(this.newSelectedProviderConfig.id); + if (!confirmed) { + this.loading = false; + return; // 如果用户取消,则中止保存 + } + } + const res = await axios.post('/api/config/provider/new', this.newSelectedProviderConfig); this.showSuccess(res.data.message || "添加成功!"); } @@ -753,6 +792,21 @@ export default { } this.showKeyConfirm = false; }, + + confirmIdConflict(id) { + this.conflictId = id; + this.showIdConflictDialog = true; + return new Promise((resolve) => { + this.idConflictResolve = resolve; + }); + }, + + handleIdConflictConfirm(confirmed) { + if (this.idConflictResolve) { + this.idConflictResolve(confirmed); + } + this.showIdConflictDialog = false; + }, } } @@ -772,6 +826,8 @@ export default { transition: all 0.3s ease; height: 100%; cursor: pointer; + overflow: hidden; + position: relative; } .provider-card:hover { @@ -780,6 +836,67 @@ export default { border-color: var(--v-primary-base); } +.provider-card-content { + display: flex; + align-items: center; + height: 100px; + padding: 16px; + position: relative; + z-index: 2; +} + +.provider-card-text { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; +} + +.provider-card-title { + font-size: 15px; + font-weight: 600; + margin-bottom: 4px; + padding: 0; +} + +.provider-card-description { + padding: 0; + margin: 0; +} + +.provider-card-logo { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 80px; + display: flex; + align-items: center; + justify-content: center; + z-index: 1; +} + +.provider-logo-img { + width: 60px; + height: 60px; + opacity: 0.6; + object-fit: contain; +} + +.provider-logo-fallback { + width: 50px; + height: 50px; + border-radius: 50%; + background-color: var(--v-primary-base); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 24px; + font-weight: bold; + opacity: 0.3; +} + .v-tabs { border-radius: 8px; }