From 7e5abcedea0e4ec52b95cb03dd50433dc085698c Mon Sep 17 00:00:00 2001 From: MrBounty Date: Tue, 26 Nov 2024 18:59:12 +0100 Subject: [PATCH] Update Docs Shoud added them on docs and added images --- docs/Roadmap.md | 4 +- docs/images/logo.jpeg | Bin 0 -> 81062 bytes .../time_usage_per_thread_1_000_000.png | Bin .../time_usage_per_thread_50_000_000.png | Bin mkdocs.yml | 15 ++ python/charts.ipynb | 153 ------------------ python/dummy_data.py | 58 ------- 7 files changed, 17 insertions(+), 213 deletions(-) create mode 100644 docs/images/logo.jpeg rename {python/charts => docs/images}/time_usage_per_thread_1_000_000.png (100%) rename {python/charts => docs/images}/time_usage_per_thread_50_000_000.png (100%) delete mode 100644 python/charts.ipynb delete mode 100644 python/dummy_data.py diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 6dcef7a..799615d 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -12,7 +12,7 @@ - [X] File engine #### v0.2 - Usable -- [ ] Relationships +- [~] Relationships - [ ] Arrays - [X] Custom data file - [X] Date @@ -25,7 +25,7 @@ - [ ] Dump/Bump data - [ ] Recovery - [ ] Better CLI -- [ ] Linked query +- [ ] Linked query ### Beta #### v0.4 - Usability diff --git a/docs/images/logo.jpeg b/docs/images/logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b8eef0c0ab5446784e80b23e2b553f8f8421a611 GIT binary patch literal 81062 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

