From 70b328b8d709a50cc02cdd55808f8418e56bdfc7 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Tue, 31 Dec 2024 17:51:32 +0800 Subject: [PATCH] perf: refactor animate --- .../ClientComponents/main/MapTooltip.tsx | 78 ++++++++---------- app/globals.css | 0 app/layout.tsx | 33 ++++---- bun.lockb | Bin 622978 -> 622434 bytes components/Switch.tsx | 51 +++++++----- components/TabSwitch.tsx | 58 +++++++++---- components/motion/framer-lazy-feature.ts | 1 - components/motion/motion-provider.tsx | 13 --- package.json | 1 - styles/globals.css | 17 ++++ 10 files changed, 137 insertions(+), 115 deletions(-) create mode 100644 app/globals.css delete mode 100644 components/motion/framer-lazy-feature.ts delete mode 100644 components/motion/motion-provider.tsx diff --git a/app/(main)/ClientComponents/main/MapTooltip.tsx b/app/(main)/ClientComponents/main/MapTooltip.tsx index b684d27..7a1a424 100644 --- a/app/(main)/ClientComponents/main/MapTooltip.tsx +++ b/app/(main)/ClientComponents/main/MapTooltip.tsx @@ -1,6 +1,5 @@ "use client" -import { AnimatePresence, m } from "framer-motion" import { useTranslations } from "next-intl" import { memo } from "react" @@ -17,50 +16,45 @@ const MapTooltip = memo(function MapTooltip() { }) return ( - - { + e.stopPropagation() + }} + > +
+

+ {tooltipData.country === "China" ? "Mainland China" : tooltipData.country} +

+

+ {tooltipData.count} {t("Servers")} +

+
+
{ - e.stopPropagation() + maxHeight: "200px", + overflowY: "auto", }} > -
-

- {tooltipData.country === "China" ? "Mainland China" : tooltipData.country} -

-

- {tooltipData.count} {t("Servers")} -

