From 8359ab14eaacf104231e37d1a70c695b975969d8 Mon Sep 17 00:00:00 2001 From: Yuu Ottosoka Date: Tue, 10 Jun 2025 00:28:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20yclients=20(=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D0=B0=D0=BF=D0=B8)=20=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BE=D1=84=D0=B5?= =?UTF-8?q?=D1=80=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierignore | 1 + package-lock.json | 36 ++++++++ package.json | 2 + public/docs/oferta.pdf | Bin 0 -> 34087 bytes src/assets/icons/Spinner.tsx | 15 ++++ src/components/Drawer.tsx | 81 ++++++++++++++++++ src/components/Footer.astro | 7 ++ .../services/CharachteristicCard.tsx | 7 +- src/components/services/Services.tsx | 1 + .../yclients-widget/YclientsWidget.tsx | 23 +++++ .../yclients-widget/YclientsWidgetButton.tsx | 11 +++ src/i18n/ui.ts | 8 +- src/libs/use-toggle.ts | 7 ++ src/pages/index.astro | 4 +- src/stores/yclientsWidgetStore.ts | 6 ++ 15 files changed, 202 insertions(+), 7 deletions(-) create mode 100644 .prettierignore create mode 100644 public/docs/oferta.pdf create mode 100644 src/assets/icons/Spinner.tsx create mode 100644 src/components/Drawer.tsx create mode 100644 src/components/yclients-widget/YclientsWidget.tsx create mode 100644 src/components/yclients-widget/YclientsWidgetButton.tsx create mode 100644 src/libs/use-toggle.ts create mode 100644 src/stores/yclientsWidgetStore.ts diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c20b5f5..5029acf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,12 @@ "dependencies": { "@astrojs/react": "^4.2.7", "@astrojs/tailwind": "^6.0.2", + "@nanostores/react": "^1.0.0", "@tailwindcss/vite": "^4.1.6", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "astro": "^5.7.12", + "nanostores": "^1.0.1", "react": "^19.1.0", "react-dom": "^19.1.0", "swiper": "^11.2.6", @@ -1616,6 +1618,25 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nanostores/react": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-1.0.0.tgz", + "integrity": "sha512-eDduyNy+lbQJMg6XxZ/YssQqF6b4OXMFEZMYKPJCCmBevp1lg0g+4ZRi94qGHirMtsNfAWKNwsjOhC+q1gvC+A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "nanostores": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^1.0.0", + "react": ">=18.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7375,6 +7396,21 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nanostores": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.0.1.tgz", + "integrity": "sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^20.0.0 || >=22.0.0" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", diff --git a/package.json b/package.json index c07ad25..2977235 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,12 @@ "dependencies": { "@astrojs/react": "^4.2.7", "@astrojs/tailwind": "^6.0.2", + "@nanostores/react": "^1.0.0", "@tailwindcss/vite": "^4.1.6", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "astro": "^5.7.12", + "nanostores": "^1.0.1", "react": "^19.1.0", "react-dom": "^19.1.0", "swiper": "^11.2.6", diff --git a/public/docs/oferta.pdf b/public/docs/oferta.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50f772b10f82965715fc0aecb3e6ef7169f077df GIT binary patch literal 34087 zcmdSAQYN+qP}nr~Y&I8E4;@J;r^!4=W-g=86?D zS7wGXl2l$;l=crD6EtajM0gf~qOqN=gOjwuUji{>8)F9pCu1Xm9}NN{TSI4SV;d&| zGbblIPI`J*S64cR|E+6f@R!ce)*AW`0Rw^UUkhk%ZfJVZKLm_FNksyBQATP80`~u0 zL-X=N8`~KDN98}*|4|h*a5NUR{V_~0ZfxaZ>|}0eKtL~IV`yt+ZevP7uV!u|VB={1 ze=}qatc`!n{vn`Oa{lY&ZugT={t185|A~H(A6x&eDyIKdmCz6LL&1^Y&wn*e#@NW* zK+x8WKZ)8~h8yQh^D<@-z|F}-n z>c=C(#y_{;_&?s4HnuT!G9%#NVE>OB9Gx7D4XmNvGOU+mEYC$zhHg9g0+VQU*d32# zfDL2rfHfWhi=3`4saw04>tZuSy1YL#x?2L9z=Ma~NIp&WI82wGr{SmPZ`UdS>2mMM zw`(1E#r@p6viSEtR$URc!{(?J95~O*hw7gLqSfX~KmP7eQEZ1Sy1~vSFz-yLQ^#{L? zyblQ<6<@3^(+22=z}G*%5&Rp7SCB6PKo9-_{EPnw5Fmzc2mTJ?e*&?6;_g!zgl`Q0R_vAdivlo!e;ECe|A7cd;Mk?95q8f!ZLs>-<)yR9wE}RxT=(T~`msgN`Jr3=BaT1V`@>I}=kYgB-4D%d zyzb?gAMy3MJ^$kIxn}thdLEx@)X%!FH^5^>_j7gD<1_Ed{&Uy-{`1xvy-)M*vnCsj zPv!K#?f1T#51#{kwC*gHooB2c(PjDpc7K4`ADQ}*&6*dMX91u5V)*cFCZB8n{=4_t zH`td&2wU=kLz05}xGDGTY5n(T_b%M&4~7#6dfe8i`IpZQH{ML=#4P{_!6--A&sgza z@B4p^8m#{xIt)f87M7nO;s5DA{tz%TF){wXdys-oD18)_CUCFoN-fLkMX9IGdW5Ec z08n5=3nF3ufRKMs&_T2`bpJ-MP=Mq9{R0x@k0Avn3Jrr}Owm_fAQ03a!sHJI8U{o0 z5;gK-Cn^a4-YAp(HSB)<`JG*)sFQfrp7F?aoTWt&fl!w#5+Vd9gfBi$amLsVv%vu| zJaQWyor%{)`1iM93m4A$@U#!rZ<)|3fe@Tv%TA-Wf?-pqY#vlX=;f0|iRejc_oEJW zEJ7bTL3jX%``!wagp6J_znM1S2ahM?MvZlRhFvFC6*4*B*TTkDAUw~n<@emlWBhbh zAFBzIQ;7hwC;ul19$uF#CtXw%0_8ql{O5s{Ve%o_c3TMTcf>ZSG+yf?CAR521<1=1 zQ$Y6D!N6(fAfRs@7vTR#S~O+t)?%RlUD}7Z0mCq>by^r!-m42^H(hT-_y}Hfg9m$!s|;t8Gtelzkd z_lp95(;qy?*9@Tz9ZvK)m(YxYivKy^-~@;nCz79d*1rS+73dIO5I%p_4Auj5NH1b2 z&)$qX?H^el5;K&HsM3t`1BC}HPgEBF{EQPb2v4XOEUnmdE~*)+W?+_Bq8W>(|56@R!*7-RM>7x)AZy|DnQ$|v zHNU1jYyKV@<><8CN8U1_^jo?XDqs7_e_Sj^_zj#eS6(6Mw+?e)SC@inGZHUGU=~Mb z6eHO3#hAQ+Ao3F`yr?H3Y>pLwM`2$g&VZ}pelwmYqmkH7Xj|e#PC@`XmN^+uva*{ zay?e8K$&T?P#vh*0kgORQZwccz+$7n8c?%?+*$GgxuhF*bqEFQ@d-UI(fnHEJMZZ; z(g>OJ>H?gnpwIdbGt2DzuFT7UeAXRRzcQtKgSi4ddWqk1&_!!?UW7J?lykA1;yhE* zdou^6N~5oeK;#Q0fT}Q51lQA7Tmz7};g6o`I^u7k7i|glzyX{1wV?8wxDP;iquSUYtz=m$9>aMIZ6r zLeV94ysbUNG04tGb+djnxVYV+Aumq+O2mhMcpOKdbPKy#OOi%0cqxq1|=$ zn+m58te?XcZ}BDdA}CKW$OivNGiE(HGI|;`N7sNSHw+O& zI;E(;D@tzc;cZbg_R5~IxUq4udbQ~M<)k0KrPJs6COC()w^x@T7LrZ38iDpyV% z>O8Y(J{O8Bs;7mBB>3u@Tdl5K;T+zO105?m?$r{h9MFcV%fd=V#Yn_FaBknOT)b(L zSjbu=MqwbBQUB;hk#2ZZy0NjO{nSpGPfARzqeQzRNTV7)DMY*gnM|(Qmv7IFZrgi% zB~7=5ZHvR(Y;QD(4FR{vhaVOHCNmVOWI?u@^(NJChyOV^$`b!jAFrEMfj>0Z|LA&~ zfMiqJ6Lw2BZC2p9DMc=|6tz>!rBJ1vgg`>2qj!gLCM|< zQmdX|hJ!3Jr#Md}VPT<}rR7XU5nIZv9K$tqPtw3GOmVEDH{eJ(o>{W*$gNIKDIAKZ zM6BKO1X?^{@JFNWR*-W)aN=c>iFM<=8CWl)AHQw+njxj1I8vf_ab{y_W}_TkGliys zIkRmhZuX$#qNAeCVF70m6u$M}6p;G#I@^t(&EPQ&0^f0a^C~wD z;M^^JW$MyYS1rpP&=F6jdvD~^|FGY)Ja=VY>+TjdB;Gz*NjxL=dS_eqIoUzjGD_EE zuX}0WRrda?ylX_3&Yfm|-;n~XIth$73!zJoOuJl%j4LrJF&dRHkigxrgjL^kURKi> z+NXJ5X0$x^JJhnRctDJ7G-J{-**eNii`=tda&~fVlLSvGB^cvyCpq}Du3nGT-)9p; zC0(0j+8jK$EFV- zCGz`5^JnDuxc~kzAN${r7ep=iuFk@vo%Kp=(J1`q9shlDyG;vCvBd!!YcJ3BrXYW# z$u?7TH8px&#m<|Jb=z#7cb9z)#wL&3`tv0ottOw{>TlYWsjknd?P*p#ZqqZn)yeyg z-%fD~oV>Y}%?9m_+Rmj(4ug9Rr4Af%orJoGFpBQtA<6o`lf{OG^Bph;2ZVd!l6Ah*t?zw8}ab2^XQT+Xu$bR;fytP%MKPkSK$- z`YLxV63EA}k#N&v{S@uWE*zbmTpyfnii{tU+S?sAyqUm9{dt}}?)!sHA_npgh|VF^ zV&8XH#2AY-i%SME>u&}q{v%9$(}KQK9d#$c-wEO8}x z%;#PnMlhnkdSSTlNC@*XLPAVTf+-$vu)Y0!Jj{E_lf>=dXN4_|u32_7obJrOtt&IU z3`Y4L`4W?hO+WI#e3QkvTN<|$NIN;UKj~4cK69!?sX&&)(z3l&m$PT5)lhjtHnVBp zEWEah9h>oGrMY94tThdeNcd}ZsBf72)gES0K4_@&CnRRJ?U91Q&43^b=3jujQnIJ2 zk1XAK?cjH?q`UQV{&s&MQ=)4B^Y=9Sy$jaRYlDnur;#7VzWg59V^*LgHO zUOxPy7K-k;bOQ$Scn6YYf{A#8(ymH|)()g>(VU7iYObZO46bpZ7!Giz%yEjTzgJ3uNelMy@yNjTv>+t$yTo zKuV#6$c?o8UYpuY>4;vox0MpNe1|3#dpb<5m8U>z=isVGVlJ@QH{SU|26x9YqG`)% z7e4m4DyMe6gVrpPZ$3LtAQXR_(y$El)5wEgf2V_k=_&7)2qVZsJSccSYA+#Ov=s;-l~WZDoslmTJ>0 z&Lr(Zi+rSWq@{5R&SA)IUPr6}gI~FH7d?YoY!q_HnUk@}FMUEvOmSzT8JQOuRjaK! zurKRX2axeMdN!MrZv9mH8M%|;U3MTH)4eP9deQ9C`W{`*@h*6V75BRsHs zAcf@)cWpRQ7O&J03nNO^5a62t+9@Rg>mF%r%{1veBW>dtq#{VA_3Is+gorD|>N^dI z)QCb(JWvOwTMWE~w)&_k9C^N-w^L3b-d{TN0u09#4JuMl(IE$YdCCariO1$y_oU95 zl|%JGf(d~cJIDzo^5o>gOoh*WbHSkAlo5eU+$W_;Lcy@d<`KuNarb=sfQ0#)QT1^Q z0kJ#c!B;0=$erxD>%0Q$XiO z{9cy$@$_#7DtOtM{27&r2p~VUY;j=&CU88rsSl$wGPu5#cS$c!zvWwe8mp>oe(TPk z-@<_$S4_9RyER8h;d6i7J(zuZ8h)kw9y1wy;m$Z!Qs1>DI&d^`PwDJ8E{>=OD$8gm z+D6vQwG*?Dj774`xhXqjFooR@j0sW^3ys{cLXUuh{R7n(6@-hmZ2cuaVcx=q9N;UH zKt2!=iHprfnC0hdni4idPQo-|oEId^KJMi>4BFad>2i{Nl01Zy%K5QByv;LrbC(6O zsO8#m)6*_D#jW{3+r&FfI>=i2^-)|<0N-w0QSH^_v7B+rB!wLRJUsYmyzQr!Y9;rJ z_Zqa7NdI%J!OUvkDrDcvJ)}N_1wkcYbfqkZLLg7I|4B2b*_W6)eWg^JK{9B#>t~I? z6~zsG!84Y!HtWZk2UG$nBj8BTf-Yo7o)E!hzv>2wXMt;h9V&H0!=0@a_Va9DB6t*y z0i&2$vI~%_PtVC^^I~E2lQ(7^%Ql!?Em_*#27^a80Y{VdtmMyPOo|Z;H*R3!DiC{E zWQ54*rRCfWlM4lR+Fa)KFAwGm+<6qHdO8K1&BzYAbdppLJAa!_`Q z;0ga zUvy!}jWpQqv?p7#ls~06xRAW5jtH@kUW%R%G;`X4pfK8?+5PZ4+U=L_74Z>k$0B zBVmj5-5nl}RmqRZ=+y#j-?xEXMOK%;Ka=%*W&x`l`jc^kDk|a06@}Qy+0ZY;rCv(zCJLoYsrdQ~vo$+jDB0I)cq;#K1Y$buBOCVHb3j)s=oYb< zxrU&oX{jY-md$9q@o_RZ82!pS}Je6$6(9rE@= zLWQXVb{k~5Gq`y9(!%-6-faCQ^v6gjox7Gp2dMWo<}D&aD8U3hX+~#fE3!c} zuD4@YWqy2))QkpSt0HSoSD$3P-=z_QpXMFcO-=yrn%l96808bMwD< zhT-s(efwSo=s04=Lp6&BFf?)`8`6p7T0K+iIi29_m^u5%?v+D(n@S+Dz&=Dq5wA#& zG%6;3x5L>&+0_otaHD-sH7wjLHSkfv!s*J;b|nW6lu*Ozq+y= zJ$&e|?;H|~6&VM5I<}|3$ZgY1?KJztVMdfSMlev5F9&%Nx32X@U8P1X&slo9=}A>w z+CO`zZW8G#xOV_iee3K1{G`xJa2M?R&>JarkTST567$!nhU-C&ecD#t!GOyw{l>B zoET$PVx$}mjbJrVM-kL`z@TCqitta1R@%Z7MNW%L(C{gYG z)T~BseWla-blA0K^x4q;aK1e~`S|HQkdUSl+f-+=TPeQi7cZFzPu zjNbuRTal2;^1*`lI{t zqK)hD`nmvtED){`At&+Q${{BCr)H#aA~cA;@#c`f$%*X=DQjf=;zzZ)(`k0H3LFPo z6~S~x(KPf3uv;IQ7eF~^#&-5N@XZ(K<4HOnu;cERjeW(EGLJ5O?QEtWW!-XhOduqB__iB}N(uSO=S3a?#-heVMu@cJnPwBt7WEp59YcaQ~ z_rgh)0B))Po$ToGTaZJ(n|)b6Mp3@JZyCOPe9ZfiQ6P{TR@jW5^{YQl7$+m|{!SNV z?h1{tC{B_Cr3AbiNxpeTXN-C5GeYrZJC;wV?Qniz-g=51_OgR5XH@FF>Yvn|8q@wh zPrHwAMxFfleqrSq>CleWkuE0+({xm z#S3HN4rQgKnR=)1f30WQeR=$c6{he*2*iLn4m2(C!D;W$fsfDE)}IC586_9Bd!J6v zci1C_Q0wg-H7m@651)#>#ab17PYVck_=Yrb<_egl7PXBU4?H9` z_bZ#KV^xO`Pzqg&Qw?^}$p4)uEx}aETyihUVUp2~j$r;Pg>r}u+M3dP%k}x!Vsg5@ zbh7@a;Rc3Rj}|^()Lb<~f6k}R=EBqV&a7KcU324$=tk^=!{^KPd*u5f_V1_Mo8CkB z89>q^oojnN$J%s~SS5a$l1d3Qg?(FT$hyFq1wr@<%q_mFx+jMwpvR)9mEHaU<8`>! z&=)iXpwE26}UxE!9m=5$gHXnA-+Dsqd%E6l^$9t>4QyQvy`i1 zcFjqk;N{q<`?tYRz&&kUFh+gyT_H6wIUr*P;o9upZ78}EdZFaY!1+-+5F}2k|xb^2gYZCOM;3JUIM*yx5zr4N)Gh0GlO0C zYez63D{v?%U%YR zS*X}=`5Qt&7V7wNx`es`{pFskSkYj!*956G0J4EU*uPw?L_82r93bA0uk^nAd z--%$%LG9Q{q7y$q2yBno9HOXX#*Y{sJFSTi6qjAaw2tsM7mnIP?tH2=j|2%7IW&`< zh?( zOkC(5Dc)=)Nxab?S!vb1gsZs;cn_VYC_8Vh+3;sZz0=Bb)Yg zY>HHI4V# z4Kk|@+0q?m;Pq^@I%1r&P4DWuRdq>!i}Ou5RD9@n>VAuUt5y$#*nvh3fViB&pK56| z_`3>v!6G`O)901L>K%x7HZa@>P2jd>gb7pJi+ZaZMR6A`G7k2Q?3tqlvn{PJzlS`- z(c8Whx_ry@I=TV_?@)O!7Ri)9WWDTTTLrK^7;v{fZEb7;4Cru_D2h`#A0)XtT{xpe0GT5EBtDujy>M`So#^ zUy3bE(6f=I$326ngl0#9aAy>m;?7|~i`KKu+8AvNCIcFSa$t&jcUSrHTp_Q5d5ypc zIlsZ;?MqwKMlI@`EuLvPssRH8ddk%h?=}VEhFp>U?k_yluAn)RWS;~{suW_}pb@1; zRQTx7Dhd8^{OAV_XL$C$E*TB79)d1{p%`{)mpq%6&ZQAe-0&Zar72aLMSRKk4EFo2 z98||?+E-;~?k+DWZR3xmdWOB6w1B&#bTglw#ePt?|kxQgN?B@vi>VJtv5)d$L zu8D#?kvQ3>S%CWKYeEJe#MJy@vhf?!OV*cHSNgF2<`jFC{laM3z-fW~b^2zW zq|;}HzmlMQA}5lDMufQN_hRubiJ911Kv78Uw!qh7)9P#pHNnh)DUbl=YgN%c*Eu=) zr}=M?o&Jcl%<6K-aX_Xrs&Ze}ICz`sAMeTntkg-%_6WiXrt$FzjM zs%n?P9T0=!eNaZq8_@~YQjh@GTR{7^YR|axo;XzAn4=O}W&tCJ{o*rMe^+iip^DZMr;uLO{UmdM5XUuQ)h}kF}q%QjcvyIiR}XZ5B#|LK+8dVZS}T2!#v0FYBlnk1FqFG1gG7E2z@=s zjqm*%s^e!pZgR4jUnI16t=~zeKZfZyQG+~Tz5o*(=-5k)Pc>h4j{H3agNmweJGd&C zsGnx&RMHb54dRQ0NTP^n&zMR-&koq7M^3>m#VV%d0yZnuG;?+zk~5#L0{t`7&A(7A zwQ^b9T%Qts(n^$iB_ceCUbom8GS5)j&1DbrCKxI%VYnxPU%2d6Uq*PfhOFvaBQU0K zfHavLFHU4mg42#J+e~<$<@;g49>XGD`p@~2ros~ zVzJD{py`<|M?`&#cS9oI1agG|zo&!DlYqBQ1f_b($Z|z#Nx7GhsMZy%OJ?-d_Qwq2 zMOj|X787$-QN{vSjYg5iC9=Lo`4jewd%n`{Ak69>smekBy6YtZ(O-r>oIIpFtUR&d}i&%+hi+s!lEK;&isww_m z>sos%Y@$aQMj1vMMje)mPQ~NmvGMrGOA)CJ-$NS=-t1C!LB9fuu#hVl+K$yEyY{)& zTy2Pidwlf9PVQX7Y4IJU#twsr&3?Hm`R)>Al#(2tdTIg#9FBh_bysvUv5VL_4qg&=NP!$LpVPh~KQXy`(^Q{#2 zcH;Qtx1Y#MNyGR(wA%CqEHpUu7w?xPh9&g;ud8&mr7G`0T;F5QOIn^Nn=NkLwq`XU z5DCjJw_42Kj8=W>oeJIH)kC$&F8yW<<>mWy!0`PFdbCK1`^F2pHd;l@B@KiPS)^Cm ztjs<0e0{4PxwQ7jMwGAF^z}6)bC|6Z4$ek0B+<4Y-l@Hyx`GV8!#X&1g*%hcydL%X z<1z2Lc(}h%=D}cyo8~K)Ih{EHdjqesnP*7I27)dZeVtyS6`=ch`T7B}@w$j`BUk1- zg^5od9Y8y*aU(os<8yp#^0g5WE*>nK0`y5oe^w+SMo12xyf~UWySkRQz$V#dCy&59 zLB#$!w7Y^lwtyH-RMWPTM+|<}fL8k$I@`wl>$Rr^^>CLbNvk3S{z@J%H123dyN6T# za8dU!-)du|nv)`_4!9zv6Z@tx43X(2>MN%`+PhS7#HDMreRw!YJCVz)7QXjZ(A!9U zczlXH;0iZaOxw^%4Jz6-H%fEWEclt#6WezH<=GaB34jXwUl8f6v`u^LRhEhkMSdSB ze3tou7B~4s4tm_()ycrQFq$m1i?z9K&(|_tg`!>zxt?dUS+8`PQrE+n^WRwVTe4Bj z<++hJNj3sk@nc^I<_m5RAsOq|anShlOiWQuP-sc#Td{3nlMc&Nw#vxR)nBmtSJoT1 zz~+>@!*sCdq9OGV?|8Ds9b}Y*;|5)^t>hWH+I~}i8wiMB$hlulc}o!Wwkz*VM6m@ zN(2w{Lt`-FBEurMmYiRr;ewe5s#Xr@zr(`DwFP&Zy0ts64wIKvy0xp%mxsGtzCX2s zKkWfiU0?tU>(6;VZ;r=W$rtF=|9YxFn!Unj}G!MdY%hOgLoZ3QconRI}2V zq6Gu(lq^AEv&SCbyh8o@=cfLl{1MpR_bFIC1DRB4Bq153>{|?hEk5_`%X2VG?Mn>j zSL_VUi{FCf7Wo34-S1_4OSeng;9IlWu-tCWO1`Zs+S7$5|F6XrT;Xo#}w;r&V;N{=lmXieF>>Nv&R!ZM9Y8qk@d^bF8_kdx#;%U`A9H* z>Vp31YgNjpoMr1<#4^XSh`Go++ju2IzJ|jlw>J>0;*m!0#9?E)wc`_@bYJ}X7L=T) zXpq|?uSr3#jHW4B31ba&34;rh3A3oECi9YL_c&#d!6gY|TIG4UcviNoTi)iU^L9x6 zy#N@XdLA6i7o*pGdl_*}e~f-a`-EUP;?S?>X(`^thWFFifHE}ds*OflJ;FY}q`u|S zHe`Mo^n`_X$4;};ZJ9a3V_AKO)*F)N<}A%*7of0*7)V*2v4fF_$+CX=>#84}v#=RN zdh=}kd+uTL(q$b(4|}Q9wIafcyyMRrKj-tWqt;2!=E&>(?TG7bv=;xU3|hN)JI(ZI zGA3L1JKe{}%MkLKV^%ia+^c0k<0u*%-!3l38Z6dsJ}!^rA#etTbt+B=hiJkh3wg5o#Z*yIosyB&9|Zm zasP4-6b%&)kryRUA0|0iwoVS3@Q36;qD_shvU45pWN5Ra_lh_uFl)+6NL{ACiJ$c? zh?JHqSt?c+1PMH_?Kea5H=XYOgsR0ol^AuN3wMY6OOMtbugTq!Z#T7Z(L;2)9JeZ$ zi|Ab+N~1n&u5!V@`-3e(_AhbS=(fFjjy>6^%TK;MVd8K?7sH#o&?>mjfdrqCyHTyc z2t>H(Ia)Le_C!ksYkwsQAZO5V)uV!ok3t4@ng9{MtguPrkH>_P7qInHj%vW>mbm?< zTTI^Ky3cf#wXH7MX+FbO2DeCpUv0RoE@(k|{$uP7zY;FkFY8Va7TIQ8s!G)|t7Hqt zbyy1v6rOl(+?QoIwip=U;>a@T8Inrf?4d=*fZ?~pGojt7s|R@A(zpghd`G~?>G;;J zH+8nhCv26tR~mhw+PE@o1E(}#?2TY+j@de50wbx@3F)^+JgcY0=w}hds=!e<4=!iz zRs=QkbbaX|1*&`c{7RKn&nnNLA+j8iC8~`wl4W(+L(~S95v6I3mE13&NeJ|`?=)*0 za8Ltj^<~b+Cor26XGTJ|7ir+95+HShW($1b4 z4}3J^+2Uulr=LN8f$OvRLhYr;jq8fBk@Q}3P+4(Z4t9gZyU+c)an{`6%<#MvjU*%{ z_6618C#L?=#U6=fxDO>pNyYBH3nl)NdmVW8A{Q$5>dh^W45JW91}ROD;To}2D-h>D0NmH_I^#wUYChADtJ*d2o$ zcVh;UBT;G%b)w=^NulB;jBb>!ldYc?{5ke>$IO<@3-_TzF@cUA=2+-{C)lc-YVE$J z*{d3Ti9G|}5v6ROej3iL#j;9aZhl_5e$hTd*Aahlpj%jd*C<%|Qr0m47W5fyMF0HT zJH0x2yPho;zIFcrgKs(}RD9ygARFvmbP4c2nQGfzx;&lrdMszk&$;BNv}&Ipq_xe7 zYE-~>GRqx<2-BrCe!S{Hrous0hb;G}H$(E@C6$+=f-zWqya-TitO`O3w@5*XWR4-p z%WvhrH8O&zr#ZSs>Aptu&B_4nc&xW{u$S$yfo{uP80bPt&_}A#F`b5VMn7H(G%C_D zEAH$mv}{Gy*}*ZzV)t}&4$8S2l73pI<=f6C%-R>Dz1F|1^BF9+cUYW-ct5NG>9(9j_C78AR`2* zS<@ZK{v;q5{iX?DH8a<6q*#>$eIwBk12xsjOBl5Z%)D12d zDdKhNvXPw1IDbx>DOPZC@KxI8*v-FaC)mpHRg)#IG#{U$*su74Oc;~ZkRi#Ssr7*r zxva&LrsH*R%0W~@R`~}CW6FhnO(Uwtj+Bt#KxrnmS~$5YQW*=Q!BlwR!&nBp{`;fS@pK@=E7nq`PK z=71lKekOWafn0*%rg7qIMqiT?w*YJY`oIMGaF_Q%Xs`=t9ML_Xke9N9O0AHtm9s}F zFPzhU*B*9w$mm$8TWH&8+UVM-Rj6uG)?!;_<8aY*(bQ|~KD#LgsCLWSmLdBlci^TQ zXzE#2K*W?0o}(%Au)4XKbZo6Nx5V>hb({0Q+Hn>*<36XHCc^-kW`gOCnT4YfratcE z(77wpS{zuohxUj3W#X~^GmgLBK-jW8J`-0IQS_ZsHf6~ACv`&zJgh^+LA|dBS6f=L<*(*MbUd0Sn#NX*@K$U^R<8^kEZMtOHrYD} zvia@RQoTxhD@h8B=o>E<^sPEkTD~*9s~fFg9M0~8sMbr1+iwjEW94x8(JjsAEt2wz zn^3}C3eDZk0spE$ zJPM*EPqq>&8H-^21*7Izi99l6#(&HLc^`Dv6S(Z#k$%W8O@U2@sS_@0N$UDr_+9Zj#VBR9v*+MZv%V`bCT%F`8I7X8uL z)l3#;w-R48%WxvZ*+&CY;?xfFld)HmOBe?s_H}cd$E8a@hcku9iX$3KB^f;%$)kjX zR$xR&vNP|FR>+q$-DYq1Qu>yMYRjntlP~C_Fg3=V*V!8MY$e&droG`Wu-EvO-MCT= zCPLplhd6y9|CqZ@3glf}o!OaEpc~&S2M2LX*Or|s4M%!=rUjNaCAJFUP&BN8ywL8m zV>CHEDFaoJ<2ySyTqM}cf3H+4ZMU{? zNem$_%bn|fKz#Cid`_lYKQhw+6@C{*QEAuDS!f3d3+6MF=Ueb>8C~5mNER>TZ%Fwn z8=~UwjW)fhnhgi9RjFYvSMZ1DSp^I{N4`a=FF+N>#&lY;9lVx*&>s-;NqWv-on#yp z=eByP!F1`i#|;qAaX zzbSq40vc?061F_iV>>#HDX!@N4SWl1Gu>tzC;%s)+U_*sO_b z!{)J&CmJg1W?t$rK4L*Cgc;h~J2OnDNWJ`VmzmxfF7x?Ou@54aKtFV)XXfwOYr8Ad z1^ka55nVV6)xYcGFmc(OpI&tAUQ-t;f(c+b?RUk!tq<6^q$9vHHeyN0;bXH z$X^<_TNhNSlud{FsO6~Zg45Mm%;qdysz*luSb_{myR@Gvc$|onxVlQ(u4b{ZKFb>4 z^DOQL9Irc{akzq{)0jb{_`B!knz&Uk`y(hs?nfFCtXad*w7P^zbxkC=^1&Z76doqR zK=3;igv@dlXM%Uuuug=s>~SZgdYuJ4eXJs9ZDUOg z-h~6SHZvJ_->}~ z!`9*xi6S0oiF_*IhmXGtrnx`R^qaFobnvlSvW>he)Oy{Lwz#LgrO|VKn}wJ_xstj% zwXxe~#GP>uKk?(4ZVAJLQb+3yp@Av!G;S%kYHOHSBB&N|RyVy>K5yx*V7WI!!fK4; zE}ycube;h=P)A#2c-3z*s`TheaGm8gPv9EQldC;%OT$nduiVWqTH1PLj*sJl`FKr+aLhqPa$^m86TT}s3lsd%fT|cw;ZLcjTYQ;tE%)%fHTkn^k ztId`m;bF;fuFXu^3wxR=m?I&Ll!s^e$b(dm_cc+wpY2?2UggM&>=G=A?go~^{VXpB z?Nh7|6ua`%yx9>gnHFXoxLcgS>Cg#G>wG0Zwx*{CU_6ns*Pu(WFNJP{-Ye%Gd5sH4}U zLRGVYMsX7<;vLz#I!~i=4N>Q$WlCs&_=gKIpQ>dkm|?334-b9=0p`vff4+1M ztf6Jz8Q$`C={cIMuaU!FEfndmhV?L-ma*8cny#ATU`;N+A3{vmNf;=~&87BQU!}5U zs||NkNr5VX*7-W!Zk2c-;PF^QtGxm|1+QxjpRY2>t|kM&@PfaDQJndQGDvD1f|M$) zEZ^}t5PRrt7xG*EQB7JK(zBk$c%sqN8ciI?V+gT(ap-4Gd<=g_pKagFibjzS^!$pO zRKY%i+$AY*XC+|{0ZLnA;IC{{cwAF}OrOTZ;6LzhunhiXD|GSrVD)JW?~L(7vCP7| ztSs!jQ8C+&uDw4bzU4{TvWOQ}>}-37Cn#bok90jbu4wh5Dh6~5HPC1@5#M%he!&H% zOl9vt6Wxw(YQ@KHj3Ur%-9PU2+Ef1D$cqHQP5m@*E+FmWqCWmH_N8Z6DOyISB@QuN zp5U=W!SF`ma|Og79IjHc(`k-dYz0QHYTJAcmhekN^GsTRg&Byj_+JtBv%fvhOkIi0 z^-3C>_Osf(FA7FjXUTMsM6|M`X&&-ITvm;# z<%ECB?4#PJJwkE8f}`-}UkWg*0hC0%Ez@^xs|khg#;lIB*12a%oVe-WfVNKPyX_uKTsYH`2l%1Qt z)(+CgPw=!t}W^Y|+HqJ_`2sf62Q)w|0GwJNxnPJa^T0*GB@G_e&{w!rL}A zxu}^gR4X@}Xg(&LHVg9cnj z{?EqRC)jqUrtg1s_tw!-C10HQ;I3g{@T4W}?w(G2cha4-YtrtX?jS*i!8N$+V1o}9 z+!@^6A-E?D1cHTqVFqUQ``tZz_U!Mk-#f`k<<_gZx31Kys@wfOyAJ9HzixjJ${BlZ z(cn>?OxtfaI-8ZzD*AKLj`jB|KfE+eNd!4{&nHc)q07JY(^uW9Ef#mXet&fJFGD`6 zDRVFjq;o;0pQw%_<)U9t%t8qLLN(@euN{--9M9V`no;?~i%(?-YKAo(ux!y7R$_6} zJENYI%sh3QjcZN4^uk$yJK5oKap^X?VJ3xb9&@am5-wYdV9(B=(4T^bH?2B$r25*- z-wqww)T;H?S>)ZHk2box_C&>lQ=JwR?#XG^WCptt>BgR-faNXlz49fy>n`nIUbk-t zzNX@j(`zp`-19?jU86aB>c(F=y0>N5*@Dd%f9Ygy+~S9B4pFml4Yy&|jQc!h;Y9IB zUBgz<+8psH?SQfEPc&+Yn>qD|$y(j4srYsSjc0amWa=mGxWIZlXI6h5W_kzyvhW<+ zRO#U2b+xx1-rDeNUaj)7s{7qWsX;C8!}e7#%7PoFaCR;M%?P(@((IJ*aL&uzH5&`x zUP?xP;57Bj^6q+|o7P@Oy|7~VzP#yo3L4xzy6;EI;;l{Zy&wC~x`XQLuyEQWRpi6- z*4#7I;|Kjbc96YwuaEH%w2tfS_u%b}=!H9^{w?QpS*WU%{8Zk3R~$9{cTo9j>&rFv zTwv2VFWR|4iv7J|+s^76<~_B0n*C@jx&FKR@UM+pDNi)YEp@bIG<&a(*Q+m_(lN9@Zyze%w8x39?$z(U_0IM> z@b&V}g57POhvpr2d}eW$V7{#1KXJ4BVWVqr$$Qh&D>Htnsf*9EA32li%xcalARqDK zPQHAbdb;55-IwKK`W*etnyvqRxMw+;vP6IL3}HQgRAA!bf?dCF05@*de&6ri$n7ss zAKc&DDP1*b-pqs4QH?^v+G#!e&&i&${JOTL_}9Jf`Zs@f=-j90C!)5sJW}l_i**3; zw~L!L*&^o?7icBwke7C${pz(fcHK*M$aR`A=lawhvp$?CYh8AUzwz3Aa{~}&*@+Ph zlI}fb2-*Bg|JK0)in08m0aK{$*hR4w>$oTGtZ(=D-Gud$#is{tL0+*gw2tf5?9aIs z#6{imz$lLI)UidNiD8{?l3?>S-JFxbV3$vma}H1bxs!PB)y16mwkPAe_rJG$cgc3~ zw(XB!d3U|a?jEyCnlR;4-5Kc zJzw*%$hUn^&EPXNc@K#>`Y9P3x5Jioqc*+QW!2@oMIR)gRW-e=K! z!YczuvLN``ZyRtP2kjkkPgk3AKkl&2y$O=ZM{Rs!#m{WCbnRyHn78Iti}iUS!bw=$ z5s5>)-CXWZqvE7-^tH>2@;k2o?aP=yeACfc-HqtO^L{&5rk&NH+4djTwNmc&ly}`4 zW(gYl17+T16)1RrQ|H>AgIX(ZKPrFKrpL2la&*J(8N5qXM{sq!-Wc;N{ZI5>{6VHK zEc2eIif_m^YNnKJ?2$cV_$Tb1c4qGi=7Qp9fm@#2+k19F}}dDu1uV&UGkf7_PGhR33GIu7gA9tE$sM7LBaDp z*`c+)uD(hv%37)EboZWm^0vN>)>ogNYq9DpYHw^4c|2pyzH9HQe5}shD@VTg;pU#( zYX>Kv|HSM2NLf*qfPMP?=2%vrrghy%&ZE~|o)U&VE>_K_4>{1V{Ff&Sf=ABTUR(h! z$9y^I8&f_sjKRA@%|3TM-S7ksj%_@%xWS2-W9IGmz42cff10;-)(O(v1{2Lff_%qk zS%2s0Q12=IR-N>LPd1vZq`d8Ur2xHMp}99t-gj8fev5yNWLdX99rrPR{?Vx5;-X$L z)9NDz$#vKHpRn;Fj&I4#6V3K|XREqbcAUkM9Xs|${dUB=5A^H6c_-)mfQS2slTLmZ z*&j2g{q2k6s`i857;4(hc~W}%)q#<7IP)JK7+GFsp0{Xg#`MaI(9|De3O;YD+gLYt z5Hr>LL{*!KFKBHTE(T~!q_DL4rMWNcA2I4kznj@p2^ZST^-Mo^@DkrYP&WAf9o_`2 z@#ja>DJ^c>4$XOU^?Jo*@S&oO72Rs_qe|RG$!*O>l{QD5deCc6aN+s_eaBb}l;pTn zFv^J9841KMja=QD_WaHRJL6N)Sz;X5p=sw%yAdsC52-HuXp?Y+A$N=I*KUf6z9$8HCAVYa>4x@BDDt*2kcmHlyG&pDSH{?TAKT)MIQ<4qZs z$ANX-oA&?RcVX!Gr8SQ^xu()tBj=BscBR#mZo<Opc?gUmp?VCnH6k-ySj+?BQ{cb8uYGdx`02W|Ydtdeyk`kb}?!0{V> ze!14?(#)k9Rlo0}1}0bOxYU$NG-QTJ24YS+-FhP6eJ zE8|Yr4#4W--D=K+t}4&+3RAiJGurbSRDay2FF86zMj?)E8WxY-a}(FUOjiEt%$$s=hXB&dGeRnSJu07 z4qO87jFU$0X-b~E@~TM4+hmO`uUwJY#!}vWaYbFTZr4VBY5M@bBgQ3txV>jsRc7ef zq^lLL+O_WfZ0?#1+O@Y16(2wKC zf8_AbepK%q%N5s1z!LuIYyNvx5f4-#o%_f6+jTYRNpIY1^&Q-h}qH81iF+QNl z;r?{$0YZbemz2;RJ1UJ0BwYu*ZP~+O>KfG%{XRc4R9-F~`ot1n z*ZDy=mvKZd&*lA}{Cs@V~T>077Ed8eB0%Hg3^C?A8lAaP;`)uZpjb%%B zoc+A{@Y5$xpFHY!La|e@bI#7&BRUNWw-qhgwkRWa%Sh3%n%37ly$$poS-q{Yw`5`S z!3Q54d2^)QuS(Ina#Q=)=`jEK{VRhH{_)4OgPacUtT(Q0&3`o`1Jto&M`kvAR{WT+ zrr&_$16B zXO@2~0A1g386|1IkXW#8$+Vpnn^2_&qEev}v%rBDH|M=Lv3i&^Uj~O{wV0UQLDqcg z8^9MN`s}#2W9{Ro zkFTAt$+_&?QP<~mB}WAuTvesZ6lJ}yf7A{WT?2C_2`0fn#n&#cuc{c>=S3O!*kTVa zHlWjnYekW6tNOiPH*jD9*Ri2;!^21|;`V}s=sf1)-0B89HIYAGixua`)@|+DYF^cQ z*BNtsdAHc!#5&%k&G{!|e;)1Z#M9n&h1jycWA|$Z3lWk zyY}GZ(7IYsBvf*?ckBXlcJJ!L7<26P>$oxkr9x{Zv^y9E2S*!V1(AOLjg+10!t@d?wWVes?s-(Z%GHE+Mlz0Bai$CX1Sup!;?MrKy zs;hgxn7M?*AOD>Hj4{1%T(uC<<-z*gA&|K{i?>cAePQQ$FUkx!{JlRH83~1 z%69C?7cw=Yx0n8L)HJ1njUn|?Q@kk%cn@r0bk@3ljXZHqo zJl}rpiL4Xk7botSXWjqv$mOM%dR)s|EO5>By;2R`?m#ObhmJb5zI*>&zNo*i2MFNd&kQ<_Prm< z*!uMB%3t^C7q)-3m@#s$uKCz=N73*1l0DGVm-8k)3_@GF<4h0G4ZqQ^cva1%V$;){k}=nl7Z-ExqTXyT_|Y_iPn}YD!Z#3sdomqb2U}D&j4%{XgS5zMo`%Z_43{MKLLngfDF5lH@o@oK= zy`D9PDDV%xX6+QT2eKzt?Rx#mAAe>aYHUH#&uJ8VmzaDt^HkRd5BnEut`+!3um6P; zVK&(o`v@91;=PMfQT-S)8MdlY(P_>33-Yq1%7>peiV9~i7eIRD-=5O){&HnnoIs|7 zm#*x*^z4_63kx#{D#qd*!)oLt*<5+qwBRO!uFqPeoZpsmq-<(cQ*!5LhX?9rHN?)s z@gF;yUiH`XxNzRIx?H?dG@z`Dzj)BB@TrxT67bXArW$g0?i**RIg(k_c|ot~3m%~- zgBFq%>RFriEZ*1eO5wD!S8Ydx_64pN-t!>6Bf8APWpt`4ZL{u2UfYJeS^F*yXf)n* zt>=1YG?%qFszt1dq}3sRX+seZ9uhWDA1>Nxet z%grBxOLY3h+sxh9QuMZCv-g>LiY@JB8dJSwiSoyxQ=Fy@zNd3u` zK9UB5yEv>jc>dsCNhyys8Em-0^a6fqQoyXZ)8jA`J05kfFZA|&W=`qo zvtz7P3;paduF-_0<2zu7gU9orFI{wSqGbDYgQPuo^w#^gww883I|^LUIyrs+`h%Qb zHXf+$`mXZ+gh6w=9tbgdopb-V^6}9=TfK2J<~{NY|zb z+tH4&wo{>GHc+-hcB_JBR8JttSmgoV$SM`wGev!&F+|R9?39(xBqY zEtmgU_8{W`<=P8a*QK7AXl3H|a_5pA{Siy%P3ZV#QKw@K3157J$Dhi51{?US=_mK- zWW^Bu1U33l3#7Q>l-A{*c(>2NM*~(rbvWAo^!hVN_h5C=9)6D|@l{8Awlw7Ixb;h; z`>F%nk+W7(J2kd6Sa-~pU|&wA7TnXlF8zGeW}%F@=#Sj&y5i{O&C`B9wqMZLVr|^z z)XE*uw0HPB=H|_o#jNLdUK%g{$-mfL-y7LyRoSoCR$gB6!FuuM=w{^l6>T@InsyYu zW`wW*)v9?{((n3B-oW<_ULr@)$L3mBt|k9wo_OI#(`(kcVNS)%*2hz~P{@tsx1Wv) zj~QM$9(4-ncb-McB~7)r z*K9rVbkRFmc-OVNYk#@0Puu2E_LJFxl_OyR;xPli{Mn~I^Dgc14a}+;YP9kEi3jPo zANZ>syip784Qg-E@qXJq`Siu=PH&kFk6cU_bWaY!m<2^NS#%SAKTXw~7 z$2;A6Hvc#_qwFF!gXgnlmv*yd54yBHZ(IsL!PqWii~Ksl%ImWWeCf=?N2~fAoc?A) zZNFzd*L%t&j&_fqzngF+@MeO3e_3gngzvT02~F2tIYN(XFO&u@ZM=8j)Nl7TzL_71 z^z5xa|H`zY>i1qfyTw}64K-g0*oBfJ5hXIQ*O|%XE02!6x$^YkS2x#sUbR?dKV2$% zkL(p5`{$zl)_&I>ymwwLWgovkWrFQK;qdHNy&JajpBb9^u_n`o>3S&l>AmT$_#ft) z0J|dg2d?7Hwp}_NuvjWQwd2H{`L3DzvvFm-EJ^5mNQ_xNv(J-7+jbsbjyarb)=VhO zJqw1j#tgq+;5s$+$IAI9$DiwgvrHJ<{dtRalxEy{p{)PApb+_BBxyGeSK?_?bXCt&RZ}Df-avns^Tta zXD8VHvD2r{o-}mp`AOZnb&zemUb;23sAqd-`RWgMaUjer!6wfNe>vh}hecNdsnyW# zOS)#Glr37AH=W(IEhO1$nMIF2U^BoE=4@*9IILbc*G7D;Zo6g1di1ZP?B`v_LJEq6 zt+n$Oy371c4JYNRrV82>gl^2EwroOmyf+J|c=J9uc-M}Z!@CYY)cg~tLGLW8d!2UXz4zT{K6Q`7$gZL$sAg-m zOExLm_v-v%?t?SSOxFpvTZQ8fw3V@p_MXHrOX~5@a`1q!0gi)=-uw%7B6HUI*SbTi zS?qB?MW-JBspyb!-{e;E(u3$`X!5a5m9GK^MC0@;l(2Kpa;vEQmbyQ*9=V$6RLZta z*4cJsE}nfNd%U~)mlM5yLN%~oJu(l!tN=gmz~qxlR?VNUxj1S6u;FO)aM{rdi|D=c zpc~m!x}E4Xe(62-q{_ulF7$O~a`&>FU3b15RlRuh^FE`k^tvbM zcyvhf^4rwe6MRJUw1=Z7ovjr1c+~M|UFG^A!sMuTmAl=@<0CV`qtT#~%lxa#ksVG; z-QZWLFIhXs)j&sNTy=Gz&ODOc0Y;qhkihMx@MU~<9avB9-BVG%jF>n`_}M>Y^nH7` z6$d4E;f+C0RpWapU?bXkz*`Yxr*xQ}f4J#g@cK8CnoHb>PK=W+AY-hcw!M1Km_r)r zJaAwqZqiBj`Bzs)4V!kYt9+UGZWvFQ-eZ&}V+EvY>|*%(-IZJKwh=w)Jpn2P4alT+ z>^}K!VB#KIyap^PBrDFMFWFPU7 zkgj7+mtIK6ot2Dkch?V_Bw9Y8w60bIn^-uS?6@I#;&68(J~cXl(Y1a)}=f^t=yy-@}m{N?Obx z(ycT4d0r6O>w^6G{@?G}RS4P90*(mRh|ln4X~6?q)>`+!?lI+H|7nU7xEZxwrzuuXux*c7t0s@079Mm6nqj#-dGvc|MseBE zgPmvO4ZuJ%LPp}N^N3kSDwUh0L$6NgY1X6<<{mx0gz4m`57z(Le6d3@KpF4AwOsJwTII!7-Ecqiq@qS+?@Hd})p>uP^Pv=0 z{U!Qz-mEv4UGUF?HjgW**@LmZ$F<(!dky>ZX1_drAK~%y528HR+9xpv|8s*ksM`w% zWBMGuTynBc?*R`6H%5ntSEcv&DZ8`hQRN=$fx#_n+co%dtHqa!u65~NbxSjfcJr3) zLEl;MsB*!>%HCb>^zMA8s>vrCZou+(b^5)x-|XE|eC+Y<`6FkvuU^`EXYHEk=Rca% z>S>=g|GcMT^$bpR7fa>oN0oCL)~)VY_XhImD57@6&+EXomsR^O?`AF;`~or{-F)|- z4^TDhn%Dk0t@?1o-HyYCe=SoImhk>F2AO z>gPAR&wrmq2@l`0W$*R)-AMM0k+Zk2%XoRSArE?I{+8(3st(nc zFx8zK^l4QqYtXEC+q3(!&)5bq)qd5?>W9xgALg(sl?_T7zP!?U;~e`4zUb#IKfG*6 zZ&iJ-RY7NaD|idIwGpgwkK5;#_dcCdwD*l{=Kis=2Gf7g8xc`P6=blmi=o+;x5L1#9wQO zXmE5Am4mP^X)~fpkA2g?4co%5y*V%=_wG|Y=WNrFW`}g|9rnRTj+~squerMhH~66B zKX2ZnQ}uy{(QVsodpxKc1I|M~oO}^KKScj|+0b>?hRw{2413$P*!pV3nh)b!#Shd( zKD4n^exPl7e0j^h?&dq&d&VQEH#>KW0F`{`eC77dU#nunUv?h#a)+_JV&CquS?3y+ zy-PhU%fE8|;@YYw!`7Bw*|kb@yXR2byx%u&6y5IEB2}^XS>v7hoWsy~n`8a*S@DcP z@dl*}o3rwOcSWqtZBqojbF9hMU)xpO`=hkMj5*caE?fvT4j;(BUU9(Fu%hKwZ4Rs9 zrdC&e*${m)v|>tpbc;DnHbt*3+tTvNurqTi_+x*#)U->hE2He)n|#`<-+E+No2^?L zaPAQIn%bWkclqSUg)7>S8|0s+%zC$bN1*E6ff=Q{yBc3Td-|nOyWjV;`>$7v)Bg2p zaej%b9`J!iVPI)g01N^raKxpafY1MLn$YvtT^J%6k0p}G8G7wM2lK+B` zsE6YC1|jhe^v3^!fjE#XNeTRpB+%fic>i>lS+6btaU#$0_ZxkK`vM@t|DQT1 z5olOC4FDz~0~({#=!{G<;Ij-Wo{>o>0af+RMkP@J_ry~&85BI0z@U&aX*9sE=@eon zkw(Tc@I+F*X-Ev9mPDofQ=s4h*p_d-eCI@>0-Q(yFv>p^fB}O*Cj7(cJIi`?e`Eju zSRj4l^1T3b{$0HPE>K8#Ab1HtjNyTCQ0ZhWo(_Z-or=YifT2?vbS$wx@@O=`*8sHu zf&z#yBnqQm85A1jo2vfS5RF2>0=ff0Z5RNBNMQU^pi(G*aiUOYSOO6+0v!l+AjC6i zWI7g4rZO^Vbf5;$AlLUz#gnjjA`PhhMx+8=(g9%r5y*c{I8?&lN~QrqF@O<&9{__+ z2X3hsmrlXrDRiLb+r9ODeguI2r*@pnfMX0EZ(G0e`KR^;;_{ z0Z=@FO8$3;f9rt^R1pB&hD-`DhcXyc0^pqh_j+8O@69O;0-$U_$@Fi*P;bC*#D5CJ zzb*OQ55GIocglCwe4is|bOM%0`NvdW?FVQF;QlXP`esoA9(WYsNsLS?g#>8ut8xC; z?e{U_0Y|LA1@I*-jYJ2!0kr)s2&sg>l}x7q($ayT{VqS11n82ACuUOU3@iX`0aVe6 zSju0X`^{~DQIql1f87I^1xu+n*8ilFZ}z1SDOkW$0JNjO9rhnne3SRP3x5~$``BoJ zj3fq`^3|B%!s&Z}Q2>9V6Y-=>1~4XIz=W@mN?#4dsK-{SZ}>f^z89!?0+vDrG|u=o zp#g%^@PE%~-$V4f&wr0=0u@VTFzN#wkEK%UCnKN{i3Y^U_uvA!5(t3ZXm~1?LjF4G zeb@JQvA;_~2eeD74@v?a@M2(E_#Ru|Rq}Oap?{kX>+31?!CtRwAn@r#Iss@5Jm~=` z>cO7AL0>Wc_57_zcgn8^I>PBnJjz%UDAbbxe5$`8rT%(83LL<*KIZ#ZCxm*ms&7wm zemdokB{SiUXe`<<5=)mLfF%onlava?qQZK3DY%eH#1koa3K1AQ@T{Pt@OT*T^XWzdo^~yCf41`~%4Ue_{dvW4Y5V0N&~Uh6|v_ z`c*{G<4R@1)6tT+#})7fJZ^xcHjn}qJpeIPU-(K%I^uBvs0=4|giHPnnDteW-xMW? z0Zjm0GMpj+2ye;!3pcACQ%haH1p7>rpazD6LE(J6leRsC;Jt4MeP zt-h>7(eu5c9*(s_Dm5!q^Fm@Q5tg95`@&@@M(*j;4eCTPXDu!WwT%i#%N z(k#D9&EzELMF7)013NDw;K;E~Ed^DiSA>EbJ3W{Ol8Tj<96VD&r#p1?R1r^|wg?lL z5UtRi&b45;Tu7WNEizlZynsDVo1YB0)iey+CBsNHWUvJk!z=hnLBuEX;b0M+UWyfZ zi20@)CTI7ZDe6*dCoO2k>2&TN+B)b$E%HZ-C^Rqf#Z&9>#lVQKiQMcT(XI zjMgelfH^us7EK)Hrnnxv378XeZCRFx%wi6M=$2HLtRNt^*h|t$xhZb(g;N-}OUcvm zaQdK)6_Y^3xyHCRT&UuhR4$}d1E#vOw3x6fkDX&ff^tikR#{vv&MitsOi(Ee#Y_+! zC24(elH_(sdAjT(zM_ES^+rWRvWh|VSSes)fXI}fP+oOjPRb=@(Fz@o9J{ZGNdy%M zLIjyPl@&>0WeFxxP*6ft#Ir*Rezdp%A&eLEF)?m2DnE;FE`ZpTcvZ^o3P;^^ej=Gw zs7r8J5(K75&f_E9DO>_>p+I8-ohK{l&Msv5={dRF0Dw@Cc9D|skO75L6`9-y6+BBq z68NLkEOj)VWGPD&Qil_ULZ}P;I)@R1wiRk9XiPFk>nwH@s0*ZgG~J44dVE@ML0svh zX_*)*nx9=FcZMNkt%ngp2(t|lKZGsgx`Py>#mFm)CXyhoQ|K+s&d%1r3|SZ@URn~3 z5?Q%P1(ayYlDX7OMlpnybmF0|0+ELsLQEskJg#%}Ei99JU-z0-8G*SnSVM3b8W=38K73W29i2^UkCN-P1A+HRl zcjP+*Xg6NMaXTeEuOT<;@LMrFB}^(*;aOonG>C%Ik_j#q0uNI8E)1EZk&68c5*gyM z(3FL;kef|bbG2D2BRv%M@I*ygIK~~$F{Wi)vY7-jMi6{6LXMK;XW@%z#e7FmBwRw2 zvTzZ(hzDWY3>>6Nj8aG}VK<~ilA`dVp_q+~NPr|@bkao+1O#d&FQyRXg*CXC51J<+ z#36B>CyGG9xRGLa0_=~nP|lJpyegZL^!cMXEWZL5Fe5xcI7u%su;Dne70P4SvdmIu zf!{%lDIs_ThObe>88R`#kwv#C0%2&P07ImLa}sm{NCReZ>?WhOfCOTN;-o-a&a!*u z$P!w1Q6US5ViW0lE7lRpAtAV~Y=(qwH)p3s24YA}LL+qSJRB54lw%8M*>VPwt+YjC zB5MgQEduAU2*pxnlw%huacBcSKfgeqCKs9vTpiX#%GIXbArw97q=6)+BC(JfEQaWF ztu{vy)2<~%orN)8w!)>O!ouPlCMF-7&(FbwWDzziKPAwOHd| zQY?{8CW?%<6jMNfCp3CdjOm1FsQJ|FFsN88G&tfSPRTBRw2 zR&G~w*#%A*9u|t*PzF#jO{4&32w=I+MHxb2f+j~N%8iHPW<&x>jQEfY7#ker#aAv6Aw?-;W@B=3Sdr6ZDm0;UqiQ-$ zibjNR1$3l|>arL#36@F9w#o_lIKKm@*C_lrxj*PpdGKyTu8I}lf#Py+L{5G0S4o7Q@YKwgHw$H*+;OjfajA>YQ9|5szrL6Cn|hyTq6;%qu{rh!D9i zMN#QMMOI5BZB52d0=1PVz-ly>ppmZg%8Pt7nLY_sqTS-`7)q}vCq)iQ0xTx85&{So z;k0rDnnWHGSmQV&D3Z%8(L^c5S#~zrYPXS@OXNbXd~3M_C*;YC@qEH3h6?- zGbBb98EIN|p1zQe$0Ktr4v{OU7ZwFQvScpQrEs$qOjaEksv_mE!Z4H-VdLl#s5~N# zk)%0kNefTO%$9)D2`WSmGn3TVe3z`)K++|U77-N9K*1Og3)z)#)4 zPQ48S%jbt|Fc+;5u98A@9Gg-g(8?obM2w-(#oZ!=-JtU)P)=l#lxvr&jYS4d6s6Fj zQ@J<+imX<_l6r>`r6-BlcD*~2G$J^fESaeQ>BKq1N`lI*2}g>Z61)r+#3^<1Y#h?) z%GZm)B>_k@;gM;~yeLz_L1*KQ7%J6aiDP6gqdkQPsk71^smmHSggh1y@D?--2W_{( z*rteFk{k9!!TAMowodNPSNZ5VfeB*MVX}fLiH<9j@j^z7D_pY))<7SC*xvX3q+Lf&{$#yBY+)| zlRyUW?g%f&PKwe5uamD6hy((kL98{4K&fJ^RUR(#Mlb{gEDxQ}Ns{fpv!AY!8EL-g|Q2CAk+r$gO`~s`bMrQ+SQ7o|_--F80`Hdy;6wX}`Q0uK$ z8*t8xl#p#gz5$$vNjO}fY%>voamvwNak10ROLLR>>_m|UO;wWv95RgH(UFrzhssqF zqOn9)gi!0{utOACjw)_4;S82SrMxKa%EHKP2o^G?py+)ewU3ykg6Eow(NJUnN;1-% zDTmcXRnh!5GMvs}@(tc%RUXqu5oATMdD#>Z4Xz^td3Aj)V>?nd<8>rYK;vjihseFQlmB0{mArd{82X+=k z%&1gJl!=ls;Rv+Hf|N>;0SzK)%vCw)x$a;Q3`|!QWA!96Ix6PadBs^sY6%)ZbLJV8 zIyh7U>_xZ`Cq=Jf*d17!gal2)kU=`l7&DtVhAgFk&r!m#bhQEI@lp$nUR)M5CdC$T zh;&>GB_m3OBy}hNa%%~AJ2Q>&IbdR*1eH&rN%dF+M?w|mE0p=Ev?$x9m8(!lNSZB^ z>+vzI-ydrX|-PK=#p zw;2;gHPjrHaDxyxT!(U@t=>>RRf@>h(rMNZfh1QF5=>AK7YbuokhF-WGRw$C@Q6)K z6g%}1aW+E)qx)Dys8LcVixyj0IR+{{4i+0MISLFCMlly8TyhN4ohLEil0)ra2hvG8ZdKE@~kikOfwZ} z9M&WwPZ`T4hx~LKn9Rb06#+Eg#TF7Rg?gk)V%AWidI_A%7O>b59HBUh&=(^3M!td> zAVSH2duU?#1a?yP*xSixE z&@ue@LTZUSFJFS>h7B-?ORd04=n1GJ!qh6Y7^fQ8gkce6To{>?>p=s%B?dOa(-q`V z+yp2m0cwPNg5DMLrALpkwB3nj0{Q&ZFX!diDwsUuv|32um~s}CRZ}*c0y&^v?@er$&^AA2Zv|tj5@9nhRb7e#Zdyn zWw3FA1?mzG-7TZ$!mxggl8=$u0i~-8RKl3X$cSk`P%zaVMI`)ojg8HBm6UiG0Rqk` z7fMM{r-=|&Wg+z9pv}kCaspx>1QyoHJwbam*XHxZ!@Lr!luMK0Hk7SNI| zYZ1ikPHOUj0A@0aIHp`5NdjkPA);U|j~_7*gAS6~26D4e9I_l2LQBXuIRiUS#&>9ej z!9g2AsD>-aFpxB^x8n)^guqvTuqW9LH7Ot@ndv@;gN&xJ+$M@oSQO5264~*P#%hlk z$RZ(z&n6aR0}L7o?jLaHTL zn%oXbF^O3Mn@8{GhLA!y-tS@)3Q;gnflSQh5urRM%gKs*x%pZFLJ<~uq%j!`SriNt z2xJ^6jDdiuC?7*YV2K6td;zr(!;^4jbTT^$M=DG-icRiM6p`gxHG!=$hADYSk;}>s z1~o*gT%F|uwoL+VAfDit=&&k60n?G^6nF%joyRL| zvk((8#K*VMYpL3gFl_V{w?M z%Yp^M5*c5R8x7GDdJl#`Fp4!UrCkEoi}}bLJ2OikFe(k|0!fJ$I7&hkd)$h2aWDc4 zB{AWs+|G&Pa#U`tU9VTmQGBE{0Pzo9H1W&`|u$=<3ISyBA0~i$=3WpSi@Wc|T9AgvwFIIVdlOAtNd?tb15=bik zeF4cH3W<{G&HPRSa(iFvGNa#V1Rx3apEM$nc>PZr8OU}0C#^o$^dB?=aE$*SG$MsW z1~Lov*LS`|3I#|o{RfRk0g^KRMWX?S-1XN#ZE18Mm+_x81~Ah9nMMMVUcdo*{Z-#K zm2?1~VMw-Qvs>b1!pxQywv$E#(uE!p!Qmo$-9(p%>>;_R3@?#J@#2AuGxz^|hpi ( +
+) diff --git a/src/components/Drawer.tsx b/src/components/Drawer.tsx new file mode 100644 index 0000000..7d6e12f --- /dev/null +++ b/src/components/Drawer.tsx @@ -0,0 +1,81 @@ +import { Spinner } from '@/assets/icons/Spinner' +import { cn } from '@/libs/cn' +import React, { useCallback, useEffect } from 'react' + +export interface DrawerProps { + isOpen: boolean + onClose: () => void + loading?: boolean + children: React.ReactNode +} + +const Drawer: React.FC = ({ isOpen, onClose, loading = false, children }) => { + const handleBackdropClick = useCallback( + (e: React.MouseEvent) => { + if (e.target === e.currentTarget) { + onClose() + } + }, + [onClose] + ) + + const handleDrawerClick = useCallback((e: React.MouseEvent) => { + e.stopPropagation() + }, []) + + useEffect(() => { + document.body.style.overflow = isOpen ? 'hidden' : 'auto' + }, [isOpen]) + + return ( +
+ {/* Backdrop */} +
+ +
+ + +
+ {loading ? ( +
+ +
+ ) : ( + children + )} +
+
+
+ ) +} + +export default Drawer diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 89731b6..30e6b18 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -26,6 +26,13 @@ const t = useTranslations(lang)

