From 64877a845292533d8b2479802445b3b6afff0d08 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Fri, 25 Oct 2024 13:32:38 +0300 Subject: [PATCH 001/117] test --- FrontEnd/src/global.css | 3 +- .../src/pages/LandingPage/Banner/Banner.css | 381 +----------------- .../src/pages/LandingPage/Banner/Banner.jsx | 146 ++----- 3 files changed, 38 insertions(+), 492 deletions(-) diff --git a/FrontEnd/src/global.css b/FrontEnd/src/global.css index 18708495a..7530b3bd5 100644 --- a/FrontEnd/src/global.css +++ b/FrontEnd/src/global.css @@ -90,7 +90,8 @@ /* main pages Banner block*/ --banner-main-font-color: #000; - --banner-main-dark-color: #1F9A7C; + --banner-main-dark-color: #B4D27A; + ; /* CompanyCard */ --companies-card-text-color: #292e32; diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.css index 5a2d3cf78..8509e572e 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.css @@ -1,374 +1,9 @@ -.main-banner-group { - width: var(--main-block-size); - height: 500px; - flex-shrink: 0; - position: relative; -} - -.main-banner-group__main-rectangle { - width: var(--main-block-size); - height: 500px; - flex-shrink: 0; - background: var(--banner-main-dark-color); - left: 0; - top: 0; - position: absolute; - -} - -.main-banner-group__white-rectangle { - width: 786px; - height: 500px; - flex-shrink: 0; - background: #FFF; - left: 0; - top: 0; - position: absolute; -} - -.main-banner-group__frame-rectangle9 { - width: 199px; - height: 258px; - transform: rotate(-9.235deg); - flex-shrink: 0; - border-radius: 8px; - border: 1px solid #FFF; - left: 845.59px; - top: 65.64px; - position: absolute; -} - -.main-banner-group__frame-rectangle10 { - width: 199px; - height: 258px; - transform: rotate(-2.266deg); - flex-shrink: 0; - border-radius: 8px; - border: 1px solid #FFF; - opacity: 0.30000001192092896; - left: 857.98px; - top: 67.04px; - position: absolute; -} - -.main-banner-group__frame-rectangle11 { - width: 220px; - height: 179px; - transform: rotate(-2.266deg); - flex-shrink: 0; - border-radius: 8px; - border: 1px solid #FFF; - opacity: 0.800000011920929; - left: 1072px; - top: 78.87px; - position: absolute; -} - -.main-banner-group__frame-rectangle12 { - width: 210px; - height: 171px; - transform: rotate(-2.266deg); - flex-shrink: 0; - border-radius: 8px; - border: 1px solid #FFF; - opacity: 0.800000011920929; - left: 1087.91px; - top: 310.49px; - position: absolute; -} - -.main-banner-group__frame-rectangle13 { - width: 209.828px; - height: 170.787px; - transform: rotate(-2.266deg); - flex-shrink: 0; - border-radius: 8px; - border: 1px solid #FFF; - opacity: 0.10000000149011612; - left: 1094px; - top: 293.30px; - position: absolute; -} - -.main-banner-group__frame-description { - display: inline-flex; - flex-direction: column; - align-items: flex-start; - gap: 40px; - width: 584px; - height: 264px; - left: 103px; - top: 112px; - position: absolute; -} - -.main-banner-group__banner-text { - width: 584px; - color: var(-banner-main-font-color); - font-family: var(--font-main); - font-size: 40px; - font-style: normal; - font-weight: 700; - line-height: 120%; - /* 48px */ - letter-spacing: 0.4px; - position: absolute; -} - -.main-banner-group__frame-login { - display: flex; - align-items: flex-start; - gap: 12px; - position: absolute; -} - -.main-banner-group__login-button { - display: flex; - padding: 5px 15px; - justify-content: center; - align-items: center; - gap: 10px; - border-radius: 4px; - border: 1px solid var(--banner-main-dark-color); - background: var(--banner-main-dark-color); - box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.04); - top: 245px; - position: relative; -} - -.main-banner-group__login-button-text { - color: #FFF; - text-align: center; - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - /* 125% */ - letter-spacing: -0.16px; - text-decoration: none; -} - -.main-banner-group__register-button { - display: flex; - padding: 5px 15px; - justify-content: center; - align-items: center; - gap: 10px; - border-radius: 4px; - border: 1px solid var(--banner-main-dark-color); - background: #FFF; - box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.02); - top: 245px; - position: relative; -} - -.main-banner-group__register-button-text { - color: var(--banner-main-dark-color); - text-align: center; - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - /* 125% */ - letter-spacing: -0.16px; - text-decoration: none; -} - -.main-banner-group__banner-image1 { - width: 199px; - height: 258px; - flex-shrink: 0; - border-radius: 8px; - background: lightgray 50% / cover no-repeat; - left: 849px; - top: 79px; - position: absolute; - object-fit: cover; -} - -.main-banner-group__banner-image2 { - width: 220px; - height: 148px; - flex-shrink: 0; - border-radius: 8px; - background: lightgray 50% / cover no-repeat; - left: 1064px; - top: 293px; - position: absolute; - object-fit: cover; -} - -.main-banner-group__banner-image3 { - width: 212px; - height: 182px; - flex-shrink: 0; - border-radius: 8px; - background: lightgray 50% / cover no-repeat; - left: 1064px; - top: 79px; - position: absolute; - object-fit: cover; -} - -.main-banner-wine { - width: 123px; - height: 36px; - display: inline-flex; - padding: 6px 16px; - align-items: center; - border-radius: 8px; - background: #FFF; - box-shadow: 0 0 2px 0 rgba(65, 64, 69, 0.20); - left: 840px; - top: 328px; - position: absolute; -} - -.main-banner-group__frame { - display: flex; - justify-content: center; - align-items: center; - gap: 8px; -} - -.main-banner-wine__winemaking { - display: flex; - padding: 9px 10.5px; - align-items: flex-start; - gap: 10px; - border-radius: 16px; - background: #BE4F28; -} - -.winemaking { - width: 15px; - height: 18px; - fill: #FFF; -} - -.main-banner-group__content { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.main-banner-group__banner-item-text { - color: #292E32; - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 10px; - font-style: normal; - font-weight: 600; - line-height: 16px; - /* 160% */ - text-transform: uppercase; -} - -.main-banner-group__banner-item-counter { - color: #BE4F28; - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 10px; - font-style: normal; - font-weight: 400; - line-height: 16px; - /* 160% */ - text-transform: uppercase; -} - -.main-banner-cheese { - display: flex; - width: 180px; - padding: 6px 16px 6px 20px; - align-items: center; - border-radius: 8px; - background: #FFF; - box-shadow: 0 0 2px 0 rgba(65, 64, 69, 0.20); - height: 16px; - left: 1055px; - top: 427px; - position: absolute; -} - -.banner-cheese { - display: flex; - align-items: flex-start; - gap: 8px; -} - -.main-banner-cheese__cheese { - display: inline-flex; - padding: 8px; - align-items: flex-start; - gap: 10px; - border-radius: 16px; - background: #F0AB4E; - width: 20px; - height: 20px; - left: 1240px; - top: 301px; - position: absolute; -} - -.cheese { - width: 20px; - height: 20px; - position: relative; -} - -.main-banner-delivery { - display: inline-flex; - padding: 6px 16px; - align-items: center; - border-radius: 8px; - background: #FFF; - box-shadow: 0 0 2px 0 rgba(65, 64, 69, 0.20); - width: 101px; - height: 36px; - left: 1125px; - top: 237px; - position: absolute; -} - -.main-banner-delivery__delivery { - display: flex; - padding: 8px; - align-items: flex-start; - gap: 10px; - border-radius: 16px; - background: #FFDEC6; -} - -.delivery { - width: 20px; - height: 20px; - position: relative; -} - -.main-banner-group__white-dots { - width: 179px; - height: 150px; - display: inline-flex; - flex-direction: column; - align-items: flex-start; - gap: 24px; - right: 10px; - top: 75px; - position: absolute; -} - -.main-banner-group__green-dots { - width: 179px; - height: 150px; - display: inline-flex; - flex-direction: column; - align-items: flex-start; - gap: 24px; - right: -25px; - bottom: 3px; - position: absolute; +.main-container{ + display: flex; + width: 100%; + height: 546px; + min-height: 500px; + margin: 50px; + padding: 200px; + background-color: var(--banner-main-dark-color); } \ No newline at end of file diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx index 5594a4f69..7c9b89131 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx @@ -1,126 +1,36 @@ -import './Banner.css'; -import { Link } from 'react-router-dom'; -import { PropTypes } from 'prop-types'; +import styles from './Banner.css'; +//import { Link } from 'react-router-dom'; +//import { PropTypes } from 'prop-types'; -const MainBanner = (props) => { +const MainBanner = () => { return ( -
-
-
- dots_7x6.png -
-
-
-
-
-
-
-

- CRAFTMERGE - обʼєднуємо
- крафтових виробників та
- інноваторів -

- {!props.isAuthorized ? ( -
-
- - Увійти - -
-
- - Зареєстуватися - -
-
- ) : null} -
- dots_7x6W.png - Banner img - Banner img - Banner img -
-
-
-
- Winemaking -
-
-
-
- Виноробство -
-
146+
-
-
-
-
-
-
Сироварня
-
56+
-
-
-
-
- Cheese -
-
-
-
-
-
- Delivery -
-
-
-
Доставка
-
14+
-
-
-
+
+ + + + + + + + + + + +

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

); }; export default MainBanner; -MainBanner.propTypes = { - isAuthorized: PropTypes.bool.isRequired, -}; From a0c2e67937138c1cdd2e3758c994f14a313b203a Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 30 Oct 2024 13:51:50 +0200 Subject: [PATCH 002/117] added a new banner img --- FrontEnd/public/img/main-baner.png | Bin 0 -> 332984 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FrontEnd/public/img/main-baner.png diff --git a/FrontEnd/public/img/main-baner.png b/FrontEnd/public/img/main-baner.png new file mode 100644 index 0000000000000000000000000000000000000000..08b8ffbb0d95932db2e83fd0dcf19f4d1eec766f GIT binary patch literal 332984 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 S`$(&=li4b_zhp<2hK>n3CrM znTXeETJ^ZHp$7^Wn9~+Z&4~h&_01L2HwCNcx1z0Rab?xGUf&{B^h_zdond8t;-eJ6 z+zDce(Tv6|6<6{5XgHEH8y97B?NMcRFDa|2>2sux^*?mXnqS|i#S(#7$851G+S|aj zGnKtV^uFI!;9~_x#k^q3KTF}Is-Vq}jTSw6Jd=r4=?nYL+t1MS!h1HR$UD%)c6&Td zI1TLV&LumvPGIPI!j!4ywL8R| z&=>R?U)DT1p4#PvLw`b~-0_uFs?HHRU1-3kMXSJ-~QBGpz5aB;e#|pRFKC%`Vlyi?RR_ zN#yO$ZFNk$+1}#G0wr$e1Yva&5S#?4C%0_{LE>O2KcO4Vj=3DvQUw3pc0&McB=^Pv zC&6+^lVc#d?MQIH5t|$|&s${+RtK-Y^V`2Af8{^_>vC{3mdW9fEt=Cnqxu93_Tos6 z#s{?3d-L@-(L_ZTzT2=JJJXY?#*R0t zJsCZ|r3+$xoo4iUDe4*yH6wPQV6-RQwZ5$BxmepTW##r%uD*F&l8YMG4kog-wI-Fu zgC)GGaol>z`SW8t;b0@Jd z!gNZpavBUHx=I~Q=hEFjVjDUzU^D2QSfo`DAiyNC@&F~FDPp0n)c6ZqZ5Q5=D2NBX zm`d@WA0k7T(8{Sy;jf3Z^GE~L8Cg}pT4hTH`ti}eym|H-{W#GDDIo2H{S(ufq2E0U z+Ohu=P5+m=p$?0Wa_X|6`Gmizc#65;dw{&GaA=O|Eo+~o>GjI|BboXRRAWIxP%toO z%6?YtumTX81=nk(6;tkP3)@NPG>~~$9@F_+`Wj5I%q-ydoXIG3QW~O|EA3b+9}Nt$ zuCm-2Gdke72C$2Z$4m+x7l%58c8lY>DeIA<``Jw~>oh@aDU0GWj=;9;QNwPym zIMD?V&OHj!j%IV&*&EBw-H9$nuu$kwUl-B{e$3ZaLhLo4)_Pp-s}pzD9H6Y38fxMa z>lsh>x=nfDHHpjQ6dERge2n&&zubSdZyHMHoNKf=G@rtnE~Od{3KoH5T=F z#eDoZNgKe~p77V_&?Mc-FjQT#)!TTX_4M_*I3b%`N~bz5rGMOz}Oq*}gc41*$x&q}zqCl{1G{lVU@ ztUq>6h8tahLLOO|3!^oeym?d3J$6}U=hig#Dww{tC;5jiDtd;?gpvapoP^?sR&({VZ;*70rt>&M^88$z4_L>e8E|I7Z={2ew<2S+n{gTie2Xfh#4 z8XwMCVQ(D+jrC&3nWULK_^4Nj`zHEBpL%ciG^Wc^FNVpQ$qn9$VJQ;@F^A(ZyNP5u z3VDV!=wH`>w6(S_LuDc>80DiAS5EaMW~2AbVpvS^{a;xuO~iEYs;YKFr@V zsTT^V+gH&mlQ%$9EnZiCOS}#(wvzuJ>X_2LPNAi5japJJEYjm$j%+>qj-=bqc z71L3n$vR;{h(g5Q{*5nlA&!g?Bs+(Nrmp8Za-<+^rqARjKK`6c_jcrCAO4v1QRP2h zl2rKE^B<8{UwcJ<`g5O?^JmWUz0>_YmufZVAb1Kah;^|u@Y!^K1M3^z9jYocUBVI%}1F3usd~GXRU_+C?eRo?^`#l+TJN11Q$%A-3*9Z)F}u+CvjE$y34Xe&ptY60epTb_xpXLZCb#9b++}gq@VqjznojFNwT&Btv z_7xDVuP6XrF`eyblIwoml@iSfIH~0x3KIfUGzWlgYGq|;KAjnSJ(rqRni(*&Ogw`w z`gEg6$cmw?OO~++=AZyFw)A5NnVIQ#=r4+5AU$8oV)D?+W GENEn&dAA#J??Foy zcD!p8Bml6Sf{hf}ixTWA_7N+E4qrp5g6reRe$aolqFq+>*`3a;4K4~bpgGN#!U8IQ zS`=Ayp_k2K>a)$3*tG?d!E|WH76 zj=qUf*7siMgt`@|BoA!z{k}%JU|GSo%DWs57U$P4bXA16CpMeS?b%d|e$*6T9YMMhQ_ zxqv*ecsM)SlVACzf2HxR$F543K5$7k&#h`~>C4OCdRbn5^)30}V^`#Bzx|uuRZiJo zeMUd~qo0-8!JfSG!guAB@LkiVdj_qnn#Lea4S|<}w&sF+<_C$^e^q^+5nD3vY8JN@ zB?49bITqccYXFY1rwi@A#_%c}udJ`XBubLXS__O=-*pEAEap+%#5jr9Y5eJxem*tM z-I*TAVp9|Pn$hVXE9jZ30Z0+dM_ZZn*N3vedDnQb@ysKVqvd!%AvuBjyi5IV<17*P zy|yW{+vb>rCEf#he(J+|Iv)PfdV;A z<-tA%Ed-|v1Akytm*_@CgK|xERiG)oUuF3k1E|+GQ2-p0)iGXMv274y6^yn0=Kocrkq$6!>RJ zMZ31}V0abQ4ew{bdPB@9;9UdO23#dI!z3ZJes}Nd>z^fg`@h`-09y>($=?T&`=wgj zziR`mHcNXfMPD7aF|+qKp!6gw+x~sS2H*SH?f16dAKAG$Y7OXp0kwIPB7=bUl3*kv#Y86&cSbvU__bv%@JRPTTvtvZ>k!C{Ng@_N@~B?$P&lperErshMbK|tj#hrJEeCiOl@&vJZwUM%%Ur)++Veo z#Y^J6(VQOxzBYyAYzkp>LpQeqNq|9sMl`dSqmck!4-G$R6TEiJ0d~y+(J88VJDJ6A&4(q_u76AoJ81 z)+})_=j>)>>>hyNTW{^i_tsxh7BI-+=3U*FC9PWaG*E-hgJ!Z?!g^|8>6r`$&dRb5 zhBD|CGKS5Rr?&yPt#7pgCRXLnSr7o=nYm>R3zWG3m8YSDGOu&jE*Z$7S5;yrXIW8%lo1G5o?f$b8+}eQ zE6^hQ2rYuL2aAq*uXg%frs}H-z;CYmpsBQ#Qo*}2#rsE`P|{f-Xf2lpiYaj@pa<&` zgwJNS5U`-F3zYeSKsQfqa>`Q!)�PM?>QpJS_{x7S>f|ZY-vCBr^@LFx9!xuQ^$C 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

6u+rd((gyiWK`M(}S{Y3%%By=Vgscm3fXeo}Uo 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

i656IKl%y0w>9A^Rg7cW zw+bvlve|_tdHszInVp_fqXioZR<(OCi1odK#^heVUod#%>ka?@y*SUqRIi)8#;qK; z%AdWf2x}PI=A&{@u1v~7#73cP%B&7Kpt$LGy2zf{421jD33~&*OwUjpN}S|X3)Rpy z-d2`i)ef^yC2%esp1Ia2g6o?cg=#H2-}op&S|s7S`U4&;gHb&0!fI76{_0m`cBCjz zJ$X|8%FljIUVZ%y`SN$p$=g@frA;C?n*q2{6GDpBGf5FtFX=?qjnhi;Hi;eS0spLH zGhD~wzTfNtMGP>=k+DTsOqBo|sCRQfi$^gHSf0CT$_0_lc{Y{+%4o9G68b9D#Z8kP z_MKj$c#tw;d2C|oJr_8sQwd(=+3$QyKL6u?O0v`UNU7_~{(g*w{|#AMB092%$CA^x zkHkY{bYV{7`8k_AMB|z0KycGBMFqG-P*cTS^PF2y}O4V{=Ppu?bRj zU~zUrmgbKDZJC#;xd&uqd{OenQGI^9vnOBty|1g4XY0z4gY!#tmMyR)x|VQr!@h`k*x&e)VAtN?OZGM^Kf6Y` zM1$E7nWX#K$tWrPB-FLY5MgmX=5Awml~b12c@C+eCN;j6>Ox}DwMc!y^=S8u4wY(j zWp#yfhxC`M)SHu{#$|X+K8?90Eo_SW>a9LGJ|O`(2RXC3kr4zbIYp*oatY&nrpnO`VRS z=PEgg(uS$ym|BQd5E8ez$eNv)u4;$Ay zyO>du>9dO%kVJY?TE6gwpOxxfOEx#xwQ{4%H*xZ;L51+$Z`b#)#D6o6^o_yojmPZ- zwe})+FCzi0EC;D2ckIq0`Ay{kJI5 zj!YztoE~bQO*%M+5m^mqgTT=Y;=Xf6;)X^4>lh34Zhc*rf9I?6!W*y4eGl9xfA{bH z4f$Vw@fYPczWfy|xZDIY2z=UFlG5fYHz9()I)GjD$dxB_mkXR=IyNM~i;ZXBLz%BG zRV}@TCS-40p?-qc>pG(<3ywnPTh95C>Sn}iAqeSsx=3(SVdE^NwkXZx`__QsJC}~w zp*=mXE$7d@Emy8wki`SXu`tX@eS1c>HqOgFHn(!Ipq-g4$IMJls7nkvhPhHv1I%Wl zE}6mvN_iFK6)B~H3j#Kq5`N!7uuIL=Dca6r6JB3k2a-C9#i=0EvjKdP!C{foXL6V^8?%rNMIjq^tex*fc3(_4w+M4ZL zi7C+-6!kncL1`|$j#i@YNxoBPjaVJWV;pYuOBw=2ORDz1TyWVP%|ipa)E%h=@VJC8 z?4+`LJ5RDsXRpuuwk9NBtp_fo z&$+g#MynWlOC8imU(c!wswTk=t7rGh=sHFj(grBppETDTqUEZANIC?A_mtY!(i*j= z9Qu?7H_DwRO~5r?DOb+7k|H&TQ@GbO`%zW#vqNIZ)LLewJ3Vtz6KMTBJZXQ`lgc;EqpY zxcEIOAc)K7eQe6HT9;n9x*{8U9eMbXkIMYPDf#T5oRyQ0uW7T`#KbsI$h;<*`@36G z1A?TbcnvT@-H?@LBW4g0DqDojp1@3%&)w35cxQ7%Cdwm#f5oBk@agrg_MT$O z5p06wxmK`l#p=XFx2`iX=@-=l-2nAv2&72`0maSU3`aZMhY~wGyqLB(6!Ok zk9AJPZVya3iK%Fau9L`AhRQ{a`pO+_BpfN{lv}R-&|ad0?yHf&3KEWQJ^QSTjf}|; z|Inuu4N}QDJ}$5x6H*RCB!u-&T^$}(wlIUWr4Cenzo`ZS&%f}Z_(&d?jvdrW0l}it zQdU0t@B?!Az#-R%!i3+HG`P1aNR{$*J#=lhx-Df=IeGGlPl>0=Rp97rwhs+QCA@;= z(zyKPzx+2en7&Mv0k>|8eDFZ@{mS?6ItJwC^niDx2HY5+-YQk$-Ok}g0P60^TBTC` zO^_x3ZqMXl5=koczGf4MZg^eIK)9H*IHwP1TDr=g_nK6q=NJwy9HPFR)VX`%ENsg^0r`4&L1 z(Iv5L>*@0xcR>s=!)FLW&Bof@SowlMV6If;D0aKPcFBupI#>fh0-vRh0j!+sej> zLb0OFCEECc1*=tES81Md1qh{NWclhPE#KDLJa2aW7o{*ZjYX@ZiyU3De(hI&8NpNw zn{42Mt4IS2bpk^`Ov$M(t}{!F^lm1i6Glmco})p8(&sNH8hy4ng#F+(DU(}=anw&R z>{>g1vkUAM4Pa-z>y%C!4m4~?nOlnQN@&`!l(I3)g_0X3b!3xn<~y)vO^&aLIbQt> zxs5~hM?FIs_(h9bUK{d9$tUmTd)nb11on58vg%(kCPR_AHqm6kb4g%qbI`bJ)?}fG zhB(1GC%muM(JrXtpo`8wbDRpasgN3tNfMEuC8T>WbXDG}CM9M`>@!L8%>9i!0y(b| zI_DZMa`IGOA3ZSy)M-ctW-y{2_b5p)iKfB^C8N}i*-IRK4EPFKWP_)k~ zG;IV`47!b?KzrqsIRQabDCh1!%3qBe73w< zTdJQA)|+vlL(LEYCMp`G=|x>Hs1i~hpHZGI%kCW@r^=~CpqI;zA$ZOxhh9s-Sf{v_ z(7-^IF%Z=8vr>z-ficAn{FG-r!aTKCah)D{=ux?J<(iy6^`R0qm1r}oa+KxD zW^?*kI-ZS}CO+qLFF&s)EmW<@6jE~Z@ByhH;HOMiA)9&6xfRE*eD~oT2Ecuv56|r{ zt~})cr9mHnx=U%(F4jGu{fPpAs_n#~t0-7yN_AKL#9}$oz;>ZpQfW-gKbYWAnS)hD z&S}c+r81g~l~7IKz4RPEyxsCN(NvfT<7}@{lP`VsOPW}7kLFw%uZ&nz6&sE_cwJNs zylhJMr7rf;p3z)oWn)FIUAiJ~z4(g!$R~eDKJf!jt3uC(tCwY@bU>)WI$BK0ID%Hs zSut}im<_E{|M6T?wC56H>DT=f$guH~-Sb$MKv)$9+_uVr1?ofuj{@^Pk=mPZErmPghIPv;|0t?qH!cSwI9| zsb0S^@D2_ltA~dEO-jJz`#mWshb3iwz^18QI)u54|C2{kMiA+c4s;4R* zY1=QjwyN1hoY-oLCd~X^DCaRgooNIsObl2!4Ds9+f~|`y%W{R?+`UjMNgsRi5m{PT zl05EB$FIr!^d!gExEPr*IZQ;NsY3?CCY@xpgvfl@vN#F)1L0g?qI%%6WadmhaZqr1F?3hx8k{d`s$?@B~T=G#55f zJlFsjhYcO``J$}@tekZ5{n=-~1)yhF=WSyjNfSVy$r0|YDQ7X9mf~nh>KNZ0>K9{7 zaE$G4Z{lkg&wox**i&})cBFBpp}<(02`ctCO0Nak3KDj6rAvAh;_uO&O8Nwb&5i!} zu;Z=;tSzDq(h zF>?|+=HqS?Ohc16nIzJ05>X9B7sMoL0C9YM5R){AXn9*_t*7MzB2H#68%TS*CA;4` zBNxvCG04U8*ke!1U;WEJD}VRz|9?^9>nSp18>2Y*z)FzTm7LL_Y!Vwx5rHfJytB0n z)MA5Sgit$L<0Nu?a|wb+;cYF(;x+0rK3dSydb1UpngC0v0TY0(m=9G_iV>q=ILV<5 zWqNpB=y%==^d2bD91FoO{o=op|N8&>-vDVCm63@B$!9%TyK)X2ZU$&eMG@B0*qkEQ z&1MbfUXgaAtDAm0ozozCbbMTc*+#u8UZ*J;)}C3O@hxK<9iNbDy)Bi=JP@Cv@Z0sJok+_U64G)lYTdB&n>#z{pwJ9JulysD9EwZ=AhVfHo(5}t8P(@{ALF= zSU)MZc?|2XCQVmHnHe-gC7t>_(kkKNbZk3a7qI&MdBMh`q;X4w_M|h|HEAW+Fp;#f z6wxkVtW}ao=^YG~x3{-dcaUldtQD4^+-~7FYs7&omTi{4mJ5wC5?;4)S|uc{g zWcST;s8DQRj@1>ZKY&1WaUO|ZttIvSU0GjW)5fHS9(_nAr>7)eD5<*04z)~?_~-K@ zn6r}_R5rT--Xp?By({A6d|E&jHQ2)~E*8^L-(_MM%lzDoHp6aXjoVmVleLu%1h08* z2&s&f^)lzERa`1+HHWBd4(rq?%IQ=E$z^iVTicSi-gs5!j+~In)T}Jb&dZN~?#Jaf zf8*C>6Az5bb62m)>u1iWBEs<_N93^w zACQwv^NN(05G?!Uo;+~xQGV2#T%Q#KT=TArByf)zpl;%;imw72u<(7$`+z0@atD-v z_bUB*L;Uae`nx1(U>wPC<1*JjtthFuz4{NkUW|@88b>b3@{Bj^^}>F#s_Sj!+#MNc zcDwIbGx%I>0A*=itx!EP9LOQ@z<6uyRxzhisxCpQRqUut8*A(81efKSA$cIG08`rJ zI(IZ!&0?I!L98-v&2C#0F24URlB!ppdkK3~pkshaKz`V@9*~|jJ~DXD1iot&8*b{B z{=Sg_V0Uud>|XV4X7BL%cY53kZD9C4Z+z_gHGkd8@m^GxyB4tSqr5_^O%py9?*9!>l| zHfId6l4amFX}IZGs+GFJo0P0vs$>fz$S!>;V`HI~Vy;lJ zvTB;;nwoX%b0}e0}Bcko}OCd<$!1y8suSfjPs&OcM~>Fj3RicjEpFvMMSRMZVV)lJZoA>0uvh=u|v3mesH3;o~e#LpC!vU zatNZwDMuc(RF zM{l%QinoQ$5Vd_p{0ebP$`crGF~%E8)xt9bo#1(_n&u@yhxR9*@8jAx@^h--0F*VoFsB{(>j+v`*4I(g@ns$;Z$57UJMV$g zk9t;dVGuqKw6~50|E&vG$Ml;)Va4Mb@({Y z-w|BDyp%^rq>bydzOyCEYnw7RHHDzKY?KXFrBE7XR~hw>(@Y9zjjR!q-DB0mCa)j& zDa!^_gPvHBur(JY+eB3dI^(N`tPAdteOmGWxTa8LQ6 z(gaDN3DS9;$Kw+-^2X`cq(P2yCeq4Qx6{-`e7}l$w6%gUcudtLBFvK>61SDBYcg6I zli9IJ2`X$@?&)XgsP-$)ku)>_Xv%$8Y7+Uc0NflX(nmDD4}s;~c-`AQhZ}jUH~#HT zUzbPn{JR#g?lsxPYx;(PXXIIORWd0Tw6bx75?8F9#-<^v9^?2wR^!lipat-6emd#V{lsZZDMEQ@}EHAdf_E9@-fZViP$x*vw z)jBd#(O|0f*E@lnI=d;0i;*m?TmUNgynNv&e@MRb2QM00qQdl%He{rf-zJJi=CG)b z(7`Ef8$;NogjGw9AD@z+`}2Pu*P#dGG?s%)56Y*1{{G+p zIVl&maN@fXHqYQ@PRK_dd_?ZM|8L2E_xJuG%7|4lZ8{|zSa)=sIC>GJ^4#AnJM9o* zqJxZP@c=HJ5h{{Zgpi!t91SOXP!dgP0 z9AwpjjIYNapyw94*trNLh-WIW?ra7PnQU57V-q+-kNW=^qc?|TB zIZH!#&ujq-Bd6%$SpcW!hxeoO9nBpWIF&J$CQz51pQI4|h%`|RxVG0oNzb@mMBT^7 zQ*!Ovipk4)Hf|y@H4P%9s^8h}X$2xzOe?*H_rl|v!=?}4w2)N-haoD1a%`03UdEnn z&Z-5O5#^{7HSgklDcav`we-3XiDnfbt<5C~f7;H`JkV2pKA^52OtiTv@^vXZ-u9IP z>X}8BE4^C9r`rj&`#8vyjKfJU@{Xr2Ohi|^C~r+VsT3V_s8rKeX zp_AuKWQ+kTBK#Tx>LS)Q2D@>-C}%ETkr&^1OZMtbSy((Ek0Mw-G&3tBm~)nYML+Ty?9X^jL?9u-k9hfQY%oz>qYKglc5&gNbfx+?UHTem|Y>a(X`%Uvjh#(hG9M zq9z@kddY%i*MFi^9lYF;!$;*me(AUM0!}SWY4zeN_ABli1)%g1-s9Zc=jF(;dw`x( zig8R1%^#Liue}bGbw|qiv}wK)O(jZ8s!G5h7GoBuEQu&=k1@Hu(9w|oxLkj?kGmGI z#)#B94qZ`BSWGUZbpUJGR!gXXmidV!a^Mw9Sre@1pv9=96b!rH8LSquxMhiiupAUx z(~W3gW*Zl~0W|<6_f4gsL^+gkzcEIX)XiX&9>6Mj6`L5bm!SL17()waJFyCHsGu;r zg<0b6k*-8)Kvb09{l*nJeB>~YpA|WF{Gfd1N1v8o|MlNfZk~GAiv>H%u@&oT;YP~^ zyo=I9yIa@JmRUkPm zeWte0%WwVmzm=c8K#&>pik-)UHv51Nz{9Hszi54$0?bO=FA@qPqzxKAgarTmyY9D;yK{;{agf^zW z`sy261(}+eQ3pMi?DOj61;i>1z z5dg2t>e{LzzZ}a1i1&kEzvb2Z0|;v#5VaelM zLMh{Z?g8=KSY4G`bzh2;lQKy@`_8s(Rco?|pmuD0RCS}Ra^kD_e;6|;inU9d$!tBU zDGEnfz_j)+q!eLhQ%;EAZv#Mh{-tlr*{dsZ^uGJ$=)@!dfkW0u03`Opn{UWhzw~7p z#dWT&AC)xT?+60dJ3WZD##-tUEOfUdO=Sqf_uzOhioi|Luf*-iGfPvhvq|}#NqE=| zH5sG(omT9++~KmWDq%_~YIp6&PH#C@#Q{d}+((IKvS~3-ItX7kG{>uuuf<38oU%s5 z2CFL2?pdtgWt0ly&&HYXNHpks1lui4|+lvy!w1 zkAVd{EQ4iIJ#`QwqTwMsW7ZvD!KQ))HJbQ*27#jm`b+1GpNhdo0zEZb>uqyHX?4vh zOFMjnbbrH6I-L8B7|MB#5|*89MB;cpA}+v=tXn!xO1+*ULK>R{UB{g&%5VS9>oPTs z#kR33Cm%hIfb~mwt&(Q{MtA8t6$9VN2zlCRO%$+N+m=7^Cx5_#u+$hPCjvpQhSFD6 zia7?+oAT%X{3m5>8XFC}6mnBQMY%AHDbD60up_Vc(Wjo2v46XSGRQsx&AOTpuu+BO zM{XeG%2CW%JLE${Bor^Dm^n%)^@d2Pn~~FRzalTZ_;tA#8R^DqMyl1Otgl~|wY`0z zaM$7E523`@lIm_l_Ul#U6wS}g$?W{B7K_Adp)9#78|$ZKckhZ^y!fW}l zV}cHvj1p0M9YI6-gjt0^B<0=ng(Rt}#9XJFc^N zDxL_|9c!{;@Kg!@BiLcHG#RZvMV{9??K3{wFEtLLeBw#fV^Q^hMBj5N6k`sVDb0_Xqo8Hlx1=-xG$=ddg zZ0%qSpv<$oRTmFcR5s+18Wh)z&TQyvvc9>UL#rh5EnVNcdA!&AzgJ*+D}2^>drY5N zC)e{`KWNZ;_hhY<+m})OL=H3)eikdQ##UbCP4Bd*#TRPBO@uOEUTl-=#+umK21?&= z4Eka=Jt#4HSg_ir&6Wt6^R+#azyo`q9=+VPwh{FkF}N9NLyYaPgEk(|I!^thxJzwH zl|ogrm)msMFwxRSb$cbC4ox|GX%z_QoGcwUuGv4!+2sFmQ((iG-LJq|!HPBp)SG+A z`l@p9=)5eioyY4pFv<256`4i=*uf;~_Nth~Ff%QG{jdGBjGzQhQTMg2ru_P^eOX?9`IPE6_8b?NzTPY^ zvPq+kjCf;QpQ|gGujNX(eh^{d^j}hSd zimDk!ggi$6%-0whN%xze7_^4Yy($S^6Dw8*TZyHw@A=npLX!z-zvEBW2XgkBv5H_5 z5Ur!URLI{R!iv{9gm3=?zW&Y)f4U`vH95cQxU6)&QrbkI9pbbdWgw$;T_=N;a4T~_ zv&=NWq_8aL^c);$h*$D?6SUFzs+I^Ux7arhBDu|J%t=x~%0N!(aewf@90HYXl)3jb zu^{)1SjM%@9c^@?91Va~>83|e(mO8qKk$fh)^gdhRu;HvDs$C0+6c#jIa0Nxf-*Rh z!b-WUbDoVi3?>RojIjVemMlAJ6oImW;07%2kHwf zWwu)T#-Am}&T(b=Zz7F4rZT?LVw8^IxVC&hzGegHq>8GCra}?XJRy_rBjKty9h+4y z*NuF>gzHzZzySB;*!%(c!WX`vCHjl!&ue*qa(Y%1;a6XO6-jTy0tn1+^3Wf9^bx&o zR0!DK+E#Qr;d?J3>7;VK9d5RdZ|=YS+4Wfwl&~agbnwn#iR#oa+!!(0YP}!F%BdW(y`eY1lbdE z=*SUm_PU0|VGC&PZlkSg8&oJ@&_d}h0l3joQ(Ei^052+RUd23aZf~lkD(BoP*B#n@ zmPh0x$M2OCK7R_q3B}sgr4DPt=JJ|Uf$p~UcjZ2euh(99K`vdqq@W0`dT;R{&vgFA zUt)Z8V>^Nmp#kfz9=28_)F@|f&gxgkG+1?Ia|yd9yR;h>=RoDGhs|K1tKT`d)tS<> zW-i^I{owj_RH&HIFtZ=u-h<wf@=L$;uVry|78O)f16q+RRmNm?;eZ^v zcdQ?q>@{{}50BqixhCh{UY7%tBeDoI-oWChFQ4~^`FOv8^A9ufd$Z%N1*}@+^2n{q zEAfu}q;}6xuh?~A^U$9EklK7LC0#dJo=f>UF~}!NnrxcwP_-1f`DpW$L(jB<15kaG z_B7kmFxWLy5tZ{Ca-%wrY@l)?(+Pi($Wc$xNAv28Jd=jf0G69R2P!vc22(8ad2J2E zu#ITB{rMNp$ipX($kb#D8{Z*0`}RIIDr@ZW;sJMu-#eI?s?Q2EVgW&3xs(Em`8H6V zRh5RRqkKJjbxEE$`Lyhl>OjwWo@2KzFMjt0Y$VrY7v*-kQ28jIUp)7M+;h(l0LfdG zk36&>fAKH=X&@z=$U@g~&RIEea2^5dpOs(wcVCw;{?=F3U4)A{)dlW9c0x{_dP7}h zn%b#MP1w5pv;X<$#^QewC~-kP`(r;LGjsPMpg$>vkr~qv1Ynwco3``h!pPDH1^NX7s)fM89n|!a|;G#}A z2!Pn=md%>2Zv}xGxs>W@9h$mA;F~pPN_o+N2Cp|mS%*vP1K>XHXP6eW_H^^)Ycn`Z zT$FC*aKY+V@%1n9n*ZX4Ki?9EHEztJ;o#54^#JYJWUZpPDLkFK4DLA3lp>JMNoizU#z*Pol#+?5L;ASK z9(zPaDrF7$8m*cla(pH76?1rP@_pG+JcgjLP??swr4tBfrp$RPWwy9cqKH8X51wPF zI5sq(C&iI5qad+E+_McV9Rps@B!(OyN?{L6LAiwwd=Zp z(k&HXM#n~R?q-L{M1E(ds(~{Ti17mpGPyXfjb|;OtW5;=M67F0@~4;fHF4L*PJWO= zO0uKl8hDTcX6gl9HECd@4Ngm@NAoBzkD$ubl^W69jcpl6(0z4%S-QJxa_>h!B8BK4 z{B2Lh$4hD@eT&C?HAeNs*hB9Zuzsl4tiz2k@AkO&L%obkI%u-&xrY)+P+%ao=F@=+ zizujIbRsMB2g>(!R;^;y9VR&Bj;E4y6+`&BzSHzW6JbB2i3O`=3M?>K=J}+u7&jxb zbmD%D+X?xtU;b73(rzul?39%U8eg zCA?lFTh(RkOQUMvdl_S45_{m%^sLeVxu2AR5y@bV(th}jHybK}HjcHbBGOMRePb^9l^rq=&i6EQLL{ zu?Om8!CTpOJg{b`frTrSQnQPaPDZu-Oye|VO-+GGWc8f;iK+u|@p9Uz3gpMe#mjjq z<+~~!(`s}MDKW>ap5rto@OI*|r05Jc6bxxKPm2t#S-w=2m8-ilR#}%%{lHW5_L*N- zR8Q37+}AG19s(#uTd+2blo99xrTw8Fc?xBG>H${qiBX!bZsXscRJU6)J2`{W7n>!f zu(1{7)z`i$n;U1Owuko_&6s8-u2(MDmDS77$uo~1m$AtQk*Y4+S8o@KKG4JzH|U=H z)X#iDUOjb6&SO$n5hQeWYX}mL3ju%#eHD;CQ6B4`OV)HkDlr%_oc}gVwF^LXz6Tkh~koaBNb3PYl#kkA9n z)-=_pijXI&C4R@VWT~8}EP0dKs1@1!-EqkXP9<^9PUUWX2#@H@O56_LPrmO&t6nIjkc^UC`MK+0*8*>r0kN=fBc<++5bj zbOtmGLqrj9qTEc10D0U@eCOvE6p3YkTt?utg!3O8ACv9Pbvb?NE!UK3E@9+ucHKrg zP^CyTSV>1QBsOq7SL&ylE#;t@FLu=>ll3!AX|)jz+~=Y6A3LUbO$5{pybyB zCr`>JKm7wrgLw7jmvrsh+pQ`$oA--Wu;L`2lt0Ua8ByDtr_XAG>*RPvjvQXXLo!lj zXFLNtZx?eHbCI%8?Ve+%+Yyq8!d=Lc9=9cuSaQ1oz3Pp+g zoipP}5JxrG^`tKyr~2ZtYYO2yp%sJy<<3xB1inqWV)@!ctp+UEKa|zSrfXCwls`*N zUY71hM`aw;QW*{asK7l zG`Z6Q#?!lA_YaG^dArB$-1p&gys<0)X2*LcINm$@8{X@&w|XRN{9OxJgS4keDRmtQ zO)@^svK!X3QejGwQVR+@YJ2EulYx4)M;3f?;Uzh`L4*yzBXuBKYf1@dTAt$UzVT%g zG1CrG(eeekR_ZVm#9CTlnO8lGBeVRY#Flbu!=6J>oGoi?4I{}lx6Z&wH*wMxG>mo| z7%2%^b&(yBS6+Bq4lFLngAYE0^Z8YY6NEOhjFKA|KO?XZdGO@JGCmD7sQ|PCfh!H^ zdYz1vGLzz$Ix;aiE^9ky#NRK=gZDfl+v^*0>dik;bUCKMLb|Mc-*Vp9ARv`$A_zcv zwFaaD$VVLR;F@nC$S9)ZwTcZWFXiz_?!E7zym|Jt(j*uZOwUfLObv^S*cS0Q=r@l* z2CI3swl4qUKmG^u)Kj09`KcwKBW(@1$H%86do(XI^&<#i&ufP<@5O`1AH)4DD0O3b z^)e8eS=rj!!Fd%Whmzc>GpFUdU;m~wx7L-4z}G4u1NQwa7L-x7-Xo8(R%2t-p1ST( zUoYWRvTVyPZgnmSh6BjR8r*ywdun-%LVQ37IjeaPjCx~3E`XreL~F9vK3_EaWHtP4LuJ=8U=-E!9%0lsq8 zx+*Ou<0L3X;AGjG3G>waCdLP_ieUcw8R-=tr@6(C0p@_r)4)ttpH1pTY1uwQyq% zfF(hz#o0u}@eq0)UiX~gX6)g_f%AVL*A*(oWOo;3ZfsI~OsQ1X@oy#yCRasDjwVX@ z?3K|mlp=S{+L2=ll_FX?CY<0I&wp0+r{8-04VB3|f9|ZK(|H5gG1a?H zn|gq6Hp5k*l|_6`4|BAJ%U)aAHeFMU`Hj7+a^cFVI?AykGy-&KWNbnzK*!ne*o)5L zF?DIMVu9qfjmpYC0)^?$m}-}%(wO79P&W5AWO;d6CU7lA=9cvSDz%H%vpSGx1jl@B z&P!4V);HIbk}@_nW_(>oCyAYdRYz4;0;OlDVFiQMwguUw|L{6x(`I|i@mL7xx>ryq zGuqqM_Nuac_MB`Z$tNdvWNK0#y#E1R|C~R{CHyG>3Og(1az&eF zef<8^i_gn*-})Bzsw~j>GLp3ea_Q7LNg+Xgj1E+Kj^Qn#tbcrbxX0adx^hh#YPqUq zFDuCt1)(4|zmoQRTBhknf+Q zO@rNxfpsUUuQ*0!0h@D{O0lv@=Bz7b2J~mUC8K!KCg0?O0nqi=g8QCge6s87N-{WdygOc3oytB`tyST+d!O zjg1!@E`kNdG%Sbe%?=P0dq9*r*JN@Qi$oD93l{Sp%7ky7dR69^=4IvDib{>;Grrms z`aoi`2#%xfn!Nb@Z%Ov)AH@b0%ks4i%}S@Ir=$QBW)Em^t=5o<(X?E-c11U#22fY_ ztb`%XHI)(>q^Jk<}+g0A0qGGuJB^kwaZ6M2z)xW&DyN&XYCzE6I ziexc(?FX!i;@P#ga$?E_k{oBoXQUP&J4^E=bHbqoWa7t8R}?{+v)gjcDt@47y*c0d zef0`MA#Gf0={Yh=iRWG4bY(}}4;UoT9F2{(z%Y-0=2&(5xEJss2CSFF3;`~>?|&Vy zckx!{l;g*}Z@|j4(aHpyV-Rq$%&sy_eqa%%XVNs*kZ9<$XrgGPa#ldXM4CqRWQ|6` zCInIkh_Yxi7LjTMNEMXf7Y{7Tp(BUo_=#hxp20*(%?BcD9y0eL3owazYR7RrK&d^4 zs`lK^x`wdXBDR3rn!E~zNYN3fZO%eCFCva)5KaQ2nnPK23Y-5N zHv3%w1bgjOyJsHtwGq5FfmF9cwUQkl9l_eevV6|yIg~8}Dm!){R0Wu%k*$vBFzg{U zXKHd1D12F^?ar*csTHh=i3tSCqfRpx;}Hph=WKqN0Q3?)W*Sj+O_GmP4>nO!d$ouA zQ{Cz4T6X@mO`YS-Mh8JpL5>|gDszXHl#)jE4@z=P<8w}A$JOprxx$qB!nHVhxK@%M&` z1WGEKwJNJ3v}xtFa?WKGg>4xSMCm_m<}x#uH0{<=d5JN9LfrEL%JDC}{DPdg?_OO` zYPCIi!kkI!+S#Jf! zz41t1=k9S>wIk3rC~~Z{T&N3jVCB6q)~;<1QkogEbD7zemL<6;VWDLVNr@V|W-&PQ zC}Bf;Mc<*f>haxG-WY=q^4WBwZdp@B9sx`N?@_{LRigTUm|mQ^a3R>@Mih(5U{Q%6 zR3wI(p(v7}i#bcgfj^Y}o8(d8nsxYk+q*lmvVKwao9pt4PdqK(e)enfna@3ga^sZj z?)88G&jJyyAb>zgZT~6;`YwVyQT`|$ak%+(I|!T|f2}KRJ;z`E)o)3uj72uxP_7zL zKx((rF({q0#gkWEwc>*hJtVs*g|OVtGVL_VqrDDFsF>8>dG;Ifvp@IOe` zmUgtu58i5E`aut#R|iQ6kq)IhxXyoWIGl^VYj|YCQesW2E^o9eX63;JWIVLCNsg;Z znWY`Y#>cp|*dJSomzE!Dez{XMEW59Qn zjVK=Sh)@ zzD)~qR04N$vPjxiNi7e)F!2N4s=Wnf8uD&6~f zJrh>J9X<=`AOOIxUpN8;!ZuSJWmlj@= z$u8HcF0E#f>}PPjsWve?JtL*@2}zGugl6BAGTf;GLG_SWAeoJ+CWG)rDPIV@TBy8~ zN6K;+4`zzDY*KLd4o4v}-7`&0*|!n8@voH{1gPxtXBmNi3t}c1q;Z%Gr8#Co{t(^5d6n-m!`wzj^wyJpRNza{S&gx&Oh>$(gg?mipeN0F6L$zohdsKu#C% zzIBx5s#2qiO>YOEp(Xi_HOH_4hyiQNW~#U=?3u2&Be}Y|DdoB+a|@Qj-h1R2N^F-eUyO}H_ag3qN_aGg!3F(pcXlF zEor#ATfu5_UP_5!f|pA7OXHq1LGV@DD%N{IG}$zRIQz_c)(>xJiR<$yD<-uk&@GB^f zm=zcm-N);wL>(RE^!}tZaj0QxZSK`onPGftP9A(XBjxcKAeIOan|2MzCuS+PhP7pN zr>v%sVnp&b}k`;z3>BZ)^$c+&-7(if7ZY-PGDEG%^9in_G$_3(rw}8O1aWiB^tGS0D zcU!vYQ4@vNLBwm7mQ0+LTRcb!c(>?Qo89Hk4x+YqDv9->9FeQE_|5`Z)pi)bGRX=| z2R(za)WH}kmPe$NvH-W$jHQn2n@f!eCvXGfMG^7H_V&opc>--vtUJ{WA4yb8UOW3H z){zqKeNBp+YcjiZLaNm|5}Og#;CUdgSCoj}j#KIOP?OY}#%te@G1h+UP6<8u{bcKn#p3)0)8PkL#vQb9aDF`}} z!{{z#20DtlbXpPJ7SR>DYXIT&GQ~_xEkXoYSP0IZXIU#HJG&t^fua@=Q>jszpL+zsfiEj-S5;7abOhHRL@7h) zS~G)1h3G^e4?J+MbzBlX&QHqU{lEVm`PO$|l;8RCmt}8yTbi9TCT2=nwW9puzx|?W zNY+@k)9!3KT3Ht{BX@3!FTMC31frMZp@$yUfB(tPeNGM?JtnnkO+NngGqR7(v;?_tWCZSdj|jT!hoq-g-|Z8K6)d^VOTU)LYXkqz=Qp=%egCf@Udz|?rM z_VDYwa1ALG7yP(3e%2jckMGhUc!v*P1 zd(;#?hS1R{bjBSrR6Dz)&dS+GGkA z98ldso2xQP=c4gQ>}XZ?zgX7*{R=(=gO&4szCRIIhes4L>e6N7@ zgB-VQ&H7%d0Jn13Jd1})w^6^cV&lcu$p8r}vK(!kqya#sJORX}K0U#ldJ({K-R8x85%qj767{Az~E8}I|b8C%#nVg)` zj{oPLeL+^1FUvIkeeB3#rJ@}~5;p?`ohleLR6wfhSLK^;y@2xmC23W6WeMw43Tu8^ zWe|J1m!vbH+7laZT(nZKy}2zTl~JjUj$xb;{Xs$qg!S;~g!}*yThjC*ZZp)A4ZCVo z5e;^sq$l_K>;4XI{_U5;Kgi$T@A2=~By~HDWA8;rxYcH@cRM&O?^?jhgC$oxb&}^% zj%|0XbQT%t{dv!*bt)_shsQN=s>$r*?GlzW2nOa>+JU&&$?cM-Co;T$UyumPa4| zJhIE4y!z5_$=n@U zwb?-O`s**s`sy3_d=0s9WkW^^S23v<@Rc`dFkG`dHjZ4jC_R)zAAk4}x#!p+`G^1L zAIb81RgD?iZC`fxca3FO<-s>@86$K8Maa^_DdS zDbLh1xipheGTvoMdvro;!1F0U%~Dm`N}NR4hkYPy(4h^CeMlX_fbUmnG#9>zneyBUN@;; zoFJWnA}boqdnPqCh0Wo_Jtu&ue*}TtlInXBfn^HE4K0buc@Ow`$vh1e*|bjk*h@58 z2`#z@N7AQRxPK<6XjBXP6moq-TiEZ?=Rs~<6b}$o-q$F;-s#J8V3(>1B#-MOv~j-) zP0yd|3C>V~Neub9_doCuHoScxe(NYhSDluxsHW;sByC5I9Ff=Pz`?bNh&DGi->C29PlX62tkOPMf>-Al^wrmbV4iQ%Wb2hVTvXN0l zRS{i&7FBYy`;G|{PBqish~oW%cNA6ORGnz!0BTq$wH)HK|ua+ zWME-|Hnkkffz5?pXp{!kLMBqGu3jk1w`<1LWwTT-)aI~MU`8MQa8She(8VEg3M`)E zsYhx7s>u_%xa0>Txb~xzNh?JrSns2B%}#6;Nx(nAZq$yUn^L zXX#R9aJ}S@kMG@K)wsLYbVWrKEaE9=ahRfIW|6W{p?cY~oWMZMN?{h@G_gpvn{DNf z(1J0GL7G+x$-E9k@)Qec69Tu=F$Pq&ZRIf$6^LixLbQ-&AuVLa(szA|k>w$l!fScT zdCixL)=kU62WSF2`5DZl#V_>He2L{j>7(|G$5RjiH51w+9qB zqgr?)$SSX4b0ku>N3I;n@{NZ1r>6s@M^NZ}V%MiM z)QO!)Tj^tie%YG8S8Y#>PjZu){f7>b`VbFBR`1Dsi-!W!gclhlykCjjMq3n+EBeV27 zPmbZgsZ^C~5>b~c+|N>F1PJ59vbVi1Z@u}J6j0t~;M}O!k-SYJ!CaGz7cZ#5J(W(n zEwf}*N1`ovkc~Xdd}2%HpDkDeJe$yY3{)$p$8v+R8j5P&aTwAcg0gjs$QRl zWPE#b_hXXHCM#{G1FA$H_A-LrVrdkm&>5MUo0k#-Rz-?^OWd^jp)PTTqJIh)VvoT(yM>_wpiqMS`Hs~l0n-}U+& zUR9nT=azF?Y&@hQ(_rRXQ$y9AotC9VQCE|)+C!ka12m6`L<;9zF6FENuHD1)dJ2vJ zF3}P&%>~#MK8ggb1tgc1q8b970`+K#@L^nMgInGr-;WZIk@r8`h5f^F7%-$2O|kWi z!u^zk3IU|hY^8&MlRXs8_C6AyQMu>%{c`5?ODaJ&J~j)`gLbW5ZG_`vYkS+c=N*if zqRuNS18{xhI#MW?6bgCp{)a4iBJy7x!#Xo3-}uItl!rVsIfwh2R!%%qGB!7FZBi?_ zCbivtnZVriF;^$2CXt8$utH!-%7{lLp;T7KdBnsgofR{H4>kGZn$Sex{Ls=d?9(j; z%Sxy!`sq2T0#!XQwIKN*qmG3IBuqWYsSSL(f2H32#{F?1`{5mTEnsB_r@GxB7|9}= z8O0)6DHarIsWxfv+0^E!I)aOO%NFnsvujG2^hAvUG)N7sOkcquB&R0NPGt=qQd(w8 zq1HpKPHhy?tlea*n7yS_SuJ-eXG%F+Z7o@`^u>*=fIx>`u8P|+BXr`&M1@NESVmBq zDp&UOV!ve;s9&U8O=~vu30Cqd)vi z17)Shb2zFUnh!s8QXYNiQThEBpOewq3^qjso|QZnm_4N^oH>0#VxZwOlOvWXJB`vb z5|1*l#>OhR?iK)SZ|!OcCo-PB>EC+R z;6$WNn?-{3U<2b}Tz`Atz}l%(h87tQ^O)PdL#aw1Y@;^5?`yr|!hp#8rr zb!$M{)4Antt0eZfNyD1BYoByYEp^B^aW5P0HZrM!8f?x9K8_1tF74UTI_u~?SLi5Yp~$&bmzaXlsJIy;E0f;CjOvOz8YX)HxHSG>GEK z)1@lKrZohbpZKBAs5rleHEnl&Rbs3yAroFNQfWXnrNDI<9~;+s!GO_6C8dD#oSK@I z>8Tm5f{c!iD|a;s=1uV35MFa0iq%X&14>CqmxD5=)T?N&`o{2bQ` zNM-V}aNrQu`D;4CSJqZ#=`dA7fNo-+Dqw9UXBdFCQTC&n|{cgmu3r8#qT+CkdL6PE!Q< z68A_&p!Iu6n~l}_yO_14ohAk8qSRUpLVYO}N@o6nYUa@c$EAfev7<^vfi?sO`9LW? zp(lNN_u&St>zY8FqS>w9gWJ7V!?d(pdA)deKf8nD)>I~LT^->4C<*o$8xMCaVBKjN zca@qK+1R8=NqK7ab z{Z5?H4*CiZB#VO;rX>*0j%eb-={pmXlK0*Y*qI!PJ z{+LOo(+J!!(f0PYu?U9pD1ycEBnCe|2f3z4k3KFx^r;6iaVfd9iQtSP>zkUb@7H!L zvqbh8wT-^OW;5pa9Ry5XRL3ORQrWJD9{iXhB)|RJ|6cNyU6k0b;Tj>Bq*h><#%t|M zJ={USg<$#6!-z95!BW&>WdJ~=rHsfWkn$8V*DNU)*qEuh;MG;is=VCFhwz#yCG|pZZ_q(DNux%~-`(hNaMCZ?; zT8Th^V3DdeLPgqQfd#H9({l%O!D8URy^-kn`Ae7Z!?ifcgd4Z%0H3H!St zQ#Sds+W6--Xg1+^#>e$PyfWhvd~LnogOb25aC}r)`a7CBN^N=v{yx zi(E&i=+iJHDM#D;YZ4fB-NI+u#J)r9RiVIX^$stdH(Mn84O;HJwDjrJB=V$8R2UQk zb-@_i-Px0?m#?UT$?ndUY^|@!)WkT(dPy!^z&s8;wFM?l#W~KP*AGoafaq05E8#t> z<|y*q)3t&@-N6(0$kgndQlh#$I}$W&C`@&#N35si09R5Cp{3lydEH}}b^z1JKzHxF-hRVp|awwMHvGah#l!$;~MhtV1eOOH0xmYO@Cgi*sPdw+ zVqGiqGJzRKAisk0G1W`DwM{ws@B_G4RZWVf0#@z{BL0UqSMT(=;a)p=L<41J&$11lfws&p;~7NbBuXdC{IZ* zHzv(e+l~29Uw?0JU-whmnQ!k@bzWpqxnMs-9{br8l0Q1A?Ey{Iy(1>y^qSOP+n3Ri z38s=Vw|H3h{)Xgb^w_AXT#Tcl5HPXEc-h`vRkyg^y-nF}Yydbx)C>@)lq$#+klVS% zNmNCt7F3hfs~3@UR`G8H!2ppWoCoPM85g)~B`Rfebijvy=QY&7#Dg{XcDSqGtK;^Q zmk8=8-K z3ju3UONd0r@>yRcS8^3vhfYYU#4^>E3Q_MQ%h!MZ+p0(Rqo4dF zGEr^_%#ML_Be1Df$zR<8im{C(qJs@GWvCr)My^!UCKGPdDx2goJJYEY3wB%y*YjfM zFypx`Hzi%H%G}Xo^49rR zS!+0>UlE5YTS%W`s=(`Lr@br6rQZSvtj(FEm2tLT+(A7nJ{r)XHR=@LHc)f^*Fj>>YO^gd}$gz2{dl>uW(NTH$ znVsYF@9g4MybvC_5luR|j6pFB^Ubovcc z*KXr4l;0KjMcO>fzD>iflLEUn!)oXr>20gmNZ!B zXD1~=e4~Iwj;m|QSw9^}${4r3vEEE~@%ly+Q3RFtu{2?bbFP;mGQRhqnldP?_US@5 z99HEpl@`5s3`ybkqDSrr##JSIahPJNF+dJD@()R%t^#H`MVT~HL zdq5nq*kcbLldY{ydF-*r*d$^JnGpC!YW))l`*$_0_9ddZ#MM2&xEa1dScl;svmU{p`}&4QbZevU2GP_L~v8 z7a&imJg%tg_(WElhe^dLcqOTAtjPY>hSC9x#W4UgqiSYD8NPaTPv>bDNIZKuf>cS0 zS!&7dYky3PI3tC)p&cd-o!Yji*UPTe&{(++-TwXuiODg%#(h7}fyeCztGYMHT{=3U z=X3%^OJh|!uGE`AA||kq7*V@i$jLT4@>9s_Dmf_-QEhgl1C) zj8AcDbFlIykH1$CaAi{&b#UUM$Baxnorz{J`*tWzPs!U|C5@9;nhhwxZQMHstZLyH zHnjAeF6SgaR+cEJscmYnvkBz1it@moTL2ezpm(|r6=<(v0`1qxi3;V?l@(b!gbXp> zMHblt3VTduP*QAl_OJ-7BOtgRlX(X3myv^q9+e;a@t=`j{1^XFDws?WklT|VJ1Jwc z4@jXjCqZTg6L&<>MmCgr@rDEl9%FTQ=_uL!=+P&nv9lqW{IXO==#aw+*U}FARBjpw z?PDk(K8e6&2?1w8n!P|?dFwY2SQb%AUsrdcE0}S{mI>I%G|=NoIx29W zWD+|}KG+15$D;T zsm^Lep;;YArlG2BRYA&WbtdBZDH+&EhW$X={vNzT%QbnwWI;`uyZD+(5)z4ZofF|( zVxk2UuY?lg-u9MUyLMT2v3aMkxibhIDPcWBeVUs*jW~*=@Q=9H;W%T!jbvFHfeJ_< z=O?6m^q|blPb)f@LbBMyT2P`?8`jGx?Q2CP49KTLaGM*Ik+}t#ouAhxEh6N}^<@B; z)YQT_9B{Ff_F|1reZ+JK{U2P98#k2r9X}^iIYHOGVT`s^x`?05= zksiv)=gys%LkEw_G|)k%j4-(MZ*8t(oGjzDKd95yAY%Uj$Bn_r?Vx+Z37b+bFxKh* zMsBa?9PMcG661>oH*_9LPfn^DPZ#4ftZm8m$~74Q%GyG}$VfA-JtBEUPzh%Ay0`}@ z?Q={=tw{0!i`v*{xS!E3@{va$QA)|%r%%bZzVUTAf9?X}gjxC7pZPh75Croa3&osV zJbPAFFJHpg&mzAo$llIXSzkXd+Z$IAfF72mV@G5Z2}z+>R@0AsDv$LK;8UUOnxuis z&L2Ut*916*eGCCKEqO^J@v}7d0EpIN)eL`cU=F4c^p2#l<{4$NUzO|MvZ3o9zw^4@ z$-TRkl=63oGl& zS)CfIV8G?IY(V|J0v35vheAiHuGZ=@R-wE_tb*P3W?QAGh_>?ckaxtdJPH0N=d;9? zBL`Fkva=YR8L45=v9X5@Sd?vHFwu^=ndGtfrxfzfshL2e%~F&}VQH<5ayEIgWuO&A zf9pU|+wEPH0MDrZb=ck2(p0NWj*h79U~RvF0dCf!?XD;1FJ6_y$0iYM0^zLh%gF~9 z@VrfF?4#6xptaW?l`u0dUVa)2z=(X}|LZbJl6ra*QALJsfS>)ifhnIW8-AQ6SG#_FFNtCbf-v_Hl15g7(1lL zqqQuBBbj(mB8VGGo}4@52YEoWzVXrvvbKdJ0z3Z2)eX6Z06SkGqTbbx_L0gYg4uQ5 z9=IvdRg9>jI%Ux}7tbwMUZ01_BkDglz784W zkx802`t*Z4JMg*_`1UZquHszI+{$xU0my3CyR#NXauy+&XJdosY=Z+u;!-Gam*kPh zJ}Mu5{Asnxbm@YY!NSOM&RwRN?3?66|7&=W8Fm2kojcBO@R?kv1cgnWcOCc3JwAD@ z!FLP9)Xr6dZ-?Y+#U`ttiwUO%UxRb7b=`tb&!MU}2HDA1BK5hWN1fJ&Hm#(U zQ|-o&EBNzg^`}>w2~JcOlrhcZ!gYsJjevT&RB}mdiDR`8 zMe+)uVt;c>jsY}z>d7aOXul;J8yiT{s!9jbs)&DAg>-Iq%;B@I$Xz&wg9xL+U=7Be zxV*9qG_qjhBedQRatX%u8fwEa81jF<*V}MYp=;yzxoxGom@IFi}OH0y0?WSB$Cr_z2yLs zj+85THI1kPAS#tG=TKdZx-}rdt8(Ves>~iZsAxRFsw^tF0TRa&=BUsV1?OMGzQ41v zth`rp){BLb(*4*F+QRtg5nc9;HpAc1COnnP*;xkm=zWg_yiqHmR4IAEDlypzVSXR(-kTu1j`j|^4P=V zV^CaeZb+jNN(qQY*(*x}0ndH|8xVrl-8}?=VcG>#UD?`R!6Y14u51GXy{Rrvp*EN_ zJDz;`D=*3e4=w8FFP5^hUp<8keg|1xjO_0;f~z9R59CZ0wOn2*PsvN)epdd{fALvl zkS!@>@Gh+jDE712rHsvL9Gh8QGL?#4I`ehu)HWnvT99;UR_)@l*>O33?~lqdg1g`R z5C2$x{6`PUiHGL!S_knS)3}CNMGt~ZtPWeH;)49SKmFI_=l`ewS{*;=uT>c-Xu?1} zJX*zG#lm&&{CSg!>VztBq+Cv1>q(T@TlG!ZViJOEoG5rMUDPHLHvN!}&~7)~25FL1 zEYqi=5OV0;aKvd7#S$eBQcph-$5x>@;?ziZb1Wi)+d|$^hwYw{|pOp(SLu zyQhc=7Zh%I=~P}592T%AM)IZ4b~$MAJcKJzeD zAVDq@)Jtx7jp4@)qkZO%9aud`b{J`ui@bM#&b%} zH#s+!CP|eb4S^iLks)mU2^5gk2FjZlp^^$Q4sqSesYn$| zsIowwJl~GhB(-}aWq^q_Dl)XBZ0$7-B*mNy`PrC^7m!d-F3RY{g5*ag#mlCxNvvlH zg(@((*V0d|fossejuy~IL-)#lKez?%ha2|cVbJ3`^A0yQtov|iHn>2C@72Pb-rS7U z{|>msFvlqicK|x^q(1 z3#_3)+OA$*mhXJ!Ytnx30eRrq0eSLq1g${rp8fW><-wB=tGk)0OMKwNMdW|DkKuAL z!J`t^gB2uPtW^3ykf@8hPbD7RZ%s{ye(9vWWb$QNV+U)^$~hn0#J@fOQPu5ciR4bzk+1Pn|m_k3RO8a!I==>5moJNJp2dyrdD3QZ_AD z!v2SUhdDOnEnro`do1Sv zjsab5bhLy(T}>{4qX;PXYwRE_Vc1Oqp`Zp{+hkM_Fa>ef0vu#;1x%a*7UywfOKiBH z=sZR9`9hSuU;evf9PBE;uZ4048^XFMmnb3IGwsF)9=Hdk zrg1E`$mn*~Bol7~i8+sja|}oyN|gR6Cj9|S!i>5wjZ9?Zo(HE9fVMF?8xqm3RfX_J zq?4b~fXw%D+Kjfoc}4O-3oE%}(%mmenD>DmH?epW^HEvZ~;Q359BSaot@bt)dTRZlqFN| z)>uwH@DMiYf+Bg-Qxj&-itLvO1%<{{R}!yB#IC?V6!)VIB$!7AK`l#gVC&Gf0 zPLHakVxx-%E*Hs5Z@wb zUMUk&BJtYE?4`s|IlC*vT-4+>RHl9?U>y!jlhQwr=!VA(eJ0@f~)uI<%pa_ZF=u>r^GKxG7bluM3OC)q%<)t<5-*W#Sy(tJ*)w}FmxPMEBkxSvr4aqcf<7+ zOCBvyA5Io-f3tiCH?IFu4nF1@hhUQB`r7`k?Bz4MUQpE_k+#$L$G0Xclhd*ny1w#p zLl_$+WS!W_FBzwr2(C79QBA@j;S5&!`dOf8UW(18J-Gs~`-6c(tx-nAbtrr{0UBvyT zq*M;i-3Nk7tK1A;ZUpOeh_$>8z=A>QftguV_$Zf4N-4?HNsqLjo~P(58$t7QPorhK z)4euFSnLhV-+WYA_p90{Iz6{2ySqEmsy2Yo7SvQoO@g|iHcrwFGFHuDOI%yn_?ql( z!MvuM6+tbU1$oW^EOsu8jxBxNmAzRK|K3N`Px$P$u1}hW*V*^F-!~pNE3w~5flI#M zSSkB3kDI;!jq`i(7}p5OGN5PQ?j9u|BH=xBTrFx*wv}YvcDj^1`z;`7D48=*K@d2O z5?TrHezV!qMKz^*h#6B(BUecbu^PvK8;OCS?fFKAPUlqA*r)9vkT(xODgCKg;-^lh zc5SD``Gt41H0|r?rXV#CMV33Tu+igU?%;wv{Paob014gRzl_*y2S~^+0@e+4j!FBf zP1)&Ca62oj8`PxZpr;&HS~vXr@3}`MW%iIczWCf57>`YvEQNA-i5v7LP=YPIW)lNr z1Ss$cwOXw}O*ID*LBG|-lZ zCBo(x>aAtra9=+EnNLeT1q3!TEBm`xgt9<@+m{h^Vp9ZqqYVkN2tD&mbzh6@T8rz)jCq+wEGSd1#=vXp_K z`dVV^D1u4!n@R)x%v?~c{N^cVuh&L72G?b;1{AssM4H(xg}mFgVUfdF#yu7!HFQWR z<|Dm68K5T_lu37X_vPTBIoa9Tz(Nyh!ojh>G&3qw<#B1Q_kdcLRaPabdnUH23KIF( zPbS~$sMf&a`+YhLjitpn9%RWkEAwkv zFmd0CukRkcF4#|?3d(s#s(X6ZLFo_F$KFXnEiXg@_2V{{dBM4e2*00HS9qU_lOXjD>)G23s z?V5xrN4Dtl*P}v7UagkL4jz^&){zm+4|<*#Cugx9Wc1!pw>kqvs)T^b!<=ZTQ9~Oa zq;2-LzL}@k!XMiG5z}WC8BQva;4+D&bY{sAxkYZ}uySZDL;H+XA?&aE|Ei|piR$sP zA*zFG7jx}Tg%(IUa!q0xY;(}pH6l5ZF%dWps*dfjYffp(OOCY{f#<=B+n%CmT?>5u zK<76*&)HyF6LV6ed)e+qpsLS4E7K?$pSbrPbt+>+E!VPST>htjBy+}7DgY^V^;%8x z*^&kP@nF7kkZBX<5HDD*%AI2+DR^vt+uqm!s)==fWLz2ml-T&hc^mn*7G<(@%*$vM zU~6kt8VHa(xbDXn7qz)-=h`)y#TcKPn#BGwE;-ygnqG{Ij;i{OO6mE7Mo8|r*<2pU zUrP59R$h~e7L#NK)IEMKR8VQn+C+S@yS9S;uqYKEv~)#lQbMcRQj-^2wQ{WsU1Ho{ z*W7<@x9I=>t)zMH#_Js1h4`kgb2CuogC6e|yxy(jX3bac8H~$a3|QIW*F!m;;?3lq z(k+U?PfshN6sqo0N&tgk*PL(2VGXQ%Ir40a>9Vv;zAA#y6f(d9%5C*#T1GK|F_L9x zZx7F5xe4V?yml)>prlrNIcZ|D5dBn*M!J}!=m;Yk#1bW?2X=RR4~TC^wsyC1!m<3w zCw@e>s+XkBF7pP1whoZco+=pVa0SBIZly4}v3a#qK#04tvALyXIj)+=jvSQ(^9Pj! zw6?aT0aX@dz*k>Bg%ZdT&a0<_%VCH~iy$@ZtxKmdiobtVwl*%xXd$g#nEApQ0#=mS zns#A(2 ztIjfeyG=X>!;`?%3t+QqrEyNS=Wp=5mxojPPxrnDSmVj_XkL(&)vk#E5un}JTheOZ3! zhwqg$XHH9@jDS8H%hJ*qGU_e@{i57={D{21j(|E>GX7&PaxyyuPHi;gH?Q6E>9m_P z)@;Q?%lt#g8b&oX8(}{ro?nd06>9lq3O2WT+B^H3?1=TU8Oc4u$Sh8J$#C z^7karwAZ#xwbzRknK6I*l+I_~qgc;f`aIVJwH*Y$PS(mdS_DG~q0)4Gv zZgqiTRighhi4d|sRo_ZFHyx-Pkm*(d5mp2Yxj?c?Lql|!Cu~&8BaHb%> zLsmT-Kb})AxN!^fTp|)Uu4@=O-fH0WyW9D?RqO{@qJ@E31*6V}_Z>m0dsMmfR5&?& z?1+RTC0RT7wtV&L&+0vR)u{Cim%lG^kaF{ulc=M{&J-uH^ zAE`Qx(R70*C~dQDWKs%QxcC|`{dzOiW#*7rl5aE zsWSVhLafO}+=B`>S5{0HQH{I*@IecpnW*IeE&zz3qgG{fTxzuA?OGtoV4C!g$T(cd zwUeZ&l0S28;7FocMGwJqonsK|UNuvbM!hL%QVB69vyrcKh-PC?Es&Lx6h#V{c}d3dfCs_eeoGRmFfGK$~#IxV$Lt?g~;q@f%~H%cMsZODFWSN`M|K7;pJ1tQQy znPL-xCCUjvCsSGSKC?o~?B2Go0bCYkb_SBn?pbARHTUuFhTM1W!(zQIPFg0S<4aF! z7x#b$@5?jK%;|>KiF+zvwTs~R?Q>V;KYa1u>Y~55AItMEU6oHgGXg|n7p0f3a=^kG zg4N~*$`qI7yU+ehY~IKUdkC206{(G!wT{hNPo_(C*>2*nkR4B+;g<3Ox-}rd31&L8Nr3no}UU~G1!?Lk+MRG-)Q&^LcQbrrI z>U(wE7bH#fP!1tDJAZ1&jCGJ{r($aiGTn0iHwY}>D_~6|nXK#Fm0@o}CrBPY+>CU$ zj-Dz3WK>Yz9OZgQMw)78JB|VIsZV}dJ_1yU$ey;hX?d(;*I7S+Kj13rI_dZZ=ad9^FgVu0mm3Hk*Tq<+Itcmn zC9l-yil$KQ@q$RvJ`aIxX?#lNXkm%9r>8P!m|v5gHUQ4BG|IVvvSW;m^VF5gvemK; znG#Igj@k6a_vBd2k*`X_5PXTVJWlQtuc7DpE_m~7JUax`cLM)joHUXQ&}IGd{Gkmq zzAj+wZzfUyPlIDP@RdZSD%pK~mG&ALq3qGF(xqqN-jQt}pVM_jVv~fB!yp=Oh7Z ztaO&OwN8VaK4TbW$ zx9d6;4VSOoTJ91!n@87QS*tz_UFmlT$Zn)l^%MB_dEPtjx~>D^eeZoa zRgRq_(8w7e2@(tRyf0o!miZX*e%BS>*g|oHC$Ny}yjTza=$r1i6Cf`+h^zlESBS#ka{F;(zhTHSSubifodysBDFu^x$f!u6|>g}^s zeW^odPCv&i=~*5CFzDwv?0A$K9A5N;FM+(J@u98=;`0gUQkQw?sdD&nln0oMV7)Z& zBbA!u>o&v#N=X>D&pc8Uy`|g}eh9N!B(N~R;XyxB$WgVtCJO=pjv@~vFFyY~O?!Ne z_wA9IWTsJYB0^Xj@#$dZc*3zf-u45(Gt#G^666BTU9 zLY~}4Mu%x=g4y2ri!?WPQQRAP3^>4mNGImwt8>2?9v@>x9%MFwPr0)u&Gc6vca*!b0@HZ7k$&j6t)vJ_$QAy-LQ??E+sx2<1#6~H~AEA4)` z+f*rX^=o8VtN6epEB`1mb=kMR0dio0BGzKUa7CJ!$gINdJ$t0oD()r%%fJt8a#)yYe;CF}^1e2J(G@3Yxrh7?}QeE*8fR439o@nXi9 z1|SshXQy}Up!8c@CJdIvN#w|jM|qqW;bYy-3*91JMSG?4tgqIzqrM?cpOt(*FA1}* zgzVkECSN{b?-iZ{M2qmem_<5D;Y7L`lCcrp4D+dM7rJU5w_9OPlO#zQ%MAK^7FDy( zNCmW&l~r0>EYr-`FpZ9l3t55iex@)YE&}-5$6^$^RUXSyzKE6hm^y(D&T{~KK!d;d*qik=dCowjz@Hb& zu?*%b$huM~l@V?&@9;l)(}nMr0oFX2#=w!PQc=rSEu5o5Z`H{;VrPW<^sCJ_6}VHh zB%#BXQmySCgPtCVPSw{<3BW-GBk@hM6AUKjgexo~bW_MA#rpt8*nTQkU`BD8L)1xL zaF>{EtkF_=f$FWUcy;E6i&SC|3Ilv}XgnaJK2FqfMp9L&G$fzT2)I>NCz(X?fk0#siAt4MunEcJ%%OS=MD6g! zOsGF;O4c%=B&#Jws4_&k{1B}&3;4wI&(VDk-X~hir=ER*E-~|t&I`cMMj1UMt6-7C z=bvUKd3++v_i~jP^&T$-(!5x}3f>W8={-AUcyh~7Wr_FIBCNvVjxe{2S~kG0+9;l_45i8!v2KspsXKQuQxyvfWZ}^V`zO*Cp*i)2zBXER`(t6 zd^b%`&*(%SiV>13JYBcXfD%zZj2~x-EijCS`!~KnxHj720Lg+oo0KMyHLgvJNixus zU03M`5->E$N$aob?M2??($O#b{h(fJ|W__2j z2uwJGVlUPM8)L4F^R6ig>_mbWP?EXLbL8r(Lu2C;QsoK@v7oK})6cY|2oOa{iOe;c zEgC`JeDfo+aBJBsNy zGpF!uM7?0xPZ3Fo3K~4HvfWU~I-OKqWqP#ZlDGx{q~>@(DU|2Kq?}5K1`o#FNd{-| zacjY|j|Z$&o*7W?z`3DuDlvdv<%tG0)5m9L7!>kKlSA()`9_J5jvhNf^YaT*l5t{u zk62ovdetI_lRA<>mZ0&;asEyyS%xhJ1z71VEG$xOZH0yl897#fHZOn$M@rJa+wB}P z0D*u%T~XqO_xe$X$N}qzy5L3n!XtB3UZ^u8uq5vz%zgUw8cmLtXsy=N1TrKpAq3c~ zFks`*8`Y_EAwk*UEbZC8jY1A_WYhe5$l(odSV2^>NiF{p`RyLvbN4&xCx85Zr{DSL zf8^s`mSidBt4 zMfN4HaHA$;b-rsnfUGXe@pT=c(V1OhYl2WrvyN&hOA_7@MwdaY$IR$|{k8u>Yw({u zbBfv2rU?Dju-Oxkjn(?aiwm@U=Qz!;oTj%ubT=J8^)zK*fs)NgNm=yuYL)lRtUW4^ zO)|^VuBBzdhZRl_>MO?>s8bBQ7*l#XN!rl$#*luTor^X^^em&LVQ9lz2iK?4)zvgx zr3s0KuCRVdxjx%=?&PS$ZqW~8G3P*&=IeP&I6QRv-?eQcdu(5e16KQ*WmPv;sX_yw z1Bgi)#!y1Z5v{Ykl0}19b?UW41uoAs)w&W%6PeLM16C>`R(KBefsa&nlCecK%5op! zJL|=Dsak#f`N`Y`Ii?kdjuE0|J7UKqQ4-aNai7w@1D zOhRw0&tuPUz9`lGg3uH(0F;9FaE6J4#bp{x_vogZ_j9yunLhKGFVSZ|^96eLxfkg@ z?|C;}MFY5;xy*a$T(0?dOWG^mpZ=miv;AQ+hRk_9TjI3g5E=JtQvO~m5F(-3GZLBv zz6_!SIVGkGCMDsCqm}UR253d`4jy0OpXx_FDL|5E*m2^yr}+AZ)ZnoE?x`7?z2i;_ zJ8%W+XoWT;P>Ow7nlSSg~PV3#Q#!y7yYyRu+QnMGqta}dak&o){j&JiSfWz3ri zNl?_1(w?~4gw$qIYn~&w(>r!DF~-1~$)ap&nEWo2U9BV&SFq31K7*0Q3)S`!KjP7f z#VDf1M#}PioS&oTo_mG?aE5NU;btl^kSvaHNPcLT?wY=jw(Z-&tXrGG^b&_i z$N4)Adhx|?(&93+n5~Y4QCFE|Y%{n+7W(p9S4vqzkJ<4{~qP*lw7RWSzz3GC#nsBxe9zK~U}{da6k?ECMFhCO@>x9FhmOmrRAUbH^mz zbL*Y-UGILY)If%Q?uElI&?Aq0g};hHr$Zx?C0b>$dEv!2ed8Nnpm)7}FFo|&9?^Ox zgq37gw#S1Lu!;vO5DwA1lk~oK{~!ao2L0hDf0yjITMTPIhpa1^vq~-E)9_+FrSqM2~gxb?X z%$OImJoxZR`rMgix^Wibe`e0xkyQN&Ovbo)HAVvuN;fv}#KYI|q#O*WlJr6Y56k#e z9T|bXf{3sWeqNtd=;fR0Z%qLMj$EKPK#p1S8*jc@N_k>Z@AAUSvBeD>r++SSplQK; z{2XjjRXpTxuZ_MR_P>YgXUm}4kh#?di=;Hzpnn3mBb!v^^@{-v_H9dz27NuI_%@hu zvlJ}w?SjIW?cw}A$1@tt0ShcTOV9eO#s}fZFsjDUAPx>`z(6MwgQ2v4e{YdnsnAl0LNr72#NNEz1SfmrY(Z_GeLSLE!2AfFy%iGGB5TeEVthIb)Yb>zUtywT|sqjug5;e`o^0fN7We z7)oY%z~hfFx(u3H93^WpIkIhUT3iZXg%)DL&Hdd+zvaGgevyfc`4jYxdv2k7?!B8A z=RJD(;jhz)W5*fzwrGnQI?|SbS=$7>V?pF3HIv@6rK)516=Q%yWc{=C{q+J4Vatv5 zMwSxBp3H@G2J9#17zT6+L<^VV|hHHET=9PUT8CRq|o$;F(kpk&pD&hI6qs#Vm$?|hm zk2}EwPlK<^Xki2{=gd}iNy~P7!ggUT4&7Ld7b4xZE47zlN}tN+xwqxWO_z93m?k$f zO!?v{Pd2>3s8uMFD@#Hd2Es(D!24pxyj;PfDo;{C<4YHN+#l*v=%8NZ!LEIhZolDvx^U_O`Hh~~Yq^dNf=Glh zDiYguGO8}=|bl~8P!kTLdOx5w)rXk_=ph1e+A5)v5YeRJF^pdfxdu2i#Nx&J% z0JLJ0`sF%Chc?Inm&JmwOeYfbRHC7o%xX^-i6^77xCt>52bh6mCE*O}q)R=hNE478 zB>)Xm?wE7y^+B>umekj@>gU}}u8V%3EC59Up|$?f;#Tr~UCTt0alMbnXuuGzu_C-=4ai&m#q1AZG^$aO?Z^)d-l~0uMp7}Di!~)0-+q=BnAkNfk zTv@>+_! z4?IcK6aWpdX@E77udolyJ2&np=}z9uTl@MqGFW}*)j^Hg45 zq26LWtFq{E(JE~S_OW{~T5s9av7b`uXZJma+1H$v#W z6#VVrbLtAi3^t{_T%}swCAf3#*gZ^dxqml@+|M%ec$%7RhgKRZR47i<^wby~IPiA* zzz2VXjy(I{nX#?$^Ec3@c5ct|u>z!w@|B(CkpFfbfZ%*E z&#Yvbv0;M#_Fw;pjAtFXaOpUG@yj2lKYi>A%=C7&S`(i??oT#5B$b6+HxjTL3PXib zth%!GjE>kdIz0?1HfRE?5)!K=j~TyVDwM_)IDtLlUfFTG^o_&M_OpTmF#r!Vl;avf zQ>0nrx7@Oy7A`GOb=8-!Rkc#(^K<0>0o-E=S(o4_1 zM9WKyRI98?)uC>;EfyxI&;@`Ae1P*HyHDui$mkd29Xv9?BQg`UfL^0vB$7UY0Ww4# z_-Jd16aXK{ACORmbDW%-q<6jhJ89SM{i2%=)Xhj(KA9}!eDs{+Htlg1RZlrG2}iwk ztRb3BP>Xx6q6y%L))xs-$%L!+b$x*A7*EKQ(M5+6j@OAW5IefifNJR617V5y8T3^u zWI<)IRFDV(KsCailGz(5_*76k@N5+Wa59=qH*TmOs7X4-r4Xt|wQ>P$-|A@XxhvzO z%ssBZfK^8|n+kMIGM_1N+lOr^EzRQ#ifpWMzZ5MjbbCQZ*)Xv6o48R}U>Iju?J-}j zZN`u~8~%N@_A>c^W1}Aij2fULC4jvoks%PKJnX$)91~Q1Dika>Ay0}pZ4dgZ;YJ7RtRaygp zDbonvLzOxBz}GlJ$q@ilt!s%hhfm4eJcYHgBy!;dBaYsoo(^1lc%~xUR&m=PkKPCl z_4SO{Z6*!cY=0Z0aD(W|=HGp#G3j#Om3vBC)KFmv^@Bwq&kW}1P>umtg0h_+hiuaf zhJ4DetiJEA=H{rb4MQ=V(^%V#J(xRtfDJRI$g=b zx77}0D8)Kl%u&P-=Ot!ZBZuk!f-hOa;>8&?nfp=4XDDL@Tc zQJ^Yh0EZNqNyIR5$eMIiR|D__*O?VqbueR_=g@SU0cPl@#H83usyz>65M4gUTEj6c zfS@qKjS@TaI9oR#o> ztGPtYZEebC9J=Y|2l<@lm|d9SbLR(}cJeXp<$WRRze44O=Xf$-<}>2(Ol}vY@?$h! z+Ce|`7ybq_rD^)imp(2JFb0zm-yUflUcap_7@M7(+MOYczL$p1$_TV}vX$VRW3HtbSq8UajJM zJkiJYx=kr}d*NJF{B}`=1%pzXuMf0N^-7x;3gdiVYYJ$XQU23E{ZpDA8>gT8TYr!4 zzyF;wu)#~SR$Zm1o_c~F{rcCKnLRJlsg!1Pk}@EN225$Ds|}fxu?Vu3>kiqp3JqN; zK=CYv#@m9vZYvx5XOly1IOehON&4X*{xQ1!_B(`G5uK$OAOsjm)f$ud6B)M9RV}Ns znm)yKstVS$P?ycdwZ#!^=syl(H%bib`&PGVKL^$XC1X`KK*E;dD&u)Y}m+-;uyflB3rr_^NQ_RzefXX@fiSVn?JKL z`AVcs2t9Yzc>R9@ zq62qzjCT5-#TvCm;e!^>0Zpeu`4W>cr4dP>&T?cpT5_ad2O^T`Fii;n?bO3eBt zIU?x1dI{eve)b&uzgPeKR?ExYxczHi+d3cCbVisegdID)>Xm^Xnc>_aJg{aQ;vE80 zIy1^Ziw727FC3zUg*j!8V1~@#84m!AiaQ;6 zm^w0{RO?M;RAs6m(%IjURU_s)$+`|Pai?ju>hr1%UV%gWywv$2ZE5&~w-1nmhYlfT zge{W>oO_0i0?juwIVrW?>rJ1pMV@lmX{m}+S#3~zq)x5Q5)TN-yf4tsJ@?b8W9Rv( zmIVASEuRo(yHZKhjW^xMWBvs1ufT&w5vHs>DD$~5ALaWn&s%^kR+Ic@iwBP#4CeW> z&J6v)_x=Q(I(?cBAAOo9fg*KlZSl8-W>mu6u2z?Ud;*dTB#ne!PZGT99A4|Ty8zQYkN%KjgG& z&;D7S)GsoCPl@Ikz?np(&*8#4LI@eESKAU|=H4bk{~K>TMCa#@@y|)hrpIY?cuX>f zM<=G}j=S#R>(Zgye(cBinq_GI!aSWmb5;@(P};A`16sXWmdQ@+n<7VK6e_8cO0`N`+1die8ZKGdIm}HEeVd-^}bIAIhY9ERi2zt7>G({L9 zqX9*;pAUktKb$8#&02=nu_k#adnb&lv9*zX7&(s^pgX!C#CW7x{JJ3Z+h&X*I|;i+ za-cq^t^x3fB49{SusFzW*KoAoFGL_&%mCA{UF!Dw31zN1-vM)_HejBSCE$7^LOMM@ zPKTM{gHJSc;1CN)1vV2_m(rtsb?g8}S{714hm|*2Ms@&bucU1{Aw^flBU$!Ne{|n{ z77v=`4Uq<2uUj0M8*X?w4N@c zQJE17A%JSJwGyo@F1M?8%%PF#h&7!lhe7+e;>edKCWFjXfsnAp&h|DPainn9~V2www?B8!hyV8WJc=Rm3 zV7}b%SJGs>r!8vmMI}SQcbRcSC`Yn9CE=qh9TD05u#*5YlIK+v1{=Q%U8}OJ0*H8| zLl^*)WT)NX_qzf@^E{wuGYQdAwwkoC=OCMFE}Ug?{%J717=;D;VLEDi#+gN zr0NrHg5CEfZZ$w8Gc;62CV@M~^*Ah5T;Xw&N};j!f{mm#J4>o?;t2z0{HYAJduh%xq?Ja(^&r;aOe#;!)vm}!?!D_y`o=e(q`U9BkM6kdKDz&*cPl{Udx}z=moA*6 zQzwq|wYbO&n*~~3SrKOhWONJL8Y$yoD=T@tQ0j8WKYR8xtu(64plz)MO1;()I|*efeVZH=D5Dw%QD3Vm-k1Pjp_KweeLZQMEd^_Vdkr&gTiq&|^k`6E zz?D9a+mLXRqDuunRx(7jy**z+L@Jds$D;{taYq745D9b=P~DmVVv*6UMoxd5&V#nh9bVc%@#9il_u?&;4ytF$pFNsDudY1eEv}eE0gs8_rHzq zd+WWt_g|+gY+yrYFY}(VEZ=g?k%dE#$IDa}gsx|>lH}IQCn5^Xy-G+$Ng+}k4dF-j zKY+ndHL$6KKEu-IalboF%AxY&(j47z=oTR_kYNv7C@-P9ZW$+eyidx4(>KuySDsPF z6u*GGP`8bU*%(LTvbq?I6#mJW!|#)@>~23Qs?WMk|E{r6lSNG`Es;2-T0Oxdc;+Mc z8%u;Kpz6v3Wq2+s3{B9@cReUR!hWYpVVdUxKE7Uajgq_oZ!wY4E0(Fr<6voG8wVJt zcz(_!-CLiPXz;v5WaToKv!Hup8Pm<$W@Ev|*Ww^{voYgJf$nDe?vMZB76R7QH3ok$ z+ZVATNmwDzjA4>Nk62vsgn`gb5b=Y93K=}ujdN%&OheDAIz}`A!8R(zgvxfdnjKB1 z2uTJe(M391g3{+fGQr!O;P7vT0U|tENhS$cKdH|lCghB;Iw{(@{UC$AkS@(%k|ZRo zIuW`Mw;PHHyLrN`Fk`h=MQ8*r0VyhEGW^;aAqfZ%Tx6@vJF0y{*uT75r=gtsFk%u6 zBs1NUGLv0qk&^&i$u5UNeQ~$(eN6JOa%%InO4F|0d+3J!Z{rnfj^-9#qUT@yI@QZ% zS}D9lnZhLHYdiUlHmO!&1~(kx2OAStgV|Vq*b{4fymQoK5ZW3pi-C43gB9d7hrdtq zGsGaZyQtxl2sR!((D*q%hB8BTW?kDnIYdROE>~!zI7a1$L*>P?Scr8PKzn=+Ssw5j zofa)GgN+1ugNZkiLn1k!0Kf#AK4|oUEVHv|F$Xzy@+dv=>@$+R3sdOsYK7F>&XG{C zD?XTxh6&xCtb(h2j=4f8a)5+eqGl%$`GI61O9qBvIiaUYB&C|l_8r@3ZjP@(V@+1s zE35OgV|t7(o;%Dd<{a(XxtF^9UM}s@JKugU{g40g2lVcDzn^yQ*h3X&Sd(y{7#g8{ zdk-@6vR~?CBXbqt7-r}l?qB8QB|6Sv_WZdsycnoRRU;U*y>Q|=1vP24TH4A63CG0L zD81{Q@1)t;SqW2Ojg-f9Y zbMNr|6cQR-%P>ZL7FDW2iOf+Y1?p%OXXqlMI~_<7LdgJ5^g*rF*IKKrjm`!3b9#I( z#Vg@hDMNfv#p?)_YWB28gR;AF6n&<-zkM2nNx|AGa~tV`+>GJ!`Pd+jbCe9^NZB8J zUNqDE9$W(U@7+r$j~%C7(^F#87ugD28|DOiOw`xeUXDo}fJ1vNU-tfMoHMPC*IHKL zJmJ`Za;#DTFJTkV9MK<>(fV4M#Ae~pD8@-if=;A~bLziIGA6^Z1=e>c%?&4vG>>u6 zjJLe56r$-umI0vPCFNRIR?1RAjCv@|$>SG7*L+777FX#H{^*l5IWtV}c+1^%6|K%c z1-gE13w&5r{u2bREUg_Z8ohq>LHrtGz$Gcw=hSA7qJcjzfMm7CV{SSjYe!8&jKnPh z&jz&V;>ir48|gC>8Lep$sn;sTFmY_~LiruifIL4R^=en5MFNiTc~bD}m?72{^ML#* zFxBO31j$NfM9yGx0j;C}7L*asEsd~Fjn!pJbAQ@(^L-5Lc|5OQ6vC%a$hO4$^fE9bIGSibV z6*Ry;xT&7_ssfkw_(C*!P)lQiDVd}Q20_yC{6I2g6Jk}8l%yAEO=}#+N48%!BL=3z zfFjHTM*wt+EPNZ~`l@*`m{<%{kQm4cKaJ`pt8~NkemZgb1T8VB?m!sMATY~eqCz1> zot}Cp>eQm85jz~-J9nYX56F;YzyoZrtk%S;DhPWrh$i^;UTEw*Nh`SknARAa!)3^E z6*&7{^>$1pdo(lQa)^7HhDKF%-r!L7{M;hlbLSm&&jUBe1Kw_>Xmn^VGmE#;o_!yr zN5A~vX>sW#Dvced=wc|w*%q)pjhvTFvfmL9y%n$hje||!&!0x{NZaTQ{m+A2*ze)ekul*J; zERcmuQlb@E*ezxc!ECo1z5q@2#UnL}7ISHxxTVNJ5{$+LTB?+(gMoutKU@!7Z(QkQ z0+U>q`-@gFvKi+RVn-4TU*lq-K=TXp5*`#!J!Z*MymAJknBcwzmM!TP`M6r#cU;=O zeS#i;>=gHx0!>bg(Ydo{=>UfU5%#H7+VtErkI{ks`}yv8yY02zpfo68k(81Ipy8nIekn+5+?P>8q z{n6k5C{^7>ajB@+>QZ8OD;tt`-v0K7=r-<03L3dzw|geJYGBr`QkI~vS5*zJW#*!F zpf#>zMYHYzm>8^{6G=%{qw3P2`jmwFaBrY5MPKkENr)PN-2sq{|80Sg-EaKIf@TX~ zEeP%Rn{a)JSPNL~`O3taO!mLG&R;hMhS97>H$HgBlgtKyzayGHkt9X2gf+v)_P=ZO zoT49A+Z|{Q63hhd-m#NTA3sJ*i%Yb9c8WKHNK{I+mm8Z}d=0GG2JICVNTL^gZIjT( zu%Bf4yOB)lVD>>OU<9=b7_e%A?<#XI>~m-qF}h$;;&}6_a5`za63r1{Bn#4nXx|gU z&`mJI3Z}Xzc@bWK%7rDyIcY)#@BoVkW(qNmEH5t5#1I3D-kN9W>vRIWe@)Iukx&6fe$UEbts&keVcGaUfGFErK@nsGSFvfc*v7L}8hBCPzg`8Ny03Cxg zpG36xVc3rjbY+38Rp>O@tGa5i9*E<0rE*$IlRNomb>Td%_9B{{n4zK62(=kFXSU^u zT9>G{e1_nk?)qttgz{KYnWt*2PO0HJ8r`;^oa`7McS0(4A>JotptlhBT`jwLrJuc; zkp8vo|7A&~qWRyd#shYv(-R93c$#K-5*=comxZZ*!jVvSI?IC!cdA;oE>%m0IJ64} zs|?D$r-s4k?rjD>^(Id=q3V{Pkr7LiULaZB@JTJe>MF0Yf*gnJ@t_1g)AzoX>nn5U zD3wpp?4E7Z>IPC>Dw*`D#tb2BmCDs7Ew0o!^x!j?WI)0lA1ijp$%=M0n;)fGvo0(8 z4zp+glL(0hSFW>8!1)XNpJnmAEb|c^gq!H&p*lGlCSdfHcZD) z9ie8FqZdy%X=K|lB?~(lNY*4-%%PUJCImc~H#xLkWPm<2zLTn}2#Kz8hsg2Zj>i|7 z_A7k;Lp;b&@%1S(fKStK=}y}A!Q1Kndmf~J^|L=qXHL$OlWx(w9=eYiA(YM~I)7%B zKJl5a)7<>B+(%xd>Pi~+Qp5v5&!fh2m&RttXt}e-+gB|SBqPblGnP`0glI6C0T`>1 zye8v$5^V9s+Nx5iFlh9J5ylD~KDX&a+OWh)s@1gm*^b>~bo=dl`MTEV^vOk9T&U1T zKKd!zHoc3P>d*0OXXu0Pe-CZj#w>Atjr#@$*A_ka&|UN!zw^tqd+z~y?&vdg$Rc+sa8|c9YAEdFdF$t+#<9lJZ%*sD7mCY>J>YM$O0yL{VwCsvJ(lHPT zb`_I@Whphp=Suirv}el4=raQ856UD)3RJ+jC89(hD90Jn0lWEf&`LD$=!_4_mMyaK z0@vu+gAKM_@!#=2_KWk_2v9AvV1ex5dqIq;(S~zY=K*N+0;#AZ&Jw1CtFYBL7Mr~0 z#43aJL$KdOI?MzZ+FCEDb(=FH4L*9Ww2 zIGTP@2k5^?M#juS#gl8Gz$Y}43sdejvK}HLkf6<|UhB#rqyVl3k7X`D_h92tw?0at zd~GNrgxm){h8D(P9@9PCie^I=jI~;g8P*lLec$br<^`^wLlwRRlN_=_lQP`Tzi^V7 z)=$xOYOf|99-zW4Y?^V;gbB0Lf!IH#^f02AAD$NKNSMDg!C0)Vj1z{u9uMK-^Q4K9 zD2rR8m-o!3dIpy?Wk3>N>dzCMXZ zE4I2_k9}UtHa0GR&8re+*)qTyCbN=xzrw5`fNQVXp&b7{R?1T;qn$;}==n(~@h>@MJt(%u5C_fDo9s z9uI1r8q@b!IT48v90Jj1vnFx@+lj%1K|;{s2dGu`Y1hFUX#c)Fbn5g;2D?q#zHN$` z**ZU11r8roH4uj?LVWNE&j`fP(IEWyw2Y|QGbJQ32%&(;Xlk9PP193pnixyb`1lyj zEuWSuUsyf%7+61W-`jch+7s&!3hH9F6>w-IlNsTV^fUwhZFKiN@1{Tg!~a4)U)M|X z$7p$VmG{p~beH$zV*+MYl>wC(4lyuD>+69gZ$PtyLI5MfyZHANzUmb@568)fNwR41 zV6@Gbs@JZPlk=rY)~+1~>1TiTU(g@@;V;p9-#^K0>{$l!C2?N3<*sSE?JYk}pZxUW z^!2YkMW~|gbbOke8m9-}eJ}0VwTBla0ljqm6wQBriJ@F;kk|sYC4eSPlebi#L;`%Z z5|QfKf>6i*YITjj!{8^0GPBS;F=N+hGqZ}q4;a%{Y43q;bl~7NKGx4uwG4SeQAGIA zNd3}(`X6F09{6?I#cb>75Cc(W*VEiDv0BgNO7zXAk1zv&QL3L&I-up{3f-~`r5qhv zS}IeDS@T3DpkY*J@mo|mdr`K(bNdwi;P?M1o#*dPkB-ppJ^T1P@*<)5xBq_Y0P92V zdN*xjrY?%8uQ3%C%!C64NC8AK>mctN?I<}~g3&UH@r-{o8>UxpM(Q&f`ksb(B^fVN zI~cL2@w8BdRHQL=e{9%pV;J9RKkeTeeO>LOgckRCwcyjXcn$iV0giDNH$K_gL@g|^ z;w-9VW$pHKU$ln!2grQ9 zZ6RPyLEpvzwa0@f&)3XqG6O-V0o~#m&E@cJo`EVef8CBGLG@A|6|#BtR1_m&SF+8u z3^9_L65Js=Vu+5gLt>;PE9_=Z%NUA$z|(SWV05c1Yvk~2wU$q-Jh&}Ys%CB z$r5)lDd}+oKx4%o7?X08a%BpZA10KlZP4^I*uOmt2s^aQ00@>ntwxs)Fe{kLz%0B% zomQEdS&qL4ISxCtskSykC4Nxc+$`lDF2xq%8_d=6eJq-=4V zL3Dz~CzABQ0}~9e;T$l5Kng$9b@IhRY?OZZM}M3ut06u4)lbpx-Ff=^|Lm_3ilHXl zEQ8=Fy6-J-p+k4xPCx$(zet^4OYKs4ACar<41909olwN_p>cX}5puyo0ER&D;7#QC z+VECIn+zRuLL3o%X39|tc<#zb@a(H4|s)Q zh9<^GX{F5HfBrCiVfc&mf9KV$W(Xm(<>nfhpPCP*}N$>ciguFXDg|5czG^e0`r-?%hEev&CU z7bFqFIRn?C-9#<&Ku%wZHAw%~{fI{~pI0$ol*O-HTYjEzyX_8Mq*tg|%!w0<>-5!l z_HI(Njuv~lHZ_Vi2d(Df4L%uN&Ij=dTcqB_NR(Y$tB6e)n)RNQG2Kyb?LoCtr~l&^ z9|ea7ivruQXa(R%r?T?QB21X$XRFBs2C9OU@+nDTm4yd~a67yROC<9$z9myxaTS0w zK)JR;H{5tDKZ|K*&~jAVxs$JZo?3j&C{=kj!7NS#Hm;k z^e~@`XRE8#{>1p-fManhiPWYL|4I@TnNrOBcM87YJtSyl#1hMsXetv`*c+0FnJj5l zPf)v@rgr5LWlQjvEz-!;4jP`ARdgpQzmmW=yGtgq@Yhh(gs!TK*0IVK^DrOWJjODW_ z30HS}9cBa>kYtlG(B{)T=rD-FAU8UklEfrffrTYHc1w>n#rbH)$B!##Nsu5>(j8@PG%K4V`>oLsMdwW9QBZW`-afSEQmK9!)k8=nH%U+x6wet+zRv6y%pv){{*sJk2lH&h1vv-Ogunb=>=(tJ@ zV)K;a^UY>kR9;-7Qyl(YSmf7IWj;2n6x%$AXJ~D8j)sQM^59+N?=I07Kl@QW|5bYK z@HoBqUANP7&pbl!{m$DZnPF}96z?xh#q2CU#AEy&o>H<^-v0A6Qsl|k?eINY;jmj$ zt_6w^WO7rK_9o~reBWQDGtYmFe&~nZ!eH&240^$KjM4CDj?XPiw;sBUe&nzGRr;0x z@_!3sSsFr>D*ziuz-kf_fC$$(E7uQJS}kUJeV%~E$H$p1SrYw_hpvpVl$m7=h@%rd z+P!N#hy4Pvy$X7`-X&T5BvJ_Z)u|Qv0`48rKZW%8Q%9-D3`0IsqKivkVW3)PCfJv1 zWa9J5_jlLsY1+OkLtYjx5nW*#k{s#@LV(d8)gvSkG?>vGk%hq{Pkxe~eD#%+?BC=3j<+LHk}>{p9&4cJO(m8BS1jWdq6Y7u~g zYZ$M7(vPv9!$&Zws2x>L7}k#QUL3HajsbfE_B3u{ZVmY@aK*o1Z7d@i*Sn&{yV>!~P&>0C1e~iL_EmxAw%P5pFt5o=X)h;I3T2H3$zBSi$^35SzsMwb=o!;sGK|XtUM*Vv z>TTWiF^ifO149r2qaz9~wfKT9;~SB#ja+k_Hjz&Y3^>uou_xx(j2$uyG{`}gdo5|3Ro#qCnFJ~uQ>%PY$=PfhVSG`~`! zMUGazaPf)@2cTWfhc$j9HfwnAx~bdaeS9;Jv;H}7gxqPgTa+(xlng|RsVr&xl!2}U zrvM~3`PS>)xLmlV;E3vq)$0_b5f&KeqsVcP6BIWPTWu=Uzt1irp{_a)$imdoN>{## zPDX~Yg^i`Uhp4R^@+LCy!%1e8btl!w4k~cD{c%MqWIEa(wEtlI;Jym0Jrn^kl{9Sx z1c_GyU=yKuLZ|r$ww16`)aqMZ-v1h)s7tQ&v7mcDSU?KLf4U&B7p)@$RpkYRrj)!!ztHJHUTrPfs{A%86d1yP(eb)+Gz(S!dg}>6l)7Dy*A3BpF&;%YiR6n#9I-S zZFq%^fqsNptdZei29j+CYzwr^jB1TRWx3L(1}vnw6E?Wtd6kw_k&-G$J!Mzg%-GeL zQ9N|-z07J<>GbIf^!y9w#KLNV>3%1PV+!D9&!DPJL!}|A)i|_`1S(_EfdnrZlzk2R z;Q`e3n@vZ=M983O&u-rD3LQIfPQva;dP1eB9*5D+oSCEfMWj_O@)vn^n#Kgi6LwIh zZuN0+-bVT46y1J*fl}EngXnoWfBqalys#Rp)9ju-lqu!- zTAXCyb(At3a`&NkZLczj?@+F=Q-EPUH!0<2x9{9WciwrBCdS}J$%}?YLROxc>?Gxq zqcp+~`&%D)D}DTvAEENX0)sxEno)<369WmrImrlAZ`Vu)sn|h?czuOC%lqE|9ms;z*YK75}0 z%Bm6XCq$Q=VSu!KdYY!DMyQwQ&=b#{V%GLFZzLyG&A>_!gL*eiQ=Jz_r(1Ozo6J(S zkl_B_pnw0%|B4=coY~eN`zaco&Cyo2C^DYD6!gQ$2tNy>EzD|fklD+h2dMR2)t`Ea zlxD3Htpkng!`>+a679a+K0wvbw<#$~q?TGHG;c%x8iv{Q4n`%LAd|-@!XTTu4FVoCws4*D$t{S%jEhFpoLy__xX?a=8h`M4~ zrI8M;*wvHwG+9lr&-mClKSK$fXhT!_m%leYF-g_6W%avF8hHk;c^DZpemVMnn7=>R z_n9(#7I84R+3&BdMTSY2=f~BMaN5M06-W;p8ys@`{YH<>0!%H_YVK-(+n!e8)4~varx7j2=)uwbd!=c>*FM^9y zU78nf?jpZ7HaC{o=Mo@Y;T67XR}ODTgDe2anUKcivL&*frtvn2DyRzv zK7qtKL5_~5$+=0jB1A3$o`3U21(J^HOT{BOol!XvX2d`jWeEUXV+Du5LsJk#vJgVU zwv#6oiC9RdxKB0fYh=qL_xO2BnD4k+R!;P&Sd0%e@ZuvNQk%Y}oELuplXmgjkNB9x zGATJOuW7=R=yoH;A03X^CWew64bDk%om{>k&N+C#dn=d7DPN*gf#--cU(@V3?cKAV z=k5lT`M84&Kkt0aRehzFpOSZZou0#Q$F^mF6{X!*YkY%)j`(Y;-y;K826hPHw|%UB zl%j75QyEbu)s+&WK1{v&HDr*tcy%&9GC~tWD7lDAHd%QfV0DGiTLl%B0B})fnpgM; zMGWx-aH(3S9zTp8uf!bQUdL~92$)w#nVhWp&^h4;*pm{AU9B|5p{Fya%Jj^$XQ|#q zCUcRG#bs8n&H$!|MHMyR`^QYIYRa^pG61jW03FR}l`1`iTYAPUi>kO)gn5|CAJ?n)P4x{)q zvtv6yktM!A>I2D37rtMsltvlXPM3Df?xcV85B?Dyed$H|*hl|_x|Jo(q6E9jD`5Ch z0=d?heXj6vBl!#i%f-1%RA$gxDivsTwIku4Y~G`L?z@+scfYPpRRHv!YA<^G1E-cf@ljo_7if2KK?-MFu z4U+~hea&#?MGt^$ukA2k=D~l6C+tGRp~?1*Ellk zwi0%7fp1LiUFkajjzDq0U`8~XJ1NYGf}e05@B@noU3kLtOu0?%-|$~mW+qh7ip3}f z_ioqNQaOf=_4*b$7A%5|>$?iXw5iHWy8Rz~w#C529*<>P<6(RYEaOrG3vlD?uAQ7L zfF9^%!#=Yb2h3<%xWqEZQ9oHrn=_DBIGWvzYnk*Cedh&SDX@LmS3Al5x!qCbpFcM| zJi`68C@c}=1Y(JW>&atOl8*-#eW=J5hSm?&QFhV-Ra^WaG#;(;5uQ3Dh_(U8jq8bOy_9ju+Z4sIfhZy&?qSb z7GwUjncDP`)~Z+iq%NYs-(j3pA6zXA(E(uqmOIB|Yui^VD^wf{c%hIQp#}c}RV!=s z#m{`4&Kx;HckSOtciw%FNst5s)(M)+ofBVdaXE3{Q1I}&+FJGdi=!*}9FsgqMsu9O zqGw~nd+==qAj8{`Uqxo&uZ3-b1sOr2L4G`9JsC$SpICS}=~_EM6e43AKZVxlF5sb;M~qvl~)Sz{)TfnSfq6-&)U zTH{s9IEODr0cN;U0rYXZP4U&k)jN0;f@ zV=lA7CEiz;w#`6abDl~?M%jNw=bo9iMR@U)S5*m}LR(vg8NIp<=I>YQj zuOWW0;=}1?sKfmYI5;sX$IxS13_ycgA~OhjhRp~~sYl1KYo1A-8@LbH$x%Qw14m380`e?y zHu_QvGA$srnZNdUt&AXEam&7LnOu7g@yc9rAl|my7tdQ!5`wr9<#SPGzW_Zp(MUuEISfa&4(qBLEfwkvgG>yGm(<0btD}9;!pB z-iMI1QjxM>*ni~M>`qfO!2ak_Z30+{;-J+iNjG`lX7f9JjiYW!^?#LGMXHWva#?Ef z__$hLqcK!D3VH$@B)LWoQNm+l{twWi1yiVBqh9Rs%r0>+P%2ZkKRw-lHx!u(BwgK3 zO{|J^L6wwZAE`tnb>u_r)64MXfzwQu&RsaqW8*V)fxE|(L6^U56;fgXpWp^(=Bk%7wiP@a!rL_p%=$|`T$rOI-Z3L{DC@I#6ShGyLc@&hK- zOBFd>l;luSo>!m-d>Qp0@2gNDsaH1N8XgkI}FG+OJT9Lmq2&hboOo5(yx& z*t>@T0Sa!RtYrir)e7bL^3^(JTAZ)a4g225VKZi(qK=e@B_8}+&9l79Een%c;D;`e zM(G)5+Z=>6+k8zJ)KOi0R3YH^nF-#pYn&Gf6)I--@b#Rfsi9p`{asxvspJ{{hn%=%tVQa9tj*B zN!VgA0<9pyMIxlbM^8z(N)iNoWhOi+@u?vugn|mCAzEEqGfW&u4O)Q==so`Tr56`C zq&q4O6#MprVJ*{EHOoBqJwijjpI9UsTw_ON0b-n4#6)1WV!)p(?CL=GX%a3H%B;#l zE>K{spwA|0k+6_<^02I?Eum^b2Hr!YByMqKGkz`eIsnsFE7=mzY5}V~XWKS1rDz*< zs%Y`SQNe21PeQYdtrRJVNeb*fT%9N>F>=9k9`skG;)k7dTyYXas;SSZr) zzGZ3k;9M!X(dO-BnVro;v)O8@6_Ej}&N^!<6L#-|OGB_;S&!*&W3%@*)+CV7t~-#8 zpz0fvRKbEF7Xgx@k>OEs48Zf2%jXQ6WQDe2Kg~*HDUsDqn#x2{2n4SO!or17VB9HG z^V?<63bucEWRwXCe&!(w;7FXyj2M6wsszGL2u=a;?M~;4)LAX_A{`Ms?yC$Y9{c7C zlxBwYFMjBQw13|XRORDGv5_6yuH1)}k7tgL`;{tPz0!Q^na^x_Q$0IJ1{pX>8B_FI zDO)^vp8C&_{ZHzE}qbu2co^)*3SD}n5GP1p7mO*PM6|%ry zrQDVb$&d>~Am+Kpgd7@o8N`((OEt$K?=eZ*g63&t-xN(v9PA_WBQe%l>%dhrMy zKX#hxcrX%?OehGc!xf+a-?dayCvOxSh_pI}&!DEsjI3nj!&=F;%m$KD9WD6?kRTmh z85b}h@(_ittQey(C6a`-)&f0n{|=g%=1|At3SGKbr^(?lnx5K2r_PuDsmuu7dh4BZ+pTxerMV>u zJ75w`rgE~HjU0q&8Kf{1C>P!9iVg`2S!mFFXH9%li9ge6cg6X@<#2tYbdG`FAwJ1r z(S@Z`fvGIQ?5#h_0}X@M#v1RVNvDo~gIB;Od6CfJMS;VU3JS(fF;E?+(cvtuRTpS! z?l6t={Vio@D9udxJ$Fvhj_G}TB~0cp^ip!ff|_t6cv+)FP!bC`DS9hY*dL;U^c zUib>NIK=ng{@ahx@BZ#rX#T$P%qAbcL0F=8226mCZ2}l?6-|q$wCo^)uS-WEHn?QUW#VgERdx;byU} za;1`uBr2GYw@40znN%=u!6-nbwW6}%*~$Sdi;91dbkuA%`(V$8*e&q(Vu@gum9;ij z@j?T3`|(7vc-yFZwfjR0Eqm!WF)N>e`F*^?mI8a$zp<@)h@M84xgv2Q#=ud|o`w?MPSK~NsN$8%jtD)%J~GLRw-(tjNxj&OZ_ z$3{q!8i63mtQ5%=zUIj@3zDNN09GOeuyjM!!YHGDs)6<^EYikHV?4g5g(>aS+Pv7{ zs92B54DRO$nb+zZT^lY*9!Sq=Q;UzOI6XmYWuDV|4RMTsqf7#9yo|f9DgCT4**DsB z0pPOW#ymY(s6t&0hF_jxS3TkJIar`Y;*;Ff+y|ZmhDU}d!6Z!OVuSYY+Dip^e>*B! zz<4iCkiZG>V|ElEySNsJm_|kt0bmQqptWU6^4u|BsnFDocky-QIjhaRHe1xGm-IyS?@w3;G{1qRg(Y6e*URqh9LclAyEVOYv z@iXA)@ah&5dz)EH_^75#op3w=p!Tt9Z?`)PIMXt*!W|_5gbGn@%IW(?dXX8xk(A{* zT49Gfm&f2#wwnTT6jF}aQm{h+UfIbav!=vh?>&?qN%4a)F4=--&&|ndCvuQ1(^9Zp z%!&y(R#$lFI0~#8iVRj)R;%K<8OTGcB?4vYlJct>!pEEE2z%YnbS6h57 z0-72v(#~z;QU$A%&5%2pq20T0kn@_{zKfoHZjOHM_g>`f2U4=tORmw*-8sIN(A=Oz zZCApRjYf?D>uDOFWERh3c9;i(W59G(s0J53nv%o$cuBdd;bg_x?@45Jke#~r1M zr_WQPa*D6Ps@%^;HOqi+M6#j_Lq(oQ(qcVTF2BfwQ-PTfuusfvuN{+8vdz|#SZn1+ znVIMNcl-VK(ib0olpgv0ukmqr=+F&2Xl$Hl{?a9yT`5Qs+ZbO*ukKQV0T1~MKBEFN zz0AzR$CoEgc*>TB^HgCb6ta|1ESR|ecs{e`p7^njjtfW*4=JiO zI>Njnkq(n+v)eUnxebl0)F6cHK-?fm20U1*^fiBhYL$p8?uS48VZu+Wtqa&*ucp8# zd>NZ4i@_N9vj+Rt$JFXR2if$4mB01>REE(qi~hi0lq`sgE?Y?Zt-vaEoD?!{h)&gZ^ZU$bh z_Hz>Di5-jed6f!34!sPpIz|U9=Lv1J&{OK4EEaA^Y>}u=ARtkSY?x#v%c}P8waMqX zx(Qy|c(2LODMzo}lciL^woGsNhxp zjnt|u3a$1~C@)jl(&PoWN_t4)0Y1D;z9>=v=*EM3lfn*2hJ=KydvG3M@G`_~Z?m~Z zyY?KUCv(qGwOQry-=&3>CVk@5U*f3F5Z!*`UfRF^ARRk?oUT*bz)N3I16zAteONaG z5`(I14$nndj{H@{+g7{4AOQ*2KEc2%;lr*G6~cHtr*ykQNwDN1(Bio}n`hQFq=m&L zT3%YBL~fX}V>KFOHhhT5g`*&umR6`#k7ObwVrb!N8$cct1iL;w&Kh+Isy!y#Kr!fZZ$^_G;V4?`@q+00V-H%M09*5?aey99#G{@+4Qtr6t=x z!68EctTko~Asawx%UZo5Y#0o<#k-F`*FiRZ2x&l1n6P|~ABIFqwJF?z90sZg@k64Q zM5$2*AGJo6mX>{;5V>L#OD-Fhkc1USE4Fx2@=X(1uv*hR2#=ZOmJ~U-{f;}C^)1rM z%912c9XPOyZa8=c4GqoE?12Mx$K99c(MSHVc*}K|HT3ux>kLw%|HXpNn)~AcxpZls zM#s-mt?AOKQ>W3 zXzh3qLwQnOs9@e`)H*Pip*(!eI5d}M#uL_F)#^#=Fp!RqW zYqwV!fUa`?SfhL2buWGW=|>1ZOk*|*@ z{=I2tRXaUMA(EoC9Uq^hC0;}UXlEE?l!kLs(d^RvB_8BZNTEcx-24EYJ2OYyW+!<7 zAEp;xI>pDKna|L~MxM$$MB`+$&W(XS02)H=fv;745E?~-0!qzdlK-yn`mVy)zV@QS z|3-yE!I_)ugtgk4aCCGuc=%zgc^+2OcO9CB-h1l?kM*`vZXd{5uo%ydx8sE{mIj*O zJwz@7U$v^pn)OXqu=o=PWJ;9=CLvO*;&p`e@i!Q23s&twwazjrW-(>u1aZr% zIH0l;)4#)hxLfz*8-1N)lIQ$BfJgPcQmG`@&hNGd*ObD({ua!P&XM|h6bczQAPd!q?11+I*-n{)qn4hdxO6-+iY@35dQzSJ5u< zvCQ!O+n6kMErkPKw-$e<;^P8jJLvz)X4^=L+BHTR6Bi!89wMRDm&DryLhO9shDU}e zCpi+Z?yggp$G}o9OGQ7+^Jt5z3^*?>%t`6=!st%A{~g~cq(Xxi7G9U{QLhCjZ^ZOC z%9WNPL6CvK!+Lc4ZVG0$QzFmA1mD}R+oHGLd?Otk8>WT11$yL>r|A5pCCU%w2zl6; z<6S2&-s3@_CEYs`v2bMJ1S&M-`5@__IwcmOs;w12c7E=QOsJ&6&Zj(y5CD4&;aswq z*9zR9k`O>h5_TjJOHUVJ5>X9=Q4T|;r+T5==R%V_t{~S0R#}*99mY0YpXabE~#C_pRh+hRB2eI>r;rr3zLJMRE~sszLwuZCiGxf9r#{Mdfl${52h3 zS#?DdCP7o0;7*=K`AxpjsPcqTdH}2)ls4o+Zn&t1{7C%q!AdevtZ?X{%N@@308A2M zS0ZM{q=^n${uwLfXly7i12xLGRhc;i0EVs1*l2-Q(9;YEnMq}ef3;bm^6DzBRqFi1 zVF#w>)0vVCaMgN?D%BRh-l5eso>)QAqs%GHh#kimq`RiVRVaE-6??0Bu_hL%6^jh6 z)D!*B1NXgy-v7S$(!1aH9@@?<>YMFe5N9&tg{4fJ z5WBWGLus33UpHz-ZK>3_fq#5E_B(N@gFOfPueHgtC28YHRvRa73wEtv=tgiHw`4+# zI}2>o*UEVqX47Ua%YMnYgSwWTjAAUe(+8JiG^mlyikGl$SCi)elKJmE-v=;8O$Mz^ zUhsiw1rgr&v=yMIdzG9HN3DbgL%&OLpVk3jwF``XuNZtMiuyo2GLtCSR2=8r+$Ea3 zctMV1Vq$_9kp(H}0{M*Zt9y!Lw`UXjB%)rJzjJbInr|D z-W~Lp|Kj)4{=M7j=J)^P70;7=%|F5a{KQ7U%CBQZGRChjUgmp~{LhNxIKiuJ>($!v zy@*;U~v*3j~azP>yRKYEzE%R(G%+qc6y^}ISQ@r3}n96_^AT*7VSiO$= zLIeCYn5dADI*Q1&INCN!J)TQ@%zj2)CbJOj@>Rw(zqCk0%&@{42s&9*SOZzHR;e)& zghCKy>2tgH?~^_voG24u1&;cv23(&jIOw3yqR5eJbme&F(!3}GD+`iE8-Ywong@?3yy+ipdZ#T&dX}d>>LRT!V+Drj9TOE-gU~;G*J-i5 z%m3@1)XsX6EXWd_#`akf}c)LGKv4qUVIq>=+N&4eoR(BP$_71mO9)qaeUf z|Mbt$U;EJ?r#IW1%{B%^x8UdPZ-4t=`rPL}_pAK#|No_5`lb1YAAa~X8Hx`8r~y-M zq7PW(%%BZpqYXe=Wb~MUVM`TQs6~;6VSTZL@(pmK{`c&@6)ZXHl9=M)Fs>0rvmrSg zQ(P7hXGAUNjI*@%XT9vf?X#-!&)H_rIet7=-e9+38CiSWamj#{RKywM{(i76llT!D zNrtdj(Ezl|F*pP8EOuX>&D=Ji-()hQd40XAN~b!_I)%_8Cz2AyfdM|EK^XyvnoTWJ zTj-emCGxY)|SPcr^%DrzC-s?9sLc~ zf&5yxTBESh;HXwdtGNNFiAQRJ#!DkK!VBE9Pkfg0le;OyU^i77r_|^Svzs*m&8TRF zgk`Un;%T+R05y;VU07QN3GIUjyCatcuQPeh5y~;+Pn@I-N6GTVoLFE6+e3*gLQvRZ zBCIru9Eyy%M+6*MMcH^rZp4=w(I^Ja5ylHg_<{Q< zSscL;@FoxmaQgb(Z>6?z?zk2Sz-HUD+mZ+%ZBe^v`^^;96ZFJ0&r$`Y3VD^%5f%j= ztlR-$md}$O{5|uK4di*1RPTv323E!J)`Kt__2qppU~0WfVJcEx2M(F(&l8ghpurUVE@Ko(F(*{p#Kb@kHu~BMQyY$}o zzLRn(mp=FTFViZM9KM?rw)ll(XXy_<_9?o`hEl4icD0Tb1#@ax)~jhn{@yi}X1$gc zXZXn`+u4313#UNlZU^iu1F&4WKv6QHS?K&1=Ojx$!Q+9~;?H_{YI$lEh@2HN(HST3 zv>ZBz*0WxNFI0{Er59-BY?s;rvy_>X6a?6g{Ec*ppZm1Pzht2Wf(wyYPfM{%QYRv> zs4gSVV?yl95N1awhL5xs-QYfu8{*^daKtpp-)F{O{^sX8%itW+04Y4-fK(P~n79D-W-}gQmV&K1e^f6jG`Y25wyob^Z>bs<4gnd?=Z~LUc^=-=l>%`ayO;1h8 zs=IulE*aU-0^(+c%na1Ag5nO);(t+=(Bl z2~~_d1OspMV>cm#dWi?CZKETUXl1D0s?l1jLG@lk%=e>{O}Zg5#sPW;y3MZqpq}xz z?c2G-hEm~Z`?hT~w@{Hx{QNM71o&Ya8YHUM0ViU$v^}uqQBj>=K!DYC^b7@ zpoRHGNx=H)pZ*7Lg4H+M6*aJ}?|=XM|9@|J%U}5Wk3RZQPz2Ysq}I}>$yfrBmbWD1 zcSt5YZB1(^7LrBAbs(AC12!_9R=uL=DWkxE#Y8_bs=pc*&8Icl9{{~L(~4$wpX-yV z)Z@`=VB75`<@3cp$XllqHGnnlziPKD{;;lN!rYc|v_N%`NTtVTt!(uDcw*O}pg^=P z*=nP-A+BK+ZL^UAIR=QT#?6;P0t!fdv0btd%x1?U44W`@)jJ##4MTX&W^|!IYOh0m zRyUAPE5=c1{R2NCnce`nxlBSBP8)%93`46%`&K4E{lqL9C|u1o8bDKvgEafukeU<; ziJ-*_LMdkrnS$&2lH7@0eevxy)`dzis6+}$FxuY+tgh&J%~%@g0g#45^#D9)09y3` zRZ^kii^!ae8HaiMZlvxXxc&gq@TU&LiuPFsLfuxHCT1t-10Q$~6&T2V?kkTlvB7|f z35Fhnvadh&B3)&(fc0vd>QLUmCf7V9(UFU}W26kAJnOIqbF}b?j1%b`_ctbfvKeZp zvef3#J9W9&azqms83lcup$yOIU6BKX%vL(wkKH!+R}Sr`;J2PGQcudNx-^vI@OS77 zIPFyHbo#l+X?SWo<%TDj@lK0Tf5d&;V{9M=0T@|2T{ztE_{5B;XY{tR5P}Auk13FV zy`#kguwF`Lcrn7C@~o~cQi;_YUgUaNEaEL_Uc;d*8(C>WYV=}rz zw2e&OJ$v`ikNn7Ar#IW1?MhoNm;0N)`@6sRi68yZrO#fgG{7^qNrOSeF=pACkmDFe zPZKSS9TTZvt0Qg}Jpo>@AOeU)H7nO>FU90Luu=i14*+c_+A^*d)WyrKTKy-{V8HBG znK6}a;Oc?0$@mxhjWd{5lNx7YZ-q}^}GxWGYfXqmFW@L%RLE<ltiDFJnT z)uu6UmjyE%I-sR9rC)Jjo$6_OH_su7fH;+Vx1SzD|1q5wGz zQ@Kl*Tc!$AWPIXb2?}NmhV$HaM}|hEQc0*g*Nk(jM-W!;B&L9zz0?fFq0Ji=&T?2xJNwk);U0G{rQe0qCljK+g*nei)mi z@@7wDhq4HStPszdbW7< z>Gf*YvJZS`%bvz&vqH;D^V~7Iy6VP6#5b$Lt8nh-nia?^n>G(nU0D_PBryxDYBB>0 ziKMWf2nhy_hD-)BsG|ag4A#D3e3HV*Hu#}y^2%#z&8Iqt$PUcR&<#6$D)+cEP=~5w z9fw<2xH%W^E1&Tv{me01NSTiyCc5lqQW78@Vg~va&{~!H9IT3V&)A?fTk3H<0HdV$jI`Jhf;e&n0f;s>OczUnFRl^9l$1;i7pF4y>TMYFBfy$u$4`g_Mz28=Hv`^O~= zChV5NexkATe|#TR@^V=*)`#UJ3R|GC3d&fgyfk@1SBNBNOcN<&&TBMM%9Z0e!}E`Y zG_#)>cQ|f1rlH0A)YO6}2-&U=5^&G7o z3uyG<1KcksjF#Ldx(;M!e3AdH+_ns`&d*<@DpUPU2B`T`R;oH6DGC!`g9o!V?q}$T zmIMN742G>9R!-cB*R+z940(ZY6Z}xMwI(oDD*OtRkpwot8yDjwk{K^VF_Uv;s z%`C&zNRe(nxSJaMuq-$D;qmnWMAlxjU88EVPG`<65avrJb9pj}q#9NbrYW1tQ?i<){=U>}nLQ(}~)NEuMiN2XWB`U>pB^BfF{< zuLc?YT3sut3|$z#41C9d?ch7!IxriT30UhW09IQe%UV{&6R+$!*zMSTSSzh~v!9J8 zhxI?>DEN}{#tD@f^h`EBXF{~F=J92G@%r~o zv+b2<)Z!$Ou(BBr+X8F@K=c@lq%#>kUo%zB15jOjX6CieBV-yR0-EF@znk?2y z0Bnbe0%U2!93Gj~(qFn=Wo9u^8(?jdtD+4vt|V|-rpk#|AKQ$TamRKf0b8`N1WQ`1$+N>X$pdW_k8 zK_fBnL{6q9ih#!es=|)%7#pZa1tgL2{B?|lpQ8m(2#H%*kVP7Ca7<*O?~H-@+(x7l zgYgCa?vAkgp|JV*-7`fQBC}YPMJ_C8jmI!#2y!92{BN==vIkV^%=GHim_IM9a0Ue! zJU;gXj{%iAS~&46O&qv~_nqO#KS9@v484}QWwU4UmDtnxd-45U?(-YxkFBe8)o93S zXkubi7|}&u#b&bH*&xE^9t9Rs!$LrtNe!97vywybH4f4H9LDcB^>Y^B4m?}egSq8{0$E?IYZ27O|nfjs>=? zq!bX~L(W=#aiC=)h0S%;FgyrDQ-)H@S#uzf@52!8q_~nGD_%-d8i_+BVNFMLcyI~; zbBj#s2r?!fOR+8M+8|PoScy$@;WnKFRoWos5Be3);t~#fFLB;IOtN62a9?o`?Ib0* z(tuwI4f{3NnU7v&Y2nJChCz3VN)W`FIQN9gr#krGEtRl>j_6^ra045Q%2p|C7_I_gq_+%H>gCxmhPNg8oc}aU>9VO8WFs(+<4q1UC z1gXkNtPWPS#nBw5QP~8LYpN~8py(X@WN=2&ac9SUu z{)s@O6ex2}9kADUZhMr(*c3_mEPjTP`b1RDQ{}8fBYSRREL9@0yn6#%Jfdb>oFv%n z^P7R(joa94J6i@=vxPC*Ha<?Im0B}D^Mtup;jDbcLfTOsAM zs4dSE7+&KW4qK{n*pvZnw2-Co;k<;ppmiD=8lj2tQ4#!ao7v9a9pV8gPY3oLppz$$ z(8Af{%+`j~=7(pJkHgD@WvWpjQ)0jhP@14-;LsB<9A>69pnQO^TZ-DelJi}N##0iy zz~J6&GV9xD@gmGM9o3adK`*q19>|EU9h*d87yoazH`_J0Rl3#|FC%K3%~rR%K$QhJ zI@wUzXCj3;qd>qn&{=j8fD9l90B}Zn5z?xX@K+}rsV#mqwe$z4zsa!&}o48&2VeK|m10unj>Yl&hlEe3`;4&5e^Q4PBw zqt&w&lUz6KgUZ1%=)#^X3l;|b2*CP&yRNtNb;^?ZsSQxw#*?^)h3NHdk%YM0t+w_N zqL=Bl5V8d=SkoUv3fC=s zrP`gS5cC-US%Bnntw^uV7G4_(Wf{Vv(0BR#6MWu1RK#n?(KfR4 zPIAb7S(M`2v2Ce_b#!Jw?b>}KjgHUKbfYdFka?!lkDfh4xuj3?ydtl)eVs7*=2TW& zG*nDcDV?Jx5o^|${J;6PbmZu`w98?U;W(A z_P_s1+j!#1r|6ge^RLoN{9dhAVq>MnC1AEW);<+g){^Tql6-M{w_ zUv)q6ef`nL|3t1wu~?Mrwb^;Twl=b{jO!IQ=&ew7#ezFKh+3U!)GvE#e~kW8z(pYJ z2_~&H!oQ?--sO9uy<89S;sDQ1a&ho!{{~Qvvz`{r+GC7|=mlH^@M~_%1Y&{Z%Y09r z^*UPX0uX0i^*hw}c(o-`ZL|Bg0MzPk@w)vi7+FXOEGUgLu>kNEjALv_7=KbEcG!wz zR$uEz8e>NlE&$MW*Ov)a7#c^lu9!!Y%nTKVhN$Z|s97shtKmx_l|-sYiWE|+2}Knm z3AGylFLmCviLTYri8ZvD%@oDh@lZ|swO90Y&T63(s%r|Y(L62AqLyNA?B1`JeF&J1 zOvzMN6T>2ln)^p(?j2c~h|_llu#u{Pi@NP@vJegvtP1shMr;gg_Gq z!u}hv_OBEa+x0^PbT`Tv5Z| zaa9EauDwN~InFXkw94~tp}?#idFvu1@g`The_I?QHFgGJa(s^z#YUDeH=p&5JVtkG zitC^NPbNXBbU|`QgayZf3zZ3Z!RHQ*QhT*bU7qW6ZkDW+R!Bo;}SUz4oxgZ+Tjgu@1^VdB{%(UQ7Sja3(bvPzc3FF#DkcHw-WvItL%`w`_3 zeKvqL>4M0SOn!K{g-%&ys$KfIY9j*#U=1yz* zWmD@4Zlq4ge_cGyeb=L*?FXrw$}3AOk4=K2Yrq>DWm}gE(_cy3NFcEUYfPJbEW9TmyS?+xI`S_m#R`7o&-Cvbz$amn3>dZ2Amh> z7pcx6`Btq;wG^`-qXhx5BfLVMoSvek3UZe!XNDNSjUQUZCN09xZ2!`G_;L;~0W)Bzj;FyU_i$Y1}jzqal(8$sO9|6ji# zzXLehWG_kZ!@a{^@lU*5k3X-AG8-DKNO(Z@di3HclV zBpSfu#?N8j|Lk9Un7+V(^FRLLFTCop-fOmH&lB6UKsEl|3;Y_+=W^RY!}|c9_A_?d zI6u5r<@bL0FaMCdhHH*};q$iPcbp@Bun73j_g)|4@nX?;09daTv~JckgdX(uTwy=V zZ!23x8itm^FWCo?77Rjv4*NC?@&G6{lt1{)0LaD*03dPFGOm^_wG5uMrm_sKf<_|i zO{yhBH`hMdf!6+R$*h6&fco2wd&lC~EDLJ4IY`jztxM*Lf7iA+dmQ&}waHZ~ZHT0V zDl+r|*87%PUSb{aj)OI=aTysl62$>hV!#hyXOzV(7DKV&!B~VviQLbwE+|5=&#`=? ztsbTzBQ)nIixy1EF`0s8eQ{sn#Tl#{0>HP`!1k{-8P+N4^P8eggeFmz?tVbFXoVz| zd1^DJ*EvQyS~EqkC7H=h2%DLdg6AJ;3$b`(E(DE`g|ljTaG!B0tYBm;7i0rHND_&Q%)dOVfCeR z;wzt>-OqR>&0yFQt1wrhV{b5N|2niS1FSt>anzd?s;j>%s909hA;3#_R=|oYHIL8FT@|BI)SI+cZAg_E zJPetXLo?GO+{c?Ts0rZ@2FOwC4;$SHd`(<%jK84P1P}Y{gR(Pp-P`~6kN+WqzIz0q z{rUgphXhaoq+O2HdnH!!N*eZK!RlZA%YTXfHZzD8u>KupBaayH_W4hLV%_)t_5bl< zVJ6Z3PiAd@^S6Ij7)bzD0APSXZ0DDL@!!&Y_ueC)`=dYpgn;WWed%G@r)7g}`~0W> z}BJ@uVpHZNYVXL1_W0O|C+VI|#(30J{Cbq#jQ=6K0sBKp4NwU5Ht0 z*-)c?4_VnV0YbYkpw(#V0BUh=C}Ew*@R(MhW+O%AXW4aXhyl_O<)N zCw&_UU=Wi?bBJ|(hN}J=19o9q;^+(W7nrJ#WDxhb<1|pCm{(4_cJHJM=bQAkCmy2?#M&5Wc(s&F zYbB|f>1nF0m1%x)nZ_n2sllt|9s}Fl$OwlWva*jwW>;N!weo|BB&=$^L$yki8f|z_ zs+CO84QXwaIp1U;gR8Lgkr^0WbqJt9eGmo6Vqq6r)<7q9Yny}Sy04!w8lVZR>E(bC zfFVHKEWbZDw|SIlj)B%Ib#TZ4(7-_c(|`Ok{nsH00Au>z@A{rT+k0P(@r<|cc-OlG zu;O!QAN%;nkD|Na;H$A|X;=COdl&u{+LZ}Z~fXXv%IASk|u z@h9qoPs@%fsPjn;fPATtBn(DitY1th7ILi6WOUmDh(cox!%Rd1NiWVo18OIYxIGk} z0}C#}u3|xG|F%HVJ|`A{hT*`q0FxJzy^tUSR#zv_z$7+h&AtX2(DhZN>|)aDI4$#P ztYzRn5)1&VKvcg94#Z2?27%F_yILqAnM?`WiR%H)s4E~8<(jja6qZVhPc3+qcBiYy zPKoatz$q~^H@E<7v89wG> zvBbxkq`oNMP-!yhhk8CXaVii1os^;#U8xNZT_Rtf(C7{mvFmNLw@QEVB=7XdSx2?n zeoW>yQ;5OQAgN2XT%|&C3F|r<>K216qrk04sK2R<=tCm!9s?doi(!5|vi|!SZ zJ;MEi-e)wpWTX#~k=j^?4T>!cDKdpGbYX_oWB?G#`%E(SiCR35_)P<}>pUKySW!;P zyaHr|n#>K0O)O#sxVpN?^gA_4+Cr&Xdyje?r4F2yIDz!wCCflu7qIR%FM(cdq4G)* zu8ps4{NBbsvhlN3VAB%ab^Y z2RLNQ2x=Cgtg=WGt$JNGNETMa44|5j>PsPnfj*4rdM{9a{@?t9uz?6m11wo4aAUK~ zD1g-uGc#&s0UO(oyb1$rb+em+(URykA7T*qCkz^&T=yC5{|OUHhgKEs#v5)>DS-jc zANq6O^RjK;cdu>(KoOtCcWnF7ANz6n7w3)FtzPu;C!aLiKX~2rqhM@t>^OfgssHpJ ztG4x}BS+=mLq?jhu|dcBgpq1okH$bK`tXPUC3mzB)3vnt;G>zXTHo7=`opmFa0^y# zbe1IXz*aU=mJY0+5MZPlORJfTXZgojFq^aku!>N#p3i!@jMYoVGxDwOc2L#I7l4RN zUjRguJG2ZNm=I;=6s!)i@oi--qlq+tC(iB-j&o2gi{u&a^xw1K*Rrhu-BHw&Q<6SiQ7uIU8A+I zB>=gI@rqd|Csk6oCZ$*%iDU_*6lm3=Pzod@v}lAmb(?%QkX-131aV8pXlX@aKv?f* z#VUwsy|3>;XKJCiD8B^gN)b)I9B4VAsLQw~@w zdtdd}Q2K|Ay{=>Y23%pi6mvz|FD2lb?Ds>h?xhg|Vc0`0)PQRmG0T|XFmxh6!h}Yh zvPF*O`6uWNYFHW1(d*oBuhR^6TJ5@F)bXk*e@53&%67%a6Z1FM|3}oImoJGE3Of;hgG(g5n(!wsjqrR?QXtemf zNLXj|S07^!yk9eUe*QDU_QGW$A&hax6g9ds)OtA(`bM-@I+iU1ti|DJY5{yO!}opqWH=4}kqOwVcAIKKfn>=WngoxpMf$zPp z%aDnSPS@ei0K?%haHzmQx!s0@L3Jd;#vpUA=ZGc?fEscDnHZ&G*e)7R@K81@Zl-=c z8}?UZ@D30TVD*O|`JI=6Co2W`ssHsSUQyFBy8+;BWMXTzSGEL%{%N!J%fIq#@-x_v zCSG05@^2&K36P3!LnjNS6TmPoMJQbX8+)ZquW?bX5BBpL%n;*R+Us#S<~PpXUXR9L z&H3<$f0lo)J#-k?VOp7FKM@9lW)xcTk!0#{qrM(Zs=|O3OJ~h@WP_yEQ3DUuc+yl{ z+X-+0kcrO#w1Qb(Z}AkZv!AlZD@S79^HHoI(gh-Pc1V00RJd|PZ@UpJZ#@5a*k1Rw z-rWGliDN^Byk5^SY_OgmfT#jiS3n;O@bUe2yTgC0rB%|%2yiSLHLV+E3j*Hx-(0Dv zNnU=?Ply6b8p`>Q7>9>pLn>b-B-tq?lDsZ2s4J_B!ir^!T1U%41wjGrs^LsX7!w|_ zT8R%oNR|T&Dy45_64wfSdTb$CWA)HT0%U2z<%CWHN<+%FuAq5v5?ffP#;#{lDO zK#q}Ppf97yhdhsvK!hT7h|-~K$LED#mx-}DpVy9EdpX#vMG{;I^>&5y<2`MN?7ks4 z^}4k!bqVP5iZzK$>UkLfsTmH-WQOxHxJ^!vb9ko3 zp_;U0^!eR@rpAXEOr53NaDh&oJWW&6GvehoJ~B$Ht1HxL)F{Cdz;LNRJ9lhXf7SAe zWb|j;E=@4NNFekxJWLCVOZ>2QC|k%7I4}zECCtKl_vvz4;?TeaZ)V@hq~yg>wBrKh86A4|1W<@7(nPNzc0pC z{>E?rjr(ZG<{JCJz95YN zQ>~2epY-Jo8=Jj$+h%9!dNeSs^cvebU8i9NLNpgulhh+;+BCq_wfZLEf&ia3a&mC3IoFBGA#$%mGw=k z%+njx2AcIj2~oR{yByoL@%4BZd9!x8ZM`h~+b4XYbE>Uuy*2y{{PD?cWh*F@Bm zq%be!=M|N%T(uDti?+a1aPC8^+ZMemwt|tV*Wm>(?_grrAxah|BnLtE;7D*pTngZ< zM2N_UL`cE38?D#t#}{#f^KtFlESQBBMZFfSt*ug%Llw0~g;)0(4k;#S z@1C8)UOn;HH)zMU8Oo;8lxI48v{0bE+qcnyy*tH2Z+y5&eg`%%tK2CdfR1Pn@Bh|A z`)DYiqLsOGl;bhHm}VBB-Jl@`t682*O6e5;o}tF-8ZBO!C%@U|zq2$xRH8B7@66~3 zPYfhpu*2CDrQLvv8IKAXX4M$LX7D#h;)*<<3};;$<`0kX`#JaZO9Hiw;zlMCAa=lL zzP9#PO`;JPO#orr01W@n|LYg}dd}~7_dC~p&ssd;=R<$)d;1{L$_UW@`M>z^x~zVH zz<>6?|4aEDVEghc=HPXl`@0PomSg%izwokc;@Gc8t1_Dm(2jkH&DXE2mt#Qs0C@x& z!0oq6TR%{^y2uKZaSILOq`*o`T83dySXEfZp~@1fBuSR4Bp#||5IKV|xnq8hXT8TI z0sxf&X|}qQX8iVE=6`CxV;Qh`Qj``LNRewSVg_KBS%n_t29fApT>&bNVL+6n0C2I{ z^cEPd^CG2zPpP^CC?jD__5rrlbYJBUNn`qr^BLv^@PI`nITpQ+y?#QQ{jv5|*=(8$ zg`8aLPNyZ+`%vi*nZ~%@_`&P#R*h=a6$Znr%uaU5CU^>S!xLGvwoJ9vOB`idV%Bwq z$Gug4oyUTxqbBJ9@}W6@VKW12)GM^KFvkq-3ZGX?SjcoH-Dg@OJAv~(_V{{dIP4f1 zsl?@4e4-H@t9)DpCZY)?NfOIZu2|xK3$k7H#`XIB5ep+M90Ff|55jQ6qGbR$<=!h9 zCTRtZ)hF8|Sg|kCu&@QDwm-!uROz>nCO~h?_cV=q?F=54%Qc$WzJuPNh7e7i-k=u0 zHm^r?@bb+rlV0AO%l!UopS{|>TUfmLRxiKh{`KlZ<@I>lLT2%$K*ATZ_hBkaKI8}} zkdP3hX(BjDVSMp}92pcra8r39+u#Ner1<$6*+E0oyBN4S)K965^m(vEL13azvIu>H zL;bd04kTYmBznsj*0r@VC3xUK7GePCA8L8RMqLH?nWQH`G@l!nuv(Kt`X^4Gk&_r5 z9p(WK{%l<;m&-ih`m}#1bgEtcev`%~CunkVoI%NX>ISOA!^DD?%V?NRtD3-Pu1t+q zgGLw}V`5ubS>^BaL>mTnB*TL?w5b^M3OuNek55XNs$nX1ad49XZ(2er1@1h4)}fKn z5-lw*syz-06m*(WVlL0y-?43n4Ae)CpQP*AKK93dA}pk}TS9ve1GbF~;p^+6=Y*#8 zCwW_%{r(H|o4@tDvR&)PiUxh>)v%giN*@<@1F)AL6qeQMMbRz?wvot$cEs!(pR;T; z&KEjeYb^zKS9P$OjCC)6?rN?F7}dDVRXn*3EH}V5KJziS5Ez#L3zUEIZ~X+_c;gLp zJsKnd|MFk{%jjBct>QLJaqtHfVK0getVX{Y8rJ{-olt6d`!WdnCUGW^2!i@?Vlahe zi)CrzAy?hxpaNCgq`!X*{Uocff2{EkecVvrbyJ$`oPCi8`WiHlf``8C{_$tOtsfZ*AFQF`! z1bB+my6)OBdR2pFH zWO9s3F!H{BO$h5N{OlW6n)S{0`ZpvC`uuPv_<3V~PWn7T`AE)`e3;PDL_(NuIl6F@ zs0B3qU|cgfnm%|7wXh(@`@XV|eYor>S1l1DCI$uQzK)6CueHTl-B;4kZW&5ENDi%y`skY&cJ&V-qx7%+vL3akfy5`!@lmRtj*v+TWJsrddhiQeZZ>ZvXL2|0`)F zlPo5Hj~Ph|3a$D6xQpz^C0pN8UBXqbH{NgouqF$}G)Uv0W?dwB)eYefb zGC{h&R0NTr)0>bs56tx>oW@ImEWuaj$Rbtc!*ei*y&QTdiuUn_N3#aKDkA6eO(S0`_qWjhSlojR>V?-bCcI~CGiHgczD*f&Gh8g(ysM;Z*;qs^S%=4gFK;LO7RA> ztgzlfGF3vf)Cqldyhx;3LANK>xTJuG&p3j|iJ9$tn4x7n)Z@i!tE19HQifI{I?muZ z13vLNdXqw~j+Zdym9Kxh8YuxSfa zFeMIWwfW{Z8*K)mqqJIEm5Nv>SJ-H^`6lqhxEe9#&3F*7P^Zk4bD|F!I+vu+E z`4RedX)hVg>UIXO*F!7%dTbNSD6;wCzk0p2q;J%|?z!i^!{75g57wAry=rYqz2j?M zLbTrWUKl5sTLYMe#^^fiGEm^bv)hr^U6eKKBHSKQiX#rY_v{zT6?hd&_BlU0U49-M zhx$yW1!qXIvf+OlMhA$s&9Yu-alKQ#QdS&DYUZ*h3sc#a-!bRp8vv+(W1p7M#o`p- z?b(cckq->2Yiapbr_ahtN`)}3TJ90w11QC7U~&OiaXur%qg3LM9>!Vh7iFShA*B{z zgGs&@YVsAX1%NL4wKe9KYZ0pU72}5j*&Z+CJCx<|sKAS5fY*h&lhkf55xf`IRu`$& zT;;2PqAMZZ<_XJZz+UHZsVYfABV#j^$&XQ%e>^w`xM?xa4?L2wuEBsFntmioo;Y=y zj-EV23#)7Nz+2x=ci(n9FUU($;u37*`1lkb-%#IVAD)z8bRt^Mu-f}*7a;O)G)OqJ zP7U&(O-7OAE|0Y6iY9zXUxW>pqnc8WJOlpSmnD1&d+KVU3dI7k5e*h+qEC)OlOXeQ z?QMUege-=C?V(I))S{rZLJMaO(}j~S&|m!Ve|N?6BySH7|F7`AzIT)NKvSpqy~>8y z3#Px+W3T;$dF|KeD%*(@CtedeycWRvY8uun+1DG{UhO!p1cYAAXLYIUO7*G~qA-kK zz_7yYB*l@NkPMhZgiGFQOEP1t!%>%PiAH9(Q4>+;NQ;E@T3x{^a03A&YXPfD0W>-x zi$ey-_BpzohV^pia3yWCe(-9#=F91!H~a3EF|2!Lw@dxu4km>O5)fEftx`Ulmhe}e z2kj&S%j2g`QoUNI(hv{4L&K^^W0oS3oTL>F=dacq63WEn3S(+i&w@{5qu%C0d!8mn z$7uWAQ&M!GP%2WEsoW+{02#MPX=JLRLQe-^vp}6@ojZpoA+Sj7Uwm1itDmAP8nt2G zzOp+3Ei)MYp}+J)vTBFEtkrB$rM^aok33IR2E-kn)Zza+GCVaJ8)Ox9Yxlfp^U#y9I%p4Gc;$is(rbPXIQc^Yc~13jHc1 zIBisEGT*aFM!sk-yW+y3UXFo;WQF-M;M9id0oK$CD%zAiMH|>x4alZ=RzDJQP{J^f zOc-C_Ot;t4#b+|v2ZjKiU|6+$=z1-lZf}r$16I#U0n}E@U8lLVk^~$(K8Mgg*j$*b z!!|0N&d4MKTPnZdoAWaXJ)YD5z9wpUeGl5cwwK?_W;0ab?KOEkflfb{7qv$KAA2YfyQuA`5#+s1m#&!NiGBq5#ZDNx-O|f4#9EZNlE0zNOkZ z!;D5IChnLb2Vs0WW&(>P)B7qs5jd&|SFyWL$P>twVT2uB=}`2r13?+_Uy5~#!g%R_ZANV5QL?P7AhW>p^H2(APjUNR*$3G>fj z+p?q1^Prr74#l=WG#pg82<6muci5lH1Z=*|{R)s-oRoGRGZz%A9{G|jRi(~4ZCsK}#Ls5eF z1u0bn(nkf}Sw8Qq=#sJcV1URIUBXk@1|$Ng3Yg9mX(nBwJ8r$37B8KJnpO%35UUrN+?o~^Qwr zTNWwA+0?5AWgD}-H(wOIzU^`g^VhR&Jnt*re`H+{+(?c2ML78vN_W`NzC+Bqvm+{-H~ zbdI+-#oL=(T%h~k{x(`GuSs!$(TL{>`#31vvl8E-a)4>tZ=Apj4H=Z)6Iu&pv8qb z>Tst)GS~d#8eO<4IWYfga!$A#*DQh&vEi1`YsK zOSn413IcE%A`{L*KP6;-UCw#mKCp+ zN(Gr*I?P%o63|ofJ~93y0uu^1Lh8e;)xaF%DXPq)`ag^141>xBM~(tMr`6>yFN9Zl zG;d0kydwDSKsa^woc zR)+;7aezF?X7iNK4^hI=veE#L$z+a6hOAc1F^N=abv4KvvXhqrR|{6n#7(*gGU;=s zhdKSqUydPMb(^7n#)$?MuXG3fWI#1%cVa~W3?Pkc9+&~Ejsdie1qF(*H-@(3&9ROM zW;@Uj`fiG^S&>R3({weBzh8?`i}UIlE_|2XY}ch-&k*-!&5l*q0_-<$=DET+oj~EF zo?7FHhp_r#M?9ux8K|a;CF-J(2pl#dT>X=QP1LD^&!KtYj?aJ?*Ai!$glr4lP& z{HE>m^Jk%L8DOoh)g`3=wzs{V9{tlt>GnJCWUx0$7tWugqelZ-{+p61J3Tuq;QFZ-o}nA|?V~Sz{`0hlw-22x zRxOK*OLX|~bF^AnlQM5vW`gk1(} zoRcIl>ibg;=H_^&eattLqJDphoBhA)r0zt0#lWU-$KKKc1M68phc@?iyqX5htdLOB zPZHX{c!4&>jMf{}-cVbsZ>RQJ6UH{SE9%pOPse^@$3%mdq@tZ=SzS#`^aZr?f*T&m z9KGp5<})=*u>FuRzzxJ>8KY?A>7vh$msqrW+=mfek|f#48SF2j{#XcEB?`ofbSipz zfdMK15%X2r_NoX1rFgKJ#$e^c5lAp zRysd-k(QWgJ$n2keb0yf0)6CnevcZw;~Ec=DZbI?m*H91pkrrGP@4zpyWaLz0md&e ziwpL*z>Mr4eC!W+Kc{Kuo?XIZjZI9@)6YLoPcyrF%Wbz(nb*+|yyt!NW_z<;NozKn zzxs1O_j4y6e)w~*$;j6N2;1y%W@f=uGRFsf30O0=x&b)%aB3R`8!hSF@}Q(Wh1B?VTGsv6TkfDsr~Y#TaS_@F|! zii~`l*acu`0qsDu>dJTH$wJV*T967h6dKhIZ`W3K8i2C_*cNF*&?3LvB>0{Ba;lv_}b;t31&8v)NH^RWsN`UQ7Y-m zHCGTG7`-O!mrSK7xsht;I>dVON1Iaef{CPyA8&08^PHRjL(g z)Rf5u>wi55xPIN=hr1g_|H261$RQvta zu%~uMb|Q{1M6Rhh@erye_aV73e{Gengk=TWy5aSJluf;owq>?fuN1bu8WwS563^8E zyVtK>PU^5(*m~pfUX6BjKY58SarB0$mN!1kiJtK=UrI#gQ(qHJ2M9feT*>eMtP)gEh6!o9q z{=8wHMJ&oO&X99C*BR%!-}7}*IohIj;>=09|A7bS@y8yc(Xmnb^247K&1kLJWZ=l* z_pu53G&7zfBV)90-vP=GkJJ3hDo-X1CU2W&rgM&#Io$ug_q~_SoH|bPs};KQz6a>b zU;Qe*<-rG~TGi0#5Y^yG$ooq$SRLYRV(L17=@KPgNYK6m+bNwZ(hDcPPTzdtMG31F zio@_eq0c@1Wl8*c_~D0Xd~}Ld>uoy1?5@uprZ74}3(KqI@WkfwAP-jKYmYxc+e8Q3 zr5eAEecr?8_tmd_m46R7oRpyyAH%8h=V;HaT@1o~dhChEsrSqaG(0^^H{N^;z1iMu zuhgJj{nD4d^m9W)Lv7k9Cc3H?nM9@a4Ole@jfPM{#7q$!&)Ww$Mb z1iH*(HY#!r@IIUZP;xp2eJM1pU_D{;r6+7}g@7*XN3IFNeNmT&O7K7BV`c!{oEw<<>h?T+m){=gH(s- zv*CP+$K7#SU0tQh>XHIBKAv2%V63d7zFu_jGXSXe9>%>*Ei1h)o9c2+HW>|O?@ht0 zxpxs6S%m=*2Dm!39#mYjY{oGax9lM}x)?~MuE~xN%qSSrD+QeBWUpUknKxU%y&9mp z{(vi@zQ0=(4HjEb)R&>yM=LUsn8>)CiB+KQP=cS|EH9kIm(@|`6J=&aCgdc{vqz=} z86WE?>L*sof*I}`kS9eOo-e%T1F?kb5>fRr!nH6_FY{c9Y>Ghcrng)#jJ9Qf^`oEq z?AfV3`*!{QCqGSh+t{amaXyiN<}aS3OAE{7@j#qTW$6rq+#HAU zTeT`J^PpU9tWi2&kl%ZxHHH_;%d~5HoZ37Y%rUS7qyLRrSHYUta&h=J)PI&$)yVS{)A&!lO`?%lL7zd$wKe z<4OAAANU~s-GB5?>973t*It3@&Gzlt7@Yjt!w*0He?0ZnQwtyc=to~0yV@TwqrS$^ zvWpnV04$^aVCu;LE5YnkT9cQI-m}wcF(|9i_|SIA(MRgM^G22h6Ys%1+Dy4ax4-~!Al z*o-GggfR)hz}3KsITl#ggMk&6^>THM1~p(-wo4g4mO^1fGWV@5`ve@0M&iGF!4)Gs_e~+06rwiKwJ#E{rEM8ty|7sQ*e5^# z^`Aa*eu=~WM;WA^qxrcxDh!WMy&X|uBu}dh1Q%ATl;xZA{7Xk=;6Npw0M$=$bNJt{ zKK2xKJJ8YvRBc`0ftTp$u@~sjzI`-zVU9tqL&uJt;EAk2UC09XqK=db!mN5cpucqZ zxLCM|X}4tA5=~5w)1GaUl$u`@X7u8vB|3NUqD&6k_D<94$|B#llw?C+ICp`DIrLb} z=V*Dk%vAjl&nF(O)jAUXzj*Ny?bW~L{^&ETnTev{eaL$qzO zNT2@wU#I6E`zpQX10SLrZ@Haz?ma+nw*R>sgMjlKj{X!gUZ42;fB)})iC^k6Sbfcg z;>w_|56`KklCd1>zvs%JCE55GG7~6MnPY&J6#$0HNcC!!7je)`Vs+2qrbt03LQt9z z6Ut`bpJ~B}uFzeICr-s}t*m#e4c`NVA{-yLx3VAupi->q__JVLpXa+tW%{9x|PHGAYUAg3NuqUM!ACvZrL^ z^LCKDCbh{O^)ZFVXwMJDodnEAqqa(Zr%Kh{8Ut^*5ODb33(YZwGDd-Itu|JMP20D z57Jhy-2Cm2OyNO1~z$CznXAOk|o?b#C^j;$d^Ys;)}zL zec_d^_eKdv{61_MV9gGVe(brU$A7xR?8E$8gKEr34iA-Rd2W$9sK?EtMYb?Z-L+Ld zsuY7$zBxRoSC}=Cl4QP46sUWiWTwCs$~#H*PJ>=N@)F&0;|(01Yt#9;OSFCGE;@hy zf+Qn!MIRPWu9%}2Pn@EOscBm4&5LFX*SOhg(=mR%x^#&u%=jMSQ2m+n7ny=j^LLpY z;z_F{Hdr%M<%uYf%F)I7GEL9!l$+aRhGhTlT@1Q=w6wTFd1f^(GH}L3_ry1!l@QZi zcibTWcYa}s&R&?O79VqiC%=V-1v+)~Me^IsBoB?ya>wIiIU(iQa>+E^v~Mp>kB;*B zeUt9J_fGl_2Ef~AX6c1zpQo>W{cBVj9%693lSW5JL|gmhHy)+w$w|8JuDhh_R-4(g zZZD*-f8!hUT_5;>B)J`b=`g);{0JRkrn=QsYmDjH89H(DIQ^ZU{(JQAe(68+wmLL3 zF-AA-KOn&6*vXT$!k=w)demw)#6ky;N0!6Dx88cYxFL8PqPX?YLDArx<9my&X{_2x z!_45EJxAjsW8$w15ChY7)Mvni4XH)CfXZeKnjRmgpozC;pwp9Ma_yga`Wd?OmP5R7Q5%p;OKY@Nsc~qvK=<8u4?X(W;_{ahN=npcaF@LLoy1KE7M- zeBjnEKmN@5S}hqBiv{jQs{lt)tJUHsVK>Ly&-m|r=R3m>fB3`KWwsQCP{PQD9dib& zW&6GpTj_^pjSrSF#gU3UgF+-5VMa#?8wpj=IRe~vkgZQCh@dnp)c{j$8HtDhQc2mj zYDKLxfMqYyY>jsdAOTqM+~UXTSCt9q_CITj0w8oP(txfnm7f4KZL^x#m$SNF|93F6 z$cne@FEq0DnBw2DrCaUs=pdg~K*_sI^1j;)YDc&)@g?J9*K2`9G?b6^48tqygD{Y1 ztkdEC=C`Prjd)SKOw>zim71_4P7FyetwjxZpD0<3ihEuvDZmtC6Yh`eDbu3YRjst3 zdj;EyVk$gpQgy9K#axLlE%Ug1T^%-SeNg_g$*UiiCoLyC0Ik;(q^@g@%3&N6 zoR?GbT)DQ_&`|OYKB|}2@4^YMg0;ikvz8*ToH@bbRoKqa2*#)!J*T;dJU2vm+ zdXcwYjw2r;F6IY*$nqpQ1OMYdbvZ&ngbbqG zEi`FU_mM4X4?p?L!>enR{{Xh3iR?AL(6wHNA`IrKglJXqlT2pi!Xey<47QGxf{eu1 zQG5uYWAmE~4l>NX@`Yqz*JW1q(I=i3ONVqeF9YqKJ$tB7EYQg45VgAu4p&y_o=|pgn__k~C##E- zr_ah{*{;`U`_zPn)cAOAI=GJ~AlUh2d6H>M`Npq2{6#u@{v3mzE}gzqreuDUR(QJ? z7~obIWUp4Lv|L%D)2ENqC|z#R!=mn;evc|EYcx4AN%Qjy zeC#9izyoiSgs+494v0qh+2^09OmUcY?mI{?zI2j)>mz?iXBW%#A`-!N?PGx5p>5MU zsKJa)m5-s?Z1MHjC4P)Yjvb*LJ7*Y>wCLQ0vvlUtdFr_$x}&t#(xu(A+o;I*D3^q1 z9Em79olVQ??+gReW(`$%I#ez%(}9CGP<6FV8J@(O%yze#9ZP02Ews$=tb}FQI0L~dUz>7yO^Qmi0})qJd4kbJ3cvpBi!ah51McUZe^zS2 zx0)4N<7-i?t?3*by8q#y|LcEy_`wGstbNya-CzI07jCZM_fLQN)AffRez^JNFaP%r z{~MT!R@ax_u`&P?S_jo*lbsaADd17zK9R0WJOQn^E{@4A?R47$H2kn!u=}T6s z0u^N7lVNbt0DA3U8)sV4Y-K8ZCa#CH1GZ&PAqxWAiNz~`Et-PTf!x3{qH%WBjg=!z zBnF@qbAz1_tQK>S02Y|fCj3fq4xPX>hhwsUR&Ykhe2z%%6(*xR{1CFH7SE6D*>T{q%|BONJot~UxC~&TOY1#g5Z$P^Xo4d@Q`0jvIW;Su(0e$VQ!I_q^3n>OIDU-kYis=b z0zYeO;;MkkfR0&s#6))+e%AM^b(8(e@Mqj%VDk@2M)JDXEbFvhgFJYbHYxqOzQu$9 zbj3|H&&o=H%}*q^r2e}4iM`G(zA(KW+d{h>lOAW+wyIrje^&}bU+s8b>AiSjkbao1 zsl~UU(Vz9qbzia+I~JRm8c$HQ&!nver{8ncR<93ut&g(e4U{L=%Ji;yo5pZhn&7S%s zVzQ7)ifK7y%7K}Hezb=Riew1Bz-KO8;>n~SKo>RSM@EKaAVGt>IdM! zRc|tD2m|y921dl&tkfC|9+{9V*Wtk!t~@(NHKk^aUf9M7V^ChYOZo#IF)-d>baNc`#(j^X291u)N|mP`FQzJ$3YGF1W^IRg zA+sc_S@c0{S2NKgDO*~p0O+RpywkLXvcvGf3mc-XM48j#$dGskUs_yv=BM8GeINea z&we$G7XXOY0(dCISGuoC(IpbGK~hk{Gu!> zTq)6*B(=RF$R=?7sD{ITrV1QAXgM@Kdw?dUck}aoi1!oGC;#w|Xz|i%+P!m{{ESCk z2HdHk35pUK?i;#qRn&!~ne)sN`=QoBcTARYXse~EiMjM)W8fcIs~$&7L`Igu6bmWW zRH7mYRpOJ@%hhVW;xNFIb|5jvJuO}Gacz$si z(UpAus`eEQvO%D5E!(D?U`rJtlhDD_q!N)e7Mza|FqE6 zJlbFYZX(>3Op7fICeAvC=aFd)BXWp^G07s^Roxuaf}s~6n>Um&d>NUwE&iJs57f&B z>(<5O$?RDVRb-M0(QqNW*6H>{#N6|{auHgsHc!5ud~0}j zpf#S1Jg-GNW~asaDw`dps92Ixh5$1~23F;@RRJ$O1}-bi$`0q#%<>jx(mi`=fdVJP z4Cw?dF3t0B2}y&`>~B?s)hV7Z%1cYkEKblGZztf9cY*&+dLf6MN15$(=#M`2Nt)uY ze|D%yt2{ye>VNxhd>m|D)Mf)< zGD+4XJj3^Ukr`zK?mH%AJjARrKq7!kVT>0j9A*Yv3oT7HtH7tjOqLXM`Wpot-ZJgKaaYd0PFaY=h zY^g3*JF;bZu|2%sZnw0OR5~Hx8CS5w{TPvpND2*vat>)e)>@U%tJ|b3_X||WLZN|9 zr!GYSP;QX~RP*AR$3Q<7hz}|yNfUv18>_2j9)q+X111%Cv${yKNUB^wy>oeNGkRBS ztHI+Zk|`1yPeXceJIRmG=;)NlRE|9V9KCe-FomrOFIKv=ecv8RI=pBo4XH1r+;Ia; zHo*a!OttQX_#d>+LBQDrjoGyS*mnlMZrtJ3Pl6T>3P4p1+CT2iPDqYXR$K-4kfN?;IOfKRI%d(P$gu!UtL5jPktGPg)l zv1O6~+nzadX6=!09{zjvT6IsO+5C0B9nX%BjndtB+%D`YF1CaP%>@w8LNobcWl(3( zh<~M)HZ*qp*&2uELIx~t09d|12`??l2e6-lt&C)Q@@H$va&9ZYfp?=YFkpFlfiSbg ztU@kd6y~DJjN9nwI0MPNyjSOmrrpC$Zj1I3-iTn}&~PkxEt5&{_g1CWHvE?(P| zrh?nOUXRD)g_mA2ot+-1-}&6<6~rlH)M!$#JJ#dcQs%g+fK&+=T5rYrosNP*uVq9k zd|S8ondhF9&CM;HNPs-ZcoW6!~YP+1%ct#G^-GV*Z+tPqaI>efXQ*d-Rxsi36Js5DkdZ z)_s6Z5LNDh0!b_jz^hy;P&>^+B0aV}{m}w|pbadYg9i7CKMD!5MTK26VfUTgGj>0(gj~4#rj-%+a{hFS4g-;iR2?fy z38t*il-}?mHOid;1`;Z~Xl%kA-F+tZNNO)!Cg?UQYf;}_B3&QQ{Ckv%^6GS<$eu1f62vsv8r}K9FO;9gvFShD z3tma5P4xuj7Vn4;DPl&uT6{Qkvs;#9bmD-yk+{Iy^MWp?NCeil1|mW+AdX(-zbD#e zGlV}7mJ9! z*BkAauDyE?nA(mV*fGRMj6K`_Q+XdQMhnBXK)-*TM?d_Wz4iawCH}f~UP4@x9}{#k zcR5KFL56W`++j{oA+Lg zO>Kzze!`#8vOp+QNF&cgTq+gI!UX(-z)Ydu$bwXL>+5hD9(C}?sw!!DhWS{^rBqot zv+p(Vj=)3-ak*^y`Dw{lbMz);Xy~ZV`|5gnoA9jWQ`*j)3wU)*$8VE;iHU`;wXQ5{ z@ROL4*cSva95;ZEq{|zMf1~$rb*BQ+z$kkWKzf${%~m7x26uE_N|^l+-h1RWO@dKq z(H{bVHx#|HP7EBm&z>IrzWc{-g5P0d(5ixwM^GVWc}kTDZ$;fso3KRmU7uIJozt1A z>NmW%%2e#({9&oTdJdklrE#UnxQ&VSf?P>?U;n_YaYRYLq33Q@oj-d;$-iE9{IUw6 z45bluS307J62LfSxjT##=oH;is{Ov6D86y>_}8^D+Z_4OqsG&4`V?JDSHHd&`Ml>R zkyD_>OL?U7tQ89QWIpGNAVY$2$p_B3i&QJjUjXxd%ao!W>~E;2r>*vrwK0_o(+Y99 zWxW_g;`LEWzvPJ>;gZ3TA1L^TBFpo|!%By^K0>PNCDE$O5~$xAvY8^poH@JzN%yHV z1)s5Dim5W<^2=H`^<@eS*T8ur|4r?A$=Oo{RhUu#a{7Xjl#!46hYag+_nj)7Ayg5W z2C6YWe?z>Ym5cylqNp>Y%y6v>TN3vyO)Zi*w?58TsrSJUzVmnmiJj$z%}}`eUjh8i zL@ZWe`GT4K3AK_``wp!tBvPKsaPfFdV;SxD^-uj1YW9iK-wp1(**E7rGjh$v_y`8Lak{zp`rV`hSr)6oVI-E} z$yRF5=3~M7XUL3=HM*HP&EXwFw(2iuHhnXx`RSLA}*Hoa8OEuC456-$-x?UFOu z665rl_hXpu);}RK#W{@ggT%v^;hS}!bjtZ!`e=fB6q?j7tmD98^5MGorf;IX19l6F zFifGm&XhHi=bJaOEZv`g2AnuVU$DCeE=GrE&6-rce;wvZAz`F%;`Vqntu6a43}w%@ z0rF_OBma^hS&qL?9?p36C7!wYew<;BGvll z?CUpD?9bBUl{in7!6njIjc7Vtori0p3Zi+w} zLWec5PWqj2C5-+}13d-L@vGmaxGsS^rhz7Z*P_E&2UC+ZE8JN$P20#nu2!-IDZtZs zb#ZS*X*?3YELY~cN~H;zl@LU7s%9Qaso~D`m+C_YVy!~v=JE4=$VpJ>#=RpGrQi1} zDf;nRAICxKKdVkmOT9V?b7K>4oR( z<&8)qmUfz%HhmmhtaL8ECSvem{b8nhB6#~Vyg_d@1#ore|FRv(oqGT~*BL=uAxImS zdYN(|#NlEV4l}O>_lojLMs~bguJ}-tgZ35Jlgz-_%Pm7n&Q?m8fGUf0akD0z;Sqos zRYUZj=g5_4g;^@VDhwb%H&81La%fSw<-XXYMXBUN=Kg{iD=e%NYre3SV(Otw+8I?+ zl=z6FC_tE1zYTrVk14!8Wosw{bB^G+_Y>kdXx|1e2xagAjNHBZ#0Z7808+=ZK&pxp zcj?Sh5a+)UTy?4XZwP6+Vdi~)4N86PSxW1*zK8Iqew-YoH3RkziiFt&fbV;VIb<&7 zclcY>r_uU8=VU+v(o+nO8vKUrLPN5I zTX-40Q*XN$qA*B3OR5cbdiG6V*zt&exK2U+7!F)3g?w?uF1WNb^r@J6_FFE2JDL4$ zeT*|cy49^*J-T<8;J~4kWF4uYGqg^SESl+xGfBW{UUzu$3vk$kGX>$aLx*lms`X5o z<($lyqlDeUbaEiyNjyxeq0!ck4I0Txe(`z_=nWuu(Ae?CK)+(l>@lnFez|>VsRin& zMXSWxZ{2FpA&+JS;bGAOC{4uZ-gOJN2ZtEq@$WV7>y0{)nrBj4h9snZ{7e{ru`n9lf^oM4rd=KXkmDO-eunwfy(tx=q&kyq6CPLQC25 zSvwA0% z%P6T_N0YxbM?uyC#-EhCJnZ_AvH+wdnb_BDt&}G~+r15&ngGKbn^|rr^1!{22=?_? zryvFF(Q%IVUtIFD`6x2Fxp-KE#1PM0+2)h|up(Br-9qn0J%&d?iQ8*j;5PyhPq{U{ z#=*2iQWMAKVZ5ExUM8d`(d{-zq{A4%iF-35u>jE_+y%Im#e5&x z8Bow-98L2#KHFhPbf_vm3)_ADx{GLL2dZ~L7&!u88&2`#J^PSDD0haYS(rM`H0`oO zsQAxDg0HCKB2x&pq*BDxDMNk$;HC@pn0~+K%i!)fh949Sz z3dYebovGXo2v6|iVKcG(#_U+3_ZL>m-QteJb)`bz7JCkQ1LUJ@jFH^nf-Co1)qvvq z2?4+Rg3&t(<;(?eWzFXO?=y0Ej{5BM zGtS_fzwGa)(-Ze|(F_@;2&oz=#Uq;#A;tbFa*XzUBxDO3TEo@tqAc+p3q{tdZu-Yp z#ZR^vDzkras+0V>#T`~K%6CQ-OY{G!9RNSo)pY7`0zm=c?*sw7;#bVDQiNGe7Ok|D zg{2t`5)BI-Li2`LHVeX!m^~`0$9G#qlDE^9tttnyx8Vil7!~7O)g)Xlli_$ zcny6yJgXgCy%nUj-^qNW$!=&bM3vDM)Pzmzjdz#_r768qA|3AH9m1T6%;(oDIGQ^#jy`>Qt0M)Im){f zx02#qGOj{Mz!(Ool;*}e_t=omjt)lbBf1c-w~s-8c)o{j_0Y-PXUiJ2V7zBa5Y`*qxKJ#nhqd-NG+J%iXwjXkU;pu@xKr|3}e}b zHY6DbtY0x-M3|mAR0pHsPe&A{W@yPZSFLwS;TfEp&HmDDq?wS%Vn#97f)NXV$2B9N zBDGHGD3PqWRzD?4e$OB?wGi=u$sDmm?zu$2GvS9Qx=*oowDeWXqkbY&DP|;g&_!jR z%PK)jjU`q3YFSGLZs^lXSNU9cl$46buk>w zey4-BW<5GS9yPy`e$O>a@~L_?(h$eeNx+g=k+XgzE-%maDwG1RX~t;Vg4JVd`4FJ8 z+ZM?`%N!#0=`BRFiCTGA*U$dz2lLxxO$Bq*@j5LJf0COg{^2VVSh^i{XvJi>8FjSA zkLFyL$p*ulz41-CKq4vaXq~}UP)4dcH)RA#aI-33&JS;B&Y}A_FE@J44tj^Og~SgQ z3_Df`zYgo7t*`NPLd&@378{J!PH(Nz1eqI}wZxcA4tF9@t=6fegr%}@an{(hDDy-W zvEhE5Z8DKVeG;^iKVW(orWuJ-Yzd~))5RLsTC|;$E~WlQ2eE7X5B8z^}I$MrJsWn&J_iguc#Rds{i{`ilW>nr5(o4 z6_fORh&o%IcKs$+0aPezjpBv+B(WZq)`l#~6%Ay+Q_Se8m`Cf~K{0D-efT~K zC0hlP2U(DDj-^AXOxO9xBcG@-FB#og>Fx^fZSh!TNKtZjN2E=f!Wr;4K4GtdV96hx z$2GSR4iKV4A-8i&cd@}4%999z{{j%oL@tQxAJ`CYb%m(}mWto2nH z)H`nm`d~kkHzQbd!CM>l)frj;yfxw$~?Iq z8xX6&l4#Ex0KZ!S;MX@Deaa|?oq{j-0}-fU?cJ;U$3~!+8@~(G;B96Axu{m6P2Z(5 z4m@1{klB6zBV%`9bO-$3nRR;)lsIwDR7L)Gbd1wfa6~0sEtBK}5ftBCA;#KVrD!r= zH_6D1zTbPzURs&s-}}KB{wBdz7tDvMG1ZY9&}>eEGs^%F2>Z1z{v#Y>2$;RdroMff zV}Ho%%0zbdzmjH9Bl%}}Y z9&D$?IscK2v*|C!ckmJ~2=!>C9rV~nqYc{MkXgJA)vSu9DCjAY;ZDI=c@Py ztM;gke4(>d@BT)QR%FAPD^OmrV?=xu0>&oz0`AD2(UEMGpz2Jkh1VAeDh2yB>+T6f zIR`e_TT&n1IA&h!9nV`Qq67{Ez5hy`vnN`_upDj1u@ezWr>ezTsM+c>rUE z)v#C0(NL0cb&si`Dz(#3Kxl;M*_{@9h;J1t*m566Kg^%+S+*w^mw1PqueHyT z^43F`GLD+Z$>v(|z;&~itMGRXJ6cPXHvA;`H1Hwi!2s3aY*(9AYu4>+u)}pPvN7zm zcfd|&ggfTGZv7+MojJJ0&!A^MbB_mUt^-%9C&jtzo8flT*^WDvpH~A!Y9v;QeOI4G z6qe1EUvEaQe#%f?$DG}==9W@S0N-R_*JDwVRA0Zf7`tg!E8)(aMK$@7z|XPh2`;IP z*8=0?WqB*zIgO4e2I`g54ax5!{wM*2RXR-^YfT zv+rgSQU|Xh>%?L(N0euLLX2WnOUAhxrq}9@cNh={)4?zG-Z?7IL)y5ozR@cY!BYSe z@w8SM4Cbk0ZBblH-f`%Y7Pexc*NInLwAol}Y*1VQLc0bUg;mppJw<@=qhB%jVDtE_0n^jU=t7kV9`CCfDz#%YA+qZ@uFDec|)F)7x>kCL7$UVB#)Bme3>)~UUpJ+);Lf;}pPYefYYbgjTO!l0uy zD`(Nqg||o5@Y#qTPEN2hp;N3EvU53&o;%!RjE~lx>S=-NW;kWOn{bqC+2I|?@Uj(DhI0d z7r$ny0_XrNBmkZfm30N`HFKA`!plMS;L|H0WuASq6rWha9EkwpmFYv_}ZXJUWe zjYWhy?SksI1lRmT=Iolyd5U*=1%# zTI(a|R|XZqNz)xgBbh?>96;f_F6^IQZ{gOd_-!%c6b_WmKPJ{zc!zSHl;dT4$lgEa zzQ*McB<%5eeSXM`80JdDJjs=NFNSj$J2kgFguA3&NU?=*ujxdc^f+4s85&^tgA{d&KrrdwGeH(+#AlmPyDoEv(rWMEILFhLE{H)bkvvQ7Le> z2hKXd(%zK<*rOiSuYK*EZTX%+NSZ(PZZAI|spXo*}*=fI&x77K*_u{vF&gZrNad-+Z)bpYr; zQH4lFg>*Ren`0_hjfh6cNtQ!nKj3EBoU))7qZ7w*sI?{ErTiN8F;2Loa`Z? z(b>pdg!S>v;7=Gh?-8{`Q&|C2&bf#6T3QGM>epdl} zDh#jWM9~4>nexMd>1+G;-``|*RwxH!B_plUE(IMK(P86`sjH&2Oa41~d(t!>Z|)_o z$ioN;VKm%&s=V_as6u#_)g{sPBRLj+HyWkG+nRUEBWLcVw|V1LIpT!dQah`}-~)*> z#EB}cs>ua!?Kf3ilXuM>{7E$KW-Y*-Q5)S8gaR}2VXy6dnAN4=STu#;QJZ1WS+F9c zx&U8^(^@te`A3S-^ee+}Zi)nwo@1i*&i@rp_6e>xJ{5w$-SPpW48Rp(zeDGD;vR8j zjLp)DIYw0Uk%y zn1%aN%mU)F0DfBY(LJ4sg11fgeO~M2aP&)Pr_3uI{wsNpWzLUWwc8BkHj8@RezvUZ zJsvk_^nvkqviyAAXXhR{{nn04CB8Jp1ydTB+B;NF^$M=>*cR#N6+nPK2^)5kn)YlS zO9Eb|5Ina>f41R^)y*8zNL`9)1$^rdmCbLsCw(Uh001Web2OM&l&|(1E%k7H0@F<$=2})OHn4nvF*AwXcxq{ zG<91%-AeNIo@Q?)`jC+&%EkkWHD#`XfYo`*CLuFQFtZu`PYmgFX(kmOR_Yf`roHd~ zudZ%nb6fBcAth&4Sghf+#~`zrp3+@P7S({fl#htmIP8+OUlU7p$|F+jh5kAkcRUtw zq=cw(7SdWRl?H{RvF&yIJHG>ZV$P0L{>G(#vOtJrLAi4yVx}=Wyx~}-5j#5CFvpAM zImS&{`cSln&5%XJJt#e>qzm+qtF~%{k#2-4Dp9&|BXQVG)}7nwt;B@fpC-ihA@%Z&JW ze}BCvWVkBBvWJbu38D}TnSA|Im^+jcdPOj)r2E6*i>I*;Utw_^S1Wp4=T>fBTr!1$ zOa<4Oy?EghMd>}I{?_smv=#B{_u{F*z2t^Wo+t0?n}mteL!t1!ucAt zp44`BqKE{zKkTm)??FadgC_!J*ao`UGs1sjDqQbL6k4{HkDOEALkFF~ROJ8-l0Sm7 zdXY?3FDEDHu+LY!S$G9&O$Kf>oO=*q$Vl1yMzw0WZ*kfH1<5`G)VYk!(qjuU(owAM zy9<)96<|ox2vAzoGX{?u#6-<*)E>-vg?q9x zODl_!ua@fb@LaL;Iq-J4@MY451Tea%~@>8 zHUp2Yv<&dwvt@c}d-vz^Gzj3-cFUw z;Vwv^NXC`qZl2!(GdJ!h+f^+wXKZ8|PnL?2svnd$jV2*0P{6y5vNJ~JybvQdX+c?S zFI34iLi@9gv+Gzys>VerHIQck}*qqZvTA?C{f!n z2d1qy{4!?7z53>Qpei8#^Yya_LYD6ysUXI%MTfOHr z4@{J+N+J4hm;oOkbnoQVn8kKq>UU3j>xD%dpn`Z!K6C`|)j_sB*Exo)lcb(v$W9yx z$6l*K!p1$%D%Fv^Vdz~3>8vjku899I zN;~osGLj8!_kjm>Zg*Ya^^WkP_)y}dYDtJ2$L^0;8QYn~Uy9b0gWD7@@k(^g^>6oNBKk+>CsXX)T zZ;0`wU+wahG7`DZin%eEmDlnw<613ycO9z@-h1tY>H|L62LyB7&A);^ zCYB@}x;I`-G+rOpqGksEilf8Txt>|o!1(dPq4e#aH+9^D@_wgNdZ;zZhvrr*Rv^^# z)>Gnaby2i2^2+eJoX+U~hWTA$le-DCi=;$jBAO6bJ)x+p1ML`ItwL=6Aqm`L1sd|0_JbmF` zfrm@t0`#?Oco&rqg5s|bq<%4;KoWhi@jHW~ZX_=RFC_bfqG{LfFWrUvjgl3c{ ze6n`X3`93BjIl2Ts31EhnLC2IIO+N=!PD`Tes1VzMQsd9XBE1H@b_(M73A`XdbN%^ zv*y9NGdqG9qYMM^|LWDyhfoY4aRoD^P6Km z%K^ngo2MxbQlQ8;CL+Nf!?x*zhj!rj6ZO3p%qrq(P=UXI5#&RebNj9IN$sWNn zfW~8*LO?IC_VoUz_H}0P2~x98&N!l|&Tam6UL{x$U3PPvlaVvIWIYl}Lh+@m#t$WC zARtV~WIsrRgxvB@_fuJ`lyt-=YZ7nlcoG5u$}T6h(5dieJ3$3qT<{r&V5wY9m|$K& zW7yJG9{Y)yCGbDk5US|tq>xq&ViFEBa@6_v6YvZOz6Sw(C8+NwY~&rDO|k-5q& zrNauT@JHCe9a8#(mCZ;~fo#WY)i6U826*_69_)a;#E#@(9V?ue7@`M}BG6Ik)rZPf zsJ;86+!!HjDvS7x6zqr`V$CsZJ8 zW;l29Rlc-fehlTee#RKK({u3TO5sD(-Hon&@9K%X!Mc36IA?p?L>oie+P0N)$=ULR zSZAsr(ZhBPg)0T4ypXYfin8X6mFw@Bhs$l7jjE;{B{MyDmSv|`-g)j3@LnqhEbD`* z+dQXLozr>gCF=o?s3eULq%+9p+RQNUueiqrsb+2FRB!w*@;F2iuYgb@tT2l3%|TvG zaKxoA|Dv4?W}-qc6seEEnGOoXGB^5!An!PlV!+pXG-&l9WOUIoi(IZAJfxALU@{j! zr{6J}p)D}1O};!uPsH~&{k@^y|2F_!3D_TuNgHhz3A}G8OE+4TCuZ}+CDY3(CsfEh zv{r+ACp(er9a9;739Ku#3*w#N6Nvvo)K*nE{i#-GZr+)ugJHgk5Jol2io|Kl&8=-Y z7Q$KqiZx*tUP_3K1#ucY7+V{UPy~~8hK7V5e8&bjWM{?Zbd!nN61S65H??mVz%a72 ztwx@bqkYTsz*Lps!zfvLK17g^$SKRQNS%d(^~li@>@kC%bw_SpOwB4{n|XO^Em*(? zi{sA8)siQZKT~)^l+Y3X1qvP72mExNsA&hbgd%J84SKx1)h@P##pl)ltW$qNn&>pX z+H#oO3bGv=>KV=6#_OV?%Anbctnnu0YC;UEHA|mZGtcF%e4Vp=v=%6{&&&ay2P?P# zmXs+LoiA2w^n;iu%0ldgPq=J{|E>d#f}R7WD4#0)#9bdZ&*%j~wdYKB0tjN~$Db_f zJA*^td|Yn)(_?YwL=?W1%QF*!G6k6mTyMG%&dLZMhr zGseq?uYY8!%{<)k=|y4 z?f3Vgf$21Fc`nq8Sy6BLEOlQ~f8jO6h1+eU-S;P9O%1Tt^U_%>fOo$4k0DzjWYkK)fME0x z1NhyC*952KvQ~eAwaK?>hn?~%@i{97USNbQ3WBN-^Y0qaIz8eM+!5226MS>xv74{v zA1k5EN|f`0h*jz|rzNOK2Y@Pt%;nXi4Sv<{CbIL5>6x8Ak!D@kpVt(p+?uy~`6n8i z)%p3g4J0~iw;37&ChhVFMG_v|YL!Ws%o#rk?ZX$%J6JXzo^0)!BbGn-^YxmJ9$=y%T8h_9BQG$xNpBbDlcm zzrV@*+t(?2^)J#r+9`bVlCt;u*=Z$;>JzFC&vn}H3XiLqpKVXo3QARGojuV7C1CY? zVeqg2r6@F^tc}4)h*E;p!uh&2Bxtc^gn!JqeMp1Jd5gjCu(nAKm`Ay31Jel6t?`L`2(1q#B4r#^uueuug*jLucuVnh{Lsce z_rV+QsgnA-DSQN4&V=K-uv;^4oKR=hfQ&^GpLh*K=?ZyFv-}1YS?tn+kqmX@%LBSr zK4%)T4mD2X@<%4{Vh~R*^z7pS+gd||WC#^1w6+$}rB*@%w4Pvr{18^on%k#?K}fj( zoZJ!179=OJ&{ZHa8M3jijriCCV{r=x7G@j+3eMUqKh{7lO!v@(9gXjiIdoK!tOz?u zpCaf}Q7zw0y8l}Xesem_lhB@>hgy%*i##8x$ldAlSo`z#_@JjKhNuG~yLLBa5Y{}f1EZ)sP}YIUW!$~XI2No7DiaiEPr_#T z72-B#SKG}zF?D~k7qRuJ0~6K}AtieJ=8+)&dI!@Wy!3f$*ejAdZFaNn7Db$-z4(16 zHxQhP_RX|Ko6yq~!$2m*w9wojldXd`Ly}7ca3!)tpq#!~B4=XmpiPTkzQ9MwXJUd6 z%{i7Bt?>PvkR!ZZ`EQ>Wl0ZTQY0K2;FGKDG42>}&OEB@sji=O?oICw;|96bPQC76- zqv#Mk{UWE{M+-QXRs6OO7nsCBWTG#S(& zZm7S$((0|5&c{(nRPU%>0#gx0R0~O}1u|s2^>#TBY7m-zJ$!2t=0=JUyin+cc&M(C zUYeaP;kQKcw83_gtxh10S_L3|TIjtb*VZJif9g@>W>p8@utGJ>y zuz7uaHXrgELUAOIMRR_OU~0iMi^1+^Hihs}+*`B`Dwxt>dD(H5vl!{2^9?yoE`yE| z(WE)LLwAQo4Ro8x;uuDcVLYqBZi7CwqG%JL@sySjvS(f9J>^3AeS z1JIKaBZLKZH;4R>m>(thE{BBr?d zy^?70-}#c9MBi?ffWHQA)eP9(k>-G3=WmJZ#>IqK4F6 z3JnTVq<{~^MtSm$O)B;gU+MnPqv>HCXsYA+uwi2o*=^%#sN3PBM%dAh>k?*pE$}Ow z%OCYj@0#5nr%7mum^*&#swTST;+>H;_L)EJ4BdsO;2U?%=ZEDkQCPeK74)&687Z%D z`6lSe4g8*?F{I_eZe4)5j%$f3^-E?idCbvuFS=v+`;J=tvvO-QxzXK;7_&O3*QmcR zZ>|p}S0?!V&RLQ_E@$CY>c#qOPF)#F7DB)gKY~QHXq?sLxb>2ckr1JNr0kH_gtfn> z^+oxaqr;Ei40?PemzLt0_c|K>8wG??1@2@m(>?G9qLCLEc(GW9#AG6^&`pm*f9Kf* z1=K9KUva>>!KYOtfj3~l5I}|?wZwqygQ`MzXSLYs=4PT6n8wS-BFtBF#h6wz_EOSJ ziV46z;Gq^tsRZO9O`3{*5Y|CBt^b&P(nzM&NA~%V>j0~!jNc)7(uL+S1Okw^t&~f~ z03Brw;)m;6LdjQ*I%Uo7e8JSp6U(iW514o zYNd2FR9lo;?~4Wziq~GJbwKT`Cjho?{~sPTDh12`?~QE zA0j*4xxdNcASr*UWXqW3tJYz_B|0{>IwNnH&F#5u#uRTGfAId6a6;58G4xH0j=ml3 z09pM?S`y$s`@>hMB>V&=O@lY@N|0&Q%Hw-aFr!s?x|7#oz$cov5COYx@s1b-=di$nw zlQ1DIMF@#;V|_D;*w{ZZ^k6s<+voRBCo4&~4iKOB->=_LS9k?wOzzaah@y(KQ||F6 zW%5sbJx5kBW=5Wjz6Q=xq>Up-YOYdq#g>}ouD|84m#>fW8MyMT=+PB0Xi=C+L8noz zrXm#$eTXJ67RV*NNHWsnDz*@D=_fU_9k+%hspbpEW^G|Z<$w#LOk8e4W4tH}HgffW z?WaQd)KD>!a1A=E9S22}6<*rW981AmA{Xz&;SHP^bkv=iSv47~0<$?4_OZHU9x$#f@ znOgqZbG!nE0Txyc^-)DOLvoGtvyKMj=;kI*j_eyu?3J7`AwSZxqt8f|*t37~dG+c2 zo91*&cj19Oa^O3qyxd49qDF>yD^fwXtb?vet3|y>E^#4zLD+8R?5TIb3;r@}m+iKD zw8K+GOjlaPgeP9n%Z&|=$);~{g)ia_8v%eh_az*U7Q-=d0V3)^KfF;m=Rv$QLQS-( zG`9G>2REe>LgTIJ0K%hDcxi69o!sF%p|H;gaV-tXT(x#dneOSQ%}*#Oi7E2g;xG8KqE*r#Aip!HOm^wRbw>rwrU2ei zXC1@=fYu))HZf=O3D7VY>C>L|Q(k!9$}&wUpS#A9dT$USyrRb0xH+3JiM%92p*O46 zPVtuH)3PuruK8Dt0OT@2J-(RuW}JmbeR<*T>K09+40X^Ks=yn$iiKNmW>8qFCfTt# zCtsRex2izEhZgD!%t$r{v)0;(+$w7;LL~ob(a@sHWwheIu^bENut9&KTds4Dl8{n7 zU;2~g_3>vM!zz8mB={4Vdgj9b-F%$ZN*ep7z>naTWC!gb2&LpdAF}8%xdvw%$md*B z30S@GZ7LGsQEYwL(_(&Wo_Johwd;!*MBC|+<@cGt#KXzsuOHl3Ol9-6)vPav!UWnI z?(M!TrQI5p?eKsu#*}`59kXsi>m=ZqzUVL3aOFQc2Dy4;5y}qt=(5;D| zE;o*7LV2kOQOxKgF*8jMYAI)!q9>gv0l!fsnz4ks{;A3I@IcOy!> z6*v>TC4l#Ug0Y@c{rQcx9dv0z_9Juq$;yY0I6<0lVY^GV1oH!SAT%IcvxYjf|xc0JV8d zcTGaIbd&^D`$u-7e_YhkUMvB5%fBJyl6RM+Vd^`VKqJNng6H#Zk#-0ppPj`AYhvM{ z3JBBA!Yu!hiV{n_tUFU&lTg7KvssunyO~GiuV(fAoc8R3&b+djK=Ol~l$&Qefn?-@ zPuZyRI#wB(fuzatomi7vN?SW(pEikF_MDtISeUzVHGBfq{Mq2bxKy?CMwYAM@;%Rw z7hk!$lYh1uoqNsALx#XuD@k`Vk8`;@`wsQ3M9BZ&w@3#K` z3~1f)MOIK>`D0T9b#VehE32PbI=~YOM&F)9(*sgqDE#d2VQ@#vupzN=AVgB&tDjR> zSA%;i9iTB|ML_qoH0F5UVl**I=}M@1gi_j9E3^^_0vt;38Zq?#RMA-|KNZ>^N{r(e z*4Otl`@datoZ?N}bPNYnYq8+}=_iCxRXIx@d$k*h(s;n?D{Ql321@Vc-CYp`ad$Y2 zYa(F<^Jzw9A4L2*$5Ybw`@^CemQU-@uzG^4$g3IxPocc&ytl@c=%*>tdoc<;SsV%Z z6z|x%Vccg^7Mmzy!+U$lRBU3Y<4U@*sQ&`MOmtpGc>1{6rW@ifP%*DzOw`L02$q+b z@4e}&mufaF3e+|C_{GbzNhqko{t!hDmjD6z*Umm!65n zMpPMx!Kb3&`)^MPj{mM{>dmL))nb>rvVKh`@wNg$v_xU>$ET2Leb;q{b`LThEOedy zVJCEHq|)cij$JK(bPjD=^xs(qF4(#b)bbr$-0_m?&@uVr4GEQER$Qm(?&?+VMkk=6f7$HSVYVCw0Ra%>|vacWj`X;wwN}xXRm5m0RL3-{OSzMn( zpo7AjinAvrFQAr})%lCYdoxZP7D5{OY(04pR&{yhZC+6d3Pdc%L*M>$bCWjseG7eQ zI8TT?V10TzPV{Ng&Gq8hN67OzrJ>TW-QPle{zZ8-T;lnSkjGt2N;W*=q=%;wdRCQs zT#DBbrRP1EMnLn)4x_V9uiKb$o!{v>+WTP_#S z58cdMYm`Td#1iY)HS-V`9D2*&n^UsX;AG791)oz!mM)yPXQ0D(gwAq+1l*w$9iIGh z0e)W0&8c(&bvt)F!QB)FOY4_+StxfYVlfJ`&|1`^+-_pZA&({u4IF zxe`u6VWT2ge?}X>+oxBWt;WSEvt@1eA(8gdx_3m)n^QC2DLCx&9{LC&?o09f6I2Lt zjdfY88^Hgg=`7r$in_Kx0}L^AO1E@(r<8<94BZSJ(%p)HbfPYSGDQ0y@hLJW5QQmK#Z*0;F2VvUXcU=YzeAwx%evQhF!%O#F0m@X zcJp71XL`>>z&kbTwuP5ZtzC6QNrnLcv{O!6?KvOnA3A&hsK{P75Dn0`_3|`EmvbT@ zmRXpoufKlV7;Pf_na5<1x=6fYr$(`ZsnDJ)i6#9&sn@JgCz5<_~c3DD`ot`-%OB_gxg$*4uq-PNlN2g9nLAm%A>> zQ$!f7S)O`^3{wcuup#vs{zQsiHeQlC!1!K|X=eYr+@$y+1nV#Z_T!^zQpkufp7#RK zNy7BkL{3y9$}$sA5l+_qef+F`n9~ROPM~83f{~T7Gpfncc^X0R5ex4!onqX_1S(Ql zveMK7bZSYQ3m$$?;U)swn5!fI`73J32r^^Xh(pyljv(HYP-(_Wdf)V2TN~}S&+)U` z1lAmXPCA@$7ufoodjz<4X3qq8X4;TzvQl|ja`QEks7I9Fh5gV8sGOgE6J9LfVtxSd z8gUW7xw+n={3|b~)7n#*<-a=)IEVqvV(hzf@#z1+wf||ZM zB(aRnB(7Kx&&hP*tN9Z6-1+E|@ggb-{1fzMSTsT|XDytqJum=uu(n6h$@!$t382PC zeBh_{_wQRW%0^#j$QWP=cDTUfd<*HiFzH7ty{k7jH-cWHTgv<+{T^|Euy@sJtRpJU zK)ePn*_;C^4{!)oRb70?75OHHG#H~l!*~9F(si9XvidJYFd?Es`xJlAdX$9?<~K z*c)C^(9{YfXeAkDpwr(fbJ$q~2m$Z~AY^JfaHf9kNqBj65A)nAW2>dqjQ=XJoFVqy zT)J(M`$!q7u81Qfdu$%20xc(=%%(zgp&1tHi5oaeo~VJ?iy2?G$jvbai(`z15VBk1 zw+nBOLn;V)NNxB`b22_TjO)o~V38=7u4$^bF?K=}fCq{kCLQ#(UAM49N8^-YdDYN* zLKRg2fybQ(G!KYAK{_}3wVsg==}l7d-}Kjd>Boup=t-zT%<&-tNl(B1}Zll@K}>GLc$N$KVh>0Y_ZJvR;M$z z+R(M292uHVT?zU1l|nCJ*G3it%C6{X!O^^}g2vsxoM%>wL*0}KC^2`auD{>Ea$+J3 z7fD~-|Ao7Xqux-w+A%;JpJ==Gl>_~Lg~-_ass1T3qY(Bxsq56fV(r?~Lrw7Dh6ZEg zcVFE0J|E)7PFBX4;fR<`;ovbZTdcbgpk8jCDv5Mnq!S<00Y@5-06Z9c^;;0xMYQ(? zMiat8wRrcx0=g+-8DKf4#FjOEtdGN1fJw6;{^b{L@oGgp3ms#h@JgF_3G09d-P3C<9rC znNQLFr+HUkhZRkRWF2e|4q|82&;pn$mSPXc{u5u|q82#)!sV&U7qe>puYIY3w!+N0 z%E69-wUTk`*M!2td83w-Vs$;kRWTGa4Qmg zZl0*o;ZMQ5_C(e+?MwhjN{v9J;nrGc>rb^|^@Uq;BGxGr2kRTu=BVCuHV5(p?tMr2 zjy)%ima}me%b4U%!DYLw01i_vK`~YTG)>yN2w>dtKX0z*th?`djqfv_#@bz#PS(;xiOUdJXVdv!T6Dw~-Z1gILY(Ac%X^&u_T`UT5#`qGx?|JvyVhG#hQ^=GC`Ga5dN zGed}4CwQ-ZSD9ywC5&?S-I!Nu_Ik{6 zKJ&vOT&x(L%_*7y(d9{@Hj+F&QFFZ-vstS8;`L-{ST;~wA@u4ltZX`1)}I|@>u2KM z8z*lF=t%PC0S_VX1De(35_I;0{ZwX!-X35)*|Lx+jP04OrM-95);zPHJn-1Q&1g96 zLMRcC?gQ4>7^moK;(-2l_Vgs0prkjaevJ=y<&A6{xK~v;zUo{$h zCc5pR;x(BCSV;+5rvZ@r>tZ49CuiVdeSN4sXufzuJMvzKUOnE3^aO69KzK=6sU$ac zckZgHKa8ul8Tow)cMHu!+(}6XyeYmS0obDz%_?>eR}ZdW1mP12U{e=HDUIk(Jy}&E zKCrLq&R@?3Gf3ASzpEG!{~N>HcwJ>CQfxgRN`3l8zeE%Ig)789m30)al=1sYk(q}) z^ZWP#f0W`F#|&4p^av9=)0k2U_&S2iYu$tjVz^vP*5M^Xbz^DEpGzx&TDHSjdIKij zWxaV4ShiobYsa!!a&BA>d;XqlxO*e)EX~h}ILK*je7^qls*9df-AHFUkjx+$+uaQ> zSGGyO=md`7d=ABBeBb=xI&aVBbpSHq~ z8-OeutUbn82LL#l$dauC`vDTWqGd=mRQ%s^{fB!84KcaA&6j}RxC{gX3{7*Iexg-> z$g=>ghs7~oRuBJ%o=Ftsf2^H0K=>SOc1VS>p8@6pJ}iF}z*|R`)19AFtNc^&7Es+* zvR-RwpX6h(CPZg{P+GobH>>Q9sOXWyPZ5tOPU#SsH*9|87k<=Kz*-jzaKB$ta_YNGCZ7}&5W>Dd6mIf4b1YwJaw#~ot~THMagRcE)f>jw7W_vX zow>qB|03!SjvX@;N@?d^gMh-_g|#U&xYUH5}i6}lUAEwgKJtW zi_no$aFU~wk^zD)L?$7thNx0zx%?#O>T$nyiC4>#^HphiU&2K>((P?R5IsX@#QW<3 ztRn@nJ*uB&?i-Mg=b_R(P@SX^c;8_rH>MpzD17#3tCv^@4*LaHtSlEezKd+=sd5^e1Z#aW-VIA zc$iA}vNm3S=U(++GJYUW>lI2u-{pkYTMTUd zEUtvrH`k~@HQNyRFxBfMN#PUs6&#u^(&joI_7sNe4gd+7uyTPOaxe}-HuhEjN0d4g zsp2l3G35$dKTw(C59QLzXolzml*zRY+QQ>l1l>+xJoD^D2qgeearXHOgoXhDdSS>0 z>Q|Q~n+SnQbMg;S}J~_4c58c6-U(Z@BmFWQSM%!WA%9FxrlCXzg_q zHm?_=&31H6IpD`rZnhy3KIbLM=au~FJ`1*HJZhqIO(p2e`85sxHXc>>J!)ziq$F6P zn`3ahTzQU45?uL7vR53K^sX`HcW3{Bb-5h+8;t(|?mZ|hi@m01!AR7yznPF@ul^yg z-ADunp8hFC->)S_=3pn__K49E4Mu1EJ>^iLdKH!!c~ZC^YzUc6%>4s9U@@^qq?{Ga z=!*MUDMOP)%9mAxD#nsLa)J+1)$4-1bq6rg`=L^!{|G)obY_E9LQrUdOz`nM>ZAdx zAhNd@f5C%bIET5O@^FC9R>FXLe>ZCYRE5gt(#5Ioevy>*`9_3d-{X4u4^3hhtVGp_ z5!pz$9p_f|;)|LY@u&R_BzcXHLaePnHncG~c?K_-;jYnkfl%RxSANSV#d18cXl=rA z`Y4krcxG&R_^s#s&zp@au)=4R?zN?bkATjC+BezuVIfsoK$`+;{21`z<3wbZDgL@! zfhkFkZ^6>c#Pkhp^;gf}-x7$iUIMVwTiF-0XmY?-MjGTq62nhaA&sshB_r90z%tA7 zw2CyJZbOs@Q;vWjS91Jig`J=HN!KJb?o{fpv%}r(DXF0KPL8% z^g*t*z(wuY68|4%!X04#i{L;GV(Km#4mlrW2fg_4Bn(Q`)w(aTfP!9b-rQ3&N9JTy zbL3K!5poi`omZgb>N=}uhNH&o&fQq7_LB>7EI|vd{T?AN#z>z<6$@)bYQVUAD1XIt#iTY-Eu@w^ z20Koo*61pX0i}K1J-n>BR5O_819{$=Bv(#s!k?u&>PM+q65cK3@p^MWBQjv93+S^W zxkpBVG{r}TK+T0=MPVuQX$Sdad@jVz-GkX2!#%yX-3nFdFLC&^nC!PhI9^hIwKg5) z8>~rC&TosSds0$RRZY$C;y==F1OP3CJ_!=lI>0<~GLynOIcEjR};4!s?=15ky z{D6&yTD{rxC?dD&?B&A(peZh<>*n((Ww61ilcMn4lO%i_qJ5FjwDj59m5WCoe1 z5{Vr~%>=a*7$i?3m7lr{{BGM5yj86Sz(bpH&j=iczrm;0SR?rj#Kl-7-g8Jj!DyYD zE{^&0qV4}tCR0@!?U_w@rD`t3h3c1kBEAqX0;t913dqJMvLLZgcQ-QTLVa`F!Y|p= zgsINejo%ey3$`~*(BSVxnS2CwAxfnk(o~{;eqv7J zQk$g2SiZ1S=1ozqPP_8OWT5VKBF{z}rT1aUs~-?g4o;69E33g-s#eLI97YzO2u^Dj zAMwQaLld$lQTG0yPpP9SVblA&pR38(bDXP@9({J~h4cR%CAmXxFmjFANICG^;f5B8 z=a6qv4aB9;qNxcxijBODypAvY_1uf5hg7MCW7Fo;4S zJ7wF>tuq%V!v=7|AztktbuXW#E+!W;@=0x5`x=quHQLNsSD!*rP3@N$aYKd!Oy9a! zNn?~*UY$Ro#L)?|*E4-y`CV0!^!Ixrvm=FQmf`nS2W9GS{lNc-7pl1$qgQjdK)r>& z0-o?;*UP<+J|}*wtYiZpm^Dk81Jj;|2rPrAKdaz*N}w6LL6nga*Zbc?Gw0?iwXy7U zt%MlI$FNh0^WK|9=CQhUWn^y*SPgz)ma>|8(2Os@)@n=}#~dDm<2P`em)9%=+rFGn zBC)Zat;Cb#TSIPfQ4EXff$~)uX#vN0iO1JaP+490zXJd! z=PcS%hm7yIdOxC+zq5_LzJoHxioIc7b6tm79@qPR{-G9E$uMsV=k<5S(6lmrT9MamL*V=@@lzLc1$rXf$UoGtI_v7314WZ;X% zf!>$TffyM1gsb^zDzA4}$!3W=htR^h&L3uhf?nzU*^yaU*9gK@Ij7>IH}+wH9&Gz= zmQb(_$*XEQ6BDVX91)zf5XXjiLkVl;M0NOSmXxHPos^nmE$ECE{k(xW|5aHmij(5( z2y{C#TMrl>(yIL$j&6}1cG+d4>qw{4=W8MdL#Yv4a{iYa^c46zMq{g1XQcK*t$Bm` z&F4qII}0Dy)4ikn^I(tF0BYw14{@7oeEtjJ-wi>m-LYhU177r;)vGqKVRB4%Ra%u+ z%ITT=k_^EXbA;RlvCASfu%ThCz&^q$RR#=Ix2Q`A_wxAxK2^hmlOe5t>a}xsBK~Ei zn8?4Bhu=f|XY7XV?}y5XR(SFLSM%#N1~83JNJHoChi8=O?%eHlQgsBjmew95Mr(S- zD0Qw0&Ao~&;EKDll@*6MLh3-GTK(!%2YNzOW#DUwco)@Dh}=ikKtytol5Y{m5<0p5!aQO zusDKW*aVgWq^h2kEPJYjdg0nCA#yH4Jf?;l`r}!aU|)O^AQCdfP+Q}ZzG>mtcopGg zAWuN8Dq6F@Pi zPoN+4X&Dv8s+V7BV&i?BiMk+VLtYR6yM}N)5|{Ug5z>emD``ho-;u2*5F_-sctLP- z9zom<`T_2y8r3fr2_;+*m?676*K2gZ)Yj@?kAbz-6e!iBAlen z^{S|zfQ(nS(}tY9Ze!}dG(V{=kW**vTi1`uSPuLwed#;|V$={iEYy1PQSxreW)S*8 z#u$)VKO}qjJGQhVP0myZ_ko-Y{tu1op>s>g9j}`;HLVRB%3Dj?{T?7a^}YQ(Kh8g0 z{Lss*8EuEF2O}I2fkhdYj0%J;zW9A_{mX1#NagGYS2=w{lhh*%%E$Gr)&&uSund0u z^o$P;eo3sW=cGC>;_tTHo2H&z+bTM`SezHOsqR8nRzIi+z8$^c;w`*=jGFO!PZThc>de)4D63J$9Xf@*4lDs$}LSh^i#f9AS4abTru8-|)= zw>iY=QzOD5P4JYTL7uzI{Gc=vM{E6~)NEn5%yZBCV@& zHEOb?qd4L)bU1;TgYRL9T&&5smZnyO@A~SryHzV8W06*ktT9#b-xhyFS1BK};3V`Z zQnmlHp1eg9EmKVfedV7&AirtiXZ;()WYxB`-GMt9EV}Ug`1y&N$kQ0*V1Rc`aXT;I z5+Kwa-I4oGVwQg?DBJ2}ZLz%PDyBV8# zIBNFTk3uSu8OPXQXKvxRg;M2J7OlcJT(q(f`$ zn+O1@)Y{w6W`%T%;hcA8@#zo-w)dQQ_N*QaBJMDD*Xk@Y&yPOTjv^}j66=c^T+*Xx zbiPx%d8U24aB~vYJTr%k)ElG9gq5t&x(KM6Vz8&PT7qBg@D)2}lnzE!?+gOy-uNF$ z+k)X|VxgbGaxKK@@z-+?O1RhBB4)^}=yRkhgPMX}sZrV_gbX5PYg1Kg+$eBWivRDU z@w^kJrTRJW0?RPfy^a_YsGn;lvR9aUizJO+5N%GcYkB$)Fj!XT3Uuna@Zk_h&fnkk~FO0jRIh!#Rk{qQxh`aeU4eIa5tF$Ib{WO&qE z^LJTN|D;%?VAj)z!W%t`yv`+~bUaz}KSna#rZfW+>-2Muka$5CWyw^HZz+zH>`xNi zIl9YiT~+f7GmRM$a&m^*M2IomrDh8ygRzK8o|Fcaq^4)~#De1t1U9)vi} zue6As-eibhnghe+H6T-6DcW5$JRb8MzbywvQrz>eAo`DvMuB;-pHBLWx&CRPodp>6 z_TaWzs(`Ou*N*4#v}S_3{%i*+!6?s8ZK%|M!w;cK9AvKkKh}A{d}<2twtqhRn0lxX zid66A0t69D=DZn{wolqoAkr_gyI`(dmd$SgnE5UTa0Ds9RmIbb2`%w8MO5G_6v21T@P!Y5G<{BL@tE7Sym_({jFE^$27HQ!r@(B+yDhs9~){*tAdmkmD_A~U!3!%0q(itUde(jUm5dI@)WtReC=yH2rlz)!ED!R`2Xmr3P;tSirIp#RRFBe;3aajoRRV64LC?agkrs zUhp^WrEK}Xm7n{@Cu?L!Ts=OuecI^ozh8T7^WPKg)}#~(katNdkwd3L%V(9_u0Wtc z-H`Rno9undbDDsXa3}4u)1Ef|Fx8OTFM^7mR%YgrQZ%dmHa&0*Q74Eln4ab|Xjd2g zv&l)cl4>cUodo+puh5yV_63F|V_lCE1`|dW(cHqAi*Jpc^nJo1;imS_bd6=yG!dj*a2TgAK{qYVQdE~vE zPKo6UdNG$)c)fYrApzO3gzJnoTrx%a9QD*}ELPb_1pJ*kh>BSG3UVHGp^qE7srGxV zvlGzRqE)Tnl}@HPWbyK<>{OAOFjs9!ih61=H4jF$eL5lJ2&H&Vfy0rx1-J1}J(f{WmJl2|Ci`Kbt%r!23vLOMe7yxxcDD1PDzwJt+i-$=Zu2PiBW3GfkHg9|sY7emKgS?y!h4lw zub3P$YF=dOVK(TSNh>smN(pn&<-SztM}v%+=42>+BrJd1<^#-F8P-XmhTI>PUosI6 zmr}E=6;)R+4|CT_+up_$uJ_dHwKnoh=I(U$(7g7ng?}0s2xq7hKRMvJFGK^>#pgZ-)V@ z-IqmAgVahw5vIH$J(7UoiBylgCGtW)QkJlk3GF%~(*s>ldts~^Qa^kIiykt*xU!U- z!W*a5T%_WzRZv5;OB-z!spf_lf54OL^%J%bW8^9#oD_4}=6J3n?fU^wQxT}Pye{sl za!))&izSX_9)s<7*QK~;70f9KRPgo+CXxS zr+|n1v2q!JHP$ObBwUcS=O5s=`li$?gVq=h(leH1R<2Zq{Pgs*@VQz>-*G0x_LubaFrA35zl?w;ql2YuYTS`zD4 zy%U&6`EtXenwVi98I$k;JaZ>ozDaavAWUD|F*w>ig0nyJ^0;nRv+J3d2rA&X&?7Rm z#Dn%;xNu`^JOmGBp%(5vC9GA1>CvTfZGqjmPsVW>q5$(&G*g)v7mNQcnJy4QIiZ&S zt0(6K$-#R!C6=qUDz?|;Qff`M!iJBEoMSFjnZ@;?Gwcg()aOlW4nvzCx^*;%)@mGR zh$jPVP zcdPjLf>a;d_mJ!HfQf{5cUby&t8<#@RU-zba*(U2*!KWOj?R?dsi~815A5lARV z?0NN5p?<-e6)`{e`u%I|lbUdt}8Dw0Wd*hQn%;(Z4128UqpcY1}FI~<_ zE#g;29oLh?=LRp=f|iGw^ugmJ1eOw)w}l99Gqjh#eAUdkh;0Tcb`eG#@^uA?=sp{1 z$se#7q8Q+_GKE0|(O4&Sg&Clo^77+kqSaP z>%eEzcHQyPU6;H(vi0^NsrK3t4Wkfy{FDJx!-;;vYNQIN(Fw~`WIQ(YRYa_VUI$}S z6?Ibe8>pCrlE+nYa@Ig{%1pGBZi-4Tzi4uOaj?%ma!3D&fJz=AQ3EA+Ao(g(Hiu zQ>+H_5#ay=S9%2wYV!erf$tivXYLh@C;ABOo0g~pZ_FH5IVaJpvB@g}>(7dWjD!H8 z&^1;5$ybFHtw_aNOlURz{wD-2Wx2#zXI)@l`QcyX`N$_)Rt2iWs|GTSV33lRN@a<< z=2|>%9;_^CHgM0T=;e67ir7>jR9v$xcY;h(1Wh`8T`!EDUjXp;J|r|Fv?Oi;P5JXW ziYH@#Y$g)0iu9^XPY7y=d*Of*!ul<_%1yhM&@|t)3@N8tm-hprV9mD4y6=qjY<6&1 zRmph1HhZZNRGV}7_=|P2HVD7W!N!k?9m@0oM~Eeyxcq7aDv~X!NfV64>xoSfZ}mI^ zHx&>Eo5g|ZqO>09IpFUSRz4*U>XHlrqe|U#AMW+N(z$+1%vxMGm#(o>-R&_#11wa} zj8wZWQ)-7tcZjaalcsyTizky2$kE-`xCTEk^lMl#x2fg-kPS(>nKc%)Fq_lvoWSr- zLYy*Az>gE7dHI@q_o28V=;i$NNp>3xz+}N(Mfx_%j1bKK(TdQxE&;*NTncQ;`>Oic zRLtjMM()`(E}~9;-ZWt&`wGQ-Ru$A>(L#0`ALA-nJ z8n1j;L}-qAN$ye8*1sP*Thp7)jC80=^l0~ovzABq@2;;A^z`(gYrbsg)C^3_>ieoT zK#&o=em3nNS+4Q}_Jg(4y)a=uG5HO*M9cn9;b1KugrRX{R+RT6a7C4l6OFluLH#-= zsc+Hz%GEjc1sJqdZQzgpobWcL9|%P;av0pBT+9itlF@o}JSS5pi|9J5-C$3Pf<;`5 z2{U$)YxXD15jmD{7)#;ee!@p4oisuRetH(2?SD;0Nq?M;#ehsoJz!`;kM?hN9#3Q;qg*VCCP^jM_@V%Abo^8I+Q>87~q* zR&@O@n_JSk!k2?QX}`IwysZ7cJ-oIQ86f#b~q@)=@Mwf;yV0pNZy0{8IJj z9V|51X!2eowNudA`4y)v&DC2^bA-yTcBj%U?4s>{jg&sm3%gs>`%^GjTW>$0jGjG3`IY%q z8JBJAf3L|$0q8lr@|)GRAJ@ToqsJX<@%}5KyC%z7&8W2DFLH$W6qdL6c3~y)W~kX~ zRFdfHq~=s3YG^aZrm@VL0Q*Wr>bi)ly00xPPN<6PAINppifV$J{I;PB!Y``K#g3|_ zH&9fQpEOnv+O|!|u%=Q|!fQ2O40}xSG^zj0CmV>iUur@TL0sUybUDnl1x;p7CUMZY z4YMeDsii22Y!XtBzbRk%DsSp*x*h1QSMpM!_=m4n6!@RyGYVuoq4axVZNQ!KIp@oE zccQY6z(O-&dqj;2jlsA6wipVEJ;rRYUxi(iCapk>BC6!Aam1TR>>jv#UL~;8_2F zRWqPL4xjx-p&wZ-ap|cfYoyb6oqfH$zIsMXv5`i3f15~#5;6`K>?+2$u9YcA;tc9fKydP} zni5e92mSLD@GY!YeE#nO2*d_x4+8Qqv+L$M5)`)0BQfZD$b;$92XS-}Ryw^Em+G&hYx;~Q5r#faZUHnS?;@X__WX6${&;_-B=bJr3RC<~>f%{^`j zF*K0{3%kv-SfT=*j@;zxS^*s3@hKPOX5(AfucL2xCq}c<-Vw%nzJ^h+sb)hsE$#PJ zOf^3`Y7pI|Nwh)Xz7Cv*Z7P^7!G;R2uhlX{o@|t3*-y+Wb<7fx9nIb(N!tis*g)&5 zw$Al`_uc#4@w}Ysh5ME8`B=`*FQioVc^Ijxlv0EpTk@{;u{!s`WP9JMGfV?~OBSw| zbAVN>^28-Y)i@N>mgt|~RRXv!qV7s;5wkg|WMFzovDedH6;K%~saW1612?;X8<#`aus z5odREGheUj{$3%Jx9Gn-Av+pd|3i;;A_O=XW36w>53qD&uaazAJs{TkGUg0ov7Rrz z3pEo;_N*+n{Jog$bDe2;viP^bceR2mCF5D(Le&H|=+i{BpROT~TdVuAi0!}0E9+k) z7g&*)@F}!Z==8@4JaazPRRIu83G+P4deC#(nOgT*G+T^u|0y+m)Zyqn#q@cvDG3i? zAtp7@SI`T4&Ql166=CRUhM+ho_xDM3Li%LhDVOB)M0jK7@w*Y;5f1|F7{UHPocD5W zw8T?`l5dGiNV(6efqJ9Pw)?_INrE#2d&o+NOp*k~^;xM6;|0Zp<=fE`m8L@VDyLt{ z<~gB=6gUs(f0a#AEid@dET9lG*4O(Hpb~!{lfe>I6l|DfKb(vQsPgnf)R#Tlx0Y87 z`ih$i{BG|2fv&`e^&MD)cV6VJf1D{UNFB^i75G=_u2AxBU`w3pHji8~AaNjWpRZG} zA3jc00Trjr5W5>K-5v-!XWU9)%%#2^(;%X8-egZ;82&IrfVgHR4Dlj(qEDsKjro5STLTFcN4QT;($Qh6a-JGA%_gU8 zYm1MHiywpK(dciIf6Sn16jb?F;g_s@bCt`;(frV95?WA4gJ_8ziQssKe0*7;x-dC0 z8pM^-i&J-g&MoUHjSuRKHSu}Ypes4oFuuwsgoGA#7P2 zmmYj8w<7ww-*v)ePvm`6DLhX75UzsWcE7rZ>K3fzbQek z&BpHSCi3k#A?19Y6X8*RjU3x8+DJ>3oPuJ8rr&lOElq+UFg&zNaMt})P=fX7VlDp4 zRmFLxvy(`A(^W}Yzne9!MSosD^yxd#XH&xmaI~PWF z(gCY_$cq;2pd!39hv64QD2Lb!EKey-stcG@!~gZ2OdohFN&O>oe<_#43N4q*oQKj( zNrsNB>;X{^g+~auZWhlU1-m(L-4}dEhEpcHqIMo|#^t83^pBBel`p#Fja&TUM=$Gw zcd`f@DQ5-h^*hz)tzXfB*&8W-7f2`~1*;Qs)J5lzvsa@2RDfX>*P>e;YE z(q=y>6zZ$G-5%oeAl>z5PzycFgbk1PcU@6N``h<5Tp3?ysVr{(=dOG!jk!|8rS9El zZ6lmdMt+3pE^ko0iUS}5ya{`!tvQs_DKHXK1VmPq{&`_?XXNuJn>!8FFU6~aj+YeR zQIaa?8ha3wO-AOKeo@!qFrv=V*5q=%oaYXmc?UEo=n0Q5eGUTT6k^Tp-6L@sap+|H ztc8$S$^g9=Xg$U3J2RarxjazSrL0vSRSLm-HqC1N|5*OI+z%pTSk<-LV6nL9)O1|( zFZiAfYmhp!db7MYSm^6Qn2?c^4iHR1*D-(-l!_4R%wtxfhxvi3WL2-Q%~bgni$z2D z38Tsx;vJQ=IN)C;uZ_;nUR4xwAcH03F%q`zzaf8Py!|rG8~>-Un@ew zl!^%3Rm|CZBz-6w@et53t+ibL^fhy$O${t@ULUtN;C`OxaP$uM3S06_;&mP=$IU%| z5=~7vP4kb(UHQu)?%hE5rPsD#(2>cI&9ZgeDK)n!ThWynExKdYif+IS^LHAHa5TV3 zmW#79iVoXb1XG*grV6c0GL1dY`3l@&b~*0q7P}d#=GqQg{2Xrz(TmT?cJSu`h7~DM z9o7lAMIlO`c5bU!mk)+#RHS%$pl$TAK-n5YAx;m_RD#nR26RX0*okI(-k2_=uCA+{ z@c9@X5Fy6Y`Q~WnDLU*jyM?TFSHgSeG|%yL-x+(9sjp3LaW%|j&D^)keqDNFZu>=| zs&xY9^jpf>imK;WYaW}cTB0Nth!t^h0bv#}DhAW>A5c=n{SYC|^1-Py!)GR)tEb_BL*5?_L9YabLH>h!ps6TA3+zK4~KEF2~&mfJ#K@YqRwy%{L z(jN(p2ep$jo8m)}IlC@Zf876_vurZ&+%f=X3*KB8l>&qzT)f0ygmv1`&D*xd@n$y+ z5~&ZqPYGRVb|T$uoe50s6$5^zDbHM2K{s9<2CFyuamr9zqftsp2F4FLi6{3@LF$3K zEfRF>s$YVhd2{o(=csN&s4U@~l>^+97O26m<4UNpw5{O99CJyJCG}{&J#6=&RQFtI z>@+4fCN0{7mly;#>9bT=_;~U^2@B!v(57iQ={M-PeDHCXenh!J3f0IHB_1v0AL_I2 zhH@=Fa&Z*%^LS7CjJ^^RA>keLmp?!LbPKx;le|{gLZtGJdrS&CML&<>eB{W&B``H8 z8~`~I^S7w2*rtv;L4c!v=5p@+$tac|sja>D<)9a1Vl2h?u&Nri{pP(Uys#gjo>A0B z^rY`SJ1y-VvBN@lWyW;AIqBj*Dk}xJD^wZsnjhNu-95X_H{LrA6sT8qpQUnyf)Ce2RZTV z7Vi^zS*%iLS(w8k{S6URp4-)1e4MvR`gB9XXf{*=DFd!GoKSubys{eDf()>J%0PeD zGG%^krI!I&La`V4+fL`Im#&DnB?2L_;33`)Rcg6SJ)%G1zdion)(FVzi3JmG+vJOA zN!2wPYO2rE-S$d_Rs`x3N{^Kb9xZAZg+IkM@~y0W+^PBg4#5TwqaF5e_$I^ESl9)! z@GJQGV{u|VEY)&`#N$Va!~Ex?+i z(zTj!tiJG>W?tKfF&zY|sy0?6OJn4(ezAVx41!Sl{^efjwwP`Zn43jijmLZGl6)k7 zc|Hp|dHGdQ1c*ibi(yfII!3v6~YX3v3Suk=OPbXKw z*RaRa-mbg-wS>B@{i;q`QkZ|Mn&s_sMiEpoqjIKI_{I{P#h8<@7>Mn)Fr%00pu^2& z!nvk*X@OVtTES%_?DM*NL3(*Q>@r0o0hP|#Gxk=p&*MR@v}4`ZK{FmE7G59QrlrrR7xa7BAZjS=RkR zo0}*swH&u?cn@9Qpl|JH+)gc)^b*p>C_e1L69XnSXv)PB)IR_nUC6Q`^$Gz~x zs(dT^(p!i1$6s!sD}~N+O8et=cj1EfYCWT+}+WvN^80Mm0r(cr=mwler@eLTm^?ZU`ju zJPbOHoLv)P2-wS?Bj3;sEvh+eRxSJ4dV4=#S`;1P6{Nb=cmpMe1N>oYB+BaAJD<>w z3-G4-?6ve8U8ZYOph%QYAQ_Zl* z=#Uu2NRA$UODu)y2r!?HOgGazj%rjbhP|xJOW4UhO(c37)$fon)mImusboREOpqv7 zJK}L=zwZh;JoFsUPAx8{NOF1U^BJ>wIeDR<+=1N9Q{Hp={c2#?aWK293j95E>E48` zs7btOt(h?XzA#=$m7DviqJupndfnMmBxWw@%1D@d|1j=!+3i1(g!!~~VATd+*dItKGILB1b z!MGC7?dV7CB~qhXP63kj^3m@^df#rphw1sY5L}(&V`uaG`tz$_-uKQ8&USCI*>=zD zT|&3eQy%>FdnlVWN$rBWOBYhvJfQ(pyJqrb`vrgXE{`t9^L3XWAg*lfUMu2HuiPmi zxmJ*w>w;y@f=1Tjf?Xlo4U(nZbH}*&F1h)|)c+gNjIm zhJe3xR)-$lw1~)&-c73S3#qv1{KhugE{4cXng@rncuSI_>KgE^u z7hX>ELsT~}H*etq*VuT|ZB&Ij=n{^}**{vf_(BZGa0NKOk7XK1ULxh5xh`wErZI8y1Tpl|?7)AWVoV9SqD;k-@?vNGSnvY=)F_Go6S3#+Ee^B$6SIt)X=gp%Hk9o$ z7QJ^ixh^Io@0>x@p8d4B$DVJOq<0q!>42IU4&3t?QVq41n=2Hm&a@mpOM)!9Mf)eV$ zpG3nSIcph*!P1dqTs6dW=I3EsQ;l=MhGPG-QX?__=qXc93NGDaV%77cVrz@m*?O+i zt5pb@&L_Z2l-1b&ifRRv26jVyy^2V{E{{5qhkfolaA5lxtV|nUrnZJWjbZD#3Fd{# z#B3Z5@>wS6FJtzq3~2h8yI=4b?`-wHDtrKT{P&ny!G4TT>{bvcEA4makFd@N7L@oh0G>TU=`!LStN;cYJ-doOX2a;bkR1=>w<^p&*`2 zoQdt}`Ml9)=PGNCCcap$;*!^x>mGw)2pCinUR{j8hU<01Fo~z-ctNh;MjRJ8HPQ(-VA1u{B>Q;_(+$jY(nhtc z2Mr55EN8I;bQ|=l{VrxYWjYBqg=K5{=C{>v7CMyah;P?ADE-N{^Q%HTw%8OZ%N{uA zojCa8DrNig!UyH^{d33+p-RO@I_du35n-j*n0L#!fl!glI4FFx8T~U@GBfcYDzH$C z-KZa|H-CC?5$USK*x<^leI~j%_Ps7#>G%PLIC}^)O+g@`h`p*mQK}ljQDtW?E^_R? z;LXKYC~Z5>{Oh8~V4P(4e6>6>UBhgUrl~I%V0@7_^(@?eG3(Khhi2&dK~!B(vEK#B z=y-{%ufD~rdr`muY#tosL*m!x&atR^OG7sbCCma~ zu|BzrR3FCFp1B;Jjr4S;EoI+(2|>37`Bq6VRLTlYO#@BC)S10h z(ZoG(EPx&(kf7g056xKD-m4~6Dc9t-_T5`9Gipbp_Z>AyZJyVMWr05%^OJ6zWBOXl z3cT$6bPwV6;YrBKdQ$$Pv1P(haIa&^4&Mevh8E3MtmIGD9$8FGzOe(yV!HJP5`<9-><+D`Ba)V3$d$)qxro#>T~qiRojuA~?CVrP{LY7LO3RNyBuIh3b2#AlNw^pPI=47ZgC8hU zGJ0+d{hlv-`xjHL-4}jf2|;z4Q&-W8o;fx!% z$?oDk&bq0M(iWuHV*1oU#Jm1V+wJ4fIfk2$=)=WGC-|0$5-o$pbJaLiFB`-=BjZ!)UQvj@euo!$%% z8X;T52XWGg(ygZ+vd3;J=u@hp+pJ^zO4!!*_PMTc|@YIR)d#c3*>*{oy3k8W$A9KGm?sH8H&1kDUqTv7Rc`r_Zko#T~>;jHmzm znc9*E6mhHr=oOMeNOhW~lxM%)n)Q98{TDI7;L)sOVPCEZeMeMy z`*2QM&FZOyKdOU&)wGIaFErz3$9XtbJr%5K`nao)-?Xsv{U8dD=av2I&=y|xxrXB; z!xP1HW=B75nB{;q(B?9`tLoFLbb<(INyD&Ca?3#5)rKl34t@F_7XuvW>0KdFJOPo6 z1ZePTO@Hz9Zr9Pc!Cp8sr{<-r>2o+8h|$tBU(znCg-$Te9+Cq~XjN%ln9u5#s@;Em z=Ypsj^W0J%ayekpgA9-aFGmM2eyRtWkW{nqTtxlgeZTGS+By`Q_?Mk4Hx|#MP^0ip z+}ZxCvowm!%-8VQ{yK^bZUky)PfG}GVYhh)m$an5dPgoB@PrPcMtk7(fNTQz_V}h| zNGqDyPc4Sg2$4#!jC*mXJOvE=oxMrawln2|r8*(XOX~Wa7)p_!E(s zn^5ip<<@T1gl(lD-6~MM{N(FgwrWJP?H3tU5?JBHLzcUlb3jJwJ>*L+pB5c6-(LyU z|6NVF^j8hOZVfR;5f;{Bl2{@+;KTI8Sm_jb2U}e78twQreRP$)Y2~tbVE_CaP?4^O z8urEv`LiWxjatMU()xv89?;hx`m)+wEtRE#r{eII`*2iq=%PgtdQQh0?Q!(ZdkcL%c0ic!*d}@Ie+7gRvOZEd_`ZLx(VRH} zRLv2nV8qeK{_Tz_QWEPsbFM;iAW_)XeuZgCdAYzt6{hMQ2d{m0U_8XKwC;F2+aw)) zQ%7lQR9&b7CNN6y0i>TOLq}tvU>@_L1JjcAq+ehyxz(KfEZnI)j(I zhU)SwgN$Czl~-;Fb@ed=W2WR!3|`B+EuL@4$+1+dviO4689}OC(AiiLW1RQ2D>EmF zno-tw`usl255b+hiFNF|tELGTVXN+{-nT7Y;={9~jMK!n%qGMFM1OmqHcpd$x?e=$ zHH$kJ3(8v6Y}z;g0%9lUq*<0^$#<5axz8CZ9NjD5K{9i0#)zJ?**aDNf0a>%^qZ70 zf9ex45gDfxh|rsdmoxH=m^;g~`puszHGEFBkm1AO|1705V~O8b>ZC|~uG24^xv!jI zI_u>Lk)2B6p-d_Ly%qm=i(4(~n@GXg+ey;Mr%)0T-!??^!NpiRMZC{UiJy8}E4JMs zeyRyyb5TdhT*)!La6Z%U?ORGB5Q0Dv__6wF=e7IAl__}%!T*GJMh_a-dqshzPfe`d z^@;?z{2a@6*LZD&#o1RtCvz{#t8TZCdz#;WoRnTLy`s}?% zb&72aLh4mr*7ZCT?d9|5b3{N0o!s_L;}JH!)Ml?DJoU-Ae#wBEEgGrvcUP=04VXiA zZEzM@$R zB1GMUcEE7*22Z`U`3B@$3M`dN_fWs~2;ybd|6!}6OKBu^nyW(7jEX}0@a_Dt^r&OS zVGYzy5R=LznHl^{gL+4cB0E>kEImKW-mYXs?vgaLOuTs=d@^!Fu-+zHGCCoYaTJ8+ zD6cTb!eYchh)=Iu+B~0XW7@6&o!9_dVrdXlOcO5fsMNO)sN%D3pIeULORC$(? z9=4|SZvJqLQ8Qh=U#Bu!$5-l98t~LVT6M9Mptm#YZJebJk?^jA8xXJB2Px_;Wu&fX zFKQBxoFmsLL^v5$+Ih#` zQ@Uc1@p(vGxhb@&p9?`Nx(?P8A+|DE|7L@Z=tna5guf%6f;BuZjhTg;k$Io3Zr_h$ z)HLM%brm=KegjiJ_OUBv*3C6Z9mL## zPG_cIq)_ITFgjGqw1g{&?rt~<-VQANS&uQx*q)FEd1m~f7WI)9b+*8t%TdVlpF-WS zxfaof0}VmL7tI`xErHj!!TJa`h9t`JURq}-7Z;6Y87Gsfz;4ic29(eJI^`V+0Xh13 z+fap|>$Vzak&-2KnnBTW!udDb0`o2L?fTzr7PE?p(CunVrHnc(1Feck`=VAL4RU zCGt2uILjt~v9i_0$RYZmde?##te__Poch*X)t>%?jZi|9IHf9*P z!nzLQ;BQ$|D?8jk(m23Jf6h54`jQzmeBEXxyRy0lNz(6&eoD=*Zh(27{E!g458C25 zDyK|__C7{;9R;0ccmZbt-dLi6=>UB2U>_iykdXj>EJPRPm7+BFMFN8xgwX*3+jNRr zqfZyYf{}oQV6ZyG(C|-zjNRbuY<3Zb0K1iz{*BQTK}=$DLr>YZ6HlMutfd)_5(Z3S z&LJYZPF=BM`^}TnlDarsTr(zd3zS(QQoFwcQGJ5|A}6f?=x}nLTU`}eo0Ln`DJXSr z9ofa!4SdUI^5al(T_zM|tFSp>=sl8H)xOay4Aaepkt6VT%>;+G+dVcoGyL{BFVOYri}NWh98S1{En0R4e7@&5ON`O?v1%sa4x>2y z5Zwss==%GEcSYM;ScB8ZiGAGauEH6ut{8!ox}bl+YJJW_AbHYbN>SV-Y3k{(&CXHp zt!$FFa(2gLDWIpdW71G6fODM}0obQSSRCpoSa%%|8^7tRzVEVgv3}I!)>k+Z7wyTZ zX&AcDs#j2ZofKCLYX^P>uoIpZI%NFF4PD4-=l31Hv35K-;jC^=M*Vl%@J^Xwhw-9z z@T)8;H^AL$Olyf%0%nLCnd#(Am|ORMG=F~~Mjf7JETpF-vBQWCJPCf33C*JiBvq`} z#D-HWGtp8NB8n#=f~_QO*m%H_l?khI27v;t>ScPS=~OB?+4T&NC9S8-x*F5hZ!yhJ zgbkY8t5QGmR&Ltk(6`;>?ap_9?ctnGZXO(M`-m^P7m{2wp;GcoUlG4K=$oeeme0QT zXV&NFVXQUVO2az35qo@oP`OTXvQ%w5oD~f ztfqde>1TmOe>Bstoex*41*XpMX0bUlN{gCh|62OJdSa5;{};H@bB36M0e}pEKdP== zq?A)E5^Jb35V$J8S>6G~y`7F=)of`cP2IT??vaN3U$q#)!+l!+z!w$rg4*fI7h_;L z;$;s}UI->{eYLy1cYt9F&;D1LJpA!v?_e?KdC0$&lf7H;E3mEv^sk5i>E6LV?ENXt z_@O8;VbH`Y6LK+cLO2a(QFbkkE2&PYArT7bA3|K%_AyEH1g~fCRr}yj#IjleTqXtF z|76A&v(4#@|7=HGPiUj{1Moh%CfUWD9;cn&q=lSaAG2v9wf`r`Xo`5C=0Y4^VSi7; zjj+lpDBd47hu;7|KQ4Vs&-!Kdl^0JA4DG-G)|}A*CBDy#m8j~B8oG5h%MbeaN7#c} zO`)S>DI=-m2F2;z?rhrQAf<#FXrf=l=DQbmmNsO83Ox(Ek|~hA!$Kl~YQWl3NsWY? zu4E&PhTr*-S(+p|n@kk1tdrTS6LBLWT$ySb=!m>!0!#&qz7_*Ar;+lUo9Rj*PSVA`Fwh1`EPW01 z2_KVR5wet>uDUV2LdHDPAXYGkDU~X&AbB=O8tBxES%i_t(^iG_BCC8Bo-z}F1@7sVJq}4Zcw+iD=TN%AeVK7&%aj+QlXhB zbrhNT1EKkKE&1edGO5F6SLn4G+w8l-hoHNU5_tI^Maq`E)v7yf$?9M2`!UD>e6291 ze3qIYHdFbWRQut7-z`*38x*Yu_YGvx)W#P49^C7fvaa_)fS?4F_LZ({%9N;3pX6L! zzp7r}HS>eN0g6eFl&`2yZc;aLW3${h42(6+{beI_sawO$8@~)7l4p88Wg)Kjl@`f& z$HzKAZ2WZQQlBAyH!NoJOPwI+Dp=Vz3RnlnbFt{I8|LMffk9D%Nef~2$pFn7)Y=Jw zC0DH^qyua@`u%BSSJ@K!3p65xHY;? zjF%!>eV>D*%{Ud_;QZ?$sCgg=w9!<}$H)Im&$*^wzur@Dlxu6$S(Osn1A``|PQRg= z3sPy_dA#FL7To7L$+ZIsgQDPHeDF({ij5dA1;~Y~9;(c-7xk0*tSXrPDe7szBd|a0 z>c44Im?@S+!hKhArHWhz;2;_|pZ%!MqQa-qrKi7(C#xr5mf|+NSZYqv&pHq}-VqtL z%E(+$!&I%3z((*#6(`fLP}EU|&$~#4GkQI;+FwvVFBo&8hF~TN$oZ{gqd}RsUrtfk*iZ_rk)E~7IdaQV_`kd*iQe~pu~On zeWagTDYm+r2N!#J@ITTBxnyRW{B@hl&jzTW?@S_4@Wx_NlOQ})_7 zu0LvYDI`+FGFaf!agngD`PAy^&)g@D1-#nRt8?=%X2hNG-0msXX&Z5Uef?4(^X3K} z>a(>?NsEck1w}Og)LPDrRC2a-IO~;?zo^|JGpuDjvHNc*{yiNqh|U0~0V%bi!Q3f} zTgw$inb~pg&5+#vbDF-Xgg$_Y`RI0ish7I^$G07%8uJnrV+WroS*7}8Az00}2EtU< zup6=G_8ZO;LI#z;`nPj5gD>s3Pn9uERQE{pwkmA^FTZv38H^$3VxIj^SB z=&AGT2mXBw{YDJTWLdW_M6qg!mRm1fQqB3X~Ok(&3BGOVYBG4gV-z z1&W>FWm6tUDY<@tgnnoB48>;Cxb~m*DmORt%C+3cA8z-W>o W@s9Kk)&cPeN zjti2C>4hcq4O>WNMVafB5zmCSRBpN|r+tlpy}*u;8C zrKp}6{So|Lf(+#Cx+s26uezgk{QSEgL-aD+t2Jv4s=Q^K?3R_`|oV;{(YyP`lRX`lvv zdsn0UhO-FTpH*jlir`1LJIj#AgmD}3TR}T7p$m8f%SFgbb%^ff9XVy9_<8inxL;I8I3#7SOp7a5lI3^OM7*`jqwaCpEbAE^ooIA+1=;x zMLIZO`&(#gU~hnI81tj4un;w4{h8`{%N4#Ydj?4t8bORM@L1Lq_n4?`tx7{Ptjd%& zDcrSN4G#Z-kH7v)z#_L|HUa!|!GHlTi6UX=S{q(NP%6%Jz!&L$@sId5znzwB$}zb> zs|6M;r7})X_A=}>=qF}~VfXY`Fl17(B^vN*ea|wYrqtce{^I5#y?Oh5JN|N-|5DWD zuiF1wi(xBWrS*#5X0v73h~_@cusRrJs$_C?s-Z}$t=_x(fL}?lU65$MXwJ%Too#GZ z$27N<5gopV;4O9AUa;iax=_XfjNZdJG?X^_N;kA53PkU_XL&{J^APC^er_WSt^dNW zt}#WNNqAK2YD-byW4iZZU2|wL^xxt0Z%YpwEG(@r#9rO_3IR*nb`%{9xEs!0RWE*3 zl%!Z~dzIqpuZk6=@JB?vm5n|1&t^Izn z1jDsP0`r)?DTVWC%c-?Q$1E8+x72`GjB2i3hi&X;k=Kx=-2HJZ1!tHX=pr2i9dcsU zW67?fFd}4q<;dRnR6xbgZ+zhAb6DfI`2tk{$M=)Xn0J#~_h7%92xYiJcGk1O99*-1 z;$AcEZ3~IfvP$bKTC_<7__kb7JQWo*ofe(0fv|U<3`SNR$6%#S>JDzRLnq`uJrqjaeY}~V=IYq6bUzN>Q@Ax0+i_c4h$?Ab3b+v+B zrNSN3A9hFjdJozATBl0p(Fh+`9cLvSN(E68joWJdBAqKT(ZHLg<0i9@Ig1~W#aBMN z15A84oys32izjHr3R|uzep_R(KoAm9{}ECFrh@cmF0hW zA3Z{>w;cZc*m`*A{oecXed@U>a69O9<5ny^;rh|;xB;fvYy)JtSAbj1;F_N*Kd zHuWXshUF#vXyk@w^JYHfHJ)*2afkKXoiE^;b@%TNgE+PL{h+u2c+u?X^hMt9rhV_W z_BQ_s-aEhZ0{0Agve`=*Vi3P`1MjKBEl^?-K&_~VE_>^gD4E?^l*f|bYG8XQ}O5KJqrXM z`rC@BlnmSJ>m>N;LS^oI3mwhMiwoR1`B2`u5{4FA376{c!=+}Gqm?- zLb|-vRF|r!=3rlo>Zz8G4)HfO$o^v${@Mon20B%L_!BlLgAuH;$O8<>kn~wg!+PpD zO-%?iS!s{sb!M?bbz3jz!-IjyumC>YIqzhCVtY(11Sv>!2LT$EsG1q+K@<102CLIv zHzkF8MNP0G+)ss9!kw(?Bysexm3Df0s7ca76uy07C|W#nN1jxrR2-pDGQJYRlYUIc z@p7{v9e}X#L_bk46?`)Di7+LqroQOl0lyMTwzR`k@na%@M@=(Gq!5ql+wlQ%5ko*H zVJdarDEwTWE?z3n*ubWN&5@wd7kv*STMy8gj5xDJjXv4_USmc#0vQMA;VGbB(Zxrp6nUlq7u#yDP+ zS}&@ihixIh$2lj8UetNpAA!$~5GQ;WzWGP|#CcU5wM;iZgiLJrgH@S#t?s2CCJg@Bp8=Pq?fHTe$%gm@SOZr`oC0g)ls zA^#j6AEsVb#6JMzLS)S@`<74v4517XyHhVG`8mOh9Jrwb(4QX5k!DNRzdfEiec5_9 zdyB@yZLahGt>mww>S6aLu3;VTSs>|!Ty4hMJ>QKIDw8kX%*N=w%0RLr(+DlNjUG+R z5!k%T5;|9(WUChKk43@Ww}`dV`;E`86Szi7m1bLLmD$V$1Nc zXoS9-{wST9ByJ;Ju(c%069RgYP^~D?3ck%`3)Va9DhowH(un<)C(uweJ>S$^GyN7( zh=2+#Lf=;B-ie?An1XlY_SLE?5#!jMm@M!-_z`=qT}(oQ4R2cN7>hg00FF}m8Z{vW zudv;>?vdZU@)3=fDdSJPJiWuk*#K>bi;^Mgt?xqFy@Q}15L>8JCXR)8V(1<5i0s%2 z<6O|q0kpC~Sai`M-(}_RelSo86$J=z#s{9-g!pgS^xHlk_C6ENp@!~A zhCu*-az*UO9bYQhp>yqS-Na%qBQM4IzqVd_>VAv=vlJKHpvTf{sM~s~RUhZ?y$HDQ zd0FZ$9T$^4yVHMu==I*Xc>d3ofLrjK5@Ngc^oZHV*MfF5^r7!A|1m4S=kEveKx_ca z;KyX>!-kC9;&$yEUEhb&sIe;!qQzG|2?2|<^z0tF&Ctjw9i4EBt2Xu~WZ%2Fql0_VpSmFQi(EW6DUqoZB)B|I|web zPGawEX&x)emlUzinNreT(lmYD?ftfE_jfYR_)s?aE*tOrRWIx8$2U%5EIT-JXD4d< zdKvm-WHdwQUyws1;~A-qha#;)QE5GENN`hcjfA!4P9jSH6I=k{KH)%tk$v~i@rJMU zh(HGtFmbmBw2P|Nrx&~!&x2QR!^;be-Fu&y=7oouW}9Y(iGY{L(x^B|OKc0g^%nub z-+^ii6EEWh(TKc;UkmTt?;CE%l^T`Oy&bgYl0dL=c+-s!-k(Em^;bE*vHBrN#P=cZOK?hos_XBDBYsfm;12!Dz{5Ewz};VMzON-U8ezK2B0{cCJg>F%3U z*}59QjWV>6w)daUOUq+O$oZ*)knLDDcVVahWb^N2sYe*AWVEJ)9C*soMgJZSTO>Kk zRy9bHltVKETqPEl1Uu4)87G%|C#x z@QwuI$4WoWvEv;i@q1cv#{7rJQ@52D9kWXb9?A@MQ$2#q4779v*OzheTQildhX^u* z$&g#5(~$hfotM8HaLSj2kmv#e_s@RTJe1}pSVkNz9xaMyWWAH3hNn~8>~ zEiPs3G{{fE(Ynt~dIELBq!K1**J7D7KQkQ4NXG7l<99JSl(U-4hsnh@aWfC&%gp{W zTN$&*-^fO6!LDWM15B^m-x|h=?yF|Hs}+6a!B-$NG)rsQe1}8OY2}Ft094o0gfQaX z%*3}%Doob0ax|tf6KP)cP!4@&1|6nq${+zY)Js<9+$1;8|2v6-5&Ihd_LS{r@OIZo+wLzpFz+L@ekD5nWkBl zbq%+pex%!?EgWK&boiT4`0azW)_glZH>ZGvj*e*}GZRslld%tf?Nyg#27BZhP#H6WHzM_2Y+tEK9mC>TyHAv=EX9E7JA6ZgX# z${8Od0$AF_WemYnLmCJUqrWQA$WexyrlJdZ7j=S((`};x3<2=z;m#)9m_wFiJ=z1C z`a$M>UKpGn5v^8@)W3UQEKV5K6uXEZq)FtH#>+9zG8L@*d@cSGr3AR$nR>btXK@L* zP`s-RxwTtq50pfBwmWd?ejk@y$3N{rMW$@C7e1e^u29&*x`1+AS2rpX<`Mmit2@1O zFpq3aL$A{)@drSHByX_L*;2{}G>Wu+VmuonT zpM>n35wX9fYeRbfF3a@XG>WtNkOGpvs6U-yjaT9_yfJ7v{scIBeTO`t2cpe=g$Elw|aZyy?MJ& zZ4{wzjgXrU@e(^7vvChg!BgxNMJ3h+8UjumPJ$g z{i7z(25auN)>1tL^u9#x%rNw-Hh6!UVAdKj7a06#CA#-1b)*!aT*8HgKx`KJXjQ|? z_5R&YiGCgRAK+KNpN`so!*o+S#Tut@VS&A2g6?a{hjP}iC^0hm!L5{FqkDErxImn* zNCnEDuY`H>&oOTPh7!t zWcFKz;5vg^EX*ZB#BCL8UF8p6l9U0nU(^)J9)JwdiW>~D9 zcKj%rh}5!BpT_bZ(fmf%C{yNa)RZ^r%RP`nyRu3o@8?n|Va~PQ zSCR2(fiK|hjnT$r1G&qT{KVatv!!;&F0o#dk{gbLqYQR%5zltPHD8XhI|D*}Oarnb zSNc==^Hm7@%OA?;i?AbEk%x7UrP?KB+WK!>FJlRpE0o2g4MRSJD~0w_ThR^wc-cQ< zWBJBj?@obimsJ1!JO7Owtk78uglq$_uVbUJ0p4}?B)!mreezRZrMYEHpcx3I?^!px zNr#yciG;=6fdvVzZ$>tQsx=VLn~javKr=7Y|MLL$W&sch5l~L#-e0hYCqQZF^v=_| z9!E))M556HFUn#q_57&$_RS*aM@bK1;)F^US!(?;L5%N!GI)vH{f2cdGlLo#T{Q@5 z;Mol$sEMY&_N`w=KM>DWa%fexL9CzB=exz*CbM+I3tcftn3M@)1+YZt_8HNT z=ePf2R(MA-P~chKjV?Jcg6ohI^3;H7$3HzO!}Z6 zqNOH&jg3}SZnd+ItMWApE+N$uN{aUbGxkXvV9=tm5Tw6|gQdX1eF&lTuNm;RS2T2L zBat9g=`M5LD(R#v&b_2T0w%&4mpo~-tNUhas6~NIokB^rtocbh*9`ay`3oCH3m#xg zYTePB_OE#fnIym7kMHvuze(bodUM~;CymaMy_g?sbg}wc)l&@>V=>NwDh52@uL!;H z+L_%~y$|3}6zC{&R8()RE?q**!>?$qvm<$VwZ{Zi5;DO1=wWVF;GPrksg8u{p5MCj z3G?)^f;@v6dAC@ru=L&JRIse6n2&5Ds%Y-SG5ls1vav_awhpo|Yy?XC_r*s_=aHI3 zF{n`#Qz53%n9w@X0NCn}-k|!S(^F^qu8*`;zTZCk<*I*PEPf$9*LxZPzOH${Jac;Y zOqojgK-;MF9J0GPjtc624$?n)d7Z(0>Izv_Y*&()uSJ!2Z3>|d`9W)Id8@aZDuegq z57E%wr6b<97yJ$2%~G%5+1sEa%Gsd49^Ya9DVg3pH;uti8Qqbs!Jt4vn9(O96hY>YJ#=_Fo!EE0;ZX~CYx@&vRu z;}##CRLp3G-0BrYfE(Y8Sm#hXV&}*t{ z{~-mbP-YbPs=x*m6_wy9{FF&43EgIDB9H8lXV2tB{0hunCTX`c3NC=&Mqs5ayi;?j z$)|aYU3YrxkiMuLmw20d9kswXlB&?)W5a6w1I(oJUrsWHS?b49D1Rlji%wG6A5vwT zourXX76($BRM9#uGZF@DQBBPklup)TteDB^5~V3h`uB+-Dkx>)WOdn^aIPpYg$+3C zfPz5vsBa3@)$6r?qn3?ff+ZXZ-4b~05o-<30(eH$HFQpLB z^QF9n;1UN$UJJXq6-`R;-r=S7lh_0eaiBTnF~b8Fy{02&3d$!4P#E_~G#ju8T1&=l z2dkTx(rDqsJyiu&38u4^_*jKfq@g%=UiJA3JGaw{O4@Mw1d5c&3^Tog4z;gRji#EM zvuVHK!w9i7PYFt{`?mdoi2D7X2poUmLxd1E89>ZS>5HCb0cGc(TX5vk*m#e3-ei!qY3deY&eAV)G_`*+-~paWGOAx_1nWeO_M5B ziz$^VXWQrrpR!H6pV$00+sdmPtyNWb$hGuDdH6M^=2kSG8Xy8riTfP2v|gB7H1 zM!Dr@B4K07sb8p6DWwn-8>*3rPcVj@Ea3EbNTTs$%k(G~21&aYzb|^We2mOG>8Bny zp<^slA(F(J8uY0syYrFe_YkAEF=s z&K}jOWmOk(*ZW~xb-RCGCE|I}R!|1)sm6s^#|(X;!U^@}*;kZ(0nd01`~}roSWE)R z4C>PU6prL2yS)5JVB~}rN1DERhI(1{O^i%wmq*;|!GNggeyI^7J*xKBpsYm|VjiC5JVrl~l?emi=GgAJW43`0$kZx z)7!?NTAMj7oLf-fy3i$V%Fp=m_tM{EdCrN{h`+IZ^awycDs@Jd>GfXvYgB-cn;?U5 z&Rz+TT1Cd&pXVfbiBeB)m37_H6v6kMJKepf+80Uc&(wBxxoN>#DYOjv=}~DjqW+Ig zLR^Au4)UAyYWKT8?V$KC)B~^mtAvbe*u?~&*nnC54e=Sw?YPanKQB4u>SpG#B+KY z;CROAz4gJDkm3$?LS6)o~GT>5{oe8p-!ZxLxb?~!z*96opYo%T(Q|F<&zc{CxI*?4QZ zsWY6d|_ZDczLh8 z8k=j)&%Ok1Ke?nB38tmU^Z!xKe}G+i-~N&BIhDR>pL#44sTuF|zboQ4hVWt7p0<>f zVwD(aV$3b-7{6bX-!vF6y27Wzz+()2N{hKj%V1|hH%i4Nt%emH6N>2lY!=ek#$cgS zK!Jly)$@gl3uLmky9xT`n+TE%}VSY;NWQ4Aaf_g0|a_)^687 zusE2Jb^~kyj-gb1;WQ)boNr}gOU^MYd1z-~Y|N3#Qm{{!z9KOL$tqktFqyRrjrWqn zw)9pQii#~Vp;QV|-{r2N4_6!Aw>EpW7Pfqxt&2Nm;+zYr`{jO7$k2Q+>+#vz=-51c z$@S>**d6dAC-3ljsq=kGU++DSy~>H=4#%-?FT+FVen53vvB!k?yn_d0wHuQSzMR{< zM0cJ37H5yl(MD(F%V&B_I>z*mRP!RMo*Yxv5i2g)gl%kwF&hIk+`1fz5B^pn&++x; zPN$@OERD3>Nc!~Tlx34!A^d4hS+=o!QeCItkYVjFrq0SYV=)%Bx|+O}&yWB1KYf1a z4{5s-PO}`~S^!t&=y;un_{ZNFZqG8{C#Xk?qRBrPG+)h!TqX4W8*zUg;H`}+HM8?7 zLva1>bzOYxiiqE3GnUd9E7$RssPB1F?xjNVAb`4VtF3TLAJDqR z^6=M<306AsnQzqjwRCsTz5u+6=ocIzgDJUjD-oj=Vchw{t{{45NW zroI?W4H3z*Ri%9Ssr})RwwK|D{^@O$MgtieEmcKBu-oCtKhg53fb;vMolmDBcn5xf z(*wFnF?Us4Y>oV!6dSWZ$vSXb0dHOLvjj|~o#sTmZ|X{R5{d8WE0oERxt$n*CSR{s zX!(OS*KGCR@QVhbqQaE+W59A0i9KV9BDWSkXIEz@O9lrx-J2cCTWz?ME(jp3O#}TC zwwbr#j?ez?fx(FSK6cgDY)b!ZTq?I_Y98`tD8tfLkT)9q3pXJp2czBXHqYcU+|U7U zK{agBoYhz7h}}r~=iP7;Eh4@q?-e~Vl2OhiTbB#);09$oO4U?bf;dgMPX~F(uqwH^ z^P@i!*%5-di>fk*FT0BHr%PPKS#X~zy&G4e6`8#PYAE9@J&)7jK+oAacGU!JS{84a zrpg-U@w>WQOxIE+B8Ong=$ijW)LDi_8LeM`hVGD(1`&awl#))7h7pGD?q+CkXr&wJ zuA#fTyIVq1x?AAo{Li_r_v7>ZzMj4BwSIdo)qzXdO*4dhKisFc24qZkc$l$Hx)*&I z^#mKu_4ysnxTgUSpK)S|vg*YtYWg1hoV+i7W?G3uDO-`-y0{A_Dz|kyl5pw?=W2kB z0GPa%aeR;qfp9n5ccLsbCVh%uFO#};88yTU5C%vc=v+d&6DfrCVWH}6JngqxYfD-h zP4(hRB_=lVlC%IGC%!*N^+x?oq2b7T46>9X!Auq=Hks3s2wOvG3^_;u5fdtu>ALPi zV3)mQd-7(uBIKSE)~sjmEeqsqI^{|wU~L<4?U|7)RrbD596Ko+{TN|Abmr|PcRp_T5e z9i?oU-jv@R=TiR*D8qQ!D^C#+v#9& zf~o2wMW+N#^zib`RwTG!DlT4ST47?g-qu0KT90_os=7*8IcvuOCQpkE;shgy0xjr`jLK6Frdx)_z~#E2PMgx9{f~5D;moU@6i)T)-#p-*-^mb_LJu{ z9Izb`q;j$6dowXacj~Qka(aB=vGrKx8&_eB!JpiiAa4QMu1v_1FjmRRO;aUW;` zK9MH+5KF?3H#IM3MMwtz#yl>yHbqvSG_1AOisZ941vWqCOwzApJpF>%lyN4 z6hgpLw{_ko1w3>s&+Ure$Q4leW$*gO$gA6`m=hHZd!9^8^8$kUu~Pq_wUpBJw<%lC z_H|k>ek{!Otum-_Jcj4DMk4IOkRsWI)e^+hmwe;Vf2=tr!5SJ_*fk*@Qsrcp-uC@? znjbK*a0&3%i#R(2&eeJj4sAdGcYMSiGw}{$v{?=qzu{(W@oMHNaUOirVx8&q3Czr1 zL^k&R@tH7C<96T^{Al{LMh~BQ&7*U1{3iQ%dmURL@xkWbfimPdW@hHFuxj6zdK-jz zHT7|ty5HTGy60c%ROOh8n!p1VF}-W)`|+--K1|}P##T?=2dy?`woG@`<&(I4MuY$q zXw`Djpk7U?OQA$iu9mASy`N|Rchlmj0}@&gzcze6AB>o1Qu9Uu1^y=3xTqEU6m1;R zoibHWKFFDmithl6e^h$;`=a&S_Wfl-7BDwi)T|8bt)WY2diYeY$&xgi5@sxp-hTITMtKQpC0&&nTTHb7cGfcRsn*z5C+ECfWHHg9k)AY7-FQ0Y zL;NwV=p?6=Q?W1E$Dc0zdIA3g$~9vP=JA^#5bS2|$pesO|2qi&Hd+qEtBLy4c=jT} zeuJH{NGNP12gl>=Z0*BFU)CYe+8El22*AS(&ru<6@&0C3J|;^#xff3YbpDFa>nN^P zAk^2?bcERCCzBiRmCW&Q(_3iRfCmU3p{v}T}bI+sn(Pm`yR(IlsbLf{MmTL zftdFdoa%ff+}GVV`IQH8LXtm2L1`xA3#p2j5H8~`qgp{@p?lP&`nYVE&kco+e}rS8seTs1ZYyKYDE}@>|eMNc#5`lu1W2=vy6w$`efKC79Pt zS~KK2wI4`rDDDy5T6B}s(-XMbKL@mr{1myi9%!&Oy>5HUR9O(ykB%EjH)ev)7uk&X zv7;PY;co5l`l=_q?%R&647uwaZP|yTJE`h<3r5R>Mp?Ql>6A^Cr~Yda(`DPickxU3 z&k+>2sbJuMR=}`hqJY2(>=%4qC=pIn#+R>3+%WPT5+=?56}(tPT&?*d5^#AZS{AQE zc`uWYKwT>-dZQ6bC`ew0GE)ri80(SXYpE>?C5>2L`eAChOl4{7S&qOnfTZugT&~%2e4w zaE8wfX0_)7*7S4XdyX*oHN0@%*izC12es~#@teqBi}&L6s1_^|f5t)sj=g+K^WPMR znexsfhv4_|pND0woZ!6gUdPB!X@27n$`o;j%@Qdn0`_7|{K%`Qm-@g33M}+*kzEDk5J0Vtw{yUZ)s~_6?rzMjy1dl zXL#KxRl4uXZA|u$s+*=*K3U=&Y=&_UT$xhhKC&~(=|unJsZEBNtK9lU{Ln1gt2O4V z+uri(U{B8Kc{nH3=x{T(w$?r!SdhK{F4762gQ82*MG#Qg)PmH8*%g|mwdC=U1q)JY zsgwsiK2%y+lX&L*#+EV;8pSe*nqW2}Ps7XzP);!(5Cr6{uXQc(Og9L)3r;T&AY?Io z0kuqUu?UG}cUnEXSgaH%CJiIR1ASqPrV|;WJoY3sF?)m#gV8`nMqD;?h?2;p^MsAUP2PdPkz~ZW_VxT!^J4 zF;&91-T`>mQ2;-!Lzmc`;HR|M-Up1we|N@F2bHMQ6QA~DVV8WAHEN9^Py6Du zwlWP1UzgLlOFg{*?!?GWROe_OicyMdW4ZT3A^uTs*jEe=tjG4c|M8^}tIr%D6tS!C zIttt9eq?MVyV`>0_r~J$^j_mQP=H$~^$TN=7w0#pi?`oedIVd~SRDf!`DhS8Htmi` zo8^QKxM0>>6kERET5;MFKB}ukMT--x@CDWT}J-apJX$axn! zq$609S*D#C#9{dbfBGY>q@@ZJwD_PD6gQ0dCt8HSO7rk5*o4wDk@BTJ-&LfY8lI1* zI@;Fe(B6WNzR(F$_->%o-L>@W+t&k4!lk{e1P5tOze zv|lU>{drp0NkOh<*Qw-?8i0mCkZdd`{M_-tq$%tL6hVbG`2E{0eC9K7$XmTeF_kcS zw^!b;;w>5u7o|NZ;_8`&_=Dz8V9AoWu8(!gQ$~hYS?25w z%RE!d@;|d=mMTD_7b2^EWx_BvW%1B-fL$tP5Zm~ZblD(_KvV@*`M?+QqyE(b3cK>5 zuBVpRu6t6T-Yw3}d4|M3j-XD5MuP4`Irt9eIz4-zaI8n z>P1ymr&0{rEQ+>QZc^FM@6;63^Zqmlj#wTzE&|kkm++EUdY>Y_to~kIosoPl5u>8^ zTC6Lx-;h7fF4wo3^r409fj;fL3N5(Bn zyD-f>KcVYWtXZYRXd}i^oDkz;Gg*E{pgm)vcH#+MG+&=^L-3}-ci}4uk#`H_LZFCb zJ^%ec*w1<%T*Z>%QwSkW0yaX+e7LbXl|^Cx zDFRn6APDh-@tgSUBVo{7f9PW0rO{3(?{kK`qq^TRxr7YG)E4mqt1DNVg62Y%e9-lu zsoK~3uD?&mf}gC8+RjHmP8;J%!X&eQFat_=JTpjNEjA1^y;ndfmp>27(U!0hakMu* zpg`a$F@V|}6rmFR0_CG_Ol;@tr24(HWO%M`FCIq;CbwAfpYYVyQ%}luA~@9-7f8*a zV4R}JKHRYPNn2=KisvVmC7qcHW`l3&J`^I%540tYsyV|sF3HHgmgcH`K51tZhMeAv z`}`g-E)zKxx188`PCj~=-v84^mx#1MWtvM(o0)6n$llbL zKvC(*@o^gjpE1%%kbaMvidcd^ z3q7L&HQ#$0)Jpmv4vS_#o-yl{K@ndNpYTi#2<9w|w z<|o?u>DESFnHZzy_CCS}Th{*DcxD?Yu8T1G=m3lqxATUuXOR&l--VxY2nk+^Y=OaW zSl#A>3XV@uF<+zG=~w;aEXN^^(Z<<`S(%^Pi4aN4U<^w_AI#BBixF8v3zpq>Lq|;#~;)KIzQGOptU4$a}hN z(2EZ^X8+T=;YpN4KRzm5-iu%8W%ba}RL>U1Y`)`?4~#x!$R|`&`=hLJFtyxyjzcJq zePo=$J=AEA1m}`+YzjP*$HzMqT}4LI7M!4{bJ*_1`v#mSk&~bfJx3EAt_~86*I-Gm z{hCORo0uM+ng1A|RQD?qHz3me4_>s+0`8Ga2b1=zo8^CD^)*9ypq_%2glT+K2600q zFX^Pe0A7^fgn#=@O~{+HwSli|xbHh=*V|j%wJ?G{h;4&SnFrLdqxzW-OoA-{RDbk3 zrF--8RuT~;^oUXPnjNDg^wu5) zh5AbUNpTpxJ>m1=q0nj9fd2jM=W2F$UyM@AJjZF{AK&jlb<);~xBz~+urOuRaK)I! zJ&{ldcyDj-ni^Yt@>A`>dXbCx7>h&cUoKI&(CnAC{AL4@O(Sn3Zk_tHU7h(3mqG3n)v+ zIGBEu9oS=ARN$q|k{LHsD8gv>r?%HDGCp@EC*%7GZWa~)MK6I8@M^TzAB3VzH>OY* zg(OIM+m~`f_@?;F17cp=BV`@Z$gWww51`Q{GbHMo{*Zj)Qjs2SkNNkwH*QC_VaV7v5GVgV1ww8#L-+vvv*8nDxYs~|riY#~MKpqogZ zke(FTwbu~_`*SbzWc3!oKjZ>WTvZKTR^cufPsgwvLTdQdmn`ejx#H&YWf4jm{pXdH zl?wj3zjp)nyV#WK+3Qg+#0;Y^)3>M%=Nry?K3+rXvm2JRRV0=EYmEPY(0EEp%0J78q3B6)HDL1bvi>z{e zNumu#iu;H}e=tbqmG1@6H$g8Gbz0rO&1r)$9ls#YCVJ#CV+Q3sbmGXBn-u>NKOal@ z^#RA_0fIBU-~BI~0`S)=f-ld{F?^<%A^uU|=sHg@)uoY~YjNON{Sdp;OS{@*{?csw zCS5{whqK!I7=5?23fJc>f`sWXC?sy)o|{q zdj}WBB?nehhad^X4^a*m#}f>IxwdsET^SwKRvNtoHZN=VN6J)+pJ5BUF?!j&{>neL zhGw3JQwML>g!ojNKoJKySe~{`P9F5IxQPcJ1^Fz{(@w1MQX-Ui+U6*2M7U&nN~G+>u!ukIPT5X&@WU=$K`A7?$7B zg4TxqP)Nd$F4w3;^AiT=FCscI33lSuG-2N2%;~5WF@3?r^VJt#Y^k%JGn8GXKDJlj z6fNGNP?fTW3*8?j>J`2xyJM*x?<;buIqueP97!iXr*K5e#5SQ7}+ux^=jW3 zJ+7Cw`jog_F^?Tmdsn`+#S2`kLWXp2ML%UC z$BP5gGE-yfuKli1jc+7dSjIE#cPrQ!L<22WM%uU?HADmnp65B}i{jpJY`N;XM{ z%-$>ApiRw+iIJiv?7pg^dOZmi{_3xqb2^B({z1nk>2E7e5wn`m#H~m>_JB)W769(W z>8XY%LlTS%3(er4kEUD~CTQ3E+FS|9bafh-7K9(Ty&dc+?1nlXKEK43vO#KR4Pjf1 z27Z$Cp3~OwvbU>Hixc7;huD&BCwfW)Qr7|S(3zggVw@y zc@BP!f#uDA{Tkj?z)22wg*V)ph;%N^WRRuPK3M33%=)cJAay3M@6lY=cIuyVax23e zKzmjDk-fasbUAlhQY@;A-1=3ky4Nwe$3HRHzxut&j$Ld0j1=ErS$8z0?H67~Wo9Lt zV=pL+-gjkdyN1POxNE2bkLT%me>=z>U2ugXDwHm6|92;){Xs15QJ3U2M;Dj=mrr!N zYK}-uH618;N*~6Y9&Y?W_7H1YjaH=;kl0(u5zk>@h9P;D`4aV_M%7XcB2j}++ar3m z2skx%uqBP_Pd=z5aaVyK{*pN?T48cF9otC_)TuGovJ4l=dZK0VLOo?pN^RxZw4%op zcy2eS$Ndojm+wPd?kiER*-k-&OpRJ;?Q<&HEUxuY(M|=R(Gy>SM{=M-wd4mFXu_yyJfl_FH&m^N`f9*imX73HtFBPp)BP(L_Q%MxX317Js<80TM9Io++I~l+ zeTh`opZI|2D*ZM!m2#o;yvpAydx!nniwqQAx9wM++8j5R%5c{GIyA?z8j6R5e_yveewAQ11PuhOU?YUS{deqy5Rk03&?@0egrWb!>it&bb65tq{gLj7dM09uF! z$s7?G z&RALf{Gm8M_tLXpAdn;$w7T%3NP|40{T6pOliDgx$gAG@bgeB4pe4d2C40y$Mjs)v zy1`9TSuH5RDZdZ(sJo+2i&JX9Og}w3OZxA$Nf95Y5q@RQe_DbnK!5H#KO4(P(>HPm zdD{5()N*DDT>mrqV)-5}KJ}E**?r}XB}o&UbMWVsT;LJImf2a731YTm@Yw$E4@vv` zg>s##f}-=@B>7_Y{NdK4(*{D{JrY0{K#pYpi7)T=_MFVKKaznCN>P+32UdJc!C(+n zNiYrCMXMBhEDm@oxO(*AtMj)V8<(k=@RU$#d1`2I-9E~rkM8`;g4jzhapYKIGidBdH5 zAAlirUig|xCdB9Ls77A<&mqeW=^sj#O+OHerqON-^KO^Tt=P zlp|m#YF;d_nI-@ZspU3_WO*;At#MnAZA$9tn3A-`1m@i;Y^jP8)5@-JtM}u$#2ByW zfAGt*$RjV}3S<697@aIZSc%@zm{-eEz6QKD-m^!mslMa=rG4RUtu3rQzpx z3DUj=of?PFA#E>Dd*b_K&uit4jseEVt%gyp*vU})@5c|gH|G=U5xl+~#u}M;;!U{h9r^_s1K!`o;*YidOOK zd78I@-bg$__}-O!p{ABBqa#N;RQn#7(G84+>Pm9xlaol&SNtKc(a5xRcZCrQ(2jrj zBj1n)l=Lcf^C1HQqSx%?v1sVSc|jno_ACR9nURBkEkf}1j^E1W;Fn+s?zFm#Zawtl z)GtkP-E{o{#&?S{JXQwRe_1I&NKMpu11yW}#Ev$k`xUX5&L>2-6gqhCTo@f&zOg88 zSr-i8R0B1_8EX!I8@YWi3(h16@OpAERInWNoF%)#og_|j5I&>av-ub}{T6Hc>?CvW z?Sv52Qje(3+fdDkf&~6tLm>KYPR|=xBa<&y%SVypL~z3aI2#y*@6ES9gjhCTD$^#E<&Y8K z5&@co_A4o5{U89;*qIK~Tw_D&U2{K0VVczyn~^@#;xJU!+qUH88G^aX!*ImWa2 z#P;-O`aVe7IaV$FY1iMRq%A5afPs=l3u$HbcMIKW7ud(YNwj#A|DcUr{`z^2mT>uB z5-;lyo?0RkUjE6$5>qz!j6SCj4Q8wu{7R^yIC;bAb))C?0a^P~cwS8Zt$SW)%2zT5 zK{VIE>5akB^n%lLMa{o7dE7pVu{YZxf(fHr!C3A6D5WTE8H(X#l*Q%$$n_--nYB1= z?M@M3=*^!x378ITP&VQb|20?FR=!I;bgNw&f?h7)NiqQK`IXNiVrnwNADgKYJduk} z!sD~<9Ley%n;m=yf=Tt%wP_3KxS}3;Ql8o3TQ-) z-^iGT)xb^=?8Sz3GUo91J$>9XwQ z#|FTLE)#I{wn0Ds_(`aEtaSM3UoP*04KLa7EF$ zN-^Ni2LmDuhbFXy&(3OHLcPvHTCsf+M_xDs32`h5Wks00buNSc5kBQyiRZste|;jH z91m6u2gPR%)6m=V64X_400(Bq6DfW_5?I=`!n~~CA$!4s#PwH^zl?n2z=+%uqc-4& zFmunJHiJEuG@ys$K8$%(v%6oQ>pCJ3dcmm2+$rhOO2KsHKAUc7Yn6T7k*c!5@68%6 z{B2)^3Z3jf41deRu;!RgxJ`I*aKF~Z#sw%1G`58|NKF}#S++*d{ntD1l2HqkFSviA zi;_tR!S&Kr#f}2T(`XmJKOh`IylbVAZvQpoA4fD1t~>YxnJmA2EH;_vr?kX*V=w-aI9R#%uCu#eKl zOJzVUDP&P_`r!y~?+j4{l0}Z?X_Nq(KE}-|S9J+wlB00Vo}a1@vtnr3=ku+rNlnrt zc`P->i*fbK)GHo3^?klnE}IzabEZzHDV&h8e>*a~!vN4=$s8_sR zQ#-U=ven_bw5R?{h>&) z{vlW7fuptN7THLmMqI6^DwA4c1!zX8&F0C5BOd74i<^J{+x--#{4n&(->$B+zGWR@xNmSd- zo3k4cplV`i0b`^d<0yAZz}^clVS1G1vc8FSy8%des1D$yDlnQOv%0;FKm{agG_T?i za_6-jBPh4Dv~O67Ztijg6|q7rl2 z^QrSgmB2eu0V}tlt492iWD(npze&R!711cSu+_z3S**^Jlhru+Vx;^!ztN{108gja!GUCG_{-}Ah)Ua@Cuj45OQ{Qu}aV4SRnm%quQEt~7Y#ojx&UoDk>J5H3UXH_Lpj zLxY!aenl?pBp;obDpz)aZdzopkc2>0b`CO2{Jw!V&6DOcpW8p(+Fzfyu5U}8MPex6%*+!-n;yys}&xT!SsqiSAcCc7J8Q-ky_ zll9QUct)pTpjeGBy`XOzz%H-zN#k}n7F$tDF4f@G$~q?a-z~@Wo&XZ%LxNsxla+%Z z>7H{iyl1gWee4t2PM}2|kpe0f?wol4OKj?0>6bMm(tYqDZ`syYmb|0=pe5TnljG;a zKwb6M@??X+15z&zq{b<`fYy?y`Di#IYRWSaWOQnxHMT?|h3F>|1sP9W;=*IjN3N@`lcL6a47 z{^nABN!&X>@9gPky-+AWG!?eI$QlElE0+`%^@AY z+LAW`mbNsW2op2$9j)hcmhhV2VG^s3VuUlu1jF*t(iY9m-dZvT?`>E9-FN-K4`t^0 z#p*zG(*(nK^S$!Rsv=zk*BWum^TMzHTyQ+wG7$b&P0MzgfYY}C!1;m;d-+pssdV_i zN)a`!B}Pf{QMx*TZqz3e!C4tiihNBLqE|nxoJOY{JVp)x)qn-PI5JD%S{7C4=otI` z^YtvEq^ZcT-I@Y;8qk^==(8h>4m$K>8D)hxnCI$s`8Moa?Gx2?ABbD#MyL|O*$Z(^ zvl6ETI~EQt2=G+(;0?4lHLu{714nFI8zmnAYrhx7n8!9fSCBq)fjW}5fpr&)_#;Dr zlbyYMHQ{&+I<(cq6~z$W_u8mb!@D19cduF0BzPmZ!8Kz0Eh6Axxc{A^0s^X7LhpUI zaG-F!Ot;W=tGvu_!RfW{7o_Kl+x_C(!e)1R#^%8N~S~pc4BtgR@*A@L98XoLvql)PoXa z-XPTN!wBxC+jsGr-iOxB=B#PN4|el)J*gqJsvR~aHcB-tEc8-ioA|g9oPMWqsV_tL zF_Eqp%(1)>FKiv@u`WQG*g^qk`jC42FM2G1;CDk!^~~}lN7$f2LFcq>DvR~cH~R8x zD!8@kK6cD+S&C4w6;$vtx zOpe!@M}_Y57QwbFutgmnh7Xv$mItSF^wb*D_E9^(5B%rV%m9$BllHgImj5KoEm1qd zYP|&gI96;d71&e<_+Y1`jBd9Lx2BfRqTv+uBIsSpV&eJW%pXiz;F~iUqH!MJNpAa> z+Hxbhn0J~0dZ%#0XKB~^Q^OTwbcVDGdKttyuK4tHXxTtGC$h)wfbfT=C1&0QcLYEN z{2h6{nVBqn{KB(OO8DrTiDj;emp$g0X1t)apsqi6IeL7T_YPs?Ky+Dp%QUs2SPUX; zI(6=vsCm>|bL8X6+FffnaN3lGRVbDO`%1cmVGY z8N&7wFL6l5e4p0&7ZSv+Yb*mNJ=Uzn@P6m71ip%xoPT#=w|i)-Vhv0ZFym}tT%yNn zE&-n-d+iV4+rq55JhsIJX*%CPtr(4KrYvfTz-7(mNlPBnNxRUHporHlPnyJc zHEfdz1@6 zUdv6N=h_+Mns#sb@_)W%cR(%(6I|UNSH*?vnoXfQ`BM~vum@ygK`kQ01k2mjg{L4O zSX@!xr==miWh9KzQv$?{sYrB6mTSb@WYgF(22o>myj7FNHhm%AOQpF5ah`Q8wc1rQ{is%3)J3TU`I+ zX#`;q1Ad_Z3=DL}*$i*>YrQ-OJ$jn*JF>NrBmbz)G|o`h1S<>2hu;gAC7>0`_Z>!S zA%-&%&a5Z4*EJgai~H?1&E!qcwlwl=&l15U@DQl?Is1Z z?%1W;!c;KeNOb;OGi{MZL>G3+Z95eGoiofmtXdwi+sPr%9hD!;5GiOmuY;L}SH%HJ zYgk1A*ce5r`Isgh?#!0#@yU6Q-YF|FanDgHzE+bphn9a93i?A)ymDx7Eum%WijJ8b z9v(t4r4n*$(cs#<9bd~kX+2CfBli8hV&e5^qgxu<@D1Q2e*$e*1G>dt)qsXgX@*uJ zNvhzwgvYH)loctWwG!VnG?aZs0YxSp#n^VUr*Cp!n_5*WEMxwQe+`N$m<~7VfQI|RNb26h_H96U65f*wR?s|2q2o&P zF@`yDvO;xPQ_I^&_GGP^FQSJC*@{qL5mBB+@z<%9Ibmhedy0bJ_Uqbl)!YdY+K5cN zuP;>`6b}ux%OpN!xteCh>k7J2fp);vfcmbi*X%2E9HtfD!ZK6zB^|{%4v^2Br{voG ziM7?+?>D2>znh@CI+2DEveV?R1Uu=m*)2eMOi=~IscB1N-Jn(7(t>RPx1@`R1t!$n zXnp|4BJxB5Rc|bWA(uTh)OgS^g5#5N?kp-M zOvt;& zJs$|wNs8CZ_3>V=LS2JV4@&rAfCdR;NC~&cR)PT>}SQSFDc-0oR$z}eZgGH%^pL2tq?B`&JY(4Sf8nn zQ8rt@4$WBl<1(XU{a%PqHz_I2Ss9T_vB zlI1#K7$~N61Ut){*vTC`GHPBvQZsHdyu{ev8ekV`ft`ib?8?}4g~CA4%ayJ#V$m0QwBB`kZVMCh3TC35AhUTAXZPQJZTUG9K+Sk`k(T0k6)WTrKSpSjG6-20Ca#22M&nD zi#%-!UbhSH+*j9p6(WHSPpx2;_qC6UFUoquJDji5Jn)?W2kzkF>YDOKz9~U!Kv8hD zu*+X^D;|3~?$y)lymkAb-3ML9^eEA#J}+&)DvPyD)(_kTf#jlEq@p*Ga^~CCFDJM$ zV+nvM zfOrcQeS8m~I$8-6BNgB86V=wg83LEmtS{sY8Ha+(PevC_q(@R|qs=5dNjp%T5+I`s z&^Iw*3Z>e}R*%YKPwL!FseZvOENCGWEanG|Wld5|II8>HHD_F$pnj&OIV9SIjcjGs zf*jNgq^ajJRlJUg8+~6ry9MPh;6y5ilfqAnDQ~MZ8rkDcgr_fWO^lD5O)w=j`Cf_^ zn>=g^Y0RdOI^9fuuf(;Dai@o>F)lc+Ics&uy#)Tc(X}xPfImLt`hL-RT;b?EuNl93 z12F%{=-kGt9Q}vAw_}~fUBxLL6#*Q`Hn1Q ziXk7d9+bc$ztgR+%5(SXyfKk_gJBPhufOs>1LPf)yJC0Bv*&{zcnP$h0#5=*x zQnbEnFgcfe9p;RkT&zBK07B%=GdHW#Q9e~bVD?K+KM5(LGGHrtT(RZO$3(71=N|Vn z`pV46UK#T)qi>=fZdc34ksaH9SQQ3lcH35Y=@Cinc>Mmz9s@TY@@JaxIS#A#xJB0N zxDNMzYN{yeUgXPDjjyOn5T?;O)8Hj7mOTRWV(>QD;E>(k#WZ)-2bttac`AsmTFs*~=D%IqT!hBd51e0Xvnq_GLaH2XK8-J+VFrmsC)gan zQ9dHcuRr^N^kKY3J32YxwdAT@kg>i2Sgj;-D_Iv28u5_{`nJ{-;V%IdYHEVRvpj$* zb=HVySjDjKly17bB`9}JQpuR5THoW8=_JA0snb8$r66dTVvgrFc}f=Ivb~qb{$a5&QL3OtyPfn*T$&Z*Vcg zQy`+aI2xz7im*cf^*rsYI-^|z+;vwS&i%=wNTs9*rgp6P1VyE~&}7oflE- zGd?Cw^f+|pUtG(x0vN7#4ViI0d`@4fZm259)*{{r3q9Z5^tV}EFF0e|Q{xMx3e|65 z59rA#7#`^(gD7YV^o9Ux%Er8uGm{Z*k_aLFw2^JiG!g*%2AM@OsRv_q^_|zK4ktsX zqFvja|B(&fv^CWaEY{>q?L=AnklVtTH#APu@d0K^3g^tp(yl!A#$Kq?6Z|k%|7>P! zx6@(6fw->4caADE}19q~a45X>Tt182Wdf!b%O5)~>(K(YNU?Z3kQA&Q#!X z%X2t8Y|P6}ZyAJG7M7lzI&lB@4;9E_jFJ4Z06xus1t1_e9TFo%+IiJ%b}o~448Eft z-1|kEb1$u-%sGc6V}&pY-i|suQ9g#YKyYw*c8ryTK0tqmjRjD$q90w6ez-caO zAQP95qQKj~U54uXtH2X&0VZw(K9p3fZ2lRmGUZ{z7_M*jMwC@yhn>j15IV0 zhG$>!EVUKmjhyl3gpUi%4O!w9=7-hDB^h-{>sW^ghrx)>)8Y?zN5w<{BUORPs83k@k406^*0I<#s)ms@UR0Imae z*$DqCFfO{~FB})ObgezNbCEe~>E#%!IQ|PpT;xVFUOW8PffBPKW?u31 z_;~2wzfCz(pc>DlJ$JWLmdM+KkBD1EM}G9EF2F1Wk`PrEv9=B$H@OKqIpTK%v){`9 zGeIkK{}X(Y!=1UXI#u*#K|lY&CQN1dd12U~j8jSlJC3@7gbxQF#H9JS{1^+4G`ILE za8zk`c#?fhXNW}3_J0m5BY?DQzHEly;8`d$E<}G7j!u7)DAEHO5LiA1d04Wr4jv_| z7Dd^TirwchcP=^axlDF7VUpw_4SvX&#!al`C!^UB2pUcuvX)JsEQtGIq=J2IZf2gx z8PQAadG{!)71SP&scM=hyipQLc;Elv!+p-4=y=q}0olM`D`fL2D&^`aWL1t-lLjlb zIVxp%u6u3I-o$dntYx^|*4ib}$t~Em(L5ebAf)Wo{VCEK9b(Ivu|5R>b}(SBg&F;9c%>T5ZcP1w7gb_tLCwVfFpV{{yRIZG zj_EHq9_C`jr7ESu1S&XH^NtkRIITl?T#AJ0P6)lkz2Z5$^=_0}#><|v5@T`;!v4`} zz6>xs;xxHF&%Yu_%!>+>8dC3NOIMRNkw`NntaBU*fgk=#OChox;}`*X=beYFCLV1x z|8DU?9r!MhQkD@9B4xn|JkG*L!u@B>Xi`jvE35+4{EA+w7rK3 zNR9tH)Bev@7se9(rdVH}lG1MO_Ps&mjdLK^(RA$ceWf)&L`oXda;g}IT>1l{j1kl% z)yhQaj{b|&Fri92*ZLmjW1DamcS(o#*SwkJ4`5}?I(Q%~FMw8*APZXA5_WZg2BPU~ zSf4#FZj#k?b;CJJDJIO8CEiCph=39@tJHf>%q0*lt^N)K@lWqdYZmDfq+dtg0!z(! zCDzJiYdxan3%l2Ew0YM&zrqu86ti+n)f;M}E*-Sl2rFR7td6p(>CBlySH$uHi=Xp4 zfqBT*?@~WMBY`c4lXoOZuUqi&6&%AfSAEMYhRnVzoz(L{1OEcfv{@hkQOD_4lsmR~ zG7d_m_XR1|bG=NNB<#Z_&6>SU24%KYNU9B9Qp@QDzuTMGggVXLcjChf0BXix$(;8f zOLav^UxPt|I*gN1SI-gVCWj{^Cgxin9t&P;KQI3uQ)l58RU57S8B!XgL|W+vX=y|n zhGB;85GiS-8AL>hk?xcnx`t9py1TnOC8WQ3&+%N>_b)tq?PsrjuY3LODh9kxZ}vuJ zD%lGfHSx9QP&Smc%aT6ANcnqE;y?^f+2OP0SM@_y><*OMjo2_6!MePkEvT2Fvn>eF zaol(RlUD@^A*L*a)U`s`a4CHNbg-UbHNOJ_vor$^=KKM zdE;~O{6nLp-!o#9i(W2O5EKfMg9;oL)*UJtT*B6NpzlcX-Qn*&fO(bTOe3mEu_SuJ zZ7~U=g2;|mv;`hBE&dtN30FW2Q$IGH9R3M3P7pQpQdjs-PCWG|h9DYIu-&SXUQ1Hk zI952w5h>U-Oy)-_ts7k>Vw(ad@|?nWsw00BkA_z0w*_n_BLo4MUU zSi3TpIxpu{}o+hpa_$qIEmnK20Z{Ck#)ktyv0o+9n(z35DV7$XZY)WN0 zzMyijcl1?l40Uv{$22XlB2-~jWygAX;MU`cmpdD-;C=No0JP_p2-GBnmZPWPwdc_v zy}1OW4NE_!83k+vpTRk&bAPS$%uT^J`ujzPiVRe=v_b}OCnsaRdbGzEEz}1X9xeK5 zWcax1Z#}2to-`v}cu&(W%B1v;{GkfUR;aW%uc!BnpMnE6Iki+RuycSy8ok(@6FPnA zM|P5ANz2Ztv!U#J#lwd;zwcmsSbPjjq6O5__fD{XO)mzZmX<3FM$f)lFoHuaDyrFs z{dPZY{@%Qj)o*6f_@EL0H|gR>y$<1R51@YhsQKXV!;8q4aLnN#;g;1BnN@r%U!vRe zS00~_8~#vk4j`%p96YR0P+|@4p+3cc6J-y@6Mcg$PiXWU)aBgnAQa3U2Y(LWrm{5m zoH+t4SRzkfl!H(6+7(Jj2TlO{o|Q;(3K3z54pECXQbgOZ7$r*2{}ZL<$MazIgkw9^ z+d~{#T6vZQ(l(_;z+&&*3hGGxQuD~C2=c5a%#~B1RQ5)E(7ks1MbzFd2K&53?LLA4 zRH-+1wNg8?(dkm|;77$^{5t6QeCP68*|%>&xanG1q+jtJ`mz6Bo14~NUI8qE1mD>S zywaW;x{I)9V;j$jR~I3nh6BnqbaIvFK3|vH;BPvVW*E<@DZ$fj0&|-J@(uSc3^2>+qwm@a8;Dt08zVzq&#Vh$ zGwwPv@55bhLpViwZ|xMOs6DJHoxSalY!}zo2(EG!4^MKHi>Iws9B|M3kGOqn>^J6i{Jn*XW>H( zuzsV~8)5T^koH9+LE1R~L&9Xfw26&yTu2)PYCZ}k);`{sIQkPZOQpXoHW8wGass`%qWBUenXQK2tH! zS;WZ)|K2}?7l)YxS6uEdQ|2hFtKdeWEgZ$gcrn2-duUt;2wK5}GR%&zNy|_voR^!s zKj*v2sCbv$P(n9-Q`q@A#NS9iRy96iP?!hKdM>t2_xcI43NLA4R!^6h7w|#MQ>S9s z?(Z>*3&p*aT{HHE-dVUqY)*2gXKJarVrm@gS$ebU+hO_aG2++#e;`q6R4|;@bx0mw ze5D+9x~YelecGJ?9<=R!mWjPO0@@=64iw= zEME5ymy&GNrg06kC04*sz%o{-$v14fPU!F7c~9~@JU_@1K6eMr#8x`>FRi}mQ&4sF zhP~i!Td2a%u6esC1*1~A25eJDdHGy~3GQfy-w(^N4_l+9^^<@f<^eLA=|GC-;Rbsy z0O#!sb~0DHkgl=0QPH?R+X+^Jm|Wj|)(pxT@vSP7k~0VUv6ml{2yvguD{qVH_;h?R zh<(0;ArRp5R2SII--dOS)mQu4pUQ&^bT5oZ9M8ouxytKf;Lsf7GX#242$+b(;t$y&lj zl`dhskcaz;JzM|}zZYxN^S#X7!p6Q`aEWVPigKv8#@oIvJlyaS>Rfk7+0=;$HL-QL zaZyh$5<6Z9?d#{5HqTf2!B@~VQSI|ZyDa)lK)Dt~SpbSxey>b#`$vo> zJUOJX;AdL=Y$qOU`OEVe>^3FgcZlUbULXF#*pBZLpK+cK{=#jL{!iS>W7Si=^@3RoJ@22Vo)4w`-OTz{jM>SwUB z1ivcI@C*sb_*i?BP^M;?#5Ub~uzQobRJ(x~*K>PuV0v~Fz#?D34rt+b)drvhTXZ?q zP*Pt=cLSaN5s2D~x%#jir-lHI2<680?~Ht9AEFFpsJLryLmtsAbqh(xT{YdZBcT0b z#}#sdT@UZFb8RMR8DkYv=(dMbDY?~muJ9}>1XrC+-xZhrdXzuzuJjS;`qaCPhI>UM zX`oO?R$Myw?8?>hgNePqqFy1f#4Sh{;iX8!+pnx6*e_s78`kQhBV46roaYND{@mbI zWYLm8zBKBe_@9JC`{EzV=OS92T{+CJWJLLAA%E5vl~rd^P?U#}s!iv3c9=&gq>UpU zcdT~au2thFBZn^Js{|DWS3XRFXWXODh&qECMbCf^e_2D-!KAHn z@6gN!tL7K5P${2dv(>KHxb}f+9@V&=B1B*NfLt$1BZVp@Z>)S^NR9##^GrvLqff4i z3U$lJYm$GIn75;jJWq^>_%`gsfKc;%Uk^dfEG8?*4-@hCi?k9VFA3nlO;H1EKoaln zM)~PXH~)oLpNXrd#t_ehRbVm3*L|fNu$-O0{DP5szAIZbC;2xnMY{{{UX*O$jOOzL zoGzT5HMXRDSNVAzbtg7uEuJ|L;-dL1WW*~jBiY;v=-PZ=d_4G~>{!~S;i<{e(3c6(-{ zvDh_~&XK{kKN`2Ifbh<^i%4!1hruoo%4@UHe*6fVP^H?nY$KI9q$Aon0!{j+!tsp+ zU2Y77bs=~aADp;uLyc!&@5r$ec!*+V$9+IIN*j$8g~_GmY*KXhpFMO5^~o-7M+L`s z>f3tw=zadR*_uK~h?*^CpDi%0OUI@Ot1_%R%DoI zi+usC3M6lEGTKM=UT@fL3_Dhcgii-;4rA`8we4_u6PVvf&w%fL^>)z0H&(B!pg4snt6bArC$3>Jb z-pCV@lT*08l_j#>&DR)PBP&>~;C!Wk&OqKfH}^-N)pIz_H`Gd>qxDA3XH`S-?5MYNR9=qzaQgZrggy+V&0Ru)^~tCt$_C06H{@R6X>bVrZN$ZeNnS(`!#& z`qQli)$|i$zaxn_9V0{bo)_T9&bhD%32}9!m@OOWmsc5qvI&$$U?;$u%YaKM+u^Ks?Ia^BR3S>NpIja`Kn9r1_dB^i zju{X4Qg_moYvrJ2n5mgMyz~H59OuzoBA;NkfJ&5z!t4V1;#o=u#b1_o3awkMkq1qJ z%Q4MaUud`hyb6S#lj*Sa1BWU%JHWriibqI(yow1Wd)rG@;_ziBiTReB0M!s zaW4>UN{;AwEbAiOd>OQjRSgY1f85+)5>qK-_4HwG zwYV#E<65SQ6|NO99EH=lPH0FgZ=k>MmMCuaC;a%Q2I+7mjtroXPmEP+F0a8i5y@+D{iC|Ax!;R7o4IC?53)BV3fnT&8Az+tu1Y0zpeGh4-%pFk_l4}bQ7S$sd_$dwk$Cj<_<_m z$DW$9-AuW!h{=S3op8e_dsLfH9LrqlFni z%3NG3rGvro>A&e);M_lxh#3yR9Dd^M?3^W3#GE_g$VtT@14_4@fO;HUi2ohYkkAz) z*{}Z$Lv?(|0TnIZYd#vw)=WC=ULtDgUXxT%#1Z$$0H<*kZ6qgoyKwAplHq%#FSF%+0g40$V!?huxPe=0>1Gp! zQ%GS~UpG~P^;sj&tpjh`UKN?-RQV#m+OqD=cU;NFNzthyA9i!O=eRb{DB^~-z{OAA zuYT3R28p*WqGeQjNp3FQkn@en%?anno*c$IMT{^>OXfv}3ctqjQ1Yx)sh0|Jp^{^j7 zHz+=NF5>3rjp*{yM9dgIgZs6>Gs23wW2FLb&BjAol*+KoK3$d(t6`&f2@L1Ys#gl3 zuCQS|bOdhM3!(FcK_nq-t{%X?n>YRVKX6v?`Ih(LR!&!-v-q?*cP)LQ`=A+p>f_^n zL5v-HQazJ+&$;L(=le#EvqcR+V5rT(kJ z08MxI^3dBdjBgifv#PF#eV7ORWEFD>B*&_Sx$b2r{x=J*m80=k6jXN&Cf#T_xNd=> zt!{p^b7E1#tvaijQ_$$fqP<+&A!*3ShrVuahxT z0?mIH(*E0jF13>$EM^TP%BX7P4WQ1S(OO(w9R1*uf`VR}y@{{U8;L_ujjPcYWwv4X z=I)W*bBLMxPaFgBzbNiO3i%Y{!~g#+^6Xe#=td1+;2Q!Pw?t0;d7P9U4H zCKMXNP+~nF}+9e z)`6!Yt=CTU43Qsteyfm=9DR%ZQ(>$raQ+T+QJ-1UZj|iZ zzBsOssUew&F6N7EsMyub%m-i1+M}iT?lMU@W+&HWHb!aH4{b!gi-`qID!NP>`=onY z1=3UXs#3>vVze~vjSw2~oTqHSiM%x9E%p^kFog9j#PAJSyar4xqz%L;0xDt0Gm`=s z2aN{@j(ztRLZ?2rG2LPr_+oP&x!prb0&>e0q*wMntjtp21)#f5x&_dXVqV?y3z$?>}KHWgX@@k4p|M?B*2xQm}l9?Gb6 zq8|_yo?2Slu<0un@DSzZc`|f%W})M1ysEY~JADODwHic%=SqufhKQRqSPXD_vXflY zXu!6?yy2zc#0E4ASrEYM6vO5#(3eiHs6S3CvR-TI5~b@7QgI}i0t^P23IHd%Z8i5g zslEY}v^j!j3S7#=A(t{}T+e<5g}6OMON(v8NBt@S>kAYuUG$G%pNWe<73mOTaZcSE z0wt_s@DVBKl(x+QHvGs{96q}(1MlejYJOspc(H8{r;oScl{hweI4PDjt&=obAczo@ z)i@;)%d|$X6*KO~5-S;I6RsXxeVMfNS`Bg|CLTfW5;bIzTs;G6tn)vw06zJG&sAaa zuy<{3!p}vqGYst2yCiYCxfpv?nsnlWAEeBX-$PVP$Sv}>=zm@&LEg36X^_0|0TSzv z1U-fD?*@S0>PXY0>!qf;I(pEl2$1~^psonF|GeKG0XY8b`7tYY#*eFPMo_Pu_iJhh z4-KKSq$21WFhjJgsfp#N?Mb&BVTVO)&wF%+NvJ_(9HM%KdF+L#~t9msj(J}PUqXc1*vuiNY+UNWYOs#$^PVwrr zm}#fV0VWhss$;05QMzaEbD!-6D-t%Vg}ZyCM)mgUDqU0y#~dpvnIT}FcdzvebC^$~ z?I>B%F&&;vI&gHdmEXR)08j#KI9eTk{18eA|HVCTGQk@w6om;-T8!ra)Zkh>eyTYk zF5*wkuTok}q;|8*nf&n4%HPtI&Yz6CpbZID`2jEKu!D)p6hz^+7AU%MDamg^_VR=X^M55f$BAnVtmZd5*~TH-v| z5^Unt(J2s~g>7!FHo6<`D;;RMgJ&eNDi*Ps{?M#TV1N+!u$**P(T^ULD3&=3nW-Yh z_Vxx|%a#6Y;XG{IxeleWSbN?`n%=M(Ts@3 zlhjOGrC(JqVlQhQ#!M%%{|@o?4t*fP3-v$@rjMEv>vN&pLoP&s8zc>*)$X@!mAd`UpoQ%kEMGpWYv9q#+(*aU$KwU#*mjBn zD{?EekicE01?ycUBzHTRvwUsPG)oRkL{~?^p(q}tiarDvHbDYP*Ld# z{rzq-aeE1me92m49$gO~Vsmh6?b}{2kQ^3cQjUOFIs)IC54$z1s=HVDLj%v^V$jCD zQW(gy=>t7t{b@K?b_z2g7AhZha5=p5liUyn`}Lnho<3};6S~~*hEFl&eV8{X?V?LO&#k`dl6^# zs1>IY8E%4H@Rvq>p%dpoW8tF!@@X@!0u56V>b-40M8rK;57=Mh^@bS3rzpD4n$o`a zmL!h(I=Y(u8_FjqG3OP0r+(;s^!s0pr7irOu-LDHtPb^5 zWq(_inj1NY?+U9D`-}fdp@&R%|7OBi`Dk6Hr@25;k`z+7#s3#Q zg+dOz9wZ-HeKiH@VAq4Q`Y-Yrqp@fg&ViEZt_<`( zTf5(J6xdXj3Axk|Bj2rCamkg0`?ih_1ZOk!Yn56W{YkSdS}WoUx2IDiDqRiB1B92K z)~&AsZ9nRw=+NQ+Lu6{!{6wG(Ns4$0y;xZRO%~*BYM%|UF0m(;8-?JCy<}yU;$daw zk+_J=9F{!!tFnz=<@%t1J$C$9gwIlW*ZOlgZwkr}(K8=^7WZ}vZ9GX@Zf~I`TgSp> zRd(^iz(D`qns@7N{=%=HtZxILI_WV6a$+FPZM$k%SH2gZL2ameotAA7)HVrQjy3V6 zFP9_^oQapUAp$H;gGo@_01{dm#!@J?>$d%{YF#q&Mo5UiEg#_YW6_WvRO2>x%cVGyMD z?WqP%aqoK-(mn{2^u_pN^WDz(ha?oklqzrUM}V={!En#&Wi?=&B})L0S%PR%__Q8L zpa_)@T$sesTxY;wf_td#C5L}kZu6IGD<9J%&h*p<`PhhKE)7@r1_FpK092 zoElo75o6z18Yp)L@shSOr}nVaD`J11^uu&cj1vjRR7rmou~f+SZ5so-_M|aAdW{!I**x)J3ZWhs$a7uU$%{Nh^}; z1XFwCtrxDMiWJd^TB9%jzwJZ~!@Uciq9OrD&1nGq_5F3`Bem<^1iSLORmZ@XC7><) ze4ZLs86oU}IZhJyJNgX(DMhA*w*PeqA10{iy9s%0FkH>$MPoiEOF zKf}H8H3$N9jOLV=aX>iqn>i^CL~zGmW?-cIoG0tcd)EM(#aO>^PK}Zc_lu&W| zk&Mqhp~<$Can+E%EXIU-iG6TIAnNeK%r_PW<|MRu5b*vLR3Z z;EY?$%BNS}C$6J08J5FHCdZak+HRFXY8HuXD2YwKA-#|g%Bm&AQg0v6kRtQep*5MJ2uP=&?EhI9lNpd-spqP6cYm zjzX;4&j#WGUM?0M@$QDqR5%iJlE0)1r_pqzrsDtqUb(FiDr``B+UH^*DU5<91#dY&}GJB!%fd;%Sne0huH8U5@UCw)Tv={@yK- z(vl3YgWZ#MG@thK5>?jACKgiX;ljr$ASn+AW#R50yhuE z<^_ZK#MQVI1T)=baa8|T$CdIlOj-Js)+t83ALAuzj#4>eC9!2RhN(q04Y*N#yB!o} ziMX7T1`l;VNE_2aFG-X`;)Btj6mb>hRrNJgssDErOQ3(#ubuL~FPz(j(N^Z>T4SQK zT5OO!?9GWvyg4huj`N;@;cJieul7?R(^Xj`K&)GT`3Mb_kpL8*yVS z<5tMGBcHy>7xv6q6q6>A(}P`BeN%5~a*~-!lU4ldS{9PXgSw(f6KIr1gws=Ii6NQh|DH2FrlX&o|o~HXTro# z5l=H$j|*)eR2(g-d|mFCu@hjr`4SpG{-l02c)}M2M_l?pD9P^}BI8E%2~P6lRMd}x zhUW-pViQ=lRoNWf_S!P}vUbDlw(Q){SNw%eYTnHIj=Axqb(?Si$n#J$4_vl0Gx?z! z9ZDx7MjO6Mz)UJjz&&f>?TFa2=;fa3IH?A`Y_p7JefgB>Q*(YwbN7`L_)2Zk4edG9 z^yXfCwxqrx=9!Mp);r2vNRjfN3ii@=e;GGjw3`|M=3{E{Cc8Z?0;HAbrM3M}_Q9zq znI=@}YVY)W^;Vy$AQUXRenh|lcg}8=N`Jf}XnJvF@?86IEX3srhE-E4-v3I8!#rsr z(KvB+R4hnA;8J%t{jF3E4Kz5+)FJ%t|`-tO$aU*eCv&NdpG;>h=w z5_R!E1od^oOEQX7OFwtdGAI-TF=i39b~EDU$g^dlvt=n=sER^G(By%95avL^=ew<6 z5hC#HApe?3Tv? z(>v9hd)E6v9#r*+Z5TkG$mbO)ARN2d?8$0$o%u>bXJ%UzY@Bb3GoVH6Yi zH$3psy1UJP!&mBA_x8r%Tl;(4klwAOgc{E}W*YiFs}VBN3WFZNN&c65QLI>@R4IaU zN3ov<3Eu;2%G3@1M2b5LOt3J~M&UURu5P>3@iKZgeD>Wvx=)48%UPgrHli-mWUnBq`CSl#wN4e_fIlu(T*yShPq7zL5`kBe(U{)*HQVFK#_p)+Yya zw6Gj=WEOU49kq02o5hUPkHK|$6`Imja2>do`P}|0u-*iz|MLw0sYWC+LL6kcpyI6hc$G6g3wvKf z^Ydqr@9V0t3U!IMD=$V)uXMYlZ@M2#{kEPkeK-HUu4H=H;CFBnF0$$LIG8!TEPZd- z^73()_imf_KK;1OfA*%-5wkV$FVRD@QG=iIdr@cOaeQp?}%mTc6B z{nO#86v=1lpnIQ_V?)FF^2R_vf}l9qPbAXgJV2G#moO;qJFoPK=y03#4QtEY7=N6K zf`n7nus?HFU;&B8u_~iY-?g_c4|f`t1kd}AQu_j|HFZBcV(~(rs<7R{MAzcF?!=8O zP{5igobHj78vm3%GB#nx%FnP}|8aU%!E_b+B73FSfTA>*M0*W6O>);T8pzmh;N-Qx zI(Pr5R&%pRjMPf8-LB5EEBmL&*N(KWBsyJ2Q)g0TdOIIZ{uZuR8NqI21g$U? z9{{%BY*9mW;}^6zsA)Q@1Q)W}m5Jy*k}ifsd{XH*$LfLZ!>wsTx%40C^%{ME#>4UB zv?hm9f(d#APGoo1rJZbE-2B>f`Q6nwj$8Z88v=jc=F4X~kHM(oKfnKb;q-Xn)UOEa zxx1}&y)`42dZZ#-TE3rd$>HnYHpU)6)%qU$)$KDrQ|>3R-M3eD4{y;%KMy;JNTD8T z-f{y09s1RwCH-}j#6U&9((DxxGaZuoxkpEktLVWPHhD!~3P^gS3J@p|cUr-zEnzdU z7;jD;cCeIkQ#=>Vs-63Ao1U-Xe+DRv9eu<2(Z*iUv1$e`bn$}fyFZntg&&dC=S)mo z_6^a-P4m zLm{}LB*#D@)PdLzXO@WFq(2n(!5i}m{=YGfL4qyVkXn1`mxX(Yk-(Er$Ns~yH?Pc( zNtIRui`_3>zRBzour(bk*xieIv>==EcHOYDFHtW+%fpy(q0xi%L%(KoZf(F;b*As2 zBVGH!+1Q!tcUsQ!&&MtIA`iniGpD}(#b#oy!SjA6lC{7YUVq0!zj1rt`?gVGsTWSr z&z8Bv(HYoK6;Yttq!ed}D-<8*STH|b^T^1696z*c zT&8!M2fas6Ac_Dc1POl|g@@Pb2I*BzAIRx1VwAvTmSK~kQxna?DlVaGGTjYl{OL*x zx57o$4ym}NMbheI(>cf81Yhr{Crzvk3Gq?muYJ?gP6HjRW7eAysoWJzUX}lL8EF*_ zo<{vw)Kv`;97@-I8r;514!{0d{LpwxW2%pLQ~F7TDIQ!DhXO)pSg;=WU+=g)+}Cfc z>}~d+Ez__kmt%EUPsPe*TlE4=yXU6YS1cD;wD0kYTFXm3to_ys0*s_^VO;l%j|Q2; z{@%=b()EEYz7RQQqfgE>nci8yR*;{{S3RGcK*IZR=U<=kz5E;|j&fmVi@P?GW^*y< ztBg5!)Mmq)3t=t5xaqe!WwE(_5{d0BKI!nAq#M}$lijOt%k6HCyF>*7G`^sN{xNZf z)dslLLYjf)W*9RvX73zJ>H5lpi(~u&16=g-9YzucTk&FC?_t#vD!M$?K#s5LVNOHG zv-WD^B#X11kqiXO!#NSE%#^y!JnlvqL%yoBl`QCQ79Df+PFXqvsPxA_1)o~N((-UQfgtL9eBH)D zV5`7OcxwFO{XNExOu)4t6<#_&K&V(5t zCNuI}bUP!{z94ntn8iO*%w6?|Le$kCtJ4_pXZbe!ntX4oDm}7BcF{~MFK6Wy1{p4# z0AAkG_8gfP^@=h^JmgHZ`0BUS(S1?5WH4qR%l?P#nK?V}ko7jV>RFoR1*y7|4p*ZzEZ?J7#|DzFlw{@S-Z zuwNSn{weQIY`G&Kzp{B)dsJ?rFW3*fm=64t3X31{Ejgh}l=*e`_xdB+t_$%LDhG*o zd3p1t^W(treRD?pe;teF)&51?tP|^(9K@85!RPVOH*E(;i?=s*a@mDui2y^i#Lsg9 zfrWfuO|ALzpA#jW@0h2=lT1u~-2_yA=av5g8%;t70zx3psvuTYfT2jN!i|)c$gKbH z574K)u*@$AIB+lYxxV5{uq8LFrC->En-e8W*2msK`McaKN5I_AP|uU??5L_= zFhVSy{*O~(rcZR7Ox^ihA>)tN$3QZUpJ9vhNwZJh^3^b9SP zMX+ewexx5lBigp0KCWZ>AFl?@zkx)+3MuHv*Zke=U$bV8yDn~Hfj4-WkdxP6KvMZK z*I^o0>tLAX-9+6HY}*sQdKQ0L`Q7hLyyl0@z3t#B?e0x1+y+G<E?{jR zUhEqSzkg62)IIhGz{-u9?^15B4zUs(b_>i+?MdQ2|#6g=5`cYhPHY@OY{LSWSodOB(-b$p;AQCa+cM=$H#u zR)s;gBaq*|5%*HHl`tX?K&tppqF=yoN^L&&14HQwf=Iub*q13&-~Eo)@VNO|}8gVUaaz3^A@$;dn2nRsoT3do@OAS}ezQNn?z*LKodJL2U1sQ1r+`*tq71sm15=)53T@hLxGty4qbvD1KYx9Fj&jqAT=!1tfbYMIZEZd7qDpW*q2=w;Gn{^7*(_0K@feGO9y zyZ7K%{&$Yoc;nH(N`S7c_ff`h;!Fx zGG{Ym{buoPK2z&hWljY;SCJjTQznlGnE|&6dQO7k_uuMu(2@^wZGuS-3u-S@z+4oa zsb1f1dLWG)`P#_%y^Aj}q)e5!XFoPBvUc6BiBk#E-SDm&v(%D6tRZac=EY6AbRlQR z8-owT%~qTq=USHHYwIp@XM~5PbH-4ISd9n0!CRc31<;pv0wxF%)N!tg8&eBU`IAZ> zM&S^;nPaa_tgnIWc~4c?ODN9RXXEj2*(n+xfmrR?NBzWm0-^6mwg#u4>&y33tI;fb z@#$#lv%JiINF7$h2@XgG-v-S`s zw8aZbr=I`py4+3CDN~^&=itp&VDm92P>dk@aXT}xZsyDTdse6xy{$Wac!EJ`J^}P@ zT3T!Ay9}vJpMlPABbNQID4-AKaic?r>v!=(^+l}7nN?>7s{Dn)H*K3q+8;P2RC3&6 z$O8q`(VX6D-<2pY&MzmHrc1)?;$U3VIqvga(HAN2lYxvv9lAW3UO(Oek}zSOX8~Vs zaNSJ*G76__kSYSKh(#yN_B1Ew!m!^pz$3aWFCd!__KsZX=r81h#PMUky!p`6v0T_Q z)&wK1Ev$NId0d=JeMrNosG``CpXqMl`CrQ!;`jg1T~+d`rl@OEXfeY>QEi}($W6ui z9w%f}(1cDKK)o#__NBB!IZ6=dDD^FBP)C_EPVS}lky>|k>JpfIX(AIRRB&Q@|5_B7 zh(thm5q_?GGSAleb01&6I(-E-)%L3)zDe5qXr%3Llp3l&i&e;S(f%!_&lSj#nGk-p zd7OaQ1PI4XgmjW8%TXZ#(-%JKJB3kww{9u9W{NBk+Qo z6ZA|K!|K_IFR_9e9}dbE)%xCwxkBH(zMf1GR1v?#2`aJ8TZ9l};{L#BVq5W-JHZF~ zQk4c;b4Y=bxl_Lq}HJ!xuPO1HXs^M^9Dw7pLdcLq)H<)5xz&VWL92sG~y+OiDI zi(8?6TBEL;ov<*VjuU zKe1w$A#(N}X)HiiVVMb}a@uh_G(aZJDUu^nz4j~ujo3;sb020=98IA~WY(nJE`+O@ za&o-gQ*qT5A22v_Kz}^FOQ^5J@Flh$FtQ07G{FEJp&#GduCTX`g(ux63ewX})`7j> z4VK17yhCy;b`Or>Mi8Rk9d8bHkd%xS9G32upvDEqIsZ~po)wjKiE|ekvG-lDSrX$?N>^`~p%(;;^3yL8VeOm{L7DEF0;= zUTR-LbSCY>^3Z5*!=`N(OA?4W&cW&MT%47S;q%uX>A&Lkq3K)-?|H~@4SxJ+1_tp` zzzkHeS%Mn%fCR^sKbpBz~HtA7*W%VKi3D$vdz|c{b0r}iNC1GERo-= zWT7Dx5~_`LbQY&5@C?z0rhM-nuZmzq#W!`|radVc)4nQYU-@?H8;LwS9pb6fg;c*ATxLzKc_ znUn}3O@VYBlLh3kXYrS-*bOuevT4zJn4_;)#y&U;#ux>m11yr^lI-MR0(2UJgPQRP zdscbic46Aw4Q!Y;eb{@$esmOuPM1x!X=!8&VNzajD+6OD^I5Ni+g{uwZknEguSF6# zDt5!>l}bvUq(*b(Vdw~(jTS)L$Zy}|eUwPAn&(6W=S4X%)f$>a!JOXMG5>wBIDES- zy7x+>RmfW!&XrH;SgI2r5!<#ef$Z6N^SnM{;iA0{piw1~2)GlOdv_-c zUq$6|p}u`=|4w1&QrzIS8;cUj_Ip~l`HUP9SM0hqppQC+j;=$>4bumrM`Tio5CM9+ zdmio8-&ARJ39reaOraDmNs(h&%=s{(woviy+2>Fa`3wMZ-Y`=!faFJ*E@0#&}K-Q(~8q(;w_f6V>xP1u4D{p(`u5{ygc_sI)XJI?P%AzWz+*R?!rl#?;On zCH4}D{Tr5HglZJL3=hW>Z!0k3=|{yGwcO}FlKS1J-JK8x8jby3`ab*^ZW{e~tsAKP zb}|3?5h-}reot%GDp4A|3xVoeio-ZmY)~Ue^|!H4jW&A-00?K1oR{E&aZ%f@v+G5$ z<}zCnfX&ih9WA37-{t$}A8(iJm0MW1NqMEebQZo<(t+@{-)?@buz~U5DNu*B%}4X3I-z*#9@0} z45^n!r_mx@oQ|yG0SWp~bkC3}_%0@1TyUrgO!P@cm)j%We?yRmiGQM?mO@wp%dTJm zJz*#=1685Y=V{Z&3)9$w%m4$a({GwP8#$AcP~~-BR&ig$vjh4&YHvEzkD0eW>fy}p z)OqJhLZhu$G%Mq4HSDyZdoq)P)}luUSN6ShI|N5x_EVC6w39zx8~Z0Pxk@h57G8Z; z&T9(=pI}6ixQ7a4)7?*gF1^erwF@x)uAn?p%j6jw)4q}pqv$+t^xTU32BfvJ0CJBL zr9)ht2hCMCE@=`HyqBiZ{BBnv*%X)~3e;+RI-(5gCZmbxC+?UnfpTn2K35&+un3QY zescmYQI@Y>PVfh{ll`#Llikt0aJoy5Gz)IyvlS*?xBZ`45XHaufB`VV8IK#kzeQ%1 zl+RrM)attJF?l%PZNSy5%=oM3EB~_vylK>K5+}%d{_lY1!6%bn0md5X;>?u1CQ-uy zTOY08y?YDHHsa{d^gE>T-u}6ihpa3v=0rKT5%ib+oc*rros`z*E?NfZ2}aFcTEa)A zy~*+8XS{*iA2&iMTX^UnqorTQ8$b)3NrY>{sUNvWyo`iflY-7Y>!RKtDofEQ&k|aD zo9k?CKR3up?zfpVbjKarjePr5EfkkNwh|l3Ta2*o&tD{gbe@XxCx#mASe?1jNz_Zuq*mV=@2o&>+)nK0{h7bM#d~;wE;6 zPkDZ_$kfM;@W4BAnPt7InOXuF0fN{3i`Yh$Cb1szQbFH5;t~)=Ot0sM; zMJA*3D(l4*w`}ZV)_cIeSh*1vX`CEz(qC^^NuLQ{5G=B!e!D{yI47KvdRaBGDOOOp z>faf~t4&S9eI(amlZ-?9pY5Bb9aMixgOX6e9ND64G!TN_bI@U+?yR zEe~e_v%Q(K9j^K`LI#B-7l}X`FJc9ypd+G{9Rf4w28|_5el2 zRh{$HPmG%s%hFjpLzo?fwDSwc33{2{t1QIy4yia_#Lb$*swbPY1f z3Rx7=b-5Zqk(GvKhCh>6M2T+p9`RXPmN|FMCd|>S#jQ3?49PZa`iuF_hS(2-xsmHF zKj$P^qb*7(A_M&i^@Y{Wv#O>B9!^!&nD#CMQKJ0t!!@LX+}y7g9#f1c{}pu2-s@`4 znBlpzJn4rY?y2g%lzj%OeLQzeVi^%U9@*|#UZsOKYIo^pKh#MBV1{(JnMOo3tYwsr znJl30ez7S(AB)PZKRtz}oDdhDae4fw z{r}J=xc_Nyr^teqyWY<0cp_-gBrC2`;?s9e67I6{!765E{`A?fi&6}1AG4<#g~Dgs z{1eKh{O6L;CwQQmd;{v_TpLA@$aR`{oD$qF-82cEY|F~tUX^1q>^GLF;srN|chJiB zrg2wr7n0b4U4zYMX>5fs`0RrlPa?Cu5hid%m>Y$(itt}i(y0SSji`X4i@`wK#4fH87w56MKy|QB+;@^8hp)Z3X(0=3#LXDT>`dWt=5w#%iE%r| zF?EalGNrHvV+#G#E_Si*!a!|5f9Cy2wCN8rprqX17{1%--ne==v;oYc;;dBuUjQZr z+4?%%Z8g28Jrg}X*~K6E`bSNbQ{&^}ppWyyx=shjHpTuE;=#vIO|t+`MXS{YEQ}k4Njl|=Xyvf>AgX$!ktm0%o0KcN(xNbD*=%+Hw z`+!u+`!R}qz5lq~C?*h$vBpJ#7-xp!~^!oN7mLRE$k=Xm#Vbw zDugn)(9sdF1bq%sAn002sQ{HI{0m3UI;{y~{Lu zp6Oz|b~KeXfY0K-K%p!kg*^gnHIbSx@{CX{}cL5z_dk% zq79RHdY$;V17(&vY^_>S6;M0ogQU|v#&P8{P=Lz?Y1GS5aSLiEMPE`v7gb5tUh+C_ zYgtA{VJZWQ?pG zC*aI;r7i`wbySa=OuwR1?6{d<^6cp+KfTuJNE&IR@wSN+Skp-3`yhVhSN;J%eE-@n z{^BqG1BgkVM7sWoLcZ`gYcX9nt97atpoJgw4nNrOH62gIL|UG}$`5%ts=3T$Gpgco z#A^Y)`6+`-X>Wp_9wbRFw3TPsJB`_N$mPAxS^H6*F zKJ@E!2(JLr!%k0YF*Am*+h%%qrs^Fvllcm&c(E#tUdXYUM;+sU7}k&)W~@y+cE;8b zqf9|tRv@gLM=aou;++Zq|LI$9hlK}vF_pm2BhaH7_ zx-FD&j=G~j3e`NoZzB8qUHR#;fgh07bF1=0AN`no@e6+}_wTLi@zPR?kmLZS z)DJ($ZHGr-W$HPy^>0baKZN>7_;0rkq?og0d2vSHmr7x`3#Hl3YYLmHW3NBZ^U-71 zeprzHa3JkYThsQuuGm39rv&eqYfYwIQSJ1PQt(W@lMPK(cv|Pbrik_BNL9FVniS5Q-Qu?9utF$0CvD4znSsf4%vko?p9PW!iCvlnD zn5FlLh%S=2z~W+!?-?8BeaEps4OIX1|L57x=Om3Z(nuqXG}1^TjWp6oBaJk^o%mk> X-r|L=4 Date: Wed, 30 Oct 2024 13:53:51 +0200 Subject: [PATCH 003/117] created the banner section structure according to the new design --- .../src/pages/LandingPage/Banner/Banner.jsx | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx index 7c9b89131..3c421cbdb 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx @@ -1,33 +1,28 @@ -import styles from './Banner.css'; -//import { Link } from 'react-router-dom'; +import styles from './Banner.module.css'; +import { Link } from 'react-router-dom'; //import { PropTypes } from 'prop-types'; const MainBanner = () => { return (

- - - - - - - - - - - -

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad in voluptatum ipsa nobis odio corporis sunt sit aliquam quod placeat, nam quidem optio, error dignissimos beatae perferendis debitis sapiente! Voluptates.

+
+

CRAFTMERGE

+

Обʼєднуємо крафтових виробників та інноваторів

+
+ + Детальніше про нас + +
+
+
+ Banner img +
); }; From 526fb8b7dc366f4ce35407e5a58852903c2ef58d Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 30 Oct 2024 13:54:47 +0200 Subject: [PATCH 004/117] added styles for the new banner section design --- .../src/pages/LandingPage/Banner/Banner.css | 9 -- .../LandingPage/Banner/Banner.module.css | 116 ++++++++++++++++++ 2 files changed, 116 insertions(+), 9 deletions(-) delete mode 100644 FrontEnd/src/pages/LandingPage/Banner/Banner.css create mode 100644 FrontEnd/src/pages/LandingPage/Banner/Banner.module.css diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.css deleted file mode 100644 index 8509e572e..000000000 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.css +++ /dev/null @@ -1,9 +0,0 @@ -.main-container{ - display: flex; - width: 100%; - height: 546px; - min-height: 500px; - margin: 50px; - padding: 200px; - background-color: var(--banner-main-dark-color); -} \ No newline at end of file diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css new file mode 100644 index 000000000..6f7b9437a --- /dev/null +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -0,0 +1,116 @@ +.main-container{ + display:flex; + justify-content: space-around; + flex-direction:row; + background-color: #B4D27A; + padding: 32px 104px 32px 104px; +} + +.main-baner-text{ + padding-top: 15vh; + font-family: Geologica; + font-size: 30px; + font-weight: 900; + line-height: 57.6px; + letter-spacing: 0.01em; + text-align: left; + +} + +.main-baner-text__logo{ + margin-bottom: 10px; +} + +.main-banner-link__container{ + display: flex; + max-width: 194px; + max-height: 46px; + justify-content:center; + align-items: center; + border-radius: 4px; + border: 1px solid black; + padding: 13px 16px 13px 16px; + margin-top: 30px; + background: #000000; + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.04); + +} +.main-banner-link{ + font-family: Geologica; + font-size:15px; + font-weight: 500; + line-height: 20px; + letter-spacing: -0.01em; + color: #FFFFFF; +} + +@media (max-width: 768px) { + .main-container{ + display:flex; + justify-content: center; + flex-direction:column-reverse; + background-color: #B4D27A; + padding: 32px; + max-width: 768px; + } + .main-baner-text{ + display: flex; + flex-direction: column; + align-items: center; + padding-top: 5vh; + font-family: Geologica; + font-size: 30px; + font-weight: 900; + line-height: 57.6px; + letter-spacing: 0.01em; + text-align: left; + } + .main-baner-text__explanation{ + display: flex; + align-items: center; + justify-content: center; + max-width: 768px; + text-align: center; + + } +} + +@media (max-width: 375px) { + .main-container{ + display:flex; + justify-content: center; + flex-direction:column-reverse; + background-color: #B4D27A; + padding: 32px; + max-width: 375px; + } + .main-baner-text{ + display: flex; + flex-direction: column; + align-items: center; + padding-top: 5vh; + font-family: Geologica; + font-size: 30px; + font-family: Geologica; + font-weight: 700; + line-height: 48px; + letter-spacing: 0.01em; + text-align: center; + + } + .main-baner-text__explanation{ + display: flex; + align-items: center; + justify-content: center; + text-align: center; + font-size: 26px; + font-family: Geologica; + font-weight: 700; + line-height: 28.8px; + letter-spacing: 0.01em; + + } + .main-banner__img{ + max-width: 344px; + } +} \ No newline at end of file From aa32dfb52a7e09bb1662e6e882137f93cd7bd61e Mon Sep 17 00:00:00 2001 From: romanmyko Date: Mon, 4 Nov 2024 21:00:36 +0200 Subject: [PATCH 005/117] start format css mobile --- .../ProfileDetail/BannerImage.module.css | 5 +- .../ProfileDetail/DetailedInfo/Company.jsx | 20 ++++---- .../DetailedInfo/CompanyDescription.jsx | 10 ++-- .../DetailedInfo/Cooperation.jsx | 8 ++-- .../DetailedInfo/DataContacts.jsx | 3 ++ .../DetailedInfo/DetailedInfoSection.jsx | 41 +++++++++-------- .../DetailedInfoSection.module.css | 15 +++++- .../ProfileDetail/DetailedInfo/Logistics.jsx | 8 ++-- .../ProfileDetail/DetailedInfo/PhoneEmail.jsx | 35 +++++++------- .../DetailedInfo/ProductsServices.jsx | 5 +- .../DetailedInfo/ReadMore.module.css | 18 +++----- .../ProfileDetail/DetailedInfo/Startup.jsx | 9 ++-- .../pages/ProfileDetail/EmptyData.module.css | 2 +- .../MainInfo/ProfileDetailNavBar.jsx | 6 ++- .../ProfileDetail/MainInfo/TitleInfo.jsx | 8 +++- .../MainInfo/TitleInfo.module.css | 8 +--- .../pages/ProfileDetail/ProfileDetailPage.jsx | 10 ++-- .../ProfileDetailPage.module.css | 46 +++++++++++++++---- 18 files changed, 158 insertions(+), 99 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/BannerImage.module.css b/FrontEnd/src/pages/ProfileDetail/BannerImage.module.css index 784747652..1f828f93e 100644 --- a/FrontEnd/src/pages/ProfileDetail/BannerImage.module.css +++ b/FrontEnd/src/pages/ProfileDetail/BannerImage.module.css @@ -1,15 +1,12 @@ .banner-image__block { - width: var(--main-block-size); + width: 100vw; height: 200px; - flex-shrink: 0; } .default-banner { display: flex; justify-content: center; align-items: center; - width: var(--main-block-size); height: 200px; - flex-shrink: 0; background: var(--main-grey-20, #DEE1E8); } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx index 987dcccfd..648ce8293 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx @@ -1,11 +1,13 @@ import { PropTypes } from 'prop-types'; -import { useEffect } from 'react'; -import classes from './Company.module.css'; +import { useEffect, useContext } from 'react'; + import ReadMore from './ReadMore'; -import { useContext } from 'react'; + import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -function Company ({ data }) { +import classes from './Company.module.css'; + +function Company({ data }) { const { setActiveLinks } = useContext(ActiveLinksContext); // TODO: implement logic for getting data from db when it's added on server side @@ -19,9 +21,9 @@ function Company ({ data }) { setActiveLinks(prevData => [ ...prevData, 'about-company', - ]); - } - }, [setActiveLinks, companyData]); + ]); + } + }, [setActiveLinks, companyData]); return ( companyData ? ( @@ -66,6 +68,6 @@ export default Company; Company.propTypes = { data: PropTypes.shape({ - common_info: PropTypes.string, + common_info: PropTypes.string, }), - }; +}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx index e5c3896ae..42d04a6e3 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx @@ -1,12 +1,16 @@ import { PropTypes } from 'prop-types'; -import classes from './CompanyDescription.module.css'; + import Company from './Company'; import Startup from './Startup'; import ProductsServices from './ProductsServices'; import Logistics from './Logistics'; import Cooperation from './Cooperation'; -function CompanyDescription ({ data }) { +import classes from './CompanyDescription.module.css'; + + + +function CompanyDescription({ data }) { return (
@@ -28,5 +32,5 @@ CompanyDescription.propTypes = { startup_idea: PropTypes.string, product_info: PropTypes.string, service_info: PropTypes.string, - }), + }), }; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx index 934cac30d..4af32381f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx @@ -1,9 +1,11 @@ -import { useEffect } from 'react'; -import { useContext } from 'react'; +import { useEffect, useContext } from 'react'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import classes from './Cooperation.module.css'; + import ReadMore from './ReadMore'; +import classes from './Cooperation.module.css'; + + function Cooperation () { const { setActiveLinks } = useContext(ActiveLinksContext); const cooperationData = ''; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx index c799015b3..ccc31be02 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx @@ -1,9 +1,12 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { PropTypes } from 'prop-types'; + import PhoneEmail from './PhoneEmail'; + import classes from './DataContacts.module.css'; + function DataContacts ({ data, isAuthorized }) { const companyData = { diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 03e18a384..a53366987 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -1,29 +1,32 @@ import { PropTypes } from 'prop-types'; -import classes from './DetailedInfoSection.module.css'; + import CompanyDescription from './CompanyDescription'; import DataContacts from './DataContacts'; import EmptyData from '../EmptyData'; -function DetailedInfoSection ({ isAuthorized, data, containsNotRequiredData }) { - return ( -
- {containsNotRequiredData ? : } - -
- ); +import classes from './DetailedInfoSection.module.css'; + + +function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) { + return ( +
+ + {containsNotRequiredData ? : } +
+ ); } export default DetailedInfoSection; DetailedInfoSection.propTypes = { - isAuthorized: PropTypes.bool, - data: PropTypes.shape({ - id: PropTypes.number.isRequired, - common_info: PropTypes.string, - startup_idea: PropTypes.string, - product_info: PropTypes.string, - service_info: PropTypes.string, - address: PropTypes.string, - }), - containsNotRequiredData: PropTypes.bool.isRequired, - }; + isAuthorized: PropTypes.bool, + data: PropTypes.shape({ + id: PropTypes.number.isRequired, + common_info: PropTypes.string, + startup_idea: PropTypes.string, + product_info: PropTypes.string, + service_info: PropTypes.string, + address: PropTypes.string, + }), + containsNotRequiredData: PropTypes.bool.isRequired, +}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index bf89c99f8..faaeb6220 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -1,5 +1,16 @@ .detail-info-page { display: flex; - align-items: flex-start; - gap: 134px; + flex-direction: column; +} + +@media only screen and (min-width: 768px) { + .detail-info-page { + flex-direction: column; + } +} + +@media only screen and (min-width: 1512px) { + .detail-info-page { + flex-direction: row-reverse; + } } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx index bb3e015a7..d73362c18 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx @@ -1,9 +1,11 @@ -import { useEffect } from 'react'; -import { useContext } from 'react'; +import { useEffect, useContext } from 'react'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import classes from './Logistics.module.css'; + import ReadMore from './ReadMore'; +import classes from './Logistics.module.css'; + + function Logistics () { const { setActiveLinks } = useContext(ActiveLinksContext); const logisticsData = ''; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx index aace7b194..b8107db4d 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx @@ -1,12 +1,15 @@ import axios from 'axios'; import { useState } from 'react'; +import { toast } from 'react-toastify'; import useSWR from 'swr'; -import { useAuth } from '../../../hooks'; + import { PropTypes } from 'prop-types'; -import classes from './PhoneEmail.module.css'; import { CheckOutlined, CopyOutlined } from '@ant-design/icons'; -import { toast } from 'react-toastify'; import { Tooltip } from 'antd'; +import { useAuth } from '../../../hooks'; + +import classes from './PhoneEmail.module.css'; + const LENGTH_EMAIL = 14; @@ -74,27 +77,27 @@ function PhoneEmail({ isAuthorized, profileId, personId }) {

{profileData.phone} - { - profileData.phone ? copyContent('phone')}> - {renderIcons(isPhoneCopied)} - - : null - } + { + profileData.phone ? copyContent('phone')}> + {renderIcons(isPhoneCopied)} + + : null + }

- {profileData.email.length > LENGTH_EMAIL ? ( + {profileData.email.length > LENGTH_EMAIL ? ( {`${profileData.email.slice(0, LENGTH_EMAIL)}...`} ) : ( {profileData.email} )} - { - profileData.email ? copyContent('email')}> - {renderIcons(isEmailCopied)} - - : null - } + { + profileData.email ? copyContent('email')}> + {renderIcons(isEmailCopied)} + + : null + }

) : ( diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx index f48702edd..790eec266 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx @@ -1,9 +1,12 @@ import { useMemo, useEffect, useContext} from 'react'; import { PropTypes } from 'prop-types'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import classes from './ProductsServices.module.css'; + import ReadMore from './ReadMore'; +import classes from './ProductsServices.module.css'; + + function ProductsServices ({ data }) { const { setActiveLinks } = useContext(ActiveLinksContext); const profile = useMemo(() => { diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css index 214038b8d..cc8016990 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css @@ -1,5 +1,5 @@ -.read-more-symbol { - color: var(--primary-green-80, #1F9A7C); +.read-more-symbo, +.read-more { font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -7,17 +7,13 @@ font-weight: 400; line-height: 22px; letter-spacing: -0.14px; +} + +.read-more-symbol { + color: var(--primary-green-80, #1F9A7C); cursor: pointer; } .read-more { - font-family: var(--font-main); color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; -} +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx index 3a6f6f826..f822b049a 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx @@ -1,10 +1,11 @@ -import { useMemo } from 'react'; +import { useMemo, useEffect, useContext } from 'react'; import { PropTypes } from 'prop-types'; -import { useEffect } from 'react'; -import { useContext } from 'react'; + import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import classes from './Startup.module.css'; + import ReadMore from './ReadMore'; +import classes from './Startup.module.css'; + function Startup ({ data }) { const { setActiveLinks } = useContext(ActiveLinksContext); diff --git a/FrontEnd/src/pages/ProfileDetail/EmptyData.module.css b/FrontEnd/src/pages/ProfileDetail/EmptyData.module.css index 5803123a1..92ab4ff0c 100644 --- a/FrontEnd/src/pages/ProfileDetail/EmptyData.module.css +++ b/FrontEnd/src/pages/ProfileDetail/EmptyData.module.css @@ -1,9 +1,9 @@ .empty-data-wrapper { display: flex; - padding: 12px; flex-direction: column; align-items: flex-start; gap: 24px; + padding: 12px; flex: 1; } diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx b/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx index 808eca9b8..36503f430 100644 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx +++ b/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx @@ -1,11 +1,13 @@ +import { useState, useEffect, useContext } from 'react'; import { HashLink } from 'react-router-hash-link'; import { useLocation, useNavigate } from 'react-router-dom'; -import { useState, useEffect } from 'react'; + import { PropTypes } from 'prop-types'; -import { useContext } from 'react'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; + import classes from './ProfileDetailNavBar.module.css'; + const MENU_LINKS = { registeredAndStartup: { 'about-company': 'Про компанію', diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx index 0355a21eb..778a589f4 100644 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx +++ b/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx @@ -3,11 +3,15 @@ import { useState, useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { PropTypes } from 'prop-types'; import classNames from 'classnames'; -import { useAuth } from '../../../hooks'; + import DefaultLogo from './DefaultLogo'; -import classes from './TitleInfo.module.css'; + import CategoryBadges from '../../../components/MiniComponents/CategoryBadges'; import StarForLike from '../../../components/MiniComponents/StarForLike'; +import { useAuth } from '../../../hooks'; + +import classes from './TitleInfo.module.css'; + function TitleInfo({ isAuthorized, data }) { const { user } = useAuth(); diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css index 6ace21f93..c27a2d275 100644 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css @@ -15,16 +15,10 @@ align-items: center; border-radius: 32px; box-shadow: 0px 0px 2px 0px rgba(65, 64, 69, 0.2); -} - -.title-block__logo { - width: 40px; - height: 40px; - flex-shrink: 0; - border-radius: 26px; object-fit: cover; } + .title-block__about { display: flex; flex-direction: column; diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx index 4d1b6d3da..8e9a870d9 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx @@ -10,9 +10,12 @@ import MainInfoSection from './MainInfo/MainInfoSection'; import DetailedInfoSection from './DetailedInfo/DetailedInfoSection'; import BannerImage from './BannerImage'; import { ActiveLinksContext } from '../../context/ActiveLinksContext'; -import classes from './ProfileDetailPage.module.css'; + import PendingStatus from '../../components/MiniComponents/PendingModerationIcon/PendingStatus'; +import classes from './ProfileDetailPage.module.css'; + + function ProfileDetailPage({ isAuthorized }) { const [activeLinks, setActiveLinks] = useState([]); const { id } = useParams(); @@ -20,7 +23,7 @@ function ProfileDetailPage({ isAuthorized }) { async function fetcher(url) { return axios.get(url) - .then(res => res.data); + .then(res => res.data); } const { @@ -43,7 +46,7 @@ function ProfileDetailPage({ isAuthorized }) { return (error && error.status !== 401) ? ( ) : ( -
+
{isLoading ? ( ) : ( @@ -61,6 +64,7 @@ function ProfileDetailPage({ isAuthorized }) {
+

Про Компанію

Date: Tue, 5 Nov 2024 09:35:11 +0200 Subject: [PATCH 006/117] add folder components --- FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx | 2 +- FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx | 2 +- .../pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx | 2 +- FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx | 2 +- .../src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx | 2 +- FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx | 2 +- .../ProfileDetail/{ => ProfileDetailComponents}/BannerImage.jsx | 0 .../{ => ProfileDetailComponents}/BannerImage.module.css | 0 .../ProfileDetail/{ => ProfileDetailComponents}/EmptyData.jsx | 0 .../{ => ProfileDetailComponents}/EmptyData.module.css | 0 .../{DetailedInfo => ProfileDetailComponents}/ReadMore.jsx | 0 .../ReadMore.module.css | 0 FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx | 2 +- 13 files changed, 7 insertions(+), 7 deletions(-) rename FrontEnd/src/pages/ProfileDetail/{ => ProfileDetailComponents}/BannerImage.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{ => ProfileDetailComponents}/BannerImage.module.css (100%) rename FrontEnd/src/pages/ProfileDetail/{ => ProfileDetailComponents}/EmptyData.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{ => ProfileDetailComponents}/EmptyData.module.css (100%) rename FrontEnd/src/pages/ProfileDetail/{DetailedInfo => ProfileDetailComponents}/ReadMore.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{DetailedInfo => ProfileDetailComponents}/ReadMore.module.css (100%) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx index 648ce8293..bc3a93a37 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx @@ -1,7 +1,7 @@ import { PropTypes } from 'prop-types'; import { useEffect, useContext } from 'react'; -import ReadMore from './ReadMore'; +import ReadMore from '../ProfileDetailComponents/ReadMore'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx index 4af32381f..1fb54ceb7 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx @@ -1,7 +1,7 @@ import { useEffect, useContext } from 'react'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import ReadMore from './ReadMore'; +import ReadMore from '../ProfileDetailComponents/ReadMore'; import classes from './Cooperation.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index a53366987..2bf8555b3 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -2,7 +2,7 @@ import { PropTypes } from 'prop-types'; import CompanyDescription from './CompanyDescription'; import DataContacts from './DataContacts'; -import EmptyData from '../EmptyData'; +import EmptyData from '../ProfileDetailComponents/EmptyData'; import classes from './DetailedInfoSection.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx index d73362c18..9950e8a9e 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx @@ -1,7 +1,7 @@ import { useEffect, useContext } from 'react'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import ReadMore from './ReadMore'; +import ReadMore from '../ProfileDetailComponents/ReadMore'; import classes from './Logistics.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx index 790eec266..16af88b54 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx @@ -2,7 +2,7 @@ import { useMemo, useEffect, useContext} from 'react'; import { PropTypes } from 'prop-types'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import ReadMore from './ReadMore'; +import ReadMore from '../ProfileDetailComponents/ReadMore'; import classes from './ProductsServices.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx index f822b049a..292d4fdbf 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx @@ -3,7 +3,7 @@ import { PropTypes } from 'prop-types'; import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; -import ReadMore from './ReadMore'; +import ReadMore from '../ProfileDetailComponents/ReadMore'; import classes from './Startup.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/BannerImage.jsx rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/BannerImage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/BannerImage.module.css rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/EmptyData.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/EmptyData.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/EmptyData.jsx rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/EmptyData.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/EmptyData.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/EmptyData.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/EmptyData.module.css rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/EmptyData.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/ReadMore.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.jsx rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/ReadMore.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/ReadMore.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/ReadMore.module.css rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/ReadMore.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx index 8e9a870d9..007b2f4da 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx @@ -8,7 +8,7 @@ import Loader from '../../components/Loader/Loader'; import ErrorPage404 from '../../pages/ErrorPages/ErrorPage404'; import MainInfoSection from './MainInfo/MainInfoSection'; import DetailedInfoSection from './DetailedInfo/DetailedInfoSection'; -import BannerImage from './BannerImage'; +import BannerImage from './ProfileDetailComponents/BannerImage'; import { ActiveLinksContext } from '../../context/ActiveLinksContext'; import PendingStatus from '../../components/MiniComponents/PendingModerationIcon/PendingStatus'; From bbe1a13f5460df12726b8eaaa558331b6a8fb9fc Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 5 Nov 2024 09:59:22 +0200 Subject: [PATCH 007/117] format code and css company --- .../ProfileDetail/DetailedInfo/Company.jsx | 10 +-- .../DetailedInfo/Company.module.css | 74 ++----------------- 2 files changed, 6 insertions(+), 78 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx index bc3a93a37..23135ff0f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx @@ -28,13 +28,6 @@ function Company({ data }) { return ( companyData ? (
-
-
-

Про компанію

-
-
-
-
{data.common_info ? (
@@ -45,7 +38,7 @@ function Company({ data }) { {competitiveEdge ? (

Конкурентна перевага

-
+
{competitiveEdge} @@ -59,7 +52,6 @@ function Company({ data }) {
) : null}
-
) : null ); } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css index 022817303..b6e62ecd6 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css @@ -2,61 +2,7 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; - border-radius: 8px; -} - -.about-company__title { - display: flex; - flex-direction: column; - align-items: flex-start; - align-self: stretch; -} - -.about-company__title--block { - display: flex; - padding: 8px 12px; - align-items: flex-start; - gap: 10px; - align-self: stretch; - border-radius: 4px; -} - -.about-company__title--text { - width: 742px; - color: var(--main-grey-90, #25292C); - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 700; - line-height: 20px; - text-transform: uppercase; -} - -.about-company__title--divider { - width: 795px; - height: 1px; - background: var(--main-grey-20, #DEE1E8); -} - -.about-company__content { - display: flex; - padding: 12px; - flex-direction: column; - align-items: flex-start; - gap: 24px; -} - -.about-company__content--common { - width: 776px; - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; + max-width: 343px; } .about-company__content--advantage, @@ -67,19 +13,8 @@ gap: 12px; } -.about-company__content--advantage--title { - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - letter-spacing: -0.16px; -} - -.about-company__content--advantage--description { - width: 776px; +.about-company__content--advantage--text, +.about-company__content--common { color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); @@ -91,7 +26,8 @@ } .about-company__content--slogan--title, -.about-company__content--slogan--text { +.about-company__content--slogan--text, +.about-company__content--advantage--title { color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); From e07fd2285905100f13b9d64a5cb5532f26a9bd5c Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 5 Nov 2024 10:08:58 +0200 Subject: [PATCH 008/117] add folder TitleInfo --- FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx | 2 +- .../pages/ProfileDetail/{MainInfo => TitelInfo}/DefaultLogo.jsx | 0 .../{MainInfo => TitelInfo}/DefaultLogo.module.css | 0 .../pages/ProfileDetail/{MainInfo => TitelInfo}/TitleInfo.jsx | 0 .../ProfileDetail/{MainInfo => TitelInfo}/TitleInfo.module.css | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename FrontEnd/src/pages/ProfileDetail/{MainInfo => TitelInfo}/DefaultLogo.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{MainInfo => TitelInfo}/DefaultLogo.module.css (100%) rename FrontEnd/src/pages/ProfileDetail/{MainInfo => TitelInfo}/TitleInfo.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{MainInfo => TitelInfo}/TitleInfo.module.css (100%) diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx index efa266594..f27d5baf7 100644 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx @@ -1,5 +1,5 @@ import { PropTypes } from 'prop-types'; -import TitleInfo from './TitleInfo'; +import TitleInfo from '../TitelInfo/TitleInfo'; import ProfileDetailNavBar from './ProfileDetailNavBar'; import classes from './MainInfoSection.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/DefaultLogo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/MainInfo/DefaultLogo.jsx rename to FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/DefaultLogo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/MainInfo/DefaultLogo.module.css rename to FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.jsx rename to FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/MainInfo/TitleInfo.module.css rename to FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css From 9aa36f2d8e65a3554d032d32d601fb4aa741063c Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 5 Nov 2024 12:28:33 +0200 Subject: [PATCH 009/117] deleted navbar format code --- .../DetailedInfo/DetailedInfoSection.jsx | 1 + .../DetailedInfoSection.module.css | 17 ++- .../MainInfo/MainInfoSection.jsx | 42 ------- .../MainInfo/MainInfoSection.module.css | 5 - .../MainInfo/ProfileDetailNavBar.jsx | 103 ------------------ .../MainInfo/ProfileDetailNavBar.module.css | 63 ----------- .../pages/ProfileDetail/ProfileDetailPage.jsx | 34 +++--- .../ProfileDetailPage.module.css | 20 ---- 8 files changed, 33 insertions(+), 252 deletions(-) delete mode 100644 FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx delete mode 100644 FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.module.css delete mode 100644 FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx delete mode 100644 FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 2bf8555b3..2197f5286 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -10,6 +10,7 @@ import classes from './DetailedInfoSection.module.css'; function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) { return (
+

Про Компанію

{containsNotRequiredData ? : }
diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index faaeb6220..4663f9ec6 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -3,6 +3,21 @@ flex-direction: column; } +.profile-detail__tags { + display: flex; + align-items: flex-start; + color: black; + font-feature-settings: 'calt' off; + text-decoration: none; + font-family: var(--font-main); + font-size: 34px; + font-style: normal; + font-weight: 700; + line-height: 40.8px; + letter-spacing: -0.34px; + white-space: nowrap; +} +/* @media only screen and (min-width: 768px) { .detail-info-page { flex-direction: column; @@ -13,4 +28,4 @@ .detail-info-page { flex-direction: row-reverse; } -} +} */ diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx deleted file mode 100644 index f27d5baf7..000000000 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import { PropTypes } from 'prop-types'; -import TitleInfo from '../TitelInfo/TitleInfo'; -import ProfileDetailNavBar from './ProfileDetailNavBar'; -import classes from './MainInfoSection.module.css'; - -function MainInfoSection({ isAuthorized, data, containsNotRequiredData }) { - return ( -
- - {containsNotRequiredData ? : null} -
- ); -} - -export default MainInfoSection; - -MainInfoSection.propTypes = { - isAuthorized: PropTypes.bool, - data: PropTypes.shape({ - id: PropTypes.number.isRequired, - name: PropTypes.string.isRequired, - address: PropTypes.string, - region_display: PropTypes.string, - categories: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.number, - name: PropTypes.string, - }) - ), - activities: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.number, - name: PropTypes.string, - }) - ), - common_info: PropTypes.string, - is_saved: PropTypes.bool.isRequired, - is_registered: PropTypes.bool.isRequired, - is_startup: PropTypes.bool.isRequired, - }).isRequired, - containsNotRequiredData: PropTypes.bool.isRequired, - }; diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.module.css deleted file mode 100644 index 2e4524823..000000000 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/MainInfoSection.module.css +++ /dev/null @@ -1,5 +0,0 @@ -.basic-info-content { - display: flex; - flex-direction: column; - align-items: flex-start; -} diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx b/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx deleted file mode 100644 index 36503f430..000000000 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.jsx +++ /dev/null @@ -1,103 +0,0 @@ -import { useState, useEffect, useContext } from 'react'; -import { HashLink } from 'react-router-hash-link'; -import { useLocation, useNavigate } from 'react-router-dom'; - -import { PropTypes } from 'prop-types'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; - -import classes from './ProfileDetailNavBar.module.css'; - - -const MENU_LINKS = { - registeredAndStartup: { - 'about-company': 'Про компанію', - 'startup': 'Стартап', - 'products-services': 'Товари / послуги', - 'logistics': 'Логістика товарів / послуг', - 'cooperation': 'Формат співпраці', - }, - registered: { - 'about-company': 'Про компанію', - 'products-services': 'Товари / послуги', - 'logistics': 'Логістика товарів / послуг', - 'cooperation': 'Формат співпраці', - }, - startup: { - 'about-company': 'Про компанію', - 'startup': 'Стартап', - } -}; - -function ProfileDetailNavBar({ data }) { - const { hash } = useLocation (); - const navigate = useNavigate (); - const { activeLinks } = useContext(ActiveLinksContext); - const [activeLink, setActiveLink] = useState(''); - - const companyType = () => { - if (data.is_registered && data.is_startup) { - return MENU_LINKS.registeredAndStartup; - } else if (data.is_registered) { - return MENU_LINKS.registered; - } else if (data.is_startup) { - return MENU_LINKS.startup; - } - }; - - useEffect(() => { - if (hash) { - setActiveLink(hash.substring(1)); - } else { - setActiveLink( - data.is_registered && activeLinks.includes('about-company') ? 'about-company' : - data.is_startup && activeLinks.includes('startup') ? 'startup' : '' - ); - } - }, [hash, data.is_registered, data.is_startup, activeLinks]); - - useEffect(() => { - navigate(hash.pathname, {replace: true}); - }, [navigate, hash.pathname]); - - return ( -
-
- {Object.entries(companyType()).map( - ([link, label]) => - activeLinks.includes(link) && ( -
-
- - {label} - -
-
-
- ) - )} -
-
-
- ); -} - -export default ProfileDetailNavBar; - -ProfileDetailNavBar.propTypes = { - data: PropTypes.shape({ - is_registered: PropTypes.bool.isRequired, - is_startup: PropTypes.bool.isRequired, - }).isRequired, -}; diff --git a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.module.css b/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.module.css deleted file mode 100644 index e568f729b..000000000 --- a/FrontEnd/src/pages/ProfileDetail/MainInfo/ProfileDetailNavBar.module.css +++ /dev/null @@ -1,63 +0,0 @@ -.navbar-menu { - display: flex; - align-items: flex-start; -} - -.navbar-menu__block { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.navbar-menu__item { - display: flex; - padding: 8px 12px; - align-items: flex-start; - gap: 10px; -} - -.navbar-menu__item a { - text-decoration: none; - color: inherit; -} - -.navbar-menu__item a.inactive-link { - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 400; - line-height: 20px; - letter-spacing: -0.16px; -} - -.navbar-menu__item a.active-link { - text-decoration: none; - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - letter-spacing: -0.16px; -} - -.devider { - width: 795px; - height: 1px; - background: var(--main-grey-20, #DEE1E8); -} - -.inactive-devider { - height: 1px; - align-self: stretch; - background: var(--main-grey-20, #DEE1E8); -} - -.active-devider { - height: 1px; - align-self: stretch; - background: var(--primary-green-80, #1F9A7C); -} diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx index 007b2f4da..6e230c59f 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx @@ -6,9 +6,11 @@ import { PropTypes } from 'prop-types'; import Loader from '../../components/Loader/Loader'; import ErrorPage404 from '../../pages/ErrorPages/ErrorPage404'; -import MainInfoSection from './MainInfo/MainInfoSection'; -import DetailedInfoSection from './DetailedInfo/DetailedInfoSection'; + import BannerImage from './ProfileDetailComponents/BannerImage'; +import TitleInfo from './TitelInfo/TitleInfo'; +import DetailedInfoSection from './DetailedInfo/DetailedInfoSection'; + import { ActiveLinksContext } from '../../context/ActiveLinksContext'; import PendingStatus from '../../components/MiniComponents/PendingModerationIcon/PendingStatus'; @@ -55,27 +57,23 @@ function ProfileDetailPage({ isAuthorized }) {
-
- -
- -
-

Про Компанію

- +
+
+ + )}
); - } export default ProfileDetailPage; diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css index 69789bd37..528e0c9ea 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css @@ -7,26 +7,6 @@ display: flex; } -.profile-detail__page { - display: flex; - flex-direction: column; -} - -.profile-detail__tags { - display: flex; - align-items: flex-start; - color: black; - font-feature-settings: 'calt' off; - text-decoration: none; - font-family: var(--font-main); - font-size: 34px; - font-style: normal; - font-weight: 700; - line-height: 40.8px; - letter-spacing: -0.34px; - white-space: nowrap; -} - .profile-detail__banner-tooltip { display: flex; position: absolute; From 4e41d07c8efb2dc71ea7336443844d95b79225a9 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 5 Nov 2024 15:22:12 +0200 Subject: [PATCH 010/117] format code --- .../DetailedInfo/DataContacts.jsx | 127 ---------------- .../DataContacts/DataContacts.jsx | 139 ++++++++++++++++++ .../DataContacts.module.css | 0 .../DataContactsPhoneEmail.jsx} | 4 +- .../DataContactsPhoneEmail.module.css} | 0 .../{ => DetailedInfoComponents}/Company.jsx | 4 +- .../Company.module.css | 2 - .../CompanyDescription.jsx | 0 .../CompanyDescription.module.css | 2 - .../Cooperation.jsx | 25 ++-- .../Cooperation.module.css | 11 -- .../Logistics.jsx | 5 +- .../Logistics.module.css | 12 -- .../ProductsServices.jsx | 5 +- .../ProductsServices.module.css | 12 -- .../{ => DetailedInfoComponents}/Startup.jsx | 5 +- .../Startup.module.css | 8 - .../DetailedInfo/DetailedInfoSection.jsx | 4 +- .../DetailedInfoSection.module.css | 13 +- .../ProfileDetailPage.module.css | 17 --- 20 files changed, 164 insertions(+), 231 deletions(-) delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx create mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DataContacts}/DataContacts.module.css (100%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{PhoneEmail.jsx => DataContacts/DataContactsPhoneEmail.jsx} (97%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{PhoneEmail.module.css => DataContacts/DataContactsPhoneEmail.module.css} (100%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Company.jsx (94%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Company.module.css (96%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/CompanyDescription.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/CompanyDescription.module.css (74%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Cooperation.jsx (62%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Cooperation.module.css (85%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Logistics.jsx (86%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Logistics.module.css (83%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/ProductsServices.jsx (91%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/ProductsServices.module.css (86%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Startup.jsx (91%) rename FrontEnd/src/pages/ProfileDetail/DetailedInfo/{ => DetailedInfoComponents}/Startup.module.css (90%) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx deleted file mode 100644 index ccc31be02..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.jsx +++ /dev/null @@ -1,127 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { PropTypes } from 'prop-types'; - -import PhoneEmail from './PhoneEmail'; - -import classes from './DataContacts.module.css'; - - -function DataContacts ({ data, isAuthorized }) { - - const companyData = { - 'ЄДРПОУ': data.edrpou, - 'РНОКПП': data.rnokpp, - 'Рік заснування': data.founded, - 'Розмір компанії': '', - 'Аудит': '' - }; - - const companyContacts = { - 'Сайт': '', - 'PhoneEmail': , - 'Поштова адреса': data.address, - 'Соціальні мережі': [ - { - name: 'facebook', - url: '', - svgPath: , - }, - { - name: 'instagram', - url: '', - svgPath: , - }, - ], - 'Співпрацюємо з': '' - }; - - const hasSocialLinks = companyContacts['Соціальні мережі'].filter(socialLink => socialLink.url !== '').length > 0; - - const renderedDataSections = Object.entries(companyData).map(([key, value]) => { - const className = key === ('ЄДРПОУ' || 'РНОКПП') ? `${classes['data-block__field']} ${classes['edrpou']}` : classes['data-block__field']; - if (value) { - return ( -
-

{key}

-

- {value} -

-
- ); - } - return null; - }); - - const hasDataSections = renderedDataSections.some((section) => section !== null); - - const renderedContactSections = Object.entries(companyContacts).map(([key, value]) => { - if (value) { - if (key === 'Соціальні мережі') { - return ( - hasSocialLinks ? - (
-

{key}

- {value.map((contact, index) => { - if (contact.url) { - return ( - - {contact.svgPath} - - ); - } - return null; - })} -
) : null - ); - } else if (key === 'PhoneEmail') { - return ( - - {value } - ); - } else { - const className = key === 'Адрес(и)' ? classes['data-block__field--address'] : classes['data-block__field']; - const valueClassName = key === 'Сайт' ? classes['data-block__field--site'] : classes['data-block__field--value']; - return ( -
-

{key}

-

{value}

-
- ); - } - } - return null; - }); - - const hasContactSections = renderedContactSections.some((section) => section !== null); - - return ( -
-
- {hasDataSections ? ( -
- {renderedDataSections} -
- ) : null} - {hasContactSections ? ( -
- {renderedContactSections} -
- ) : null} -
-
- ); -} - -export default DataContacts; - -DataContacts.propTypes = { - isAuthorized: PropTypes.bool, - data: PropTypes.shape({ - id: PropTypes.number.isRequired, - person: PropTypes.number, - edrpou: PropTypes.string, - founded: PropTypes.number, - address: PropTypes.string, - }), -}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx new file mode 100644 index 000000000..b9431433a --- /dev/null +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx @@ -0,0 +1,139 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { PropTypes } from 'prop-types'; + +import PhoneEmail from './DataContactsPhoneEmail'; + +import classes from './DataContacts.module.css'; + + +function DataContacts ({ data, isAuthorized }) { + + const companyData = { + 'ЄДРПОУ': data.edrpou, + 'РНОКПП': data.rnokpp, + 'Рік заснування': data.founded, + 'Розмір компанії': '', + 'Аудит': '' + }; + + const companyContacts = { + 'Сайт': '', + 'PhoneEmail': < + PhoneEmail + isAuthorized={isAuthorized} + profileId={data.id} + personId={data.person} / + >, + 'Поштова адреса': data.address, + 'Соціальні мережі': [ + { + name: 'facebook', + url: '', + svgPath: , + }, + { + name: 'instagram', + url: '', + svgPath: , + }, + ], + 'Співпрацюємо з': '' + }; + + const hasSocialLinks = companyContacts['Соціальні мережі'].filter(socialLink => socialLink.url !== '').length > 0; + + const renderedDataSections = Object.entries(companyData).map(([key, value]) => { + const className = key === ('ЄДРПОУ' || 'РНОКПП') ? + `${classes['data-block__field']} ${classes['edrpou']}` : + classes['data-block__field']; + if (value) { + return ( +
+

{key}

+

+ {value} +

+
+ ); + } + return null; + }); + + const hasDataSections = renderedDataSections.some((section) => section !== null); + + const renderedContactSections = Object.entries(companyContacts).map(([key, value]) => { + if (value) { + if (key === 'Соціальні мережі') { + return ( + hasSocialLinks ? + (
+

{key}

+ {value.map((contact, index) => { + if (contact.url) { + return ( + + {contact.svgPath} + + ); + } + return null; + })} +
) : null + ); + } else if (key === 'PhoneEmail') { + return ( + + {value} + ); + } else { + const className = key === 'Адрес(и)' ? + classes['data-block__field--address'] : + classes['data-block__field']; + const valueClassName = key === 'Сайт' ? + classes['data-block__field--site'] : + classes['data-block__field--value']; + return ( +
+

{key}

+

{value}

+
+ ); + } + } + return null; + }); + + const hasContactSections = renderedContactSections.some((section) => section !== null); + + return ( +
+
+ {hasDataSections ? ( +
+ {renderedDataSections} +
+ ) : null} + {hasContactSections ? ( +
+ {renderedContactSections} +
+ ) : null} +
+
+ ); +} + +export default DataContacts; + +DataContacts.propTypes = { + isAuthorized: PropTypes.bool, + data: PropTypes.shape({ + id: PropTypes.number.isRequired, + person: PropTypes.number, + edrpou: PropTypes.string, + rnokpp: PropTypes.string, + founded: PropTypes.number, + address: PropTypes.string, + }), +}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx similarity index 97% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx index b8107db4d..5d8888cef 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx @@ -6,9 +6,9 @@ import useSWR from 'swr'; import { PropTypes } from 'prop-types'; import { CheckOutlined, CopyOutlined } from '@ant-design/icons'; import { Tooltip } from 'antd'; -import { useAuth } from '../../../hooks'; +import { useAuth } from '../../../../hooks'; -import classes from './PhoneEmail.module.css'; +import classes from './DataContactsPhoneEmail'; const LENGTH_EMAIL = 14; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/PhoneEmail.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx similarity index 94% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx index 23135ff0f..4bf0cc1de 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx @@ -1,9 +1,9 @@ import { PropTypes } from 'prop-types'; import { useEffect, useContext } from 'react'; -import ReadMore from '../ProfileDetailComponents/ReadMore'; +import ReadMore from '../../ProfileDetailComponents/ReadMore'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; +import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; import classes from './Company.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css similarity index 96% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css index b6e62ecd6..30b9c7291 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Company.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css @@ -2,7 +2,6 @@ display: flex; flex-direction: column; align-items: flex-start; - max-width: 343px; } .about-company__content--advantage, @@ -10,7 +9,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; } .about-company__content--advantage--text, diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css similarity index 74% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css index e06f6ead2..211949319 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/CompanyDescription.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css @@ -2,6 +2,4 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 16px; - min-width: 800px; } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx similarity index 62% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx index 1fb54ceb7..0720b4394 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx @@ -1,22 +1,22 @@ import { useEffect, useContext } from 'react'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; +import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; -import ReadMore from '../ProfileDetailComponents/ReadMore'; +import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './Cooperation.module.css'; -function Cooperation () { +function Cooperation() { const { setActiveLinks } = useContext(ActiveLinksContext); const cooperationData = ''; useEffect(() => { if (cooperationData) { setActiveLinks(prevData => [ - ...prevData, - 'cooperation']); - } - }, [cooperationData, setActiveLinks]); + ...prevData, + 'cooperation']); + } + }, [cooperationData, setActiveLinks]); // TODO: implement logic for getting data from db when it's added on server side @@ -28,14 +28,13 @@ function Cooperation () {

Формат співпраці

-
-
- - {cooperationData} - -
+
+ + {cooperationData} + +
diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css similarity index 85% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css index da8f2f351..d50251d31 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Cooperation.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css @@ -2,7 +2,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 24px; border-radius: 8px; } @@ -11,7 +10,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; } .cooperation__title { @@ -25,13 +23,11 @@ display: flex; padding: 8px 12px; align-items: flex-start; - gap: 10px; align-self: stretch; border-radius: 4px; } .cooperation__title--text { - width: 742px; color: var(--main-grey-90, #25292C); font-family: var(--font-main); font-size: 16px; @@ -41,18 +37,11 @@ text-transform: uppercase; } -.cooperation__title--divider { - height: 1px; - width: 795px; - background: var(--main-grey-20, #DEE1E8); -} - .cooperation__content--description { display: flex; padding: 12px; align-items: flex-start; gap: 10px; - width: 776px; color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx similarity index 86% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx index 9950e8a9e..7073929fd 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx @@ -1,7 +1,7 @@ import { useEffect, useContext } from 'react'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; +import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; -import ReadMore from '../ProfileDetailComponents/ReadMore'; +import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './Logistics.module.css'; @@ -28,7 +28,6 @@ function Logistics () {

Логістика товарів / послуг

-
diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css similarity index 83% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css index febce9021..558949c62 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Logistics.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css @@ -2,7 +2,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 24px; border-radius: 8px; } @@ -11,7 +10,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; } .logistics__title { @@ -25,13 +23,11 @@ display: flex; padding: 8px 12px; align-items: flex-start; - gap: 10px; align-self: stretch; border-radius: 4px; } .logistics__title--text { - width: 742px; color: var(--main-grey-90, #25292C); font-family: var(--font-main); font-size: 16px; @@ -41,18 +37,10 @@ text-transform: uppercase; } -.logistics__title--divider { - height: 1px; - width: 795px; - background: var(--main-grey-20, #DEE1E8); -} - .logistics__content--description { display: flex; padding: 12px; align-items: flex-start; - gap: 10px; - width: 776px; color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx similarity index 91% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx index 16af88b54..c9e6667a5 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx @@ -1,8 +1,8 @@ import { useMemo, useEffect, useContext} from 'react'; import { PropTypes } from 'prop-types'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; +import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; -import ReadMore from '../ProfileDetailComponents/ReadMore'; +import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './ProductsServices.module.css'; @@ -31,7 +31,6 @@ function ProductsServices ({ data }) {

Товари / послуги

-
{profile.products && diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css similarity index 86% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css index 348edee1f..df302dfde 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/ProductsServices.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css @@ -2,7 +2,6 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; border-radius: 8px; } @@ -17,13 +16,11 @@ display: flex; padding: 8px 12px; align-items: flex-start; - gap: 10px; align-self: stretch; border-radius: 4px; } .products-services__title--text { - width: 742px; color: var(--main-grey-90, #25292C); font-family: var(--font-main); font-size: 16px; @@ -33,25 +30,17 @@ text-transform: uppercase; } -.products-services__title--divider { - height: 1px; - width: 795px; - background: var(--main-grey-20, #DEE1E8); -} - .products-services__content { display: flex; padding: 12px; flex-direction: column; align-items: flex-start; - gap: 24px; } .products-services__content--block { display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; } .products-services__content--title { @@ -66,7 +55,6 @@ } .products-services__content--description { - width: 776px; color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx similarity index 91% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx index 292d4fdbf..301a489c9 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx @@ -1,9 +1,9 @@ import { useMemo, useEffect, useContext } from 'react'; import { PropTypes } from 'prop-types'; -import { ActiveLinksContext } from '../../../context/ActiveLinksContext'; +import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; -import ReadMore from '../ProfileDetailComponents/ReadMore'; +import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './Startup.module.css'; @@ -59,7 +59,6 @@ function Startup ({ data }) {

Стартап

-
{renderedSections} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css similarity index 90% rename from FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.module.css rename to FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css index cbd4bac14..f8dfea2b7 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/Startup.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css @@ -31,7 +31,6 @@ } .startup__title--text { - width: 742px; color: var(--main-grey-90, #25292C); font-family: var(--font-main); font-size: 16px; @@ -41,12 +40,6 @@ text-transform: uppercase; } -.startup__title--divider { - width: 795px; - height: 1px; - background: var(--main-grey-20, #DEE1E8); -} - .startup__content { display: flex; padding: 12px; @@ -67,7 +60,6 @@ } .startup__content--description { - width: 776px; color: var(--main-grey-90, #25292C); font-feature-settings: 'calt' off; font-family: var(--font-main); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 2197f5286..23faabf98 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -1,7 +1,7 @@ import { PropTypes } from 'prop-types'; -import CompanyDescription from './CompanyDescription'; -import DataContacts from './DataContacts'; +import CompanyDescription from './DetailedInfoComponents/CompanyDescription'; +import DataContacts from './DataContacts/DataContacts'; import EmptyData from '../ProfileDetailComponents/EmptyData'; import classes from './DetailedInfoSection.module.css'; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index 4663f9ec6..ccab140e1 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -1,6 +1,7 @@ .detail-info-page { display: flex; flex-direction: column; + width: 343px; } .profile-detail__tags { @@ -17,15 +18,3 @@ letter-spacing: -0.34px; white-space: nowrap; } -/* -@media only screen and (min-width: 768px) { - .detail-info-page { - flex-direction: column; - } -} - -@media only screen and (min-width: 1512px) { - .detail-info-page { - flex-direction: row-reverse; - } -} */ diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css index 528e0c9ea..abaf9e291 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.module.css @@ -20,20 +20,3 @@ padding-top: 5px; padding-left: 3px; } - -@media only screen and (min-width: 768px) { - .profile-detail__page { - flex-direction: column; - } - -} - -@media only screen and (min-width: 1512px) { - .profile-detail__page { - flex-direction: column; - } - - .profile-detail__page { - align-items: center; - } -} \ No newline at end of file From 51e4fd9d77b02fda0454f98ac98c073ed4cdaf03 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 5 Nov 2024 18:29:43 +0200 Subject: [PATCH 011/117] company title styles v1.0.0 --- .../pages/ProfileDetail/ProfileDetailPage.jsx | 6 +- .../ProfileDetail/TitelInfo/TitleInfo.jsx | 58 ++++---- .../TitelInfo/TitleInfo.module.css | 140 ++++++++++++------ 3 files changed, 132 insertions(+), 72 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx index 6e230c59f..f8ba5133f 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx @@ -48,7 +48,11 @@ function ProfileDetailPage({ isAuthorized }) { return (error && error.status !== 401) ? ( ) : ( -
+
{isLoading ? ( ) : ( diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx index 778a589f4..88a68ddf8 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx @@ -38,7 +38,7 @@ function TitleInfo({ isAuthorized, data }) { const handleSave = async () => { setIsSaved(true); try { - await axios.post(`${process.env.REACT_APP_BASE_API_URL}/api/saved-list/`,{ company_pk: profile.id }); + await axios.post(`${process.env.REACT_APP_BASE_API_URL}/api/saved-list/`, { company_pk: profile.id }); } catch (error) { console.error(error); } @@ -59,36 +59,38 @@ function TitleInfo({ isAuthorized, data }) { return (
-
- {!profile.logo?.path ? ( - - ) : ( - Company logo - )} -
-
-

- {profile.activities} -

-
-

- {profile.name} -

-
- +
+
+ {!profile.logo?.path ? ( + + ) : ( + Company logo + )} +
+
+

+ {profile.activities} +

+
+

+ {profile.name} +

+

+ {profile.regions} +

+
+ +
-

- {profile.regions} -

{isAuthorized ? ( - <> +
{!ownProfile && (
) : null}
); diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index c27a2d275..290ba7ffe 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -1,21 +1,35 @@ .title-block { display: flex; - width: 1280px; - padding: 16px 12px 8px 12px; + background: #F9F5EC; + flex-direction: column; + width: 100vw; + max-height: 410px; + justify-content: center; +} + +.title-block__content { + display: flex; + padding: 24px 16px; align-items: flex-start; - gap: 12px; + flex-direction: column; + gap: 24px; +} + +.title-block__logo-block { + width: 64px; + height: 64px; + display: flex; + justify-content: center; + align-items: center; } -.title-block__logo { - width: 40px; - height: 40px; - flex-shrink: 0; +.title-block__logo-img { + width: 64px; + height: 64px; display: flex; justify-content: center; align-items: center; - border-radius: 32px; - box-shadow: 0px 0px 2px 0px rgba(65, 64, 69, 0.2); - object-fit: cover; + object-fit: scale-down; } @@ -23,83 +37,81 @@ display: flex; flex-direction: column; align-items: flex-start; - flex: 1 0 0; } .title-block__activity { - color: var(--main-grey-90, #25292c); + color: #707070; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; font-style: normal; - font-weight: 400; - line-height: 22px; + font-weight: 700; + line-height: 16.8px; letter-spacing: -0.14px; } .title-block__company { display: flex; align-items: flex-start; - max-width: 72%; - gap: 16px; + flex-direction: column; } .title-block__company_name { - display: flex; - align-items: flex-start; - min-width: fit-content; - gap: 4px; - color: var(--main-grey-90, #25292c); + color: #232424; font-family: var(--font-main); - font-size: 20px; + font-size: 24px; font-style: normal; font-weight: 700; - line-height: 120%; - text-transform: uppercase; + line-height: 28.8px; + letter-spacing: -0.24px; } .title-block__company_category { display: flex; - flex-wrap: wrap; align-items: flex-start; - gap: 8px; } .title-block__company_region { - color: var(--main-black-90, #292e32); + color: #000000; font-feature-settings: 'calt' off; font-family: var(--font-main); - font-size: 10px; + font-size: 14px; font-style: normal; font-weight: 400; - line-height: 16px; - max-width: 72%; + line-height: 24px; + letter-spacing: -0.14px; +} + +.title-block__link { + height: 22px; +} + +.added_to_saved__button { + background: #232424; +} + +.title-block__button-block { + display: flex; + padding: 24px 16px; + justify-content: flex-start; } .title-block__button { display: flex; - height: 32px; - padding: 5px 15px; + height: 46px; + width: 345px; + padding: 7px 16px; justify-content: center; align-items: center; gap: 4px; border-radius: 4px; - border: 1px solid var(--primary-green-80, #1f9a7c); - background: var(--neutral-1, #fff); + border: 1px solid #232424; cursor: pointer; } -.title-block__link { - height: 22px; -} - -.added_to_saved__button { - background: var(--primary-green-80, #1f9a7c); -} - .title-block__button--text { display: flex; - color: var(--primary-green-80, #1f9a7c); + color: #232424; text-align: center; font-feature-settings: 'calt' off; font-family: var(--font-main); @@ -113,3 +125,45 @@ .added_to_saved__button--text { color: var(--main-white, #fff); } + + @media only screen and (min-width: 768px) { + .title-block__content { + max-width: 720px; + padding: 40px 24px; + align-items: flex-start; + flex-direction: row; + } + + .title-block__button-block { + padding-left: 104px; + } + + .title-block__button { + width: 353px; + } + + .title-block__company { + align-items: flex-start; + flex-direction: column; + } +} + +@media only screen and (min-width: 1512px) { + .title-block { + flex-direction: row; + max-height: 410px; + } + + .title-block__content { + max-width: 1304px; + padding: 40px 104px; + } + + .title-block__button-block { + padding-left: 294px; + } + + .title-block__button { + width: 221px; + } +} From f47897c4ca141a4102c7f6fd9a9846336c1557e0 Mon Sep 17 00:00:00 2001 From: Andriy Danchyshyn Date: Wed, 6 Nov 2024 10:57:30 +0200 Subject: [PATCH 012/117] added pages to query params --- .../AdminPage/UserProfilesTable/UserTable.jsx | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx index 7c97f2622..376a36a10 100644 --- a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx +++ b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx @@ -1,4 +1,5 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; import css from './UserTable.module.css'; import axios from 'axios'; import useSWR from 'swr'; @@ -7,14 +8,27 @@ import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; const LENGTH_EMAIL = 14; -const DEFAULT_PAGE_SIZE = 20; +const DEFAULT_PAGE_SIZE = 3; function UserTable() { - const [currentPage, setCurrentPage] = useState(1); - const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE); + const location = useLocation(); + const navigate = useNavigate(); + const queryParams = new URLSearchParams(location.search); + const pageNumber = Number(queryParams.get('page')) || 1; + const initialPageSize = Number(queryParams.get('page_size')) || DEFAULT_PAGE_SIZE; + const [currentPage, setCurrentPage] = useState(pageNumber); + const [pageSize, setPageSize] = useState(initialPageSize); const [sortInfo, setSortInfo] = useState({ field: null, order: null }); const [statusFilters, setStatusFilters] = useState([]); + useEffect(() => { + const queryParams = new URLSearchParams(location.search); + const updatedPageNumber = Number(queryParams.get('page')) || 1; + const updatedPageSize = Number(queryParams.get('page_size')) || DEFAULT_PAGE_SIZE; + setCurrentPage(updatedPageNumber); + setPageSize(updatedPageSize); + }, [location.search]); + const ordering = sortInfo.field ? `&ordering=${sortInfo.order === 'ascend' ? sortInfo.field : '-' + sortInfo.field}` : ''; const filtering = statusFilters ? statusFilters.map((filter) => `&${filter}=true`).join('') : ''; const url = `${process.env.REACT_APP_BASE_API_URL}/api/admin/users?page=${currentPage}&page_size=${pageSize}${ordering}${filtering}`; @@ -28,9 +42,16 @@ function UserTable() { const users = data ? data.results : []; const totalItems = data ? data.total_items : 0; + const updateQueryParams = (newPage, newPageSize) => { + queryParams.set('page', newPage); + queryParams.set('page_size', newPageSize); + navigate(`?${queryParams.toString()}`); + }; + const handlePageChange = (page, size) => { setCurrentPage(page); setPageSize(size); + updateQueryParams(page, size); }; const handleTableChange = (pagination, filters, sorter) => { @@ -56,6 +77,7 @@ function UserTable() { setStatusFilters(filters.status); setCurrentPage(1); + updateQueryParams(1, pageSize); }; const getSortIcon = (sortOrder) => { From 488f4c1d48ac2dc6f0796177adfcdfc510703785 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 6 Nov 2024 11:09:11 +0200 Subject: [PATCH 013/117] fixed the ccs styles --- .../LandingPage/Banner/Banner.module.css | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index 6f7b9437a..7ebb80ef6 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -14,7 +14,6 @@ line-height: 57.6px; letter-spacing: 0.01em; text-align: left; - } .main-baner-text__logo{ @@ -33,8 +32,8 @@ margin-top: 30px; background: #000000; box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.04); - } + .main-banner-link{ font-family: Geologica; font-size:15px; @@ -59,7 +58,7 @@ align-items: center; padding-top: 5vh; font-family: Geologica; - font-size: 30px; + font-size: 34px; font-weight: 900; line-height: 57.6px; letter-spacing: 0.01em; @@ -69,9 +68,12 @@ display: flex; align-items: center; justify-content: center; - max-width: 768px; + max-width: 714px; text-align: center; - + font-size: 30px; + } + .main-banner__img{ + max-width: 714px; } } @@ -88,29 +90,29 @@ display: flex; flex-direction: column; align-items: center; + max-width: 343px; padding-top: 5vh; font-family: Geologica; - font-size: 30px; + font-size: 25px; font-family: Geologica; font-weight: 700; line-height: 48px; letter-spacing: 0.01em; text-align: center; - } .main-baner-text__explanation{ display: flex; align-items: center; justify-content: center; text-align: center; - font-size: 26px; + max-width: 343px; + font-size: 20px; font-family: Geologica; font-weight: 700; line-height: 28.8px; letter-spacing: 0.01em; - } .main-banner__img{ max-width: 344px; } -} \ No newline at end of file +} From 3caa0cb17005b337495e08f1be4fea58bad03cc9 Mon Sep 17 00:00:00 2001 From: Andriy Danchyshyn Date: Wed, 6 Nov 2024 11:14:07 +0200 Subject: [PATCH 014/117] removed page_size from query params --- .../AdminPage/UserProfilesTable/UserTable.jsx | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx index 376a36a10..09f47589c 100644 --- a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx +++ b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx @@ -8,25 +8,22 @@ import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; const LENGTH_EMAIL = 14; -const DEFAULT_PAGE_SIZE = 3; +const DEFAULT_PAGE_SIZE = 20; function UserTable() { const location = useLocation(); const navigate = useNavigate(); const queryParams = new URLSearchParams(location.search); const pageNumber = Number(queryParams.get('page')) || 1; - const initialPageSize = Number(queryParams.get('page_size')) || DEFAULT_PAGE_SIZE; const [currentPage, setCurrentPage] = useState(pageNumber); - const [pageSize, setPageSize] = useState(initialPageSize); + const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE); const [sortInfo, setSortInfo] = useState({ field: null, order: null }); const [statusFilters, setStatusFilters] = useState([]); useEffect(() => { const queryParams = new URLSearchParams(location.search); const updatedPageNumber = Number(queryParams.get('page')) || 1; - const updatedPageSize = Number(queryParams.get('page_size')) || DEFAULT_PAGE_SIZE; setCurrentPage(updatedPageNumber); - setPageSize(updatedPageSize); }, [location.search]); const ordering = sortInfo.field ? `&ordering=${sortInfo.order === 'ascend' ? sortInfo.field : '-' + sortInfo.field}` : ''; @@ -42,16 +39,15 @@ function UserTable() { const users = data ? data.results : []; const totalItems = data ? data.total_items : 0; - const updateQueryParams = (newPage, newPageSize) => { + const updateQueryParams = (newPage) => { queryParams.set('page', newPage); - queryParams.set('page_size', newPageSize); navigate(`?${queryParams.toString()}`); }; const handlePageChange = (page, size) => { setCurrentPage(page); setPageSize(size); - updateQueryParams(page, size); + updateQueryParams(page); }; const handleTableChange = (pagination, filters, sorter) => { @@ -77,7 +73,7 @@ function UserTable() { setStatusFilters(filters.status); setCurrentPage(1); - updateQueryParams(1, pageSize); + updateQueryParams(1); }; const getSortIcon = (sortOrder) => { From 519d012e1d2854ca9f9cb6cd40b2f04cfb6eb55f Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 6 Nov 2024 13:23:04 +0200 Subject: [PATCH 015/117] fixed the css style for img --- .../LandingPage/Banner/Banner.module.css | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index 7ebb80ef6..1767b27e0 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -1,23 +1,24 @@ .main-container{ display:flex; - justify-content: space-around; flex-direction:row; background-color: #B4D27A; padding: 32px 104px 32px 104px; + width: 100vw; } .main-baner-text{ padding-top: 15vh; font-family: Geologica; - font-size: 30px; font-weight: 900; line-height: 57.6px; letter-spacing: 0.01em; text-align: left; + margin-right: 63px; } .main-baner-text__logo{ margin-bottom: 10px; + font-size: 48px; } .main-banner-link__container{ @@ -31,7 +32,12 @@ padding: 13px 16px 13px 16px; margin-top: 30px; background: #000000; - box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.04); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.04); +} + +.main-baner-text__explanation{ + font-size: 40px; + max-width: 557px; } .main-banner-link{ @@ -43,14 +49,19 @@ color: #FFFFFF; } +.main-banner__img{ + max-width: 100%; +} + @media (max-width: 768px) { .main-container{ display:flex; justify-content: center; flex-direction:column-reverse; + justify-content: space-between; background-color: #B4D27A; padding: 32px; - max-width: 768px; + max-width: 100vw; } .main-baner-text{ display: flex; @@ -63,6 +74,7 @@ line-height: 57.6px; letter-spacing: 0.01em; text-align: left; + margin-right: 0; } .main-baner-text__explanation{ display: flex; @@ -73,7 +85,7 @@ font-size: 30px; } .main-banner__img{ - max-width: 714px; + max-width: 100%; } } From 8de205bde4e28679b97009f94385730f7a493070 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 6 Nov 2024 13:27:45 +0200 Subject: [PATCH 016/117] removed unnecessary imports --- FrontEnd/src/pages/LandingPage/Banner/Banner.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx index 3c421cbdb..023eab836 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx @@ -1,6 +1,5 @@ import styles from './Banner.module.css'; import { Link } from 'react-router-dom'; -//import { PropTypes } from 'prop-types'; const MainBanner = () => { return ( From ce45a22d950865fa20c175db9dc2d0b066419cee Mon Sep 17 00:00:00 2001 From: romanmyko Date: Wed, 6 Nov 2024 17:27:34 +0200 Subject: [PATCH 017/117] format code and styles TitleInfo --- .../pages/AdminPage/DetailView/Contacts.jsx | 2 +- .../DetailedInfo/DetailedInfoSection.jsx | 10 ++- .../DetailedInfoSection.module.css | 32 ++++++++ .../ProfileDetail/TitelInfo/TitleInfo.jsx | 74 ++++++++++--------- .../TitelInfo/TitleInfo.module.css | 21 +++++- 5 files changed, 95 insertions(+), 44 deletions(-) diff --git a/FrontEnd/src/pages/AdminPage/DetailView/Contacts.jsx b/FrontEnd/src/pages/AdminPage/DetailView/Contacts.jsx index aca3aade5..1325637e7 100644 --- a/FrontEnd/src/pages/AdminPage/DetailView/Contacts.jsx +++ b/FrontEnd/src/pages/AdminPage/DetailView/Contacts.jsx @@ -29,7 +29,7 @@ const Contacts = () => { return (
-

Контактна інформація

+

Контактна інформація

{contacts ? (

Email: {contacts.email}

diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 23faabf98..f3b521c2b 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -9,10 +9,12 @@ import classes from './DetailedInfoSection.module.css'; function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) { return ( -
-

Про Компанію

- - {containsNotRequiredData ? : } +
+
+

Про Компанію

+ + {containsNotRequiredData ? : } +
); } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index ccab140e1..800e578e2 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -1,3 +1,9 @@ +.detail-info-page_block { + display: flex; + width: 100vw; + justify-content: center; +} + .detail-info-page { display: flex; flex-direction: column; @@ -18,3 +24,29 @@ letter-spacing: -0.34px; white-space: nowrap; } + + + +@media only screen and (min-width: 768px) { + .detail-info-page { + display: flex; + flex-direction: column; + width: 720px; + } + +} + +@media only screen and (min-width: 1512px) { + .detail-info-page { + display: flex; + flex-direction: row-reverse; + width: 1304px; + } + + .profile-detail__tags { + display: none; + } + + +} + diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx index 88a68ddf8..846abf879 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx @@ -60,6 +60,7 @@ function TitleInfo({ isAuthorized, data }) { return (
+
{!profile.logo?.path ? ( @@ -88,44 +89,45 @@ function TitleInfo({ isAuthorized, data }) {
-
- {isAuthorized ? ( -
- ) : null} + + {!isSaved ? 'Додати в збережені' : 'Додано в збережені'} + + + + )} + {ownProfile && ( + + + Редагувати профіль + + + )} +
+ ) : null} +
); } diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index 290ba7ffe..0b2c70b8a 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -1,20 +1,22 @@ .title-block { display: flex; background: #F9F5EC; - flex-direction: column; width: 100vw; - max-height: 410px; justify-content: center; } .title-block__content { display: flex; padding: 24px 16px; + max-width: 343px; align-items: flex-start; flex-direction: column; gap: 24px; } - +.title-block__content-info { + display: flex; + flex-direction: column; +} .title-block__logo-block { width: 64px; height: 64px; @@ -131,7 +133,13 @@ max-width: 720px; padding: 40px 24px; align-items: flex-start; + flex-direction: column; + } + + .title-block__content-info { + display: flex; flex-direction: row; + gap: 24px; } .title-block__button-block { @@ -157,6 +165,13 @@ .title-block__content { max-width: 1304px; padding: 40px 104px; + flex-direction: row; + } + + .title-block__content-info { + display: flex; + flex-direction: row; + gap: 24px; } .title-block__button-block { From 2150f816eaf826008ad0a34f14eae89852ad0ebc Mon Sep 17 00:00:00 2001 From: romanmyko Date: Wed, 6 Nov 2024 19:30:16 +0200 Subject: [PATCH 018/117] app develop --- .../CompanyDescription.jsx | 1 + .../CompanyDescription.module.css | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx index 42d04a6e3..198331f2f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx @@ -13,6 +13,7 @@ import classes from './CompanyDescription.module.css'; function CompanyDescription({ data }) { return (
+

Про Компанію

{data.is_startup && } {data.is_registered && } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css index 211949319..7f94c7e2f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css @@ -3,3 +3,29 @@ flex-direction: column; align-items: flex-start; } + +.company-description-block--title { + display: none; +} + +@media only screen and (min-width: 768px) { +/* TODO */ + +} + +@media only screen and (min-width: 1512px) { + .company-description-block--title { + display: flex; + align-items: flex-start; + color: black; + font-feature-settings: 'calt' off; + text-decoration: none; + font-family: var(--font-main); + font-size: 34px; + font-style: normal; + font-weight: 700; + line-height: 40.8px; + letter-spacing: -0.34px; + white-space: nowrap; + } + } From 341c81ddafed108fe83bd037a458749d7fb3972b Mon Sep 17 00:00:00 2001 From: romanmyko Date: Wed, 6 Nov 2024 22:44:37 +0200 Subject: [PATCH 019/117] folder and file tree structure --- .../DetailedInfoComponents/Company.jsx | 23 +------- .../CompanyDescription.jsx | 37 ------------- .../CompanyDescription.module.css | 31 ----------- .../DetailedInfoComponents/Cooperation.jsx | 45 ---------------- .../Cooperation.module.css | 53 ------------------- .../DetailedInfoComponents/Logistics.jsx | 45 ---------------- .../Logistics.module.css | 52 ------------------ .../DetailedInfo/DetailedInfoSection.jsx | 13 ++++- .../BannerImage.jsx | 0 .../BannerImage.module.css | 0 10 files changed, 12 insertions(+), 287 deletions(-) delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx delete mode 100644 FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css rename FrontEnd/src/pages/ProfileDetail/{ProfileDetailComponents => ProfileDetailBaner}/BannerImage.jsx (100%) rename FrontEnd/src/pages/ProfileDetail/{ProfileDetailComponents => ProfileDetailBaner}/BannerImage.module.css (100%) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx index 4bf0cc1de..601966f48 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx @@ -9,12 +9,7 @@ import classes from './Company.module.css'; function Company({ data }) { const { setActiveLinks } = useContext(ActiveLinksContext); - - // TODO: implement logic for getting data from db when it's added on server side - - const competitiveEdge = ''; - const slogan = ''; - const companyData = data.common_info || competitiveEdge || slogan; + const companyData = data.common_info ; useEffect(() => { if (companyData) { @@ -35,22 +30,6 @@ function Company({ data }) {
) : null} - {competitiveEdge ? ( -
-

Конкурентна перевага

-
- - {competitiveEdge} - -
-
- ) : null} - {slogan ? ( -
-

Візія, слоган

-

{slogan}

-
- ) : null}
) : null ); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx deleted file mode 100644 index 198331f2f..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import { PropTypes } from 'prop-types'; - -import Company from './Company'; -import Startup from './Startup'; -import ProductsServices from './ProductsServices'; -import Logistics from './Logistics'; -import Cooperation from './Cooperation'; - -import classes from './CompanyDescription.module.css'; - - - -function CompanyDescription({ data }) { - return ( -
-

Про Компанію

- - {data.is_startup && } - {data.is_registered && } - {data.is_registered && } - {data.is_registered && } -
- ); -} - -export default CompanyDescription; - -CompanyDescription.propTypes = { - data: PropTypes.shape({ - is_registered: PropTypes.bool.isRequired, - is_startup: PropTypes.bool.isRequired, - common_info: PropTypes.string, - startup_idea: PropTypes.string, - product_info: PropTypes.string, - service_info: PropTypes.string, - }), -}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css deleted file mode 100644 index 7f94c7e2f..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/CompanyDescription.module.css +++ /dev/null @@ -1,31 +0,0 @@ -.company-description-block { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.company-description-block--title { - display: none; -} - -@media only screen and (min-width: 768px) { -/* TODO */ - -} - -@media only screen and (min-width: 1512px) { - .company-description-block--title { - display: flex; - align-items: flex-start; - color: black; - font-feature-settings: 'calt' off; - text-decoration: none; - font-family: var(--font-main); - font-size: 34px; - font-style: normal; - font-weight: 700; - line-height: 40.8px; - letter-spacing: -0.34px; - white-space: nowrap; - } - } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx deleted file mode 100644 index 0720b4394..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import { useEffect, useContext } from 'react'; -import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; - -import ReadMore from '../../ProfileDetailComponents/ReadMore'; - -import classes from './Cooperation.module.css'; - - -function Cooperation() { - const { setActiveLinks } = useContext(ActiveLinksContext); - const cooperationData = ''; - - useEffect(() => { - if (cooperationData) { - setActiveLinks(prevData => [ - ...prevData, - 'cooperation']); - } - }, [cooperationData, setActiveLinks]); - - // TODO: implement logic for getting data from db when it's added on server side - - return ( - cooperationData ? ( -
-
-
-
-

Формат співпраці

-
-
-
-
- - {cooperationData} - -
-
-
-
- ) : null - ); -} - -export default Cooperation; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css deleted file mode 100644 index d50251d31..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Cooperation.module.css +++ /dev/null @@ -1,53 +0,0 @@ -.cooperation-wrapper { - display: flex; - flex-direction: column; - align-items: flex-start; - border-radius: 8px; -} - -.cooperation, -.cooperation__content--block { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.cooperation__title { - display: flex; - flex-direction: column; - align-items: flex-start; - align-self: stretch; -} - -.cooperation__title--block { - display: flex; - padding: 8px 12px; - align-items: flex-start; - align-self: stretch; - border-radius: 4px; -} - -.cooperation__title--text { - color: var(--main-grey-90, #25292C); - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 700; - line-height: 20px; - text-transform: uppercase; -} - -.cooperation__content--description { - display: flex; - padding: 12px; - align-items: flex-start; - gap: 10px; - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; -} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx deleted file mode 100644 index 7073929fd..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import { useEffect, useContext } from 'react'; -import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; - -import ReadMore from '../../ProfileDetailComponents/ReadMore'; - -import classes from './Logistics.module.css'; - - -function Logistics () { - const { setActiveLinks } = useContext(ActiveLinksContext); - const logisticsData = ''; - - useEffect(() => { - if (logisticsData) { - setActiveLinks(prevData => [ - ...prevData, - 'logistics']); - } - }, [logisticsData, setActiveLinks]); - - // TODO: implement logic for getting data from db when it's added on server side - - return ( - logisticsData ? ( -
-
-
-
-

Логістика товарів / послуг

-
-
-
-
- - {logisticsData} - -
-
-
-
- ) : null - ); -} - -export default Logistics; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css deleted file mode 100644 index 558949c62..000000000 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Logistics.module.css +++ /dev/null @@ -1,52 +0,0 @@ -.logistics-wrapper { - display: flex; - flex-direction: column; - align-items: flex-start; - border-radius: 8px; -} - -.logistics, -.logistics__content--block { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.logistics__title { - display: flex; - flex-direction: column; - align-items: flex-start; - align-self: stretch; -} - -.logistics__title--block { - display: flex; - padding: 8px 12px; - align-items: flex-start; - align-self: stretch; - border-radius: 4px; -} - -.logistics__title--text { - color: var(--main-grey-90, #25292C); - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 700; - line-height: 20px; - text-transform: uppercase; -} - -.logistics__content--description { - display: flex; - padding: 12px; - align-items: flex-start; - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; -} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index f3b521c2b..f4ed3bdbf 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -1,8 +1,10 @@ import { PropTypes } from 'prop-types'; -import CompanyDescription from './DetailedInfoComponents/CompanyDescription'; import DataContacts from './DataContacts/DataContacts'; import EmptyData from '../ProfileDetailComponents/EmptyData'; +import Company from './DetailedInfoComponents/Company'; +import Startup from './DetailedInfoComponents/Startup'; +import ProductsServices from './DetailedInfoComponents/ProductsServices'; import classes from './DetailedInfoSection.module.css'; @@ -13,7 +15,14 @@ function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) {

Про Компанію

- {containsNotRequiredData ? : } + {containsNotRequiredData ? +
+

Про Компанію

+ + {data.is_startup && } + {data.is_registered && } +
+ : }
); diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.jsx rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css similarity index 100% rename from FrontEnd/src/pages/ProfileDetail/ProfileDetailComponents/BannerImage.module.css rename to FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css From f2c39056692cbf5071d4e921b8c5f4e3e8361fd1 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 14:14:53 +0200 Subject: [PATCH 020/117] path to baner import --- FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx index f8ba5133f..c61c62055 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailPage.jsx @@ -7,7 +7,7 @@ import { PropTypes } from 'prop-types'; import Loader from '../../components/Loader/Loader'; import ErrorPage404 from '../../pages/ErrorPages/ErrorPage404'; -import BannerImage from './ProfileDetailComponents/BannerImage'; +import BannerImage from './ProfileDetailBaner/BannerImage'; import TitleInfo from './TitelInfo/TitleInfo'; import DetailedInfoSection from './DetailedInfo/DetailedInfoSection'; From 2f79ed426fc9e0659a510c96a9f5ba8bdf8f0354 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 15:23:57 +0200 Subject: [PATCH 021/117] title css v1.0.1 --- .../ProfileDetailBaner/BannerImage.jsx | 17 ++----- .../ProfileDetailBaner/baner.svg | 15 ++++++ .../TitelInfo/TitleInfo.module.css | 47 +++++++------------ 3 files changed, 37 insertions(+), 42 deletions(-) create mode 100644 FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx index 49c8022a9..45d0aefab 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx @@ -1,26 +1,19 @@ import { PropTypes } from 'prop-types'; import classNames from 'classnames'; import classes from './BannerImage.module.css'; +import baner from './baner.svg'; -function BannerImage ({ data }) { +function BannerImage({ data }) { const backgroundImage = { background: `url(${data.banner?.path}) lightgray 50% / cover no-repeat`, - }; + }; return (
-
+
{!data.banner?.path && - - - + Default baner }
diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg new file mode 100644 index 000000000..6df63ae00 --- /dev/null +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg @@ -0,0 +1,15 @@ + + + + diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index 0b2c70b8a..8cd570210 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -8,15 +8,18 @@ .title-block__content { display: flex; padding: 24px 16px; - max-width: 343px; + width: 345px; align-items: flex-start; flex-direction: column; + justify-content: space-between; gap: 24px; } + .title-block__content-info { display: flex; flex-direction: column; } + .title-block__logo-block { width: 64px; height: 64px; @@ -34,11 +37,12 @@ object-fit: scale-down; } - .title-block__about { display: flex; flex-direction: column; align-items: flex-start; + padding-top: 10px; + gap: 4px; } .title-block__activity { @@ -54,8 +58,9 @@ .title-block__company { display: flex; - align-items: flex-start; flex-direction: column; + justify-content: flex-start; + gap: 10px; } .title-block__company_name { @@ -94,8 +99,7 @@ .title-block__button-block { display: flex; - padding: 24px 16px; - justify-content: flex-start; + justify-content: center; } .title-block__button { @@ -128,57 +132,40 @@ color: var(--main-white, #fff); } - @media only screen and (min-width: 768px) { +@media only screen and (min-width: 768px) { .title-block__content { - max-width: 720px; + width: 765px; padding: 40px 24px; - align-items: flex-start; - flex-direction: column; } .title-block__content-info { - display: flex; flex-direction: row; gap: 24px; } .title-block__button-block { - padding-left: 104px; + padding-left: 84px; } .title-block__button { width: 353px; } - - .title-block__company { - align-items: flex-start; - flex-direction: column; - } } @media only screen and (min-width: 1512px) { .title-block { flex-direction: row; - max-height: 410px; + height: 220px; } .title-block__content { - max-width: 1304px; + width: 1304px; padding: 40px 104px; flex-direction: row; + justify-content: space-between; } - .title-block__content-info { - display: flex; - flex-direction: row; - gap: 24px; - } - - .title-block__button-block { - padding-left: 294px; - } - - .title-block__button { + .title-block__button { width: 221px; } -} +} From 29a6bd052fdd936a9f5ab33a0395371b285c0586 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 15:50:23 +0200 Subject: [PATCH 022/117] detail info css css 1.0.1 --- .../DetailedInfo/DetailedInfoSection.jsx | 4 +- .../DetailedInfoSection.module.css | 40 ++++++++++++++----- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index f4ed3bdbf..0313e8056 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -13,11 +13,11 @@ function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) { return (
-

Про Компанію

+

Про Компанію

{containsNotRequiredData ?
-

Про Компанію

+

Про Компанію

{data.is_startup && } {data.is_registered && } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index 800e578e2..42b5e9b35 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -7,33 +7,42 @@ .detail-info-page { display: flex; flex-direction: column; - width: 343px; + width: 375px; + padding: 40px 16px; } -.profile-detail__tags { +.profile-detail__tags-mobile { display: flex; align-items: flex-start; color: black; font-feature-settings: 'calt' off; text-decoration: none; font-family: var(--font-main); - font-size: 34px; + font-size: 18px; font-style: normal; font-weight: 700; - line-height: 40.8px; - letter-spacing: -0.34px; + line-height: 21.6px; + letter-spacing: -0.18px; white-space: nowrap; } - +.profile-detail__tags-desktop { + display: none; +} @media only screen and (min-width: 768px) { .detail-info-page { display: flex; flex-direction: column; - width: 720px; + width: 768px; + padding: 48px 24px; } + .profile-detail__tags-mobile { + font-size: 34px; + line-height: 40.8px; + letter-spacing: -0.34px; + } } @media only screen and (min-width: 1512px) { @@ -43,10 +52,23 @@ width: 1304px; } - .profile-detail__tags { + .profile-detail__tags-mobile { display: none; } - + .profile-detail__tags-desktop { + display: flex; + align-items: flex-start; + color: black; + font-feature-settings: 'calt' off; + text-decoration: none; + font-family: var(--font-main); + font-size: 34px; + font-style: normal; + font-weight: 700; + line-height: 40.8px; + letter-spacing: -0.34px; + white-space: nowrap; + } } From c4c7983a1484eb0489a72690b728743abf44745f Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 18:28:03 +0200 Subject: [PATCH 023/117] styles addres v 1.0.1 --- .../DataContacts/DataContacts.jsx | 12 ++--- .../DataContacts/DataContacts.module.css | 41 +++++++-------- .../DataContacts/DataContactsPhoneEmail.jsx | 3 +- .../DataContactsPhoneEmail.module.css | 51 ++++++++++--------- .../DetailedInfo/DetailedInfoSection.jsx | 2 + 5 files changed, 58 insertions(+), 51 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx index b9431433a..422c81585 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.jsx @@ -51,9 +51,7 @@ function DataContacts ({ data, isAuthorized }) { return (

{key}

-

- {value} -

+

{value}

); } @@ -107,15 +105,15 @@ function DataContacts ({ data, isAuthorized }) { const hasContactSections = renderedContactSections.some((section) => section !== null); return ( -
-
+
+
{hasDataSections ? ( -
+
{renderedDataSections}
) : null} {hasContactSections ? ( -
+
{renderedContactSections}
) : null} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css index fb352a84f..ceb668ac7 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css @@ -1,27 +1,31 @@ -.data-wrapper { +.data-block { display: flex; flex-direction: column; align-items: flex-start; + padding-top: 16px; + padding-bottom: 16px; gap: 16px; } -.data { +.data-content { display: flex; padding: 16px; + width: 100%; flex-direction: column; align-items: flex-start; - gap: 36px; - border-radius: 2px; - border: 1px solid var(--main-grey-05, #F8F8F8); - background: var(--main-grey-05, #F8F8F8); + gap: 32px; + border-radius: 6px; + border: 1px solid none; + background: #F9F5EC; } -.data-block { +.data-block_render-contact, +.data-content_render-data { display: flex; + width: 100%; flex-direction: column; align-items: flex-start; gap: 6px; - min-width: 338px; } .data-block__field { @@ -33,7 +37,7 @@ .data-block__field--title { width: 130px; - color: var(--main-black-90, #292E32); + color: #292E32; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -47,9 +51,8 @@ font-weight: 600; } -.data-block__field--value { - width: 200px; - color: var(--main-black-90, #292E32); +.data-block__field--value, +.data-block__field--site { font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -59,16 +62,14 @@ letter-spacing: -0.14px; } +.data-block__field--value { + width: 200px; + color: #292E32; +} + .data-block__field--site { width: 200px; - color: var(--system-blue-100, #4A73E2); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 14px; - font-style: normal; - font-weight: 600; - line-height: 22px; - letter-spacing: -0.14px; + color: #4A73E2; } .data-block__field--address, diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx index 5d8888cef..bd0e06009 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx @@ -8,7 +8,7 @@ import { CheckOutlined, CopyOutlined } from '@ant-design/icons'; import { Tooltip } from 'antd'; import { useAuth } from '../../../../hooks'; -import classes from './DataContactsPhoneEmail'; +import classes from './DataContactsPhoneEmail.module.css'; const LENGTH_EMAIL = 14; @@ -120,4 +120,5 @@ export default PhoneEmail; PhoneEmail.propTypes = { profileId: PropTypes.number.isRequired, personId: PropTypes.number, + isAuthorized: PropTypes.bool, }; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css index a8945f89e..b6f409220 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css @@ -6,7 +6,7 @@ .data-block__field--title { width: 130px; - color: var(--main-black-90, #292E32); + color: #292E32; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -18,26 +18,19 @@ .data-block__field button { display: flex; - width: 200px; height: 32px; - max-width: 200px; padding: 5px 15px; justify-content: center; align-items: center; gap: 4px; border-radius: 4px; - border: 1px solid var(--primary-green-80, #1F9A7C); - background: var(--neutral-1, #FFF); + border: 1px solid #232424; cursor: pointer; } +.data-block__field--show--contacts, .data-block__field--contacts { - display: flex; - flex-direction: column; - width: 200px; - height: auto; - align-items: flex-start; - color: var(--main-black-90, #292E32); + text-align: center; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -47,22 +40,34 @@ letter-spacing: -0.14px; } +.data-block__field--contacts { + display: flex; + flex-direction: column; + height: auto; + align-items: flex-start; + color: #232424; +} + .data-block__field--show--contacts { flex: 1 0 0; - color: var(--primary-green-80, #1F9A7C); - text-align: center; - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - letter-spacing: -0.16px; + color: #232424; } -.contact-container{ +.contact-container { display: flex; + width: 200px; justify-content: space-between; - align-items: center; - min-width: 100%; + gap: 36px; +} + +@media only screen and (min-width: 768px) { + .contact-container { + width: 589px; + } +} + +@media only screen and (min-width: 1512px) { + .contact-container { + width: 200px; + } } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 0313e8056..66c6d0c96 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -39,6 +39,8 @@ DetailedInfoSection.propTypes = { product_info: PropTypes.string, service_info: PropTypes.string, address: PropTypes.string, + is_startup: PropTypes.bool, + is_registered: PropTypes.bool, }), containsNotRequiredData: PropTypes.bool.isRequired, }; From 0831383ba283e2f41f6e0d8b1d1f5a5dc226a857 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 19:37:12 +0200 Subject: [PATCH 024/117] format text code --- .../DetailedInfoComponents/Company.jsx | 2 +- .../DetailedInfoComponents/Company.module.css | 26 +---- .../ProductsServices.jsx | 52 ++++----- .../ProductsServices.module.css | 27 +---- .../DetailedInfoComponents/Startup.jsx | 110 ++++++++---------- .../DetailedInfoComponents/Startup.module.css | 25 ---- .../DetailedInfo/DetailedInfoSection.jsx | 2 +- 7 files changed, 86 insertions(+), 158 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx index 601966f48..abcab204a 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.jsx @@ -24,7 +24,7 @@ function Company({ data }) { companyData ? (
{data.common_info ? ( -
+
{data.common_info} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css index 30b9c7291..86e20a4a1 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css @@ -1,19 +1,12 @@ .about-company { + padding-top: 24px; display: flex; flex-direction: column; align-items: flex-start; } -.about-company__content--advantage, -.about-company__content--slogan { - display: flex; - flex-direction: column; - align-items: flex-start; -} - -.about-company__content--advantage--text, -.about-company__content--common { - color: var(--main-grey-90, #25292C); +.about-company__content { + color: #25292C; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -22,16 +15,3 @@ line-height: 22px; letter-spacing: -0.14px; } - -.about-company__content--slogan--title, -.about-company__content--slogan--text, -.about-company__content--advantage--title { - color: var(--main-grey-90, #25292C); - font-feature-settings: 'calt' off; - font-family: var(--font-main); - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: 20px; - letter-spacing: -0.16px; -} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx index c9e6667a5..85ed663e0 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx @@ -1,4 +1,4 @@ -import { useMemo, useEffect, useContext} from 'react'; +import { useMemo, useEffect, useContext } from 'react'; import { PropTypes } from 'prop-types'; import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; @@ -7,50 +7,46 @@ import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './ProductsServices.module.css'; -function ProductsServices ({ data }) { +function ProductsServices({ data }) { const { setActiveLinks } = useContext(ActiveLinksContext); const profile = useMemo(() => { return { products: data.product_info, services: data.service_info }; - }, [data]); + }, [data]); useEffect(() => { - if (profile.products || profile.services) { - setActiveLinks(prevData => [ - ...prevData, - 'products-services']); + if (profile.products || profile.services) { + setActiveLinks(prevData => [ + ...prevData, + 'products-services']); } }, [setActiveLinks, profile.products, profile.services]); return ( (profile.products || profile.services) ? (
-
-
-

Товари / послуги

-
-
+

Інформація про товари/послуги

{profile.products && -
-

Товари

-
- - {profile.products} - -
-
} +
+

Товари

+
+ + {profile.products} + +
+
} {profile.services && -
-

Послуги

-
- - {profile.services} - -
-
} +
+

Послуги

+
+ + {profile.services} + +
+
}
) : null diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css index df302dfde..21d47d027 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css @@ -2,49 +2,34 @@ display: flex; flex-direction: column; align-items: flex-start; - border-radius: 8px; -} - -.products-services__title { - display: flex; - flex-direction: column; - align-items: flex-start; - align-self: stretch; -} - -.products-services__title--block { - display: flex; - padding: 8px 12px; - align-items: flex-start; - align-self: stretch; - border-radius: 4px; + gap: 12px; } .products-services__title--text { - color: var(--main-grey-90, #25292C); + color: #25292C; font-family: var(--font-main); font-size: 16px; font-style: normal; font-weight: 700; line-height: 20px; - text-transform: uppercase; } .products-services__content { display: flex; - padding: 12px; flex-direction: column; align-items: flex-start; + gap: 12px; } .products-services__content--block { display: flex; flex-direction: column; align-items: flex-start; + gap: 12px; } .products-services__content--title { - color: var(--main-grey-90, #25292C); + color: #25292C; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; @@ -55,7 +40,7 @@ } .products-services__content--description { - color: var(--main-grey-90, #25292C); + color: #25292C; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx index 301a489c9..b8fce1a9b 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx @@ -1,4 +1,4 @@ -import { useMemo, useEffect, useContext } from 'react'; +import { useMemo, useEffect, useContext } from 'react'; import { PropTypes } from 'prop-types'; import { ActiveLinksContext } from '../../../../context/ActiveLinksContext'; @@ -7,72 +7,64 @@ import ReadMore from '../../ProfileDetailComponents/ReadMore'; import classes from './Startup.module.css'; -function Startup ({ data }) { - const { setActiveLinks } = useContext(ActiveLinksContext); - const profile = useMemo(() => { - return { - startup_idea: data.startup_idea, - }; - }, [data]); +function Startup({ data }) { + const { setActiveLinks } = useContext(ActiveLinksContext); + const profile = useMemo(() => { + return { + startup_idea: data.startup_idea, + }; + }, [data]); - // TODO: implement logic for getting data from db when it's added on server side + // TODO: implement logic for getting data from db when it's added on server side - const startupData = { - 'Ідея стартапу': profile.startup_idea, - 'Розмір інвестицій': '', - 'Ціль співпраці': '', - 'Кінцевий результат': '', - 'Конкурентна перевага ідеї': '', - 'Ризики': '', - 'Пошук партнерів': '', - }; + const startupData = { + 'Ідея стартапу': profile.startup_idea, + 'Розмір інвестицій': '', + 'Ціль співпраці': '', + 'Кінцевий результат': '', + 'Конкурентна перевага ідеї': '', + 'Ризики': '', + 'Пошук партнерів': '', + }; - const renderedSections = Object.entries(startupData).map(([key, value]) => { - if (value) { - return ( -
-

{key}

-
- {value} -
-
- ); - } - return null; - }); + const renderedSections = Object.entries(startupData).map(([key, value]) => { + if (value) { + return ( +
+

{key}

+
+ {value} +
+
+ ); + } + return null; + }); - const hasSections = renderedSections.some((section) => section !== null); + const hasSections = renderedSections.some((section) => section !== null); - useEffect(() => { - if (hasSections) { - setActiveLinks(prevData => [ - ...prevData, - 'startup']); - } - }, [hasSections, setActiveLinks]); + useEffect(() => { + if (hasSections) { + setActiveLinks(prevData => [ + ...prevData, + 'startup']); + } + }, [hasSections, setActiveLinks]); - return ( - hasSections ? ( -
-
-
-
-

Стартап

-
-
-
- {renderedSections} -
-
-
- ) : null - ); + return ( + hasSections ? ( +
+

Стартап

+ {renderedSections} +
+ ) : null + ); } export default Startup; Startup.propTypes = { - data: PropTypes.shape({ - startup_idea: PropTypes.string, - }), - }; + data: PropTypes.shape({ + startup_idea: PropTypes.string, + }), +}; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css index f8dfea2b7..e1b602cfd 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css @@ -6,7 +6,6 @@ border-radius: 8px; } -.startup, .startup__content--block { display: flex; flex-direction: column; @@ -14,22 +13,6 @@ gap: 12px; } -.startup__title { - display: flex; - flex-direction: column; - align-items: flex-start; - align-self: stretch; -} - -.startup__title--block { - display: flex; - padding: 8px 12px; - align-items: flex-start; - gap: 10px; - align-self: stretch; - border-radius: 4px; -} - .startup__title--text { color: var(--main-grey-90, #25292C); font-family: var(--font-main); @@ -37,16 +20,8 @@ font-style: normal; font-weight: 700; line-height: 20px; - text-transform: uppercase; } -.startup__content { - display: flex; - padding: 12px; - flex-direction: column; - align-items: flex-start; - gap: 12px; -} .startup__content--title { color: var(--main-grey-90, #25292C); diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx index 66c6d0c96..882ef6c29 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.jsx @@ -19,8 +19,8 @@ function DetailedInfoSection({ isAuthorized, data, containsNotRequiredData }) {

Про Компанію

- {data.is_startup && } {data.is_registered && } + {data.is_startup && }
: }
From 4427c76f9d9846a4fd975fc25c8f59ac9207a1bc Mon Sep 17 00:00:00 2001 From: romanmyko Date: Thu, 7 Nov 2024 21:12:39 +0200 Subject: [PATCH 025/117] format styles in text --- .../DetailedInfoComponents/Company.module.css | 9 ++-- .../ProductsServices.jsx | 27 +++++----- .../ProductsServices.module.css | 40 ++++++++------- .../DetailedInfoComponents/Startup.jsx | 10 ++-- .../DetailedInfoComponents/Startup.module.css | 49 ++++++++++--------- 5 files changed, 71 insertions(+), 64 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css index 86e20a4a1..2b7f4d761 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css @@ -3,15 +3,16 @@ display: flex; flex-direction: column; align-items: flex-start; + gap: 24px; } .about-company__content { - color: #25292C; + color: #000; font-feature-settings: 'calt' off; font-family: var(--font-main); - font-size: 14px; + font-size: 16px; font-style: normal; font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; + line-height: 24px; + letter-spacing: -0.16px; } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx index 85ed663e0..670af673b 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.jsx @@ -28,24 +28,21 @@ function ProductsServices({ data }) { (profile.products || profile.services) ? (

Інформація про товари/послуги

-
+
{profile.products && -
-

Товари

-
- - {profile.products} - -
+
+ + Товари: + {profile.products} + +
} {profile.services && -
-

Послуги

-
- - {profile.services} - -
+
+ + Послуги: + {profile.services} +
}
diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css index 21d47d027..69d244fe3 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css @@ -2,23 +2,17 @@ display: flex; flex-direction: column; align-items: flex-start; - gap: 12px; + gap: 24px; } .products-services__title--text { color: #25292C; font-family: var(--font-main); - font-size: 16px; + font-size: 18px; font-style: normal; font-weight: 700; - line-height: 20px; -} - -.products-services__content { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 12px; + line-height: 21.6px; + letter-spacing: -0.18px; } .products-services__content--block { @@ -29,23 +23,33 @@ } .products-services__content--title { - color: #25292C; + color: #000000; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; font-style: normal; - font-weight: 600; - line-height: 20px; + line-height: 24px; letter-spacing: -0.16px; + font-weight: 700; } -.products-services__content--description { - color: #25292C; +.products-services__content--text { + color: #000000; font-feature-settings: 'calt' off; font-family: var(--font-main); - font-size: 14px; + font-size: 16px; font-style: normal; font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; + line-height: 24px; + letter-spacing: -0.16px; + flex: 1; +} + +@media only screen and (min-width: 768px) { + .products-services__title--text { + font-size: 34px; + font-weight: 700; + line-height: 40.8px; + letter-spacing: -0.34px; + } } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx index b8fce1a9b..5eebaf29f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.jsx @@ -18,7 +18,7 @@ function Startup({ data }) { // TODO: implement logic for getting data from db when it's added on server side const startupData = { - 'Ідея стартапу': profile.startup_idea, + 'Ідея стартапу: ': profile.startup_idea, 'Розмір інвестицій': '', 'Ціль співпраці': '', 'Кінцевий результат': '', @@ -31,11 +31,11 @@ function Startup({ data }) { if (value) { return (
-

{key}

-
- {value} + + {key} + {value} +
-
); } return null; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css index e1b602cfd..1562c1f78 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css @@ -3,44 +3,49 @@ flex-direction: column; align-items: flex-start; gap: 24px; - border-radius: 8px; -} - -.startup__content--block { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 12px; } .startup__title--text { - color: var(--main-grey-90, #25292C); + color: #232424; font-family: var(--font-main); - font-size: 16px; + font-size: 18px; font-style: normal; font-weight: 700; - line-height: 20px; + line-height: 21.6px; + letter-spacing: -0.18px; } - -.startup__content--title { - color: var(--main-grey-90, #25292C); +.startup__content--block { + display: flex; + flex-direction: column; + align-items: flex-start; + color: #000; font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; font-style: normal; - font-weight: 600; - line-height: 20px; + font-weight: 400; + line-height: 24px; letter-spacing: -0.16px; } -.startup__content--description { - color: var(--main-grey-90, #25292C); +.startup__content--title { + color: #000; font-feature-settings: 'calt' off; font-family: var(--font-main); - font-size: 14px; + font-size: 16px; font-style: normal; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.14px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.16px; } + +@media only screen and (min-width: 768px) { + .startup__title--text { + font-size: 34px; + font-weight: 700; + line-height: 40.8px; + letter-spacing: -0.34px; + } + +} \ No newline at end of file From bc3963a4f86771560eaf35bbf6a5888740eca01a Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Thu, 7 Nov 2024 22:21:48 +0200 Subject: [PATCH 026/117] fix css styles display on large screens --- .../src/pages/LandingPage/Banner/Banner.jsx | 37 ++++++++++--------- .../LandingPage/Banner/Banner.module.css | 18 +++++++-- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx index 023eab836..e0961acd3 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.jsx @@ -3,28 +3,29 @@ import { Link } from 'react-router-dom'; const MainBanner = () => { return ( -
-
-

CRAFTMERGE

-

Обʼєднуємо крафтових виробників та інноваторів

-
- - Детальніше про нас - +
+
+
+

CRAFTMERGE

+

Обʼєднуємо крафтових виробників та інноваторів

+
+ + Детальніше про нас + +
+
+
+ Banner img
-
-
- Banner img
); }; export default MainBanner; - diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index 1767b27e0..69f97a58b 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -1,18 +1,27 @@ +.main-baner__container { + display: flex; + justify-content: center; + background-color: #B4D27A; + width: 100vw; +} + .main-container{ display:flex; + justify-content: center; flex-direction:row; background-color: #B4D27A; padding: 32px 104px 32px 104px; - width: 100vw; } .main-baner-text{ - padding-top: 15vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items:flex-start; font-family: Geologica; font-weight: 900; line-height: 57.6px; letter-spacing: 0.01em; - text-align: left; margin-right: 63px; } @@ -50,7 +59,8 @@ } .main-banner__img{ - max-width: 100%; + max-width: 100vw; + height: auto; } @media (max-width: 768px) { From 28d4477a5ea5aaac33e50aeed533b4be0b21bc2c Mon Sep 17 00:00:00 2001 From: Andriy Danchyshyn Date: Fri, 8 Nov 2024 00:48:19 +0200 Subject: [PATCH 027/117] moved css import --- FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx index 09f47589c..749d4a782 100644 --- a/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx +++ b/FrontEnd/src/pages/AdminPage/UserProfilesTable/UserTable.jsx @@ -1,10 +1,10 @@ import { useState, useEffect } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; -import css from './UserTable.module.css'; import axios from 'axios'; import useSWR from 'swr'; import { Table, Tag, Tooltip, Pagination } from 'antd'; import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; +import css from './UserTable.module.css'; const LENGTH_EMAIL = 14; From b6c403d0a453b5b786cc0f0308d05fd62ab704e7 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Fri, 8 Nov 2024 17:08:17 +0200 Subject: [PATCH 028/117] default baner --- .../ProfileDetailBaner/BannerImage.jsx | 24 +++++++------------ .../ProfileDetailBaner/BannerImage.module.css | 8 ------- .../ProfileDetailBaner/baner.svg | 15 ------------ 3 files changed, 9 insertions(+), 38 deletions(-) delete mode 100644 FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx index 45d0aefab..963c29284 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx @@ -1,22 +1,16 @@ import { PropTypes } from 'prop-types'; -import classNames from 'classnames'; import classes from './BannerImage.module.css'; -import baner from './baner.svg'; function BannerImage({ data }) { - - const backgroundImage = { - background: `url(${data.banner?.path}) lightgray 50% / cover no-repeat`, - }; - return ( -
-
- {!data.banner?.path && - Default baner - } -
-
+
); } @@ -26,6 +20,6 @@ BannerImage.propTypes = { data: PropTypes.shape({ banner: PropTypes.shape({ path: PropTypes.string, - }) + }), }), }; diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css index 1f828f93e..cf9b928fc 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css @@ -2,11 +2,3 @@ width: 100vw; height: 200px; } - -.default-banner { - display: flex; - justify-content: center; - align-items: center; - height: 200px; - background: var(--main-grey-20, #DEE1E8); -} diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg deleted file mode 100644 index 6df63ae00..000000000 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/baner.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - From 4c39bbd47e16faae1b4ae0ae471e747f258eef5d Mon Sep 17 00:00:00 2001 From: romanmyko Date: Fri, 8 Nov 2024 17:42:36 +0200 Subject: [PATCH 029/117] star styles --- FrontEnd/src/components/MiniComponents/StarForLike.jsx | 10 ++++++++-- .../components/MiniComponents/StarForLike.module.css | 3 ++- .../ProfileDetail/TitelInfo/DefaultLogo.module.css | 4 ---- .../src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx | 6 ++++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/FrontEnd/src/components/MiniComponents/StarForLike.jsx b/FrontEnd/src/components/MiniComponents/StarForLike.jsx index acaee65a7..51d6ad278 100644 --- a/FrontEnd/src/components/MiniComponents/StarForLike.jsx +++ b/FrontEnd/src/components/MiniComponents/StarForLike.jsx @@ -8,19 +8,23 @@ export default function StarForLike({ isAuthorized, ownProfile, handleClick, + styleFilled, + styleOutlined, }) { const filledStar = ( ); const outlinedStar = ( ); return isAuthorized && !ownProfile @@ -35,4 +39,6 @@ StarForLike.propTypes = { isAuthorized: PropTypes.bool, ownProfile: PropTypes.bool, handleClick: PropTypes.func, + styleFilled: PropTypes.object, + styleOutlined: PropTypes.object, }; diff --git a/FrontEnd/src/components/MiniComponents/StarForLike.module.css b/FrontEnd/src/components/MiniComponents/StarForLike.module.css index a3c8a42d4..0381b26f3 100644 --- a/FrontEnd/src/components/MiniComponents/StarForLike.module.css +++ b/FrontEnd/src/components/MiniComponents/StarForLike.module.css @@ -1,4 +1,5 @@ -.star { +.star-filled, +.star-outlined { color: #80B31E; font-size: 24px; } \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css index ae44225c9..2df5918e8 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/DefaultLogo.module.css @@ -4,10 +4,6 @@ height: 100%; } -.default_ellipse { - position: absolute; -} - .default_logo { position: absolute; top: 3px; diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx index 846abf879..a736bb4c7 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx @@ -68,8 +68,8 @@ function TitleInfo({ isAuthorized, data }) { Company logo )}
@@ -111,6 +111,8 @@ function TitleInfo({ isAuthorized, data }) { isSaved={isSaved} isAuthorized={isAuthorized} ownProfile={ownProfile} + styleFilled={{ color: '#FFF', fontSize: '24px' }} + styleOutlined={{ color: '#000', fontSize: '24px' }} > )} From ee31bc140e2d4923839195b04541430e8a25a91a Mon Sep 17 00:00:00 2001 From: romanmyko Date: Fri, 8 Nov 2024 19:16:45 +0200 Subject: [PATCH 030/117] left text format --- .../ProfileDetail/DetailedInfo/DetailedInfoSection.module.css | 1 + 1 file changed, 1 insertion(+) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index 42b5e9b35..0369d17dc 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -49,6 +49,7 @@ .detail-info-page { display: flex; flex-direction: row-reverse; + justify-content: space-between; width: 1304px; } From 4932d92a9391d23353983d0dc39f5750464b1a0d Mon Sep 17 00:00:00 2001 From: romanmyko Date: Fri, 8 Nov 2024 22:32:54 +0200 Subject: [PATCH 031/117] styles and add + in phone --- .../DataContacts/DataContacts.module.css | 18 +++++++++++++++--- .../DataContacts/DataContactsPhoneEmail.jsx | 5 +++-- .../DataContactsPhoneEmail.module.css | 2 +- .../DetailedInfoSection.module.css | 14 +++++++++++--- .../ProfileDetail/TitelInfo/TitleInfo.jsx | 2 +- .../TitelInfo/TitleInfo.module.css | 8 ++++---- 6 files changed, 35 insertions(+), 14 deletions(-) diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css index ceb668ac7..3a34fee3c 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css @@ -4,7 +4,6 @@ align-items: flex-start; padding-top: 16px; padding-bottom: 16px; - gap: 16px; } .data-content { @@ -63,12 +62,12 @@ } .data-block__field--value { - width: 200px; + width: 170px; color: #292E32; } .data-block__field--site { - width: 200px; + width: 170px; color: #4A73E2; } @@ -78,3 +77,16 @@ align-items: flex-start; gap: 8px; } + + +@media only screen and (min-width: 768px) { + .data-block__field--value { + width: 589px; + } +} + +@media only screen and (min-width: 1512px) { + .data-block__field--value{ + width: 200px; + } +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx index bd0e06009..137d02f0c 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx @@ -21,7 +21,8 @@ function PhoneEmail({ isAuthorized, profileId, personId }) { const copyContent = (key) => { try { - navigator.clipboard.writeText(profileData[key]); + const contentToCopy = key === 'phone' ? `+${profileData.phone}` : profileData.email; + navigator.clipboard.writeText(contentToCopy); if (key === 'phone') { setIsPhoneCopied(true); setTimeout(() => setIsPhoneCopied(false), 4000); @@ -76,7 +77,7 @@ function PhoneEmail({ isAuthorized, profileId, personId }) { {isContactsShown || (user && user.id === personId) ? (

- {profileData.phone} + +{profileData.phone} { profileData.phone ? copyContent('phone')}> {renderIcons(isPhoneCopied)} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css index b6f409220..0aba0d4d8 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css @@ -55,7 +55,7 @@ .contact-container { display: flex; - width: 200px; + width: 130px; justify-content: space-between; gap: 36px; } diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index 0369d17dc..daa959ecb 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -8,7 +8,11 @@ display: flex; flex-direction: column; width: 375px; - padding: 40px 16px; + padding: 24px 16px; +} + +.company-description-block { + width: 375px; } .profile-detail__tags-mobile { @@ -35,9 +39,10 @@ display: flex; flex-direction: column; width: 768px; - padding: 48px 24px; } - + .company-description-block{ + width: 768px; + } .profile-detail__tags-mobile { font-size: 34px; line-height: 40.8px; @@ -52,6 +57,9 @@ justify-content: space-between; width: 1304px; } + .company-description-block { + width: 860px; + } .profile-detail__tags-mobile { display: none; diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx index a736bb4c7..0231c42be 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.jsx @@ -123,7 +123,7 @@ function TitleInfo({ isAuthorized, data }) { onClick={navigateToEditProfile} > - Редагувати профіль + Редагувати )} diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index 8cd570210..0f79234f7 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -41,7 +41,6 @@ display: flex; flex-direction: column; align-items: flex-start; - padding-top: 10px; gap: 4px; } @@ -126,6 +125,7 @@ font-weight: 600; line-height: 20px; letter-spacing: -0.16px; + padding-right: 4px; } .added_to_saved__button--text { @@ -148,14 +148,13 @@ } .title-block__button { - width: 353px; + width: 253px; } } @media only screen and (min-width: 1512px) { .title-block { flex-direction: row; - height: 220px; } .title-block__content { @@ -166,6 +165,7 @@ } .title-block__button { - width: 221px; + width: 100%; + min-width: 124px; } } From 7d0fe297c7062bfad5d1071a2504b9ef783172ec Mon Sep 17 00:00:00 2001 From: romanmyko Date: Sat, 9 Nov 2024 10:20:50 +0200 Subject: [PATCH 032/117] global css --- FrontEnd/src/global.css | 14 +++++++++++++- .../DataContacts/DataContacts.module.css | 8 ++++---- .../DataContacts/DataContactsPhoneEmail.jsx | 2 +- .../DataContactsPhoneEmail.module.css | 8 ++++---- .../DetailedInfoComponents/Company.module.css | 2 +- .../ProductsServices.module.css | 6 +++--- .../DetailedInfoComponents/Startup.module.css | 9 ++++----- .../DetailedInfoSection.module.css | 14 ++++++++------ .../ProfileDetailBaner/BannerImage.module.css | 2 +- .../TitelInfo/TitleInfo.module.css | 18 +++++++++--------- 10 files changed, 48 insertions(+), 35 deletions(-) diff --git a/FrontEnd/src/global.css b/FrontEnd/src/global.css index 44cea3c12..f22b52ed6 100644 --- a/FrontEnd/src/global.css +++ b/FrontEnd/src/global.css @@ -112,12 +112,24 @@ --companies-card-address: #000000; --companies-card-button: green; --companies-card-badge-is-updated: #B4D27A; - --companies-card-badge-text-color:#231C09; + --companies-card-badge-text-color: #231C09; --search-new-companies-main: #f1fff7; --search-text-color: #292e32; --search-pagination-style-color: #1f9a7c; /* Profile Detail */ + --profile-detail-width: 100vw; + --profile-detail-title-background: #F9F5EC; + --profile-detail-title-color-activity: #707070; + --profile-detail-title-color-company-name: #232424; + --profile-detail-title-color-company-region: #000000; + --profile-detail-title-color-company-button: #232424; + --profile-detail-title-color-company-button-saved: #fff; + --profile-detail-data-contacts-backround: #F9F5EC; + --profile-detail-data-contacts-color-text: #292E32; + --profile-detail-info-color-text: #000; + --profile-detail-info-color-title: #232424; + --main-grey-90: #25292c; --main-white: #FFF; --main-black-90: #292e32; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css index 3a34fee3c..7d7f4f234 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css @@ -15,7 +15,7 @@ gap: 32px; border-radius: 6px; border: 1px solid none; - background: #F9F5EC; + background: var(--profile-detail-data-contacts-backround); } .data-block_render-contact, @@ -36,7 +36,7 @@ .data-block__field--title { width: 130px; - color: #292E32; + color: var(--profile-detail-data-contacts-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -63,7 +63,7 @@ .data-block__field--value { width: 170px; - color: #292E32; + color: var(--profile-detail-data-contacts-color-text); } .data-block__field--site { @@ -86,7 +86,7 @@ } @media only screen and (min-width: 1512px) { - .data-block__field--value{ + .data-block__field--value { width: 200px; } } \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx index 137d02f0c..5f8ef04d8 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.jsx @@ -77,7 +77,7 @@ function PhoneEmail({ isAuthorized, profileId, personId }) { {isContactsShown || (user && user.id === personId) ? (

- +{profileData.phone} + {(profileData.phone) ? ('+' + profileData.phone) : ''} { profileData.phone ? copyContent('phone')}> {renderIcons(isPhoneCopied)} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css index 0aba0d4d8..59021201a 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContactsPhoneEmail.module.css @@ -6,7 +6,7 @@ .data-block__field--title { width: 130px; - color: #292E32; + color: var(--profile-detail-data-contacts-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -24,7 +24,7 @@ align-items: center; gap: 4px; border-radius: 4px; - border: 1px solid #232424; + border: 1px solid var(--profile-detail-data-contacts-color-text); cursor: pointer; } @@ -45,12 +45,12 @@ flex-direction: column; height: auto; align-items: flex-start; - color: #232424; + color: var(--profile-detail-data-contacts-color-text); } .data-block__field--show--contacts { flex: 1 0 0; - color: #232424; + color: var(--profile-detail-data-contacts-color-text); } .contact-container { diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css index 2b7f4d761..56f3f3ace 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Company.module.css @@ -7,7 +7,7 @@ } .about-company__content { - color: #000; + color: var(--profile-detail-info-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css index 69d244fe3..11425a32a 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/ProductsServices.module.css @@ -6,7 +6,7 @@ } .products-services__title--text { - color: #25292C; + color: var(--profile-detail-info-color-title); font-family: var(--font-main); font-size: 18px; font-style: normal; @@ -23,7 +23,7 @@ } .products-services__content--title { - color: #000000; + color: var(--profile-detail-info-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; @@ -34,7 +34,7 @@ } .products-services__content--text { - color: #000000; + color: var(--profile-detail-info-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css index 1562c1f78..1780a1a71 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoComponents/Startup.module.css @@ -6,7 +6,7 @@ } .startup__title--text { - color: #232424; + color: var(--profile-detail-info-color-title); font-family: var(--font-main); font-size: 18px; font-style: normal; @@ -19,7 +19,7 @@ display: flex; flex-direction: column; align-items: flex-start; - color: #000; + color: var(--profile-detail-info-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; @@ -30,7 +30,7 @@ } .startup__content--title { - color: #000; + color: var(--profile-detail-info-color-text); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 16px; @@ -47,5 +47,4 @@ line-height: 40.8px; letter-spacing: -0.34px; } - -} \ No newline at end of file +} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index daa959ecb..eb5939595 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -1,6 +1,6 @@ .detail-info-page_block { display: flex; - width: 100vw; + width: var(--profile-detail-width); justify-content: center; } @@ -18,7 +18,7 @@ .profile-detail__tags-mobile { display: flex; align-items: flex-start; - color: black; + color: var(--profile-detail-info-color-title); font-feature-settings: 'calt' off; text-decoration: none; font-family: var(--font-main); @@ -40,9 +40,11 @@ flex-direction: column; width: 768px; } - .company-description-block{ + + .company-description-block { width: 768px; } + .profile-detail__tags-mobile { font-size: 34px; line-height: 40.8px; @@ -57,6 +59,7 @@ justify-content: space-between; width: 1304px; } + .company-description-block { width: 860px; } @@ -68,7 +71,7 @@ .profile-detail__tags-desktop { display: flex; align-items: flex-start; - color: black; + color: var(--profile-detail-info-color-title); font-feature-settings: 'calt' off; text-decoration: none; font-family: var(--font-main); @@ -79,5 +82,4 @@ letter-spacing: -0.34px; white-space: nowrap; } -} - +} diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css index cf9b928fc..e949d9015 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.module.css @@ -1,4 +1,4 @@ .banner-image__block { - width: 100vw; + width: var(--profile-detail-width); height: 200px; } diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index 0f79234f7..641ddafb8 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -1,7 +1,7 @@ .title-block { display: flex; - background: #F9F5EC; - width: 100vw; + background: var(--profile-detail-title-background); + width: var(--profile-detail-width); justify-content: center; } @@ -45,7 +45,7 @@ } .title-block__activity { - color: #707070; + color: var(--profile-detail-title-color-activity); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -63,7 +63,7 @@ } .title-block__company_name { - color: #232424; + color: var(--profile-detail-title-color-company-name); font-family: var(--font-main); font-size: 24px; font-style: normal; @@ -78,7 +78,7 @@ } .title-block__company_region { - color: #000000; + color: var(--profile-detail-title-color-company-region); font-feature-settings: 'calt' off; font-family: var(--font-main); font-size: 14px; @@ -93,7 +93,7 @@ } .added_to_saved__button { - background: #232424; + background: var(--profile-detail-title-color-company-button); } .title-block__button-block { @@ -110,13 +110,13 @@ align-items: center; gap: 4px; border-radius: 4px; - border: 1px solid #232424; + border: 1px solid var(--profile-detail-title-color-company-button); cursor: pointer; } .title-block__button--text { display: flex; - color: #232424; + color: var(--profile-detail-title-color-company-button); text-align: center; font-feature-settings: 'calt' off; font-family: var(--font-main); @@ -129,7 +129,7 @@ } .added_to_saved__button--text { - color: var(--main-white, #fff); + color: var(--profile-detail-title-color-company-button-saved); } @media only screen and (min-width: 768px) { From 32cd9916f96ac7867c769d3576aa797eb35d7154 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Sun, 10 Nov 2024 16:07:39 +0200 Subject: [PATCH 033/117] default baner --- FrontEnd/public/svg/empty-baner-31x29.svg | 23 +++++++++++++++++++ .../ProfileDetailBaner/BannerImage.jsx | 14 +++++------ 2 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 FrontEnd/public/svg/empty-baner-31x29.svg diff --git a/FrontEnd/public/svg/empty-baner-31x29.svg b/FrontEnd/public/svg/empty-baner-31x29.svg new file mode 100644 index 000000000..40424cdff --- /dev/null +++ b/FrontEnd/public/svg/empty-baner-31x29.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx index 963c29284..6242a4da4 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx @@ -2,20 +2,18 @@ import { PropTypes } from 'prop-types'; import classes from './BannerImage.module.css'; function BannerImage({ data }) { + const backgroundImage = data?.banner?.path + ? `url(${data.banner.path}) lightgray center / cover no-repeat` + : `url(${process.env.REACT_APP_PUBLIC_URL}/svg/empty-baner-31x29.svg) #e0e0e0 left top / 100px 68px repeat `; + return (

); } -export default BannerImage; - BannerImage.propTypes = { data: PropTypes.shape({ banner: PropTypes.shape({ @@ -23,3 +21,5 @@ BannerImage.propTypes = { }), }), }; + +export default BannerImage; From 7b9a42b243f10e78e6073b27d1b63997b4f6e096 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Mon, 11 Nov 2024 11:46:10 +0200 Subject: [PATCH 034/117] fixed the display of content on the tablet size --- .../LandingPage/Banner/Banner.module.css | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index 69f97a58b..6c2d7f704 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -63,7 +63,7 @@ height: auto; } -@media (max-width: 768px) { +@media (min-width: 768px) and (max-width: 1511px) { .main-container{ display:flex; justify-content: center; @@ -84,7 +84,6 @@ line-height: 57.6px; letter-spacing: 0.01em; text-align: left; - margin-right: 0; } .main-baner-text__explanation{ display: flex; @@ -99,14 +98,24 @@ } } -@media (max-width: 375px) { +@media (max-width: 767px) { + .main-baner__container{ + display:flex; + justify-content:space-around; + align-items: center; + padding: 0px; + + } .main-container{ display:flex; justify-content: center; flex-direction:column-reverse; background-color: #B4D27A; - padding: 32px; max-width: 375px; + padding: 16px 32px 16px 32px; + } + .main-baner-text__logo{ + font-size: 34px; } .main-baner-text{ display: flex; @@ -114,13 +123,8 @@ align-items: center; max-width: 343px; padding-top: 5vh; - font-family: Geologica; - font-size: 25px; - font-family: Geologica; - font-weight: 700; - line-height: 48px; - letter-spacing: 0.01em; text-align: center; + margin: 0px; } .main-baner-text__explanation{ display: flex; From 068915069e5cb3ee4022c9ba756892da0bae1730 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Mon, 11 Nov 2024 14:09:15 +0200 Subject: [PATCH 035/117] fix bug --- .../src/pages/LandingPage/Banner/Banner.module.css | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index 6c2d7f704..a4760d0ca 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -22,7 +22,6 @@ font-weight: 900; line-height: 57.6px; letter-spacing: 0.01em; - margin-right: 63px; } .main-baner-text__logo{ @@ -68,22 +67,14 @@ display:flex; justify-content: center; flex-direction:column-reverse; - justify-content: space-between; background-color: #B4D27A; - padding: 32px; - max-width: 100vw; } .main-baner-text{ display: flex; flex-direction: column; align-items: center; padding-top: 5vh; - font-family: Geologica; - font-size: 34px; - font-weight: 900; - line-height: 57.6px; - letter-spacing: 0.01em; - text-align: left; + } .main-baner-text__explanation{ display: flex; @@ -95,6 +86,7 @@ } .main-banner__img{ max-width: 100%; + height: auto; } } @@ -140,5 +132,6 @@ } .main-banner__img{ max-width: 344px; + height: auto; } } From 9fc3763ba601d0756a5c9fdcba2da2ec889a39f9 Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Tue, 12 Nov 2024 10:17:44 +0200 Subject: [PATCH 036/117] sketch version of mobile view for profile editing, remove one general form submit button with current form handling in favor of individual buttons for each form. --- FrontEnd/public/svg/arrow-down.svg | 3 + FrontEnd/public/svg/arrow-up.svg | 3 + .../MiniComponents/CategoryBadges.jsx | 1 + .../FormComponents/AdditionalInfo.jsx | 4 +- .../FormComponents/ChangePassword.jsx | 6 -- .../FormComponents/ContactsInfo.jsx | 6 +- .../DeleteProfilePage.jsx | 8 +- .../FormFields/PasswordField.module.css | 1 - .../FormComponents/GeneralInfo.jsx | 47 ++++++------ .../FormComponents/ProductServiceInfo.jsx | 6 +- .../FormComponents/StartupInfo.jsx | 12 +-- .../ProfilePage/FormComponents/UserInfo.jsx | 48 ++++++------ .../pages/ProfilePage/Mobile/Accordion.jsx | 14 ++++ .../ProfilePage/Mobile/Accordion.module.css | 0 .../ProfilePage/Mobile/AccordionItem.jsx | 23 ++++++ .../Mobile/AccordionItem.module.css | 39 ++++++++++ .../ProfilePage/Mobile/EditProfileMobile.jsx | 38 ++++++++++ .../Mobile/EditProfileMobile.module.css | 13 ++++ .../src/pages/ProfilePage/ProfilePage.jsx | 73 ++++++++++++------- .../ProfilePageComponents/Description.jsx | 22 +++--- .../ProfilePageComponents/ProfileContent.jsx | 59 ++++----------- .../ProfileFormButton/ProfileFormButton.jsx | 3 +- 22 files changed, 277 insertions(+), 152 deletions(-) create mode 100644 FrontEnd/public/svg/arrow-down.svg create mode 100644 FrontEnd/public/svg/arrow-up.svg create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/Accordion.jsx create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/Accordion.module.css create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.jsx create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.module.css create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx create mode 100644 FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css diff --git a/FrontEnd/public/svg/arrow-down.svg b/FrontEnd/public/svg/arrow-down.svg new file mode 100644 index 000000000..96d156440 --- /dev/null +++ b/FrontEnd/public/svg/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/FrontEnd/public/svg/arrow-up.svg b/FrontEnd/public/svg/arrow-up.svg new file mode 100644 index 000000000..224c57140 --- /dev/null +++ b/FrontEnd/public/svg/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx b/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx index eacb7298b..be2cc7805 100644 --- a/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx +++ b/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx @@ -8,6 +8,7 @@ export default function CategoryBadges({ categories }) { fontFamily: 'Geologica', fontSize: 10, margin: 5, + boxShadow: 'none', }; return (
diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx index cc0f0fd14..7077f0f82 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx @@ -33,8 +33,8 @@ const AdditionalInfo = (props) => { }, [mainProfile, profile]); useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); + setProfile(props.profile); + }, [props.profile]); const onUpdateFoundationYearField = (e) => { const currentYear = new Date().getFullYear(); diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx index d466d07bf..6240b0d19 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx @@ -11,7 +11,6 @@ import css from './ChangePassword.module.css'; export default function ChangePassword(props) { const { setFormIsDirty } = useContext(DirtyFormContext); - const { currentFormNameHandler, curForm } = props; const { register, handleSubmit, @@ -28,9 +27,6 @@ export default function ChangePassword(props) { }, }); - useEffect(() => { - currentFormNameHandler(curForm); - }, [currentFormNameHandler, curForm]); useEffect(() => { setFormIsDirty(isDirty); @@ -121,6 +117,4 @@ ChangePassword.propTypes = { profile_id: PropTypes.number.isRequired, is_staff: PropTypes.bool.isRequired, }).isRequired, - currentFormNameHandler: PropTypes.func.isRequired, - curForm: PropTypes.string.isRequired, }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx index 6d5f9fe88..38f0054d0 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx @@ -9,6 +9,7 @@ import { formatPhoneNumber } from '../../../utils/formatPhoneNumber'; import FullField from './FormFields/FullField'; import HalfFormField from './FormFields/HalfFormField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; import { useMask } from '@react-input/mask'; @@ -38,8 +39,8 @@ const ContactsInfo = (props) => { const inputRef = useMask({ mask: '+380XX XXX XX XX', replacement: { X: /\d/ } }); useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); + setProfile(props.profile); + }, [props.profile]); useEffect(() => { if (mainProfile?.phone) { @@ -145,6 +146,7 @@ const ContactsInfo = (props) => { value={profile.address ?? ''} />
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx index eef063fa3..b7875bc95 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx @@ -1,15 +1,11 @@ import css from './DeleteProfilePage.module.css'; import DeleteProfileModal from './DeleteProfileModal'; import MyModal from '../../UI/MyModal/MyModal'; -import { useState, useEffect } from 'react'; +import { useState } from 'react'; -const DeleteProfilePage = (props) => { +const DeleteProfilePage = () => { const [modal, setModal] = useState(false); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); - const cancelHandler = () => { setModal(false); }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css index 1d9636d5b..4c298d864 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css @@ -112,7 +112,6 @@ } .error-dot::before { - position: absolute; margin-left: -8px; content: "*"; color: #ff4d4f; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx index 1de7f2ee7..763bd89eb 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx @@ -20,6 +20,7 @@ import Loader from '../../../components/Loader/Loader'; import validateEdrpou from '../../../utils/validateEdrpou'; import validateRnokpp from '../../../utils/validateRnokpp'; import BanerModeration from './BanerModeration'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; const LABELS = { name: 'Назва компанії', @@ -62,8 +63,8 @@ const GeneralInfo = (props) => { const { profile: mainProfile, mutate: profileMutate } = useProfile(); const [profile, setProfile] = useState(props.profile); const [formStateErr, setFormStateErr] = useState(ERRORS); - const [bannerImage, setBannerImage] = useState(props.profile.banner?.path); - const [logoImage, setLogoImage] = useState(props.profile.logo?.path); + const [bannerImage, setBannerImage] = useState(props.profile?.banner?.path); + const [logoImage, setLogoImage] = useState(props.profile?.logo?.path); const [bannerImageError, setBannerImageError] = useState(null); const [logoImageError, setLogoImageError] = useState(null); const [edrpouFieldError, setEdrpouFieldError] = useState(null); @@ -106,8 +107,8 @@ const GeneralInfo = (props) => { }, [mainProfile, profile]); useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); + setProfile(props.profile); + }, [props.profile]); const checkRequiredFields = () => { let isValid = true; @@ -290,10 +291,12 @@ const GeneralInfo = (props) => { try { const response = await axios.post(url, formData); setProfile((prevState) => { - return { ...prevState, [imageKey]: { - ...prevState[imageKey], - uuid: response.data.uuid - }}; + return { + ...prevState, [imageKey]: { + ...prevState[imageKey], + uuid: response.data.uuid + } + }; }); } catch (error) { console.error( @@ -327,12 +330,12 @@ const GeneralInfo = (props) => { e.target.value = ''; const imageUrl = e.target.name === 'banner' - ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/` - : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/`; + ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/` + : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/`; const setImage = e.target.name === 'banner' - ? setBannerImage - : setLogoImage; + ? setBannerImage + : setLogoImage; if (file && checkMaxImageSize(e.target.name, file)) { setImage(URL.createObjectURL(file)); await uploadImage(imageUrl, e.target.name, file); @@ -342,8 +345,8 @@ const GeneralInfo = (props) => { const deleteImageHandler = async (name) => { const imageUrl = name === 'banner' - ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/${profile.banner?.uuid}` - : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/${profile.logo?.uuid}`; + ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/${profile.banner?.uuid}` + : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/${profile.logo?.uuid}`; try { await axios.delete(imageUrl); if (name === 'banner') setBannerImage(null); @@ -352,12 +355,12 @@ const GeneralInfo = (props) => { setProfile((prevState) => { const newState = { ...prevState, [name]: null }; return newState; - }); - } catch (error) { - console.error('Error deleting image:', - error.response ? error.response.data : error.message); - toast.error('Не вдалося видалити банер/лого, сталася помилка'); - } + }); + } catch (error) { + console.error('Error deleting image:', + error.response ? error.response.data : error.message); + toast.error('Не вдалося видалити банер/лого, сталася помилка'); + } }; const errorMessages = { @@ -396,7 +399,7 @@ const GeneralInfo = (props) => { try { const response = await axios.patch( `${process.env.REACT_APP_BASE_API_URL}/api/profiles/${user.profile_id}`, - data.profileChanges + data.profileChanges ); profileMutate(response.data); toast.success('Зміни успішно збережено'); @@ -558,6 +561,7 @@ const GeneralInfo = (props) => { requiredField={true} />
+ ) : ( @@ -590,6 +594,5 @@ GeneralInfo.propTypes = { path: PropTypes.string, }), }).isRequired, - currentFormNameHandler: PropTypes.func, curForm: PropTypes.string, }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ProductServiceInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ProductServiceInfo.jsx index 54aade2c0..214b7d808 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ProductServiceInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ProductServiceInfo.jsx @@ -8,6 +8,7 @@ import defineChanges from '../../../utils/defineChanges'; import { useAuth, useProfile } from '../../../hooks'; import TextField from './FormFields/TextField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; const LABELS = { @@ -34,8 +35,8 @@ const ProductServiceInfo = (props) => { }, [mainProfile, profile]); useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); + setProfile(props.profile); + }, [props.profile]); const onUpdateTextAreaField = (e) => { if (e.target.value.length <= TEXT_AREA_MAX_LENGTH) @@ -94,6 +95,7 @@ const ProductServiceInfo = (props) => { maxLength={TEXT_AREA_MAX_LENGTH} />
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx index 376338db9..d3e23ff35 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx @@ -8,6 +8,7 @@ import defineChanges from '../../../utils/defineChanges'; import { useAuth, useProfile } from '../../../hooks'; import TextField from './FormFields/TextField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; const LABELS = { @@ -26,15 +27,15 @@ const StartupInfo = (props) => { startup_idea: { defaultValue: mainProfile?.startup_idea ?? null }, }; + useEffect(() => { + setProfile(props.profile); + }, [props.profile]); + useEffect(() => { const isDirty = checkFormIsDirty(fields, null, profile); setFormIsDirty(isDirty); }, [mainProfile, profile]); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); - const onUpdateTextAreaField = (e) => { if (e.target.value.length <= TEXT_AREA_MAX_LENGTH) setProfile((prevState) => { @@ -80,10 +81,11 @@ const StartupInfo = (props) => { label={LABELS.startup_idea} updateHandler={onUpdateTextAreaField} requiredField={false} - value={profile.startup_idea ?? ''} + value={profile?.startup_idea ?? ''} maxLength={TEXT_AREA_MAX_LENGTH} />
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx index 329f01315..58edfff0a 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx @@ -8,6 +8,7 @@ import checkFormIsDirty from '../../../utils/checkFormIsDirty'; import defineChanges from '../../../utils/defineChanges'; import HalfFormField from './FormFields/HalfFormField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; const LABELS = { @@ -46,14 +47,19 @@ const UserInfo = (props) => { person_position: { defaultValue: profile?.person_position ?? null }, }; + useEffect(() => { + setUpdateUser(props.user); + }, [props.user]); + + useEffect(() => { + setUpdateProfile(props.profile); + }, [props.profile]); + useEffect(() => { const isDirty = checkFormIsDirty(fields, updateUser, updateProfile); setFormIsDirty(isDirty); }, [user, profile, updateUser, updateProfile]); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); const errorMessageTemplates = { requiredField: 'Обов’язкове поле', @@ -137,18 +143,18 @@ const UserInfo = (props) => { } }; - const onBlurHandler = (e) => { - const { value: rawFieldValue, name: fieldName } = e.target; - const fieldValue = rawFieldValue.replace(/\s{2,}/g, ' ').trim(); - if (fieldName === 'person_position') { - setUpdateProfile((prevState) => ({ - ...prevState, - [fieldName]: fieldValue, - })); - } else { - setUpdateUser((prevState) => ({ ...prevState, [fieldName]: fieldValue })); - } - }; + // const onBlurHandler = (e) => { + // const { value: rawFieldValue, name: fieldName } = e.target; + // const fieldValue = rawFieldValue.replace(/\s{2,}/g, ' ').trim(); + // if (fieldName === 'person_position') { + // setUpdateProfile((prevState) => ({ + // ...prevState, + // [fieldName]: fieldValue, + // })); + // } else { + // setUpdateUser((prevState) => ({ ...prevState, [fieldName]: fieldValue })); + // } + // }; const handleSubmit = async (event) => { event.preventDefault(); @@ -200,9 +206,8 @@ const UserInfo = (props) => { noValidate >
{ name="surname" label={LABELS.surname} updateHandler={onUpdateField} - onBlur={onBlurHandler} + // onBlur={onBlurHandler} error={ formStateErr['surname']['error'] ? formStateErr['surname']['message'] @@ -225,7 +230,7 @@ const UserInfo = (props) => { name="name" label={LABELS.name} updateHandler={onUpdateField} - onBlur={onBlurHandler} + // onBlur={onBlurHandler} error={ formStateErr['name']['error'] ? formStateErr['name']['message'] @@ -242,7 +247,7 @@ const UserInfo = (props) => { name="person_position" label={LABELS.person_position} updateHandler={onUpdateField} - onBlur={onBlurHandler} + // onBlur={onBlurHandler} error={ formStateErr['person_position']?.['error'] ? formStateErr['person_position']['message'] @@ -261,6 +266,7 @@ const UserInfo = (props) => { />
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/Accordion.jsx b/FrontEnd/src/pages/ProfilePage/Mobile/Accordion.jsx new file mode 100644 index 000000000..95dc8c47b --- /dev/null +++ b/FrontEnd/src/pages/ProfilePage/Mobile/Accordion.jsx @@ -0,0 +1,14 @@ +import AccordionItem from './AccordionItem'; + +const Accordion = ({ sections }) => { + + return ( +
+ {sections.map((section, index) => ( + + ))} +
+ ); +}; + +export default Accordion; \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/Accordion.module.css b/FrontEnd/src/pages/ProfilePage/Mobile/Accordion.module.css new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.jsx b/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.jsx new file mode 100644 index 000000000..39e1d03a5 --- /dev/null +++ b/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.jsx @@ -0,0 +1,23 @@ +import { useState } from 'react'; +import css from './AccordionItem.module.css'; + +const AccordionItem = (props) => { + const [isOpen, setIsOpen] = useState(false); + + const toggle = () => { + setIsOpen(!isOpen); + }; + + return ( +
+ +
+ {props.content} +
+
+ ); +}; + +export default AccordionItem; \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.module.css b/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.module.css new file mode 100644 index 000000000..0d2e6e98e --- /dev/null +++ b/FrontEnd/src/pages/ProfilePage/Mobile/AccordionItem.module.css @@ -0,0 +1,39 @@ +.accordion-content { + max-height: 1100px; + transition: max-height 1s ease-in-out; + overflow: hidden; + border-radius: 6px; +} + +.accordion-content.close { + max-height: 0; +} + +.accordion-button { + display: flex; + background-color: var(--main-white); + font-family: var(--font-main); + font-size: 16px; + width: 335px; + margin-left: 3px; + text-align: left; + padding: 4px 6px; + position: relative; + border-radius: 10px; + padding-top: 13px; + height: 49px; + cursor: pointer; +} + +.accordion-button img { + top: 20px; + position: absolute; + right: 5px; +} + +.accordion-item { + border-radius: 6px; + width: 342px; + background-color: var(--main-white); + margin: 6px; +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx new file mode 100644 index 000000000..8f2b8eed0 --- /dev/null +++ b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx @@ -0,0 +1,38 @@ +import Accordion from './Accordion'; +import AdditionalInfo from '../FormComponents/AdditionalInfo'; +import ContactsInfo from '../FormComponents/ContactsInfo'; +import DeleteProfilePage from '../FormComponents/DeleteProfileComponent/DeleteProfilePage'; +import GeneralInfo from '../FormComponents/GeneralInfo'; +import ProductServiceInfo from '../FormComponents/ProductServiceInfo'; +import StartupInfo from '../FormComponents/StartupInfo'; +import UserInfo from '../FormComponents/UserInfo'; +import ChangePassword from '../FormComponents/ChangePassword'; +import { useAuth, useProfile } from '../../../hooks'; +import css from './EditProfileMobile.module.css'; + + + + +const EditProfileMobile = () => { + const { user } = useAuth(); + const { profile } = useProfile(); + const sections = [ + { title: 'Інформація про користувача', content: }, + { title: 'Загальна інформація', content: }, + { title: 'Контакти', content: }, + { title: 'Інформація про товари/послуги', content: }, + { title: 'Додаткова інформація', content: }, + { title: 'Стартап', content: }, + { title: 'Змінити пароль', content: }, + { title: 'Видалити профіль', content: }, + ]; + + return ( +
+

Профіль користувача

+ +
+ ); +}; + +export default EditProfileMobile; \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css new file mode 100644 index 000000000..142b6914c --- /dev/null +++ b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css @@ -0,0 +1,13 @@ +.container { + width: 375px; + padding: 20px 16px; + background-color: #F9F5EC; + margin: auto; +} + +.head { + font-family: var(--font-main); + font-size: 20px; + font-weight: 700; + padding: 14px 8px; +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/ProfilePage.jsx b/FrontEnd/src/pages/ProfilePage/ProfilePage.jsx index 7de127d7b..4c16eae8e 100644 --- a/FrontEnd/src/pages/ProfilePage/ProfilePage.jsx +++ b/FrontEnd/src/pages/ProfilePage/ProfilePage.jsx @@ -1,41 +1,64 @@ import css from './ProfilePage.module.css'; import Description from './ProfilePageComponents/Description'; import ProfileContent from './ProfilePageComponents/ProfileContent'; -import { useState } from 'react'; -import BreadCrumbs from '../../components/BreadCrumbs/BreadCrumbs'; +import { useState, useEffect } from 'react'; +import { DirtyFormContext } from '../../context/DirtyFormContext'; import Loader from '../../components/Loader/Loader'; import { useAuth, useProfile } from '../../hooks'; +import useWindowWidth from '../../hooks/useWindowWidth'; +import EditProfileMobile from './Mobile/EditProfileMobile'; const ProfilePage = () => { + const [formIsDirty, setFormIsDirty] = useState(false); const { user } = useAuth(); const { profile } = useProfile(); - const [formName, setFormName] = useState(''); + const windowWidth = useWindowWidth(); - const currentFormNameHandler = (currentName) => { - setFormName(currentName); - }; + useEffect(() => { + const onBeforeUnload = (e) => { + if (formIsDirty) { + e.preventDefault(); + e.returnValue = ''; + } + }; + window.addEventListener('beforeunload', onBeforeUnload); + return () => { + window.removeEventListener('beforeunload', onBeforeUnload); + }; + }, [formIsDirty]); + + + if (windowWidth < 768) { + return ( + <> + + + + + ); + } return (
- - {!profile ? ( - - ) : ( - <> - - - - )} -
+ + {!profile ? ( + + ) : ( + <> + + + + )} + +
); }; diff --git a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx index c1e2a89a9..3546e7fdc 100644 --- a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx +++ b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx @@ -1,16 +1,16 @@ import { PropTypes } from 'prop-types'; import css from './Description.module.css'; -const DESCRIPTIONS = { - UserInfo: 'Інформація про користувача платформи', - GeneralInfo: 'Інформація про компанію', - ContactsInfo: 'Інформація про компанію', - ProductServiceInfo: 'Інформація про компанію', - AdditionalInfo: 'Інформація про компанію', - StartupInfo: 'Інформація про стартап', - Delete: 'Видалення профілю', - ChangePassword: 'Зміна паролю користувача', -}; +// const DESCRIPTIONS = { +// UserInfo: 'Інформація про користувача платформи', +// GeneralInfo: 'Інформація про компанію', +// ContactsInfo: 'Інформація про компанію', +// ProductServiceInfo: 'Інформація про компанію', +// AdditionalInfo: 'Інформація про компанію', +// StartupInfo: 'Інформація про стартап', +// Delete: 'Видалення профілю', +// ChangePassword: 'Зміна паролю користувача', +// }; const Description = (props) => { return ( @@ -28,7 +28,6 @@ const Description = (props) => {
{props.companyName}
- {DESCRIPTIONS[props.formName]}
@@ -40,5 +39,4 @@ export default Description; Description.propTypes = { companyName: PropTypes.string, companyLogo: PropTypes.string, - formName: PropTypes.string, }; diff --git a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/ProfileContent.jsx b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/ProfileContent.jsx index 0e4e89ee0..1a0cb1875 100644 --- a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/ProfileContent.jsx +++ b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/ProfileContent.jsx @@ -1,7 +1,7 @@ import { Tooltip } from 'antd'; import { PropTypes } from 'prop-types'; import { Link, NavLink, Route, Routes, useBlocker } from 'react-router-dom'; -import { useEffect, useState } from 'react'; +import { useEffect, useState,useContext } from 'react'; import { DirtyFormContext } from '../../../context/DirtyFormContext'; import AdditionalInfo from '../FormComponents/AdditionalInfo'; import ContactsInfo from '../FormComponents/ContactsInfo'; @@ -10,19 +10,17 @@ import GeneralInfo from '../FormComponents/GeneralInfo'; import ProductServiceInfo from '../FormComponents/ProductServiceInfo'; import StartupInfo from '../FormComponents/StartupInfo'; import UserInfo from '../FormComponents/UserInfo'; -import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import MyModal from '../UI/MyModal/MyModal'; import WarnUnsavedDataModal from '../FormComponents/WarnUnsavedDataModal'; import ChangePassword from '../FormComponents/ChangePassword'; import css from './ProfileContent.module.css'; import tooltipInnerContentStyles from '../../CustomThemes/customProfileTooltipThemes'; import INFOLINKS from './TextInfoLinks'; -import FORM_NAMES from './TextFormNames'; const ProfileContent = (props) => { const [modal, setModal] = useState(false); - const [formIsDirty, setFormIsDirty] = useState(false); + const { formIsDirty, setFormIsDirty } = useContext(DirtyFormContext); const blocker = useBlocker( ({ currentLocation, nextLocation }) => formIsDirty && @@ -48,18 +46,7 @@ const ProfileContent = (props) => { setModal(false); }; - useEffect(() => { - const onBeforeUnload = (e) => { - if (formIsDirty) { - e.preventDefault(); - e.returnValue = ''; - } - }; - window.addEventListener('beforeunload', onBeforeUnload); - return () => { - window.removeEventListener('beforeunload', onBeforeUnload); - }; - }, [formIsDirty]); + return (
@@ -109,59 +96,41 @@ const ProfileContent = (props) => { Видалити профіль
- + } /> + profile={props.profile} />} /> } /> + profile={props.profile} />} /> } /> + profile={props.profile} />} /> } /> + profile={props.profile} />} /> } /> + profile={props.profile} />} /> } /> + profile={props.profile} />} /> } /> + element={} /> } /> + user={props.user} />} /> - -
- {props.formName !== 'Delete' && } +
{blocker.state === 'blocked' && ( @@ -198,6 +167,4 @@ ProfileContent.propTypes = { categories: PropTypes.array, activities: PropTypes.array, }).isRequired, - currentFormNameHandler: PropTypes.func, - formName: PropTypes.string, }; diff --git a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx index 2f716b84b..e9b55bba7 100644 --- a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx +++ b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx @@ -4,10 +4,9 @@ const ProfileFormButton = (props) => { return (
From 769e3e2bc5bca09a382d305f4834f730130f3723 Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Tue, 12 Nov 2024 12:11:00 +0200 Subject: [PATCH 037/117] css adjustments for form fields, textareas --- .../ProfilePage/FormComponents/ContactsInfo.jsx | 3 +-- .../FormComponents/FormComponents.module.css | 3 ++- .../FormFields/HalfFormField.module.css | 12 ++++++++---- .../FormComponents/FormFields/TextField.module.css | 4 ++-- .../pages/ProfilePage/FormComponents/GeneralInfo.jsx | 3 +-- .../ProfilePage/Mobile/AccordionItem.module.css | 2 +- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx index 38f0054d0..b7abab15b 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx @@ -6,7 +6,6 @@ import { useAuth, useProfile } from '../../../hooks'; import checkFormIsDirty from '../../../utils/checkFormIsDirty'; import defineChanges from '../../../utils/defineChanges'; import { formatPhoneNumber } from '../../../utils/formatPhoneNumber'; -import FullField from './FormFields/FullField'; import HalfFormField from './FormFields/HalfFormField'; import Loader from '../../../components/Loader/Loader'; import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; @@ -138,7 +137,7 @@ const ContactsInfo = (props) => { error={phoneNumberError} />
- { maxLength={100} />
- Date: Tue, 12 Nov 2024 12:47:32 +0200 Subject: [PATCH 038/117] Change css for submit button --- .../FormComponents/AdditionalInfo.jsx | 2 ++ .../ProfileFormButton/ProfileFormButton.jsx | 6 ++-- .../ProfileFormButton.module.css | 34 ++++--------------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx index 7077f0f82..07855becc 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx @@ -8,6 +8,7 @@ import defineChanges from '../../../utils/defineChanges'; import { useAuth, useProfile } from '../../../hooks'; import HalfFormField from './FormFields/HalfFormField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; const LABELS = { @@ -112,6 +113,7 @@ const AdditionalInfo = (props) => { />
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx index e9b55bba7..f8e357f00 100644 --- a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx +++ b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.jsx @@ -2,13 +2,13 @@ import css from './ProfileFormButton.module.css'; const ProfileFormButton = (props) => { return ( -
+
); diff --git a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.module.css b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.module.css index a30e8a64a..3761e63e6 100644 --- a/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.module.css +++ b/FrontEnd/src/pages/ProfilePage/UI/ProfileFormButton/ProfileFormButton.module.css @@ -1,38 +1,18 @@ -.sign-up-footer__buttons { +.submit-button__conteiner { display: flex; align-items: flex-start; - padding: 6px 0px; - background: #EFFFF6; - width: var(--main-block-size); + padding: 11px 7px; + background-color: var(--main-white); } -.sign-up__button { - display: flex; - justify-content: center; - align-items: center; - gap: 10px; - border-radius: 4px; - border: 1px solid #1F9A7C; - background: #1F9A7C; - box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.04); - color: white; - text-align: center; - font-feature-settings: 'calt' off; - font-style: normal; - padding: 5px 15px 5px 15px; +.submit-button { border-radius: 4px; - border: 1px; - gap: 10px; + background: var(--main-button-color); + color: var(--main-white); + padding: 10px 16px; font-family: var(--font-main); font-size: 16px; font-weight: 600; line-height: 20px; - letter-spacing: -0.01em; - text-align: center; cursor: pointer; - margin-left: 430px; -} - -.sign-up__button:active { - transform: translateY(2px); } From 66d71403455f7267dd7867ad5b15835b5063e2ae Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Tue, 12 Nov 2024 13:52:31 +0200 Subject: [PATCH 039/117] Adjust ChangePassword inputs --- .../FormComponents/ChangePassword.module.css | 3 +-- .../FormFields/PasswordField.jsx | 2 +- .../FormFields/PasswordField.module.css | 19 +++++++------------ .../Mobile/EditProfileMobile.module.css | 2 +- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css index 776533af1..1fba01340 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css @@ -1,5 +1,4 @@ .form__container { word-wrap: break-word; - width: 530px; - margin-left: 10px; + margin-left: 15px; } \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx index 5f0060e1f..b1bf8bf39 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx @@ -57,7 +57,7 @@ const PasswordField = (props) => { onKeyDown={preventEnterSubmit} id={inputId} type={showPassword ? 'text' : 'password'} - placeholder={label} + // placeholder={label} {...register(name, { required: errorMessages.requiredField, pattern: checkValid && { diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css index 4c298d864..c8df65002 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.module.css @@ -45,6 +45,10 @@ .password-field__item input { border: none; + font-family: 'Geologica'; + font-size: 14px; + font-weight: 400; + line-height: 22px; } .password-field__item input:focus { @@ -52,17 +56,6 @@ outline: none; } -.password-field__item input::placeholder { - font-style: normal; - font-family: "Inter", sans-serif; - font-size: 14px; - font-weight: 400; - line-height: 22px; - letter-spacing: -0.01em; - text-align: left; - color: #00000040; -} - .password-field__password { display: flex; padding: 4px 12px; @@ -72,6 +65,8 @@ border-radius: 2px; border: 1px solid #d9d9d9; background: #fff; + height: 30.5px; + width: 285.5px; } .password-field__password:focus { @@ -112,7 +107,7 @@ } .error-dot::before { - margin-left: -8px; + margin-left: -11px; content: "*"; color: #ff4d4f; text-align: right; diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css index 142b6914c..ddce67b96 100644 --- a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css +++ b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.module.css @@ -1,5 +1,5 @@ .container { - width: 375px; + width: 343px; padding: 20px 16px; background-color: #F9F5EC; margin: auto; From 650910bb97d81355fb2523362f8217ff9380d067 Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Tue, 12 Nov 2024 14:09:20 +0200 Subject: [PATCH 040/117] Delete some redundant code --- .../FormFields/PasswordField.jsx | 1 - .../FormComponents/GeneralInfo.jsx | 22 +++++++------- .../ProfilePage/FormComponents/UserInfo.jsx | 30 +++++++++---------- .../ProfilePageComponents/Description.jsx | 11 ------- 4 files changed, 25 insertions(+), 39 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx index b1bf8bf39..ad32f908f 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/PasswordField.jsx @@ -57,7 +57,6 @@ const PasswordField = (props) => { onKeyDown={preventEnterSubmit} id={inputId} type={showPassword ? 'text' : 'password'} - // placeholder={label} {...register(name, { required: errorMessages.requiredField, pattern: checkValid && { diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx index 84620d474..ec2b0a8f8 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx @@ -290,12 +290,10 @@ const GeneralInfo = (props) => { try { const response = await axios.post(url, formData); setProfile((prevState) => { - return { - ...prevState, [imageKey]: { - ...prevState[imageKey], - uuid: response.data.uuid - } - }; + return { ...prevState, [imageKey]: { + ...prevState[imageKey], + uuid: response.data.uuid + }}; }); } catch (error) { console.error( @@ -329,12 +327,12 @@ const GeneralInfo = (props) => { e.target.value = ''; const imageUrl = e.target.name === 'banner' - ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/` - : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/`; + ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/` + : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/`; const setImage = e.target.name === 'banner' - ? setBannerImage - : setLogoImage; + ? setBannerImage + : setLogoImage; if (file && checkMaxImageSize(e.target.name, file)) { setImage(URL.createObjectURL(file)); await uploadImage(imageUrl, e.target.name, file); @@ -344,8 +342,8 @@ const GeneralInfo = (props) => { const deleteImageHandler = async (name) => { const imageUrl = name === 'banner' - ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/${profile.banner?.uuid}` - : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/${profile.logo?.uuid}`; + ? `${process.env.REACT_APP_BASE_API_URL}/api/image/banner/${profile.banner?.uuid}` + : `${process.env.REACT_APP_BASE_API_URL}/api/image/logo/${profile.logo?.uuid}`; try { await axios.delete(imageUrl); if (name === 'banner') setBannerImage(null); diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx index 58edfff0a..63e41f35b 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx @@ -143,18 +143,18 @@ const UserInfo = (props) => { } }; - // const onBlurHandler = (e) => { - // const { value: rawFieldValue, name: fieldName } = e.target; - // const fieldValue = rawFieldValue.replace(/\s{2,}/g, ' ').trim(); - // if (fieldName === 'person_position') { - // setUpdateProfile((prevState) => ({ - // ...prevState, - // [fieldName]: fieldValue, - // })); - // } else { - // setUpdateUser((prevState) => ({ ...prevState, [fieldName]: fieldValue })); - // } - // }; + const onBlurHandler = (e) => { + const { value: rawFieldValue, name: fieldName } = e.target; + const fieldValue = rawFieldValue.replace(/\s{2,}/g, ' ').trim(); + if (fieldName === 'person_position') { + setUpdateProfile((prevState) => ({ + ...prevState, + [fieldName]: fieldValue, + })); + } else { + setUpdateUser((prevState) => ({ ...prevState, [fieldName]: fieldValue })); + } + }; const handleSubmit = async (event) => { event.preventDefault(); @@ -215,7 +215,7 @@ const UserInfo = (props) => { name="surname" label={LABELS.surname} updateHandler={onUpdateField} - // onBlur={onBlurHandler} + onBlur={onBlurHandler} error={ formStateErr['surname']['error'] ? formStateErr['surname']['message'] @@ -230,7 +230,7 @@ const UserInfo = (props) => { name="name" label={LABELS.name} updateHandler={onUpdateField} - // onBlur={onBlurHandler} + onBlur={onBlurHandler} error={ formStateErr['name']['error'] ? formStateErr['name']['message'] @@ -247,7 +247,7 @@ const UserInfo = (props) => { name="person_position" label={LABELS.person_position} updateHandler={onUpdateField} - // onBlur={onBlurHandler} + onBlur={onBlurHandler} error={ formStateErr['person_position']?.['error'] ? formStateErr['person_position']['message'] diff --git a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx index 3546e7fdc..cda34aab2 100644 --- a/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx +++ b/FrontEnd/src/pages/ProfilePage/ProfilePageComponents/Description.jsx @@ -1,17 +1,6 @@ import { PropTypes } from 'prop-types'; import css from './Description.module.css'; -// const DESCRIPTIONS = { -// UserInfo: 'Інформація про користувача платформи', -// GeneralInfo: 'Інформація про компанію', -// ContactsInfo: 'Інформація про компанію', -// ProductServiceInfo: 'Інформація про компанію', -// AdditionalInfo: 'Інформація про компанію', -// StartupInfo: 'Інформація про стартап', -// Delete: 'Видалення профілю', -// ChangePassword: 'Зміна паролю користувача', -// }; - const Description = (props) => { return (
From 822af58c11f504b27485875f3e51c84e8e6dd5ee Mon Sep 17 00:00:00 2001 From: romanmyko Date: Tue, 12 Nov 2024 18:03:50 +0200 Subject: [PATCH 041/117] decore baner --- ...baner-31x29.svg => empty-decore-31x29.svg} | 0 FrontEnd/public/svg/empty-decore-50x46.svg | 23 +++++++++++++++++++ .../ProfileDetailBaner/BannerImage.jsx | 2 +- .../ProfileDetailBaner/BannerImage.module.css | 8 ++++++- 4 files changed, 31 insertions(+), 2 deletions(-) rename FrontEnd/public/svg/{empty-baner-31x29.svg => empty-decore-31x29.svg} (100%) create mode 100644 FrontEnd/public/svg/empty-decore-50x46.svg diff --git a/FrontEnd/public/svg/empty-baner-31x29.svg b/FrontEnd/public/svg/empty-decore-31x29.svg similarity index 100% rename from FrontEnd/public/svg/empty-baner-31x29.svg rename to FrontEnd/public/svg/empty-decore-31x29.svg diff --git a/FrontEnd/public/svg/empty-decore-50x46.svg b/FrontEnd/public/svg/empty-decore-50x46.svg new file mode 100644 index 000000000..3eb189b20 --- /dev/null +++ b/FrontEnd/public/svg/empty-decore-50x46.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx index 6242a4da4..7cef78f95 100644 --- a/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx +++ b/FrontEnd/src/pages/ProfileDetail/ProfileDetailBaner/BannerImage.jsx @@ -4,7 +4,7 @@ import classes from './BannerImage.module.css'; function BannerImage({ data }) { const backgroundImage = data?.banner?.path ? `url(${data.banner.path}) lightgray center / cover no-repeat` - : `url(${process.env.REACT_APP_PUBLIC_URL}/svg/empty-baner-31x29.svg) #e0e0e0 left top / 100px 68px repeat `; + : `url(${process.env.REACT_APP_PUBLIC_URL}/svg/empty-decore-50x46.svg) #e0e0e0 left top / 50px 46px repeat `; return (
Date: Wed, 13 Nov 2024 12:04:49 +0200 Subject: [PATCH 042/117] updated css for 404 page --- FrontEnd/package-lock.json | 1 + .../src/pages/ErrorPages/ErrorPage404.jsx | 4 +- .../pages/ErrorPages/ErrorPage404.module.css | 212 +++++++++++++++++- 3 files changed, 210 insertions(+), 7 deletions(-) diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index 5babb6489..5da80b246 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -9993,6 +9993,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/hamburger-react/-/hamburger-react-2.5.1.tgz", "integrity": "sha512-XlTIinYeYzLu76q4Vd9olwOJP0hFgAeZfJFX6tTT/ufTLhmOjI77CGFYIwGc6gcDeeT86660ZoKx3/L67vdZEw==", + "license": "MIT", "peerDependencies": { "react": "^16.8 || ^17 || ^18" } diff --git a/FrontEnd/src/pages/ErrorPages/ErrorPage404.jsx b/FrontEnd/src/pages/ErrorPages/ErrorPage404.jsx index 3be512e1c..6c4508643 100644 --- a/FrontEnd/src/pages/ErrorPages/ErrorPage404.jsx +++ b/FrontEnd/src/pages/ErrorPages/ErrorPage404.jsx @@ -15,8 +15,8 @@ export default function ErrorPage404() { або тимчасово недоступна.

-
diff --git a/FrontEnd/src/pages/ErrorPages/ErrorPage404.module.css b/FrontEnd/src/pages/ErrorPages/ErrorPage404.module.css index 22aac1b6d..262238577 100644 --- a/FrontEnd/src/pages/ErrorPages/ErrorPage404.module.css +++ b/FrontEnd/src/pages/ErrorPages/ErrorPage404.module.css @@ -1,19 +1,23 @@ -.ErrorPage404__page { - min-height: var(--min-height-block-main); +/* .ErrorPage404__page { + height: 463px; + min-width: 375px; display: flex; justify-content: center; - background: var(--primary-green-80, #1f9a7c); - + background: var(--join-us-main-color, #B4D27A); } .ErrorPage404__container { display: flex; + flex-direction: column; align-items: center; gap: 80px; font-family: var(--font-main); - color: var(--primary-green-20, #effff6); + color: var(--main-grey-90, #25292c); font-feature-settings: "calt" off; font-style: normal; + height: 303px; + width: 100%; + padding-top: 100px; } .ErrorPage404__text404 { @@ -56,6 +60,204 @@ letter-spacing: -0.16px; } +.ErrorPage404__button { + background: #000000; + color: #FFFFFF; + border: none; + cursor: pointer; +} + .ErrorPage404__button-text { font-family: var(--font-main); } + + + +@media only screen and (min-width: 768px) { + .ErrorPage404__page { + height: 598px; + width: 768px; + } + .ErrorPage404__container { + padding-top: 100px; + height: 390px; + width: 558px; + } +} + + +@media only screen and (min-width: 1200px) { + .ErrorPage404__page { + height: 418px; + width: 1512px; + } + .ErrorPage404__container { + flex-direction: row; + padding-top: 100px; + height: 178px; + width: 1036px; + } +} */ + + +.ErrorPage404__page { + background: var(--join-us-main-color, #B4D27A); + width: 100%; + height: 463px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + box-sizing: border-box; +} + +.ErrorPage404__container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 20px; + font-family: var(--font-main); + max-width: 343px; +} + + +.ErrorPage404__text404 { + font-size: 96px; + font-weight: 600; + line-height: 1.2; + color: var(--main-grey-90, #25292c); + margin: 0; +} + + +.ErrorPage404__block { + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; +} + +.ErrorPage404__explanation { + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; +} + + +.ErrorPage404__main-text { + font-size: 32px; + font-weight: 700; + color: var(--main-grey-90, #25292c); + margin: 0; + line-height: 1.2; +} + + +.ErrorPage404__details { + font-size: 14px; + color: var(--main-grey-90, #25292c); + margin: 0; + font-weight: 400; + line-height: 1.5; +} + + +.ErrorPage404__button { + background-color: #000000; + color: #FFFFFF; + padding: 20px 24px; + border: none; + border-radius: 4px; + cursor: pointer; + text-align: center; + max-width: 206px; +} + +.ErrorPage404__button-text { + color: #FFFFFF; + text-decoration: none; + font-size: 14px; +} + +@media only screen and (min-width: 768px) { + .ErrorPage404__page { + height: 598px; + } + + .ErrorPage404__container { + max-width: 558px; + gap: 20px; + padding-bottom: 40px; + text-align: start; + } + + .ErrorPage404__text404 { + font-size: 200px; + } + + .ErrorPage404__main-text { + font-size: 48px; + } + + .ErrorPage404__details { + font-size: 16px; + } + + .ErrorPage404__button { + max-width: 231px; + padding: 10px 24px; + } +} + + +@media only screen and (min-width: 1200px) { + .ErrorPage404__container { + flex-direction: row; + justify-content: space-between; + align-items: center; + max-width: 1512px; + padding: 0 40px; + gap: 50px; + } + + .ErrorPage404__text404 { + font-size: 200px; + line-height: 1; + margin-right: 40px; + } + + .ErrorPage404__block { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 20px; + max-width: 500px; + } + + .ErrorPage404__explanation { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 24px; + } + + .ErrorPage404__main-text { + font-size: 48px; + line-height: 1.2; + } + + .ErrorPage404__details { + display: flex; + flex-direction: column; + align-items: flex-start; + font-size: 18px; + } + + .ErrorPage404__button { + max-width: 250px; + padding: 20px 40px; + } +} \ No newline at end of file From 7ce8c55de4bb4f1468567568dd729c5e4f58c287 Mon Sep 17 00:00:00 2001 From: Ostap Ohorodnyk Date: Wed, 13 Nov 2024 14:12:04 +0200 Subject: [PATCH 043/117] removed redundant css styles --- FrontEnd/src/pages/LandingPage/Banner/Banner.module.css | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css index a4760d0ca..f28729247 100644 --- a/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css +++ b/FrontEnd/src/pages/LandingPage/Banner/Banner.module.css @@ -9,7 +9,6 @@ display:flex; justify-content: center; flex-direction:row; - background-color: #B4D27A; padding: 32px 104px 32px 104px; } @@ -50,7 +49,7 @@ .main-banner-link{ font-family: Geologica; - font-size:15px; + font-size: 15px; font-weight: 500; line-height: 20px; letter-spacing: -0.01em; @@ -64,10 +63,8 @@ @media (min-width: 768px) and (max-width: 1511px) { .main-container{ - display:flex; - justify-content: center; flex-direction:column-reverse; - background-color: #B4D27A; + } .main-baner-text{ display: flex; @@ -86,7 +83,6 @@ } .main-banner__img{ max-width: 100%; - height: auto; } } @@ -132,6 +128,5 @@ } .main-banner__img{ max-width: 344px; - height: auto; } } From fb6b85acdcb993d8903bb74d85b1d105f9b96e60 Mon Sep 17 00:00:00 2001 From: romanmyko Date: Wed, 13 Nov 2024 17:10:59 +0200 Subject: [PATCH 044/117] styles contacts and top button --- .../ScrollToTopButton.module.css | 9 ++++++++- .../DataContacts/DataContacts.module.css | 19 ++++++++++++++----- .../DetailedInfoSection.module.css | 6 +++--- .../TitelInfo/TitleInfo.module.css | 1 - 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/FrontEnd/src/components/Footer/FooterComponents/ScrollToTopButton.module.css b/FrontEnd/src/components/Footer/FooterComponents/ScrollToTopButton.module.css index f3e163c8a..20b2313e5 100644 --- a/FrontEnd/src/components/Footer/FooterComponents/ScrollToTopButton.module.css +++ b/FrontEnd/src/components/Footer/FooterComponents/ScrollToTopButton.module.css @@ -1,13 +1,14 @@ .scroll-to-top-button { position: fixed; bottom: 30px; - left: 90%; + left: 80%; width: 40px; height: 40px; background-color: var(--footer-scroll-button); color: white; border: none; border-radius: 50%; + border: 1px solid gray; font-size: 20px; display: flex; justify-content: center; @@ -24,3 +25,9 @@ .scroll-to-top-button:hover { background-color: var(--footer-scroll-button); } + +@media only screen and (min-width: 1512px) { + .scroll-to-top-button { + left: 95%; + } +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css index 7d7f4f234..72c4e952f 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DataContacts/DataContacts.module.css @@ -9,7 +9,7 @@ .data-content { display: flex; padding: 16px; - width: 100%; + min-width: calc(100vw - 48px); flex-direction: column; align-items: flex-start; gap: 32px; @@ -78,15 +78,24 @@ gap: 8px; } - @media only screen and (min-width: 768px) { .data-block__field--value { - width: 589px; + min-width: 589px; + } + + .data-content { + min-width: 700px; + ; } } @media only screen and (min-width: 1512px) { .data-block__field--value { - width: 200px; + min-width: 200px; } -} \ No newline at end of file + + .data-content { + width: 344px; + min-width: 344px; + } +} diff --git a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css index eb5939595..28ae0908d 100644 --- a/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css +++ b/FrontEnd/src/pages/ProfileDetail/DetailedInfo/DetailedInfoSection.module.css @@ -7,12 +7,12 @@ .detail-info-page { display: flex; flex-direction: column; - width: 375px; - padding: 24px 16px; + min-width: 344px; + padding: 24px 10px; } .company-description-block { - width: 375px; + width: 100%; } .profile-detail__tags-mobile { diff --git a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css index 641ddafb8..cecc9329e 100644 --- a/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css +++ b/FrontEnd/src/pages/ProfileDetail/TitelInfo/TitleInfo.module.css @@ -105,7 +105,6 @@ display: flex; height: 46px; width: 345px; - padding: 7px 16px; justify-content: center; align-items: center; gap: 4px; From 4cc2acad1422c422b28440df28926f0a1c2631cd Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Thu, 14 Nov 2024 10:20:50 +0200 Subject: [PATCH 045/117] Add optional chaining into checkFormIsDirty --- FrontEnd/src/utils/checkFormIsDirty.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FrontEnd/src/utils/checkFormIsDirty.js b/FrontEnd/src/utils/checkFormIsDirty.js index 4c9b5dc1d..2d58f5809 100644 --- a/FrontEnd/src/utils/checkFormIsDirty.js +++ b/FrontEnd/src/utils/checkFormIsDirty.js @@ -45,7 +45,7 @@ const checkFormIsDirty = (fields, userData, profileData) => { } if (key === 'founded') { - if ((defaultValue !== null && currentValue !== null && defaultValue.toString() !== currentValue.toString()) || + if ((defaultValue !== null && currentValue !== null && defaultValue?.toString() !== currentValue?.toString()) || (defaultValue === null && (currentValue !== null && currentValue !== ''))) { return true; } From 22d3e8e73109cf75c29f765cb109a6d1e6d57aa3 Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Thu, 14 Nov 2024 11:20:09 +0200 Subject: [PATCH 046/117] Change structure and Loader rendering logic, remove apparently redundant useEffects from profile editing form components --- .../FormComponents/AdditionalInfo.jsx | 4 -- .../FormComponents/ContactsInfo.jsx | 4 -- .../FormComponents/FormFields/ImageField.jsx | 1 - .../FormComponents/GeneralInfo.jsx | 4 -- .../FormComponents/StartupInfo.jsx | 4 -- .../ProfilePage/FormComponents/UserInfo.jsx | 8 ---- .../ProfilePage/Mobile/EditProfileMobile.jsx | 38 ++++++++++--------- 7 files changed, 21 insertions(+), 42 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx index 07855becc..61a982bc4 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/AdditionalInfo.jsx @@ -33,10 +33,6 @@ const AdditionalInfo = (props) => { setFormIsDirty(isDirty); }, [mainProfile, profile]); - useEffect(() => { - setProfile(props.profile); - }, [props.profile]); - const onUpdateFoundationYearField = (e) => { const currentYear = new Date().getFullYear(); const year = Number(e.target.value); diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx index b7abab15b..812020b6c 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx @@ -37,10 +37,6 @@ const ContactsInfo = (props) => { const inputRef = useMask({ mask: '+380XX XXX XX XX', replacement: { X: /\d/ } }); - useEffect(() => { - setProfile(props.profile); - }, [props.profile]); - useEffect(() => { if (mainProfile?.phone) { setProfile((prevState) => ({ diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/ImageField.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/ImageField.jsx index 84b8c86c0..f262fb46b 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/ImageField.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/ImageField.jsx @@ -121,7 +121,6 @@ const ImageField = ({
- {renderInput()} {renderUpdateImageLabel('змінити')} {renderDeleteButton('видалити')}
diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx index ec2b0a8f8..6dc8ef2a2 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/GeneralInfo.jsx @@ -105,10 +105,6 @@ const GeneralInfo = (props) => { setFormIsDirty(isDirty); }, [mainProfile, profile]); - useEffect(() => { - setProfile(props.profile); - }, [props.profile]); - const checkRequiredFields = () => { let isValid = true; const newFormState = {}; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx index d3e23ff35..f4ce14bea 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/StartupInfo.jsx @@ -27,10 +27,6 @@ const StartupInfo = (props) => { startup_idea: { defaultValue: mainProfile?.startup_idea ?? null }, }; - useEffect(() => { - setProfile(props.profile); - }, [props.profile]); - useEffect(() => { const isDirty = checkFormIsDirty(fields, null, profile); setFormIsDirty(isDirty); diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx index 63e41f35b..2a1885d8a 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/UserInfo.jsx @@ -47,14 +47,6 @@ const UserInfo = (props) => { person_position: { defaultValue: profile?.person_position ?? null }, }; - useEffect(() => { - setUpdateUser(props.user); - }, [props.user]); - - useEffect(() => { - setUpdateProfile(props.profile); - }, [props.profile]); - useEffect(() => { const isDirty = checkFormIsDirty(fields, updateUser, updateProfile); setFormIsDirty(isDirty); diff --git a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx index 8f2b8eed0..c2b03d6ad 100644 --- a/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx +++ b/FrontEnd/src/pages/ProfilePage/Mobile/EditProfileMobile.jsx @@ -7,6 +7,7 @@ import ProductServiceInfo from '../FormComponents/ProductServiceInfo'; import StartupInfo from '../FormComponents/StartupInfo'; import UserInfo from '../FormComponents/UserInfo'; import ChangePassword from '../FormComponents/ChangePassword'; +import Loader from '../../../components/Loader/Loader'; import { useAuth, useProfile } from '../../../hooks'; import css from './EditProfileMobile.module.css'; @@ -16,23 +17,26 @@ import css from './EditProfileMobile.module.css'; const EditProfileMobile = () => { const { user } = useAuth(); const { profile } = useProfile(); - const sections = [ - { title: 'Інформація про користувача', content: }, - { title: 'Загальна інформація', content: }, - { title: 'Контакти', content: }, - { title: 'Інформація про товари/послуги', content: }, - { title: 'Додаткова інформація', content: }, - { title: 'Стартап', content: }, - { title: 'Змінити пароль', content: }, - { title: 'Видалити профіль', content: }, - ]; - - return ( -
-

Профіль користувача

- -
- ); + if (user && profile) { + const sections = [ + { title: 'Інформація про користувача', content: }, + { title: 'Загальна інформація', content: }, + { title: 'Контакти', content: }, + { title: 'Інформація про товари/послуги', content: }, + { title: 'Додаткова інформація', content: }, + { title: 'Стартап', content: }, + { title: 'Змінити пароль', content: }, + { title: 'Видалити профіль', content: }, + ]; + return ( +
+

Профіль користувача

+ +
+ ); + } else { + return ; + } }; export default EditProfileMobile; \ No newline at end of file From d9c1ebf0f494177d8c4d103aff81696e9307a71d Mon Sep 17 00:00:00 2001 From: Yan Zhylavy Date: Thu, 14 Nov 2024 12:12:34 +0200 Subject: [PATCH 047/117] Fix issues related to html inputs and labels --- .../DeleteProfileComponent/DeleteProfileModal.jsx | 7 +++++-- .../FormComponents/FormFields/CheckBoxField.jsx | 4 +++- .../FormComponents/FormFields/HalfFormField.jsx | 5 ++++- .../ProfilePage/FormComponents/FormFields/ImageField.jsx | 1 + .../FormComponents/FormFields/MultipleSelectChip.jsx | 4 +++- .../ProfilePage/FormComponents/FormFields/TextField.jsx | 4 +++- .../src/pages/ProfilePage/FormComponents/GeneralInfo.jsx | 1 - 7 files changed, 19 insertions(+), 7 deletions(-) diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx index 6f3cf8658..6905c270c 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx @@ -68,23 +68,25 @@ const DeleteProfileModal = (props) => {
- +
{!isCorrectEmail && (
Некоректна пошта
)}
- +
{ placeholder="Пароль" onChange={passwordChangeHandler} onKeyDown={preventEnterSubmit} + autoComplete="off" /> {
{props.requiredField && ( - + * )}