9x_`dK^ks5VBe*W}tiy zdfV4^4vM5fKT(h0o!%%fxD5_->J$I)epY6(A;O4`)roDoK3mLVg6TsXBQqK_AZzfCKtK$ zZz{M|KE-XOBCy6i+~BQD)LCkAQr$p`8f#y&##DyYdL+~krVcgSQ@=^%IiZ|U{3zTP zFs97=f&Y4f#&&h@&^gFE2pu^dc)wvAXO23s^mkTedO5y|yT>wn1Akdq5QV7jk(7R$aSv4Y@RKi{6 zBk+Yd?0Nko(#3~VyRy2yyP}6FPov~P?q0DyFbSq$^S|_&%~C*Yg`bI*?{@_V28_Ng zew=pj-QkyI60Qz;ZLU-|Go|Yw=4H3R2Tq_}@EWpqQd}wuB{#+JI)9l>C;^e=O9J$yl#(}30w&AQUpe=e1l8?Mtyo8FM&&I>EYR*HZN~UdsDL;@waUEZ+xPA?+cWhj1*T6-?$o5(-gvj6=toExOSdoS4GBMQD_4!0k1oe&xXp100WI z{3`E!e{Yte^enQ)l`Wc(ba)Ls7W)MLTrwe~oX$>Qm#;3mBk_Pe|BQDjiC01=ypm7X z>cF1aw?8Q%w5+_{OP=kn!Y?$i{+h`tG~BH=3TBGo$no|>AA@Ynk&j}nD{d|4t zmq7a}%zL!;97JCjglePk6`{MO5=%+A#Z9!RY_2yHC@5(xmlFRnPko~t>y%moaQD#H zgzq00@CY+u@k8UM(7j7ALyHC;f{e?7Mz|?ctoWqk0GPn^7K3d7fJZc*S=X0J!;nkH zs@Ti{r~@zm$2#!;vrYWd=JP%#`2WC$|67p9|LoTX>GxpDIesE;x_gdFE5U_70gOW& zVxxR7p~xF^qLD^GJNvJGIR|aZ8)*@`zn*f2k^i~(6>|3G_ltK!W5`a|KfOK&rN;31 zz9sSXYs+BOHNBVz@^k$PuIWK?|pCn zU2{9}F6Cix4g|4X`oiUxx8XNQ`&KlStfH6+z2Ct*#^X^Y_#mn&lHQKmQyUPxps=xn zd5{0`Lk>&aAA4W=rIR|}GQ?lMLaBhX9ZA7Opm-a}0qmzMPf5Z4dm@LH??uuGPrXSq z*Sg(gMv`ss0bBNUF`_hu_kGB|kJE{?Y58>HiTJ1GjRc(^kk5yRjr~3oYbQ^Bo#A|L zYu-QrLdyIXDGg0e%}X!5%XiW??-hw=;CW<(#kTfppFBfUa`v|G@E+-pjNmz2!?44U z2ZTsB308b2_{jy*mGXL$ZMqTP)%Im!PwmvQ)c6TUQs8@fYOTtW-{Ahs$)>z2dqEgD z@t55V^o#+D3?DrFLW)I{Msv0=T2 zw){vzELDwU-Uj!&0%;LVhcnO*>HHm+;a`y?uzCg2yMNn+gQx|b&M{<3e0U}P9Q1Pf zEN^80DmnoW&;!Fa%|VQhGjIxS1E!CM1>#?+J}oPsaG))-KcW-H9G?aJ+0RdQu?-gn z)F%;YoaGCg=O8f6;r3Lq%}Lgm$ZlgTq!@#cafsZ`@}|J-K?%M*vf@Li3*)QX70|_O zZ^Q}*f(P#=fi7)$M3AVn#;xsOu`-7Tm{q-GM-xxh~4+9$gx2C_YQdv?AWF6;l@B zPW1gGciM=KbBcs-LIXT`tzcwjj0XB|zsuSgQw1cxz(4~o5cFl-wtkI8E;}Gq1Qgz- z$o-KF{hwgn|K0Bdxc~jJe&j&+MJ|lE<*kSww$VvD^&XwP)+m9F@Re9q%kh3SvXjj* zo!~;he?1FIz=;fn5E6r6fxFWxGF(}MwKudp=TX=gq$%*tvM>DO>o8lb>;7ef%PQia zPbZNc#_Gk|NCwrXWZI`LDIi6de@B8&dmaZM4=8^RHL4X6dg|oe?!0wI?3;&BN>Rok ze#r6dk84Rd7R1xInXRHJR|TvfOhbF0pd-JHlt7SL-Rsy7>yHo9_t6j~8}cL717JnO zv`%Npu^ThnXD81QT}k;vhnjn5zq2kA2qUu>RQENFn`Z@Q%0@ z=HONZ;2AD}dAivU_?uxnVk?*fs((MV*kTv?Rf^nmK;CDKH++JEgF->z@6e*;7|#$H ztG~bg)AxY{SlL|kwrNM>q%;DpT8OvwdQnNNSOJCQ|`#@j+Ny?^c^`^ z%*|$QS~&z4pUk0}*3Us9HI3%COsqz4_;z_jrtS5d(fQUZIT%y8wSFm%6fJBu-b_#S zZ(o;_xC9gq@vk@Qt=NPUsmTGPE4Qq?s-Z3z+ew=`XL*%ctJvTd4n&<2)f+pD30S~m zA~%GCv~4SoM(rfodAoeQ0Yv9uhqav{`y~$-`B$k6V|9l!hs`gDV0YNrBi?nfA2JI8 zX%7(BWsh$Vb0H%u)pJ!}RTEQm=Q{&CqyrSLAeaAib^l@!(UK*HHzTZJq>!w1L-)*1 znIUUTP0f#mruJaKN?l0|GF^}$MZRCdUR&ob;%7BTPr2^c)_gB6oJ#+yV{J5ti`ni< z#hU5!f@(qzZf*MC=iMTFKuyHiLB#SE*SZ4DlMqA6 zK{M*yoJ+UjJ!~{I#jg~t8k%gC=QrlAx(=F{7>oXzjc|N%4wBm*i?!x0`RFZ^Zo|Sg zy6No0dYf;gYZLZ_`8Vn%smMWlfHb%H42IlbB?-ZOaY^~VoQg9{A zlMJGcEG;jBPnMzBh8h~YWgFj98_b>k^&pAo@vmW-cWLS=Lp#w;4y=HJ-~tc4YC+VS zjp}o|FF5pi!U$goQNi$}t$~f8V`cBl=WcUXC~Pkw_fYU0bi(ITR^A@!nIi0Z2gy|| zpH0ERo&DvHlJZ}D{acXO-wufhIVl6_hx-oQxsM1rc9|)%+nVz@|}e9T^+gE|na-63$_a464mi#P3tz5HCI)0(e! zw(gw-RgbqZx%9Ik8Cw81$1FuE9QPUt%Fnm{XxRH%H0|rSl8d$E=0|#cp61g-bn+?U zL<06p8Q?Viji(J`Uaam^aG-wE;pTtMoWWP$se9xsl|?8qhsIG?LLu85{KB>EWy3`l zWmWRQNcYZ1rxbd}qtk{B0om)=xoM*zTl+cUW(yDD*fMw4SO(BJpM!8aM_o$UJ#X64 zzwH*Zj&3P9^Q`BGWgdgU7N{a0IPJ#j4ExKzJ6U&$>!wWL4)W%Ru#J*V-I?!vDH2wvKa#|CT#;MIqh#dk@RI!-t~s;E_JC-_HYdZUfyZc#sHg z;(wUv!fZWC>8yW^Oh!*&e0})D8Lbd094x@ZRnnG4o>v9(x}Y8KLcK7jy3jgr?LN2F zTufK_YdOrz{Yas^jv4mq<_hFq4XzCoiVN=$J zTkoTfHref|BdEXrWK9|?s4W>X&kWZXl=~iBK2*?Hq=#|r4U)htE?aJKlJ%h9}6a| z(qLCoLAcxydLsqgSx{lvpca`m=_$qc=_1OTHFtFlb}#{u>x9xaN~QvfG1JucrMh}; zKh%NFw%Cfy`YP(esZf6d_*dKztI+gQ0h!Yu^y~-VN!TmGQZ4u}f9edL`kaHWCrj;# z-Ixotu5th4?7;ywn<%bz{j}GEmI>mvwfbxDSw7Q^HHOLk)pJlnSV%1H0eo#6ImJ%w z!vz;O+U)Q{=nNpaf{E2>%?|>>!V*p9jeY$QN(q9}?8#gxmY@mV%f zer3t0KYTY)4y&fZMu903EQND9G~%D{`ju&lMz_)xg+E4eb6v1%Az?X2v8s6v2>#bcuaL8(2d|c^SzNJu9%EaT3Rce<~^t_=wKa5J*B8s0ruC1{S z38nbP$xBmTs1ml>8H2b5f1wi>KM?nos}^kTr2M_%1+H(CZLUc0xdv6EEkHyp*}lIT z(w{fx`x(J-e7kWay7c1q`>m&cXgFU@`@97j@`J<0EsiWJiRwX%|vT^RA_ zzW=wESrCwYL){*2_IT^@*YFs15KH;ol+;fJk4qYW{9LYc^ARul!7MTHzlXM&4>ER^XQxB zpeBuZ8F}r;-tURet7J0OX?NQY49fsNpZl08Zcv<8HOV&8?tKzupO-1Gpypvbq`LUU zs-9mW+Vbgb<}fBp+`3Vvxf8q3D;%jjv5lZ?CLC5_t75)!+r=wx;#fpE-qXfSu*pzwOKaQiZ=5$(2t2 zCl2uMz^}kky#~|*(j;#;Tr?iqY?N4(HSLiDE^qe#srd+KXuWp{`W+(2H#(T<*)K%< zU(d}TE%#Q&%QtS$q=iZbfBM=qGTvAATC!!rpTLA_s##IpNFK==UT~7lv9GfxHC&VE zQzr1w<@8Ixc3!U*HLyv4tSrr*ej0Hce+pkA%D;Ph7pG)H$N@n1T==CZB{P`LsW2W% zXl`;)l|pSYKDt+Dx-cJd{0N*1?`qQ?9b+44(jAIU&H6GO7EjeJ8?SV>zrA1dV5zFr zGNSq3J^v22a%Tp;!pfHlqIX`3@7WXUU#XzQY7Ry6)yJ|lgtZjxUUN{FY5tLD$^IV* zmw4xZYO*G22aqu!T#9M!3Ir&6nz(CMyzX62M*IlV|M(pb)AM#9m^jU=(z!%j6u4hx zMjw$r!x&nceCce)QK|ST`s2e*y9ajJ6?N}by+R`a+W^ms51BM_&stf0#X&bro3+Qe z;UeCA`TePxS%JaRE{2Xoy^^Vah zey5#Iq76~^>jxMmYm+@_7|l2>zxhs%o|#g`A$xTwhtH#M`%ik?KWFAkO$ci+y~%2l zEh^agh=FD}`b(XQxW$L37p0GHC!c|~;7b#TX_39$O}3e?NqzO9Q>EM|yAd)hjAe2$ zB{5{)o|lr(;7f%J+gWyMHzX^Us2TL61@eBj8}8c&fv@aCX>G7$skPR8ss7il(sk!B zY%>MQdW?BhK676F5)*?Q?iH|I@sXOPO@)zIeK&nGArp8-ds5ZIOrj`SO+i;S?_wSu z=*IixkRlJXQ}tV5^*>Dq_JRM>a{S{x-Ddj5%e~2G3T+=SiM829$p1j&T%imsE-Py29B zBz-yakB4XTYsw!UD8?`4H+3w19^V>7TIZmxcIfUkjehs-h1`)uN92w!8;`G2QPHyn z2>baTJ)9>X@dGJ8KpNtp>#;Cvz|Dy`y$7Rw@Zi2|WhrIZ6bljV-+p@e6@t9Cu&~ft zT`YR+9MmN#_K<5+kvAyCUs>fJ(uluhgZL*L>o*95ZvE#i_Aj0If2RQdr}seN?+3v< zAu{fCgxtoou?niK;WEF$JgwLV&^AoS6j*-U6umVZXnEI9=`p2e-p|&_+keKqsVKAFHqWrD{BZ3;?zu?8N8(dU!?(0QPO4~W>zRcon+zPdrsWx~CB3B`^X`%jH)p;LTsohq=h|g=wgGurFj$-Z#T&qqxQ`~U zr&TdkDpmQK&-gjX^&9x+WU`n-)ZsChb5A* zBqVZbiMQ(T$Lwf>ly05AaxVw&r(o*=V6(jSSEMSgr7frK)40 z1?1Xg=ZwdDIhpgyeDD8}vTXPW@WJQwQ2VKHTeUs{_LbhhDzqP$3|BVid*w@`GIalDwCl(rNoJ!|G)rL{~SUpp#8%9>3# z8C2pVwB|?hmU+K{D&>?F42L!zy2vO_HERUr)>KC+P}@jYaDw!Dej9h}q5X(t=b*sc z_N)0*3bpD39Vv%5*gq2u&@+njdo1PqRWtg0xb4OYA_>m?OZ1J=WJ=MkSLYx;3;R0X z6wtxNnlzi)=M`wv!g7no?-bE%=V3}oxNhDh=fUE&{Go= zFc)Sjo0NKo>^0flNHVr4>-b-e$anKe`_n;C>fjhw+~Egc$dx^*NU%f9PoD)tC-$Jt zd#ek&W(Y%M+`P7^MckUC-O9;}o0`rN^q1YJ1NHk56cE0y*^)aEb4nh2(L2pRbQjEC zJ9SdYUgh}W*wVG}7sYRvBE39xg&o_*;~Tfg(6@@{bzCir)C+BRGu?AyXen>Uy_(Ql z{8-8KN%b2mV*4C)^&CXr_*+?vzLSxLi<>!5f}Zs5A$55N5XfN&o`mSvh_O}_m3MG7 z^__(5b1p(7oZGU^7o0kiqw^K5FI-R0zswS-js0Q{AFmQVq2IPQe_^{hZ*3kOd66eP z_K5r_w*^zyhH=V&D$Q$dZTYhBiLDELjKLLO`~peGh7bzS@kLM>_u!mbuDzk_xU2WF z9tZ)z5G5(RUwS63W~r&_z0$UoV*6dTJ%(s~Bu*R}bgpe-_Wp(|IdyE_E3Q;K%P;fL zCvvhdHB>+m%n-&398%fQU{@p(R*5qndn!Q4<2@eL zFvDMJV)#gsfE3O*sNozNFxp{fAXp@6vSf*{G*TA`?Xhy3C0>$aeVUuac9C*X+kAa@ z>S}g{Ep|tmZ=I0_nqzC|KHcgHy2gLo2IoJZcl^xPpjEZGAslVH;4`fxg11Gtp+hTd zF8gv;y^~VAuI*bGTwVmE%!KNlgVyZ}i!tlvF{m?Anj3-0gAz#XQSIO^j930d&Ak;m zYF#6oHAYW;4q9=^rQB35_<9b?cDLx1UrTs~IpNMf5aJzsa%>pW;1P0=FNGNNX6ri> z8b-89#`%uuwW9;SfYsy>gh`e*pO8(qiQ_9soWP0BuR~nUDDg_}Iq0_RS-vxoNL>RY zjR63|oYjHQ1`~eEYmp9p`5Y9SGlW^ut37=Ps02RbK+6?Bk2j5m5T}MtxejzTSO#VK zJkz;!OfMsBjQD4PkDT{TJ5>|F*n9#VNplE5H*G+OO-Y%!lWSv2)q7WFBr+QuJ|AS) zbDn{lqVAr9z9h6_V#qTbPBh)4cMohSpM{+rM4yAAsn5b&H(&cmDR`$joG81mnX|GF z7M%@_d;p@3lCcVX?TF9>3GjFqnM_7$pc$S=4f;yJ>qVNGle~99Ul)vW^7I+Loaj3+ zSENIlhn#7F;=A>jmrC;2*ef#frc7>+_EotNE%IMY>v0;mLRN>RwbECCKgW7q(kE5& z=#VR|dsHCL+lt`xrNp34&6d~Gh^^;1Ga5$s(vz|?{CT0|T8B&GJ|ycz)m?J<`>)?? z3EiZfUF4a!_bo{GiZyi3^3iV;O&FUW$^JfiQ&TNS+4@`wK!2|)+KiB~nivR;vYlmn zzpV^=5Vfjt!`F(W6r?oj3ts_;_(Fz=_uOq=crT0YHcgp~6o@Vb;Zy5}_en9sR4}S9 z6keE(ngkdw%KiP5$pZoSt)Ht)_EHEY`}}-$9x(--yraUtY`h|nDpq_uPpvHH{fKJ4 z_EHd~`JTZ%*%OWJMHr|SaXv>)h=|(&4=+yOE-rpl?2?fAnI}0~`8d#;U#PRlVA%IDOPQwU zV6K)4r+5`Q8)JzH&Q&jg(XDH~URxv^nsexOVEJw~QtRad_akuQs_SeE5pXyaRmKZU zH`&~pTt_(KyJX3!6n;NbF)u?4nC?j~fhbj$3Lv3V$&w|LTyy?C%)IfX*^eEqGLg}L zhyDS&kG~@4|B6odOQFc7CI44L@-L087yb!k16FGgACCwJ$ig2i?d?H$BCjzIzV_oO z6p~}jKy=~)pso-geFbuMe0H@>jx@^s?r0B!o_I|(X_SQ%7gP<0nC>)j{0yje22buY z*F;LX3>F+1^k}E)x+_p`JM_DJ8P)PD$GY>*v6Rewj;MJ1ux$Blml>~j?xY5;vTA;q zVc}Ryhbx~~FpHDc*~fks#$Yw|sC3sk3^mQwT@mB(0H!tJ70K(Z-*(3>!O&&F&6W0+ zk#UP-OiQbQ2DZMS5z3qyr(`z&oC-Q=qR4S%bhgh7$wIv{HF?Vx`R&)9^=sX-=#5%# zQH#%TCz8!VH&LB-2m8AdF)fYpAtltuvsUXIm97J1@2lk@LJ&K1jlHI)ljdEqJE<1*ChxD{#h$t&&tTG~}_x2%OJ zcZ;()7x8THuTUHjgqiTW`*DX`w2-B0AQG2kyNdJKKIBfg+B z!WsJLOs=?UF7r5fu=yvLq(BR13-cDo-6@ZCn4RSNT~j6y`iaOLU_1%nyQk+1m4~NeQ->Rbku?H`*aOqoBg#kiS?;8-sX?|ua zbU;aEy?gA@UkB@Q(J%XOBe|A^wmPp7ZCri!xz3*QIMMkt>Uh}^D29*a4D`XEhI@@M zH4mI9U!Yl`JwYsk%&na#EDlLRCJ}v2V6fpis0denf*9p6fbQLbOTsR=H(WnzxP#SU z?g_-4s_6@RA={xym4VOAH6xf)Z)=7?*!EZz@%7j8_(7i&gM@W@@L)>+P1~GZ67fc! zvy}-S-Jy40@1f*wvSRPDgzE-SW=C4i7b+5jGwC&+nC%&+%19pA?~A(KLR4P^FK{i% zy>4h$uxXyvxH*By>vvK15jA*WpDyB?wn*4I%Kr~F}1+jbT zrXP31u#4AsNt6hi4&id&x`_y?F)buXon9JhFGM+47r)py(}Ehz!6Lb}V<{2<=*rq_ktJWXP;;5wP%g8!t`{{K@FjR+`jC=rngwe!%2RPZ)NRpBNy1&W!>+D zAf=m4JzMQG;U!v%1(f%_n=^cSiQ*$1^7#tZS+Y+jMsI&$qBMWDyYUpAB~3H4$v=A- zY&KZPKH=t(Kr0Ah@SxO#1bkx-S=Lr9Fj0;wW&>}K_jxerO|spAWG_|oygn*ZdiDrA zykaL(>mGdXip9Z0ASS$(zEd6VH_Vf z5$#m%c|0ctw+c2jFtR}(0VS^uM(xZ`s)+N*(j5MA^mfL+1~G1jl&Lw<@0;SoHHHBzOX*56v}%Fq{gGKv>~dqbcMrTnjnG5!Z6=RXPB|E4zV;y-7qKi&|%qkLccg8uyzF2498JUi>8 zqdAx+io|7V8Pb>pu#cByBet&-`b=;>qn|UTKFygW@?|q-#;(<)sv6PuxZJj)YsSBA zi!WrsScKRtXd!*4PgrY_GO z%zho-&J7K$?BCaThz!%fl#cM}EvwZ8Z(Uh5_ixTWRZv4NSgq8Uxeg8}lJH*V(XILj zt>#7d59_*R>GIw;R@2)gJ>Hz&<`R*FAMzf?h@O%ab`KoZ`brc$zh4vkleT|Mg9_n0 zzJnl^tBb5V9by$uBb=tUc9r!ChPO0IJ`5FCznR_{Mvthe)WjD!r$BEb7j_kGh$XB( zNJ)I25mYtw9JF1ceN{7(Lw@g-u?6=d8J>pkC)a)zFT+3exd?y02W<+$(X^S3?`2W@ zSaz7UcW+APVXD%ivYQYtN;ACStzunS>nw5`-o2x}LC_DRbKGB+Xx4?zh?jZ8f60(8 zs-kw0kZ&iXB__RfQ{$1P?EsUgYx%s?v^4+tB0RnaoTJ*J`t1xUX)#*Zu4r-0_ju}F zpihTMLpJ&Hs*O)w=Yf_e*c2e&3jCEuN}o@g)FEm*(-aDid6*3va=tojyzn}yhMYAM zNokCChhuztKp$7QdgN`lw2^WRu@X7IWvPSjbLHe*jBgXOeK@VM2mt2%O+?xo2}$oK zP4a-;0wawnh|g6f{yBJiod&+Lg`wYF*xZC=c)^0L!GdK=3G8M|snOII$bdp^-8tU-`6@$^;FVHk-LY1(yu;V;mCE~_06T$n zxhCrCV z`%uR{t*1LsW&&+Ke#T&dviVpM^>8?XbV+$jLtEp1nN>FD{p!z>+O)!&+?{b;{86N%1|JaWntYvapgEn>pq*z4~keQk?$>e8^&8t>Y$NWeUpe$|u=w|87oD%vrB z^g0ln>b8NDiaoxeK~u(~EX5|#D$^I_%3#N9+3I^Qw$+rY0c%$3X zpO0eAUCU?NH3-Sgn@7>x;RX2%lF0#t(bg9|)>g#3SmD>W%S(Y-3I_sD$<`iZPn z%kN?4DO#-vK}bthj`wbswI&1q#>77;FI@j_1#fT{9=7FV!A3`)A!5AxnCu6cP%eg)$7bH2MG7f*fbp| z0GGklK{)YP^dhmmWep&TxTRuc`+pEOD!&7LZWvLd%8WZL`v$JOAU@wUEyqJ!k7wRgW7#W%FpCjMq57-wN2ob?j2j=DPz(?< z^l2fjttP`imhihz+VF(y5OLGD|IVG0Ok8gw$NU~Gtz{Q#joP~%-|B$~^<{NWYiXPx zc2T}HiCG-`<)Jm-@Bb5^V~wcmMs1~KB)!;TT$W{irMZ4Y3K)I*P!$`i=m0RSGTgee z`7&H>?&&uQ8WEH(z>{pIJtR4b@5+Bb-|uXu9jOHpynYNZ}U=RIYPl*7{eQJwd@52`Vf=d?1IOVMAyTbOjr8sv)bcD@~ia4nc zxs|gjhKT%xag8y|*t#17kb*Z%b_8g$UW%=o@S!%Z7Am1OWp1@CcsBArMwpB&Bnmsd z=%Q3H${g_w%iq>ZD|;9|!c8 zVjBl73TU;!x^j4>Mq2RNsgez5A1lEIfCzEVSL&Q*l`$iP1Qn=J8Egr@5c@qUXw#tX zx~Cvk&;(V&hG+R8CIB~tqYmuZpx7@aM(Xyp`3B(skG1yzYBF5cMNt$G1uQfXh*Cua zM4Hry2oVsFA|0Y2HPTzCQ4oO$gd!l3-jNb|?=7hG-h1z%h7jWYU2Cs%&g|K9?_T>J zW*}vfOcMV8``-6`TIMfAm=CO2;}!V9BXCV)j8G0{1vD~izSX$Rf8h_A&~Y;Udh+5+ zJE)pQeeO72!H_v&wBwBFEbmnF<9Yw77QvtNhA_G1i;zINQh`TdHD-u(XU{t2Sr9=wUZN)k=NJEw88+49 zHy1V&zG%LEC(XQlasyus{#7@`$BL9JFb~YAxho!D#?HGa+B zd#NYQSq4-QmXSYyT1oQaM5l_=DJnua*&@FuByA}uGPkpT{dsL58VComdCaFku5--dMGAf*rKi8{q4>EAfh0DcU+?YWDHi|d4eZG$BRwqHWe>^+z4EMT-50w;%SmLdyFA0jsCJEIeO;AN@r>y$uik+G73PJg zs_+y*Oj|3R$9m=!(CHsWi@eQHPzu zpbUKNMI6f{O-Ya3yOQ2D=wu~A<*)NJkCvvMWpaD+ml4xTrM?oX);mY1(aXUJnI*}K z(X;(t$(cSVAa2eRbSLqPIE5syETxKDch{(g)|AQ1gITmEtH!5e# z8%c0s(AFDxSia4%_;UE(EyF3nQSBkG>wkUAX2Pu0O_dmO`8u#zHXA8Djm6~4GkAUz zm~`Txp=xY-4fZA`_3-VK-Xqv#D8Ttz{3R&Z1^$n8C>vokg9l6M)sfIw@B$d!RT#Pu zJxZ`l6k9Hlgjka~hpjzbdNpC>ueSBBUstf~>^Eckbp9Sl*_@xaQQ?bSRef4|%?zb- zzx|)FQzAXp4q_CbE0*1JNjOU*crjNn;Xb~i(=nn-Jvilh`Hfv#=b|HXI zc%gOQLkar$`!G|`RoLL9vLjk?HTou#C(F$rKPZ&BMqa!eP?P;UXcV%pdX&M5<_k70 zGeZ_sycRED6)SH?R z-O_M2g`k6_uEqs>11Lh3yC z8r6Zdx9PdW#A5TF`6Fwmn4^D6in=J1N)j$Rvne>48sVa`jpHoda0lh@Ors&BI1ctV zK<7zUDzPS)Rv zBh&tpJ4r!5&ZT^Xul4udRK1!X*_j$MwDd@pO19mxhxXxC=+}tzETmSOmbqBGJYa%M z4nXt&ZCv?(%}@T*bN;UwP61Ul+5OaSfPcqD$17WW^4;8?lpPLV%v*FFQs7<|01*)E z{UG5ygldy?x+U#)n9W=*&0)dK;I4)Ljf?b=D}_6>M1LMOaGy3w?JT3j>zp9YDK`gK zAZA-#T?XHPf|x5=%i7(_($Z|JtyF|HmN%CNt>*P8D3Yc`obygguPFirm~>a=3y|J7{6&4A3o-uJ9>sQNPq5{VREW?I|Wt z)Yq`rw7Db$t37Eujb9K9~gr%`9HqG+AZ%)=fy4^M(Dc#6(}z`anYiK~H$G_tFG> z_9@JOy49D~a9|EqH9HO70>UU0-R6tgyZ7tEZ4Z6ZYNk$=B3NJ7tG=uq5K}%pSE2CV znEs`Fhc<{1e)=P;K9QwHCN_Vo>Ds8;9OCv2oEK`e`Ti$N@aE1ecvD-pae__$4;jmf zmu5mgS4MuzVME(L z^_WU7W^v?GuBsZ!G$CD!m(y(z(=6dRoeH@kI~Ox}%JM6D&LdzMTr2ezv|}6qNDl8k z_$@E<4u@=iol{|Pc3-xC*_qTk!{%@#)sPE1YY`{;=l(pCTgRSj1Q(8;pS=eE4D=$2 zDC&(o_(LWv7|7d)i#<>G<0jE4t|3hc^$$mOES92&%ae8>i zg^9a4Vr)vIF9rq0Xq4X46qMZNavAfY)AG8osT(751dzcV`2fn?PjNa@g3;oxd3AlQUe<7f$;J#-R672=v{wz- z(W#U?+Mtr9dDdOV()WRIh%v=W;-a8ej1^PxvF>rtA}d-&oJXDm+GnulWDe#Y1q!30 zg|zJgICse@BPTaZjIg3N9~O6}4m^LK$G3Fd8yO>|_ZxJn;gLjOq1oPQh?PLv%dyHT zm*nE=Ee+xUINLNHldC1q@%h<5S#gC|n%fg2qhRvN-SpMADqSgmYsdfJq0*Wo|DhHH zl6_f_3jY%s!oQwF-hQn%HazAx{G@|`_~0Wfp64CH>ku_C>dvxY>?jwID;qTbtk(V6 zq&E4&NjtL~Xsyw*h)=xME5qoy=XH#R7&c`~Iyn^+DY%neUyI(@u}WI-c&z#`=;4+p z7rL@=6CD&H_PfAHze;4rMDCRJkR3_+hLTLziTR&(=uooAEqXH~1I%2wrM`C#(~R0i zaJJ0|R&q35Ki1W{=9@kM0Zko(+DEhX{ium-B)~aYZ6VKDv`o4{fQ$J|6V%aqmK1<* zNc2PN02J8Nr_5yT48OH950!@2XLTQZAOn7y$Q=2&kx-0rMS-+%l*=LHq3Y@D{}~X3FW?v3&}L=z|OWk5|)Q;n3;E~ z@?D$6oA^?R;h>>J&Kx{%+liE5PBlDyEsK0PN#w-DuQ9c=u;#U7O#E*xM$7A%S9k#& zwGj1YHe}QoVYZ?ExCdVGJtcZvLy1UdyFaxMhxs*}k(QC)`In7(k}*MllV)U}x%chK z$NcrfFI6JJ#P%a~ShwE=A9d1L5voOMyNT3ShGKkNy#oJm7QgcgEPN=oqtCE1)Y`F{ zO5KB{m+zr!K1|VjD^RC>P3>mm(Cgc-cl3a)ks6ULXRzV2tKrzVu89UGK6!6P=(Y{w z{ot_qh@IYv+F-BdAF_wQa>xl4)wou1a#P;vj^e|YulqZwi{||KcY^vXphw!Ah&n3F zJv?^L@4&DUaUG!gl;78rc=Y_S{VNahGr%*TOUyuFDhVqFSModbkaI|nwRO5AeCaym z(v5-d$V2rDz8<6bKAiZN^Dt3Aw$YW2L{77T`Cg)THR&RvO2ZF3hFdznzwyXRN5?tCl*HZ5t8 z)GnEums+MB?~k;5XAN|3|MWl;QH{&$yEoOBxPI9gdc()tZqAp^)thHnP~PYT-CeKF z*)7x%Zu7a>(y8X-C}i#927Vu9=#{ZV{uePu2G#2NF2_3HHpGN%(BgV>0^4|e{8;Hf zoXb(pwnmeiVb2KOzt?BH! zC7ra2G9(zvvd@1N3V0!ef)sC$neR^B8~{I#UsLX*!hKU~JA$8c!H)Wif&qJwxEpGuSWH zF(o5?N#k2x;CsoMP|-@?`Uf59In%Z^f$hhs(o-hJofc?4NkMGxkIe(UTy=Ez9Zvs@ zsl>6E#<@nSS^R9fZjE4Um8bf;1?Tc-;jkXxpp6%7n~YT4)m7nF;S&ZHjv*}9N`;@0 z(JrCSDCa3#KkYFEo|yiqDE4F6Wp!B&?O8L3L;gCSpTs9@s&j1vr7%##=vbqk+tyPo~)oN*oU9DxANN;WyQ z`jYBFOjc=wzbfpz2j5={Z)UekdTSt#y2?eSmM1bE+2Yw559AlFzB|2>QuFt;nVju! zB*&`RysilSl_|Y}ip3i2dqQxGErBK zt61Y2{__%>*|@NsXwdhn4{I78nxoaM$70)LW>vgQOy(7j)l8`FXJ+KwSK+hyuM`0P z?fU?Xnf2&D#vWqyAO6vk{OwEr-Cvi$w9xQr!mG3s% zcq)y?V;6)_LJfEEKTOnjg^eKJwzf;#gjazMLspseLC*#^xd0_{5q`rxAju?d7T4r@ zR~Zv^sbn|PfT1OV9x58Wovsn%A`+Xin|5a)?skd`L}mRE6T>EmLXH8%Vhfs-ntEBo zmOjU~xa~|g2igi>-8;g{?zPSjueO12UbUE|jeoB&GxhOAuSDofZE`Rg`pyPzk%Y>e zw3&E+#lZ%~9DYB-@dvoqa5Yyhcp^b4j~7sgiiUIRJiqW-=goaKG6n&95j}pZ7Zex6 zng;AM+n+Xn6l?K$jrX8zqq|!6=o9L7IfW`;FUFPktboAEveQbD$)Fjnz7|`U-`o4W zR(Z=ItF%6FuDa5NwfIRZC%HdWj#EiP9R7T-YGWh{UiSRl`iw0of~Fn%mfSI+;ybp}dqKz}Itn;?(qI6363JH5rtw?GYM0X+)HipW`Q(5j zx2Nl@7Om2@SBVteWx~5p8uVu#2<%Yu6E(p&PTDpQZrunW2Dkv`jxeXMq_1SIWY8t~ z$q+e#+7rc$x1@Dy)G7<}B6Ot#|56aDz~|s_9h&+MFrvJ4!=KLU)O-=qqA>6MQ$~4y zOygLrb!Fia2)DL$1lqcF$}Y=a7^YFu^+4f=jLlC0MZOg3bxAD0)D!EmyxhzBtk)rq zu(jSm&`rH|cUT7O=8sL?^;UMdkpO(qnR(UjkO#JhBfG3Nsb&98Eg$-7u(6DDYO^jI zjk#e|?i~@Y*Cyh=$rX_U)xCiY!o~P6X=cjp4VAVjrbZW9X_IW}c9Is07YAiG@t%Lk zmJ?f&e=O8_zRG3#AuFbPt-YPwwlZj^RtACt&%c!7UVVET7{lv0s}>vMb}ak5tr2fc zfpjMDZjIyK`S^wzXpfUbUu`iaxj5C8LOp6ip?$I1Pu4lz^rF)Rw#A8tpM7Nl;8rwSMNGO;L49V4T^POF5!VUVzJ^yz z27%Miu_3?G%I0$5SMk_a8H{^(!vU?d&Z|dc>@jlp=~@1vqo!Q5t~!xUf9Y6#8IfSVCOxAn8|nHSb3#1Aei?3l&b(lq=0m ztZh(*U-;F0eJ$WLdMerk+#wV)fIl-m6HMwtvwewtAB2)6+}8I#BriJQsT<97@6Y~K zcp?dS^51Qj`T$ttQxgRoSYgl!blr1nU7-VDLl$~`?FRGl4t7l%m!FYVXcldcbvTnF z3hkSJ=|CTX>KqZJcO!gOg39cRwT zyFjlQt!%(3AOwi)BiO}ojq~?$YG0E$_qL!osS4D|UJ7uwbT$FtO4ItrlS52w@IBNe z);WJEy)`W-s3g$`uOl#nxD9u|_8jY;>A-RhkgR1t9D>_V38SxBk}VRB_>LgGTXd4? zqGjI-(-TUqJe}TpUtSLFb#QUG8^!l(KJsHHM?)uG8+Vf~*pI;|gc|!};sV>@)$!ui z9Ma~S$Teqay$)&#mNnv)Md{s(@RCWxBJN?@-`_+&$~-4_BEHE6GsL`b;WTt9Ek2P0 zqWu&`^6M1S3~eWLHf1x1%wCN7r4X*eIg1%GjcN2ZZw3HyD%}4;aQzn&_}{&xB$lS3 z=F>hf_#OQtE#jFNeOA&T$nzXCW@D8SovquI@B~as|+en-ZIIG}Yu>#El7uPc+ zs+J|3fwG91p`6)8W!L;cbV+f<^oO&u_?3VWweEQ`0AQurML;d=ONJ>VUGouxUW7YrdxgTz%X99+{JokIfezSBE_;n% zDr#9*u|=k9Q|8v(xpWhWv7)~$Q=0QmR(w#mOwg{hcXA(@w4Q>}b_;Ux{gz5IV2Ajv za?iXkCdi#caJCw=U;&4@$yGukA>}lu6er`#YbDLyaP00Hl4>=Ysd%S^G_WwFcPj zl4HH+P7eTjSkN;t`w^CU2e2A(7BlbjyXB)CHxEQ?98ZfVrlVT$@5A<&Lfy5L%tS+A?R8&TC9Ut5ae~|#ZUh^fL zp}Ilx#l|nmSFQGFOY9GiJYDZp{vm^WJy;T6{bf!>IUQmoHle$%BLm5p;&Yk0)C> zbAKl__GZ>=hCAu=1KucISnywUPd>>Qyn)?l7SiT>c_Km+BU!RNE14-R&Gl-dmezXQJuq!mIhp5t0T=m za|?0S+UdM{tStK>_hMmjo`JQOT2J;5V{TxXW{TC5Ap^&6QMy3ci0b%gUmRT^t{kPM{2 z$i_>t)_BIaVQdjP6g@_pF***WA+e7UW%nk=$ReFcjnoon@w2*UJRI@-daIhf@JpD3$a6_fQvOOBJyIL<0BETnvT;ql?{sh6ORr& zu#Lz(1lJ7h-qvYFSaHr&2RtT-SggH9HzV827Vb?K4rai9DjVH94tT^ey@aTbp%af} zC-p$&$6VH-{G|YWdUI5b1!40|C)e(JqP6atwODHES{#XUWZSiXW4cgqC;6Q-$i$14sY$%|9Bdba&k}gt>*~H9BDmuO)U?qg+!`gONbJ}>Fijut^1OV&^&8_= zY5f+ZfPZe6&M><9(T@-PKzKvh$D{8nwaiq1C%F8z?(2g*1?P&5(!#=>YpX}q8RaKX zx$X2;3;~v@%8K+KfNDR*Y{*%WwO>Y?qs~6lfcbAm00TF33IyQnF_T!pAARJH>&2MY zJbGSIVj|98J}0G5uAADzcA+<{8QJgeozH~jwXYbN@Qh$}WWRY`_hi69!hARpbIA-Q z)-~Uz`q}!rC>Y_r(@sabYtH;NG3pjp)jzcuJ(Mn(Ck(u+)IJi;crySv${&M1AZ|9! zGmV1h?+h0{DI{c zUV+zeC9M{p+}<@VPaS3xUG=@a;rg{Yqfo&SaDe_8@-L;szjX;}RV4f0=Bocg1CD#^ zPp>M_46(;F5#Qp*_JlrWp(mb-scubwN9hOb#;?@!CkdR%`v3#|PXTS| zt?2j7W!u~Up}Z50UStNps+X(Au#q0<{>#EQ%GXBXVx!7oDg*O4t5%#y74@syFb?yC zQPnv*ifR022V;#`mX^4jMOPCdH~2<%L*1Nrq*^V1iB_#F_}CloD5m;{4F6Ir*u})eDX)4HT4Zi*tV-8R16WA1(Qa>Yc&p(P#P^{4Go< z9v%AL&&W3bRIq@o8F?$xI2k2_NGF2(6^{$Ix%Q(fDx5$w>N7JRJj|O25myasuhg=^ zmJ05Q?Qa9~Q^|#D`)}(trZF%IKmBC`Zin_tq5Z;1VD;a=0>f-vU-#oL3wl`-@2}`_ z6~sMus7v{ku!PElZDquC4ZoPtL(n?>v3PF z)FV=Q73NEw#(V*!#q?fP|50$LhxqDe^5sZxsiZmN*GN#w_}(~evF%lZ zsT-ps;^1j;>gq^krgof?g%*%*!@Lk)Z`+faJ-zM~dMx#c&cV%oMba$dO*(B_o@Fhq z`TFihFvB0RN;}TI%HSROVSzzLmrl=`P`VnR#Xdzj!X`s7z2Ch<3Ixrn%VScj0^1^0 zg06+q%3pH5J387(<;SbAxJ|h=x)Zq>`{Ht!0!s4lhR42Ge9Td8JGc>!bZH1ZEVRxz z4HOdVdCxim`Xa-Z1s`lJT_bcE&3%t?JL?BqX^){u<@PQwRH<(j+4~4DqAuH-Uc#}~ z=;ma`?HU1;iy(W7OF*oiPI}t+F(PYE_khMNu_X-}rf4W^rZ;=vRO6Qim$@Nb*TZ`^4!Q#q7*(L zhbV*Nm>su-NfyObd?J?ec%hV7=YXaSwuPdD2dLxJgBEus-)bZJHD_xb*78y5DI$*wE^VbkN1=rmZ(qSiW9Df ziYyDI-X+c?O0CpgsBhR-WYHZ_$kk4}o-jZmU1BY&r~IK@tRVknv}i)V<%H>070_ke zwlZ@h%NaIQ{zuKl@LEZkw}{~g((Lf5wMCpC1NUc;TK?s?!?U{O6ghZ)Fa-n@eoHvj z4Qvs7IgVG{tDp-a@Jin|TQ&Bg1a|U3iiBf5@-j>hU zfbsmg5$9OQv=G+@g9bIQitrhf!&0<5#!h6H9FFylp0F=kb<8{-^r4%NKk|LOe{0#F z;fZ$$-E-)M_qC*99O{dYb}syPn}<|Sso+^i4+GQAvw)qn@Fu@{4W9B$jri#;E6H*F z?uLfyA($_-K( zYL|T`ASoN=(d|5x*n@Pe$TuE1P#(-==ozmee!WUE_#}&vZ#MCNalH8C!T$~&hm%oGPmo?tjHsE8{uwGp;m|R z8jnzn`G8yAyMZGE+Itgcsa0}FjR&(^N%bKzdId=_kH35=Wqp^_askQbq^zY6I0PV{ z(I@C75H0Yo4KjPt%I3_ZvBBop{tqkiL`@LJ!I8heScyjG-NMeN0bA^9DW5X+lXn)< z2KsOOr2+cyWTQ1S2rdcjFU1?7kh%w55Ym4eIH;+S_&@D25lGAdsb%&_UW*E8{LWUh^bB2{z`l`H_G)g6<@5Et06eY3lo8zm}~y?s3&u zO+`!nuUh}J*iXQ>CPOneGpp@?CLff40u1$FPZS@v-6!XY{ySOFa?EfLtl{ptSJ;H5v%+RpK8q!lO~O%ex}f7zKWOF5}lh1hS^bG6nXkx-Bew zewncUE!Q;B`QaPuG8Clab3%Nbp0ZgJ^!ezw2^5krIb+zcWZxy7N4o*Jq-&+(fzwm| z+;!#v1kln*FHi8DM^cHs;T$W5)k-Xfyp}xROgqh$ z^Kug%;rTFG-0lbvk>ptQfo}}=@py8>y{SBLMsA(7=#{&>K2nSNhP?cwBC!vxW{`XV z#-e!qG2eI{U0ypm4UCP%w8njK-m1G{34_2K>D2Rmuv&z_n5Z>x}a&cAisL4wxu*=sBwJd zp7cEL7-v9x5^rVuBn`ngBaf899#sTx^QN8lIz0JtpO*p4=VoPW7FBZ12{M8dLH;ah zLidc6f2X5cJCVvNkeZw@O!a(c-UmSE8e|?~W;;7G9X+tx@u;it>pvfsh%?Y%i_*yS z3B!3TWB`N>F+_XV#CZ~Db7BxX47DUp=ki*e_I-%5A~Vo!``v~5Jj01VjVV5N zT*I2%YTV$>1w<)DSHSXpdThuGGd8ML>!$w7{G4GGW8b>HAx*uX03XH38OQ?S`sAu| zrO!n3-Gz;(UXj!EB&+Zbqtbgp^S~hax?5uzl)pW7yz1;_dH}!UzlMAmjGe&U;?mCp zJ@lVvF5PISH>XBYkdd$J>m)yisWS~nQ@cMa0I5ig0<&&yzp@RaLItnoU9yZQwHLjC zJ~kL*`1cO4LX7)z(#rC20P#ld1X9-j1OIjH9m%Q)LML#>-N+ivWOx^TMHZqU6FZo3 zywl%(i!y9zE{{Ay{;1n`cy8LFPH`@gQ{TrkE;jNfkCX$p8z>Dd8*Ydl$2F(d&dq-A zJ(mWZ)8w&iKDT?m<0PMkT#y26&-g+OAK3u*X3s>9x>zcf<9e;hn-{24V4z%4vaVnu#c5m2LIC!S9*?B^-OE5IpB83+j$#h2#T zJb3vL^0=9(Kq5bBh%ZEnEW2BZak{xID?CdqQ1`NCm~f6gJb$*SI#f_jBd1L>oS!H9 zm~P%elHr8%BT)~w2&Ei@xx=AlJUpSGBdu^YFgd}jfl=jHXnYb&{tWjniM27#F1!#D z8QtbV2C!j#Y2{L3EX6B&;+a6Yg^rdM4sdUN2E-t~F#A6hGymP|c_%q8BY|f_+Gga+ z|Gum|D3eSoJyz#4Pn0fI@Kq7vrdN_&LqVCIpzSM*U_7LbR@7Tkd=~b+Jw_&joc%2k z4s9C@^-K)0|FzoNc+=+%NgUUH{Nr}RuYx6mR1&k^$J2f6rg40FJ;OS;#XHBJ(^JMf zhDj|Qi&{ehTlr~^r=~iK6`41>uw;Igd3iTXm(QNyInN+QKwABwXXW6}&wY>Pvp81( z$TGp#Xd>iy46Sf&@s8i+z05}cIyUpP$!)7Z31byX!njeKL+{5evO;u(lj^qdV=FUi zz#8utzV#oZC0jgnCHJZ=O8jCCU`8c3)Bu8qx!t*F zQ66{2(^})Vl-1$e9y*6qj%pQt%fffx)mLYLG$)?;g?frvVC2QPFfi{-hvVDHmwvRv zuX78^L=?tHd+!~X%pMrqFulCIodQ0+ARQ>L>Qa3gtN3h<5JPHagfg+)rK&JK{17e|^s zJFNi|^$u+S?O%pBWy*G9i1fOSJY_k*+n~QJV5hTe zx7e%UE~~ub`+=dJxspHqL6~9Ja`NtgSyXIo_^Y2Tswnga5!0}}xOod~8;#MnNAp~t z9rT>zZF79hsm-~@+g)wG`+3C~lOci(_m%6oBh9RJ73TV{)%9Y&9&5&At<)j|LyE68PaOIw zATtOv8-J_$lS2{E%RJ!l@9J`-r_D$j+8@WnH%R)Jk;XlVeDeS%wO|@nLf8=p7D#`o zj_k7!N8t9ujd@CmcYMl<#$EV9oFl$r{g94M<#+1j&$Drz#qC1rKV(&O@>2)vC=OA# zbg?z12M;Y528=_*B+=8SYL4f_!>+RG>lr6i1_VZC2FAtHXtRd^nC7Qgwz5jMaaf}K=XCn--8@bPp~#K>J1@TU z%tPKzo%6>H9r1~=e!gQyq94>fw^?K~;II zqmmV^YV>7a$^Ob0+q;DqmCdb}UvAW5w30>DA4D#{ z)q?Q1K2ReEteKh@EuK7RTDpNBa=n|!b%vP7gqq`eKfZT!)G^-Px9>w-`rYbB=`R~x zSX$tdeI^U+P z%7D-E-`!aL^*A8Q`+vB-0E#)vOfs==4`R*eFGMLfk&iU+;nNq%0h`g;4b5tCr^@mC zp~D-zWPsC9xDgJM-XIOH!W+%kw~3d~Hw+tXMO^o!_Ka-2yoh7KogT7Xc6+;c9PU-J zMt71!@1-4NxGDL?OZU55zU?vEJ{c76=JBBQCZYHVv37JS>E_;Y<)=FSx2fZAuvXV~ zecp7g#=7k2N1I+f6UT$M(e0~WggCo&pH3RSbBhV;Xn7w? z*pgMa@DV25E%}tr7JPIfMEVTddOPF`TTFC8-LOR*ok{@r7}K?NcDzRloP^!ol;2bV zf^_RedgYSwVt>fEl9hp*4(BYx6D$iPx=E?`cz4RsDP+RfY30%3 zW|=$dk&Lr9Uxt9p6SR`fPGT1 z+9u#)GwYCHSR@hm)KAWkP<&1)7k@^nJdl5=_JBr0wNlkv)%6O!b=`$?4QKBmcGkU} z@AD=UlaT&5*C!?m$w<7i<0xkhu92cQuqZ9N>BLt-53Xq*XvU^zz8TL+cGL<$Q+30k z9lN0cknqKp2Kr>FFaB|rk(ESm^5N^iQ2GSidbFk_sNSgs5Z^=^o)FEcE9GwPW%lR? zu%~<9a%G!W*c=BE>7cTjeFK*D%<}REtlH7h3{({5J`(fYs_kCq6_II8mNkhDUsz7u zWxsj>#Jqxxb%}|UJiBZg-Cj2jXF#?>$pu)}Nk#Wj0~{`gR%vjM7j0|BqF&7_2f+`3 zmz>OCKV-vG_5(V4xt|t*cjQ3$TWWihLE37A*zZm}>^o~Hw5RasIOM6cuQG3b>eok^ znq_)-BFCasp8_V1U2k6iMb^NehQeWnNbrtdR>Wa8d-jG+!3lp*?sy-*2Z2BRPO1fy z0$;M(93Zf5f5?u2;{T9SGrasz^&Q+9{|)h5ijX%S1g0*dBOHSXcl3TW?)Nn0;@|eR zOjDBT0jZ6G?Hq8T(Rd|Rfx{AkaEd}=ZBT{F{?7y6(Z+RRUb-YFa)BeJU`5&dtaCEZ z-LaD=kV~WH7qcGQ6;tso2O#u?OV&EYirj;qWvWxrg}PghX#TAz;Mj7fKO%QAm+ zK8UQ-2sfx?9iT0%t<*ASSY!QEWUOi@<1$$b5mjfG&;}yh;sFu2jQDq#pr@bE+JY4ywpc`LvZ;EgFAwxI%FgH(;Rm39# zJd^w8v+DP61@k5YT??YdM`n%>INGbbc}>fogFN88t&i~F<{JATGA+BeKqI~wvA>Nk z7OO{|>do&0s#?7LlP#H7B`_)Hd0n$VWb2PmC#YF=Y_b~rM!`#F z!{E(*hx2Qrrj!d-;v(-}QPKw#uz#g3-(dGVqHNyryR{B7Xgq}J*`DVi@e=>qJ`n%d zK29fQ+v0L}wD3%+gVxFW)EapRsR2N_6_c2T=oAE>d_NsQ;q;889%HpkU9m z#Vz@+3DWz-UHNOI-ce0B`;KL&8X$VlSBn-HJn}odm2*1h*9Femg)+gvKTU2S@ig?? zuOL0&FAJ9yRlKfUot$!)(X*30NRM?aj(%25;s3}+*f9R;3mQQUzxqv8`93$gTQFUM zZkYWjlLt+pWKPFgwggks><1y~cocottwhP`VZ*4=4gkWtir+ zMVd$~KtZc_&(CJ{?LjZEhr{01lOG^jKhQb={mV#I=(bzdf2Z^GsEmj9dEH;5JQ5qH zi*8&rc1aeg9;6z(daEgOCEP}~mrPdx9i$>6zi#>(hgw)-rzo=HRf^%kU2budDo6vJ zTF-7H+z_|02Aa<9PbYvJb6nm60k1xyK?iqsoLE{9$x=uzzQ=}`uYLn%>uX^vd^sOl69ku7cp>5MFufLQq_025b=9tMaEA?`C z;-xqVJz7rW{SJe%WBT7lHoNu<6=fkSNmf@_oq!yi1Tp~YHz2a%Rhd4z&i{Z>MQxr4 z&!aT0gGdIsM@Qffi@B2f$Q#ZU$)6gjx9cusoc|y~oC>G!o;_cTq)zh5kW0$0K5qAV zC2B4za*3gxj}6F}>XZ^n~^TurI zGeI352;3Q9y=AflAlhNilD)F(faYZrMcCyfeX_kU((qZDvo&@LI*<9`$M}crCx0Je z6Ch%(bzowG2sMQCc_=Ze{wk@ekrZmX@XrPL8?Yc76b7}9vRizAsv#@^QXr|h^iCA6 zoq(){B0#mgorvsBQxo3bA~iqi)G>}3qA8VL{B?`KiFp44p9{baa?R*)rs|Y&nMtXw zt1K#uS~-SqZ_nRJGBAFSbHsIsVZdRxZ)dG9s0v+vCMKQ0ATfBcNC^-)LJ!$jeh7c9 z;L%cb>5zK>H}T=b-O(DHH>oHAPuK-zICO$Ob`tr+{9q81Q8)07je!lr>8;92=ks+g zS;{wLa~Ia0C+winEirGAkS+V0t|t>NsMOn_uvZG*f+A`g zpUQw5=sSWUH*;ckLVQgyRXJVm$1kdL8iO}#j*XXhmg?}b^QXLAB~ASoeQzph5-ykw zu$Qm=cBv8En3qqBN-6p;yrljMm+=3^5xxMSe|4FD%s+D7hVS1JuK*!}Kx!pGJxFGi z5t9f4?Cx%T8#CMp+ICb9XRe$Dy&5OBd;Y}K_?XOXb7EPpu6s>!M@y&0&~gDfwz_O$ z0F<97kC$8kU95|fr_IbD-=BS&?1>+-Nj~)O!r%pi8Hga@De3dTE4C;OEvE?eE_) zm~{{~)#}1`HLB4gDFJe92v-W?n5GuImb}p2=oJ zCC{76m46v@9?2H|p>Z6hq6>0UA0|-eK}^-y&w!xI$&pp(etqXrtkelH)GPVi51<01 zqR&`qV{koH!V3Z#q(*>w(AVw7OoxOpioCNrN^RJt*ZbkQIyg&#B^o9Qou2}Akhz}y za69qt9Y2P3h4Wk#>ACGT7bdZQsO*)r44TLGt-C@`DYDPHiJK67p0vUrvIs*&-E2=8 zcsbKeVGi=Jfrl?6vz_5xh@uevD>6CF(Zh7nfhQO#d^JvKa(?H_()ic!CUsf@Z)Jjm z{zEs^fmT=VRLdyr!i3H;a_(6KSfj7~n%Exj>8U#pe=G;QtM|vCknQBJ8G!4Oho!rj z!QZtIm=_FHo{SnM5>F}*>f5_p<9W~uvA`%ti~`p8iT=hpbX^t_jR~-9KA@)RrT|tq01rL`1=R@Nvgj#y&EAUrvu2JkgVA=VHW4^W#usKLY91`!719f^CQtmC}q@ir- ztaa1)+RmDfg}bn?Gk6`SIB(?W?GAs(g{g13pFIa|{%9@mrT3$UKb{WS8yyByH!gi$ z10Oa2Z7(iR6jSeB<<|m8U<>cqnWtzn&PD z-?A_vsh3`;QM{{7(^6a~;q=|}F7H>n)-?p-4_Qye?FQpx%(KTUNULixiGj3y5~Ft( z9FPsPdxiKTSzD%R=&4)z`C2NHVY(~rvHK6o}3P-Q3f zeqRt!H_Fuh`oSj>awv~o9G$5?AF})`jjp+=YR+F-MezVGs;Q*p2+z9Pu3uaN$nob& zi$k&i@&JV1_OU@o6N5`DiFLS6Gmj@RRsXlQD{))C1*OXy$iC8$iZ|FZ?QP0O7h)bj zHv=E#r=Pf|gg>*&-L4{$xg=z3Lew)`XkYFCguJ6YOn_*?jThz??~7|`L(la|57q3@ zA`rua@rjsEwtt83|4A!<@&ENU_%o7Bvz;FKc&Kd5|KDylVuARJ4A-0Ybjebg@9tA& z@-oCNu-VVHHn2602!-D*`Iza-@@>PuQL(()8?ZQZMfSa@jeYHhL4&en$K+(b4}w$WMN z>;&(N6@vrae*4nS>PM?3Z!ul1=6&6X&BbbTe95fllPC^TDYMILe?`+xUzJ`@reWdh zku`laQG5d?Ihs-Q!u%~h!1QCLj|;B+6TgG6H)Fy3N8+Z>CCtx{nu+SL9;X*ZJZY~& zW6%#oY^K>yGkpB|3!j?6RBMWS_VKS+x4H!d=7MN>pckpC0ai++ zyZaq&!=mEhbn;lT=KrU;_Y7-l+uDW^L_{efp!BG85fG)fs7M!(-id7mRi`(+3Q*7%e z-3WwM_^RdBi%mxv`sRYs*IQ0+n{d=!@A)|5mNuj%AA1*5UKbPn-I>y*NfcA^ehxy_ zU9fT00(9pJ@6k3#=f%vUlvYHN=%!SB6FdIV5P{XxW~U^m*GGca%Buc?)#1M8aO%3< zqN$I`8Q^u=cA~wdrlHOcC9x_)NA-n@sIciS#yxitLZeZ*arIS#MuK=eK3Z}7`VaqH zL`%uK>(O-}o7BVHNj)PLd5;CwH?MQe5|BTMwOfY-fiH%JIMBA4u?IjMOt`miIHi`Q zgN_+@R>iSJj)73J$h6S*rrXu+Ev;*#&ZWm?6Z)VT!s^yoiO^1psf&89Xt+fNz+^ox zLzI0Kkkt+V)5dGG^l2BNuoNaVhoy}A>J;StcY{eh3RL=%ZMi|iBNl7g&~TO&zdw?_6LqxeHcpk>L5|;Fa$373~^Q`^~+>{==j}GMCx3Qn=f+<5SGF z3YUV7>-=s$t|wVB%@58Jg5Bx4-}%bt<1&qsbVs)-+kbu`#u43)A`TEI^43#x*Um|c z;FbzkS3&>?F0IWrQe8%l<8w;q#5;@qM9|uEbAz{n+X#HYl1Y&V?#|RWELrAf0-$|P z0F|nII?@z6W6;3~p&g_pC}eM87vV2_d!gp% zPN8HbJ^c$Q#KU@N6o89M;^F1}bLM+rRkviP*#3r1>2_LWq;~`Aye1B@PzjBcJvVrG zC*{W5?FZsfT}-}&+m{H)VdHV~F7`$;ryT5s23q6Oykc! zU;42c)@JjnxN>dyXryjq!50+-NTU zj~h6B1mGu6NVK~AaNfXJvu5q!V{{hpJ{iSqH2vJ(l&XuAn$w*)mFX8T;X-&dMa0eE zAdk436_^MIMW$3Y}o|iig)Yx?q~!#Fq=$7LSF1xY_e*!c?(35kGR?KJp#Wq92Q#|t!33% zgaq$nZ;dW5YDGgSkrZU7`#AbN%Mr5x>aS6hE{Y_inEN&s90!V}>ma0PdASgJCfV_M zw0=*mtc%6k7f|tQ#4n;YL3+=m*Q1q_wTrJlXLsLcq-t|gAkCcaK*USi{|kX{1eOnGm^KfL|=s!0E`kG}|MdqY*V zR*Q2a%RsF%&D%?##c!aN^~+33#%`|ZBcJCczv{6wvmT0A7lLc#wZPB(%BE+sb`)Fwudy~@-TU)<9kKhcP>}zTD`su**GFTRAggTt4dOWY-49;ypv> zs>59UcGvO{jpchEWDSW9>~w>)$GInw5PIG4Q{T!3Qx>pP|E;GuwqBi}gS|Fx39F}@(3qe8Zj&rJY_S7B6RsJzPaSPsh_V}Wa|~+Y9U4cpIAE1R z<<2LW06{8ayd7-VRZUwlzO!I$Of*VLjRrE7Uh;1EO_h~&exFpPl<>MJlZ^POo!s4= z6=5yZIo^lutWKR9iY89S19$Hj1#}8SyH$h`L{CtI^28U;<=xaU^GC*;2PPu7EVKuw znqu-zf0V5|{Bz`8b_ zw}_R|L-Zi;C<|T&yJ#b?K*pm^~E`=_HX#YZ#QvU7%Bl~GsDoV z1OPYon7+l-RL#eYzjwI!&YqO=ohWD1ur6*)2A%!RjrY0^7pA6E-CQ^huQm*+v}eUC zO!aAKDQ`SoVPBg_fUPUawDs}>imW6#IKKscsjvQ`Wh2-~ei1%v<_}#*84?UJ59i9U zM1;`ueq}kf*APufj?i57MA2%Ruv_n`DRS}qTM(i+#Abs82GSu*J20d?P^lZ#%bHBH zwHTfLN{KY^OP{)oa*?gJ^9a*Ws=&%5yCX(3p)`EkUl{+W&O~{^CK@`#a|;d#CO%H%$#UbDT#ji@xde=eE@s8$cS`)}1#{tV1 zen8l&%u4P33LmXiQ$5HU%KV0s7V!XQnyQ!i!J7h;Q_zH2OkKOX_xXfT+)G8G+C z8;ak*b)OI39tBoe#A?7A8YW@%?{r_NVB2ZF5Mp6P=SVu(t0zH}M{_4oH5L6;gbyCa}ql1k?hSPd#)Vq`Th80L1N z&Z(=a@<@BtI3F)$R%umeGXbMVVJ}O4{zPAu3~`*x$?33z<=oCf8nNo2heu1b-o8&? zs}m_Ov`)A(q41ixt>%tjzqXn7$wM54jmNba-p?A-)8>~4G6Mx<^?~HybHUquGp>C6 zdm`QN1X!#`PPE)l8rO*4BNregam)Q>iR_8ww{;x#J^ZzwE*~{{r{6yTv zzNIHB?1F9eqB5W-aL^k#M29wkes6XQoLP-mszgHK8TmOJpUfv7i8wr*u+-JB^F8oJ zQ8%hEoa+U`R#rb!iG!eDKMeGE{_Hc}SdsDODZO}#!0S^SbMAz^dO^HAs_kZ#*+qx@ahO;!^?p1$h_b+NC_!t8b1 zlzStHL%sMnUAz1`sRE>%L|Ckhn&0IUwGD@tbEaVBh`DwBv~MyN?_RMJj`@!CyL%=h zO_?-t?+V4x;cON$FT!9-xwqF}>l_C|cieqgUJAm8us&t z3r(){o6Qy2thXm7jV&~HgdS0ww})GxNwAr;^qZ5;Ov}UsdF@?@aT94O!gCkkH->~&9eM7)H9Kcd%>s2JejXW z_Q~EF15yKxRyx%~$R817`hw*=Egg%v5w8qSF3)TR&mV;p`!^OEFVD%QI1=uz-MP+d zTRsK;O!FCp+q*RHrde&+$d-5&x~h;ZV=ranoN9C}8k=1}voF}1deK_;CQdsCYQLs; zD9~ZAqJQ<=vKWTSHl+ehrdl&~d@WZd$vtY$E9?lZxM8aJ^^VxrWcKHM(sNEfj*8pe zIrPJBSG<|!TldCfled_<%DNBBlHg`gv@-7_BtNmt7h9Tk0&LSFt?S+Z2KgJn__%ZD zgVPC)5v(NyakaJ}a5@2A;Mu-XRXUdri<&S_h4qs3Ks=@USLBhl6r(_H{n)w7fPg27OVJBvf&PtzZF{o*1~aO$W*5wt-B^^1Sw@L69Uo7elfk0 zY?ipPt2h&%;#2f?MYa%APMn{mB1Cq2=m^$}w;g&C-Ohg=W%=QPbuW+BG_Me#S!~0T ze?==8c1A#{y!ON#oAxOX80(G5zp?luzdTup_|5ccz43rNPQ?K6L~B2dgigzfu0AmB zd`m{+w)WQ6N_{*hQtQc?{e=JIrLg2#GZjrjPj(<`LC?`0Idl6qH-t);ar9$rsTHMB zj%Y_(jUgTEiG1HODCh#gO~A=iA!B?=#|iS-22wsOXJ_Zn?T(G=8x|x;0|D^cTgcP^ zSz=Tba>DgEJ{+%KO#v)RzUW^*){z`Erps4Oz1azn*xw3dGGv(Jur-9w@s$tCUcs%H zT{=i%t9{E3X!gCr5HF4`-yl3{Y9EpYXRgM)8AK-W(X&7^zvMyh-acAV5{WNtdRvg_ z?%SN@doIbj`JG$*!x?6dDGfYj^Vde|M>v;xhl}ausLTW>luznRlb_d|KOh0v_~6Lj z;tNZv?Ow7??|R>l!8amGxF!e|WmR&}zw*Qhl`6H9q5x{!glcOd4lK%+RA005Jz9A@ zY>)I|)mxs*evff-;AOvRFK+KgX$8l+ZOHNssrvWIk~fpc%5Sb}q{U=`dr3t%zrz~) zIfZ`$5h2TuWEF(IUHf6_2iF-z(N}!n$;};&MXA~dG;_;;cd#^S!Ap zN2q!&N+_F~7v=td9XrnLMC4%lA~}ms@<;5IXzw!YJ>8FEYXqhrW=+rN*C0f0ibG9z zZO|7c+0rRSQ9k&PPJ(n$U7?ot+guqYz^`5(#2IuR2CmBl8O03=b5ECebh6#9MtcN{ zu-YyKSl_yJp8NDg?i)=kIE|~ec#yez7?)&VFl08Y2f~`~KKnq}-h*Y>n2t|t+Slv6JT)+|Xw#sW-S!EY_?hSUw} z$3G<=tg{uOlzsrr zVf5@llw#?nUZ-iY*OVQ+#3GOvFB^CFWuCVq6gRKrv4u9LuQYn{xtFTk)6!R@$o#$u z8LSN7A~C2M5&k$avpaIwe)~Z7jmP=d0AtD84hdmEmK8(Vpf|%6BP^pzbYDedd`Y$d z$mZL(w-_G#{_-82&i6~kQTLr>nhz32i$&CoTVvJ^Ur#?|EgB-f87-N-nVGkU<7-_d zug<0O$i2AR(e~Y>Z;o%&pC11N4RW=a&m*EzH-GAHj*X^#`U%5 zo$|KUHPT38{Yc%aV(TT~?x!DpMZ2j=7Yw5#aplzX7b~t^nn8jJ3($WWXqt$Oz_wj;@T-EqRIBiSM?v z3*QAa2^9ET*tO*_0u}Q~ak3$Ky_UU)BUFG3VMaR|N@Mmh1Mk=H?vDR06nia6(E)s^ z`V{RQeiF4BGrNkLoU=P&n6DXm`_U=xr0~bYT?qm~lu)^v zz*Lf2Fd4RAe`5Cou2}ui#Q)jY7hxP%!sv66qSEt)gA3+GU>eQMt9nmL?I-KOk3N^5tgvXSo{vQEFz`lO-^=oyOX_-6s9}U*~-*!6Isk_Io z8!lU%DYADOx}|L2bD?nFE5mHd&Yk0wQU7R6GuMBx>3jppmh?CE^g>y0NwXJf9CIT*!Nzs^KIeD7dGiV}WmfTY-xZfE)!V8s^zZ0L*g7peThMX31JSm+%xyuLaNnVnGuYUlZoX)Q2in$4HjA zL?X$L6Z+Q_@1%T_Sg1?syRQlnS%)AA`5c}oX)!zdsriyuMveod1h;Rt5Y`50Ud54j zgPzdmj&9W#49C|fTK5Wca=y8l`vrNPFC!U_i_iy_1ZrqV=%GONf+|ReisCLf`G#zg zHiy3mrX+uX)yf!*kr>%2J?ay9#rg$L{-vldS-jA|e>2p$TxQk~car;s2~2Hs-&9N- zvGqm;Jjc#Kc)#q=fs0vy(_Mf+9Y*k3{2~$<&HN6>bn@fkOmcV%-?DuYef%A{R8PN_ zSyrgLs?cQZXzD@Fea^M(69QWN% z2eaS)ItQt~zU-{$E@)lXI2v4HWLxL6Rf~*Q`Ur$j4%ly;Fdai4;Ns>}uh^_Pi>RuS zmz_)+*N%!s)(6%^wod7H%ado)huG2-)>hu``?#MQPT(WPtj`}NQw`=RfftQksj=ZpKtWqCbq zpG`s+tS-@R_9A}~NiLPC!p7H&%#)M*EAiSGzr^uAnyU z(v~cA!P zM1F`?`Gn#t$OKw{d?q0f+szb|B_LUmAAfv8Y1ul=>UzK2vg zo9;6i>kPo1`gcU3&&at2XEKtm{4ENIEK8V*5s}@kZ;>qNrVR8ipGSYep4ab7rSm6J zqZrySBYD?-`RbmH-C-tH$Qyp(eQcHO$HGJZIw^c0OkUMxZ+g+w(t24ja(K(t?PmP( z6>lbM#?oqOQ}ozZf{50{%%_YU2IFp*r5^B{TJTRN@|3CB#gu%>TQdtXVH_sYT7{ z2RwwOrfL}J6<5LdLhi_3q&S1n!xa3zctP-raVrB@*j?y4&|8V^&mA!}J5c>Rk#Lum zZPln75u7g@a>%NyORkcqP_6wiHZptBpI&j!RC-ajgB4uTmz)B_q z4kobTT)vDh3G-d4s9R92jXKIYu719GmoI!r)j>T~poq*C;Aj0sv@2={!u}!x z6Cy+oo1GvexHl{9Ol8=n)L%pjOm)mQ6s4s5|s_g!?_uQ;a39U@#$^r#T*DF7y?^RE5{f;s81sb8IXFehEJ$GRX8f zw$763s)mlUYm%+9c`W%Q4d%ARf^XSMcuK{(QuQ}s5rZ(3OS}TldrydBivrw!AksUT5l*R z@Y=QkpUM$h*tFlHsiG0@U2CHKG{Ehr^eDxy5Z&BXN{16uLv*&*MORgQ#CJr_D~nd$ zRoNzET-+_u$ma3YvXS|&Rvfhpjf7s=zD~WMtOFgA^3*=!G&jXR#DwgDkhomEXWk+8 zuAtaxzSJyBiL7+`0f{88+J?F&zp+H^DY3(x_n!zkg@LO?*%<}jM6N}}f5_f=@=(D^ z6{ddTp+z)xaUnu)CT_0z>c*rxJZ)XfcA8Df9Wdv9H1N^-M$myPrYenOozEhh>z;hu z$t-9)2b!$#B4(2;YpufHxDT&IU32sUfS_-qi951t0661~{g}`VP1wdXOR<3*#Ksq(5{bP( z-+v4+?=y^GTwo{Qxm0`%lnQtzWIzUBsln(tv*y$orax$ZmKA5~z^!eXg-5Gr@}E!s z00jswvyZmXu=M`5{>wt>16f8UR!sIJv19! z&=@als}iFiFxOX(I8^N3f&Y9$mQJ<=Hi2imgrS)i_+*FD3aEEPHW>i8+WKjhRO~$G zz+RDNCuXe5y14@Mt|ZymbY#;NS6_54Hx9TgP=2XCI<-aPqNna+%?Yz@b)K_;;5WbA zk*B_yyWBH5x*1hW*<7CBR(Md|Y-Ebm^ure@q)E^#jwj0E`;i)iH=Y0jxIkKFzE|)o z;*O+Vh;7wqnM=UEzUgteR_E|&8VivmRZyx)dEQT~q=njJwQhMjJ^y$`zQl5KYei$|%YlP!P@n5RA>qHitz(PQ*iA!XAJa-!c7+qv;Y1 zi{EiA25Uv+WIwla4=w1wRC6ltY?Rp2e9krtNnoiC?8g{Y$iZ8bK-nG=bWVCn3a@y# z;mpHeOZdg9pFbe$3HIL9A}=&?^!*zqBZr$6JY7S+T9K>O*B<)=i(*t$*p%{@Oq)Vo z%euJD1>Zuillz|EDUwvDxi;M|-%kf47O_RD&463@O7TN>d1b(rl_I8@I`Fx)jF(M5 zO4RCEK_+JykYrXk*<<#d`|I&+K!f&t{e6#;)kJr_`5?v@n$=FL_sC0J-AXlaBN%Q1 zE%eG|)_WSbIGYkZV)2v5$xK=@k|76OJ7#8fCHythpLUg{ZVIUsSH)$s+IG=>8hu|H zDpEKpTwj55Ea9JuE^mL;Qyf)uLl0Qd!%4apHE1p_Q6L;jI2z);-5>ZF?=y;EDT_1> z4BKri7^#5d5{N{p4};-XI_Wn)x8b@d%h|9S)W_mUbVh5pvm9I(`xTsLMSiE^S6L{v!IC zr9o|{aVYHfuqmOGK!3oU#EsvFo~)w0%Ax%Vz=RWa*{I%K%2fKc^vhQ6o@x(t3smmC@UFiFDr< zJbGhJ8OustjjGIySV_I}J}f_EDRQCz;`6te+5B951LCA|5u*uV^QXpb)sc4T25QjP zVT~C9FN0PXJ9Cuq8^U_2p>8L?h%S2u4H=?1cDJ`UW zai87Pe6;Fh+Q?aM5T3&~%;q2cq_Pv!GX=y=r5Dw4IAosh-4+L#I)@%8wE++KKsSnWUZ9AI2p`uotd9B;&+uQ)egqFmb5@|*(?Aduh zyb-V*bWd+^AkL6^u>f2Sh~fR6zkl&WXJzM9-njO^g8Kd)rtl9)18GLY;1ggY>zrx? z$}(brcp;9SVk`ljI@8Z|a&0-ktJpAi+CA=cBL)Y3*)P-E_SW#F z3xIa!K+HtSTDe9e=^eDC+op4X4L9DMoWU&TxYtvYj3!spC zh#a07EqFi`ciLPaSFP3b=U8=p$sL00cr_I{7!qdtIoA{gab{b@!mXuum zRNZ_1q7n$Xk><1m;;PzgTa8Z$bdtk#%6DbHo206A8p7c$b_uV7GFi|UG_qYM6h7UV zpS^Lq2TwYUS<}5(D@7yWoO$a+%|~gZWhOMpX<&qy4;d?xAQ~l4QFQlVi58)&=+zS| zPHLW+3}il)sV3b@ZziAb{=KZ2a>=)P=kLWtKV0Woes4$XvJ8g#Uy!B3Fd}-HPj2rg zR=*mo_Us?3u6*6m)QnLKb&%Gd?=I##3FPU~TKtd&atl3LLmY`2pag|kEdc_LOrfbs z*-ln?I$N8IS>Ls4B>Yab;`?`*U3|qb!`s6j)3DhG7O)KoAZ8(jxup?G;3fCobX7ed z_hP%h#1_uOmf4)w|C(=8i8E?pMk38EmX}Ua^3&V%FRu9U?JaIV6bSub8l#1qbG_z% zs7E3D<1D-1B&;j8hJ9YR(}x&Lo3hfa45s`d0>~*cYN7%%Vmh1viBlk1Zur0d#?`2o0tzmjXbz^hy`=r7pU@2x+gZ!Hpxj z+7fZ;!b1+XVzr}$C(D1MR#!LOFk8%Uh|I51jS1ei<867g<#Q-r1 zMXS5*xV1&L^ONX6vkM$TIr+NGGA7l!OPnp|Gxyj_-*D?Ti<922qVZhB+_IP9Y1ra! zk*Ps(Bt6%mq+z8GkLP_d*|0rbMz?v?#rxY^r=;c!u@!Dv2O>Hd)q>r{vt5U#7NAW* z+=v8M0t8zDEYtLazZ$?~h8HTF9f5SDsw))Q)hR)M_;5_P;%Gd@m{bY=0lNBaHCKMo zWLP4>;L($E=q%qSfAO45Ua6bPS(TE44>CfGFv*aE;6O$|L3c(&+41EM+4}3;*b+W1 zT>ql!u4`>Tdj z$){*_)!Y-4b5S^k(nM~UvDXaaqGxs_?2HFh=}ZU6KjhNhneUHm9}N0B_7GZ88C|3L zBW~xI{5meQS@T$5?RG;!&)3)Wb+Tfa3?*?LY{VF{KsR=WQp0kEP8w4MF}b_IvZFb@ zrD%)nQ4@x%+A(`A=6Z^Ihf|x~bke{%Q!14)i6hfZcgRIwpfivwG@fSXwI>UzzwTjh z5^mI$`En+t(FAudV7eA&HQ#t)OnFG#{#sXLXJIu)=#U%H-0SJKURP1OIhd8-#!Hk< zjC75Z+KN4jrJhP(In7)%XqS*;R~DgnHyK23o^!hgfWYpwZ0#89%pTgbR%d&3{7K{S z!?Mu!8ZXq=+@D(4QBKb=Xn@KVQG0ts8;0NxvV_S`tb5Ugn{t)q`jvz3-8@ue!7si?5W7%r=NGw>kY}7;q}l|fAuLo zdWBTP(pQ(T#4KbMj&b?Y*=lyfK|>>yN%v&iG;`^#Sy9RtEC`Jb#c;_~R{reA$uE!Mu@r>r-w`@{^jR4TJbf?M@+zIBuSQ zO^vR9wENB8IQr42xgC++zU zj^d&?L`c`oAvGch)FTJk?NfC+y&c`((9MSvKm9#RwkJFt`9~M}JOLp1`&e#@Tnv5h zZD)8})VscWe3>N>F=NM)Cu41euYFuDz(! zgG-hDoLi?ShCS zpLaJgYaQgrddTOD!lx-S+l46d;8;F1>{>6LGp%p^&Pu31^C++cfix{OzInkU}R zM3`7Mu0Fb}2b1+q$qabWpW|TN>uY?sPAgt*o|0!B)$6wzLE6DAtKUiCFhLl6zUH|&5MT@# zGtMEP%tR_KRS&Eof}(PiDD0v1;-|M+$zAz%pBy(Z86E9uoaUR0GnIy9Y3NlpP#)id zub9fFo+x`VZBkcJ%4x{pCmrUXv*(8;wM{Rtgv+>a7gA{LnTRBIIEGf^c73%iLs74R zocvW=KL74^0`u@^VZb$DllXX_#!R7eUqrf?YNHmaIaE~XLw*OVYVd07C4;BsgYT`Y zcCc#n+r)X^pP}+YX%#_ca*sa#5uL9swfl<3p+`zj51b4;s!4}Y(1Ase%ZOtw@2(;3m_e*_l8_m zS)Pdab7eBvjyX?}?9@DJ23xNjb&*|S15iWdyO+s*-369W<>-2i%B&|SmtdGOE2kT$ zTyNPDAz1s|Bb?YekBaetciukb1Ev?*&x1MS?yUq>d@* z_in{GZ2nxqydp4!` zk}FoZi1L-Puv;CYMb4&OHp$5boZZ*bdMgZI?F<$#i;FBk;lxm*N(K8wJ)V<`n6bch zyQI;ko1TiTCmp2={IXPz>f)=gO&hwgk@C=cj- zKsKNkPCfmxZW``4<}bB+V7oSd!duDc?A~>E*Bq4E1HFkY1!2S@L{hJt79ID_ekhAu zdJt@{39V~tTH&7ge5|Dxzxs%oR&pq1Q-w#kd3q6B91%?SRQ};Ay6drUEaK zd8IJ;$~xc~y)JnzT_pbF(HpBJ=wUn>N@Ms=)>czFYu`f4X4Q`oy}0nxpRY!Z+ZZOL zrW?AQBFkRe`3xLVHkrP)W)=q##NR=;AHHjFcqvm*ZnQR(-QM0Iu9kcAA(q1xZ?}G} z^g8{;NA6+k^DDfaGtBZ79wLk-+Ijco8FL0m0^2z`d6olc>D{|E5xoIjp7rT6vMKM? zps+-TOX>ovYTTJp7qbmB^uwcDZ)F#yQiq=0`FN5ewAcW<=@oh^c@2LMyO4CA_p^@nAb=}aX ziYl9dy>d=Al;0OTTfN!d_=`m3=N5=WDj=;mt6<|b=p#l^)XHfhVEg+LP@d4yuV1{Q z4k^N+ltX&R6!DrOr z-4wP@{Sl@10{i0;l95>lu~GTbFR3@4Izg;VCmuq{-yUBqv5?WSZiRmvV=wT%i8d=R zjEcAa>9|-C-+AnM%2zJF+8oAG-qI9t1Qjl*s;ngLvSzaxok<1)1=(K7y9FE7{5PMm*X4S>GQH?gwjk;T)9fHeX|ON7cZ1VW z_)&>nO02{U=R_K1TB^cZ@7ec?;}`iq#=S{cjX*qgQa;SfQL60)==4yqv`a$DFr%1@ z)EIBgQP`E};SPZgY1k9*0O+Ns`Ew{+_EeA&eA=^66O0{fOFh0K;t!5WrO5=`xo;vrL94CK0n)L2 z0W;RU0!jx|mfj{{%<5o0L;9T@0)e@X8I3_r70j>h_lgPhW3}h zfjlh~6!TpJXX6NLS4DxhCNu~VW^$Ez%cv*VTQI*ni2!WZJRz|HepYfY3x~xpJy|r30>3B=K29%i!CT=%Uf(5f*FcU}D1bJk zrIlQb7y;T#W#b`fSNhKXUSt1+v~JN|nFP#$zsiH6q+}P}#{NkWSj zUdG&R`T>3OXKr7(hhZib*^HT9xzBCs(iRXlHWzs^&an9rnh(g=6s+4B(k!YkFl4o} z9*>5+4J@+Fq7+kUtnbHTsx3hu=sv|x0nsq4p9mq-rc|^~$HZH5l^i`K&AF<(Z`q3W!4Mp*viB#;@U|PzWhuH&>uuVzQD;19qf(- zE4f)8$G#gNT<+g6&54`Wpte>4m%FMm>#?#vCq469$C>PQwD{g$9{k$7?c1FWu#9QE zQ%ROmsG$KJIlh+8>ufRxApHBkh^T;h|L1bGg<|Cr17`<&g3j@E>C{&G&BrVG+#722 zUE0^RjIG_|E??ZqH&!3AclDE%V&&@NlQJM|Ith>sAE&zL={BoKWQlZaPmd25As=bV z^OKUxOVLf7r)wB4ljA6UmuV&YwX`LDN;z1_AavO_-uOo%NA>-S#g}CSjANM|ScDHp zX`m{%ko7*kcTKm!VMm2Oh$|yO%XiDqw zA?$M08+dxbp`Ls7TKT~Q^ZR`Sr_(VE5iwZ6*aN}eM_Xno*P>4gga|zMX@JhERN{Ox zCm15&>>wb*%>Ls}hCC>k0sunj=*1LjN!^#wdQ+_kGb8l%+;i=xDfH&=%?A~f5p?@! zd@o}Bs?^GccE}uWFWP{E&q3r-=G6uT;rVf`+J4mUOJx~ws7_gr(2^-CG-*6^F>91` zCMN#}3&dv3z0Ga!*-L_X)3>9O-rqlK&jd0lghgQ;{o5F<0bP1SyC>$)ia z=_~`2mC_{p$Wy*cJM++BLFIeaciS{PIXugNdB-QcLRPlC-npg0)H_ZJe5)Jqz?mzb z;%IGwU=g-&?k?zXK;*sCiHr@^>?#7gDTh+h1bo%>8SN-bjmw&BlnQ(k+@~p)B&W=6 zWkUN2J@8?PqH%vB&p_o}H-~!UX_ zPp*p-p6N3BQ{ZOq@2+Wf5tgPPBOzMF%BSf*yd@FyLaL^5z8skEzleH>wf9rlftjF= z8oIFa@>pxN;_5f(fo-Xs#!+=1uL1UVCy*d~Rc)fvkj)j>vW>k=11&tDB ziKOqdQTAo#_xaHe0s~T~np``|RMo%;p1!wC%A!A%FiR#);}A4qGIrhrvDUwOvAAA? z*i*d|WQkt>ba5L^2F4xOiA9D!w*Kt0-XE)Jq|j#D=SOE*S=7L}z^@8=Hh?8>S=Ada zJ6fd2wl^jhXKYmtCf8ThiH|rh}s30!=I7XxYzfXbyG z%6V^{Y#~U%h`e-|ho71#HOm+1K(tt24lG$9YZ6aQ1ZHrBPOFKIhe4eLOi2VkzfneA z^m@}=5l{FugnFtv;&gx3a~(#_gcHEPAj{`j1$C9>2RF`HcFZdOMwNEMq1^ zMr^=;g&yb0__uP`V&DEtqwb-ysfi_+N4xXQ{v3`4u!M-=@pEd(4gHN*nQQHjCpeQ_^&pu{gBgh&ialf6oDJYt z{+s21X@BfWy=~%eXAF%5q$o~#eZ=7tsRZ`_B;DQ zxr95aq!VA(KNzAg;jnkCH3miH4pCG<%DIbVbIU6zLkH zPb)T^{3J1I9NuF#fm7N~gv1PnPvr$IJGUC5#GH>&D>HR_Hm|%}fBQuYy4lT1@X;ZhaFj*psrW^d>Wa_z5oH@^$+7NrgN#=-@3rt!y?+Tz z)HW0=o^NUPXnU1pp4{#yc*1)IPZO;G?nuRD>jP(M+bA=5N*#PNN$_X^d|&ZEEfJ3a zeasyHW;Vjo*{{5(uYDS4@keRG_i~^jH+(N!pWMN>rF`(Eb-=_GLsxT$?E}dYKO}y#j;K*;}ax%+FCXf+usDz|NOH7WZ}@m5-V8r<+B0$ijHPaOCmSH`xG0jIVTR z=j+bZnqma+2~RliNI%rE=AHDiL%$U0qKdB*3|3B;xk~mF`!!Z1?yfSIxVdMpwX5F<2p0QsF{r?a8{j>Z(PEBn7nv{Z3o~&|LvkwRDkRGka6~6{%1q}kM{j})i&1Wkie7u-7w0G" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Extract data into separate lists\n", - "threads = [d['thread'] for d in datas]\n", - "times = [d['time'] for d in datas]\n", - "usages = [d['usage'] for d in datas]\n", - "\n", - "# Create figure and axis\n", - "fig, ax = plt.subplots()\n", - "\n", - "# Plot time vs thread\n", - "ax.plot(threads, times, label='Time')\n", - "ax.set_xlabel('Thread')\n", - "ax.set_ylabel('Time')\n", - "\n", - "# Plot usage vs thread\n", - "ax2 = ax.twinx()\n", - "ax2.plot(threads, usages, label='Usage', color='red')\n", - "ax2.set_ylabel('Usage (%)')\n", - "\n", - "# Set title and legend\n", - "ax.set_title('Time and Usage per Thread')\n", - "ax.legend(loc='upper left')\n", - "ax2.legend(loc='upper right')\n", - "\n", - "# Show plot\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "datas = [\n", - " {'thread': 1, 'time': 790,},\n", - " {'thread': 2, 'time': 446,},\n", - " {'thread': 3, 'time': 326,},\n", - " {'thread': 4, 'time': 255,},\n", - " {'thread': 6, 'time': 195,},\n", - " {'thread': 8, 'time': 155,},\n", - " {'thread': 12, 'time': 136,},\n", - " {'thread': 16, 'time': 116,},\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "

" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Extract data into separate lists\n", - "threads = [d['thread'] for d in datas]\n", - "times = [d['time'] for d in datas]\n", - "\n", - "# Create figure and axis\n", - "fig, ax = plt.subplots()\n", - "\n", - "# Plot time vs thread\n", - "ax.plot(threads, times, label='Time')\n", - "ax.set_xlabel('Thread')\n", - "ax.set_ylabel('Time')\n", - "\n", - "# Set title and legend\n", - "ax.set_title('Time per Thread')\n", - "ax.legend(loc='upper left')\n", - "\n", - "# Show plot\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/python/dummy_data.py b/python/dummy_data.py deleted file mode 100644 index 2892eaa..0000000 --- a/python/dummy_data.py +++ /dev/null @@ -1,58 +0,0 @@ -import subprocess -from faker import Faker -import random -from tqdm import tqdm - -fake = Faker() - -def random_array(): - length = random.randint(-1, 10) - scores = [random.randint(-1, 100) for _ in range(length)] - return f"[{' '.join(map(str, scores))}]" - -def run(process, command): - """Sends a command to the Zig process and returns the output.""" - process.stdin.write('run "' + command + '"\n') - process.stdin.flush() - - output = "" - char = process.stdout.read(1) # Read one character - while char: - if char == "\x03": # Check for ETX - break - output += char - char = process.stdout.read(1) - - return output.strip() - -# Start the Zig binary process once - - -for _ in tqdm(range(1000)): - process = subprocess.Popen( - ["zig-out/bin/ZipponDB"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True # For easier string handling - ) - for _ in range(1000): - query = "ADD User (" - query += f"name = '{fake.name()}'," - query += f"age = {random.randint(0, 100)}," - query += f"email = '{fake.email()}'," - query += f"scores={random_array()}," - query += f"friends = []," - query += f"bday={fake.date(pattern='%Y/%m/%d')}," - query += f"last_order={fake.date_time().strftime('%Y/%m/%d-%H:%M:%S.%f')}," - query += f"a_time={fake.date_time().strftime('%H:%M:%S.%f')}" - query += f")" - - run(process, query) - # Ensure we always close the process, even if an error occurs - process.stdin.write("quit\n") - process.stdin.flush() - process.terminate() - process.wait() - -