From 6c1d9c456d0d2791dbe4520ac198aacf322970b5 Mon Sep 17 00:00:00 2001 From: marcelb Date: Wed, 23 Aug 2023 18:34:51 +0200 Subject: [PATCH] Add commands: limit, insertinto, update, deletefrom. Fix all update commands channel --- lib/mysql.hpp | 9 ++++----- src/mysql.cpp | 28 ++++++++++++++++++++++++++++ test/test.cpp | 21 +++++++++++++++------ test/test.o | Bin 103104 -> 104544 bytes 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/lib/mysql.hpp b/lib/mysql.hpp index 1ca1392..584ed64 100644 --- a/lib/mysql.hpp +++ b/lib/mysql.hpp @@ -42,16 +42,15 @@ class sqlQA { sqlQA& select(const string _select = "*"); sqlQA& from(const string _tablename); sqlQA& where(const string _condition); - // sqlQA& limit(); - // sqlQA& insertInTo(string _tablename, string _columns); - // sqlQA& values(); // proizvoljan broj argumenata + sqlQA& limit(const uint _limit); + sqlQA& insertInTo(const string _tablename, const string _columns = ""); + sqlQA& values(const string _values); sqlQA& update(const string _tablename); sqlQA& set(const string _column_value_pairs); - // sqlQA& deleteFrom(); + sqlQA& deleteFrom(const string _table); // answer methods - private: void parse_columns(const string _cloumns); }; diff --git a/src/mysql.cpp b/src/mysql.cpp index 0dc1d93..04d4e19 100644 --- a/src/mysql.cpp +++ b/src/mysql.cpp @@ -20,6 +20,28 @@ sqlQA& sqlQA::where(const string _condition) { return *this; } +sqlQA& sqlQA::limit(const uint _limit) { + cmd += "LIMIT " + to_string(_limit) + " "; + return *this; +} + +sqlQA& sqlQA::insertInTo(const string _tablename, const string _columns) { + isUpdate = true; + cmd += "INSERT INTO " + _tablename; + if (_columns.empty()) { + cmd += " "; + } + else { + cmd += " (" + _columns + ") "; + } + return *this; +} + +sqlQA& sqlQA::values(const string _values) { + cmd += "VALUES (" + _values + ") "; + return *this; +} + sqlQA& sqlQA::update(const string _table) { isUpdate = true; cmd += "UPDATE " + _table + " "; @@ -31,6 +53,12 @@ sqlQA& sqlQA::set(const string _column_value_pairs) { return *this; } +sqlQA& sqlQA::deleteFrom(const string _table) { + isUpdate = true; + cmd += "DELETE FROM " + _table + " "; + return *this; +} + void sqlQA::parse_columns(const string _columns) { istringstream iss(_columns); diff --git a/test/test.cpp b/test/test.cpp index 435ca05..283e24b 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -12,7 +12,7 @@ int main() { sqlQA test_qa; // id,user_id,zone_id,domain,record_type,auth_key,last_update,enabled - // test_qa.select().from("records").where("enabled = 1"); + // test_qa.select().from("records").where("enabled = 0").limit(2); // mydb.exec(test_qa); // for (auto i : test_qa.result) { @@ -22,13 +22,22 @@ int main() { // } - test_qa.update("records").set("enabled = 1").where("domain = 'bitelex.test'"); + // test_qa.update("records").set("enabled = 1").where("domain = 'bitelex.test'"); + // mydb.exec(test_qa); + // if (test_qa.executed) { + // cout << "Num rows affect " << test_qa.updateCatch << endl; + // } + + // cout << "Num rows " << test_qa.num_rows << " num columns " << test_qa.num_columns << " executed " << test_qa.executed << endl; + + + // test_qa.insertInTo("records", "id,user_id,zone_id,domain,record_type,auth_key,last_update,enabled").values("'5',2,2,'www.bitelex.test','AAAA','jebiga',NULL,1"); + test_qa.deleteFrom("records").where("record_type = AAAA"); + // test_qa.update("records").set("enabled = 0").where("record_type = 'AAAA'"); + cout << test_qa.cmd << endl; mydb.exec(test_qa); - if (test_qa.executed) { - cout << "Num rows affect " << test_qa.updateCatch << endl; - } + cout << "Num rows " << test_qa.num_rows << " num columns " << test_qa.num_columns << " catch " << test_qa.updateCatch << " executed " << test_qa.executed << endl; - cout << "Num rows " << test_qa.num_rows << " num columns " << test_qa.num_columns << " executed " << test_qa.executed << endl; } diff --git a/test/test.o b/test/test.o index b7575eb74bcbba7f3cf281a75914148ea8f91e18..f6f49678d30c1c1d5782e452e9d615384be374d0 100755 GIT binary patch delta 28461 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 >Lb`zmApF%( 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 UIUl;Dcr40Vbz$+EE?dr{O;@fKwj;D&z< zKZN1N`iQ@78Rk zTSvnPgz3X}X?|)bv8>)Lh!r&oVhtWaY7y(?hWHukW0 z4<6Au=-P0PKeAmOL9B&GM|B{NErHrJ+|a$KM&9~3o{Jq+gVmv5_jzOrukkJSo5t;? z@H{=sBWq7QD{B&@)^dv=9^d;-6{RI*tMLGgVoOZTL9B(RF}VFy6mc~dpfmtmD85P^ z8}|QbPhv8Nx(hsw?IQb$N*!h0{!)9XuONC$KA7S%P4g6Wf1f7kPOzqH=fBjN10A&$ z|1>vK5~Y0@{P-wgN_-=wO>{v(_^UU_Ddx>k%LsxTDo*Gb+9zITG2O@&}T(CmupBsL<0X3x&yBQI# zx-hTiLs)wAXp^d_O7~_8U;L41Dy7ZqO%%mLc?KL^DrzQ5eFDmRR<6P3;Hf+>IsYkB zyl4$hkmXlGrZlGgW4f(=BPB}e$lt85cEEoVWwzi<%Ighgtm4MX5@|G^m)(^@S$>^Y zFeo3&@;5uCVSjK{cFJ;2yH)NAg4{35vv_??sY019efxqDzjpSJ0#Ce2QFO)91fg)3 zBck(7rU>5KiO-gfBAxgIS&nkz^?4TS$kXWR6En$C0luzSG@RkYD;wDpEn-Z1JCSl` z>G7sX^LU9g;bbnjKfNCDUGPtC`$~#~eFC=>KXiX&k7=pfvuiC{tIsg6md4;P2kUcp zMS<=h(X2PL&pT)>4%&X~MQHmwXd4`~L)iM3#!hV>f%Ruzt&MCe*aQbQko5*z z3pT}p4Pq~X^=$2_X0T3>HnsK)4tHoR+rc)1orcBq)}CJT9oR_r7ua=R3mn*%tV0_k zs|H)_z_wyzz&=E4J6Q`zMQuF2q8wVQV8g&32m81KTf-KBZD`{e+`)mZbMPC(!rLO> zs8{d6#i+NaoQ)LDl*^Bvd$>@U=j zw+~*kz(JeDIuDv? zv4dPqkcRBXme3qa@4w9=9-y4+R5t8;RR34mqvhY6%D0`$zc`hDawwaq!EYT1DxY>L zA9E^y?o|HFsl3gp{IOGcy}jIs_jq+#$q#X(U06b>lb9^vi2MP=oc z$5WFQ_3j6?l9c;Pj%QL{?^jW<{P4hPwM?>Ft(Ast?8zqvn2dj0tx5T-n{!w)pM#fg zCRIC=lv`yf^`I7(M34eS%U|4_7xR~72=nWcZRSgbdAKy+C(L;B8B}2cKc`#7T2@$w6b6x6xSoDPye8xmgr8-aVMfRXmf>D52;*edFaqi z6I#80>x6c`jAzIn?5mz(rk}Cg(SYuv_#sb%?3Il2^dwsn5^xYfPK83`H1|8o-k1Qg zIpUDdRN+eIGeLBCncdZIxVa{oWa@G&lX8Ey{Lkiu4;tM12q$t3GlY}jb|<^Yi5xBA z!|Lb2R9R9Qcmj2Q3%Ea90y~?8TF=o$q2}E~>;6KkCnr$^GoMGXBob3CNpwCw5^H(y zk~%0BSLF1;G(SF((oqSipoAn$FB*;9!+A?;VMU>SZ&~udYO*Hf1q5;vp2mrPQn-fq zY}JR$>Ra^cL16ZHx?PyfuDQ)F-EKEZ*k#DDo9(R-PPQ%cP{o{ae%Bs@Y-_j-c0HVfT6m zL>>IyYQ5QrHbyZ;^yz$6xK5yiB1L8v)5kdKkRUT8ne9|pAF859!y4#hrVscmGDB=| z|0?^SPf&L+GW3wK49q=?uIaX&Ve6#QL;IfH=@SzF5J__~h?HS&`0XDmecDw1!91Sq zpp`bT9#2M?-iDz=I^7YDm?#%^iiy(ge_-+gUgJeR0!PI(oG+Vt9*MPN!|M8VTGFC( zvD~fU&kS-x^X?t#?iw|a7Z4@gbw?szfj>(uIoJ#b_F>T*_#cj?7H{Zp21unvV_peH zpR%^(ohNe#+*-DQq-EL7uB-s|SX-{qNURZCh z{VHU(Yi=Ox-2ZjgF84%T)s>y<-_w|cVp8rGXsC=jM|Y5)E$qK6JaJUu3#7|Sq{;8f zCx4E?@@ze8vB;l2Il!xAd*VH{ar2Rsl`2bHw(05k(Ghpa+hJ5fGWi%UzfC?;>l~;* z$cS51S^m0370`U@aZoih#JOKu%)~xgX%g$16yEVIt{~@Cmhw9osblz|kLA0N?_B>me}#F3v`fesZ( zD%};8xJ8wv4XL53Oc<$xD;BlAR&u}m20jOVxpn@KVzg+|H8E9|l@U;pU-B=ac$zmy ztyfu2{X$K{C*(t{W@y_;GcjUn*Iu*bN{{9BU)aS|Ki^4qqs=g~d~}t?rgmUcp79;; zhom_~SuhOki(|%2JjyvlnPb@sh-n6#qd zUl6UO?g~$WX@u`^%QLpd%kfz2(Cb5X%~urGqm92U8sv>PacJCn$=3Mymw4lcFWDMz zM2&0Ic=zEUcK28K0Sdz`CdKukwvhg$kREM#7rB%3t*elWX->4WH;lKFH1xMF+8XYJ zR9V_zUNy|0H9XgI^cy^2aiT-jTX1uoZjedhlvfTBve%sn%?9iBabZnnDn_gBkK3219en0pWlhZQK+0=L(A#6owRx0NsDd- zCFS`hsn|QJER7N5;)-TVJb0tF*k9tF#Mu{CFH=TXMq0}ry`XTsf%CRt(dy9(t*L^T z8lxauQZKUoX#+Eehq>AX_LI zbZpKuJoPRyq}x?!(=|nywDAwjJ*o%vC!fkcTaG}LoO}6Ze4_0LAa=+1etKlIMZzjk z>t?9#3OBzcb!_nHu;I_cn8&uLf)C!)_A(#b?)Gv#CB7|{#T=QAo)w_(BR9_HFR*>1 zdo*pp>l~;s(p8rFpH`(uX>00Obb9>bQNB>{B}>EA*NOw2i25#SR3?^+nTA>`eOP{a zthUXE9ZC=K=uSBX+p(5iOn+?X95ZF8%JMajF2Ii$`OPYW(oMOB_E&G@zZq&?f8J`l zCs_Wr_uvRb%fVVUe9V*KBVk;%BnO5VHKlUN%aGLT=V%CL-Dlg!JQemXERyn;WI=(c znufs9J>ICvn|X~5(k6Sewqv7XgUOC7t1MnZuAp#K$ilD94cPU~*n+VGI~O-o6md4C zq0aqAcd+!IJa?AejOXRSd6Ac2e_#>g+MD9|1h29zCps_SG@nR3#1M2fk9RLWMa^AJ z{hU(ajRPS z=45a)HfvIs5xcT$#T(#w(D%H-U;mWSkvasqn3 zr~~^dOHO0fFsX%>+LVP(9;5y4#pX*G~pX`@R5N|_|_rYl)g{<*gAEE@7cD2{+3Mh40m{b z$uxbb&2%3e)BNHatgXg}R0Esjw6nCw)+ME)L&efk+=Y05dw=!FPHU?^nOEl%b*h7Z zI1H5z;VCGYw1rqja+dRFT9M8-+}OPr0z)R^k^RxfRvM%#%V0OwA}cVY z3#nWFvv#N(86&x-Pz^ELH|hcvT>ZOCeG+LcF1z+r+kc>#lXkq^C@k}W1x zWkLpRR{BH?#U~AxcvQIl>0dT~?qr@za|cP`4hEo4va$1DTCHLQ_#j!f+*Kx-kd5YK zmuEP>j3S|d>GqawU>MBxg)%|6qN09l z%cUn6aeFHh%3^9lIm0TZHuv)6-gv@Jy0BYQLp%1Q=O-j0Z^>-F^11GySX6LZW$EYO zrJD=uHf@rr2CowwyU$x_cG@-oBajK1M?IGH|6i4*Amx~~K$U;o*gem{<)T~jZJYgr zRJ^}^mVG(Sowb1pen7iMkzR)nvtBrx>oH{EvRLIL+=(Z{Oh+z6D?r@i+}( zwh;8aAs6Njon~)mKj!?DN1DhiG4%S8sJy~3KV{9ZbM`Q0Dchp&u}ZAp}9vOC;61=Px}4Tjd@ zU&Z2H&DJ(nvYH|OCFQR+SG85K?EGt;v?q??wb;+v$fNA;?8i0FN*4BdgL~&Aygdtx zToA_M=OlRzpxG%}+kb?==DEB4F?MuLkT&%&yD(>{7IK(*7loG$e#1jG>_FouSbb6` zE6-_KvS@BARr~%d+x%wdZqp8uU;ge1W5sus0t~q2!wOpuEU!V9P4$9k>3)d$%wyWd zgY1)eT{KfPJ3nuyX84Nbo8q-oHLS`sNK33?=NI;6Bj)>QKksK#=EtS{m&c2o4yi+4 zF))0z?-EOAa++9qLv(sMXiL@S_7L8KEJMhEXc>I~If`JhgT1uB%h|=30$9fdFKMN1 z*@p{uYQ4{})P?by%Nh30!a>@brx8kjt!+7yG{yD6KK=@E|$7{vGyW9B*uHjyUTlOVLMCO=eJe8o~EZ(e&DiL zcCw5WFKVxEXFjWp?COdv?WLnE<(;QGm29QBQZ0OTivgW=7#X{{-JZ=ukYzR(Z^xPs zVzuvN`-j2|3%%y1H|k>BsIvU`3zkt3r|sU#))e&7B95@{3I=HNer6FXyZh|m*7Wd- zL94Q?ILtCvMs}*$!dtHqG@nklzd-8^h)OO9OEpC(X70+ZtaN3X*8M-|#eQx3L3U=< z^WOaqAxrr1Pu#8}4zaH6FU@~5k2AS&iq>~CD=m!HKHgGtxv+z(UHzE(uBq&J80T<% zrYk=FXQubULT0+}rzMTdjZ`iEW2}+A!Q1$m8mF1m2HVFRc+)%OBldGqrg7y*=z!;k z)Um|+q%Z0W)Zg?ES^B%D8*Kw^iQ33w*G6br8?godNBiJg_Sf3T77PbH*;<6C`^d4u zV4}Lc! z)TJl=0^(K3mVB!<8*=_wyQsN=hfJg(@17`!h(LfO}7FY&M0iFY9 z0~>$^z_&KQ0q|R31MmSb2+t!~8?DxO;8I{3Fc||fA2=IW3@idx0B-=Vc%c8CG34$| z6lDf53b+E81Uv76PXL_W%olXMrCA?*sP% z{qf*d1B?SU-HiIcR=^x!8n6(!2Dk@!4tN&mi}h=2fY1s;5T4)q1LJ|u0n>o9fwO@d zfknWxz%t;kz;nQs|3T`31Asx81IvK%z;(cLz)yjZc+s;Pm;ii$$(;qXY{L)&4{o=b ztYr|^?XX(wfG_RDQ1~gzpxqd2!q3n!@XB6{888_ex&>HRjydA5C(W($QFaX#9><90^6C#H235Yb{G2m?AeP9vL|2QfF z`vA`YtAY5XO63AD7J&qvKtsUpz~u-a6Sx()3RnX?2&@O*J&6YKe(#A>Xb+eTOam5} zs_}LJLIdz4U?h%dM}hr;SAdgn{B_5R*UP{t;BUYrU?OgsS->3NQeYU4&|87ifz`ly zz+1p8K!2m6#Nu%#4mck;0{9s)2WYwvp%6j@o}l&sdjZb^CjjpQmjeBRuzrDYz;nP6 zKn;&fvw^LEMZl>zNK^nf0qcMbKm~8OpTcP*3YZN{0xkq*0V{w@gR%Z+W2fE<;sUT5 z=!vuIEnq*OC*Jk11GWc#4on9A3Y-pf#fzflz!AWmz>k16z&*fv;02&JKBTAz#sW1w zaHIhJf!V-9U|}fMKfM(%15p4x2b^=!YJCVS0*2uumMy?uz{pF89M})I6xjJP0te0m zRs#1AR{=hrHNx)?{5IC?HxCv+hnvO&8 zzlmi9OaQt^Vv+!(fE$5Hz%pPK@B(lt(DN1?0Q&)t12cgZ;Ojv57O)3K0c(Ltz4Fk6VmjVw0Hvwyb$ANe5B_nbOlYYgRwZcsW*dDkCm<;?H zI2{=CUyK=WJ#Z&*Kd=V)1F#Ft7Ya8@U>E8%D4HgLg#o=G}TbO_B zuPu)aFIt9e5sZFee^7GpuNZuStIlFgLtKu3@8Z_mhv>wn-fwA7dAYsf*$6jEuHOnQ zTf=4?2yv^1cz6w4^`CZ;A15kGXeg`-R1p9LaTsojfUcq8?EHViwa#XCa94=i2$-ap zS;*E1EyK+E>gcJZuTyl)r%HJfdmT^u3AkZlp#88dtTNFYnu=00U}zSa7= z8v^(gt4r_8pye)$TwOBV5G?ig0BU|~wpy`y+ilYA{jG)mN9bR4)N7Nt0o8v9eH7cZ z-RQ^jPNgEN^$0YsER@~c7OovFVjkNg)EXFtzPJtsH82=P2E84^(vrB#NbnV~`5QJ# zWE1XSW3q=;?Sl3EuGQKTHny(4WY^zwf}R{dQOF z`FB~&fk5WD!@bFLsOcBwT}>gZ`HpaH*;))u1i@Iqy0vT`VEJ11{*DOs6ZS<(s9TT$ zTh>~30sJRx+1~;pc1CDxP!;eNssd_I6>tVs0Y}%egMi(r2iS^wfcMt2h+PrdHq--@ zp&sB<)B~(XJwPGq0jM5e6Y2pDpx*8X?MKwx9nt3DTC4R5>fkusMfB00WlzZg91?xs zV+S$eY9YG5$LHQdA%blahB^K_oV0Yz=}5bSUeGsCj3I965ViM^nh>|S5dGgnA4A;M zK|~87TSEpMfY|aqtMxHQU!&~4YN2lfeSb&&8+QFe=m&{l!x}5f+I;45GNer}h&7nh zxLet~m}0M$4t?@oBs#=27h*r0VsKWln+~#@u7mynI*aq9qV$#Pe1Khl0Qvyb@93zX zYS-67-|FA>jg*Hlh}+9k6o%99fW183y&xv;r4+fPLmVO4xl-H}$cjI6joE{$W8r%R z+IAg>-AW(L#6>RJe0vN>QSInn8d1X)h$c3Ek64D(;8aZLB%07J{w#EFaQFV;mZ8J9 z$?4xni=)$@g;QF>(_xo_k@=47Zu_xmdxM)5g8LiX1>$P`Sd-G=W(UCSStspIal4@u z#RNR3d{6C`JG7Cs$i<~n<&Ds$L8tgnaMYyfYKy~Rs`}%QUhx?c7RYy%WSGJIZk7gj&jGguPayB|HS5sS(|mu+rN*c`>tGl5q1E~VHWk;m{aDYk;ONJ4sOe9DTz5J}{+K<%wW#tX51${{w z-+4Uo^zv~TYl_=vdx+nbu^E*i(a8|6z`-U*2Q=B&ip)^vvSE|8kJl`KShNrR0)1(S zkHh`4eOBva$gY0u%>EEJdRRKXkKKVt&rA1tJwp)A2d$V-xzU3h#-r4uoDD@NX%N%O z`AvN`#0lkmJ1c^iQO>r*pbTPWIXeUK9K`A6><+{Rh%?Gr)6YYi#X_80ZnZ{J4Ew#= zmxlt}dg1wHAz6wrb6~OoRPYhRiv8$bAglS@HKrEE_4_e^ zG|jr8pwAVWqP;bHYEjMaAVLV_ee%SkQshCN>GlwPA?^ws8i}BiQH(ukwU(mwN1Sc8 z&zfx596e;UX2Qf~qm8jOMvssl71Y=uO5jcugDR}nZjR;aigcac@;FcETO{HjUM*0D_G{C2)7)F>(D%m3L#ck;GP`fwg=*Y z3Vv5Q3$c=_hPd5_SSCb&EYdA@hjA#v%bLUD#Gttl=N`3MpM4}&aleQJ zw+{N9(BE*>^ChqSNFAblRKVudV|?n=LCiVEXDF?&AQUr?S*@=?c5TigzKC#Zk7v!D z$7piIM1oC5aW^dPLbj!zR=`DjKC@vnuaYKpW&y-4l~(IhPUdt_Sx$p z)j3jJ)iQXq6je6# zGpg8)6CrK|5GPf^E5GA4J&yKfpk^7Yur|&d#yW$=-&O1m#0H4>t60+`5pH2P+blm$ zIqujC;*J2CO%Q#gr01a48tC~=>!t^L<4CyMQq)O0fdex3FNm`t;@ol^;tU~L zAWk~L$Iu-Q)e}yzh@&BHQ4klNV1158xFth;aFVJ$J{@BHNpViKjhVw4bvg7wr}$n@ z`*@SBD7Uhg-KtTJJ%t7WqbWPLP)vdP-;Q6NIQ0xa#RF~+G3gZFnUWz6J%v+fNal2i z>2T1^F(D4?aXIuaLH}=OvaQg+3O$yNeGWPtnW~|ma*A)5w;(P>EaicnDRfUf{x3&O zjH10}vVAD}!+Zhsv!HhE$p%$o?V(ELDcb$rW<4q{|ApLYi!`c~6wZ&M4g zU-iEy`XTgFt7*_oVR&4~g6Y3a!Cuhsh90@LNBWG2lzNg5{TAryUSb>e;{cZTOF8Df|ar$cOdhELw*5Iu?IyJ+-Q6#sT^k+zo?>|L*cP0AU*9oIt~ zeugHMn>XH%WN@EtVj+$_W3`TcB<$hbLnOEq=+~ZMnJ2JSL;OWVQV8*~5cfd5D8#c6 ze?G&vg8L8?H_-Xsjb6gMv4KUOj5WUA}TP9BAxv+10S2vCDUcI`xQ$%euyRP}|zX zxXx4gvx#w^r?Se^Q01vy_5`gd>YLP?y0(gfUps5s1v6=MOrEN+(CAR@yEp z*u7rZ>0Oi6lr+|&?gJ$Gi#lUStWz4gz(~Vi_Gb5Bzt+Wc(*M+1uR2$%^{ndrQV6ON zs5G!)7Z0hOna?F7zHFi0rH-A?4iPp@r0HoSjT#st$DyO-|B(FLDQwxLnBazD!MjTJ zRiKJj(GS_Ki^kx;q*fn*mJmq$H@gU})k)hHX{09cJqnkNA)jRlm(K}Mo|W1rQ`m&d zG1{gow(4>Wg8u@xSvRGTgm3wP_$l!l*{_#l2Bj?)d<&^QhbJUoG<0^DAik4)D0)F( z36RdW96XK6xVvEu5Z^wBO}!H1vrmo%y)>fh2mTEc6<6G~gN5wmm6*;ma)pBKsdU}K zOrZKXIilP~fHJ{d#8I8jqJN1oO&uWko>Ki}V^OUaUwn%4jN~s!-gTNFa6shO<9M#5 zX3o;+9UyZqj@l>vYZ7 zH3vs^A1zdgl8Ztrl_7W$Ok<{hZ;GD7`LK_qFP;cq2Z{XtD7vF`mQ}m4FRmF)i;yMK z?tDYgnNoXJ^6>?N(39C5_jj_d?MGDl9@QBtv3D3slc1fh4`ldZgAR43BUA&A(2OK{$ykSb`|=#hWM!~MKs6?zd9l;F-KA$ zk;OG>!B1$gDUtkMnGoq%c^cEtTR{h$mg5NUgLQG1W*LPni!r zXG0^&##=cfgSsYySJJ^#TVXE?LauLRhvfg7B6xkC9+Ui9xuo@ZIuRQpybSoq-ZB#k zYT%Nbza4}><$&ZfD9?IJo&eodD%2 zrrtK1#!79voVsyRdqna(`w0TM;}?DWL+uTc+e(q-mr36Fi+748|C^k^U8Q}u*4)on zr7T}Ch?ig6ghC0COF^Ht0c}LXv9Ad`diO%t7Rk?)$b9)_-;a z&(~mhDkSnaPfkpINLPdBw=%;=y6uosY5QNNJ-R*SDEVk5=RUSze#J?CUA8EjB)_^N!w(tX6CU{@zzgX}l<;_`w z(dY1OS;6_lI1%?l3iRqSVV@u!eIWTk1%l95QCz&Rua;xH$wlZ5Jp^CBg31_qY(o5c zO)6ZT7G-pZU*(c_-f?}N5RNv;-0D*=UGk&kCZ$h`Gm?*eO8DjNXF;x&itM+ALU$C| zQ#9aw&p0S~?_^<*>io*?CG5*y7G=Ey0lnp5Po4~kau_c|ZYpbj2EGLjxZd@GaF_hI z(*E3XLCDQP@#`b}=wCX8<;1TJ;Kj6>B`prh&ORe8Op@=HD+p{@{0ei288LuiJt*DHU=_9+8SJ38H}&GHER(zghChQw5a?lAoNpXBi(2^ZEGQpc|?SUEf=;U^(c)q{mX6C*7qB1a-?`H;vWTdua| z(&7?$I`KF^fLxdMu5vshr2PVPp8RxNBZvUW*GaxY2Cr`u&n9wvUnMzTSYn6g*D==V zccZCRs1@gD)?qj#QZs?mgta~qr%3)2AYFPl&P(3;cGd?gZUZ*n--@|89>>L%1|I%R z%B2E9=>7X%D3n%m7U_IPOi&8w_zYoBtBbCMlAkTRm%v&4l8fY9%KQaN-U8nKy?Sl& zn-Nl>Vog&6AH5_9eK(s5UJUXAX>sdKVWH2bbGpTlhmdHoMLI3EUI>DGKky-C?5&q{j3_o1M>Z)dq#+?EZ*qf8AX zFB62mmmHM5o4mE0lJ+aHNs#^8w*^rq`2*-bjjDL3Wx^|dsYnn>xfiQKyy|I$Bz-<_M{X_MeIzWz)a)URmrC#<#g!_ zC}xBl^2x73;w~|n=+Z;}PV&l1!A}vObV(KVyJZgbnO-CLXbcuz9R(hqUN0wU>qea+GRo_i+fmybOj1f{BTqve#A?HNMSw? zn|ECg)>rey=R?v=!iUm&>JmZ7kyU;J&ky^-?b3z6<8po7kTo0F_=iSQ>KLJQzE2fP zK5MBkKOk#mj}`XLZw>yC{MK2*aFev3FizOly($Q-A%5)!k70{Z7Gh@c%SFInvcepv z8JM0S6E}G~BuWtdu_9giG8sLdyHpmV>vYjCbI|oNc(QlCo#aWr#%Ti#n;=^yQAO_4%I}g-ldHIu z^w=M+X~rLyP0%l%(DgCO6q)n3e2CjC?9;z})N^dZ-^TH+GKJ+RxjG*c4wU_pzaW=) zbII38p8hVHEE&t;vg#vvP|HcM`E`q2L>dFMB*Nm;_%&VG-2y9b_U za7ZHJq8`34+iNcjl>*5J%8f8a^7ka)AnyqLR~?{RJXLz^x}GF>+=4BZF8Vzsx^9A} zmg@6Gxs3p&FIwiYgue-iEPiJ~rO(0(;A!Fco2Cobk+R?4Nf(LWsp3YtB6>^yfaC`y z3qs$pn!G6NJL8Z=7mECflYHhXQP!tTmE^}bpGpQ|cq0Fw_ggMAL<4i)5{{w;DAOcg zmmr9Cl79=l$brisap%*&h1FYHe5YHe;pSPYYBco46y}fnLqUj9f>(hgMK!9&IhX>G5%L-}PgwcN+If<%NfJae$zPJZ^J}#R$&Y$l z7zRlDshG&*|0UV|u980@_m6QR5up z=aJ7d+)?RyDEN{we56aJ2huncvx+W#SjN2}oH)NS`#|#T<)n!b)s){P?|8ZS9VQap-6zcor%5AYP3^P91if)7-j-%xx&j_9*1 zk22|U;fT`R?y9?w`GWiv5u7m1R z>Jp*8(b)X;NHx@4_qf`%w63ihubMv&RR@^IMX2tjTidDET-jBxKyz3}b+A1~1=R%m^bv$V9yGrfoQ5-Jl z;&AhvRcben`EusWk1&^`>{A~p^g3pkRi>KM6!QY6cJ#`Q6Izb!o|~V!hN+Q01(Mb= z!K@al9c}-|g#MXn&KPsQLN&&t{~F E14M>G=l}o!