-
-
- {sortedServers.map((server, index) => ( -
- - {server.name} -
- ))} -
- - + {sortedServers.map((server, index) => ( +
+ + {server.name} +
+ ))} +
+ ) }) diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..e69de29 diff --git a/app/layout.tsx b/app/layout.tsx index e476cd5..deddd14 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,6 +1,5 @@ // @auto-i18n-check. Please do not delete the line. import { ThemeColorManager } from "@/components/ThemeColorManager" -import { MotionProvider } from "@/components/motion/motion-provider" import getEnv from "@/lib/env-entry" import { FilterProvider } from "@/lib/network-filter-context" import { StatusProvider } from "@/lib/status-context" @@ -64,23 +63,21 @@ export default async function LocaleLayout({ children }: { children: React.React /> - - - - - - - {children} - - - - - + + + + + + {children} + + + + ) diff --git a/bun.lockb b/bun.lockb index 995cfe23921272c40d289aa927a953a7e2b7ad11..536bc6a5d4859943d9039fd2ded7c803ab8f5682 100755 GIT binary patch delta 124670 zcmeFadz?;H|NnpOiz~Bb(xgI?BByGU!VF{PDxHi{>F8JngTWYPMyQz4(I|ImSBpwY z5lJT*~fk-}tE6Z9|@HvF)6~$%{^V<_YhTc6A@h{%P{Y z_a^!geQug|S(CEwu8f5w5;+pA8;O($H6oET@N;-=Fu!C(!N}4`r1${K*MJA3kI27r zq>8@j^u-Qe0coIoP=5ZX^n#MeK)CAd?ey1DEN_ib?J_bNkvIrE4}&^jYp^+3P?A1m zMA3lAJ$NBUjzT|B`jC-D#rcs)J;w(Zj2x6cW>n-oGL`>^!%^uYiU#JD;>C!9!h+Js z8&t0R8kAE9dZtDq-Bt1M{P9<+CvPLjVDN~%($f4vk)H{TJkKu~Q(7>hB$8h;dQ5)t z_{iUQYa=tNI3GtgVOI~kiNVWW{nl$>>c*F}p*Xw@KNK94KVZxdS}811Tan1KffucR zTKz+88{dL7Up^|YbZ9yb4IG*`VmMZhQL%zEG_NEbzlJ;rmycIcrR-k|dPSR*U3{2r zqZ4=p>O-_ih2;j6)pgE?eDElEPp7Z1zi0kg=qlG4R1Z%86{-#mZ4ZZ)q>s-l91+PY z9x^JgxFr8LboyFW-k(<0>5D)$_yefUYXI{I-O*H}{5qh5vAt0wg0JO2)r>@_qkIi0 z#}bomc4OB?W`WM_xJBMkHu%JN7B4 zxpEyS`#9z3WBIEs!j<(e5lwWwYcvu$8oL8+AZnMVw~j=pyL?XY0PgI)Xcm#H?wxYH zjmLOUd_ZyDzJ2BUZoc`nFar9hyH6`gBq^&nYNyraaazOf*Sr0JKA~n0;u84>16e}@WUcyOvwC_q7hf- zM{duu0i6tLqFx2Mbz3xcWF+!dXWNs%PqY;jXWRUNB_;VK10#{`=&~PGR8oo-nUG`c zm!hk_k$EGF3I;_YpTO(E!)16bA-x+x9)I8rb56AdUx%y0ui>g-l*Wh8dvLA5C&^dj z9&~nh2W@NB_ihVvYc=uDI^C8{2}akd@0Vkt7!?Q8YBA(z+71lLA3Y{-L?lu&G_QCR z^)BgZ>wO5+$_~IZaAB@p7^PfB24HtJx@Oqcv+az_gR@zbzX@*&c8ANq$KhO($}`}H zgVW$F`m*w4oKRwg@>EygGFPAz$kZ)w1Zs*O0Lr0lXIaO;1l93@MI(xeap=ek?3@}3 zDqzop$}i4m4=ye($zla4z~A-|_KB2_AtA$!7ut%mFS0#+8(tTExkLYAYxjiXH-IYl zfa8JVgHA~geHj~ge#^2qFSS;vr3Hog5iqZ~IB)#TmsvNSAYbmF=W8Jjao+TD_50Qm>g!k!Py>(%?A~rA;+F_`^+5m2$Wu@M;K@2IW1Hw~o#3lF&AKIy26+REiV0mLakNVu z6u9cMR$ie%RgN7V5Bu4fUK z|11rvzS=mT8FiQA<)9pTm7&od)rN9q^5{DZ)w59;D5Jl_z=gWKD>$5ja_9jUfn(5B z{#$fi7Qe+&Er<``YUpX#&%fhzc$>-joR z4ZZ-%p~pb=@Di7QCMd^RfokCOhpk;=5+6Lz<~MTX{Q0)M#F6gzG7RLvLC(N)_&sBz zo|g96!d{{l*-SUJ0sWkAMpKEQgV(y^&@! zDlIL@FDpJ}k)5S2LG@tF)7G=zpe9WNbXAnNYkTS$%MV1?P&@$FkR=YKe>`PFKFpqB zBU?OM|96Y+qf~=j|cz4tN9jsuv=WW59`U^?azqF3apt z90$to5Qj&RuVuGusg2k-pvuLTTgUQ1&8Z8(v~&`eQb0m`Pz~Mrl8wN&=WHn7$5U1C z_{+g@^^Pj*wZh83gNp3iT;+I`!5oZ$Uzb*@{X#2fwKdKC0KE?CZDez-$D4vPXlOsw+YHQ<~4s zc`=E%ZFj!~wWdA=)sJDIx>+C8)IQ){tDo<1DfQGrUk4Y~apm08h_dp5t8E6;KdkVC z_be~X8Oibe&t`8KT@kDab-QUlk(U<}ni5j3Hd&fFEqGg~Wb^Lnk zU;$hac@nOA&Vn}sTY?&)^>11Se*6f>%MkK5L?W%g@5pEX&i~jB?d_l%yxL(lcqF_R z*c41Wl6jqS_23_VVjC=h9|Z3K)&U28YCF;oF2~LQ<=C{(xsoWP*OE|(@*Iu=6`~6r zKhE*5H(9-a@ayvyT#@KZzA8Q#6yJfaj?4trfu|iGqeoJdE6pz)H6HBr4e^&J72jA7 z6OUMAkUprOxGlQI{#GhbkIF!eVeS^I^IWfJz%VudxI&zmoTImY}p zgR8ybq7fr_%on-%Gvcoh4K7LN=wF=I?|aLKl@yH}TreX40=Nncq2U9;ykS?Wp2%%m zZO9W(%T6c%Sn{9!!LGhV+iX35gK~TbsCr64)pN&>wgcyvA*hGPIlO1Pt@z-7+7MR2 z)q^2LqXwzrKjE5`v$0PD@A}E|Ti_akQ=C5iXWNkKSHnHQy5Je09C+>g~opwy0rGP4^^}C(z(?L1@4)(&ya1G5^P>zjs`F~Pg4L(G9 zbz~j(ipW%WecdEpX%ppxoIyA62n$XJk-jVs5{Dz43)Tm-K^csTdZDMs!{zzmpd9fW zZYM&j_$5#~@jOrtKf)YPLpwRDH*Ar7?v__Fe&j$#unkj1)g(67l0qI#^J##7IQpzw zUbve56ff*gVwLau%r?{1_riduf$IP3pxjMy`tOuefL%Rh<%x>6P=TgS6{ry@$uGQ8 zJNuCQk)dnn)bYZ8CNAlDsh0n{OMBu{UcatqufPX+;YR!^sCd{*J{xS}THhqi3j_A= z9!S3&vkoSns3jjv&3X2)8O zqo5r7sHF|zjjilhep=rP*T7fJY)BLK3A;r8N|(O~l;fko>(RC+XTcSb_u$&m z=Ya}o6Li&62A4xSkFe#=g`Wbigr5W+2Uq>SHt{0uz_RyA=-RXZ)K&gEhy9)222{^} zKgt%EPDO3uAHk0Xp9ST}Sac2DG`K=s0xF_sf$89;hSt&ga7Cz3t{2JF2D`nn_4Gvy z!N%Ht-_Z;6yM7OblULcz5_t zRt-HaU&ON26(qb^v;HG|znDJ~e7~oiO@c*?B z?0wTyeLpBukA7$8(lXj}Yy8)pF>yDv_fGd8cR1=zY;g8WyZcDXQPv)?_CCw*z4IkD zn7ucU#ClI`IREo?Z-;iU*8l%x-S5556U#NRz7y*?vCfNFzM4yWFXzNEPA*@qSIy4E zx=pOtz1Qh~yG-|9p8sxHmhH73lgshHU55X=<;VI@EW5pz*WSx%?`6c{U|{|Tp2A;i zx8#={mX@R!78Q>gdhK=g08$L<9Mt@JyNU{jb8;WWc{t2x{U3CLU3Q6O^%xcDe&s<> z7oGkr);i#YH`=RW;v31mzlj{cxAO%fhm;&X**4e}``VOi3+mvOI5{!4GbR~(51 zUo~x3R%eQBY2Z-4K|>rls&GWn5WWJt*$Z19k~d~ZJ{!a>x7ZpJ-{DPy%fmOYQwybV zoiX!974u~@_Y>&q`n~_KUH=8t^*#V~C>~ifs+4NWB6$M_6z5;bbNmY1z`wgeDa;$r z&22&Pa_n^S_{TJBe*&RWmvV2nTjXb;y51ZNuTp^>qXX}-4m5NjHt1>EgA+G6`6UC! z6pR=Y`S31V;8pMtDtgM{Y*0PA&G9l&j*I{`W|x6FX>@UT0;p4KLzkZd%6`Y4ww}#G z_TcjONvPn*NDsYp_ALH`#OY;~Y?k(tv9Qu8d4e|G&Li`!1N%MijlV^G1 z>H7$WwZX95eVoCRNIVBfgy;t{RKbJ?Y!3=RIn*E2*yYW(4JGEnWlj&@R!A=_DJ(9K zf055!JqavA)12X6I2(a#MlDXD_b3l#lpn}1JrDwy{ zW8Rbyjhy20n}OihUqbZ=toX4JtyT@<$GmL#tf5BOkN*MJ4IF(JvV@Mqe{WBFlXY z)WEX~f+;Q96zshk=a8)_aOsoQuUt^8tZ3vwEy~Ef|z-D?BN?NMV2N2!~MZYSOw zNqjYwm{@&rL}6MqDLAfG3vWWuqgDNeiSLCHuiGS^esvBewW?p1_%>-!QEC22wx7Fb zMvKpT#hxV-@5m(VE_m5a!R%LUOkM}o7d;MXPub_;>cUB&y3o|w9So}8<_)oi4Qu!nT#IfcsJZ$)sKNMziqyb+pc=fT(oV%h1Br)u z50kHZ?kd{R6i;->er?9Q-xRaYQxb96`*o#6+!7H;yj?Vn3RQ99Et#v}x&jOWwcj1} zj%_dvl%u;q+1GS@``dI-``#BM!qq!2pYP_2^Vc~3CaBR*ggo(=^ zwV&9#kOAP)@YBF!z@r`hzR_Oc)`GfQc?Q(|)O1iYCS2PJW zzM43mYBiQGZ?&$?1?Ad5K!to9s3E-qR2RB}xLUjXBxi8Mq9rE`sk5k6$D@z-9tv`M z#l7=`3Vz=kRPy_p!0#Q8esw_5t#^)>9#r&>`~7M~BAuxz67;w|Gw}Pwy){8Dzv~7S zed7L^DUrxo{HZjxVJ})x`rklD0g4L9m7F1py_cuDNX0ZD5 z48IW}bQYIq#CpLpgR0B3{Ar{*P_jmlHX_4+&sjx6b}(zRD|snl4Fh2EmimhEwtw7T zkD@wjgnrf!a`WPTcS5h;qAkfxfvECmFs)yPR~h&N;+`Mm4j?FXBN66AdF`ObfDG@Z zpmIPwwjQlh(Eai(uS1YKFzyuu6$9h`{ai%Pz!E10WcXWQonSRp&Tq+*x*%k9(Hk37 z42t{n(M~{%25EgW{57yHuv$Tn-WmR>tf7;`Ji_D`?`8z(A($MGhMoNlrgAkx){#9V z)3SaU{%DwLsTsDg6ej;_nbmhP5UgHV+Ms8`6d>#EbuiUQG-&-Dn8L{*_sQ@M4E&*S ze<<^}U1&cIZ|{Yvu4vFBFC+E=?1Erw?=1gVW^dn6Pg|22X`| zO#P*E3W-ZXdG%-vhsC2`*AJ!)%kht89h^o66E;s1%pV?)E^H92>XqYvO_sVt#|dyQ z3*Tq9~t)#I5HCHMh;OTE*At9Xfx3+M5A7oQ0>4kiu;eU?I?as)tfU@962Bi zZJVQPRxF&C!vcR)+*=;xj*9y}o1X1mk8znP5Jfu{tR5B;xo21D3qkJac=XRE!IaTC ze#X&u8Q99pU~1O}=mnVSs9{zwVDw=p!Do@ZQj+5z)zk*o3+L*kFwGt8iO?NEZfV?G6;zbQqklCGR+Z*>=LY_mxPJ@VyhbCO zsNSnV1=_D@Dq2g+&Tn^YByzs3h^2O2kb7m^UxRjvG&Ajf+~)a`mMM;wWOzA&KQ`{q zLOV54%Krgo_b@u2;cT{k4Gq%-%WGj8(Qx_rOJU(aX@~TGcb2tG+8y+t{X(-MoG<<~ zn99`(m;ReDJ5XAZf5Q~nn3jGlJDm%C*pWL)bqiCUlCs_G*e0P}N9tnbdTWEqiSbyM z6R9PrD$Vk;gWR&XwVT~1`nEy0yd1wS8;_k8 zT5sK9U2umEvpjDNawo;3TTTw9Ov>@%LFJ^l{{Vxm*-^{%IFf$Cv`y3w*Y=@wOa1gU z>i&6-F=T_nm402^|Hf%4W}2=s?W@OS155+PCdgFJX8K$Tv)g3=lauzku^Og!Qo?J> zfvkFs5le(^;B3e2(z*_&I>YGtt6{3e57NeD_;u-q#wZf{ei2N02Lx$-GW=;UEi_v1 zml69?c|q!kEWasN7`0r}OzYrrVZJFI-PSSac2kabNlEYE?&P@tB#|0SCM)#z%$m5|IjEYL)z$T(g3U1+!^AOv8XFSKmfKWkoz% zo*k^}o8!Noot$<|&?r8u6Jd9~vx3SgaeoS$EvyaqEttY%SN-8Z#m#ZQTikBKj53W) zhiM;SpqP*=Vd^56+aEGh2%ZYp45lpziR#6UQd7w~6IM42`;X2rY{fr;OM$JCITh;* zyCA3*@B3)l1?u--7c6;EJ0v16%2%9BCm?eSO@6`dPY-JTU|m`m`( z)DTi?h7UmRMMlNuPd!upDR0qYs+S?BPrVN#zB3tRGk zAk`0!2sNg!!4w8g5nQ2a1Qj#l{sOKAOi3H) z=ubU@+IQ!8CkMHA$Nhg^7>UqDO;zG??nM}eLwd7Pq0W$UiOanw?$^JVCpV#{>BV$G z3z8b+GHy57h4ZIBivOQUsm1fBABhA$D|DZ4wzjQ^6_oQtRE>o6Xn!$4on_12XD>rt_}SA z+OrSQQO(~9V-t7mXeP1tOFNIp!_+qZG8~J7$_L`nA9@G1 zXXi9Ljrl;l%Iih;{2U+T&2H)6>2ewA``M%V+EHZ_?voKa71lw+yi zESZ1ly3M_TT$NQ=8tRw(gt`8Da_x16>F%`&Dj$x=ZevNajvvm7ZBC|69mLfy)b2{A zz9+>#fZeJ2iPRmWSY>EmlVX!4)q!ga>-OO+=0NTvac+_-9*O%0vq2~n5pAX3If1`` z0HbL`W$Po5+hK0;jmWGyRHLLyILkj8kKGGzr(=WvF{x82MD$RFRvEFEXK5oQflN#=-1go)|$roq@d9QzE$0(b0` z!o(H6$2}R|{Xxa!@#uGj!K%k|{NqR3<-uH-o#E%fIwp$6?uKOtRgY#x{~j5vdLqZK zC`w!&G*#Y**&TS=RT*9^sCY8&T_03F8TUUPWp5npO1E8z&+b}!cV$H`_XV<{&5G!vr%nqE` zu~$`RV_|IcuFjP(JK(acf3@A_ZF>V??Gu)s2`ZnD`|qJ?>K+)REy#!-d`+;bUygt7 zHFgX+i)*J5Z{*jsDNOw!PIa z^8Deocx=W$82TW!Z!b|-R>y30Z@}1IT~lrEu+MO8-c(pPOlDfKmsu0mHAvmiIpt1!{jo;< zV7td_0gNMwtIoTtx_1}BxVn7NIfX>BNG!#Kx2C08{%}%Sf!rIgoy>QPN%dQ%jCMz) z^>n+>S`SKKyJNR}k34@y_1K*a+g(cqtZUNO)q7ahy}Nq3?t8GCVHYRMeY!_p<9n+0 z*e``=SHMEcaK6sjgMA0v?REOh>MfMPcK7{F*zR?8;Cjk?!>GgB4gk@$5Bsq!v+*t`%w3s1%lcm1fgPnapf83DFTL9Y~&7WYq=lbanxE`2k z#}Wrvr)0V1u-%q*XD1rhy1fL}EonImw!5$2!FD^H{b2QS*TKSacH+Y9#C@o`Q6E@N zvho?Q&IuM<1M3oWUl)(5n(#2}kD60`7@mS9yBqsmc|rG2JEzR8?(vPVWKUx+!A=dT zsye4UT)n0)u-!vH8J6@a_Aczy@OpXlJUf_CGp#-$geequdwU*c2eZel%#``ogK)?6 zMh2B1^TZ^nDXMKBNtnZ;qaO*neH>3gOOAr)1^y>-KWjlX&A%DeMF9$9ngZKBmm57= zePo8fl3nm0hiUWS_WQYv*f+4wLH9{nezS!(HZ1n%GW>q9c34?94R)^D(rSqP4I32( zq3E&1VNAR89GE<^NBD1G$sWYIJX9QJmcTRb#`t-R_EU0=jlnbee!!f6yDT_k+rL5TNq%PGp z)<5#;M6gyrnh`Zm2UEVviFwb2m*B6mynccIb=-d$t{5H|Ok0)_+X*`(nEF+gf8n!< zkyPQ^pABk%ljDEnL>rbPo=eOwO#A{^2P(41hFLI$h9|rCa9myziS!Sd4s+9C+T`qW zn(tw5C6L$Q`Q(EN*ln<3VL45%BVMrE46U!uOo1qn;ZeZ<4rUvW;W9fJ1@ei9h(9}|F(0A5@A(6)@7!=Xa~V|v3L*mBJAwY@w5$G-M{CQx;%LVb)&91v0=IlGX5KyWVY+c`)mZZZzJ6U7EB!=9R?JLvb7f zvmp?B1Lh(=GBag`&EnRAtgKhD@ZrP zY;UoQZGv&5$Q^ZhrM*-zWAJMxOf$x^8mp?$n0_!DJy|Y*ofcZMMxuYO3a0#=6TS7# zVAan#{x5IY*~@&DA61FI@{BPy2F5bzofTbD6|DLt$7>(>zs94tza4b@HOK$?ZMz`3 zRV~f%PkJX2T#eUASXWvkZ%~H+EKFk(eo5)4y=yJ;du?WlBjG~_e>&_`47nG;(J$W( zy6xaQtJQXLH41w0l%fcxapMs)QCtL5f$+E*{b_a3ZD$S-d@FYH?ZJDAolMV(9*5aM zWF|znyccx)J;!SiRQw)~^?RQQ8gw7hIfcZ4u(BT9&Uhc#{WA2$Zx2&L_8xo;Oqa6o z>%G{Mu(N{hrCHJ6J_x$~nd6_jCNZ0);o~hZMW5S)xfxzs;O~mZiardFk$tnG4}Ta; z*_9Lh_QPP+t{ks(;Qtl(uUnfO|3V%z!`xVo%!oa_4oB`x^*Yxi!N&MkmfwE8?I{h6 z$%qYy@w5{CMN;z8KCP??>n}al`=jtl1{P0|(shK%Ox39ybc~io1*u_S9Y2xMBnvJ4 zS3gcnQ|$diHzpRWSl>O^LomB2mG>*`@?jNdntW{s*|IUPFwb85 zVJBlrgt#yL+p+Kl-#_~s+fjRmHWQ|$W!Y9(7L5DZKQsJRo9#8t=Jki!6~M;j-wit> zEGPB}tSijU^$WLHOIqg+_7+$>^1=oxcHoJ&2dFu8|%@#u%YnJI^QIkA&=gsTGQ zt|XO7wLILoH6!}i4%6*0^1nxAbD&ebciKs9WB)9S?WS*5?8x6)@@DFNgoBi(8dHV` z{u{(pGIrP>OtY|#ex&TSl18^4hV8cB1YkGTk*7b9S{}}8n%UIAq!_X3QTXkQHz&e|% zd)e4Y5ozlBn3O#SaC(fL9K}8y;2TM4@zNK*=vf8RWU_4>Uc*bAhFH8qlWbc5%oK>6 zvCT(odWk(5*ZRYHCi51}0BAdm*C#fNAW*hxq;vu=cQ+Sv{90Ap8~INxGE!7m>2P zTK!UnzXGNavZw0iDV|&X({9N$l})wckuJl4huf@-F1~F(oTC0UFf~YFnqLF6Rk2q6 zMzyUaS8}fTm%wtcBtoMz`~W7)m`SU}x`b)K*-e?Uoes3Iq=R`G(I*Zx-I^1GVRh^u zBOMT`_ti10q;5cUU13OCrrH*HF^M)xV9C7b@>H{`g~!3f_$|G7Y~n%87n9o3%Zg>! z)%57z+{=oNuWMGdB=XYem zW%;8?YB1;rfqf9BsYE|G#C-$PAlk2bn;haL_D!Z)5lpcmiZ^DaKokr%wox4MVVy(9 zbKuzV^}I;FscM1Ow~_1;dhNeQ(l)Ejs^+0oW;42w>`!6dR5;Yjh%JNmG^u#%9cC&{ z@Zw&PsRaBQhbN|#uDaQ<4)VrKyMbN&a5E*HZmvc>%T`;zz8$>qdt|Sl$!$YG??F7n zbZ>)eZI7j^Hd#QjlTAKIa5SoK}Y%?}c9(NBDUB9H0cBzp<`IYga!MKetmb zXku_uuLiMOFupRJUS7J%ZAX0GJ%K*!MLd5-I(Zaev2(et+s3+XPZDpybOx|_?N9U~ z6GNuc!ZMg<2^Wv)8U7zI4LVC5m(x%3!l&HiJyy#>vGRh`bkQ`xSe&Q)!q|~Ypk{o7}sqMnbw2EeuywTR%ti2bx z${NfhIa0~aH9L5bp=N59*V*e}YIkBpH=x*w8f%!5tbHoU8|@%v8$XN4Ez49a!zuDW zM=#Rb*8B%aYSywV=tO&TH(aH$FT|{QzpP|esz_1^i#&FE=j243PqNfD*4R{J)7X^k zWFS&vku9A?XbIoe{=cq5py;HIVcR&-5bKD-^cz z?a%?XmW$3xc3~OGf!2?s&rVK(TS#7Rx}U~Sk-El~8r;>3jIpL0NS0eQ$n_$D>E4dE zTXb^+oE5u+zJz{c0tRCHyS-{_H;8D56*b5S0? zF!YlK{j`gS+U_8hK*Kql72A|ddgq(mZeG0Ax{JNY1F~f&I4s-`?60NhN1`8f&-yDr zt9!=Wa90?Ai5I!oRCOf8mwJ)=tjmi?x|P-PGB2{!s$Y=2J)D{T82&c&BB}~+_+y{I zP7J0l%koouB`^K!GgBbi9KyE;ViUxID&A{-fs`(^T&~$B4(^@UxjE1Im%?B@xYYSHd1Wv=QE!D`gxJQHo1f(JGs=f%foAel08UrDN*uHl3WOsTuZWZ zkXqQe<`rIKP^d-6USYaj=;hRS{t7QR=fUjQ4zl`(ZpC``PgeZ|$=+saf5M)pqN$g2 zjwWTF9ISpI!(R%s$9=YB?_iUAF&D>+Oa%~~Gr+96nErh~fb|jfrQ1NFXghz~Kr`hM zGS?unE6C4t25D-C$rU77Qc{n}=b93h9!rWXRy}`Mva%HG*I%6yXSv~sWUDD8+!M(2#O6&*NQ zJ6M=|CrRh=E|SGoEh;7%wzP?q%g-%IcH83!RtCN9SPtwhy^RG!ZyNsk;B8N@THWvCdgQS}-{=}s1*xkvmNZxC0CzWZh35zu; z*9H?NH;}ZQ^sk!ah3|#53||VpyYVZ?HQU@50{AT>wn?65-8O z^z$1`?E+R-{~NXS=&vfiCZ&6oF@|8**?8$3wimZlii9UIT|s7s?CL3Qe~@5t7l zV$aPsR6SriXK{98bDioK4h_nPRf>hZh}~>AU3aBs(_fim_MPc(VP_=s+T7w! z<>5WjT`;-MO#=51-@&wzGe{FT3rW!ZbOWrQ| z3t;ZXj(FC%HF0~Z8@qF0y4HkIjNJii7j|tWDLd9ZZp<_lqq$C;dYdi<8ohE-dcG2V zv**7H({OQ3qxzcDY~<`M=&3M0*|AZW4pUFV2i(zh(@eJ#2C3+FFESd{4a>Js8AVLm z!8|(iOKEypKs9004ezkt+vi((F!hY5+|Oo27u;cLkDROT)+vM>xl9gSzJGp@**CsX5{_do0 z1xZ)KdXlb*miHu+V@NvBsz^G|n%t`!oUpPnBwY=!k#x3=XC`d@B9a;bX3%V&7tS=b zuO;N<)5#9^K?jYh#V5Ns4Yf_fgN)qQ~J(U>8uoWTANJYX&C{q#ndCNC?8h1qPj zt;?>xBA80sZR$Cg)&qI0#GTHPS21824_5C)3G8IkeLe>QQd(^_%<2a0MF|$Z_nB@g z%5i7-LoOPo$8e9S^N^`MiJ09p#|xhfvkh`zcJ*9a|KYlQk3Kiotdh+RR6U2pKjwR@ zhwX90u7zu0b}j1*oux31i}n3Sn0>B9xme~ryba%%9Y#t+krMum#$1^COC)(fw0Sq9 zt>fm~5p^r2a8LRKv=1e@Ri4csOd0oKNm zDPO|usAx-R|7dkjZi4OJQr?GUPz&QXKErEba&IE0gBB+ClC(E7Qy_LuYJPkOQ_XyT zMLVq?v*W`}Ie8;syFGdergA(4JN%E8BB zcBhr|zrb9_sJ-=5)+PID+z^c z3f3u@%2UnnNx81`9b>1b=~H;!yHY9ZD5v?SU?*u{qdz`vYTwHA%z7r7&j3$?*-qj^ zbjdSjm23`qHgP%P^5$J?a&Ke!UUXu3De$AuCEa4?b%WVX>v}j57Cu!9NAqczR$Dk@ zV>`rxs+Y3-&Wo)hY|eZE50Md*lM0r)EW6-$z-)DzDuqkf*TViOYRh4|J~1qm+Xd4T za4shmnJLdFI;vqQfvEv5_586K#E#hNej(AC3}1clvtLNeuhmpI8fFc7Q`&zHrjT>g z;7Ys`Cbw{s2%NYy(Mvg50@E#rz1BYsQ;_YG)9+z!K5Nb{OEN+|$oPgiyKtH5W|*^^ z$?Ot7t3K{Uj+tR&)0m7e!SuA3FL%agM1OhFbeqnoi?XKhD zb0xnR+6yywsY$&4^bX#_!u1w=0oKK&UL8JV_UABiBj2?VVyd&lJpoe~*fRL$o)^AP9W~RA;Tn9`d#3io48o_#@*5YH5!?4| z7wr{lI81qLu#Cy@4-%7G-{U^C2ipj2q#MlY8>+MD zl67Xv0@i<>^?H(^ng)>40m^PDkHS>1I|RUbTBg4^`3R<2>rW@8&8wbS{RpkYv{Tj# zdd$pB*^nUG9D2iaAU<5f5j7i3?Z;^RW7P9Zs^Per|1muZlm0T2)@{xQvF)&K)@IHp zy3q~I(>@KKc&g-Bl03y!^3&bPvp)+T^GRJo(iLmINw?ae?X4vH+vGNqJlB+MkI%zL zI!Zo6l834!y++1=iZw9uOE1#Tq&`LFn%=2UhezT;{39itfT4+W&O;Y3XuFAb!?w1wK! z!xu1JV#4cZtkL(d@VapkDOqvJ;#Huj-QX(;ssTh8Q&G^aV=Ky|& z@S~3~%1;459zR@c!q0y~*$wAM<@i!4{8Yn3_7)4$COBRl)liwsFIT?lx74d&rsCK0 zqhdGkqmNMhMiD;MQPoW5NBI@}=pz)L;_zlrA7M>?ZskY$xACJ-HIzqt2>+I=;oHO9 zJy8`0P8a(8-0Qed`7<3Cs-9Vn&r(EWaK97wg^JLFF26deqB;Du;O9-3FI0VRIWE-9 ze9!TJ!8+A4JhN+=8xh_&3+q`2s{AL;OsM)lb-X&tpG{5|%IzvTo{w55}UO19#c%#U-rQ2Yc?fj-$` zCdhx0j{G_tJRg*wmrC3V)!$y|%IfW~5C88r*+oeF3(D{Q=xTU?%dd`-2DAUmcZS%Ky79^k|GT5GrGwk*Shl8CJZG= zyUyYD&OoRNZ*;smN}r6b3U7A#`@(Q{arw7a!_d)bP7uoQPEgWaPXE8b6zbu@R`?Mr zIm_YwRxgVvAx~yoVV|fT&T;udCFeRW)Z|<0cy*M-9bRb99bNblD!Dx5X7DQ>)730| z#jBqu<@HduD7RL^g{weiz3K9Wwc(s#!+Z{+;YWB7sjomuUpqZSlfJ^MZ_Zu8w_+Es z@QyYkR(K7{G|{=3ht@wj-0tw7uJnIGnf&DJgsN``sG$7;D(g>&yF~a1mHbPGUKx7o zqeHErT5w6e(}gNf+wpy(;eRYwzf2aX{8F_CJFEw)_@NFD1N9LqS>Itpr&mWwjresK zc#_Ni4`_Fk|6o8hdsd`6Pj(eoM@j9RULDo340LrU)8z{l`0Oa{YdT)!GX8H+Rb1lg z5vsvU9j}gZs294{Z$HIfhL<}-p$zgsNdq0`gR&be(V<3u1YDt>Py2@{G_=&Ttjw=7D(}m)nMcq}CL?~=>2Et+tE}~XlhI^~_y--p=eyNE5y*=>( z{E~eEs0M~fbSS$KaLw(}P9I%^Ij*@j#${Xu%J3RzP#tAg?(A-GI0cmc4^R!?>G%v# z=bbr@&v&@c;gb%Z(SckQECDr@R)G8$dEM!&MED3br{4v2FIus53XuOI1No(jhdRB;@lsF`xCT_YYeD{t+~{x$ zs7T)7_;gV9&T{-gQ03->zHV)wBB26HK{fcYGkC*cmDAsId>yDrd?DQ|T*V?H75SB4 zsz!B)*929a@9-c{0Z9YpPXlE-RJo>bO_?^J{A&lwJ_F>xi2i??s`pe-<)$njo4HSd=2*t;PvYX)e^$u^2v4}Jx0fH*L z1Jp+-ey8I?_3#0w&vy8r%NMGi1x|kyRKtrvIkv>%a)+iEsa72x3?2%X-q4}`S#MQz z45)^iIo`tYRv`aH+Bkla;~hX9$<9!wL+UAuoQI>i z;fA0J9s@Q2JA(QM)lin>LaKi?b@>d9r!usTZb<#eHXrvIg?9PID(|AcZN4?9I>h_fG3 zi}sZ<)CofI0>}4-a%4F9YIvlx6KZI#1eHGyl!MoRnmdy~eT33)aQucc5-M<$!wQEt zJA>*d&!?d`2cLEMLX}?(%JC%*p9f|C5-3MkfUSc0 zJD@(onr7p>UVXkUi9|kd^1e{*u66nQLbbn+eA#Vqc0$i&uXYbbHbUjiCYLRgS6?_@ z9cA~8)2pNO@6fe>{|1Wx;p~JOpK$Q@L_0H;A%hsGcpeDK?>Y`s9UcU#A8DW(I1JQB zDBjTJAL(?V?3;k9?`W_Mcpj+sE=qAT^I~Uk38;@y1uk`5s0Mn2DtLv<@9!|r;Q&yP z8{~LCsE<$`8}9TGju)4aP=#Ybd3u$@2@cCaHGI9}H-T!P!s$~%eT1@`2Fmf<9R@C6 zDE$slH9)C@=uq)FVrF8PnR#0BfA{_1u9Z{zNy=bNDUGaVxW5ND+8N_0NBs>yS`Nm-QQ0^!a>UlGlaV)6MzEF;~aCR-h3*qBIMQk#thHeJ+ z5h@aQIxbYhcY$*7ZlCz8z)S>r_MkI($l)AN4LiH%|2v1@yZj$O4Wa&bQiu2ULG%I-KS5XFL9o!?_OU)n?|az#~q0 z6qMf!K~?+&s0N>QxEPfE^Dcjx(_eP@8mP~{Q03lm`NHP#?`t#j)xeJ~L#Vafg)_3& zat~0BT&y$mUZ^6MJ6$NpuW;BORD%ORmCtv42&ndkgZd0FBcXyLT*fF+1&cu~$#ITf zqp zRd5oh-De7@seYTY7b^dDQ1*e-h2nQOE|jCwRiQr9K~?wwD8t!K|DT{5dd}u*-xn%^+g*Nj)afPiyUVDKD)5KXtE2Qk zo&MjTI`9|e(!jbrG*LbJ2T9a^nD~E%YAB6{