From dc4d746412d39fec29eda84608b478af64ccc234 Mon Sep 17 00:00:00 2001 From: dzq Date: Mon, 19 May 2025 11:21:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=9C=BA=E6=9F=9C=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=BB=E6=9D=BF=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=B9=B6=E6=9B=B4=E6=96=B0=E6=9C=BA=E6=9F=9C=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在机柜管理模块中添加了主板管理功能,包括主板列表的查询、编辑和删除操作。同时更新了机柜图片映射,移除了不再使用的图片文件并调整了相关映射配置。 --- .../{cabinet_120_6X20.jpg => cabinet_120.jpg} | Bin public/img/cabinet/cabinet_120_4X30.jpg | Bin 43340 -> 0 bytes src/api/cabinet/mainboards.ts | 88 ++++++++++++++++ src/utils/cabinetImgMap.ts | 8 +- .../cabinet/smart-cabinet-card/detail.vue | 96 ++++++++++++++++++ 5 files changed, 186 insertions(+), 6 deletions(-) rename public/img/cabinet/{cabinet_120_6X20.jpg => cabinet_120.jpg} (100%) delete mode 100644 public/img/cabinet/cabinet_120_4X30.jpg create mode 100644 src/api/cabinet/mainboards.ts diff --git a/public/img/cabinet/cabinet_120_6X20.jpg b/public/img/cabinet/cabinet_120.jpg similarity index 100% rename from public/img/cabinet/cabinet_120_6X20.jpg rename to public/img/cabinet/cabinet_120.jpg diff --git a/public/img/cabinet/cabinet_120_4X30.jpg b/public/img/cabinet/cabinet_120_4X30.jpg deleted file mode 100644 index 237c3dd7fd2bbd97ef932a92fe09638fcd3ecff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43340 zcmbrkWmH?=6D}OwDGtF(0tEL2r$vH$a4qgog0(>?k=UpDb^M# z^}gxv|E_iK_q$KB^5LwUJu_$KnP>LQ-?hJ+05t$HZjlg^kdl&+Q{b*U)RdIecbI5s zaTgPq5y*)9fH`?M*>PWKK?p=p`W{pgdQT4y*Lz_7;K`G!e-FX?e}2dSfR+^hiU>e} z2L|BN;t|l|{T%|Z0|5B=1bBFW|FiJ$2?>aB(&Fv{@&32|&rJXxJ^>-o-wgmI0UiLK zhJXfl>t>D@K+{i!?+{72P!eOQlTIp44kYcT5S)+=NiflUP-;CZX4911G-z@y>*X0{ zz0wsDbYZgB7orym?W)?m>YizrD4gPkxn(!*hiivehL9+EdR|u`mwv9T7MNWh^JVVd z$afbxb^BRYI)~{MG)p?fDgsMYZB(s*m~4T)_a?2nFC#=o;N9O&KTLHy zGx_jZ8nPS0Lakhv;~xxs-cfA3^6H;xcl|cOHbd=RJa5o588$h!JMKglC+AQDY+52C z4A9UBkY8(YwzHQ>jq_F_x>HFr2dHL=B%Fhg5~-;GK>&bG4qRI!l3y=IvS3fvOw@GH zDx1kpB(RWK23tSQo-JWTI~(%rfj6w1fRVDiJPn|(&HnPv<`F|yW?(0eIHf_=ST zk#qf{uUAan7Yny6o4v{90wj#LM(Y^QG&9&gUtG| zxy3+~C*|uOIFl}`xyBuiXsbt%Nj*mOQk_*J`(re#3`e|OMtHtbX-fokyZJqhQ>zSvc>vZZI( z%@lB!9FR;ckhEcAEMsP39lq6AUP_BL)FP+?iL0ry8Y!!K0RB0JLn^)lfGnB?l)yB1 zsp^5~F=SnF8_YM6ky!{dH=a%qlqOMFyy95FieQdBTxJvbp3^?Hu5&x^RA2hi$JAKK zpY6H&a4F!oG>l6ME-8>2$13`;bnfDjaA-9^pOzK$_I5iQTgj31e&1EaoPpvvd3y z*n8srk>T5;!XT?q8+Ij*-}=P&wj*ZrVa?lKq27)LGn9i6@mXiPhcXa>)!`yV-GHxN z?RC$|%gY38zkmab%fPBJ1JdG|kg-gKHLt!ct9+=!88FO<<8eteK#dWfa1Mt)xLCpe z4`1{E1UwLi3zLzyE~HzF7;NE6ep)Z*aw%O?VcXyCrbk@P13z_0JApkEfs{YbR_f|H zl2;Obui1;8Yr#s-C;2ow+X9*RTST5hv6a(?CU3&JrhUkzFbji{NY=fpml{{$g|e$w zDi?d@;dZuX35MlXB5d9m3Tq*tpyQU-17MIw6%mTvNt&3dTG_q0Uw|& z$O<47SB?bImgDh@t0@BrX!-$i1C9pgqG2nR{VxOgq!zE3Oea&oTC_8_TX&vS4!;lq z2;!&qYZx1FXMYSW%591k?IVdOe|J?(SCU3si*O3KuHW4{DJdAnCjWrteC@A@`zkbx zv@d*X`_Zv)>3r$Nw(>~ES44oVts=vZ${um_GGvR^X5rWS1(;M+61nj!ePPAFfH}pF z&@NDZ=(TTn3>8)a?L$CGc zVi9dsdv6{Ptm0CNBW(q}G5|to35sS{#(4?N9P}+7l&%0G_{ek5dg`0hiOZqTe_ zUT{O3p=N=NZ4p}%>EXe_OV;#IL6i{ALv$v zd*rQe4mo@Xf6dyq9+LOYP`hi^eRwM`mrcDfE!-r~m{GpLy|OYdrh>uxJgef#iSS1S z(R}sSN9rJ_auo7i3TyXyrT2D(@nl{y%q`i@_CN++(CD_f)%?}hWi_~E|4PihOE)~& z9NHlhuv$`Ezf;nb-&WKD$>w*REc{`~+2Dc8CfW!LE^I*20Od#k3)g?qLn5muXj7Hs z9k|+rz2{tga8{qsWa{NF_g?Mly=wb0OQ|EN8(q6l>FMY55_{j8_Z}S?bPa<(pRV2s zcY$~g%$a;Rn~C3fkpJO!^8zr|xp2qe+su^)BAJdL~0J~0+XmO8E`f)8Bk4y#*Gzj%K%-w8F>~3oMSPPfgCmvt!OhRkdCMkks?x6_Q%W*k|NR1E>M+(rR z!Dr#+0Y$SC=Lmqr$p*PSV*x+~hWt8Ib;ZNX2v2=AT15OtyLYjWEdiUB0hJ&` zC6Q^F0r81d#%bf=j>A4WEMIj+lS=kPcydxJCsi#8x1%ZGz3RKSX|hTo zEj(IbhYe&P5=x+jkkdzhw$l_^_3{~MDW-vx2na5GA1(QQ(ZZJT=^{+MK(5P|k`BX7 ziH6!o94iu68PA`{C%$tDDgC&zr7!tTdH>t?&*&vPlKV^ROEa`1XYy%cd29Liq#`EP zH`f>3lCX7wHjLU8MR%Haf?*0&Pd9pgy~+~OC$#k9cYpiP-9#>PM0t@VhYK$nPiq{2 z&jKptCdHEY?TLKAqgg2Lr=-Kt&HjI`ABPJ7J>2g&*#J&sSY4a-e;V7EFzJQTJ#OBC zM%)q{$M1PeSFr7SJGTg#alG;Zbq<8qizN3nQ0BB0#fD`0SvP-tyOuZ9V`2o^U>)jx z={$JTJ@dIj@nqgEHxXe4V!tKW^8Ych?j5oc2C+0`1(?D}y}D-DT6S-Wj>_gA1}b}{ z!!?qfQD>bqxeE4D-N`X-(6}h5<6bzYY7dEkYXV26>6iBiFWHBhSMe3?%h%ocdtOa_ zw(TnQkC3A7!AH2xQf25NX}c52Fk>R2c^_n zBu%Q*22p~wz)&0n5R-Zk6Yj|->1Ij=XVus=1#)PLR0?-qa*yVdm0cSuUBhPXFak;` zGGKzk`S{;QdK}d{U|#i$3&IYwlTHqC83}ZIxe!n<&3^A6H-Y?JKmT!;Bz=VwxO_`}Wa zFM!}U;QZ|{Acn~7K>lgSOsAWd9=JT-{^4;EvTpCRi*tJ$EyXB7E{PuZxnZjr=ee@o zkuUN=NJ6;*IJHY^SP9=Ire;KQ%}iG&k^|_t(k(OGg_`^Aa;NYd8qA`5^bVQ2C>_(3 zwbKMuot$a<^|eM32a4Vn0h!Z-StoMgplnWf7JH|@Sn2ooB_bI`{8R``lK_v|nfU|R zvVcat+NFn_DfvwHVR$G!NNn`5bIe7j{jG@}+-0KK-$572iVpkrMX->l#o=`#7MmZa|6Fj@<$6U~0}gPmS0DjaI!84Wx$(pA^r%-Hg-xu{^I{bp`bE?{vNUnt%*0cZ6b@ZS^+C16MRSY)qx8A7FdQ1OioBd60``koZ8@%ir|aMC~Y1LP4$p;+)RQW8sD zCPi&owd-3ia0XZrP92N&4%UBG{8{P86r~X^H{uI2S92oc{ZBKy7X9}6GF+1Y{GuPnRi=N@;%7(n2>D&QN?>vO&2foRw-#y!|>u~dC@TIbr&dWV9Pw^eN zG567bQhM!0)LbUKYBqbn%IWpxZ|2zua_Jg~42X12uq@olz3@{jhjf+8AS-}|Fqka@ zbo9kt?}j5=V0kxEkTuhJ94-52Fy(9nzkEPeYS~b+%&SB1x-Ug!*;$#ce4f*=c3*hI zJSqJrLZCkzFRV`5#Ve^s-=GmY*GM#fRhWFZex}!U@VWFtz|&Lysrigj+>y=v z$48cR+HTH?ZUZ$M&zttbB19SXnByg+8A=*tdrgwBHm((4?=d@hYqSg5Vm{q{eMBAS zVWlI5vEr7`C=&+&@Cg2~dK|;&0x$&YX29eJ(={yvd`_-6)-W3<(q^sWY64BuY9iU> ziLK^H#}&bGOA*HPLPuoA&{Q16MM8>uDDirw+1tsB(YMCc>uCvWf9R+cmb=sUZJ7LirbBklu9%r9-Yxul%Lgf{p(0GUC$K2N3-e^YPEB#|&sY4vi+thB;m7XK0vk%7qr}etcfRLsg7S1xZkmrSYi4=dfx1bF|5- zww85HI;_6ic^T2;h%UX!^)G!-Ry0wGBQ#SMbp2K$g~W@>1vPHFr{6h??B5nQg^)*C zOo!RUuadnwkg*;1d-SV)S6ZX3Vc2_YO_1opg6%>T2T%iRWy&fHC~iIukA z@4lyX6hScibJ{)30#e5~HshdS&)2w1#Z!i>19UfjcCM(g=%MKr&RYqNq2aYWX+kLM z2CL1oz2uh&AsS6B74tm@uDHW3oN!RXq6Dri?$vTlAwP<#Bo`(qAQ31Sn9#7gn} zk#QQc)De2{3!0?2D=l=!#q9i@i7YOo+|Z_ptr#8@5(}X=a!DO)QbnL3q%HumL~y@z zk$hR@)<+GPb45VfGaPS`Q>i;o>QTDcQLqY z`5Z3cqy=J+N_hEEu6#FL-re)v7p1STSW9r1i*-dRcJz_0yhqOr^SsZP4Qq7+Kb9>@ zGxqwvQoUIsvrN${Y^wLB(S{B->15vV@=Oli_A2vWH6IUF>rS+C8F5SEmOSlSS!JB= zu4sqYNWj{-vS-?5QVGKZoH3Gmxf1(qdW7S$k>u>f)dd-M^L$(r}q<@fr!Tnwd- z)VlTiFnOEDQWNPaKrrXC_o3(BGGX@dGvh6UIat|(0`7FZv~e=iGH&6WG@d;!ZIp*g zDp#Z@;X)^XHjN21pwm;q+dG5-Z-UDsUAXY#^L$WC1f&?FJR%;`B55sUf*3%$3z<4j zy=u=6);N`JTSJ@S?hca&7 zz$REf?(^uyi5!K3?nb!ed;Zu1eUW8-^%;e-eV>KOj-u?Q-7vjV7jN4hdfPG=Z{zUU z?hDBH55A(1cAxDocN@k=baQeyZ=>w#w>~Yu>&@rAK}^1v7|{%P+vxR^hQdm_Cs%$W zrJ{nU$)kuy61RIVb3P`wR_fabU`16crSe-EH#~vE6T=b*F&I_i-M6Gp#F4yAI`ouY zS~O$;{D$L1u&pYE_ zXyH>>!-MJ!d?P|NI7OTQnL9&VFh@QeUC7P|_`;F*~j%FE}3P+AP` z*oqxk0qj}}%AH)7LGdvY)f)O$Cy61II@3!v?7|HcPdmv0M(1h zao7)=u`p@$i3Reip*5#})6X;*yhnXn^&!^Q7WO}?L$WFPO`3I1@bXXd@=21bFzqX+ z(f9z;Sf)uGN(Zy(NuB3=*v6OhsGTJ*%^22!43E7<+dpEo`1iiwj@XFT^J<9zPa%3(sFZiD$(6ka*4TejY!XRv$sCad?pMFP1{b3-G5-8n)O#wZexhO%Uc7?4Y*jc|$syrA97urRAzJN2_v z&^KQ-4c>ewddk3pt5|7>@87?^qtvz1-r9Ct6ndQNt`-9&tBfJyG{heIoI?tV@mb)W zLZL^+-w({E<7NtfpJZJrb19R(P#Oxc4W9L$JHEv{7cs`fb=o$0R~)(isp?qbDoLwYXB;xImeupDYsk7DyyJkYP!QYh!7^0c5y}np}m{ zHMTp+e%3Z#JFeCn+pvnnZaU+bT3ig&>1tN>YLg%0_262RU{1>O2iU<_yIqPlso|UvJE3g469AX{gc3HCU7#`Gxn*q`1OdY7)FkMOBOB zWBPxBX_cAbQ?Gj@LgKT)Sry*^y!js;s8lqe4Jtx*hr}8-@ z?xdyMcWK>f^`I@CDZgFUctfz&cSN=j@=3q$R)JE+?Nx8Nvm}_MNcO{JLD*vhCpTPxtM5gHQT6{vSP{?W1!Tcc^P)TazNK#e@KwPv@FnE+$MX3`fQ#}9yj5onv42>O{Df9OTX@1r|gZeuvymeh%~ z4<}ab7Uu$}X=xZkdu4ow=3AG~ZxnKeuNLWP7&I*RUM#<_>it30{Z*paLr=BQspP0F zaA#}t_K9X74jxp;)ZD~c50x7J0&+G3aoLD@nXUyHAtvQF zJz`XutJv9$!6)K@?mGp-O$P)$h6O-6!a7=skSSdr6Lvldg*j`0GN1AQw=yA>yqYQW z63;}1z#ytv4-eOh?WY7oRe=)bc@^ELaxCBj9s$`I*++YAaaYzA1Rtsl|hNAX%g^FzqDtPjgLHhJ{odmHm-U z0heK5&-!9dJVX$I*2H}5+WjbCLpFh+%kmf%j&YW1ZgSB%h-o{@Z6J`+IT^5}khdit z5Mlyn?s)1N5|1QT`EytDq|t##Ao%<&pbUbTa#}|K!-4|<0=EP(kj4Q(xE8Ki1=g>4 zZR|9}y8D{Vx^AswyVowdlsOY(o8-=jBMBY5GT_m`H>YyRWlRzi6DM0)@vj-Un>6WL z%6f&FRWs_FOFVULo9NSUO-OI#we77@p@JK~gb`Px6ZU8Y>+`7S(7y-@A@#8CtIXKJ z`=s>1aOT=-PLgKMv_l12s0mxB&VeJD@6QF2aA)Hh3UAsTNC)$>0GVVpTFl&t(z$1r zrb;Az;+4^a8h`;|LfN-@t?`L1$+8fO2b@`DCahc76r#fKWI=};#Je9@K+$Y-05uSm zvSiGJn$g>0QZ$z`fFUCTfEdoF^c1wIS6+{g8?-N6u67$qcY%;bcGGKAMSgm$K%->P zQg!%4&&a7HT94F#1UP>cA^G4RIpoH@pjBcOb@jVDx~YP$rvq7yepEY79FUqr5%(Ih~qzsijynN zp=_8qbm`23JFzNsFjrb6@L)*PfMk-XWAOOrX|z1F0i@XOk$t#!CQ%lTcIWd{byse( z0&(G!SB^c2ho{>$D$|qpaf1)spXF2gc;Kb7ykIM)E#K+!6GCtcpZ(yV{>cEK5z^uL zl4Fu~(nVdoo(Z<&FZ}|y={)I|v%5F=pgKhHnX~AD24Y06JkzX$0rrl%w3Fj&LiN(N z!U)X3Ji7K3T2xkgpMO0aba#ns|(=4X>6>O@B z*s>p^6&Fd*PYjBWgKP7sc{BA>R%1v9Mdjo+R=h3o>llT1TiV72b_ew63F#RjwYmG< zMGuU1BpYr$8`qp7hw#zSxbPhPTHx+!#ZnAVrXUVm@P`R6FO9$dZ1>BS!8$itAfu6` zW%@#{`zYK`sG$K>CcKGkF!vb3C|dXqn)lqJiYpB9wvsHrpj#3tZIoEOe4*m#LNg#} zB>s<@Ea!Cpx!+O02CVi-3Wx6Ri=DPx<1?AWsqySUd6@*@T0jS^4gsFIaFf=Ewggt$ z*fCiO&B#y4OR!J@)E5sD$E8}dE;~Bjbddo_>I53LEVH5%7iL6`KVDVdV13M12G0)V zAa4ohpz-teJ{@6a$-2tjb#ad#-_nsBCMIQxBy9@ibT2=WcQuf^qx?qaPza1xG`1an zT#@IM(JeZQIti8*OivK(MGvCwx^OEJWWj3l$QjgT+E;q8(!}Cd6+N%Z}y}^SOY3b$cKab2sq#N-i;i*GXX)zLXQIw%z4M|-V*|J0{JZB}P z<(TEg2g&Wah@{?Dy=`69q%X5^zddxeM-6#4oXgd726>&6orJRD>*_nJgdEK_bfXT1 zNA$GlTuf7IHflUG%Jebu?X~U=yFq$36Y;et&qXy_v!!KQ(iZ%n8gFH>3>nkym>?WI4+d&MS0{ysDWSVJGL$h@5(}KjzK}|!Z_9hRu z;-lQ~{-X8FY14iWnFbAR+-mr!?=Rpb@aHyj4>k(l1L+B~z3V$<9sKKs+e1_uH#_Bl z2d|eG#k@wX-e**$Vkt6DX(c=0$aC_MTpLHJ^`U=14pmf)hrCRNQ^)zoA?kzlSU3@o z(3QqZiVlEu!lcpp3{vpdwY(j1q236-{3Okn!jq`y3uDz9p;Q5@4!fd(a17kKgT_yU z2OP_#{1%@Z0Itd0(8$G?Q?KXPPWQG8)sgL(pc2)ntz}utV!UuRAgg+V&`rOMve0Tr4GFGBt^GRi1PjR;!d3| z%O`buY*Pu;#)E$Kr8Mp$*PRAj6zv3B?dJbr5h1RNXGqCTWI*|GYly9 zpjWXUc81e#+MOK{SkWFymxJJ2fsE*EPKSeOJ!qH$mhzZ}+a6RvcIX-AZa}_(?wd8Ao-SCvTJhW&%cW<04jy2U&?e(zWf_`F zRN;@@vK}9D)5?U?3=K%?raWj`9Vs>#&}ImGYEx(TVJZ?2%7tIit^0O$`bDTb^|L2^ z88w;|O_gS27H*bwdWwyXr& zh{x(EQ<*t$^)fPdP_Xv;2hoy3XrRBLw64EPzSbnqtAQ(>iFL_lVspo&aueZ9%PDjI zLpPEvA>go7YT{5iu7yDqIp5xuEN1jH=zU2ctJ6aAV0n*68&Z9u2uXv$C$@UTVdhj_k!iCEGrR zeYcWw4*)*qo%rHJ+fwN`GiHylzN+|lIQfb zYoE_fP6I`!mwf|797hw!Su`L`PPKwHA`JWPqwLMQNr|!iXIC197iWzM_u`SWF7L;o zxsQmvE+51%wh2r|Te$}(&FHDPxbdZ;v@_`(>GTpDSq?P7Dl7&xr#_4GCG%ieJHILP>BzqSE*a~GKq~Tss2fQzeQ%3Hx+HGj4wbf)wp}w zHd`OnX3dIR8cnLV8xf_T-9SDr(Uz?oV9=Rm=gDQ_wQ62z6Y+U033NIh&Kb}tar0L9 zmC~&$`UK4bUejl*q(`tW9&EI(xUOO53+E~@6MBI~UW3A)1n0UKYU+9GEJwQ%$FkY; zh$V%<5?%OgU~%I~pb-<4&=Kk^2_M?W9dJm)F_!f7)Ivsld9QW4oa*!QflaP;x!^rf zJu4B0GLW!i>L}e{-R_Wgf};avTC@cN4_Px|!K*;hO0q=BJ(p7WX!Rz7U&DB*0@v5x z^&$LzOrQe5A6vM9N{n!w=G-buA74;QxAu*2-XVV!EIZI0-_4S*@5AVlh|qU7&XQ$p zXS8J6G1GSER7_y89?x%-UJ;qU_kzb$?4pXj=+iyz;LO{o+Q}wYvIiLBNjD8L%M6Pw zw@$|B+JOn3gVY9hW_GFaL4i~qF*g98@Rad18FEwrYiE_@C^=$E8J}zE&Xwp!0}&=8 zBjN!y(~hAu1toI1^NE)U1SQ7lz}mpMqRN?>DoH=7la`e+EJj4spmMi=dfBeJKXK5 zk5G4pD}(iSql!%Tn4R^_*32;nXpGM1wL?4Yo|(Y!VU)QZ0S~LJg@0z}*N(p;4`^kq za1iRfD3MWoHOpNG!D$zxGF{H3f*i*+z=%bai;9-kgszsHe4=CvVe=kFM8T<< zo1uJ6xZF{aF=mP-%V?1DvqU=SqlJ2C2&-xjf!Hyv$1CK;$qU_5{P0T{DAM^ z7^$yD!=r4AAq#XPma-u&@}IRjq>ywabkNeH^QSPyH;#2tj>LBaur;UB0$4~16QgYV zanrs0kw`Ko<#7POClW$zR>_)36c0$nO?Nub07mdr0jV^RbSMaa6no?=2Nhy%;#8Cb zZpa))gBvO*BqAUn#3um!Zx;REkU1?K4Lz5HBuLyCETy7sAfSI;bI<`WbNp z=%l!zb-ep{Kf*v>k0m!hSc)*&l}>Usmrf)I?>OMb#1!c~s^7&hARv3zj6$dJ3>aPd$H1!^~`#EEpVo>*`xaH(_Z*gn>T z$W~ykf}#o4s@fJx;;2)vZq29~TX6@$D9GDJgS8e2aNIj%z=_iFb_Gl-`%l1}_j-2Y z_sD8utA*G;SPFj@u7iE!CC{QF z8klftTlBPo#D~8y`%LM6dl`*>tcdZnF{4qhSF&k!{0r4s`FKBLoqY5pAvesdjO7!D zc6fJb=82JcR{T7Tb&W{i|y&MZ2HIkF(8A)Sg*Wt(l3b?(@f1gDI#>)fj8SV$7<0NNwee^y4o3iBy+F ziVsSYB6LauoN@Mwtzc-u(iW0NXjI&rh>nMExzV$sZ#^x?e?j{ucmhPucr=uJ4bq z*rs=itrnL4CW-U7S_Uho$IRcZIetBhhQi`1bWTp(6vonaL+Sj$Wb!*LV?0++ULLku zU0(`+doyZQ-v7m+gAGgFsws8qtj;Gt zA>XTHU^oe8)J={qCC&2?TQ~YA61nDNIQnh3;LS zCp6zbG)hqpiK>;r8LNe%OmskQ(44WUx}e3~sL3TAM;#P@O~r(5kUV*zJgErWOzgys z%DTAXy{oZSej-E4YqA&p%xNMKDEn(ETlc4wd$3Ap-8?gim-C>01(N~>%q`)W!2MYu z;f+U$^AifPBBHFgH~8b?dD)ZwnD~7hLN(8ud>BW)JhA*l#H_CSZhtzA4+H^|$$sI> z(B5gOzvNkb@^W9|sosj%I4jsltB}<8GXjlRSjH}y9ottrq*3-Wm40XyRbjpxWq~y< zF=j`{8uY=L32D9$eke6HU-B|05mRxhQ8+{Km))|(L<|jwfCG3RLzt?bi@c_+%;k4! zOmpaL23c0S!BzdhojyXTLA-iAW+FoCg&)eZB@`%{lrEgP3d8S@`A7xvrvI2LWrAAj zGucH?G^u0Uqg>cNFrId2cab8OYj}=Z%)U#Fj2c1$ zsN&=0##O7UR8iK?iTcM%#l1`z<(H8arfp#vCfJqE>wf=lw1t{gQTY^0mik}5!a1Jb zvI?*vCG1cIXg{*`68LAsQjq8+AMGZ_e`Py1<$e>zwp-`SFW{J4YhQ&?(E}Ck$>tvV z*BAFkzq+qFqEA#GY#NMS-em#P`RCQw6J-AVE$l5$fTl;)|_fz+Co?twWmsP>MwR15`L9QP!T_mF? zURgFLdCdRDCwG(aMRWsl)`bKCsYx_7cp?BGe(rGUi(uZ@kLByM}rIzZ~9M* z+XgUijm9lUOgS_lL9pK?_n&FuR(uq~*TR8z>ZNdu$4zl@{2FcOt6=hzjxEFqiIDsY@JbA2G)gnn$m5H$ ze2+ii@lC*!Lx53>%mPjIwZup5Cr#g>cj8|_e^C*MhA&xWx0vekXVv|fyS}h#e}uOD zX-dEPJO4Dl3O@NR3R0umE(}V@T8Oo5VPW^+(!OnL3R$qjUA-Qa&hHM&Tc#Zg5|qpV`zo;PKUR^dFoAhmO^>P)lN{IPa;O z&+fVBQr7x?!U&z%V10jEm-Nbtb*+y<##{;|PNmeE#&GXrIWwBT3^PIQZd3(QosMhy zMBLPxI-u3^)Z|wzog-m#TmTuc#&-E9n7aRG5=RqrYEF-1#1NOiK7)wr$T!Iim)3C= z2P|}1bMI1DJxs<~>B-%F;JH+eo6LCNlT1DLTb{>NZZbsRKwJ6%ix*COjNE~b&e9Jd zodu@xZ#HW9=;)sLFI|_YE`7FqPi*o8NF_;A;L55qXr?AI%xMk^pIQY@=xeAueRxS& z+Q!xu5W4U?X^)fqANna$5Y-5`5T$$lqTtD3(z4RLyVplq#dN=4^D!+`ISdpGo@a%l zjZM1G0#8pz`N{m%#ye+f5{KR|hOf_5PMP}Rojtv9fvfwU z#$HB=@%tR2rIVeO5|mZN)jMbefAUYk`1{DRcJL)VGxGj-`mZW`8+PdJ#~m2DU-UST z>_tmgpj@T;G4l?fwC|F3`;#aHD9CV}le^CNkuBRe+2i_2HHp`{`TI4VDgBy$X~Qw)Db;xAH^I(`#Aoe6~muogG@)fH;w(%4%YHcY0K~U!e$#yrMYfU zF+A6h>eG+BGCzODa*TPLqY7e%f5C4}zN+qQgiIKO=d|QK9b^Bee9?|jzk<{gh6e>) zfvR^2SK*M2P3B5Eqxlgvy_9jxCy4H^EVuweH%N+hWsm1t6F4npY5$&ge80w_{Atr% zY(Gpu@pbFKgPa+G8t-^aAK`=7#XFi8(2yYmRj1$a3t$0q$&I*wk*GJ4-P%Q7DY~xx zCXgx6aGfMN#I6Z;f!R`!dcCnHcEL3xuvYkWm5lJ?TG7{4AdAQOR93FQ{`jw4(Mwmw zcCIee^JR1K)jn2SKpx-%a{R-LN0W`J?^xr2nUV)&yapK|sC#Cr{&Sa_A!JX}M|~e6 zw)U|5Wivh9qDZBQUdI2DP=RZ2*~Ae0?ObwABd!r@%o)R9--ZLgj(<_6FS?d{i+;+H zdvNV6a>2DNu=etS>JGT5Xz0feW+35l-n*vWfh2e-Q&sfPXV;GYj746O{*PT80<`{F zUbXRxb%x_l{`qF&GUP!3jqGkb`1koh%9h7@26{~I!H|3R`*n&G&yODw-diJd=3tr+ z6_tkj;}0OZi5*#RwVxEFz!WB-YV}~Jr6{IET#i(ORh;9h0NvCY$NT-rj9cRKwLdBm zEZTf!O}|puT^^r4qq}Q)LGNoUi{*IM=AUNJiQ^Y_nBVkGrjl@m&dZuwZ<@Y7#FIg2kYa`h#xU8>Ug{^xUJv0#vF z=^cZxaKI+~jrD+>^ zl^YJaej<3oe@;t1I z$Xaz7FiwI%U&%aIP)6K8pW#_#PwFQN3KOqWJ<3gyvimS&{H2eZ>A0peB3{@`olYom zSPXF`J|!k5rnA*^~AJGCtd+r_Vw;0+<*sKXIeb=u(cV4OV1Rg%)L{{yvj!( zW`5CvE6UYtSAkw`#iP>snX1?ZG1{WPfZsU7ksDs=Jxe(g9Xje(J^aUkLim)nK;bCW z4|zuxbLE(@;90Q}e|ISF;(QWKn<5imv=E!$5W`L5r!(X&2o+mVQ4#y!s;Dv65m>t6 zEUmG{l@t}j2M5E$1ELgTDnIY+cY}SDZ&TeF7UBG{*bhywDcjQ=r5E^MBLsdZ9%hq3 zfj@eku}yc*g=k)ba;{)QmXn@T?>CMA`RG6PJLQ?P@b$Z>A-Id*;GeXcug=kLg0(nz zX}&=^&dO)IJC$!~+!{1*$t}yv)eMxnMVaPJz>a85$}x|H z(Ts_l-j%{<91_HA&f70gYOJ|IaVG))jLkb{Ms{!mp&S4G{Bb3=?HVg`lg-SWot;hh z3n!b~fY>sBSqBaJ)%hyi4*l@4-}pw#+h@EZx?A*qQ=>$@5ySL;gI^Ke?`&NMx z@Z{f^CqtXIxGejGCw&FS0c>!NK*9E5(*3zWrHOW2WuVauB4J6Baa_K(7<*;6Kk+Ed zu{XE=w|};JPjLcW?5tQQ&NoJIU28#QL&FvOI482D*5Yd2FRJn=ag}=|B;*Q6(tK*1 zvz_VuEDJf;{Gfo@vmrw2^h2kt#x~{y!eR1RkpIf4@&5doyFK*=CGk>^oVKF_y8< zAhKpG*%FeF<%7YDee7#Bj9nO86p6;JvSdvqsVGU3RMP+I^Zotr>q=h6IrpCPKF{;K zpZB?U<}E5u9hH!Ijm-`5F!89P1&ouH$?flw%x?8a<#2I%co;-x^0BJLj2Zy$oI}MK zszMfea)8e8imc7sJQBlt=8I%T)|L*_2U;`JrpZd>UA&R@9`bj`@c!=HeU3S=E6`_$ zG8Q))h?zg%byH8J#&`p{7&@Ut#_S7{Nia1=&&WkM1Lv408oi!Im)(-iFbi}_%1~MI zZXfr{n?Z5XRQeDMeXI9RR2uECqlXK6DxYrZw=|5ubOTn?gi(9`HRuytttYB+EdGME zKGc$Fgz*x_srOaS>3fh5&wa^<0HgV8}rM#X*wCBlezx3zt@GxYVMKu1~ufICh82L z8UE5oj6Ikguypymmb4y+6jl2d*IOAi@G4WH;DRI{Ska6!;6*IyZ3L|`TfC1QF9AsG z=q7B^A5abo*$}(cRSR*B1DC%QzzBT6N%e>R9Z1cGUA?3=;ncCzO&)>!kl0o7UH>Zy z>)D^Iw(%xyVyT&HU53_9pa>u*yz3!eu1v+qTQk=JXuXTMV&V0=qC?-<)`F&zJ!&Wm zEPd0K_1O>RD$VYTc@HeAcD!{)^WMn6G#558sZ`Dnn9>$)ZI;=2U#NTIm4CX^p!=N( zLv`KaqpMF^ce{yAu|tcpO3g^u7ljST;+!grKY-PY7joWJTwW?&xrfmBWc3Aa;P{2PbI40&z;$Tt)f7@C2X$0+p)TS#NQNur>HaDSn=d71+j{1q_7rYXD3A$;$iCnAUX8Zwm9^a>)NbVjy>_FJgG{wYd z8GhIm2f&hJLoyd1qgPdn<1jb3>EJLEzva$jfw!!EYm4Hn1WxHOl|CfC*vuQHHE7&K z*0`6{EWMKjoO+iU8^(G{?CmA(M@TL^-}$?G2e(wA6Sm6OuABKo$Cq|bpPs%XI22L_ zES6+{p5{AD%lT1`|HU0a5Ln@I7%5kWYRXz(2qcg!0O`Bn{fs*=C=}7Mg5omCXW16TXw}B5Qt)5fyarol;Q3!7#Q48m@fz5( zB{kwSEK#p&mI)iFX3FDq&xyOmS5#ge%}&8r`L|grFD*N4V?YAG%;9{xtuW7VQOBL( z0^O_b2J7AJFy*-dUHaQ*`H+A#VW-u3o@>o6-U6Q!<_mf{-Zslc0-x4vHl_qbJ^Od5 zE5O~KuZR9NOOA8_L|^k^7^mHPEj?@h_fw8vftX10q;S}Keml+e3_UCe2ng@{qXnx7 zO^NGbqj3>tz$3;(&gpjrt#-WckF>ln5>6|rh+C%va}oaO=|Sul%gMsmi*evXKxe{2 zHc>i{l_{&`q%zZ&Z~DCIqZo_o6Wh4pY(Ved`33qp(Ph~I@M5`M;N+VaUA_eH6Z{dvt#_rIklca@on zc}#7cZXalGQJg+P!g6@A-euGc6Zb8`qAn!*<+XMfG<4B2a+)i>L{@epBg( z)Mg@JK9QbA16ZZwjqF|aj;JAAN=WO5my_S_DyU%BE$xx~leB`5zkp!q)-41UI#p|z z9<}mf^54A$x9PpVTtH-CS`z;ptEl6*I5IBt@x=GK9$&2&+3?e=wJu2`F4Jp@eoNRh*g2f$fS5xC=yjBBUH%UMKMapx zrCMExCemJWn0OkfdKq1-wSVho|Gx2CUZhE0WWZp+I_>e5Au)&cvZ)!oZlb|o~ZAQNGbtmw)5`Lx^teocNLXOiz`*K$j=Jo-e zty?L@7^8NuQfLy6-S5`^kVA5J$1VzSv;6AE8CJI6B-K>^@>QDrefv-IboX}DX$woB z4!0D}nD0&(3!$CWD>}f&UBf)5^N>$311^ug7q$D)xX@0sMlV757;WoEa6A)M)m6eu+SV5Quy5lnAV99$;jGLK)=GThJ$_p z!9$3QktN;|Wqd~Tm*pO1a__rxdeonWT1e{kYs_l(9j04bbqw9Iw{EFBx;iVipP%$o z0SG%XLtdg5i&tqiFdcAL?V&k@H*p)lSOc%A!J@2fztO z+$=~&hs?%8(o6u+^LK)^im$mPMyy-?j2Sgua_^QMZvQJB)0?{z!;iG4b)k>;Pm?P| zZeK$nF{Rompx6FVt@a0Ux7?p&27m$p;-s38Noq%mIHnQxLs(?*7(R>YlN5E@nJ>^S zHtO!!K__<#2CR)A6vyQ%?s(r`_cKC5DEw^5Szx|i0a*r47ixf$w)j3lj?eL2!3db>d6rv1O8$cLO`%3|vc#Qyl#ee75YRJNU)bk39saF8u zn}vp*k}_4Ejk_b=|F1tQN$3?glNz9GJ&yzMie4`V zA`>7-z!W)>&Q}tK_K`~kbx6RHWJh-2c6 z+Mi?DQ)RYxRx(CFK_ErMdbRT2kSpqCQ%Ov>>5>EBy>XeF!7!Uft2C=1AY(krJId^G zp0{cChvdIQF3l4{V!Y1!qE|~+L*U;?UD&UGg@4d!y(aS!oMNS@>KJ!3^49$iGoSp8 zUZFSR?t!%SDnpKbIU35-rbCx%4ZozNpi)MhyAJ>tD3W?AAs~$rC*>hI8s@-$`>h$5 z9Z<}~M1?8-9eL(dleBeyHit7pZmUf)U*~XZ=O0XqsZW>xgre$VpV3@*QHLA9#J~KP zC`t7BUnf|5Z9drsNc(zih4_7pDoPb32BQAmmkSo-;Q%$ETK=m3Z#_?>*i zGve4_2(a37M+=gj%})bK9a}+%K(BHkfSU)b&P~LAb`K!cKKg>nAL+p&KnptIZ~5XC zk`}D5>3b>Y)n!U_d&0{dI<(C~&_|Hx2I%8tf*^6ts%WgfqBs?pPSLhGXAu2O(NA#h z9F3`AGElwZ8c?J_Iz_5Xjss@9{FMX`$l#EXIs?dyo7|rOz@fnPf>l`EqM2&S3Ur$Q zLno=(P%Z6-64t9v{X$bTC+~9|*{5$7>v?21Tp?B%09I8wA1RwZ>mGEAB9}ZXAS@m6 zpwo||j)3?yl&^LMWEN7z6vyr#2hr?Wbto!Db~kbS>}P{+G$|f;DD8`SUpU!i_->k? z%Ql*oZ4!{bOqRg=^DIqbsHUas!D*%>L-NMomB1VFLC+f?>0usu=P;}?FK1`*<-bTM zonpyTmR;~>@#c_u5W@}O=5Hp|Xn8eY-Nh@Sy6XTdfA!x*T54X@h zBZkaV!zI3mbW3(m*7K|NR;>dP+v;qcg?B!#$|WjQ3rIJ;n{zJb5xz;ns%pKdp61Rg z9lB5psk;LX%RFAQS`TOfhshpMK#WvvDTFwnK1f$_m~)sxwLPq6nSV*D)$vd)TLo3dx;u86odH(?u?8?Ff8AAbiuNpjeGaKZE)vkhM>mQ( znv`v;N}LkfJ-Pd(j9E<$KDVbO&)TiK!t}#8|klnSLw}eXD{x7RyhobH{PD+tRmrZ?w=due=nB;!ARD=Q~+Lo^UfHuJ2H7&+8^cMh#GZZ&q%-AL;6!G7ALp};; zRZs$oItDEBRVL|xYXroA^@*<9EqWn)4A-@9vwla10g!Rk0zNH%6}YIM_6u?HU=7J> zItv}B-)!S_czPV5FW7)mJDG8%M>REEY|!-O>dH&gbFUZ5SCMNKQ6WdMzsm@PScPCya0A2smw0z@d7r)5~o#r^TXlp?UF)Qoq!~>eAzvd zK+IZ~18dr3K9Fd1=yjs*K@M&xM`Ztgd-^Ux3L>THaVpnTmpvb#WdNlgDV4@p=Qw?| zb_XQ7)_*K$;JCzd_8sJK707uQAC(fds%v}f;?#cwwJGB4>4fZ`fHcir|A3m=oRtBf zGMT_3SXo(h(x|?$kXO{~Do*2*HK8mU$bk6CCtu+1dmP=9qM_0Rd~i4OLqno$C}?UA zND^Ki85Xe?odrh}%hPUfKWAC}zBf{D-b3by@#@0)8y}Ve6{mHPd#`0~mh;LGuS?b& z%v!2#Ds=q3_gBjn0iOAqYW7priMOgQ07l>JlN5HUN-UnN!58)9zLWC5&KHV4B@AS? zz-1mqzu-qdmb>H-lmEL_L;0!-N^f#@efeiMM^B&-(57^$k8(0}NAzkVV zQUKYHP51X(RG%*GImY8GWHzVy`0ZfOD@4~ru<-u zEUOMk9|pw6Q=E|;eqf+q$jQlOqv{vO0}}C;B#$MqFkw*~V79xnAy*JES3i^gA)7qM zk;184$zl||s{oLR|JuOGu0*XG!nLUEAE1bjWX93NOEvtRK=iKYpJQ0AxNg9N@A}5q z)nN`Txh&8d9JGGU{{r1oHDDdj{bKARzDqU@xHbl#33_;+fFsV7@rYf7# zP{*!uc~OKBFp5Wz_m{6Fs8#hASDip-Za+aac_zG(=semyF|XUJRQMfq1$uOaZazF$ z8j=~676Us#Tsg2^&jGfqOaxT)J}9!OAr#rN$9P#LO@VSg=@0^LssQV8wLF!o@gQH4 zmt(SLLIK|-y*kgQm~$C0jBqj)@QAtJq=RQbjrho`P^88=j!IPlIWFEh5Ll*wxwH1B zzRSGIebV?o)ib?sv>+)1&@7>aFbmteuDr6{(7d0b29)dDnFkAB6GCqO2QkdekCBb0h=CXf>WV4GUf%8r*Cqj&TRc-f^^!RW2qkrdyfQAtphaDGrdD) zqFv5+*WC1AUhpj8@?xnZup8pKpu9bLO+rr|_wiXiz(M&(3!d;p?w|msO(Lf^b6rgX ze1*E_JORJEOh1HHLDM@@yJ}|Oz$Qd?C^&Y4=Gx9cEEN>gBpi7S%RtNMzb)@w(zNiJ zr-noVEt>Fk(W5Dg8*UX_*eVCQZWnUhe0%=PmtW$+&pwfFT?@_$6{i;^Otf4Wk{W3n zk=ser1e?tUH1(!#R1^S5o_2r{5A+v=qQ*dU)%Z(66xD~!Lv+|Jx6Ho`9MQ0wn_EQ# zx#Y#Xpz%)|Iy-E};wdkGs5xEl3$Q)nWI{lRyK|hEB*ve8mrpi2P374S5v`~2rvk>+x$6}pcr0>k=>JoU#^A$z6I`RHr`0y z+c*L)T4xcl2Kvc(RX^tq@&kY2-;w=GV)Tj*T3m>}*OAOB`L3M*W}$4Q zW>m7(w=PsLLqxFFQcw5*>>F3GYbM^N?6Bt8?7oNp{G{YHAYx?G21D!zX2Gcv(6J91 zC%^4(J2^Vp+$J6A9$TZod4#{Euhe42Ml7&>a|#des8Ua_>DWh;E9s>;8$cKUmDbZQ z(5FNnbs}R1AFUOvlzbq*$$7DzpFVfHE!~=OX-V$;%7u|z$0r8eDFlZ5o`U_4{xCo{ zgz_I6g@oqY*5}~|ZRN&Qh(rVo#>Uxlm)+w?$g4#|pVid_t#aX*ej!}j`$8|gO!y}A zR(f?fWBeOVU7BPq$g!2YLJ;M5x%hk#>Q%Dj2HAFVimK-p`PU8HTI)o}QtrnNrNXHUV`hk#veZV&Q#UoC6M zUgq<@X;glRaw&JU;>rDo8?^~Tq`pnr{8+nYLaj@Jyxk36NX7k7p;^-x8rlVHTo#pb zV=BaCgsNQ2xSTxoKVey&q(rqqeS>b@E*wxuKK~dG^gZ=x` zJu`df-YnK>taXGLl+Y`lDh_aHf{n7kaSIOJu@06YfCud2=HgOiSD7a4U7MXAFJ6o` zR2i`&P+|gFS(lEg%|IerG;^e#fv={Lx{4&7XFu7g!3nGt(y2)US`Mr`t9@=2w`+d2 zCl0eyqd0gghJD)tcjP`sr|G@q*=RYJfOPdT){@e$w$ zX<)#n&9isU-+WdNRC)PD%uxQd*^C6QVz>d&^q9&x2M32aP{u(Q*{*BuHFx)$+a2t#PSf&fdgaL!7 z7*x$0=E1N7@`Br#ztwy?kI*fF1CQ;ZXpi@&(m}4f(P{TKsyR{y(&%fz^9E9&W5@pi zo;CR2yY2r0-h}WE7z9%`zy*^{9V(PG~~U(l08?b8Fv^2u=Ol%IEUPj_AX)Y{nX>}N%5 z-(k55Df<*_pUEoByysi#>psQ5HI4@*_#C*u?vqwJcc7@L)FYs(jj&%7pq=6h={Q*t zXxhzL@%g8w(&Tt+F%KdXbS9d4}hu$<1Ij*afu< z;n>FPkmF+_3yV66l@uPV6DWV8{KP+%d4$6J$qFQ<>W4^>Kjq!<4}%j9)VrpBuADM8 z>@T>42ejm-_;|>Nanf8RhEANp>Zevpa9m~gP;1YPpKq}g7r3*+#mx#zH*Zw@V*^h28s%zVLwN@%d&bHEyNzqas;KPAZ5wz?YI6tRGqxxgE zOLCSiPgvf>!^qRg8dZXPR&r`1YuVEgu;b^-Ta2GD>2Vn^39RWhwwgOa=AzK&mCr2L zP`oY5u`(`lq{wPnZT->1{hd^&^k~TB_=17!X)bAb=?8JZ+m6=!veAV5)VhD42eH(f z1q+q6fzF324U($<9ODO@VO!s&-AqwM{pPvQCOR~RX)W#=3J=N^SSXR2w1i-#gWYm! z4+PtCQ-f~zTy@-xxIQ_*$d~Pwfb%Wag=CB*`+;crQykKyyz#&=1 z;a5wJrKFMz8z`k4;%Ip_M6%k;SkBlrg>=heP%hL@!dSND0h$(TJ)qBV=!eT-RTAYS z63?Zhr(cXqhTjcu%`d zL7m1^1b1-67;S3WkJmhaGMiw=B&%R^dx;cC$|ohC9EiWz%y;#ieBP8Y0xQdAu&c(R zVs^2>7Ft%2u9#5Pz!pyP6A!|x@HR6u#qmAvFBmYi#FTsUC1FsB`&iVO{VC0=J#VElk z$D2EFD33tmY;1*5d4p=x*R=B)kI5248;~&>Q0zYwpoY++0-66sEcvBg4ofjey%$ERVm_U2KANv4g|IMX zAhLxmXOk_-Pbrq{=B}o1Z3_3ekQ*f4iM#802=h^w-nw}F6l#n>%~MmGF;D<)N#^ju z^#{aX%cS?c;q|2bIriF)5U4jK@u&WwJR*i7 z;syBl8k8p0yDQhi-V=W3*q!#BizE$w79SDQUg2vNQ}s@)qR--L?YB$Y6K@EQ@DVGM@LbljLmxF z?Lr_ixGTpure0zvEPvl*>tWazW9~903D}=wc8c2v0yFVFe$bJ0W!s=}5w1#5v5GOm zn{DrmO*i8c`4<`?cOQb4=@TB@t`AE}fM#YJomOOaxdDoe=o0vDX1XoenHVKlj3$7E z!Q4hSjY4nVPa5iJnNO4tf2`clAAZhMe+(<*=h`V2i<0;+|SR6)I?4`-kc3-hkRg3#9x_iW6Bc1+HK;bZ#! zuhW-UKkXo(5&hDhacHK-2O~0}L6p~`J>bAn{39X5pWMtnuuDFZ`S%A51(r_hDJ!Ft z>&z`kKCHHKmWWdK6`CQNx_oAFMleE_+tslSrH`T%z7`SA<#Vd%gR zHBI(^oAIlwt&&fteR$p11|8mul~n#S%@{REdU#Lu;a&*hkaxHgc%{1q`P{sQ$v_rM zz6y_Zr#Vf7Wmiuw+A2HX;j>~vALCs7P&_l!qbRmtm@{&g3h9YS6jOo9?fybq>vIU! zLs!!{*?iLUVT%bG21?H5rNH%6nT+lDcP@+!zBU~nFbUT4pkGKKDiE+OSD9tIwN)(F zR>IYE(o)x&FvBe3mSdj;pd10ze|$}#Jc)_q(>7QCbvk`2|FZLT2 z8AF$rAXnddo`O~W9vDD3;?g57p)GniXAxyS3%diZtz+2+C(di$^%!hLz zAfckPcW!*L%Oq6ts>z$g)8#=j`-c{g`F)j#{#OXXrqcuBP6IGKt{(cwoUg%xV z5JO)LUFldKM##&bh#YyAKe}G>u%H#@+IDfm{Pdj7UC<^>t5e-_8MEd)lFPI3`XbhC zNU>S#&Yxpnnh_HJOfeo~IgYEO9pAia8YQtP$T4~f5s7}ykJCiQ4hgLWYP&d!y*nsg zFxQJ1&b+^XoM|WDe@yp4HKRr%Roi}na?nYQ=Chy63of+!CPJLmhK z6mL@@JrUL`lhK|RzbSjY9*sG3_B3>W>1M(*X;P+D_cBZWgue3|hUl%YitCjsyAL$UK! z*h)|#VTe*b2vLj1!)AuKjffIF?euTu39dyrmR_B1b?16~h@Mo6=dV=*i8AAAcx1S2p%2vbH4 z853Gm`f7LygfvnzfS#LP@sm;!h&cVoWq~|4@|9cI3RKyi<{zaARdeN>%xPC)$#s7v z_0!064_)Ia-Dzy7oWLsqiz_mZ zjF1|y?Gkdq0QzKu39(Y%j+N>BnNsL3Xa5ghsTe&D4Cy0NpM3;x;JpGTPjQ%|a^5*q&;Qx0dr+=}RorUobfhM9P?FtF{K9`r9EA3&s`Ow&lI87HBI zY@)bJ-sn$}k^GS{K|cupd_Kw0h_?d*dBZY@4fBPL;U2 zyTl5L>ah%CvbZw%;PF4sW|MbMnQiPnNaG^eQYdC0 z+Kkt2jkFh~%j@bb)h+ocB`ijnE+(sKr@q%3WQgMRCd=`2zR!wE#Tbi zOB_N!U~2~NjBf|{r}L9(xt&tnR0d<_1+v&YVbSqRxOm7PdiY%|zSe)#_38zM@_GC>GFyJmhqhcjuxt)Kb!JANi_@<03*-f73H zlZt4|2@_#+r(#7juA7Q-h*&1At{;fsUHfwkBf(yVs?;z@-R&_{5s2d>x)^1m1@do* zZ=E~S7$GoEPvFntQV~%JeJT{l zuFZ7zkDDAEA3C>FJuZb`+;t2KBTyIL53^IxRef1|DHivus%nQ`U3b}(t);)oyS>oMUpT>v~TO-AjCYi9u z%Xcjh5j`3%8LT-ETO=6;L{vI?9{hHF>0Mbr`N6oV0zQKp>)#5ZO3VBwHex^8{ zohdEd#y~A?#_=if`pV?wJKvgtU9YL*Ol+76b3Xai*^7Xqlf`TNX4cX)sZDzB#=#@z zmrDW1552H*5Zw`heKjldv>@iJlMY_P^souMhVSL8A?iM8Z?$54YZ4!8 zBxFk~{07N5o!Vx}oueVS#DAK4T`ecDo#(`O=Vew~m($w|+iyRB4Y2WeJQAyxzi%XY zx)<&h zu3N&7p>h32@AIPLb){DJ^k(QI?edJCZO<|Jb8Vj?$8}v==j3>K_0M5?qz$b=&u^Df zFJdmAB4+o|KX_&bpDTV!CzYB;kf(%tQX{(V!i6)lDkTY=YZlU=q)8$Qe)9R*edncQ+I7Q{0 z3z?KZpK zSp0j<>I+>eBl6}E+Hxi62#9D+T{sD}jTc{hWhAMB%&MkqL%@)1gzz+D+?2Rc_KpqB z3Of}q;`@=4>nD;VSq0jtID-|#{QECad`4T4B@<(ji5<o ztqX8f=(~14Ey}l>zfajBQiZBNOmDE_&CywW^2+qnD-e|O?Cr+;Z|R=QL>Rk*jAL9i z=MzrL1iU+>^G1hy5KVKN<6nNW^L`^Qwt)7^6dNp zS@ewcURIvD*ZrXcZLwqfQ;I$(1=mtUPKY9(tb9%Q#u^6kT2E+soL-fqI~wgGg*(gC zBf>OtcXCv(IJu!Pgd6LUqXx~|O4DFUy0$h{v;#N0XD~_*cQGzzWBbt6Xt|ETO0h5y zJMtX-n$D@kkHoJl)FGbtzZDX3iiffKaj6>R%6rq)4zCRH6F~+{FlJLTHc#b4DoT&- z92F`VA@#oK)?7idu@5X3T-0iQsaZqvjrlZFG|2^S3H!qR?|z;`@Fh;X*?9`Pv6|M& zP@O5>v&s4w(ibBy7ZGI5)2fnU2Uhvfr#X^xM^db2;AE-Gyc3+^BBT%27`eS?5~Ez4|{sd7EDW;hE367D0IT3MP3$nlpax&G2o%D}g!A zluMka{xx%6&msmup!QEz`V+-$-%~Cmh{>Ow;UjYko1C>aWTl zrt9Z725SVR#iWZWudG5p7^LedB+G*4NeJ2>-*3OVvg z4~ocrW50aY$dZ^u8%5ze#aQbgOMJTLad_PN>Pwl-o9V2vbso|}q6R%Heuj?0-I(4m zr2(+aPNbl}%u4RB0IuBoY^!4?6A@0njGw)h5- zvF%wwgKI@iA54=WP~7Xm;sVnBlS9`;PGTpuP!9-jP434Ie2^)@&k~7JbkX8d>V+?K z+t0KVSS7fK62s*$eyq20DVEQ;^?}d1l4jk0y@II;Ybc~==vsJonw5sjI!KAPx-_Qk zG&tUV@tY}))0f41$slo@Ma3lX2b2V37sz{<#N?O}dHL%8AGwN6qrzVq3Xf*R; zgK1?!53Y)L-BW-jG7r}L!$HvUFoU#EG_*ICKgEN?Ny*vrN8w8;SzxtvL}j7 za7ToY9&z0w*o$c1&p)8YTGP_{?IL9$#|GHbZaJ96F(q@)pcc}5M&bnR;^t=^?t!@{ zZ<&{g4qlHSJn2p34~Pnc>16z(nHsN**`qb8Oq)>nrQmfUwsV^SG)h6WnJ>ZU=8W%~>G=@MT`^sZs? zPfgM)g=QBD*x1(XQ|XOmMYi!uEdMt_i@o<>lX~3)2A?R7>Wk)p3otXBdNOl=~repjSU^jQdqJSs6<3{YSEkyT1!z=o@p;^ z={EJ|k%Tnxequ*Ur;3+C&ZU~9p!sRHg%&bzV+DnZ*{Gb@i!OOOtQo$BR?-7+n?4>_ zG4afQEy12s-)#5ULH$}hF5(5GwkVRuUsfbIbo^@;XJ;BtA52q|qPxSv97Oa=(ty}; z?d<(06yfTVm=`7usC!T7+f#eo8fOX?$jx-d{rJ$#q3hg3h?J220>nIfXz}KYjhQ6hZOQncfKm(rA^h>02)mK)oWKx5W4P&y+KOP1al}}JaO){)Gtudz;MtKmJYPr(Kik@Nl{da_m z7bA=0hP6i4{P)F^4LtaOCF+T$!F6%)im(KZQ;*JadJ6u#Gb-=2`0HTjbo{xbfcgEE z-<%OKc-`Wt`@&PUdvc1pkH$`YC(UOMBXe8%>;^uLX32og_uPDas_``9CvRaI;vf5w zB-UVGr#)#}W_AkL$5Qk$Om<}JBLCFf}O zjTS*xGXu=EJN7k1Dr07-5>spI6OYUU`Z5~v@R2sat)NG~(;u3RXu2JeNH^!x)njuo0SK$r!ot49m-cvibNxEf- z0U1EkL6VN}Z1wYXCj=2WQUueTBopJ>hjcY;CPTJlbRk@#TVyz7*{J=x$neGL?CR`(8orZKNXFkx!928 zPOQJd{!s_{e~!5)`&b)3|4?_J&yuVd=YeSCx69&7<;L@k_s1uRL77+vdfg zD-+Pa6uLKv6(->jp!LPwegUNlm6S3Ns#45_js0?zzKwR*_ARFM+6^YWK5Ju+Sw({p zV`xJ5c(VGJH@9OIx(yB~9x)MpoJkXqDeilf6_Gzwq&%c%_to^PUAMr>o&$r)1{>9; za*;i{g=b0#ofW)~IeV{!GSg;LEnL28Ws04`G7(j2aki5wK^{503qF#hPf3hx>MMMx5Ju9^O zE~anX=T@qlQI^BX)Vj|V@6pZG#uA1_4+E@Pf%7+8%O4X8B{nR1DFj{@ete2}*6u3( zQO?Zdl^0Wdzutm0#gsMz7suJ;*Gz3O(mV@g>>fxpgvYeV6>NT($}+#YzhhvGCBjoI zq2BJXYeXXm4*IZhmIsSWPgV9bp=*07yaLj2Mg>kbhw!GFwyo%M1&v&fUk)#?33-|M zsJ*1C?acG|xPMF-*T5kDPRI*B9Jf^62lIrmJN}7V!7fj2&p^BDEk{4=4R`s->rT0n zEU{eG*Hm0_c7uAyu_hkN4JS@`C@i$owUCS)zOLtL&K!v!D|zB&Yi9ZEhtW13{9qrVJJG@?Xr_KXMutWbTe zje5%~Tw7rO!e_aQMdwIgA5vm5zEZ8aTa`;!aXf5+x=hv~O52Qg%C6;GxBB`~9PDIs zsQaeAMrLLG?Q7ihX*e%6sr|ADP`T*mNZ@rvUpLC%Y{3EZXOzT~5qCo57800K z&k+s&9Al+aj84%!K-!9e)$2nt=Vl#$)Q)HPzIH%GoD$`&a?7TvyM3>-NXIGkc)J0t^_$mY@wYrm z=cw!$$um3^tjWrtdqPECz9}aZq{51FgkZy-YE~Qqa_U%|8if)fqs=S+Q(N-&Srw_* zGWsW1mJ<_;l`>|29=n|9%ojCF_?j|eq%7BvB@mrl{KJd?*LWP;r#&ws@!R`EAq#$| z1&RZPn&`vOpfVMNm%sO0QVk_Ks}QXrzNT3xfS5B5;BrlqR#q($x1r@d<6$mFOieK; zSOWHhV&(eRirtukAak9=(==zOTd={Y0ahA_Bpw#l0Ru^bq7Z8rdS%I1ng=IcR6<=G zyIUd-v$9LBK!TnKbbyU{0y;NMq@AHV}ez^>wlQ zi4reOZTVKvZyq|8jBubt2~h$~7Zv=;Ujs{2um~%1uJiQUgBJ)-Y0+JZPS%MFn}3d- z%t+zPGdt}yBNl$C1$XT@OXFTi_rI6Vbv*0f2z~e4bbdNTH`0Q zTBnz|5Mqn3CVWIq} z!hpO7`-Ck*imyRVE%1?~0nuo&mZk=4m`W|xJWs+ux7c3wSX^G>Ch}Cz{tAq~fO*KdMl?GX)RJ z5<~>033Qxyzlv5EKZ)07H6po0Drh`IyL+Bo-DbPgH&{8Xw;XS__`W3H)|xO}o_&S3 zf(`MA;!j(4`YC6E!Oh+la+4dZ<*QvnuB}}Tg}E6`l;=iS1bXW3JtYp{lH}C68UL^^KaN-d_4Wnf;)TPfcs* za29)&dB0=z$CC`vl7^sfp3EN~uQYRBQ5--)mMSb{P8zBRJ}K6I9&HUXs(87>DfYTf}(p$;AQ> z9@6#MGCAGSh8Gif5jhSLMy==94W+9B-L}_1lPN1Pr_dT?)tFH4B`S~%o`fA-RMLZDjx?2DhpAVsuA}jg%`FE z*+a-6scGo+if>u^85k>02oXLq(J5>_if2)~SaNQLKVzQQEdS%&&^hzpv_chbxwu^S z_3q|-7_o%|uPZ-|T&5PzV#3QSYj#i7Ni_Mt5hjUwC=|1?Zh82vSd8FJ=w z$(ZvYB%z}bv*nclrJQd|aNF$Mf-g zK5zH?<8i;$-ns+4AH3G_SPG^+_E08 zpbOP>4d}woq2Iwis0b>}MIf9EpTz9*EZud|%zJENmLD4zeHR;6wb5q9nhNMU$TVB* zi>i!9_Uz9B9_F7>$4@G>S)rAIS%Uq)3H`g=%{;RPz3-F3(GupP#)E_C9b_(M=uim`HjLrwX;Xq|#srKv2092pk(dak5 z8L5;*kflm!|L(7Sh&NMJu+3_X$%_vd?g#AC^*k$Llt98ZSJsG3|S0^1&f znU4>P!C_O{lC8UPadw?%xq1PJ=xrSg%)wmdeatER39t7WyNc$}i<6~i)n2eQS5+g= zSh(%W(XE|N7>Sgw7@q88BvWh*ZW4Ij7ZSc3L`T!48HnlhaEEyEcU$%1Z-_&tn+kuT=!LCTh5!J3A*=`6d|aH?&+WS9Ci%oDWJ zqzyw*7EDku<6O~R5019c%0BdXc{Z$&)ihwOiw!rMtDZyEJRG@3`lrug5P&%{{1=9R zhHNn$X`?H%(j^lcr_s~^k$Z@a?vkW$s?)EPejryzAD~H-MwQr4v|goi;Lz%i%F9nT z3-ygWrHTdov7O+cbE~Hf*G?PR%3N!Hh*pzxIjQpu86O*OE+p~*{kPzPZ zBc`U{c=aY*l!bk{L!HMh*%H_@v6gkhU4{f=}qh$2$5#pZlgWg*OH(ei`h`8x77u9;|nKsOGrAqjOP*!|*<{Ps9`CkzmeOt&ZYwMT#p}wb*M$_!?)0Td=ONqRkf93x}9XdHh(07IoNcid*;h^ZU*1PwTGS45g*6?u;+B2 zjt-(6*y{j5n_pq!s7&Yxwe9m4#s$%aqioXON2;an?pJ`eDnqsE_bh*qNOj!-zT^(1 zW<4`I^>dTuymT%4&Nj5)uIgVc6f_f}SFD?{fb|Rg;a5BCjFN9~X+7NG#yZeF+%NNx zxB;?)#DMd!30L=>Fx9T^jgIUkdKk9i>CWH_!Ufj_<`%fVD%hC@3vz0 zD*wY)dPL*69jrO{t;+-H@$Y!4kAKs$?B^Qv{s9N#Yvt0y>2`VgGN*!zHQX+KPo_6T zoum3&-n4k{mxS{9S}bqoeL;_Ar%~3d4Y4iy+7maEGx8Q)6&$QTmvrEvY^L0ad==*@ z;B4jzy#cr8uaDQdUst(a?#c~^-zL?{^}a;Vga4_47HY?2I)w0=R@-G`pon%6|R`l<({`Gj%>gI(e?x4fYy6Q zqJ`=c$&nH1SLoyI4+@)W#;i@cgZq#{;TDi6i=G7bb**8F? z(N|&AGwPr6NF}#sk@FQ!LlK~@IPR*yMp(bkf@y|sJ|?er3flH{)E4$UD426A+_X$X z$HjLsLRYJz>Q#M+LOm$f@SYpSQ&w)C$tGN0+sc)ixZd}BUp(IGhg{;G1Vt$Kl z;e4VfGw=Q)u?M&2!gi4x&cXn%4(%tNMZE^@V8e(rtZMl0LV8MMM!ZjONdcVBB0?nX z=|Oq>(I^9_Ej(GljMl==Q6KOWUM)e~;N)YLf(zwz+#1NIm>Z||HzY1lr;+YvhwVvv$o2CFi+ki1#%`OR#$+10D;LYt9=5i{Ev8c2cX6wL%cl(Luh(tuR3 zJ=g5-VHO-Z3wDZCd!ajN!8i|tMwHIDcB1Z=)W6335eu!TYWaST1?s{c3FmT$>PD_| zjG=EV+SLqp^Fe{Zg^tp0Rby>?=T%0-+&V_^XS7P3aZtew+NU*pFyOVyChE7z;jn&a zKx%w+F51e9w}nCl56*Er3Wd3-)Pp5%x=EMAy#Z>kbK0UP{Jmqc?OZ-)KI5#3FQp|Q z+iI4n8IyE^Pjj#;DJ+B30^MDRL|TX>T^*QZ(8vGZNrtv0(5s1n1`bc>3FG^)sA;pj zjMgp%{siOWn6&vLr&yCc?aG(GoE^D7d*fu^BW5+GHsqEe+t4WN$H*{vOSo^H@ zGsri2>KQYg_TFbw&?8ZOOT(R8|0zTZFTEmky-PGQy#q%-i(_AUU1N0_VDjp_3DtfQ zf`fNj?pWVIyQtntJ#M9*w-M9(FcYf38pk8N>YY|RW*bhg2QRN96z!)&GtVL6$7UD~ z>L5rvTOIY>V4JF)f+!!>q)E~>8CoNyd&5~Kb(0jAQTgA@@WJ#jVbu{u#U-U@hweUz z0Iz;R+%L1ijcQ`*C=-HlPHJtR$&5crvX1T23JE&$N32xMt(7Ay`_GS#Oi7Avw);KOb@+0voIhyEnD05J`rSIL8xUKx4~)HyA%{IKCz%6?YLab z!tf)lnyDx`}EhuhSc;KeKy2gu!*!y--csoX3C^-5$QC65o9Mv=hsWkg>4mJH@ zEsnK5z+v_8K6*wc{1~1R7~VciM?blZN(LB2_1PGh9Ip3sf;Ib_`_b%<8mAwT zKEJyo!B>YuAD22j+b3M-{7L|`1wG6#5@VYYoNnGfooBp#Nm|cp5gyF;cvr)1Nn3Q?Bs)>P1iSbag4Tbm zc8Mu%w5jx_UeBVhvvxxYdxGf-{p8YiPE@*jGTcX)4a&08hSA9rBw8|W^pg_%eal;(dqYyaqya8jN5YOzz9Ua;>) zz*FMWE36k@b^f}mITN++&?n(PidB0F_L$@q_M+wKfqPMx&rg}(V3q~u;=OCvvw>3l1Wp6 z3!to-+d0!ugtevnBSR9{F1^)~TQ?|qKQ{>(@O0E(mMk`gRce(&Z67VIih;o}XO1W> z#~CEyWZAA;HR$#LG=C|xHF8WxXI*vX@T%$H($MGbCIa-2SVaD2Z`e%>Ony{SU(QPO zXd3mGMExtw@%j*Or6T-4M?-qq^$R9CtxLcPDxTo08 zOcx|Rj!hf+n?De_<+614vV%IELv2U@P#WyFV(FBxHJI2CEOPlB!?Vdw?5iC{fV)ej zzy%b0?16l{9?LegQZM|Rr!@T~!6~_F0(EzJ(CIzqrqhwVn#FceJMxo3>F#_0$O77d zxti^LBee5a{^$#2^tjB_uJz4ZqVVDk>ZDKfWPIGrbN>FWN`>h-@+g#O2zP=R$=BR> zHPt#NUzCPV;?=l!#B@A_-BsnxP!&FTdzWX1(zubMJ6Vp@Jko8RmTHdT%vZYh=zw`WF-?Xn6P4uNhJ| z_4O>H&E-Vjl90m#iR?$G7C$*Y1yELdjcr(fRGVw31^~jb0nw+SE5++9VfXNDN{*kPDhPxYL;I~@ZU5mtkT3c{U&D93W zgE`+Z6EA#_h^Y%zh#d{^R{j12hHotc#QhAoY}y5}r0vb}28Wirln0X=yt3Yz@w?bb zu_taObeqy`a9H!+^5OaYPC2*ai%jfC7$S6iu~Pb}(_3~&dG<#8cc-@sUSB0!)S0f0 zAO(hMc!U~V#{-ivOv4Az^r}@blY?Q)n>8-KK@9u2xWZ5eP1pUdP~BX%)2Wt{w9sI{ z%Oze^df96u?MH=0c0VPXDIMl-rT=0k0PX6!f3-a$2FOpa+2`ijRha9$wgn0HoJZlS zLVgq)6Z$tqZyHkxZfHo5rBsNQE%G1yYyVwRBs^^;WtY zM)Y+*GNd;YfH^t%`J3z9l&ejRZXZ8(FZw4%{zzO;%e$RJ@ z3C7u?&hT!*R~ZLkVW{Z%8%D0Hr4I|rd#~O?9Rib$(f^`qqTLtWVh91aqbhl!$DPWV zzw;2;}eb0%BJ{ z_#M#%DVL-UI}Tb+8gF6ZJjWm z;A)}cc4g9rH-C+kk2POi1MAP)FaJkPA5L}gkh}*n=4*3CN9tJ9|7>8`G#&f$>K+t^P67_IwBthQj1$s1+}V#3 z^06K)*JMs7pZ^%CC26&Dh={s1f5y_n>@{L4*Ez~`PbZTaS$FQHmF#l`FuM>&=^!H+ z3I(%hNwe40n$a{pnzd%^UuNHVVL^fEvH)qdh2VTcbPpMtgrS$N7p>+= z_Vt!V_oUB||5EZ;E9AhLgg%)e+!ycJtUF?#c&T_&4r9F%y*__U-=vTcm!dyivU+AU z9lULxB1je1B9ydMP;#w{$*ILPs!2p1gLZ!Qd!`ouiPB=XiGEzBax@=`BxBvQ?0ESv zvaCvDIL58IXk>3bE>mYDzB}1aMv~Xs8CGy%C1D$(>{h70=wx`&cnRh1Y#w?B{notiJaYHUy_SKM3{LB7SBeqHOGo_X%JbjKmi0I)vZ~y6GXhXTW@jz zlJe%Ov(dI&>`LWYxj{sVPL_>h0;*1NG@!?n=9x0{XpNsmMFThQ1@Y$DA6({C>vfv% zIr-E#RhvnxUvSeQVL-#ld0gaUF-u(xKXKqdg?|mZ;R&hz6y9f}GhaBK810eoYc|&P z5%g}kkFiM3IUvbPpqOYL?NcjRjQtG)+58P-OKX{vUHre$_7fR26)pD|h`)^qS~^^t z5i(Rf{K*s9SQbCtia)Y(%W# zw%@Z-a;4c@SwO>^zNLJ{n9Q*b!zvXL6uat z1=SQwYk9jy3Xx^*UA+RmeeR*z2q=0EZ5y3z7@sTc1}->)!SljkI0E@U0lKS|pwdoJ znlu6#{@(Xkrb;%1KHJALDvr-mrp^vcLg(|tLJIYeuGR6e8|gosA2}up!KrRpf5X;1 zWL6U8GIw&Rb^ev9*#}>tT;Vo`rWAxjcQOHUt?KzhmGa3)OJz=S5>fdgAYX*!i$OHa0AQ2@6l*U5!+CiV&`STu zXj_MR#@=`SCHC}{c$nl!Y35mGApbG-T+-=3 zVs(GSz`FzAAFiE96fE!+x5w?sV`|s4SJ((BL;vYFxlxtXoQQ~;V;Ww2R~6$l6%)QlIog!` zrJmgRN33e4-a1FCjFJZcOxkViZ}gCUCAAFMO~2Erd?`e&rB(ZUr!y4%UV~wv^1qu! zoA@@qP%5gSL?jJ$#3JTw;nnIIQ4IGtz%|j_WsskA=*he=NS9&WsqrR>MKFo=ub=#$3-9EFM?c;U|?-S1tVQ+NrF>|fV71DuUuuhMU8S-zFm0ND2C%fcTFLnLPO|o25x}f*3{M)#~ zlYsVGE*lfSE&L&wW}rIlywOES6Hxxku6KK~@LM^N7*ZhB za$6jU1q)eCDjL-miRf=-L{ed|mI$zEI?Ziyl&a_^yu8R&wS;gX4KuIg>4}IbY@{@R z<$m?dr+r`6;e~=|p&+@0v{Y!snU<3Dp6EC^ci{4rh4C5D2ydwDgEDPbH2Z+=w47j&q;+=YHAID!wiPy(fO`<7!h}+j zQsV8j!)BJP>2KJg^=%~9`8FPI@n)1bPuo_QbCcI%UfL)X+M93|3VRm@KVD5KJd0@1 z&(p9(PIhhQ0XL>pfzwh$cNhB2C5GL7bwc#$eOPzVKOuJvIE0++&XPE`5-A${S@a63 zN1qc{_QY>y$V@cLyi7ho^ufv+Tv8LnD;XoRzAN~aKgnWbZEsTzj|;v@aK)pir37c> zVj_Yzv@T*sDs4k+j@xTyEyi_8h7J&Wk73~jHrSy{c?n5>#6)JPqHk2^r7WEqdS(i| zBy*)3Axjd|@>1{hvHkq&ZQc2(X^Yr^>HENi(a+8lS&}&N(y!1xvW7Dc%JA!>DDgJ@ zp03Q@l4e=b&YJDVuK!(-`{VK^^L?1uS?7+-i{t54cNdE8Pj-bB_WEGW#ofBZKkk`6 z->~P4edgfpMH2^vj5Beq2&QiK%-S8}Ne{&5_F+Y82An23ee4Q%nFpYrnL=8plB)Vj zbv$+f>CYHGc)Ao<%wo{Y{gyjgCRO38t*)qOQv8!%X2J2&LfWqR!J?us!J4(*0k<;nA=x;y+J$iuCh8d{lMhu3+8KKa;M9I8B;l**6~Uv|nG|)g{)QcV{vl z<*e<4yv0%bupWCPQJtp7l{{N_sS19;99+ug*lMN4W8#wStgJ zw0#5K%A2G=V*kIi{GYf;{C~RFiFJ+qfHf|!s0kdT1*e%u zDDPF$L-+G~^ng7_{W@Mb{{-$z$$Ld8UibRv!l~V32a^ZPBSGVpuI(yKBEF+H%i(Z3ix5p=i7snAW-b}67k z(@2)Q!`Wu>iOdcxOkg{4G^sxa-L{-_Su9%~4VGN+3UTU~NOH@oy>a+vnUXcp&#H+@ z1b9sYUO3G5l^c$bpEYONXE%D)Emo>Hkwv|4bI3{yv`bRUif#f^rBpq`!KaEm@8o{- zve*plf>!P`WrUQICsf#glvN8apKwkMw(Aa!*NgY!IEo+7W$o_ntLh@$5ZU>>9d-n+ z60(8#P}}+yvAR*cq-&6t=9VSh*AfL>;9NEdkSjxG_vBeeW)A^5A!`JyvxLU$Q+i!Z zuhnP5^n7Cd>Lwtvned(TgPKVY_KO7>5qWDa@Kw5Z><*+ziS9jrq;zR`ye<(l-Eo|J7+9NsdRi?1-VNYvwGsV%Dao%g! zr~WeaLerKsc%l7TD%C>wwTFGL<#>ja%yyq>8iaTy&bRCwXiPTuzrLWCj22J;ggA1%Dq$J!}1?NZ{+3!ntPLLOANK?`Z9ja#&#(U#UuGHy)xJI7SDw5j~06Uv|35rr^a{GGqN0d z2DtGQnDUq=^*`IHjt(XKNXE&y*V=$V2m7N|;>x+-=+x~SZ(pt { + return http.request>>('get', '/cabinet/mainboards', { + params + }); +}; + +/** + * 添加机柜主板 + * @param data 主板信息 + */ +export const addMainboard = (data: AddCabinetMainboardCommand) => { + return http.request>('post', '/cabinet/mainboards', { + data + }); +}; + +/** + * 更新机柜主板信息 + * @param id 主板ID + * @param data 更新数据 + */ +export const updateMainboard = (id: number, data: UpdateCabinetMainboardCommand) => { + return http.request>('put', `/cabinet/mainboards/${id}`, { + data + }); +}; + +/** + * 删除机柜主板 + * @param ids 主板ID(多个用逗号分隔) + */ +export const deleteMainboard = (ids: string) => { + return http.request>('delete', `/cabinet/mainboards/${ids}`); +}; \ No newline at end of file diff --git a/src/utils/cabinetImgMap.ts b/src/utils/cabinetImgMap.ts index b9dc8ad..15a34a1 100644 --- a/src/utils/cabinetImgMap.ts +++ b/src/utils/cabinetImgMap.ts @@ -28,15 +28,11 @@ export const CabinetImgMap = { name: "60口机柜", }, 8: { - img: "cabinet_120_6X20.jpg", - name: "120口机柜6X20", + img: "cabinet_120.jpg", + name: "120口机柜", }, 9: { img: "cabinet_4.jpg", name: "4口机柜", }, - 10: { - img: "cabinet_120_4X30.jpg", - name: "120口机柜4X30", - }, } \ No newline at end of file diff --git a/src/views/cabinet/smart-cabinet-card/detail.vue b/src/views/cabinet/smart-cabinet-card/detail.vue index 75c8a31..f0f54fc 100644 --- a/src/views/cabinet/smart-cabinet-card/detail.vue +++ b/src/views/cabinet/smart-cabinet-card/detail.vue @@ -17,6 +17,7 @@ import AddFill from "@iconify-icons/ri/add-circle-line"; import Search from "@iconify-icons/ep/search"; import Refresh from "@iconify-icons/ep/refresh"; import { getGoodsInfo } from "@/api/shop/goods"; +import { CabinetMainboardDTO, deleteMainboard, getMainboardList, updateMainboard } from "@/api/cabinet/mainboards"; defineOptions({ name: "SmartCabinetDetail" @@ -33,6 +34,13 @@ const cabinetInfo = ref({ }); const loading = ref(false); const activeTab = ref('cells'); +const mainboardConfigVisible = ref(false); +const mainboardList = ref([]); +const mainboardPagination = ref({ + pageSize: 5, + currentPage: 1, + total: 0 +}); const cabinetId = ref(0); const gatewayConfigVisible = ref(false); const shopConfigVisible = ref(false); @@ -146,10 +154,73 @@ function handleCellPageChange(val: number) { fetchCellList(); } +async function fetchMainboardList() { + try { + loading.value = true; + const { data } = await getMainboardList({ + cabinetId: cabinetId.value, + pageSize: mainboardPagination.value.pageSize, + pageNum: mainboardPagination.value.currentPage + }); + mainboardList.value = data.rows; + mainboardPagination.value.total = data.total; + } finally { + loading.value = false; + } +} + +function handleMainboardSizeChange(val: number) { + mainboardPagination.value.pageSize = val; + fetchMainboardList(); +} + +function handleMainboardPageChange(val: number) { + mainboardPagination.value.currentPage = val; + fetchMainboardList(); +} + +async function handleEditMainboard(row: CabinetMainboardDTO) { + try { + const { value } = await ElMessageBox.prompt( + '请输入锁控板序号', + '编辑主板', + { + inputPattern: /^\d+$/, + inputValue: row.lockControlNo.toString(), + inputErrorMessage: '请输入有效的数字' + } + ); + await updateMainboard(row.mainboardId!, { + mainboardId: row.mainboardId, + lockControlNo: Number(value) + }); + ElMessage.success('主板更新成功'); + fetchMainboardList(); + } catch (error) { + console.error('操作取消或失败', error); + } +} + +async function handleDeleteMainboard(row: CabinetMainboardDTO) { + try { + await ElMessageBox.confirm( + '确认要删除该主板吗?', + '警告', + { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' } + ); + await deleteMainboard(row.mainboardId!.toString()); + ElMessage.success('主板删除成功'); + fetchMainboardList(); + } catch (error) { + console.error('操作取消或失败', error); + } +} + onMounted(() => { cabinetId.value = Number(route.query.id); fetchCabinetDetail(); fetchCellList(); + fetchMainboardList(); }); @@ -200,6 +271,7 @@ onMounted(() => { + @@ -208,6 +280,9 @@ onMounted(() => { {{ cabinetInfo.mainCabinetName || '-' }} {{ cabinetInfo.mqttServerId || '-' }} {{ cabinetInfo.operator || '-' }} + + 配置主板 +
@@ -266,6 +341,27 @@ onMounted(() => { :total="cellPagination.total" @size-change="handleCellSizeChange" @current-change="handleCellPageChange" class="pagination" />
+ +
+ + + + + + + + +