From 2fbb259e62cc3ca906d3f3b95de04c9e0ea80b14 Mon Sep 17 00:00:00 2001 From: Gib Date: Mon, 7 Jul 2025 13:44:28 -0500 Subject: [PATCH] Cleaned up components and their props --- bun.lockb | Bin 374532 -> 373092 bytes package.json | 12 +- .../buttons/client/sign-in-with-apple.tsx | 22 ++-- .../buttons/client/sign-in-with-microsoft.tsx | 20 ++-- .../default/auth/buttons/client/sign-out.tsx | 2 +- .../buttons/server/sign-in-with-apple.tsx | 20 ++-- .../buttons/server/sign-in-with-microsoft.tsx | 20 ++-- .../auth/cards/client/forgot-password.tsx | 40 +++---- .../default/auth/cards/client/sign-in.tsx | 81 ++++++------- .../forms/client/profile/avatar-upload.tsx | 72 ++++++++++++ .../{ => client}/profile/profile-form.tsx | 0 .../profile/reset-password-form.tsx | 0 .../{ => server}/profile/avatar-upload.tsx | 0 .../forms/server/profile/profile-form.tsx | 0 .../server/profile/reset-password-form.tsx | 0 .../default/forms/status-message.tsx | 30 ++--- .../default/forms/submit-button.tsx | 14 +-- src/lib/hooks/context/use-query.tsx | 2 - src/lib/hooks/use-file-upload.ts | 106 ++++++++++++------ src/utils/supabase/types.ts | 10 ++ 20 files changed, 258 insertions(+), 193 deletions(-) create mode 100644 src/components/default/auth/forms/client/profile/avatar-upload.tsx rename src/components/default/auth/forms/{ => client}/profile/profile-form.tsx (100%) rename src/components/default/auth/forms/{ => client}/profile/reset-password-form.tsx (100%) rename src/components/default/auth/forms/{ => server}/profile/avatar-upload.tsx (100%) create mode 100644 src/components/default/auth/forms/server/profile/profile-form.tsx create mode 100644 src/components/default/auth/forms/server/profile/reset-password-form.tsx diff --git a/bun.lockb b/bun.lockb index 331110fd4277f407490d44684f7d7cc2b8d99a6c..c069b26daa9d20807448aee95fb4436eafa651ef 100755 GIT binary patch delta 62710 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

