From 20aeb94f6ef59be9b44877f5dfb14607c38910a6 Mon Sep 17 00:00:00 2001 From: alboped Date: Sat, 25 Apr 2026 23:19:52 +0800 Subject: [PATCH] =?UTF-8?q?chore(branding):=20=E6=9B=B4=E6=96=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=B8=8E=E9=A6=96=E9=A1=B5=E6=A0=87=E9=A2=98=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E5=8F=8A=E9=83=A8=E7=BD=B2=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 引入新的 logo-title 资源并替换登录页与首页左上角标题展示,统一相关样式细节;同时补充 Docker 与 Gitea 部署配置,便于服务器端自动化构建发布。 Made-with: Cursor --- .dockerignore | 10 +++++++++ .gitea/workflows/deploy.yml | 43 ++++++++++++++++++++++++++++++++++++ Dockerfile | 24 ++++++++++++++++++++ docker-compose.yml | 12 ++++++++++ src/assets/logo-title.png | Bin 0 -> 35058 bytes src/main.tsx | 1 - src/pages/index.tsx | 11 ++++++--- src/pages/login.tsx | 21 ++++++++++-------- 8 files changed, 109 insertions(+), 13 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitea/workflows/deploy.yml create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 src/assets/logo-title.png diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e433ef4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.git +.gitignore +node_modules +dist +.idea +.vscode +.cursor +*.log +Dockerfile* +docker-compose*.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..a20ff33 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,43 @@ +name: Deploy To Server + +on: + push: + branches: [main, master] + workflow_dispatch: + +concurrency: + group: deploy-${{ github.ref }} + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Deploy over SSH + env: + DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} + DEPLOY_PORT: ${{ secrets.DEPLOY_PORT }} + DEPLOY_USER: ${{ secrets.DEPLOY_USER }} + DEPLOY_SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }} + DEPLOY_SSH_KNOWN_HOSTS: ${{ secrets.DEPLOY_SSH_KNOWN_HOSTS }} + DEPLOY_WORKDIR: ${{ secrets.DEPLOY_WORKDIR }} + run: | + set -eu + + mkdir -p ~/.ssh + chmod 700 ~/.ssh + printf '%s\n' "$DEPLOY_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + printf '%s\n' "$DEPLOY_SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts + chmod 644 ~/.ssh/known_hosts + + SSH_PORT="${DEPLOY_PORT:-22}" + REMOTE_DIR="${DEPLOY_WORKDIR:-/opt/chat-one-web}" + + ssh -p "$SSH_PORT" "$DEPLOY_USER@$DEPLOY_HOST" <C2Bu(K!W8s9QOlX*5M$v(wLV;lgZ#Gzt8N~n(lpqGA|57!` zB4lh|pzu)z!W(TydvCF^KW$&-+`S!ivGdbUw3^w9XWxDEE=kqkXMdtE?>X@c>V2qn z^gGktd0lS%f8FGFlK7Bp80X^p#{%A6XN3glaf{>NL$W~00eNn8hK56f#$S=E|Nm&; z%p`hHk+$?pRJlhFOU?wF|2O=%3$C32P_(t#6aNW0wPp9AbhCq%`UWztShlD_8&dd1 zn=7l2k9nQjSxC6;nc#fEn*Zb*zug0$=~m}UyIs}$$1p1-m6C=yprB9wznuD4b~yS_ zbxKHtiq3xauer7q;}^CDyL!_2puj|dDAvJ8t_eBis?7N4wjX8{8JXQjh>BmK12BKn z^8(uF$lsc_B{Dz<>#(B5g&!yXQzAmg9hq`?GX6)*llo1L+lG8DNhHH!QVg+CFeCyA zN@NtmsL{_b=*NmyU7YdOZksdwJSW!EQ7fe{mk&bTQ0lzbeCn_u%&}y1&H}{dfilZn zruL@d!S0LS=G_mn_3zQvXEO9miztJC`)S% zXFq)yLpGwSjO0e`L3D=S@jdwwJK*ZJt=qipVEAqBzKusJJELGI3)y??{&!U~9JkJm zT7NsB1}*|HvleMLN@J%Hk56CtP`lLS@cw&_$$P%`<72+9_rn73iFjatm`$cG@We9iMIGQB-l}4=b}eHkX<*NJSgO8s4kNM7J-WMeTe~l^>nUJLLb<`!|pE zYKyURkiTed^YL#So@#+&M*Dw@Vh4;^Xj5PZC^^Q~4byipZHs9(ubI#-%_K@j4G8(o zsU9%;jjXj*&Q+$elVArouTdi|s%l<#KNP>}ivetlXCEJb{-kpU2tw5)6lzL? z_J+=ke%O1hoi>$UzSn~oooQvXe?N4Fm&;Mt}r)fj-Q{m(24M$e#A3_vP0QNYBC zLQZL0kCPW0*A|fbiKHfhN5}Uhdj%P}&N5k;Gt>?hp{-`mp8`ArmIy1+>o|eUNTwKc z!=Rca{}&A6o;;Q&eSW{JODq6V>e3>OEdKHt17aWm!n?voC3LmW4tC}r5zk#pxKZq4 zMH6!*L||k$b($&`8ItSq?*%1Bsyq*YB`9}R)aqH)>dDU`qpx#K|JzbK&it%@L^Ya@ zy$>&P$onU!0SjJZ8_vBF;K0~OKReHDz}|h|vnmie8zi637B+C-n=FODIt&28cs|KaLSs@mFy8 zKP&FX^(L4W>{pgM9ZumoC4U4Wa7P3Ix z&D0c%$dM*jIH;3_+D{(k|BbB=iF<8pa+^qQ1s*_Uj91nb)uEiT7u#d_qhW>xsyX|g z*Tsk>(}I~NNF*zWL_cd_EHWw+lM{;PL4v}9<3fN;A5q1#lW zs;YBn`TW5)LMSZCvOFq_hW}iP#%UHF7BROdI0J2FxRPXpk*MIdy6H_8Rl9W2quZn7 zI3u#>iq&XtZK*Qjc`KWftN8nX9s1u#V{BFEHl!wS%!DJAX9I2u0yqrfI`II3Bskdk zI3{yk7T!R&cIR(s+ubI=Egz@g&j?tpL%ORPuNTCXwAbNS*tezl4Y$Xm!MqQ$3+&*v z?U#)J-CtSQ=Mh_%k1i@DJ_`Iht_@cYJG5iA5;*xk*IqEBR|XUq#b6g4@Pt=&HCyHZ zr=wcj;_Z(*qQ%D1oyM??rzEQU33R93f)E3f&ZtymB4Iz>iCJAWZMRq3CQtKhYdq+M zh{YMsnF6q2aNgR7Z~|{wzZYQp!xpiR{}P^(TNyASp_|lC7BMzrM;W`4()yJ&ciiWU zS?QhI;1J9LW@MiHKFbEoEp2t+=o!o64s4Xh{<;DhB>TZ-$gIt78}-d+^hJ#dT(WS5 zzm??b)w3_xlFI=z@Y1_})Wu3vE`2*656!;!>|!JHnK3P1a@#Jw%{h6epw))2(G1xH@&<-xtOG90 ztnF(>xKw;DM}bpyh9YfSH^tzKCIjs6Tt`UHdyLF#!AFZx5JDs-I2d3k)DW@V$ike# z2rdmy?!zv=#O+Us$lSju=y$jqmtR~#hF9ZG%(kDguf-pNyOh=INi{@2d_9RgkL1`m z8sJ;#a>{M2I3+1JW{usOSN3Nk7F)MIqrfxnf`_XmLs1@kf%u4i>$Xe;y`?VCjm;W_ zF?yJbGCldNHUeD?9mbDc<@o}pss|>jPa^G~dA+v#a4PJ#mI20CG`mLQ_JCn~l$L=( z8l@1R6fI;j3A+RhMG2LC#z^$b@CSwrPX=x#U%u)F_T{uyUW_{e9$MZTn7m z8vWS9Ft*VPAfyNO<;8il$=@BO8#LToib{U2ZSH1`^BtCN`H#&xRr zfGsZ3=AlhFNDFM>`3Ha4!q<13{`&k!ta*Dq^DEWwV>Y1B)~#x@Avw8j^BUTraJ;2G zXN-*=un@sB2JKYlkT?nXfNnxXzW)cx1rhxxC+5x0tVdRGoUxTTP*t+2;pG@y2{}MMe*zkABsSZ^-kJ3PQlUFoho2~T6eD=g(t(p77b)CIoPsh!9{wy-a zwtT z_Eu;%Xvv+yPVcy1Ztv5-fA-C~`1x-zcLby{g`tMjA|f)Xva!2@$$xYt_z0wA4k%N% zvS5vY6t6+;WY9+!+Q8m#GR?%k_q*7=Y;Nl#wJ%|v@wiSMtB~lLi{?%bp~oFGjnP+1 zK!{KR1R}dkUL48`T>curv4i@)>ovn2)8-#+12->yZz0hNwY591e~Uw^33Szx(AUr7 z5YiY}A2GQABD_P6ioe`!DW^C8Mn5vg|F&=QePd+Kx*}K1I-`C2IDO?qQ~^8v!6oK% z_v<{ZKdE@#?AFnxc7Umprif{P2yOM^3h`to#W}gA2&9do(xVUs@bW-Y7-KChKO!Di z5#!ihy!O9xe}C}?^cSBIY05Qza+nWJEz70mc9Hk`h5tlwutE z`Dkz0ZrHlFrpaZ{PTyPE6~+#gOd<&ZPM9QsSRF=AnscA2eOSw{FSu9t}qE1B)l)_X?+Z+H#000RUo8m@eRS52|88~%4n6N*I)uN9h;u09Y zK8m>oJVM-p|3YqI(Lkma&%V4Cx0MuYP9q`&-MV9>K#ciGf-HigmC^p#ZQMuNeSeC( z%X@LB=ghdW`9cqj$iJCAYAcl#@DERqp{0yplCh`t3_${w8< zCKen@CYUU+CoyGMWD{64T1HqofI47p6hvME$)X9wwpYv2U>k8pAHoP}wEX;xWralou0Y(wKix(*2B`J4|4%l7eIH-mj0MP17L+M*rSUp1eP ziPepdH??L*=nnOmWEN;Z3g&qAt_I!T2 zu7@eZj=!9)eN7b&-QzI*^Ok=1dtKog-9=GB9OEFSwT(AItx z3dusvQ4I;v0SHF{so0T5Z7k{}Qia{gbsfBKj$QNLiE}v(Jo6CBb8gWDJ6``;$~2wh z+Hk;$K(Moi;Kd*kUb7`T3u7Lx-`h%z81ocrALfvuiWh;6BL)e&@l>XiP{=(vDe#o& zE!t?Dr-X>Aa+~6T5@n6e#(>H!au=lGIH44)prB!Q%C$O=t=Ct<09V+QR!FRG>6RAf z@>hgCMP9?S1IXPpvT1}n3SfXW)O|T>my6;;ycdr_x?X9gWYk{!UV1 zMP5-6ga~30QX!FB8Ecdd7$-=G}CRm)#q{77Y{S{WnE>>d48sz_)SC+K=z^1tSw2d80WoJe%Z&V?LSL( z{k1Sas#!6B*@45W;(|b)!3vjx*CuBqwykr9p@F%@s|{%+hQb1aK=-|gJy0ZuRC@!C zLhm^hc`dWXbF57VvR?1|O-J@f@M%;#?<;LqERsoyVj?R`LW|L z#r6t~cCUlG)mkUR#>10t($Wf(t?yH@t%ZZnj+-Ol&T3c*VN3`w*T3H+UiTyUdM+Pv zhdGF;spV!ZsiHc+gtZg0enq0T{~N~ydtxU;(GBF9!9ip5#?S^O0W4TARY=JoMfXaq zg~ex9(qzmhrtVVm-0m~;dG6BS{|e68lGNwDwQmeegfRXZh9SX3K_BV;7Br2TBAdCX zCPtUlHPGUt4poJ(9CE)PE9ks_{#!X#NHlPoQI0Lr`*;S1Bq9)k3}G2ULeHg^B^1EO zj1wXrlYb$9$?x!rRqKu{f!u*T_*q&M0_bT&fF)CK$NS(N4)Q@i+v0ub7h3+@@FTwsKi} z@?hlkvt_$YVrlo~06}8P%Qx48$t+w5P~AXe*a1}HaUKUa1WmM!t$T7pEHu1~yK>b- zLnGsVciJqW^Sp=G^1ZeQ#lGrt`O}e>afz{QI2w+-=e~d3{n~dEAxBo#3>wdAsV%MK z;|f7X20;Yl=HQ@_d&X*_qV}^?&|<*FL3&b_RtXcLW+ryxcqCy-{L$cX)iysmShg&V z*LT_e^1b)JopKG}5%5>VeP69_dO8a@DmDL!J4brr`(d8_krb{Lp;?dt*#hqzhbtB* zw})Yb={bCdo`H&jT@ZqsmmkeI{}B4u2?#281}B;9(4dB>Doue26NAlkAiKj(Z{JuE zd(OVkxPHCZ5lsWVYX0Gyox2wA6DP1I=YPz)u8l7iKDYXY06 zF$UP=YsDd_Tjt%i)#v&qZlX1o`ffWJ5nn49KL=vQmq*)c1P)aDzJ?wrJvvHgI z=&@BSz+Ka0D$ESArW!Qml4|?9#Q;-aG<_J=WR#{ViWde6N+}Bjt(PR&b*)B*t=r}7 zH|tm9VM{)*_3Mn{2Q}+cALtwIVZVMjtH}8{evXBa+x7mudmudQ4@6uHz=a53;|42s0!_oUl zQzG<2TMfF!jq-~L&4j58dq$uMD}a+C%7^c8@y#?g%3$jcbRm-c%AK$fk!C^5>|tX| zphTc3C;+2k;%T><8a=;%X|sQ(kQ=^?m2bU1o&=O5(ESsDN=-I}gUFfPN>MhC`2Cx$ zTzpP6+K0p79~@4N(=_X~oAX?bCu1shU(9mfb%x_CQtuRUY+W&dP%}!a5YeOeX<4=Si5Bz7NWZdcB|K#H3jp z9)Y`l)kZ`fqorf#QW`mJ(P`hx)wRL1A!RR2k;pZN`cAwsKm>4Q5F@|>=G=(jiEb=b zZ#(zyiATsu!W<3rh@CNR6E!9$FfpRaQ=y}R$!qq()$^XU{_URL(c!nbMm;+odLJ7U z&lf$^0*4gw%g?rWy}m=B;~HPXJw_>rDH}CVPgwormk=EUsn9q8Op#V$bS!i%jNyIx z^W|;KL>zqj%M3QEcbMn3Ee633q#+bVB8PyuOOi#OiAdwHL|W>hg!6Uo5mtkMsXMkO~53YMFi3Zf;!dK_n+c0sI7E97&zpZ(?iFDZ)o>*l~i z|KpUl2usOwH}FZcA{mqDGfVNChpzntKZABt$=YPtT4Qq=y9SOIjtWf?N1g~uPTK5m zNN^-K3~sl0K%qJ8&rTteI4z~Ne@x{osad9J6 zZDCZ1P$&b)=_8ogekqg&Z0BGeL+dup<+|zjYc}<{%A*ps;?=LSLm_AV8ae+SFbINn z1U`%tm_5KFRDrG_W?4dlGt$e<0XQFznK0VDwM_Fn`2&jrf+e6OAj2tDb!4r;u2tGd z`+lBS@Bd}foywK=_O=cB9SZ(uTpn<^rW>KrTl~Gjg7=6~z7#fyR|~F{E(R0I5`gIh z=lO6m2omjlUA&2j1V;iVrJo#PfT1aKN|Pu1#x+LvLm@Dub@JP4T7DM|f}7UwBSUi^ z)3|N9l3x-us$V|%YH9Ju%Kj&5Q}2Helc=VAnJmC;N|M{?B&SX`LyZG1oF@$N?LXbl zVn(Gk6@70h`4`l&VM{{_zf&Kpa-pV23U>rg^RnnPE+So4KBiz3pz~p7^<&boj$>@Y zQKSLolx|Z%?g_0}IVLMV$@8B^F2a1Se0JUj)4M@?0wA3?m$s?Xg>oWS$);ODFRLY1 z?L>S`SBo6i4Rk5AXF%lL5wCdyofaVojuhDxy2-%TWOG4HBW@8!hBgP&2;Gy>a(Bv7 z{19Lkms_a+OU#BIncXl`&vll1Zfn(Z6n}=QV$_Xz zfP$?&7zigllL+Dg;jrp#52W;C4J3vFialwA;Sxsaml2fMwKl)RDAzM*2BHRRyIWl? zK;Tfw6bvG-MFGYr_|TXTR~T)Ss#<;2&G87$ypI+^-^uw@_H9Xy=DtL-MEKljte#NZ zQu!L=FUn?71pa>c~bVo@|62=RK%)JaqB4Pqi5|ScuV$npCVga5e!0e_>{|aQ2%Zy6slkO~re!baxE&IQa1bAG!2B5yn=)X{PJzY`L<*`A+FK8V zZ1gPg;#*nY@Kh)U9tSZ9C;8l=AOLc2oh%koIMwa7nB9`*LV56F2=IYJ2hU) z%O|^EH1xfP>Au8y4aP%)`m=L>aBwnBDZD-ZYc3wkF;t5%PO^4#3Wq@AUBxg_k3@n< z3)CVtVkwnk0OG6VCJ&-ZXQ7p1a@Da>s#_>zjwcUlD^c%O;eCUkwCV!Fl(IlVz(+=Q zqe5faQj4B(;7S#MH5E?aJI13Bf|bFgfMz%)6k%N)7k&>DN7YY&e?3+!l8&wGAZ|*B z>=%ygjCp2747N2cL5LF9E@%A8AR@bFls3jtdr5p{N7*1^yR zW|OLn%dF^+4&n$JtgcKR*6Q&h(=?ZdCZH6JOCq(b8{M}dSWOmz!dPU`I=N+R7n=Pk z1Us$L;GK}hkqtUFvLGFwz9yY}yF4xo;6_n`zF5KC&b3AmLQQ&r2zKe_p61CDr|)Qy z2SN>3S#>dR(3+7n&1)LEJ8=EDU&F1!t6?#9W{JZ5Cch^Nr$X#ZOCY&MZf<4CusJ}} z8>b3RujL}Sge?UHLfUrkz*&xe7acgf+eJ{g-AgU6^P4FR2m)IZaPuiCc>FQWF*{l_ z^!|+78~S3rYY~R8l5vuNBk33JN|n$8NeaVz{sR1(#vyY8D`e1PN-q5@wwbX`;*mv* zC^=OkbV)(tD^3yKCNVIo1R_<^pusjmRT34@t)e*%x4GgW)afUh+z&5k^xi;Q7R~== zLY;DS9JLLFUCp;Q0AF%K@E8y)jsfO@2>JhVPhb4QZuat+2}3BN5jYQzV7aN8D-Di&the>Un54vPud=A zd`NPx%;IJkhN2v&cZ?C3mS2c?h> z;7=(1`Ua0#w&ajrnOI6!(B3Xx^%62dk%}808;^BX6Rvbv4<8M}AZKDQLKeHfzT3LGWJ5b5QVEw{bDo6n(O1LEAPw|Kh8(iklH)`Biiy8#E$c@e2up(7Zn%cD6q%}kmyfvWQAlNdJaA(q@Y5#p->{Q=V^Xo!y>tFVZ zK9w*TvKWVvJ5pJ?HN^{JAqCe>C#4zw;Z!W5^!O&%&up?qx@ z!s&hzv)-v+XnaQh$~sq4XhLz}ny9M0RbHCxAA)apBl#*&!mW+Ol48(|OmY&DK&71l zvv5eH5=;e-BH`hiGx)xxJN&>1MJz#5ihxk>gZx&88JEmqq`)bB z{0(B{1}?%gDzil{2UmNfV%kD@J|2d*;!aFS#-2++-Mz8jSWRNw9JYCwftL*hqi7!j zaecEN_2j>6|5Trw?ty^A+u*-d!A6eSj*c-RZ%xPD808%OI;N?`@oUCG2;lVyNB9}d?HZF z?999l$E){sxLC=U?DSWe(x4dvSQT0eiU>)Bpqaq65ls{pMmh)j6c!HBIrJcr)Opxu z!ogTyQjgT4wFZt%WVcC@K_^%x#@7w-t?eR$8tcnrOP++GK(KqPYN7Y0;>RnGYnn5eYfUXw5qaW(Ly2kHqJrUxd}&5J?9IuN-Y<&*2Oc9=h7;OJqnmMLPQEP zzJwaZL#e^tu)o=Y{^fV}>g@g1v%X?#+CbaS>S&&lWU6$YTcBaA*I(0VTj%{QnvHa2 zT{cB{D}o-U>?$lORRSmu3x>^9OksfuX3ZEUrG0yXNLgZ{*_9d~t-u`+(i8b3q>&OE zw(3n5je~3&0){9aEHcOxGhyoZME}{WuFq@rM}=yv z0dT;fK$J0{3~XXCtew|O{qCc%bv?a&5x%Af=DzzU>iJl8HWx7e+U271pjA-3ts*VvVjigF1qJCqp~n-;UksC~ZG!(W8OV4*h9 zUTu6z;en2XpkpPMA)J0&ouUVkh5Wf`pSK>H&Jbcz_>DXKv!4MtkO()S=a%XU#D1R- z%lF=FGmO^exRf`XhRNv9@7c#py?VyHny8l5D9BjqSLce}zXXS*`Sq@*gNJ!5ng+gg z&+*zjyc=`QZ9iIG*fM=d@p|~Wy`0@%+WN6VHW2o^0R--z7pNuc5vRU_*Dq7G?Vq2b zWf0Ybau25kqSpe4YyMseq@;aF#=52${V6i>at%rl@z|u8)i-1l`0Pk06!ceib-I{h zuhQ_QY_5S0V`iaAEcpXBED_8>iNyj3ic7BA2H7AKYtct%$_9%?n-p~1fpI`$vz_ds zgsT8ANvUtnbSWkF`4nLGzkAo7;AziCuH-bKT?$ftd>gfR_ z)irv1O}w=z&6#9Q5PP0+DXwawNC(0hUj4yG+liEi;kw!W0%~>vCvd$7=z@NJ6t`Bu z_7ePC8lW9=-(eMm=bi)rALx6MqN?CEHI^=Tr^qYUC+25f<1|D8$LYQ)9GEQKhI}rw zTpUBdYhO$vx!}7xBH43kE7(~oEZET|d<2+q48H<11# ziW-a>(v0RzIxEWC55E{4@vN+YaecwaE-l~_s|a@Z;e;9hR7i+dx{OL@zCGL(c5A`tRyvt{U&hRr9us;5P(Y%}tqV z!7O!60$hNzigUrYv<_YkUnz)gEF(@FI+Qz=gF({s>2GacuG+mf_T0S>P~3QdhUc?? zxLch{;Hl%*0+MUJ|AY~?+^y|#{=J=|FR2yT*|v%iido2>O^9~ zN8+O<;Zgs$ABPAw2^QC3Gqt@dn9lQ9z|VV``k-36HqTfZs^Sdbsy$b?1;vURpm3Fq zPZt%w*>TWxH&&RYt4~l~v@Tf;GDjZQL9ESDtPlojUM&cNiEZ0dqyQqi z6a6s&GNA+#60)iT-$nq&?f{FrCDsoIqY3i58J#(Z`G9jpubwvIa0$_RzPE+)@!zEJ zBE7Pa!FPB-2Q#GM8x<0_>w%zEa-moPCEBb*kGg;j)CuIXmE4_-4=L)vAqdQ(7dz7; zwOWYlCHOH9;B$RrqpG0WNMpR;NZsUZb7`xY*f@pKK29hF%uhDk!n~wH?MzXv3ARza z$7KwOB-d@b9mK5JQJ}G0&uara)t7B_ECD7l-cbq_?+b@w28c*%F_Xs-0dpDSDh@8p zZ&lA+OnfFLDvG4WygpMXZK!!=moDe9Hk&xb!S9~D)!))R-S8ltjvin)D1m^0sBOiS zi%{dXpdszZT$L*C>&ut@Y-6EAIAQ52?W244EWgw9aQoC_4({(|f0dI%;lz7gh?>jS zMX2*+!F1i1CdelBa4y4>FtQCIq45ML0JxSmmv}}vY?|A;A3WDR2RsbF_Akyn3>WH7 zQPxD%^Twt9Cnyh~oF-Oqp4b1{e!YE_rXFF34x~!91XsBXj)Ka?H9w*!;S>jO`=MTn zs$O;rix=9D2;=?zKcqEH$aVx9)Vp7*1?+N@yVVvifzm2hTKJGAFxE|StIT&^76!r{ zsx%&e1bF~OR$Tjkzn*-qWAWW`0e_XapGNZYIQ$_mj;2`yTOOE+y3ETSR&^M?Dv=nx zq~KYCpjQ(^`cva1_KbdO%@&# z6DMM$!3@w-8_}~u!LdN`MDyhSCk$ksUC}G;_{dVBQls zN=b8tXoe(+BvrLkKJE+hJQT_H@e6Ek*Td5x(Qc5RCfho=$Qo{NwSa=uU`fPnVq%hc zkR*V!2t)!R%z8nEzPei5n_j22j=ryb1}m~a9`UAfyy@+d)qSGOEIdb4CjYy_@__TM z4W2J0uI^VU8}mscrtXN;{D6AsVUfSkDaEiUI(D( zq3urZ$NIW-(v49~x0V=k<^qq3%Hvfm#xO#?_}wsnZ|B{a=q3DF?6asb5J`{1Wz-JeYF;I1NeHd%lf1 zO0l*I`MQgRk%7f8_h}7QgzXiv~sxs4~yQgTDOG?vZf^k!hOQq!#YUyNt`idUkv) z-+NAt@a`|Af9{n94Pa+xHlo4P33&x5U!_#LF$TV6Axk1wI)(OYzr zCehzRBVIAc0AXyTkGO5Hb2zouELD8^i~Yp#@u;GTHZtM|((>kGZ=%UrSX=kMmlbY) z^W`mM3oo81sUT{7$lVrXfx9i@b($IOh=HNcZ>sfRQ!)tKz<4%vB^R2>pdXT;@FuLV zMBUfx{P=Ir&H#bviAujYZ)zdHKgRdifN}aMWOj9BSEMo+rZ9F16R2sPa6JkX_wlvr zlfhUl-MRLccgs)uQ7V00qY3|be>w3<@@m7qORJoBL1fP@$^34ANq=h`p8FC#&SQ!# zubh|2k<$(XYy#9E9% zsXaa(V|ORHkvKwrt2`VN=C?ms(>Pb!c#i##~4 zEGunr5#5hZi8hta#^&@zfJ7jBF(90R$O1$R+E*h)cKHv@0=}C(W~B$b>@Tzim={V- z>(?vx%xZB9?+}+;Ln!FGj#8K3?G?}3yOJq6vnEDS8dxR{DD;mL1ZC`out7=e1_{3O zX!dxFsEg@7HE+sg;4M7mxyZPLtIs(srSZed%QF;9>Ema+52GSkNzhb4ge?H!zH#^+ zXd-RhZZ%djbvS9-iT?33mB%N>UW{e7R=O#8&F{7oJtpep)OV)AwdOtFe&Ezo@UQ~y zv0?_3{9`BfeWl)cP5xMe?^}-Zu#tlmTB!e~ZZiZ)BQ}hNjVunu5*9IlFU*rgVx=L|YGsjJKV8hl92Yejr&Lw5I5@qmw!e&Pwq_-A_bc^TBz1OU@*9$W_#-eO_( zWy!UuLesh`z?bW1!qr>OBXQnip}HW_1pJ1{C|JdvBsQ+bDTZ`H*-GbUH)Ie=Z&LgE zX6xLR`z1SbneDXkZ7&>8LLutPo8`feix9*6<(q6I;^(4e4dUF;GPk82bKi|kv*Koc|7tl3vd5Cx0$(L zz8kvvcYPHBL#FSCPC}PyqZ7b~&M)EO#vA`~{nw%nvt4=>-BvYMHg~xa;IK|`t&J1b zu04`h5{e629TKri`D`yvzji<9V(xBFMCY26x~b|ypwKZ_5ItiuQCL=~9W?387bKjd zvQfHm_1;FkdH37Ma>vF#HOFjnnuq052 zcf=8aG{hwWE_IJ0(AWGTcPTXBTPLc20W;>!KHUoo9V>NdFKfju3~W_mrF3328AP+#A^MVF!59&#N~*OS-%wx|8i|R~VKHxx)zpL_VW)(|!eqi!V{K;I2*J_vvcjvlaPu#~ve z1JIdSk+J$sM=|@XDE**#WBF=lvd|J#K>j%EZaswgvuPAm2p0lr4XlS^b4kpdfU()` zpI*|>ZYAh5{iu#K;<*9XjK(Dwd?J1=e0e@RD73xnqgiAh(*15~CrDgGeK*63j<6t7 z*%wELSE9l=r*M}4mt;Xe0-r}PAeAfOPM4Y#kEN78z#~dRyw;5ZAnSyKo|geV#o+q| zEv8YI2;+)?g!eEy*c;eZ>Bjva+|dIYYU8hflAo{~I(mB&VumqZB)1=_S|Fvt8f|1R=BZG9ZrI-T2}xMti! z*CdJAh`Y^YTLY-dWG+-(3_mM8kzfTB8rDSTW^4Wj*^K=;B3n*HT`YIRb0L`jqqwji zgwWskJYwzOzA=-cf#O@F=k5t5@VIS!Exa3MJguh1q*48n)+yND2CH7(`aa^CT6!K` zh6)8bF+LoibdJ{yD+m@MqIFUGNqDNWq3|`aVdyO@M}pK~G_aa67!#Mf_B=3Im&?tc z&bIh#LFBZdL^>+lh#dwB1Jkjhvm7Ue<$*!l4p=zi)@^>MltJ7)*)L_8R=5xr$U06V zF@9(&DaQWLJGs2+efG2Cq8ydRpg($`a*ag1XSPl6zDPIySH0h#-8$V*w~6Ts!MfS4 zn--h1#}fzMFKfpp@7$}YV<(KRF2cQV9!-_BMgAj8$Ui8SHo3Gh=Zf9!r$5$2Qivd@RkbOi!@VI>W#vg{T_I1)f>u5C)i- zEmroSYN9{5uw7$li#*XlHR%t-i*|?ALfRZ&EzIEuj^CaUP@7N3QMtXJ7N1?qJc;|oz<{O2 z6C=%xt&eq_z?}c|9+)!)qd$L)tCwHB50FbPf2j&dVqFWIKS+qO^8TyyKB(qWYkVjg z_)UfttCqy2*eKP7DH;O{g~L=U5DGkR9->9Bg3fu_L!WsQjKBn>%pXym^_)yj+!bWC zhuT}*aew|R%2!B(9S+(-77M?j{hSrAU$eW&lqC-##ecAB^~e(|FC88>JBKZZ5cux} zjOPbYvN7adUBs4uST&3bQncW)2H!YLqxQ@uW=4%iAu`MB zq^=J=T8DNRQ1@T=uY9b)%DhV@$MEG4^lEmkKwF%%4*b`b3grGv9(w__{0FMPcW+;pXVKClRB_=&*A>49gBE?rP1S ztG&SIQ7E&P9P{l^ZPe~YP?;P2?}Qx0KNt?y}FDj2pU?E`w-q7)i= zDf@TSOM0$h(PE^C`b;B;Ftjgh$6^2+TepJtT|ifmtPGm>1%$>gJyj79md|kqVOx!z z{+Dt;Omehu96qA>mgfQgs3W}2dz&{j_ILq&(`Fb_q>wnwc1@8-t25Nu6&9kC+V={{P|JDUUFHCB0t*~4>&U_ztS!X{Tc zIsS2tA8W%jHNBB+jyzRe9HOKwQZiTUVn>-WI|gf1huBI=t_gX>p6++Gzo658-~>%T zF~9Fc<&Y&gyzPM=Mr~37cT9?%+i@3HRwKCw2*Jy!T;AmSo^iz!0iZAD<`+s&2A-^4 zV6V22TlyaG7iI|r721@|K6>v-Is{5pEB6os8+?AwPRa5;7fPDx0e^RHJk?2n(|K&K zrlIFQUpa){#PvNLn;`?^*1QhPHSex*)%3kU6g1O~Zl0;a`e2%~7z}ZFCE4kJLGgjo zjS;RiPw=Wwqvf-G)$78=UiJwBcmIjT4V_v9m1yBT%Jj!{Z3x{Z9VU!uacQ#O_UD)c z?Ds9atr57J6GJy#XuAN(n>YNFeIeSBAN=?b|=PaC}!s4)$*MT)mvhA1g<=rn;k})*0&}0FOQ6gUf$mZmp!1 zV~S+(fipI+?xKL>80q1eU%Coj$gGGwZnS4KYh9X8LLi4(@hk3fZumC^)l2|pgPl-t z0uC)BLIm=V#raL=0CQj=2+WAh+1&PQfb=V~`^z1B0B@QD`opwHI+uAo0;M)<*UQK0 z2W5?9KU{H?-TB3h=RNI5ivVjkjD6hE)VK_AaV4=m0lNEMq^^j1lmQ9E${=4m^tsQk zS3mf{#@)^H5*nmmuh;!Eh#nH>DHkSddq&=Dj#FaD`lTCxdEExUFmc}ixcd}j)$9EI z#y@XL>RQq4%-O9QC`^g1AxLN+-j-oPj zB&;Zb6trLumOQF3GEHh#*PM0_0PsbOjqTH=d-SrK#de-l02EQ@))Bra%b8_}tssyJ zz!gy5My0*=16O|VgYB}Sc7QPqF}Xi>`WM&j8u`83b5F;i=*$T926df3mmKe)iVO`6 z&R1aW=J1t)$tJA4KfzW)LMhMKJC0|arbE2p%p;Y6A({KX*#-Ndbg-C+9N1%JMXf>F zovWUj_a%S&uF0WWx8u;P@FxgYf4?w1_y;s{q9oNr%%N&&iUJjA2=GC=IaDunqL*8{ zyM-;Xohdv-c=%xG1p3811VjLwJF-MFlxe+(A;hJL1n%X+rDh3H(%QAYy6eWDmwUh# z^#VQ!#sa4{ufe;(!2vJ?kX8Z8Q435O6e)+#HerNyQwRRSDkI3zO6!{Gd=5&UZ7+_o zOX-h5sW_-$$xqfEF$|y$yNl{(c@bYUGrYu&=4(nPLU&aOEjxrp#7InTy!No^owR3N zb#ZLnx=5_Yl^>GH-y10r`I6Yg0bQ~6lH;|9`JS`6*j6!;*k3imgK;e|4n2gpvc9gMp1m*tNE|t7u&V!1j3z?SNFR zjIMbT?HI0q>BqtIky_Bgagv@MpOpYdMFBQ{6albn_wCNzxP7~^cL4;b>U>bN+gUPZ zsEBduIGNeJX}NCs?8csX-~;>s3?O{%qSwqVef{O-k+PPAe^#z&p-bx&*tf**G@IxE2m|>v6CR^k%XD z_TKjUguGAhqq(prYi{E5#x^V`?ydh-qaZq z%Wl5)J!c-g3wY6Ns>Ai0sO^U6rTLD7mh4EZW}Xrbt?4aPY`YR5!?pDTzxdb21MhZj zzE+1uchJzPr6{uA8dUef@ANk#U`A`x>TA8C?{_5zzbPGA2Gdb8*<)^bw@m_8MSwyJ zxq)9F`*a6IB_uA74I%$!E1R?62U(y7Gm1p}E(VIQc~-SpekQGCbRf&40HDrQ*pcrl z@OA?;o1Z5xS;WglIyfzub>;GlOj84|(b&Gql(zpj1a2{zgaO@laG+6gVAb#nF4Ms{STPvwiEjxBcVoo$~$SR4A0KLE4hyXAF9h?G_}@zdtH_oQB}oWf)5LNg8r$ z3It%TaBB@o`N^#ZFhuAL-AM^df+S=!L)n&}W9lEJQ_8Q`>;7YS=&Cjbju5BEWJV{p zl}>#1#_Ext)5A@%Qqv*CRy~y()PM#xDx3xY#2LYIVkmnkpruHnIdteEyN{r(U|E;w zlfY_lR>a_uoh1oo?v+I5uZQD}AN7f|Lp2$aWekOI0>FbU2a`d~gG=5-gMh$D&7;Wq z76$BK%QP+0#SSq_$a$FNo#tVg7?x^6rC0y~+DgqOMeE1g-|+m~soRr1z}A>Bpn>d; zJ2uh-kKJNKONrU62UOAt5||ijKyH91ODZareaVjIl$HpkHK@dlf_laobYY)~iJ;z) zr@VE+MZefqW*lqgZeM?Ea@3sqks(BeAtaI^rz(__^3oPW%~XS$TO^cY;+cs71(}cS z2a>KtCYNr%BbP~pgBq1KRYzNH1dus+$pBOkTt^o+AVoky3N|xBN=5@aR`@V`!$H7) z?NvR9YTKj?R(Q92X&zV~LCqpCC$5ozvXkJiPii!lNS#34#&vO{NbH@0!98%>!Kj2%qP9K3*hGhCRErGvG|vc`zc5gTqe^Fp=xbw9(yW z@C0H&CH%A-cq~e*A-;#rQ)njMZzJYXqYTlFWJ52&uW-b7zR$R;U7x@%x@w zpEyqjJwJZ8@C<=UWgIw{&sq(3T_h=x29 z$=YHeS6DD3m~i5hQ>V^3!0;9GDy+WD&r@3OE6i zD4CjbRB)B^>I%nxC>hy$+b>paz4|L*>fR%75- z2dr9zAViYAg9GPF9#o1%cmPzXY_i48{47c$kS@XFx0hw7SSYi-0j;{^5eB6D*w{oSb}QYGX+k}vyO?r!_>c_&3aXy3bl+ zP#CeF#aiAE<*hg+*d@i;^X$Zmms*k}#Lb=4LAL%9i`L)W?eqI2D|XvWdk0Y}JQ;?3 zuG9OpQDfl6j2bPdBkVo%XA{5}%0p2Iv#)DBv6)J0fvp>x5y0a=Sxp_eeD{>5sk#rwu6<8 zhfvIw3{`t|x(l+d{a|tlL|Gi4!X8=l9tda0vGk*s{%S~>(h8d; zK}bkvmdLK1TRZGmjm2I#Q|(MA+#ME;4BphzyjAQg3=kkQg;Wr@dn7VF^7JcBbq$;aA zYGx>qn~|bq9P4lscce7q+Jlv##>=kXb<_ZW{Gj^X>$VsGv|FvE7(%z-*xA#&?{zi6 zvw>CT{_%s2;>vq0jmHnOVePYtwwOnk*W31}XvYy+HdBxXw~kHI?1qCCc-Xv_BANAc z^mZ!+lL2s2Q7QJR(pau#5yD)DfZp~tx?uBen#tg--G$aF7{M6I4qTS2<7gAjLm11w z9wJaX7A8tAEChr1iBnT@J|%dDLP46r6>U^C+lg%Emu&7A>{?fOum86)&2NACs>^Tx zhnHNkfc<7eucrHn*V@6t6?rV8=e=Sjnj?g*u^ht&A~Tt!3;0PodN8GGu z1fw@|*B~56e-3zlQr<1QHFc6^lX-W35nCB$!!(Xx$QE zWG*s5l$0DY_!Ya-rK-qP-mO)EtJZle6Z!Qj6%bU#2w}|fg&-J%9qp>N zH{2O4+#-Ygy!;bpQ^duHf5@_=1t z8|x6c)4~6s#?~9FF33iAXLwOF*9{8phCsg20JY{eQ!Uv_lq?j0 z=tCZV%9}>NO0;V~bwTen`V~{ajQL~p+EPL`r@oX4@5nVuc}-An#_Py&o*eLV!=AZA z{?vOl_kJ-StQm+bt*l$ei@rz78C-2QZ&j`2Njj8w{&M7gRZ1ItGW zYCjmT>lbAn{cc#cUjB+#R6eNod!i`$ifE6$ZJm04$)g;y)=enKarPzaxdn6HU}-Op zNiP?0_v^B{N6ZCArWgNmU-y_85*1n1s&F;9Iivc2IN9=qoQI|8um5{?pbEnT|ZnGlX!B*T#uxo<) z>xM?Ecb=I3VEtEL^P0KND$JI@@9AW(H8dvn%xHf_JQ0i6;~k%310;do2nB>(m!_;! za_x|5YllN$3+3AIU>2Hx3gGI4#(1+kAL#fLIRYd!DrU%_4hPNPThmp=j~)#vfxGQ#xe8W zpDe759KBDqoE_`X|1lY?oC+b;?tCkvLQ`eYKV_Mjddt!rT9P%)OXGp&oo-Cf1x$vj z^Y`@m4RvE~kk*9%&msJ&vcinv-~cF;6vPTM4>p1k6Eu@BJW`pV=92*WF4j%*!N`nW zbV_~TBQE_z7uq0F>Rh2((p7L-Mim#=ugpyoqv`<%f_b*mhY^9rh?tBRWCdUe3{^O4 zfk=>>2N74ykNCa9N)Pym6X9BnZyv$7uMt;S>$IgXbqc^mMuUi%i9BCm0#VUMlhUU? z@cd6Vt~vW@n_&}+U&Xj?ihyz5I{1aB=0j^zZUqq{M;*M(ZisqPGmqS9GtWKg|LsqQ zrXQaL5 zni-eQ(ctnyl3>O}%76;M67P`U6+#Kj0u*A-DJ9wTHYed44YZ+>x9;?e8>WeGN(W@) z5$V>AKdC=&3-6`Ye|v9I)ZuTw+fs4kt|bjSLidwh{^#E!$6GGYQrh@~Z8E%#+{kjW zmJx#zi!gpF)oF|)!M3TfN-$2Uk9vReL5~H|SMQ4m{eEA@Abb3q-aGo;+2dcvzVdqm zHv7wJd*!!#6ETQZ>+okqO8IJr`+XvTtYvnngd&7w@ zd)E-A#wChC@59lg4$z1PV0$M+Fhs(E5?vGN+tdaQk`fb)-LTD{$~^!gyN&;l3Ddp? zTm#!~`<7+RtxTRx&D6L=2ovU0YKr{6Mr=VfRF@xrbEf~$kvLo2M?kijM*cI_i&;bxtANP7xTJQVNnY~2J19hECBj4$dG9IOQmN3I+`9^1{5YJ@kVz z@N@$K^=nd$O*)K~I=Zp<7U?v{qs$+s#s!VWea}ow3C81J{*Dt4ea**DKjzHImp<%O zZ(V@~Y0qo_7C2r2n4Dq*Fd*4i6SO=KimW z59SKDsPD7>4TlElXVyRKv@o#dDL&s4VAGPfa%omZ26rtv?Cd*NKj<6Bp7V*PQjC~v z-w4YA2d;Gn!tbij(hH#nw7STsW{TqmAm+4&yB)H}d>P!BOa^G*qz8>|c;|EP^hI`+ zCucBIV=YG)IwUG3nwbiac_=xwePZO3mml%^FCE@ zD(WbfbOREG!9xKEJD&9e)dT&u1k%C%5tQ6(!G(R;^c%j{=Ww(ZmD+{W#m97ADB+)*-#vws@&7pB}IR3mZkLPaXdD?IjG#01+CdMfJN@-XHaZ zhz78i8Q#vXIBFD2XdrWrg5S5&g<+JCD|;cj)*jXxmPiPKqO$a!Il8TTu9p} z9bUULPu?2+-UJpQ5@iCg#V@Jr!17g)q9b^_2bw!pBp5=z|-U10H%WUJGg2=H+cjdbqv%Z*~bZAo| zi77`wO$P|pp%0WU$jZoywzktH|Geh(Pya0%CkIS|4`@fa{tb_DlB3U@dT?`K+559} zNev>T%ugs7$+)IUeCAebVQ+N@_* zUtt=m+ncTQzzdJ=9b3ZAjrK6V?EN4xfgC{%z7;6lCscFKb6S_*d4+4wU5~Vi+$CBd z0hG)8Evi=)L`WR&b z%7#`P+J+P}Mlv_J=7GCLkN)i1*M0WgPdM$}s}?QTKj@CP(NNUu{F4j+=9X%{J(#gc2e8pN$q{FNcI*zU ze&4QiC@Ih;SV~4IJPSM-k+BP^+T<$Dj2!dY8`nPPlrlo%yK`>;^p0f-12w32?shDw zb9JhVC0f;pfFxOdFeo#pwyaD|rOJ0RgV_6Nn0+FI!F@WMlks4#Y~KE9-`sW^Gm()- zVVjce*Gedkl|VCR3J-8r6e5G8f3>{+g$uaTdpS^Re##FMG#X*;*_Vx}AAW%rvA)|y zPmk?mA_gUFcc_Vf{%sZdbHLw*^GpAa z#wpGn-}lRQ{!*>~*YP_?)_mM5$=YD5!k&y6uACT{pJJg1Hi|*MB~ThDc3$$6x4&>_ z_j&BⅆN+1IkHa(0K~YJ^D%3Mdg`VilkV4cDBYu^#3kdA{N!7)NJn=uK{WVW$)OP zA_@D_J}I-quU`0)UBmg@rB%vFO`^c7#qx4QHAeysFMwBukfI>twy;hQ9{GZc!XJHb z>}Bs7iq7{N{=ij3%KZ&8G)@kOp7zlv-!gc@=;!J`{I-JZbIqIc9 z89w2ghrN388PsU#!6-ZPK|#>M=#XODo3*v`CT4J=g&Gr54In6#6$Jws1AzseGO!7$ z2F=ou<=K)|mmPBUr(VpBhN98XZeL)37s|Q|0!)p|DW|+RS$^JE&z`QV_-N*Z@ta(VE+7)S8b>!{#_1A1TlibOiG_(5O&C@ z0-_dR3}-3C5x2={K79D;M>an9W+sZ`T$A@=y?e{c^*ZB{hZl#O`RPC2R$2LuygGoI z3g!pBdP{QiB7h8mvnUeCCI&L(K?V=(`2b{~y~RK~%MxhRlOyULQSPi06PTDah=qaC zKli1?d);8s;Sq#WO7hH#N_99J9R0{4=Y73iuTR82-acj9cXg@4&^S39f7-_$aa*$H z^6AQw6C|{Rkh7Khx$}DmRApVE5>s=j)7hQZF0ttk#LRymv)yv<3lA+9U-4?zAzZ)9 zvsTsvygI2aa!Hqy?5ZU5o z;aGgG=H5&A|K9SV^`o!*@&%UW{~m~qP2eq-&m_ucm#5X01cipkuC1zmbYzyRm#jMH zE00;mJI?=EWBfW>kh%6i%Xja`boyT>j&&H_#SC=(d0+X9PrA`lo0Wmbgao_r%{C`X7kh)hKRr&hOxym zI~ToERc~5( z)@SbA+Bo@33&!6%!O@9hhQ`8?i$}b9a?LHX17qv`@F`SV^}sy%xrd+mp+ETH1<$)? z59H@w)^zzlf9gFOD;xioDuwfN@%Z?4^Uk!Kou5Fr&)qEz)qBqI6bYsv&wqZsdgWmcdHE*4>a5wylBJesBIKRd z(8Wk;SwUmOeFig-r~!mpwnHjDy!PkkKYtr4&)auoYe~GKK3Q#*0Z_=5EV4Z_p={3p zz0FD`g*Q$;hH6-BE?5wr`~2ruKPCARg@AaWg5-P`It~x21f!%v?IIc7=d<0dW*T4D zpxX|qfAUQg3l|q^N^oFhr~||iyee{X@MK7&ywaS3EwC0Oy9QT2W~R;GSaZ(hZ#s7C zweSDm_l)nr-tKlxbc59Sdu(Dp3Fv^Z0Q_0~!y~`6WzYIiGW^o%bk##Gn3q;wguyk5>8@9q;qyeSzuAtrlNr|Q{6u`~Ltkn?@;Uj)5s%?kp@BVz zk`ULG=TFTc5CatArANjPXBle9hL3vobXI-J()#5euY{Qoo#L$O5``aRZf@H=y8X8I zZ`lWxk)k6e|<|wKiJmPKn9652l!y6ymb=c zMFfyg)G&q7EWEatp7^{S>C#6Yb&fZl$Nj1F#}-EkyYg>K0`_!u7H|}1VeT78Mn6Wj$k|$p7sxNO=Ry-tgtjM}?v- z#^fRb#vzcvSq^|uFqgNAhaiD59Ob#1U$%0W8@lMaHKQ+HbMEIqG8kH4c-+=EUVX_W zwtndevu??ge}KWi%c?6*Y$Jt)T#1N`JUN7@mQ<=%1yT?)s1Tf0 z*u*R(o_fR}7Of-i57NY_0Y*~|%8#yJdiu83(knB!w9>XJO5Q?l{_*uL~u1#?e>5=e5L5h0d|nIMi7BnF>A`l2-~Bd=+K|D2gHO z4ed>UQEs_p!z)i{%aZr*a3e2UeePHPeVMkteBB$KdIRn4`Ipi9D_-%6$`xy$^uR6I z(BIyyc!3VDSd!<3DufK4V?WB`fIo#u?N{mt3nd_m0f3Z?pw#m`%65Pqs6PDU6x%q& zN%mvo0yWK%8$(&aa6S16EdYM8DJ5Z><&{d>8annxJ6g@>Uy!W*(dg@+c=dqnxFaE> zoxF6pfseQj`T(TI>|Fj<8rt7oQl(pll48eFpUvvF z^}@^7y3Ju=V790%Zv{D4$vsTS9=VzQLyLi>Bbj-GLX202V>)c$9z|iz3!#NE?!L(ARd{{*leqAN(str)zf) zz-S<+%BV3_)wDy8xWLE6nFsADV+vr!ka9W-V8h~&%g6WTomA92XQfn8=T4{HW_mT2 zUyV!w$w&4-2A?3Jh93Uf^{1sa^spkWt#FbnnJ_P4N8WwNKbChXv>XJQDWj+@IVm%F z*IYKYb7Vi!Dg+1$jalY^4dW&N`KdyEvp#Ezyw! z8C5DYN2TK(TU-qkZF6c>^R$;i!G**)C1V{kh%tJvrWnh6eM5u3z4F{oy>tg3_CcjV z_F7nAChICg_3}E;XWj~qc{hwqaxFk6>2T@?m;GTz_`@JAG(%p9@T{t~dH9In3iWJO zHRzDk1`_28j2R&mK&}GIsY1*uq5Sz=&IP#G?lXg@fY?w>EfAEd}`NuQCQnm$PgBY z@6CgoN=9M~fK@rM9MF~u8$z|Z#FEONfc>9jm8Ec|F~=c*k`ziF!GNL&@X{8QoY}F9 z>l&ZA*8W(3(y8AoYPH8`t563=YPxsfiq7Il4UR#kg>#k}+Os84JD#5cd7N-Did}n!bH;JE zDXFH!9^sm2U%YWcqc;M(r+{i=0@o4cN51mn7dPeDQ5`z!2}KA(BF->?+^67@6b4*A zQA1ZWz`z7k=QK0YLIXhJ2dZ%Xeqg#^2Z>x50V*&RvpiQL5D`aGeF9)o?%z`5)#lqI zu=v`rimLaVwl`(VWcmfSUGS7E?`?^>bM76};ayUw-pFXT{(T^zqG~Xr0=#rldDzQ9 zJ=ko8h!QMJco&E_bh+70VeCQ9ufEq+oCc|lO}Z`TJ^j+<=X`1PZ0)Fvh@GXHTj8iH zYi&whV$BYCF_0_g%M1?6WC|uS4MpVD0kimlM18VUBUw5~4Ne3=0HIJ5F%<_RVlX?H zg90#0P?#&3yaWyc?ef$x%+$n4(=>6F)@>g4KsE2B->Y@w>DNE?tYtfY zaUrEm4i%7iR&WKd1Z0dTv#fC3f>9fR0bvhyRS2iZ*ir6@g`@nHE5s^!uGPG)oX;v` zmqK?LVa^E3imEGgh=oR=RxQgy8HhqGF`B`MAsTyqDr8UAmK z4V=sOICfB;tGrTMtx1id;x4E&=QuC+OkK4m0+WdtRjMwljIIHIMNxGr-`jL$I8{H~ zoo3pdd8h-#Ch%QaCkHFf4Zg)%#FDsWnWK|;R9 zwbr(8rJm?`m>5Ma}0%~A^B%XP&wR3K` zwdDo3zTqjC*}bQsC4lV3r<{_Q(IF-pwb=J|b~-elY#@lS8Mu`#TXf0KsC`0ay60T_ zZesQ5D8t3n{21-9M%|kR*VMS$wUHk2GydXm(LLWB0>95YHWjDThNH?|E z0yX-YxF;4kM8Vz^X}trX@!#wn7n+BxOn0csD7tc?r65%*iB1tx4sm7r*zE zqzpXv?{JQf3&tkh^!d+t=U{gG8G`NLv|xsGnI!i%2Pr5Z6d-Kf0UxspK?fLCbzTeS zEpyIu@z%IlD^~ z!8v3KhLD*-$Suv&M`|q4dUKMlZNqewYu@n*Z=vO2bwqk zowFU&oH)l4ghCPVs=YpKcN))F42IJJUfYp)0}4kyAl7ewq974sP@<7C z<$@-a9+#xh5~Cu7xJ5BQK-L+CfmwRC-uw4^%RMK5-1qBQ7zbwQVYJStYHI$Nnwi({ zzWd%?&OL`TP&_%_3j`JT5dUr(I!MDTQtcwq4!p*dAB|NjLc+v@GRs5bkNm@1m;T#3 zzumrYHs%XBI7Jhlf)DTZmep2^$5*`lnx#`~-#j$6;Xd!#35x_4Q4%-+EGbAG7y*nN zOgR#SI$F`!NA_J@USx-Y9STZNP=b;@1U|-8Y6UL^NXl4$lN}095kOFi2kYbMgAh`u zJP;WUR36kV>;-Q1zEs=y=z6IL-P~NN9vh>Zmq*iq zIxn7nJaj6n<0EONe+ujl;1d6IIyj?(1LMZN?vzAamEAFcj z=l#OzhkvwW`o6OtxazHI8rn%j0U-~sq28Bd2qzE%0%;7YBBG!{(Ld1Cr2m8ioUT!^ zVg*sVEzd0;`#}H1x;v31E{KHPXBUfeha@<-z}pkD0AL}wz;MCEF3$BaJ@p_>VxN*s zJyJ?ta`m0poFmZIhtY;#=G8>8X#u>fFKU2S1qRTPDl2=^zbZal#S1#hZ{KNe&xKiJptqX>lm4*RG%s{c*-*n4uKVf%;?P*x~~9dh~A11DAZdS$92MoB3u$`Fu3G($jwKn{T&DhE`os7O(g zqGF(Oioz*M7o#?W94gm9K@EY+wBN%mnR)b)#Z#-_HhSfmAGrR)>r1H8{*-_HZTaxV zrK)yYbY#Rm_=)%a;3Oxf4b5)&sv}`Znhf&6Aq205IxV48LAXNT3MFa0@suD?Y&=$h z4~jGp7!08VB_-(k*f8-Jj{_q?g$y}2kaGh9hKg!@tAl*P&d-cK&^NvQt)o|;ecAHm zD`j6Bg^)Q~2_g!p zQ~*jS2c(rC3Gu@rNFeNDgfUeB2NbS>k{bw!d-gyK*b)f96@(Zir^qP_f%?d^_x;oB zSN_4+PtJPe>hm|=+-iAInsJiAQH9FK)e%Ke2l~Y&Lth6ok%LIuk6Gbo%~z(kA7AzU zwF8~;Wz^kpzt1v9pemlWR%i@E1W^KL{Q{y4strK;;Hn0kdT@+-h7W+N2##WWv=4$r zL)B>XyJTkDEzM2$d?^kp_v2$wXZsG?)|up%CA+T<1#` z2vzYM0XYPX(H4pnq$ym;;53W5x-`Urx5j=>tPlpOI!Ons0thPP0&yQ{((kfjd`q*O zxM<_$XDs{W$Ip56fK)lFpZSITjX@@tX)hppmkh&91V0Jo36Fw2O3qMniUJ-i6&Mmz@K9V01sF^L z4kZ#1xB!qapb3N$h^8QOUWfk>cAic2NowzQ+4X#LGY;J>{aSYE|BFLBuz)<)Kp`9&8HW3SDn88nz!FLm%U^k z8-<+~4k}d7=2UuX&OV-321AIz(yLP&K&r|P1B7`xN>nEq5!vzxL`T_sA+G0^A;i!k zmH0yBSRS5`fT|n`2e&iqi#MuuVIdS({i>4mAA(etS8Dz&Ea4tyw zlBQmMXC*Ml(J(0>@No+Q3?czhs9)ys&xlf}kdl^x)Pa&Amlab}gIn*v@*PY5@7$X{ z)1JhLy3^b3s)O`l;)XDZRxUv*Y2Df5Is`ZY3qwVb=?p+5E=iWoOKQ(LL)4>JpR=mj zx&LihF?vthmwIqYs(k^$YoY>331uL@b;`M4>ME!UP!15M2*eP_D4{6XNpM-9biij* z>mO-Ib@4-=xg?J>rTu*IP@Ru#c*Je_*zo^$=#)1Pc2`~O^3eyJ51eG|9E39mLKO9$dJM;kD;Llr&Ul#Wm8rP&&l3BLQ`G<;h*=UiN|Qe4v@Du4V0G1Z@8Y%)R7N;ul2oZCAgek^-)gikAautAtoQNb^WVc{ma{((_EoMMM zIdezM(CdZk?Gi{814(yC@0kWbG=cZzeNqh`u;WfEmj|?zANlh6-EALz&9#fdy3?}R zN58;2J;{9w9l1erU~xf%ClY{^Nb4AY0)%edCSg}!t<;khiQ8W>Krb#$Q!f}ZZWEDK zN>v%WNN`|6nmI=$H)q!VYH)V#vh}Sq&b$4p3)f;~E={QZ?vw@G>qcs^0JQ$n)4q7Z z;vc=_@M7J?1GAfNmhl+_)r#|-jOV<6}1&`HHkFrmVG93TXV$7~;ka8@2 z$3fsiATNQONPN#|1uvx|34|b&gp4xEX3O=me@i}37!-5&CoURWRBiiu!!Z+BNF)$M zi9!suB2on@BS;_)MK&ZkQVn@Nd0;*;G57ZBYcATf;qo`UyIIVfHBfB(Zwfic4>-q7 z;*d#28UmLB%9S-&rZOhJrv%C|;f0q1q#ZDIRk;w5grF3N8SqTA<@XXDUO>p5!vx>t&@REj1gZElGuOO06(g@8 zN=lBIolB-S-8M9F_ggl$Px&=kEk1yweeLySYD31`%Rc*iVcQ=M73<#Hm|1f(hw(h5 zsY5ozBq=o{(Ett=I0(BSOd=3f6;%WklK31Ft1yWWg#Zl-h{Az8YwntC{BTKJrbN=by3mDMRJsS-pO0?7iy zDTka>lv4-%6ic1rb6xu#cTHb*`kyWJ^0NNU*ryqj>$ER$HRxT)nAug7P>@6`vnoo?%qe@mG=@AeKw5%A z35c&xqx4S0tHw-G@q|tcBqj(ukn>20!1)YZ$R{;)@8mFc<4||}n~z<6-YV^7Ls~JH zVsGE8z7XN$E55w=!Q$8(x@q%FWPQl%u@y^zqKxS%rGY9fpwy3n$^o4X8wT=?XN_L5 z{D0=HNOPS8{N%s6Zt=s76TX%Y9QoRu`%o%CQo?BkuO*<0%4JZ>kZKnTX4ZV}0{r4H z+U*s3z_Pl;<^n)^YU@;gH-G3pEMo_BUyDif(FYfy%|3M_%V z3OP6mlmb2hQGm-Qrw69Tf8bnx{f5imd=mjN7wpR6de|KQ??3v)RYPmL&;8fV(D7%M z(hsT#tU2;@7SI%4Ju2s+lpv`lkaW$R`6CmI1IEc&WO&OFv$q$q9LfETw#o^Y@FODm4(4X!((zP&7d-cY%pd;8Z9kL`k}9gTC%oMDsiNb};Swgo*~YM`V? zl=cE?;-6DO0F3}Ae&xJI?pWV%f;WKb1vE|c%UIOqqEHUxagsAPkb=Ny|I3V_c8vf z(4i$Vq;U--s`9Bjnh1?KBuf}nD5!eMms0^&b0CYX_pz;N_hZvvc1m@WzHlwkOr_jg z*!(Hedt+)3zF$GoFs!9Yn>9l*e)vg=Xa|$a7YC%89@2s8Z6}-rNcXlH%{!uLea#|{ zBF?`=`DTz`dU3RbZ(40hPK9i;lZ&Yl0aKxqx?>1sm*+;BUODGnTo;P8vO^dpe5IXD zX~&!b_!-%Q%xv{)=}Z&lomkGngmMv-LkM~c6d#~sheq)$+%17#z(}nVR)E9qmq}gY z3EhFjIk|8wmrcc|f0KUfq{UMaw~^;a)h}y4lS1~!FnWpaj>@$sDjRfP1BdPy^4`;w zv<)&JGH^@SZ5-*K0}Y~Bc@WN&U)Y<(MRLGhmJ+)q9|zo>a2QuN-gvfpVD0QW9y?@Ki817_n>f_o+z{s<$L<0r%Rth#GN1A?p0(P zQE+${@)>#DvHP%B1WK$X$QNoSA{U~$P4}HXOOo_g}wLTCxf$a@9yKbbt zC6>BmX@kHMtz9zTax*w;=anov#77^DIhfR@QrFQbly~*0?Cf_*ci`q3uOwmpD=p^^ zLbOl|SWE&SKNz+Y3CYW}v7V|MMEv_RLlIwJKR<`B4MghH`=MnTMSvsB+3FKn^WZdh z|5-lVPIhs175v&h%3Vv0sVDgdvaNfzU0~e9&?w%1l48%$iAOMh8yFvg8Owm?O)q}g zCU!Kl@*$?wIl0V_aj!JhjXhr~gCa-l1nE?SvG2t>J3*2?VQ;^K0I-KIn)PrFk)4Bu zrD2q}jL#>usyo5p0IP+R;zw8Np;iBQB`s}2%${jKR8$Nvh*cn`e3Sz1e;&2{B+axE zAOP0Qo2Gxz)`uKV94?wazbb-mb2}eikYvQ z5pz5kCxq-OG*`Q4M_HkxMjZgCcn%&w}vz6pO$L2-M zyd)HNGeN2F*xEv8-PGx8%uQ@;){3E;TX00d9ynFXOJnZH@G~iyU|H3aNHY;7#o(Di ztbX_FZkT?tz%@kAcKYVnP_ {!collapsed && ( - - ChatOne - + chatone )} {sidebarContent} diff --git a/src/pages/login.tsx b/src/pages/login.tsx index 0294cf0..8c7926c 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -1,7 +1,8 @@ -import { Button, Input, Typography, message } from "antd"; +import { Button, Input, message } from "antd"; import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import logoSrc from "../assets/logo.png"; +import logoTitleSrc from "../assets/logo-title.png"; import { ACCESS_TOKEN_KEY, persistTokens, @@ -14,6 +15,7 @@ import { tw } from "../utils/tw"; /** 发送验证码成功后,按钮冷却秒数 */ const SMS_RESEND_COOLDOWN_SEC = 60; const LOGO_SRC = logoSrc; +const LOGIN_TITLE_SRC = logoTitleSrc; /** 短信验证码登录页:校验本地 token、发送验证码、提交登录 */ export default function LoginPage() { @@ -127,18 +129,19 @@ export default function LoginPage() { > {contextHolder}
-
+
ChatOne Logo + chatone - - ChatOne -
@@ -201,7 +204,7 @@ export default function LoginPage() { onClick={() => { void onLogin(); }} - className="mt-1 h-[42px] rounded-full border-0 bg-[#3b5ff7]" + className="mt-1 h-[42px] rounded-full border-0" > 登录