© {new Date().getFullYear()} {t('footer.copyright')} + + {t('oferta')} +

{ socialMediaLinks && ( diff --git a/src/components/services/CharachteristicCard.tsx b/src/components/services/CharachteristicCard.tsx index 66c346b..594d2b8 100644 --- a/src/components/services/CharachteristicCard.tsx +++ b/src/components/services/CharachteristicCard.tsx @@ -1,5 +1,6 @@ import type { linkSchema } from '@/content.config' import type { z } from 'astro:content' +import { YClientsWidgetButton } from '../yclients-widget/YclientsWidgetButton' type Props = { title: string @@ -22,11 +23,7 @@ export const CharachteristicCard: React.FC = ({ title, description, price dangerouslySetInnerHTML={{ __html: price }} /> )} - {link && ( - - {link.title} - - )} + {link?.title}
) diff --git a/src/components/services/Services.tsx b/src/components/services/Services.tsx index 0008562..5aba367 100644 --- a/src/components/services/Services.tsx +++ b/src/components/services/Services.tsx @@ -5,6 +5,7 @@ import { type SwiperRef, SwiperSlide } from 'swiper/react' import { CharachteristicCard } from './CharachteristicCard' import { cn } from '@/libs/cn' import { SimpleSwiper } from '../swiper/SimpleSwiper' +import React from 'react' export type ServicesProps = { services: z.infer[] diff --git a/src/components/yclients-widget/YclientsWidget.tsx b/src/components/yclients-widget/YclientsWidget.tsx new file mode 100644 index 0000000..f069fc2 --- /dev/null +++ b/src/components/yclients-widget/YclientsWidget.tsx @@ -0,0 +1,23 @@ +import React, { useState, useRef } from 'react' +import Drawer from '../Drawer' +import { isYClientsWidgetOpen, toggleYClientsWidget } from '@/stores/yclientsWidgetStore' +import { useStore } from '@nanostores/react' + +const YclientsWidget: React.FC = () => { + const [loading, setLoading] = useState(false) + const iframe = useRef(null) + const $isYClientsWidgetOpen = useStore(isYClientsWidgetOpen) + + return ( + +