From a35f916341e1952eba4014882e09fdbbd4106439 Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 22 Aug 2022 11:41:00 +0800 Subject: [PATCH 01/43] docs: update TDinsight document --- .../assets/TDinsight-1-cluster-status.webp | Bin 27958 -> 19366 bytes .../assets/TDinsight-2-dnodes.webp | Bin 13838 -> 5582 bytes .../assets/TDinsight-3-mnodes.webp | Bin 8256 -> 7056 bytes .../assets/TDinsight-4-requests.webp | Bin 96252 -> 16572 bytes .../assets/TDinsight-5-database.webp | Bin 7674 -> 7244 bytes .../assets/TDinsight-8-taosadapter.webp | Bin 16890 -> 10766 bytes .../assets/howto-add-datasource.webp | Bin 11140 -> 15976 bytes .../07-tdinsight/assets/import_dashboard.webp | Bin 16692 -> 6342 bytes .../assets/import_dashboard_view.webp | Bin 0 -> 5452 bytes .../assets/select_dashboard_db.webp | Bin 0 -> 23862 bytes .../07-tdinsight/{index.md => index.mdx} | 115 +++++++----------- 11 files changed, 45 insertions(+), 70 deletions(-) create mode 100644 docs/zh/14-reference/07-tdinsight/assets/import_dashboard_view.webp create mode 100644 docs/zh/14-reference/07-tdinsight/assets/select_dashboard_db.webp rename docs/zh/14-reference/07-tdinsight/{index.md => index.mdx} (67%) diff --git a/docs/zh/14-reference/07-tdinsight/assets/TDinsight-1-cluster-status.webp b/docs/zh/14-reference/07-tdinsight/assets/TDinsight-1-cluster-status.webp index a78e18028a94c2f6a783b08d992a25c791527407..3bc0d960f1db45ee8d2adcee26de89334e681956 100644 GIT binary patch literal 19366 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

Wrk4l=@EjCcKKX8lu1N!^)`&CU zPIU7+o5~)%b9b-66QdF<{5in;EtANKlouQ>1SFRQM#?9qlZ`psSury-t|-IP+{cw# z>sFNCj4{Xua=*g~L)(yC0vcj6z&^D>7VR~4N&U64)&MRC9Yy(4o1=_hKu(~?sa%Zy# z%ue;i!PqVS6b;h90^jaKvtTEGTwlhoX4vB9M*t^`)LzMgIHyPe5dNfaf+)oQm~bA;{b*D@5n|B@tgyAB90M; z%{#m#^{vf@Nz@XyB^FapuzJj5s_lAIW#bNny|hWW+vH-NtAI|8D>lUr%ClP0bcHq# z_4HJOTJYuE7OSuc#>&9TtIsYTL|(*l^TN~8>_e`SLp}u@WM!7)D5=fRBU*f^*xu#} z@PVAFn7I$D>ixfr`_zj4gx7dEN4|W$Q9&!j_|$-G9_?$jQ0>$d`0Ks*k@Xr6!2kdN z0}LE1=kXBu{fUJ!GNk0msL@eoF(6^0G#mc)i$iSiYREL`ZOs2q_3oCO7UG*670$`|_mL3_Xe0000)Qr7eU literal 8256 zcmV-GAiv*INk&FEAOHYYMM6+kP&iC1AOHX_H^(;s=Lb8IB*o6m^ch%jfQ;D@77QWmhzKSi7D`aq zSxqt3*m_DHfFssE;XeF=PKKt|8)>BXt)G|#`qt{1U@t^I%%I(1s`a!OIED%I;dQuY z^p(kwEJz9qltRG~Kmt-IKtL412oZz;As`3=1Q5JKN`Qcnc%h;cO1uHr6dpjU{Of!J zR1pz?QW3>POO8f2qK@D^#01)C;MEv4+R=IsP5}xKfPxS}ETVA=AQ8bV00AZzM?{DS z1+ma#)G1H^Dhzc_t)Z5X3!oZo4dD+`5B|se7fEb_Mc%o>bH$(V7rC~JXlMrk=ZPI} zW`Qm_OpRg>XoyIH!k;WdD-&u*3`dzBS#1RUqImSV(bM>iow*)fHoG>qz1Y{x(nwxu zRlAfyyM|e(Um%)!)pJ%YVE*FC#I7r~MQZ=WHt_Y2)JMkOVtnxFMR{%f43%hymiY_w zsIigy#?&|(ik1H?ohhA4{9`Fas*BUTiU!aK{qB$3v#nNJQhM#YH__BYeGT;uq#pmx ze|~d&^6PxKclG$_dRD#pCw!fluYZ=``JW#po3Q@tGZ*x0nr%Vu+c-y?6EUR9paa8_ z$@XP?rtj^DZYsyzPL-=<$zSpi6&;!V7|^r1PiJ2{^`|woORaRhY7{BjrZs=C@8WRJ z<>`UkM@tiFhe6v$k{tf9_rD_$5ffm$Z`-V_7p5zxr9uUz(b&*KWu57wnc@Pyo&0t% zP?W(t#~o_G{{MB;$ja_C%oGC-S*E3u>Ahff*|kYwO`LUDCQhao=I&)HmxaZY3DbM; zeFmmGYzQU2+}`i>-pN$brcc-gTXp{b|B)@@8DF6XThfs&WED%Yq@!X>@>j)@E!juq zNR})`^q&@O+g96V-jt53BDC)jx~g8p)~6)fwv#Oy853aCJ~7Ds-y`?&SrRT%ZY`u$ z?k-4rwIcctiESfCk}ju$TRpe;x~&O~eVn9dzww)zlx;56j{8skBmX(Fj-R}+?b8Q{ z0NbTc-J=xv#~T!W{Ni2T<8#to(v3>{hhKd7FLz)4txm9b-L0BtF8@B~tStoTGv858 zvIG1t-_*YEqtX@LjvL&Z)ifjBe79uMKPi!-&_4?$qtR_JG2fAKvh}9UP-)UHdc_(xVf`e?b2GrNXVrWb#KZ z+T}fStKvVEwtx0JMB?l3kvwbj=Ob7AJ)K5mCSQzf(*F`g!qd0?-@9vU@qO?g4UEcK{#pZ~2$=)Fc}7gwFG0b$UC8f5#!*TLSDo-)@jWtk@w-Vyo0M)X zB@DgEGq?WVyL-Itvmcgjx?8j=?cR4goknCPKRxz;?q;+J2Z=jw4Jyrlu{4>i{>g=u zpTFS$6#OsoAxHS0;(;qCRY=B(N3s4%DSJ2nD->QSSquJ2;oxlSlZNCk|LBJt<91&! zXF$p(OTxkA0GIl5Tkk|HztPZE8R=%93S;T5~$npA2n>y}mx7Lj_K zddo|Ey+6yDPKy!Dv$@aQuHedL9Nep>H>VOsGqFmlaJlXjd2o}~xP9c>uiuS)v6RiT zHIRDo6}_&@EVs+|f7w4CjBXCxEqM}^CV7aN+&@_~zrwP!??9o?tvPiv`Nv=psZPt|Au%loAhk`KX(Rvy@XOiBAWGXvpXT}zTUvwQDo@*dCp{*-A2Tt z&}ou~*vS<`O;iSVedV%BL9=R=T8l+YG8nb_#An=Rcq!b*7>g>m=uO&)#jfkmQ?ze! z??3v*M}%9MtCSMlJD6T^`7^44q$_9niXz^*2MBZ;+aY%H*=_k)z?Iv#C98pTHWvRR zcL@y1=%7TOJjtCb1d_=CNt=9ypuJl%^|iY%UZ*W2Gn=&ZhE62?cM%)%Y?X?=Ng{Fb z&Tx`Ir%8&;&ryurcfrZ0s0&-&eORWgvKnzVa8jLLb8od_Git&3N2^|(4SZ-Z ztv&>!m1Z?UtvDO_2vpUHAk$>16Gn_F zQz?!QY}M@1;IT8LW)T@oc?O{iIC`AoyZ}bW@7ow32Fq1>vgJj|jIa zg5SWLGb(d>TzWziK{kkt%9~b8`KwPI08Wp&3B~Vq+F~|#a|$k7Ceq{66PgHeQuM0V z7Hf9J;S#U-5NEgd|Aq*}7ip8i{eGEmzv=~_4AD6r7SY+RIRKz`cAF`L!AFE&*(OQR z6cH=r@k-KXf4<$6y7xdb4o~kUM=aIz(Q}#z9<)Q(e)R$1q0)xWoBxdx69HHm&-7*y ze2K*^Ccp4e+yDFd&P|{DfkNI~&Yu94*SLK=@>#Wy>t0~RorO;doap4`Kjh5j3{Txr zzH!c(TP>rJwrJ?o-1ul@!>x{j;maQwym=0QpdgKZB?LTtcJno1MXZS(8?ugHY|DK0 z!IaZ;pTEHKkGJ-G^q3|BM`4%ugIoV!$Y@Jmw_~&K7G)*^G9!;RMK-DZsuSMK0gpF% zEq4J_UgLIYd{FHp`_jyTGh(-rhPP+#P$=z+rGoD( zrU1-!%zi>jUY{aPcAWnW{Okq)XAakKQKH@(;RxT>^U-6P2+kV35%(+YiZ9-*#h~E3 zMVX0!%EohxTWeU6U}~|HY&`6IXm(DaEfe z1_EE7bH9gvF#nG?mH|AhDFVhSv)exJ^zkn6qet)fxZwvqA3darfD@<03Cc_abjFUj zuL70#r|Kd1duh3RYmmad|DNmw6&=M1gwj9ifQN_1pLQGWOb|~k-L)xuZ#Z7qN4QJS zVT_a_rUFIohw8tD+1SlJA3dgtAUc=@N+XI+mgp!m5zrYqRs;)t$j+`fl~+v!i#Pjj zVFLZdVWwaS44hSRHe$cxs?(u$pY_@ts&qt4GB5)*jT{pWm8Zrh96KSvS7G)*^ zRz{cBaOsXJzjk63DzCbTar@0F2Am$_HuRBAyRQ%38{CFIMs4WY1KgHuSAUBLJn(_M z#6=6fZ1evMr4{kGw>aFjweJ?6dBgaQe{;XeN4e-dA3darfZosvfV)-i{H&zRM8M2g z$qS!1^P46%MCDZn0RW(e8G+1D1zcnf7oBL13snI0dM*&rrl+TIzbY_24V25MR;vKY zWKvgc59qkKJ*SDl<*E`l=_&vvCIbFRgNVp(RaC2Rxyp22&CTPkNl@9;~{T-B6$ICDR(H&Z(wiK4wXGd2}DahbR&d-t_2kS9DbGGZpEI4KZ2EqsCoBC&)_s6&XfP zjETkkLqsQ6UwW^mDn4c!dNLte%*Uc{8yTOTppzYq?D!+f)0zRG<>|l$&r*Xr_4Uqf zqGK69!95lWzIs@ePZJ-{R}Lc011pau(u|2t!nnXi=^i@SA%T30)MTZ|>6_pp^mloD zA7_xrYdRX1?W~FoFpfa#A|iLU0!gE zs9~|oBl_?mhGk~Oh8Uu{cIqBD$`#KkpYa+onkCSCHFYxEOr@W={ZYw|ZWmr)e#)QD zzhpIVjzt~n&E1A~e~<~Thi-m5!=N_JGMZ7~8m?}g6*nxBo%Yg%-PcKTt_O@Da5 zWipA`bYAIhE8zoXGb5MU;MW68PTFoRCKudQhPOJ=5@n)epIrf zSD*o~T;TfsKc6qHGY6i3p&AtNL6gDmU|~OXAp55GoS^SL$a1iZlAp_%IYexT?ZK63 zxO)&hoAo)9Gl)-K1iCt+4|tkvN40{1a9nJ1ciZ1~s8*hdW5fS{>F;4Vc8)B|@^Syk ze~$Z45zsyTTtlTlc0Nx6p4BEv5w(heJkIMrMVq$HV$&b;?AMUl;H}j^7l@o^w+A#K z*bp`5DoNA_@Ye?;_ z&N2p|z63;^nv;t_14L7nSiR^K^;4RY3K*EEWP2*EJQ5)6Nh|~w{b2||ADO8U-m<*=LI5y-;W;$xrH(Sdh}2LP zQY!$YLh>G4w<;1|H_|#EI61uDa7is-%Y^dHy!%Mjn6c3pz#A9!&nP|xD7FzT11u8r z6i<=E7*Puu&Bh!FJ0-^QA&;4?PcaPCwi=wW$WpVq_?IR(P&ZQ?@r%qTsLV+a%dD6y zxyr5KuQFAAzKE#v>oU|p_R+pf4LvbSj0HrnpJtFc-Y%0!Yj)a*K=Y`I%K20|d045~`zb;vrXkl?V z9o{u2VA2;a6h&qf9GH^;mU&8tmNkJuz{_7{s``8pYcsxJgmlT;fOky@hs1(J27pTHOq(ZUzAM#4@BgeL*3&x=kN^FyunUXefh@uomu7L z{^_o4-xq}TF<_4f6b=Imo+${!R)V+(4qLNL(AO~1LA2S17x5ZR)B`TtDAxglTV9Gv z2mpCr!r&fY?`m>$RHXTJAhOI36Bp3+Ts$?ieqv=~K4fwO2Fr%EL7>Ju;tadJZIaXr zREE~|pMrBkted>3L9&eH2|1O@a`j7$wprQU);KK06YLnYq&|lI})Ks z1OV=Gm5ah00fRLQXeApkx3@AGMplXg^=)_`7POWl1!r@Wx=#fPX`%~J6 z)G$NBwX8{YFwza~UT)qu%WIIkn>7fHe5^*GuMD7X4?}zqbLC6R?X#z_Be_-xOR?V$ zz-8}(Ha45}8!Ul_ydGxbSY)~!!PrF3yv8)QE-z*=tqYhv{V+(AUR7L^uHG2pk`?57 zfO~zeBlzOxjIq3Kl}j03=Mv7M>;m?PvK}IeasXr#YiogNi>OeOJ`Zq9USl@f;>%`h zkv0HGJ2126PoVsD*?+k)*3d5P=%Oo0dk}O zfErU69l;mZA$e>iXGIA$YhvI4>=B7WB>;f3GRCwQShUUt1@!mY?NgFDClPHDWzKpB z0y?7G;v>a!yTB%Pzt7Y5aAX)nZ~$*ehF1_y9ws=#)xWs$1({20}neuMefAdcy{&LLr?4`;nht zCo?pb%Vjq&Q@O0C;|9}KU{$XYR_5oCct#W~#yVt)S3k56GczE#Gg5lBKZTypIy4jtuSucBDy8Ci3Y7fN5o5TJ_@nWzA;4H<{@d49eMfaxJa ze9BYPsa3932y%=^g34R5RMF;Dt5qu#X1}m<_gp^4Q2@;j;$*g3xdCt|s?12h>@a5+F|+`1YYpqbc%^Z~MTD(ys|U_4i_9oEFdtDY^Nh?U zWqI&bpN=SQ%mHqxO3?Ps002a{=nwM>q!$7h8UyN#woa{bb;7>Yzhp}qA_6u^OV)G^{rKKG z(!{HO1^|jiU|u=dsZ|a^wrS1sV+VZUO6~GJ31D`wR-2lI()xs^`qil#e)HNBWX2umx`nzz-@_<%^b3ej1T zF7nl=LaoW;RMg+8)03wPKDrUqc z3iYd;ZUAHl?t-bfgr#Y{!|XAkc5T?~%}jCW=_oKT=l_icvCJBoXUc5T`IV?LRehc+ zm)1GFnSLTlY{KkzyXydRY3-U?pkiimmviL6a`lrV*3PVQ42n}D#}IJ4ggvVj0>gqZ zvp{)st?lyOIQZcUW$@5ak66uRd3Q4y2Fn2YY_{P5D^hBY92#RBr>KjcY%LDOrYg{0 zQe5vb1Lv*Fz_n^*L&OVJFiS)$p{_sV)YoE~%;D|;-niPCkS^xxfcV4`dPLAVg8&gl z32Vn7uF{3p~Aekpt6@I6dA@t#S!l^(Gx zb#|ruv`TNR6#2K>pBaB=zNxlnC!4^#C3gFdc2zZB`1?63{ihCX=^I32R~k_DmM&sd z+I5B*q)G&nv`UYx6tqg+O2Mx5%}8Z!>hvPHIPSmY z3gEc^T~VgQB&0sV_{(ZE{+28jZve$2|Qr z7(b&*zJ~h3gu)k#zpoQD8O3!#{W{vyD)bj76j}ldc{LfGn*pqC^8o;`7X#E6CPYN( zEod@2e+`h80;G%dpuR96yCeb`ho<9Vfuschh(l%o0L)HuVIcK)M*DJqmuNp8F4gJb zya^R%yhFfJCjbCV9@ZBoI;^Xs!4>mF)c*axC~D*sq~tbZbzs_iM9HjYF+I$! zQ;az5^Z^{$!-k<2x(2FFAH#ueW!I>|*(Ew4PAU+-Ua@JA(?{4$i;^U*rfQ(_^x&XA z!0z7?FV0A$=185{u$26@u~nZwZ3)9nU(roP0I~-B^n3^Xlk?5aI9UVLr{_DEnG~ze zC1ed$pFVX!3=b5X*B?LuJw1Oq#EovdeF0em)u#ss^#OMO7VG=~r*##knt=Wa`DtqM^8ixW|1AcnGgK$0IX(DT&`t*DUV@rTcfvkb*(7gYIFFi%&H2@+wz)XU!fvVF-a1h@hRp=V1Iz2kzg|F9H&%IuufSf+Sbkxi7MqM*i z1C^%-2bIGsZJU;*x1c~Qw31fk>7gY|_VoNzRRfy{4leSDbPZIUK7<3KcgRcCK;`Md z0WZ9%iOYft$mv5&2hco4T^%Y<4-V=B?EWn*Q)57Xi+2d9I#r(@TEb*c&rek~unFLx z$roVMK*i}JI9MqI;by7^Do+m%XyMHp%jNRFb5y`i&!3LQ9N?Owt`3!_PaRYUnEhL5 z=6Z}}0%oU~jHCMW&=Q829&kh$ap>v!4jOe!SaDRGK7s?2UyKaps2Zp|Jvd-aDh$^v zHVtz60Mp^H*cWChR1H*~K6Owbd|>u(q3Ksa)E9NlR2-G3hn6tR^nfD*)z=^;fP+jq z6bePi8mK-!-@y`-ld*58K7HzdI;k*R^EZu@2%BkkqNtxo)MBwO(7o z7N7r2!Lg!~EDs6$>o|IA#RUw`;`jCl!wWR$xD<=!?cTutONoVjHdZ*2?G$byp53>a zWEZq>HPzWxXlGYzqWRJnnQfHanRzPUZ6`=}Kv>G-zy5D#3(~Y^pl_ChedlY1x>Olx z*rSPNh^MjbuKyt74aOsc*orw5n=NOcDM0?22>k|s$)R9H+nPf6hq8)0etCgd6hBPaUl z7p8wZ7|HZ|_>*$SXxDdgXWpFi;y3eA{tNmoya4|UT*LlIFMvPUH~TT-N%r%60eDJ! z;dcgjJayIbo%LgPquyLwqo2ZGLT=l=O*cl z!~f#-q`%p{`Rnisdk)_(f7;jmL;Dr@BmOn^wfZt=U>Eysc@z8BZ}9`@qu|l+{df0E zjlc32|NC%Ff7-9;xA^DwbNvVY3ixgH3H}*>hu_0*+VA)G_a*GL?=x?=JCm>DNBX<$ zo!%e+n17Lf(a+(R^ONx@@2l;n?$Ph^o7C6qNBvj)z0RNi_;;26)-T{!_O|Gs0m}O4 zw(Wj@KYcO#tonX`m*L6p4ven5l5jjA=Fl7xxD1S~Oc#ozxYLu+gGN6JJr2<{^!9oN zyaHcAZ=ko(+v)B9^SDkCYyMZ%oqJycDiLD`HHOY_6{=q)e)O)|(&?vN4X8MjJ;Yc# z@40^4BA)K|R4d{%TGP-gFoU%i#u7~KgH>}~Jk`tMu)kY9daZyy&;{KC9b4#&qJLXo zduxY1nQ3fHQlPd>zsyn^;G-8qhnxx$r@`+=_jk4hc@Cp-@b%!)ZSe5>mY^W@#;O{g zI9q(cfIQkd)&UsD2mq@$mhco*;nx=&dzloN&RQB7Al`t0Dr@cqcbNsT*mI$7Grh} z%e{PU@aou!OJ&VTw*tDCiz}sQoJlIV2b!>ru`aJNRVn7f-+K zE34Dmq$KacCSq-Pji#4C*rpDpkEn$Hy3K_?uBNa3yM!TnE{q%bbcDoJ>gvxGM$Up5 z$D)~%%hI^ewEu#{^Dtq33PwS$SWs1rpVO~D+4@9yW>a*AC{-_5Sq;zydN zb&3MObB6ITAzVzvP?5!93;N>_`pjD*uxipecEcZO|8(M{iBF!y_;^GwwV1&uv5HRB zp9dk?v^MMB%W535_{dchU@VoUoPV4)+2ivnu*xnC*UVdNeHGFP3Q4TC;-~E+FbsvM zk?+^bo&>-J#@TTd#tv!-4SbY&z=j@BNf>*up=9oAL#detcLo;Bmn-9?pajJo%M<)5 zv8K$dX0c?r;whryK6D!@J9RZ> zjNv8NJ7+~idJ+Gk+$FsD!!5)yU^R@A+WbtxPD58RyFFnt+#g|4_(gCawzIu{eh7R7Z%SeTx88{W0)&!h()BY>mDCN;!CJyh9~nlxm=V z3*3)V$WgcFeyw$`JrZure`bG?p#4homS@gbR~ka6Hn?eRw#_p`MtSZUMfZb6u8Ciq zceQkP^&SIvtu0UDHccJXO14YpMEeBoR&kxvTNjXPO&#!sMOhf;2n}7y%wiAyw<74d zYXdXhyyUER@J4h5c(b;M2U8`NB!Y+Ppo1O^NFzr|yP@$u7pciZi$kfBrOGW%M_JGo z|24~QYAl_t+>#%j2h{&-$N-bR6V)Q~M4ZX7qUp%>r5=XQMov$|SF_&#*Srig+N_(L zK8u4q-k3VG&e-h#suL{%u)+U&*2vvNy6=7E{~CYN&36x_+FCiNFk1-eW$&K}5M!%+ z&}xD;Vm_8G@sb6mazXK#79WO8?j7iE&rW zy?*3LWrAu71$3Tv%+S9j{qbMa(PY)87a#9YPW^SOC+Q&fraWa5EShXJOw-*`u7fN7 zXgF1dfRa{_YLnrDtJYv){ZGgKrwUU%ig4?0zg$c5|Cwl*@09@*<{s3ycdcrNK<${? z9;r2^R~YCzCv_tDf2sKodttCLc2r~t4X_xGDBlBZjhRk5%L*&PyN9d1-*HOrA8ClD zuSo^`X~+VOoO6O5ly-pe{*5pyvW%$|qUzpBqG@t1S?UVIC|0K4ln7Gibw^e`zdCK} zIF|wEr6wa#-=s=op?_WkymEnR(gA?>%&F=lKKD&HO|i1s_zK+611b*0eL{1` zh2Z67j}1=3n^PFy9nC=bOq*<)CPOji^=i74sVil}?>7P9rCa$2V!9Sg15q@=9cbIe z1tp(39SURuD;ElBD)Z3WrgQ&p2C^)sbIVMAWlX`*ve)3KM``A)H4%eLgag)2`a0Rp z=A*IPaJoZGKpz7t3E3RMQ72SrcO$C(|5#|oZzf*6BdzQVKgG{TEBPi)fp&IikdlPK z(^)ER8}Kux*3zt3;>d&lsCxPstG#`cJ>cUs%NfFhb7FS-1}F`jS)n&0W0RSoUZam; z%(kqp6{OOtHLkjv}U467^-qtY{f@zF`riELLESldd7uXb_AuMV}<1^+LL`qe^u z<-`drIjF}dQLW3w0p{t)i(MiUXMM2-(+?6NI-NMc6U*AH^?&ojKT4yC@S(M)eI52k z-Q%1GzPL4mg%uod1z&dr0sU8U7_5hTV(fyY`PbL}zuCiJ!<_N{S%k_V#cz8;2%w=W zCJkMD`9IwGpOIs3-6wXz$K^@NaJ@03#O9>zh7qa$P-U}(l+oY?kLHcV)gvRKZNp;@ zPk(ov#P{LpY_GvuD=He`Evs`N6CZRVp3LBFcEVKih;#FsZnmp70xUY?Vk=++7lf;buTYy@i`r z6ATTw0;`=+z{7Xq8iO_G&{3kr6gUkq?u<5S3%KNzUUA<_mnWiIvc668o;FB{y_`IM zym0Zg|EgBrrQo7cSgv}Vn>wGv_>B@y+SO7Ms2RxTnR<29xA8n&&DEA^$Hl_(r0oEW zG7%)3&jq9y7y}At1QM^l5htWS3fUa-2=LQvYtNy8+%nRMl z;y<4O=XMNW?S{#V9eG`Am`8+jQ0hz>!I{*K63WDh_GRoLvCHmcCUb*flgXx7>BSE0 zFPlxO%IT)VLyGH199C&b?RZ(&`^oJSxPK|fcxZxa{9%k!e(3g;$m(?HuJOH%XZ0EpaeilzS}~O}}9NW-3SeljcMvGtjZD$+FRZ=gLCB z^qUwn^tW=+J+0j$=y*Pxw8~s2-}_a}VV}TuK3U4`;Wmfv55^0tt0hB9u`X8twdKC6 z)LzkkU1I;lsIwFiOybu2JELpZRDRA<6@5N|!Wtz)mAfh!^g5aghF#FO6tapkwLF08 z+dxJ<2o!PC{^{W}vNm8x0aW}NNKZz^>ct$Mp3jziY<0RnKxJEDvztYT0o+w8H2l#} zSBU_FTUk0Q2WifkzT}cs?tM(?xuZ5P`UNwxt%Z4qSdA zSSgQynS+w0j&VIyG$J;aV%KW8>k5HLCNqH3SR!vmSuR#|(r#D~fq=c^1zLlTbCJU; z8gVx^Hd9--<0){ajR3~3POM(#d$4yYwchiDbtIB-?#?c8d=C#vAe+=s@kE2u5@xZ1 z>8B(0?Xhb;wyPZ`u!2sCV_162?^Qcol7tUJe1lYCG5^~6gKEzxt^$j~+)Natd-Z75 zVA>L-h^ssgLn-ls8<_bpe<5Z{Rzk~TS4{kTDVy9fhAb2@`?w@n=%B1%++ns%=cr80(N4{ka*`yM{NU9+X<8G?x`6yje$eFrxb^#Z_rQ z(=;4P8HQa63l=cTW9(lB5ULy9Z6HLp*W zGQu~@f*ZQGTXA+)`FqYNYk%VdHCc)G!t%)#LsI8b?uQ`*pM0$R7}Tn>wx13Z|QoLHxj zR3@>8#=H}=^wK|ev(&^x(gnQ0SlPKoKr6)0@+ncQSqDmAYG8B?dj{-!278@HefyWQ z;80Oqe@y}_+c${~Zdt4WnLr&&z<;bv1~~otN++9lt;osvHVCgyxbX^Rxl>6e`0p`d z)7yO7=c;1iS`6gDfH!NcAJ5bL1rLCY<~=SbBU0tDR(RK-+$0L=dePtRMr+LF434}M zMSp~lw50w9%6RJVpF&KR5Hqr)V{0;Z(|cBGxw7zIB)Il@B9f@HtMA9$?0m;ckpo$Kw6o-1H@1N)yvVpv?-?((!1sHhGeieB zF#H|%y*0Pb_&$kVWM_hhy@x=Pu#6~?c|V9PTq1hiprFFfT+e-rps@U_3?1V@+)%d- zpBQ1vNTlD!tThGTzO|E>se-)Ys?5AzXVX=o%J_+9r&eZXg{)Q94)%jVxFV7 z#};-zvWH0`9BQ_fkMC%x8)ve^0Qjbz2}g{WhCZ}g4a8sKk=3hV2grBiv=Bh%4y-j^ zxBgjo(`=vOtg!w;36)i*#5dfX5sZzfp5 zpu1=}`3C|wG)|s`Lb)E?ug6IU-ghH@+nE;s&LjC)yDAfMuCFeU!dlW(Jr!6G%#uOv z6M`>Jd5!a!5pgY-)l{GlVexA$K!QWAz=T5t?taX8df-TIR=24Y6;TZEJAu z^A{?ZmDXEHpycoc+a%MMHMV}Yzb6JFU}EOMa*oVzbT5yjkuBv|6|Us&*}CPfYD^FUXK$WHqO23`WTtID!!FoLftA|4f>vaS0KtwAL6@8eh6>AQU}C( zIhSiqtuO{N#rNFKv|c(gp<7#Efn?BDLb|dh!{j4(e7aHcjN-CzDFA=16Q(U*v-T5| z!9SVoMe^wVlPJ3JW4B_$_vuY6_$$)A(uAek2Adwg-uEc_rzxeSfqqGTdwk;@!HoNKuWo07d?cbDvywG!8R*p^^VlqE4(3A9$kP=e+SNh-Ud zqvE=E7{LQkzM*=+wVZBP{Z`q5nEg@fZTHvC+V*e6l}x(Ssm*c?txU8sQ5Tg{xl{lk z`TkCLR`fw0k3qTT1o6BR)?hp&UpAk7ZtS9<4#I6SS)=#77k7Sm`bE~|QB>=q4(io$&CtSN=8Tdvvab-W8#u z#dFI1ALiGkU;Ut%WndES^T^ykeHg0`t z=eDzWSk1wUsc;%qHWbS8 z$@egU2ADSGzLV7Au#XcJW7v67c?n4jPv9qOwyH zXAF#z@pHGi?pGzT>GEF3X8ckjC66yv$nus! zaMUR9%q);8Bpa^%I>hTSqAHD!hFI2{%DW6s6Pk~5>AX)9Ct076mo^3X#N4pw?XWhR zB4EgY@cy(#vUE*T&7jHvt3@o(G>c(SyxfwkRl7t}BN(c++imw(|8IME0eay%-vj6i>{d6L%C%dslp8YApR^! zU-aaTxqtP-?UpmDgRpjyd(X7fND4RnMQQM~b$D0}A^ z>lTmyn;CB6lHEBpu_m|aE^GxUhg8UVhraw#a4SSG)k zk@@^m#1*1kF!OQem?(f3UO1V7i+xo989bRo<8_Fa_li4haQsRpus16iAK9y69H4k` zF9TGZqndqNa`S!pJM1G$%WCDlXL!SRI??e=MCrQ7Zl_>Gdaf?L-$^wEk_;TKyh>7@ zNqc#+n$vEap^;Z#ZX-{34#0ENpnhy+to}D)gz{ddt%kC&2!M0-FQ3NtHn$Nq%s!O% ztRItiVWvg+BJEf*LK?}UtGir=m~@NgUwCamG3Z!8sB9{oBa4(mAZ)Ov9)%BWQ*=Qk2c6vN!5q+3*x`F z79u6S!+O%Zu+@W7Z^%}dL)8RTJ!|7;WZl+hkp`n2Ao^>j$<|}lyLsGHt@+=3&cP=I z!H<~JS%V&K05C&pB)`;dX#6Mc(8j)!89dhzzaY**=!&w&xq z@J^PS79cX+MqvEfoA}LV%&NOoLXnIkLP-~G-J_&edy=iqNQQRWNW~mq^0rr|oIC4i zzsu_1G75o^M=xBPZLn&km}Xl*i|TliycN=C1};)NZ3sWou;aRkcsGkcm+v$8R`Eya z+T=`f_#ig&6qq)KhQ!feZef|kT(RW%f4iqHB1_mKVo_DeB}sWL*=wuEJSJ%3ort9OZJ>of$BYdJUnO~X~&yywi}Iq>0aCa+V#kwEJ{Jr%X7X2o@_&5 zyTxk)i`eQ4qcR8!x{_ezug8(D5H|%LP|RbA{&1{k@9T3Ph-RN>3J{kD=SDAA}yR3h&>u%I?&u>JDXuBrU$0!Ra77 zQjbMd=L;&tw{nXDHg@QYDg`pZ9}<68@+cQ9_;eim$X3Pq!Db>OJ+dFc!{f1G z`1O{Hcsnm>(+1eP$ojF z3#BoLghi6JRZ;~IO0;Z52npdXr2dOYzWPgU*QyIh&c3<7UBpu@^FZQ+rO|6WvHI|1 zigS4#-S;pKsVV*2ZM3wW#vu?xjza8X!>*!6)g@OcE|6dS(-6h0b@!v^^Owc;!v`E! zKPGu9l^}FHJ;!Sb4TJ2j6$aSrUK6KO9$ZidnMz%85RIRbc0yvgJC@nk>;>|`?R~zh z0G29$_J=IB0U9-y49XIM24*H3?gQ)`zSoze@8`mKHiBZuP6%M0)%?J0c+1-{Dwm2`Gzf`F*(U>}C9W0MIanclz=u`*Z9M5YgET?sI!uO0SN3%kqn>S_~s zpaWX{8{+WBzIL~Q&GSqi!Ey$1X~N1ja6@+!q7EGjFQZz}Dw!t;mTP-8VO>gyCcOVt zMeSl(7LCn`ojz`TEfE~nt-w*ZHJl1wM<1<{1V=Fzb(RJvaeOoB@EgVniKvf`roMdoyCf0MslLOl(JM0;tMx&4 zFX7VrxbkKMo|%+GJBAL!Lj8bBvKAHMvFBw*p;3SV@bZd6#(4xS%(YB&>`)R7ud}Nm zWbUdVtM!QKG|%m5G*1HrB*H@0X+uo}$VI0E`sxbbg+(a9X0pQRKmW}R+0Fnol5y?* zAvJq*hgz>j-PYfk68xWKYG8bNQ1|jx!8juYgE<8D3{5wZABA|++0^oADLmxaeg#pj z{W*Bme4B=m?)gL|s6K(yDagW)eQ@@bN|xbnlM9*b$)mSGQ~y9G-5TmCio61CG&Psy zcD+VS08s4N4DXq()|F+xnNUG87C}k)*xt>KOt;T0awf1x!HH9-?1Acs=<%-*sF*y7xAnYrrp}W@RPi=|~7!0{uH4SdQY!v#{@$a>fTMGHZ znhPVmI!6bB`tpPZG2-`&7*~c@@F164-$7361r%|oh~>`+&^%Q^2kX#Yw;f}8-pLBv zY#0FZC#`_31-Cnq@uKn)O0ocOB?lpE5xljLmBm|$K-7e7(6Z8+p~ET05=cNK?Cd^I z-W0(53}_wUmVbGGq~;H;+yJ9Auxx^AZ1P>8^|}6F#Alu6_Kt>sMn_jC{NB`5XiowcQ3*rU^1^PvUD!I+{Wj!*7zA z09Guc8y_eGJ=+sX&b~TI0otpoVkzIpekH_rIdPR8;GOJ*p|93Vj67dDI{0{QW$Wv; z_g0Gn05t?jW|C{hHX`A7!^ZyMyy7H`|J%>%&N;eS;)*XB@z$C-ZkfnVmXqQ7PUDs-}5 zHrsi2muGT;m3e>v7J5)PL8wASp?X59t&uxgDZC>r3y)}2NzDxwwW_^vuNie^&7o=n zrOnf^J4sVV3D45&v@4HIwVYltN%9JWunfhNxSp#K2r=}H3Bu{h?h-)zqnvlvjhJq} zR1}o^ST6iWe42_5bQpp(443$UG)d%1BUQdEHF%M*OdXQUdSXe$o8S&8BWYG%tfMXj z+n2`f`iATnv3NJ}_iF)j2SOL1&E3hIcJvZyb(x~VAlJT%d&7B&twFgiZY~eIs}`%f z`oND@q70D5el)nPz2;%@@x&o8>i{XBF2KdGhjdl!IH#^?1`M*sKNRYYYkG%o1=Du> zo9gmuX~G<;W@B?O#w9Db%pH?3%V9c7peM&!P8x>=`JH; zny0Ilu@=Lp*8$U>mcR|_5N6RGfEe%eq`Ph;nurQTOjpX@stwKsh@1xiAY*x^oJ6wF z&|OnD)X09ZPR{#AZaZ>BfK(<=p^SK}sxhqe@iXpqRQ>V(rJ6^u+b3h}6Mgv7Wb}nY z5lke>d-9LQ{1jBmzDg}kwyI=1p^-Y&u#nIgLt31uMHx}6KlOMc-a?VT=fH8NIB^;O zYdTWokb#`>=D2i-$e&ARnQFD&QhSWC>5GLnfs+CO8K6IJLzwUR9d_V1hELR%Z<6of7$cjyv002`&42llX`@ohn-#mbdiP8se&FyyN zntwk~#Wh`R5Hz3IY_o8EY$){mjQX<8c_9$w?;CeKNdC&Cs4#Z8(_sS2`yC;#+Gn1q zKyu-kwyII-nYag#dSfpV{5xI7-{-cW+}O86r?~{tZ8%qcp%O>XQqv02<%}r(EJ4Hb6}X z${KjZW|fs*>%6p5WLd7+_YnzOV?3T1N$AMJXsfYwXVs)()76${HSx)-+Ud`=Tv$%1 z`68W<@<@E(qS5P*@oAYODL%oTEw?S*jzp- z+576^?0^9sq{516!rryx;t0HPlk{r>7^eczZJ~aQ^vBMDi0tGZ5WZc8zX@PxwN^*6 zH1R01Mxd}is`WB-8txJ#2Y`iQ3TK~njuNo2+mChJFJBBEg$4G4zU8oh`F&>Y+TPXV zL0O1cl#n0lN#~G|YHO2chRmW8aFJ_xH!-EmIC2uDjtDYlv443@?SeM0{7_ zJ42pLi?L?*5$h%+D~+HFKs;8SVMIxBL}*!Vd-Y{YyBi9{Q)-mN^*Wt& z5VXH6I^j&0N2$G-(~lY<*|Jzx@-oOxy`Pb82^VJO+Uj)DvZOSSl2)n7QgK1G5N20kXQ9$z&-W?JhHYAkclB z($5(d)r*DPR6bjUcEtOLTV!d-mYa1GwST5Y%=X9u;(lMb#bH)P(F&H9eEx_b!9)I0 zvb;fz6J=LEi^G!A?Ec}IiiDB=q)x+>sJH|8l}vlsL#YxIySk>Zj$SATY%N??*FVkI z=ikBDz+aGNbXuMjK(Vjds)dH^0|J*UQ#%I1jY3oh!a7Yd1_ODJjA(DEE zk*bGcJSG|CD>OtBfZQM94<35iQje4Sh-ai;>k`f2gW`PKfwv;sPIKY78G!1bCJJs` zH|z-G(L+sE#X$*TjMNwdS@R)d9#T#V5r~w*eYe`t)xC{z#y^R~cMs3w`cLn5_ zl%(6%yEG1!sE&h;Xrqr}Q0h{>5uMkyrAiS+8riarOtRQ6TlMY3n(9&@5bYq3zDES} zKF&$p4|!QnmhN}4GPhtG%1`vg|0; zSv7acYwAhetxLNWYpD}v8+;N|VanxiJ~Qb|G`yKb+DVL>*8jStL1?ciR%6Sdvv;-vpa_H0)C#5j?-9>pH$R1 z>0#&*-9jX_;mt5QM_!hOayVnuNkMEspHgjVni2E6OT*ERg%j*_C|Pnny(GLVSRT8? z^x!VkKE#HVeRpB*NeP#dAtm;@K}WB!b9Q=XlZsQ;z)m2}zo*tpJnk-die##V{Ca!M zsgNfD5A3^DkN7c@tS*Xp4lPlBED7oYP5qvEd0{R_xm+N@-wJ)Q0UNYx*;r?BfuGZB z{j?QmF@_SVp(LhEfuN-g`Fz*0M8`!Lf>1@Ke{UqZVM^;2Y2C!1ZA|XGTC+za><0aX zU>2mv0o!kQSFL#Cd5Li>?5RVRnXBvgM?by0D~i@bKiN0Rv}EMMv=p)L4=0{Ag1lB} zUVDzCD~i-jm%@OC@5`v0HA+jVTg=cxSje;XGFA?zCfZ+LG%A@0uebVvA1@LlbCES= z^Zqj`mu=JGw+DNtJ-E6jR_v$0-(B@!pSVCQrV&yD>9sMF<+SJ#(#(HD@_kE=9;K$k zIzJMUcZT-X5Fk(hJdIPS8Go;Fa?ZW{7qNV?Wd4qY%>iK$^_cy!VUkV@@#v(OS755Y z%(BlZpEB5-^_J-`X$JsFsceAz3d`e=gDSYxMTJKn|1hP+;dFy4FPcY*Z7kGzn7@Wo zuT^i~^kU=W>y-w~G?P?`0_(>K;Gug&B`TO8cjvtR@qPEm{5x+odQ%_$qjadvNcn0L z$FccMJf(ZH3?(}(HpvAtQs1Nw0R(mmi=`64P+lbGUOnxQMrZ{!U#x>U9_CyIM6@S9@Jg3K!P5sA4z6f zPr7e2V_N1=@AcZ!Y$vT4Ds-qCGguo-3U|+f&?V(vzXS6Svn;~nIJhh07t7Hv3GQlZ zcNyUG+FXKF^dZM92cl%y zm4WMJd5C0*+}L4*q6F%%g=HKJle;=toJCATtj6GedzI(vgb%L%m^>2!*)N_1A|VPS zio*^YJTz_^9~o3@>GZ;EY~=rk?GN_lyNxzJ!>1?M9zLdDoe*MrS}TY|8%+M;pC$>4 z#E#z>y1Ez@ZwzClNv72A2;_dyFd2I-lDA-=>*D=Ha6~sm&AJX z7{{s9=P3p$ZyMxrcf!3VAiPYlLh)w}kF6Jh!E z=T@&nAS)v-W&44GMdTZANq#UAS;?pmPu^=Nk39v|ne)yr98uhM7Ix0CkqrY)0u*L- zdbzKOIEwbPD$Y5m%=l_khl9~A@N@{yh#@Uf_c78ycvs5~L&UFGn z7<12_LBte>yBktpFgQm|ORYhFD2yP#{i_84VGT@6xz_XRG#1r{@)}Tsd|Jn7D`Y5q z%1Lg)vgS*k;7`^p(I3?9J_@$OT9jvhNw-|Zt4epe4z4Vy2OmHb$dm0LMFkG8p$YCC z4TF1*E*6&^g#}54!{GV7Cw)wrz1j*Fd82+hS?_*=e$f$^I!Xm6T$HjIBqADo>wKwW za`aCZ*?Rs+1;VYvl_*xOJAk%w_q1*LRhC(G0VI7SYD;QDx2Q&PW)V;THY^tBrGq!=iM^( zhwN|C4XpRD;hAj;g;T=PUH8e9jGjV?za<=X^^}NY+ikeQIU5;<(-tNAka!ld;2vKp zNxeu(H%00GliOy{taB~Iz$!i&^8MZRixsNMUZU)|O*YY$CN{>VYZM%yv8<||QUauA zMaVkxcK}E9XewC5Zya_`-w$tLei14FA`ZyZ zGo6MAjMpAqyFpIiWdJLczsvm*_t|b}*Z??i+3iM55enyk-3?^V+J7oD<1>FQ={Q8M z#faDYCNl2Z=L;IFo?eI#peIQhA3Xq}VUt*hf5(7cs*5c6iaet5A!o?U2ayw-Mq$L= z0M4f!Jg>LyeIdMgkC`2JLQ8)Uj8|w)Zwsmz%L&6n_m$};R|%{Nc(&^f*{BzF0~quo zUQA6SrFcqvF=lq;7bRN_z63SImxTT-Lv~S8CywfyWHl4XAaa@3)sE1R;|QD=o3t5U z)*Gc#R6Flj(>$2|xA=f=Gm!!KWNr0a{sl4egGR35z!y6AwKSUO+~2KnBtfY|VdtLm zlN>#+dA;q##5#xow!UOm5mxD*66_!pz55yW8a+5xE{z4>RJigjO1VAyu|G$gY;{J` zcs@P*{sj$QvlK`Wl_aY!a=KLmHi(jpB%GO)^0YhVLjmx{H6 z0B64ceuz@zdc4w9mjpn`N|?ftB?t8RXL`MR$}zl6+pvTxLVNl0u}ptqwlC}~iuc#D zp#EEHKjAB6e(-Zxz;r|axfsLeXhw;Wx(^et#w363uK$T*KkB2)S+)@b{3D{rEG68Q zsNm;0!cJ;lAT6OB zm>_%!sC)4KYkDY?rgjNwaY$lT9SkRtdsyqtIX`uL+cukQ{@ET4-`f++5gH#L5RKHmNk57* zVBN5qHvONP!O`w_iGDJx11y2T_BdKq8U_485^O_yX|rH zt_9XcMiuZPfsY<1JT2H7J6!1g!84{_96s8(#8bo>A8cvf4|}i(8*%7xx~Xh~@-K-t zy!YqX5+i{>7vZythXDq{8}0NbC28T!=Dv(RS?vBWxhLzCu2TL+ni&|B?jch$%JAv= zb{uyNPLB0l9ku1TV9~#&o$;lG-=DOGGW7LB_x*x109doKs%#mfM=g z#6xU8u2>F+u5_9TVT`;Os9rdv);DFzw2U#ANj~Wh9px7e4@u<5=d}{!mWM)y(-4IoFRr{IEuB_7m=cfi>FDM?u#r0Dyv-n1|8XyLF{6bI`PzZc%7^` zp2qRtZVAfDG)R1zsT!bHe0J(L7ge6PYyUkOUQFIRZ4E_k>o;`krZV@dYo;!p-IdUD z?jgWeaCL?=zk6+}=D4hvp=tFXzjpE)eQv@rDTRQ5wAN!g|Cx{F!(3C5=Yy2e@6A>< zz@uX)2{V4p2*N@2!~~`N>dA;aCYG3sh|1K@MoT%k<^}<7(v>w|33Z%qf)yV;W1Z}S z+Mo|HZk<)r1SJe&PB$n?rtbG0-8L6sF|!!b{F;aO7tI0yV(&c9`%O z;R8e*4Pss~?rncaq)BNx`e;1aQ(V!in|R&F4;y;iqjP5I%M~3zuCcMgXOd(we!&}S z){@s@41HWeaUuYj#VLBfXW(`JIH#C)6%`6?=Y_O{%6eOM3=H(6fhg+!fvt{62XZF4n*AF`vS3 zp)L1h*r#8ehdw7hdO$J3FeBox&T%G$yeAqfn0ms(h5*oij0mORL^lm_^TyXkL1f%LH4#TrZ)VIw54j@25( zBXkN`4t#9Oe~1A9fD+(>M(F9dm`)Aqq3cx_W+|8aV+%U`N~+r0mbO~dN~igq8|9|^ zQG0|_kc8O)7_l~6V>`e*{imBK2+hm`N_F#8`k(Xn9p501PUchAP%nz5Ky;xYk@wl@ z?Ni^K(3fceH~YBPZI`NQOA^*~o{s2QIWiN;VV{=IDnBE1n?lFi@KL#|dV;}(IKs$k zLUT&^lXs#+^)d%IOp&NnToVkzqVAY^ErU8TJXYnXb_-P0#rIzP3YbyOkR?3cd$szS z-*0CdxUZ3{x@4$@A^iSpr(c9SbHDA-3KXhs6{ooLHGacg(<^3H>!n?)r(w|=)WXQw zMJts81U5*+FO+z&)&Rt7s;iReO&Sd3T>e&QYwP}kjvJtM{yNcT(1D5ax?Jpk<6Uya znsMSbfRM}| z9ywYwKY?rhl9KFR1H#^V@z%7#i2l}v))V}WIMZ24SV_6m#2p$wZh@cmtimvA&quj5*W%IE`K7F1(uzPb<3 zKS1cQ$3~4oL)-QsF=@BGV_Fxno3@2y1Sn0Bp%mYFMMnFDS`ljhEb7t|dQ{&QdFNu7 zGNBjNxG*i>rTJFDw$*FClveazpAl#`j7-mlN5S#4kpbQo3tm&Qkp73?lYI3ywISr+ zO;f$S3$T|W)M0n|4k~i3v16AYnH(cksvqi(PE#ow=%Q+Ty;cuFo*($hO;37O=MzpG zq(HN0aMP*lJ?26T4DalDKP%(Sxf&_zjL%sry7rNaIF5hjLfW7mzBEX{O#fid-F6_W8OY=PuB)ut~1N}$leZS4o9kKVJ(6C7c+DJKo>|z(!?USP;u-Z=KPQ* zAk<{k^O1>v;R*Gp;cM7E9?RW*W#_b*&6$bxr#A1flRvW z1N6>KK-_5bgjw4hL*|isB|X@S`7%`rmqMB?ur^DxaJ3qLRSroRRHNYoysDE5y#JZ$ z?gmDF``+I+YeW{z=`iJcNX`h+o#X=%kIKOpK8|OSL4XzGm(vK1Mo{(t(${>C^)dUn za+wqdL&=g)7kjVEhdb~1Nk_dP%nl&BmPKsjQ#{sn2it>}&YXM#n93YCU^C;1_*3CT z)2{b-otym?^RSd>WZ#wE^sT3)(}vtQm^sBkmw!A(B=3ORM-!ILj7PbM(lEOLgaSP4 zDP2R2xGEfG^$J|vgUN$$YhD*2uLiQhQ94AmuFC`}0njZezRZRAsQ!#dw_}Myq2>nX zg(-qXt){Er$nGm>#~m~D{DOnh7f$r{?lvp&(tnnT=n;x@+KGTU#gSy{Vn{AloM<;@ zA2cihFDy$9(-zIV`Vk)fYvCiyN4qxQ;0YE$>>`UaF%vH@M?aU!71%CWhku7_H@lE5 zz01-z;1dy1Ibu$tsDJ&;8_1De8Ak9U4%gXOCQ`=g8u<1h$P&;*HwV^muLnpqwHv1} tI=jOmi3?Bl$Yr8^cCiB2*`4CHYP060fgY6)3jl06-{v3238egU`9BFkFU0@= literal 96252 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 T@2InULr)yonW*P~T*Utabt@^k literal 7674 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 H4gmZQX{eNy diff --git a/docs/zh/14-reference/07-tdinsight/assets/TDinsight-8-taosadapter.webp b/docs/zh/14-reference/07-tdinsight/assets/TDinsight-8-taosadapter.webp index 8666193f59497180574fd2786266e5baabbe9761..942130d4fabf7944c7add10acb3bb42ca7f51e0f 100644 GIT binary patch literal 10766 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 W;6L~e{)7MEKll&+ga6<^r6C44JBOD5 diff --git a/docs/zh/14-reference/07-tdinsight/assets/import_dashboard.webp b/docs/zh/14-reference/07-tdinsight/assets/import_dashboard.webp index fb7958f1b9fbd43c8f63136024842790e711c490..ae2a1e8e9b7b63a68d56dfcd2187eca614da9a3d 100644 GIT binary patch literal 6342 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 literal 16692 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 literal 0 HcmV?d00001 diff --git a/docs/zh/14-reference/07-tdinsight/assets/select_dashboard_db.webp b/docs/zh/14-reference/07-tdinsight/assets/select_dashboard_db.webp new file mode 100644 index 0000000000000000000000000000000000000000..956132e37e9df255d3ff82654fd357bec001e695 GIT binary patch literal 23862 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 + 对于 Debian 或 Ubuntu 操作系统,建议使用 Grafana 镜像仓库。使用如下命令从零开始安装: @@ -31,6 +40,8 @@ sudo apt-get install grafana ``` ### 在 CentOS / RHEL 上安装 Grafana + + 您可以从官方 YUM 镜像仓库安装。 @@ -59,7 +70,12 @@ sudo yum install \ https://dl.grafana.com/oss/release/grafana-7.5.11-1.x86_64.rpm ``` -## 自动部署 TDinsight + + + + + + 我们提供了一个自动化安装脚本 [`TDinsight.sh`](https://github.com/taosdata/grafanaplugin/releases/latest/download/TDinsight.sh) 脚本以便用户快速进行安装配置。 @@ -71,7 +87,7 @@ chmod +x TDinsight.sh ./TDinsight.sh ``` -这个脚本会自动下载最新的[Grafana TDengine 数据源插件](https://github.com/taosdata/grafanaplugin/releases/latest) 和 [TDinsight 仪表盘](https://grafana.com/grafana/dashboards/15167) ,将命令行选项中的可配置参数转为 [Grafana Provisioning](https://grafana.com/docs/grafana/latest/administration/provisioning/) 配置文件,以进行自动化部署及更新等操作。利用该脚本提供的告警设置选项,你还可以获得内置的阿里云短信告警通知支持。 +这个脚本会自动下载最新的[Grafana TDengine 数据源插件](https://github.com/taosdata/grafanaplugin/releases/latest) 和 [TDinsight 仪表盘](https://github.com/taosdata/grafanaplugin/blob/master/dashboards/TDinsightV3.json) ,将命令行选项中的可配置参数转为 [Grafana Provisioning](https://grafana.com/docs/grafana/latest/administration/provisioning/) 配置文件,以进行自动化部署及更新等操作。利用该脚本提供的告警设置选项,你还可以获得内置的阿里云短信告警通知支持。 假设您在同一台主机上使用 TDengine 和 Grafana 的默认服务。运行 `./TDinsight.sh` 并打开 Grafana 浏览器窗口就可以看到 TDinsight 仪表盘了。 @@ -106,18 +122,6 @@ Install and configure TDinsight dashboard in Grafana on Ubuntu 18.04/20.04 syste -E, --external-notifier Apply external notifier uid to TDinsight dashboard. -Aliyun SMS as Notifier: --s, --sms-enabled To enable tdengine-datasource plugin builtin Aliyun SMS webhook. --N, --sms-notifier-name Provisioning notifier name.[default: TDinsight Builtin SMS] --U, --sms-notifier-uid Provisioning notifier uid, use lowercase notifier name by default. --D, --sms-notifier-is-default Set notifier as default. --I, --sms-access-key-id Aliyun SMS access key id --K, --sms-access-key-secret Aliyun SMS access key secret --S, --sms-sign-name Sign name --C, --sms-template-code Template code --T, --sms-template-param Template param, a escaped JSON string like '{"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}' --B, --sms-phone-numbers Comma-separated numbers list, eg "189xxxxxxxx,132xxxxxxxx" --L, --sms-listen-addr [default: 127.0.0.1:9100] ``` 大多数命令行选项都可以通过环境变量获得同样的效果。 @@ -136,17 +140,6 @@ Aliyun SMS as Notifier: | -t | --tdinsight-title | TDINSIGHT_DASHBOARD_TITLE | TDinsight 仪表盘标题。 [默认:TDinsight] | | -e | --tdinsight-可编辑 | TDINSIGHT_DASHBOARD_EDITABLE | 如果配置仪表盘可以编辑。 [默认值:false] | | -E | --external-notifier | EXTERNAL_NOTIFIER | 将外部通知程序 uid 应用于 TDinsight 仪表盘。 | -| -s | --sms-enabled | SMS_ENABLED | 启用阿里云短信 webhook 内置的 tdengine-datasource 插件。 | -| -N | --sms-notifier-name | SMS_NOTIFIER_NAME | 供应通知程序名称。[默认:`TDinsight Builtin SMS`] | -| -U | --sms-notifier-uid | SMS_NOTIFIER_UID | "Notification Channel" `uid`,默认使用程序名称的小写,其他字符用 “-” 代替。 | -| -D | --sms-notifier-is-default | SMS_NOTIFIER_IS_DEFAULT | 将内置短信通知设置为默认值。 | -| -I | --sms-access-key-id | SMS_ACCESS_KEY_ID | 阿里云短信访问密钥 id | -| -K | --sms-access-key-secret | SMS_ACCESS_KEY_SECRET | 阿里云短信访问秘钥 | -| -S | --sms-sign-name | SMS_SIGN_NAME | 签名 | -| -C | --sms-template-code | SMS_TEMPLATE_CODE | 模板代码 | -| -T | --sms-template-param | SMS_TEMPLATE_PARAM | 模板参数的 JSON 模板 | -| -B | --sms-phone-numbers | SMS_PHONE_NUMBERS | 逗号分隔的手机号列表,例如`"189xxxxxxxx,132xxxxxxxx"` | -| -L | --sms-listen-addr | SMS_LISTEN_ADDR | 内置 SMS webhook 监听地址,默认为`127.0.0.1:9100` | 假设您在主机 `tdengine` 上启动 TDengine 数据库,HTTP API 端口为 `6041`,用户为 `root1`,密码为 `pass5ord`。执行脚本: @@ -166,31 +159,18 @@ curl --no-progress-meter -u admin:admin http://localhost:3000/api/alert-notifica sudo ./TDinsight.sh -a http://tdengine:6041 -u root1 -p pass5ord -E existing-notifier ``` -如果你想使用[阿里云短信](https://www.aliyun.com/product/sms)服务作为通知渠道,你应该使用`-s`标志启用并添加以下参数: - -- `-N`:Notification Channel 名,默认为`TDinsight Builtin SMS`。 -- `-U`:Channel uid,默认是 `name` 的小写,任何其他字符都替换为 - ,对于默认的 `-N`,其 uid 为 `tdinsight-builtin-sms`。 -- `-I`:阿里云短信访问密钥 id。 -- `-K`:阿里云短信访问秘钥。 -- `-S`:阿里云短信签名。 -- `-C`:阿里云短信模板 ID。 -- `-T`:阿里云短信模板参数,为 JSON 格式模板,示例如下 `'{"alarm_level":"%s","time":"%s","name":"%s","content":"%s "}'`。有四个参数:告警级别、时间、名称和告警内容。 -- `-B`:电话号码列表,以逗号`,`分隔。 - 如果要监控多个 TDengine 集群,则需要设置多个 TDinsight 仪表盘。设置非默认 TDinsight 需要进行一些更改: `-n` `-i` `-t` 选项需要更改为非默认名称,如果使用 内置短信告警功能,`-N` 和 `-L` 也应该改变。 ```bash sudo ./TDengine.sh -n TDengine-Env1 -a http://another:6041 -u root -p taosdata -i tdinsight-env1 -t 'TDinsight Env1' -# 如果使用内置短信通知 -sudo ./TDengine.sh -n TDengine-Env1 -a http://another:6041 -u root -p taosdata -i tdinsight-env1 -t 'TDinsight Env1' \ - -s -N 'Env1 SMS' -I xx -K xx -S xx -C SMS_XX -T '' -B 00000000000 -L 127.0.0.01:10611 ``` 请注意,配置数据源、通知 Channel 和仪表盘在前端是不可更改的。您应该再次通过此脚本更新配置或手动更改 `/etc/grafana/provisioning` 目录(这是 Grafana 的默认目录,根据需要使用`-P`选项更改)中的配置文件。 特别地,当您使用 Grafana Cloud 或其他组织时,`-O` 可用于设置组织 ID。 `-G` 可指定 Grafana 插件安装目录。 `-e` 参数将仪表盘设置为可编辑。 -## 手动设置 TDinsight + + ### 安装 TDengine 数据源插件 @@ -247,23 +227,30 @@ sudo systemctl enable grafana-server ![TDengine Database TDinsight 数据源测试](./assets/howto-add-datasource-test.webp) + + + ### 导入仪表盘 -指向 **+** / **Create** - **import**(或 `/dashboard/import` url)。 +在配置 TDengine 数据源界面,点击 **Dashboards** tab。 ![TDengine Database TDinsight 导入仪表盘和配置](./assets/import_dashboard.webp) -在 **Import via grafana.com** 位置键入仪表盘 ID `15167` 并 **Load**。 +选择 `TDengine for 3.x`,并点击 `import`。 -![通过 grafana.com 导入](./assets/import-dashboard-15167.webp) +导入完成后,在搜索界面已经出现了 **TDinsight for 3.x** dashboard。 -导入完成后,TDinsight 的完整页面视图如下所示。 +![TDengine Database TDinsight 查看导入结果](./assets/import_dashboard_view.webp) -![TDengine Database TDinsight 显示](./assets/TDinsight-full.webp) +进入 TDinsight for 3.x dashboard 后,选择 taosKeeper 中设置的记录监控指标的数据库。 + +![TDengine Database TDinsight 选择数据库](./assets/select_dashboard_db.webp) + +然后可以看到监控结果。 ## TDinsight 仪表盘详细信息 -TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes, vnodes](https://www.taosdata.com/cn/documentation/architecture#cluster)或数据库的使用情况和状态。 +TDinsight 仪表盘旨在提供 TDengine 相关资源的使用情况和状态,比如 dnodes、 mnodes、 vnodes 和数据库等。 指标详情如下: @@ -285,7 +272,6 @@ TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes - **Measuring Points Used**:启用告警规则的测点数用量(社区版无数据,默认情况下是健康的)。 - **Grants Expire Time**:启用告警规则的企业版过期时间(社区版无数据,默认情况是健康的)。 - **Error Rate**:启用警报的集群总合错误率(每秒平均错误数)。 -- **Variables**:`show variables` 表格展示。 ### DNodes 状态 @@ -294,7 +280,6 @@ TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes - **DNodes Status**:`show dnodes` 的简单表格视图。 - **DNodes Lifetime**:从创建 dnode 开始经过的时间。 - **DNodes Number**:DNodes 数量变化。 -- **Offline Reason**:如果有任何 dnode 状态为离线,则以饼图形式展示离线原因。 ### MNode 概述 @@ -309,7 +294,6 @@ TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes 1. **Requests Rate(Inserts per Second)**:平均每秒插入次数。 2. **Requests (Selects)**:查询请求数及变化率(count of second)。 -3. **Requests (HTTP)**:HTTP 请求数和请求速率(count of second)。 ### 数据库 @@ -319,9 +303,8 @@ TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes 1. **STables**:超级表数量。 2. **Total Tables**:所有表数量。 -3. **Sub Tables**:所有超级表子表的数量。 -4. **Tables**:所有普通表数量随时间变化图。 -5. **Tables Number Foreach VGroups**:每个 VGroups 包含的表数量。 +3. **Tables**:所有普通表数量随时间变化图。 +4. **Tables Number Foreach VGroups**:每个 VGroups 包含的表数量。 ### DNode 资源使用情况 @@ -356,12 +339,11 @@ TDinsight 仪表盘旨在提供 TDengine 相关资源使用情况[dnodes, mnodes 支持监控 taosAdapter 请求统计和状态详情。包括: -1. **http_request**: 包含总请求数,请求失败数以及正在处理的请求数 -2. **top 3 request endpoint**: 按终端分组,请求排名前三的数据 -3. **Memory Used**: taosAdapter 内存使用情况 -4. **latency_quantile(ms)**: (1, 2, 5, 9, 99)阶段的分位数 -5. **top 3 failed request endpoint**: 按终端分组,请求失败排名前三的数据 -6. **CPU Used**: taosAdapter CPU 使用情况 +1. **http_request_inflight**: 即时处理请求数 +2. **http_request_total**: 请求总数。 +3. **http_request_fail**: 请求总数。 +4. **CPU Used**: taosAdapter CPU 使用情况。 +5. **Memory Used**: taosAdapter 内存使用情况。 ## 升级 @@ -403,13 +385,6 @@ services: TDENGINE_API: ${TDENGINE_API} TDENGINE_USER: ${TDENGINE_USER} TDENGINE_PASS: ${TDENGINE_PASS} - SMS_ACCESS_KEY_ID: ${SMS_ACCESS_KEY_ID} - SMS_ACCESS_KEY_SECRET: ${SMS_ACCESS_KEY_SECRET} - SMS_SIGN_NAME: ${SMS_SIGN_NAME} - SMS_TEMPLATE_CODE: ${SMS_TEMPLATE_CODE} - SMS_TEMPLATE_PARAM: '${SMS_TEMPLATE_PARAM}' - SMS_PHONE_NUMBERS: $SMS_PHONE_NUMBERS - SMS_LISTEN_ADDR: ${SMS_LISTEN_ADDR} ports: - 3000:3000 volumes: From 7c7c452bbc3f4385d97203deac8cec92a3880477 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Mon, 22 Aug 2022 15:58:00 +0800 Subject: [PATCH 02/43] enh: add perf debug info --- source/client/inc/clientInt.h | 7 ++++++- source/client/inc/clientLog.h | 1 + source/client/src/clientEnv.c | 13 ++++++++++++- source/client/src/clientImpl.c | 2 ++ source/client/src/clientMain.c | 10 ++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/source/client/inc/clientInt.h b/source/client/inc/clientInt.h index f275ae0885..855dfb15ee 100644 --- a/source/client/inc/clientInt.h +++ b/source/client/inc/clientInt.h @@ -96,7 +96,12 @@ typedef struct { typedef struct SQueryExecMetric { int64_t start; // start timestamp, us - int64_t parsed; // start to parse, us + int64_t syntaxStart; // start to parse, us + int64_t syntaxEnd; // end to parse, us + int64_t ctgStart; // start to parse, us + int64_t ctgEnd; // end to parse, us + int64_t semanticEnd; + int64_t execEnd; int64_t send; // start to send to server, us int64_t rsp; // receive response from server, us } SQueryExecMetric; diff --git a/source/client/inc/clientLog.h b/source/client/inc/clientLog.h index d47edcd795..ec0a41a68f 100644 --- a/source/client/inc/clientLog.h +++ b/source/client/inc/clientLog.h @@ -29,6 +29,7 @@ extern "C" { #define tscDebug(...) do { if (cDebugFlag & DEBUG_DEBUG) { taosPrintLog("TSC ", DEBUG_DEBUG, cDebugFlag, __VA_ARGS__); }} while(0) #define tscTrace(...) do { if (cDebugFlag & DEBUG_TRACE) { taosPrintLog("TSC ", DEBUG_TRACE, cDebugFlag, __VA_ARGS__); }} while(0) #define tscDebugL(...) do { if (cDebugFlag & DEBUG_DEBUG) { taosPrintLongString("TSC ", DEBUG_DEBUG, cDebugFlag, __VA_ARGS__); }} while(0) +#define tscPerf(...) do { taosPrintLog("TSC ", 0, cDebugFlag, __VA_ARGS__); } while(0) #ifdef __cplusplus } diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index ff1b9322c9..fac14be6f8 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -69,14 +69,25 @@ static void deregisterRequest(SRequestObj *pRequest) { int32_t currentInst = atomic_sub_fetch_64((int64_t *)&pActivity->currentRequests, 1); int32_t num = atomic_sub_fetch_32(&pTscObj->numOfReqs, 1); - int64_t duration = taosGetTimestampUs() - pRequest->metric.start; + int64_t nowUs = taosGetTimestampUs(); + int64_t duration = nowUs - pRequest->metric.start; tscDebug("0x%" PRIx64 " free Request from connObj: 0x%" PRIx64 ", reqId:0x%" PRIx64 " elapsed:%" PRIu64 " ms, current:%d, app current:%d", pRequest->self, pTscObj->id, pRequest->requestId, duration / 1000, num, currentInst); if (QUERY_NODE_VNODE_MODIF_STMT == pRequest->stmtType) { + tscPerf("insert duration %" PRId64 "us: syntax:%" PRId64 "us, ctg:%" PRId64 "us, semantic:%" PRId64 "us, exec:%" PRId64 "us", + duration, pRequest->metric.syntaxEnd - pRequest->metric.syntaxStart, + pRequest->metric.ctgEnd - pRequest->metric.ctgStart, + pRequest->metric.semanticEnd - pRequest->metric.ctgEnd, + pRequest->metric.execEnd - pRequest->metric.semanticEnd); atomic_add_fetch_64((int64_t *)&pActivity->insertElapsedTime, duration); } else if (QUERY_NODE_SELECT_STMT == pRequest->stmtType) { + tscPerf("select duration %" PRId64 "us: syntax:%" PRId64 "us, ctg:%" PRId64 "us, semantic:%" PRId64 "us, exec:%" PRId64 "us", + duration, pRequest->metric.syntaxEnd - pRequest->metric.syntaxStart, + pRequest->metric.ctgEnd - pRequest->metric.ctgStart, + pRequest->metric.semanticEnd - pRequest->metric.ctgEnd, + pRequest->metric.execEnd - pRequest->metric.semanticEnd); atomic_add_fetch_64((int64_t *)&pActivity->queryElapsedTime, duration); } diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 9c086fc83e..b658340925 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -839,6 +839,8 @@ void schedulerExecCb(SExecResult* pResult, void* param, int32_t code) { } schedulerFreeJob(&pRequest->body.queryJob, 0); + + pRequest->metric.execEnd = taosGetTimestampUs(); } taosMemoryFree(pResult); diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c index 0e95cd4d99..340e8e2955 100644 --- a/source/client/src/clientMain.c +++ b/source/client/src/clientMain.c @@ -683,6 +683,8 @@ void retrieveMetaCallback(SMetaData *pResultMeta, void *param, int32_t code) { SQuery *pQuery = pWrapper->pQuery; SRequestObj *pRequest = pWrapper->pRequest; + pRequest->metric.ctgEnd = taosGetTimestampUs(); + if (code == TSDB_CODE_SUCCESS) { code = qAnalyseSqlSemantic(pWrapper->pCtx, &pWrapper->catalogReq, pResultMeta, pQuery); pRequest->stableQuery = pQuery->stableQuery; @@ -691,6 +693,8 @@ void retrieveMetaCallback(SMetaData *pResultMeta, void *param, int32_t code) { } } + pRequest->metric.semanticEnd = taosGetTimestampUs(); + if (code == TSDB_CODE_SUCCESS) { if (pQuery->haveResultSet) { setResSchemaInfo(&pRequest->body.resInfo, pQuery->pResSchema, pQuery->numOfResCols); @@ -782,12 +786,16 @@ void doAsyncQuery(SRequestObj *pRequest, bool updateMetaForce) { SQuery *pQuery = NULL; + pRequest->metric.syntaxStart = taosGetTimestampUs(); + SCatalogReq catalogReq = {.forceUpdate = updateMetaForce, .qNodeRequired = qnodeRequired(pRequest)}; code = qParseSqlSyntax(pCxt, &pQuery, &catalogReq); if (code != TSDB_CODE_SUCCESS) { goto _error; } + pRequest->metric.syntaxEnd = taosGetTimestampUs(); + if (!updateMetaForce) { STscObj *pTscObj = pRequest->pTscObj; SAppClusterSummary *pActivity = &pTscObj->pAppInfo->summary; @@ -814,6 +822,8 @@ void doAsyncQuery(SRequestObj *pRequest, bool updateMetaForce) { .requestObjRefId = pCxt->requestRid, .mgmtEps = pCxt->mgmtEpSet}; + pRequest->metric.ctgStart = taosGetTimestampUs(); + code = catalogAsyncGetAllMeta(pCxt->pCatalog, &conn, &catalogReq, retrieveMetaCallback, pWrapper, &pRequest->body.queryJob); pCxt = NULL; From fda184b2c47d136ce99e0813a2940d305e137c8b Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Mon, 22 Aug 2022 17:42:37 +0800 Subject: [PATCH 03/43] fix: show sql in perf log --- source/client/src/clientEnv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index fac14be6f8..ae92d2dc7c 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -341,7 +341,6 @@ void doDestroyRequest(void *p) { schedulerFreeJob(&pRequest->body.queryJob, 0); taosMemoryFreeClear(pRequest->msgBuf); - taosMemoryFreeClear(pRequest->sqlstr); taosMemoryFreeClear(pRequest->pDb); doFreeReqResultInfo(&pRequest->body.resInfo); @@ -360,6 +359,7 @@ void doDestroyRequest(void *p) { taosMemoryFree(pRequest->body.param); } + taosMemoryFreeClear(pRequest->sqlstr); taosMemoryFree(pRequest); tscTrace("end to destroy request %" PRIx64 " p:%p", reqId, pRequest); } From aca3d913544676c1c89c0ec732d89aed9554ea1f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 23 Aug 2022 09:36:38 +0800 Subject: [PATCH 04/43] fix: update telemetry and trans timer --- source/dnode/mnode/impl/src/mndMain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index c3296ac5c1..ee73b5dad9 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -114,7 +114,7 @@ static void *mndThreadFp(void *param) { mndTtlTimer(pMnode); } - if (lastTime % (tsTransPullupInterval * 10) == 0) { + if (lastTime % (tsTransPullupInterval * 10) == 10) { mndPullupTrans(pMnode); } @@ -122,7 +122,7 @@ static void *mndThreadFp(void *param) { mndCalMqRebalance(pMnode); } - if (lastTime % (tsTelemInterval * 10) == 0) { + if (lastTime % (tsTelemInterval * 10) == 30) { mndPullupTelem(pMnode); } From 5257b77f94357515cc76fbde06154ebcfe90d01d Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 23 Aug 2022 10:42:44 +0800 Subject: [PATCH 05/43] fix: update telemetry and trans timer --- source/dnode/mnode/impl/src/mndMain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index ee73b5dad9..b8ea6b2c28 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -114,7 +114,7 @@ static void *mndThreadFp(void *param) { mndTtlTimer(pMnode); } - if (lastTime % (tsTransPullupInterval * 10) == 10) { + if (lastTime % (tsTransPullupInterval * 10) == 1) { mndPullupTrans(pMnode); } @@ -122,7 +122,7 @@ static void *mndThreadFp(void *param) { mndCalMqRebalance(pMnode); } - if (lastTime % (tsTelemInterval * 10) == 30) { + if (lastTime % (tsTelemInterval * 10) == 1) { mndPullupTelem(pMnode); } From 9c5a66439ad4f41a8ec064242934504cec320b32 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 23 Aug 2022 12:40:57 +0800 Subject: [PATCH 06/43] fix: update telemetry and trans timer --- source/dnode/mnode/impl/src/mndMain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index b8ea6b2c28..1693ef7d65 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -114,7 +114,7 @@ static void *mndThreadFp(void *param) { mndTtlTimer(pMnode); } - if (lastTime % (tsTransPullupInterval * 10) == 1) { + if (lastTime % (tsTransPullupInterval * 10) == 0) { mndPullupTrans(pMnode); } From 40b355239b66c4592ca9d1a8acc023fa9f7c3563 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Tue, 23 Aug 2022 13:23:49 +0800 Subject: [PATCH 07/43] doc: update 3.0 mac doc --- README-CN.md | 4 ++-- README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README-CN.md b/README-CN.md index 6bfab379fe..e30e38ae78 100644 --- a/README-CN.md +++ b/README-CN.md @@ -210,14 +210,14 @@ cmake .. -G "NMake Makefiles" nmake ``` -### macOS 系统 + # 安装 diff --git a/README.md b/README.md index 7f03089abd..02dd9984e8 100644 --- a/README.md +++ b/README.md @@ -211,14 +211,14 @@ cmake .. -G "NMake Makefiles" nmake ``` -### On macOS platform + # Installing From cf179c3efeafb35560654dc6889e5056417b8a11 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 23 Aug 2022 14:35:38 +0800 Subject: [PATCH 08/43] fix: cmake 3.10 failed (#16324) --- tools/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 5eec174618..d27fb99ef7 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -103,9 +103,9 @@ ELSE () ExternalProject_Add(upx PREFIX "${_upx_prefix}" URL https://github.com/upx/upx/releases/download/v3.96/upx-3.96-${PLATFORM_ARCH_STR}_linux.tar.xz - CONFIGURE_COMMAND cmake -E true - BUILD_COMMAND cmake -E true - INSTALL_COMMAND cmake -E true + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" ) ExternalProject_Add(taosadapter @@ -157,9 +157,9 @@ ELSE () ExternalProject_Add(upx PREFIX "${_upx_prefix}" URL https://github.com/upx/upx/releases/download/v3.96/upx-3.96-win32.zip - CONFIGURE_COMMAND cmake -E true - BUILD_COMMAND cmake -E true - INSTALL_COMMAND cmake -E true + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" ) ExternalProject_Add(taosadapter From 0f32540f8f1d6a0db7ca868370dc6be1c43375d6 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 23 Aug 2022 14:39:49 +0800 Subject: [PATCH 09/43] feat: update taostools 6bde102 for3.0 (#16329) * feat: update taos-tools for 3.0 [TD-14141] * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools 8e3b3ee * fix: remove submodules * feat: update taos-tools c529299 * feat: update taos-tools 9dc2fec for 3.0 * fix: optim upx * feat: update taos-tools f4e456a for 3.0 * feat: update taos-tools 2a2def1 for 3.0 * feat: update taos-tools c9cc20f for 3.0 * feat: update taostoosl 8a5e336 for 3.0 * feat: update taostools 3c7dafe for 3.0 * feat: update taos-tools 2d68404 for 3.0 * feat: update taos-tools 57bdfbf for 3.0 * fix: jenkinsfile2 to upgrade pip * feat: update taostoosl 11d23e5 for 3.0 * feat: update taostools 43924b8 for 3.0 * feat: update taostools 53a0103 for 3.0 * feat: update taostoosl d237772 for 3.0 * feat: update taos-tools 6bde102 for 3.0 --- cmake/taostools_CMakeLists.txt.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index 1751549680..fdee0d600c 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG d237772 + GIT_TAG 6bde102 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE From 849376318da37b68b43df4f91125a46141473aa1 Mon Sep 17 00:00:00 2001 From: huolibo Date: Tue, 23 Aug 2022 14:54:31 +0800 Subject: [PATCH 10/43] docs: monitor --- docs/zh/17-operation/10-monitor.md | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/docs/zh/17-operation/10-monitor.md b/docs/zh/17-operation/10-monitor.md index e30be775fb..6bef336670 100644 --- a/docs/zh/17-operation/10-monitor.md +++ b/docs/zh/17-operation/10-monitor.md @@ -2,13 +2,13 @@ title: 系统监控 --- -TDengine 启动后,会自动创建一个监测数据库 log,并自动将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度、慢查询等信息定时写入该数据库。TDengine 还将重要的系统操作(比如登录、创建、删除数据库等)日志以及各种错误报警信息记录下来存放在 log 库里。系统管理员可以从 CLI 直接查看这个数据库,也可以在 WEB 通过图形化界面查看这些监测信息。 +TDengine 通过 [taosKeeper](/reference/taosKeeper/) 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度、慢查询等信息定时写入指定数据库。TDengine 还将重要的系统操作(比如登录、创建、删除数据库等)日志以及各种错误报警信息进行记录。系统管理员可以从 CLI 直接查看这个数据库,也可以在 WEB 通过图形化界面查看这些监测信息。 这些监测信息的采集缺省是打开的,但可以修改配置文件里的选项 monitor 将其关闭或打开。 ## TDinsight - 使用监控数据库 + Grafana 对 TDengine 进行监控的解决方案 -从 2.3.3.0 开始,监控数据库将提供更多的监控项,您可以从 [TDinsight Grafana Dashboard](https://grafana.com/grafana/dashboards/15167) 了解如何使用 TDinsight 方案对 TDengine 进行监控。 +监控数据库将提供更多的监控项,您可以从 [TDinsight Grafana Dashboard](/reference/tdinsight/) 了解如何使用 TDinsight 方案对 TDengine 进行监控。 我们提供了一个自动化脚本 `TDinsight.sh` 对 TDinsight 进行部署。 @@ -34,21 +34,6 @@ chmod +x TDinsight.sh sudo ./TDinsight.sh -a http://localhost:6041 -u root -p taosdata -E ``` - - 使用 TDengine 数据源插件内置的阿里云短信告警通知,使用 `-s` 启用之,并设置如下参数: - - 1. 阿里云短信服务 Key ID,参数 `-I` - 2. 阿里云短信服务 Key Secret,参数 `K` - 3. 阿里云短信服务签名,参数 `-S` - 4. 短信通知模板号,参数 `-C` - 5. 短信通知模板输入参数,JSON 格式,参数 `-T`,如 `{"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}` - 6. 逗号分隔的通知手机列表,参数 `-B` - - ```bash - sudo ./TDinsight.sh -a http://localhost:6041 -u root -p taosdata -s \ - -I XXXXXXX -K XXXXXXXX -S taosdata -C SMS_1111111 -B 18900000000 \ - -T '{"alarm_level":"%s","time":"%s","name":"%s","content":"%s"}' - ``` - 运行程序并重启 Grafana 服务,打开面板:`http://localhost:3000/d/tdinsight`。 更多使用场景和限制请参考[TDinsight](/reference/tdinsight/) 文档。 From a32553f9f6251ef8d713404384a32bd109283b88 Mon Sep 17 00:00:00 2001 From: huolibo Date: Tue, 23 Aug 2022 14:58:48 +0800 Subject: [PATCH 11/43] =?UTF-8?q?docs:=20remove=20'=E6=85=A2=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/17-operation/10-monitor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/17-operation/10-monitor.md b/docs/zh/17-operation/10-monitor.md index 6bef336670..9f0f06fde2 100644 --- a/docs/zh/17-operation/10-monitor.md +++ b/docs/zh/17-operation/10-monitor.md @@ -2,7 +2,7 @@ title: 系统监控 --- -TDengine 通过 [taosKeeper](/reference/taosKeeper/) 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度、慢查询等信息定时写入指定数据库。TDengine 还将重要的系统操作(比如登录、创建、删除数据库等)日志以及各种错误报警信息进行记录。系统管理员可以从 CLI 直接查看这个数据库,也可以在 WEB 通过图形化界面查看这些监测信息。 +TDengine 通过 [taosKeeper](/reference/taosKeeper/) 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度等信息定时写入指定数据库。TDengine 还将重要的系统操作(比如登录、创建、删除数据库等)日志以及各种错误报警信息进行记录。系统管理员可以从 CLI 直接查看这个数据库,也可以在 WEB 通过图形化界面查看这些监测信息。 这些监测信息的采集缺省是打开的,但可以修改配置文件里的选项 monitor 将其关闭或打开。 From 103b7bafb7ad1e7b5044f08e74f40cf37fe67c05 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 23 Aug 2022 15:12:32 +0800 Subject: [PATCH 12/43] docs: remove version number text from docs (#16281) --- docs/en/14-reference/03-connector/php.mdx | 2 +- docs/en/14-reference/03-connector/python.mdx | 17 +++++++--- docs/en/14-reference/04-taosadapter.md | 2 +- docs/en/14-reference/11-docker/index.md | 34 +++++++++---------- docs/en/20-third-party/06-statsd.md | 11 ++---- docs/en/25-application/01-telegraf.md | 4 +-- docs/en/25-application/02-collectd.md | 4 +-- .../python/connect_native_reference.py | 6 ++-- docs/zh/05-get-started/_pkg_install.mdx | 2 +- docs/zh/07-develop/01-connect/index.md | 2 +- docs/zh/12-taos-sql/18-escape.md | 3 -- docs/zh/14-reference/03-connector/php.mdx | 4 +-- docs/zh/14-reference/03-connector/python.mdx | 17 +++++++--- docs/zh/14-reference/04-taosadapter.md | 4 +-- docs/zh/14-reference/12-directory.md | 2 +- docs/zh/25-application/01-telegraf.md | 4 +-- docs/zh/25-application/02-collectd.md | 4 +-- 17 files changed, 65 insertions(+), 57 deletions(-) diff --git a/docs/en/14-reference/03-connector/php.mdx b/docs/en/14-reference/03-connector/php.mdx index 9ee89d468a..08cf34495f 100644 --- a/docs/en/14-reference/03-connector/php.mdx +++ b/docs/en/14-reference/03-connector/php.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 1 -sidebar_label: PHP +sidebar_label: PHP (community contribution) title: PHP Connector --- diff --git a/docs/en/14-reference/03-connector/python.mdx b/docs/en/14-reference/03-connector/python.mdx index 1a15da62d6..e183bbee22 100644 --- a/docs/en/14-reference/03-connector/python.mdx +++ b/docs/en/14-reference/03-connector/python.mdx @@ -150,10 +150,19 @@ If the test is successful, it will output the server version information, e.g. ```json { - "status": "succ", - "head": ["server_version()"], - "column_meta": [["server_version()", 8, 8]], - "data": [["2.4.0.16"]], + "code": 0, + "column_meta": [ + [ + "server_version()", + "VARCHAR", + 7 + ] + ], + "data": [ + [ + "3.0.0.0" + ] + ], "rows": 1 } ``` diff --git a/docs/en/14-reference/04-taosadapter.md b/docs/en/14-reference/04-taosadapter.md index 31310b0f3e..e7ea620d0b 100644 --- a/docs/en/14-reference/04-taosadapter.md +++ b/docs/en/14-reference/04-taosadapter.md @@ -329,4 +329,4 @@ In TDengine server 2.2.x.x or earlier, the TDengine server process (taosd) conta | 3 | telegrafUseFieldNum | See the taosAdapter telegraf configuration method | | | 4 | restfulRowLimit | restfulRowLimit | Embedded httpd outputs 10240 rows of data by default, the maximum allowed is 102400. taosAdapter also provides restfulRowLimit but it is not limited by default. You can configure it according to the actual scenario. | 5 | httpDebugFlag | Not applicable | httpdDebugFlag does not work for taosAdapter | -| 6 | httpDBNameMandatory | N/A | taosAdapter requires the database name to be specified in the URL | \ No newline at end of file +| 6 | httpDBNameMandatory | N/A | taosAdapter requires the database name to be specified in the URL | diff --git a/docs/en/14-reference/11-docker/index.md b/docs/en/14-reference/11-docker/index.md index 3528fd194b..b3c3cddd9a 100644 --- a/docs/en/14-reference/11-docker/index.md +++ b/docs/en/14-reference/11-docker/index.md @@ -115,7 +115,7 @@ If you want to start your application in a container, you need to add the corres ```docker FROM ubuntu:20.04 RUN apt-get update && apt-get install -y wget -ENV TDENGINE_VERSION=2.4.0.0 +ENV TDENGINE_VERSION=3.0.0.0 RUN wget -c https://www.taosdata.com/assets-download/TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && tar xvf TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && cd TDengine-client-${TDENGINE_VERSION} \ @@ -216,7 +216,7 @@ Here is the full Dockerfile: ```docker FROM golang:1.17.6-buster as builder -ENV TDENGINE_VERSION=2.4.0.0 +ENV TDENGINE_VERSION=3.0.0.0 RUN wget -c https://www.taosdata.com/assets-download/TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && tar xvf TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && cd TDengine-client-${TDENGINE_VERSION} \ @@ -232,7 +232,7 @@ RUN go build FROM ubuntu:20.04 RUN apt-get update && apt-get install -y wget -ENV TDENGINE_VERSION=2.4.0.0 +ENV TDENGINE_VERSION=3.0.0.0 RUN wget -c https://www.taosdata.com/assets-download/TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && tar xvf TDengine-client-${TDENGINE_VERSION}-Linux-x64.tar.gz \ && cd TDengine-client-${TDENGINE_VERSION} \ @@ -320,7 +320,7 @@ password: taosdata 2. Start the cluster ```shell - $ VERSION=2.4.0.0 docker-compose up -d + $ VERSION=3.0.0.0 docker-compose up -d Creating network "test_default" with the default driver Creating volume "test_taosdata-td1" with default driver Creating volume "test_taoslog-td1" with default driver @@ -457,7 +457,7 @@ If you want to deploy a container-based TDengine cluster on multiple hosts, you The docker-compose file can refer to the previous section. Here is the command to start TDengine with docker swarm: ```shell -$ VERSION=2.4.0 docker stack deploy -c docker-compose.yml taos +$ VERSION=3.0.0.0 docker stack deploy -c docker-compose.yml taos Creating network taos_inter Creating network taos_api Creating service taos_arbitrator @@ -473,20 +473,20 @@ Checking status: $ docker stack ps taos ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 79ni8temw59n taos_nginx.1 nginx:latest TM1701 Running Running about a minute ago -3e94u72msiyg taos_adapter.1 tdengine/tdengine:2.4.0 TM1702 Running Running 56 seconds ago -100amjkwzsc6 taos_td-2.1 tdengine/tdengine:2.4.0 TM1703 Running Running about a minute ago -pkjehr2vvaaa taos_td-1.1 tdengine/tdengine:2.4.0 TM1704 Running Running 2 minutes ago -tpzvgpsr1qkt taos_arbitrator.1 tdengine/tdengine:2.4.0 TM1705 Running Running 2 minutes ago -rvss3g5yg6fa taos_adapter.2 tdengine/tdengine:2.4.0 TM1706 Running Running 56 seconds ago -i2augxamfllf taos_adapter.3 tdengine/tdengine:2.4.0 TM1707 Running Running 56 seconds ago -lmjyhzccpvpg taos_adapter.4 tdengine/tdengine:2.4.0 TM1708 Running Running 56 seconds ago +3e94u72msiyg taos_adapter.1 tdengine/tdengine:3.0.0.0 TM1702 Running Running 56 seconds ago +100amjkwzsc6 taos_td-2.1 tdengine/tdengine:3.0.0.0 TM1703 Running Running about a minute ago +pkjehr2vvaaa taos_td-1.1 tdengine/tdengine:3.0.0.0 TM1704 Running Running 2 minutes ago +tpzvgpsr1qkt taos_arbitrator.1 tdengine/tdengine:3.0.0.0 TM1705 Running Running 2 minutes ago +rvss3g5yg6fa taos_adapter.2 tdengine/tdengine:3.0.0.0 TM1706 Running Running 56 seconds ago +i2augxamfllf taos_adapter.3 tdengine/tdengine:3.0.0.0 TM1707 Running Running 56 seconds ago +lmjyhzccpvpg taos_adapter.4 tdengine/tdengine:3.0.0.0 TM1708 Running Running 56 seconds ago $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS -561t4lu6nfw6 taos_adapter replicated 4/4 tdengine/tdengine:2.4.0 -3hk5ct3q90sm taos_arbitrator replicated 1/1 tdengine/tdengine:2.4.0 +561t4lu6nfw6 taos_adapter replicated 4/4 tdengine/tdengine:3.0.0.0 +3hk5ct3q90sm taos_arbitrator replicated 1/1 tdengine/tdengine:3.0.0.0 d8qr52envqzu taos_nginx replicated 1/1 nginx:latest *:6041->6041/tcp, *:6044->6044/udp -2isssfvjk747 taos_td-1 replicated 1/1 tdengine/tdengine:2.4.0 -9pzw7u02ichv taos_td-2 replicated 1/1 tdengine/tdengine:2.4.0 +2isssfvjk747 taos_td-1 replicated 1/1 tdengine/tdengine:3.0.0.0 +9pzw7u02ichv taos_td-2 replicated 1/1 tdengine/tdengine:3.0.0.0 ``` From the above output, you can see two dnodes, two taosAdapters, and one Nginx reverse proxy service. @@ -502,5 +502,5 @@ verify: Service converged $ docker service ls -f name=taos_adapter ID NAME MODE REPLICAS IMAGE PORTS -561t4lu6nfw6 taos_adapter replicated 1/1 tdengine/tdengine:2.4.0 +561t4lu6nfw6 taos_adapter replicated 1/1 tdengine/tdengine:3.0.0.0 ``` diff --git a/docs/en/20-third-party/06-statsd.md b/docs/en/20-third-party/06-statsd.md index 40e927b9fd..1cddbcf63d 100644 --- a/docs/en/20-third-party/06-statsd.md +++ b/docs/en/20-third-party/06-statsd.md @@ -39,15 +39,8 @@ $ echo "foo:1|c" | nc -u -w0 127.0.0.1 8125 Use the TDengine CLI to verify that StatsD data is written to TDengine and can read out correctly. ``` -Welcome to the TDengine shell from Linux, Client Version:2.4.0.0 -Copyright (c) 2020 by TAOS Data, Inc. All rights reserved. - -taos> show databases; - name | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status | -==================================================================================================================================================================================================================================================================================== - log | 2022-04-20 07:19:50.260 | 11 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ms | 0 | ready | - statsd | 2022-04-20 09:54:51.220 | 1 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ns | 2 | ready | -Query OK, 2 row(s) in set (0.003142s) +Welcome to the TDengine shell from Linux, Client Version:3.0.0.0 +Copyright (c) 2022 by TAOS Data, Inc. All rights reserved. taos> use statsd; Database changed. diff --git a/docs/en/25-application/01-telegraf.md b/docs/en/25-application/01-telegraf.md index d30a23fe1b..59491152bc 100644 --- a/docs/en/25-application/01-telegraf.md +++ b/docs/en/25-application/01-telegraf.md @@ -34,7 +34,7 @@ Please refer to the [official documentation](https://grafana.com/grafana/downloa ### TDengine -Download the latest TDengine-server 2.4.0.x or above from the [Downloads](http://taosdata.com/cn/all-downloads/) page on the TAOSData website and install it. +Download the latest TDengine-server from the [Downloads](http://tdengine.com/en/all-downloads/) page on the TAOSData website and install it. ## Data Connection Setup @@ -79,5 +79,5 @@ Click on the plus icon on the left and select `Import` to get the data from `htt ## Wrap-up -The above demonstrates how to quickly build a IT DevOps visualization system. Thanks to the new schemaless protocol parsing feature in TDengine version 2.4.0.0 and ability to integrate easily with a large software ecosystem, users can build an efficient and easy-to-use IT DevOps visualization system in just a few minutes. +The above demonstrates how to quickly build a IT DevOps visualization system. Thanks to the schemaless protocol parsing feature in TDengine and ability to integrate easily with a large software ecosystem, users can build an efficient and easy-to-use IT DevOps visualization system in just a few minutes. Please refer to the official documentation and product implementation cases for other features. diff --git a/docs/en/25-application/02-collectd.md b/docs/en/25-application/02-collectd.md index 1733ed1b1a..692cd8d929 100644 --- a/docs/en/25-application/02-collectd.md +++ b/docs/en/25-application/02-collectd.md @@ -37,7 +37,7 @@ Please refer to the [official documentation](https://grafana.com/grafana/downloa ### Install TDengine -Download the latest TDengine-server 2.4.0.x or above from the [Downloads](http://taosdata.com/cn/all-downloads/) page on the TAOSData website and install it. +Download the latest TDengine-server from the [Downloads](http://tdengine.com/en/all-downloads/) page on the TAOSData website and install it. ## Data Connection Setup @@ -99,6 +99,6 @@ Download the dashboard json from `https://github.com/taosdata/grafanaplugin/blob ## Wrap-up -TDengine, as an emerging time-series big data platform, has the advantages of high performance, high reliability, easy management and easy maintenance. Thanks to the new schemaless protocol parsing feature in TDengine version 2.4.0.0 and ability to integrate easily with a large software ecosystem, users can build an efficient and easy-to-use IT DevOps visualization system, or adapt an existing system, in just a few minutes. +TDengine, as an emerging time-series big data platform, has the advantages of high performance, high reliability, easy management and easy maintenance. Thanks to the new schemaless protocol parsing feature in TDengine and ability to integrate easily with a large software ecosystem, users can build an efficient and easy-to-use IT DevOps visualization system, or adapt an existing system, in just a few minutes. For TDengine's powerful data writing and querying performance and other features, please refer to the official documentation and successful product implementation cases. diff --git a/docs/examples/python/connect_native_reference.py b/docs/examples/python/connect_native_reference.py index c17e9795b5..09b0685ace 100644 --- a/docs/examples/python/connect_native_reference.py +++ b/docs/examples/python/connect_native_reference.py @@ -11,10 +11,10 @@ conn: taos.TaosConnection = taos.connect(host="localhost", server_version = conn.server_info print("server_version", server_version) client_version = conn.client_info -print("client_version", client_version) # 2.4.0.16 +print("client_version", client_version) # 3.0.0.0 conn.close() # possible output: -# 2.4.0.16 -# 2.4.0.16 +# 3.0.0.0 +# 3.0.0.0 diff --git a/docs/zh/05-get-started/_pkg_install.mdx b/docs/zh/05-get-started/_pkg_install.mdx index 83c987af8b..36730b4429 100644 --- a/docs/zh/05-get-started/_pkg_install.mdx +++ b/docs/zh/05-get-started/_pkg_install.mdx @@ -2,7 +2,7 @@ import PkgList from "/components/PkgList"; TDengine 的安装非常简单,从下载到安装成功仅仅只要几秒钟。 -为方便使用,从 2.4.0.10 开始,标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。 +标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。 在安装包格式上,我们提供 tar.gz, rpm 和 deb 格式,为企业客户提供 tar.gz 格式安装包,以方便在特定操作系统上使用。需要注意的是,rpm 和 deb 包不含 taosdump、taosBenchmark 和 TDinsight 安装脚本,这些工具需要通过安装 taosTool 包获得。 diff --git a/docs/zh/07-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md index 89faf812ff..cc9f2e2a69 100644 --- a/docs/zh/07-develop/01-connect/index.md +++ b/docs/zh/07-develop/01-connect/index.md @@ -223,7 +223,7 @@ phpize && ./configure && make -j && make install **手动指定 TDengine 目录:** ```shell -phpize && ./configure --with-tdengine-dir=/usr/local/Cellar/tdengine/2.4.0.0 && make -j && make install +phpize && ./configure --with-tdengine-dir=/usr/local/Cellar/tdengine/3.0.0.0 && make -j && make install ``` > `--with-tdengine-dir=` 后跟上 TDengine 目录。 diff --git a/docs/zh/12-taos-sql/18-escape.md b/docs/zh/12-taos-sql/18-escape.md index 756e5c8159..d478340599 100644 --- a/docs/zh/12-taos-sql/18-escape.md +++ b/docs/zh/12-taos-sql/18-escape.md @@ -15,9 +15,6 @@ title: 转义字符说明 | `\%` | % 规则见下 | | `\_` | \_ 规则见下 | -:::note -转义符的功能从 2.4.0.4 版本开始 - ::: ## 转义字符使用规则 diff --git a/docs/zh/14-reference/03-connector/php.mdx b/docs/zh/14-reference/03-connector/php.mdx index 2b7ff2a6fe..5617dc6f73 100644 --- a/docs/zh/14-reference/03-connector/php.mdx +++ b/docs/zh/14-reference/03-connector/php.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 1 -sidebar_label: PHP +sidebar_label: PHP(社区贡献) title: PHP Connector --- @@ -61,7 +61,7 @@ phpize && ./configure && make -j && make install **手动指定 tdengine 目录:** ```shell -phpize && ./configure --with-tdengine-dir=/usr/local/Cellar/tdengine/2.4.0.0 && make -j && make install +phpize && ./configure --with-tdengine-dir=/usr/local/Cellar/tdengine/3.0.0.0 && make -j && make install ``` > `--with-tdengine-dir=` 后跟上 tdengine 目录。 diff --git a/docs/zh/14-reference/03-connector/python.mdx b/docs/zh/14-reference/03-connector/python.mdx index d7b17dc74a..9ce81f9d70 100644 --- a/docs/zh/14-reference/03-connector/python.mdx +++ b/docs/zh/14-reference/03-connector/python.mdx @@ -150,10 +150,19 @@ curl -u root:taosdata http://:/rest/sql -d "select server_version()" ```json { - "status": "succ", - "head": ["server_version()"], - "column_meta": [["server_version()", 8, 8]], - "data": [["2.4.0.16"]], + "code": 0, + "column_meta": [ + [ + "server_version()", + "VARCHAR", + 7 + ] + ], + "data": [ + [ + "3.0.0.0" + ] + ], "rows": 1 } ``` diff --git a/docs/zh/14-reference/04-taosadapter.md b/docs/zh/14-reference/04-taosadapter.md index 9baafb9b95..6177b52e4c 100644 --- a/docs/zh/14-reference/04-taosadapter.md +++ b/docs/zh/14-reference/04-taosadapter.md @@ -30,7 +30,7 @@ taosAdapter 提供以下功能: ### 安装 taosAdapter -taosAdapter 从 TDengine v2.4.0.0 版本开始成为 TDengine 服务端软件 的一部分,如果您使用 TDengine server 您不需要任何额外的步骤来安装 taosAdapter。您可以从[涛思数据官方网站](https://taosdata.com/cn/all-downloads/)下载 TDengine server(taosAdapter 包含在 v2.4.0.0 及以上版本)安装包。如果需要将 taosAdapter 分离部署在 TDengine server 之外的服务器上,则应该在该服务器上安装完整的 TDengine 来安装 taosAdapter。如果您需要使用源代码编译生成 taosAdapter,您可以参考[构建 taosAdapter](https://github.com/taosdata/taosadapter/blob/3.0/BUILD-CN.md)文档。 +taosAdapter 是 TDengine 服务端软件 的一部分,如果您使用 TDengine server 您不需要任何额外的步骤来安装 taosAdapter。您可以从[涛思数据官方网站](https://taosdata.com/cn/all-downloads/)下载 TDengine server 安装包。如果需要将 taosAdapter 分离部署在 TDengine server 之外的服务器上,则应该在该服务器上安装完整的 TDengine 来安装 taosAdapter。如果您需要使用源代码编译生成 taosAdapter,您可以参考[构建 taosAdapter](https://github.com/taosdata/taosadapter/blob/3.0/BUILD-CN.md)文档。 ### start/stop taosAdapter @@ -329,4 +329,4 @@ taosAdapter 通过参数 `restfulRowLimit` 来控制结果的返回条数,-1 | 3 | telegrafUseFieldNum | 请参考 taosAdapter telegraf 配置方法 | | 4 | restfulRowLimit | restfulRowLimit | 内嵌 httpd 默认输出 10240 行数据,最大允许值为 102400。taosAdapter 也提供 restfulRowLimit 但是默认不做限制。您可以根据实际场景需求进行配置 | | 5 | httpDebugFlag | 不适用 | httpdDebugFlag 对 taosAdapter 不起作用 | -| 6 | httpDBNameMandatory | 不适用 | taosAdapter 要求 URL 中必须指定数据库名 | \ No newline at end of file +| 6 | httpDBNameMandatory | 不适用 | taosAdapter 要求 URL 中必须指定数据库名 | diff --git a/docs/zh/14-reference/12-directory.md b/docs/zh/14-reference/12-directory.md index 262eb99fa5..04aa6e72c9 100644 --- a/docs/zh/14-reference/12-directory.md +++ b/docs/zh/14-reference/12-directory.md @@ -30,7 +30,7 @@ TDengine 的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下 - _taosd-dump-cfg.gdb_:用于方便调试 taosd 的 gdb 执行脚本。 :::note -2.4.0.0 版本之后的 taosBenchmark 和 taosdump 需要安装独立安装包 taosTools。 +taosdump 需要安装独立安装包 taosTools。 ::: diff --git a/docs/zh/25-application/01-telegraf.md b/docs/zh/25-application/01-telegraf.md index 95df8699ef..a949fa9721 100644 --- a/docs/zh/25-application/01-telegraf.md +++ b/docs/zh/25-application/01-telegraf.md @@ -34,7 +34,7 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如 ### TDengine -从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 2.4.0.x 或以上版本安装。 +从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 版本安装。 ## 数据链路设置 @@ -79,4 +79,4 @@ sudo systemctl start telegraf ## 总结 -以上演示如何快速搭建一个完整的 IT 运维展示系统。得力于 TDengine 2.4.0.0 版本中新增的 schemaless 协议解析功能,以及强大的生态软件适配能力,用户可以短短数分钟就可以搭建一个高效易用的 IT 运维系统。TDengine 强大的数据写入查询性能和其他丰富功能请参考官方文档和产品落地案例。 +以上演示如何快速搭建一个完整的 IT 运维展示系统。得力于 TDengine 的 schemaless 协议解析功能,以及强大的生态软件适配能力,用户可以短短数分钟就可以搭建一个高效易用的 IT 运维系统。TDengine 强大的数据写入查询性能和其他丰富功能请参考官方文档和产品落地案例。 diff --git a/docs/zh/25-application/02-collectd.md b/docs/zh/25-application/02-collectd.md index 78c61bb969..6bdebd5030 100644 --- a/docs/zh/25-application/02-collectd.md +++ b/docs/zh/25-application/02-collectd.md @@ -36,7 +36,7 @@ IT 运维监测数据通常都是对时间特性比较敏感的数据,例如 ### 安装 TDengine -从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 2.4.0.x 或以上版本安装。 +从涛思数据官网[下载](http://taosdata.com/cn/all-downloads/)页面下载最新 TDengine-server 版本安装。 ## 数据链路设置 @@ -90,6 +90,6 @@ repeater 部分添加 { host:'', port: Date: Tue, 23 Aug 2022 15:13:20 +0800 Subject: [PATCH 13/43] doc: fix broken links --- docs/zh/14-reference/07-tdinsight/index.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh/14-reference/07-tdinsight/index.mdx b/docs/zh/14-reference/07-tdinsight/index.mdx index f4b981cb65..9548922e65 100644 --- a/docs/zh/14-reference/07-tdinsight/index.mdx +++ b/docs/zh/14-reference/07-tdinsight/index.mdx @@ -5,13 +5,13 @@ sidebar_label: TDinsight TDinsight 是使用监控数据库和 [Grafana] 对 TDengine 进行监控的解决方案。 -TDengine 通过 [taosKeeper](../../taosKeeper) 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度、慢查询等信息定时写入指定数据库,并对重要的系统操作(比如登录、创建、删除数据库等)以及各种错误报警信息进行记录。通过 [Grafana] 和 [TDengine 数据源插件](https://github.com/taosdata/grafanaplugin/releases),TDinsight 将集群状态、节点信息、插入及查询请求、资源使用情况等进行可视化展示,同时还支持 vnode、dnode、mnode 节点状态异常告警,为开发者实时监控 TDengine 集群运行状态提供了便利。本文将指导用户安装 Grafana 服务器并通过 `TDinsight.sh` 安装脚本自动安装 TDengine 数据源插件及部署 TDinsight 可视化面板。 +TDengine 通过 [taosKeeper](../taosKeeper) 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度、慢查询等信息定时写入指定数据库,并对重要的系统操作(比如登录、创建、删除数据库等)以及各种错误报警信息进行记录。通过 [Grafana] 和 [TDengine 数据源插件](https://github.com/taosdata/grafanaplugin/releases),TDinsight 将集群状态、节点信息、插入及查询请求、资源使用情况等进行可视化展示,同时还支持 vnode、dnode、mnode 节点状态异常告警,为开发者实时监控 TDengine 集群运行状态提供了便利。本文将指导用户安装 Grafana 服务器并通过 `TDinsight.sh` 安装脚本自动安装 TDengine 数据源插件及部署 TDinsight 可视化面板。 ## 系统要求 - 单节点的 TDengine 服务器或多节点的 [TDengine] 集群,以及一个[Grafana]服务器。此仪表盘需要 TDengine 3.0.0.0 及以上,并开启监控服务,具体配置请参考:[TDengine 监控配置](../config/#监控相关)。 -- taosAdapter 已经安装并正常运行。具体细节请参考:[taosAdapter 使用手册](../../taosadapter) -- taosKeeper 已安装并正常运行。具体细节请参考:[taosKeeper 使用手册](../../taosKeeper) +- taosAdapter 已经安装并正常运行。具体细节请参考:[taosAdapter 使用手册](../taosadapter) +- taosKeeper 已安装并正常运行。具体细节请参考:[taosKeeper 使用手册](../taosKeeper) 记录以下信息: From 717f837cbb63c1046b26d96e1f0b53db5147afa8 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 23 Aug 2022 15:24:50 +0800 Subject: [PATCH 14/43] fix: auto create table insert statement check table name --- source/libs/executor/src/executil.c | 1 + source/libs/executor/src/executor.c | 3 ++ source/libs/executor/src/executorimpl.c | 4 +++ source/libs/executor/src/scanoperator.c | 1 + source/libs/parser/src/parInsert.c | 41 ++++++++++++++++++++++++- 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 2781fee956..118c061c3a 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -782,6 +782,7 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode, colDataDestroy(pColInfoData); taosMemoryFreeClear(pColInfoData); taosArrayDestroy(res); + qError("failed to getColInfoResult, code: %s", tstrerror(terrno)); return terrno; } diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index d8f63cb008..fe1f4911ca 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -352,12 +352,14 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId, int32_t code = createExecTaskInfoImpl(pSubplan, pTask, readHandle, taskId, sql, model); if (code != TSDB_CODE_SUCCESS) { + qError("failed to createExecTaskInfoImpl, code: %s", tstrerror(code)); goto _error; } SDataSinkMgtCfg cfg = {.maxDataBlockNum = 10000, .maxDataBlockNumPerQuery = 5000}; code = dsDataSinkMgtInit(&cfg); if (code != TSDB_CODE_SUCCESS) { + qError("failed to dsDataSinkMgtInit, code: %s", tstrerror(code)); goto _error; } @@ -365,6 +367,7 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId, void* pSinkParam = NULL; code = createDataSinkParam(pSubplan->pDataSink, &pSinkParam, pTaskInfo, readHandle); if (code != TSDB_CODE_SUCCESS) { + qError("failed to createDataSinkParam, code: %s", tstrerror(code)); goto _error; } diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index 2d72bc813f..3bff48014a 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -4049,6 +4049,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo pTableListInfo, pTagCond, pTagIndexCond, GET_TASKID(pTaskInfo)); if (code) { pTaskInfo->code = code; + qError("failed to createScanTableListInfo, code: %s", tstrerror(code)); return NULL; } @@ -4068,6 +4069,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo pTableListInfo, pTagCond, pTagIndexCond, GET_TASKID(pTaskInfo)); if (code) { pTaskInfo->code = code; + qError("failed to createScanTableListInfo, code: %s", tstrerror(code)); return NULL; } @@ -4091,6 +4093,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo pHandle, pTableListInfo, pTagCond, pTagIndexCond, GET_TASKID(pTaskInfo)); if (code) { pTaskInfo->code = code; + qError("failed to createScanTableListInfo, code: %s", tstrerror(code)); return NULL; } @@ -4113,6 +4116,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo int32_t code = getTableList(pHandle->meta, pHandle->vnode, pScanPhyNode, pTagCond, pTagIndexCond, pTableListInfo); if (code != TSDB_CODE_SUCCESS) { pTaskInfo->code = terrno; + qError("failed to getTableList, code: %s", tstrerror(code)); return NULL; } diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 1377b42b72..599f86f4fa 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -2649,6 +2649,7 @@ int32_t createScanTableListInfo(SScanPhysiNode* pScanNode, SNodeList* pGroupTags int32_t code = getTableList(pHandle->meta, pHandle->vnode, pScanNode, pTagCond, pTagIndexCond, pTableListInfo); if (code != TSDB_CODE_SUCCESS) { + qError("failed to getTableList, code: %s", tstrerror(code)); return code; } diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index de9f815618..4e32672697 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -125,6 +125,37 @@ static int32_t skipInsertInto(char** pSql, SMsgBuf* pMsg) { return TSDB_CODE_SUCCESS; } +static char* tableNameGetPosition(SToken* pToken, char target) { + bool inEscape = false; + bool inQuote = false; + char quotaStr = 0; + + for (uint32_t i = 0; i < pToken->n; ++i) { + if (*(pToken->z + i) == target && (!inEscape) && (!inQuote)) { + return pToken->z + i; + } + + if (*(pToken->z + i) == TS_ESCAPE_CHAR) { + if (!inQuote) { + inEscape = !inEscape; + } + } + + if (*(pToken->z + i) == '\'' || *(pToken->z + i) == '"') { + if (!inEscape) { + if (!inQuote) { + quotaStr = *(pToken->z + i); + inQuote = !inQuote; + } else if (quotaStr == *(pToken->z + i)) { + inQuote = !inQuote; + } + } + } + } + + return NULL; +} + static int32_t createSName(SName* pName, SToken* pTableName, int32_t acctId, const char* dbName, SMsgBuf* pMsgBuf) { const char* msg1 = "name too long"; const char* msg2 = "invalid database name"; @@ -132,7 +163,7 @@ static int32_t createSName(SName* pName, SToken* pTableName, int32_t acctId, con const char* msg4 = "invalid table name"; int32_t code = TSDB_CODE_SUCCESS; - char* p = strnchr(pTableName->z, TS_PATH_DELIMITER[0], pTableName->n, true); + char* p = tableNameGetPosition(pTableName, TS_PATH_DELIMITER[0]); if (p != NULL) { // db has been specified in sql string so we ignore current db path assert(*p == TS_PATH_DELIMITER[0]); @@ -1691,9 +1722,17 @@ static int32_t collectTableMetaKey(SInsertParseSyntaxCxt* pCxt, bool isStable, i return TSDB_CODE_SUCCESS; } +static int32_t checkTableName(const char* pTableName, SMsgBuf* pMsgBuf) { + if (NULL != strchr(pTableName, '.')) { + return generateSyntaxErrMsgExt(pMsgBuf, TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME, "The table name cannot contain '.'"); + } + return TSDB_CODE_SUCCESS; +} + static int32_t collectAutoCreateTableMetaKey(SInsertParseSyntaxCxt* pCxt, int32_t tableNo, SToken* pTbToken) { SName name; CHECK_CODE(createSName(&name, pTbToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); + CHECK_CODE(checkTableName(name.tname, &pCxt->msg)); CHECK_CODE(reserveTableMetaInCacheForInsert(&name, CATALOG_REQ_TYPE_VGROUP, tableNo, pCxt->pMetaCache)); return TSDB_CODE_SUCCESS; } From 9ae8ee8b268001046d980dbb5b9984fee542c7d2 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Tue, 23 Aug 2022 15:55:52 +0800 Subject: [PATCH 15/43] build: update 3.0.0.1 version number --- cmake/cmake.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/cmake.version b/cmake/cmake.version index c8afc1a291..db29644b38 100644 --- a/cmake/cmake.version +++ b/cmake/cmake.version @@ -2,7 +2,7 @@ IF (DEFINED VERNUMBER) SET(TD_VER_NUMBER ${VERNUMBER}) ELSE () - SET(TD_VER_NUMBER "3.0.0.0") + SET(TD_VER_NUMBER "3.0.0.1") ENDIF () IF (DEFINED VERCOMPATIBLE) From 2889b8d9135b972f00300a3c10b5c1661aaf0cb8 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Tue, 23 Aug 2022 17:28:08 +0800 Subject: [PATCH 16/43] refactor(query): do some internal refactor. --- source/dnode/vnode/src/tsdb/tsdbRead.c | 30 +++++++++++++--------- source/libs/executor/src/executorimpl.c | 1 + source/libs/executor/src/projectoperator.c | 24 +++++++++++------ 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index a4738781f5..bbef249079 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -178,7 +178,7 @@ static int32_t doAppendRowFromFileBlock(SSDataBlock* pResBlock, STsdbReader* pR static void setComposedBlockFlag(STsdbReader* pReader, bool composed); static bool hasBeenDropped(const SArray* pDelList, int32_t* index, TSDBKEY* pKey, int32_t order); -static void doMergeMultiRows(TSDBROW* pRow, uint64_t uid, SIterInfo* pIter, SArray* pDelList, STSRow** pTSRow, +static void doMergeMemTableMultiRows(TSDBROW* pRow, uint64_t uid, SIterInfo* pIter, SArray* pDelList, STSRow** pTSRow, STsdbReader* pReader, bool* freeTSRow); static void doMergeMemIMemRows(TSDBROW* pRow, TSDBROW* piRow, STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader, STSRow** pTSRow); @@ -1510,6 +1510,7 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf return TSDB_CODE_SUCCESS; } +#if 0 static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, TSDBROW* pRow, SIterInfo* pIter, int64_t key, SLastBlockReader* pLastBlockReader) { SRowMerger merge = {0}; @@ -1536,7 +1537,7 @@ static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* freeTSRow = true; } } else if (k.ts < key) { // k.ts < key - doMergeMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); } else { // k.ts == key, ascending order: file block ----> imem rows -----> mem rows tRowMergerInit(&merge, &fRow, pReader->pSchema); doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); @@ -1549,7 +1550,7 @@ static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* } } else { // descending order scan if (key < k.ts) { - doMergeMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); } else if (k.ts < key) { if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { return TSDB_CODE_SUCCESS; @@ -1583,6 +1584,8 @@ static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* return TSDB_CODE_SUCCESS; } +#endif + static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, SBlockData* pBlockData, SLastBlockReader* pLastBlockReader) { SRowMerger merge = {0}; STSRow* pTSRow = NULL; @@ -1734,6 +1737,7 @@ static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo return TSDB_CODE_SUCCESS; } +#if 0 static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, SBlockData* pBlockData) { SRowMerger merge = {0}; STSRow* pTSRow = NULL; @@ -1779,7 +1783,7 @@ static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* // [3] ik.ts < key <= k.ts // [4] ik.ts < k.ts <= key if (ik.ts < k.ts) { - doMergeMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, uid); if (freeTSRow) { taosMemoryFree(pTSRow); @@ -1790,7 +1794,7 @@ static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* // [5] k.ts < key <= ik.ts // [6] k.ts < ik.ts <= key if (k.ts < ik.ts) { - doMergeMultiRows(pRow, uid, &pBlockScanInfo->iter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(pRow, uid, &pBlockScanInfo->iter, pDelList, &pTSRow, pReader, &freeTSRow); doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, uid); if (freeTSRow) { taosMemoryFree(pTSRow); @@ -1836,7 +1840,7 @@ static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* // [3] ik.ts > k.ts >= Key // [4] ik.ts > key >= k.ts if (ik.ts > key) { - doMergeMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, uid); if (freeTSRow) { taosMemoryFree(pTSRow); @@ -1859,7 +1863,7 @@ static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* //[7] key = ik.ts > k.ts if (key == ik.ts) { - doMergeMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, &pTSRow, pReader, &freeTSRow); TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex); tRowMerge(&merge, &fRow); @@ -1876,6 +1880,7 @@ static int32_t doMergeThreeLevelRows(STsdbReader* pReader, STableBlockScanInfo* ASSERT(0); return -1; } +#endif static bool isValidFileBlockRow(SBlockData* pBlockData, SFileBlockDumpInfo* pDumpInfo, STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader) { @@ -3115,7 +3120,7 @@ int32_t doMergeRowsInLastBlock(SLastBlockReader* pLastBlockReader, STableBlockSc return TSDB_CODE_SUCCESS; } -void doMergeMultiRows(TSDBROW* pRow, uint64_t uid, SIterInfo* pIter, SArray* pDelList, STSRow** pTSRow, +void doMergeMemTableMultiRows(TSDBROW* pRow, uint64_t uid, SIterInfo* pIter, SArray* pDelList, STSRow** pTSRow, STsdbReader* pReader, bool* freeTSRow) { TSDBROW* pNextRow = NULL; TSDBROW current = *pRow; @@ -3197,6 +3202,7 @@ int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbReader* pR TSDBROW* pRow = getValidRow(&pBlockScanInfo->iter, pBlockScanInfo->delSkyline, pReader); TSDBROW* piRow = getValidRow(&pBlockScanInfo->iiter, pBlockScanInfo->delSkyline, pReader); SArray* pDelList = pBlockScanInfo->delSkyline; + uint64_t uid = pBlockScanInfo->uid; // todo refactor bool asc = ASCENDING_TRAVERSE(pReader->order); @@ -3219,9 +3225,9 @@ int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbReader* pR TSDBKEY ik = TSDBROW_KEY(piRow); if (ik.ts < k.ts) { // ik.ts < k.ts - doMergeMultiRows(piRow, pBlockScanInfo->uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); } else if (k.ts < ik.ts) { - doMergeMultiRows(pRow, pBlockScanInfo->uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); + doMergeMemTableMultiRows(pRow, uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); } else { // ik.ts == k.ts doMergeMemIMemRows(pRow, piRow, pBlockScanInfo, pReader, pTSRow); *freeTSRow = true; @@ -3231,12 +3237,12 @@ int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbReader* pR } if (pBlockScanInfo->iter.hasVal && pRow != NULL) { - doMergeMultiRows(pRow, pBlockScanInfo->uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); + doMergeMemTableMultiRows(pRow, pBlockScanInfo->uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); return TSDB_CODE_SUCCESS; } if (pBlockScanInfo->iiter.hasVal && piRow != NULL) { - doMergeMultiRows(piRow, pBlockScanInfo->uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); return TSDB_CODE_SUCCESS; } diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index 82723eebf2..9e56d63673 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -3487,6 +3487,7 @@ int32_t doInitAggInfoSup(SAggSupporter* pAggSup, SqlFunctionCtx* pCtx, int32_t n qError("Init stream agg supporter failed since %s", terrstr(terrno)); return terrno; } + int32_t code = createDiskbasedBuf(&pAggSup->pResultBuf, defaultPgsz, defaultBufsz, pKey, tsTempDir); if (code != TSDB_CODE_SUCCESS) { qError("Create agg result buf failed since %s", tstrerror(code)); diff --git a/source/libs/executor/src/projectoperator.c b/source/libs/executor/src/projectoperator.c index f2b79bf703..94da3e23e1 100644 --- a/source/libs/executor/src/projectoperator.c +++ b/source/libs/executor/src/projectoperator.c @@ -50,9 +50,11 @@ static void destroyIndefinitOperatorInfo(void* param, int32_t numOfOutput) { SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhysiNode* pProjPhyNode, SExecTaskInfo* pTaskInfo) { + int32_t code = TSDB_CODE_SUCCESS; SProjectOperatorInfo* pInfo = taosMemoryCalloc(1, sizeof(SProjectOperatorInfo)); SOperatorInfo* pOperator = taosMemoryCalloc(1, sizeof(SOperatorInfo)); if (pInfo == NULL || pOperator == NULL) { + code = TSDB_CODE_OUT_OF_MEMORY; goto _error; } @@ -67,12 +69,11 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhys pInfo->binfo.pRes = pResBlock; pInfo->pFinalRes = createOneDataBlock(pResBlock, false); pInfo->pFilterNode = pProjPhyNode->node.pConditions; - pInfo->mergeDataBlocks = pProjPhyNode->mergeDataBlock; - - // todo remove it soon if (pTaskInfo->execModel == OPTR_EXEC_MODEL_STREAM) { pInfo->mergeDataBlocks = false; + } else { + pInfo->mergeDataBlocks = pProjPhyNode->mergeDataBlock; } int32_t numOfRows = 4096; @@ -83,9 +84,13 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhys if (numOfRows * pResBlock->info.rowSize > TWOMB) { numOfRows = TWOMB / pResBlock->info.rowSize; } - initResultSizeInfo(&pOperator->resultInfo, numOfRows); - initAggInfo(&pOperator->exprSupp, &pInfo->aggSup, pExprInfo, numOfCols, keyBufSize, pTaskInfo->id.str); + initResultSizeInfo(&pOperator->resultInfo, numOfRows); + code = initAggInfo(&pOperator->exprSupp, &pInfo->aggSup, pExprInfo, numOfCols, keyBufSize, pTaskInfo->id.str); + if (code != TSDB_CODE_SUCCESS) { + goto _error; + } + initBasicInfo(&pInfo->binfo, pResBlock); setFunctionResultOutput(pOperator, &pInfo->binfo, &pInfo->aggSup, MAIN_SCAN, numOfCols); @@ -99,7 +104,7 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhys pOperator->fpSet = createOperatorFpSet(operatorDummyOpenFn, doProjectOperation, NULL, NULL, destroyProjectOperatorInfo, NULL, NULL, NULL); - int32_t code = appendDownstream(pOperator, &downstream, 1); + code = appendDownstream(pOperator, &downstream, 1); if (code != TSDB_CODE_SUCCESS) { goto _error; } @@ -107,7 +112,9 @@ SOperatorInfo* createProjectOperatorInfo(SOperatorInfo* downstream, SProjectPhys return pOperator; _error: - pTaskInfo->code = TSDB_CODE_OUT_OF_MEMORY; + destroyProjectOperatorInfo(pInfo, numOfCols); + taosMemoryFree(pOperator); + pTaskInfo->code = code; return NULL; } @@ -175,7 +182,8 @@ static int32_t doIngroupLimitOffset(SLimitInfo* pLimitInfo, uint64_t groupId, SS int32_t keepRows = (int32_t)(pLimitInfo->limit.limit - pLimitInfo->numOfOutputRows); blockDataKeepFirstNRows(pBlock, keepRows); //TODO: optimize it later when partition by + limit - if ((pLimitInfo->slimit.limit == -1 && pLimitInfo->currentGroupId == 0) || pLimitInfo->slimit.limit > 0 && pLimitInfo->slimit.limit <= pLimitInfo->numOfOutputGroups) { + if ((pLimitInfo->slimit.limit == -1 && pLimitInfo->currentGroupId == 0) || + (pLimitInfo->slimit.limit > 0 && pLimitInfo->slimit.limit <= pLimitInfo->numOfOutputGroups)) { doSetOperatorCompleted(pOperator); } } From b0263a4bea50d77316f241689ad6238646b9af07 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 23 Aug 2022 17:29:31 +0800 Subject: [PATCH 17/43] enh: increase startup time monitoring --- include/common/tglobal.h | 1 + include/common/tmsgdef.h | 1 + source/common/src/systable.c | 3 +- source/common/src/tglobal.c | 1 + source/dnode/mnode/impl/inc/mndCluster.h | 1 + source/dnode/mnode/impl/inc/mndDef.h | 1 + source/dnode/mnode/impl/src/mndCluster.c | 113 +++++++++++++++++++---- source/dnode/mnode/impl/src/mndMain.c | 20 +++- source/dnode/mnode/impl/src/mndSync.c | 10 +- source/libs/transport/src/thttp.c | 4 +- source/util/src/tcache.c | 2 +- source/util/src/tcompression.c | 4 +- tests/script/tmp/monitor.sim | 4 +- 13 files changed, 133 insertions(+), 32 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index cd74ffd477..f872d1dbc2 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -130,6 +130,7 @@ extern int32_t tsMqRebalanceInterval; extern int32_t tsTtlUnit; extern int32_t tsTtlPushInterval; extern int32_t tsGrantHBInterval; +extern int32_t tsUptimeInterval; #define NEEDTO_COMPRESSS_MSG(size) (tsCompressMsgSize != -1 && (size) > tsCompressMsgSize) diff --git a/include/common/tmsgdef.h b/include/common/tmsgdef.h index e2bb3e2ae1..006ba7f21b 100644 --- a/include/common/tmsgdef.h +++ b/include/common/tmsgdef.h @@ -170,6 +170,7 @@ enum { TD_DEF_MSG_TYPE(TDMT_MND_SPLIT_VGROUP, "split-vgroup", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_SHOW_VARIABLES, "show-variables", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_SERVER_VERSION, "server-version", NULL, NULL) + TD_DEF_MSG_TYPE(TDMT_MND_UPTIME_TIMER, "uptime-timer", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_MAX_MSG, "mnd-max", NULL, NULL) TD_NEW_MSG_SEG(TDMT_VND_MSG) diff --git a/source/common/src/systable.c b/source/common/src/systable.c index 65041e1f12..68a77a9f33 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -66,8 +66,9 @@ static const SSysDbTableSchema bnodesSchema[] = { }; static const SSysDbTableSchema clusterSchema[] = { - {.name = "id", .bytes = 4, .type = TSDB_DATA_TYPE_INT}, + {.name = "id", .bytes = 8, .type = TSDB_DATA_TYPE_BIGINT}, {.name = "name", .bytes = TSDB_CLUSTER_ID_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR}, + {.name = "uptime", .bytes = 4, .type = TSDB_DATA_TYPE_INT}, {.name = "create_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP}, }; diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index adc5af1a17..a628f551f4 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -164,6 +164,7 @@ int32_t tsMqRebalanceInterval = 2; int32_t tsTtlUnit = 86400; int32_t tsTtlPushInterval = 86400; int32_t tsGrantHBInterval = 60; +int32_t tsUptimeInterval = 300; // seconds #ifndef _STORAGE int32_t taosSetTfsCfg(SConfig *pCfg) { diff --git a/source/dnode/mnode/impl/inc/mndCluster.h b/source/dnode/mnode/impl/inc/mndCluster.h index 0de253fb6a..2cb41edd7c 100644 --- a/source/dnode/mnode/impl/inc/mndCluster.h +++ b/source/dnode/mnode/impl/inc/mndCluster.h @@ -27,6 +27,7 @@ void mndCleanupCluster(SMnode *pMnode); int32_t mndGetClusterName(SMnode *pMnode, char *clusterName, int32_t len); int64_t mndGetClusterId(SMnode *pMnode); int64_t mndGetClusterCreateTime(SMnode *pMnode); +float mndGetClusterUpTime(SMnode *pMnode); #ifdef __cplusplus } diff --git a/source/dnode/mnode/impl/inc/mndDef.h b/source/dnode/mnode/impl/inc/mndDef.h index 8cff7fe48e..ea05215fe9 100644 --- a/source/dnode/mnode/impl/inc/mndDef.h +++ b/source/dnode/mnode/impl/inc/mndDef.h @@ -179,6 +179,7 @@ typedef struct { char name[TSDB_CLUSTER_ID_LEN]; int64_t createdTime; int64_t updateTime; + int32_t upTime; } SClusterObj; typedef struct { diff --git a/source/dnode/mnode/impl/src/mndCluster.c b/source/dnode/mnode/impl/src/mndCluster.c index a82bf739f5..7d633f90bd 100644 --- a/source/dnode/mnode/impl/src/mndCluster.c +++ b/source/dnode/mnode/impl/src/mndCluster.c @@ -19,7 +19,7 @@ #include "mndTrans.h" #define CLUSTER_VER_NUMBE 1 -#define CLUSTER_RESERVE_SIZE 64 +#define CLUSTER_RESERVE_SIZE 60 static SSdbRaw *mndClusterActionEncode(SClusterObj *pCluster); static SSdbRow *mndClusterActionDecode(SSdbRaw *pRaw); @@ -29,6 +29,7 @@ static int32_t mndClusterActionUpdate(SSdb *pSdb, SClusterObj *pOldCluster, SCl static int32_t mndCreateDefaultCluster(SMnode *pMnode); static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows); static void mndCancelGetNextCluster(SMnode *pMnode, void *pIter); +static int32_t mndProcessUptimeTimer(SRpcMsg *pReq); int32_t mndInitCluster(SMnode *pMnode) { SSdbTable table = { @@ -42,8 +43,10 @@ int32_t mndInitCluster(SMnode *pMnode) { .deleteFp = (SdbDeleteFp)mndClusterActionDelete, }; + mndSetMsgHandle(pMnode, TDMT_MND_UPTIME_TIMER, mndProcessUptimeTimer); mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_CLUSTER, mndRetrieveClusters); mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_CLUSTER, mndCancelGetNextCluster); + return sdbSetTable(pMnode->pSdb, table); } @@ -62,40 +65,69 @@ int32_t mndGetClusterName(SMnode *pMnode, char *clusterName, int32_t len) { return 0; } -int64_t mndGetClusterId(SMnode *pMnode) { - SSdb *pSdb = pMnode->pSdb; - void *pIter = NULL; - int64_t clusterId = -1; +static SClusterObj *mndAcquireCluster(SMnode *pMnode) { + SSdb *pSdb = pMnode->pSdb; + void *pIter = NULL; while (1) { SClusterObj *pCluster = NULL; pIter = sdbFetch(pSdb, SDB_CLUSTER, pIter, (void **)&pCluster); if (pIter == NULL) break; + return pCluster; + } + + return NULL; +} + +static void mndReleaseCluster(SMnode *pMnode, SClusterObj *pCluster) { + SSdb *pSdb = pMnode->pSdb; + sdbRelease(pSdb, pCluster); +} + +int64_t mndGetClusterId(SMnode *pMnode) { + int64_t clusterId = 0; + SClusterObj *pCluster = mndAcquireCluster(pMnode); + if (pCluster != NULL) { clusterId = pCluster->id; - sdbRelease(pSdb, pCluster); + mndReleaseCluster(pMnode, pCluster); } return clusterId; } int64_t mndGetClusterCreateTime(SMnode *pMnode) { - SSdb *pSdb = pMnode->pSdb; - void *pIter = NULL; - int64_t createTime = INT64_MAX; - - while (1) { - SClusterObj *pCluster = NULL; - pIter = sdbFetch(pSdb, SDB_CLUSTER, pIter, (void **)&pCluster); - if (pIter == NULL) break; - + int64_t createTime = 0; + SClusterObj *pCluster = mndAcquireCluster(pMnode); + if (pCluster != NULL) { createTime = pCluster->createdTime; - sdbRelease(pSdb, pCluster); + mndReleaseCluster(pMnode, pCluster); } return createTime; } +static int32_t mndGetClusterUpTimeImp(SClusterObj *pCluster) { +#if 0 + int32_t upTime = taosGetTimestampSec() - pCluster->updateTime / 1000; + upTime = upTime + pCluster->upTime; + return upTime; +#else + return pCluster->upTime; +#endif +} + +float mndGetClusterUpTime(SMnode *pMnode) { + int64_t upTime = 0; + SClusterObj *pCluster = mndAcquireCluster(pMnode); + if (pCluster != NULL) { + upTime = mndGetClusterUpTimeImp(pCluster); + mndReleaseCluster(pMnode, pCluster); + } + + return upTime / 86400.0f; +} + static SSdbRaw *mndClusterActionEncode(SClusterObj *pCluster) { terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -107,6 +139,7 @@ static SSdbRaw *mndClusterActionEncode(SClusterObj *pCluster) { SDB_SET_INT64(pRaw, dataPos, pCluster->createdTime, _OVER) SDB_SET_INT64(pRaw, dataPos, pCluster->updateTime, _OVER) SDB_SET_BINARY(pRaw, dataPos, pCluster->name, TSDB_CLUSTER_ID_LEN, _OVER) + SDB_SET_INT32(pRaw, dataPos, pCluster->upTime, _OVER) SDB_SET_RESERVE(pRaw, dataPos, CLUSTER_RESERVE_SIZE, _OVER) terrno = 0; @@ -144,6 +177,7 @@ static SSdbRow *mndClusterActionDecode(SSdbRaw *pRaw) { SDB_GET_INT64(pRaw, dataPos, &pCluster->createdTime, _OVER) SDB_GET_INT64(pRaw, dataPos, &pCluster->updateTime, _OVER) SDB_GET_BINARY(pRaw, dataPos, pCluster->name, TSDB_CLUSTER_ID_LEN, _OVER) + SDB_GET_INT32(pRaw, dataPos, &pCluster->upTime, _OVER) SDB_GET_RESERVE(pRaw, dataPos, CLUSTER_RESERVE_SIZE, _OVER) terrno = 0; @@ -162,6 +196,7 @@ _OVER: static int32_t mndClusterActionInsert(SSdb *pSdb, SClusterObj *pCluster) { mTrace("cluster:%" PRId64 ", perform insert action, row:%p", pCluster->id, pCluster); pSdb->pMnode->clusterId = pCluster->id; + pCluster->updateTime = taosGetTimestampMs(); return 0; } @@ -171,7 +206,10 @@ static int32_t mndClusterActionDelete(SSdb *pSdb, SClusterObj *pCluster) { } static int32_t mndClusterActionUpdate(SSdb *pSdb, SClusterObj *pOld, SClusterObj *pNew) { - mTrace("cluster:%" PRId64 ", perform update action, old row:%p new row:%p", pOld->id, pOld, pNew); + mTrace("cluster:%" PRId64 ", perform update action, old row:%p new row:%p, uptime from %d to %d", pOld->id, pOld, + pNew, pOld->upTime, pNew->upTime); + pOld->upTime = pNew->upTime; + pOld->updateTime = taosGetTimestampMs(); return 0; } @@ -242,6 +280,10 @@ static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock * pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); colDataAppend(pColInfo, numOfRows, buf, false); + int32_t upTime = mndGetClusterUpTimeImp(pCluster); + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + colDataAppend(pColInfo, numOfRows, (const char *)&upTime, false); + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); colDataAppend(pColInfo, numOfRows, (const char *)&pCluster->createdTime, false); @@ -257,3 +299,40 @@ static void mndCancelGetNextCluster(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; sdbCancelFetch(pSdb, pIter); } + +static int32_t mndProcessUptimeTimer(SRpcMsg *pReq) { + SMnode *pMnode = pReq->info.node; + SClusterObj clusterObj = {0}; + SClusterObj *pCluster = mndAcquireCluster(pMnode); + if (pCluster != NULL) { + memcpy(&clusterObj, pCluster, sizeof(SClusterObj)); + clusterObj.upTime += tsUptimeInterval; + mndReleaseCluster(pMnode, pCluster); + } + + if (clusterObj.id <= 0) { + mError("can't get cluster info while update uptime"); + return 0; + } + + mTrace("update cluster uptime to %" PRId64, clusterObj.upTime); + STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, TRN_CONFLICT_NOTHING, pReq); + if (pTrans == NULL) return -1; + + SSdbRaw *pCommitRaw = mndClusterActionEncode(&clusterObj); + if (pCommitRaw == NULL || mndTransAppendCommitlog(pTrans, pCommitRaw) != 0) { + mError("trans:%d, failed to append commit log since %s", pTrans->id, terrstr()); + mndTransDrop(pTrans); + return -1; + } + sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY); + + if (mndTransPrepare(pMnode, pTrans) != 0) { + mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr()); + mndTransDrop(pTrans); + return -1; + } + + mndTransDrop(pTrans); + return 0; +} diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index c3296ac5c1..aa775c5ffa 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -100,6 +100,16 @@ static void mndGrantHeartBeat(SMnode *pMnode) { } } +static void mndIncreaseUpTime(SMnode *pMnode) { + int32_t contLen = 0; + void *pReq = mndBuildTimerMsg(&contLen); + if (pReq != NULL) { + SRpcMsg rpcMsg = { + .msgType = TDMT_MND_UPTIME_TIMER, .pCont = pReq, .contLen = contLen, .info.ahandle = (void *)0x9528}; + tmsgPutToQueue(&pMnode->msgCb, WRITE_QUEUE, &rpcMsg); + } +} + static void *mndThreadFp(void *param) { SMnode *pMnode = param; int64_t lastTime = 0; @@ -129,6 +139,10 @@ static void *mndThreadFp(void *param) { if (lastTime % (tsGrantHBInterval * 10) == 0) { mndGrantHeartBeat(pMnode); } + + if ((lastTime % (tsUptimeInterval * 10)) == ((tsUptimeInterval - 1) * 10)) { + mndIncreaseUpTime(pMnode); + } } return NULL; @@ -556,7 +570,8 @@ static int32_t mndCheckMnodeState(SRpcMsg *pMsg) { } if (mndAcquireRpcRef(pMsg->info.node) == 0) return 0; if (pMsg->msgType == TDMT_MND_MQ_TIMER || pMsg->msgType == TDMT_MND_TELEM_TIMER || - pMsg->msgType == TDMT_MND_TRANS_TIMER || pMsg->msgType == TDMT_MND_TTL_TIMER) { + pMsg->msgType == TDMT_MND_TRANS_TIMER || pMsg->msgType == TDMT_MND_TTL_TIMER || + pMsg->msgType == TDMT_MND_UPTIME_TIMER) { return -1; } @@ -705,7 +720,8 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr if (pObj->id == pMnode->selfDnodeId) { pClusterInfo->first_ep_dnode_id = pObj->id; tstrncpy(pClusterInfo->first_ep, pObj->pDnode->ep, sizeof(pClusterInfo->first_ep)); - pClusterInfo->master_uptime = (ms - pObj->stateStartTime) / (86400000.0f); + pClusterInfo->master_uptime = mndGetClusterUpTime(pMnode); + // pClusterInfo->master_uptime = (ms - pObj->stateStartTime) / (86400000.0f); tstrncpy(desc.role, syncStr(TAOS_SYNC_STATE_LEADER), sizeof(desc.role)); } else { tstrncpy(desc.role, syncStr(pObj->state), sizeof(desc.role)); diff --git a/source/dnode/mnode/impl/src/mndSync.c b/source/dnode/mnode/impl/src/mndSync.c index 8e8cff853c..b7129cf56e 100644 --- a/source/dnode/mnode/impl/src/mndSync.c +++ b/source/dnode/mnode/impl/src/mndSync.c @@ -68,7 +68,7 @@ void mndSyncCommitMsg(struct SSyncFSM *pFsm, const SRpcMsg *pMsg, SFsmCbMeta cbM if (pMgmt->errCode != 0) { mError("trans:%d, failed to propose since %s, post sem", transId, tstrerror(pMgmt->errCode)); } else { - mInfo("trans:%d, is proposed and post sem", transId, tstrerror(pMgmt->errCode)); + mDebug("trans:%d, is proposed and post sem", transId, tstrerror(pMgmt->errCode)); } pMgmt->transId = 0; taosWUnLockLatch(&pMgmt->lock); @@ -118,7 +118,7 @@ void mndReConfig(struct SSyncFSM *pFsm, const SRpcMsg *pMsg, SReConfigCbMeta cbM SSyncMgmt *pMgmt = &pMnode->syncMgmt; pMgmt->errCode = cbMeta.code; - mInfo("trans:-1, sync reconfig is proposed, saved:%d code:0x%x, index:%" PRId64 " term:%" PRId64, pMgmt->transId, + mDebug("trans:-1, sync reconfig is proposed, saved:%d code:0x%x, index:%" PRId64 " term:%" PRId64, pMgmt->transId, cbMeta.code, cbMeta.index, cbMeta.term); taosWLockLatch(&pMgmt->lock); @@ -126,7 +126,7 @@ void mndReConfig(struct SSyncFSM *pFsm, const SRpcMsg *pMsg, SReConfigCbMeta cbM if (pMgmt->errCode != 0) { mError("trans:-1, failed to propose sync reconfig since %s, post sem", tstrerror(pMgmt->errCode)); } else { - mInfo("trans:-1, sync reconfig is proposed, saved:%d code:0x%x, index:%" PRId64 " term:%" PRId64 " post sem", + mDebug("trans:-1, sync reconfig is proposed, saved:%d code:0x%x, index:%" PRId64 " term:%" PRId64 " post sem", pMgmt->transId, cbMeta.code, cbMeta.index, cbMeta.term); } pMgmt->transId = 0; @@ -228,7 +228,7 @@ int32_t mndInitSync(SMnode *pMnode) { syncInfo.isStandBy = pMgmt->standby; syncInfo.snapshotStrategy = SYNC_STRATEGY_STANDARD_SNAPSHOT; - mInfo("start to open mnode sync, standby:%d", pMgmt->standby); + mDebug("start to open mnode sync, standby:%d", pMgmt->standby); if (pMgmt->standby || pMgmt->replica.id > 0) { SSyncCfg *pCfg = &syncInfo.syncCfg; pCfg->replicaNum = 1; @@ -236,7 +236,7 @@ int32_t mndInitSync(SMnode *pMnode) { SNodeInfo *pNode = &pCfg->nodeInfo[0]; tstrncpy(pNode->nodeFqdn, pMgmt->replica.fqdn, sizeof(pNode->nodeFqdn)); pNode->nodePort = pMgmt->replica.port; - mInfo("mnode ep:%s:%u", pNode->nodeFqdn, pNode->nodePort); + mDebug("mnode ep:%s:%u", pNode->nodeFqdn, pNode->nodePort); } tsem_init(&pMgmt->syncSem, 0, 0); diff --git a/source/libs/transport/src/thttp.c b/source/libs/transport/src/thttp.c index 7cfb188ac9..935f536a90 100644 --- a/source/libs/transport/src/thttp.c +++ b/source/libs/transport/src/thttp.c @@ -145,7 +145,7 @@ static void clientRecvCb(uv_stream_t* handle, ssize_t nread, const uv_buf_t *buf if (nread < 0) { uError("http-report read error:%s", uv_err_name(nread)); } else { - uInfo("http-report succ to read %d bytes, just ignore it", nread); + uTrace("http-report succ to read %d bytes, just ignore it", nread); } uv_close((uv_handle_t*)&cli->tcp, clientCloseCb); } @@ -155,7 +155,7 @@ static void clientSentCb(uv_write_t* req, int32_t status) { terrno = TAOS_SYSTEM_ERROR(status); uError("http-report failed to send data %s", uv_strerror(status)); } else { - uInfo("http-report succ to send data"); + uTrace("http-report succ to send data"); } uv_read_start((uv_stream_t *)&cli->tcp, clientAllocBuffCb, clientRecvCb); } diff --git a/source/util/src/tcache.c b/source/util/src/tcache.c index dd61f7d225..f9f42aa103 100644 --- a/source/util/src/tcache.c +++ b/source/util/src/tcache.c @@ -702,7 +702,7 @@ void taosCacheCleanup(SCacheObj *pCacheObj) { taosMsleep(50); } - uInfo("cache:%s will be cleaned up", pCacheObj->name); + uTrace("cache:%s will be cleaned up", pCacheObj->name); doCleanupDataCache(pCacheObj); } diff --git a/source/util/src/tcompression.c b/source/util/src/tcompression.c index e8f1f06ef1..ba877915b1 100644 --- a/source/util/src/tcompression.c +++ b/source/util/src/tcompression.c @@ -83,8 +83,8 @@ int32_t tsCompressInit() { if (lossyFloat == false && lossyDouble == false) return 0; tdszInit(fPrecision, dPrecision, maxRange, curRange, Compressor); - if (lossyFloat) uInfo("lossy compression float is opened. "); - if (lossyDouble) uInfo("lossy compression double is opened. "); + if (lossyFloat) uTrace("lossy compression float is opened. "); + if (lossyDouble) uTrace("lossy compression double is opened. "); return 1; } // exit call diff --git a/tests/script/tmp/monitor.sim b/tests/script/tmp/monitor.sim index 8eb787e950..c0c1da567c 100644 --- a/tests/script/tmp/monitor.sim +++ b/tests/script/tmp/monitor.sim @@ -21,6 +21,6 @@ sql create table db.stb (ts timestamp, c1 int, c2 binary(4)) tags(t1 int, t2 bin print =============== create drop qnode 1 sql create qnode on dnode 1 -sql create snode on dnode 1 -sql create bnode on dnode 1 +#sql create snode on dnode 1 +#sql create bnode on dnode 1 From d4f19e7c5a68a501c94a9a9d92f6ca73c52ba01e Mon Sep 17 00:00:00 2001 From: tangfangzhi Date: Tue, 23 Aug 2022 18:15:28 +0800 Subject: [PATCH 18/43] ci: git remote prune origin before git pull --- Jenkinsfile2 | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile2 b/Jenkinsfile2 index bc309ff66c..d7df07f06a 100644 --- a/Jenkinsfile2 +++ b/Jenkinsfile2 @@ -53,6 +53,7 @@ def check_docs() { } sh ''' cd ${WKC} + git remote prune origin git pull >/dev/null git fetch origin +refs/pull/${CHANGE_ID}/merge git checkout -qf FETCH_HEAD From 9eecca851aa4b4d17e38af78cce22b16237b8dce Mon Sep 17 00:00:00 2001 From: Bo Ding Date: Tue, 23 Aug 2022 19:10:07 +0800 Subject: [PATCH 19/43] docs: refactor release page (#16346) * docs: refactor release page * docs: typo --- docs/zh/05-get-started/03-package.md | 2 +- docs/zh/05-get-started/_pkg_install.mdx | 17 ----------------- .../03-connector/_linux_install.mdx | 2 +- .../03-connector/_windows_install.mdx | 3 ++- docs/zh/28-releases.md | 9 --------- docs/zh/28-releases/01-tdengine.md | 15 +++++++++++++++ docs/zh/28-releases/02-tools.md | 10 ++++++++++ 7 files changed, 29 insertions(+), 29 deletions(-) delete mode 100644 docs/zh/05-get-started/_pkg_install.mdx delete mode 100644 docs/zh/28-releases.md create mode 100644 docs/zh/28-releases/01-tdengine.md create mode 100644 docs/zh/28-releases/02-tools.md diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index d3247350ff..85005b9551 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -108,7 +108,7 @@ apt-get 方式只适用于 Debian 或 Ubuntu 系统 :::info -下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) +下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases/tdengine) ::: :::note diff --git a/docs/zh/05-get-started/_pkg_install.mdx b/docs/zh/05-get-started/_pkg_install.mdx deleted file mode 100644 index 36730b4429..0000000000 --- a/docs/zh/05-get-started/_pkg_install.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import PkgList from "/components/PkgList"; - -TDengine 的安装非常简单,从下载到安装成功仅仅只要几秒钟。 - -标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。 - -在安装包格式上,我们提供 tar.gz, rpm 和 deb 格式,为企业客户提供 tar.gz 格式安装包,以方便在特定操作系统上使用。需要注意的是,rpm 和 deb 包不含 taosdump、taosBenchmark 和 TDinsight 安装脚本,这些工具需要通过安装 taosTool 包获得。 - -发布版本包括稳定版和 Beta 版,Beta 版含有更多新功能。正式上线或测试建议安装稳定版。您可以根据需要选择下载: - - - -具体的安装方法,请参见[安装包的安装和卸载](/operation/pkg-install)。 - -下载其他组件、最新 Beta 版及之前版本的安装包,请点击[这里](https://www.taosdata.com/all-downloads) - -查看 Release Notes, 请点击[这里](https://github.com/taosdata/TDengine/releases) diff --git a/docs/zh/14-reference/03-connector/_linux_install.mdx b/docs/zh/14-reference/03-connector/_linux_install.mdx index c3ddff53cd..0b1f415f54 100644 --- a/docs/zh/14-reference/03-connector/_linux_install.mdx +++ b/docs/zh/14-reference/03-connector/_linux_install.mdx @@ -4,7 +4,7 @@ import PkgListV3 from "/components/PkgListV3"; - [所有下载](../../releases) + [所有下载](../../releases/tdengine) 2. 解压缩软件包 diff --git a/docs/zh/14-reference/03-connector/_windows_install.mdx b/docs/zh/14-reference/03-connector/_windows_install.mdx index 9fdefa04c0..3cd688e615 100644 --- a/docs/zh/14-reference/03-connector/_windows_install.mdx +++ b/docs/zh/14-reference/03-connector/_windows_install.mdx @@ -4,7 +4,8 @@ import PkgListV3 from "/components/PkgListV3"; - [所有下载](../../releases) + [所有下载](../../releases/tdengine) + 2. 执行安装程序,按提示选择默认值,完成安装 3. 安装路径 diff --git a/docs/zh/28-releases.md b/docs/zh/28-releases.md deleted file mode 100644 index 311d69ac1b..0000000000 --- a/docs/zh/28-releases.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -sidebar_label: 发布历史 -title: 发布历史 ---- - -import Release from "/components/ReleaseV3"; - - - diff --git a/docs/zh/28-releases/01-tdengine.md b/docs/zh/28-releases/01-tdengine.md new file mode 100644 index 0000000000..a64798caa0 --- /dev/null +++ b/docs/zh/28-releases/01-tdengine.md @@ -0,0 +1,15 @@ +--- +sidebar_label: TDengine 发布历史 +title: TDengine 发布历史 +--- + +import Release from "/components/ReleaseV3"; + +## 3.0.0.1 + + + +## 3.0.0.0 + + + diff --git a/docs/zh/28-releases/02-tools.md b/docs/zh/28-releases/02-tools.md new file mode 100644 index 0000000000..7513333040 --- /dev/null +++ b/docs/zh/28-releases/02-tools.md @@ -0,0 +1,10 @@ +--- +sidebar_label: taosTools 发布历史 +title: taosTools 发布历史 +--- + +import Release from "/components/ReleaseV3"; + +## 2.1.2 + + \ No newline at end of file From 5b16fe6367c5033f906931bc924fe77e8739af8d Mon Sep 17 00:00:00 2001 From: Bo Ding Date: Tue, 23 Aug 2022 19:40:58 +0800 Subject: [PATCH 20/43] docs: change release page label (#16350) --- docs/zh/28-releases/_category_.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/zh/28-releases/_category_.yml diff --git a/docs/zh/28-releases/_category_.yml b/docs/zh/28-releases/_category_.yml new file mode 100644 index 0000000000..dcd57247d7 --- /dev/null +++ b/docs/zh/28-releases/_category_.yml @@ -0,0 +1 @@ +label: 发布历史 \ No newline at end of file From 20b06a7ec729ed35315ee530d104e7b0b5ebd7af Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Tue, 23 Aug 2022 19:44:59 +0800 Subject: [PATCH 21/43] refactor(query): do some internal refactor. --- source/dnode/vnode/src/tsdb/tsdbRead.c | 270 +++++++----------- source/libs/executor/inc/executil.h | 2 - source/libs/executor/src/executil.c | 14 - source/libs/executor/src/executorimpl.c | 1 - source/libs/executor/src/timewindowoperator.c | 3 - 5 files changed, 100 insertions(+), 190 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index bbef249079..cb288cecfb 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -182,6 +182,8 @@ static void doMergeMemTableMultiRows(TSDBROW* pRow, uint64_t uid, SIterInfo* pIt STsdbReader* pReader, bool* freeTSRow); static void doMergeMemIMemRows(TSDBROW* pRow, TSDBROW* piRow, STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader, STSRow** pTSRow); +static int32_t mergeRowsInFileBlocks(SBlockData* pBlockData, STableBlockScanInfo* pBlockScanInfo, int64_t key, STsdbReader* pReader); + static int32_t initDelSkylineIterator(STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader, STbData* pMemTbData, STbData* piMemTbData); static STsdb* getTsdbByRetentions(SVnode* pVnode, TSKEY winSKey, SRetention* retentions, const char* idstr, @@ -1510,82 +1512,83 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf return TSDB_CODE_SUCCESS; } -#if 0 -static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, TSDBROW* pRow, - SIterInfo* pIter, int64_t key, SLastBlockReader* pLastBlockReader) { - SRowMerger merge = {0}; - STSRow* pTSRow = NULL; - SBlockData* pBlockData = &pReader->status.fileBlockData; +static int32_t mergeFileBlockAndLastBlock(STsdbReader* pReader, SLastBlockReader* pLastBlockReader, int64_t key, + STableBlockScanInfo* pBlockScanInfo, SBlockData* pBlockData) { SFileBlockDumpInfo* pDumpInfo = &pReader->status.fBlockDumpInfo; - TSDBKEY k = TSDBROW_KEY(pRow); - TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex); - SArray* pDelList = pBlockScanInfo->delSkyline; - bool freeTSRow = false; - uint64_t uid = pBlockScanInfo->uid; + if (pBlockData->nRow > 0) { + // no last block available, only data block exists + if (pLastBlockReader->lastBlockData.nRow == 0 || (!hasDataInLastBlock(pLastBlockReader))) { + return mergeRowsInFileBlocks(pBlockData, pBlockScanInfo, key, pReader); + } + + // row in last file block + TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex); + int64_t ts = getCurrentKeyInLastBlock(pLastBlockReader); + ASSERT(ts >= key); + + if (ASCENDING_TRAVERSE(pReader->order)) { + if (key < ts) { // imem, mem are all empty, file blocks (data blocks and last block) exist + return mergeRowsInFileBlocks(pBlockData, pBlockScanInfo, key, pReader); + } else if (key == ts) { + STSRow* pTSRow = NULL; + SRowMerger merge = {0}; - // ascending order traverse - if (ASCENDING_TRAVERSE(pReader->order)) { - if (key < k.ts) { - // imem & mem are all empty, only file exist - if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { - return TSDB_CODE_SUCCESS; - } else { tRowMergerInit(&merge, &fRow, pReader->pSchema); doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); + doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, ts, &merge); + tRowMergerGetRow(&merge, &pTSRow); - freeTSRow = true; - } - } else if (k.ts < key) { // k.ts < key - doMergeMemTableMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); - } else { // k.ts == key, ascending order: file block ----> imem rows -----> mem rows - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); + doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - tRowMerge(&merge, pRow); - doMergeRowsInBuf(pIter, pBlockScanInfo->uid, k.ts, pBlockScanInfo->delSkyline, &merge, pReader); - - tRowMergerGetRow(&merge, &pTSRow); - freeTSRow = true; - } - } else { // descending order scan - if (key < k.ts) { - doMergeMemTableMultiRows(pRow, pBlockScanInfo->uid, pIter, pDelList, &pTSRow, pReader, &freeTSRow); - } else if (k.ts < key) { - if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { + taosMemoryFree(pTSRow); + tRowMergerClear(&merge); return TSDB_CODE_SUCCESS; } else { - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); - tRowMergerGetRow(&merge, &pTSRow); - freeTSRow = true; + ASSERT(0); + return TSDB_CODE_SUCCESS; } - } else { // descending order: mem rows -----> imem rows ------> file block - STSchema* pSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(pRow), pReader, pBlockScanInfo->uid); + } else { // desc order + SBlockData* pLastBlockData = &pLastBlockReader->lastBlockData; + TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex); - tRowMergerInit(&merge, pRow, pSchema); - doMergeRowsInBuf(pIter, pBlockScanInfo->uid, k.ts, pBlockScanInfo->delSkyline, &merge, pReader); + STSRow* pTSRow = NULL; + SRowMerger merge = {0}; + tRowMergerInit(&merge, &fRow1, pReader->pSchema); + doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, ts, &merge); - tRowMerge(&merge, &fRow); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); + if (ts == key) { + doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); + } tRowMergerGetRow(&merge, &pTSRow); - freeTSRow = true; + doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); + + taosMemoryFree(pTSRow); + tRowMergerClear(&merge); + return TSDB_CODE_SUCCESS; } - } + } else { // only last block exists + SBlockData* pLastBlockData = &pLastBlockReader->lastBlockData; + int64_t tsLastBlock = getCurrentKeyInLastBlock(pLastBlockReader); - tRowMergerClear(&merge); - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, uid); + STSRow* pTSRow = NULL; + SRowMerger merge = {0}; + + TSDBROW fRow = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex); + + tRowMergerInit(&merge, &fRow, pReader->pSchema); + doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, tsLastBlock, &merge); + tRowMergerGetRow(&merge, &pTSRow); + + doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - if (freeTSRow) { taosMemoryFree(pTSRow); + tRowMergerClear(&merge); + return TSDB_CODE_SUCCESS; } - - return TSDB_CODE_SUCCESS; } -#endif - static int32_t doMergeMultiLevelRowsRv(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, SBlockData* pBlockData, SLastBlockReader* pLastBlockReader) { SRowMerger merge = {0}; STSRow* pTSRow = NULL; @@ -1987,10 +1990,35 @@ static bool hasDataInLastBlock(SLastBlockReader* pLastBlockReader) { if (*pLastBlockReader->rowIndex == ALL_ROWS_CHECKED_INDEX) { return false; } + + ASSERT(pLastBlockReader->lastBlockData.nRow > 0); return true; } -// todo refactor +int32_t mergeRowsInFileBlocks(SBlockData* pBlockData, STableBlockScanInfo* pBlockScanInfo, int64_t key, STsdbReader* pReader) { + SFileBlockDumpInfo* pDumpInfo = &pReader->status.fBlockDumpInfo; + + TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex); + + if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { + return TSDB_CODE_SUCCESS; + } else { + STSRow* pTSRow = NULL; + SRowMerger merge = {0}; + + tRowMergerInit(&merge, &fRow, pReader->pSchema); + doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); + tRowMergerGetRow(&merge, &pTSRow); + doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); + + taosMemoryFree(pTSRow); + tRowMergerClear(&merge); + return TSDB_CODE_SUCCESS; + } + + return TSDB_CODE_SUCCESS; +} + static int32_t buildComposedDataBlockImpl(STsdbReader* pReader, STableBlockScanInfo* pBlockScanInfo, SBlockData* pBlockData, SLastBlockReader* pLastBlockReader) { SFileBlockDumpInfo* pDumpInfo = &pReader->status.fBlockDumpInfo; @@ -2007,112 +2035,13 @@ static int32_t buildComposedDataBlockImpl(STsdbReader* pReader, STableBlockScanI return doMergeBufAndFileRows_Rv(pReader, pBlockScanInfo, piRow, &pBlockScanInfo->iiter, key, pLastBlockReader); } - // mem + file + // mem + file + last block if (pBlockScanInfo->iter.hasVal) { return doMergeBufAndFileRows_Rv(pReader, pBlockScanInfo, pRow, &pBlockScanInfo->iter, key, pLastBlockReader); } - if (pBlockData->nRow > 0) { - TSDBROW fRow = tsdbRowFromBlockData(pBlockData, pDumpInfo->rowIndex); - - // no last block available, only data block exists - if (pLastBlockReader->lastBlockData.nRow == 0 || (!hasDataInLastBlock(pLastBlockReader))) { - if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { - return TSDB_CODE_SUCCESS; - } else { - STSRow* pTSRow = NULL; - SRowMerger merge = {0}; - - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); - tRowMergerGetRow(&merge, &pTSRow); - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - - taosMemoryFree(pTSRow); - tRowMergerClear(&merge); - return TSDB_CODE_SUCCESS; - } - } - - // row in last file block - int64_t ts = getCurrentKeyInLastBlock(pLastBlockReader); - ASSERT(ts >= key); - - if (ASCENDING_TRAVERSE(pReader->order)) { - if (key < ts) { - // imem & mem are all empty, only file exist - if (tryCopyDistinctRowFromFileBlock(pReader, pBlockData, key, pDumpInfo)) { - return TSDB_CODE_SUCCESS; - } else { - STSRow* pTSRow = NULL; - SRowMerger merge = {0}; - - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); - tRowMergerGetRow(&merge, &pTSRow); - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - - taosMemoryFree(pTSRow); - tRowMergerClear(&merge); - return TSDB_CODE_SUCCESS; - } - } else if (key == ts) { - STSRow* pTSRow = NULL; - SRowMerger merge = {0}; - - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); - doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, ts, &merge); - - tRowMergerGetRow(&merge, &pTSRow); - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - - taosMemoryFree(pTSRow); - tRowMergerClear(&merge); - return TSDB_CODE_SUCCESS; - } else { - ASSERT(0); - return TSDB_CODE_SUCCESS; - } - } else { // desc order - SBlockData* pLastBlockData = &pLastBlockReader->lastBlockData; - TSDBROW fRow1 = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex); - - STSRow* pTSRow = NULL; - SRowMerger merge = {0}; - tRowMergerInit(&merge, &fRow1, pReader->pSchema); - doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, ts, &merge); - - if (ts == key) { - doMergeRowsInFileBlocks(pBlockData, pBlockScanInfo, pReader, &merge); - } - - tRowMergerGetRow(&merge, &pTSRow); - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - - taosMemoryFree(pTSRow); - tRowMergerClear(&merge); - return TSDB_CODE_SUCCESS; - } - } else { // only last block exists - SBlockData* pLastBlockData = &pLastBlockReader->lastBlockData; - int64_t tsLastBlock = getCurrentKeyInLastBlock(pLastBlockReader); - - STSRow* pTSRow = NULL; - SRowMerger merge = {0}; - - TSDBROW fRow = tsdbRowFromBlockData(pLastBlockData, *pLastBlockReader->rowIndex); - - tRowMergerInit(&merge, &fRow, pReader->pSchema); - doMergeRowsInLastBlock(pLastBlockReader, pBlockScanInfo, tsLastBlock, &merge); - tRowMergerGetRow(&merge, &pTSRow); - - doAppendRowFromTSRow(pReader->pResBlock, pReader, pTSRow, pBlockScanInfo->uid); - - taosMemoryFree(pTSRow); - tRowMergerClear(&merge); - return TSDB_CODE_SUCCESS; - } + // files data blocks + last block + return mergeFileBlockAndLastBlock(pReader, pLastBlockReader, key, pBlockScanInfo, pBlockData); } } @@ -2137,9 +2066,8 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) { while (1) { // todo check the validate of row in file block + bool hasBlockData = false; { - bool hasBlockData = false; - while (pBlockData->nRow > 0) { // find the first qualified row in data block if (isValidFileBlockRow(pBlockData, pDumpInfo, pBlockScanInfo, pReader)) { hasBlockData = true; @@ -2154,13 +2082,13 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) { break; } } + } + + bool hasBlockLData = hasDataInLastBlock(pLastBlockReader); - bool hasBlockLData = hasDataInLastBlock(pLastBlockReader); - - // no data in last block and block, no need to proceed. - if ((hasBlockData == false) && (hasBlockLData == false)) { - break; - } + // no data in last block and block, no need to proceed. + if ((hasBlockData == false) && (hasBlockLData == false)) { + break; } buildComposedDataBlockImpl(pReader, pBlockScanInfo, pBlockData, pLastBlockReader); @@ -3224,10 +3152,12 @@ int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbReader* pR TSDBKEY k = TSDBROW_KEY(pRow); TSDBKEY ik = TSDBROW_KEY(piRow); - if (ik.ts < k.ts) { // ik.ts < k.ts - doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); - } else if (k.ts < ik.ts) { - doMergeMemTableMultiRows(pRow, uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); + if (ik.ts != k.ts) { + if (((ik.ts < k.ts) && asc) || ((ik.ts > k.ts) && (!asc))) { // ik.ts < k.ts + doMergeMemTableMultiRows(piRow, uid, &pBlockScanInfo->iiter, pDelList, pTSRow, pReader, freeTSRow); + } else if (((k.ts < ik.ts) && asc) || ((k.ts > ik.ts) && (!asc))) { + doMergeMemTableMultiRows(pRow, uid, &pBlockScanInfo->iter, pDelList, pTSRow, pReader, freeTSRow); + } } else { // ik.ts == k.ts doMergeMemIMemRows(pRow, piRow, pBlockScanInfo, pReader, pTSRow); *freeTSRow = true; diff --git a/source/libs/executor/inc/executil.h b/source/libs/executor/inc/executil.h index 52c73f85f5..f4c42023c8 100644 --- a/source/libs/executor/inc/executil.h +++ b/source/libs/executor/inc/executil.h @@ -80,11 +80,9 @@ struct SqlFunctionCtx; size_t getResultRowSize(struct SqlFunctionCtx* pCtx, int32_t numOfOutput); void initResultRowInfo(SResultRowInfo* pResultRowInfo); -void cleanupResultRowInfo(SResultRowInfo* pResultRowInfo); void initResultRow(SResultRow* pResultRow); void closeResultRow(SResultRow* pResultRow); -bool isResultRowClosed(SResultRow* pResultRow); struct SResultRowEntryInfo* getResultEntryInfo(const SResultRow* pRow, int32_t index, const int32_t* offset); diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index bf969bf2e4..734b63b94d 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -31,20 +31,6 @@ void initResultRowInfo(SResultRowInfo* pResultRowInfo) { pResultRowInfo->cur.pageId = -1; } -void cleanupResultRowInfo(SResultRowInfo* pResultRowInfo) { - if (pResultRowInfo == NULL) { - return; - } - - for (int32_t i = 0; i < pResultRowInfo->size; ++i) { - // if (pResultRowInfo->pResult[i]) { - // taosMemoryFreeClear(pResultRowInfo->pResult[i]->key); - // } - } -} - -bool isResultRowClosed(SResultRow* pRow) { return (pRow->closed == true); } - void closeResultRow(SResultRow* pResultRow) { pResultRow->closed = true; } // TODO refactor: use macro diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index 9e56d63673..c3f1c8fbf6 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -3635,7 +3635,6 @@ _error: void cleanupBasicInfo(SOptrBasicInfo* pInfo) { assert(pInfo != NULL); - cleanupResultRowInfo(&pInfo->resultRowInfo); pInfo->pRes = blockDataDestroy(pInfo->pRes); } diff --git a/source/libs/executor/src/timewindowoperator.c b/source/libs/executor/src/timewindowoperator.c index 9eaab69633..2648e368b2 100644 --- a/source/libs/executor/src/timewindowoperator.c +++ b/source/libs/executor/src/timewindowoperator.c @@ -2965,7 +2965,6 @@ static void doHashInterval(SOperatorInfo* pOperatorInfo, SSDataBlock* pSDataBloc static void clearStreamIntervalOperator(SStreamFinalIntervalOperatorInfo* pInfo) { taosHashClear(pInfo->aggSup.pResultRowHashTable); clearDiskbasedBuf(pInfo->aggSup.pResultBuf); - cleanupResultRowInfo(&pInfo->binfo.resultRowInfo); initResultRowInfo(&pInfo->binfo.resultRowInfo); } @@ -4253,8 +4252,6 @@ static void clearStreamSessionOperator(SStreamSessionAggOperatorInfo* pInfo) { } } clearDiskbasedBuf(pInfo->streamAggSup.pResultBuf); - cleanupResultRowInfo(&pInfo->binfo.resultRowInfo); - initResultRowInfo(&pInfo->binfo.resultRowInfo); } static void removeSessionResults(SHashObj* pHashMap, SArray* pWins) { From d17c0331f9e775d4058854defb0f71f46e474501 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Tue, 23 Aug 2022 20:25:17 +0800 Subject: [PATCH 22/43] docs:update test report of English version update test report of English version --- docs/en/02-intro/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/en/02-intro/index.md b/docs/en/02-intro/index.md index db28cdd939..83b4322011 100644 --- a/docs/en/02-intro/index.md +++ b/docs/en/02-intro/index.md @@ -103,7 +103,6 @@ As a high-performance, scalable and SQL supported time-series database, TDengine - [Writing Performance Comparison of TDengine and InfluxDB ](https://tdengine.com/2022/02/23/4975.html) - [Query Performance Comparison of TDengine and InfluxDB](https://tdengine.com/2022/02/24/5120.html) -- [TDengine vs InfluxDB、OpenTSDB、Cassandra、MySQL、ClickHouse](https://www.tdengine.com/downloads/TDengine_Testing_Report_en.pdf) - [TDengine vs OpenTSDB](https://tdengine.com/2019/09/12/710.html) - [TDengine vs Cassandra](https://tdengine.com/2019/09/12/708.html) - [TDengine vs InfluxDB](https://tdengine.com/2019/09/12/706.html) From 7b2cea6c80e8ed5c6563d874c787c9113cca3d6b Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 23 Aug 2022 20:33:05 +0800 Subject: [PATCH 23/43] docs: update telegraf and collectd english version pictures (#16353) --- .../IT-DevOps-Solutions-Collectd-StatsD.webp | Bin 38834 -> 16052 bytes ...T-DevOps-Solutions-telegraf-dashboard.webp | Bin 42080 -> 15652 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/25-application/IT-DevOps-Solutions-Collectd-StatsD.webp b/docs/en/25-application/IT-DevOps-Solutions-Collectd-StatsD.webp index 147a65b17bff2aa0e44faa206618bdce5664e1ca..a8b52f3b2d6efe2b83c087d81b98c89fa941f263 100644 GIT binary patch literal 16052 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 literal 38834 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ˤ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 C^i~l7 literal 42080 zcmV)zK#{*vNk&FkqyPX{MM6+kP&iCWqyPXfs)WM;&j-8K-nI<^k|5Qq?I)*9kPVXc zGeS-t-FsIrSOb!6?P(k7Co?5w<^^=hxYBN^9nqY*712+BdzV_>4g1)wNo;+Z5MQCb`lrNwJA5)O_@0>z40kvJv|NIcDoz(HY( zgajf{XjYUuRtp_AjK2onMez-u@2%q9G{z}@N=-;Lrcn>6{?in`R#K%kB@ExLio9&0 zjK3Q7ql*6s{s6sElBxS#H+nQ{gwTX(DQZ=Cp$ToFcFMW~F2cSs7 z^T%w0*((CnGj{0Jw>np8e68(G2bD6Kp>JUhL=kb`vfLGpCPZZm

PlfSXK2U9u{9 zmGTNgeb4J9avnW?B9?_^<%lqx&}0Z15i`sz3(F$Rf_=Z{XA90Sbq0mctp0KWcoa#` zfBvU_GBJF(`A@3O+};a?E4=&aE7nAVKy3DN;KbWznc|NQod&o1MY)9__sm5T#^-ygd13#)H$^6k8m!1)4~wR`*p zMT9Nr?^w1!qBjHFW^$2D9=bkn`(9s%>`mY4Y6P!Od{58(tUUWYJz^aQZ6gVi%Hhv? z=4SsHM8pJac6at@*j$&HpFO>X9h{pASz$;-q>*xHmHs*w zdAyi=)p1tr_OmOO?Y8?-QYc}cS?JMqW(GBXP(hJS#5Yu}r@OPF;z$4AWGSt$mEL>P zn8A!@I?g$ne$g{Tqn#)-2n~%)B4$#VG7wQi&hSr83k}WK%wn2=B2J(TQGzmiP((D# zdvh;Fz=1iSmgsy)=M+B>5E6lmKG z5?iNEMi88&U`$Iv^nZ9Re$@X0*vImMmU5v5L4$;Z1d?cI%#H^G-Z1Wc z-`>r;dwh=F6dIJa5OTY118tBkwLP0LGk7)|_n0;q`lTho@qg2sJ*y3rQ7^_mn34aF z`@1)mjLKT5_a!23WM$mQ2<0y#Ga@o>Mnp#RUjnTyVOxEytjW?2kPwq5UDx&P?a;Ee zJ#O1vb)N3x!<^GybRqL@GACDavX$O&5jf-Ceay1XalPfHYQt3bE7r1Rg`Nhkf)e}eyX&Sgot^AzQOsg^rSaZ{B`3r9iu z)b!3wj5_7P+}~Hx^e1lgPE1tAQ}LVuc>1yd;($_G#>jHUDEm%(DcA3+0zI!bBDV}>(E`O(H%F3U!Q+o(V;$GncsA%Q=kA>1sW zF#xb&akY4^fMtXCA4(~u-?CwTyt2W8%N^t5y=+)>7($pver5ui7(lw3?yLlaJU3|^ zN!N7)09f?TT4yDo^e@$=z@ucIqPVflZccuOb0OYa_PM4BTkg~Yx(nr2_>H50eGvmnd z>!t`5YPV`M((30a(4o3$61!Yg|8G zbA#vPmg80RM7WN{5HaTdE0Vb0qf_$)wfm`(f)py8a>XF)Sk}O6mc)_zop0l{KwX)_ z)C)O&UB20}{Ofnml)~5L^Xx3kI^pk{-I3XNY}nMxd48v}Ys*3d%Mf~-)_acASKf3o z-gP{$i(Suix;hD+Nl+geZ}slUA)QQ-J5mc^gd%4G$j(+ey8crZXy zy|A7tw}co`G!ZfMe?}+)K$;tMF2M9us+5nHxardOgW9yQi^JaY;?8A!aCQ2zYrpp6 zX3MI1^95(e0?Qik@|Wv&YbVxcU)*`GCQk3XC5}*I1e_99!yf0Q|NO>JILpde;~k+L zefc6I;%1MTlP%uWy=t*i*= zEfiR-bf_5oYifx+lri2Kg>$!@p^K3zZ*{jnj#aLMo21{SYBJxc;7 zHZDUr_N6bE$95dyQ0spyolOSNvsNM^p9nY95z9jDVl723PBXx~#P=2fEap9?e2x*> z*12Fv#A0`(Xc=(L){EEgbva)0E9>mCRnt3py7CxT;Wc32uFc=AS!+};WX=*%j(wvn z0gT2xI3-+j*XF18?Bhv3ed`IK9qPckd%xL?IM!atjE1P+$0%4TH)wrz>&0iPleOW8 zs#9)8D${I}i}iZGxcyS2?rS?!75C-0@fqTpffKzkFZHLUnY^A`SeCWkX ziM_|1hl0@Q0}s~U|J0{CjA+WJQshJQt=(?LnAtB&jFCXB&v%@=uQA~MsOx8QP*y7(>yumCCbA(5IkxbDZiuesZ* zuTHT%_v@N9;3YmLYn#I>cc&-=cg>anMq?hF68(AghopEkoE>;S?XSHyx$QR8btBbc z1>OS|xL?I;!s6{mv#KX=Y~Q^uqB9O8^Q;pW*%qgC8PTbE@D;&725Z;X1{t)st(YT- z2Tx!29+%-g>_7?_8V#IxY&hJ}BmLpwaM;sw8v6cl=x^*eRPX5MyEV-Im-ebxvDC1$h_^~mls3}sc&Un;%_`X z9q>^c7kfvKZOm5(hVGW7D~KhC^g!;yHR@t}6Ci z7FztPAJA;g{}tyJ|7$J)Zq)m*Y|wQ**94Xujk#C1TY%&V3go%s8HWqtd?$HA&%v*zsh-W-%`srcWkyT%YtV9Wl%6Y zPdsr)M+x|&chcU&Vx2(4w6H4PL3QFXKOSgcD_P;(x}dnC^F5Ejh9&=s1Q97kK*!TV zb)JKc=isF0;2FJYRJ+<}Ax>Far~<97hTnwLgK^Y;cskb+1tf8T*8tJUuZ-mtVh6rB zhgX&_pX6a5Rb-9R#0}1wqnbF!LdPRgp>EtsWQcVZOKI}2egHK87e_9Y`{yqHo_;vm z0>wH~O#{O}dyp%y4Z4=s=*5@c!O(Xfl76IdAf>`(-)wM28S+9}3OJ29a7y&pt?}@p zjIjd&zo^kWRLyHvzg?$#Qq8i8f@-cJPY)z#syfE!A^M1S9KSAc+s%mm$JUj&sxdJ@ zNJ*!)13Gw=_cSmxnntfy-l&t)(a6pP2^&1GvZ|#y^g${YM-iQjKqdiBuR`sd1+W~z zM)lD{&wRODUKaD8Dsy+u_ZAlp?=BHFj=HA=B3f1j&)Cv)5^V!wLyuMO6P=u8v6ysN z1DgEPhsP3Wm;cJ4>0i12Kb&bb$L)@uz7*{9>3@S4_kNa3-_o$+_6zfQZ44hb36}l& z;=sSpk|G2e=g05@qrQm1*nt-fUqsqt_2%w($P1?hm2Z)QCa3QZglBnc@}ndRf!PDm z!Xv6r+ZrR#rXHsh^q!{UVH;jd(;Fy()-I=`g;mFPR&e0l^VTms*fhE&_y6;~mRz$u zwtx@lRBKoRO)nHW00TIRa9~7Doj8-yeat=cuZU)0s7IPkL^P~3 z8uE29RDX&k1&qdgZ;TT7-ers(SdiK@3n^b(Ugm3D#g^CSj+sd978V#lJq8I+NY^BN6I% z29m&N%#VgqLO2=%&JJvc*PC1VS6O#0@1Y7W-YHlbdgz7SGdZ2N-P-JO%L^}BpA005 z^5zTA>`5->J=~7X>+AMS;S|_@@uh2C{{NU9JITIS^HU7(DV`3+FMan*Lv0Kr9>`~@rg_+R(#95Imb(3v^|S8wz@m+PIx3M+us z^St_j-LrKLG+UaWdFGP;8kdq1;tRk5Jw==rDhKpPW&63aV-fG5Ue8v!wo^DP^-Zp= z(`ikqE`JO6j!K5&-R)V@#@SFpF6_AC6YHQmyzjHb=Y98*&FFzF&qi^+~* z(k!aRDXROEUv`fUizO*B)&Vt5#SiUrozmy3tGEUjq}lsZHQT)Y7&*Ay)w^EVC!cO| zAweIiHQ4DGazGEPE4mNp=_{iv0}kk^r~`UNXYXOstDQ515bHcwXhE%*Zn5&7*KF3A zzGo@o^>utc{x)1QAm0=t45A>V!Rk`HzojBu(nx|u%f(q7N)EFcc(;ezf4 z3G*B#EvnqgCj{z7Bxg3yno1hLJvyxOQ74GY>+^g=B3Ab6%XmO&Rwyf30Mjix>HM{Q zl@P`n_x-o#0WOhjZ^&b?$i3{wNQIio9w# zFMg~HovL>1@vr_9{O4u=dD(v!Kw!LVoG7r39R8ZunNMu48l_nq9Glm-xnk7bDtI}7 zSS?!po8e92T87@Z&C|~HkB`ZGYJkKX4G`rv+}K4kM%Gr1(yR>*+VyQN9&2wEyc|HR z7Onox@TPDrLvP&XY3KUK$7DV=K$cB)pQa}}W|Y^eMQIiXr&Z_XTGreucsYPrEn5AX z;Z5OMhTgbM)XsH}kJ)^h2XeAuaI&GWCxg8a?9Je0!{nr?Ir*~xbS|TKuP&bX@-Gx{ z)Bk(?**Dx{dam|6*MD=r>5!O#vxvI4fk9~V!~*oSbu&?_2WP~W%a0K`a@P&lR{1^L zlgf!TOXJFro`3FfnI@6QtH0=OeKAy=Lkr@>u~+}Bo*AVy?q*FPuKVUw#r%bJFNwPK z>ndo?q`!I~p#t~%XsPf!G+8eqg9ussZFr3k(&Lg?u*QQbNlNCb$M)9;-YC@=4OKD^ zHFf{zV=@^2`Jg@s+v9gAo_&Ifrn^QHH(dU4Ee*-!nZK~UY8>uU$Lj+LzQI26AQ*x* zcD$dNBzUlVH|%_;=HQ+wmee$KRy;YefBmNhkz1pZnbD9?TzEZ}#)((gT{xKhZA@YG zXJ;$KRsO7;^Y-D>mi31!Xw9VFcU{O}GEXx4RnKL0LMN9FeKm8_YdyYW1nRsXGZS3t z^va9wsu${KtNS<1IB|5k5?q_TdtZH&?fvATQ3lUgU)741hE%cZ*Cq_(lm~Wxuudq! zH^wJU7({yXq%*68to_y?Le|(iA?ruS`0+-eOPyOJgq1l>t$&|rkn$Df0}b#*V@i|h&LHf=FCzaIbMX8*|h_H|DAZ^PZ_LROOT1}td(KVPmz z>OZaihV=N{3|s9*)(s%)#lilyM7@+3Tvvt?b)%BuBu*OnYZ#2@W?R+g$#pO8ooxB* zu6^k=-hKs~c$Ln8!58u7(Qnps6VBQ&qe$i*v&dQ`7jBbAY2V8WtwS$dvu!qkvfx>M z^b!6pH%p#)Y(I?1RsH@y!W<~!3MImSWh>4y^P~jvCz;f-d)MAgW32y?SHCnPJl1#2Yis8+m)s{)T>qZy-mAtKaL@pFqXv_fA~E=R z@AAt2&%2q8p+uhf;&1%xwr8>b z=)JLi&(0cL_hWs)uGz<4$ixcQAYAr%bfbTlvW9iwY4>jG!KXXQ_$dPh0zwZ?haqo% zvq)O%$)!a?jaR9@pNew1jl~ zr8m#DXGVg*|MH=)eyN^ZK73HmBo`A~?k9pZ<^A-t=Sdg#&P6BI-l;%aaE%iCH<0g@ z;3ORpq7>)gFCO&1y25+$C%+E!gaX9>7A2E<)}~g6m#`%WwmXQ-8%&H^iMY?bqrZC} zg|Yst`%6)vG0uyf1fAR_Pn`0=T~DWXs&LMhPRFr~0k{VRM}3cP**)q0FTT2NR;@&o z=w0){j-~(_q0aFv1(;RR`l{%JL+in}|0Jaw_C@E0%fD@{`xpeaFj1ZJ-dcEXQOqja zb`#FQM$D_%e&CcZ-KD7wRLl_8Ef;TC+qQmv#9*I@X0U3+UgJdXo`0q~UrZU)Geb%z z_OCs20YCX!K!xNH9ghzW{>-Iw3{b}&UCd9GW6v)Xcq2rMGAeo<`we%4%)RD4)c462 zH+MHX2EdN>|8r(c-fJuPIZC|^*_pi zWh3|cwZrFPuYM*-bbH>z`LaBma~4X=;PUh=joJP&%3W zltq!zJ`qh-HMrg*_kVsyfKdH&KC-{Wf?_}P37MyYP~rF%L}IUH=4L32QNKZJ_XTiX zKm-SV@2Br#d{2MPjsYAyG#Xs;%RxP;D+Ex6;9!Bm28^_-&bOb~dG)T@SW%xZ@ZM?` z&VCg$1HTDg=1WC#8>JNS#jma>Ek3!tb|j5tJ`XbJ$!B$0fwJKHU%ZRr4k{uLQ4Z8_ z(@*{z4w-oZ87){`p|pfLOyV<$y7z1P(GO6YmW=g3vj0m_IM#0r7cG8jB;{-8WN=Nt z-Tvu!?NecFho5x}0_}j~gL+$I_N&Bd;FxV%Wsd2ed z)2o#5bqyTXf3wP$=Ki+Y^Hy%w;B=^xl21zR{x7>E4{oO9W7*@HIHaC3Wo1V{jLW6Z53lDQ=sms_hzR;AzQg23;{;#yA*)$hRrJUwNuPsrnnnXfv5~L6iZPNVKe7h4ZQS}4F%S(-^j`n zPLzU@No3Q)UvQhW#1&15%ZDl#N2O7GZq9ky4XyofE4Z=#Td(z~xUXhx-ira$)RW8H z-&k{{ar}#)cHLfiTx~P+Sk^HF^;=agQ>$biH**z93;!^->&}02-r2 z&$2!Nv+5ZyAGf{Bn}wCHpk_p{s_;vH@!%~CRXp&{p|x%tkaFV60DcFH%obLTBkj?L|jb2_5+wSxd~wYlP65QBIpPH$y;F!f`9FBU$Hx zPHcX1M4x)@9XRm9kGY$w`cuP-_A=F4yM@9)c7JGt52vsC#z zBI{1_gRJ>Zeb261@JX%^buH54G8w|&d5W`ok#%(0zN_C$TL4A_MMXq~Sru;E9x6Sw zQAVCzu^GnyK<_7x!;3P69v3tAu<$vi}Rf`C%rB2f#J|*+10fVm~=cC{gtldr~w38Pyz6$rg@$Ppjn!x0RSx$ zp;09XRM+mSB5$&^h`c*g+e6?++k53z3%NgX+y$dM_J7+QKYXXb)XW??Bg&e?kOF`Q zT0~>WqH?WPqh8%hE2GrSC?EK&F8(5lb9m_b} zXbPi+x~|2dmc~yoN`ZME>t<=V(fkxO@`+$MLZ2_95&d@v!GigH4 zlSnVpktH*&68<+mW+*X>GbR!UjGP%pH4nU?mVqQ5Ij&&K0Sutg$&H9v#ld`r{PZg8 z(7Ck2Ei%LoV#0;np%)G4CayqN5iqwVh$0clixQZocV7L=$D>Y%%$BeX42}0 zQzn1@G~PD`EQ*`b45UqEWi!x#c1)O=uH6Jd+sFmyf{qEpN`vNAtn(owJ*(2^lZ8E? z$A4sj*Ecb{L$1)Hc^-(Sj{C7BX^h7nUjM#3lpQoo9)m>8=Z-xTXrzc)eC%P;nRgz0 zcnE1(*&%^uiL0z0`&EdkI8)Us(K(3{O7O!v-F&a zNqdPD?#A=CbG~g;YY7yqwsPLtyoK}h%q35(N_luQBH~$`uV3PXyOlTTXD4f0YAOF{G|*&$IQVJ1wi<-o=CR4}!dCzBJfoCGHpAtoe(L_C72)cBMQu8J^1KI2d2L{Esl~g({>5!ye8G6TT4(Qg znp1mLO^;o(d2Yy0hW8)2`^Mq#b*?$4m>CV05KOYIE|W~fVaJL$60V|nlnp4H_8T6* z~OkynO$?P+uc04ZXciS z9#VHF|0l1V!i8--vIp$JeJ3AXxBTNv?s@~dO9#~H+ZeYtz9!|X(6G^~FBqteete%A z$0>H_cn8Jb5|&y6_x@+y6l-u5F8pjhe-p~_>tOA!cTfhuo~G%?JJ&z?;NU>-;Y;7Y zl;D7#Gq+RQ@cnH(U4`|#*atgr?BCOo%z@;~U*C7K*}D4ZAE^vj$5LP8$1{0-KWU*@ z)Gkf7kdDintxo4HcPI`WP4^Z3=&q##he}}TJo;01 zpPppUdJs<1yDTWENxsHQd7b|lo%sN-Z*@m{-QIs6ASr|Hp1_3D34%y0Ef~kJoN@*vSO*y^8C^T4#+7B@0Bv!qRe)WkdW)zVh5socna|iX~NFe&S{S3H}rOCq%>eE0-Iw z3@c{b;B66|Hluu5`D!8gqlPJ%a0NDEiQ_2Bo9W$Z)L}Ep*ZjO$DE_En3Qlj-F^&g8 z-c0XS!w#E4zUKGMG9O~%l;wsWzGc(9)wsiEj<0!sv&`ER{O2V%(j`=+eEqzfXD@%e z-FVO&rcw{lC3i2Han`J3P^kEe~FD zr1eRBruVKAuWf!xY2)|P(R$?gvoC&TZecKvLNX1<{)06e8D-3lvUlw9(u|CpxxT;Q z4b4yMQQ!O8fqHV|rSGmbekmH58SbzDZ~6QB>%MPN_4H*=eeK039)0d6Dt;QNce7mX zzDy8j`9Z`LR}LRd5T6cB1HU=~FKY=C6UpkuOCQ^>ZqAb}#iSS3_xm5eK7Y9SZbI|2EZ1M+^um)* z#1FqnOu@H&DR2JK$ZS$K3@>ON9|b{)w+@fI@ZTF07xi=bQT#)g&>@;!EDM4`kR~WW0fB?bbZ~;0srXJ8rtv zQJhP9JU{aFHl0%%eABa9u2SmIcR=i^-ViHHhYl33mivK3}kIp`>k4Z1*lJ}GO z=INh_-!pPuaGa$2pB_*wc_=(K6r*#B;(7Mg*Xy(q{gcZ=ghwCx@=;~{k-O~&o*Ihi zu34l;u6lICr5~Vz^6d|qM>y^jyb>mQJr=v}j~;o@*?*;olpf}{mDB`t68`+$qwYouV0=V_@P4qWJzREgyu`&`n9U;f zboicUFaPF#YWX`#65Bn}dtA`I)-mQlIlH2QM~1 zMP6JDW>L7}+hFt!m-J5V986yJe*WEG!ly6I!1hn2g-oEp6D9e{5$~G^uzkthRPvGm zXp*wzAP=MZg0!_K^ zL_u22O%;F*Om-oaS_r;eLJz3?|7Xz!BDj8yWDP@|{ZUn0?a3mH9&)g3E5@dp2y-j6SJlvVKI(PLt+ zp}uYk5+oqv`rWz|qD!jPs|N3!J<7fu%=Pabp;VhzpIJ2++)`g|3KhqII#q|F+~b}M z`BDZ`yb_2A!RH_M{ZP?%iEHlubh&)NiHqi{ua}m_Tc|_D$vtxS2vI=+`gZ>Qw_M$9 z)oU~>erZXj+lPo8LbXQSR0RehN1q%bPEA4T4mPm8Qf7+FR#}@$4H05B<%*o*kpVxuIJBt4eQT-Bk1j zuo?tD1{sFmc<4KSnmqIGKK?J=AVT8w?LQ-N@}CHfD_y3^FCV@8 z#!KXsFq~2H>WlbK#CD1mS4A&uq;AT~;`eGY;D$?{Y&{K>=no&>@TDVn760{xXS2_|dGm91ptz#>wGCv(dE?P{m06$U zlcU)2Ubra~OHICM;LTxLUY~z`!~KsYRPrL3O##TSi)9sDl9qI{7+8#?Wl-Q7k2-g* zxH5R?#Y-rhU!N;R#~P6T<3m6&TGYLM?_&Nrovc1V#(G}=$kz|d3I(<`{5Ozr*Y_O= zZ$|`pli&-ZH~G~Km-Ma~91!*3QtCxD0&bVf6!w$utHRBffAjwS$>WTRy#SFn`65ucr(noq`|Pc=a5<+(E`hX3)D-rSI6e7C;+Y5fkKEsE zja?5f_HDo4{7h!}_V72`Bmr4F14$)X$!Eq95s6#dAARl=&>ExH48DKG<8SsqFlMy6 zo1c#=+*l0uT@_f0Qi692rB*caBiqQ6UHY!4!>qmQu8}(J&-LUBiBbsvNRa&##r1x) z)qf9tF>Su7<@%_Hc+Hc&Q^?BqZy>_tMKYU0u=tMOj~+h2Y8G?ArytxMf5QTet8`t5 z%jv$+p%U!-2X}(bWS+LR?f|h6oO4E4 z5;6oE%oQTbT$eJ38}FB(o)u9QKQk(nyi5f2Sb$I9a#62lp)zJ37ZJDwjH^qtxZD+7 z<=M$}T`tHG5So2c^%+Ec2H=@sCNE_?BWpnpxaHMi210kmQ6U;hR&|yQK3J>4AJ7A_fzLTK{KcVhhmAB}jT-rQd;WTu zw3xMrNi+7|GpzN)CI5FmgZQ%l1pf*C6a438|9RPe76*7uN@Nux4uA#r5+(-Qp`48Y zWx-(S5-C4_^Lc|FA1G`Y^mQd`oMg~h%Ea3^ zlt6rivcUfTAnYYSGBbUv?RhhN=@a&czeP)EXD^lT8hQXX&Zh@%&DF$Sy0n*k_WQZI zgfsII#0altnJ^CXyQRTbR{LmL3iCJ1BG+E>BVn#Z!fbxQ__SxskAz`2l%cfknVKQg z*DbRlJjE?Vy1(;#AH2u8>(d{<#r(~(c(p&5%(Y1<<_!pMT6V)Q&qE^6fUfjrgl^35 zmQr8D9YuG4xBVd^|FnJg$#)9#H_M_FcFsV`Fl1d|oYLZO8hk`I}|_N4Ea_qp#6@i^3-FqKo^xcWymr&0NSRT@=G< zV28&zGd>@n@?@BY%KSf;WmQ!bSus&nSyuC=?T_SotH83cZdF-rnuzUrGhW4V%RFJL zk+6L<6=|04OVg;??ET({{;6`tM9nhs&I8X`$6JL}3CqBW9Lu6ugy#z0OZAM(6unTOKTgOP55O<3I!O1CRX zO{3g0N7!m4Y#?BWF1qeV6}h8%{GJcxPQuO6EVmRtc;5Y?B0o~byRKUn->2g?w;|q2 z-=&{0;a&Qjan8=+aHyLN7Z2Ie-!$hDQjD-NpEgCz^>|8`q)Vn>F>$)OoK|ER+4$78 zXX=M%hhaEf11oB(n^^GBV$yg=3<(jn*OYE=AYj6&iXgYJCrd${E>>Z z+iv;X&r)$?P4I1#MBa*sU0{Jklkm#mf@8y>0c;$qOEAabY3aIkYzl9V$NT*-w7o2w zI9;o_Rp!|;l%8e`a*J#W&$S8JA`acsnl?UCti{>{@uOM#@zw`FbWgL+%`)nf&$r<@ z4I`|?u(HY;I5dQ{eaJ3v%hui0*)!%gMZX}%TRjM^xDs48L%!s z0E26u40FvAcBMBC+|q;aWDfl5dfJ1Al}JB+_lNGW>e(#XDZw?VS3ES|=358!WW(Xm zAhyGE>wvN641sK!+gK~N%Y8Gt~5}0l&kS{xuwXL z^1;1v9BZE-{dn&~zt{R$-TXTFJM^0LD_Yov=G#1ti}e!0(@KPLHnf$`Y3wRrxJiDA z$2oQw+BNp2^jt`N<|m8tl8|qf3&-j`<9#aG(v-Ft;8%FtD|D53p0+;p!xpcTUmjXF zCi991n`Iux1)E;8SuYM?1JVLF|F4<7jDoo+RNp4*($){# z$9X;csx06qtpXS8V>KGO8XRB@B5FmgB*u)nO`Hpe zW-T*}rM(oU#j9|qt~Q{&v-hDqHzT+F9qClui7FhA75=_{On)TwvhmXmLZj1z(ob5X zAlIy#au*s#(DlZpWJ`70Ld7q|IeI@mUGL&}Mfuzh+esaoMN8{{R3<&&NQKOrsqS%kqZd++fiJKXjWZgiw>ohf9d-jFH;gHSh1_~mgA-LO!oTJX< zY$YV=?V$&@Sb2I5aklHqv=ni^s1^j`ogd0`bE3?s6sqIus%r9E)XA{3(`UN>ywnp% zo>>NcG!JdE&X~%!6sHZ@eucKqcd_gK;789J?N=q>ew4hBxS5b0!{PAUGpe=Q$R{AE z)I*5M#_tVNl<>xm&TVE#$7d-s#~3_9iZ?Ki`l4BpyOnYM4q8n}dU@8W9z^X<~$X7TW2C~;>b zZsuchI2>*kh*<3$4lmABCL_~sxrj}mz$zbe5@WjwTTv6@nV%UB-)m~bt&C1qMFw^B z_#~P|ffIe`o?@Ttn2(SB@cF;nhks9$>bU3YsJt-rSf9wSD@d09iHIW0EKlnv3iD8{ zvMp03SkjhCU*YsC^_KV*2ionSp?;l|`lIWAk~+eW#LaY^qp+5-f54Oq7oWdj{M2o1 ztl@AM&TZt>4UyW!{NV4iwtf+GRJfV?a;qc*An?WbWJ2%`myhD7RMij2TuIa^q8?=O zThldd?BaS9_;B zY+36^&wtEFzkVm7pRR?A77+3_A)zKksqz*QH?wg*<94?xg-vX#34y4_mf`RML=4WMrg0Nhm2oZ<;XJEc zE!^~zQd$|N$!ekc`B2_AgIUIjPx0Q9G6Y>PreAWlYJv8P_aL z-XEm2g{Y1^ujWLvIz#QM5(yr(eOy=Ebl!3iweeoV2N2ashr_MsTo@m1Zdo%oQTao{ znK(O?{w~*;3e4I$-7$%pYXp;eD&3;0+#izb1j;Bhyw@=9v?}8&cL`i+ux$E*fBDl4 z5oDO9VVu0J#`cSYol@=B>UK-5uS$2=Vz>Cw^Tzp=*Tm2@GBOfS^ncJRjRuvI5}JCs z?<8?E8RTEl3*;5U;c$y?E@IyA!JNeTL&ABem8WMBGdhMPIp}7NSIAK8acvjtriAyc zkBm>-Y8#a%G~83U&`?DSqebJPlpM1{)$5s2^-J*E?b}-V-IDeds{0k%Gu(i%#pIn~ z%|b+f!jl0si_N!PqCMNzEs9?zqj_w&owcvl`FauY5C~&K(&<}vx1EW(1GwAi4i`16 z%VrH3$@mfNwewa)v#3bFu*YE?73dA+UHi70+DU(rd4GY6heRfe9J5p_*s>PC#CW@= z-z|AxHK|&Gm$?yPb1MV=nyxu`{zOL7W)MxZD=l_;{+1$kXEW6WM~8fBqMAyF!(lT+ z9P~GJ`{yCL>*oRlyoTMcLk-RU?fctDA9>*|3}u|zb8S`Mv1|rM|6&#WB!D74tJPhn zIs}|#{Is48{__v@!#Mr{V*OO@!y(+n^butO=E;a6QyHb}9v(SnshzNHZo&EbzF~fe z-ma%-O0tVJk0fI1B_wXM7{rmO49rm%z;_p>i0O8m*x75`sPA+dPic9YM6QN==RWf1 z6a(w_p=sM3^phsbMg`^4AI<0p2uVs+N6&lnsDXZAjYEpoDRp34xm^uzVgeKBI3Xfe zD>B-Q-~I7zhDC;1D%i{Qb4%8j%*^hWS_#E&9qCb!l)O=)E}|ds%dF@ctwE;Xw*Rfo z)oXU2kLT^2m;=}dH~p zZ{zb0)&C(hVYFW_CBNm>;BKMx1eMUf@XA#CLvuumRw)I{%E3_(b$6??tU6pbzfPMl z%CAh9NR+0Xj7l|(fmoxj_B)5MYvxHd8%GAaerv1Yuv#@WbmxH48;*igB{Xo;&yeTm zt}MRy1mr}IVs#e*IMJ(Gefe#G0bJ)|jy`-h>i|d{*MMWdr24~-sNdw(X9|<4uDEq? zLp`}8#?_el2R+21h*^1fG86T4OV(GV>Q{wk^Q%c@RUVyC8Fm#sF%5}dregbWxD)a^ z(m@l3fiXO|I9nsKiE1-8e%8Tt%Z=*k%iaifp>)UN4rShc?u{{D}1i>OHaGTW}FM>%uXQ=PcYCbeSrO6CT&^LCwvnK^jPEXF;m)Mk_Va z_*$TpRI_-OjmHglOGVo1=vSur#f|Xm_jrgryQs)77sSm>oXxoZf?Q!rE9`nY!8l&} zT)MQb-?(eIW3t}7cGKqVoDaIMnVqD&hlDO_;+Z#)t@LVp$+xZlM+Y4^0Z8Xd3!y(h zwsIJG8sRENO+(Cl=QETEFYhSZ?T@zGWxM==!hv?${ut11sc1JLqstOn6NW+^bt*F) zvcKh3AI_NrGe|IMGgHCimU-e(#4NeDu5L;CnyI5-ry1nePxB&fuL`m#R5g6(EyOP~ zu^M#CsKcapbJ$hmnhA!(;W+?uv2_UT-Lksxt>3XLtN(N7xP@=!JoRTItKrE)jr4}Y z_lz(UryTlDLe&zR`4vt>q%iSa`Vl4{`@!=}`B5CZMAU83Bq5b& zm;9FJsnnPn6&qu2z3V;;Utyh6#4NkMZW-#U=_HO9FA+hGB`HCjYCmatnFLRym^wZulx?TW*=wl(sdeT z?Qr@uMPKe`$L5ReLv<*TUe)UEhOhJ8@n%N#@e5I#u0~jEjJE3i7iD!RVNG|GOqYl| zp8wQy3@H_kCu;I{aU7SF4e38@NC zhzwZ9ZF8}j)inXTI*1L!;c&a=Nh+3+{Yh$ErF_iM%!+?v)OmhRfjF`LX2fxe`?CNy zotj{+^1{=(nj8OFG62Vt1Ta*Sf@b&fE_qz$vYvjG z3JV-89tD6|zjw6R07cEw1Asu+s~9|deVX~esf#Htf_IcmxIp{Gs+eN8i;!~>2S>MV z)H-nUwZ<@!c32m2JE?1W*0qPjHofE4%8Q1C0cw^NC&~U=OjR$ew;wDZ=9<+P^=fr8 z#2L}?G${1)4|~k_s)TaJY+uxCh2su0k<<|;i;*xKXA^o{f~NMu&}Q|pJueJ1ZRmf* zqKsJry-?ELz%&Rw%w*_kb*nLXSX1$9Mkv_%v=`bqqlle*(-Om(nmn~Weo@mDg#obN z>z<}JQ~mee@0?knR|5^gssJ5JONpDw5T}zbKhb7<`H7J&7hg1~su03}8CeL_ z$_itu*fvnC)}OCjcoK2j!0b#7fxzv60sB!hF!a!)ptjaO^&9(6p>{n5>zmJ>f)lUT zA)jZl&{=ZbaR&|O!?%Xhp+RW8`*!h1SL6fG??W^TKTu()pAZw|{eFhra77hw2E9BZ z4JvKAPIwBoEj@zqN(~P~rZ)(j%W_bE?P>jPDf()Wk(7ii_Yh@hD-$Tx%dfNu3>bGC zfD-@!c$}zm9lxI~Tv>X-?-cn=S(a|;4z(+qrneZx_H)6-!G#eq;;mL5eajR6;R+!Y}=|;I#ZU1v2(MEm;nKmPD_)F=9Igk0A7VurOOnw`em?k zP89&S`)+>Q2{eG2f(^r`LlD>%88Q5A)@$Bjz0Q)YR!bS(SQ$0un|s@8;{@-#_AF)C z?r=UZIRdO}UNokUtw_P#DdJH$I_h4B>b8^nbvHT-_U60KE^4=m-?wGX#tWB?;!b@} z9wR-SB@(3;dHz!e>ZWGOU9_fQd$^a+AWPAofJ-~H)zOupQe!5!Jt>jll^5nASXjyF zP;$L)N&2d3W5x?X#icUIw(U>~E!^?`RV{c5PZ z`P!S&Al`->c_2HfJ1ao@`~ayyR=?eC?+nzbRPTJ|V&%?fPF_jvE|EU7r@GfWJ-o-h z>h4*>&RuiPE@r~%?#!)SFC2x8*`942X(#xJP3`enBN+@!vgV>XT~R+}Q?xypVhy6m zwlOv}YO}i+imr!hJ4B88ALMNR@KGV=V8q=17`+k+?}DTf1c8Us*WHf-x??1)j;Hc=7FusIDQVAZ~)O1+s=i+ zk%AdK3IH|D8ZZh7efCwe+S!I3dfv3xg@~E145e}05%(u*rKn?%E2B>y|CCj*rYl-j zt9Y)?18k-vu@cD6XKHH4?kOJ>s7&gSVwQo`P$YwbT)miZ<+PGl$Si4dqHIakG7dLq zg-GB!-IDa>sriM}#efQJgw@>(5l|1mL^tU0dmCK}tcL)a?#-^+z~0d;Ehy?B)vm_L z_pW`rhTSH#PBOV&x%gLHM587lWD@q?yEuB5@e!%udGuA;aysg4H1v7|L+*gM13Z*$cF0( z0AttbOurf_f2j`Xr}c`O{JiyyS5{5K1}tx9B&{K1DxTT;HNFs#vG6Dk{1P<$0kv*PJUpHZv^SUl{al%W#P zdO(kh=&mQzS==9Ouw=&+-hIa`Ld@7BXxpCWQG;XobQThfb!)nzeZwRx&5QQC2bK18 zb&By};#qc!+P#nJb8CqDZ8cAuiTyhHyYLj(CvJAp$qk_tv>zrtG0FSxREJxL4VE{N ze}lpw!&$=!=Tc5HnZ{ZuXX*eV^TzcMoSVZGFBQ2(GoC~o{S{dRV(c*xpBMiIT>)aau}g*MkmrylLCE zJ-BQ9oTCbc4bK-pD9ct^w(B>K60%w(eF^jUWzuG$o$r;JAKfvyOTXUPE3grRIBQU* zRUY{v(V;g(e;^}e&Qn9(#P~t+&N=D_ES@Vr*>1H;t8`yAM}hN58pLbOO4K3X!Dr8F z7_sec`1?|NHu?ISlyq%LY^WDPpu(J|TJ7OUQZ|LL*h^+4(ehc=+LrM-PTGvyUJC zdcA*vI42-51qn+nme7wL6)%eN`4D6FwAO(SlY$5?Wi!8BsaeSO>HZC*KEetoELB2U zH!p4w;jm)=4MTb4JYG#(=?sHZ#<~@x=|rA_Js|aGnEwHz(58 zjOW=6fGsLNK#4Y1E^esdHyog%;*H;(2T}WoXWLyJc=IFWvT+wf6b$7MuQdziL3q;h zys*lqM;jK~C!qXi}&C;lDRb=VQ4CcZ-mxj@aaSva0KO^gDPZ88J(ck2fs!3`JZD zVTVAh?8+n7o@<%UGX`Yng)#$2>U717v_mPUnWb>L3)f9UvJ&bkG#Dkf=%k?n2FRy= zxbP$xa0BT8(4nHViHh&d7Z?+Osw)+l1~(~&XiHB{dtEjmika@Tt&EY=8VEy!T< zR=(*N82v~LTYL>0#08%(sA(G!(St=%dH_#)0Cp*q(;=y%GqlXlF7~Mf4~$8BVPb+W zBaRUDZU^EIBdl#eDmaQIC4umnc>%Aix}@d1)36TO3e#N=BH0yDZNG>)Z;~x8#}_s* zLPRf=kjPMcg?(D+%7U~2vq9;SDigmoG-yZ(1&B%)#b1Z>h0z~o?)0u)AKVD$X%Q(2 z4N+-pE-$DBvK(LNKyC;lVuj72Vc2$b05;M}nW!rZ%n(tnp-pj2!G)#~_0!ZSgyDhE zNC6lEl?sMYz};4WqB%dHRw>673Xi4>pMeOi>z9p>XZjw5DENEOB{}}1WZ?o!Q#e5B zQHUaOS~_4zWxd(KhwS5fY}t&_E!VS}+D?mO|4T8v&5QB0I3n?)SN_qX#hS9)}XNELoqE3wxVL>xBAf!P^ z1R5KuLK+~TAyUz%8V#XQFpN~_8^oYIX@l^(w;@(FAioMLC=j^_G^=yAZ#(y_Fy+=9 z`3hyKdFGT^^a^F_1q(qHpGLuE^^Tz_C7JiXLYV~5rl?9f0BdN!@MuG5q(VM)3%Q$+ z$SMtxLi+fIf$1<)0f375O*0JBh!0C6qlbnOpqf$CDVl{aOc`MzR8fr$!=NU_0us{S z5Ht)7g)W%Tegv_>2zYA^A~dxKfd8eXRjt~-g?Q~cd@wh@?yG9kw|TdlO`r6fS@gQE z`u*ASl1@{u(P_#Wb^3o6`AQV|CG$*2UDJV67Y?ucst??lP7yAaYBTth;{QO(q{Gh7 z8M(BdHwjcW+j42hA=;%F_5F0t;1%={jdSVh`A)9QFzNfxPdPb(%0`Y?I!!no zOse@g!wgMCdBY41pNh^Nla@9TQM8S*m zaEea$brNU*yr#vYSJT&KJ^^s~z6za|z|RSSuLi+?3i^RHOuiFL@tue_w1X}D+#uvm5d1y*PIrVj z$+vAz`DB6qQ`1w#V*S73P9Jee6o^TI#ZoE6(zlmXDdX4M(UV`l6aH?vd2z?G_gTNG zE=7-HfzC%<*FSmQgZX3o6Z?p?$}iYUIx%t6rDA_)AMXzm`>Ep{tG;fx)_IBR;XeX~ zt)C&le`6J$XVCG2^|%{;I>@naJUgrN3~FDn9*`c*lb?Rw(Dg6g-Fc?B;uoxksu~j6 zHoNoDAgi}I9l&3L(Qn?OjBdWL;o`Y`wb{NYotZ}K@cunuG?MD;CO0EhW}T1Pb6rF2 z&&A@z+I`#1$BL7+PDrif!Kk3>NBN_(=V4%xGT%}~@^d&PV z-IENIEV7JCc%;v}DBc=afkd%sxK3UZ1MVQb-OCwv(Pu(*`4)?BdkwlN51iq~ZxUf~ zMY-x=(+Qm9=P+FtjwVrJi$mU%bcBsi!$>gy7mvXgx`9|k>l>z!?cjU{0AjiX2!U+ZS}}Tm!@anrpBh z$fD>W&7o-p%0QzGDAP1bArgXX-ic_ddGAHBxO8wvuWgs$4)>$ZO(2Kg%GH^|ds!?( zN${WGKdzhCES+L<^Y%fy1d1~UgY)1MQkV{U1Al1~XK~K?xs&LJoO2#5bz=R^2&L6u z`ULBfq%Zr=@lu$NJG5^wS+%V~9O+%SV~V=m%B>w2`BIi$Pni$q@f<#BC}EFKZ569_ z3V69-!)v#UoWF$S&ED=Xz9f^wCk!5N6vB;&7rh!@t{DtAZ>pBGJhWrRV3UW!aNzh0 z*1*e+4?N#n;_{71Fn-b_d^Oe?MD*5qo5z>1y!ClX&h}H@$9fP3WB^_cvC5q@0ywHA z%qmmv+Q#dV8ws&!;n8GY%riXtknGDgZnZ3)_R)CYB&&A{csZQtjCjkFq>rp0GWs4Uc4cBDz43DVnt8d-1opYx-RM{3rO&%l;Gm z=Y$=$`WHqQuftv($4#->+k|{+lX9~$^rjGT^=3@5mn>2J|0f+L;$I7sqBcj}S+IW^Md3vl2W4q}86UBNPmOMRH20M;+cEMM4 z4!iKNGAvtUU<|>`~CTaN8{$c zSa?yE*7+W$I2j#K_wZ*Ur@_tTJ2n^sOH4cH@l zRW-l%DEnuh|6JpY)vMN24br1MpTB)C5$Ding^4_JwZv-7+?;XYK;u(UVd6(vv9Ij=%=D$8CNd;J*R|Kri|SPOHNo7x z=kR#LMPv<(QRO`o$B$h7PVeEajw$w@@FNL45QlihvbAg`gT-`4PBiz_fHadvi}3fj zb=!ZztqI{cu9*>m!>0B6!%{D``4 zvc`%VMO9gc?Rs1|#hygU@}M7;j#{9d*VoL0&ueVN+N9FyliYAA`3UMdfrDRPWVYfXLJswWc3p;C>krW+PkO8g~8NrPk0nnkn;-DmZIvPF(0X zIlk|}hF6VZtpMj#g-58I60pI*ncq=!PDGIe?cLbOgcRCmq$uKh#K@dTEsEGPax5As zZUk2CNO3W0g|p_!gNOV*YQ;vBhq;4bnO>ESSX)a>a;6p(sIE|Eu2#m1h%<_xP&o&} zqD6ckN0Le+HeSWY!PZH^8v`|`jG}~Y$VP^{CpzRi>LW+VjC7bMPFayNb00N7TC37c z@ax4`%@JaJR4paV3^fiGA09cG5w?OAPN}KfIQ&rQlzt=y=yM@FGhT1FUsHv6bhy+S z6Iqq);>VhUHJ?LtsuG+Us~WF4VC!Vb{m3t{5#ai)C8mhDJF6J2YI}ui7@};R5ImDL z_37yu$tj!u9x*n@;qpU!RB!^UOYRFN;gMg;!V$GG`ewaCO2=`8KtvZLp%6}GCPb6b zFDnlvmHxnx70#rlRT97Q6Gop4vECDm)r3<71!_^4G=zV&bVGi%+HuwdpFBUV_i2CUdxP{)+tVuepEV@A!LpZdYnn~ zpp!AzO#J3SR@ekQ)4<7u?x1C5vvAbrLZ2I7uY@Ccbf}bjO8;==mx)ur1$LDMRTTNW zEV-0r$+_=mvSt?GIOdiviF#K!D?bsaM-q0Q3+p(+m@AwjDS6c78oFP=BOYa%KIP#= zZ7Ee|r1x1y{%s%C6DlbY8>AX>Yfd4{sEW$uq+ssfCI#0+CJM(jbWIjV>p&8yw09Dm z;OZaS>mf#WW=e}7V=r(tPa*pg!&c~L(Ysd+WqzJ z$n0TMzlVJ9o=9)dc+yO2&KlKTf@|nP8jLv<-A9#KSS_1if$a!q&0eZpl1ZgZlCsH# zSs0Or)zZ7v{N{=T_RsYTLov??*Wg0nBudz;h|81OJrY5p;p9iEK}muHoJ$OgRYPOM z6;2@!Moqs2i>QGpt3^gN)&s*TAf>ETB#NOVF`k!qlJs61l;+_H)^pQ&mhAyvW$Z&H>KweBTw+=y-+uOGbT zC=GJBnMHnCCh)W1xJnIkorBF%u|~)yyA3og&Qu35X^ykEIf66?Sy(ti2z1ePtEzHI z#G|IKy|GY>N33n{X26X~O~qHea5)KUh0}1wTG~4DeL*D>?jJf#(#;T$B0j>lxybI* zRy#6K)f=2TD97|JHXP6zvd~xEdDAaTnIwhdfUHJ${B;HE=D;M1B#x=BxRDJUO=^cc z$6@&Z<z}!AMIScqCk8bUztcaJb0yvId-^6FlKn6j7U6qA04WX0tjJ`CK~MW&zps z3&(*muQW7Wz|~VS(r^Qhdd-yrM>SnCb{pQQpf{WCZ8A@vW^Uv+V&vCnll5nzivwYjG{M6$T_BjTQ4N+Jp9yKv3b zN2_8bT!Pv*FBwc(Y1(ffa+tAo_ZDSzsB~%qjYU0FNt979U~+EKSmHOM#4)a)SOf(t zfnC{@HSN;yRMM1{&c()IzcgZXA0Dg_RiKFYyp)pr6?2taW`4r#8Obtgs;}6qo*6fa z6M@!!Phj^mQLSRhn2s%UH6aouR;5r$S87uWDE_)LUx3vBxTtW1JHl+brq6425E(_F zlRQFSFW8AOD%D~+C@8O!(r@bQ){QES-;`)DVyq&COGe}-2X@>=l8{8B7jcCnsSPZw zGcs|gMFw3gYrapFbq(Eb*oE^CH6zYmkrIXEocnMY1zp!kQD|*KxIIgK8SUVh{>`?O zqpmHRiN@kfFLbgR)jB{7SL$behLjf)5^ri^zI|8JP8gG`Egr_RYlO0cNlWg^IjT+npRU`>78kWmo%k`z58*PD^+)zyDtcI$+2)#rZK z@v9_haxrSuuh#;_qrHv;Dj``5*0H9SkU%$^kyK3`(C5ow1x-L7U+_q1?sElE)Xem( zN7ZM8lZNeCt_$v+IjdZ1RRVSnGc6%^T~QMt=<;w`mQooy7?c{43}iCsV2sp2S3(LC zg^Hm!d15z3D||Bs+cUiQ3VHBw#uG=l@KZK!g)BqSB(B;Cx8l@I28D)g6;#ita13eQ zD5`u(y5BmfWhH79&Gk14G<02EksOYim0!xDFs_gp;Hx8fRrxXjO$WB!)UD z^!;X37FuhRmYK`1RK&x&S{5cl#+njYJ5iCl_!kAd_0B((9S)+1lsH2Iq}3Xykh1in ztl7*WKWaLfV}*$<1e#;sEwmftS8(+;Nu=ai5b?x8r>rtCf|Nx>6pY)I4l4y7Y!v~E z^^$WxLN#u_W&XT;K0l5Bi!2Cj;VLk36IwsS=?|fcASTN6ep096Ta;1LFQdpoY~-p5 zyrhK7SS|4bzrcD*QPe-(rQeKr;s|uB5v{nsZ@4o_e8N@T@#au=un^i-h|CbT!*oJB zYwMek3HPNiqBEeYTi4{-b|5S(`I?4)d&Vk_oJZ8A%hD8O%VQMFBqeJ*n_SgWIU zbME_oM8uZ~!=^$RQ6>dk0r8`%*#tX;fwg88^CwjpGjHs~?|t8#FwSYYZREi9#P>}zOU+^+;4b3Vn$+gzx+*hB0=7GqNg)IxTyMxm?ALMX zUsZN_xDGRM5|m)OO~y&clY>oWb~}Zk{6hNk1~~oE+YnWX@7`Yk(n){L5n}Jpk+m@t zh-O(5>FL%nYWTREPf{FZtzW`bELp;N5Om%gK_!kEMc1OpjB0P1{=pvxsnFeWoVvFK znIw)eOCpix#=CAQ|J|`9?S8-Py3aT{BcH!{nlg}F)1|bpgz_>m_V!FuESFJ;#-lVO zHZV`~bSA!JfGaPw82a_Z;O zuGO=2&weT%Q8TR7``uQ{vaDQ@-;86aNVnVV2SM=5L7Iv>Zxzzst$Scaayb)gq2VB7 z{gOvnvl;okOcJL)bC{Vn3kmUaBHb&@;*t0{rIqvW{~QcjGH_J=Lm`NlYTZ7=wl}3g z9R9%cgFKfKT>qj|GTn07OqYDAqcS6r23L;{D`oJ@AT$j|0VGxys32%!o?Yp_9hD^W&%;ds40aZ_Swnrij^3ZNs zt^c#vij}~FcGwFH?xY<@XqeH3_~l%_r2!u3yupQqBTT)F6N2P}29Kz=5*=!$1hZtE=dHXOq(Y^x zP+Fv<2+0A;n1?+(l(bs zy2=ox?*+4CN)^8#=*Bq+icqN@q#|}@Onhjy!Vm_=9t?T|d(aE5Tz09MdbTO4QS<07 z2%3=fm-tn;3R12yi$MAZegFd6YK0`0tz2qd1zW|2ET_}1AHZf;?|f@@Q*jk);n4Y_ z7~$;w*}@l~W&2Xb7Vy4D8nczhvKs_GW8E$lDY2Q1r(A#wak#V-B2jDrL#Y4(4Swz3 zIL=#PuQ%v{+z6=r4@h=(X^+ylWrum1rbQ~P-XP2aICopE0o_pxNd(e>GP)~cYtXZM ztr%KfFsoczP9(RI;{2}GR)?AgF9zrvy01%;kImq6pzlj+z6f0(zdn4Zgo15&qN1^sSU#&K?0 zV5S7K!ZZ`!1@B^5}7HNWBNNSqHsNw>qqea~Bg&|2oD`YNh zd%XeFl-OVfvf`FSdDt5eU*fJG1OaTOFziwGg_dQ36qfyd0E5$)xfOz@g2^+BlMdGTCl?`>2{?hV`_N?IzPna7F=%0{N9{y@(?tguQVo1@t$qN?CG^y^sJQw zi7AnAsTY%>IF`Vc7W9L1B$u-9cXKNQ$=;&oU^;58-k@jo(}FH`{XFbJgDfkAOGIKS zOvrFRW#*ssqz_h8{Dd)sX`0gtY4rxJIF-=rUXLodu@%QT8OotpIT!=@6F7qms2*W2 z1Z%cJw<(yoM&9r$%YX666A!Pruf1pxbGmRoq~|n?UK8$0Xje)lPRF6D5GZS1C;_o8 z07aRZYJNb5f~KIA*f}RjA7dMK&C5l zFDY|j-gSOKpCpi3(Ft217p*wXTfh;^(qu3!m;SvnCZV&bszwDCginGd$R$ahAdr$? z$Bn!6vbCU=vv9mm8Q}o!-mHgo?0X=*?D;{2`FokRKP0H>e&M|p;ER7XJ2~|TCprx^JT9G z=V*F{Zsj?v*K32M?SZ)$^j=`4Ygv?O|9KFCCZ}?enQtKN!NM@43J93DS|N}g(JB)5 zfOlYVD*H+mA+|d#H@Y#2m+bdb%A+{9LYb;ck~++crA#l(5RteE%dekJ0Gux`_J)k)i*d*a~-x0sJSp1;Gg z2R58TehXAydYyyO?jVbLbXHgv=wuCSR!Z3nVVVOhhDHN#Tlu{KV@V=&i+GXe@x3yw zR0680a`bbs@Y|E7tl-mSpnosj4e3!;HqK=qcv$!qNJVYMD<&Q|n)+brCt9)(Td@F^ z$h_6-QEA_!8UuW+NDUEePPanxp*}mbzW7AO85Ou{@Jlm&l|{pp;3X*cYbx=YBhEg<8v=7bU+83@>F# z8BWY5;h@GRr33~f68KoMj0N^G!0 zQGVD8p`>Y9f;>1=-sk_X(r2a~kd!(U5+n@WBp`$=&m_yOM2o0}9wZ9XFzsXlt+?+@ z-i}#$2l9ZP6UyYi61Yjiuj&rfAd-$lK@9o@U==%m6X-`-!Ul$}$+DCiO6Vyo&BClF znnFPrI)|%z`hie&N#%G`mJijhaVc!!HV&rvFlR z^rFL$r)yf4A>zMD{%ulF0!&CK8z?E*k|YUYl~u0Wc3rn}tBe>94WbM{MKVg>-#zu2_kK%;;7s1$D|Qlm(>D{Y{CjNR82INQTSkzBws3u!b`j)Ns#GKmQ~ac zodgUsDmQZ((stYJZo3UbbQbU(kxp(h1pJ}%uAuV{ddIMk^0vxg=n;e-WDu1NwA)Am z-S5X6+6Uu4n9USRU^Jk~4+=n5#%Q2dzN9ZN8Ic2W#VKn zAh}$DFi?q1%s3|tvtBP7^fF*cl`(Pv&X)a{=nbEZ*OTVygBfv^fa0tfnKc77-TEM3 zKojA+NLn=IU^;bsat+p5Er$6TM2|_i9!o5BORStW;cKcU{TLWv5jm7wp#@A@ZY=|& zGChubO^5qdu42-U8Mf&)V3Q%1HZMvMTuL0@-iDA&xUDFk`v$QxecS@adp>I$w7}}UoU7d|617Z~)4KX09 zR|Cbm?2V~8G&a-`(T4J>plyB{jG6}nUv;ismRBS@Q zG{3d~rZw^nb73TI?rQ7eXK=^e=mEl~!Qe>4NqGp%Q}C+#oMHu1YYdMnn>2cuO^g zof+VG;R>qpi3Nh4N$4UphO)MUs1gN4Dlt2*CbwM}Ar}!&CtSgd0SE~rH-SyMf7RN! zl#}RcYD3yD!8S<6PejeAHW7OiYLbGU`&8#UAsBNB z%U~BKgO-d}^NA`K%sGLb)@tp;wt|C1SDka{96+IJCkM{4=FwTPKUYjPF^Pryt2A^; z)$3{RW&eRpIibR9yxTG zV`WZ{Od6|ke?w}TluR-W4xtsGA|~?)hTq+VxS?lGkI)JTXQP6Z7Eu$qq+Y*K@W^a) zdIZ0v3X^$6nPG}pQ65ZPv^5Jy@ihpcLS;ISaE;Gl^P1A5F|)?XKN?WYYfg_$8mlmH zQz}*+0Syk}Alj9-&|Dr-;ZGvOb)GprQes8Cgz0#zxe`$Yb9w}S%ARKP2r)1VbiZ&{ zQWYBzDX37H&ZA|2k}5Z*^vJZaLc6&N#>$)?nKM@Dwoy}|!695DxaFbAJc8i|nA9T_ zf_TYuL~yWB7_bJ+=@I;vD$M2)V$(zeO$E0@oMJ$Q%4{Biq=n6EMvu%ItJMP0t6;3m z>5(~OwK?;5#-4cwG&qE>Kuj(~lX(Qg4+lm~=@Iskc$qB5Pv0rIq+V)P@W^a)dIW#U zo+k5%GQ%vf3KYh(mgsC?3{asmnMd3UkPej@Ju+#mzzqf2Di|wsdSuR6DKeE(?b{L1 z;1CurZuHP(9>MSne-gco=JW`QDavItB6g#w$=4RAQZF*AW|VbJ>Jj{wDoo}PWd?|q zSsZfxtcPOPG8}-RGMh&mjz&=w!sa!nN9K$bhFKI)&1+7N%o!_C$*5R$1hhD`rijv2 zX7dP!A6}73Jz7&R()5&%A_~)bH19Z)R^YrjR!ge(l7HEMUiP2hKV2z9ZtOh8@%_K1 z@1D;5|NReoPM(GXM`@c+&1mE|hfi=im`w^Xn3^tpMSKi8c%$KS8J2||co zP-bIGucF$LBYx%;@_+wZJ#q5nNIWdoZBlX*0)wd#)gmN)BzWbgZo(-Nk{&?FuZJS` z@#dNh2|`K{2GG|4Fz7jTj@Ym0M#de^^K0W(^S6o+vCOX5UU8}ky`k`iMx2P1Cc5H< zL9OorE8VuA@9`QbRTDa9n_o6@8Zx>N-3Um@2#Br`2Ql|Z^%V!%FkQto46|}hoh~=w z&{uz*0X|iFB9Z77rq6LVjwQ{mf~W$^88|0@4M>a3LjL z4Vo#)pRP7y#jYH-x~>?Nd-n*a-G3x735DZwDpw;#b# zO}GPyGl;y^k6^HgTS$~RY~CmTn&1XG=MER085!MA=rzAd|5Pc_ofnC>{QN8bPuk6s zt}1bq4y>x>beS9h%ls{<`BzLVVDC@sO}<6aLVgPBphWtuoWR`tE2VSw?YS5-9Al9v zuY^*n1{nPW|MI=mQbrXY&||#H7BE&VztK;o*NcgqMR*tu82by<^t9vr(2N<+&nMDO zp;Ohmhkx~-;6K5C+%p4SK7~`D;jycBECBlo%agy>puLCJkRDxkR}>+o?pz3|N32DP zt#vqb{q|XKf>n}t%@F+S`!qR>zH#MNTLF%(xyoAx$64j8sLDR8+zTqppQh)$8KQZo zFbdFKQ(^<|2-m+oFjIUcjLE`(bP*KpXdakeHyOb#XF`C&lIqsu56@R>=6?5o}%xV8)N6J7`XKqisrjKZ!?Y|k8C}oKu}Vs+vNdJy82(Ratwb79amUoBj9mmY-Yu6}bd2nVVF3NHX$^UM{eXUG?Kgc$nl zo;BoouH2_?xcnl3QF>HovEs6A>9A!|p?>a7<6!I@`SYh`}ZjfMF zx771QwGyCiApN<83C)HTvtPLS@9vm!XiswcDHxPZZkwy`j-AsQk*8OJA__D&Ja+XC z0uag5H?Q z-CuuYwK*n_-g}c*RhFDsU#Z+XovUF3JzLp2D+V7xnrKi{V1-I0`PFhQ1E7GZz^Ck- z*eg#^p#r!#Pl-TKda6;*WQO<@N*SVr6^AS5*qQ4dDXk+!h}i{2Up+_Q#IXRm`7CTT`53xaj@P`E0>}Owk`H)4^GqQ`p_* zq_|i2a{AxF>)4R@AW__EJUmAk^nqEP^NV@!Sb6cW@}hLFN`rZlExI8iJFj|IM%L#~ zar6&(1+;A^hdfVg-!MJ4=xpN9o}@ar@8ppUA>mcHaLu(lh`~7LJv{SwS?>#bl6Rau z*K}#ytUG=0b{t1{9AoXhPVd6`jx%Dzq5-F2!3Sl+Ija7XyHFk8yz8U9$GXemJ!>+f zRP^)68I^Y;g&&P{yeS;RdugtDifvZF!|IMRa66)M&{h9jwcp+6kFb{5zH1u(^s@-E zrkq~CtoU423obxZ-~^ZRBa8WOU4O6MZ`Y~Rql?ZtT|LhcJeJSzRoZ=WxPN7K=j|UV zaxdz2TCTny9P*8?y^IvKMh>XkMI7h-4KC4#uDjxM{z+vxzfWZ#LjTE*6I2|nbj`na zec*M=U%yO=5H$Oeg}ABfui0x=we52ou1gGi^NOb*KGi`xe()vYxtCmbSC_VZPReQEU)1Ykx-4~j zRnF%Metg8IlQ;Q}0lXGE+3-1Q>s%!mls<`P=%dS!0_rLMLUwK6*z{kEjx}wFr0fDu+Lrm&-p`d?b7>C zCK;CxOPn;@Y<`Q$DmfL8Jxb0WlJ^{E_$4PlSiil?AsODYjlAJBTQoqCUTd%VYIZMo z(K*jLqSq8obKb8whIz(!W%oKbx9IY9=OcP05Pzg|nXt$y@h-5MeGoBX(3XbnC*|Rg%)NX~75V0| z^0N2$zeDB2v-dkr>VMG<3kGC#C5F^>PK@}ZQ_S<#NvY>=Pxragao)(-cX9RdX_-qb z?>^tod&58J1d~S=d0#m^xx33D8*b+pCVU8xl(dd&`p^qk?eLt`+QbJD6&4H+b}n$& zUH#S5h`8e<|CDiViIIc9o~$Id&*?Q~6|W&;{ca1?qCCsL+yxG!(mpEitt2I-)|C)0L9% zT#<}P4NDa@C!KbjE@2L((vH?)N7Hp(VndIsGR`@)bY6!vp_S`dH{50d6)f)2r+y3K=Y4IPrD6QSFKwDbe(k#2QwI;a)0BE0W zk0k_N|L}wF*$2L3uHawYiH3d0Tv1SgYJN_Hf2Ew_`h^20$Tb)>5y`MSMh(ut12E`? z$L}!vcg*z?;G@!}XX*|DfTclglrhEt7zM_l1{6zPgi*isj|EqxV_ZdvQBVOv4rriI z3IZnXoP+>X>Lu_=%+?PPORBEu|GyBigo+7QEFr=hy7a1fRhM7G;6FhCoLzga&!1e( zX6x))$;WYYFqxLy;oEdf-j*5@GqN#1v@t?_6_@h`ZM)l6z1@gZ-$lM*9}KE)yUhGi*te)|7JQ{S7?Mg{y5_~Df-j*5 zPlxY5vlAR&s4LcArU%B;x5@g3eL(%0dH{3y9q_O2gGCg@{QIEb!ZD!pb8$k@A^fIl z5bT;w2`>cIh+!#Bgfx(^mj)VuqA_*d7#y1k3*k?-IJOZ@Aey|qw6 z5PVZLpndjnPt2OLwfLrwehEXcPhYmjczZ~SUAmU*ef_S@$$$N6@|VrQ)lYtE0Y4h| zO_c!q4g26a!8h!Kd!OlvbqdsJk9p(Trn)*jc#mC9nF@BJ(s001Ba|Av$>)q7b+y#*45lp=?>K zIiN@J+0}jY^rfmuvk0+>a6k`JNEJk}cysKb(nMab+qbjpJ)d(&}4 zZXZo58_=B6chOL>gXB-t3-IDUWxo7J2eY~b*G02FCD_S%l^U6~uy@2%+(3ENfSXh% zP3p}cFw`AeNPaz_UuC82m;b17UY;hn38f`xdrI(=^R?qfW~~V{fPV`)e62~{N&0An z*hcc}!i6pBRaPpBs7M;XKl`zkL^H}-Zj38T!Wp*Q=&7)Q?6RM8ZLXiI^c_@y*?rS~+nL%c$Y7H=z1p^~2Aici$v*xiJwlqz^chyu=FF zXdV=ehQ<{FPZmGI5Y5vN006xY{D9O4RFQM7RL&@#s2UA^79nB8kF3uGier6YumY3U z0Yg3KxmLi+S+%FZ5Qc(0(c*@U=3^`wVAW`Hgg9t{v_M$gXe@c>;;4Zw=Le$(L$)1d zMPuA31R`OfF%9n-p~(@r#$+O1Xii8H=iV4~D!Bhs!$8c#g{^S`Nh7x0K+N}Pq&tA{ z4>Ep0kpgFH7%yxJjYiYCG{NrgjOPu8WCA6Tj2n*7f7w3PC5EjawwR#NjuUnFU(R%9ix!*?15dfa2R7k*#O%UZi4Ud*^Ahjwm)88P)GO z;Wrc#D~0%SZ|L46m1#+-WPPj$9)qkR5Q_se#1vaQX2-5YD|HTI;G~hi9~3Vx$1@%J z7i+bfw7x!mygnWPIT2_!EJ}_2C8>y#{MMCaL1ILn^6a6k#LWMc8u-$bbQdMrfavUCw3dOAW?DSc;Xgj1*`ilW)yEI{IVu>rX2V3w zHBw-bA1=qJU`*9D8L2gCOU-=Wma6SXOT0dm>Y6tG``?_ePW-l`i6mt*zw|MT-OHtE zX&P?+?pv3;K$g49x~}O=pJ_~`jtcKdx;lQ!G_{^?tyZz)D+Yu>tu3I}`o>4tn0C~f zVfHmSEGyQtY|2d?yvnTXn8LGW-y~l+5t(5?+gemU(MSfUkI77#oAq-V9SNB)vltz# z1cEm6q&yuMBbhA}kN{3j%G-ZlqnOu886|$&$c@ijVt+G8#PLG^P!d!mu3N&=hF*u%)3h%QGApf!{RYn70R zwLdU3V^K4rgpMx@eDI7dt~_WqnP{{zNN~T|5JSo6aNPVhV?^OhX+lZYN;8VF@i9B+ zN02G+8fRha)VYH_5uS+51*30R9&9A6YQhMH$(ZiON-uu@{?+a42TLK^0l z&C$TAKFt`*-6}|}>U=q9#&UqBk{I~sl17Z#!TlA#qcuG}-8d#qNq5%6PR@O49PZpf ztmIhBO~u}TF}ELTB%oz$v1X#Rl~&O}w$Kg`Ep?YhArSAU@}`U{kF|a9p2>^>A-fkL|;Jy3XRf8CdB)-0H5Z$4RD#z7(}!A*g^5`cL&h}Tc~S!t}ACf-k|*SKGmCXELi zO-{G+SXomAv6e&f(njCL{efvnXg9KFE>L1_S4&}w;d~t2%TwLaxWT7+d*h&Sg_NRk zsY#@m43ID?h+2*`N)-{tskkZSs9UDRM5bhmIuGPFs>jo4<7q1K2qNs(EMOA*bAnns zr>p+%ua+kwrNd@Xf3(%bXisB6N`zKw!gHl5pP#u!DuqB08)Bg$%Jkd>HJyh_fOFK{ON~*pm>Wh<&h4Xn>kEs#jKXKlfqKm; z4>k^HDB`CY5&s<(G&&QHsASR-uTS8Fo{mH`D(@`Wc8oqzx&(fVV2+e)}6~oA6a6!9bESIra4gcK-A?pxC|>^a2l<}?lpfq34uFOP{A zNwYp?tA7$mR6w0iL27bPM501kl5)XSMou#X2)4QGs}p7bLUXLeo%E}6#_|CeFaQ@3 z=LEI(wz++Ou55pTZ4yuw^+w~$=7`k@kXG%bl>m}~gy^#pV5WrxJiDbFQ#znET{*EX zb3TJ1sK7XEl^bIKtCVkyhbbX`cD_1V)FHNuy%NQoaIw{k52IJDP#j9=`Lw=h zuZr28MnP>!+>f`0xQvn#duCU}LC!&XMcXnn>71*rrm zqg7v&?0x0(*y(Uf*BoWOoy-)pJfxvZh1a(sl~&xWnTf<(G9Ti$*0 zS3b=hNevT{+Oz@SE#yebb{Bld9^TG261E!^-yJ-hgZRQ;lOTPyds1%{O1!lOeFzQV z3|DOlR^YO%)}6pu&Q&Ll&Dqa1;WNLI=`Ne|o_c)4f3zJfZS*|A6#vue%_3|mV>Eas zJ<%+ynR0m&I_#zm-V=cbf+MKg3%tVzN$R4b`tox3<~d?7`9+3{)vm5Iu233`ON|nf zpjM)5^e*#!mLjJOY@!wbrcY4Ewq%@Dm{RiS@_5v9lC)c%WKEoJVAvwNdxZY@#CCQbQ75C(g2^F9zPSe8Sp^=*R0R+a8R4S#907@C9 z?0<&67aIvTuHbqU6s9tju{p~mG#zcXpp6H?>?LU!m)Novg1_N0FF$fjY)wI>dz;C(R=*0!be$Ab+iUXSrEmWh-2 znCeD7<--N{Boe{$WU{@LZhCyfTf=H1EXw}E^`6Vs#zw++yX4*0P^9&MXLk&k_%@fr zl@vg$EH9n4Oe>Y9VnWri&`kT(`3_~+jv94M;lnxVwx<>bu;C8AfUN%C34CCDlZ}56D*NvFVPk?L+~N%jR!YA zv0*5p0-~Pi6cdEhjFXY!|FPkTN6`br{^92y32@60Kk)(JQ$+sEyC59>a8uYuSm=fx zn5rm#R$hztdnz%-X$=KTpODF*9*I@j8GvthNTP)YR~v;^S%g^z(+ES{KYqgqE!gmD znsE!CMc>~dEt46es}gMVSObZMj%etCjemI4aPBr`UP26N*p2_e2W~my9Nv`mahZ>w z*%rL}a}^dM4>n1umv6TfaA|Tz^h=c{rKtph1#X#iVxF*eoFN-c?ubMytq^T$d~ljn zFwYlZ#o@E!doirz6WiYVyiCh@SMoC3TDui(5Vn!4p+EE=Z9|9M*o`Uq%mV0 z(>fmAS5me?TIzw3$COCj3gx3){>Gn`}dvrle_C^{=V*d&qFF&x#uuwvaff#VN4 zwt(bRDruVv%UdNOp$=c_a)3e@gC@g^!;tQL5G3?u6o=kB=yPU|5diaygRvEIF#%KZ9@s)F|BoR|2w1-wWT1Z9Z@mMn8=o z#c@y?E0U_kw35WVqL$b)LdyHGF|q*Q8OjgYQkLY5r*0{a#?Vo&3sW+XjO}BX@5*|j zD0LS!n!Qoy&uj=@5CnmT)Y}8VMlT2ofv0q~+>?~L3S>N3DDEZCQurSq{#i zwmrE)Po0NmSE+J@YeG7lZ=eO>ffsndNe|#NY_-0jQSpp15)vmfUi?qGcfnKma^#3( zR=P!2xSZ!aQj2p`c<+%+$RVWi3QLs|x;b;g6a#HHHBXI!By7)^sE+L@RFWY+NJ>g2 zkpv;Ps31=6@P;QqKjc90I6PVD*7WcOPqQTUX074R6^DgX;$%MSg>%}cd*(8QXSD`otxvtdD!b{ z>ku4LGcrAnpDNmu8~IHoz+qi?Jg;zY80yZBXhGlw0jcpM`u5N8d##}GuB=OM0ld8Z zJ>}j2pTl*3T$yCkbTa((h3N;{F{*g0KbaP!2g_+cDMxAJZ?H;);tKl7i_=J2<%=s^ zE=w{4HSso8s*Rz+k2ike55ND+xCv@Tb+>R*RVSuDu6+8$&qQ-*MaYlGGzpUgGbJ+L zPNx$apLpx3O>H-R=BQp+|Kvr(($msDVg@&P8XdjzF^s~#h?QLCmsWYo=S{LbEg>aw zlUcp+(~4R#VFcI%a3A0b+qSQ{7=N7MyQnZ+`gh$i=$rEXN9CvcL;q(hKAHDceZ@2mmV6m$^~ZhRAB&t`Fm9VBLBa6n7k?O0p#6c5B?8aKs?_>WT9O&Y&wbzj z-Z-C2S-zpBzUjtKOhp`R<+LzkAQB`)xbSV|QrmE)2f`gFN3NIAi90=?9WeBWL@ zHRmgx!WF)RJ2{2y=QQzSJa8u?@s^MAR49MlgN9^RC?=m+EE zHM{WSFV?%I#O0r~4vJ|#MZZ5Uy#aC(wwu5J(Tvf?pUc?~Wy)oK@DKyVQ!P19N|O}U z!8-&8;6CQOQ;t8*@Lg2+ACtCi3m@t%5(Gy#K5=*x0Lb)m%R^7l2%UBpR2pF_WojYo z%UG1Z0%<-#1>5u$cYE3P&*0C^GmWbl?(r|$4jiLbL2ZE}PaIB1Y5<_w3p@bNLRX;) zpCqqu#GSt~3I*NKHw2#NJ(v8597mHh!X_DQA85-2l}q!JQxPN$dCT`RTq?IcuGh$| z+*@&vENT-Fhh(=)dPeHdV2)~g(eqAu`Nccm>cjDD+4VF=S?F_UpNqHixv<)6?tc;K~Ci{McS9U`|FK-cL0RCi1@Qwf&Uz* ze!t}9^jpj7eUk9A0Hq&}Efl8bH$7p3%#=(REY3R(FF)p_$f{On6P1Ld;|#y}S=F@u ztG)^4)8QTBG%2;hPR=(PXyMevtlCRHr*oc8H>Ev@!=FESc+=1aA8?$F{1)UUmecqB zjpIPzp=~G&&rCA4!1D@DTTTKJN_!nsC*hZO5T7O2O9S%t1pG0iOZnf=>-*Gvnl@+!1m59IW;d8<&Kql% z%MPrXHX@fIn^sKto|aa(up18|jhAwwtel$L`1~&gIY?pCbAhK593{u|9xaFEN8Ak$ zdv3WLdTyYTTr5IdH*{T{;90>tuA8?%vEg8|jP@M&3%vs^HHqyVp22OkcnqJn{Gd1& z%T^W4BgEW9oF@Y(SBnr?t!unn3|;L=Zdl}fHJ0Ufg%5{R_Y!n;Avgf{yBE>(PPvrh4FBBhodt6~^Kc8wtQ}A!Sv6L= z?Wq3NQwLK=hNe>H;f;Kw$%m&Rg&edo*F=-CD5LXC^%>;hNs$*#Xqn{R0xS}w9M3Bp z#ox5L;Qhh{Tw0~tPjU+o(kK@N-u7qgu-&&;J+#$Xd7r)9B+uoM*K^4`?N0i6FMxx? zn81-de1!Aef!S3<glQvkz;xpzj>7{ z&rB?5CN&8*Y%n^VAqj!1NBPzX8#V&G^;D9(7ba2xe#;NiEEwVFPT_IAD>vcO0uyn{ zWm^;D$CjGVbrN}>d?VKs!gCJNE#-_mf1d2%squmCJol`Ux;&1JQweaX28Q_&?|mMu zXe5HO{z|!=er7pi0A8-_O4?kQ{H`d~0 zasbo|z=QiTqosI#`A&%;+s*q#mg056uN*nr#QQ%+ z(kgoPc9}OfS8_9IIWx(!auS<4te%Dp!T@}=?7D8|nRZY(bws+83T`XZ?-E$MEDQ<& zZ7GkJy~GTh(rAwP89yfewmb}55L_XSDW{5?kZqqRs>*}iVO}OD3<%xGXC#Iw*--Gf zzXynlnrlv)s#pQ<{xIRKN{Cl`V|!-C;%u}`d@$LVduZkS(X}8kg*IRMwpRxLEy&q) zCOP%&2kdqM+Jg{h=7xu$_JQ@Lr#Z72p6<%Lx}wp@m}+^PsTxd**9b7dgvXm;mc;_0 z%J{N)txmvbE;A3o$h1>Qu%x$Y8fL2n=q}_j(|l05#^WAMu69HW5v%HMzD4+~z;c;q zKup8Yvf@R@yC7;W7Zmmw(AD%^fS`g?;Jt5wE>4tIrfE+ij>Va#&gZ5i0LHwAq1 z%i~01H)Nk)#RDtmqZe~az@&Kx&q<0bPV-$=oe->4wCX$%U2H45RpA+K8ex1nr|^sZ zR6e<4Idm5qkx0V303Zxof7W{TLqRdt!*8#fK549k@S}iwQggiTsH>()^$ri%nATQJg54dK`TpMJdj|~ ztCZe~os16#J5%p!s09VBlw^;=9W!-&!#QN*-U5rgO&R-^OS^BEr(&DxoHURvP?+#>)HzzO3ij3c!TE%`3zg$u(?^Nr(^NOhc9KP{e)U*6>|J*n7BODlDf= zHfEe#Rx{-ZqcNqtsZNt(JE1LY%YFuv`6^%S%O!aS$-a$-aVB9%!_UTxFbhrD2kE;7 zzKuky?*dr}Fl2Fv+)RyEH_70W?fXRYGd+H2kk*kGhPraz+ z2mb{hKebUnOM4M>w^1-Ur1o5fb!o!ZSbS(AwW4uGR0Q>67bS*N2SH$&*Xj)(jQ42! zHfZVu`cdsvY#2c3)NsJupDjT(YhVu*OKGy{lx zc^(z)e&t+2&1yOeezow@p3Bg|)=(-&PaGJsi>I|%PjwLYv{hja5JwN@tdZHCxdQa9 zvC;W}DspbO#We2jZ6xA{M!I8Pa!N)~65=$CfrX{!!6L8B0%CcH!53w>BXON}8f_8)tp*ePw08jS5E>UVj$-yau*Z*M&*%5zK8TvW2Tp63gY7bk^Eoi*^LrFMeGvW1oc%8cuCg!Vyn1pTHvo81RdH^Z!X45A|E^ZTLH2hmpF zU-s{kb78hU22rz6_*;OaT@bsYmfm0Xb2kY9(3sSkMgkVOYw_}pYhzA0pl8GUc?ddH zS>QidqD>bgqrIQqX}@->vMKzDu;mxqcQG=WJ!&5IIdYE9yO_O?@m|*&UV7HUK2@=P zf7-DY^Qpo`?^(3x8rx;qTPc?FvG(x6rwX69%W$V9%!k(?ZFuFjD1GfBwOaDpHrsRc zHes;krRUM7d!E8O5?p!FV)f|#+BS>rTE_9+G!5W?W1A{9sXGH{=zmE!wvhY<-_Osc zFg!dfc%7mDck`nD$G>Z^JFr=@gXB-l4WnCUu^j_4uuzr-^~GolpWL+df+vr(i%$2X z(UasDY#v>VU@lObzNLgu4%*GA8G-4VgOkQy(bfx#*Dm5H-ivljssHDLP#)qhXK_^L z^^Y8RGFJ5NsM&7D&7FN=^sc81X3YB-L>d42Ah4g0P*)Ld9*M}u+ELtuI@-8Mfq5T; zDC0jLgvRoGgg)F9Z6w@>eYhx!jt!%zO^Ri+zc_)(pX5snHaDE-BeadQl20n-)K^L zk5H=`IY&O*b8Us6l}$5JR7dB48Gb>=mO2~_a!prF2-`s^JHHQJE&%k=+w~SlA+!(? zgAo3d0H|ls8t=*`3z>YUf0PQo8DhUarDA`kgNRh@4H%D5>pu$#nq(_k%ZyZro9(7K z+1O+LPKYgc>WgwkIj0NMT1P}&f0Pe~riSarEhQInwFs3*Z$q%Dhv^P<+nD;VVBAuM zcV&~sOgG_KFm4knMc6>;VusHi))QicKN)Qv!hhBYDGJ*<=xu4=_paok~!@?q<6o zp5BT4bqHf`fLQ*+r1v-t>SAP*81urzW(3|twg7boF81Lj&Y5`-wVOi~hEWvt zaFGy8I=fRw_vr9*yP~0|CPU-z(V=_ZQSx%*x}PjCPHj{l7d=$lErz!>u6rNVKob`W zIXH;%T?jOtUJ4k!P8301TO1(f|Me From 354cb06c434181f966b64293eddf2620835ab963 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Tue, 23 Aug 2022 20:40:51 +0800 Subject: [PATCH 24/43] update TDengine CLI description . --- docs/en/02-intro/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/02-intro/index.md b/docs/en/02-intro/index.md index 83b4322011..585c7e7d35 100644 --- a/docs/en/02-intro/index.md +++ b/docs/en/02-intro/index.md @@ -96,7 +96,7 @@ As a high-performance, scalable and SQL supported time-series database, TDengine | **System Maintenance Requirements** | **Not Applicable** | **Might Be Applicable** | **Very Applicable** | **Description** | | ------------------------------------------------- | ------------------ | ----------------------- | ------------------- | ------------------------------------------------------------ | | Native high-reliability | | | √ | TDengine has a very robust, reliable and easily configurable system architecture to simplify routine operation. Human errors and accidents are eliminated to the greatest extent, with a streamlined experience for operators. | -| Minimize learning and maintenance costs | | | √ | In addition to being easily configurable, standard SQL support and the Taos shell for ad hoc queries makes maintenance simpler, allows reuse and reduces learning costs.| +| Minimize learning and maintenance costs | | | √ | In addition to being easily configurable, standard SQL support and the TDengine CLI for ad hoc queries makes maintenance simpler, allows reuse and reduces learning costs.| | Abundant talent supply | √ | | | Given the above, and given the extensive training and professional services provided by TDengine, it is easy to migrate from existing solutions or create a new and lasting solution based on TDengine.| ## Comparison with other databases From 127b62ea0e1ea041082e54bb4a0d40305346b012 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 23 Aug 2022 21:05:27 +0800 Subject: [PATCH 25/43] Update 01-index.md --- docs/en/01-index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/01-index.md b/docs/en/01-index.md index 363fa1101c..22e62bc5e0 100644 --- a/docs/en/01-index.md +++ b/docs/en/01-index.md @@ -5,7 +5,7 @@ slug: / --- -TDengine is an open source, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT. It enables efficient, real-time data ingestion, processing, and monitoring of TB and even PB scale data per day, generated by billions of sensors and data collectors. This document is the TDengine user manual. It introduces the basic, as well as novel concepts, in TDengine, and also talks in detail about installation, features, SQL, APIs, operation, maintenance, kernel design and other topics. It’s written mainly for architects, developers and system administrators. +TDengine is an [open source](https://tdengine.com/tdengine/open-source-time-series-database/), [cloud native](https://tdengine.com/tdengine/cloud-native-time-series-database/) time-series database optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT. It enables efficient, real-time data ingestion, processing, and monitoring of TB and even PB scale data per day, generated by billions of sensors and data collectors. This document is the TDengine user manual. It introduces the basic, as well as novel concepts, in TDengine, and also talks in detail about installation, features, SQL, APIs, operation, maintenance, kernel design and other topics. It’s written mainly for architects, developers and system administrators. To get an overview of TDengine, such as a feature list, benchmarks, and competitive advantages, please browse through the [Introduction](./intro) section. From b9e1539cdd9d3082ba0349a8713ca9ea1750fc7b Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 23 Aug 2022 21:10:07 +0800 Subject: [PATCH 26/43] Update index.md --- docs/en/02-intro/index.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/en/02-intro/index.md b/docs/en/02-intro/index.md index db28cdd939..15f58cf5c8 100644 --- a/docs/en/02-intro/index.md +++ b/docs/en/02-intro/index.md @@ -3,7 +3,7 @@ title: Introduction toc_max_heading_level: 2 --- -TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT. Its code, including its cluster feature is open source under GNU AGPL v3.0. Besides the database engine, it provides [caching](../develop/cache), [stream processing](../develop/stream), [data subscription](../develop/tmq) and other functionalities to reduce the system complexity and cost of development and operation. +TDengine is an open source, high-performance, cloud native [time-series database](https://tdengine.com/tsdb/) optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT. Its code, including its cluster feature is open source under GNU AGPL v3.0. Besides the database engine, it provides [caching](../develop/cache), [stream processing](../develop/stream), [data subscription](../develop/tmq) and other functionalities to reduce the system complexity and cost of development and operation. This section introduces the major features, competitive advantages, typical use-cases and benchmarks to help you get a high level overview of TDengine. @@ -33,17 +33,18 @@ For more details on features, please read through the entire documentation. By making full use of [characteristics of time series data](https://tdengine.com/tsdb/characteristics-of-time-series-data/), TDengine differentiates itself from other time series databases, with the following advantages. -- **High-Performance**: TDengine is the only time-series database to solve the high cardinality issue to support billions of data collection points while out performing other time-series databases for data ingestion, querying and data compression. +- **[High-Performance](https://tdengine.com/tdengine/high-performance-time-series-database/)**: TDengine is the only time-series database to solve the high cardinality issue to support billions of data collection points while out performing other time-series databases for data ingestion, querying and data compression. -- **Simplified Solution**: Through built-in caching, stream processing and data subscription features, TDengine provides a simplified solution for time-series data processing. It reduces system design complexity and operation costs significantly. +- **[Simplified Solution](https://tdengine.com/tdengine/simplified-time-series-data-solution/)**: Through built-in caching, stream processing and data subscription features, TDengine provides a simplified solution for time-series data processing. It reduces system design complexity and operation costs significantly. -- **Cloud Native**: Through native distributed design, sharding and partitioning, separation of compute and storage, RAFT, support for kubernetes deployment and full observability, TDengine is a cloud native Time-Series Database and can be deployed on public, private or hybrid clouds. +- **[Cloud Native](https://tdengine.com/tdengine/cloud-native-time-series-database/)**: Through native distributed design, sharding and partitioning, separation of compute and storage, RAFT, support for kubernetes deployment and full observability, TDengine is a cloud native Time-Series Database and can be deployed on public, private or hybrid clouds. -- **Ease of Use**: For administrators, TDengine significantly reduces the effort to deploy and maintain. For developers, it provides a simple interface, simplified solution and seamless integrations for third party tools. For data users, it gives easy data access. +- **[Ease of Use]((https://tdengine.com/tdengine/easy-time-series-data-platform/)**: For administrators, TDengine significantly reduces the effort to[ +](https://tdengine.com/tdengine/easy-time-series-data-platform/) deploy and maintain. For developers, it provides a simple interface, simplified solution and seamless integrations for third party tools. For data users, it gives easy data access. -- **Easy Data Analytics**: Through super tables, storage and compute separation, data partitioning by time interval, pre-computation and other means, TDengine makes it easy to explore, format, and get access to data in a highly efficient way. +- **[Easy Data Analytics](https://tdengine.com/tdengine/time-series-data-analytics-made-easy/)**: Through super tables, storage and compute separation, data partitioning by time interval, pre-computation and other means, TDengine makes it easy to explore, format, and get access to data in a highly efficient way. -- **Open Source**: TDengine’s core modules, including cluster feature, are all available under open source licenses. It has gathered over 19k stars on GitHub. There is an active developer community, and over 140k running instances worldwide. +- **[Open Source](https://tdengine.com/tdengine/open-source-time-series-database/)**: TDengine’s core modules, including cluster feature, are all available under open source licenses. It has gathered over 19k stars on GitHub. There is an active developer community, and over 140k running instances worldwide. With TDengine, the total cost of ownership of your time-series data platform can be greatly reduced. 1: With its superior performance, the computing and storage resources are reduced significantly;2: With SQL support, it can be seamlessly integrated with many third party tools, and learning costs/migration costs are reduced significantly;3: With its simplified solution and nearly zero management, the operation and maintenance costs are reduced significantly. From a62806bdc588a29588ecd845eacabfb67144a18a Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 23 Aug 2022 21:10:39 +0800 Subject: [PATCH 27/43] Update index.md --- docs/en/02-intro/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/02-intro/index.md b/docs/en/02-intro/index.md index 15f58cf5c8..9f0876d297 100644 --- a/docs/en/02-intro/index.md +++ b/docs/en/02-intro/index.md @@ -39,7 +39,7 @@ By making full use of [characteristics of time series data](https://tdengine.com - **[Cloud Native](https://tdengine.com/tdengine/cloud-native-time-series-database/)**: Through native distributed design, sharding and partitioning, separation of compute and storage, RAFT, support for kubernetes deployment and full observability, TDengine is a cloud native Time-Series Database and can be deployed on public, private or hybrid clouds. -- **[Ease of Use]((https://tdengine.com/tdengine/easy-time-series-data-platform/)**: For administrators, TDengine significantly reduces the effort to[ +- **[Ease of Use](https://tdengine.com/tdengine/easy-time-series-data-platform/)**: For administrators, TDengine significantly reduces the effort to[ ](https://tdengine.com/tdengine/easy-time-series-data-platform/) deploy and maintain. For developers, it provides a simple interface, simplified solution and seamless integrations for third party tools. For data users, it gives easy data access. - **[Easy Data Analytics](https://tdengine.com/tdengine/time-series-data-analytics-made-easy/)**: Through super tables, storage and compute separation, data partitioning by time interval, pre-computation and other means, TDengine makes it easy to explore, format, and get access to data in a highly efficient way. From de2cecd52fa6ffcc81d0620be88d0f1b86227ce6 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 23 Aug 2022 22:58:01 +0800 Subject: [PATCH 28/43] docs: update it devops telegraf for3.0 (#16356) * docs: update telegraf and collectd english version pictures * docs: fix it devops telegraf eng picture --- .../IT-DevOps-Solutions-Telegraf.webp | Bin 31076 -> 15652 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/25-application/IT-DevOps-Solutions-Telegraf.webp b/docs/en/25-application/IT-DevOps-Solutions-Telegraf.webp index fd5461ec9b37be66cac4c17fb1f81fec76158330..fac96f4eb63232c405bfb5e09eda7ed00901a7b5 100644 GIT binary patch literal 15652 zcmdsdQ?RJY@^HSvaK%L*8TV1XCLGJu9p>KtdX%IBWA{& zBQuqy#Km#>000d!VMTRCPC~@LY{ojETp(%y*eo!Ai*~sp1sO>(5o=_|E_#%e{RbRZ zkFTa@xasG*5x)CTd_dfvbv1gvehY>Vf%2V2{XX1F-|?^Qx3)LOuhTQ2&;3f2+3V7C zqV!3Elipv?DqjvC5SKfJUvfQB?*W(T4S5Qm8t(?I-^qT%pAOFqTi3Ayqu;eR9!C`K z1{wK)-t=#=Z=Ic(jaDE5_OH=zgAa$-c*B68@3=3IC4+|Vm(Mm8l`Gr~$KYlBPeC=6#rYqe>oZ_WUlxU zM?58Vs8*V zGUTn8|0z9xkJ=L3%YCdr!V8aP`tPxLKdB& zP!`{S+?CR$ve+2uako;2^_@P7+GTFs)bChvGrE(!Rj0jnGaT@9qSU8b?N&yFgK zD`-Ube_u!{gD`^+O{#s(iNsSpfiR07B~Q9op4F-p5N7|uw;iSf5rn%wO=iy=&!f4r z9x6f5Pr><{Q#3h^K55S&@qu_QC$GP+gvZr7tjh!VozLCqX5kz8iwz690E58gi~o?& z$NA3Q=ZMs|kBe%gYHha*a3%-&BhBt_&3#roT~qXWo6x}6o^IoADv6{EgYPYfeIU}{ z!tU-}?u@U|7N>?a_igu0|JFtF0*;e7_?uGve+M>8-WeZWW)5n^s;sxmu1S3=V&T_d%@D%q2fg8sAG@r71bR@jc74n;u@C;AK|^ zL%A$JM>4`cC-%3so?5FAb~)acK&H|NI#ypUk6Ho@0ayFE5KNZWtl z{151_FN*9nkBq~AOtp9atyawpv?IxiZ0-5o>Kj)QIqm-j^o;U6UX5GBnjIs}1u7*L zR^)@zjzvzgY{cwOxr>#Y67_-)CA0!_2Eg1us@{z7P61_FGyqqU!S{FcZRiCs31yIN z$kRub;!AL0t9niR1CN0Bne6OWue;)!VBy_BxiOLZ!_=`Ljt& zF;^cHA=?A=dL7gCS2~N2H`eCZu2S z=7&%+X;IYg4FLd99>PgmZP&5zw8P)3%)m-~Wi z^>kMHJ^u24>XW1ndmCz8z_#NOj<$2eMn9v%fn+Ta_}09uEu(bt6p*jZEl!?hUj2~a zr;}#(RV6WjIId7}m-liD^d+5N&>p~I>_6@~T}G|7pfoB|Li-v{1NC?LiI5?;rUISD zWY5!rTBfpOeL4RQ^27qvZFY$J+w1*&y}JIII0VG0e+qu_g%} zAmecKfR!n>dK3t@RS1WQtLI^<|9&e$rj98_P6&Nd5S@i>Feg->I zIQzj>(n(0~cjF~j5|VS?H?M-x`a7{M5REGP+bx3|8{6wT?QXPE*tbWKdlY|tZ7?mBM zl+fQb!ng6!Zw@Ii8Qk~N3iQnxQ7!^udVw zXs-??bb|~?<>2Xtj8{0t<|d*xZCF7EMFmgf|E1G=Yp%JXXNvM8Jf{F!tRU8XI0S5B zA+F~rt05`b=e$%IQK;P&pv? z4z&jL)Do)>U-Jaj%poV1I+YS<&_ukB#^OVZo%UrPV%nA%^{CcDHrJ(c6Rr0h21V&FS4NKCUNrWx+)Q5f6Nh5tOW)3^#2WZp#6;S;^f zi}sV={VOZm{E3}=hn2f?ak~j3#S^BO1cULh|2y?rQV!J7BWL`b{OJRl#OmhJGXdd{2jSLu{Rdo>c2I|zsrHQ6C^yd`SKTG z_W#68|3!UKZnr`$drF)m_glZS%z*Mi{YxkOA5_I7qP{diy}Pq=ruYIfEAr!R_PY`h z151P^TWn9n{B87qWS9RWgU%bQBg?@aW6P(VO}}6gnL*_oI}Zn8gHTS%}X@mw~v#tyLk9wdg+J^!fy ze8aOxKPdbEUM&2pS1K~{Xto5^aJ|zfST0bHiH@@b&G- z5eU8u_~!$BpI^R>YHvtc+$7u=ALc@lUdY`jNAv#abYYh@cU7D6LN-gy>1}u1aMlPiu%lhI}n{%$jEKdE(i>i9o(z@m2F#l3P+%11MY+UD{EVX7asUn zsh_?wb<|M*w1G+teH2{4Is7ZteE;iN?xTWVQEszGYddEX?p<)DdG#?-YQ-w85UVL`HS;3wpU^%wnIg=G_p|ullMsxHA-Jz`; z07O^xOyiut&XS+AephMBWyhHQp4etiPlK490dJ2u7Afq{+2KCII{*(=@4lR-p1dc5 zw8p2bk`o}s((9+~{>-1e787Tnz2G2XQBzn%!n{6rh&e?iBIBBf$^AuyLCdH59!t7F zdU!1M^H;UIr=?u?wGcu)JSRRGV`*BQ6zC^y;?cqQcw+!xxAcaRd=)IgLomulK(><_ zHqRBcZ<1YD4kZCEtKmT_J+LM-`PjCGkesk$hW$flN=q65fSJw|wFH^-J|e-xG=JC3 z7+496;ZL`SSH|f0y!)XK8K{2mPn7P~(ZE5>MNw^_aY9ZNTA{wAr`4j3%8=O6e0!Kz z&cjA}9u6HerfL`4TVL_R{S&f?Fx&nBCemj8tM-LE{;o$B%Et8sO_)booAwo*)5E&> z!OI5xrp#X|%4R5ih)CVm?(S))i95h=s+Q5t!EFEi6@qf7?cteDhhNoJ{uM(a&6W$W z191rW9rV@|mh3A7q4Bsdje>^ZqYBS8r8>zlz41n|#!}<{905dsUW_`9s}gCXC?4-q{;~86S2U5WJCKYosSi@jc;MGrX%ZP#3GS6s0@l3qEX&KA? z%51`hfTwY+WmZ#7(hEOK7C-Bb2GFok+PwPf4t-0l&tkfZjvlzgS{4A4>SCA|$2)JJ zTp#MWP3LM^AWLmq8%gis{|0DV8jR#EHx&rr!pV7_ZJ{)o)tuEV}lv_KOP&sJ826SOun{rV-z|&yXj>u+X5$pCxI# zpH4K8Gh&Dn6~>LZP;tMOf61ff)kn*bAzUwH>^m;bD$n`4pa2p#fe;tFcbHq{j%=?g zUz{a}+h6pAE0WsLFZz|m<;0}lq8EcNZ(ChX5RVHUnvTSR9RVPqzBk~|bYLEGkx*8c zI!{N0Z%h)f>oUFK?19<8F4QK7c_5mdjlWzNJ?uNcSsFiw*bo!km<%L&umvX_M6QtL zDAl7@6{C+sIXZt-I%!|}uFV-LyAzUFQIgC%BZu1=p~5M3hfsaV+c^5**}-vw62APH zQ~~9tEI6TECQkESYlLc&kMr7i*v#;!t%a5y#1R(=%&~gc2F~{pxE&0=#~*bNb)FwkH?8P#p8f~kjWaXqiCpN8l|tij>g8k zm+_Q6?qx6wEsprZtyce1dI=Ja=pA(`=BWNayBVI zOt6PfzA#>Ih~LpU=S~j&mS%C;nq0}kYBv#LZsb>nfO8<=M^W4%toJ;7Gv1z4%|VK| z^$QEuCVggIZO_m5)$Ah$vm9Vt5%`;S^F>ChHUWwNFhgr(ZK-H zg&D!BUIgg#4e(twJ_&CEPUBclkU-1oTBE%9Hy6k;SH5v*OX_zL>lMjD0{W4O%~R^_ zpSvXSy^JvN{B6oG&YcBYsznDJ;Odq7Lz<-qsI9+cH7ZQ# zi_h(u$A1BeX!PQDkA`y71NK3Fw}(mihh$khJJM(hG-#{82D0a=)*#B}HW6_HpkH#8 z9l-57WWwIXf=66@tNh>k)H^nPGuE05-$?`d@uK2gmB3(4)@WMSOP_;X@MuNj+a6*% z7^B;ig^nLFByEQ~qCynF!FCg9#0-xH#{63p@`zM^EyO?h>KhB8iH~13ZB>k_NouX% zx)7d|(UErgvem1_3~@L@iA)S<3b^A4B=sdAysa$oS?OHWjYmkMR~WEp`i<;>kL)t? zM;5Jj7yX7J+ILU7bs9<@=&Cs(3|Xo*V2W@>zkehLnj1A}KB3lCq{1F;o;%t&;x_0W z?D9|C#~hdB?<^k{jx+L^u}`AVM@UHHJuC#zYO-XTQXn1MZ+I&UkufF+Ok|XYY0=UM zbe@J-Fp24-@ˤ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 C^i~l7 literal 31076 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

gdVfNh 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 Date: Tue, 23 Aug 2022 23:18:12 +0800 Subject: [PATCH 29/43] docs: fix en/20-third-party/emqx/client-num.webp (#16357) --- docs/en/20-third-party/emqx/client-num.webp | Bin 7096 -> 26364 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/20-third-party/emqx/client-num.webp b/docs/en/20-third-party/emqx/client-num.webp index a151b184843607d67b649babb3145bfb3e329cda..a8ac6fb4c036b1db697d537472732ca854e583c8 100644 GIT binary patch literal 26364 zcmZ5{Q}s;U$aWFTp0;55pe=Ez#dwJx!sQekuwP?O;9L> z5y-*8qkgN)GW!$Bo%G3<+xKnHXj$)rU#c&j&&qp+|G{(Tyz8avzM8?)Y!jul>pDV_pk>{x9;i`D@&({&6q$ zH~zchQ{4XO82ah&BLB{>K5r?p6dBUQ|mt-tT$;f^gQbF|0<~Kj1hP&Z7{s4L-GjX{f zX;S}dkqkEL-0P_1XhtW^XTf=&{LKwVISkGQ!a6PhXA@xq7l5;cuyH>RFV&cqp1B+C zz*y_f{^I(pP{Ca)xG%5Qd~tLvMXCw|@a!WJLFYwoVchXX&&=TN5-PgP1NZ}oR z7A*=1R5?a2H_Ry}E29w<-$nH3PY?VC-Y&#JRhR zDA!vB)cPN2(LHy)TH_0Y=%<3+SdjdfH?A=D#$N(EIlu&Xaesp%Z<-?Z=ufqDSbACP z>1TK?(GZG&ByMz0teP26HLmn;toz$81BQQcW#R(x-vO};U)+f}+;#vIUxIi|pEgE` zhM>jR6YXUpS&1*oBlVls#UGP&hE2#scoVZ~z=7Z5;WTavqXLz*LH?MpX{zr0bp18b zSryW}u-M1CgQ~$9hszfmvwB0du zOh3x9kj&pVKzKCuFn8>h+F*8j9;vCX%#Vw$v>P2&wEq8t{3mNe0Nm;B*6>|U<) zde?jOkr}pt!C0I>e{*0HFEUL_7+cK?F7(PG-N?7abyExcq_GGhqQ(ulGL<%{CvdEX zSJ5i#N}rjm3Yyu!^{-R~>5>opcI){20w3)|Lm{C-h7D>*+)G3~tCY|79+T@j%q7VN zhoTn>IOWGRWL>UrzDBzM7oD1u4?6#>{~K~4o4#ik(9$= zX~}9FurKDDQJ#D8PiH8PTyQQNY{o4od z3L!9`m%+}sjPRH7C+^ympO?P=R}6DylCW_%5#IOf7cJuaZKRf;eq>w0`TgW_DaCcE z^7uh<;SJwEyfJz^k`uozFUFbK3%e=iZ&J6_EkjdJR>K?{hXUl<+~B)2S44jiB>t#v z$Lpt8VB)Ss}6 zaim?}%9GK%4!#)JkmY^6^i2h?H)7>9zRZU97gH)LpBj=rzJD5Q&e%W3-T1md%jTezO61)UIOuY-s42f&x6t`KfPc*q2i@CB2 ziuNYl{&5BhwQ|SMT=?Wn(Vtd4cs!krEEXSsp=97WjF3S!uRF8?J)dT3(6 z99_Rf{WJ0Q5Q`;u`bQ^nJOy1~r)ZWzfJh{re%FbsMxEc5f!82OrR`bdo|8XB8xWEt z4XN(jfnAI(Y0>HBR=*G?xSzmQe_r{&n#p0()L7BH$!*VI^Khe68UgR8-zp zD6tp@;I8>_hwLg?O*+jx?Ugv&%3ZBMd5i;n=FSF62fC!vAR#Taa|cI^!sVAaK( z;TO8$yyuP1gYZ};g#<-fxLAa@6c0m4PX(aa4}M&KXUl~$KM0>=Q-zUN1^x6KSKMur z0XF_!Vg5lS%zVZ3A&;ClFw6XbWwU#)Xml^lL9|m_zdt&}PBWM+*O(aPSfUz71q-oG zmL-&su5%o}f-Xy-UIxO2>H3;Y9g4QNvntq2y7-kSR#3XG-L`yiJ)Z8)Q%!qxo8>kn zMgpMj#l?lWr?+~>CsuCX@Bq4YTzIv3%R*`(0=eq6$VeiRu#WK`OoKy?Y{;(r1QoZm zsD$@C@hIlw8Y2A)@phY_wkKV~pyFOCMqU-?2hvm1jwdJyT=(*R9Yb)Oi7J7^xyTph z&1Nl#z2;?0FQ8JG5331V0Z^cvm+GRd+7g6x!07&z+t#w#i5T27;~Xk~`8uMNl^P&D z6PwlUA^7=6nViX0^7ndirJs}`ohtQpW|ZzQ;jOuh5V0n?3)0yEF5Th?Vq2U)Mb>^w zsB-rEJzLCG>iRA}|cF z1Q@a2BP>7ph|L`YRcrC?A_I-aN==4V4?cVSp>Zkl#YMVH;|>;%81A;;LP=>BLNAhi zdnu8GOE}d$7};+I45uI=rs#j!J1+0w`ThC2>)2Pb;fT&UWi0j@Zcj83!QZjUBY|K* zw)(Yh)s()XI0*J82*GkpbLtwUff?g)ilP}osbR)E`*-ZZ`+OwX)GBq^w_!gc8G=OS zvb>j{OR_t@=$FhVRpc?7$V>A}0B}>O+FSS*7_ys_yOx$dl(UK0MHS&ON9T$RS#@JE zz9I>FKSdwon1>foQt!H5Qmt@Afs<5$c4*Wep-4b@Ve*N+m??Udtkszp*6=bRRnnvC z^LWSfR9cyb;w+t;N9==n*VYgJ7ERPCVEng1`H!L-6(B35T!+JCyQU9Gt~7S+y}(M2 z6JgYX_9Dq?@48Y7l*>Aikx3giWkJfD$cMEsV`JOiOWicR(Z_`@HFv4oYboD^rl*Od z2o!h>_$NyUn>ZhwEtpMQ0L~V|CV``O4}q;0$bxt2(M915+3qG@mG=*oE=ebgpiCJU-;>FOiETl#G-7q;i%U10atx0sqYs1DNaU z$OVROEhF5)q+x<#U;pR)6Lv~`wj=3;7#I*e_HOo2aApz+jDf*S+CjII&&e4CuA70D z`-4L}g+V-zkpJk4{;662Iu>6FYJ}&Wwqf=-_VL4J*YqO_^1&iBQI3}wJL_~75DxWd zwuUhZPtYB^e}PR*WlHgX0`DI>M7I8%&$0ph5i7%F>=+In`T;mgEd%;r@cdt-fdUNI zr5FDy(^pXPoFLs~hZmTfOh(lFJOzpc2>h?c<$uY|zf*wo{iyLCxlRWgq5SJ{tQRd7 z8fguaU^W#^ErvyPw~cgmZ#IinPGhkc|9Y@)uvBs}&m%D#oo1yZpeZUBfxGK)=bx(& z-$BA>q$iH`&Po*+qNk$^0#S%^dqyMH?)vX+{1>OV*d#7WDES3BMba*mEgr$v&qEg@ z${kHYl88O(fLpL{ZB{$zj@7sY}vYqqd-;O8k29tM%U_- zbZ&e@VhS_r@3mDcO8*^qqC%9(Z{GMnZ835Hz|T)TmjSNg>EGz%;H1v()#n@T4*due z0k|3|@cKeAk-JMCs4+D)0!usbDK%EUnK>94cH#az0*@7`jxpP(Rf_iN!UYzLB?ces zR3Mo|E4-Y1jC8xOKYQAcui*--4dZxaNgFnA<7AwGoPW>&rnXDWqs9eLC8MUFwKrJN zMMSwfgDEq%P6)S_?(%6*PsJgYp50p~sfJL8c0zHP7K-7GY-4(fy2FgEgupciZ&##M zS#=3FnKp)@d8VH!+;3^~WtKR2))S)!f6RZi$vWWBx2ZWPDTu(JOhn1$DgCGjQ>JIY zwP~9`il`~*5JYo-$>k{XIBpg@9qa%m48hrO$G)w>K^6^38ag?MlD)ll2|x_2q6JpN z?|{=VUMIRvbtVioW&r;6Y;z#3q6Gh%7p{QP;;dc(w{$%8@-GrkXgKg26V4$b8 z4uWDj_Zj#=EH1^yhM>?=3CIeAKavQJ+fvr$0ma`);M*sd1I+6D>sJZ#7VUZcIUQI&x1g^iC}m`;t1OeKUcfC}CMo*JT>}?s zw?8M4))@LTOzhm_3Ks1)nmiQ1W8Q0tG%THflh23-@#yP_dIT=%h-?rB*T>t5JI_s^ zyg?7@eO|+cLwD}lquhs8~F?hAZol4x(n3xWQeAz^W*Ql!}hjZ@NKYG&J(`GYi6L-sZ8 zP=lKUHjk=%B1SI%?dq8gt;g&dRX&~gi_Ojb;Ay8}Iw2ly9nbJ+KB}4;k)ST_JJha# zlquwS?zb0geM7cWpuH|e<%$r*X)e`O(m^l9IO>Oh$-nwr!k&X^)yqq=Fgztzj%$V0d#bAb;&2XOiSCiBF96KeJQcn5o^inRqrgl#)aSf~G0O`v^_OOQscpiM z^7qZM`Q6D0`DO(U+nvmDo)_YwAgYOZ$O&uHqcyQ3$M7Wp7EB99#+)@qU;JXcLxjMA*FYQbC87aNvo+rbID?*P_5h zFG5`Kz7;y4MRnc-D`0=M3OSDQPuB&}uiDiVybjM?ck(r^kAC!KS=CSEoul&Q`cZ&b zJa;nlH6s|*6%Vm~5qUds;ulj0AJE})AA(BY7Sy_7@~XM1orPmGZ5k?cE_4X>)Wly2y%qOFh-4F9xr|}^Pj68mU@x^{=v3C{;PtQ^g1;2 z>#g213p-eW*y00X{ONXa@DoQvhQC8S^z2t~J7;C*gpQWh{_3V0cCyakqb37MZ82|vljK8!i(DMjo6wXp(oPMaC;6y*>X#dRdG(Buk zhO?9fe($zACv^YruS$uGiPwr`rz|7VM_;WRTMH4y`Z!S)k?`P92>upz3Ke9z(E8~? zl$5rmw>F*QDlXw?0WB<9EuysW>KHHHRb&b&kxN*MRQbUl*rRLtc54U$Ad%dAPmAMp zAk+|4L%_die%BuVK~#9xm$unvxC9B>#ZNd^*+sE*(v{ikViXa4k->;f(5yUGm&_uHP1W~5)z9|$_5 zNubuMd#I1?=CI0Wun~Yw2ay3BlkDronoyRWZN1^tT4`O)i8j$PwTBD{godE<{0u%< zlW)~WJ2?*7-R6xb5;uZ5MzlMcO`myGb1@W+4lNn-s*Ne!>*(2;$D?bn`tuu`1Aa<1kZ)Dwp2 z{M&@~D#*4nW6Pmu_6=tg9;6xMP}68L^{t#9=lLP`AJKkl{R440DJ)>dde_az5(Rp6 zE&xM2>3>QR(5xd=nc&@J#Z+y+(@h3(^Hwx$F-G?}N@Ot|pG!t?IMvn(aSfs?wuPa8nCf#&x$xB{%M%$` z#ct`?i?fq&qYnNC5XCR)*y3SD&=ss2w_MH#w4~azje*hOhLekyJa~oY>@>(w8E=x; zQDf_vSVyu>IWEa`jc@O!`rPl6SpvbHzw$-c(?1e`; ziNOX81WzkI(PG-2)jLB?x;g+~c!^gkpvciA?k3EyQkhK^rY&zwzY~i~1b1fYGUc7XO$Y;i$AMjDz{ID9<-X0i zW=P22-QOpkK|I|$`Y+6~&WVcPdn5zUxC=#m8+7zf^gh3<`nqJU3yLObr)U51@Qo1>B);?p>Sr)tmqeTEpXyU;q}5{ zAB!ZL;X83UqcBkBvEq8_U@b#qXRASLa^)bBUPf~qFtO~CJ5$*U z!zt!kAv$bgAGNpz4MvOmt)?eSz1e}qbrOMzz;kSxZ3nGB-dMn4kxfy1dKupYe!B2lcC|kOG^G~CGU9*K1pfw5WFVun=D-Aoq0gmQ~ z1fAQS(#hi8fMVIyU(Vp?0QDGYYEf2mO`N7I{Vc6Uf{l|v@~7$z@05IzdrdN_deTc7 zzd7yeS8))$W-v|Kgb?(JpqIxPIX+aug8|y4?K{-d3}l6$u66GP*l7BpD3O?MW#X+L zjfJIqG?9F6A$bWbm@<`v_OoD_S-V-Z7$#caO&(op1e0E8>QE%1d5Q|mO139y)oruo z&_{KGfCuhfMTSlGr2w}~XEP-8W1S$^DtQG(S^n1vu#27(Z6HE58zYiq?B|kt;kE%Fx(e!NXC?QsR^z^Jh}Z zpWUUvH&PpYO7U_(dIA_!m_5aFN6J^M;PpB&&}qdA6>hp_rYPqiJ*#r2TWVmIJ6HM@ z^ig-eT~JksjCWMRaCeI?6t-zlP+W^5dY7se%n&ztQPFQ_FzFW}h3x5sMYaYe9220S z@+O{R?WMnT^Adnmk&d!Q9ei|B*jySV?K)%Em!TQbsLa zd=vNltTO{2crjPy2CbbevwXn0v5{(U#!{ZcvxxZfVQYWiZI8|f;n0VlUe+1WR1LeO zn2k$K71oy$%F&8~3D$}-#BuN#`uuoE{nVm@4%ZIvK`nam@hRvULHF`bKx4 zzrJ05BFqh!4 zN&beIB}UmV8j-Jr#cN24+0a3-?aLQ|PFl?wUG}=4#h)0)lOK_fCugg?l*oW8f2vv$ zAc2YS>e{n}3xok_R>O=}qjHF>S3*0gPuV#?1^wT&aix$<8;ed7m(35m6ZeK&R?->9 zt!~QEM5+t-@9}k7h99Vc9;Wpv`>EB~6+7b#b>`KsAe1GkOD~C|5bUzkKN-4-4Vg#8 z;I2q)^Z_G^00)LOsdEi3G&xX&MFZO)&tYcSx=qR< zX2)(CRF%hYVxE=$>Xy^WGifJEPe$&o4XJghY)&xJr@H1m>HCP3`(zF=%dh`Um>Dl0 zI1c4OU%ywh$f?97zO!XIspjY*f+KzKs< z&$?L{{sC~!jUi@^&E?@}U#8B=f$Yp{+eVP_9l}yH2~WE}pVGC~Zh9`D*4?H)j&`Zn zgvIbHyOEs^8!k9Xh~7MEOtjg&08|0A+Sta0gF~7oyL<2uGDI)+iFpM{2nL9R_36q@ zt2MAclpwX6qqoWX@}o><+qJ_Zt^WGU!L@TD%4AOmks)z0E;t-4*0tbt_BUpl5xpD+uNL>;xGKUo=KxH zpc?dx0C{BL7y?z&=B9D$dadr6w!F%gpifUE%KLTxrq!{Q63yIANpVuy!V4$%(+IZ) zSzlb!`Cp?48vw3NCA6$n>Ww-4?Q*;F%VRbsL4CC?=ATRkZOkquC6l2YCJE3g)5g8xyS+w5I^E#l>(y3{cmjP$O%c z`1m|GL@H8#gM*1qWB87zn)h68gL)I0wm_t1Z8y5kvXsxXzE*73Exe+VlqreSCy5R6 zo~=NeYFa9ExZ+ zqly{vC8B_t6p*QL>g|mDk;jv%CiunW>Xii&aa+_jCAVX4mAXV?BN^Wo4BY&*s&z1H z2SnLYCo1j1^>S^U^V$q(H?fulp^QO6q|(moIk}M(m|%SCLPH`wkQw!0;s{gUus*uT zo(+J4s(^mAUQ03bIW|dd>l!OmC{9~K{_#v%{J2Nw$hD*mc7?9!;y*q|`-|Sb?9`7@ z2&yju*#R%gWeJ15S#;`zup^EKjiTcxjyZ39%eJ+)6EZzuhy$FK+MsX&1zfw|N`7AT z7j_Z#)%^y~QaJI<7|uuPQK);j>1fIxaWdU11R^P%Kq)JNJl&stZW61DKVrV{IC*Vn zR7NBNjOc!jeRm5_tG8FxX1$&x&lk9fk#ZvuuH#nBwJCZ=nSn^xEVtCHTsZiRZcvE8QBh;UifVE4yCvAmQx_u)kHZFq}UZp=VGbb|{ zu2E!2wQ4?S;)A-8?@E>y_J-)&V?14f2J=m~d#S3StbkF?u?3rkXkZ6Q%(}q+wDiTU zkgLwOS%am$f(e;6UIL}R#n(bZy4(?2##hmQH<_vqF9c~`^|O6D@`gU5fhefFJ?p82 zv>)ty_;;1opWKv=aH)&>_5acFwmx22L{OZ_z0?jg`LxsRNF=u093!))mAh`Qf&V)_o_A90{` zP+5;0Ovs%r=N{RYmG*-fRytvmPOXFuiNV^rG;)}QtDHAW!MNwhrHh5KRB6;`_4s0( z0nI=2r1id3`pY7oOJQVgn7GR3iPW&(F90!l>SS(f)gLTVyoQ*aRxL?=z134ywp5`As`8)A4p@)P&TVxHJFtFr;xlZOvIU6p)9O z6YZ?7!y+t%SDPk~TpiYnUmgMFVlX8EV404NXI^#XXjE)-Tx0ud!M4$sZ|2#dBT-Ec z1@AR`ZI7HYq6+C}h_bw2k~e$yBdM&ikBgSm9|ov<*F-(dIll{;lTZVrGr{JZVH2Vw zolhGT*D6=E?AptJe!nw+s+m3P!V$91hNp)p=tXJ9_IyjFCoQ@bA+M$2GoC%|uPsA8<>pu38Ts)!|dfGI)7g6?cXm4n5tAYjah0rA?;Vt5qJH+b97 z?6cZ)1nZ0g46{b}sxcpp{o0xPYBDjx`rV3 z#-c4p*A7D^DzJH}POJh{y*PAyHdl;S-L>5;E$b(UPS<=yTyb4~r42PNZ$b9WQD9>b zu}a80Y1b+AMIarag)~2Bb0;URP@9VC!{p?RkzpqpNhpUiPD-%s55nt)cB${T-9*>= zDo4eo#d4FiBfOUP76Y8=6UBp|%Tf|NY`wUm9n!u{qB$g5)<=1k`cM)3MX_q0mUj0R zgrRj04m+XG)3^{F=@cz@F&Vb60xIxTH_NkFVX?XcoHUx;du*)&Fw3?<0SM4AVH$Dt z)N*P+*csu0#(tio7$A?|8f%1Rh4DOSFB{8c zv7pm^FOOT?jHMr@-g#z&?o>x28f-zaY9^RQ?#l=%S)LCfVMGwYGxe{861;jj!nKKie%2P6xO5d3k8H*AFDm9bQ8 ze5FHCt4ogXkW^%wyv*Ah?Hxx114a?<<1qXYlQx0L+ZO4fEqXhu%}{i})Vv!vH8=p% z5Y!gJbi0h*^YjFGJy3||KysKq5RRko2-B=Nql_K5kf$Ns`Lq4@zP}R1?==0poh|lyPX=4#V^rd1`p?uCN1F%WqD`J3{vfehO2Tkn5xNIG+uaix7Hc7ul@CCc5EH|SMN}tXUVk^ud zDhw#r(bsxLnTh{B1F97J`3z$29N7l(#wQAL95WWq0W(=GK_ER4eD$0F;+L@u9GyP@ zez(`IGpRa#F=nqr)d*K+;x-bu)>k%xZ`Y3cT_u_5-=k#SDv;>Ae9Yv4E66yrtB$IR z$;u2}9a+@mb~lxs0cnO=08@HQOmykAI%HEau#|o%$QJ4zneI9`_7pV>s z3l%0ADEciM_}9n_dK*lD)kM=7VijV1k?Yw2C4zEQc|9Ym0CxXjUqvyXq}pFD%8WZ9 zeho2?CMHPSe3$u0*RlKgm%wIAMB=qjM&J60#FRBTPe3ey+q&NdzRP`Q#gzIwms1Dg zdYjZtug(d^CU?`ewhM%6B3b;;Mo%&kpWxqB-cPo)V=C&p`$Y6$gDslaDXts7Q>J)i zjCI}9o!Wc6vo4aX3jxK6cDIvVpMnS+iok14Qy=pQLcntw0f#HkP?PzF>!D8ciSati z?khOZm6zK!@jL+lAdw8CdN?sYH8SB4%7uyJZ;92z>O@1(*nQ_mz@62nSU>|1tS}H# zj~y(ws_$J_d%U5YWQMa$#m9rC*=MTy?I__x`?{ef6)RhcV_L?-_!^4Mx!r+W{&(0u zhRcGJZt7BjNWvDlq^GR#HG&jis7H^Wn4!QFBXjWj)zCU_U#J+_PwV<_e=MWjXu`i5 zyqyVPsXOb&%X}{drdf-EvNK75i{0SpM^87RJzTwK^eThmCKuWnso22dVW;?AJgkqM z6s9I#=+9`z{Tl{g&{x3-3LHklJ?bwXORd<7xkFpCvueuQ(AXL)`PMPMp%80+h!OPz)wj{QynWU=#UITlD6&00Mv zvMK*=KaCyzShV_h6@3n6#Gxt*)Ql2anHLsz1(B`M(xAUa zrO7X|0NilCS*hZj^Nvv_OzsYjJya zI<~4fLOLpY$7+SbV`+=1c_gox0%vFiHk)_38*uJ~1vSC}BsI<3=o`M1{&{xD+8c&y3`kUn$3Z6P> zL{dEGh^$h~6Zm(stGAt3_P&avW7xPVLHG&3*1F+8W$MJp_?0!qR(CiyGe4FSp<$eH zEZ$7H8i$xC2%K?+EuS4dteYTu+=CBCCSQ_aM12h_$o5Ao+;CYAH5K}zp}MpkXlN|i zJ!B!sBS>vr?K~=pA_3(ftQ=f%R*|vwXaQoilqiO$JcEj(_AF&w_aN&duD0Rzje`)_ zh}B$z0N4cnnZ^K!56lEz2r)Df6!FM|YJ_jahQY=LuK< z-yK>_$ocvG;6)RYW=ha!v@N-i7Bc~P4TCeXqVTJ6Iq*(Ni;}A@JOM|Rq<_xW0%7GOvun4E~?kO-RUXf(Ros(h{I z{MW{*p6;8<6qlpvN9mr{pe^NsM+0V;=gi4JWrF{AfRd?ZN47ki z{I*!lG>X_OfOBISy|Td)D(gaf@2zS=bV0!kZ9;~Ns2FADgUG-w(FGC2>@aKr5TiwK z{|fvfjnM?z3xyfq9K8bzp-HgJ#*w*KK`GIW#H5JG5Kj6-^a3!@i3Tm>pMkH;5zkvq ziJD8o{{GJX%9DcXo)bMw0bDRhK+EJfLSjVjL8gupEYFtWhbqYkxK zk-TffjzuyPD6R$eta#bJ+=h0^u^f=>vWg66Tmur1vNiD6#jP#PHc`C2{_7MvXFCA^ zjhovuk3F~;Enu_zo)_Q>>!MrIMT%bXpKu^2-2^>Oss!~|yvGH$;Knx0iXc!$5%rw`U=PY~~)6K(xqvD_a=__%WJUddy z8?caLpJhPu+BmF5rN9#)+}%s%D~@K4Imz=oIYv|#)x`|bw0LSnr}_wVysi`OK7fLw z1EZ9>$y0tMeiX8ZSJ&d+5sp3pqk4$@Upq6|7`Zz6K5ngP^&BHqu9f0^$h%-O{k`Ad z0$>#8o>@qD2?&gK=&*hHS@L}cu%w&WC=6fbxJnG#g3p9WHX4o@UQJ!-!)xt&2l4wj z_?evOb7}lP<`*~tJ29eq#b8;JH22DdV)Ybb6W0_-r2m*&EL_zaxjHA-V7?1ZXL{fk zTi6_3g0OKP`2^9zop^{1Z^Wpp(m3s-Dm#ltBlWDlSn}5#NpfI>g{%p}h^BU}OUmmw z_d?^TQOPoUwInIu?0Erx?Lpz&W7F1gzw~-T295zcl|g;u&RA22z~6Qh6E*)C3DnIUXij1zRlzbqEEp`YpAP&x~gQ>BBy5X{6P6&vksqs;C7YW2V=IGsn%J@ z;_ryDwgYw&rxZ0BcZD$$6JR3sWyElHas_RS&$-P!KZx()iAFa>B7aX34ULUK)32;q zhqU)Rm}U6XX&Zuq+p-f}=9@|~n!)O&RQjjiFvVT$g$%RBi{UN80gtloO=66=&^|J# z9?!gIEG^<^>Khpj^l4ebT#h_1OKb-LZL|(-Md1Bn!eSySJRi_vGCUeu&aHEAG}$Ul z4LBNXu8Q&F=i4oWsYem`@Sk>Nu3BfOD9Pt!nE?1ElVJW+5gJr3R!RE6Jgxo=lTum< zifD$CV{K16-d*WOm3qIfuNr>9P=T?um{K-xwkWf0?9=ck)NCg-=>vD_I40Y^NQ|-1St8iNu*}o<8T#| z7_SNG6R+TBzT0NU*ao?QM8F~lQQ7ddfMb99os;R%k|u?T%JBV7;k`MCbRE|4ATAKN zma)ltUCxs(^^dSa<060b(G|73^yF$#4DJmubk00rpBzBx9bV%(hc?kzV#V8`N0>#g zcXZ+dgd0bfRF;ZoB8IoYNUdpyj&Om=L9pw}Q8VYgzFGWHM-if-w9}YN6;^z~;EF{M z7P=6QK7@+pli4}YUNYxYf&jeDg88NS7}%9?M}FJIEpbMZI+%+Al%>ElW7+c4Y^Yw<$gzU6+f%Y%Y0L@c#EM%i9A z1I^CEa!+JH3IH>K$M!Fob<~RGVQXZ-MX|?p9Ak}J-q=f1Ifs-*%DNF^kvl`Ehz(t} z`d`&vPXmT^siG37{BId>q+vJLm|t4EudC!}xXuMFMGD6E$6Hc(HvEP-sANBN#C?jTJ=s*$SE9}Oa)#LG4aQu**9naK>Wt?{l$RWl_i&{1 zV@Y^8tkw#q?0Qm^@im(tc3^biV;emu#mE(zI!sa)BI{D z>l0GnFRLoKmZ-KjUZoFh$-h^8JO{x6f7DUE36)VUeT+yLNw~VNlvB4Qs82<+wa6IS zfHjsZ(U9B9D<-jW;|g=WW9CXxE4o|~uX_Cr(og2bTaV>~B(?gvcD4q&@v|}KGX}-; ze|;ajF84=E#L+{KLU^{5ym&D`nF`X}ICvk-6vvYBeHv0MJO>LYjD;}x0#6^*rW)f* zN&x%(8tn437{{BNPUyw_W`W|Bo7CeTTy2kug9LM5mW)hW+DzQszw*9GZ~4g1J$yr{ zRX}b)uIA76I+>1@$*O*`nj5+4@P2sD30e-I?Q>^RE*k}wz;^>9MIOoGJ7N-3fA2kW zcu(r-az@z$&-V?{9$RawG#lo9K|2yE>4`rZq|-$BL*kZ%%k6a z9nEfY>u|+%%vf#0?q{l;B*Nw8`s}y~)ln!+!+ae48ueTKb=OpQk>5Y9cDYfo0ZfIGSE634Z25^ zxq3MLbKz+W-xeR#bq0KDN2w(Kg3Gc?FE~6)Lzq@pCh&x!N>qI*Fdg0$3?jfG1oglP zztK+A&19g&g+9DT`9<33`3@FSunY^8y>@>pH6@MAo6PVfFhz(n{n(e=^=T5)fB9O& zd%)|r^dZ7oo)Fd;VCkwZq4)TyG>D6Mr`TB7)Wayg)F?j5lL+HtLmhe_9%-oEBnEx$ z(1d^D#4q2tY*4Du%aEdHs&X3(je!FN&OnkC0^a(?FCJFWT0`ldHDd4h=@MfvWmAqu z$KG$CnN_{$&ai@c^;e*Et0&+DSC%Aw&;wC`qa81cMpd~JtQcKp<_2sR2s;7_JW~rA z{z|Nhb70m(m|dVf>D6hG-x}goq}VBK_NE8*P7M5A@;w=J=N;@&7KjARB{0Y4;7uN3 zf6x2IZNohXViHZ(0GKMZiqyKRSlRAtp!hF2pk-FmAX=ae%-M=XAw)M}Q_%ZsUJfzs z3=O|aj>cM!FA@U~j*&&6cBy13{hifI!dNC^by5^bzEMhchiP|6Gy|#~Y?Oo#y0Q({ z{fgNNuKZSfZnyS^rpc1rtSAH%GBZ3s3pC6=YP*`X;H$Kszbo%`y zk3AA9A|4uoM!s$?MznX~GYp-aY}50ta38q;V3Z<+9@f$W370as_RnWg;y$wL3148s zfvnNw=?mTVA>|Y-Y%%p0UhCtwdWB56kl5;h!aKQTF4fu`uvY|1|k2*0P z|K&oW;RP-z(8vj&_23iQw>3cUVgbd~>_hsXPn<9Ir7dpEy9Mrv>8lx)DUANnkNywz zq77|rX=VHV22ZjCPmfbhK_4d-l8CB3ez9RNkur(>{J<`wo+)PojLvc2yx*$vj$E7g zM^*;G4@A@H?KuZt;Rd{Zva4SknzwvDhtS@OXwg?>bHcUx_7V}Tnyb#FARV!OWi=*_ zY`GrW6<6G><;sQV>#MzH%*J6>mE`(E&6?@p5r4>*Kq!A1oB}!=9+-<6aPhys0TQXD z0L3$p)&zPreDIV2Et3-}(eL3^F%qp*6VbVO;%17&RrwqbVW8ED=At-ad~ z9}~uH&HooHqQUF^uEdkFS{1aShYu7iqKXRI6S2(%sBTeN<2t@mt0*FY7Rqc^Qb+;C zDo0(3v}ruSV`+lFyAeiyms%Zeweo-xP7>^PHalw@XRivtFz`jvuIM4oipM~w+!@P* zks6_E{Vld!Ocm-&iq?&SM5k%U7Kn$>9>@wNzi1~L0^bo?K8UHFsIGqisWYpn`7Rs#V7}`?mi5>xt@a~MYaOUQJamh+RljYd6#FbXJPJ4sskrQn z7q?v(*i_mxS%@@{_DC-pD^VGBpTk8RoolJVq}{SZQ2Ky4$xjop{ zlsFmV0|zcxv9;};qAVA5U-&E5M4V)pk%L=Hupw326`ToYKb-@4bO;! zvrgWhKrq*Y%0vq?n!>+q-)Z*=!7y7FF;Sy58TF|o#~6;+2&h)Qw;*e{OqZlZ6T}3E zUZZV-335_$I73!Xo`>yOdGZV;Fm`wVMGJze1bVMolM2WJw4WaJ;gMRl1a+w&wysfw{C~g0-bPG*VG^yPf)wZ-jTsGXG*2yxzPU#yFkJIPp~9x5hC#2QL=I|3h;v; ztNXOM&-)>k)Dw1}kj+jYNM3})O#{3|-DVLpj3ga9lLZ6anbO~}0RQo2tl23vo8fooG{cp?_G_36WpM?)7eMNrRT@B&{ zmmqp>alC=rwNgps{}<{d722SaSHjQomGOSRQBk&hrbMB;m)c*?lpA@qpJwcoXaO^I z0jUbTSlHjlJ%FQ+6Oe!mestw3GaJ2l3h&WVrPjb#g?)UNAUiSp5jkUfpdmWaI2|GT zEcfVMf!> zS-}}yb7QV&6wFv0Rgno zLwa`Lnq35MYQDNvwux6m{Fo)zL|qrkt&QLwk`1!##~32AWUBAW#wcqnRAB5QG?Y#o zj%c%SjSVR#P{L{vWaQ~__T9NNh8FQ<{-)eys{3cS=C}^mQ>MdR0EcNZ5%p=}Ry)y6 zAAav_+JEJuTP_q89e|@+OtxzpLG+22HHm_j8g| zCC%Se3riSxvO-McdQOpE=O2pwWR|uE@mg{jNY^FH$X`hHU_Hq=z_GkQ57=D+eZk8( zdA&H(;)g=jPoNim?4W&jRtuB<6z)Tf%RJ>?C5mC~UAH3K1OlpVYuhm|-hta1gfZ22;lHaWm96jk8T3822A!?c-vHt3VbvSVYch76j(X zdY0-9Bi*-~iV#Afx+L?Ys`!tvHz;VJU5=7|>iC|`LvFyuADf&)9`Og>Rp(}Ps*yhsW0a-Wqqj3yxfErFzJ*GPtDe+6ro zjd4FABnR&Yh@VVQCL!hi>RJp1V%Yg-O4L2vo7w3}QB!C~F4N`DIC`O66}POD$lXrO4BLcbHmggZLyr zn++4NbPW~#lAciPcOh^N^VfkIsM3aT6C(%I?^}19AScr$ya858_WDbdM2F-m3IqI? zpK0lwJy$S_syV}y#vIW!q*`Z$)8v|7aP9h;Ulug%8aMsy~dMa0|Y8{Ix&{dR}-HC(|D{MkmxZ|weNTvrEpTYBS+;dQM6^2 z@NqNK(aeQx=yG`q4gU8-?7)gPtk)rr*p)HqFpRY72zdgm7$icKhR_=Qp_5IX+>(T2@-3gP^j zvByC$Y>5|b`cZPCYjxkwuoPB=(Z{<#^Q<6>rz6(oF=grqh;RzXx&S`8mUTG@I=gEa z^-0~A)lt_ax==rq{W1;Nm2+h)k$s%B!FXtd%7k{wLyD5NjT_QjLswxXITZWQJ0^?8 z5gt&rb_xpK7x4=iGH{6KrOv&4wuby9p%683@=pOqBLaxv&Watbso(NryT(%M~kr8 zNv8&S4Ge?RRss#42zGTPVGxoC>d_(&^q0U>cxDSiID2~jXCz5Dbjs_9UE=HrCxij) z;wt_#)u-@HrX+=N?m5CCBS9NAqQ^fKMDVpha%t^MTPfkmA@2F)!_$BO000001Zb>G zzt@kl^E^{Y)FB>n{^PD@r3Y-8$)8B#WPgJ4HBQc(<7ZWLJe^aI#@&$bREGtqO^my}*B(=B9>W0;&j0`XvE{{xJxKIM5 zLXq9OV-E@`dd64>gADDH^s4uEvr>oYQOzb%Y|pQLSi(34a0OlQsjpalb3)maAymG? z*Ad7lmYr6B>#$%M-f#02RRM(@Gn?~;&qdf^26aH*u}N~_<7|~pC86-9P?7cNUIX2Q zau`5k8%)~#LLA8^DgD2~x92-iB*zO3cErdIu6aG~R6j6fOzM3%{fvxtai7)W11}ZC zv2qy~(C4F8@$0$xwH&DCWL2(Vj>wup=-u~ZpeHI?w}D`)cF*p4;tn}Bmi8-dTVDbX zWd-5pT_4SqIY^&2#`W$tlb>g}e9v6i8D$CE*%HfiPi$CIOku^qDOBM7{!W09bx47_ zJqYQ?Er(Y90002Yriq6fR^cz4N&;9&Z>_+Ik4Sp+yj&rop--fl$P^hXENY;$7rvTw%Cw=8;@_l!) zD}=RrxF#(j2RE%M?^;(323C7LS7!z?Qj_2t(A{RxB4>c0rN zeVlIakPlf=^vy38@udQGX(NDjy2AX@$8qCyAnLCj#SzD(+ph5&^w{NLWT1X+LD}Zc zBj~DPI(ek?RiLCRZMo(#^F>5;Bm#A9Klc(A2@R54PL)T(*LkwDAd@_iBHV`YEA*35 zD@5~M^~y4gYIB}|_Vhb-+GC4NWPTG3XL;x^6{_Kopci^A=bLKOh8l76^#$=Vn<+Hm zR&tK?S&kk0V~P+0M1`W;kRg$H`=e`aX`piR9baYM z?82H4%>srPus>m1$x6m%SFC=E(T9g{LI76`e@IOiF2&7rp+eCgIm4tOm{Ac`D@j89 zsnm+=6pNEliN)CNDgMQnAz(=k#6$;}*$W$zxw~{%Y~NjO7kyz#u2%glE^eGVX3wkg z;LW;v&*-l)x-{J7-a|9|vCK$bs!jaBS7doDjOgZ6IW?E~jCxsUTB}$scU@2S)V6rb z+w=1>bFRY)_z9G(Y&2jiym2UPa();+h(6&4BfB6t$-b4aDZvqhS&$YqKLE{j2L6-0 z1m&fv!BQ07$JS9cB6Zu*Gu4(6yPn2_Rf}m22;mu(NY5;PIx{%69KixztFMsVk7(i` zZ*8W!+^?lg>9nUTU1jEBQ;xr3;A05{yX9bx^emh%^idx!^sP4le>BuYd<2 z7&p0A9@E4Mtlvs;Hd(b`?}I!;_JRI&$^`%b z02ItzwO0Yl6J4xfj|`+1T|?0J82#bTI?I|X3QKkZ5zH|CEww5yLe!A7=RsFt0baRW zyV}`RD%>u2qVXYK)e5Jz$A_YuUA5b;pXO_JD>l!`ltK|^c8l5d|1mbzlI!poif-{n ziMG0}IsKv1$>@!AX3gD!>yL&e99NoV5ci$=me8K4Lrx4bifU$f7axKd>fWk+T6Qtb zU2PZ4X(-TKbMVCz!pzA|6du^v-t-v?EtVJ#M^4#JqE$O^5x@-0Sup}~-rPg(Vx523 zhw7G3)e-rct&eO&=*SZ{5t-VZ*Ij+0j(+O32I`D11yICfWVQe)u1aYYBVD{%zYI5?*M ze>b>n!_|lqH)oRqPvd6{jS;okYu&x%<)hiYgaHiT?hr~zIL06sg;LkG)Q3mEXSCu$R--3;@C>9J`h5}Ue41b<+#*EQ^>AOhlIeuk2128N9&BmdKnq?>h=*YaT~+F z!cl$(nV=ZIej52_t>_UG)I@45J1y&^NZ=Bx^8YLKxMm+T;A>$9O?-WXG}Fq{T{WK} zcdu+P;bo`hQUn)=fw+f%z|j|S95|tBT=9KjMq<|I(bqnnJ>eK#o6D~HG*7fyr6O-9 zz>>H-Ha~A{3Ytl5Y^Plp_29i%nI>p&QIGr5wXsVU9xjh({BO1T2m!WwI)>tC`C@zywEYBHMoLc^=k@lLPd-%m!HE_ z@JLlFn_ZCO=5oBna=D2B@v}+Xl>6gI{jko{UeSk#a6$iuJH#8I$%Xd_><5$7RSPDw zGq5tCV|K}A>}Nj-=>`Z>ZFu`Z&lmw|P;IQ|K_7pSC?Yt8PabQi2U(agLx$1UDw{g_ zU~R$YYQ2E>VG=|MVO>9hh=QeyJ%thcO0(HoG{USClB$UMMuq@*KrvXlUMe*vhD2`^ zJ##;#{v#sCLutQUVdNHCtQO)SX5CDMH{G&8c|)_^s~M_IKBUx~M~dK)%shXZ{t|Aa z%_cf3pZ-+p-clBmSeOf!qS|EM#s9F9Ad8y98F)U9n%YjL&GPF`d~#kb#v0sEDra$> zFF^U5k(V4%X3;q1@#qq`1>(tW>eR1~B(rpRR|!K5v}hwP5BjhP=p6T)aN>7yFMEZvJNSItfVYyWZsHXSDX`!vvV>lduv z^Cl}ItWVfTdXYjtdf^ zpVUZK_F@QCtQDkVy(*Ky!$(;Duc!m+B@XM%?0>#czOf*mRH3l9ao-|kIKBO&39n#0 zQ-&fF`;v+)`N)n|7(a{Z4(s*z&>Cr4As7<@z$??jBvJwT)~ZErDC*Hj>l_vgne@Da zZx9Vz+TH+&3WoOw4My023doX~qJDLNqO>NCJ=y=AVFELh(20&%sMM!1ara!_s_AL+ zq!SE?YaiXj<-Q16&rb_p17nB|&3dNQ9X&cX6j97^g+ulDn`ECZ{dzt?eT44U-SSo&A@ zQn={ME7&i+=XC%8JoPg7o?S#dT69(2;=xgiAUFR|@yTzWh=30E#9!HnAy@S##IZm3 zZ)a?mupm;)=C^)xs5sx^B=7Wvc(ftd8BguqW6)wFoPu_0Qd!Y1eal2DIMhF^=OQ^( zFs%&X?5`NUF5QObh7v{T;~?>Wizu03q#fywi{GvSUE1zx%3ir60c~t#!8z-p5oiFI z=-UkCgF2^}Q2JdbiO)Af-o3DBo*<1`R$O!O5Y>m%N3G*-{2`gA9|F}Th2GDHPwG4M zo1ZgTI-__OYwuG&Z%3f+f1|#WpbP*K890*VwMtR(w1taxL}3RPXmAe13frAxck6iN>T5)++j9aL1ZWVFu7exyT~>PY zq11NgM75d9fEsNnCfdK0_(I?+1wxHP_B>xWKl%CWUJPOP90_WzirYlXzt1lyCD975 zyy8M{n>@BhaUZuFuJxe!uC_c~3?Z0fXG) z#lE+3VroC&nkl0iuw&f>3gI}^2pfR-%NBe_E@v&r)rsA2fI=xTAGaK?;_#_Xrz|nI zl*CCrvU*-xz)1O;>e?(l$w}yxbN_!Msb0lFZlc_BCZsZ;fZxNN(A8UcVMGhk|@Y{T=B2BKha+5W_Vsbe+T)r2TL_a0_#f z;9dNMPZO%X;d9XQgd*uq2E^*TBsL&K9^&ZCl_PIZ3Ym8r=exdl~9C*QSzC}yn4-TS6m(RTBxvxk}j;2HIxK-aO@H!CSZ5* z%!90Bj>AWEGS~AXfL0hhIOZ6BVIMX59@DGLXFVr*o*G_!orpPS*j=kX4dU|eDxi(PQ+q2<87*?Aye1;`lXc%Z0f84;ygV== z__E(p0jzM%%2h@@+av7#n#lmh;oy$Lvb%DV9|il1h`Bc<#ia*ADpgz~S~TvPT5T`q zU@5QSdV0_3uPgJatr-{1A+iuy61}kCj8#NVMlT)cs~R!{&B5UAbX@OdR`z?Z&OY5w z;(bN|6cs(Xcrt_Bcfv2wPU8wuB}^p*J4r;>I!8i%Sg3TmfoKzXO&G$wmlFu3$HeAQ zXwO2*U8-)GePlIBH!^MWEF*W+UiI^B_6xfAQiP!asEw=eoJW|eb(T;~Ltv_#4kR=_ zO9K?R+W#~gMa)LF+oLyrD%P)yE9;Jw%yA3U9lv>wVFAHaNo4Uubw zLW2@ZTwu;~4#rZOf{6i99QHSnsxGeSmb=lmHNy!%!Tm&ekK8b$ekzN9LleK_( z^*g~N>(>Cqg$V}Ei&1`DLUDGkl~}d;qN3Y&&csEpyuB6s!JS&Ws5e`jCqS@w!)$Qm zrYcwROu!ScF>{WzN;~(0l0ioH=7n>O`N5J>aJ_ozBb9VXf+|qNQi6dc$Flhi>_G=t z=e8HuZ!_jb5^;9su8l)rr2)&duUFM!nVFs>AdS29ca7d0faO`*!xQqRmRB(%ThSwC zI~a`b@+#0=nn744idrj}8+j6tS~py|#x zhSv(XG<~zh(M8;q3j_tGGy(uI$%1>QH(47S)+H<_i zz>csL@gj)F*B{1{^D8de97b7mPX5U)(l zk(XC8IalB01-+9YcQ_ooe*lFuMYZWg=HvwK5+~tW4G3O@xbrCVi^QdnV%Z#G@;j0A zASPrkZ+Ey*xA&=s=hq++NVZoGHQ^V1^Pb-afq(!20~FY=?y(j!7V_%N2w5H?d(U#+ zAt%aB7DxP% z=PSuVZnaKm)>K$7HYq6ZqJ*>n00002Gb|~zG-_on+@}&3W4DT5BIA9`m4if}n?{IX zP*=_3(Ow1u0f<*clrPx&W!oSJZBC1*@c*T_zhyY@do90O+*W~NiMxrdvrOnhnl{yd zbrcIl5*Cj|N70`L;ri_QXeDqP!-d%H*Wl}97GF<%K!B=Hh{psbG?uGDor=mfa)DJT zanp#j>O8E>vPFdhDZViPdrJvA^BdEE00000000R12h8Y!#P4i|3LmF6f1R#_Ree@O zM%KKUmi3T|fPO2$iH`NPtD6$ryNI1SW5p(cr-!O%*GC&*+No)hN4~lCiEFTq84cq) zN8$J@d3cE)jA^4uSgt$KuzI4HOjA$S*c`0!h7rX80000005cw(yA>%rBvY&&oa?SR zVQB`@B{8blC^qe;8m0d}qOfanomX?;ey%c98C(i*WIS@L^2C7NC0K&46!MfJHb847Q7{u}A82jZ z1=G}eNg}$ncg|ACAkfeN0000001BEM-m|&rz@IrdO6UBXZ$!ga`cxN87V1D{A%pj^ zPP0z3N76BgBXxXFq_ca)hHX8@?Up_>Qxz|-IMm7w2D}mycL@yr<4}HBW8Z*^9otP@ zCX1=NPaI-7Yd-m1cv^r3Ah<<>R*aYgmpUaW$98E77l@;27GXKLbba*#WbxT;Vso_cfP|^-bx>-Ip zt@)U6TY#KWI0y~=CR4%Kn;!l#wKhWRhl&?+#7W=6+*ck;_)7y7Z--$`yA2ThjIVE( z!hMG<0eEjZt6V7|fYcsk-M}+wotKcO$^Bcp5Df;>^QPhD52v>nzS)x#-`;1KBg@sr z|8(rK3O5oGvmqwU5#Zs_eM4*Usl~!-YK94g_3h1ogR0S%uB@bu+1phLf$r6guR$N(b_vtP@O1NuyU@#uSV$ z9uE}PnKh&b<0!hkdFG2dQzYFhkYxSytOXK6&o_N#I2`cYpy0ShjIfQ|RuWP;_sN&J zbQ-kntYg(Dc3)rORC*`ndQv|6EoIXn0Dk0SL?%xAk34hC-(EFwZ3UO4RF@W=^FVp3 zx&BTsb*QsHDAhkD`59ktd`l4iUr}-CYzD;=a(qn#xs6pZJ4LB*Y|pD>T(`K1^k^

~^2^X`X_`EkPOpK75u zO1hgg-0|oy9}@N;%U79QV+uq@;*#KcmOI`d96h~%Gm<2nIxAKFfJq}yzRCX*d%1^L zvtltY$Go%jFSo=-H1L#zLhZkHu=zN;S#u*!+(Sh>vM3Y(-aKi47a;(eSxf)`01KRi z*CqXB149kSp&ah)W)6+|ZuU%QeNF2Rjz!2E(*T(Fg0tFY>czLq5g;52@i5GAs(11j zEE_7z+DzNwl#|TNfeZYa@eqq;8Ka$65AUiM)nkC>70e~zRM#GxBnMqQ_#X{wGa%rC zt_6W=jv4zGSaRGJ-Ph^X&6sz->@-*7sHEsrhA9E&KRQ|CWe5Df>of;o_c!rtASN-MGW?}`P8f^hQDVd?l7Hm5j zxr4!u9(;n&IB`=@PPe7OEED*!fxPt7Vw+HmAUx3w6Fs(EyO7~{l}9b1Z(IN(Nf5cj z;;7pD2kqADs?ydd3~q~{EKeuG zptJQJwph(XARHQ)*Xht!)B&4Jh(JUi3YqSj7vG!Qn|xGH ztb#qK=kLMPr?@huH#466sYDynVNVH7J+n^N?cr9riwax506d5B3kUk_k)c!K;WZ}A^9BsGPDJrb=(9CdB zoIumwE;38LN;`atj>6p4Bz7r1bRaLQ@@rDNlJb#^?u&GNsM3ekxL82!FIFu{R!8Q1 z0`I>~1n4@j$6ND1stlpR5Jj)$`tb8EkLJqK%x+S*;pv1kz?&<4IgM)->PxGQ7QZ}j z6<4*iF+TL*66ca1ByT_}^h+MF0zn#4K!clVpcSN80J!JRt?|LpG-*{~d&~S&Eh!ss zZ{I>uVtjatLqGrk0{se560a77(jt(YhTz47jEY4U7Szn&_oci1g_#8cKj=Br`@yZu z!Vw_E_*5cnBI5^95NAg5m1;aBoNFp@ahq{%OAFe(@Q@5@Bjb+8H@k` Drjosg literal 7096 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 From 55f106db1120dd28e5e6a577dad40f32d6478bf3 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 09:18:45 +0800 Subject: [PATCH 30/43] doc: move connector to a separate top chapter --- .../02-rest-api => 08-connector}/02-rest-api.mdx | 0 .../03-connector => 08-connector}/03-connector.mdx | 0 .../03-connector => 08-connector}/_01-error-code.md | 0 .../03-connector => 08-connector}/_category_.yml | 0 .../_linux_install.mdx | 0 .../03-connector => 08-connector}/_preparition.mdx | 0 .../03-connector => 08-connector}/_verify_linux.mdx | 0 .../_verify_windows.mdx | 0 .../_windows_install.mdx | 0 .../03-connector => 08-connector}/connector.webp | Bin .../03-connector => 08-connector}/cpp.mdx | 0 .../03-connector => 08-connector}/csharp.mdx | 0 .../03-connector => 08-connector}/go.mdx | 0 .../03-connector => 08-connector}/java.mdx | 0 .../03-connector => 08-connector}/node.mdx | 0 .../03-connector => 08-connector}/php.mdx | 0 .../03-connector => 08-connector}/python.mdx | 0 .../03-connector => 08-connector}/rust.mdx | 0 .../tdengine-jdbc-connector.webp | Bin docs/zh/14-reference/02-rest-api/_category_.yml | 1 - 20 files changed, 1 deletion(-) rename docs/zh/{14-reference/02-rest-api => 08-connector}/02-rest-api.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/03-connector.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_01-error-code.md (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_category_.yml (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_linux_install.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_preparition.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_verify_linux.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_verify_windows.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/_windows_install.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/connector.webp (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/cpp.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/csharp.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/go.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/java.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/node.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/php.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/python.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/rust.mdx (100%) rename docs/zh/{14-reference/03-connector => 08-connector}/tdengine-jdbc-connector.webp (100%) delete mode 100644 docs/zh/14-reference/02-rest-api/_category_.yml diff --git a/docs/zh/14-reference/02-rest-api/02-rest-api.mdx b/docs/zh/08-connector/02-rest-api.mdx similarity index 100% rename from docs/zh/14-reference/02-rest-api/02-rest-api.mdx rename to docs/zh/08-connector/02-rest-api.mdx diff --git a/docs/zh/14-reference/03-connector/03-connector.mdx b/docs/zh/08-connector/03-connector.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/03-connector.mdx rename to docs/zh/08-connector/03-connector.mdx diff --git a/docs/zh/14-reference/03-connector/_01-error-code.md b/docs/zh/08-connector/_01-error-code.md similarity index 100% rename from docs/zh/14-reference/03-connector/_01-error-code.md rename to docs/zh/08-connector/_01-error-code.md diff --git a/docs/zh/14-reference/03-connector/_category_.yml b/docs/zh/08-connector/_category_.yml similarity index 100% rename from docs/zh/14-reference/03-connector/_category_.yml rename to docs/zh/08-connector/_category_.yml diff --git a/docs/zh/14-reference/03-connector/_linux_install.mdx b/docs/zh/08-connector/_linux_install.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/_linux_install.mdx rename to docs/zh/08-connector/_linux_install.mdx diff --git a/docs/zh/14-reference/03-connector/_preparition.mdx b/docs/zh/08-connector/_preparition.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/_preparition.mdx rename to docs/zh/08-connector/_preparition.mdx diff --git a/docs/zh/14-reference/03-connector/_verify_linux.mdx b/docs/zh/08-connector/_verify_linux.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/_verify_linux.mdx rename to docs/zh/08-connector/_verify_linux.mdx diff --git a/docs/zh/14-reference/03-connector/_verify_windows.mdx b/docs/zh/08-connector/_verify_windows.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/_verify_windows.mdx rename to docs/zh/08-connector/_verify_windows.mdx diff --git a/docs/zh/14-reference/03-connector/_windows_install.mdx b/docs/zh/08-connector/_windows_install.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/_windows_install.mdx rename to docs/zh/08-connector/_windows_install.mdx diff --git a/docs/zh/14-reference/03-connector/connector.webp b/docs/zh/08-connector/connector.webp similarity index 100% rename from docs/zh/14-reference/03-connector/connector.webp rename to docs/zh/08-connector/connector.webp diff --git a/docs/zh/14-reference/03-connector/cpp.mdx b/docs/zh/08-connector/cpp.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/cpp.mdx rename to docs/zh/08-connector/cpp.mdx diff --git a/docs/zh/14-reference/03-connector/csharp.mdx b/docs/zh/08-connector/csharp.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/csharp.mdx rename to docs/zh/08-connector/csharp.mdx diff --git a/docs/zh/14-reference/03-connector/go.mdx b/docs/zh/08-connector/go.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/go.mdx rename to docs/zh/08-connector/go.mdx diff --git a/docs/zh/14-reference/03-connector/java.mdx b/docs/zh/08-connector/java.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/java.mdx rename to docs/zh/08-connector/java.mdx diff --git a/docs/zh/14-reference/03-connector/node.mdx b/docs/zh/08-connector/node.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/node.mdx rename to docs/zh/08-connector/node.mdx diff --git a/docs/zh/14-reference/03-connector/php.mdx b/docs/zh/08-connector/php.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/php.mdx rename to docs/zh/08-connector/php.mdx diff --git a/docs/zh/14-reference/03-connector/python.mdx b/docs/zh/08-connector/python.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/python.mdx rename to docs/zh/08-connector/python.mdx diff --git a/docs/zh/14-reference/03-connector/rust.mdx b/docs/zh/08-connector/rust.mdx similarity index 100% rename from docs/zh/14-reference/03-connector/rust.mdx rename to docs/zh/08-connector/rust.mdx diff --git a/docs/zh/14-reference/03-connector/tdengine-jdbc-connector.webp b/docs/zh/08-connector/tdengine-jdbc-connector.webp similarity index 100% rename from docs/zh/14-reference/03-connector/tdengine-jdbc-connector.webp rename to docs/zh/08-connector/tdengine-jdbc-connector.webp diff --git a/docs/zh/14-reference/02-rest-api/_category_.yml b/docs/zh/14-reference/02-rest-api/_category_.yml deleted file mode 100644 index 57a20d8458..0000000000 --- a/docs/zh/14-reference/02-rest-api/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: REST API From bafc69462f584e1384e3ce641f29ed7469fcdf57 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 09:30:46 +0800 Subject: [PATCH 31/43] doc: fix broken links --- docs/zh/08-connector/csharp.mdx | 12 ++++++------ docs/zh/08-connector/go.mdx | 10 +++++----- docs/zh/08-connector/node.mdx | 10 +++++----- docs/zh/08-connector/rust.mdx | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/zh/08-connector/csharp.mdx b/docs/zh/08-connector/csharp.mdx index 723c12932b..00d6dffa2c 100644 --- a/docs/zh/08-connector/csharp.mdx +++ b/docs/zh/08-connector/csharp.mdx @@ -9,12 +9,12 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Preparition from "./_preparition.mdx" -import CSInsert from "../../07-develop/03-insert-data/_cs_sql.mdx" -import CSInfluxLine from "../../07-develop/03-insert-data/_cs_line.mdx" -import CSOpenTSDBTelnet from "../../07-develop/03-insert-data/_cs_opts_telnet.mdx" -import CSOpenTSDBJson from "../../07-develop/03-insert-data/_cs_opts_json.mdx" -import CSQuery from "../../07-develop/04-query-data/_cs.mdx" -import CSAsyncQuery from "../../07-develop/04-query-data/_cs_async.mdx" +import CSInsert from "../07-develop/03-insert-data/_cs_sql.mdx" +import CSInfluxLine from "../07-develop/03-insert-data/_cs_line.mdx" +import CSOpenTSDBTelnet from "../07-develop/03-insert-data/_cs_opts_telnet.mdx" +import CSOpenTSDBJson from "../07-develop/03-insert-data/_cs_opts_json.mdx" +import CSQuery from "../07-develop/04-query-data/_cs.mdx" +import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" `TDengine.Connector` 是 TDengine 提供的 C# 语言连接器。C# 开发人员可以通过它开发存取 TDengine 集群数据的 C# 应用软件。 diff --git a/docs/zh/08-connector/go.mdx b/docs/zh/08-connector/go.mdx index a87c948d4a..fd90f964bd 100644 --- a/docs/zh/08-connector/go.mdx +++ b/docs/zh/08-connector/go.mdx @@ -9,11 +9,11 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Preparition from "./_preparition.mdx" -import GoInsert from "../../07-develop/03-insert-data/_go_sql.mdx" -import GoInfluxLine from "../../07-develop/03-insert-data/_go_line.mdx" -import GoOpenTSDBTelnet from "../../07-develop/03-insert-data/_go_opts_telnet.mdx" -import GoOpenTSDBJson from "../../07-develop/03-insert-data/_go_opts_json.mdx" -import GoQuery from "../../07-develop/04-query-data/_go.mdx" +import GoInsert from "../07-develop/03-insert-data/_go_sql.mdx" +import GoInfluxLine from "../07-develop/03-insert-data/_go_line.mdx" +import GoOpenTSDBTelnet from "../07-develop/03-insert-data/_go_opts_telnet.mdx" +import GoOpenTSDBJson from "../07-develop/03-insert-data/_go_opts_json.mdx" +import GoQuery from "../07-develop/04-query-data/_go.mdx" `driver-go` 是 TDengine 的官方 Go 语言连接器,实现了 Go 语言[ database/sql ](https://golang.org/pkg/database/sql/) 包的接口。Go 开发人员可以通过它开发存取 TDengine 集群数据的应用软件。 diff --git a/docs/zh/08-connector/node.mdx b/docs/zh/08-connector/node.mdx index b089da99d2..f840c26fd2 100644 --- a/docs/zh/08-connector/node.mdx +++ b/docs/zh/08-connector/node.mdx @@ -9,11 +9,11 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import Preparition from "./_preparition.mdx"; -import NodeInsert from "../../07-develop/03-insert-data/_js_sql.mdx"; -import NodeInfluxLine from "../../07-develop/03-insert-data/_js_line.mdx"; -import NodeOpenTSDBTelnet from "../../07-develop/03-insert-data/_js_opts_telnet.mdx"; -import NodeOpenTSDBJson from "../../07-develop/03-insert-data/_js_opts_json.mdx"; -import NodeQuery from "../../07-develop/04-query-data/_js.mdx"; +import NodeInsert from "../07-develop/03-insert-data/_js_sql.mdx"; +import NodeInfluxLine from "../07-develop/03-insert-data/_js_line.mdx"; +import NodeOpenTSDBTelnet from "../07-develop/03-insert-data/_js_opts_telnet.mdx"; +import NodeOpenTSDBJson from "../07-develop/03-insert-data/_js_opts_json.mdx"; +import NodeQuery from "../07-develop/04-query-data/_js.mdx"; `@tdengine/client` 和 `@tdengine/rest` 是 TDengine 的官方 Node.js 语言连接器。 Node.js 开发人员可以通过它开发可以存取 TDengine 集群数据的应用软件。注意:从 TDengine 3.0 开始 Node.js 原生连接器的包名由 `td2.0-connector` 改名为 `@tdengine/client` 而 rest 连接器的包名由 `td2.0-rest-connector` 改为 `@tdengine/rest`。并且不与 TDengine 2.x 兼容。 diff --git a/docs/zh/08-connector/rust.mdx b/docs/zh/08-connector/rust.mdx index ae644e1911..e824b7e73c 100644 --- a/docs/zh/08-connector/rust.mdx +++ b/docs/zh/08-connector/rust.mdx @@ -9,9 +9,9 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Preparition from "./_preparition.mdx" -import RustInsert from "../../07-develop/03-insert-data/_rust_sql.mdx" -import RustBind from "../../07-develop/03-insert-data/_rust_stmt.mdx" -import RustQuery from "../../07-develop/04-query-data/_rust.mdx" +import RustInsert from "../07-develop/03-insert-data/_rust_sql.mdx" +import RustBind from "../07-develop/03-insert-data/_rust_stmt.mdx" +import RustQuery from "../07-develop/04-query-data/_rust.mdx" [![Crates.io](https://img.shields.io/crates/v/taos)](https://crates.io/crates/taos) ![Crates.io](https://img.shields.io/crates/d/taos) [![docs.rs](https://img.shields.io/docsrs/taos)](https://docs.rs/taos) From 3c5d4ad90e139cd8ea1f7187541e1af25a9c435c Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Wed, 24 Aug 2022 09:32:27 +0800 Subject: [PATCH 32/43] fix: fix invalid memory access cause of job freed --- source/libs/scheduler/inc/schInt.h | 2 +- source/libs/scheduler/src/schTask.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/source/libs/scheduler/inc/schInt.h b/source/libs/scheduler/inc/schInt.h index ce841ed83c..957fd46ba5 100644 --- a/source/libs/scheduler/inc/schInt.h +++ b/source/libs/scheduler/inc/schInt.h @@ -283,7 +283,7 @@ typedef struct SSchJob { } SSchJob; typedef struct SSchTaskCtx { - SSchJob *pJob; + int64_t jobRid; SSchTask *pTask; } SSchTaskCtx; diff --git a/source/libs/scheduler/src/schTask.c b/source/libs/scheduler/src/schTask.c index d16d15c119..9cab39c301 100644 --- a/source/libs/scheduler/src/schTask.c +++ b/source/libs/scheduler/src/schTask.c @@ -821,7 +821,13 @@ int32_t schProcessOnTaskStatusRsp(SQueryNodeEpId *pEpId, SArray *pStatusList) { int32_t schLaunchTaskImpl(void *param) { SSchTaskCtx *pCtx = (SSchTaskCtx *)param; - SSchJob *pJob = pCtx->pJob; + SSchJob *pJob = schAcquireJob(pCtx->jobRid); + if (NULL == pJob) { + taosMemoryFree(param); + qDebug("job refId 0x%" PRIx64 " already not exist", pCtx->jobRid); + SCH_RET(TSDB_CODE_SCH_JOB_IS_DROPPING); + } + SSchTask *pTask = pCtx->pTask; int8_t status = 0; int32_t code = 0; @@ -880,6 +886,8 @@ _return: } } + schReleaseJob(pJob->refId); + SCH_RET(code); } @@ -890,7 +898,7 @@ int32_t schAsyncLaunchTaskImpl(SSchJob *pJob, SSchTask *pTask) { SCH_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); } - param->pJob = pJob; + param->jobRid = pJob->refId; param->pTask = pTask; if (pJob->taskNum >= SCH_MIN_AYSNC_EXEC_NUM) { From 1f248ea163290fb96645036f0a3dc32c1961acf9 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 09:33:19 +0800 Subject: [PATCH 33/43] doc: fix broken links --- docs/zh/07-develop/01-connect/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/zh/07-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md index cc9f2e2a69..c1f7e34cb9 100644 --- a/docs/zh/07-develop/01-connect/index.md +++ b/docs/zh/07-develop/01-connect/index.md @@ -14,10 +14,10 @@ import ConnCSNative from "./_connect_cs.mdx"; import ConnC from "./_connect_c.mdx"; import ConnR from "./_connect_r.mdx"; import ConnPHP from "./_connect_php.mdx"; -import InstallOnWindows from "../../14-reference/03-connector/_linux_install.mdx"; -import InstallOnLinux from "../../14-reference/03-connector/_windows_install.mdx"; -import VerifyLinux from "../../14-reference/03-connector/_verify_linux.mdx"; -import VerifyWindows from "../../14-reference/03-connector/_verify_windows.mdx"; +import InstallOnWindows from "../../08-connector/_linux_install.mdx"; +import InstallOnLinux from "../../08-connector/_windows_install.mdx"; +import VerifyLinux from "../../08-connector/_verify_linux.mdx"; +import VerifyWindows from "../../08-connector/_verify_windows.mdx"; TDengine 提供了丰富的应用程序开发接口,为了便于用户快速开发自己的应用,TDengine 支持了多种编程语言的连接器,其中官方连接器包括支持 C/C++、Java、Python、Go、Node.js、C#、Rust、Lua(社区贡献)和 PHP (社区贡献)的连接器。这些连接器支持使用原生接口(taosc)和 REST 接口(部分语言暂不支持)连接 TDengine 集群。社区开发者也贡献了多个非官方连接器,例如 ADO.NET 连接器、Lua 连接器和 PHP 连接器。 From 576a6bdb29f0c9be1535b94b7007a2da1497277c Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Wed, 24 Aug 2022 09:47:52 +0800 Subject: [PATCH 34/43] feat: update taostools 2af2222 for3.0 (#16358) * feat: update taos-tools for 3.0 [TD-14141] * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools for 3.0 * feat: update taos-tools 8e3b3ee * fix: remove submodules * feat: update taos-tools c529299 * feat: update taos-tools 9dc2fec for 3.0 * fix: optim upx * feat: update taos-tools f4e456a for 3.0 * feat: update taos-tools 2a2def1 for 3.0 * feat: update taos-tools c9cc20f for 3.0 * feat: update taostoosl 8a5e336 for 3.0 * feat: update taostools 3c7dafe for 3.0 * feat: update taos-tools 2d68404 for 3.0 * feat: update taos-tools 57bdfbf for 3.0 * fix: jenkinsfile2 to upgrade pip * feat: update taostoosl 11d23e5 for 3.0 * feat: update taostools 43924b8 for 3.0 * feat: update taostools 53a0103 for 3.0 * feat: update taostoosl d237772 for 3.0 * feat: update taos-tools 6bde102 for 3.0 * feat: upate taos-tools 2af2222 for 3.0 --- cmake/taostools_CMakeLists.txt.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index fdee0d600c..e593e6d62b 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG 6bde102 + GIT_TAG 2af2222 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE From 53e0e168e6067d28198239c08b1a5b0223d2179c Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 24 Aug 2022 10:36:46 +0800 Subject: [PATCH 35/43] fix:add log --- source/libs/executor/src/executil.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 4c694026cb..197d94dcf4 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -469,6 +469,7 @@ static SColumnInfoData* getColInfoResult(void* metaHandle, uint64_t suid, SArray SDataType type = {.type = TSDB_DATA_TYPE_BOOL, .bytes = sizeof(bool)}; code = createResultData(&type, rows, &output); if (code != TSDB_CODE_SUCCESS) { + terrno = code; qError("failed to create result, reason:%s", tstrerror(code)); goto end; } @@ -477,6 +478,7 @@ static SColumnInfoData* getColInfoResult(void* metaHandle, uint64_t suid, SArray if(code != TSDB_CODE_SUCCESS){ qError("failed to calculate scalar, reason:%s", tstrerror(code)); terrno = code; + goto end; } // int64_t st2 = taosGetTimestampUs(); // qDebug("calculate tag block rows:%d, cost:%ld us", rows, st2-st1); @@ -763,6 +765,7 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode, } if (pTagCond) { + terrno = TDB_CODE_SUCCESS; SColumnInfoData* pColInfoData = getColInfoResult(metaHandle, pListInfo->suid, res, pTagCond); if(terrno != TDB_CODE_SUCCESS){ colDataDestroy(pColInfoData); From 370b5136c22b3f3881f23e83dd74463ec34f94e5 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Wed, 24 Aug 2022 10:38:26 +0800 Subject: [PATCH 36/43] fix(query): fix the last block check condition. --- source/dnode/vnode/src/tsdb/tsdbRead.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index cb288cecfb..0b027367da 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -1416,7 +1416,7 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf int64_t minKey = 0; if (pReader->order == TSDB_ORDER_ASC) { minKey = INT64_MAX; // chosen the minimum value - if (minKey > tsLast && pLastBlockReader->lastBlockData.nRow > 0) { + if (minKey > tsLast && hasDataInLastBlock(pLastBlockReader)) { minKey = tsLast; } @@ -1429,7 +1429,7 @@ static int32_t doMergeBufAndFileRows_Rv(STsdbReader* pReader, STableBlockScanInf } } else { minKey = INT64_MIN; - if (minKey < tsLast && pLastBlockReader->lastBlockData.nRow > 0) { + if (minKey < tsLast && hasDataInLastBlock(pLastBlockReader)) { minKey = tsLast; } From 4a494cc02e01e31e1c5c30c61fe2171e0b84c7ae Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 10:44:09 +0800 Subject: [PATCH 37/43] doc: fix broken links --- docs/zh/07-develop/01-connect/_connect_java.mdx | 2 +- docs/zh/07-develop/01-connect/index.md | 2 +- docs/zh/07-develop/07-tmq.mdx | 2 +- docs/zh/07-develop/index.md | 2 +- docs/zh/08-connector/cpp.mdx | 4 ++-- docs/zh/08-connector/csharp.mdx | 4 ++-- docs/zh/08-connector/go.mdx | 4 ++-- docs/zh/08-connector/java.mdx | 4 ++-- docs/zh/08-connector/node.mdx | 4 ++-- docs/zh/08-connector/php.mdx | 2 +- docs/zh/08-connector/python.mdx | 4 ++-- docs/zh/08-connector/rust.mdx | 4 ++-- docs/zh/14-reference/08-taos-shell.md | 4 ++-- docs/zh/20-third-party/11-kafka.md | 2 +- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/zh/07-develop/01-connect/_connect_java.mdx b/docs/zh/07-develop/01-connect/_connect_java.mdx index f5b8ea1cc2..86c70ef7dc 100644 --- a/docs/zh/07-develop/01-connect/_connect_java.mdx +++ b/docs/zh/07-develop/01-connect/_connect_java.mdx @@ -12,4 +12,4 @@ {{#include docs/examples/java/src/main/java/com/taos/example/WSConnectExample.java:main}} ``` -更多连接参数配置,参考[Java 连接器](/reference/connector/java) +更多连接参数配置,参考[Java 连接器](../../connector/java) diff --git a/docs/zh/07-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md index c1f7e34cb9..77f5838c8f 100644 --- a/docs/zh/07-develop/01-connect/index.md +++ b/docs/zh/07-develop/01-connect/index.md @@ -33,7 +33,7 @@ TDengine 提供了丰富的应用程序开发接口,为了便于用户快速 关键不同点在于: 1. 使用 REST 连接,用户无需安装客户端驱动程序 taosc,具有跨平台易用的优势,但性能要下降 30%左右。 -2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](/reference/connector/cpp#参数绑定-api)、[订阅](/reference/connector/cpp#订阅和消费-api)等等。 +2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](../../connector/cpp#参数绑定-api)、[订阅](../../connector/cpp#订阅和消费-api)等等。 ## 安装客户端驱动 taosc diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index da8bf5e20e..2f5c13d9b0 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -64,7 +64,7 @@ DLL_EXPORT void tmq_conf_destroy(tmq_conf_t *conf); DLL_EXPORT void tmq_conf_set_auto_commit_cb(tmq_conf_t *conf, tmq_commit_cb *cb, void *param); ``` -这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面 C 语言的示例代码。 +这些 API 的文档请见 [C/C++ Connector](../../connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面 C 语言的示例代码。 diff --git a/docs/zh/07-develop/index.md b/docs/zh/07-develop/index.md index 4d0f3c3cea..f46f91df70 100644 --- a/docs/zh/07-develop/index.md +++ b/docs/zh/07-develop/index.md @@ -12,7 +12,7 @@ title: 开发指南 7. 在很多场景下(如车辆管理),应用需要获取每个数据采集点的最新状态,那么建议你采用TDengine的cache功能,而不用单独部署Redis等缓存软件。 8. 如果你发现TDengine的函数无法满足你的要求,那么你可以使用用户自定义函数来解决问题。 -本部分内容就是按照上述的顺序组织的。为便于理解,TDengine为每个功能为每个支持的编程语言都提供了示例代码。如果你希望深入了解SQL的使用,需要查看[SQL手册](/taos-sql/)。如果想更深入地了解各连接器的使用,请阅读[连接器参考指南](/reference/connector/)。如果还希望想将TDengine与第三方系统集成起来,比如Grafana, 请参考[第三方工具](/third-party/)。 +本部分内容就是按照上述的顺序组织的。为便于理解,TDengine为每个功能为每个支持的编程语言都提供了示例代码。如果你希望深入了解SQL的使用,需要查看[SQL手册](/taos-sql/)。如果想更深入地了解各连接器的使用,请阅读[连接器参考指南](../reference/connector/)。如果还希望想将TDengine与第三方系统集成起来,比如Grafana, 请参考[第三方工具](/third-party/)。 如果在开发过程中遇到任何问题,请点击每个页面下方的["反馈问题"](https://github.com/taosdata/TDengine/issues/new/choose), 在GitHub上直接递交issue。 diff --git a/docs/zh/08-connector/cpp.mdx b/docs/zh/08-connector/cpp.mdx index bd5776d035..6e7d6c25b9 100644 --- a/docs/zh/08-connector/cpp.mdx +++ b/docs/zh/08-connector/cpp.mdx @@ -22,7 +22,7 @@ TDengine 客户端驱动的动态库位于: ## 支持的平台 -请参考[支持的平台列表](/reference/connector#支持的平台) +请参考[支持的平台列表](../connector#支持的平台) ## 支持的版本 @@ -30,7 +30,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ## 安装步骤 -TDengine 客户端驱动的安装请参考 [安装指南](/reference/connector#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../connector#安装步骤) ## 建立连接 diff --git a/docs/zh/08-connector/csharp.mdx b/docs/zh/08-connector/csharp.mdx index 00d6dffa2c..f4aa30c310 100644 --- a/docs/zh/08-connector/csharp.mdx +++ b/docs/zh/08-connector/csharp.mdx @@ -32,7 +32,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" ## 版本支持 -请参考[版本支持列表](/reference/connector#版本支持) +请参考[版本支持列表](../connector#版本支持) ## 支持的功能特性 @@ -49,7 +49,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" * 安装 [.NET SDK](https://dotnet.microsoft.com/download) * [Nuget 客户端](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) (可选安装) -* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动) +* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) ### 使用 dotnet CLI 安装 diff --git a/docs/zh/08-connector/go.mdx b/docs/zh/08-connector/go.mdx index fd90f964bd..e883598c12 100644 --- a/docs/zh/08-connector/go.mdx +++ b/docs/zh/08-connector/go.mdx @@ -30,7 +30,7 @@ REST 连接支持所有能运行 Go 的平台。 ## 版本支持 -请参考[版本支持列表](/reference/connector#版本支持) +请参考[版本支持列表](../connector#版本支持) ## 支持的功能特性 @@ -56,7 +56,7 @@ REST 连接支持所有能运行 Go 的平台。 ### 安装前准备 * 安装 Go 开发环境(Go 1.14 及以上,GCC 4.8.5 及以上) -* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动) +* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) 配置好环境变量,检查命令: diff --git a/docs/zh/08-connector/java.mdx b/docs/zh/08-connector/java.mdx index 183994313e..723b2ad681 100644 --- a/docs/zh/08-connector/java.mdx +++ b/docs/zh/08-connector/java.mdx @@ -35,7 +35,7 @@ REST 连接支持所有能运行 Java 的平台。 ## 版本支持 -请参考[版本支持列表](/reference/connector#版本支持) +请参考[版本支持列表](../connector#版本支持) ## TDengine DataType 和 Java DataType @@ -64,7 +64,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对 使用 Java Connector 连接数据库前,需要具备以下条件: - 已安装 Java 1.8 或以上版本运行时环境和 Maven 3.6 或以上版本 -- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动) +- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) ### 安装连接器 diff --git a/docs/zh/08-connector/node.mdx b/docs/zh/08-connector/node.mdx index f840c26fd2..c4004a5f59 100644 --- a/docs/zh/08-connector/node.mdx +++ b/docs/zh/08-connector/node.mdx @@ -28,7 +28,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ## 版本支持 -请参考[版本支持列表](/reference/connector#版本支持) +请参考[版本支持列表](../connector#版本支持) ## 支持的功能特性 @@ -52,7 +52,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ### 安装前准备 - 安装 Node.js 开发环境 -- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 +- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 diff --git a/docs/zh/08-connector/php.mdx b/docs/zh/08-connector/php.mdx index 5617dc6f73..5c7525842a 100644 --- a/docs/zh/08-connector/php.mdx +++ b/docs/zh/08-connector/php.mdx @@ -38,7 +38,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ### 安装 TDengine 客户端驱动 -TDengine 客户端驱动的安装请参考 [安装指南](/reference/connector#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../connector#安装步骤) ### 编译安装 php-tdengine diff --git a/docs/zh/08-connector/python.mdx b/docs/zh/08-connector/python.mdx index 9ce81f9d70..46b2bf89a2 100644 --- a/docs/zh/08-connector/python.mdx +++ b/docs/zh/08-connector/python.mdx @@ -8,7 +8,7 @@ description: "taospy 是 TDengine 的官方 Python 连接器。taospy 提供了 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](/reference/connector/cpp)和 [REST 接口](/reference/rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 +`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](../connector/cpp)和 [REST 接口](/reference/rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 除了对原生接口和 REST 接口的封装,`taospy` 还提供了符合 [Python 数据访问规范(PEP 249)](https://peps.python.org/pep-0249/) 的编程接口。这使得 `taospy` 和很多第三方工具集成变得简单,比如 [SQLAlchemy](https://www.sqlalchemy.org/) 和 [pandas](https://pandas.pydata.org/)。 使用客户端驱动提供的原生接口直接与服务端建立的连接的方式下文中称为“原生连接”;使用 taosAdapter 提供的 REST 接口与服务端建立的连接的方式下文中称为“REST 连接”。 @@ -17,7 +17,7 @@ Python 连接器的源码托管在 [GitHub](https://github.com/taosdata/taos-con ## 支持的平台 -- 原生连接[支持的平台](/reference/connector/#支持的平台)和 TDengine 客户端支持的平台一致。 +- 原生连接[支持的平台](../connector/#支持的平台)和 TDengine 客户端支持的平台一致。 - REST 连接支持所有能运行 Python 的平台。 ## 版本选择 diff --git a/docs/zh/08-connector/rust.mdx b/docs/zh/08-connector/rust.mdx index e824b7e73c..ddb0885f9d 100644 --- a/docs/zh/08-connector/rust.mdx +++ b/docs/zh/08-connector/rust.mdx @@ -28,7 +28,7 @@ Websocket 连接支持所有能运行 Rust 的平台。 ## 版本支持 -请参考[版本支持列表](/reference/connector#版本支持) +请参考[版本支持列表](../connector#版本支持) Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容。建议使用 3.0 版本以上的 TDengine,以避免已知问题。 @@ -37,7 +37,7 @@ Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容 ### 安装前准备 * 安装 Rust 开发工具链 -* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动) +* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) ### 添加 taos 依赖 diff --git a/docs/zh/14-reference/08-taos-shell.md b/docs/zh/14-reference/08-taos-shell.md index 2f3b551502..5804549878 100644 --- a/docs/zh/14-reference/08-taos-shell.md +++ b/docs/zh/14-reference/08-taos-shell.md @@ -8,7 +8,7 @@ TDengine 命令行程序(以下简称 TDengine CLI)是用户操作 TDengine ## 安装 -如果在 TDengine 服务器端执行,无需任何安装,已经自动安装好 TDengine CLI。如果要在非 TDengine 服务器端运行,需要安装 TDengine 客户端驱动安装包,具体安装,请参考 [连接器](/reference/connector/)。 +如果在 TDengine 服务器端执行,无需任何安装,已经自动安装好 TDengine CLI。如果要在非 TDengine 服务器端运行,需要安装 TDengine 客户端驱动安装包,具体安装,请参考 [连接器](../../connector/)。 ## 执行 @@ -18,7 +18,7 @@ TDengine 命令行程序(以下简称 TDengine CLI)是用户操作 TDengine taos ``` -如果连接服务成功,将会打印出欢迎消息和版本信息。如果失败,则会打印错误消息。(请参考 [FAQ](/train-faq/faq) 来解决终端连接服务端失败的问题)。TDengine CLI 的提示符号如下: +如果连接服务成功,将会打印出欢迎消息和版本信息。如果失败,则会打印错误消息。(请参考 [FAQ](../../train-faq/faq) 来解决终端连接服务端失败的问题)。TDengine CLI 的提示符号如下: ```cmd taos> diff --git a/docs/zh/20-third-party/11-kafka.md b/docs/zh/20-third-party/11-kafka.md index 8369806adc..09bda4664f 100644 --- a/docs/zh/20-third-party/11-kafka.md +++ b/docs/zh/20-third-party/11-kafka.md @@ -184,7 +184,7 @@ echo `cat /tmp/confluent.current`/connect/connect.stdout TDengine Sink Connector 的作用是同步指定 topic 的数据到 TDengine。用户无需提前创建数据库和超级表。可手动指定目标数据库的名字(见配置参数 connection.database), 也可按一定规则生成(见配置参数 connection.database.prefix)。 -TDengine Sink Connector 内部使用 TDengine [无模式写入接口](/reference/connector/cpp#无模式写入-api)写数据到 TDengine,目前支持三种格式的数据:[InfluxDB 行协议格式](/develop/insert-data/influxdb-line)、 [OpenTSDB Telnet 协议格式](/develop/insert-data/opentsdb-telnet) 和 [OpenTSDB JSON 协议格式](/develop/insert-data/opentsdb-json)。 +TDengine Sink Connector 内部使用 TDengine [无模式写入接口](../../connector/cpp#无模式写入-api)写数据到 TDengine,目前支持三种格式的数据:[InfluxDB 行协议格式](/develop/insert-data/influxdb-line)、 [OpenTSDB Telnet 协议格式](/develop/insert-data/opentsdb-telnet) 和 [OpenTSDB JSON 协议格式](/develop/insert-data/opentsdb-json)。 下面的示例将主题 meters 的数据,同步到目标数据库 power。数据格式为 InfluxDB Line 协议格式。 From 2d1e64ce7083917e267037d6d5520d89fccc9aa6 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 11:10:11 +0800 Subject: [PATCH 38/43] doc: fix broken links --- docs/zh/02-intro.md | 4 ++-- docs/zh/05-get-started/03-package.md | 2 +- docs/zh/05-get-started/index.md | 2 +- docs/zh/07-develop/01-connect/index.md | 2 +- docs/zh/08-connector/csharp.mdx | 6 +++--- docs/zh/08-connector/python.mdx | 4 ++-- docs/zh/14-reference/04-taosadapter.md | 4 ++-- docs/zh/20-third-party/09-emq-broker.md | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/zh/02-intro.md b/docs/zh/02-intro.md index a6ef2b94b6..f726b4ea92 100644 --- a/docs/zh/02-intro.md +++ b/docs/zh/02-intro.md @@ -22,8 +22,8 @@ TDengine的主要功能如下: 9. 提供[命令行程序](../reference/taos-shell),便于管理集群,检查系统状态,做即席查询 10. 提供多种数据的[导入](../operation/import)、[导出](../operation/export) 11. 支持对[TDengine 集群本身的监控](../operation/monitor) -12. 提供 [C/C++](../reference/connector/cpp), [Java](../reference/connector/java), [Python](../reference/connector/python), [Go](../reference/connector/go), [Rust](../reference/connector/rust), [Node.js](../reference/connector/node) 等多种编程语言的[连接器](../reference/connector/) -13. 支持 [REST 接口](../reference/rest-api/) +12. 提供各种语言的[连接器](../connector): 如 C/C++, Java, Go, Node.JS, Rust, Python, C# 等 +13. 支持 [REST 接口](../connector/rest-api/) 14. 支持与[ Grafana 无缝集成](../third-party/grafana) 15. 支持与 Google Data Studio 无缝集成 16. 支持 [Kubernetes 部署](../deployment/k8s) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 85005b9551..a1c1802d77 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -9,7 +9,7 @@ import PkgListV3 from "/components/PkgListV3"; 您可以[用 Docker 立即体验](../../get-started/docker/) TDengine。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. -TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件。目前 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../../reference/taosadapter/) 提供 [RESTful 接口](../../reference/rest-api/)。 +TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件。目前 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../../reference/taosadapter/) 提供 [RESTful 接口](../../connector/rest-api/)。 为方便使用,标准的服务端安装包包含了 taosd、taosAdapter、taosc、taos、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。 diff --git a/docs/zh/05-get-started/index.md b/docs/zh/05-get-started/index.md index 794081b4e4..20f8235d87 100644 --- a/docs/zh/05-get-started/index.md +++ b/docs/zh/05-get-started/index.md @@ -3,7 +3,7 @@ title: 立即开始 description: '快速设置 TDengine 环境并体验其高效写入和查询' --- -TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](/reference/taosadapter) 提供 [RESTful 接口](/reference/rest-api)。 +TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../reference/taosadapter) 提供 [RESTful 接口](../connector/rest-api)。 本章主要介绍如何利用 Docker 或者安装包快速设置 TDengine 环境并体验其高效写入和查询。 diff --git a/docs/zh/07-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md index 77f5838c8f..b1502bfd76 100644 --- a/docs/zh/07-develop/01-connect/index.md +++ b/docs/zh/07-develop/01-connect/index.md @@ -33,7 +33,7 @@ TDengine 提供了丰富的应用程序开发接口,为了便于用户快速 关键不同点在于: 1. 使用 REST 连接,用户无需安装客户端驱动程序 taosc,具有跨平台易用的优势,但性能要下降 30%左右。 -2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](../../connector/cpp#参数绑定-api)、[订阅](../../connector/cpp#订阅和消费-api)等等。 +2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](../connector/cpp/#参数绑定-api)、[订阅](../connector/cpp/#订阅和消费-api)等等。 ## 安装客户端驱动 taosc diff --git a/docs/zh/08-connector/csharp.mdx b/docs/zh/08-connector/csharp.mdx index f4aa30c310..1650aef4bf 100644 --- a/docs/zh/08-connector/csharp.mdx +++ b/docs/zh/08-connector/csharp.mdx @@ -18,7 +18,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" `TDengine.Connector` 是 TDengine 提供的 C# 语言连接器。C# 开发人员可以通过它开发存取 TDengine 集群数据的 C# 应用软件。 -`TDengine.Connector` 连接器支持通过 TDengine 客户端驱动(taosc)建立与 TDengine 运行实例的连接,提供数据写入、查询、订阅、schemaless 数据写入、参数绑定接口数据写入等功能 `TDengine.Connector` 目前暂未提供 REST 连接方式,用户可以参考 [REST API](/reference/rest-api/) 文档自行编写。 +`TDengine.Connector` 连接器支持通过 TDengine 客户端驱动(taosc)建立与 TDengine 运行实例的连接,提供数据写入、查询、订阅、schemaless 数据写入、参数绑定接口数据写入等功能 `TDengine.Connector` 目前暂未提供 REST 连接方式,用户可以参考 [REST API](../rest-api/) 文档自行编写。 本文介绍如何在 Linux 或 Windows 环境中安装 `TDengine.Connector`,并通过 `TDengine.Connector` 连接 TDengine 集群,进行数据写入、查询等基本操作。 @@ -32,7 +32,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" ## 版本支持 -请参考[版本支持列表](../connector#版本支持) +请参考[版本支持列表](../connector/#版本支持) ## 支持的功能特性 @@ -49,7 +49,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" * 安装 [.NET SDK](https://dotnet.microsoft.com/download) * [Nuget 客户端](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) (可选安装) -* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) +* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) ### 使用 dotnet CLI 安装 diff --git a/docs/zh/08-connector/python.mdx b/docs/zh/08-connector/python.mdx index 46b2bf89a2..41cffc9f3b 100644 --- a/docs/zh/08-connector/python.mdx +++ b/docs/zh/08-connector/python.mdx @@ -8,7 +8,7 @@ description: "taospy 是 TDengine 的官方 Python 连接器。taospy 提供了 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](../connector/cpp)和 [REST 接口](/reference/rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 +`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](../connector/cpp)和 [REST 接口](../rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 除了对原生接口和 REST 接口的封装,`taospy` 还提供了符合 [Python 数据访问规范(PEP 249)](https://peps.python.org/pep-0249/) 的编程接口。这使得 `taospy` 和很多第三方工具集成变得简单,比如 [SQLAlchemy](https://www.sqlalchemy.org/) 和 [pandas](https://pandas.pydata.org/)。 使用客户端驱动提供的原生接口直接与服务端建立的连接的方式下文中称为“原生连接”;使用 taosAdapter 提供的 REST 接口与服务端建立的连接的方式下文中称为“REST 连接”。 @@ -275,7 +275,7 @@ TaosCursor 类使用原生连接进行写入、查询操作。在客户端多线 ##### RestClient 类的使用 -`RestClient` 类是对于 [REST API](/reference/rest-api) 的直接封装。它只包含一个 `sql()` 方法用于执行任意 SQL 语句, 并返回执行结果。 +`RestClient` 类是对于 [REST API](../rest-api) 的直接封装。它只包含一个 `sql()` 方法用于执行任意 SQL 语句, 并返回执行结果。 ```python title="RestClient 的使用" {{#include docs/examples/python/rest_client_example.py}} diff --git a/docs/zh/14-reference/04-taosadapter.md b/docs/zh/14-reference/04-taosadapter.md index 6177b52e4c..71bf5f4223 100644 --- a/docs/zh/14-reference/04-taosadapter.md +++ b/docs/zh/14-reference/04-taosadapter.md @@ -156,7 +156,7 @@ AllowWebSockets ## 功能列表 - RESTful 接口 - [https://docs.taosdata.com/reference/rest-api/](https://docs.taosdata.com/reference/rest-api/) + [RESTful API](../../connector/rest-api) - 兼容 InfluxDB v1 写接口 [https://docs.influxdata.com/influxdb/v2.0/reference/api/influxdb-1x/write/](https://docs.influxdata.com/influxdb/v2.0/reference/api/influxdb-1x/write/) - 兼容 OpenTSDB JSON 和 telnet 格式写入 @@ -179,7 +179,7 @@ AllowWebSockets ### TDengine RESTful 接口 -您可以使用任何支持 http 协议的客户端通过访问 RESTful 接口地址 `http://:6041/rest/sql` 来写入数据到 TDengine 或从 TDengine 中查询数据。细节请参考[官方文档](/reference/rest-api/)。 +您可以使用任何支持 http 协议的客户端通过访问 RESTful 接口地址 `http://:6041/rest/sql` 来写入数据到 TDengine 或从 TDengine 中查询数据。细节请参考[官方文档](../../connector/rest-api/)。 ### InfluxDB diff --git a/docs/zh/20-third-party/09-emq-broker.md b/docs/zh/20-third-party/09-emq-broker.md index dd98374558..f252e520a7 100644 --- a/docs/zh/20-third-party/09-emq-broker.md +++ b/docs/zh/20-third-party/09-emq-broker.md @@ -90,7 +90,7 @@ http://127.0.0.1:6041/rest/sql ``` Basic cm9vdDp0YW9zZGF0YQ== ``` -相关文档请参考[ TDengine REST API 文档](/reference/rest-api/)。 +相关文档请参考[ TDengine REST API 文档](../../connector/rest-api/)。 在消息体中输入规则引擎替换模板: From bf8c8cf694bf3a63e6aeda8373f2d2f5a0a37e67 Mon Sep 17 00:00:00 2001 From: Sean Ely <105326513+sean-tdengine@users.noreply.github.com> Date: Tue, 23 Aug 2022 20:29:52 -0700 Subject: [PATCH 39/43] docs: getting started docker Fixed the location tags description from taosBenchmark --- docs/en/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/05-get-started/01-docker.md b/docs/en/05-get-started/01-docker.md index 32eee6b942..de5b620a77 100644 --- a/docs/en/05-get-started/01-docker.md +++ b/docs/en/05-get-started/01-docker.md @@ -42,7 +42,7 @@ To do so, run the following command: ``` - This command creates the `meters` supertable in the `test` database. In the `meters` supertable, it then creates 10,000 subtables named `d0` to `d9999`. Each table has 10,000 rows and each row has four columns: `ts`, `current`, `voltage`, and `phase`. The timestamps of the data in these columns range from 2017-07-14 10:40:00 000 to 2017-07-14 10:40:09 999. Each table is randomly assigned a `groupId` tag from 1 to ten and a `location` tag of either `California.SanFrancisco` or `California.SanDiego`. +This command creates the `meters` supertable in the `test` database. In the `meters` supertable, it then creates 10,000 subtables named `d0` to `d9999`. Each table has 10,000 rows and each row has four columns: `ts`, `current`, `voltage`, and `phase`. The timestamps of the data in these columns range from 2017-07-14 10:40:00 000 to 2017-07-14 10:40:09 999. Each table is randomly assigned a `groupId` tag from 1 to 10 and a `location` tag of either `Campbell`, `Cupertino`, `Los Angeles`, `Mountain View`, `Palo Alto`, `San Diego`, `San Francisco`, `San Jose`, `Santa Clara` or `Sunnyvale`. The `taosBenchmark` command creates a deployment with 100 million data points that you can use for testing purposes. The time required depends on the hardware specifications of the local system. From 44691133afbc2b4ade9fe7b4a6f7c65c24053422 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 12:07:59 +0800 Subject: [PATCH 40/43] doc: fix broken links --- docs/zh/07-develop/01-connect/index.md | 2 +- docs/zh/07-develop/index.md | 2 +- docs/zh/08-connector/cpp.mdx | 4 ++-- docs/zh/08-connector/go.mdx | 4 ++-- docs/zh/08-connector/java.mdx | 6 +++--- docs/zh/08-connector/node.mdx | 4 ++-- docs/zh/08-connector/php.mdx | 2 +- docs/zh/08-connector/python.mdx | 4 ++-- docs/zh/08-connector/rust.mdx | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/zh/07-develop/01-connect/index.md b/docs/zh/07-develop/01-connect/index.md index b1502bfd76..3e44e6c5da 100644 --- a/docs/zh/07-develop/01-connect/index.md +++ b/docs/zh/07-develop/01-connect/index.md @@ -33,7 +33,7 @@ TDengine 提供了丰富的应用程序开发接口,为了便于用户快速 关键不同点在于: 1. 使用 REST 连接,用户无需安装客户端驱动程序 taosc,具有跨平台易用的优势,但性能要下降 30%左右。 -2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](../connector/cpp/#参数绑定-api)、[订阅](../connector/cpp/#订阅和消费-api)等等。 +2. 使用原生连接可以体验 TDengine 的全部功能,如[参数绑定接口](../../connector/cpp/#参数绑定-api)、[订阅](../../connector/cpp/#订阅和消费-api)等等。 ## 安装客户端驱动 taosc diff --git a/docs/zh/07-develop/index.md b/docs/zh/07-develop/index.md index f46f91df70..20c0170844 100644 --- a/docs/zh/07-develop/index.md +++ b/docs/zh/07-develop/index.md @@ -12,7 +12,7 @@ title: 开发指南 7. 在很多场景下(如车辆管理),应用需要获取每个数据采集点的最新状态,那么建议你采用TDengine的cache功能,而不用单独部署Redis等缓存软件。 8. 如果你发现TDengine的函数无法满足你的要求,那么你可以使用用户自定义函数来解决问题。 -本部分内容就是按照上述的顺序组织的。为便于理解,TDengine为每个功能为每个支持的编程语言都提供了示例代码。如果你希望深入了解SQL的使用,需要查看[SQL手册](/taos-sql/)。如果想更深入地了解各连接器的使用,请阅读[连接器参考指南](../reference/connector/)。如果还希望想将TDengine与第三方系统集成起来,比如Grafana, 请参考[第三方工具](/third-party/)。 +本部分内容就是按照上述的顺序组织的。为便于理解,TDengine为每个功能为每个支持的编程语言都提供了示例代码。如果你希望深入了解SQL的使用,需要查看[SQL手册](/taos-sql/)。如果想更深入地了解各连接器的使用,请阅读[连接器参考指南](../connector/)。如果还希望想将TDengine与第三方系统集成起来,比如Grafana, 请参考[第三方工具](../third-party/)。 如果在开发过程中遇到任何问题,请点击每个页面下方的["反馈问题"](https://github.com/taosdata/TDengine/issues/new/choose), 在GitHub上直接递交issue。 diff --git a/docs/zh/08-connector/cpp.mdx b/docs/zh/08-connector/cpp.mdx index 6e7d6c25b9..4a624343f6 100644 --- a/docs/zh/08-connector/cpp.mdx +++ b/docs/zh/08-connector/cpp.mdx @@ -22,7 +22,7 @@ TDengine 客户端驱动的动态库位于: ## 支持的平台 -请参考[支持的平台列表](../connector#支持的平台) +请参考[支持的平台列表](../connector/#支持的平台) ## 支持的版本 @@ -30,7 +30,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ## 安装步骤 -TDengine 客户端驱动的安装请参考 [安装指南](../connector#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../connector/#安装步骤) ## 建立连接 diff --git a/docs/zh/08-connector/go.mdx b/docs/zh/08-connector/go.mdx index e883598c12..8465db4fa2 100644 --- a/docs/zh/08-connector/go.mdx +++ b/docs/zh/08-connector/go.mdx @@ -30,7 +30,7 @@ REST 连接支持所有能运行 Go 的平台。 ## 版本支持 -请参考[版本支持列表](../connector#版本支持) +请参考[版本支持列表](../connector/#版本支持) ## 支持的功能特性 @@ -56,7 +56,7 @@ REST 连接支持所有能运行 Go 的平台。 ### 安装前准备 * 安装 Go 开发环境(Go 1.14 及以上,GCC 4.8.5 及以上) -* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) +* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) 配置好环境变量,检查命令: diff --git a/docs/zh/08-connector/java.mdx b/docs/zh/08-connector/java.mdx index 723b2ad681..73ab270f0c 100644 --- a/docs/zh/08-connector/java.mdx +++ b/docs/zh/08-connector/java.mdx @@ -35,7 +35,7 @@ REST 连接支持所有能运行 Java 的平台。 ## 版本支持 -请参考[版本支持列表](../connector#版本支持) +请参考[版本支持列表](../connector/#版本支持) ## TDengine DataType 和 Java DataType @@ -64,7 +64,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对 使用 Java Connector 连接数据库前,需要具备以下条件: - 已安装 Java 1.8 或以上版本运行时环境和 Maven 3.6 或以上版本 -- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) +- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) ### 安装连接器 @@ -630,7 +630,7 @@ public void setNString(int columnIndex, ArrayList list, int size) throws ### 无模式写入 -TDengine 支持无模式写入功能。无模式写入兼容 InfluxDB 的 行协议(Line Protocol)、OpenTSDB 的 telnet 行协议和 OpenTSDB 的 JSON 格式协议。详情请参见[无模式写入](../../schemaless)。 +TDengine 支持无模式写入功能。无模式写入兼容 InfluxDB 的 行协议(Line Protocol)、OpenTSDB 的 telnet 行协议和 OpenTSDB 的 JSON 格式协议。详情请参见[无模式写入](../../reference/schemaless/)。 **注意**: diff --git a/docs/zh/08-connector/node.mdx b/docs/zh/08-connector/node.mdx index c4004a5f59..d45865cc58 100644 --- a/docs/zh/08-connector/node.mdx +++ b/docs/zh/08-connector/node.mdx @@ -28,7 +28,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ## 版本支持 -请参考[版本支持列表](../connector#版本支持) +请参考[版本支持列表](../connector/#版本支持) ## 支持的功能特性 @@ -52,7 +52,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ### 安装前准备 - 安装 Node.js 开发环境 -- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 +- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 diff --git a/docs/zh/08-connector/php.mdx b/docs/zh/08-connector/php.mdx index 5c7525842a..df3ec2220f 100644 --- a/docs/zh/08-connector/php.mdx +++ b/docs/zh/08-connector/php.mdx @@ -38,7 +38,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ### 安装 TDengine 客户端驱动 -TDengine 客户端驱动的安装请参考 [安装指南](../connector#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../connector/#安装步骤) ### 编译安装 php-tdengine diff --git a/docs/zh/08-connector/python.mdx b/docs/zh/08-connector/python.mdx index 41cffc9f3b..88a5d4f84d 100644 --- a/docs/zh/08-connector/python.mdx +++ b/docs/zh/08-connector/python.mdx @@ -8,7 +8,7 @@ description: "taospy 是 TDengine 的官方 Python 连接器。taospy 提供了 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](../connector/cpp)和 [REST 接口](../rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 +`taospy` 是 TDengine 的官方 Python 连接器。`taospy` 提供了丰富的 API, 使得 Python 应用可以很方便地使用 TDengine。`taospy` 对 TDengine 的[原生接口](../cpp)和 [REST 接口](../rest-api)都进行了封装, 分别对应 `taospy` 包的 `taos` 模块 和 `taosrest` 模块。 除了对原生接口和 REST 接口的封装,`taospy` 还提供了符合 [Python 数据访问规范(PEP 249)](https://peps.python.org/pep-0249/) 的编程接口。这使得 `taospy` 和很多第三方工具集成变得简单,比如 [SQLAlchemy](https://www.sqlalchemy.org/) 和 [pandas](https://pandas.pydata.org/)。 使用客户端驱动提供的原生接口直接与服务端建立的连接的方式下文中称为“原生连接”;使用 taosAdapter 提供的 REST 接口与服务端建立的连接的方式下文中称为“REST 连接”。 @@ -17,7 +17,7 @@ Python 连接器的源码托管在 [GitHub](https://github.com/taosdata/taos-con ## 支持的平台 -- 原生连接[支持的平台](../connector/#支持的平台)和 TDengine 客户端支持的平台一致。 +- 原生连接[支持的平台](../#支持的平台)和 TDengine 客户端支持的平台一致。 - REST 连接支持所有能运行 Python 的平台。 ## 版本选择 diff --git a/docs/zh/08-connector/rust.mdx b/docs/zh/08-connector/rust.mdx index ddb0885f9d..7ecc89e748 100644 --- a/docs/zh/08-connector/rust.mdx +++ b/docs/zh/08-connector/rust.mdx @@ -28,7 +28,7 @@ Websocket 连接支持所有能运行 Rust 的平台。 ## 版本支持 -请参考[版本支持列表](../connector#版本支持) +请参考[版本支持列表](../connector/#版本支持) Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容。建议使用 3.0 版本以上的 TDengine,以避免已知问题。 @@ -37,7 +37,7 @@ Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容 ### 安装前准备 * 安装 Rust 开发工具链 -* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector#安装客户端驱动) +* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) ### 添加 taos 依赖 From ead5e6b222ec97e270f03339b0ae7f500d4db28c Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 12:34:03 +0800 Subject: [PATCH 41/43] doc: rename index.md --- docs/zh/08-connector/{03-connector.mdx => index.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/zh/08-connector/{03-connector.mdx => index.md} (100%) diff --git a/docs/zh/08-connector/03-connector.mdx b/docs/zh/08-connector/index.md similarity index 100% rename from docs/zh/08-connector/03-connector.mdx rename to docs/zh/08-connector/index.md From 1c5524cef3102c8b1820a4e3b9a2184fea73fbc3 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 12:44:29 +0800 Subject: [PATCH 42/43] doc: fix broken links --- docs/zh/08-connector/cpp.mdx | 4 ++-- docs/zh/08-connector/csharp.mdx | 4 ++-- docs/zh/08-connector/go.mdx | 4 ++-- docs/zh/08-connector/java.mdx | 4 ++-- docs/zh/08-connector/node.mdx | 4 ++-- docs/zh/08-connector/php.mdx | 2 +- docs/zh/08-connector/rust.mdx | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/zh/08-connector/cpp.mdx b/docs/zh/08-connector/cpp.mdx index 4a624343f6..d27eeb7dfb 100644 --- a/docs/zh/08-connector/cpp.mdx +++ b/docs/zh/08-connector/cpp.mdx @@ -22,7 +22,7 @@ TDengine 客户端驱动的动态库位于: ## 支持的平台 -请参考[支持的平台列表](../connector/#支持的平台) +请参考[支持的平台列表](../#支持的平台) ## 支持的版本 @@ -30,7 +30,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ## 安装步骤 -TDengine 客户端驱动的安装请参考 [安装指南](../connector/#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../#安装步骤) ## 建立连接 diff --git a/docs/zh/08-connector/csharp.mdx b/docs/zh/08-connector/csharp.mdx index 1650aef4bf..8214717583 100644 --- a/docs/zh/08-connector/csharp.mdx +++ b/docs/zh/08-connector/csharp.mdx @@ -32,7 +32,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" ## 版本支持 -请参考[版本支持列表](../connector/#版本支持) +请参考[版本支持列表](../#版本支持) ## 支持的功能特性 @@ -49,7 +49,7 @@ import CSAsyncQuery from "../07-develop/04-query-data/_cs_async.mdx" * 安装 [.NET SDK](https://dotnet.microsoft.com/download) * [Nuget 客户端](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) (可选安装) -* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) +* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../#安装客户端驱动) ### 使用 dotnet CLI 安装 diff --git a/docs/zh/08-connector/go.mdx b/docs/zh/08-connector/go.mdx index 8465db4fa2..9d30f75190 100644 --- a/docs/zh/08-connector/go.mdx +++ b/docs/zh/08-connector/go.mdx @@ -30,7 +30,7 @@ REST 连接支持所有能运行 Go 的平台。 ## 版本支持 -请参考[版本支持列表](../connector/#版本支持) +请参考[版本支持列表](../#版本支持) ## 支持的功能特性 @@ -56,7 +56,7 @@ REST 连接支持所有能运行 Go 的平台。 ### 安装前准备 * 安装 Go 开发环境(Go 1.14 及以上,GCC 4.8.5 及以上) -* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) +* 如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../#安装客户端驱动) 配置好环境变量,检查命令: diff --git a/docs/zh/08-connector/java.mdx b/docs/zh/08-connector/java.mdx index 73ab270f0c..20d2e4fabd 100644 --- a/docs/zh/08-connector/java.mdx +++ b/docs/zh/08-connector/java.mdx @@ -35,7 +35,7 @@ REST 连接支持所有能运行 Java 的平台。 ## 版本支持 -请参考[版本支持列表](../connector/#版本支持) +请参考[版本支持列表](../#版本支持) ## TDengine DataType 和 Java DataType @@ -64,7 +64,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对 使用 Java Connector 连接数据库前,需要具备以下条件: - 已安装 Java 1.8 或以上版本运行时环境和 Maven 3.6 或以上版本 -- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) +- 已安装 TDengine 客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](../#安装客户端驱动) ### 安装连接器 diff --git a/docs/zh/08-connector/node.mdx b/docs/zh/08-connector/node.mdx index d45865cc58..63d690e554 100644 --- a/docs/zh/08-connector/node.mdx +++ b/docs/zh/08-connector/node.mdx @@ -28,7 +28,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ## 版本支持 -请参考[版本支持列表](../connector/#版本支持) +请参考[版本支持列表](../#版本支持) ## 支持的功能特性 @@ -52,7 +52,7 @@ REST 连接器支持所有能运行 Node.js 的平台。 ### 安装前准备 - 安装 Node.js 开发环境 -- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 +- 如果使用 REST 连接器,跳过此步。但如果使用原生连接器,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../#安装客户端驱动)。我们使用 [node-gyp](https://github.com/nodejs/node-gyp) 和 TDengine 实例进行交互,还需要根据具体操作系统来安装下文提到的一些依赖工具。 diff --git a/docs/zh/08-connector/php.mdx b/docs/zh/08-connector/php.mdx index df3ec2220f..53611c0274 100644 --- a/docs/zh/08-connector/php.mdx +++ b/docs/zh/08-connector/php.mdx @@ -38,7 +38,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一 ### 安装 TDengine 客户端驱动 -TDengine 客户端驱动的安装请参考 [安装指南](../connector/#安装步骤) +TDengine 客户端驱动的安装请参考 [安装指南](../#安装步骤) ### 编译安装 php-tdengine diff --git a/docs/zh/08-connector/rust.mdx b/docs/zh/08-connector/rust.mdx index 7ecc89e748..187e2f0b33 100644 --- a/docs/zh/08-connector/rust.mdx +++ b/docs/zh/08-connector/rust.mdx @@ -28,7 +28,7 @@ Websocket 连接支持所有能运行 Rust 的平台。 ## 版本支持 -请参考[版本支持列表](../connector/#版本支持) +请参考[版本支持列表](../#版本支持) Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容。建议使用 3.0 版本以上的 TDengine,以避免已知问题。 @@ -37,7 +37,7 @@ Rust 连接器仍然在快速开发中,1.0 之前无法保证其向后兼容 ### 安装前准备 * 安装 Rust 开发工具链 -* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../connector/#安装客户端驱动) +* 如果使用原生连接,请安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](../#安装客户端驱动) ### 添加 taos 依赖 From f7014e093d4785029bad24f542d568d1eb51c399 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Wed, 24 Aug 2022 13:04:46 +0800 Subject: [PATCH 43/43] doc: sort connectors --- docs/zh/08-connector/{cpp.mdx => 03-cpp.mdx} | 0 docs/zh/08-connector/{java.mdx => 04-java.mdx} | 0 docs/zh/08-connector/{go.mdx => 05-go.mdx} | 0 docs/zh/08-connector/{rust.mdx => 06-rust.mdx} | 0 docs/zh/08-connector/{python.mdx => 07-python.mdx} | 0 docs/zh/08-connector/{node.mdx => 08-node.mdx} | 0 docs/zh/08-connector/{csharp.mdx => 09-csharp.mdx} | 0 docs/zh/08-connector/{php.mdx => 10-php.mdx} | 0 docs/zh/08-connector/index.md | 2 ++ 9 files changed, 2 insertions(+) rename docs/zh/08-connector/{cpp.mdx => 03-cpp.mdx} (100%) rename docs/zh/08-connector/{java.mdx => 04-java.mdx} (100%) rename docs/zh/08-connector/{go.mdx => 05-go.mdx} (100%) rename docs/zh/08-connector/{rust.mdx => 06-rust.mdx} (100%) rename docs/zh/08-connector/{python.mdx => 07-python.mdx} (100%) rename docs/zh/08-connector/{node.mdx => 08-node.mdx} (100%) rename docs/zh/08-connector/{csharp.mdx => 09-csharp.mdx} (100%) rename docs/zh/08-connector/{php.mdx => 10-php.mdx} (100%) diff --git a/docs/zh/08-connector/cpp.mdx b/docs/zh/08-connector/03-cpp.mdx similarity index 100% rename from docs/zh/08-connector/cpp.mdx rename to docs/zh/08-connector/03-cpp.mdx diff --git a/docs/zh/08-connector/java.mdx b/docs/zh/08-connector/04-java.mdx similarity index 100% rename from docs/zh/08-connector/java.mdx rename to docs/zh/08-connector/04-java.mdx diff --git a/docs/zh/08-connector/go.mdx b/docs/zh/08-connector/05-go.mdx similarity index 100% rename from docs/zh/08-connector/go.mdx rename to docs/zh/08-connector/05-go.mdx diff --git a/docs/zh/08-connector/rust.mdx b/docs/zh/08-connector/06-rust.mdx similarity index 100% rename from docs/zh/08-connector/rust.mdx rename to docs/zh/08-connector/06-rust.mdx diff --git a/docs/zh/08-connector/python.mdx b/docs/zh/08-connector/07-python.mdx similarity index 100% rename from docs/zh/08-connector/python.mdx rename to docs/zh/08-connector/07-python.mdx diff --git a/docs/zh/08-connector/node.mdx b/docs/zh/08-connector/08-node.mdx similarity index 100% rename from docs/zh/08-connector/node.mdx rename to docs/zh/08-connector/08-node.mdx diff --git a/docs/zh/08-connector/csharp.mdx b/docs/zh/08-connector/09-csharp.mdx similarity index 100% rename from docs/zh/08-connector/csharp.mdx rename to docs/zh/08-connector/09-csharp.mdx diff --git a/docs/zh/08-connector/php.mdx b/docs/zh/08-connector/10-php.mdx similarity index 100% rename from docs/zh/08-connector/php.mdx rename to docs/zh/08-connector/10-php.mdx diff --git a/docs/zh/08-connector/index.md b/docs/zh/08-connector/index.md index bdad0b7e25..17de8e926c 100644 --- a/docs/zh/08-connector/index.md +++ b/docs/zh/08-connector/index.md @@ -1,5 +1,7 @@ --- +sidebar_label: 连接器 title: 连接器 +description: 详细介绍各种语言的连接器及 REST API --- TDengine 提供了丰富的应用程序开发接口,为了便于用户快速开发自己的应用,TDengine 支持了多种编程语言的连接器,其中官方连接器包括支持 C/C++、Java、Python、Go、Node.js、C# 和 Rust 的连接器。这些连接器支持使用原生接口(taosc)和 REST 接口(部分语言暂不支持)连接 TDengine 集群。社区开发者也贡献了多个非官方连接器,例如 ADO.NET 连接器、Lua 连接器和 PHP 连接器。