~k4WRH}$GzTEOA#0cS|K?r`TQ%8Om{}E<}Tb!30U5}4>u3Y#HRy*wv(fo zPWYSm6seH3q=Dmle^a8GJEx?j!Ghm1X@0W5^C{UXZTn@hI-5MT1R{{A73J-7l&4I{ zR>ZtPLog2pf{_6*W~=N^jo!R(zsK6+mPTe?`hlu@etMC=HoLB>aAjHox6FTez;Wj_ zf!N=TZT91IQt$ao9gIN*V)!dph6KQ`$$^mBWC;=|NLok_kC}|Xle$I=GMx zg^=PDoR*e`&6hnbz@j2d^qCX^=Px-Wnl?e!U@^&snNm;4g#QA*d|qRKEdaF0)9yGK z_zq{uC<%YrHX5e;VTzNJt4rsW`S#!=Kx~)>*^4+1{QJ0`J|;Y!Huc7I^k4;P8lVvy zkz7Muak>CmpYmZA9Zm(mZtiTRbN<)+TJL?j7l(snKKqSwh^f+lU0n)DEHiWoWiSou zlo*F|*Kwv3Ha8@st}m#EPbD(AQt-5JHB%CJ7)Kq$1x>b4VmRNWl0n{3ljUi~93+jd zsevL&VR)09^?wGMqTd^;k!TP;Q{zXBV`G4GAdE9-@)4ZF@CWn%apqI!uY!zE_t}B; zJ(4POa*toAaZ~v7X~*4e#qMaCH-B7ov0jB&gAL(29@9NTgflIZ9F55mW~*ty&M}xj z>^wCBb5lu$vFQ (!Ev{g!DOBYR&Ug8DQTySxD hjZa?rp%Szz24M#Ef;2QSHF!h^g!Ny zMtO_xK6fln2T)UJs&$ 0L^RjFM<%3| z-|njXILEEzz2^hxQXm%^&}X_7;Y&~m-ymUO?4%TDviSe)Nu^Aldwg(25P&a}fKLbD z&Cmw n1BD~&!WXgd50&*OjZ04W9WJ|&6sXRDdNxRN8de86yOidV5*PHh& z0ZIEHl9EA* WvB0z$^j@q%O-dim(jGWkP%! zSbThRBfu|d3fI=BmvkAYT5;7_Huo68a4w$(Q!a-TDVfuHPy#fN#^((vv@uI5FrxFc ze1HD$E#v%$3%IKe%OnVfQY2_hm-6xxI?3c0G8Go#5R=_bV;ijWR072s|JOE_HIRr9 zj!&jdKCy#xH@=TUSeS-SrA)seD#*r!)yWZam3Cza5b&Q1e6pw6IxN8G(+n@K$$d_c z<| Do1Z(Nv0#}NH2~%cv3X1XFedSzg=HHU=emr#T`91D# zA+}bl>)u$_7VnD>yz+WvQP1j`p^4l8gNBIFAM@n2c&Tp{W#Kv2DrJ? zv_!+DeCK3cKTFaLAE78HM60GF4p6EeiD U}0zhVtZa9qp3mSL64~mkF)xPjQ<-OE*m*)V;dlR_cn4S|{wgYTdSuw~VH)-5zMa zkB7IXBcNoZ-ZP1>3pc6L8s7yQSF5>x-az614r4HFM3=k$mk|J7(gX-T3aFoagy&{r zn*1pQ#n%fXtsOKGG<&lT@G<~Qm@yX+9e_a-M%WHDgz4azAdk&twiWP!>ZRT_+!FkV zYO7bhBw+82=kybxykWSSHYOtVhp_ZpUJV? WEP(cw+2NngCW{B$PQ(e~_1SM+(m#K4{`sYZF7I5tBM z&<9iBD8-R6D7|k~w$)VXAspdghD6A)beb`cYW_3`P=FlZkKzS{hLA5Yoxy#x!r8pH z-h@ZKJXP{^0yU4WLMU$ErQZi}zfgr69S*fv$k&w24W4dA2CaL1`9l fpOAdV)030Wi&c-zdhZ2Aj!uDa`3GAB6?h1Xw{nl5>(p2!xUl#g59omO2Cp zOumE!pd31qA~+B&sKgQIx` 02z$MQvFfCooN0pf_yHy9R^iiG~PJyr;Z 9VNWK3&~hCsCKUXy0Kygt0$USXLi;vtU7DBCJ{p^s$Ju+h1&4Hvy&sE>QWBKb z`X`76@5{l(uR1p76s>slf>!*wB~05rQdchQk$k}|hL}i&@ia>&8=L~rik}hC1qb9N z&Lm&svMGx6adx%%6s2f$vA|l7+L?gZ+qjdPs;-eJtWKV1Y&K}TZ1n7#kS(+Y>n01) zd?+aqx&PL(v}>V^M;?{zH8gHGN%Yn_9W5d(mCXzleu-0Y*3vKT33HmmkK0OSmF-zj z(bk!{0^@xfR#9n?QTCc@EPGlpR}VcmLR8vrJq-=TIlf*5s&7-jYVY@$N$x5^cJ<$Z z4zm<6Q|TNEDp@etw!=DPZ~MbYT k*$*3^N-f7N%b|h8JU0Z=96f=`apO#h- IqAL>UNHag zXc7YAAY%ct`eMRhbR>BvgUyh{axcH+HW^ zyQb-;S;;WZio$sh{S(L~Mkw>_-uq0DTsJ;6EZwgG3_esJ?N!?9l3$g7NIdg}dE!aE zOucEE<#xe+fC&C0ehQ$vvlp(k%_-m2)*EyGNOgl2ftGsX+`@1xgk%ZTL*LbaQv~|@ z==WwW_kKy7F|AmU6-1ETWJLqYx~)wY-Ycyt8NMZ0`tI#q4y s;dmjzX$MVzqTLP~ gIq-6IyrGS--6m(!^sWc2!2?TV4NQFgE_^(zM7$q`X znfu$)_vdbP!(mNnT4ulDM4=3UFc>3PsIAw^kxYZ%T_YdIh1hy<4K7#yIbi1|mO`Wa z>^3jMYssBlCP%jP4dAeu*-PHgEzB5#CDYL?Dr1%^l@;go;pL0Lgtg`#8Ck;U`D7&w zUf&x8spP4O(|po?-a 3nJqr z82ELA(uOe4;APMP($EmnycKq5_pS=|uQHnPL5KE2;$Hy7HWCz3E{J9P9K4!OM#EP{ z{Lz)V4`;MGinLy@2-w!3^>n5pwu^iI+ac`)M8u%DY95RG0+S1>SQ^WQan)|s=J;h= z!9g#33FjqfPdREX6c%Z# *SHN zW@flB#(QZqCl|D6l?$iVJ4cj^iXCX~bT95VaG3LMk-K{|OJUFUvv }5KxR4ZOS_J~uwFMV$ctSsU&g$DqA^2L1;+$Sa0Kwl6Jv3s&XdWv-Z zx48HRCWXaY!QqFEc*~VB*h2UMxi=-*!?%{7?Th*{fgWA;s1~w;wv?DlL!2n<+WX2p z6LUPZouk<|J3eXJ8lKd8I#-(FOQ?8%46*56=G(A8L4i*SEl)=}qNY|)GY={S+-+$; zy7z8n%FES;U!!Gh&L|tUUC+- JpsS~M)iFJ!zdu+jy*^#%NN1~0 zk;j4I6avou^6m8eGyMFbxK9G>yE%Oqlm=GG1^#8Z{7d6{oVOn%X0oMasQCniMM2BA zu%+b&IAjK2W_b<2sX_)vz@Thb>^DlEti;SU<_j0SFU3b$ew(Izj$rWMc928U_R12q z^HpkjwNg8VW-(B2K_EoHkVv7*8w$*zKZHrKV)M!^xAhQ?Txw)1l9;(TC^DESD2TpR zB>#ajd*+--y?ZG To4bd6IR}jrugBLG9QM9aEJFRALZW z{Qj$**(cmVH8K39r*0ISaiZ0~xD6K NtlN1|va@YUC9T<^UbFSz5<`Z*Qs_ z3`~Bv_9E}#gI8T)ZkbJ?VG3jZtM3kFy1g_%R&;IMmF5d3as34vC6aM*tJ@S>_s&V{ zvH9Ar FT@Wn{O)X>My?5%#6yhzAT90a4q_y zKM!|q@L&;$Lu6pfa`$GmaHbRCoq5&-ClCR~k{c*e>cIdPQTYWaLz+4MzL^g)GERH^ zvW1(-t;9<(YUpv^0^$P1x%;Hs($j0?eU=EUJ)a+}vxdgpBsRz%Afl01NT10{-)fUF zkk}G9r`-{f5Pu)qTWnIupQ140)c8C}Ub@d==kl(-(H3fU=B}~N6ygG`Fi}$_F+;Uo zNjhR6yMSJsFaIvDQ0ukmqNjl;JI7SNnmd(tguH+2CCnSQUSq3rUHIM Y e ca_XYhC`ln=j!^w$g*)= zJFQd|w-#yWQ&e?$!LUbae_2mdcBg3kp%-Jio%E=B$876mAzu=HNnL9ja%;EkPNgb~ zu`9VpH?*WR%2aOyi%Xim#x@^<6#U3-Sa?>^m%=~5$BmLnaMUloACz6w+ Fw>G|HRm#c{W-=56i+1DBmPf#6CD zwwug(Kw1<9_4N#xG^(BfMW2-dnh&=U6SB$wKft6P0+VF6b*1f(YCRveHu{&1=CD+n zYs>soRo;ch21i_S?sVT$7vdg4l<+GI+jMze)hb*Ls=MsU;;~UL8@-I;!t BW8xIqBEZ|u~(MM+{~nv(ZzRd0Ph&?uvj(_-dkmhm;?)SFc* zfG(=t0 zO(f>{u0@GpcpZ_>|P_Ri*s_HZJe;mUX5(Wk=u+* y39Dlrfuw5=gD`V>*fj1zR0@yB@&k# z6rT4spWiuF))G2urjmTL`Rv=0z6z~%uIoK|#VQI;-|T9*msz~Ju5D%M*3nIY1x~}3 zn{M>I?H(#=`J(%#$fP28JV-yc|AMO4_$NQty;p_?DqjmFug_i6>KC`hL87I$YEerS ze$(vUJL4rKEwcML7eY5U_{ZHUw|I3lXC%I77JGC8iHGmYr|b4!Y8dExGfR?sBRz~j9s)LJ4)aX6!J}wk11er*%U5p17p33 zQuu|`QrxX8QvY1>YXZM)ewBddJXwWHa%Bj3|Blgi&y@Y;g(2mz6mGA0^Bsfhx1TS$ z9Ho_&oD$z+VPLXH;`6|DdT(<}e`tH~z4dSAiyGk)MPi=2O|-_l<#UX8+F#<2>MQBK z`p`MAY~|O~yB|AO=OucY=NzaBFRC<=H8gk1D?MZQ$+dlvP`Q$WprCE$itZDeoGyLg z<^6QFYlWxa%X$8XN2?DUE!1}H^>_5{F(15je@W4b(X114`RUPl>$ynwv-|sg@lb)P zT8GY@tiXEAx$0Ak+3dP9=gPu4=AZN JN)PXy765}#O zC7QP5y=7Owcsy;4uX*vl$E{@4%Vp$bYx0Wbvz=jG&QW)@53C8Wj4ZplY<`v2cBkBu zhr>g(60v2cJa#Oru;|EhP!8*8Il3vVXq8BZ?!m_it^Y3B< a*(yd@BtPN3jwXtLvC&mTS=7h4w~#Ey_OSn0F|2ACK0v7nLSr6=Tou+B-<3OL~>b z1x+K^ e@tukckMQp(!bCctN1E<=e~`iiHfi4Dx?}$C|2Cud&kZ?`1xTMD YKSleq&0ZCZg3*#GMlQy9Su$vC7BLrLgZlz zAs`eSGr|nWbS~_U*IoYJGla3gQg=?iW#D^>Za902l0& rqu2WszT4f0O1#KMccgcR<>N5%Rp|=fo2V-hIx@UM>So~ryL$_w5=(T zTjL)6xpBqWR{zd%nVO8K2{iw)YsbmZ_)s_>=QO2S5H0z@OL=gF(o;4il-n-!JRtTt z^UBo*XDol{$&<#!kF8}v92jQ;<)O`X`x`B^qLt<=T;oFwduQK^E-LwX RDH3lyS2_CgfQ##l4hMtR=*D}|+HXPo k{VuE^K$wQR@ zoU *4lBaKU=pa9;xbc z*DyO~TqRI>XHT({<)+?-?$0mZo{AWYJnIr&RMuVk@qMdzX0m^4ePH>ZWT<3D@p}o& zKX>Q#7w(?-`Galz$rqlR_6%jpeOVQDvdh===Q)MVRaK)-A7+nk99wJV>2lY6ZE={( zKv7R|RjyV_ThmvcGoFvihO uEe2QDyhhrU^ z5-s2Ey#A}^!3m_ecvFJFr&D3W&PRJaSA_g7&3}Cx+(!!MA2&2t@!X-RlsdZZ)H-L^ zaeZn@Y+_5@y-Q!~?-}|xZaY>Lee~*!!7)S6eW4%CCeX?8`{l(Q9@~vqU3nFfS$5*n z{IU%h;V QlqU5^LhOT#`l&yi9_QO@}uSz?d z^0HmBU0okz7uFYeY^_*wr^o%K`I4y2->P1E?R75m*vak}7zyZc8SMhZ9i?b_xLURy zzuLRD%jxURGcu`rjtyH7=%*;Tr1n9@&bu#P#13(SZ4;I1GT%KWC3M64OY4!Ia?+Ch z8eURLH`0E3AH6j86?InyNIgn&=(IU8wVzY3dGAQvQ^VEu^rtgG-W8GZ; )hGMBv;)H0+=RT%}5LXc}s8FoVVLAf->4l3LXgMKn}5rSX`GYp}J& zt$1~k!om4l%7^32NdWIEJtHrIQXJ+>Gmo a9u}}ezRf;|(Si~8vOxR&9`4cdRf*> )R%~ ztNn7x@? _EBExI$>4y;dJxOT|+<#Bhd@fW*gRU}ekL*HGv zbTc?Sx75S@^}ppC$3r|ft{*$N|ANuWb)_C{yc@M%_g}Uhis)_*S<|X2?%W=7>#Obn zzv_8QF|)BJ=aeg7biIES-LbV?sQG4XnX~Sxjcb}xJ=T4?8MRY%|NL>;Q|~6wrY%_) zYb93aj!R~bw+d8-?l4hq{xHA&f|#YJ)>w<`zjp>UMt^o#UMRZu)=*oQz1!HDV^u*4 zVdh=Qp>{(P=wsBg_K#+HgO^03H+ab!?z`2KhqL#s0+~|ur>M%I_Ld YQ7wBwv D<&zQg29?<3ri zOa|#3DMbQQ3=TL&GC35lr2)M6jl9uwN@~SaVe0FAKedY_f&zzxi(X;I&+0#$=5A+j z9>e*Vw>g3#;Dz|Y$!kDlvjmu-py)vqV@Lb>#j{_}g_?>psM4{-X^x;C!#adBTQ5xv z*dCYFVN`Hr{07tB(%_Wxhaj@Tg1GDu@-a1aAvO}yOfR?v_aiUM>PzlSpq#)(Zf$jU zo> 04hwv<`E65&bdd1splsz|EAtC0DhJDNYI z?hh{;wrrwR#fPje?;jK^c32+QQE5_}9e*u3FF2~z^wR!Q`Gv*pHSN{?1+jgBdv* z LxU$M2eY?XFYd0Xt)SDhZ_RBm0o1BaF{8jR9XfdQ4(gKU?r_ zOlg7i9KYrd;lLCW!Q)5~vzpvD@CUZSbiq)SCO~J!FrhAJp)_x>vrq5q-Uo6V(jW(d z5!DFv%OYI%;;pUtX@;0a0(eIQ5`)HxD6-zvT^uG K>S-qz#_ice0>--GSiZ7tRnKD|p-GU9{5V z`6#FIv`Y+sY#r4wAg=P2c;D~t_8m)|b$vR@_KcN%#>>__6vhAhV|%D>`}u{o*?T^^ zI6gQrsNsBXUtddU{mZq3Bes-laL>~Di(7}KU#HUXy@TE_hSbWNjSE*S(K)|w-Kq7N z?RCQrl8z5t&A)1{?s<{K>nij9;itI=26c~pD3I@}5K25ZuTtOMttw9b!rD)Azh&=y z`n2m)#~3I1+*-r@tP83uM%}#|<~g?%ym0O@j~etm)O2oqqv*|b8LuquQpL<1a}%=- zEp->ZC`f$tQ@Y;`=Rw(9D@&K`HfmOs9Jp$D^H2p` 9VHM;XgB<*vOKXW>N+Fn5866F4)0>(wL}oCTj37VJ9Q)xak5=&&f#yD(jw zV89qIFnluavyk3r H~n(* zO0RSD(53ij-HNd_RW9-YBadnq`WL$%O)YrYSol+L
s*5#*6jJHWW0OqSx9O59pjRHH+sxk0#{!-uVvr3!>wh{_F#HfWIZUdDG7^l zWjoq#AP0l7J7vb}N4i=c%<&GtgJeb&G)mq)7NiNOA@Xhl5wK#>83d9r=I}|q6_B&B z3wbJWspC!efraiab-l;@7W#jPx+QB+krloFSx3t*jqKeOi(ed$W1H|^G*oOzvR1E- z3&NjX!>cEko-R!x{TUu|Zw6*A0Y0NF5g=(V4!01K&kq0DR65pR(!z)o3)7gg;2+4u z-qrvnk%kL&Eh(30`}OTNDN=RMcxx^0H{DiVew#d>5JN~^kbJ`gmF=j?cBm hBefijkVU>-5oBGT_Jt0VYd-)+Q OBO{dJxNV9ZrPr?%;zy`n7=RehK_u3$DvC{8#>nM8Vr}U3~dj7aO~CB zj)4+~{QR9~XUpoRn72CYupiA@cdX)*oW;WU+?=CJ*L;4p-tx;ezf~piu2JvG+8pP} z-mWU%v1jGAb6FuG?wuYPce@-%J(N p9U#_ z7d#(0xJ}(23J@IRYkl L>gYXqW$_GK)tub~+8 zs|NSh0}cujC?lHjv#$xcfJKSP PlM!`DZ9SVl8 z+oJdxBV(R*hJHpi_*UP~Sr3e)4Jwjt6~(gn=)BeBWi1JqauPj;E*mr%n|X5Ga^ULM zRxJ0Irs~S}+JRT~Jue0ZACzaUxZue~B+DUK*M2c*zkT7Z+U(lBwJzQoM@WzET}i8y zTq+2==gj4|o6>ZxGfflVt|a3oSbJ(KZ9Wc;IE^=UME2h`cPzVdxl!Qgk+-Gepuvwa zJNgdVlqJ<%Ke;^b(%$+i)!*6&?un&1rF@djbzU^Qzjp$i-NUSPJ5Z<$rbj)kRXHZV ztt}LIk-dJMb4g)tPsfttW3PHn+&tEPcFbe~g;k8kq@NRMtyQs9?w5GEaeY46#0K(D zm3P(MvHfk$#mbI!rIgG&@8K4jH<;&vorZD*mJ^w2IDz!;Hg&rDrzVO}Y4_=#lmjr9h+a?|7ja{4+ zTi`a8R`W*PyW`M6&Q4}2i$bF^gvk#h!5>2}2~;X1a>Ng5hQSem_-8Yyu?gVbf_Szw z!IVz1vPQ<4w|Vc>r6{o!m)2D8HAuEq_F}@UxIlU{1FJ*~HPV&p8%(MESb@^K+3)&A ze_s36r@k;*%d+(SN%gABJlp16i-p3 x_K<#YO$z3cH>XKYYXhgl{XIdmh?oc9y|2>fW4Sj zy!`WarPlMJjSuAZ%$`8oo>b&I_MA$MZJhV;__FRduAZ9fPD+GE+?PMU)7jl|+&FK8 z!$vdzHYKN$MRBeseUce1d6m~5l_lP~UeelpxsczfWZ+Tdh@R5PtG_6>9%b0(y^4x? z17yem-*%=rTeEY&Qs|Y(2`$}2FE^Qq8-jO)gIiaX@0lw(+XH3#H0GJEh+C_b{ Op?eHLm$aX5xig^=nd(+4P)FV<1Lx@A5rsQ+kx5!vcnV{Idd|M!yOHtQh5c%ylZ_ z a})NW=F?F;;MO2u&|%b0l!^)~?yb07b`uMT<>&ixgRKFz~wMf~34%*R-M5I!)9n z0y}mX>0b_#cz!sFxDzWl%}S`RCcg`WFZHyOe!Hg4B*!}qlag)2LY2#(N?y;&-|9d1 zyr@_tXYg3JhfDkmP5F_~O}m^LOzA6Dq{9&hwXn_PU5zYUQl}&RL%e63(#4x{3EA$n zYT2%Qqo~k&|Hm&^KUTUh|E0osdUO1R)NGmjD+gZH>}Zwg-L _U n5 z1VMOV=$RG#zQi9}1yTh2w5@M&hzK2B)8%Pop3ruNc4~FC(u;dFIjMgXGWz^w-^kf2 zL%e$aFUK#hKZOD`k7}QZt7$lK$eu7m{$lysF!N+o=Wrp#PzK08H9X-d`_ zA!(%p9JQNEPhZluqSpMDrl;+dTK$~zTiTS6%VOg+^4lyDG@v#K0tCx1O-PLmt`t)+ z`GwEUO~1Ie*v>9ieO>giEV^J>$LZNBha8g2qi5GfR4#ROe?EJy!>0L>*`bJ-5?A4~ zIPjnW139i}1u{7g4))ve-rLXVFK(IzH;1L2IMSmnYrOMk$;t;EHV1oC4c}!tIk&98 zERpgo!ua(1^tPs<{iB89T7~k;oKt?~cgHtG7ln3LnpB o%$5itK4ul^5DkZghpu{A3;R>docZ1IC$FjPH26xBSo|-cp z`nsgM?86))iCh>T{$G<5eU_AT*c-iC`5a4Ukj}susYZ~w^@_woj7RgnB8oYTtLfs1 zQpzXibeQ@t(@9>yTrT+BSCS(wp$ty10z_V7rfFS8YWKdz`znr?BfLL4?9&fxstU3w zqj#?^9+c>Qb DfUD~G{p| 0FC25i$ zk!d7tXY5P46duq%vMT390rR)0h%1%y{bI-kZUSW@TjaXm?7Zhpae8U8U7+=b7vGBI z*Kmz$j02X#gNOsvE=Y>9z*ThMb{}9lL D_N6z56$!iwz3}2LuTFk?U!es{$>U?k zko<_#sO&<=ba?aP3=9|1j`>A*(WPS5;5$!6I(k4Rgu#OMl6bbyz3i9Zy&tVw{o-n2 z!s6tUaz{VCQgKie@OW0B%EEGbBshqV12Pj-@TE}MLORpDovMdn8os6X)oi$1Px0YP zN$|bf;h5*&r}k!iW7#a(vABipDvxSpv+Ppdj4rJQhX^mLnzyfaYu*m0if-ZOW5AEP zh&~fAJ8EddbGygQxoTxywwBLj5f1eCJxI^&B#eRhmczHS4xEA~$sB<(Uqrh_%(zu@ zr;ufL$*Eo`)Vh7)yVO;pH`~fR+a;e@ezCm#HG{{s`@r)9BOXBql=(`Bv )bvm2#VmVTA1KRZAF!nVznc$7I18hg@x zeTX^c7ZCYJgXNc|5r;Js2zOebdOo0i<*(i5YX;`Xls;&;lxH~T%5K BFK#)7_Z5taUy2wLq>ZUcj7GK2RY!MTT20P^$s+d; zfFM0wm}H0xJ_#IjQ(eU8F?=z>;if1B)bEd9e;_}<9gFIAKlDtzrq5OS2*s*;)+O89 z)e?F&JiA1eB&TUF4K O#8s2z%ZblYuiqlRui_p)x`XJV0(@`)aeh1) P)_KnIo)Lv4F4gQ+mVtFTCmo=-Wq^4|Te_Kkg$D{W}vKFUry0&)( zm!3NJp|91quPLBJU;NU3-Z%w!xVXEpas8{}mVuO7nR}Xh9F=*Kdf!E09;dX&f@oY1 zaPD}f9zcHF5Uzod!{Y*cgbJ)f=OD@w|4khyEqDM}&c}?qUwQ3BMmhYl)wBX3^G~}f zkc2XY!+#?g9Wq96i=VY(e;CVKTO{re7pv!I)@dg3d8HJ;#4aWW_`l&cLO!T^4DO{C zH{n0OBvuE<6*!ZP`L@2!zZG*JOKen0e%N-`ui4cLm$>wHn3v2RO}~0| }Na4vA4!D;vN& z=5K(>qL2=3B=hpp*+tBhASlw(1m%|eWiMuS2WTebnq!W+2|T- a3y59k&;}IL$YR=ODUqt^oyDE6%Ai^70epy>nW9!N@M_2TBTQd+cw7AK4p~ z0-cb*52AVq^ECU6i*7+!8jr;z9*g^6ZX^HyL2F7=J2v?N7nX!9BPf%>Fc&>J8H8|1e}&1jL(c6583Cse`{Oco1(Ejb~VzU z*6H$>oR`dq+|nItWLYK}uQ2F6b~+%gEFg5Z;g0$R>r}D}RfpQg_kH;#F3+>p^Gn(2 z>I(~M^T2)J%ixfjeCYZV&l4wC_GtZD5(^fIFw2(ptHO)gy9TQ4b2t$Wv+XRMjx>mL zYvN+0m=24iV~T*QN}Yx<0DKq(NJ`=(?K1^FXi) yg<2u`zQ5Wv*nQ!5-xJo&3;PPC(#un-U?c!jEI-ntt7N} yp8M=!I&e z5mLmMDPVibY{fk}|3YR^e1;eDJz>pE$WsnNHL`yQUEh3zMx18D6)&d#af)#Xi#~@l zh(0|ea9u(X0 2ZsV>6CfK-Tw pD%Y%rQ*1e4qkuo5TLxYAP~ikGeV{Wcs(%WmK4d zWt;Am$xV=c@Y`Dr??1QEQF5jg&t8Kk>Ed@Y_g;>8tZ?lb+h~%QpmWOdYizjgaIvO} zY6h#R3$o{F1`ouLzbDeIgnphyC`+7cqZfc0{^a^m6%AwEt!bhr&bl3#XvvfIcZ6)$ zA2}ZgIoIb4>e2q*0aue?5M>Q#^J}cc1r20EWmOYoZth#U>G;)6FPp;3HwCJ6$VDqB z-K=b#_wmWY0NbHU&OMP;AwS7>%-XkdT(~dy?*2FTw9Nzi<*&-sZ(3fPnHVizT46ZQ zb#705RA_nIL$R_F$<-x4g|#=iZfJKqSmjLYAHCNzZuH=lLzrb-PU;3PB4u(ZWk~G= zJIEsM_ecPzP@EeOK^!KjJ_20hZs+88Fl79{0QVOjfi@A&ErbJ`1ym5!ziM%B1Q)a! zj;j4)&du6=>uT`V-9|;_WsB}qZ|&mWv?1eei}~{4zS1h<5J}-83__-?IOET|z3(>} zI!NYum?(_!>NXp;C+6F?uM(Dyg`31J*e*UQ5=g kMvUMUt%w<&G#^IEEi (>yrueYhFU1tvZ@0rCrs84%Hy6!A3*Hx$9Qiavauy-zBp`L>`i z#y}!5Blv=Ku8%HPq-?tBF~n1zJ7i<%kr}Em`tY*mU`g}*fj;jr?cGjAhHkuQiub_4 zao{wkp>-3SjzDCe1b$&*@(yZhEkT)?Ovb(&$5hE5Uu+GCvw (MusK7Iqtu!coe`KC*`A%Dm z6?&QA9*y%%0e2C|0VK+MV>Css#S{1mG>v91*J|FdH)~vUjTNw7`7hI@f50IH^3TEj z8l3YBaf!0>LI;_3W*0hDJ!=j7>g#zVlC$GuM_#%w4E#7;Znfe53MSbY+-(35;Aeo4 zHJzT4K%cUbBbpC~L;voaqxg~~flI>Qe*+5nt6>~I@U4T|P@IqSK7ard`Vuhn4C(jG zWUdU)O=xTk9IO3WjDupVQj^=G-CwkJ$BUGqgw{Qk#;pSpYRe++#@az$3)YIuNLPmj zY!qJnDVC5OjBTOlUtN5&?)I)Mg^*)iUro*-TN!(mJrk%$GrdeVTMqQ0GcxNv2IYi# zb+$4T<>;6oZ^{S1H5Oj4FJ10p(7=0;Tu3gaz>@OVf*uWbLjnm1Fd2XjV?Tw%)ibhH z53t>~I<{_Qt+Lni-_prU!+?B^w*_y#GL)JF^RtJ}cSo8PR`BlL?iS$cv2||8Dg150 z^S ^TZvw?uKV4ec9z51&8S-x2BTn>FRiRha(_3!U+Vx?EMa$BxXotu)NxJ5; z156(oB*cKr#&V5GMF!IcL3WahzzYhJ2QC->3r@r33n>~QObBOBi$)qa&xkPB1rF*n z5XIQIO56O`F F zFBX}lMqs9z1!0A6=Cm#p1KFRqzbv~rTTcG+r54_dqLO1OaDjHtp~(@hja1zSvcV(- zOa=X+4hN8gw9 b{T zSB^_`sg6HASNOY$?;O9-`od_I07@Ys4^%-<@(ltc0~t_&2zhsNlE@UwLpG>Nm~fDl zwhs&9T!7zlm G&T3;(M|V8E7Ev%^~KA|o0*7T1b$z1LkqsoVz>>yK2AOqm07DO z1lEfDTeVfpt+y1jtsgTpUf6fk A|)#&tdjG%g;UV<-Z2Xo?J5Ct~t6Aq(&la9Vw&sw45To-mJ!IFmhH JkNGB={vSdA?SudT literal 0 HcmV?d00001 diff --git a/sfj-managementfrontend/src/assets/logo.png b/sfj-managementfrontend/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 zcmaKRcUV(fvo}bjDT-7nLI_nlK}sT_69H+`qzVWDA|yaU?}j417wLi^B1KB1SLsC& zL0ag7$U(XW5YR7p&Ux?s P$d4lvMt8C^+TcQu4F zQqv!UF!I+kw)c0jhd6+g6oCr9P?7)?!qX1ui*iL{p}sKCAGuJ{{W)0z1pLF|=>h}& zt(2Lr0Z`2ig8<5i%Zk}cO5Fm=LByqGWaS`oqChZdEFmc`0hSb#gg|Aap^{+WKOYcj zHjINK)KDG%&s?Mt4CL(T=?;~U@bU2x_mLKN!#GJuK_CzbNw5SMEJorG!}_5;?R>@1 zSl)jns3WlU7^J%=(hUtfmuUCU&C3%8B5C^f5>W2Cy8jW3#{Od{lF1}|?c61##3dzA zsPlFG;l_FzBK}8>|H_Ru_H#!_7$UH4UKo3lKOA}g1(R&|e@}GINYVzX?q=_WLZCgh z)L|eJMce`D0EIwgRaNETDsr+?vQknSGAi=7H00r`QnI%oQnFxm`G2umXso9l+8*&Q z7WqF|$p49js$mdzo^BXpH#gURy=UO;=IMrYc5?@+sR4y_?d*~0^YP7d+y0{}0)zBM zIKVM(DBvICK#~7N0a+PY6)7;u=dutmNqK3AlsrUU9U`d;msiucB_|8|2kY=(7XA;G zwDA8AR)VCA#JOkxm#6 oHNS^YVuOU;8p$N)2{`;oF|rQ?B~K$%rHDxXs+_G zF5|-uqHZvSzq}L;5Kcy_P+x0${33}Ofb6+TX&=y;;PkEOpz% +_bCw_ {<&~ zeLV|!bP%l1qxywfVr9Z9JI+++EO^x>ZuCK);=$VIG1`kxK8F2M8AdC$iOe3cj 1fo(ce4l-9 z7*zKy3={MixvUk=enQE;ED~7tv%qh&3lR<0m??@w{ILF|e#QOyPkFYK!&Up7xWNtL zOW%1QMC<3o;G9_S1;NkPB6bqbCOjeztEc6TsBM<(q9((JKiH{01+Ud=uw9B@{;(JJ z-DxI2*{pMq`q1RQc;V8@gYAY44Z!%#W~M9pRxI(R?SJ7 sy7em=Z5DbuDlr@*q|25V)($-f}9c#?D%dU^RS<(wz?{P zFFHtCab*!rl(~j@0(Nadvwg8q|4!}L^>d?0al6}Rrv9$0M#^&@zjbfJy_n!%mVHK4 z6pLRIQ^Uq~dnyy$`ay51Us6WaP%&O;@49m&{G3z7xV3dLtt1VTOMYl3UW~Rm{Eq4m zF?Zl_v;?7EFx1_+#WFUXxcK78IV)FO>42@cm@}2I%pVbZqQ}3;p;sDIm&knay03a^ zn$5}Q$G!@fTwD$e(x-~aWP0h+4N Rz$KlnO_H2c< z(XX#lPuW_%H#Q+c&(nRyX1-Ia dKR-%$4FYC0fsCmL9ky3 zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#` z2QhvH5w&V;wER?mopu+nqu*n8p~(%Q kwSs&*0eJwa zMXR05`OSFpfyRb! Y_+H@O%Y z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6 zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o z$=#_=aBkhe(ifX}MLT()@5? OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{ z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX zoI=B}+$R22&IL`NCYUYjrdhwjnM x_v=-Qcx-jmtN>!Zqf|n1^SWrHy zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez z={AM*r-bQs6*z$!*V A4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz! z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K zXQr#6H}>a-GYs9^bG P2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9 zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#( LgacooD z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0 zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH; zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK =t# z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB zHBol OHYBas@&{PT=R+?d8pZu zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86 z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1 zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~ zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0F B z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72yd rFvm`R j-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc# z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S )4^*t8Va3HR zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOM lK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C z3HR9ssH7a&Vr<6waJrUzdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N zQUR>oadnG17#hNc$pkTp+9 lW+MBKHRZ~7 4XWUryd)4yd zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T z9rrj=?I H*qI5{G@Rn&}^Z{+TW}mQe b9=8b<_a`&Cm#n%n~ zU47MvCBsdXFB1+adOO)03+nczfWa#vwk #r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A zrRQ~(Ygh_ebltHo1VC bJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{ *ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16 zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^ 4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?- diff --git a/sfj-managementfrontend/src/assets/main.css b/sfj-managementfrontend/src/assets/main.css new file mode 100644 index 0000000..36fb845 --- /dev/null +++ b/sfj-managementfrontend/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/sfj-managementfrontend/src/components/HelloWorld.vue b/sfj-managementfrontend/src/components/HelloWorld.vue new file mode 100644 index 0000000..38d821e --- /dev/null +++ b/sfj-managementfrontend/src/components/HelloWorld.vue @@ -0,0 +1,41 @@ + + + + + + + diff --git a/sfj-managementfrontend/src/components/TheWelcome.vue b/sfj-managementfrontend/src/components/TheWelcome.vue new file mode 100644 index 0000000..49d8f73 --- /dev/null +++ b/sfj-managementfrontend/src/components/TheWelcome.vue @@ -0,0 +1,88 @@ + + + + + + + ++ + Documentation + + Vue’s + official documentation + provides you with all information you need to get started. + + + + ++ + Tooling + + This project is served and bundled with + Vite. The + recommended IDE setup is + VSCode + + Volar. If + you need to test your components and web pages, check out + Cypress and + Cypress Component Testing. + +
+ + More instructions are available inREADME.md
. ++ + + ++ + Ecosystem + + Get official tools and libraries for your project: + Pinia, + Vue Router, + Vue Test Utils, and + Vue Dev Tools. If + you need more resources, we suggest paying + Awesome Vue + a visit. + + + + ++ + Community + + Got stuck? Ask your question on + Vue Land, our official + Discord server, or + StackOverflow. You should also subscribe to + our mailing list and follow + the official + @vuejs + twitter account for latest news in the Vue world. + + + + diff --git a/sfj-managementfrontend/src/components/WelcomeItem.vue b/sfj-managementfrontend/src/components/WelcomeItem.vue new file mode 100644 index 0000000..6d7086a --- /dev/null +++ b/sfj-managementfrontend/src/components/WelcomeItem.vue @@ -0,0 +1,87 @@ + ++ + Support Vue + + As an independent project, Vue relies on community backing for its sustainability. You can help + us by + becoming a sponsor. + + ++ + + diff --git a/sfj-managementfrontend/src/components/icons/IconCommunity.vue b/sfj-managementfrontend/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + + + diff --git a/sfj-managementfrontend/src/components/icons/IconDocumentation.vue b/sfj-managementfrontend/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + + + diff --git a/sfj-managementfrontend/src/components/icons/IconEcosystem.vue b/sfj-managementfrontend/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + + + diff --git a/sfj-managementfrontend/src/components/icons/IconSupport.vue b/sfj-managementfrontend/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + + + diff --git a/sfj-managementfrontend/src/components/icons/IconTooling.vue b/sfj-managementfrontend/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/sfj-managementfrontend/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + + + diff --git a/sfj-managementfrontend/src/main.ts b/sfj-managementfrontend/src/main.ts new file mode 100644 index 0000000..fb78a83 --- /dev/null +++ b/sfj-managementfrontend/src/main.ts @@ -0,0 +1,19 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' + +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +const app = createApp(App) +const store = createPinia() +store.use(piniaPluginPersistedstate) +app.use(store) +app.use(router) +app.use(ElementPlus) +app.mount('#app') diff --git a/sfj-managementfrontend/src/request/api.ts b/sfj-managementfrontend/src/request/api.ts new file mode 100644 index 0000000..6e3b13e --- /dev/null +++ b/sfj-managementfrontend/src/request/api.ts @@ -0,0 +1,122 @@ +import { servicesVersion } from "typescript"; +import service from "."; +import postservice from "./postindex"; + +interface loginData{ + username:string, + password:string +} +export function login(data:any){ + return service({ + url:"/api/auth/login", + method:"post", + data + }) +} +export function logout(){ + return service({ + url:"/api/auth/logout", + method:"get", + }) +} +export function authorize(){ + return service({ + url:"/api/user/me", + method:"get" + }) +} + +// 商品列表接口 + +export function getAllAlgorithm(){ + return service({ + url:"/api/algorithm/findall", + method:"get" + }) +} + +export function getAllField(){ + return service({ + url:"/api/algorithm/findfield", + method:"get" + }) +} + + +export function getAllUse(){ + return service({ + url:"/api/algorithm/finduse", + method:"get" + }) +} + + +export function updatePostAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/updateAlgorithm", + method:"post", + data + }) +} + + +export function addPostAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/addAlgorithm", + method:"post", + data + }) +} + +export function deleteAlgorithm(data:any){ + return postservice({ + url:"/api/algorithm/deleteAlgorithm", + method:"post", + data + }) +} + +export function updateField(data:any){ + return postservice({ + url:"api/field/updateField", + method:"post", + data + }) +} + +export function deleteField(data:any){ + return postservice({ + url:"api/field/deleteField", + method:"post", + data + }) +} + +export function addField(data:any){ + return postservice({ + url:"/api/field/addField", + method:"post", + data + }) +} +export function addUse(data:any){ + return postservice({ + url:"/api/use/addUse", + method:"post", + data + }) +} +export function deleteUse(data:any){ + return postservice({ + url:"/api/use/deleteUse", + method:"post", + data + }) +} +export function updateUse(data:any){ + return postservice({ + url:"/api/use/updateUse", + method:"post", + data + }) +} diff --git a/sfj-managementfrontend/src/request/index.ts b/sfj-managementfrontend/src/request/index.ts new file mode 100644 index 0000000..309cf42 --- /dev/null +++ b/sfj-managementfrontend/src/request/index.ts @@ -0,0 +1,75 @@ +import axios from 'axios' + + +import { ElMessage } from 'element-plus' +import { da } from 'element-plus/es/locales.mjs' + +// const defaultError = ()=> ElMessage.error('发生了一些错误,请联系管理员') +// const defaultFailure = (message:any,status:any) => ElMessage.warning(message) + + +// export function post(url:any,data:any,success:any,failure = defaultFailure,error = defaultError){ +// axios.post(url,data,{ +// headers:{ +// 'Content-Type':'application/x-www-form-urlencoded' +// }, +// withCredentials:true +// }).then(({data})=>{ +// if(data.success) +// success(data.message, data.status) +// else +// failure(data.message, data.status) +// }).catch(error) +// } +// export function get(url:any,success:any,failure = defaultFailure,error = defaultError){ +// axios.post(url,{ +// withCredentials:true +// }).then(({data})=>{ +// if(data.success) +// success(data.message, data.status) +// else +// failure(data.message, data.status) +// }).catch(error) +// } + +// 创建axios实例 +const service = axios.create({ + baseURL:"http://192.168.2.107:8080", + timeout:5000, + headers:{ + 'Content-Type':'application/x-www-form-urlencoded;charset=utf-8' + // 'Content-Type':'application/json;charset=utf-8' + }, + withCredentials:true + +}) + + + +// 请求拦截 +service.interceptors.request.use((config)=>{ + config.headers=config.headers || {} + if(localStorage.getItem('token')){ + config.headers.token=localStorage.getItem('token') || "" + } + return config +}) + + +// 相应拦截 +service.interceptors.response.use((res) => { + + const status:number = res.data.status + if(status!=200){ + // console.log("dddd"); + // ElMessage.error(res.data.message) + // return Promise.reject(res.data) + + } + return res +},(err)=>{ + // ElMessage.error(err); +}) + + +export default service; diff --git a/sfj-managementfrontend/src/request/postindex.ts b/sfj-managementfrontend/src/request/postindex.ts new file mode 100644 index 0000000..db5bb87 --- /dev/null +++ b/sfj-managementfrontend/src/request/postindex.ts @@ -0,0 +1,38 @@ +import axios from 'axios' + +const postservice = axios.create({ + baseURL:"http://192.168.2.107:8080", + timeout:5000, + headers:{ + 'Content-Type':'application/json;charset=utf-8' + }, + withCredentials:true + +}) + + +postservice.interceptors.request.use((config)=>{ + config.headers=config.headers || {} + if(localStorage.getItem('token')){ + config.headers.token=localStorage.getItem('token') || "" + } + return config +}) + + + +postservice.interceptors.response.use((res) => { + + const status:number = res.data.status + if(status!=200){ + // console.log("dddd"); + // ElMessage.error(res.data.message) + // return Promise.reject(res.data) + + } + return res +},(err)=>{ + // ElMessage.error(err); +}) + +export default postservice; \ No newline at end of file diff --git a/sfj-managementfrontend/src/router/index.ts b/sfj-managementfrontend/src/router/index.ts new file mode 100644 index 0000000..5bbd3f9 --- /dev/null +++ b/sfj-managementfrontend/src/router/index.ts @@ -0,0 +1,82 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' +import { useStore } from "@/stores/counter"; +import { el } from 'element-plus/es/locales.mjs'; +// import { log } from 'console'; +// import { log } from 'console'; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path:'/login', + name:'login', + component: () => import('../views/LoginView.vue') + }, + { + path:'/home', + name:'home', + component:() => import('../views/HomeView.vue'), + redirect:"/home/algorithem", + children:[ + { + path:"algorithem", + name:"algorithem", + meta:{ + isShow:true, + title:"算法管理" + }, + component:()=> import('../views/AlgorithemView.vue') + }, + + { + path:"field", + name:"field", + meta:{ + isShow:true, + title:"领域管理" + }, + component:()=> import('../views/FieldView.vue') + }, + { + path:"use", + name:"use", + meta:{ + isShow:true, + title:"场景管理" + }, + component:()=> import('../views/UseView.vue') + } + ] + }, + { + path:"/", + redirect:"/login" + } + + + + ] +}) +router.beforeEach((to,from,next)=>{ + const store = useStore(); + const storeuser = store.auth.user + // console.log(store.auth.user); + // const username :string | null = sessionStorage.getItem("username") + if(!storeuser && to.path !== '/login'){ + console.log(33); + console.log(store.auth.user); + + // console.log("username") + // console.log(username); + next('/login') + }else if(storeuser != null && to.matched.length === 0) { + next('/home') + }else if(storeuser && to.path === '/login'){ + next('/home') + }else{ + next() + } + +}) +export default router diff --git a/sfj-managementfrontend/src/stores/counter.ts b/sfj-managementfrontend/src/stores/counter.ts new file mode 100644 index 0000000..bab995a --- /dev/null +++ b/sfj-managementfrontend/src/stores/counter.ts @@ -0,0 +1,29 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +// export const useStore = defineStore('store', () => { +// const auth = ref({ +// user:null + + +// }) + + +// return {auth} + + + +// }) +export const useStore = defineStore('store', { + state: () => ({ + auth: { + user: null + } + }), + actions: { + setUser(user:any) { + this.auth.user = user; + } + }, + persist:true +}); diff --git a/sfj-managementfrontend/src/type/algorithm.ts b/sfj-managementfrontend/src/type/algorithm.ts new file mode 100644 index 0000000..5860b99 --- /dev/null +++ b/sfj-managementfrontend/src/type/algorithm.ts @@ -0,0 +1,94 @@ +// import { interceptors } from "node_modules/axios/index.cjs" + +export interface ALgorithmInt{ + algorithm_id:number, + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface selectDataInt{ + name:string, + description:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} +interface activeint{ + algorithm_id:number, + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface addListInt { + algorithm_name:string, + algorithm_description:string, + fieldStr:string, + userStr:string, + fieldList:FieldInt[], + useList:UseInt[], + algorithm_img:string, + algorithm_coder:string +} +interface ListInt{ + field_id:number, + field_name:string +} +interface useListInt{ + usecase_id:number, + usecase_name:string +} +interface FieldInt { + fieldname:String +} +interface UseInt { + usename:string +} +export class InitData{ + selectData:selectDataInt={ + name:"", + description:"", + page:1, + count:0, + pagesize:10 + + } + list:ALgorithmInt[]=[] + isShow=false + isAddShow=false + //选中的的对象 + active:activeint={ + algorithm_id:0, + algorithm_name:"", + algorithm_description:"", + fieldStr:"", + userStr:"", + fieldList:[], + useList:[], + algorithm_img:"", + algorithm_coder:"" + } + addList: addListInt = { + algorithm_name:"", + algorithm_description:"", + algorithm_img:"", + algorithm_coder:"", + fieldStr:"", + userStr:"", + fieldList:[], + useList:[], + + + } + fieldList:ListInt[]=[] + useList:useListInt[]=[] +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/fields.ts b/sfj-managementfrontend/src/type/fields.ts new file mode 100644 index 0000000..fc5f87d --- /dev/null +++ b/sfj-managementfrontend/src/type/fields.ts @@ -0,0 +1,41 @@ +export interface fieldsData { + field_id: string; + field_name: string; + algorithemFields:null; +} +interface selectDataInt{ + name:string, + description:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} + +interface Active{ + field_id: string; + field_name: string; + algorithemFields:null; +} + +export class InitData { + selectData:selectDataInt={ + name:"", + description:"", + page:1,//页码 + count:0,//总条数 + pagesize:5,//默认一页显示几条 + } + list:fieldsData[]=[]//展示的内容数据,接收从后台返回来的数据 + isShow1 = false + isShow = false + active:Active={ + field_id: '0', + field_name: '', + algorithemFields:null, + } + active1:Active={ + field_id: '0', + field_name: '', + algorithemFields:null, + } +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/login.ts b/sfj-managementfrontend/src/type/login.ts new file mode 100644 index 0000000..480b85c --- /dev/null +++ b/sfj-managementfrontend/src/type/login.ts @@ -0,0 +1,12 @@ +export interface LoginFormInt{ + username:string + password:string + } + + export class LoginData{ + ruleForm:LoginFormInt={ + username:"", + password:"" + } + +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/type/use.ts b/sfj-managementfrontend/src/type/use.ts new file mode 100644 index 0000000..caba0d4 --- /dev/null +++ b/sfj-managementfrontend/src/type/use.ts @@ -0,0 +1,42 @@ +export interface usecaseInt{ + usecase_id:number, + usecase_name:string, + +} +interface selectDataInt{ + name:string, + page:number,//页码 + count:number,//总条数 + pagesize:number,//默认一页显示几条 +} +interface activeint{ + usecase_id:number, + usecase_name:string, + +} +interface addListInt { + usecase_name:string, + +} + + +export class InitData{ + selectData:selectDataInt={ + name:"", + page:1, + count:0, + pagesize:10 + + } + list:usecaseInt[]=[] + isShow=false + isAddShow=false + //选中的的对象 + active:activeint={ + usecase_id:0, + usecase_name:"", + } + addList: addListInt = { + usecase_name:"", + } +} \ No newline at end of file diff --git a/sfj-managementfrontend/src/views/AboutView.vue b/sfj-managementfrontend/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/sfj-managementfrontend/src/views/AboutView.vue @@ -0,0 +1,15 @@ + ++ + +++
++ + ++ + + diff --git a/sfj-managementfrontend/src/views/AlgorithemView.vue b/sfj-managementfrontend/src/views/AlgorithemView.vue new file mode 100644 index 0000000..d1b4220 --- /dev/null +++ b/sfj-managementfrontend/src/views/AlgorithemView.vue @@ -0,0 +1,557 @@ + +This is an about page
+++ + + + + + + diff --git a/sfj-managementfrontend/src/views/FieldView.vue b/sfj-managementfrontend/src/views/FieldView.vue new file mode 100644 index 0000000..f8f972e --- /dev/null +++ b/sfj-managementfrontend/src/views/FieldView.vue @@ -0,0 +1,178 @@ + ++++ ++ ++ + + ++ + + +查询 ++ +新增算法 ++++ ++ + +++ +算法ID: {{ props.row.algorithm_id }}
+算法名称: {{ props.row.algorithm_name }}
+ +算法详细描述
+{{ props.row.algorithm_description }}
+ + + + ++ + + + + + + +++ ++ + + +编辑 + +删除 + ++++ + + ++ + + + ++ ++ + ++ + + ++ + ++ ++ + + ++ ++ 上传算法图片
++ + ++
+ + ++ + + + ++ ++ + ++ + + ++ + ++ ++ + ++ ++ 上传算法图片
++ ++
+ ++ ++++ ++ ++ + +查询 ++ +增加 ++ ++ + + + + +编辑 +删除 + ++ + + ++ + + + + ++ ++ + + + + + + diff --git a/sfj-managementfrontend/src/views/HomeView.vue b/sfj-managementfrontend/src/views/HomeView.vue new file mode 100644 index 0000000..521f51f --- /dev/null +++ b/sfj-managementfrontend/src/views/HomeView.vue @@ -0,0 +1,101 @@ + ++ + + + + ++ ++ ++ + + + + diff --git a/sfj-managementfrontend/src/views/LoginView.vue b/sfj-managementfrontend/src/views/LoginView.vue new file mode 100644 index 0000000..b1d0ee4 --- /dev/null +++ b/sfj-managementfrontend/src/views/LoginView.vue @@ -0,0 +1,149 @@ + ++ ++ ++ ++ + 算法集后台管理系统
退出登录 ++ ++ + + ++ {{ item.meta.title }} + + ++ ++ + + + + diff --git a/sfj-managementfrontend/src/views/UseView.vue b/sfj-managementfrontend/src/views/UseView.vue new file mode 100644 index 0000000..c6c9c4e --- /dev/null +++ b/sfj-managementfrontend/src/views/UseView.vue @@ -0,0 +1,290 @@ + ++ +算法集后台管理系统
++ ++ + ++ + +登录 +重置 +++ + + + + diff --git a/sfj-managementfrontend/tsconfig.app.json b/sfj-managementfrontend/tsconfig.app.json new file mode 100644 index 0000000..491e093 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "noEmit": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/sfj-managementfrontend/tsconfig.json b/sfj-managementfrontend/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/sfj-managementfrontend/tsconfig.node.json b/sfj-managementfrontend/tsconfig.node.json new file mode 100644 index 0000000..46cf2e1 --- /dev/null +++ b/sfj-managementfrontend/tsconfig.node.json @@ -0,0 +1,17 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/sfj-managementfrontend/vite.config.ts b/sfj-managementfrontend/vite.config.ts new file mode 100644 index 0000000..e5c6c96 --- /dev/null +++ b/sfj-managementfrontend/vite.config.ts @@ -0,0 +1,23 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + server:{ + port: 5175, + host:'0.0.0.0' + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + optimizeDeps: { + include: ['element-plus'] + } +}) diff --git a/sfj-vue3/.gitignore b/sfj-vue3/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/sfj-vue3/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/sfj-vue3/.vscode/extensions.json b/sfj-vue3/.vscode/extensions.json new file mode 100644 index 0000000..c0a6e5a --- /dev/null +++ b/sfj-vue3/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/sfj-vue3/Dockerfile b/sfj-vue3/Dockerfile new file mode 100644 index 0000000..0445cf9 --- /dev/null +++ b/sfj-vue3/Dockerfile @@ -0,0 +1,20 @@ +# 基于Node.js的Alpine Linux作为基础镜像 +FROM node:alpine + +# 设置工作目录 +WORKDIR /app + +# 复制package.json和package-lock.json到容器内 +COPY package*.json ./ + +# 运行npm install命令来安装依赖包 +RUN npm ci --only=production + +# 复制src目录及其他需要的文件到容器内 +COPY . . + +# 打开80端口 +EXPOSE 80 + +# 定义入口点 +CMD ["npm", "run", "serve"] \ No newline at end of file diff --git a/sfj-vue3/README.md b/sfj-vue3/README.md new file mode 100644 index 0000000..160e579 --- /dev/null +++ b/sfj-vue3/README.md @@ -0,0 +1,40 @@ +# vue_project3 + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` diff --git a/sfj-vue3/env.d.ts b/sfj-vue3/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/sfj-vue3/env.d.ts @@ -0,0 +1 @@ +///+++ ++ + ++ + + +查询 ++ +新增场景 ++++ ++ + +++ +场景ID: {{ props.row.usecase_id }}
+场景名称: {{ props.row.usecase_name }}
+ + + + + + ++ + + + +编辑 + +删除 + ++++ + + ++ + + + ++ ++ + ++ + + + ++ ++ diff --git a/sfj-vue3/index.html b/sfj-vue3/index.html new file mode 100644 index 0000000..1bc1369 --- /dev/null +++ b/sfj-vue3/index.html @@ -0,0 +1,18 @@ + + + + + + + Vite App + + + + + + + diff --git a/sfj-vue3/package-lock.json b/sfj-vue3/package-lock.json new file mode 100644 index 0000000..3690528 --- /dev/null +++ b/sfj-vue3/package-lock.json @@ -0,0 +1,2912 @@ +{ + "name": "vue_project3", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vue_project3", + "version": "0.0.0", + "dependencies": { + "aos": "^2.3.4", + "axios": "^1.6.5", + "element-plus": "^2.5.1", + "particles.vue3": "^2.12.0", + "tsparticles": "^3.0.3", + "tsparticles-slim": "^2.12.0", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/aos": "^3.0.7", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", + "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", + "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "dependencies": { + "@floating-ui/core": "^1.5.3", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", + "integrity": "sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.2.tgz", + "integrity": "sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.2.tgz", + "integrity": "sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.2.tgz", + "integrity": "sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.2.tgz", + "integrity": "sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.2.tgz", + "integrity": "sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", + "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.2.tgz", + "integrity": "sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.2.tgz", + "integrity": "sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.2.tgz", + "integrity": "sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.2.tgz", + "integrity": "sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.2.tgz", + "integrity": "sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.2.tgz", + "integrity": "sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true + }, + "node_modules/@tsparticles/basic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.0.3.tgz", + "integrity": "sha512-hMzHTuKhMoTNiqkcEnlGZ3Aa15o3tLcjVDTtuNhZlrONgu7KwVUR4mpxxWUyJHNYlho7VHtZvUU8XAYmN/uAFw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/move-base": "^3.0.3", + "@tsparticles/shape-circle": "^3.0.3", + "@tsparticles/updater-color": "^3.0.3", + "@tsparticles/updater-opacity": "^3.0.3", + "@tsparticles/updater-out-modes": "^3.0.3", + "@tsparticles/updater-size": "^3.0.3" + } + }, + "node_modules/@tsparticles/engine": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.0.3.tgz", + "integrity": "sha512-1yGci0gMF9uBIVPXBYekORq8UYf8Twz3Xy/ZWWVCFWeVh90Amdns3fad2pf2HicZe8HZqpa1cN2Io1MOHAlO8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true + }, + "node_modules/@tsparticles/interaction-external-attract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.0.3.tgz", + "integrity": "sha512-Fnb556N/i7wEj+ziLLkU4dOJWYm31OKyAd8CItsC9/mVtd01jCnBR57rcR3KdlKhknzDrPAWPG0CV29PdZWmXg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-bounce": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.0.3.tgz", + "integrity": "sha512-Uc7VNQxeb4KMGTmzIn3/35t0FPFFTSn8sUNyUyE24nlmSZBE1PwxuyMbCCzyj2VYGgdx4PXoijY1tLN9FGfIQg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-bubble": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.0.3.tgz", + "integrity": "sha512-tA3OZfoMhYsy/cY90z8GolGjH9B+r29CplTKiAbOk+CdNFZ9oMBuMXfDhMCFURxbb1Ak4SFhwCSnsTZOokrZeQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-connect": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.0.3.tgz", + "integrity": "sha512-KtPxzxuG+GLfejSAoQ9d2apYEBt6PnuzNtRuASbnZFMZ8xS9wXcS+6Jn3JCBx6wq7hXJY3yvX86MtIsArVS/cg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-grab": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.0.3.tgz", + "integrity": "sha512-5JlZRpz4qB1ukcJquhnyETJdSMPu/t7ZNNgecWgiDd1akN3/zQAUp6cY918C1Mtq3J7vElBcyqf/6mY6wApmzg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-pause": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.0.3.tgz", + "integrity": "sha512-iQnN9cEhInQpGEaYe03L7Y603MuSwBco4FaMYcPcZxHCf6uEAag6zQPxdIZjF/a49dVUuEKv6elW+y07DTVYBg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-push": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.0.3.tgz", + "integrity": "sha512-Tiw/o+2jJwpIGPSez8pQSUAzoSSga5q33qtwJgWcjiMedBRnwSJNIdShkR5g5EiWop8GSN9U8AnCA3UrG3cq6Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-remove": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.0.3.tgz", + "integrity": "sha512-Vo38bKAzFyJDLE6WNespJJn/cIEm9qFZZ6ZVwPbdFDI9rK8gmIqHgmHudQduVPvs2Co9oIjfQq0OgVG70bHFvQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-repulse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.0.3.tgz", + "integrity": "sha512-6OOk2NzhVsLu7xp8fyn6xw+zVUYlmGcIMgJSa5LzaUZ/gHoVZ2f7UKdtKxZVnqOCWO+Ff8P7rRtm5q39JS8Pvg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-slow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.0.3.tgz", + "integrity": "sha512-+oNTTpMjHooMD/+BVtk6xllpVimcRoXlMPrQ+Pj7CndhoQNR6s8MacUyw2HPYO9epuItGui9qq1HyFWqZRQtSA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-external-trail": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-trail/-/interaction-external-trail-3.0.3.tgz", + "integrity": "sha512-qP5820gtY2DsIMC8BodFu0cr+f4jvAlnXT3nwpf2N4Rfcn1c0bhzJI8TNtBB/z9wkY8xBKZFhJBwGnNn8sqyrg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-attract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.0.3.tgz", + "integrity": "sha512-3DdFXxMujkLRZAAnid8eBW3BwKe3SGoXzVaSaiht7tq/Q0H98h3ryMJNeD6Rr0PbxGFWid3zmwk8+gdhQyOqZg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-collisions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.0.3.tgz", + "integrity": "sha512-pYxzrmvwLj4gwQdg33xTDm6670lQExLoCmeATNAukN4qTFWqYnS45AWrUsedKAverDMcnu1iT2Vs+xmEwtSFcw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/interaction-particles-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.0.3.tgz", + "integrity": "sha512-is2I/GTz2nC+2zupyVGbr2tbtp5qGRiwkC3lMWpmvfMWiXxs0iW4w7o/eFy6W5n1Sw2GKLjLUxMn0+xLwRVOEQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/move-base": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.0.3.tgz", + "integrity": "sha512-4OFyZ55zWGgw1di1R7hgjlqySE+SEHrAHEqoEq8x14/D1Zg3ai/6BRFqze161ybtwddpz/ukrFy9cpJaUDH1kA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/move-parallax": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.0.3.tgz", + "integrity": "sha512-LP9b+Yz3MpnReAgSQrBIINg+fQMzmKlYZ79FQLZdI5UlnyGEarYTYEpcg6VyBWb+QVPDCE+RfOQINfUPI5PB4A==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-absorbers": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-absorbers/-/plugin-absorbers-3.0.3.tgz", + "integrity": "sha512-mpAgIRdAmbb3+SX3KNGbmS0YsMJYx711/dV3e3kCu1M/k7ptFze/oFDLMb1f3614WWRlJCwQGdtmAAv517tpWg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-easing-quad": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.0.3.tgz", + "integrity": "sha512-KgzX9VzkPO61GTcLUHGx+wbiBdnxxp7174zICUiLZxYUuKYkn31k00MPsbja3HgW5lSZ6ruFh4RERi8nVwXo/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters/-/plugin-emitters-3.0.3.tgz", + "integrity": "sha512-Rt1Hrp/teqz6sLPwHShR8L7AWfQCLttXtf7r1VW7iKUhSou7Ye2L77ZCKzqq7xvEszPztYEVMLqjttccGzfs8Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-circle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-circle/-/plugin-emitters-shape-circle-3.0.3.tgz", + "integrity": "sha512-TDB0cw7P27orHwm51Uq6OZoQ3iiZOl948//q6WFvQrufR+TaKCkoyttqzgdV7OKVaMNZa+YlUZ6BIDv5aj5PSA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-square": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-square/-/plugin-emitters-shape-square-3.0.3.tgz", + "integrity": "sha512-gYIN24gqDkzQMfNMdlUqWQBHTvugghRMkEw42FxllKtHZ9urNBWqPA3EGrNL1Z6ZXZI8UuG18udUZKQsxq36vg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-circle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.0.3.tgz", + "integrity": "sha512-BXolExTzU8wKbV9XvYwYmsYVMBFpx6kb+k880Do+HMp9qUvnJ4G7jshwPp7Ns8svoN4EvbqqhacNd029ESMMYw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-emoji": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.0.3.tgz", + "integrity": "sha512-THOeWohtdXQpI3xUjVAcL4XVIWjE66MpGcq1w4Jo+V8luab1fCEKT6GQPPINmkiQe7lWChdz6qUX/FfPYmWG4A==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-image": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.0.3.tgz", + "integrity": "sha512-xc2HAmmF1iffOzit3UnIJGQuNX6gqxpO4srm3EOQEoWcS62v2Dr+tI6pEhY60RoVrDhBzdRI2da3+EvL5J39ag==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-line": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.0.3.tgz", + "integrity": "sha512-JOJrFKcnDgKJlD2YlJGISyuMRMKCdEuqYvUuXD4JqBR7XP8hoAgMEx2Of3rJ7sZyoAo2pdYEqDoSGWq0vgLuvQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-polygon": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.0.3.tgz", + "integrity": "sha512-gl+XW46oOudD84lgano6exNEKLyXwOXpHJPRm+dz2HLbRuuU6wCFd5isY4YCr47HJL7wJ7u7pm9LF1kkMk68Sg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-square": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.0.3.tgz", + "integrity": "sha512-FACZ0OFPMhdeRnspgU8CJimEyNhXNdmP/l5i8booj9ECvuYATy4yRvTbtktBy/mVuehinM8tgFYKgg8UF/as6Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-star": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.0.3.tgz", + "integrity": "sha512-P6C+oFneM75Sx2iuLnyNEZR+Cd7V3IIi7lYws54pcUdrYfvQ0lXdQZpUf3noHXoi03c+PnVvEsXvC+fX/+Zdlw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/shape-text": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-text/-/shape-text-3.0.3.tgz", + "integrity": "sha512-OoGA6193n6NXDJrLovmaa9Yu+ErfwrVRoxiAK5mVayM5ecZX6vhD8+c0H+pR2nY6iOn0h8GXU/FYmX9RFaIaOw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/slim": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.0.3.tgz", + "integrity": "sha512-E6ci6uEujJLaoY1JuFwDDOlJHaAAWbQiSEpgQUqETjD9+yEiiQ0zhxrua4HImU2+JhA6vSi7b1rTc7TYBjRRnQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/basic": "^3.0.3", + "@tsparticles/engine": "^3.0.3", + "@tsparticles/interaction-external-attract": "^3.0.3", + "@tsparticles/interaction-external-bounce": "^3.0.3", + "@tsparticles/interaction-external-bubble": "^3.0.3", + "@tsparticles/interaction-external-connect": "^3.0.3", + "@tsparticles/interaction-external-grab": "^3.0.3", + "@tsparticles/interaction-external-pause": "^3.0.3", + "@tsparticles/interaction-external-push": "^3.0.3", + "@tsparticles/interaction-external-remove": "^3.0.3", + "@tsparticles/interaction-external-repulse": "^3.0.3", + "@tsparticles/interaction-external-slow": "^3.0.3", + "@tsparticles/interaction-particles-attract": "^3.0.3", + "@tsparticles/interaction-particles-collisions": "^3.0.3", + "@tsparticles/interaction-particles-links": "^3.0.3", + "@tsparticles/move-base": "^3.0.3", + "@tsparticles/move-parallax": "^3.0.3", + "@tsparticles/plugin-easing-quad": "^3.0.3", + "@tsparticles/shape-circle": "^3.0.3", + "@tsparticles/shape-emoji": "^3.0.3", + "@tsparticles/shape-image": "^3.0.3", + "@tsparticles/shape-line": "^3.0.3", + "@tsparticles/shape-polygon": "^3.0.3", + "@tsparticles/shape-square": "^3.0.3", + "@tsparticles/shape-star": "^3.0.3", + "@tsparticles/updater-color": "^3.0.3", + "@tsparticles/updater-life": "^3.0.3", + "@tsparticles/updater-opacity": "^3.0.3", + "@tsparticles/updater-out-modes": "^3.0.3", + "@tsparticles/updater-rotate": "^3.0.3", + "@tsparticles/updater-size": "^3.0.3", + "@tsparticles/updater-stroke-color": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-color": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.0.3.tgz", + "integrity": "sha512-zOQuO+nJIGcYK2iS4k6+HyO+APfJ58OiZVvkerZaI/on5yE5Cq4goqCrjJBkRWo6WimdhDJjS9vxAyon8Y7CPQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-destroy": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-destroy/-/updater-destroy-3.0.3.tgz", + "integrity": "sha512-nCOP2oxg9Qy5h9WLpR46sZLp0X6Y7/0LVw2Jf7Kz+BNO9aqYW54tRS8AiG9j6DpMmt0HWbiB37Nv05s7/bZnKQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-life": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.0.3.tgz", + "integrity": "sha512-2YZoK13qqPB+m2QgcmStiZdCdvmkhIYHCv5fVqHFXrghS6IMqxEOAh+WV5FRcnL19UvMvKZUFLxmubrKnsi1RA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-opacity": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.0.3.tgz", + "integrity": "sha512-B+tCeItEEKfwJMeZ5l7jdggFDdt2Rzo3GSWrbTzsa4RxTlzNBZcuFp5qNOuwnBUERBM9u7wxPnfF+x0fDJlGgw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-out-modes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.0.3.tgz", + "integrity": "sha512-3tJ9UKc00KalPVmEfrHUDaXcOAJNjG/83ufiLnj4ZVec4PeibSck7OGkYgNht8O5CR93ZxONNI85DcUHCkBXXg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-roll": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-roll/-/updater-roll-3.0.3.tgz", + "integrity": "sha512-OH1iyHAUvdqKOQN94isViQVUORNUqBDDkgkukvRp6La0Xjk1sop3pVtfH5kADkuolunzD17SlKWup75AUGZKIw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-rotate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.0.3.tgz", + "integrity": "sha512-447je9lpU++TxPcZjUlit1NaBctIyT2x6W5NevVjrxckoAWoW2OYuy4mhuJRxn3SZHJ7/t2Wt6Es1g3DR4plRA==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-size": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.0.3.tgz", + "integrity": "sha512-mgo7VXJR6rfeSuVT2alxzdYs9BO2tr0iWiBKkbQMH/GSpLI4juijvHxUKC7MXk5E8C0f9ZLfoeSDH1NaeizbDw==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-stroke-color": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.0.3.tgz", + "integrity": "sha512-8CdRz5KE3RxmuJlao92w0Fo1BtwMLSkZIATMLkzuJYUu0Fq5AWnBkUxxe7r5Qk015n9qaMo8aWiQFwrYJ+FGAg==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-tilt": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-tilt/-/updater-tilt-3.0.3.tgz", + "integrity": "sha512-vdw5pBuBosWIq54u7CJD71r2P0UqlMZpOLof8So+Wacm92khZ3ONMpnPbvo0ghBVpZQENvpm5yqJPnroD8KP4Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-twinkle": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-twinkle/-/updater-twinkle-3.0.3.tgz", + "integrity": "sha512-5ejosaUYLji5Wr7uT9bqNae1L0PVb4XOY9a6bhMfoWEQQ8MAGFDFLcSF8ilgL0xpp6GsyF646rM8caIERLUvpQ==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@tsparticles/updater-wobble": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-wobble/-/updater-wobble-3.0.3.tgz", + "integrity": "sha512-PwO53o1Cb8Wwt5jv6hwJ1zBgSH0L6Hz4FD1uJGW/VcYYUg+/NIlUWKpC77PIqS8NE9hiX0c8Yjg1hw60bHR75Q==", + "dependencies": { + "@tsparticles/engine": "^3.0.3" + } + }, + "node_modules/@types/aos": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@types/aos/-/aos-3.0.7.tgz", + "integrity": "sha512-sEhyFqvKauUJZDbvAB3Pggynrq6g+2PS4XB3tmUr+mDL1gfDJnwslUC4QQ7/l8UD+LWpr3RxZVR/rHoZrLqZVg==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "18.19.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", + "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.4.tgz", + "integrity": "sha512-U5AdCN+6skzh2bSJrkMj2KZsVkUpgK8/XlxjSRYQZhNPcvt9/kmgIMpFEiTyK+Dz5E1J+8o8//BEIX+bakgVSw==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.4", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.4.tgz", + "integrity": "sha512-iSwkdDULCN+Vr8z6uwdlL044GJ/nUmECxP9vu7MzEs4Qma0FwDLYvnvRcyO0ZITuu3Os4FptGUDnhi1kOLSaGw==", + "dependencies": { + "@vue/compiler-core": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.4.tgz", + "integrity": "sha512-OTFcU6vUxUNHBcarzkp4g6d25nvcmDvFDzPRvSrIsByFFPRYN+y3b+j9HxYwt6nlWvGyFCe0roeJdJlfYxbCBg==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.4", + "@vue/compiler-dom": "3.4.4", + "@vue/compiler-ssr": "3.4.4", + "@vue/shared": "3.4.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.4.tgz", + "integrity": "sha512-1DU9DflSSQlx/M61GEBN+NbT/anUki2ooDo9IXfTckCeKA/2IKNhY8KbG3x6zkd3KGrxzteC7de6QL88vEb41Q==", + "dependencies": { + "@vue/compiler-dom": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.4.tgz", + "integrity": "sha512-DFsuJBf6sfhd5SYzJmcBTUG9+EKqjF31Gsk1NJtnpJm9liSZ806XwGJUeNBVQIanax7ODV7Lmk/k17BgxXNuTg==", + "dependencies": { + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.4.tgz", + "integrity": "sha512-zWWwNQAj5JdxrmOA1xegJm+c4VtyIbDEKgQjSb4va5v7gGTCh0ZjvLI+htGFdVXaO9bs2J3C81p5p+6jrPK8Bw==", + "dependencies": { + "@vue/reactivity": "3.4.4", + "@vue/shared": "3.4.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.4.tgz", + "integrity": "sha512-Nlh2ap1J/eJQ6R0g+AIRyGNwpTJQACN0dk8I8FRLH8Ev11DSvfcPOpn4+Kbg5xAMcuq0cHB8zFYxVrOgETrrvg==", + "dependencies": { + "@vue/runtime-core": "3.4.4", + "@vue/shared": "3.4.4", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.4.tgz", + "integrity": "sha512-+AjoiKcC41k7SMJBYkDO9xs79/Of8DiThS9mH5l2MK+EY0to3psI0k+sElvVqQvsoZTjHMEuMz0AEgvm2T+CwA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.4", + "@vue/shared": "3.4.4" + }, + "peerDependencies": { + "vue": "3.4.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.4.tgz", + "integrity": "sha512-abSgiVRhfjfl3JALR/cSuBl74hGJ3SePgf1mKzodf1eMWLwHZbfEGxT2cNJSsNiw44jEgrO7bNkhchaWA7RwNw==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aos": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/aos/-/aos-2.3.4.tgz", + "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", + "dependencies": { + "classlist-polyfill": "^1.0.3", + "lodash.debounce": "^4.0.6", + "lodash.throttle": "^4.0.1" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/element-plus": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.5.1.tgz", + "integrity": "sha512-ylX9h2U125/nesPlLWgfPkI1rID9EiGROlgf0QkzBUjx+/d4w/YqS+IqZZZC5yvQPhKYu9aMDqEBzOurwn4Cnw==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/particles.vue3": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/particles.vue3/-/particles.vue3-2.12.0.tgz", + "integrity": "sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==", + "deprecated": "@tsparticles/vue3 is the new package for v3, please use that", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0", + "vue": "^3.3.4" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rollup": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", + "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.2", + "@rollup/rollup-android-arm64": "4.9.2", + "@rollup/rollup-darwin-arm64": "4.9.2", + "@rollup/rollup-darwin-x64": "4.9.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", + "@rollup/rollup-linux-arm64-gnu": "4.9.2", + "@rollup/rollup-linux-arm64-musl": "4.9.2", + "@rollup/rollup-linux-riscv64-gnu": "4.9.2", + "@rollup/rollup-linux-x64-gnu": "4.9.2", + "@rollup/rollup-linux-x64-musl": "4.9.2", + "@rollup/rollup-win32-arm64-msvc": "4.9.2", + "@rollup/rollup-win32-ia32-msvc": "4.9.2", + "@rollup/rollup-win32-x64-msvc": "4.9.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsparticles": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tsparticles/-/tsparticles-3.0.3.tgz", + "integrity": "sha512-chClgQd4ePebjMk0UtK91ELPsOCcA7pBvDrzb54Yyzy66S5Ksa8oEhuepCfVAREyrAzn0YVuEue07SXvWXS88Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "@tsparticles/interaction-external-trail": "^3.0.3", + "@tsparticles/plugin-absorbers": "^3.0.3", + "@tsparticles/plugin-emitters": "^3.0.3", + "@tsparticles/plugin-emitters-shape-circle": "^3.0.3", + "@tsparticles/plugin-emitters-shape-square": "^3.0.3", + "@tsparticles/shape-text": "^3.0.3", + "@tsparticles/slim": "^3.0.3", + "@tsparticles/updater-destroy": "^3.0.3", + "@tsparticles/updater-roll": "^3.0.3", + "@tsparticles/updater-tilt": "^3.0.3", + "@tsparticles/updater-twinkle": "^3.0.3", + "@tsparticles/updater-wobble": "^3.0.3" + } + }, + "node_modules/tsparticles-basic": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-basic/-/tsparticles-basic-2.12.0.tgz", + "integrity": "sha512-pN6FBpL0UsIUXjYbiui5+IVsbIItbQGOlwyGV55g6IYJBgdTNXgFX0HRYZGE9ZZ9psEXqzqwLM37zvWnb5AG9g==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0", + "tsparticles-move-base": "^2.12.0", + "tsparticles-shape-circle": "^2.12.0", + "tsparticles-updater-color": "^2.12.0", + "tsparticles-updater-opacity": "^2.12.0", + "tsparticles-updater-out-modes": "^2.12.0", + "tsparticles-updater-size": "^2.12.0" + } + }, + "node_modules/tsparticles-engine": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-engine/-/tsparticles-engine-2.12.0.tgz", + "integrity": "sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true + }, + "node_modules/tsparticles-interaction-external-attract": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.12.0.tgz", + "integrity": "sha512-0roC6D1QkFqMVomcMlTaBrNVjVOpyNzxIUsjMfshk2wUZDAvTNTuWQdUpmsLS4EeSTDN3rzlGNnIuuUQqyBU5w==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-bounce": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.12.0.tgz", + "integrity": "sha512-MMcqKLnQMJ30hubORtdq+4QMldQ3+gJu0bBYsQr9BsThsh8/V0xHc1iokZobqHYVP5tV77mbFBD8Z7iSCf0TMQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-bubble": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.12.0.tgz", + "integrity": "sha512-5kImCSCZlLNccXOHPIi2Yn+rQWTX3sEa/xCHwXW19uHxtILVJlnAweayc8+Zgmb7mo0DscBtWVFXHPxrVPFDUA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-connect": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.12.0.tgz", + "integrity": "sha512-ymzmFPXz6AaA1LAOL5Ihuy7YSQEW8MzuSJzbd0ES13U8XjiU3HlFqlH6WGT1KvXNw6WYoqrZt0T3fKxBW3/C3A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-grab": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.12.0.tgz", + "integrity": "sha512-iQF/A947hSfDNqAjr49PRjyQaeRkYgTYpfNmAf+EfME8RsbapeP/BSyF6mTy0UAFC0hK2A2Hwgw72eT78yhXeQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-pause": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.12.0.tgz", + "integrity": "sha512-4SUikNpsFROHnRqniL+uX2E388YTtfRWqqqZxRhY0BrijH4z04Aii3YqaGhJxfrwDKkTQlIoM2GbFT552QZWjw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-push": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.12.0.tgz", + "integrity": "sha512-kqs3V0dgDKgMoeqbdg+cKH2F+DTrvfCMrPF1MCCUpBCqBiH+TRQpJNNC86EZYHfNUeeLuIM3ttWwIkk2hllR/Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-remove": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.12.0.tgz", + "integrity": "sha512-2eNIrv4m1WB2VfSVj46V2L/J9hNEZnMgFc+A+qmy66C8KzDN1G8aJUAf1inW8JVc0lmo5+WKhzex4X0ZSMghBg==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-repulse": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.12.0.tgz", + "integrity": "sha512-rSzdnmgljeBCj5FPp4AtGxOG9TmTsK3AjQW0vlyd1aG2O5kSqFjR+FuT7rfdSk9LEJGH5SjPFE6cwbuy51uEWA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-external-slow": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.12.0.tgz", + "integrity": "sha512-2IKdMC3om7DttqyroMtO//xNdF0NvJL/Lx7LDo08VpfTgJJozxU+JAUT8XVT7urxhaDzbxSSIROc79epESROtA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-attract": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.12.0.tgz", + "integrity": "sha512-Hl8qwuwF9aLq3FOkAW+Zomu7Gb8IKs6Y3tFQUQScDmrrSCaeRt2EGklAiwgxwgntmqzL7hbMWNx06CHHcUQKdQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-collisions": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.12.0.tgz", + "integrity": "sha512-Se9nPWlyPxdsnHgR6ap4YUImAu3W5MeGKJaQMiQpm1vW8lSMOUejI1n1ioIaQth9weKGKnD9rvcNn76sFlzGBA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-interaction-particles-links": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.12.0.tgz", + "integrity": "sha512-e7I8gRs4rmKfcsHONXMkJnymRWpxHmeaJIo4g2NaDRjIgeb2AcJSWKWZvrsoLnm7zvaf/cMQlbN6vQwCixYq3A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-move-base": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-move-base/-/tsparticles-move-base-2.12.0.tgz", + "integrity": "sha512-oSogCDougIImq+iRtIFJD0YFArlorSi8IW3HD2gO3USkH+aNn3ZqZNTqp321uB08K34HpS263DTbhLHa/D6BWw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-move-parallax": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-move-parallax/-/tsparticles-move-parallax-2.12.0.tgz", + "integrity": "sha512-58CYXaX8Ih5rNtYhpnH0YwU4Ks7gVZMREGUJtmjhuYN+OFr9FVdF3oDIJ9N6gY5a5AnAKz8f5j5qpucoPRcYrQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-particles.js": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-particles.js/-/tsparticles-particles.js-2.12.0.tgz", + "integrity": "sha512-LyOuvYdhbUScmA4iDgV3LxA0HzY1DnOwQUy3NrPYO393S2YwdDjdwMod6Btq7EBUjg9FVIh+sZRizgV5elV2dg==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-plugin-easing-quad": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.12.0.tgz", + "integrity": "sha512-2mNqez5pydDewMIUWaUhY5cNQ80IUOYiujwG6qx9spTq1D6EEPLbRNAEL8/ecPdn2j1Um3iWSx6lo340rPkv4Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-circle": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-circle/-/tsparticles-shape-circle-2.12.0.tgz", + "integrity": "sha512-L6OngbAlbadG7b783x16ns3+SZ7i0SSB66M8xGa5/k+YcY7zm8zG0uPt1Hd+xQDR2aNA3RngVM10O23/Lwk65Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-image": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-image/-/tsparticles-shape-image-2.12.0.tgz", + "integrity": "sha512-iCkSdUVa40DxhkkYjYuYHr9MJGVw+QnQuN5UC+e/yBgJQY+1tQL8UH0+YU/h0GHTzh5Sm+y+g51gOFxHt1dj7Q==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-line": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-line/-/tsparticles-shape-line-2.12.0.tgz", + "integrity": "sha512-RcpKmmpKlk+R8mM5wA2v64Lv1jvXtU4SrBDv3vbdRodKbKaWGGzymzav1Q0hYyDyUZgplEK/a5ZwrfrOwmgYGA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-polygon": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.12.0.tgz", + "integrity": "sha512-5YEy7HVMt1Obxd/jnlsjajchAlYMr9eRZWN+lSjcFSH6Ibra7h59YuJVnwxOxAobpijGxsNiBX0PuGQnB47pmA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-square": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-square/-/tsparticles-shape-square-2.12.0.tgz", + "integrity": "sha512-33vfajHqmlODKaUzyPI/aVhnAOT09V7nfEPNl8DD0cfiNikEuPkbFqgJezJuE55ebtVo7BZPDA9o7GYbWxQNuw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-star": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-star/-/tsparticles-shape-star-2.12.0.tgz", + "integrity": "sha512-4sfG/BBqm2qBnPLASl2L5aBfCx86cmZLXeh49Un+TIR1F5Qh4XUFsahgVOG0vkZQa+rOsZPEH04xY5feWmj90g==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-shape-text": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-shape-text/-/tsparticles-shape-text-2.12.0.tgz", + "integrity": "sha512-v2/FCA+hyTbDqp2ymFOe97h/NFb2eezECMrdirHWew3E3qlvj9S/xBibjbpZva2gnXcasBwxn0+LxKbgGdP0rA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-slim": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-slim/-/tsparticles-slim-2.12.0.tgz", + "integrity": "sha512-27w9aGAAAPKHvP4LHzWFpyqu7wKyulayyaZ/L6Tuuejy4KP4BBEB4rY5GG91yvAPsLtr6rwWAn3yS+uxnBDpkA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "dependencies": { + "tsparticles-basic": "^2.12.0", + "tsparticles-engine": "^2.12.0", + "tsparticles-interaction-external-attract": "^2.12.0", + "tsparticles-interaction-external-bounce": "^2.12.0", + "tsparticles-interaction-external-bubble": "^2.12.0", + "tsparticles-interaction-external-connect": "^2.12.0", + "tsparticles-interaction-external-grab": "^2.12.0", + "tsparticles-interaction-external-pause": "^2.12.0", + "tsparticles-interaction-external-push": "^2.12.0", + "tsparticles-interaction-external-remove": "^2.12.0", + "tsparticles-interaction-external-repulse": "^2.12.0", + "tsparticles-interaction-external-slow": "^2.12.0", + "tsparticles-interaction-particles-attract": "^2.12.0", + "tsparticles-interaction-particles-collisions": "^2.12.0", + "tsparticles-interaction-particles-links": "^2.12.0", + "tsparticles-move-base": "^2.12.0", + "tsparticles-move-parallax": "^2.12.0", + "tsparticles-particles.js": "^2.12.0", + "tsparticles-plugin-easing-quad": "^2.12.0", + "tsparticles-shape-circle": "^2.12.0", + "tsparticles-shape-image": "^2.12.0", + "tsparticles-shape-line": "^2.12.0", + "tsparticles-shape-polygon": "^2.12.0", + "tsparticles-shape-square": "^2.12.0", + "tsparticles-shape-star": "^2.12.0", + "tsparticles-shape-text": "^2.12.0", + "tsparticles-updater-color": "^2.12.0", + "tsparticles-updater-life": "^2.12.0", + "tsparticles-updater-opacity": "^2.12.0", + "tsparticles-updater-out-modes": "^2.12.0", + "tsparticles-updater-rotate": "^2.12.0", + "tsparticles-updater-size": "^2.12.0", + "tsparticles-updater-stroke-color": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-color": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-color/-/tsparticles-updater-color-2.12.0.tgz", + "integrity": "sha512-KcG3a8zd0f8CTiOrylXGChBrjhKcchvDJjx9sp5qpwQK61JlNojNCU35xoaSk2eEHeOvFjh0o3CXWUmYPUcBTQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-life": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-life/-/tsparticles-updater-life-2.12.0.tgz", + "integrity": "sha512-J7RWGHAZkowBHpcLpmjKsxwnZZJ94oGEL2w+wvW1/+ZLmAiFFF6UgU0rHMC5CbHJT4IPx9cbkYMEHsBkcRJ0Bw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-opacity": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.12.0.tgz", + "integrity": "sha512-YUjMsgHdaYi4HN89LLogboYcCi1o9VGo21upoqxq19yRy0hRCtx2NhH22iHF/i5WrX6jqshN0iuiiNefC53CsA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-out-modes": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.12.0.tgz", + "integrity": "sha512-owBp4Gk0JNlSrmp12XVEeBroDhLZU+Uq3szbWlHGSfcR88W4c/0bt0FiH5bHUqORIkw+m8O56hCjbqwj69kpOQ==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-rotate": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-rotate/-/tsparticles-updater-rotate-2.12.0.tgz", + "integrity": "sha512-waOFlGFmEZOzsQg4C4VSejNVXGf4dMf3fsnQrEROASGf1FCd8B6WcZau7JtXSTFw0OUGuk8UGz36ETWN72DkCw==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-size": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-size/-/tsparticles-updater-size-2.12.0.tgz", + "integrity": "sha512-B0yRdEDd/qZXCGDL/ussHfx5YJ9UhTqNvmS5X2rR2hiZhBAE2fmsXLeWkdtF2QusjPeEqFDxrkGiLOsh6poqRA==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/tsparticles-updater-stroke-color": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.12.0.tgz", + "integrity": "sha512-MPou1ZDxsuVq6SN1fbX+aI5yrs6FyP2iPCqqttpNbWyL+R6fik1rL0ab/x02B57liDXqGKYomIbBQVP3zUTW1A==", + "deprecated": "starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name", + "dependencies": { + "tsparticles-engine": "^2.12.0" + } + }, + "node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.4.tgz", + "integrity": "sha512-suZXgDVT8lRNhKmxdkwOsR0oyUi8is7mtqI18qW97JLoyorEbE9B2Sb4Ws/mR/+0AgA/JUtsv1ytlRSH3/pDIA==", + "dependencies": { + "@vue/compiler-dom": "3.4.4", + "@vue/compiler-sfc": "3.4.4", + "@vue/runtime-dom": "3.4.4", + "@vue/server-renderer": "3.4.4", + "@vue/shared": "3.4.4" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-axios": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/vue-axios/-/vue-axios-3.5.2.tgz", + "integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==", + "peerDependencies": { + "axios": "*", + "vue": "^3.0.0 || ^2.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/sfj-vue3/package.json b/sfj-vue3/package.json new file mode 100644 index 0000000..78f5bd5 --- /dev/null +++ b/sfj-vue3/package.json @@ -0,0 +1,35 @@ +{ + "name": "vue_project3", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force" + }, + "dependencies": { + "aos": "^2.3.4", + "axios": "^1.6.5", + "element-plus": "^2.5.1", + "particles.vue3": "^2.12.0", + "tsparticles": "^3.0.3", + "tsparticles-slim": "^2.12.0", + "vue": "^3.3.11", + "vue-axios": "^3.5.2", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/aos": "^3.0.7", + "@types/node": "^18.19.3", + "@vitejs/plugin-vue": "^4.5.2", + "@vue/tsconfig": "^0.5.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.3.0", + "vite": "^5.0.10", + "vue-tsc": "^1.8.25" + } +} diff --git a/sfj-vue3/public/favicon.ico b/sfj-vue3/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae? 5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7 z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{T%b6i9IjI)Ls)S{-*mq<@~R{?$}ZKjf;^k75i_}(2MXt}^SEBVg7AI@28 zo_uPg2V)_e-`2Ois=PYoe%9u*n9({PFR)OnHJPi{dNx>Kx D#iCLfl2 vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/sfj-vue3/src/App.vue b/sfj-vue3/src/App.vue new file mode 100644 index 0000000..ef225f6 --- /dev/null +++ b/sfj-vue3/src/App.vue @@ -0,0 +1,25 @@ + + + + + ++ + + + + + + + + diff --git a/sfj-vue3/src/api/data.ts b/sfj-vue3/src/api/data.ts new file mode 100644 index 0000000..0e94ab4 --- /dev/null +++ b/sfj-vue3/src/api/data.ts @@ -0,0 +1,103 @@ +//定义一个接口用于限制第二页面的数据 +export interface data { + id: number; + url: string; + title: string; + data1:string; + data2:string; + data3:string; +} + +import anquanmao from '../assets/image/anquanmao.jpg' +import banyi from '../assets/image/banyi.jpg' +import duanxiu from '../assets/image/duanxiu.jpg' +import facesb from '../assets/image/facesb.png' +import fall from '../assets/image/fall.jpg' +import fanguangyi from '../assets/image/fanguangyi.jpg' +import fight from '../assets/image/fight.jpg' +import mask from '../assets/image/mask.jpg' +import sleep from '../assets/image/sleep.jpg' +import smoke from '../assets/image/smoke.jpg' +import tuogang from '../assets/image/tuogang.jpg' +import yanwu from '../assets/image/yanwu.jpg' +import zhuapai from '../assets/image/zhuapai.jpg' +import yiliu from '../assets/image/yiliu.jpg' +import weiting from '../assets/image/weiting.jpg' +import zhandao from '../assets/image/zhandao.jpg' +import redlight from '../assets/image/redlight.jpg' +import helmet from '../assets/image/helmet.jpg' +import chepai from '../assets/image/chepai.jpg' +import trafficbz from '../assets/image/trafficbz.jpg' +import pilao from '../assets/image/pilao.jpg' +import yongdu from '../assets/image/yongdu.jpg' +import chedaoxian from '../assets/image/chedaoxian.jpg' +import gongfu from '../assets/image/gongfu.jpg' +import gaokongpw from '../assets/image/gaokongpw.jpg' +import miehuoqi from '../assets/image/miehuoqi.jpg' +import fire from '../assets/image/fire.jpg' +import bike from '../assets/image/e-bike.jpg' +import climb from '../assets/image/climb.jpg' +import playphone from '../assets/image/playphone.jpg' +import gather from '../assets/image/gather.jpg' +import keliu from '../assets/image/keliu.jpg' +import midu from '../assets/image/midu.jpg' +import paihuai from '../assets/image/paihuai.jpg' +import phone from '../assets/image/phone.jpg' + +let data_list:Array = [ + {id:1,url:anquanmao,title:'安全帽识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:2,url:banyi,title:'物品搬移',data1:'建筑地产',data2:'智慧银行',data3:'建筑地产'}, + {id:3,url:duanxiu,title:'短袖短裤识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:4,url:facesb,title:'人脸识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:5,url:fall,title:'摔倒检测',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:6,url:fanguangyi,title:'反光衣识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:7,url:fight,title:'打架识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:8,url:mask,title:'戴口罩识别',data1:'建筑地产',data2:'建筑地产',data3:'建筑地产'}, + {id:9,url:sleep,title:'睡岗识别',data1:'建筑地产',data2:'智慧园区',data3:'建筑地产'}, + {id:10,url:smoke,title:'抽烟识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:11,url:tuogang,title:'脱岗检测',data1:'建筑地产',data2:'智慧交通',data3:'智慧银行'}, + {id:12,url:yanwu,title:'烟雾识别',data1:'建筑地产',data2:'智慧园区',data3:'智慧零售'}, + {id:13,url:zhuapai,title:'人脸抓拍',data1:'建筑地产',data2:'智慧园区',data3:'智慧银行'}, + {id:14,url:yiliu,title:'物品遗留',data1:'建筑地产',data2:'智慧银行',data3:'建筑地产'}, + {id:15,url:weiting,title:'车辆违停识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:16,url:zhandao,title:'机动车占道识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:17,url:redlight,title:'行人闯红灯识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:18,url:helmet,title:'电动车头盔识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:19,url:chepai,title:'车牌识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:20,url:mask,title:'流量和方向异常检测',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:21,url:redlight,title:'交通灯识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:22,url:trafficbz,title:'交通标志识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:23,url:pilao,title:'人员疲劳检测',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:24,url:yongdu,title:'交通拥堵识别',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:25,url:chedaoxian,title:'车道线',data1:'智慧交通',data2:'智慧交通',data3:'智慧交通'}, + {id:26,url:tuogang,title:'离岗识别',data1:'建筑地产',data2:'智慧交通',data3:'智慧银行'}, + {id:27,url:gongfu,title:'工服识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:28,url:gaokongpw,title:'高空抛物识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:29,url:fire,title:'火焰识别',data1:'智慧园区',data2:'智慧零售',data3:'智慧银行'}, + {id:30,url:bike,title:'电梯间电动车识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:31,url:climb,title:'攀爬识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:32,url:playphone,title:'玩手机检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:33,url:smoke,title:'入侵检测',data1:'智慧园区',data2:'智慧零售',data3:'智慧园区'}, + {id:34,url:gather,title:'聚集发散检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:35,url:miehuoqi,title:'灭火器识别',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:36,url:gather,title:'聚众检测',data1:'智慧园区',data2:'智慧园区',data3:'智慧园区'}, + {id:37,url:keliu,title:'客流特征识别',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:38,url:midu,title:'客流密度统计',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:39,url:keliu,title:'客流统计',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:40,url:facesb,title:'人员热力图',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:41,url:fall,title:'跌倒检测',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:42,url:fight,title:'打架、剧烈运动',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:43,url:fight,title:'人员尾随识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:44,url:mask,title:'间距异常',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:45,url:sleep,title:'堵截识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:46,url:smoke,title:'区域入侵、离开',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:47,url:keliu,title:'人数统计',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:48,url:gather,title:'区域人数统计',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, + {id:49,url:gather,title:'人员聚集',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:50,url:gather,title:'多人侦测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:51,url:paihuai,title:'徘徊检测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:52,url:phone,title:'打电话检测',data1:'智慧零售',data2:'智慧零售',data3:'智慧零售'}, + {id:53,url:fall,title:'表情识别',data1:'智慧银行',data2:'智慧银行',data3:'智慧银行'}, +] + +export {data_list} \ No newline at end of file diff --git a/sfj-vue3/src/api/interface.ts b/sfj-vue3/src/api/interface.ts new file mode 100644 index 0000000..d877f1d --- /dev/null +++ b/sfj-vue3/src/api/interface.ts @@ -0,0 +1,47 @@ +//算法类选择 +export interface Item { + name: string; + url: string; + selected: boolean; +} + +//数据库获得数据 +export interface alList { + algorithmFields: string + algorithmUserCases: string + algorithm_description: string + algorithm_id: number + algorithm_name: string + fieldList:fieldList[] + fieldStr: string + useList:useList[] + userStr: string + length: number +} + +interface alMes { + algorithm_name:string, + fieldList:fieldList[], + page:number, + pagesize:number, + count:number +} + +interface fieldList{ + fieldname:string +} + +interface useList { + usename: string +} + +export class MyClass{ + select:alMes={ + algorithm_name:'', + fieldList:[], + page:1, + pagesize:12, + count:0 + } + list:alList[]=[] +} \ No newline at end of file diff --git a/sfj-vue3/src/api/uesr.ts b/sfj-vue3/src/api/uesr.ts new file mode 100644 index 0000000..66c07f3 --- /dev/null +++ b/sfj-vue3/src/api/uesr.ts @@ -0,0 +1,43 @@ +import { servicesVersion } from "typescript"; +import service from "@/utils/axios"; + +//登录接口 +interface loginData{ + username:string, + password:string +} +export function login(data:any){ + return service({ + url:"/api/auth/login", + method:"post", + data + }) +} +export function logout(){ + return service({ + url:"/api/auth/logout", + method:"get", + }) +} +export function authorize(){ + return service({ + url:"/api/user/me", + method:"get" + }) +} + +export function getAlgorithemList(){ + + return service({ + url:"", + method:"get" + }) +} +//查询所有信息接口 +export function getAllAlgorithm(){ + return service({ + url:"/api/algorithm/findall", + method:"get" + }) +} + diff --git a/sfj-vue3/src/assets/1-1.png b/sfj-vue3/src/assets/1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7837d48cd7ba0b69ab5eca81be5b7aed06f5580e GIT binary patch literal 7575 zcmV;I9cbc-P)+ ++ + + + zR `eH*CgczAFD%IxM*gY$ z=%H&zM@Goy61cPuuD$8D{ldTM@51|d^6|%oeWB$%75ar1;N8OC{PXBsN7zpc^!Luz z^e%GQe&)}Pa{vFlnfZ%WE`I7c9y1fa`U>!OfOVneoxty{h1`Dk{`FN={#Rzq2y){1 zYqZW7 Mr4CEV}dy!neG7h2v4{N7rK=9xL%(;tZp3=Gz` zwyvVAp_<2@PH^<_)3oi`Lf)E2GUn|YjSl86w5+G%_m+?^-)GqSj<#4^w&yr_xR LP6bQn!M jW|sfl+{XHKE0xe12$o#J*yuqFcMW9~t8I^`e#%1521=;k2dJ)HLq0#qQ2!=Z*O)$KA(Mep$_;!N_zPf(5MVn+t1xW`!;nY`$B*TBd2529 zp*TwyHgLQ<&$jK4P+wI;KHE${pT(THek@H$Q#BJTna^O~e_~llN=sLm^X_~>?f%}y z!^uTSh*D}5a365T#Al9EY%5r{L;LXv6%}>7@Nzr5cJ8LOwhVu;g-0IUiXcf%!wQ0~ zA(k!5kTYG}`{_#N%y#kWi#r+YdytZ{%c*VrIHs9o_xHq<%X%{?rJ8~JfxCdxQ?CgD zLI?_$#=e7Ty1HLNcQ@e<%wy~B4n~tN5GbF8vP+5eAL8oUFQdL`B_%<4Ww%9V7Wo^he NAZwa5&1qki&0Z-G;{vZhs4hj>qWh-HlhTz>SW}HB94z>luw5L8lM5ZV@Q0 zVP@3=48ub%?=X^7ES@KcjX3m26o&35ShAFS?gW-);18@pN)6k#a2(KeeUT%?4~Ama z-I0j-KuwMQq7dhI0qeY3h*B!3l=>s!W#G>_g$&cQ$H%~dqZxj^1)lub7OHBS=?qu# z@~it9>L0@^0!TGP 51m}Se zrIe d(SG!QIl zWhlIfc=SmuRYf%BU>0mZAp|I;C=@IJ!|m1X(KPMXgG2eRhQp&(@3yYsT_!{+wFvlk z;A!BBGmSA^8uMFgak(@qD$1ENcPYt{Fztt5MWX@DOyLfsX U5VFMNo}=Y&Dv{7q`c@>H)XyN+Kwpx^QRW&rGig>Sl~DI5b1vix2J)+ z>3@oDR0E1|Bul6-MZt6sLLkQL#9Y=wNUhG$U0>34@2|t*{3i|_I^=pcb@r~r5T#TN z#lr3$p!W6GJ36D(R0Sw2^&)_P&xPYCI!{D6dT1}rP4j3!o*|V8)4b$L%BosPkH+a~ z-$_-;Fn@B-2be#9K1z7mxv!1Es30135eaRhwyK7J*F#~nlVHO Tu|F>}_M+@}yrimvU)~&ya-);|+&lQ+9 z^LmCOM=14VX{eotam8J *|YLm`BTWm_P1W;8e$BF} FK~goKfF6S?e5=(3TLvQ^kt9;Ix+Knlp`ZTk90(KLn2C5qK3 %f$wXxCDelB%*P6$y-3E*nri@-Inzn)6x@VE^OLj$0xu^fPW!6p heJ8#Ae{^kEnfjgK 3YO#|_@s%rlo-J#4^W=!)wErfVSZJ4)B$aq`)Gr*^T##6853l_Sjp=rfe zZqb4Uq%8iP9L>|+n`UGrM`}!REL6hrJ};?Mn$811WT>y5=H@DbzDnk{Ue2u9^RR8G ztSaM{n}ZxbKFq Q)xEq$n$~=oxU6E4XQ@P2lrN@&%jz!4xi+q$J=* z2m#~mNXxQN3Jl#?h9e#ig{)up_7=X<)a2UvcJ+GJgeaw4z^%ZSfhA`ebM)8{4Yegy zR~7diNGZtYZTbf?^oP@=GY)+b4@Y{+h{Z-JE6HH!E&^q(TryX3`>j{--17sd+O^oq zK_GD)g%Fb2b82aBE@jW|0lEjfaqKZh5-yZ&k%)KE+ rfDLi)O44Ai)otgJJDNssNmTDXI`_n>umKqX+o4z8n6=hE8qj1k}})2 zgOsB9_5kze)Sk2sr64ktp{qB|Xv!iSb#puvBob2$^ls(Eku5A=wuF|}MU O0)OXVd9u>hrt z%J=&W0s+^_zb8=0n`pX*1Z=y25F+4l8Gk17>b9<)!ngBT hG_dEFqJ&kWHI5^@YRX$W>Qe)!=fSUK=${FUMuPajNu~Nq8WG zrb$3hS(2wAcz{i>JxfJtnoocF8kR1ZkH;Hi_Ut^zjzu}zegL1RiiX-!`bMVl%5E=< zXQwF**c=ae=?DcGj%DaQ_6*749A%YFpd=@b{DR@Zz06 Kf6p#D4{pXT406j2OStmNCDhh6VVV{Jzd>D%AFtQIaf+Fk zZI2g^2ppxDKCK2R#A%kJ>qX*@wjZ#!Z~JXecwjI+Sv{ZC+GTTdbMvP@^{Fr1bkj{6 z7cX91`n$$vvnB#TXHSa3NEXKdLx)&&kUedOSatad%E~LSY=v^1@dpv)vN;aykI>tn z!&g3ooT?>X& V!JZ=w5B5>lG@Y8pOGv~zX+Q8H$;b(oF0SV0Th}tHWflqzLx-v=ALXT9 z#JIAH3Kw*C4^k5JQdLokJubI$CgQxnFbu-sK6dSRb^9~VJn_IY&pi1vz >IJn0+%kH z%Zin^5RTZCRL^5LU5;{0^0_2O_dZRuzmw^Wf?ICBf~CtAq3a$TWm8$^p}N|KVdyAF z6_<|3dt6FE-n7t!L`sQbynaET8wTlgnyp)3?tN|Zum9=0-~HB)faKZg_MNQm8+YD$ z=N%h2Zv3;AD_1P3t*tw4F3Tzg`iXScb`%4H8A5$yq{qyYpT9vM0ok0SchJkxo*>cT z2;mc3sIT 0rc=o0Iof_G`tom{ef)<%{Kf;}@JR35Rq8w5ZgI^ux6Qrj)?1%g zvT)|2HEUMkc6;7*Y 6V%oEs3`Z2za-*hRgNn5v|NUc+pXhFxF!WsYB-Kf zSJ!d&wCyW&_jdi|*Z=WL-+ZU~eA|R<+H}Ze$^0$4u7A zp7T zx@{eE=gdV&1KYMJFLP60>&NTSaa3_ =C9SMPXy0fev^O~m=hlbgA0)od0mS`0{>ac6GmilMt(E1xeUYbVp$eGuR%kdpR!U9 zLJDl#IhoG(_Q&!2+*FhYaBOv2nk$54Y%I;ro!jUih~o=ZQ(j(;
71jf9Fb@mx8WhwKgL+rLX+S)CN8%R`wYQf(*!7+P|q;C_Qr9S&Ldf9AeT!K z>DxoczUK&dVEwu#uDkw9%E~G+O&d)Ls;fNI)%Y-6I<~FI ZKsgRJYO}!k`#V0g>{miee(%?$2zltC zUA|zY_>87$pVc&Dx@DOt^}8}Tfe@0Bks+*nl!fyfS+iy}hGD#6WNIu=I-RG!wuDU9 zqCY%FUpRwptCO+ijNc$2mM}PU!bk6b#z^!q#}B^DSTe-gD_Xer+U3k>o{eSMIF6#M z#6?3xfS|uvZ9C)2?&ut#rmB>(QXlqsOJqEJAcaH$y*=IR*s+6x?WU?`dQs`W^ZAR! z*tTUm%K15pzxnt_mhXRSO;5fsG!ep4D6J^!TM@2M%BG^ChJ2xnL+uedjz7WLE0(fg z!8}fV4}yL-L4UDH?DOi(nN>=4m6uTe7(>x4j)K=GWXf^a-x;7IR6;!3OLzNA4E7#i z&a6^yx%+w+EnJAEyU6EFJRY6;Iv>@Q-tpq_bT`y8qXr>GF@qY15CUD-hz0bJtD= z1`|})%%IX=G9F9bx~v%A*r%|CCT%(CV{>Qavi|EQ`&&@vpGqO`)pgxx+t!=Z60a9d zQYhqz4fj!94p*+fjA_%Rzv+0}ap(z+plb$^NS K+)=o*DbR^GHvjKA8+T--Zp9~ z3fy$l3RbPU6t6FcX }o=;@8(cDbmnEj`5|CP)%UDam9q?AW=D zp57t6ff~xotH!ggw|-Vl(*cE})T_2_e(lbWto-F$-gK(2&Svlg9^JHOwUGRk)WmgC z>Y8PlZ~aB0m{O)wNs=SI%$rlo>eZK0UjD}TVp$H|y)l}ml_RA_s4q=lI72R9RJ7Z0 z$YoM|^=nTvbEb!zZoZ0|nmSC=!EtN?euL?a0m@1}NKIhd>ZH=ssT@K|d_MO{t58ZI zrH*Ol>FDTS=kC22?n+9_s&Tp8Z-^6Te!gN*H?2aqQtDf}?Rj{^hD#>hGC4WV+1@aL zhaTEx_{-G?bwmG>l=?EI92|Qxf)|NNj6^XD#rU#r?G@v1)|+E&%p%mEW?(Qoo+jHQ zlQGK5YsY&`3YQ^isP|D<>qFNhN(mCl3 Sh9g5|nZ#^$fah;5fErJI?dE zE&q1IhNU~sQhjg0IXf8f=o7oa{gEW@!>&)O0r~O6RTIRLI` 9%AvBR376qMt2klXX4XM{PZq52Y}~l2;~lE$%-{8HOge!_ zA3ad3dF=ZX>JJUWRc)GuNx1|~)5v9WBu2vcJbB)C Y}-P?3(9i7_VEqNfAdas@>V!6 zhwC1Da_2%v$@`@ce;}o 5)X+waO8Ht!Z+V5b`YIiy)C0CYv5$@g+^HT)B*3Fo84GG0=Aa>h!EQS zx~?xeoA}~5ibOnuauO_E+``J`E0CJRvWl$=DIwe+=9O2s6HD4uR8Gh3_KaJ^@3smd z1X9y*EW3c>LCaC!`^1Jz51*sQo-{7ldEiZ(UTbs=-+d_VF$|+(^6^C{lgW@62~!rZ zShsc+Gn$%6rBm$Kv4=xPL- B? zD-i0-2ywlpX>v00Wn#-sW-Lv7xQjWn>WK`EkS%zqu9;SBBA#8GIOf>aLqQJ@-g3*? zuVI`^TyR35m?r17{0DUSYpH3M3L&tqx85QvL~+B`NIZ(y7r^K9W80ItPhc1>OtTP2 z@vthWZ++}zmxkZ*gPa3g6ogFRsi)e?vNoU5HTfq(%4xQ3PqI#sOs2{fLQGhMqfoyP zn)cO?eQ3${b0q#b!9_*L1pezMJ6ojE?-zo*4YxZ`$me
v3( zM;d#!xF`vkz@wXXUW=xEUJ7yT#A(^Hg%A==*KusS*S75kom}BNpZLV(qwj*a=L8ou zApnm&@{-3>Qg*u#>I<4?EK*8MK2EsY6!N*WRPx^)O?~5I@1QMyzHreKGJ!`Q-Bl&r z;yxj?Kh$--uDGs$W;Zsm`9Pt5g%A&X?6zeupI>R;KHf8gOyIF6ch3jy^8&R|(+%&b z#Auq15MbN(KHFAbi}?qi`rM5-<}a|wXNC71ArttoCwAT_g!Y%Zrma_iCN*r^4BJXQ ztX%px@4R{OIc v+HwS&CzK Ur(&n@Ht@qA?(<)0 t8Ky9WDNJDsQ<%aOrZ9ymOyRwX{|6>LDq=oWVi^Dc002ovPDHLkV1l+u{<;7F literal 0 HcmV?d00001 diff --git a/sfj-vue3/src/assets/1-2.png b/sfj-vue3/src/assets/1-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c2451be2afc0daea775d8c8f10ae3fbca8f0292d GIT binary patch literal 7594 zcmV;b9aZ9qP) x%Yond+#>3QxX-I+S+B!C1GLc)}wfJ~wUkQvb>UO^G`;&@e*m%-Po3=0Jz zh;kPoQMoFJ%mETIkA#ffNq2glhtsFeu!pMm!|84kGIhqrclG~ER(e;}dFuJ^dZwz{ zFoF?`U<4x=!3ah$f)R{h1S1&1|1a3Et^3nkcScVdZaIzwa<~OJ8qivcEnB+gVw-=l z<2<)@Yun`Emg#UIhFgFE-1kUReqS=}%<(zNH^1_g{N6+9yS=LCo5~B^r?d!z#xPV% zAkDd=tR!Q}v6A;#!5nS@0PcReI?z&|@eA7t-P{}Vy?6IRy+6MDj`a72()YiAuctop z#0OWDm-)j}r{pTzcIDFLjfHVrO#=Sy2pRSjvT&g`mhVV>KN_{}K^VewB2=&c@&CO2 z+9Nj}sNaLX)5Y~|JvUcZE&oP#u%$RXZKB>$(~HlN`h;nDGP`Jedq*Vr+m49y*l+I+ zHy^M094UsKklX(AgV~N%`Z`8tSa~tM^wnEMd&A$JYia4eUI?N0)#uLdFPhlvRJ_>M zy5hu5Yu=%v;tYN57iZ~l w*tDfxPCapwh`G62IwL$XrQp3k+ ugR&`ZPNq28UxTtiZZm$2c-m?A~QBY8Dz&;(ViK5Mwt4_=<$WYTx`I4xst`|@I zehqisIZHRUM)jkQtucgQ5lv>R^z7a#D;GcfNYnV1CBTQfk8}4gdrydazR%@l+6(Ub zdV1@zoaaz6?1Z?U=S6#}yq%j{jLJ>F6IyGeJaF(=UXdC8;KN!~yE7)Ua*~veABE$1 z;^E({7ty|iEG{k61;x3la{KdQ%ep`4NO!F{wrIY!`xtlpq~^A^Xy|T*%!?)T%m<(D zy7|tVv%8PwT!(^T4|@$GM7(#Evg6wkGDskhgJJmg*|tOL46XIouKZlZW5J*${eD4D zR~I|BR+5NCNy{EX;h6CR0z1Xxe_bzEEc&^Obk~ZUoSa^*b?5G5Rc)!dpr^Ad&viX) z*Z2AQrmSE8;whbeTqb=04EqWJ(8@un1nC(QRCeBt(v83DecXR&tuOa9cOf|4AFzle zJd^^z-$W@*Q(Yrn9bMS*m)NxK_h^j>1pFwa5ke$heDTHZ-N) `Jz_tzh!Wvvepu zS5#NN`K9%X|NIZ&Z^v=!d*Ks6h==JfK*}J#K&DbEEG=K!pj=w(X~6fjX1*Z^Y7I(x z2*C3sS_@3WBM>xk?F4O2n=uT5Wd(2?2iJ88h0-!#ef6FBMMWn(KW2=G0~pdE+SSL- zO{?gO{!3SG{G-Uq^bh+A8FrK9c}W7{d8R)!6?B|}lJWZFGw(m+dk^&87K?fR3F=MY zdLamUDz#{mNe>WsPA$nqHA!3HI2y~61cPZvX%dgeaa|VxpU>wnDlUF1D~o4(dhF8y zl!ubiq`jp|?ArEEkrpn*Fns%r>W(Ldoe%(2n{sTINhe${CY^jP>G`LYc1Ht`KJkM1 z<+h!oNcXEr2!Z2x?5yb^ne3&j?Kw_8v5GmT7vQ>(v=z2(W7`fTqe}Vo`QN3W_yQa! ziPjJdafOuTYrVbRqqzlv0;Ltoa~L=I5_ih<8*rTX@aln2fXOlpKhd6dlrY8`Elslx zE!OGcvWW!KbJ(y|vvr5!%o&n%XG@9;BtD-(`Gh=XoRY_9&%2k4FPzJVTcT{<`W`(! zNtD)@rpZr#`Un?Xco{Fg_%5%$@*tpy$2CBPVaVGmCgrkuYcHTNtsp{J2Nv`=Vb}@j z>T;9d3D0v;O3|>ZMs&0^Q#7WOqSA?YW;(CGuUNg&W8Q3!vu6mRNgsFIelC+HrcvL} zOCsSgWl|PPS2W`|4yT 3=S;%31H}501Va|CE6^V;J6tC!`g)@{ zj^holHip?`X WoR zsIE77XK@P+jXju#i{~jITNF@8&*8d DIp` NxRx^YTIs!=anwPKefe z4sa(hA1tA@Mky0140^l%MR&&{rk^^W?ELddBor54JdL??^2o^+Y~I#OXJ?#n2*N>+ z=U%AB^CWo%>3F)CcnmZU2-;{P%#+VllbNoG#~d!bxQv=zT?7Kzj2;!@bC*maEga^B z7v3T}`wRF2=~$MT9}4sJo^ESib6fn^mJGa*n=2y6Q$NSeWNEF(X{{dt{smk?e_?aL zmJ1TJHNQ$vcMav^d$|ASbNJ~GPiInj9!u6byt}lWL@a^wY#v|mA^&`>m2u@|`28DM z@y>tHQ1dRrus~}XYgghp8#w9oxtO66r0Hk#<_?MrEh=|(vgq9=lqb3Fi{;EbH6M+I zlop=nVJE>b%nHj4JmD(u_4?+-C0gs__TnD%AJST90apV*0801YQZev;Xl+tHF-%QO zjOGtJXlqWeu`R*YaFo~HY9%eJ0Mp#X`)~f3>g{g;5YCtj%477{GbkDNJxa!1jF1*% zE2d+|yLjvUjVxQWh8wOa2f#GbFwFp33v4@r>vRGW0B{@^gupV5S!n&YmR9HamKOcX z!b0)EF;deYju|0ZYYVst_z^I3_h $nz zk`Ps!A7aOrm$2;^Qd;B{&Y^hp85EbDOm^YL7*-lud3df(dt)`7-43CmQ}L@-e!HNG zaL8tCSq_mt7a5#LN6RBL*Dpo<$GLmR=qMKuMj&8bpG>Orn_8Sd#!3Ead||ldSn2JU z5Tdo74%`KNk$srO&D)wOF3KP`J8hr++gf9|PLhBh9(wcxB8eOdN2Rg-!@u+P%M0l1 zZ37@9tAf#EuVn1x%P1}_NBTmb1 >Z7dJH6|83jW^W(;e zqrSg#R0+{q7X#k`ZUpl8*KSmC7Qx{D6R~K_=A~C^SiHQ4?A%NevG-a2&f|2nZUrDc zV+;kwmoRqnd`iYmCm2pgBM~SPv2Gfxx6<0&h-2&i%5fYiJ-Q+gOBkFqv4XYR4YZb+ zmVqyjOIB_ ~-R!r7cQEx}RVmMM8E~@POmh*2VE}(&Xet*#5z<+1c+W{DB 7!YU#t{tPjaVL#6JBY=SNNHghaiZNzh&O#m&I!*^Qjo`(0!e0?0n$R^(op?R z)-Ac0hMHyEbomPiAmFp``+R8ik)Ac6l)`Zw1OmU`nww18b8738f85oSe5kD0zxinB z@`wo0T1()3QV#p<{k7}vjuG$~gM{o3$MMh_5a4+>0C|NubTltu)4Kn`b6pI>BERSy z3QIo6gsJC~Q(THPd?@7sims*_>Z>d1jr1afg=rWh6B}r*TS%m5JB6c9V^Ud&f;=Bm znrNV>eFN*3+)MTLmvQVw%AbjWpaL`>ks$>1MH4i&bTYoI7$n%XgOI`(^!dJOC)LHZ z_0HqHI`*4sV=_DUn&ctiunFlei+>xq0oX&+-92%F0SmuBHT>lAy|-lh`dpe@V{G3M z83=&ME1XK{#Cc3P TUiu&*yCW8JscVQ*Ti=b8CZ5s=G|ID>GW~~)pEeJK!GsgOOv$(l=x%MKZf6s* zSQO8Lx|(X*np3r|!ZGDofi%WUI)$8~anx-26I<3jL}y1G< j+janaz7XN`B04*E0?^(Oqc^HCq#)Xtq`t9(@nuCwDKHF4TF{UBn75Ep z;CUWOYYfvm(NyaB>e}QRRl8#MOe_n%f2jH$G9g;)G~hB)VeHi1pCuA5hAFU21AvP1 z0>sA-w8Y{r%`I{28~aEmJ(9LZTF3(3pBxI4ruuH8J#R32;$*V(O7Mq9QCL<)Ms5f7 zJGK#vv>~M;kw{Wgxt)%dCPs}fC%d4Ow2T}oPQ96o+(MM=FuMG5Of!H|9xb(Rv0?cy zsi}N(P@Xa4&SK`=pV3;slqGNc7eWa7Vh%g1BV=U=GBW(+=Vu`0NAu7hBSQc^kr;l< z#PV6Vj)M?V`hETjl1cmQ>gvRk%Je@vVT`C8s-B0Gsb6^Eg`-!kTJ=2e?8nIfsNC5` zXJ_mqL50}sfKla+4k~wakxY6BAqWLSNNJFf?jt+fkLM|rr-<}K*t&KV+tx3oue%Yg z6~Xj8%1@d_X?exq_)=Q*Mq+H=u#WBPmeAc^k1#C8lwZl%sn=o{0lM2avgDPU`PU1d zA0#6XC}8pl-{OM#3n?s}htmCmYMqLtJdcLvDD@4!1T24QF1sO>KZ$|=(9;toX*+{| zQ!2G5V;C|RPWRv5)zS3!_kVQ%bwklJ3~_~o!{Me!AAR(hi!QpT;H nHN|I}I#f*+MkxfFWpaZl$}UlaeuI z6qZgP5YEA$mI(;7PU0k1WBEUYCX %A4; EW%n>RG?B1J_j;hD2*cC@sXOvEvD+ zhxlOiT9nsE!;bIbdOk|V%*Pj;fsi3Q*CCv4(c1U~yLP-j_ >h4i!_+1VK= zrBY^0r~JHOSZJ-;wq>Kc ;*tqgnRDJlrD6Ix%y7z&nIcM%=BoZHO