+1q)YvsJvH^Y!+v=?!5!0>c*CR{T|h z*V$&xxUDac0cL&ck=0%tih#$gz4}t3znN7CeY}c*>bw^L)iy*v#7JH3nLBlG(<*2f z>Bp{@J4FLWp<4a<2SB|K)IzQLl)D!$ORBHv89#9I=YOm>^tRVUa=`dv)YPYH`}9WP zO?~RYrK#Jmt|)h(K2X!130X%$mDf<1Mm}ba^(c8i>{Ylm)UN38e!W4JS<^!m$dQZ( zpigikY6<0p2KDg06ME0`QH_*QI3PAEn)flY?p?}tnss2Fjjlg1RbXIv`ZrMKd3sV~ zdUybO&S^}pf5I{ag|gvsEc@s}V@miFebs706G2Hk58~wN#X-GOAMFzhm3`Noa=AbF z9lO|<`n%;f^?493LO!t0weSZBZw}%PyCom-->4im? zj=a0^?79ha<~u5W2(FxUQ|}yp3uHX%tfQ?PP1@};)*^!-aSLQ;y}xUDb`ep z&_@gA39E{DBmNL9vN#@1=_!$-AcLFt$)Uu}NDBNpCUEjd!ubPofvRF#=GyB|(W^qmN=JeAWc+#!8G7*ewPPtsK;Z+Xg z`BraNelm#MAkm62%&I8g+s1zX$^XPcxkK3kXujnFqB2(#smJ5b|ICVdi=pA?K5CSE zq`%mbdL7mG5@PUiqoe2uEfOn1#Gx%Is~^hAEy-{U92U1!GFJMlB@If~9koR60}0vJ zY->vjKZYRFK9tmN!71zHv@imNzqgTXdATK}gGb;a@UVfL@y{}zwe}xW1r!0^zBRz( z12CMALzX8Tar!&qjm#a%0t31gJqCB7R4Z~n4j$!khQRYeP_v^?jfNtb{+4$Yg&5*j&s&W@n2C&BAEDAOH10ax>M!eu zbcUk{VAw_#)Anz8c(l<2Q`>v(=;JAUSl~TSu#cP$&$jq$!j=u7K!kAH3hi;~49w-U zil6FsNwWaP2NNAIHQQ5iHb#iT!%=YUIR7*huh5>HPa`mg z44k;Gl#O~rTvsLNzOOSct^e7phh(ATJW;+CiD&eop)KJ2TZW}~}^wj971t|8|@`Jp=%M`>{Gp(MCfoqzbSe9f)p z^5l%b!trSjx_%xMZ9w6GmgTB-Y;iue!!#2`d=E-Gi;({e3LZ9tidP#o>*wF&1RcgT zvoMZyBTThDqCzcC^(spnwmbn z^+&fICJMDzL*bGakW1@TP5ZK6MQ-^aW|$HKt>7djW8?&aSugz(qUoX9%P8}1i|b5V z!--2>7jEdIaIN!d&o4)90(cRCd4;*Y=tGau*3j^KWrTQE|L)`8UF=`V6mrtL`aQW{ z2E{#4RD$Q-OZZS!g`y<|ow|-Nvr3@0myrT6U+=sOU6h1oG)zfQc)AHUBO{(ZO#;s# zBvK5Gxd~J^2bN4vppH41&+mhhH(x?un#T2S`_6xaqIn|i!L6ZKKPBt6k2uyc$|i%8 z1U67?zEb_@bq>->u_S761?8nAnso)HxS6CFe8wLo?k!ri+!igMF1L6Nj4ira9n*dE z%CLTIfWcaTG5BVNTy9&kzcS=se16k$TFs%WMPAd(Bf7GR8P@AysA1=yB}|w){izz( z=Z4mxz@yjHb`Dd2ojAcK$V3s}pL&2oNbXM~uEI!92h!%NkXTvSZ?sGtqJ-bbAyoT1 z=q3%J<9~tUJk(=Bm)hiJLL<+;nZHBc8km!@fmk_Yel7@q8A4C5$y3Z8klKLsQJ;|$ zEoucW(@6cyvWJk(O{jJQ6n0E;f6<~g)%S;i0{MuQe+3NZIkR3_2cFF8e^tiFxvJ<; zTEhKQ8cM(AB0`0}idUZ>7@f4_;_pH|zyJXuJXT};sb-ouqgj44mpfejqGZ?SYYjmnWhDk6c zFXycrHojtA=Sh&Jlu>iUe_cUn-t`#?R&3K!CGUn+PWz4*HnRHz3)yE-_!GTTN=A_NCCLJNjBeOe)p73)>CAHXKJI z!lYD6yNjfu9F-V_kz;5}UD4j0Pevw>p}O}#GZ%G7(B{Ng+Sm+>h8xLbxPy?mHBMP= zm+Svi){N|VpLi1TleZAy6|!rAG3{yjO}(WsbOME7 z9~SU!LN@oC2}+mF{|_WwpQEhND__1U$M2u|cix>K*9XL%n1ueD52aM#&EmN4Lh24@yJ9 zxW`~p1E+inZF!E97Nc3~H0pXEsd8W%-p7Fbd?LcTthnJlOVIgv2gqrz;7BlWnU_Y@ z9_SrYenVT{Hy`+W*5<0!bBl0W{{Wu&E~}XMoDrq!MZ3I`xne-$R9wYWZL{s^QNtcj zxsAN^DmcEB{&?r;HW_b0pr7@hg73~)i3eXwKN50r!^yN6q6Ef+qyk9dwq)%ZSz~iG zCcz;fD5e8b5t!YphIWg%^KKE?Ldrm(woWE1n80vZrMN!oew(5TFLsyN^M2Iq^JJO@ z3ZcRj%4N#tQxskwQ{I)Wuxj}}rj!ZI`cI)Aki$SKg{$ZGvt=x2V+vP0Gut(VK7yjp zEl}|KqDqmL4>y$SkEE$lSWZ>WakkVC=&{WIMjgiZvY=*uz*I$>_gO8IZZBR^PHrP_ zY9m$5%aXsIb}at#ri_uzskqvavR~pbsqh=bS@=t+s8VnS$$o@fv}!uO`SGjzFrnQH za((<&z45E|1^NA#c8ZvV2xBNWTUi{e?;J7N_Ra=u_WZCb^TR3Bw_Aj93jL;91?nmF z5e^!c&QTA|*G~VpTZc7R@^Of8^c2(r&1*k_bzr|Zw8-@s{IGM_N`SX* zK*0;P3&tIvr@!o=Gf`wLBAdhDo(&3KU8D_IT17sbnvTV+~{1DBB392^|}jks{9_EY%QNu!ge#)-Mt^t)WN@(b4cH zDEU#z&Ub6x56|heN#2ihYBc+64K06t#2}q^$6~)N zDu(4X-LxhXW;Yk|`!1U{!>QQt#-^T?;uVQ@haY$S#PJ97;)@%Csyq?ufj~m2>UF z464m1^cynBoloqyXHXK~U&tUISCn6#4`mdXLq;^-Z?MyijHzetej{jmmmJzZ_85K)+$Xzo{YBYRV_FoCpH( zvYEojkPQm9K+t@zc^>=iV1Z=JB)pVXDKI%u7P{0kWyq@L6ut1w#%FZan;o5>)yNixim4Jw`!0<$9`Jh9YddsK%1B`lNrKV29f=)_^ zG}<2>eWKE<0ifWME3}0puj3@y@H9)|ai-Yao+Iaa@eUc%*F?M_NbJi)QRQKckw%oq z;E3Ntx4BYt(4akJtNGYCW`DafE7nqePBr?+qP)IYLvo#5r#kN<*Kc z%8|^8;w{c~-uA4D{NjN8(!su?R2-%=%s!%|jj1v7e%YCGGi(?d0{VTf} z^IWF6s(}6S1lO#BP>w_j*PK+)-g)#*PSSPI1@<|qJiYl?N@%yP=Yd4iOCQO=@Um^! zihaiQZGU=g!Yn;W-o9wN4-~xQJl7%T*ORFcKbt6WfpGvPeRjJ|(S0v>G+|zyq)}*V zD1J&AdSXt(u!FakC738GouVzwy*4PA$JwFFnz!FK=#_~g0vKK{p1jg*=u)Q>M@^Xi zr|1*6ou^VfYteB3j9V$%~g=D!SJSmt|iqwah-x%R3FlYNT9jIi9JQ`E~SrV7PQ z(|sd6(ytd8{6x>9Wlt+DDceu9r=EVIyI~WmILG@Y_6qNr+HtF#;&3R9ZT=Zb_rv;R z{8@VJ2X*PJVrKI@FH5%5+YbRHp0RSi+;EoM{YA%=y`bQ8B|BZytFJTTR)GSi8hD&) zb_p0>O158kJJs5dj%A?ob`@SP!#wQ-jA=%H4q85Wus^3@+7Eg+0WYzQ&%Uja|i11@skgo!y~-~oyP9Fb9BL947Kd7HvV?P{J&Tj zU=i}aGojMKt9m<2JhYal?oQ{aZUEvd`n)nVM-F^-bmr6QIDx_3CJ*F9VEA0v!K!KJ z==h7ZfWheoC)N??X&TxZCV_(I)=jk);Pa*2 zxNAX9Q4x(y6z4C{EKmf#S9uJ=_e-BXv+uHr!u6uE9ZNSmUE9p_s$jx|T%=rX8v_dF z9_W@6y18$}DHFvMVE7zq=FFEhgYFIqHDP|aNY!dUvP+=AI86;%ee_;py(8GLX|fBK zs0Szly)G%-Ge!q(AAfCYjESNRFqP5v=9vv8dR{Np%!C9vYy79 zD2@WdGf0hAkL<$N70onZ9$li3ESc41Meq2mMNz|To8a-0CfWSUgr`Z4!kf#~EC|^` zmqW>1PRXHPgRnmR{uVjc#J%CqVLuuZocGZj)P5YA-I}e^c0aUdrHVo zt$NydbwDd#VeuLa8&PewR^}c(2Bk}NP+EiY$W^VHMQuLL4>Xz54* z__#<>vFPYJt>}W{1w}-OrS*Ph!L*`2?%U7~E)uCs6BHMze^(UaDFSycGwv&M=+SkP ztS?DTl(#$Or{OPzed%UYHJW8g6L2LW8<@g0g=_;NNBFKIU_ z4dMeu@+UF3AG}Q)$&cW02F*4p`GEGc5*?%~88F zDz?D)Wp85gJJdW3#Z$V$cOU5k3WNDWMbP;b4#y6*Ys0A>69o(E@Q{2OAr{L$q~~2w zdOxI?MxqgKp6>3A*R?P$MbIyez^Nx4Lm^bZM;{}gO@I1~+kg>ZTpCif|8d)_n&vZ_#u+q@74LcE&RSGX)d@zsL}MDG z(}%Peg+cd7>1E97{dPIx^x7&NgmZjEIQnsP@dO3O(DUM@`^2C5r-ez5nsllS!lb6z zHv+>?bqb|75uNev@~2y%PuU5)jz<8_p=E7h1%$yZ+S?vTH4Gxjx|ve1R8WuRqJufs zW&D0O2a5KXOZ6Upt$-Uy@Rk-1Dht$nE5h>HD^a5esDy`0;m(wKI_YGFr6dT0&bD+E z9oUUisarEB@R-K5!BXT}f+(rVXk7^^FB^+CGvaGSOK_Ek8Nb|T zww-=%t{KtEu>XY;1P(KXd3?HjB3E?_?CJTEJ~fBq{9Y=LF^k;{e%O5O>=H7C{3b*w zzPucqlz4V&3pxupc=l$OVM8$Z=8)(i>#p?Y#22S<)tj&UZ_-rLN4Ku(#$R*xhu{V zY~IkcRv2T7#DbDb995xR65l8m8~N^~*WT_w_JSqU^TZS?5spkT9Rxfky%%^?d04+J zmSoysUrqJHkzYR2U=#s`I0wG|9UN@H;p~qq+J^fP&LOm1BabF0dK-=dKijud4XMDz z<*hQ2eCjr{!=p2eFRB6|7!*rNxI%2XBfaDc6qA)@txIu?DfZ6iL(Ma)Hx<0groWY` z=m*^?;ts?G8^s_rn6sg7w!k2;G^6xIgupyXR+pg1YxKpsnKhQv?5 zAfXhPXUNbNF`#B~CH1pFn7$?NTvR7WM6e=O3JFBs`RR$$(-?WsMGw; zCIZzADkC`(o#bSzFJq>oWu3*+-^iHwNgNIrHAiaPwJB7cDNQ11LHwm_6j|~bnOv@p zdQE0InmDoKsl@#9k12&OUFr(8Ol(xMX>8P}PN6QmnD}Nkl^hu*)3{47 zNhfcQef7WYz2AKzuLtFqkbTTn^V+vm%|L90&2{oSs(s>{{5|w~@E`K{m7hm@W7)#H zvB0nqRlS!z;{?k~VN9}K=Cq^-(%cum;%V_q-+xoL<8-Poa!@?aPx;$_x!`q>cvGn? zLpk!~rKLJY7QQg}4;{L!u+Yf|5}AP>2X4O}5i08`uMK5eIN_&jieVq%QiwgUfRQ%} zEd;M~G$R_yAEvd@*a)aE0nzhl(KYWBRbBHNuAo!iP1LTq&ex{FtQB&n@{$WCjEuno zR9+=I;fGQ-#E4aO@91KT80?Z@sgqX$+h>ou)?oQiyvU&)+YTnLSWIo-ayxB|6$1-1 z>6a6-ytqG3DLhLn+Pm14P(p>u)vK11SO-slF&7&7{7qI{9*LDp(EVPJIfPu|Fr(wB zJunVudwO*X)b`4V%2f?Pn5o-<8BeV076`vkwUirZJ0UNG90yj_(n)i>wi*6Z?F-AL z{`4qLtSXH}`x2zPt1m?}|I!z6NyEJp8m!!Vb9lwGGXl^6;oxt+^+tRu$xGX)$a@7RQ^r(g38Anj z*u|`=YaeViN?X&AKBCdZe5A6pyT5LV^@R)Oc(wFLYsF0890uwZEI&?Oy%i$-&=@JhG1 zmilO6?PmYhL~vNe%ng2AuFv#EX(r57yuUXHDm@2<1DL0~`22D9L3C#mg+!-W2p4+9 zLipP25cT}N$N)V6Nb?Yeo#O-*HUJLzOg+tackqU176HP$|}r%ft85JF7E(`Yxi z1uj89RVVIugZ2V_AGmn5s9P~xiE_VC+Ow^6Ix%{8_CrU&GCgx1n}-}SwfCi&L!oLDl^~(V%Fh>O|6boj(2e#F731Kbs>49nt1Nzg2-dXp zwom!4X`4~<;11#gpZ?T+m>8#ifD#9c7xV>%hShUh@F2y!AIa# zo6MMJXdcKX#)zEvEazhLY5|*HR!f-c^^L3Ro+)#O4mRT_y-7hPCjB@bwaV!Qx!}EXMy48 zNSmui??0c`*UW@@=0n~oP{`U>C%#h*^l@IWRXHIX9~5w0H_YnObCqb~mP})+*hiwM>!N$+&I#f@M_tl~~C9lFiuT`Q)Vb}@<5hqrO zRSMRD)wk*_Y4mEb%$LLk=!%i^8tgzcam|Y*4yo={JvMQOmoL6%;76%kW>ki_%C-)V z!a;E(LI%br4jM4LdUU@5vD$TFznHvh`NPHo2jQ3K1`UXcj`d248Za<+04+Tzy3n|T zq62L|C|Z&CK{1e)SxRN;;z2Q(mY0;QX_KYoJ>OC)PpRi%krqXzs-({r%Te}wu_#@U zBrCr4Bx`rcoN6BwEohvZRM8`;cXYqLQG=r6dk^#)5ZfzuKx|@kY~QH3-qBtI2My?* z7)RUOq|qfp1`SV&9audUb+NHzbeDdkXCxM(GEeZfj@v8I!yKO{g?bc~13??-h<(X@ zAbeNdL;5ij0&S3}{uQxO=I$Kvr9?~4icRV9b+J5IoD+jGZElFx#WOoU5%HVU{!W7!8w~t)%mIn{a8$TL8DHKbzJd?3-ZGX z>>01V{bB|u#3n@zidQ^9HfKaPdUIMFLqER~C2Dw9tU*K0h=&z3yeKY>q(v6!HpEi$ zr@8ecmprFjWrq}@xe~gA2g;J&A#ou6;S51#M7X(R3x#@`OF1a&6p>0(U;fv&2*jOI zL~5(JQS+)L*%pPOvTIFs8;YWZR#&7HM--xv3oqr>c-c8NwxEK=tm%}MWJ7bUFvOPH z;NKtC2qno{YD{D;m7`^);kr&XQmFah#F*aEy=jjXWU1#S6`{{1q(;=&N~%cL_@9*v z>RMZ)u80k8vuva=+UzJ5r2reW2(^-`P=*yEG1W;bPCe%+&T&<4`#MQ6blxB(Q4v=u zL20(wQR76&eoFq3~s(@3R*^t(!B{ZnqT5`^GZ7o%|mhUsuVx-PG&Li%4 qiU5?Mmo&O6xo#JWW)_hVYni;3BK)rsG(*F-!MHdv8Hr$b*0YBrFUrB{?_P4gND!AUD`q5odT`AI&>^DTlM( z{*4u-5~7VA6*4$v>Mb;P-8Wg1r8ipVE%z@5&C8HRIM>IEz zeF|nbj~YH~So8=*S=v%jD!?Btxih%DqB!E}z$k|RH*gv7>i|V54Zb3Ix8yIurJ#?M z+*7hInB!7LvJ1Eb{KqW}{zmc+aB=7YTns!BTvTx=af2d5Mu$X1MUI5Pjv5sbIeggY z5M^RVqaq`~Y*}a!dOSi=#&~2hv_JKx$O~H(R8@dWU z1!e*5!9~GWdKfJ|1TF%k3g#u!ySKqXLq>Cmm2~** zvR}YVm;`1EqDO_*7=n2^B03^w;PBv(j?kHpGo3U3Pkj}o0Q5mYkx?~}=zJHWL80Bz z|4iWQy0-m|f}?^)1PvG#qU=M3*ut$~c6E4Icu0-l0m^Fl9IDA+j=eE}xOm{R0Y48g z;@<=_z0+@xa8}$8%xk?ySM)!xzOpjm<6xsJLm~$T4GRhmxdopEod&bzIS`LMaet7} zqHn>4;KvR&3fvE$L!pEk=@Q{%mdA|-b5h@tE%ysEDxU0s;emjc2;eI8VTdty_rM&x zbCPF+OTbS8^J;NU*8NDwuB{ku6c`;HhN>z`bi{~Z(SySxeumC`28IqF8WtQhYBeS> z=h#BYj)udH>vcK=4h637!NZ0RP%OA+bHX1L5)>R9HfqFV`0UD{h?wx8sDYsaMg8x$51Tmvi0rf4Ihm6Au)7&d%hP*eywEIceqS&6yJf`W%fg+#zkL`CSk zjWv4Yk1-soE=t@(-B98#fjO23C2x?t2+TP$8SDm*k2P8x95Nsp!>)v*!u&)doE059 zMoZ6G$`OI`D#INp%T1Y}C}rVyoM^0Leqd%RJ0dP7XxOl@$S5T;Bz!cl`elgEDN`@b z81W)t&VZ)SIfn;=S)C>EMu&HX&pACL5|bAltK@;ep4TQBBT)=K=W+uuGvJ5>4U1H! z!DqXpz^qVZFxxRWBqA~GvAkJ4dZ*lXTGJU86BGsoRU;dwK|e})KLr^+KC3*H5t7fHPt#zo=uU1l2B#LEPu;6e!J4ls9?kzWj$ z>75JqQ24BPWN27;xC4E70SS4r6hT3(v2$wepKoNKfh$4}2Ui03Uua~|Li+hNqvtBY z=g>WZ&x+p!v!JI|qw5bXGN#su!8M{{MubETPDKB6Y{p{h@p9}5fnC%F%!GEyNDvkg z<*ArtMefWqHpvuWRCq6Z&Y}5WRxkuy4cr9GhLr)c=hEjI;onQ%F&F*M0FPzHSkFZO z{ZJXf7tD-GfZ4L&=NK7W09S#(QTi=b8WoP0{xu90hjPd&V@RB;%RFun)(~`rvLu_4!SOZ5?A{9If_ZyV3h$$P5cm5%(icGZiv30fog3vJJB;4=4b1d~Q;Z4^1#>({1Vx3` z80rX#aUODR%LIqPycTzW8S(8wgPq~4py!7^1I!jCg1Ma_uHKN?RHH&eB5TA1g%4AL zMhzYjgyT*GbjJVcu)zYH8*?eH?h&Kr&Q;5qaU?S4fcFD)Tw{+K6Q((Qj=Kk#6%C0T zhD#0G0DM;D@9CU9)GygMhBgN?eYO+0mMg&64x=1+E|{0hv*X504F;EnZv(UDQxVQN zuW%6-cab*yp z1qvt$u8ErQ5~+J!`!0XC{JXw2%5ekp(rkHA^Da=z(eAQQ&D!4?vCD%wP@AtB&8U0L z=%*E6R%-#6)u?pc=*Q`ZS04T#Fq_*5TnStR%oXD0_r}5HESUOAFjtf)a8>T>ZDDZj zsw7zfGve(la*YGCKNG>6`y-{^8q9bVz)b%c6=(QMFe_SEHY6vQ70z+j&_AQWoWk$G zIl2A(yOI3Q3?w@I-}ZMsWXuzdbKfrppEKmgOGXbn2mUntBAl{2U~p>Yd1ORP1G9$e zGh@vP0dsZe_{7i$4<8Y%;FAMBXV9+4M)+nh{QHPqQ2}Pu>!mRTYa^U9=@9&aU_0Wm!r%O6td;3cjr7_pW3E(q zZKVJFi=pGJsNXH_K|aj4Aj0#3v%N32+W<}?MdHx>_X3qtIS%Fqyrt6J#?D@)$ z3}dVof!VcF!0eibvY<%#tbjifvY@(P4pmt&^;}>M#q-aGk2}vASnMM|$pTh^89oop zd?$l>HH3kgkE0TdoG|i%8S#7c00WN6xiA^bnny_P3uZ>;!JOr}z--}jj5S++7tEG5 zw3u}Liu5z!Q-1kl`gN8@c9(&;F_-Cje%l-f!JJ3_WL6lfKnGs$$aj+7pu3g1I%ugR%G4jq7h1 zagD%b5Ku<43Cy#{ePqZ(&PmBhTAkvx9EWQf)oliqYl^+LF_Giz7!!67n3sA>FfWiQ zVCJ41%(L`c#OH-^9nA1UV8&ky<{~%?tY5KVQDJDA(g5XfI@C@+-ubJZC3gK(ypGGR z{$*C1^3C2B(DyH0fAXla{$laR z(eM8}YW;XVq+{^9A)}*XKJ_XY;5SR1(dzD{WlPQ#8yUVo*W~1oi&eeaAGmlwzIL0! zy>B!-K5*cL%5O$#w?k8M2i`i@uGX=&Mb8~CsD+jr;rh`nWay{*7nW!@$|dibU*5yy z>MTy%U!nG{-zs!4yXPI4x7qX~#V0kJpxM7_7~v zT-F_}Y0~0qcxw4-y6-w#tBgy&16|_AZO@nVp|GV#$#x|tpWSu0UQ#ww3$2c|vNpo% zx@*6+O@5ONZZ&O0nyPuV%B8uCt-ot*t0{T3@x6S^f%UbNUUu`s`dWG~yIQV+q6A`U znY6SfR!c0r04=q%&3vqZmeSj9F56H`?`>DRG*pxhh~=uq$9uY36=i_o1X|U>@R~Y3 z^A@X?-p6jK=%pyNHD52A8V-y3E1JpIYCh?urS!F1%6ThF3oW&;%^c>fdH1thF6n}A zKbyITO-q3=*`_G|S}KGSHqE=g-7?)rQJQNRJ~s0OA1$T7T`lFSDA3|8ntw~HIt*SL zc-gdgyH(u}ueM&OzrWS|*jGylvYT7lwRF&2yXHN>Za!w$VnI3lv=mT)pOy}a_0zlu z+Rgj?v{;b2k(L5#(@0AP&1s~02iwgj8)>niJpNh=D9~R^54Njo{S~D?$}?&4URLup ze=Rn|ZeHD3O9`=Co;23m8e%ioZlZY)va1`KCc} zY*zE-rdsS^yXxA^Xiav#ZJzM#dK8nFRUHivjg3>a_)x2PRddZ-*wr`96$Kq?^ttNO z0t*N{7tKG^svd5M!(OIWxm8wgKD@!1VejFEWO}_@D@stNmkO_6rdI+z|1WRcU%VgS z^~sEBZJX6w^cU|Hyk5?jmNxC+X%oKkafQ*tDXU8RtX_|-o@FPz?%ITnKCYOmT{DyP zh1WUL+X2rLo>?W&daW~idYuNwwaOAWS}W4dW6!|dk$-L!PjpWQU?aJzXy zcP$q5zPpwZZnyNnrRJmg2HPx&us|<3HID=Axx_wW^`gvoNN4UvJHOq+KnDsR7+cZW#fugO)MOrXGc5bb-IORn6Yl z=zsKCxK;IrXN;h~pH&?NPp^PTvzRfm^jS-*dF4PYeT-dw01+24*N6dDwMMWpgY@;=922aijJ2zuAYx`=z|ei>ULjhn zzul~XV(jK?AzBK^V~~~(`hAe*9c#BV#AV-9^NqEsQ(&=?sDPKJ3!LV|F&zQh1h8tG_JY1a%;BjtQ^lRcGJfml@si=8J7#)JK z_3?CtBPSMi#M$t?k<1wOQ<-6$%AepFlYp7{;0A`{n?s*%)8MgUxO#BWU4h435QeJc z9%Zx#mnRmAuSaRIlkMtrh_w+#)l5CCW}iqc9pcJJqknR0X`QX=O?a$X4mQE!7R52* zb#7~J6cPbYF9&}Gj}aiXE!|djIpM@mR@$fsVt+B>H8htqn9{U+PD6Z<$@VHp(%ZcS9yy}{-w@s}$&e?8O zE({*iU@DBYTGqq!)O`JI>U&sBZS+-@@lKDU)C(Tw6B^4=Iy+wTo^3bZnxMskhELQ| zKo=%z>9g%>0f*85`XNAV3(x2zt~!(9)kiMqPApUV99sGuyQOO!H>K3sHp@X+J$0*4 zJl7CkXkB47rKYZh<&DJp$XIT}Ypi8JuRJMphq~+O0tb7_Ae&_ytUx`p;*-%{MzwT@ zg{29J1T4;;Tv}Q`t9lWhF-v%H6q;fzJo?&b34(|1W{}OiYKoS=z^?uR!RV$mG|7D` z4nfFBKc=Yt;CVSc^Wv#m`a-*U6{5{4s@Gvovqb zZdpHz3zn~DGe4iDrD%4u-)t>iv#Vof8;3A`aa4E1<6!E$rTOV>Ed{L$n3J{17w2o< z>+Gt!088tE!Ws#P?!ft7^2<2-N{A}tBSoM$^+gGsFe0q_Vvf8d@Pc%jmGZt&kSa{s%jmjQ_ zXIu-oGAwW5VY&>kSsH%H3B{EnmKNgc}HvI2)-p?R;gn@UbOtcERgyc<8*mEA%MQEAXpEx|p`e zs@{WV^e+;ayROvIm)kAcO4+~aM_3$^68ajvXq8boRuS~vM|j4i#Z{!42OG~z@8{h>X6U;rE)$#&fXQom8zc%gy^jPMlUu)?* z?CL9sUG)Fq;>l3{h%GtaSIQ9A1R zqz$vGf$%u}^@ZBJe7oko+it$UU5f>6PS#RDZ<4ii(Da>}_a3|Dx1Ag&T#OdaT^M&B zXU(CzwDdi8^(zQIdd@gUTkgX1)-tx*)MC4hi%QYraYX0mw(uJ26)@SY=E?iC^aFPFFhuU-I78j=bYTqcjh4FmX-x>UsiCkM zAVN-!jo1LM9X#ZS)7V>hY?4uvfCEPDUGii zAmbF50?*U%aB04VXDn*Gm#J_Nj}j1uqhM#NB?Mkqc8@vbpq8F$S51eE+Mq9SoVLL; zB4h8hjE9G9wJUB&V0r18nEF`F9}jWFEj3fQLHJ_bodb&vL~T(16L{=0958T@D1F$u z{HE>mbb(_eNv5SoLUSy?!E3CKn(c^lz?nE2o)xk3aAeG1AJJ0M?3RZR+h`d9Hnq-C z<6Z!5L*?he+wi(+6L#Ay>yGR58&>5LT+OLnhSgKIs-5I{g4$$Q&2{T6tS+?F zlBbL|8;9*a@Vrs1exIwR!Sm58=>MCiD;!Q%tZP`->zp>We_YE`F$GU+v8V0o_fo{# zu+FL$IAi3j?`q}&XS5VAyP5=%yCFpM&MkNx737I4-|eikL4#p+&?~wRmR@Bw0~V`> zxR}1yb4G124N=rkcukG49#(ZbJU@8oWnneHIH#qYvzv=t(9+M@)%F*hvl17kdHMw{ z_Pkw9h1dlNF#B=8+4Ngy6mHn#ztz0IK@^CrDaK=y)$#@&)?jSKoi1k93Rl2vcpOoE z)YQlDy28t;#he@9V}&fiA^)VG_JhJ)ftrg0%^kd|Yne2&_wo zU`1&e-};$G>HgZA&X9aRD9Tt}OMo?6w?4rdp<5BRoYs%9jJ(?1)^8+H;k~f%a0XV1 zJJ{EaTwvig6WVK7MvDGFI&--MOOL1e{A5%fM-6P}Q{Zt0F%CAT;IYA2qE=YdB6pq5 z^q=PG3dfEh9Ld&M%`5I|-q-B8e}LExqN{@cY{!hMrv2tnzqn^4`!E&e|L>Jz`4G9J{wpRkJp=Wx znL;(?(PFOosly&P?-elr)Rpj9Q~eNR@p;Hi7&FT<4;D@*v2*pSQvCq0w(jA;W%l@$=O;_V zue>aA*id)F@-`x4&3pk5_bGNC*XKsFjU1Q3<6eMK#!2N0JlvRUvZ-z_oVzb?dE3I{ z=%ZX*OY`8dH;lF6D!evaj4fqf>TMiivqZpZr)7BBESF#fY8j7wTz=CR4sV-fEUYg2 zgTP;4^>${YHhz^g+a!26WZ}?MT;5<-X}*1R z0}oMf0NMdbb_6zwXYexn&{E~CzB>%CnPzDR?)s^(={s{(m%MY%Y#w6Y!Q-Nf9Rqz* z=Xa;ai#r@%eSKSBYYDt=x|cS}(-ltB%%FN7 zoLiJXikJmYzsoRP)Vv<}S-d{7M^iDOruY%;e-&IWh$&zT(~V4Vc}ANrGD1uGM~V}GFr&zLQCNB za>fKq!BZj`rr%pw0u+;csuc%|^}%Liv#Q778EN=mH-$|m&JsMK=nJcnvu5f_c${K5 znqc#K0FMK%KQ2_un4LMWMN#nNWW*(r0*})MQ=_q`OEwdxE+4D~(#p(yGrRz&XL${; zua^4E$JNE;>{(2*BzQ(n{zGv3gJ<+80S@XX>bVz4lXQ;rAps*Nmg*NqELZ zi^GYU0k1B?FmKWFTDgpp@EjKNFcMySgki(Mf$SJOrqjFZvapoEs>)VP5APzyZcG z4Ia+1xM4g8%jiR%#H;2rMh3OTp?f4(|V9;)hTSk zeHv4Yht*QIPG(wpia53Inbzt|>q(|n*WDR!T&8sb7VepmbFQLJt5c@6B-6SJtC=3J zVlk&RM7J{1eO#Q9`W99bG#95OY<5=svI8#z9I^tfrUWhKlb_`~XzjHLpRkFPV3TP@ zWLgI^E!UFH(5|pr>+x2@YN=aKGOfC$oZ7fd>qMrNyR7nDIJYC^%1{ct8U#eFyk`>VWA6V5v@VN2dn#0w;9G(}v zf?E7Qt9lh4uLIno<0|WpUkwS;J^Uw+|IDyM@cL$Y#j0oZ#=`5J8TS2OyxKKP`pL{FeI`6^XNLFl zUp#O8!U{J_BWylA4jTSb0RKgB86LaVcwS$umeC;?5#0Q@gU3Y*9u}2pnPI#GPl3nn z0w-p~RB9Vzu9skG1rPsykB6vB>X?)sy7d}XKi%qB*Q5;8t=+J~bgN`N44ZCEgw;#8 zZo)F+`P6r&T?VU<9{K@RcafUMXM^7kOsT!p$;IIh0cQt~05fPLelUI%9my7J?Hbu#s>U`pF0Z>NI~nP#%y|1@MkR?Z9kh>UnthLa0HzbgIzE<66a z8T@C`bL?-(3X^HxG}xj1AOo^8yYjY-ct?hlY5s^G9D<+0?%;Hal9}#L>1SmQp&5Zp zmmSP_uKdCIXBdBFhUJtIztAJ%*ITnNTa;J&WR{svvYXV&EU*xmQW5DFr-P5qoc~z` zW>i8(Ak!}?6PA_wf5fa<1(~j*jQ{VL`Bp->e*Mwl=if1dJY+bT39CpyD^sc_buwFC z3(N}DmHNM7hkki^$_Qi@;3a)BeQ)XiJ7$m%ey|`v8IQ~x`4(VGE%AdDY76FN*@>dg zXg>qGNr6l=P;yVHlNqnC^vNt>ko3u{=wRuS>4!=VlRBCD5a|zbz@R-$282tFkUX4$ z_>fuP7^#m1vqIy+_@_+dkN*v`K$b&}lkuEfkp{I%GJwp8lO<0fi#f$jMI2v1ULd3W zSC~mPne8IUi88;eOi4(c%<3#QE22ONlbeH!;zo!Z#;;|htjx$;rJj}9Sv#aornw70 za)497oIa@(B{TnH(kIhAVV3(9482w-!Ay9Dp^|BylRlZ|H`33_l)jaER%S)NgU*Ir z0ka}Ez>NBX8S|CKZTw(_JCc6{vn3B1D47{Okv^Ff{S{2<1%5F8J23P49nA2LlK%wr zla(1SgY&2yjM9irp$wRD%Ym6eMf_mFRlp3dD*c)a#D~m+8-SV43T8Y{F#ahv{*cU; zHOo*`AN*n;J`UYr zf}s$YLAd1MV8$7R9}FKY^|4^Kgx?TkODD?kNnl>lGo?Ql%uiNk{CUvH^Yw6yKMe{C z!1=&yz${<`I1hL?m>)9DeUekajCVx($G~jB2{1oo=6e#H3w#O8p}G#v4SoRT{8N5` z!J5ASb4^GGGl2!oW`;Syyi5zT8zi&f;_!=t>w}r0KbRG64`vs41s4E^g7br8Wq1O( zF#MHZ2Qyj+gBc`)S@1z{PVh-ED|A`%9k2@j7clCmJOMNP3ozq<05cy8M7`o*_JAvx z@pAKr=yJt4L_NIzs!J4y|MJO zGW90V*#pgGIGK72FdNWP>SV@iBg5NDJ(ERIUsEnl0;RnSA~TDQ($C7&J40ttU1T_! zgVIO(WQO;ZKAGwIOP|c}AnAjP!8HU143GijY$CVaRGQzHRAxyzE3;{HrB3E#SqkPf zUjyc3`WlRRp(KNu{SGicWY%k!)OUj!bU^9{>EHu)=n+$8z!4chW`;+lPo|$HeKHF; z4(22~EBT@f|Bu)W@$brbcR5M;p}-d3ml-{g5y&j~sr1S8pGlug|5wS+!R)DzU|u%a zSUbrD!A0ORzB`!Z6?aIX1eh%N1e*V8^$A6^&wxEoxXjxg&tjva#ht8g;1?HS- z2Q=mF-3%=o>)jNe!K z{lQEZ0%nDWf|+hOnDItQeJq$2jsfH2&<#cyFC(%?SU|k=r%0X-W`?t*KUeYs$&0}F zr!2z{re6VO{54<}xR!yEsc+E3G5(un#BDO-b}+|yADEy23^T)nGCrB>(?u}#D^mY= z%m+cr_lUqAxDIAbZ%Dog#y{mQe@Ny*DT&!g{u9)17w==+~X z-`I`0(Eju2o5zx@kG$dPK94#7Jo@G%a30hefjM8CPrCnk^!?AH?|&YB|MTb@O9GyO z>r2BwkG}P{ll}APJM)qHKaalg$bsjJe;$4RM~}dHuK4HC_dk!m`6&FKN8h*@{#(z^ z|I6vQQ2q1h`~UBczVTll|JNRU%SY)qY^;q%%(*YXbBaQDZ(^~!B792>N8N5Nf_ zEH-~4noveo^=uk58ph4`f(@~hr|*x5EBb%4peQObcAaNLim!v zk~dyF9Ner!;-C*;C|8d~Uwt$3!~0_!&AZ>`i|pr7;LD>MeSca!yZWF$CnGPH zt^WPVeT4>^Tnmahv8L9h1aULg)ZH{g)ENhwDQ1vniF>5k!fQNej#xmNE1r<%3I7SE z?!qJ1lv}KyfE*TxR}^kg=sFRCCe}=ZkT4E{#Q`BvbaX)Q91md+1tCmv5FS$qiG#32 z?4YoC0)#^G5SEFccnAR#A)KVJLby$W@PR_~BnYcS8igbWgo=|PtPvw8LkNt6aFxP3 zQFaOh*LVn1r$AUQE>qY~p}|xL8%6w72%(c8JfyHm)R_jseKLf^X%M!Edlb%4Xf_?f zRN>%S;G+M8}yBJf}n0 zLt&pV&4TclLdYx#2gD8vixW(_+a~qO?`50Q^Q%Wy4jp;ucPg>w&V8Xl*ULAlaM3=X z)4S3of0^i7`)P~pt%IsxnyvPeP zUjlU3AGjp3!o&PfpQh~JPXBhA(RzopF@&v)AUqKtDY!3z&?gbX zGZ8Zn!WjyCC_ERYFCmOw3L)f62rtDB3LeWK6cP|#i68;t28ELp-UzqF5E7O{h+Yig zok*kLxdKAPB@o_=kxL*vrf`+QM^SbugvBc%OkE1$4{@17z$yq0mO;o6@yj55pzx5w zXHjQ4grwCF5|^V>O(ya4a&&6o8YnAPK*?qjPgg*3T??h{N+=eSSh^C*ekvJMa+pM` zRZv3LLD{+rifR(+RNTLU(q}b_$|W|fMp0)dRJdM8z6+Q zh2SO*P`I(dlt+|WXKH0CAi~x`NZ5!N7uF$0AyM=z2%bq0CVT~me-O1mO;a;-bn12mzZR%-H~;q_|1p0|noW5K4;~8zCfZf$*F{S>ct0rLvq@Kq@bu zfQ0K-1h?IU;EH0&CJ6f}WI!-iHi>g{*&W-Ublr?7Rm7Ujh~mB-f@KSYYNF#72xlnl zp-@AZzBY9hQORg^>emoz33V%Cc~gV0v=*oTPi#12w>q3#ED5J9Al;sB|Wa616%EW$`#L>j59D4K$d zJP#wI2`R{^yEseXF@+ijA@mS22O%sz0^tsYUZTn&2mwbS%sB+1kGM(U0|nny2>ry2 zR0v6F5S~*A5?+TP1RjI1;xL4P;t2)U;}F^&fe<2=9D%T(LI#DwqUBKtp(h}0JqjUA ze5Bxh5<;Ie2t&oDGze!XP>2>qPeSlK3t_@Z2xG)q3XdT;2EWbu%$mG%@wMp@VP{6P+kR`~yM3dd z?FT!+p;Al&bP+{wRi1zd8=A#DCf%5 z-5oPDdxeV!d!PEXUfb#MNl|K!k#`3EP%(VgV7sZ*x%lR`P6w;a88g1{@`I62lm3|h zs6Z0f?kEZ&LX>@J!*5;FaX0^FE zwd3|YosvDO{V`Epu&~a>cR!BK{ie7r_1pljA{|e+Dl@8dWO4Bv`8wRI4XNG3w^z>Z zZ)=g)ZZzCrcYM@O!F^Fb}J za?Y&aXEncX{N~Dxhr51wcR$5{y=`v4ol(Vpj|}~(WpLw?*LDTnJU*y+`@%*2XODZ( zp~*O(oMOoCtksLp+Ic1YPFRXY=Pq4jbEn{2rnWu{dM}@SVML?*OCpYantSfj;Ca7T z^OtVXs_6Q(KhCxJJ))*}+==$vnjFZtb!G1XhrZw7`lD!j!Q|f7(Ixb^#sSvzK_y;X z-t%4A%a@jPZ8vUHk#=5(7xhbQpEkI1?CBf7j(WbX;FGR#r*7vSUZC0U`CY$=jc$?q z{jM#2Kl9t1&fc4B5(8#q*>(LElRo1dCjC^=@;oN}ehOR9Lzpf;QV6{Wp}}bgGerDp z2=134Jftv7)Hws;428DLV~$vI4#L>W5Trl*DjdTIN{gF#d{^3?l|*l{podvb=h2grmxG7ha0*bJ<{g(>k)%4%)ECu zOqBc%Q?tPx6tqBGzKw!ze8-ZnLeNCn%McQ-u;j}S62)Z-p5H@g@ErspcHDsQm_i1V zED`EW2#c>m2)_wonK(cp;2MOIKR{R^!hV48fx-m}t3=UT5R$G#m~aci8gZ6F;0*{h zZbMinmRyD4dJ{s|YY^6pHP;~Qr*QQW1RT7-gAn=ygbNoTY!W?KG51>#EY~4y5jPp* z3C7db8y}~U=qj3DJD@2JF)qoNsJ;NGKq5Yz^Nwj9r>_HRGkk#ViJ?U zrlX?hFUT!Tj3gZsXGzCJ*+-xgB8GHQTn35#4^XWJk5R4DBK|Ri(1#EnQaCH>Jb~c; z3tRF8!g+Cz!Wjz9o>76@+_Y;2ngquOYmn@KX5y4#DFMg!R8e zcqLv@xIv-odkAmDn)eVA-a@c^fbdRq`~bo89fUm)%gt4v=-chI}{J((Up+Z>y1%x`{6@?oVy5@#ZPprueAt5IO zOCAUfM8`Z3Jaa+VL%}Lcc_BQe5Rw;ym)JpJ@fQ#Z<%3`oLHQsAOCJkwzgY4}^;OA^3}t`5^@6g>aQZ6H&GR1lN2JrWSzEOkAe0pF)Fz5L$@%f)GO8 zAUvedQq(B~!972O#6l2Si+dE#P-s>dLR+z*FodxMAiSf{UicS*;8D<=yG_rH+ZIzVXf4EF2#i-@n?J82@aF!jlqgdmPY;Pc2VJV7oI*X1)%{+8(B6Ss}VhHvujNp)B2<|R+ zP?sbAdI`4@pxz>k)JLR|`ii0@LH)!?Qh#xl6eP-)0u2x`q=Dix zDOgk~4GIzQq(R~)X|SkM1{5l0kix`0(h%WQ7Bo~WAPo~wNa4c294JC8Aq^L=NFzkc z^5*W2k$gBUKQ1jB+_r99R%FwFyMK;oaBpx@KffCVnj9*=$uV%=>0w`5z0()3YhEN} z|GUohFa7zk(B?{&t8NdE4Sf8e-ABI>*ByawSvqi3)_m_i|2b-W(0R{eiRIPHTT@Nv za$fnR_VQM{%5Qem`|)E($M_Lf8ot@rx6Os|uDhQM-oE6_-cq{~=Pbzg-LIa1+&i~3 zu2GhZBeQ0_t@fPF8}jZyX?bw>czU7uh6C5`t=(->(d-_Jy{DC#exddC7B#n23!gD2 z_P1dfV%CFkYo-n_lN35XI;iv<{}bDojDu(xBaqQ)r~twSAXl3+_T!nvwfFpmYlPGimB0k zb(RW8XU(_Tly#%$`km<4*6nV?g$0&9cg!6;a9yX~MIVp(_QlGIfxT|#@O#{LQG@Y& z_vA11>&9$Dcl6k_KW^&kp0iim4`y^Zxn)3>j7Mk9cw6185ka<+CCAUVm9IaoL+PU1 z-xVJ5esM+ zACYtCoY}<&44YrJ!&LYFuR2fvv%{@i=RN$6x3KOzQu2qOW2>^iO7r$CaqRWn2Ekcs z7n8Mi?LIwst(rb=$)PEq>?eAy9(AaI_aoEmUS%h|j=hjEs7RMvowr?1AJ@2OF(7S!!si!N^KG7#r5uMaRYbN)6}SXd zL^<(d2Zg|jT!Jb=m@I-SL2#`E;UtBr!mTod{S=}rLzphoD1=sqP|*Xz3^CFJg1ZNV zs}yF5vQ;3Qp)j=yggN3eg|Ss2G^h$;o`|ms!J{gKhZGiwI@KWDppaM%f+p@!NT>#( zS#=1BVnKBXp4B0|qacKT4G51ZtgiuKiFid}aSaGvYeHBi*3^U$P!ocs7K9a|V=V|D zDD0uIN|#Vh4r5+7JrWfv`>l)q&tz2f|4T>xElg2>U5S*M+cAq)`a1 zYtADo)ibxkX?|oq2=4U|<7z#`*dof-hj50%)cO#%ipvzn)`!rb0fg-$z5xV}1`r-n z*dgjPgm8mGVnYZx%~MEd2mx=#=VSB*RtWe@Am|SY`-HzIgvS)tdqOxMUQt-g6HQky z2nWR)F9-o%5G>vhQbk8^2p=fyp>RZ)Y!H&XA>i-rw8qhX2ZcZzghDj$Ah zBM28od?N@RjUYUva9Pyxhj4>JqCbQy;vR(re+bPQL%1pyG=|{W7{WUW*M)x*2#+bO zZvx?_ctv4x69`?KLbxT?G=&h*6oQ3^$UCBAGYB6j?4j_JFg1se)C@vMa|rju4hn(I zArxu>;l2oJ0l~Eegp(8=3bz0V`zb^RKzJn5D1-(;sMr$16EU(S1oxH@u2Og=%C>@V zhQicV5T1+66vnoK(4aMhmma>AygF<2(2yeta3JGl>G;0gtomkKo zf@fO@?jf~e4wz0!e{Y{ z2dAVCOyX{Cy|<(JZB21^o_Q?(aF$E%ApFt92%HPt@kLa1Uyv}j&PH7wP&C)C9`E)7RPXi_Ru7uv@6BVK{Ve(`{_-|Jw*Q1 z;ajP)*>CiGtFJM;ntw@V&HL&#FN?pP92FH7GAhRf{TqXE+~NMBu~PU8W*C?Mhb+7D zE7bMJi?Xhz^=xxH|CX)MhRo{TaQR#F{?#>q9X!26^Q}B0=MM8|A*(G=?P7WcaXZXS zExYil!(8m2`$qpH??Oc~#fyeGe-Feycst$~EXq%Bh;wja@uIsgn89$p(xU%<#LZC) ze^ZcREhB@~2Ozd@fIs}l3|eRjb`N%Zef9s|&v7Q<7nIG_JO$6SgR%{D@SCChl)&$A zbG$%GEeiOQlE2f<|Mc_Im4CfTg}?L7Fa7aTM#kg!=f0F$S*h_Wa*0waCpEhK(kMRo z!|PJyTNWC~h!v#9FLgJR8sF7|bA$d}J71|)k{Z9|{*E=mr!q7)gkN!eD>c5~g&My} z_(E#cbPd1Fz?XmUr2+iZkP-QP*PPIps1`K#0N+}mO0AyM_~H+~e}f;s90vdNmxAnJ zP4V%DK$BnWJtQ^$#ym~F80~B47dd?(vitb`*fp|sjb%iB({zc{nn;cB5(|`CQ>pQ7 zB`r}IejAZ5lwl!!`9v>fj8Ai^@uhcFq~>TL#S#$fNihH#TV4`4&H==SZ=_*{rGPI{ z2z#it)Jnr%B(*kDD+4W2YHg)f7TQW^>`A`a2EFRg-_LU%BD=Daj94D_H&Wv(Z(!=* zF#gP1;S(t1RfMg==BJ0$D#0!yHNGB)m97l9ORbmGJfM}zhVkbW&|8XCVBcd3eE3cs znpFY5#*Lr8QmY1grqudLtvWP*)tN)n9~y_U2GB?LDqpd~BsBpqXzcMZ4k_}I^Ohpt z!NZ8Pfm3KYyEg_Jd!Y{S6^ycAzMF^f@aj!vz0{of)sykcgX3hp`Z6B1c&Rz?T3Y3` z?AA$A#9paSAdoUyYF5}aVe>OZYIuvJ{t6{(Q>BJicq-3PEB53xso_nb$~)E+pXpMw z!NzOC(Es=(Kx7^8re4K)C(kzxF%8}VsyOdyXUTYWXuV{m=g4?|(AYEVHNKUIX&V9T z8EVcq6Zyl=kF>1Re2zaOHUYN;hktvR%* z(Ac0arG^8B!ka!eNJuS!XOnR<@nR{qgw|hbOQhBcT9DM1O06}t63`lhmr1P+>?9d) zxzv*7+n_3p&L-9*TPp5rGbmeqlY_6e=?ZiMx&whg51=Q|3+N53$9&!ZYy`O4b9Lux z&aZv*yWm}cZa`0F0Bku*n8}I?RqWb}j0Dqtf z&=hC}GzVG$0YEFDHP8lV3$zD10IyKl-vI6cuK}+7zXM$DUjkg<-vE5O%md)A1-*9< z#?OHM1|=}xu#^t`0sIMM0H1)*0I$BEz;}Ur!1us);0BN?&W2_y?$`)39*73`)+oLm za|f^!*ahqcxH0Sn_5u5W1HeImn?owF4pm14|7~J6a5{XD)JTMiQ089bK0@HwrKor1@GzORs%mCtm z1Rx%W24aCpz-VAHFb)_4%md~Cvw^w5EMNfNNz@4~>;Uj(Qtg0NKx=?6p$Y)(Kpc7| z9^i`;>%wmc)B)-P^#Ja?)d23cRe=gXMW8mo&9*!68SyfJKY(=L6L64kGdTpL0*8Sk zKpMc^_ylkUI18Kuz5y-(d<{=95CRMW1_PnM5MU?}0SpK3A?|(PA@CG<4*UkZqL0G) z!XF9F=Dxi$X;+y$-z*MSSb zN#F!<3^)ZG2QCBO0q1~kfh)lGz$M^3a2hxRTm-%`VUs@#BMmqL@GZHUfi1ukAOYYR zUG03U#FT09F>0jdI*FuA?~t^(fymw_w51>k$&BJeH1{fjTA zNCgf9M}VV18o)Pd^aRRaDCdLkp!nMWUV`RO8lg}>U=j-JhY0-vzNU$15I?{UjA`QC@NAVG zUqH?YWCwBpo(S^C=<#i)hroC_oBqN!zOsz(v^oQv11g~Ll>okAD;gLL!~n6tI3Ny) z2POkkfZ4ztU@kBZSO6^KOSBfjNCX716j%YQ0#*ZSfOWuEz<0qucf=-}f3Z-G34ZfKM@U;`Qfjrn%QCNP=;&4GGA1E3*b1*!uzfSLeb z3e59aL4aqn&wv7ZEwBdQnQT3<5?BGO0#*adfpx$#U?wmNm=DYaW;^g>9xw-(0Za#` z0SQ1XFb?Ps35*-zHZK;48(ZqV>~&IzUa}I<%VrZ~S}S*bDIWq|3oQ0D;!@MS*Pq-dA}8d?yy)P{`Y-oxo;b6Tlk; z-VhuEHaqZxViMpC_!XIjAoHi-M?h)Vyq)3ye$53BM1jMAU|=ZF4+sZBfL_2Lpg#}+ zi~t4$!+}tsHxLAb0et|+5d0Vb^aWB-iM;>|bk=rbmWnyUocsY5;@e`q06yNR44=0( zOMs;S?>>09!B;O20G#Q{z~)UuSu_4dLU|Y)f!zSRaUw7Q7y|GO7>xWi(1G`^_#`dS z?;y(JHxW8UWh?FY%rKxm&<+RyS^&J9d0F%FZVYe{eFkt*eGG7c!RW$uMpWpd`z|iZgXJH2j)q6zPJ~YZC0T~ z>9V7Qw3jfbxMLICBw#tP5m*f@1L&^+Rsk!ezX7}+SPQHHKFiNK*k4JF>73XGdkera zs4?HIz}EoFg67aOVus9|k@f>S0Y*p$*t#8(4}clI7uW?b&Te22un&ku&rSw-^AZQd z0P}!J0DtFmEN}<$ZUR?;RFtnAgwYu|1bhcv1}*^?fp38ez&F5o;2dxkI0KvpP5~!@ z6Torc7?1`W1&#oRfg8Y8;CtX2a2>b}`~ciS`O0X3t7A2wD)1wG4{&ARGwf2}vOr;g z1MCLQ2jm6v0675__!(jM09V*K01Lporq|GT7j++e7x)Qq#&tY}qsT}vVLkv@fhPb9 zdkj1T9s$1q&jF_S6?g``kWB42;1$41{{f@}Z-Do}Ti}DVe+Rz&pQQXMATohBJ)*-wSfaq0V?!01hd^9%Ap-aKPbs zR0msux!7xw23-AW|0eykCKpUVr;0yQwoL?NWX5hwv zKj5(AMNG+5_!??m#!mfncsB zTrT=ZZ45Ysf3##Yj0j)^5Dkn3!hm7G5FiSO1O@^90VGle0vzK3KoAfNFij{h7+^0j zPim~lDCx5d=I_jVD94`@hKU%+M9vu=4tqGjFzU`qvQo}C%#1o0o)}<)co}F86j)I`w(dlup8I~>;!fI$-s7CEATb21=tL10+N7@zy{zeU>zWU zL_h-;0&IkAltcdmGHm%IfHj^E=0s%6ovn1*i=@upU>MhlFaM@3g}($~?=1dX7&WG2 zoaMkeuK&wmtOeEptASO(3ScGh_YBrUV`Z{dfSG31{%*6t|7{$Of7S$lZw<$DTb2x* z*cAj}ffXBK0ZR}?CH8^{mM9`(FJLD|iNbQ%(B(hd&cuU7a4Bj&rbMU0^kfN11JsH z1Dq|crH~pWCJCkR+QjiGLYetf1jnlTf!haQdgdz$um=_vM9AYCTMyA`7*30`=i zUR?r#;t)O`RDpYDDMxY7QjXwigKMVDO}8fr9>tEKO{O9H$wEhaCS?Von8HFErwV0h z)?~p^Isx2Xg?0O6p=ixhxaTfdgk~V~a~IqlD{SR~ZAPa8S;!Bjm(yIroW%ibGIQ@{ ziR3q2C~L2A=XOS)PZ9i`xKB2XIl1rLKHK08^NLdiuTt-6NS&t&6=Y)+r&nZb-XLi{ z&|G$reNfr^Jt1J>SULb$adw#iRK{h=G@-B6jqb(R z#v5QSO2>x@Whf+72)Dn6`}ew{C85z*-muD92|2tPvBiCH0GGsKxE2Kz0Z0Je)CvGzx#aLH6$YZWfH#1D z04Bg|z$?IWz%#%@0H^$8T%Q7-0R9F%0%QZYo$vYj0?-Wb62P+F0rcol2QUCi;eIA= zZSc7WA4c#^Ni;H|8()Da0VoO3R+D@P!P_h+0C)NhJZvdj$X4;zoeglumCw&vaTi?q zJe{}py!9#%U_Rb`F(1=-CgY|WKyx)88P)*s7K~k89q@nT>HE+Pi=qFj8l~}OGz^5TT08T(n5V!F? z11A#G^5-C2`P|44pZN?a08ocN1NgwH4uDTsn2ryj_{2r)hh>`#)fH>m3!906aNM^7aBlKHj$})~CxF%fzGrv>xDA*9NCEJMI}yN}Za!|} zgTqLGCWCcL!2MvrAizLCdjqOKJA9CP;?8KuOl-#cpeY8xyZvZDFF;Q~4?uT7H$YcF z7eHq~2S5~{BOnnr@By7GuAS5?f93%3X%SCPJoV&HfYHEl0^p<}S^l-Bk+@+)IVfxx z8!#N#5dg*w1!#E2<;j5D1kmXD%q0oHvNSo|#`g?G@R?~9dJJGD;tXP~@^-`o9LW3% zj78gNSja0iUO=;AJPx%C;%o}Sy%}%|a0PG^a0Boc;5y(M;40t@`j>y`=p1f%M4!cV zF<>Hq1;x# zpz~Dx?+ldKiR&>y8sI442w(}|dq5^&Dd1PYkAT^Lbiglw!+=A81AzU2eE>FKFa4b+ zlu6!-kG}ydfK`BnfXRToHq695>&JRc0kBG60N4(;XNG!ZJm2#^oz>)awvDfOZD+hH zFIg7G_OZ?yAv4Vd%m-)!xlMBn3)2L0+X4VPdnJICTLf4ESPobQVBdTVU>e4={rq`4 z&kyWGzR|2>W%!;g&41+%II`>!re}w9=c@sEGl7+6@37Kr={EqD#nEQD8vs86)^lF2 z1F#Z50@eap`)>gph93YN;WdEo04#)s@|A&wvp~%vZsYrnfc$tZB{^L;1K7}HjuX3? z^NrIbZ|pTIIS<)VwvywX*8>`kJ7cSvPV)qNAaAF6@3~JXk}MA#Mz8`bfb*QMtlcj4 zGv{&!U=Lt7K!8mTu-^MZ+#|raj?t`!FVNI!79Dhy-t&v^BL~3@*Px)9=ZrcoC zCAm}f)INYFi21k!mc=+$hJk4{k7)Ny%ef;f%<*R;4#Q6X&Qk7-+c=I|GIAS_dYP$! z&wrwgm0{tN0Gfwq z&+`~<+|S!-;6C6U;I8^P zZ>KC=0OVJcy~4_}A*@gi$Dg%%3xGDde*nBrWMwYkGb{2MSFZZ3$O~=*utLvpeF|WO zG`APlA$x~oJ{7mRrYPPV&EdP*SIe-!14&XNx2C+O``E3P0hUFIwTmk&D0l##>FCRDw z)MK8|1mBNaF;9rWMVc>E4qXlE=D>ymLIBMGtI*a2SAN#qRK3^Q!qod;5if3Qj-H#+ zp!vcltvlkQwg~Hl&rtw=DUsh+3;}r;Tss3gsrTI0AD^3oj$caT^MZ*GSsK@&B#}_N z_@Dgl82-&oreG4PS^AN1T(1wX)LSTY5%ea@yv0Ji0pF?=mkALDa~%p7O(}hSUbRZT9WNU6J^Xx3 zJ|^t<0?BThU^1>Y%e&Q-miu=!TX$+lut6W>WA^cdLYvIgW1HYv{1_9^z9Bq4@Z4)Lth_1UmxE}L6pP1zADAv&uaZJRb26kDbOMQ1p|Y9cFOOW zzl0TC7}nJ)wRI4M|1Ove-GeCQcgRQpr6VXqLtD%k>nQe9dNIMe$-rQ%pOVtE+m|-0 zvZ^x1PnNzgh>kMvdX-}3%XnY$fZHHzFX_OzfLH3<>a)uwysk2@zs!3+h>SbfGoZk- zJZ1XM-|Ws`xITp`5D5G$S(n=G5WbS4>OuxxeIYm*qUuu44#C4XDKwJ?)<>R`y_Z;qa&`*leD}r8r5ea*B`FK`EL_^pWjjJ`@~H!d zVj~NTGt?P)Y{xHcPfR?_m;j$Zs1wkDX6%B(EmVp++xxq%akK4b(EIuL)%AhSJsQw1 zrWgtecI6Cl>!=&IN4dz-eb{A?(QA+3VsLCow!4u~T^h>AAt|dpFMTnrWzAMdIe#Bn z4~5cM^w*h!DKlMgp|st|)sSHN0gQ&>!E|Xi1f>MiOTPanm}>38RqG(%m44hK1Q-jq z8sxHVg=-Gme4&N8VE=Hy3ipeu49!m$+>9Z?%1Bssc)_S;15WgZ$w5AT_)jxbwZWO* zqzgu4<0hD7;LDD2Rg+8^5%mpvq`rxr*`fiJ-wVHlX9y04zD=lChTu|s1juWG9EmY8 zBTr(?Y)Zdoz&{I`(p|o)%*G2%m2h_p9lX{M^yFt~Q^&{8jDUwUqjq}*6V=-Xw{H%m zUAF|60mDgsZ^2x{DjOf9EYd6x%29NAv5beBa=OIWp@Rnw zkJZ)i`{tPY?O`uCvrQ(SAX>avFt&|{5PJxj@qLvV>vp>aKnN^H9n!_ej!Z%V=q4O| zdbUx!9!u=>$)NQB?Oj~C?Co}_|Ey>DR~Sv;frD`>(45XZ5lrUs&6VNb$R;u_G4)^{ zQ6J#r&#LJN7&q`v{AAf@_r5P4ZpCbDPQg!+ig5sBV_a7H`J5<$5aa+ZlF>QM{ z^KnPL6(hEw8Q?W~w7{$h-qgget6xlQS;|V$um$a6>0Lm<5iOE*qR+siPYhOykt(Lc zrJXCLJ)PiY#msL(w$H%(Gbk#6H|WurHnw)tj$0{Cs+i4H#qPehr#i>0>*MP*2T*<<1OfW?R2St*7CQw5mr2Zw|`HmE|RWX!!;q2;`@m%hVhZK{Ru|V+*r}gFt#1}T!#vE+slX3DG{~ztaLq;?uf7j zAk+v-v-afh9EG=22m0}V5NF)dLCLvAbizqyJ1$IDx|U#GA)IznZrJ6oD+= zPj@wn+8###cR|56d>8v*cC)juJA=X>ysP0R_YiQGvmS2V*{W>ZUOzS?Vzu4e9 zRw_MAb>xW*dfaEqp&hA6CL+17BX!7x*DrvBH9uopH{QYNla{jPCZ3CK0K<`+Z@W#peyZyJT?EEDEo*|&Jfv+Y>%RoZrzlcTrD+y?cGD6cfb~?B>0+c zH0vmqhaHa!bqvali}5DN9pQnqsnv3VyQUTcxtcStyHUnbAx@=qs(>I}?x75cuI~GP z9T}K&S5`?*(wp6=*D<6(>t0Ilhl}2+)+*vqrb?jJp0qoWU+B3NHPM9k0ZdtRlm zxa_@;yNgJuF~xq_qCgA9Xl(<=)RN%S!P{7#TI8@*CDS% zKbtPwAdj_1{gv^#rBmJ0bGKvL$_p@Ay4t@%m0{5I+R&c{vR;K-Fk=8M2Su(0YX)G4 z2mQXbl=$OIzsH#9HCqo2pogF|Uj;>3P}Es{tHyWhbH2Ay*kJtf#5MHiuS#@wDQmD| zUJjrJCqJr(s`8N&0l z5N<5I?p+&1U!4|GjML(k(Y|!*wx(;|+J1{l#KRVO^;JCioPo^c@%Xc1Sl^ik(^$Sr z3A6$2=1B=k4oCI6|L*my=;w0Y%T=X73`RGqeLUqbuW5)f2pc}xwegT$Ag`XVgpp?q zV0bPOJDEBhDe}W!V6b#y%%LF^{s$r*lc;F?^Q-dbW~D6MqVNV`eHoufDWEXSOQc1A zpn@znJ1YNB0&0i62)WgH(p9o%;*?-s&)6r2d`RX zEgeQ4XQAZx!>Ha_)TO1vDHT`aXCoAs%zFOK@~!0rEHyDjnt9qEHi903!#oKT_UL_e zpPu7Zh7WEJ3U&?jn+uEsFqe-E>H6sUngb&5u;gv_w<9R{9C){Zf~Uxlar>GXx9`Q; zOrywBF;y?T+Y(pq-E}MG#t51LUgJNY;H7T**LMADPoNc63j2|?>l_?BVKhBG2V0aq zmmZ<=vG_-L6DwlzzITakL(k=Bc1y19fpbG9JttazS>V zT-&||h8K>VN3Z_o|II0qV~iO1>8%qwrNyqw$J^_ZiFNEV)w}+fPl? z$niA(B4j8Uvz292C==2Q{weej>jpzi;(Rt*bAz91oHMn$B$#uXbG`Esul#3kESx~% zWoV=JZFGa}yt*pgH0*roh7W=?y#sZcI{v!%*Aph=oQXK}0#DVw-?p#rK0wrX{B)W{ zR$lFsAIG-Am5)a1{eF0*QF#0nxi0cfu}$H-J-ew&0=Z3g>{@N~I(O^#tZ<$RwD~W= zOK+yje+d>7X2h97&~M9E2G2I}1Wo z<()pKM>kQQCd^b0Zg#F3(LM6Ui$$QotZK&O_??Q`cJ@Kh^P`tyQ455;zdACLYTbd} z&u3D%+k(pgV;aubVSm-Nx2E6vY8Iw0xTh}9uML6m0_N3@h=jksUR>EKqaQHUfH{1_ zq2893SBx@7K5|F{hC`C^a@KmU+Lvr(4E8a2V3D-S{CQ(dLI2uu}VzR#(DGi@cFk}(Er9=!H53(q2e z@h-V!--0YZrNmsza2g8?H)kTYA{y}NbcbZM%PjEPl(X#wLOh6|3-o?>I@I##7_4T6r6uWNQZaIL9w+z%(|&d#CmzY7}%CLT+- z=1>YK^7qHe?RkhHiU$L?|Hdk0`&=?V#`ZgSo-!&kQcoT2@-)j8OIxG{8yv1;T4ouG zbsKYLJTU4?ugg4I`WSumokv?B!%#?{#;v66H-G#4mr4~*rM2YqXg?&rS*N<_eQ)IR zpN9Ov6wSZopTLFxB~z}@f?ZD;9F`hi)0J%42ibDL{4nGgK)eFeA(}pq;DP_31<9&@ zOmBta--t0bU#djx`!126+uv9_#Gv=b0gFE#XB5J&P;5nduq1WE=9XV8M;uIfj2-LIBY?78#R&TG zxe#Djw}N`vi7xc|IkpAqD=gz*2nM||b)~W_cb(FyX*sC})W)PEcfNEbEq*C1GHhN+ zy#$;S9tI^pG1~s(n^&XGbzUd$p1CsVuCJtruP|gcyuib~>nkm|G3pJUuBMXzU`w)M zwK9!=-=^I0#b2G+CYvW0?M9spm zR~I^06pCy7s0%|RS5ud~Fth${_wyXDwh5Li)f^x2@~noY!*5eYRPHsJz~hYv`$ zunjcJhyg@y@|?u;93q_(I8yoLGOv{xJ@*xCg{>3*8>_H*`&;$yKHZL-+XhQzh&J`{4n** zCVI#eS3qG09Y_B5td3N#;5DxrPJ7E0rL z%|p8?i4Mhmep3!q)WcaO<|A0LttKm9B+Okp{|6HQCBKMW92c6iNdOg z{S5KH(}pT&)B-g6cgn%Nk#;Cz)>iDa^7WK=Rb*GmDY1G7g;zyKrkzU2?v?a#EitjG z2^8wnLG?L~Ve~FqR5g!mxaf9O(X)8cZe=I_Z$}0mlOsX-sAfde&L8I49OKmHb19_u z$A*bX-p2iZ7$*5VNp_wng{E|>#bc>{I;GXdRUKRAkCZC7k@x=ZmmrR6^K@FzvihXc zcoZ+gq;$IGSwJyEvGespNbjXn2=}Sd8z-eJPa@;XKiPTu&nk7T9==vdMYXa> zj|O8paH)mqU`hr>)IvrTvXaO7s%B!oZVhP}lm$-1PZ@N#mgxDuaN|8F#p{FF=UeJG z9q%;_S)&$h@U`<6JtbKge)+>Gw_K~^ShJ8$c*E7Sj~=4@8NS;`R~q7qa`z*yRL=)U z%Rc(l2R^}?XgXgL_R|g@jN$|PmG##&o0>~ouiEsTJcMwzfalfwlv?&hpSc^ipF4>4 z6&C;$J6-z&RI>Jm{-wm)=t%X#N9Lk@&dxPT^_#f{5`d?Oq1&U@t~ZqCG8=&HD$2*d z4q&d#)`#gwUqmh8urhhPaW+J)>75a8eWPdcVY&he^D0pA{`2CX&iAKIY7lLuH~1jL!ib{a`YGL z88#oKw*JVXmd9v-zZhk*CBX2+T;#^%GEsu#aA5Fs zm+Sq;EV>UF#{Hn+CA)*Z<%Oq~zN?fZ^Ti|JOIhR*AUf5>@CngO*|F*Cv9^)?p*y9#LD&BU-#}fWnv*x&tQ2KWD=$Bd{j^!YQS;n*D<K85i ze!AIbXh(fSX2}_P%-3pvP_+hPoWbS_r8N*uj`{bEoEEgcg6LWd!vV>mD`e73E^yM5 zPumJ!cPo>gawI$3lAhkbl3%JkX~{f&Fmv#>)^K6!*ae^a<3&+S95SZBIvLL_aM*J_Q z+y9liX;6yu#^GefwVquo;E}dw;!nVEzEtn?^><%XbHWb5(zx)etZy``vm-T3fy?_PF6|Uy@24#HR=~g7an#bG20K7u4tb_8e zkK6~`R5)6E6Tkk?3Po^!j%h`H?;?pV_Yqz76UjRmmxa_kSoFtV>>qh$qvv@pfjEX0nZ5?&X2C)WenmM!~7vO5Z_X`Njbr&{Mt6=!A(l& zjr(^uDZG*Bf*;_FZ6taXtA0x<^WTwu4|KnQB0J!+o34I_?n~TO=9Ol9-_&h%c!=^E ziF}e)ne-u`3#QubaQTj+JK@rSqCXLxgW!c8V6=l;ht^Ch{ioFYqN=wEUmgU;379PN zeSO4Xr&d`~w~5hRrm)BaQ;zg@}@I54at`Z5uNGuKSqwIJd{_ zFK_lv-6oI5qD$a)Q1I;EBjQT?JCQXS%kur$W3Pc>SKa@q;R?rJqLi&J_GkQM@1LN) zyWJgSOI2E2dab9)n4+?Rpc<`cjG*{Z#V9D$g0dUq5=qDVimv3*LUh9q;52Lk3H>2~ zchiFwZLc^xdIuhT$QwXJV&#LerPJ1@S{@~LFiub zu5zF^(%b9aSWmaxsxAJQF37$aBq0rIH4|Oj8-uVIRF1Ea{mqq^m%>#AV00_$3Btf= z5OBcOJRUi%)53}tnE+1r)eQ%RR~-o%i*11_T_flXpk_dEKoI zp1;W13njMFRaWBoU3vp0jJH)n$suXW@~^}AaTljKP9a|3CErk}S?r!-Pp2QdJ+3&g z9Up<>B@#T((iN0~v@TREhhOMISpD(qLhnMga5)y?b)c>{b?=BKIkQ~#YM%MfgfKKJ zcl2#b(TR>V7A3Vod%aVyM$(5Oo5RGylS(1@XgcT0R5i_$QCg(+vR3@so=zSZu7=mQ zX;&N32@lnEU9*+y@W_%nYhlqF{LG)vvyolf$sXf3pXwSbRcs0GsL8BIRn*iN*myUj z-0qf;(E&f>07Fy%R$iIW)qOgAW%Dn_s3AgMiq`lwlU zv>GdzAW(PYw7cVDr8)>vBc|V+Z{+uhis<;z<(%L;YhD_yxE z6Oqqqsk!o085swf?L21rG8oT0<;cN#ip}nYlrfy`De3GU{7e}TV_rP=-re(CF8u0| zSsPl>Rdg&OSH}6GC!7#M5xK$_ zqsnc>*2b$KC=P<V~D-Q`C|8TM| zU5!NfQEO+R#l`%7aUqxXNCdU|t94mU1LyLndA;u|+qX?W6`6C&FAU#dkUfd4S2X;P zyQ~m^aLa0|B}f*^&F{~~YMsip6tisZOkE&O9sciUWuQ)_RY$(sr!sYEWiK^KbaSu% zRxzcN^UE%eW?bRpSRS7+Md4AW9~b;c@!vclPNou{Vpz`wn6Q7_+H>BtR5euk&*e~aKyi{L&suPDZD2{c zXhmTv-&HPud6FoXLY=7Oa^R}3Lfg6`RPTkrMIB38#gy|(b%DH6(W<}7mS_3$e%>m} zn(`Uh|Ybc$2~tLeX*u@_~f${w0#IXuI}O73rs`#;ZI}o zi-Y4nq3&^FMSUkqjzf@#&_Xm8ONHDTkSpgG+Xp4(VS>+fuw~5kRo;@Njw5q{OBxsY zwJ++Ax&l;Yl5!=mn0H1um6OA2KDqDVD0>8ZU8t|tQ)A&1jP@2?zHe9=&)eeHlpxgb z$B-0iZ1R$Y$_J~rY-xKxB-6qP%Bu7Bn(3v_oGF60y@%tw&+OM+yYl5go>67ZlaJV5 z@a|L2X!W~axwZEr8%A}nh~EgmH~^Do;Ttt|(ot$iu4HvVrMTQWLlsc`v|_L1GcQ#? z93-fZYQ0xWl~NrH|Mod#!B6N7^ET29eq#Us;6Wp0Y!mG0+(5Ake(~?!K+)BF*qe&*D_UwOdHMX6R| zXGdx<7~6VJP&h%8rS864Pu_{?Vx?$Ag9k&CC=hTlDOI-Fou%uC@3#_srefBH_3xh8 zsQO|nW&-^VR{Z#8bRy1;?hO|GDkr-uGsrGn9U$(~rJYOGntrb(X4Bh}08g0sAg?#|4Wvp+P!_d4{_XvZxhA7>NoaX3=UN(Whm6FQdM#N7O$jVr#Y0V609{ld!aDzLZWR ziE)8}HIx~}=fbo{va=$+H+rmTE6lfPrE&|Rl&5CrOL>gDGw4Lqv$2)n&9&`RI|3|lh$w>jI7 z3~g>>#e`79;gH=61pJ)gbkveV{aW8WXeF3HLqMQkNnbEs2I%+^@11a|?F0RQT~@kV zv=an|;+}MFILyYQDcccPvMf2H91=9O8`R*+?MW4yaK)3~B*DX~ZX=NT`5$k|6j+e> z>2_GY93cvNW3aC>fsfxZZ0LcY(|9*VdtV=~UalXBUK&Lyz4XieIlEmzQcc;p^4~U? zif`|L0zcYYdlX!>5~BFKS;=C%$}eZ9;``y6sO`Y;bJr!~bxpdjTt2{x`GdxR)%+9$ zt{^yA#A`~4lwNFFwHz8P4v;8%w&-E$kRsl4F$C77h6}|QeI3h+g<>Zs%ae`bDtkOi^QFec zq%sthfpTY`A)0Avx>$i0yb?<_4;dO8pOiSNc4BOFOp5viji<#45D4LMH@2j7aj4pf_2 zpJ4-I>GB)sy7G-UfqK3b575paNunBW#X9s|d8rbmo)TMUeS6Z7NrN}rLuJVlvu^$eOfGCl7jZ*ZBSXOw5wtf zOUP9*U2my>UEHcKme4;vUJXdp9{f$ z`a>`I^8f59%^($_5QAhxwg#y+v-@*f8UEBkxjkio333ngO01+0pslaO8kF){w5Q{* z@ON4Cuf-7hJ_lVoBuMVG;hk8ToZg8(bTvb)qUZu_lalybGw9yeqXB9R4QV5l&n3N} zP$fuGX|i=h=dJz`FOlVv=uQ!DVBWsfu({V9u?YF(h+}B{YrGXYU>*8eejhG&5~R}B z#Dfq!S}aQ8w82IyPL+#D73j7oRikJ@sz^?oyH~eOpTEhdOrS%rC!vwxOCVO zSXy$@v#mB%sRRfs+u$p-Tgynnxl-+DLJ28O@zW9;sW;s!A-$%y?%-IsR}3tP!I2mn z7n>Lx9}`R2d&O}yYM=NkCtr1v;t@aN0dWm^Oc6_4hF6eY`QXntB}7P7^_F*Sq*kTL zw<#jo%||Ll`o}gVSq_36aSaY<^J}g$Ew$YM}rEO2Ci=J*S zL0vo4OCm3BEkZdy$i&!n&^4zXdOq6*pEmp=7Pa)BA$eCR-j9E;1pktLrR5utBL_A} Gi~k3G5WcAZ diff --git a/package.json b/package.json index be95821..5723eeb 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@radix-ui/react-toggle": "^1.1.9", "@radix-ui/react-toggle-group": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.7", - "@sentry/nextjs": "^9.34.0", + "@sentry/nextjs": "^9.35.0", "@supabase-cache-helpers/postgrest-react-query": "^1.13.4", "@supabase/ssr": "^0.6.1", "@supabase/supabase-js": "^2.50.3", @@ -64,21 +64,21 @@ "import-in-the-middle": "^1.14.2", "input-otp": "^1.4.2", "lucide-react": "^0.522.0", - "next": "^15.3.4", + "next": "^15.3.5", "next-plausible": "^3.12.4", "next-themes": "^0.4.6", "postgres": "^3.4.7", "react": "^19.1.0", - "react-day-picker": "^9.7.0", + "react-day-picker": "^9.8.0", "react-dom": "^19.1.0", - "react-hook-form": "^7.59.0", + "react-hook-form": "^7.60.0", "react-icons": "^5.5.0", "react-resizable-panels": "^3.0.3", "recharts": "^3.0.2", "sonner": "^2.0.6", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", - "zod": "^3.25.71" + "zod": "^3.25.75" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", @@ -90,7 +90,7 @@ "@types/react-dom": "^19.1.6", "drizzle-kit": "^0.30.6", "eslint": "^9.30.1", - "eslint-config-next": "^15.3.4", + "eslint-config-next": "^15.3.5", "eslint-config-prettier": "^10.1.5", "eslint-plugin-drizzle": "^0.2.3", "eslint-plugin-prettier": "^5.5.1", diff --git a/src/components/default/auth/buttons/client/sign-in-with-apple.tsx b/src/components/default/auth/buttons/client/sign-in-with-apple.tsx index 358db52..c43b96f 100644 --- a/src/components/default/auth/buttons/client/sign-in-with-apple.tsx +++ b/src/components/default/auth/buttons/client/sign-in-with-apple.tsx @@ -15,21 +15,15 @@ import { cn } from '@/lib/utils'; export type SignInWithAppleProps = { submitButtonProps?: SubmitButtonProps; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className'>; - textClassName?: ComponentProps<'p'>['className']; - textProps?: Omit, 'className'>; - iconClassName?: ComponentProps<'svg'>['className']; - iconProps?: Omit, 'className'>; + formProps?: ComponentProps<'form'>; + textProps?: ComponentProps<'p'>; + iconProps?: ComponentProps<'svg'>; }; export const SignInWithApple = ({ submitButtonProps, - formClassName, formProps, - textClassName, textProps, - iconClassName, iconProps, } : SignInWithAppleProps) => { const router = useRouter(); @@ -58,19 +52,19 @@ export const SignInWithApple = ({ return (

- -

+ +

Sign In with Apple

diff --git a/src/components/default/auth/buttons/client/sign-in-with-microsoft.tsx b/src/components/default/auth/buttons/client/sign-in-with-microsoft.tsx index 370846f..2aafc43 100644 --- a/src/components/default/auth/buttons/client/sign-in-with-microsoft.tsx +++ b/src/components/default/auth/buttons/client/sign-in-with-microsoft.tsx @@ -15,21 +15,15 @@ import { cn } from '@/lib/utils'; export type SignInWithMicrosoftProps = { submitButtonProps?: SubmitButtonProps; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className'>; - textClassName?: ComponentProps<'p'>['className']; - textProps?: Omit, 'className'>; - iconClassName?: ComponentProps<'svg'>['className']; - iconProps?: Omit, 'className'>; + formProps?: ComponentProps<'form'>; + textProps?: ComponentProps<'p'>; + iconProps?: ComponentProps<'svg'>; }; export const SignInWithMicrosoft = ({ submitButtonProps, - formClassName, formProps, - textClassName, textProps, - iconClassName, iconProps, } : SignInWithMicrosoftProps) => { const router = useRouter(); @@ -59,18 +53,18 @@ export const SignInWithMicrosoft = ({ return (
- -

+ +

Sign In with Microsoft

diff --git a/src/components/default/auth/buttons/client/sign-out.tsx b/src/components/default/auth/buttons/client/sign-out.tsx index 2ee273f..04dd2aa 100644 --- a/src/components/default/auth/buttons/client/sign-out.tsx +++ b/src/components/default/auth/buttons/client/sign-out.tsx @@ -34,13 +34,13 @@ export const SignOut = ({ Sign Out diff --git a/src/components/default/auth/buttons/server/sign-in-with-apple.tsx b/src/components/default/auth/buttons/server/sign-in-with-apple.tsx index 009537c..8fcb06c 100644 --- a/src/components/default/auth/buttons/server/sign-in-with-apple.tsx +++ b/src/components/default/auth/buttons/server/sign-in-with-apple.tsx @@ -11,21 +11,15 @@ import { cn } from '@/lib/utils'; export type SignInWithAppleProps = { submitButtonProps?: SubmitButtonProps; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className'>; - textClassName?: ComponentProps<'p'>['className']; - textProps?: Omit, 'className'>; - iconClassName?: ComponentProps<'svg'>['className']; - iconProps?: Omit, 'className'>; + formProps?: ComponentProps<'form'>; + textProps?: ComponentProps<'p'>; + iconProps?: ComponentProps<'svg'>; }; export const SignInWithApple = async ({ submitButtonProps, - formClassName, formProps, - textClassName, textProps, - iconClassName, iconProps, } : SignInWithAppleProps) => { const supabase = await SupabaseServer(); @@ -45,17 +39,17 @@ export const SignInWithApple = async ({ return (
- -

+ +

Sign In with Apple

diff --git a/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx b/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx index cfc965a..a3a013e 100644 --- a/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx +++ b/src/components/default/auth/buttons/server/sign-in-with-microsoft.tsx @@ -11,21 +11,15 @@ import { cn } from '@/lib/utils'; export type SignInWithMicrosoftProps = { submitButtonProps?: SubmitButtonProps; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className'>; - textClassName?: ComponentProps<'p'>['className']; - textProps?: Omit, 'className'>; - iconClassName?: ComponentProps<'svg'>['className']; - iconProps?: Omit, 'className'>; + formProps?: ComponentProps<'form'>; + textProps?: ComponentProps<'p'>; + iconProps?: ComponentProps<'svg'>; }; export const SignInWithMicrosoft = async ({ submitButtonProps, - formClassName, formProps, - textClassName, textProps, - iconClassName, iconProps, } : SignInWithMicrosoftProps) => { const supabase = await SupabaseServer(); @@ -45,17 +39,17 @@ export const SignInWithMicrosoft = async ({ return (
- -

+ +

Sign In with Microsoft

diff --git a/src/components/default/auth/cards/client/forgot-password.tsx b/src/components/default/auth/cards/client/forgot-password.tsx index 5775411..0f6f697 100644 --- a/src/components/default/auth/cards/client/forgot-password.tsx +++ b/src/components/default/auth/cards/client/forgot-password.tsx @@ -32,33 +32,21 @@ const forgotPasswordFormSchema = z.object({ }); type ForgotPasswordCardProps = { - cardClassName?: ComponentProps['className']; - cardProps?: Omit, 'className'>; - cardTitleClassName?: ComponentProps['className']; - cardTitleProps?: Omit, 'className'>; - cardDescriptionClassName?: ComponentProps['className']; - cardDescriptionProps?: Omit, 'className'>; - signUpLinkClassName?: ComponentProps['className']; - signUpLinkProps?: Omit, 'className' | 'href'>; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className' | 'onSubmit'>; - formLabelClassName?: ComponentProps['className']; - formLabelProps?: Omit, 'className'>; + cardProps?: ComponentProps; + cardTitleProps?: ComponentProps; + cardDescriptionProps?: ComponentProps; + signUpLinkProps?: Omit, 'href'>; + formProps?: Omit, 'onSubmit'>; + formLabelProps?: ComponentProps; buttonProps?: ComponentProps; }; export const ForgotPasswordCard = ({ - cardClassName, cardProps, - cardTitleClassName, cardTitleProps, - cardDescriptionClassName, cardDescriptionProps, - signUpLinkClassName, signUpLinkProps, - formClassName, formProps, - formLabelClassName, formLabelProps, buttonProps = { pendingText: 'Sending Reset Link...', @@ -101,25 +89,25 @@ export const ForgotPasswordCard = ({ return ( Forgot Password Don't have an account?{' '} Sign up! @@ -128,9 +116,9 @@ export const ForgotPasswordCard = ({ ( Email diff --git a/src/components/default/auth/cards/client/sign-in.tsx b/src/components/default/auth/cards/client/sign-in.tsx index 57e0208..c2c24bd 100755 --- a/src/components/default/auth/cards/client/sign-in.tsx +++ b/src/components/default/auth/cards/client/sign-in.tsx @@ -64,20 +64,13 @@ const signUpFormSchema = z }); type SignInCardProps = { - containerClassName?: ComponentProps['className']; - containerProps?: Omit, 'className'>; - tabsClassName?: ComponentProps['className']; - tabsProps?: Omit, 'className'>; - tabsListClassName?: ComponentProps['className']; - tabsListProps?: Omit, 'className'>; - tabsTriggerClassName?: ComponentProps['className']; - tabsTriggerProps?: Omit, 'className' | 'value'>; - cardClassName?: ComponentProps['className']; - cardProps?: Omit, 'className'>; - formClassName?: ComponentProps<'form'>['className']; - formProps?: Omit, 'className' | 'onSubmit'>; - formLabelClassName?: ComponentProps['className']; - formLabelProps?: Omit, 'className'>; + containerProps?: ComponentProps; + tabsProps?: ComponentProps; + tabsListProps?: ComponentProps; + tabsTriggerProps?: Omit, 'value'>; + cardProps?: ComponentProps; + formProps?: Omit, 'onSubmit'>; + formLabelProps?: ComponentProps; submitButtonProps?: Omit, 'pendingText' | 'disabled'>; signInWithAppleProps?: SignInWithAppleProps; @@ -85,19 +78,12 @@ type SignInCardProps = { }; export const SignInCard = ({ - containerClassName, containerProps, - tabsClassName, tabsProps = { defaultValue: 'sign-in' }, - tabsListClassName, tabsListProps, - tabsTriggerClassName, tabsTriggerProps, - cardClassName, cardProps, - formClassName, formProps, - formLabelClassName, formLabelProps, submitButtonProps, signInWithAppleProps, @@ -165,52 +151,52 @@ export const SignInCard = ({ return ( Sign In Sign Up ( + {...formLabelProps} + className={cn('text-xl', formLabelProps?.className)} + > Email @@ -240,8 +227,8 @@ export const SignInCard = ({
Password @@ -274,11 +261,11 @@ export const SignInCard = ({ Sign In @@ -290,6 +277,7 @@ export const SignInCard = ({
@@ -345,8 +332,8 @@ export const SignInCard = ({ render={({ field }) => ( Name @@ -366,8 +353,8 @@ export const SignInCard = ({ render={({ field }) => ( Email @@ -387,8 +374,8 @@ export const SignInCard = ({ render={({ field }) => ( Password @@ -408,8 +395,8 @@ export const SignInCard = ({ render={({ field }) => ( Confirm Passsword @@ -435,11 +422,11 @@ export const SignInCard = ({ Sign Up @@ -451,6 +438,7 @@ export const SignInCard = ({ diff --git a/src/components/default/auth/forms/client/profile/avatar-upload.tsx b/src/components/default/auth/forms/client/profile/avatar-upload.tsx new file mode 100644 index 0000000..7a0be69 --- /dev/null +++ b/src/components/default/auth/forms/client/profile/avatar-upload.tsx @@ -0,0 +1,72 @@ +'use client'; +import { useFileUpload } from '@/lib/hooks'; +import { useAuth } from '@/lib/hooks/context'; +import { useSupabaseClient } from '@/utils/supabase'; +import { + BasedAvatar, + Card, + CardContent, +} from '@/components/ui'; +import { Loader2, Pencil, Upload } from 'lucide-react'; +import type { ComponentProps, ChangeEvent } from 'react'; +import { toast } from 'sonner'; + +type AvatarUploadProps = { + onAvatarUploaded: (path: string) => Promise; +}; + +export const AvatarUpload = ({ + onAvatarUploaded, +}: AvatarUploadProps) => { + const { profile, isAuthenticated } = useAuth(); + const { isUploading, fileInputRef, uploadAvatarMutation } = useFileUpload(); + const client = useSupabaseClient(); + + const handleAvatarClick = () => { + if (!isAuthenticated) { + toast.error('You must be logged in to upload an avatar!'); + return; + } + fileInputRef.current?.click(); + }; + + const handleFileChange = async (e: ChangeEvent) => { + try { + const file = e.target.files?.[0]; + if (!file) throw new Error('No file selected!'); + if (!client) throw new Error('Supabase client not found!'); + if (!isAuthenticated) throw new Error('User is not authenticated!'); + if (!file.type.startsWith('image/')) throw new Error('File is not an image!'); + if (file.size > 8 * 1024 * 1024) throw new Error('File is too large!'); + + const fileExt = file.name.split('.').pop(); + const avatarPath = profile?.avatar_url ?? profile?.id; + + const avatarUrl = await uploadAvatarMutation.mutateAsync({ + client, + file, + bucket: 'avatars', + resize: { + maxWidth: 500, + maxHeight: 500, + quality: 0.8, + }, + replace: avatarPath, + }); + if (avatarUrl) await onAvatarUploaded(avatarUrl); + + } catch (error) { + toast.error(`Error: ${error as string}`); + } + }; + + return ( + + +
+
+
+
+ ); + +}; diff --git a/src/components/default/auth/forms/profile/profile-form.tsx b/src/components/default/auth/forms/client/profile/profile-form.tsx similarity index 100% rename from src/components/default/auth/forms/profile/profile-form.tsx rename to src/components/default/auth/forms/client/profile/profile-form.tsx diff --git a/src/components/default/auth/forms/profile/reset-password-form.tsx b/src/components/default/auth/forms/client/profile/reset-password-form.tsx similarity index 100% rename from src/components/default/auth/forms/profile/reset-password-form.tsx rename to src/components/default/auth/forms/client/profile/reset-password-form.tsx diff --git a/src/components/default/auth/forms/profile/avatar-upload.tsx b/src/components/default/auth/forms/server/profile/avatar-upload.tsx similarity index 100% rename from src/components/default/auth/forms/profile/avatar-upload.tsx rename to src/components/default/auth/forms/server/profile/avatar-upload.tsx diff --git a/src/components/default/auth/forms/server/profile/profile-form.tsx b/src/components/default/auth/forms/server/profile/profile-form.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/auth/forms/server/profile/reset-password-form.tsx b/src/components/default/auth/forms/server/profile/reset-password-form.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/forms/status-message.tsx b/src/components/default/forms/status-message.tsx index 03da2dd..52cabf3 100644 --- a/src/components/default/forms/status-message.tsx +++ b/src/components/default/forms/status-message.tsx @@ -8,45 +8,47 @@ type Message = type StatusMessageProps = { message: Message; - containerClassName?: ComponentProps<'div'>['className']; - containerProps?: Omit, 'className'>; - textClassName?: ComponentProps<'div'>['className']; - textProps?: Omit, 'className'>; + containerProps?: ComponentProps<'div'>; + textProps?: ComponentProps<'div'>; }; export const StatusMessage = ({ message, - containerClassName, containerProps, - textClassName, textProps, }: StatusMessageProps) => { return (
{'success' in message && ( -
{message.success}
)} {'error' in message && ( -
+
{message.error}
)} {'message' in message && ( -
+
{message.message}
)} diff --git a/src/components/default/forms/submit-button.tsx b/src/components/default/forms/submit-button.tsx index 8cdd63f..7fdd83c 100644 --- a/src/components/default/forms/submit-button.tsx +++ b/src/components/default/forms/submit-button.tsx @@ -10,39 +10,35 @@ export type SubmitButtonProps = Omit< 'type' | 'aria-disabled' > & { pendingText?: string; - pendingTextClassName?: ComponentProps<'p'>['className']; - pendingTextProps?: Omit, 'className'>; - loaderClassName?: ComponentProps['className']; - loaderProps?: Omit, 'className'>; + pendingTextProps?: ComponentProps<'p'>; + loaderProps?: ComponentProps; }; export const SubmitButton = ({ children, className, pendingText = 'Submitting...', - pendingTextClassName, pendingTextProps, - loaderClassName, loaderProps, ...props }: SubmitButtonProps) => { const { pending } = useFormStatus(); return (