From 41951d76037a597d2b82f761d8b81c2e0eaa5a5f Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Thu, 7 Nov 2024 14:26:57 +0100 Subject: [PATCH] Add permissions --- bun.lockb | Bin 355242 -> 352102 bytes composables/useDatabase.ts | 3 +- db.sqlite | Bin 53248 -> 61440 bytes db.sqlite-shm | Bin 32768 -> 32768 bytes db.sqlite-wal | Bin 156592 -> 28872 bytes db/schema.ts | 10 +- drizzle/0002_messy_solo.sql | 12 ++ drizzle/meta/0002_snapshot.json | 300 +++++++++++++++++++++++++++++++ drizzle/meta/_journal.json | 7 + drizzle/relations.ts | 37 ++++ drizzle/schema.ts | 57 ++++++ middleware/auth.global.ts | 35 +++- package.json | 2 +- pages/admin/index.vue | 8 + pages/user/profile.vue | 18 +- server/api/auth/login.post.ts | 2 + server/api/auth/register.post.ts | 2 +- server/plugins/session.ts | 2 + server/utils/user.ts | 38 +++- types/auth.d.ts | 6 +- 20 files changed, 523 insertions(+), 16 deletions(-) create mode 100644 drizzle/0002_messy_solo.sql create mode 100644 drizzle/meta/0002_snapshot.json create mode 100644 drizzle/relations.ts create mode 100644 drizzle/schema.ts diff --git a/bun.lockb b/bun.lockb index 969a46ff458e1824d83c2b4428bd2d8cba7976e8..b030e644c0bce51ae8e302b7d72ac1b856cac81a 100644 GIT binary patch delta 80019 zcmeFacU%-%*EL$*&`K#NVgeKiCJ-?qjiTM4qNt!?7DXjA&`OeE)&?U66fLm?BPxoD zc@(o^#4Kh|RLnW&F??%RRU-SE+Gn4AVjaS)zgGR>f$FJE z9Al%d{2!vrm zoC2f9AU!rZL{K<ACXAq(}||QhpY6a$s0oLrq*T417igdA=CUBf}-&gq_elYT;)tU2d(* zz%vvlQ)Jl!_W|nw*8{0t%YfAGFXm!AU^_4(FhuhloZPt%r1+fyQn@sgCwImKMnq`i z;+Z&2FvP7473Z46H4tplLKf6QY9SVnZ2b1UQ*% z&W$l>XuA)dQJWK@w2?8IeN)dCDajHf0H(1LMNM!?a!$+BnT<4REWI=;V|p zq8(P3o#(?<08byE&-?7^yQPlY0(%f z4FVfyu{BW%qbVj#Xe)83vq*?R4J;PW6&jU%{3A6w%0@AFF2iBwY zw>J_tKo=>aDiFgv@r?(J0xtq-I&POR4M+yY0I4E>Nmog{E|9urfl?eOu|TpD0Hnx$ z>nc8<(v4wsR8WTmt+!rMfu-JJU*7@JH0kIg8gcqr&Pg*m zJ~q(2hdA<0fE7`0SX^{es5U~QUsf?7b;5`o=qnoZk?;+W)(-th#l{#J7#|!S93B`k z9E0bJpI9D))+sb1Fzh8bRgl+H9JHprM2G6ZL7I9C!D;YDU=R`p2L{s^WD=ru!pxw# zBaF)4C}55PV*+Et;!q&9kLXAekRp))B!gNB_xBYC?KU7e5FDXR(Bip_equ#qn!83( zMYT|#A{8B@5jd8qQE?FrGeg&3DhM=1f$)}89BWTth;}s6lLv?`4UUbDiyIZk$Xbcz zJ>e)h)CNcufA<%kj}MFq42sY&`dOtP#NufGHEZ;PTBn~rM+S=1OFtX*qg_9(^wUy5 zz4X&nKTY+sM?dZKvqV4r^wU^ByQFEXOVrOx{ruL?PyO`5NrMg!%=IAA!4v2x>LMj} zoSMMZKpKoFC+wwrkxyL|H!>`mB6%iE9219u)CK*p#?lxFijIy53UrLqghWRs#A_qs ze2_r}%+Y~lu!4jz>@+GoF#Zh3R&1(^hZ$OSR-zi3&9i|ufD!0T>WD)?dU}V%M@so2 z7;&_o`h(M?^#oQ2HU^TN3P75qZ*h>K=3NHTB;O6BIhqc%!F)|jM1md&2U5XaKr-Ye z@!;r)=vbs}@sF0DO2DeX&v1Yojl#I5X5Ip){F6X>ezU}RAlXdcLJ&s{o3_@Ze5{-c7IJPwgz8%jn4S*id$>3FR3h@wdS~ttV0b0mk zWA2b6eSoyOv<6Z|(V-fwEew;!RWY&FSxpk-V+y1WD<^SnoQrdiHlCR>S&XNC3R_GO z`HcRewYN#)0Qm-;tdB-5G*jPB6Fc$>khX(dAbGn8NM4Qx3LV@J30nxQr2>{x0R~8M zdN5TqbOuNRVGEF&yAVkE$v_%`6Mz)|25^7|z?i^Dj7f%>KU?h3z_@s);b>4IIE80k z3hC(Jgs5qwuAQ`rj;#U<&BPtY!3aS7{04-q!DL)}m@X6j)$by6d6DaPiNHnTb5o#`*)bA^ z0IP%BWr#g$0i=2=1F8KlMbsraFBU6`k9Ee-W0=41r!o|zb_|Pi5;_H&O-x{HoaSA+ zsNV&WOuW>78w|(4Msm}al{MJ#xZFt z#IZR8NCqZII2=fk83d#XLNrk$=&jQmoaVk8kQ@q+kB=EW2GbFdB!@y0Vj^%@jl~Jm zDJC{LCM2jCj>!y;nz1;Q#xhJ`Y;d?1?-ZG<#g;q*lELvnswgu{Y=Mn4_tvz5u3(L5 zcOGOaHh-;HuNs{E4UP?VYT1He^he(yn4v&MM285c)aTh^HGen1XPww?Z5&R&fn%6W z;ABsDRe-zgHV7+&F3|}Is@M)lT_359(#8bF#p!#{0y;HZwoxqiK1W<6^!xqaPel52 z!qZKnqxy4#{=mXZals3QCNNSrn(4YltXKsk51oNDw%%_RD-LoFgue_k3lCC$jD&%4 zW1_GwGd0mO>9+SpiaWNct4R)v_zh-hq{t#^rb z9Do#ReP6u}Nt7;lVd zhCVsqq_+i{1Bc;~i1eo5Cg5S(cqe+TX>&^SV*-%I!4ZjL|BIv7U|W=@_5^F4Fqopd zF*{J9(7-dI!&o4KY0&E5hxPBTn~+b-DHe{%nD{s*;+$B)@CZ!;I*Ms_}K)k}ip66RlhR$LwR zNAWTJ#kgoLi}5hIBDyUHVj$@f*C9cHY9#sl_O#eRqroX4H?E2fo&Z)ON1#&x&s`Ho zPG9Lc?R7CO-qLe;afy%DgfMEUye*JAJP5DmG?h)ktI%rhQY0FV4W&aQ!#IM|5Vr%; z1F9Qhg>)jpITbH6@$ppd2OOml<91VQKsGvt9HVZg=N)c|k=hI-J9B|Hz{x;kU;xS) z>yXgjx9RWU^!IaJQGi1I?T$Ei?gGj1;Jc#U9cT*f4x|y$Lc$sM#K^^HL$R4KOhf4O zocT}Z5F8sAr(vEw5F-<#jSY;)HBsbPGRH9cABqO!!!=P< z$2N%HCHGbSQ7fh>$b z0b>*h1=529B@B)h>@&U+ukl)J2;JX0;Q+vaSLCcLYUu)lgEchkw!INcj0}tw`XV|i zLO}gHeCk_q(C9-p3!$JId%Y9;G*S~E9vu?LytpGaMgLmX;k|ggwFBCsyek}|CN%~c z)3kd2K{S9&!Qi5g;`(R!Nksh{to}t){{pIi;ncrS>fals7s~(eUI^1l|7NOx0oA{F z>R**@TZ^5cf3wxUx$0l3^{>$SH)Z`B?`JdwEljlgA&&kj;MKt6fixS0hUxx4yYUh) zymU0o{&!oJiB6^M;lJ*-dJ;NuKlr&KN3GaIT2jXzR|vZZ_kDVhlO#z zwy({{Z5=dUH}1;IutPHgYN?yA z!1@K}W#?+ND|J%MsV|dnZBMlOEHlzS%h}l4Zy#N+nM~*6eP(Co{6EGTRZ%(ak}Wus z|1r^e{OUej-h+ABRcm(s#JN4MJ1iw5xkZ%;eM|QA3`#c42_I6W&FDu9<5@^1ghh$B~D(4{cy-5boKSX|STOaOk}bb7mYn=aW{e*1pM^ z_VK&Mtz6o5biYE60o$I=7*cuf)TX_QTNm7D?~z~cR`#wnrzYNR)7_=_n-0;FD!t1t zzI$=c!cA#sM?Nc zj{kXdRfQ*&(t`cR&zj3+)Z&^o`s};Beqv+CshS|qBf-IE8@`JTZ#861)5b5-^32>m z4Dp_SdXT-F`x?gyIjekLB^4{zP0C%@;BiX9;WIY}Gu7VB?~+`%$%CHmA#zW)+xXq@ zvy@x7#3nX6Yx&*5elK6f3^@2wvEzOKRQkRcORdPn!teBaQaHd>9?D%QAkznQaM) zPHl_UHyBv!#Lm&JempHqZtz1jFqsXlJMG$w%1QFDM~%FE23yMFxuK3j&G)(tc~*T& z*wN^!AD8|p7`^#yN?-GsTaET|TN=OSvYk>n_a^41&p!th520 zxaUM|;|7*-L%vz1eopoX8n8BL%fq>@%P%nYZH-+%G}^vAeZj3}U)LI&b$z{LneFn+ zhst++^kvtASjF&%kKI#0o8Gw*a{1)!w8g4Zo-dKhl(L~*x|>>djVp9hE7~a-raxEg=B7wPs-s}^3sUWclv_Ee zB3Tk=(N3+%E#)ki-cBv+$`#`40?tCEmgRE;RBE=q5ySLERWi=jO(`426(VOJXQ5WJ zOR$3DK$xiDN_r_37r@Yjc5bp7T%lSm>%>{OtJx`78(W}^oGZyu%64+;?rNDUSLlu? zV0mrBEp>O3%ZxdH50#=Dw!HQvn4}=p1rHg}+RE83b>uD_W{n|s`-^BgndJtwSIaWE zbbP(a72+!*+(9i1f3Db%sV&lQn#fsnQ!6T4FidZ*7#$kHrFT=yR&#~j)FzLh z`k^QV6&?T8kxO+os_JUVFr6h88BC>9Co%ZzQy!~B9<>&w5vbi@E?{V0J0+TA;iFbG z!)x(S!MPly{K+MGx!PQjkBarKjk$v27(W`NViA~%3Zl2uyQ^hZTw!-L+rvt1H%6$J zl1%~=dY!j5kSW>ypfpHjTxK_Al{a8Ys-1kqzvY~tYeVv~O1nC^#Q8mEBZio-nmvnL z>J%AQ;-h4Lf;G|GWZU8HwHcV43*4k+Bf)-kwQMVw?kD)^r)G!Ph=E{*wxkoIew1C} z(tD~|0~}*Tqk-*}vgVvcFEtwmjY7u=b1#!i@1>TRa)rq8wi9#EyKrb47&X#>v-MQ6 zN5Lop<%JMe;tG4K*@1P%^3X8i)3^bB)a*%UDwM+rM%>ER6FUZ@2R1r`kqyKhoi-Uv z4JP9PJ1AvWxb(hixlw(tsIQ7u)n^z_p`dLCB|8_)T_}iXv$w!#SRrcNm9lzVVLvq+ z+&~=dqN`b8z9@mQftm0D3{YUCt#C9?d`c!{C2 z`zjShU@f@fHg2pjS|$dC45+}Ucf_eR53If5!X>1r8exXw8&={#5FC|vZpsyDRBRGN zn#APaV=)>I)(Xs&D{)n_E5M`&&~ev)u{KK9w7K3# z8rbc@D0bz!z#d9=Bp5x1VK~dxsI*{aCnbAFDhQ8Yq#9aD1%;-u-e6RDB_VGc7)6-j zGQYbTf#5$1Fyht#tGl#PAwEOFsBQ(9iS2Cxm@ilC#FQ>PI@Snr?2bp^Dkj=hi7{NDyHb8i$rXjG6b;c7SI!EfaF{D+sZ}Y4 z!^!TPmDWwM8!2xgrEt@y{7O?xOH)sf>ME3L3Dh$#vsf+;DQx@XOKIw7Y049;hL}4GDI7*n?tE#gD#o^`^(##+)~8HfB1PS1$l!Vr zYpbx+n5a82%)sB&45$NsQ{O@D^PB3`@iz-YSYwF2ek=MBYQS%5FRXXk-_(6j1AkMk zFvEVgFcvEAixU6Zv=XSA-_%anSBI2U`3t5p*7)x#ZDJ;dSmb`MEfDHogL5I0HHP>X zvw{H&jM2XqC9|LF%f+Ff&%_24W=tJqc0 zXw@jk*&Y!J&{}|X&qpb*?#pEas1#aX8n9TW6&uBrpPNGNM^g(6gWTIsC^Q8ErfWMl zb{|r-x?oGC4HiwM29&3h2-^*eDias;$zYf?#IWj}1EVDh&dqQ&!my;aiMv%_FtJHk zlw`}f^s#F85j1iY#nno=ZEwzUoJ#K7oAV#1QcUiR!-=r0A4ZD0R)LeSl6AqnXbDz@ z%j~ISGr?%FhJ`{`Ly%5faX&Y~G=y zIR7BE5j1j17zS)H7#4X{O(VsmKbJ94CGXOoE1IZc=l9p|jue&SU}96S{j%gQhAFuP z%U%PxBAtqz2NBCG;(?$lj)8TgQxwbki+d6d59lzpKUb8fQjCF!^~cMNJ%|)}DGnbK zEFl=a@F=sdlI;tIg%|apR+HIaN-zc=bDR&wb*B(2_1<4qt3j~;7xltx))*qW{nw%! zp#E;))jyV1ViIFE{LR8-sDG`DCg(}0f3&4tT?_`B82-;2WP6R4OkfAc_z z72|gclcD~DUr>LKLY1L^_cj%dLHxbwQmDUI_5|whl{Ll6O9Pm}=U1PNf%?1MJg9%Q zO92b|ttkA0_}9=P;A}cn8ZDT|IC#7S!_1P{ZLHrI!eDgl>>i3a0)_MkQew z$Cir{!?H|A8m<00IHU*y!}^6o%oIuU+ z7EFZ_;%&ngFmHjOi{vdwb49#L@#kn9bGTyOO+h~oJVZ$4A%%Sdy;^f@*B1%rp`dL&r1BNFmj60)Ev&NF6{bN=P-HDBWo&W+EkA zB`EGAHI#DMjyiFGVd&t^FByz{#;B*`0a#Zsp~Y;SM22w#!?l5*Qm#tk{QIcnu}NIf z5*6KkEmgA(Cy8&0*l#eogTTai;nkI007kutJqnGv0ESnqL^sxKvZ#xjes?fhNW?kF zg9$6HFb5xiIU`S;#f_(kdBO~rkDVgCg#7`Lx)l@CP01>zit$60a6k=4og?O%Oc&Q7 zkp+YKm*(vUqhTcGStN@iUu2`eXl{w@8dy*%Ydxdvb7^3MOY`1=^)6+dXO^vfDOk_a zyjNf}Y{eQn&no-eVz7?L!))?)H3Y$8;E6-YY=*%>jrz$$$*u&Wl?YpRfKqW0%!^x! zQkE%VY=s_>`=)S~St`Xgh(fl>SA8}^-_6WCjH|(UtnnN%XtGj~mizHgsb}G$yV7LS zZ)Hpiga>Jf{Og1D=9c!z0Hw)buy*7&KDa3w=g6Culd(on$$bpLiAwewSaUGUfh?to zWvVy?<#+;<)kipo$V2CGmf0$K#yrj+@M<2Hk*!j+pN}m>I0a2YO6>T+K1#(QFju<5 zV?USbwA}e};+BKxoN+Y*A@4B^F%9y;DC)v}8Ed?tG!M&BM=&wiFrtVD6T4&^QZ#qP zv(so469L=mS{n2iOa z>21gbV(x4N6Q@2+Tea<(a0h9g|jic4U8N^WBM!E&k_^&u}+J{CSby^b2S2?z+i2`YJM1ujNq^us${=` z(E$h}{=Tcx68(-D*h?TT$ieD@CZ0l;t61)btI^WZUWJKHVANiO3)^=F7cj7;JJJV43r1rtXK#*N}97_P9;H9pJ5onJhTECr*cAb$5< z4MAMF0362^E5t#9KEgO%2ZqZPyiI*U3U}H#47ASFk5M{>i~;k883Qi!v#SvZg+Mr4 zC@QWLPEvkutQsj=5izXMkJG_C1V#q(sT3GOihIg$VAM*q8RO7pmDnzEDUXtva81ju z0c#>WhrtoV@V563 zOa+GSMakxC^uAMY(THzgeB=rbV8dT0wg~g{oU3dd=YLS8 zI0p?!NGvI4>&1Q+pAQ0~!6)>(ViB0Tuv|Yziq z&l3pS68!Lk=#j8Lu%Ey>2~T9gTD#r)pi@Lgfl;)?lDS}Fd}*}U?-5@quySGv940Zb zUvj|6Ljx`lXU3-z69&D)elLwAs}64L7^KKo(fTehilMNyD;`rGO&NLZeVl)R${=tb z!!I_KwPV-r6PGAV{S!+0<9(dvMU^~sKj#lPvY*QU)H=WwT~x9C4(Pj%rb8MSbt{JI zP$gRoCiWQhk;y@ET4Jc4bu|JZ=Mi4S3Zx%MWm-(+>O)+{Wfi;e5Pp*mqA(`ds(JcR zi^j@(N#50{OvpTw}xW2u@2MinE5+m-A|FzOfdIr_Eo z5&dwW$vgn82l8r*r*JTFPLw3M8XYaIptnG%&4?-bXd$vXfT3X*l z@p4Bz$)5%5jyz#qkk>lSWfZE|=;PvQg(5JPRmy0mxB*7t6d$j6LcdX=q=^R@4Nw`Q zKR419%+!BU*%GM2fa7f|$XpHc(PhHMwil@;qO%8;>=Q5wjW}?co)pi+s5?<9pMR1o z@>j7(AW~b=Zy3krPKhH;+`2k|wLzY6tWit{YfEpJMv^QHQ?}e`@eyH4E82jGEBHjD zqyqyC{{bd;8BSyDl{2DW!r6?ibyl1%;@zbWSbJ0|cJ*AaU;ADWm^bn;o(8)bof9j7 z8#tGZ1e2CT^!qk2X@$dFy$?pci!FVwtI>HeLgIAv2c!NF8Z4iAo+~O*u{R(}^A{V5 z$p!J11`9d9*ZmSKinHq6*04bTt?t`M39o>1^+nGAo{G)9s9)FU8!d$wxgv-iE{Qe4 z-M&istV^8#eHEJzk-8kK5NcvBi=h;|%NeXW^02vKUx^13yLcZ`)T!c@Zhb`ziFnW( z4n|=XPiecrsHE7NKfro|35OK9?^Ukop-MjUDrfmfrFef8-*~50MB#Z2$4y~9nSG5b zLRKLJ+@R#(o%*_HK%C8^z&eUmp?~*+QTVZFV9EOgMtv{5Z?jH?Vvh>r&LkSl4S8~m z@|MC4sPA%CR>&1SQL)9y^F$tQxNth|S|px_h40TP(!iQ=0e#%qV@T0nj&HdkXofe$ zK`Pv@vfaRF^dO-9l=74tT*fmMdlVvdvKZy}V4Z(ea#M^EoWsTQPB2{Ww{erdy~!0l zSIOJn;w)dNGMPY0jS}^FpY zf3f;;VA3qWaqK)8?&p2n6hDy?uff{g7e@$I%QROb5Gs!0f=C_(qu2@aT2bzS5Q;=M zMSG;$2;Zn)^?=KGtCIhGz!kk!vAz%WGo0=!r-3yVpT_$~KG?7MZuY3`c<=%f^RQJY zrh(zRhwg6d1*B-X5oczF$NH5F(~fnOm~et*L&0cZ;|FiNl=7U%T+s&=`vjshM08Gj zC2RGhbPje<%KJRwGCr!<=@4mRqlNgs@oq3_?qdOY0!FbAx7GSj@wjlp)gnbJt+>9e z151xLR6@{cV|08bb_(VOx*-~j^2CG3S}>{y+ZDd4a1BhDPjcJmT*em_oBNy* zzB`D;u%nW-cp)|ohA_m2fr+od*+_MV5q$F&t@{WjErh+5GH)*Zt6DzeC0F!S#U6U8 zuZ`ZZUW19=({|YGl^A((fr*lsxLD+XQU77YVTHaf<-upP&gOOLu)+o0px2xwDq04S zx)Jflo_rIGraagqe9!ES$b@hxyufg}!eMZHsUC>!X&)Gc9Bslk;6H7lK zvHig)pg1riyi37opo$C8Z7>=(!tt54cqcMrF0jzm2&AKsMJ{H6k&8kaXO*UrFmP zSP{hn!;tJECb$1ee*2a5{7MC^3}IGC31+YTO4|HM`2j}A7g9q0HY7WXR=@m8x_>KG zr~gWxL()?$TlITsvj4B-($XY*7fBk17-~6qWBMWP$3p*^j0Nj}JO-Z%Skv$Wc`2+R z72%c!xEWOX$?yX!$l577{iKiuR6xkmko4h;E5mmoC5TNK8AKsD{#WuOlHEkLnoLG5 zCIbP#l52h?UkSQzc}hrHQMCr8`Gb(`ELvUlEBW+SvbkYtfze2Mie>lz zO3D?bYUf|c*`-N&fr9rpm8sb3`1x>J;f%OUtN~rXXyvacOwnavUSQZdae8ixpD3qz zV>`xV9uG#(VT<&3r5|3WNe6=MLxI17Lj}dDoZ`fKNA}QsYrC7R`Fbc!KwvEN?0N zC_yYJZ5HBUybDZR1WMjE<%YT%<}RoydyS6gCs@cD@;Mf=JM=p}%tibwkAH>uN1y)= zsXX>Oj5LP99wvMU4e$@U1Y?MQScipAS(HP;vdJj$56cHb9E$;f|L!8I*@f(3!U~_V zNIGVxP#-3t@FAqeGN^FsI#%K1p8%vwi}VOR>E{~e^}nc_JzZzetePiTaEOXQaW z+5oAjt%P<6@W9$KR!2taQO8xw1%-v!wqMQp}aery{OWIYLUdmf`o+ z=!3+6iImkw$|t0xo5af^No^&akUH62;{P>PL@B9YIex#ZtR{cPRc2KB#a!1Oxies< zE-(j37B}LHIq(?J7+64}gf)SWCH{W^#rXUmFeEtmpV+B}lHa5Te8Vr^2%lfV|I6IF z)RW&UrmXMyLPPkcRIV)2(32yRvJ8Njc6DUd{I@nTBP}GRoRn7{NM$Pk=~EU-GM02g znp4#zPDr+^OPr8+4IoM8g#1}+SxrBZYfITyl!p%?>2)MdNQ2f+;)JvkHIz6Z@y5XN zyps*aYFitbsnA0%QW-*ON^1$*N_ttOd^L2c+g-{pixr@EmGrVm<-19G8Po|*_do{a z`AG!`X^Lni{y&G(2>qX{K#XVv8e)wG%>q)JQY4%!te_C)k}4sEcs@97Sm}~ZNZq## zNTFOV>4a2%rKGQtbVAbCNW3hPlr8CeGnLFx*h|(yA#sD0Qx-|uh%aPu3y=odA5yup zNcp+Y$-`YhDzZnyeL%`TDDgZAkI1o%Bh4I>gcA~;1d^dsKzi^jkSZ>a@CuMVgp|C7 zFBGDiKq`M*!n;7Sb5Fwi5U2C*)juCL34>)0%^&xlXyKKIaFW520)5PBPqYJgiV0>k7-U{ zB&40iOVYbZI-wbKzL~qMnlKZFN;!m-48|9#F+|b{iEAVbm2^T%Y9&rs1$?Z;{{s|f z;(t&OX8$w8l~HbnsS+FP{Uck6r^!`0w>`a-%U~K-&KyB=-y@d;bCIg!U+;2M8$;#u6`!aG9wr z>Hi(lV7HXYl|_nAZRmt`r2IODVn+)Cd2WpiLK~?7A#q!YmqjvESIVy^<(Ea0>?Qrb zL>&rH%N&7pE_Ie3Af$?0N&No~((^9T^Mu5eK5GJ9XNP|5?vgUfB2|zl>Hi&4MTezwgv5_XoRIiY36DuSAtiMurNmhvd32uC zzai-bl1@klFG_d`NFgo+QlH)g(x)s^`C_U3Eh%5ZCd}Uifm4NdP>{;r#~0c&p95w5 zMn{ZUviAy#yLqHI|tPK^P#FEsIoU zAats85Rje?m7Wa;Qe6=ekCHG3NFPEfKNd)xIYH9@0mX@%Bo!c}iYH5)kQ|sI@qa?9 zV7in~Nad4(WM`(N6B3^-@n0xyI==*z`ddL-`8YgCh8IW%$|C9Xd(wmprTnr;&o7no zmr41AwW05!O`lq@U&<(pWbgoV8ed1Hd_oF+K9KTH0_o=FDv-MUHn0Zp1CYvn0n&$% zBJiiA{{+(W{GBE^;!#S5YN&((Rrg;YHKl@-UlyqaCeX=FB?&7_<^BWI2_Z1U17xVW zWT1v*fRGH=l+YYVj#^4s8%WPtOWYPnO|K86&wqy$okrzwPN8G42Of~|`@6~Lx)a|5 zAbY$?Gg(dCYJKm9cl>JJ(u;97%0dwzsR}~kJ%IG6ucQ-_-c#cLgyd>pDZea|YXc>{ z4E7Y-HbgQU2&4*wBn$?U!7wRb3#1Pr>5-BiE#U}Y4SuN)-uiQVa6|P!`$ZUM$*7V( zWszbu6FT)mrj-9bfI(F6|6~OiFDcz+r*l(l%HIEb*-QfypMSc9{`a!E>?Jcri8ux9 z-^*r-#{aY1?td?vE6|FH4*7|<&NKK}{Q(rPG`{}1rr%VzPV_20|p0BO(=(jXcP{P(i?-^=EIFPs0pY^GP2 ze=nQ=y=?x=rSrd+&Hr9D{|6V<|G&9x9@<0J%Fx{;SRSJ5YcSbz=FN{AB71hseEdOC zc-;MY#MSWLs-2Ubnf!6VBipszti5xl7%umDTTa>PfZNkQzc#Di@=j)2o%r*?} z$1mFVuxa|cD|v3k4&{UIOwH{xKxQLzUokK0Q__X#yJ;iuFK|EbdRhAVrC(-kxuafU zG&VZ3{3T|}ijC?;pZH#Dm4{Ybc^6l&P09I=<9ZHSx!}`9*>LBBH*$CQ%Pz=t4nFJm zG-lhUI&Z!9AZxr!$*#VCT34=BqSeu|M+W_w>oi1WFLzIAnZJGG)z7UAO(Oqz&*IXuYnFMl@I z$zjBrypFx%T5!fgisw!GY5b-dpT58_JxDQpz*Dy-1{<;$j_=5)1^`#Y93iyJt=+2gnb5eJlH2Gmj2TxriXc| zJ9cf#rVfbK_N~?JL6gY7ZALEs_I#krUe4uXUC%!J_h2}4_SuD~8by0=h0UMcbHk{g z#!W9)EHP}|Dd46{qX`biQ&SG+yP;>sd(GSJ z{KgQOIbT0i)=j47cZbOO@!=Yo32&u=;K6G(5X?g%oQ04Z6DmuPyN7wMIBRS9C9C#G zyC|cXEA}+Yna0&f>N?b|`s1BDD|=NMHO1uVO3r`XVeP5?wte<{jtL9P_EkRmba}^U znd524_PO=7)c)f|cC!~0eqFmMW=jX9TZcCHWmN|>Uhj5x&ey4#^*${bx_3gOVGSRA zRb0-~&he-nojg^uChOedZ)=~7Eiu?LuX1a?c$m!G-P3wkukWoBZ)mqKuWV{s81sQk z?69+0&Fpr|$7;*hP5&YrU}iA>R_iMtc5bja^y%mHm1d`H4s=>yx0%6R+10d+&AF|H z%kCKHzO^**zBj({)WBs|*EnnmmEUXo>Oy?`ar5hMDwKCwt$DTcYV;2Gu)2M`BfENS z4?owoRk!=QWQ$xQ8^-EZXL~uGFEarG^rIhWSheA_s~4MJbIob;G<#nC!uz|zM!75) zrAcbubjRx%9)2@xH8?!q&%nW=aZ-aP3hUt4Ei)`0o$vP1W4B|E%`dNSzJ8V87%el` zh2}&UrT91uxs&pyn%|-`u?JnYnHW1v>%P}!Y}6~?;Dy7V7pxmUt^ZHefOnCJ4y~si z&73rC-1hfpt7)6G9JhXSQ5pA!lyz^C;?T{29kWRKbAC+trwl^0JZn!M&g}8?P|HU7s!0zveg66>IDhY#ly{r^^77Z4y$xG+uD0aq)DCZ~YroiY z$K~=Bb#cd+PdoqM_m4nd&e9AVTd|6+-2PJ=-=x33cB^3LDeJBUht?lnu&sCGTDAG| z=^mAqJz_MS=lrNte_-g4$v#DGxyW|kd?T8_3pjV;&)n*;a~4l#KLhwSK5arOJvyJxO_(&op3ktuI$uUXv1C^ElIRj2z0 z-@9Gy9z#DYuV2ij^IPX)2G~!;49H5tl$gPHnFQfF36WDF%;I-Xg^;YHNiz*X3a_08 z!8MU44GD93i|G&^lQ3aAgn9f)5*8&va7u>2@ne!9cuj&(OhOv(FhkZ)wvbOE;Q2xT zpFJ7b?Pel7ou4riLjNfcUXZYuZ#@fw(Nvj<_xrW6z2CiPJo-GNdJ+5lVvTdV{N6lh zym(x%^>goiJl1>PDyI|MX1RXdo_+2~qJKX=zSb`F`*qj9Us~r>r%G&P^Gan}zm$JM zW_Q6X?=u_qEa%f_LkOP+;X4VLe3ujm=F=f;Oo6b9|3X4O2?28;Wby0fKp342!DKFk zwfq1fq%$B?M+AM=l^u}FPptLxol^O2nkVZY-GBJaW7-kDnjXIzyr|RuM;i{5B(GW+ zVpuscchJ#AbBA}^wc*)a{N;m|J}nj)_&xpe`jG}___H%)=HB@&TYjvZrcH08m~wDc z8(G70NmE@4S0$JP%FcE+=}_$9TmDq}^0VguxKPRXReF==3)4HDS~8=1|5q8|$%)5z z)Tmu11{?S>6X1XHOt@P-0se2~9VS9>odqFfBK+T6)_=S4jYf|+TR1jq(G24Q={jS( zJ~^^G74mj}Ir(AmfYbdWoI))2x$_tI9Cn(xulYM)ZtcPqtuod*_{{izLjG_BcZV;Y zh2=O+hl;lHB|22JXf`VHOoXtVpO*;1D+R&_5_a&-sl?|LStY)ElB}yNmuFKUWY0l~ z$W-{YyR2{5YJZiz3E87te6oE#!z-V@)jQ{7-=kyC!IzqLUKiT0Fl)lGqL%k-FAET}uf*&A}c zq%YcM|6$Ho|8w7$S6uh{)7OU%3!h)kb$#Ehr_mJKDvL(#+Snm(^QMAz^-dR-iS1rq zI}h#}rNZ5_^U$FEyv2N3FZzjC<^cZ%6HRuIA2A@?Qup@qX!m%ltZmE4(ZNaFrhb@VQnt(EElt_6ce{;KQe5xh-T(lP}G=Uv14g ztK`iYow#T5YvvxfcKGeZ2D93<9MoxDdS2V!3Pp_$t@C!YA8AT)(2S8OJk$TS9XV;}=yPeIOU8<~yQ@7Ib}M!Tnvb~8B8Z1kUZ=NNYA|HoBk#*7J1l}X*J44Lv{dOx#2 z@BT2GF|WF@?t{(V+MUzdb(@iMSF)Q3dpGctj(WR{p;OydCZFOLnHjG0Y=3O;rK)dF zuX;7$nD2h>cJ$RBmeVS`59>a4&8p=tFGD(Y=HwHat+ABfNpo{a(d8UmY-rnTnq-)U z)y-0?h=g*zLAeI)4cEm4o;GYZVsh2wcAaJqXuN52kK4xY0(1!@qONT1>AAX~(LO%8 z-JkNax$g&cTCF-6_)7DB(irbqiN%vd!*U97aaqIaBbCi|bpP4Zerm|v_Y2(?{L%Ky z+98D_RGjGIpaJbw7M;hmM;BX zoIB=U#kcL{M^&R*y$Z^`Fn4L+`ty3LdmR!T7VO?GYggXzpwI5qSy?q#wjXA~hk7qg zH`LWvx|<$)JLOcz;Q@D;pdTad3`*RT_PLe)oVB06*jLJ*9QEeV41?UE3X|bK^6(3z z*fWjbGJX)Wtl@rR4v%}p<$l=XH+lF^*=DzXr&lL9F6+O6Z!}>13hv6AJyXM;PWf!w z@9n{K(|+Za3@W%g%O+s_>d8}k>psV4WZqjS7?ukjmy|Vp(#G2V+IVx~te6#7 z#_rv+cCWRUuROA4sJ)-A^=13^bH=~F6_g;i+iqS|t;czJ!pB*ihQFJ!=wgq!Jpt}H z6C9T;zrDt2{lpiey!-myuhhTZ_C+C*VT6PJvP9{}Fy#ZA)6eNgwL=9lXC5vu*%6fO zeEEj)PG^VOhPmrwT`R3F{Ia@06T@%nkI`>{WG}>Zue-iem4~{A;SC88geB@4mjvjX`rH!?aF3 zEMwSkZIkd;_U$V)+m@m^98y$ZVHxb77eC{?_1%U^E<1Ne-EVo})#azbx|$VIcQpBW zVvkvb^XDqL6E}95Y!@FarN2QIz#c)fnb8?Sne(%;UxQ9u7j z@Uq&PMxSq0xj8)h^dX~3k-UfR)2CH)c7Blg&%V&|-26(1Pt?;k4^?jdM!&2mqo3Xb zJ}$HVFottyJTrZ{*2*VL({0iOvuyTs$@8}@@(eB;)!5ndl>Lt8ue@XJ?Or6Edz8E+ zC~(^QNtTrkN*Y9k$e{+sig8lpDfxvf`WEH0cw~%&W9{ zlxO30x5hP7KYCv4+M^v-Q=U%VI;dr@9hH_Qx-kYDzl{9&bb#CYF9F7*jm2LF7T>#{ z@~tzmA3fve5j^Lg5WL_$R$_;B&BP9ywGun*EB*}$k4fmW3c?#ca}|U|D1>qP8fAUqV#BY_OSom6qJ0_!;OvcNnpqP0!6wMSU1~PsdDfy(- z&xUOUKO!3sja~=g3JK+T+jS7^*F%`P4g$*;kZ_%ZR_h^DS<|n|k^IXwH~;zF_`|wtl?KH&sCB%d)0T;i_qH^>saTe%`DAAO zF(JTc(AiO2Q|TAA^)Ck|eDe)3>zadl(l(%;%6th4k4f;%fl!5?mjhwZMhG8BsLFe6 zgy6LaLe@qI)%iChd?umKCI~h8%uNuoH$zZthG4<_ZHCZ)3xpjc)Z%4ZAQ)|hpxFY! zir-4YE)uG5g<#DGZiNuO4Z<-JZ22nNAee85kgyFxT|SS5d=lz!hftp%u^qzbKOkHo zp&@Vk2L_NmKL((4K(qB9!y0$bkA0nK?q-{0zhsW1*~+QTBc81Lk;ivF*Q)aT6V2*8 z^y#%`i^ola8q;qzI{iquZ)l4;y)PS{v>$DKE`j6rBM1^YC zMfXX=Ef4RRILPLCLFge%vmUmiHVxM0>%4q?dsn;b&}&PF(~pPG-rd7v{M5AG!{;r# zYd5mv?23<^+uYb^BlL~92|1QEykC*~cujcP+a~c1t1eyrWYHfkcSi2$)OJO=l<(hH z-fyXGFvoLENFaM(`<-9@XKt%Q_d?3qOFy7GfA5=#M-6qdu4cJWcBw448m9R zZqV*Ui}5>0Hp}vyWh6Mv7`el)Q(3zygNn}`Kl8})@gKT{557ly)-CRRx=)Qst(@5( z&02iA?QPxQnZcJI-tmnZ%&OD(q}wC!NjJOpJL>yw@rwohtilEzrk`!Ze?~Si+@!4G zyN%v!Q+zDEyejq&Skd^|wU-0$joI?)MoQkG61$DvgX3#gH8|oHGp_%Yyt6A8-M?Xd z?OwuFr@^gtZw76+^E2`Ojt7EaLxv1DEo-=$I_iAu${suGOfPTp=r z-D%Fwo&U_zrM|LelOk$)3|OIC=WlqaQttXSYutLqH{3aL=D}N0>O~80KWabS;>~lX z7aI+$-RpRujUv-;kUYh&+X2ZiourzVHN1cC#x4G-U%s}uZ8$$FJTD-Yef;**)_mIr zliQxL`*1I;oOXUeHL6?u}~a`Kd*s?syER2C=eN|AKkzWHjK{6YMq<^c*5i5)bOgqJN~k(V_eD_zBs(u z#>qcFWFKICWM^ugZ@#=r-^c=U1Kq;l*-25B)jQ5{H$QZ{PvzIAz8bss?Ru}-++9We z@4sK`nH`pWtB&Q7mx5s`X=_G>z#WACNaC?A)OG1{2@sTpO@1*P$Tf?a3kc zZ#ZwA*tPYIJ9|^Qdwx*fyGq|;k>Te{X%y@K*oI&@aenfwpt_yrbb72E5q)A*WtWD#kte64KXe%-iXs)rJKdYMipZRw*UxaPvhqDi^n|_Z+X%2cCN^ zXq{X9ZO!J-m8P9~G__T#Lvu6fX?y>psu&7Ih`Au&XcKjIi_Jh;C zb$Q(+hbhjgvW9c>HXIlcl03~VYtzFP@_?7i9p0{ARJWZ^kd3{=xi4Xkf8N}GL=$}= zbFx|O_d5TLr<}Yu%-_B)cWTRw`*zc{PA)!zVez!8E^D~&$z7lJdA8i!%jRQ+58HbU zT{88@z{-z`P2>7(tzYQzwEyAAt6h6tUi7xf4?Bm?oPD2fSz{UwJJ;xtZ$zCxWd~0G z6zqz7w7Xp4y^oGAR5v`1No{Vy)9cJ9IUIqy<4kM(QW z^6gCT=euifnK@zD(94F2HD>N|E2vY|?Mg_`l#3Nr$6NRO-r-)T*6-t7n=KC}taYkW zu?okV9KfYn!hRfEI`Db>>0on!4mJlMc=96-(81;)9c)PG%-bG>V1Ee0)PoSZ@C77X zC!y6L2;KOkLlBblAUq(!hi{$-!SyhNv^)qs_!1Hxli+z6f*(KcFoZ=%AbcR97w>Td zg4a<9Sw|rB;op$(nS?$^A@t)jkK#-AF$jud5C-sm#~}1S4q*og19{nT2u3F$XpTb& z;J1>ni-hVYAPnIHPe2IIhj5I9K)y;o1oM*+67nGg^LZrXlTiO81PwppB!tnYAY36K zjJG`n!TvOasiz=l`2rHIlhEokgyDSBX$Z+@AUq%;l5c(ng6mlbX=flr^CcuaCc*P8 zgc1C_vk(@YgYbcbINswN1h4ZDvd%$B;NOt&nS?&)A&lZP&qK(*06}p9!WiD~0)+kr z5O$C-j+YfcFuDjqQvhKCzmK97Wa z66#-uFqI#18N%o*5U!9gowvOL!Tu_QsaGJ(;0s8&PC~1z5N7d7S0N-{gYbZa6u$X2 z2(H&5q+NqBmoFjVF$C|TBPAaWd>X0pI)1N#aYfSse!X6XOgxqJdUOrGmgZpR(-%HZ zOfvbDuh|n+^y~jjlI#eTpFPd}a}Z>>CgiHz1_*em5ZW zzX@Rn35$8zO$bKC5HvR-EakV7u#1H1#SoVBfyEHQZ^8MnnN4|f-iE}2mC^!ariN^Z=EPG4>`sB+MG-Phq0H-^~`b3fj4b%)dQoAsIfhuPge zWt`9CtK7m1%F40}$}EqxYj$CawV#4E4m+~iv1hKX@!Ww`k4-VW|DsLT_Jc+g=NDgM z!W%K0kI34!K0p2G4J+3e!+yELI%Kq3)wFn}kMx2@Q z*7iFQbaeT=vpX!qLv_od_fFp1&fsRx{ja{H-o<7->noLZXNAtbmQ@@r5%$kT0DMzcg*h18@_+5R{rAHMvvQ`*tGs5 zIr+c%x(>J+zyE*leQpt2nzx~0HI(*{C`3_6QkhYy$QGg8GRvxr4iU05%PJ#ee1+`2 zg>2bd{NJDFKKEO{@7MQ#U*10Fd7sbO`<$oeDCZp;>iT=Jx8ap--_*rAcdv%`U6k8a z9=2lBf$nIXpg;^VS^ei4Q#%$aw?~t(p9dwFbKfC0(;NuHg zMbV0iCNvxCdfcsVYNxdYvke|f103u+pPbjiTP5ml-^9|);vc4^Yuhaw`L6TCyq8|* z7M<&N?Xg|a#nLF3aFk2lrzSmi_1Al0tNO-lNmx-<**??Y)Y49`CPW zH@%>)zjM}3`#MZVu8}r&(Wh|#;J5RV!ngM@&T-ve@vO&w!+piK*KclNbM2P7Vb-K6 zWq+M>9oFC$2Bpdvd_#d3!QnORjuyEVvwD<@>n6^TBx7V75$GGR_UfcWhlX90V6-BpI=`T$Xq{R&f6^Bi2t`qH?W4!FupwaTPk35g< z^>8Zev*e4{&D~pij|OO~Onp+ZtNy^*$M2=vCCKtV+;TO$clJknAK#q9FFRdBLWBsz-|nIv zbv^!E5>s~XXVIEf*H2#lutUCKUY^em!_A>?&z&vZG>%wS-&0-Hcfy8KLkseBUmC}< zmi8;dN{zhB%7(fm)k_>YE0W!PgbB^-hv+tonCByOn@b;~AI*CNVi$W(gnt!?pvO4l z+fz5>yF0bR=C&Vwp~;kCrx(1uF(K{Hg{C&UADTD#w58dhUB<`9C%2tfHt*8j(_xQu znRjtu#re(0Crq9`tioi|@H>+RJm*!r{N6SFTiPsf+tX+2yib?y4Z7=F)ZjQ;=AVw^5H;TkNv)k>UBzU)m_VV zZ!(veCC}TCY+sSM|JAF}Pd9q4=)d*!>+rZ3yP-3rb8a6D*)eF*&0lZY_r9#wK=-<# zYtzOTpX9I__#0R`&pF-VTZ6baAuh8LS2oCLm$td_rNC=(t2LvG7rfUr{Mu1-WRvx= zgH&?%=d=pFWZ3q$!?i0DB))GZYr35Yj=fVS*`+MvDRQ&q8HT@@^9Pfb`8jo^f~n)L`k=P*GXW!B#gcf{)D~ zIZiQ=R*c<;nc6dW8}}TwVZ<}!0Q`0}-3zI#tQ-5nMqd(Kl$$gB8%N%Lc)8c(MF0=aAY9JS#X zi+_%Q%3mO$vqYR=vKJtdUV=z@0pcV(MTFHW5Oyy?oMMw+g1AA%T_Vmf>sKJsUxS$c z3dC7=$SJ|>RAife& zL&S9!@D{|TcObUC1#y#oBO?4gDstDaLj#=bM*EnmcX9sF=;c_A1zNWPJNv#Un4ceQ z>Z;d%zUSA5WAc2j9Q|H;+;*i+cb6%hKT4(cma|i%AFaE%mOdq^tjM?P=JYK0#@FHo z9k42i7*)UTjq|VfAKN-&MTy(UMK(9Kwb-6NX8v^3#&6u4$l7h8hL zJ8;R@7DEr`|~{sUsu^KUO24uTWo%Vp-(hhnt5*M*jN9c zukED5#E%)*Kg}62=TZKs4}l-o`sr_&8WVO!lxA_!$ICCc@t(t4Y}*H%C6`wgEPc@M zm34zDzZ07-Do%YbS-PlO%ixlVK6;YlU8e79Q(3Zb#gE`jzxf^R9~vQR8u?;v#N^7n zK-c|up7ic|WI~-}->(}x$H>#&MmN4%G|i;Y=Vq_+r7OPP{B^s9nL~%;e>HS+&&*5t zY2LW&El%cv8MJqLO)u`k=^=y0&+0nioMuArVSSE2VFNy*otf%7bq_im`L0>Z7kDu`PqK>wVgjcJajvr{r29Q(BiPB zBdH{mrBcbn?@`!>pHSEd^4#~WE}WnJ)LLgwe#&j_9<4gwdUUXZtj+p11)fDYIvE#k zHyF+i*~hrPYd(H;*y^hEJ{=4@X;_6Ve4lZhYebt_N^c+4P4$hB<*tFPIggZ*vK z8bn-RrJuxxL9S=Zd#sp!_FG6w$%BGeNxNJx^))*mL_Dt-Ag?gjzv%9jsb#r;U6JXQ zmb*=ly*ck?XLIDsB(CKpgEc<`qD+L{V?{SmC1zvwC4E@ZXH@#D`jT#vr($Ml0LJPI zn3)D(o{RCtVK6s{x!Xw6E#hU}M6GM%p7Ta+=GPZF=VoPJf3;$PL=!GM;dzt<^}H+B8JTCHF3q-yfPU%QWHT5g-+5Vs~`!~jdT z?h7mAvm=_fxVCTmVa>|5nuDbiCcf{fnz@jBkkLl_rpB>dL&JaWZ`H_%)$#akU60K= zT`CXh=#(+fWwCfwg-TeCQqs(uT$_r!`y9 zzHgUIy9CE*y~st2Jrq-OMZUbN>v7aD>Do4NOZWZgIOatA;`n14M|K~LU$V=4@z5U6 zweB}5SU$<{VVR-Fs`Y^{+BL9`j-GOEWOxU!7Ws*ZR*)2(XX;)uW=1zZ?A4| z*)ujJ;KHf&{afujyH1b!wqwU*7bp4Z70Kh=(mZx3zW%GoiH~(X?)RY7HL9EL3vttE zeT|j6J#LM9nfv)zR?&|sI+6WeJ6#nOW52+QWT8A9p`$C|{A# zBL1OP-JJMT*WUp(EhDP4Yh0yS=Db&bK~4)!=AU6Z>)a%dgl3`SzTuB;ne*{ z4}W>Y-FEr@jW;8_?uGn5HaK`|qmdV_4!_Z*$BwBB^ zB(O@`H|g5Ufnx4sY@6SXhZ=0#oMrHFddV_fN3(9G!8r@;wzzK|)lDPkK(3eF-Tieu z{=)Ws5Qj;=ikXqSqz{f#wLhZid}r|_ey}nUKbhzje1CP{eQ8h9U8B;=#gl?ASZk4 zq4CA)cg}5*4=-$A9=yNwbMWXH)5~UXQa!vgMGWG0kb|Z4HpZ-`?we!W~B^@2?PcPIg>L+pd zSXnhQak7K|m@6CC&8Ryoq>uP2f6_JM#221(3;e2A8ua;W>^IMU*w%JQU(YAa-LPWe z%x3e(F7KRpw>)r;%Xby-W8Pr^ZFDv=nn`4R~o2H%uO zFbR<$AG|pb4Os>UBAo;Anh15~DFxvn1(7EOp~;>T@r(#$8y({=QvtCQX=F7-=&%4) z5dNwlwyA>9W8aAQO2mMAAPiVRJrJAffl#jxLdGKMg9xt=qLc_@rltm>z8Z)TY9LJ6 zJ|aqpFl_+BjKwzq5!V33St2Z$tRV=)h9FWJf@sQ45m8Qr9eQ*e<4$S>BB>DwS9K6A zS(-WsD|HZ6L|8LN4G=eoSfT;KmQ@mwt^vYN6NDYh)&$|93E~qGt(mVDh-XBs*8<_l z-Vw1>3q+_k2xpeB4Z>d=gi2!&t}M7Qh_6KKA;O)BbwF%t45CyAgeOze1re?zQ4d_+ zaA$~dv&0k0iTBRFTJ}!0;Rzk@j-NWNY@2zleCLOSx4)a37p8vbX=E$!nU{XrN8hM_ zfvtwMO8s-z!^=mE)#+NNIeD>ob9h@{7vY$iBOGs*W(cB$h$=%6?U|ztM4TRoB{C4c ztda;reGq;|AUZOc1&DGYQY=9Du`=>B$pFL&T@YQ^J~I$jh9FG!Km@ROJrFmDI7>t~ zCesIzE(38Fqc8T5ttlQJMj-MilpgH45r}6*1Q~+}X3LC0EHwsELqrG*FahCj0%Ds9 zh*0*8h_6HpFa;6D3QR$4G6kXD1VjXjXaXX<35Zf6`Y|<%X?-&gBg{YyV5cZ?B}AM} z!n9zJgc(i3v>?tL%w0>U3})6%p<-wOVt!K)QS2rWHZ zgMc^zeA-nXVm|6seN*#&FbcPtd8v_4#6Uhqr3((%g)+fy-jmmT<7=BJr> z+)BQg<>g9@*Z^C^&D9zQs@_CvkJEt|KECa)VeCeOtxu$6IK zP7jIuSW)!39X-S!wRc@#+;isW43B=VU7sA5E(UN^d~ zqJw9un@?10v?Dn=ynpNakFsBAF3c<*-Fl7uZnMvi3*Io%rG2GyWU_rvZfPf;Jac)y zCkyHy$c>ra>2RRm`!`Okv=!pJq&4C@lU24xe3R^uF@6ppX0vPu5LWgeK7o*ANZ75Z zc*o}kF+q+{nah?rLM6R5h#Dg1vj8U$9u6S3If2Mz--vid!~kay*{r}B#8O8P>MkG_ zu?QCs{!SoDiCDtaTtR##VuULQ#`Y1h$r*&H8;E5r-VH>!3y8BsEN5ffLDY8zan&6} z9<%TOQ9{H_4-l)^MIz$dK)8B>$Y*JuAPn6>R1vY3Iko{&PQ;QnAl9==B9c5n_<4cY z$g;gaSb2i@L_`7eZ42TC5$oH6*uvfsk=_PGs5gjhEZ-Z1hZhKyb|7}J;C3LM5wVAe zA|`GRVrg3tG3`O@VnsywdxOyP0kMY-_5tygh!aE>jZBNJ0Sj5oe<73=I95aoQNfUAWpDKB9c0S@aqiX zB+Kp$!m1O9PehzzzFk1vAYy$N5NFssBGUapg!+Rx%kup}cytD#5`bJfUpJQ?oK6gw z9Cqetw)KLl7Hg9v&*m+BUSr|cxj1OsP4nn$2EYBnNStojzSy5NyroTUBZwRvYDpTtQ;wup& zx`DXP_7Slu0EB5Eh?^`v5JY%a5NCURT?5(MHdJ4HkZ5q8}{+-H-zgNO?R zahHfnX59mXVGxMpqpAnLJ&erG?A-tm>HR?5jR2v}tjSZ4{vbjJg3x67 z13^3^LWMllWH;sj|JFzq2AHVp!iI0S@@ zl@Sph38Hxv2xB%T3Pk>G*J zEO;1%11lim$i%}ToLB@2XI4bQg{dV#xU#_{+}J)6?o4|Gga?Z!;mOKKv|+N55MFEy ziMH$%32$aGN)i^)j{f9d_({*Fl(T)4#&5ck8q=`*>I5HMhq1nuk5$VL7!D|$*HNQ| zPle8w=<3a%(@nzd_hkqDyixCcp8Es0=SxOkYFaWkmo}G_yJzj$MR+gvVb-G|d|4Wa z4(uk0j?8fkL?@O(!jDyw=*&FFLUdu-B>dTP5&_J297I>Pj6^r~jzk~}7!MJ|@=0`O z-$?Xe!HEz(SpkV)CY}J%i$#zKVMQc*Gqs5jp=>aTK5QR}Fs7XZ5zgWvA|mSM#+qa8 z(;`FKZmJh{;&J!qPbW(+TAn%aVqOdRigqn7n0aY<-Mlqo!U)sF!@nN4oop=C9&N{Z zzkJiF$H#;QTBA#|vg+hUUv_E|Lg~jWCPVaRlSm9;7fB3c)>9w`u`~!4mqayd3M$fI z=9o-XZ4%Y2WDrrTl8AC5{8B)~uaHq(zf&!&dIiHtqCI zj6c$nyjMlm;LBI6`*g`e@hs*zLlUKuiBBx6)170nduK{kh*jp{E(rey#26oiVrt@V?pVXMd(v2(|lf7PeW=IJIel)>vk9(XQ(w@PxJcc?ygR6;`HXnbed2UkE4zewP_;)BcxXdYw};vb30*Li$s z3Al<4IhT5i*)d5MwcdEdEk3Ecic^?GQ;auR^4CbN^U3+&Fcp48^EOA8BQ~FhQbLj6 ziZ3*$$Kp{DSTO>7AjVB^E^7Ahp0a#b@#|F*V~I-WG%B>R1roWQYzDr_4y(GQkx`7$ zdyrFI3aCNKOr#h(_vaS>S}U>P^lY>FPr9dSFhyR{d95MKJ}9})=Nmaf$=gjDJR(6f zYXv@lO%Xi9M>>)r(!9IcEJ@-WM2(Gdc7jKCn}ixw%sY6yRZ?GaV{>u!D#??-qr}X2 zz#HqG%CzUqlt{%Uxbv?yMc^RsU+=w&L`OnuQ3OJG|9UK%W4|uTtQs;$0Fry1ac22LzA-zb67mZxTg-Bl;;g^i_Q1=xtW|{Sx%hgNR}UjxI5x$Wesj1x^Bj zjA(VDNdm|59A3bnPd%pyq*PEuZ4yltI2D1TTX|*)oT|XldpLst`qdLSx<05qfOv@N z3tVHE(XRQQn!wR>kzDwgI9<6!e$$tMM+#g+fztz5C1hbEfzt=~1RQ0#Iyef9a_6a_ zrzz;68xy?{I4yybf%_nEa&3V`-}v{}-03DmcZ!= zToZ7&1x{b!%)s3dI0FSI7ny^+E0A=56a{Pn7z>7D!)6$_0CXPL-%8cK}D$t%0d9P^I;Q zq<|d&<&9Zgz>!-=zzJrm$o_&Jb?27=`gIlbl}+N3nJV zlrM(SGt0Dg|M2qNy{#3c?f-S1Np1^2T;jaZL7f7)U zpot`rLaM-d!5l7lm?m&-!FdSWG=cL5=LwD~=yZW=2XlKtZ-&58(=-;inNmvU;0RaLxN8tRxDewEB+q_7xGu6LD zC|W|!6UZ(w{{`EokaXP_WxqclBNzCs1BZX20N^B*1AZGpkTqsEq6~0UX*UU6H<&X8 zu0Y@d!LW92nUpJu^kljA}IZZ@R@3Nsi4>w=3)vBzr%uJKbVV!az7&I^#?ah$gQJ- z-T-i2p+^<;n7|E$*%VxR$m0Sx2<9f_ALaiEfsBNi!9!ojzXWbD%)^9=bW-4kfNLT| zuw3Axz?li$DS?Xyr@YSSw7|uHTPH;N3^+Nt847F=$O=I*792%}D$iMgi-S2r&^sq^ z@!)z0+QoWcN(qBFDmjpL7~Km&^^7(?um~0J>vk7%&`2 z0O$@Dx{oCqhyjKIbY0JB;0#a!oCD4SG}WW2-DQBLb5{YH!W{w1fTO@ZpbLt@AE22W zoiF0gcx*)U>MQ-(O?RLN&=Uv-dI7zGK0p`{&dO3a9r+*_BLR9fCJKlKVt}Cl&GP8g zUz*ts1BL@5fKk9`U@R~W7!T0fR}%r6@l6Kk{l8>@CVMowqq?64(B~*-0yMcp&0(Xa za(+0m*fW)LmK>L|>Zx2``D)}1T?j+>)6o2EFY@;(;ETNP1h~UY!yH|2^Z!MC90X(lO{Yu%Q@{+c04#x~Kr^5@&=Rl$tN~lV5pV%qRnSam z?&S%z0la{=fH%O;zaS-m3ZM$q1Jr;Lhy>CHpf`-^&lUXunzPZQ zARoGGfVBXPbTl2?KobNS;%G>tA&f>R8jWc5p^;?|K!XHz_SBCb0jU3_{+7B(>guQ$ zquz)*8tO!-)3^oDw2Ru}69i6|W3B?I2b&C;45R?AsrYX;K=UkjfaXz`fjNlzTwp#x z)2PM3Mu4VDo!QJZE>=DpC5D*}e^ol&9(N144bVMSDu60b52z2Q0dy6HHlPE%MG)_R z4}chUKarX9!7l*vz^w#U0b#JCNm2yR7odBbLV(_?xa=(y1{=T@Xa(3a&uN^Qnj4Jn zfCn2qjWdw@z)15Vng-ELSGoXAb+iGxEo>RE9LNN+fQ~>Xzz?A5PZz)+2mrbQ-GDj3 zTp$CO3Csc}15skbC%&i1L!pb8UbHuB&LhKf5Jfx@EaMv8j|Mu5}+rPf`RTp zAP@j_0csF`x`)gcpb3ouumt)`fn@+)2Hpy=16l))fD^C?{x1eRksueqmEQMD0WlSj z1GJ16!E-U70;mG@fcii@?1urgCe;OKec1=kVSp~62bjQ9nk3Pr=nW$B7NE%x-2=G> zSPRfZh~_;TfdXs%N0S@6%rp=P0=fe4U=lDC7y@WQ zM+?vfbO2pI4=@B|fI9FKdbvp7auJ(4iyJ1Njl`w{89+~f-Z>Kk$P@lT$uV#<7NCnt z)se$r!PA827er?~)3t6L0Asi@0_Z+;7r+%*g3O@5(oKV$Mj3;!X$@=!(4CF?)b@_T z;~hXDPz3A*=tA5rKnM^F^a5r8Gl5w^XTTqbf=A6ETL3KqbKoTceg)hGXkJ9Gto;JU z!)^kQ1egKeC>>PvQYe`K(-9-O8+1Q#05}Ag0Hy$acs~*t4A5oXy8xOGEdmw;Ilxjt z4tu&boUR^U4y*w30J>^?6%c`lv`4^hKqbO^LPOL5WZz$q^;OuwbgrvB8j3N%P#_kF z13JJVt?+3@e+Zz(c{A{|Ag9GPt(ha?DJ`yO@xBv&(z;g)&{S0mcn|(F0b$Xlc!L2? zfG!K9ivx84tUB9>mO^1XK&wMq4br^$9a8oLs01>A1wba?4fq0lAZ$Q7*Uj%w@uzi{ z74QmiZ3Qpw0Y^X?H+|SC&2tc3JnxnDpS+?)QxUKW*bSIN{Q&cu!-Wl;g%q4aWc1*h z7?RdQbj4vufL{lJr>U(B(hW|Xfp8=;6}Sj9y_b3!xB^@St^wD98^BF5J2!`GBR7KC z7%&CSz^_#R`56w(1}N-!q%sm13^WF(53~jE4SWDci;OP-=@Mve&VZ$WDV~)%K?{mf z#QiWZ0)8MZay~({f{?({2%cCXBIdv)C~OC|0c1xDg`Pkcpl+61;F)eMS&P6ZaMB%z z=R|kV9Gk(AQxcrXeQy#pTh&-?I4_JoW{` z0ZYIfpk{v=y61t@z`o-7^SF*;yu@;GJ~z&e_KRrost+^*XrIX!p!U)Z@Bw5%2cSJ0 zvw&OWtF$K7j=(^m2|!DmS-=e8IUTYHCj8?~W`KGmIbaC50DA#y_j`!l4Z|*ACr|>MLg`WWHv>3`s&@dOx6!5nXiB_il>d}- zGXV;u8FZAnk_Nq0z#3dC>?mL=AF9UFA*qbyu%}$!PL|sMiWz13R9KWj@d!ZKxd>93 zrOINk05=$RRI<~6p}-+Rf8ZgrYhf1ANO>eO*1R`PPfCGS>`c{O=*RDa3 z`vKwT;&&G8X!1=9I$Ge-LXT2Q{WYbwZVIW-ZVpf?DP?sN_0I(8!Cnh`h4;FEOddKj16et6Z0G_}h=DV2llHZ2$7H|`|0lWs@0M!6x{5ya+8h1Vd zw35JVkFSa}+4})}7eMCGzyyFpIwU|M%p%C&5ELsh%%dO);N<+eP6ebYP#;hO8UpHo zAC&q5lsqaBDhy5V)Ch^ENg8=XUAZ!9Y)dc#?uy&YvuV zf>1-CVUXd1nF3U%ufJd(2ubPf2@HUlbSTZFM^L&^O43!D|19PIRv?ck)yf=DdZG+y z#6JR7dQ5s0QF5o$CA%?zG9gMol@ZoM`2Pw>sZ5?J10#+cD+5#NP)H?ZVQcG+ONnR`is2`?Qw-jb-c{Es%dxqy6 zfZUT?vReY=fm;r&09FF4fP4V`mVsy_6p9oNytxqO9b%@M%Qc+YKz(2qo{`IPKFu_04+kji&ETLO6e#~xA(g!uEftmH+f~@n zctfK&2cGhmB1v<^Z!l9nZwIykRCJW6uaI8=%74BXVV*;Cfm<+8hGzgY&$)?b>N2mx ztOYq3k_MO?FdqY^!K~~~x4=wYDvjt1AtND=LQ<|!;1n1mw=1F1>iJr9v}zhz+b=#;3Pn9Du6Qp>74>D1C(PAAuE9gz+K=DpbOjv zykLJH@*W`nfdAeD?|?TzHSh{}2|Nd?fXBci;0Zt}dj|OwcmdE*`x^2sK%*eR6!?ti zPh<~Jb)y=o2GDAs<~OAG8`rrXUcu=#`Uxc|NQx0lTg2(gX*T40psc^#N(1xo804S@C;)q%zU?Kjf)54j^h%z+G+dFn8O$w!=0H=x60iW2vtzPf3|-1AT9VSzl=g}A@N5G~ z1GzP%49~3vI~xhAr7a#v!5*MZB{#qopp7MxwC&*x&?XZVls{w_zzrUDhV%nE0uAu& z4N0k_E`wHvUO)%H2cX2!+^Idx?F8PJro+BKCxASpxeIwT59kN3I}ij=y9k7&TG96!ZNsmjHW#1UysUx)^c}KoL-O zr4*6D09BJ+(A@|ef^H0+H^96aSOu&E7_bPSA(?>GnsD&}A)bpVFcd2WnnZGnffC=MWbVHv`< z6>u`+Xv9eyPPXNDavPlTV5vmxZ0~CChygi~RYC!O@A-rDmO&4rY3i!xsjX~h#thLF z+wftd6|mOipTb)a42!04cAQj;%gREg? zYEna1yp=QlpWuZ^{!f~OtYW>lA<90i@&)4RNO4uf+uX_C5qVP|Jt89YO*>}zFPF2+ zB;tXN$Vg~?W~JMZfvPANEhsqb&s#P4aqDlq0`HAJz8Q~L+p&h*q1PFDXf3I&F3kHd z({_Uw^qlQID2RTnJt@ROK?4dGViL;hd3`xR9y!=M!mC6!ZacCmm2KS4rRk(Jhyre0h}=?`#h+Q1LPV@L+W{NnO2nSZ zub_wN#T5%L@d>bZqpVUWDD}o@Dr)nPt^Ef_nceEb=LFK}gg?@#A^&DD$0CRYEC#~0 zLQub^;W@IgUbg_KJJ~xq*gK1^3O2e{UxpN!rt3?@4)(|~1enVlouztauJCg`;!e?j zIc&--wKi_6;N0EbiAqqYIaq<0a0Z;S=r{}huB-w=J&N7QIjXooSBvGLMjN+8`VeU9 z#+cXHoo;@Q&_y9Cnu`XzNL5~_`Nm9T7iTMO#vFHXUP!m^9@z2W8E~GWuPlETp4YPj z5R!U2EbB9;tKw?!iQND+2pRs?=nX0Gb&}kT*^LM~AshL|Q^_=&NoC@%Onnb$fIlVk z+KtM-oE_fH$z1B)b2eUr85MPxZ;z*pUU9wRGSt!a zQBzyV2EXI<_!8aBQi_pb2ce5uQR>SrG3!@eTD4aZQ7VfH%s^4~Q=Jz^O)kq@ogxt* z217}`!Op;`@hjo6*zm-i3m1Mp7GmY-A^OICBOXGZV#s#}%D;OWwe-B^)bv26g})3N zRKi)H4@C8oiL>z07*3BBmT*!x7W2W7ydssf2Ad;q(LzMZKU~RJaV<>Rr_m8UAyn&G z{(dfy#T@2L@yC$j?ouQ6K|RXA})J z_+718e)o9G8Qqnc!|cy+ZWM*?|KnxWK`#0qzA4%;nuWXQAhRn)9`X5Lzy_9b!^Dcl z%I=nOX5tr2Tmfr4W=!H2b38=N%A5rr;tcUM9)3hfImEdl#9({Gzv2+OFfBIs94E^; z3}b(0e3)CVw7qbcbD_AYqmA8WW=BxcFD(>($l+GYZ+V3pc12>S?V#!ZU?E2^2CG^w z=_%D?c}I{_#_RyxnC!Py46NQCjuf5Na*cxHDzy)AZERoS{Z7IH}ft-w2!i| zGA_vYwh+|Z=*2|`Z=Jd?5mU*zA}6P_!_YH6-(1lJd71eSoV>6rE@R>2g4|YgL2S(x zPDd4`hZ14;k8#F|+VI|5YUH5&d$}*qjz(zfH7~49#~-VJbB>j?2}`}ixky~Cn8R_z zna@FI*@(fh@lk`vjgNh5;~zB8XgvBsbjXM%8&rxAQMruR$djB4U)LnT*2OPQa1ya3 z%bHdH#XVEz^jm0{%(GQA)@$86Z+w|q>4G>pBl2k5OKh1>IcF$YWy=;gNDWOkLlZ+> z>Y-lo$0WZlXF(HHjWqW_gEY%**&Wh63r%XM>vLAVQZbM8g(fY)(_*jla z71=SHQ(T~AhCNGyl#PuU9334$cC@7#lbKrfn#%{k=VRJV)Nv1LD?%l!VZKMv)1-l+ z*}(*hvnlhc%wEFO2CQ486oqnwdsg%dk|lyj1=hc-p4|A|)5WGOAFO~7~3Hphkp zCC%b?>wzr?T0E7Asl$T0XcKJ6&7w!=Ez%=fcHl$cTkRg$P!}6;YRi}Ap>x~A#!)fc z9)k^yQaAHA?>%($`*z-qn|%lZx+Da&%}>AikG6$Pct;p}9Uboq-bM9Io}0NS*SOZ^ zrQl}KoDY#(zJ@%jwfXGA3Qu$T#*U8um_||petkOPX=bbc7jzW!O;!m74%LzGhWP$y zRP7}p)Zv&%X3_u&rAQYO0JC8r0dr`k7W|5Q%M|Ku{uf)`q z-8#ojl{h*whelF8sUvl}!B$cObh{3s7OpJoJZC8L6e22j$sO}U<9Q^ag9Iph=-zw} zJs~lMVk{ct_T$y`Cm(3E6P5)X;93U}*bvz$bh=L~n&(nYMz0g~i%`g3}7 z=uCu0v;sC%tFl}7o!?@Qx2LXnHW)oHZy_-$NbP6TeeT|^kG&Bost|~-s+%I5>pFk6 z?0&Ws^SuWA=#NTl=*E6tK*`v-?g|Gx|Kzsri5 zUqNqN4<1rscir>*!M*+uLg6PyEfj}yGj}%n3Kxj$I7_c6M_FC=@(O20-EO0+oS}&W zw%Mo>n_5;jJ)&kwlRhdGM5v8B^MQt&KQyTLj$I1Ka(RCtocEsB7$Dd@6E)u7u(~CB zKm^R&jCE%V$oIv9?|Q!vcP@&%p{Toj*{pPDN3WtE-|Eh^u5pIOd!b29w%+UDFL$2C zYU+yHc{^gT#)e~Y$7|ehanFBOtRHYgnW^ESnDtF9NgP-1an%Wx5gjpg(nheMp4cF# z)ug-IYF^Z?l=D5iW$u)oNG>HtEu>af7tmB-Pru zc(QZkwhJ_L5wr4oJz3{xBaYT;^b>3hzkhe^b=oba)@GC^Gr5VFO&2t7PaoRZG3QoU ztp@XCJ)z;YMbH?c|5HuVO!srG#$mx`k=LuH!{+Cv*VYm@P-ZwBh z-MrSOFKonsy-s1G+@OYQtd{=Yn0EcHY zb!wF^2{s;Yr}WU!ntid><{fM>pG=*bS+kbR_-mgc{u&J(7D#pc-UYAIdx&0NyO9%pR8(amUduA zZYxr-7fLcHwXYXEbZq*m=vt-ourY;=>Es^bs^qJwwKlI{V+5ON-Bt~MSOB+# zibvPe)lSQe&@}lus~d|vjz!E5cIG&i3PC*;!F19r+&F&zg*g)ORAB(@*E8n?=Vbg2 z3e+n{&)eH4{?5v3#Di7^=va+e& zCqIZq947Xx`+bZFiY1T4IF#+Z&vlYC4`n~^bG;?;p{&{hnUWaF5+0y6riCgp zdPn@0s}(wj^o3B-KW4F253m^jj{yYH+Sx~ukFTQphTd&^q!XNCq@x@tWv}7XEjLWa zfy=L&O&+Bc0R>_F_-{`UzqXaAMAg9x&%3uix<+>Tm@eGX^c0>$V>C4WD`L=?6s}kr zPCl&rKv!E26E|hiWUzOYoG!aqi4`humI*Um8%bgWJ5+<0?P#5Zt8T_UA0PNklF&qcFW(I5MA-sX=zCU5h{UY@u4WB==7FGoN>5Cs|% z9XjL=Dpu8$)JCDP(DAApbb7vW`-GFVHlu_N|EQ?CON-|cpIVzg4vu^j{xrbI(aaHr zKaP34%^&-I-sX>eK5xT>$k{Zuau&~hlwTXUc0z&@BG>%Bmc7qc8cstu@92+%8*lT+ zL7lhx)rtc z8UlXBOmeqL+q_IrKo~s)2dU457!3GuJ9vcCtZeInzgZc*U-aG%Ob*a~htN1kCK z_&Mh;UdMthr1~n*9Usd^S7RM+^Mad(Y5uksNZ-*|#c-f`y@iSVC8MmNoe7kTusL19 ze!Spr2i_5*Ej%LYg$d%9u7MW}gcG*|cff4{#@pScdUAuTUyMcpre)3cs(l z4v{=t){gg>R@EYffY-Z@d~yIl*y3Z!o!*tmsty)e2vy9a-P3)*~S(^jvA*PzZ)8Y{fV1{MPmO z--i-HK>rioKYjT7JcBP5WgMC0JNDc8?R*&~LD*I`V7e`&x;Q*b`ObNll0rjGWW)G7VpRMn96{((~ww0d^# zFlXW#k*cT^4O%Amd~UemJ-^yVVPc02HniGb+~>y0HFqX%ferN)7_6qU(jVvx%D#p^>v*nqrJd9n?Rw-r5Vz$v1mP3djUD^>Va#rj*;Hu?0UdPP?SBO+T?zQRak34QFKh&%HNfr4#ZC$$ZZ`*3iku zG?r9@IlVAtmGJvuP7=MdmC~W+) zqYq3P=Pu<-i|>{**xBExt3Q{Bu?cpigVacIj$&w-GE>pQ;=U!PO55-0A~)D+M(jSrjdKD@NQ z){zn3t)^{)`)#_r^?uiJRIQCCY-nX(-t69{k`1S)*4l)@#sW62d*AiEc)NpdtxXck z7fW?UDblc1@OsLcysk-MH|wYs3tk%=ADo_VHNK?QgR8Ki#q^_&3o=fe3tCcZ^By*o zI=@z;7OQXGjI6a$9Jp~V!qK<|Kk%o{Q|xk$e0a_O)0yu*`NE+}Em}B_HIqo4gcCS6 zT7nY&$1z-~L^>TWuK02|TvMFCv+Vqn1Bku{P$nU1e;c6oFoHVcVtHddG_nF07rk6ekoShXsndaya(Z^7H#LT1muc zI`mI*reLokHFEn;o&R>N48h$|G!$n?R3pxI@px2t@ev(GxS=f}>VH_CW1i33up$+y zOcI*KDpYWAH6}}uw_n|=?l0Z(XbHS9XVtQ7Ns#MPt4U<8~0L8_%*;UkbSk67t zp|!B1Xgh3Z3i*k>NiX``c{yxQUuggFSQhK9Dm8Sw1`R4|uTr!81Y)B=TQzq#vAfq42TUTx`4LO6FAbDBi7d0( zjrvmi+H<64YSJ!M@;KcWPE%b(%=ZzeUk@`4yzRwr zd?-efzYlnf4Q-Jdjgh_aeIII{3&sbCsXsyu;I~Zvar`6k&Sno9NW0X-9K=~T3J9RS zEg+jEHBu9@`A`W(lNi&`k{Y_sfCe4HtPOgTcGtaN8Z=yyi&#iz!iE+N zajt_lv~Km9ng`yXqC)$IyHC)Lgq#&pq5*iine{mxz$IlfX18#!E1ydT0!8&>P02c@hD92Ej98o`j(53r%J zEvrdZV{g5J7O+8YMc;B&ep_|H&AFQ2)^3%+hNdR)O`NN66E{iHe&5B)0lW=AWc+g% zlnrbtZ6MLiWsyx3y^0J@`8ak<-uH36JG~kpY_M6vhSJs4zN(i`w8T&GmX!-?YIQFA z*#t%EvRqN^*V){gn;2kCuSd`pDJLn={k-iS z#?NEWR>>x1HEX4fc9a1PYUIWix4#8738xw@WZjb0ED{eW{dpfjFrLrnN=I9Ni!R;^m_;& zbz$r0=RYr5R~lFAZpb<|OIPY-GJ2gN-Um-ziK&crP`rG==XUZsriBe>$=r3UT32dl z%%Dkaw%d|fcg~8ho~TV>KC{q6n}wHc_258oh|lwn(!)4E&z21&f7-8Shsavk$X2RJ zve&al`qH5$`Rf&FJaFmBkWJ%u(~1Z~6y>qG3tOO%f$JiR2$R~Q>`<-?H?lkW=#3PC z;ffJq-(Cn!{EAI9K;Zuj4C)VP7kxYXW*`kR*5&eyuHTK~2hV4`&CE3O9ah#858SfVP;)pqLKU1uartQQ|#wru3 zig+r^G{xi=)4C<>unDYEdrS53)*XDK*XJpVj>@}Nj=FyUD`NzLD6)|zQWKMZ9!4Py z>Zm-0^^~5}gBGv82n{8yPJud^V+vGgCUyDqF&f|T?%0)Mj`q2K7c(-)c;9RfJ7g&} z3>+LaYV1h#B{#ohM(r6LUy(-O7ORe`lo~fOPED+p!maq%Zz(Lt6 zf7B(kc&UZd$@q`m3!iR& zSjp;U6WNtYykAw-lIZ0qN)TF)tI>zOwAyI3)hi{9UQ`5$XO)OY6|K16`OR(w>wa$j z$nQ5Z=bSk+bLPyPGiUY}7WmsfLD7mxaeE$u{eU+5GcR?s{Xzyl+;5xyf!!{?f#p>L zz)E17c@Z$5psAgJ%g6Ops|CgHElaPIr9)N`-sY0wOHb_f9i7De-)27r8q@;=;r{$A zo%{u51~5P6vr!NVTgw8l?n@dx5`!9bfLaE!@s6(?5YCEq2gn%6qSP;n$&Rqu14uV; zy4q!4@91&6v0In}3k31nHZEV$nLtRoH?#&{5H4Qd->%H>(a+#GLd2~#jcoPsjj5ihEt_UGp~&$}*peLd}j3ve+bE%0~d?sv~-@|Ef~O*1x!IhX`>+22uR2#j~RP43jY0f)Ri@|R*evIyB@CfixX9Wk5!AFKLC zN2rlVO54$_wPXGdqE%)*pZ{Tv+sGlz9;APXsTKZ*Y1>QCDdC67DHPo&97dE7$}*Kb z4hz@asa)lnjeC>Y%VH$=;mE^uC=^(`4pXNv>=5GqE!J1nk6AyA@~z<)2+UT)?0?hl zFevVC%@8r8zQ6j)zkIk$!>kovP=W!ueT4jCz>^5MRx});h)xh2mvTz##0Dw+%V|v~ zh)-xa=>bL;JE7ltm9JJIPxhgCQL+kJVNki44cko<=A;w`+%`7@6^ud&U;R#ZD_YsA zrt5u_m^ZYqm(zL`>N5LQ=%|WiHnA=d0jTj!@V#BlR((7h zzZJk|T`UiBSXE9v!m*3rZLaTO_~#4at6ej==yB@>-h*-~35RHireaWUg|iIx{|ej{ zZR&XI>`jA5y$N-hRpI{#<>eX=-25M*ys(!!TOyQqilW0&ni0tcS%QksMzTy#-BH28 z=HCm#jH!3TrVx6F5=O(OD2rkaO4Bg`l4;oe_@VPot?a**)$ze&bTJA9sPujPO z%?Mjzs||`fICWi@4asO$G+2SHhGU0$(b!gGREW5mx}mQvzv`+J)*N?0+blr|ckHdR zcWDvvk3V_v8XO6{9e>kL(O7Rjs-UaUaAzGglX%KUE)Fuhyvu$TdIw)1tNdnVL9w9H z#QXn(BZS|(U@nR>g+*@7^E^3*wKogtphg)I=Py(j!#XKKj+0W&;$r3>7yUJ>=-^oU zGQSTLwg%*I9jf_7*gq>Ae6MaYY&{9CpzyiU%BN*&w9RV~ZBt{_Q2a;e^N7Mx(~e)s z;Q_N|!?hJkpvUHQ`@H+OfL3o`lu5`-`u6{jQ&-6E4=2R_Xn6eF86Rvr6#@vpw?ZXV zCnyyV=G!vrqbEfrj-B1-_8%}}mJBH0v+4k$a6u)b&L60}_VZ327R|kIAfY`)XS+gE z1e_L{B6Z(8hU1?0Zh+uB6F`KWrirnba^^UAh59tj>4s^&D;Co_zKRaVvU%$6XGBMA z+p(f__nI}_0SMj7{beqgTdt^j&qDVO3v$kOM+tWfL39M6zKX&#bf_CUp@^)e^>LWD zan)222i5d)wNRby+624K4;)c0$1=(rsbMJLihsIx_wjx&zk;(1q4;rocMJJ;2ead= z@#R6#(p8fVY2{2{@D9iu*+~jMx_CLK#g#yW&9Z7L288-~!;eGoZhrpg0Wp=(4cNg} zQys_s1k|~{+I(Lh!49{}dcw~SDDgyzl#%rMxfWqHyk2w){?1iXj~?LcPe6D9;_a{Z zxm2CGu=ojt%UQ|+g!-kkLVtB=%}#CDnNjK@^UgyN7NVpjaKpp)Xp(QvSuFQD;*TS2 zR-C1;fE)8MAh>U1-vGCSb`R4W01*vuP7LmKzpzB;I`0(VapM16-)rlF2p<)cB43ar zaD$l+_GIqDBVbX)cY887Mb$ZavnTU2U#`O^>^PjajAP|O9;i`$Pu4b|>YQK_A=;|R znk?<=X^Gp@_O3-3x21#%~Q53lOMOSmeAVnPW&pgRBA>XgcZ z?fIUQFN%=aWi^!A7fW9`P4CN+6{~CLP+t}`xVT1W2<6cwN3MJp&x6YNf)%B<*?|)7 zwVBf6i?XzWZO|Q95M;xs7L{I_c(?kuJ9T0Lxv}RM3l6h@*tIzUc2`lSKc_ zP--h`-WtyrO3X|?60K=&0I^P!)R>HQa!E~mfY%`Xx^dgQcCu36sjgph4- zV3{p_@2Fa#%p$UnyCh_&q`viZb3N@+w;g*yeb_vO z=_1wl0iwJkhQ9)LjHzcL922K6QEno(7r$SkvP3@VE{pbUy*Fd>2&eB`akd31tA>HB z?G9Wfr@kyyX?I1)wlx|wG!f?CYcI2t=GZmr{|Yu;&%1q5U01H*#$BWGS1^;GhnT~+ z5op2wPgnN?=kNy)?#DtESFTY(KNe^94~KfTxh}Zr`<{4Kzw>=jiB``=e{rgON@3vPHUA1!mD9|< z;63q9(V~>L;&4r#bhEFMFXwCpAXM5l6F_-2iiWCmL;(m<%=8Aww_!D!j^l! z6ENC*L9yvW=LX{3Evk#nd-Z~iNn<{oUwU~3)B?XMh9j4Rfov$gE(ka;#V5DuAvkLE z$64ZN3vbh;L6921l~juOTJ?)r8gWNV;1+oqbN_R$Aq;K7XmC~n?otDAm5F!7v8(6Z z$3Lxftxp65KOO@F=4n(ic6_o)-!>M)+7(_qZe1PP{YD=*+rBg5y)b*tUR)yU+-QEN zG8i-U`X8hojBT~?p3oawpCt9Cr~c}LTKSb5)Vk;%Z5WI;tpNnD%jv`Nt;48#k~|7A ze0jQ$l9niG<1}DwdgjSEl<;E+;IcpI`e5|eo&)4J1T?HgS90fYgpIW*MNxvQ2YQbC ze0(6(gp6w~0#uYZb)zqVtF#vBC?Ih4pq^8=7OpBFtOcct5?noq9|~M+k)Z;@S}3O| z+1ZWW0j|x3= zuohD)sQ2qeyE(4aF_dwwMFI=lh27|H&Y9IQlyNbJ5hFm|>KMup*5Y6V^()V+Lb*=R=bbd4j z8PCj-n4rt;Xg$YxvD5Oh9aV5&+aGpxjbk|2lkclYx3#C(SK-F!U{A%b!UBr0x0RKF zGVspPlE_g!fX(bTgF3GR1jh^*g(sEJC_I(dfx#_=5ZjVh3OcVa%3xxG^cM~1HrS+1;O$Q%B~}u4Rn;Dl+PVi{gno8AF9076hK;K2LTkq`U;f;WCp^@@A{&nfy!6NlYBv_8 zc*dEZW6jS3Jm)$T3Ij7W*muz~6d@jY(nc<7QnFd{(_Wv*fj%eqKwE=Jn3^c-85#dzZ8CA?|D@;v|fe*7IBPq$Op+U8jB#C=fHJE^R)nQfG5!bCPxqT%>uaeAm>-&184 z^QVt{O7?WKr{rpSFoj*Q#fOkX*Yh z+tMlokFMn7 zT>9=kRP0^ATH`(`e)xbQ3s|!Gb$$V>7p!%pwKJIyr|V}rIg^cYpzceUqxn}E1}6B#*b4 z(zIj0KKM3Zk~9U7C) z)RLq5ZpI$m0wR;LqpZ!Wyt28%>S`{#DZThxb$L83!T*l^R}x7Y|F2C(Yz?o_m2NylJg}JnGW?r1;@H2?2~O)8G353m^C_Ux z^^GjaJxCah#AZ?;t*Bz@^3R$4QN`9e_|2N-$B!IL@19`|&E(tN%g?hp@{4l~Q_#+x1OsKH$g`E7a)=6z``^19cu_S8^=c`>^d?GLVHZE0*RM7@12 z2-II-j1;v1uBw5MF0FykyIx{p;_ZV=Fzr|NmjbA`7Igrm712eg5IL{x0;a6*1?Fk5 z%9?J_siLT;KU#$B9*sy!nple(0xm!SSO_IFzP06yIZ%&_;KWkemUG;k=3f9ia^Ael z;JEIR1w>Bvxn!Y-WJDvb3-6VdRDThSS?I}m_LO+p%(kiWGFxR!K_}27Z(U_yJ{)WE0wHLGU)^9A1X8(p-p+Ak+luCY-Rpab^L*BCK4$D&QI|IQrk z`^y1*e6>l))lAM#*X4(2=Vb?bDxArsA4E*5r(hiHtUO%JISsS#|Fp~QY!h- zigSV$Tr)#u%vR-O8}MoLY`s|2KwF{-A2U}(Bu1&}XRN6q&w+yEb9t%=>OD*f^l8!p zfHg^}5PwJh{Um?7dK*l}E@a+wt#${{n)Z$g-c9U^BcJNNw5fTGxaryYDcTIV|1?IU zCevulF{pBKvuEV1(lRu9BSPJDnmmo(kZIIt^}6iIX@<53pD(j<0||vjVdRN3foETLz-k@NOHm7GdU`3U(vWd70kb_g$ke=DXL=0 z_Fc5uv4}aEX1hrCw$ywFWNLdWDVT=ufWU0#EAmf=nZ2*fSeg##O*u`|sk(53pX~3j zb%9T}2%t}ApvUl|8G4YNI6z{w-B}8dxZ@#)Dx9U>xP1Hb3KrO=vBQAh_)ZB!q+p+C zx>g3@eT;U()x|eSLoITQfj}|-bIIafZHN|^Iu%4&la;12=B8nXi(W%_Yje@nx!GAN zgE3dD&zPR8g?OuSH95MpbQ<;z^YLw(qXFHgKr~cbhc!2K4|DKuLIz+~h*QM`7947g z6Tn-^rkn(+1I3p@M}*(SSon96Vof9NGHo-;Xu!hJjne)^c2xsw5yD-@d@k#>lMK^z z;rQ-7q%1+B)1;$a=_;O=lcCd6WQ^oPV;?gYVDs@el|5#K4yM%((j!L2-q@)A(n@+8 z!N6)xj(R&w?(~6^4=S7kf%w>6nw$otF4XFRj)ycWl|fIoUZ&TAFeesvm+8MpZkZ z{T?_=1+>sr(wS1R17)-^9s2>jmo(fSBMzi4^qrT~kM5?UkLs0@lPRH{^sb%6kNqR5 z(og!1ZYm{b(+PhmRYCr_Sk6WUNpqk-j|WMKwvi@}VCkqW)h=SM?G2IqCDWKrQi&to z`U8ONyGlROv_&ky`lq3(rA0~n=G}WgOiw_DS5KA*v>YZoL-mK{}+OG*O&kR delta 81159 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 GUi`l^=8Eh9 diff --git a/composables/useDatabase.ts b/composables/useDatabase.ts index af7fd46..124b78c 100644 --- a/composables/useDatabase.ts +++ b/composables/useDatabase.ts @@ -7,7 +7,8 @@ export default function useDatabase() { if(!instance) { - const sqlite = new Database(useRuntimeConfig().database); + const database = useRuntimeConfig().database; + const sqlite = new Database(database); instance = drizzle({ client: sqlite, schema }); instance.run("PRAGMA journal_mode = WAL;"); diff --git a/db.sqlite b/db.sqlite index de49dc7a28470e096c40a2a88d24251a68710820..658ba1b01e6405e32ec5bae9198abfd253addcc4 100644 GIT binary patch delta 775 zcma))L2uJA7>1puBTXSS6^Cj9Y2nsNF~o_JIww@12efXmZaa)io5aqD*xIpX(}aY& zsefQ)e}F?zNE{%Co%ScVaOJ`U?hK@Xa4Qf~57R7L^5^&cUO%$D|3=>bEFa!1DgXc| z*1w?*4f~n`?!4U6;15txM#JZ`S!I+Py&v9E`UkHxrG$_)K#3o0@SPstZf)`H&A8W# zyPe*2U3k!}*H-HKO6`85uD7S+B`ct?tpP2y%+Kg{{W=KOn#MRKHmc;_owm74l1-?V5 z$1rnU3sbl1@gNj?*YvF*!Zr_yZ#h_c{p;;X_b8oP68Wb9p25?!sDFbqSs6%~^z3d< z&&zNZz>jbQcg5AuVBe6lt7_Kt84X?EMRr69A|7@S<-UWMYf{&?d6h(b-8c@7%-GGU zp+{&)5e{7k5$1S^2G~U0aZF;Hj)$XAxR(uS?8XA!j{<@$9AHE!<0!B_7g>b5WHus^ z7kDE4naaKj96v btKooIgmxj)%E delta 101 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 usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }), - permissions: text().notNull(), + permission: text().notNull(), }, (table): SQLiteTableExtraConfig => { return { - pk: primaryKey({ columns: [table.id, table.permissions] }), + pk: primaryKey({ columns: [table.id, table.permission] }), } }); @@ -43,16 +43,16 @@ export const explorerContentTable = sqliteTable("explorer_content", { private: int({ mode: 'boolean' }).default(false), }); -export const usersRelation = relations(usersTable, ({one, many}) => ({ +export const usersRelation = relations(usersTable, ({ one, many }) => ({ data: one(usersDataTable, { fields: [usersTable.id], references: [usersDataTable.id], }), session: many(userSessionsTable), permission: many(userPermissionsTable), content: many(explorerContentTable), })); -export const usersDataRelation = relations(usersDataTable, ({one}) => ({ +export const usersDataRelation = relations(usersDataTable, ({ one }) => ({ users: one(usersTable, { fields: [usersDataTable.id], references: [usersTable.id], }), })); -export const userSessionsRelation = relations(userSessionsTable, ({one}) => ({ +export const userSessionsRelation = relations(userSessionsTable, ({ one }) => ({ users: one(usersTable, { fields: [userSessionsTable.user_id], references: [usersTable.id], }), })); export const userPermissionsRelation = relations(userPermissionsTable, ({ one }) => ({ diff --git a/drizzle/0002_messy_solo.sql b/drizzle/0002_messy_solo.sql new file mode 100644 index 0000000..c6502ea --- /dev/null +++ b/drizzle/0002_messy_solo.sql @@ -0,0 +1,12 @@ +PRAGMA foreign_keys=OFF;--> statement-breakpoint +CREATE TABLE `__new_user_permissions` ( + `id` integer NOT NULL, + `permission` text NOT NULL, + PRIMARY KEY(`id`, `permission`), + FOREIGN KEY (`id`) REFERENCES `users`(`id`) ON UPDATE cascade ON DELETE cascade +); +--> statement-breakpoint +INSERT INTO `__new_user_permissions`("id", "permission") SELECT "id", "permission" FROM `user_permissions`;--> statement-breakpoint +DROP TABLE `user_permissions`;--> statement-breakpoint +ALTER TABLE `__new_user_permissions` RENAME TO `user_permissions`;--> statement-breakpoint +PRAGMA foreign_keys=ON; \ No newline at end of file diff --git a/drizzle/meta/0002_snapshot.json b/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000..dfe0c7c --- /dev/null +++ b/drizzle/meta/0002_snapshot.json @@ -0,0 +1,300 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "6da7ff20-0db8-4055-a353-bb0ea2fa5e0b", + "prevId": "854cab71-b937-4f4f-80b0-cbb09c7b5944", + "tables": { + "explorer_content": { + "name": "explorer_content", + "columns": { + "path": { + "name": "path", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "owner": { + "name": "owner", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "navigable": { + "name": "navigable", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": true + }, + "private": { + "name": "private", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "explorer_content_owner_users_id_fk": { + "name": "explorer_content_owner_users_id_fk", + "tableFrom": "explorer_content", + "tableTo": "users", + "columnsFrom": [ + "owner" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_permissions": { + "name": "user_permissions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_permissions_id_users_id_fk": { + "name": "user_permissions_id_users_id_fk", + "tableFrom": "user_permissions", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_permissions_id_permission_pk": { + "columns": [ + "id", + "permission" + ], + "name": "user_permissions_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user_sessions": { + "name": "user_sessions", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_sessions_user_id_users_id_fk": { + "name": "user_sessions_user_id_users_id_fk", + "tableFrom": "user_sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": { + "user_sessions_id_user_id_pk": { + "columns": [ + "id", + "user_id" + ], + "name": "user_sessions_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users_data": { + "name": "users_data", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "signin": { + "name": "signin", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "users_data_id_users_id_fk": { + "name": "users_data_id_users_id_fk", + "tableFrom": "users_data", + "tableTo": "users", + "columnsFrom": [ + "id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ], + "isUnique": true + }, + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + }, + "users_hash_unique": { + "name": "users_hash_unique", + "columns": [ + "hash" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": { + "\"user_permissions\".\"permissions\"": "\"user_permissions\".\"permission\"" + } + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 9d07fdf..614b26a 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -15,6 +15,13 @@ "when": 1730832678255, "tag": "0001_sticky_jack_flag", "breakpoints": true + }, + { + "idx": 2, + "version": "6", + "when": 1730985155814, + "tag": "0002_messy_solo", + "breakpoints": true } ] } \ No newline at end of file diff --git a/drizzle/relations.ts b/drizzle/relations.ts new file mode 100644 index 0000000..08e8ed3 --- /dev/null +++ b/drizzle/relations.ts @@ -0,0 +1,37 @@ +import { relations } from "drizzle-orm/relations"; +import { users, explorerContent, userSessions, usersData, userPermissions } from "./schema"; + +export const explorerContentRelations = relations(explorerContent, ({one}) => ({ + user: one(users, { + fields: [explorerContent.owner], + references: [users.id] + }), +})); + +export const usersRelations = relations(users, ({many}) => ({ + explorerContents: many(explorerContent), + userSessions: many(userSessions), + usersData: many(usersData), + userPermissions: many(userPermissions), +})); + +export const userSessionsRelations = relations(userSessions, ({one}) => ({ + user: one(users, { + fields: [userSessions.userId], + references: [users.id] + }), +})); + +export const usersDataRelations = relations(usersData, ({one}) => ({ + user: one(users, { + fields: [usersData.id], + references: [users.id] + }), +})); + +export const userPermissionsRelations = relations(userPermissions, ({one}) => ({ + user: one(users, { + fields: [userPermissions.id], + references: [users.id] + }), +})); \ No newline at end of file diff --git a/drizzle/schema.ts b/drizzle/schema.ts new file mode 100644 index 0000000..a9b4539 --- /dev/null +++ b/drizzle/schema.ts @@ -0,0 +1,57 @@ +import { sqliteTable, AnySQLiteColumn, foreignKey, text, integer, blob, primaryKey, uniqueIndex } from "drizzle-orm/sqlite-core" + import { sql } from "drizzle-orm" + +export const explorerContent = sqliteTable("explorer_content", { + path: text().primaryKey().notNull(), + owner: integer().notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ), + title: text().notNull(), + type: text().notNull(), + content: blob(), + navigable: integer().default(true), + private: integer().default(false), +}); + +export const userSessions = sqliteTable("user_sessions", { + id: integer().notNull(), + userId: integer("user_id").notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ), + timestamp: integer().notNull(), +}, +(table) => { + return { + pk0: primaryKey({ columns: [table.id, table.userId], name: "user_sessions_id_user_id_pk"}) + } +}); + +export const usersData = sqliteTable("users_data", { + id: integer().primaryKey().notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ), + signin: integer().notNull(), +}); + +export const users = sqliteTable("users", { + id: integer().primaryKey({ autoIncrement: true }).notNull(), + username: text().notNull(), + email: text().notNull(), + hash: text().notNull(), + state: integer().default(0).notNull(), +}, +(table) => { + return { + hashUnique: uniqueIndex("users_hash_unique").on(table.hash), + emailUnique: uniqueIndex("users_email_unique").on(table.email), + usernameUnique: uniqueIndex("users_username_unique").on(table.username), + } +}); + +export const userPermissions = sqliteTable("user_permissions", { + id: integer().notNull().references(() => users.id, { onDelete: "cascade", onUpdate: "cascade" } ), + permissions: text().notNull(), +}, +(table) => { + return { + pk0: primaryKey({ columns: [table.id, table.permissions], name: "user_permissions_id_permissions_pk"}) + } +}); + +export const drizzleMigrations = sqliteTable("__drizzle_migrations", { +}); + diff --git a/middleware/auth.global.ts b/middleware/auth.global.ts index b302d00..6dab773 100644 --- a/middleware/auth.global.ts +++ b/middleware/auth.global.ts @@ -1,9 +1,8 @@ export default defineNuxtRouteMiddleware(async (to, from) => { - const { loggedIn, ready, fetch } = useUserSession(); + const { loggedIn, fetch, user } = useUserSession(); const meta = to.meta; - if(!ready) - await fetch(); + await fetch(); if(!!meta.guestsGoesTo && !loggedIn.value) { @@ -11,12 +10,40 @@ export default defineNuxtRouteMiddleware(async (to, from) => { } else if(meta.requireAuth && !loggedIn.value) { - return abortNavigation(); + return abortNavigation({ statusCode: 401, message: 'Unauthorized', }); } else if(!!meta.usersGoesTo && loggedIn.value) { return navigateTo(meta.usersGoesTo); } + else if(!!meta.validState && (!loggedIn.value || (user.value?.state ?? 0) === 0)) + { + return abortNavigation({ statusCode: 401, message: 'Unauthorized', }); + } + else if(!!meta.rights) + { + if(!user.value) + { + return abortNavigation({ statusCode: 401, message: 'Unauthorized', }); + } + else + { + let valid = false; + for(let i = 0; i < meta.rights.length; i++) + { + const list = meta.rights[i].split(' '); + + if(list.every(e => user.value.permissions.includes(e))) + { + valid = true; + break; + } + } + + if(!valid) + return abortNavigation({ statusCode: 401, message: 'Unauthorized', }); + } + } return; }); \ No newline at end of file diff --git a/package.json b/package.json index 837dd7b..aefe438 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@nuxtjs/tailwindcss": "^6.12.2", "@vueuse/nuxt": "^11.1.0", "drizzle-orm": "^0.35.3", - "nuxt": "^3.13.2", + "nuxt": "^3.14.159", "nuxt-security": "^2.0.0", "radix-vue": "^1.9.8", "vue": "latest", diff --git a/pages/admin/index.vue b/pages/admin/index.vue index e1f6e9f..9cf47b5 100644 --- a/pages/admin/index.vue +++ b/pages/admin/index.vue @@ -1,6 +1,10 @@ diff --git a/pages/user/profile.vue b/pages/user/profile.vue index ad58f34..03acf1d 100644 --- a/pages/user/profile.vue +++ b/pages/user/profile.vue @@ -9,8 +9,8 @@ let { user, clear } = useUserSession(); Mon profil -
-
+
+
{{ user.username }} @@ -24,5 +24,19 @@ let { user, clear } = useUserSession();
+
+ + + + Permission + + + + + {{ permission }} + + + +
\ No newline at end of file diff --git a/server/api/auth/login.post.ts b/server/api/auth/login.post.ts index 4961a18..29a63d2 100644 --- a/server/api/auth/login.post.ts +++ b/server/api/auth/login.post.ts @@ -73,6 +73,7 @@ export default defineEventHandler(async (e): Promise => { }, with: { data: true, + permission: true, }, where: (table) => eq(table.id, sql.placeholder('id')) }).prepare().get({ id: id.id }); @@ -89,6 +90,7 @@ export default defineEventHandler(async (e): Promise => { email: user.email, username: user.username, state: user.state, + permissions: user.permission.map(e => e.permission), } }) as UserSessionRequired); diff --git a/server/api/auth/register.post.ts b/server/api/auth/register.post.ts index f082710..e029c21 100644 --- a/server/api/auth/register.post.ts +++ b/server/api/auth/register.post.ts @@ -71,7 +71,7 @@ export default defineEventHandler(async (e): Promise => { db.insert(usersDataTable).values({ id: sql.placeholder('id') }).prepare().run({ id: id.id }); - logSession(e, await setUserSession(e, { user: { id: id.id, username: body.data.username, email: body.data.email, state: 0, signin: new Date() } }) as UserSessionRequired); + logSession(e, await setUserSession(e, { user: { id: id.id, username: body.data.username, email: body.data.email, state: 0, signin: new Date(), permissions: [] } }) as UserSessionRequired); setResponseStatus(e, 201); return { success: true, session }; diff --git a/server/plugins/session.ts b/server/plugins/session.ts index 7ca88f2..4fc12a8 100644 --- a/server/plugins/session.ts +++ b/server/plugins/session.ts @@ -1,6 +1,7 @@ import useDatabase from "~/composables/useDatabase"; import { userSessionsTable } from "~/db/schema"; import { eq, and, sql } from "drizzle-orm"; +import { refreshSessionFromDB } from "../utils/user"; const monthAsMs = 60 * 60 * 24 * 30 * 1000; @@ -25,6 +26,7 @@ export default defineNitroPlugin(() => { await db.update(userSessionsTable).set({ timestamp: new Date(), }).where(and(eq(userSessionsTable.id, sql.placeholder('id')), eq(userSessionsTable.user_id, sql.placeholder('user_id')))).prepare().run({ id: session.id, user_id: session.user.id }); + await refreshSessionFromDB(event, session.id); } }); sessionHooks.hook('clear', async (session, event) => { diff --git a/server/utils/user.ts b/server/utils/user.ts index 8d4ff01..156550d 100644 --- a/server/utils/user.ts +++ b/server/utils/user.ts @@ -29,7 +29,43 @@ export function logSession(e: H3Event, session: UserSession { const db = useDatabase(); - console.log("Logging session %s", session.id) db.insert(userSessionsTable).values({ id: sql.placeholder('id'), user_id: sql.placeholder('user_id'), timestamp: sql.placeholder('timestamp') }).prepare().run({ id: session.id, user_id: session.user.id, timestamp: new Date() }); return session; +} +export async function refreshSessionFromDB(e: H3Event, sessionId: string): Promise +{ + const db = useDatabase(); + + const user = db.query.userSessionsTable.findFirst({ + columns: { + id: false, + }, + with: { + users: { + with: { + permission: true, + data: true, + } + } + }, + where: (table) => eq(table.id, sql.placeholder('id')) + }).prepare().get({ id: sessionId }); + + if(user) + { + await replaceUserSession(e, { + id: sessionId, + user: { + ...user.users.data, + email: user.users.email, + username: user.users.username, + state: user.users.state, + permissions: user.users.permission.map(e => e.permission), + } + }); + } + else + { + throw createError({ statusCode: 401, message: 'Invalid session' }); + } } \ No newline at end of file diff --git a/types/auth.d.ts b/types/auth.d.ts index 8361487..8fd86d0 100644 --- a/types/auth.d.ts +++ b/types/auth.d.ts @@ -8,6 +8,8 @@ declare module 'vue-router' requiresAuth?: boolean; guestsGoesTo?: string; usersGoesTo?: string; + rights?: string[]; + validState?: boolean; } } @@ -31,7 +33,9 @@ export interface UserExtendedData { signin: Date; } -export type User = UserRawData & UserExtendedData; +export type Permissions = { permissions: string[] }; + +export type User = UserRawData & UserExtendedData & Permissions; export interface UserSession { user?: User;