From 4ad45758ab22737d9a287a28123ace7d9e5199e9 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:13:07 +0000 Subject: [PATCH 1/7] update README.md. Signed-off-by: Ricardo --- README.md | 69 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 9bd75bf..eb63d5e 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,55 @@ -# sysboost +# native-turbo -#### Description -Sysboost converts dynamic links into static links by combining executable files and dynamic library files. This reduces the overhead and delay of dynamic links and improves the execution efficiency of programs. +#### 介绍 -#### Software Architecture -Software architecture description +Native-Turbo 是操作系统原生性能加速框架; 通过微架构优化和软硬件协同等技术, 提升大型应用性能; -#### Installation -1. xxxx -2. xxxx -3. xxxx -#### Instructions +#### 软件架构 -1. xxxx -2. xxxx -3. xxxx +![](doc/img/Native-Turbo-stack.svg) -#### Contribution +A-tune作为智能中心管理OS性能策略; +wisdom接收A-tune策略, 执行调度算法; +Native-Turbo提供操作系统各层级软件的性能优化机制, A-tune进行智能管理; -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request -#### Gitee Feature +Native-Turbo包含微架构优化技术, 基础库优化, 系统调用优化, 中断聚合, 软硬件协同等技术; + + + +微架构优化技术 + +动态库拼接 +通过ld加载阶段将分散的动态库的代码段数据段拼接聚合,然后使用大页内存提升iTLB命中率。 + +exec原生大页 +用户态大页机制需要应用修改配置和重编译,exec原生大页机制直接在内核加载ELF文件阶段使用大页内存,对APP透明。 + +消除PLT跳转 +应用代码调用动态库函数的流程,需要先跳转PLT表,然后跳转真实函数,消除PLT跳转能提升IPC。 + +热点Section在线重排 +默认情况下代码段是按动态库粒度排布的,通过在线重排技术可以实现热点代码按Section粒度重排。 + + + +#### 构建/安装教程 + +请参考doc目录下各特性说明文档; + + + +#### 使用说明 + +请参考doc目录下各特性说明文档; + + + +#### 参与贡献 + +1. 发现BUG或者有新需求请提issue; https://gitee.com/openeuler/native-turbo/issues +2. 修复BUG或者新特性的补丁请通过Pull Request提交; -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -- Gitee From 3a2cd125d689109ac71f79a16e416904724894ef Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:14:41 +0000 Subject: [PATCH 2/7] update README.en.md. Signed-off-by: Ricardo --- README.en.md | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/README.en.md b/README.en.md index 9bd75bf..3a6196c 100644 --- a/README.en.md +++ b/README.en.md @@ -4,33 +4,26 @@ Sysboost converts dynamic links into static links by combining executable files and dynamic library files. This reduces the overhead and delay of dynamic links and improves the execution efficiency of programs. #### Software Architecture -Software architecture description +![](doc/img/sysBoost-stack-en.png) +Microarchitecture-Aware -#### Installation - -1. xxxx -2. xxxx -3. xxxx +Dynamic library stitching +In the ld loading phase, code segments of scattered dynamic libraries are combined and aggregated, and huge page memory is used to improve the iTLB hit ratio. -#### Instructions +exec HugePages +The user-mode hugepages mechanism requires application configuration modification and recompilation. The exec native hugepage mechanism directly uses hugepage memory in the ELF file loading phase, which is transparent to apps. -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request +Eliminate PLT redirection +In the process of invoking dynamic library functions, the application code needs to jump to the PLT table and then to the real function. Eliminating the PLT jump can improve the IPC. +Online re-arrangement of hot sections +By default, code snippets are arranged based on the dynamic library granularity. Hot code can be rearranged based on the section granularity using the online rearrangement technology. +#### Installation +For details, see the sysBoost section in openEuler/docs. -#### Gitee Feature +#### Instructions +For details, see the sysBoost section in openEuler/docs. -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +#### Contribution +1. If bugs are found or new requirements are required, submit issue; https://gitee.com/openeuler/sysboost/issues. +2. Submit the patch for fixing bugs or new features through Pull Request. -- Gitee From 294452dc025ddb992fd071686d65132698ae972d Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:15:45 +0000 Subject: [PATCH 3/7] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/.keep diff --git a/doc/.keep b/doc/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From e324eeb8efdf21a6d80d65a2fc2d89412dd81d20 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:16:17 +0000 Subject: [PATCH 4/7] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20img?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/img/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/img/.keep diff --git a/doc/img/.keep b/doc/img/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From e03a668f463c70b60f007c13e23a7d819d6d7dcf Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:16:58 +0000 Subject: [PATCH 5/7] update all doc img Signed-off-by: Ricardo --- doc/img/sysBoost-stack-en.png | Bin 0 -> 27604 bytes doc/img/sysBoost-stack.png | Bin 0 -> 21539 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/img/sysBoost-stack-en.png create mode 100644 doc/img/sysBoost-stack.png diff --git a/doc/img/sysBoost-stack-en.png b/doc/img/sysBoost-stack-en.png new file mode 100644 index 0000000000000000000000000000000000000000..9ef9c0081d66719517cf70969a5cc1de4fcd54d2 GIT binary patch literal 27604 zcmeFZcT`hZ^gkNM87me*MY@83NHaj_5DS7x0%{zQA}FBWGgir(_lprV(5JEAO1W4gsila00{jK$T?~hm3dak7=x%Zy4?>@VH&Mqh7teNqS zZ6e!1AkYqz(}w3kpp6g^XajxACg2yQaR~v-JK=OR<00N<0Obm}-2(X>332pZ4wHz3Qo_%q~Lq@3G`?swp zvEr6-@>>pKN-*`#s zP}wCwvcUZ9QnKI-n)WmOFXPdiVRFb$lGO3*2D>8y$Q zQkFKW4>j2B%j}&^RJgnQ#Fm41caL966cQ=&I|=EhBF_=ajNFZyp8K2LzhE;<~i2UG!M0 z2=L`*;893uEY_31X2V_F z$`q-a5g*IL2S9H-fiIxuJGe3H|3{|#d_j-%U12AxRXR50hE>t)cw(g9D&Dt73@ybJp8ufv9+8F z`nQds{NpZq*r@QPY+T%81RQ0qO4L}wAOaIgL1N92xzjwz_h_v%O^vwej3rnra# zD;@lmqH{lJFCZY6#Q^vAy}qXyeE24PX! zF9_K>e*_RTk4H}zxALt>Mk;3D|5Ne=ko-eiGI?`h%U;>P0Y4p!S<|uq`&67U7}DN_ z$ec-}hR| zORf;zz!jzayl+jt|1#^C__|_&Z(4tgt$S{F)%9L`Z3c1Q-1%+YT;0^js5^42o6!DrL4{RFhM9YIregTgt03@bXm?F2X1_C6 z;bT(i#+$slHG5aFGM!A3*_C-uSRXefxVyKLNKMS%dStm{`e_ff*Zr~tH8J8k2m8K4 zS>gfdA{$rhia?Y1&_5OFwe~bDSV#FpRfGxB>y5*{R!tuf6d~W25_wdtD5BV{y>ocf zlI?C9BALeUb)&H(8UAUkqSrH*?#3c2@;TL~gsXaXfs)tlBI7X#AYNT3u0?>XIu^C{ z`vp}cx3f(?v9!C@hh$qV( zNSL>qo<*g>&xNQ=3C6yg49R!R63_KoF7D4_!MUI-+8n?@UoN`+t>YeU!?kx?k+A2; zw}rpY$|3~Ik*bA;+EXWym95Ba^A?t3BoiMK7zPOi>O)}L6@1nX>3D1rwNsz zYOj!?{W0d8j15Gf^aZS1ay3Ie5?4IKeK=EbS8$0hdTeQ-R=TkK;BzH%Og$;%OIwAWt)xZB zGEa;aFksBF`9xxzdqj4-i;ZcVen(}@G6IC#uWYDO1*{Z3Xs=<4G8(b*!+k*`nG&-z zNgN&Ti=uM5N4ou8WNoIuRubJyzLri13i`*2CRoaih~(+*ERSd`2P82k^@ze?Q8;P1 zxZ{wax|7~TRz$^s3EJJ#U(sNMFRWphu~fkcgn!{K`E~?M<@j*(@ZyNlNcS$Ig$n&l z+o~FBKolQrM;*h9Z8`Yb_K)^wk-1qLUVXXSjy)h-YbN#RXr3AMS(?{x3K=iA$$ct} zY(&A{)=X=~*y_HS_fDK2_70dx-Ct$1?3(4xSFS>CVku<&MI!b&qO)WQV`tqHk&|`-yh#x zckX}^CY!y=Ip{TGDT@Ig_k+rn@ypc=#5Crmp20raLPGMpP8*0Q=S38$S-OChq-n#kNO1ZUDa?isbD`eTV%@Iw+gwxrh!i&ctK??{4FZGRr0 z^b{SftisZTsMw2wE^S)F55!4lkh|8^>qB{A5 z+p=FkAla~(F5>{|WD_6`BIW#O6?{>Ile9!m+KbuXa8d!I#$D}m+f#K2Uio}kL`CSL z?I}HjX$8z)Nly;n5V(HvvBp3*9BY(_C&%mpjjy}mfU_%hvQBSBRerI0nP^HmfS`T> zIx80mYe;9seC-2FB4bW%#bgEsoIUnmRJ8I|z@H!3O7HN>w<{88044o0usM`&or?Jt zLID@U2iGvvyGiHJ?FhA-0ZYQbvvqoUhadkJZw)cmh*)>S5_?wWIl7Ag;IE$pKgi9R zR|3rTFW?NgNc3C-gI|~>wfAts#{grzN~6S{5C27S-t09Z*74x36_gK3eJ}_Z)}I5v z`?$uLUr^?{vjA?MU6K8_oqUfmxmllXEZ02nybiiz^J=F9{p8)!-#|=Qi;l* z56(v8+9NWOHr8o%=5Ng33wr5nMLE2NJ)e&-)dco}>N-Kkrmwg*tiX~(M?hycqW%EQ znUO{6Jpn8WtWDf=(6JrBlOJ@IP^Pu2drzuqe`zy7UKK!63wBACWU8s|UGjnfxUC@qJ zv!dAV7j4PPuii9&Y6Wi{fVDhY7|Ohb+wdgtu@;&q6k=-?hU;v;JaQvz&dK%nhD|ZY zedQF2j)$IGfuiBmw#=`a2fmL}g_>uEc=0JUfaq=3Gd~Ks@s2Z zMx-H~u!~20RfVWTZ}{SX^4^;6e7*A@H!+Rcg>>z<< zEn%#o!pRh$KKCKGwMiP{ekF`J>#{A2;33*JSgdHhxk)w4*gL~#(uW;i>D%T$r(-SG zq*}DW8&=*<@ZRC2KWAzx28OH}fdzPrQt?;FI}=Y>8PcwXa>}a6@A&ofYZ9--RldvM z?TGV?1=of&S3#9;Z;=lxiJvB=9aVF}KGiDvW-SUi&4+<`ZNTJX zDUfM>e}q0+a2$rL>ocG+%tN(Tl7w1LC(k7dHI^!W1ALNDXL%7nkdT&UD$s{SHgF&J0E9hP8Mj#7 zd}bc9?H{U#U9%QCW|vR<o-=>?U9@>Q3_R2dIBPP#!B2BTAA_5H62!U@MV1y<5tKZ(&%vea=4e z%>~j1Mb-B!+@ng{_*pFNBA;@G)|6(sIgN?HHn17^dSAq7fPelJO#?t`emhyQbiTQh z8QV?I*{$xqhL|O~jC$>pLUq@EJCiZjTFO6QaZ&TeRloF^-z3?hv4Sd}rDXRFvm=mZ zm%n|Y1XQc0MF??<6=g*lvZ_cCjV8oK)8yTYmxgNf3z0OWJj2&NzFQKF@lyf#Hs!?OQ<}2Fudg(0N4kxwCdlk9LC*9dGYpXFsZ5Dmi$n};pa7lcLR1V|VWewKUFSJ^UxOH>8H)My%_5Zn3c z78g(K46iV9F zm*?zCxrNbqsba818w{Q&MrMW0dk!p;&-;)vP?YjzS)90-{Z;?)w+W(|HrO;pPB9ZKu$WJ?z#Vm}wN!oBr$j_&l8U{868?-%BM3m={mi zco_E=UY;%)+%j*EzWkuFS4ByPE@DM_`2Lqs)-~+|-Xxsw49pAFa4tBiWvo(OLo#so zOL?6`ZO?LPRzFFmE%4s_bx(36}m8Lyh504Q96lt?s!c1SC^GTPG)qpI=( zv7EoN?5YR<4MjVxk62>4n3JEEL7CY;RD)gK4jW~nWUC38LtBTvBt0&SkRTr>J^PTZ z(Y<3=bEtFeQF)o9jRJ{d9O;kjj>TD4+^^={6B_l}l67Y-}X z@T%M$rX{B|YrX~nuZ>MQFDanYK0oYnYVF+8)eS6MbP?}OUT#0TBQc+w88{zXJLc7& z#hysXowrsk4OcMYHMn~`VNE(cyA{`qTNIBuOml8p(&RKlb=(M_hX;duC{fVAmlnZ9bMY|%vzi@S*Olg1yJMnM6s=OEUMy%px}M15y?>h1|~ zLW+JGX8(iAz{i(tH7oLLoScub zeg4tZ5B|MQO`TiXva}J>P2k|+j-g$l?W)TQ@U=yIX7XMe7A;_tk|cz7CmDEYBEW@U z2s+VsUmFq@4JUUj>D$xp;R54J`{wSB-r`+(5=IMhEcTQ@LfuKFEp#gm7OZBf@8iOF zP)976pe_!?Lca&$9Ia8?X zl4PvBteDwF`{mS$2Bf!TZ|y|MJ_NY7vGchZ{(M!jnVX9%r*gsf(Zgq>_h|y`@cq&$ zf!2OzhBcEK-qrcF`3iJe#oJ-)^S;XEXVrLC?m2!^)zkluN*=Y7h@paa%i$Xjsy3p?xtb znq@Z>;N&;p>>uSlQE;vDQui8ZZ)Q7ud+{neP6GjJ&rh0a5N}=(dcIYrUUDhNk+;78 zd5p|NkKENvUg4e*mor%hZ%z}D+geEO(-HnaPd(bBrFGCdolj1}>~OVYoJ>Vu4BN*? zFu}*&Tt*>R9Rj@BT>?B^P2B^5Mrz(0L>-Duf<~%tjl%l?SheZWf^Sq-Nf}Z!R-77; zAs}fEyQr^e-yD*`sBsJ}e>`k|`DDuis&wq0&rU50n1|PUH>+JJDl;6Q?`y(%zynr! zecwY$6*>4(Ai9fiU5 zl8Y6YkpVX6rc4)7Rqd;kezNjFp=57010#hUxko=Grcyj#tqn;L2>bSnL1>jDu<&oFVNl*VIMiSt6yy9`H1pi`wwpQ<9a>idoZauj4k$3`CYlBct zsz?}J7V*NJr2cNO>02@cfS?{HrvKEE(CpIPIyZ_yqw(;4+vRS98?TFcl8_OOnL@p_ z_O~sk6w1iqlVv}-xFPEu!eRF9thTguj&hu71auBCd+QqR3O|wYxz;&58hzu*(u}4S zM9U@I1XcY#vS%QoD4``a(P`^R%YE#Wc@4QDTjsN$6NJ3F8f&*WwLk-b-iozJ6vb89H~iFs%KRtJ!yqMp2cA z@2Bs|F<`ZZtwVcy??EY~-_=d`Hx*w~j}jD0Pf&DeiKnK+;BJBur0RVT20MOt$;1s+ z^s8BT`7`*rT5}}woJWeuXKfh#shCB;as#biRWLSK0q~A*tx)w8QsB0szAwK00fpO& zAj2W8hr4s~TV%YpG9I7-FSi=Kbk+(zov;Vtn*k71+NW5*DceCA93J5W<14;SiHXEJIz?a>qx*-{K&pc6`90yMC6GW^xqWO#89ebB*zN5Fi5->`H=<%fmn==->4?vS>mH0~0-ARI z4EBxDG50ek9l9_grpUhc{d4f>hGhr(sR(@aI z)_=x`;<|D4)$Iw!nqrHi{4O3%(#OjjCz zO(wi+3Xi=ub!&B9`j)iFeh1DM3g=>-25fa|3LsvVYjA43sdEC(uuj*{8y)OS-1=}? zQYICn+l%5@rJmV&j~0uwOeq~{r;vJcaQr#@(+4Ob6^d3PlI1HAM);i|Fhn29oxuM7 z2f{b9rlIH$xd#lB8)i=8)7l8Zh{+%|)wmz?2Oov_&N4g3+zW1zvmJT3l}&rm@l?#D zykH`*zr|uXj(0dSA4DsbtYXSy80Nz&6kHo`Hbn6SN@0u*fjW&HmBh*zyU2#*Y_Y zi`qRlea+2>sj4Cb7+PTMqvN6p(cvt)CLM7^^3#P&7p995cz~gQ$vlY3fzohaUmYrY z*9j|Gow;PTk~r$6VO*@*R?b(XnXSI1VcvAq{m_*2l)e#S2%;*`{dgh(4Do6N*t|Yl zY5ZTlHqS%e0I0`O0KpVAvsZPyXz%j{4K|4wHj97M?DpuW!vqAav@qM8YI;e{UKiG) zj%vv%i1k(eqUq~&|OF7HDUC(p-Bw*c$b@ z81S1vpt?%LnFaxbAbYVWp>`pKD>Wq_36Bl|%>O%ST%Ve)~AE@$R{116p zkGXc5X2;`8aq`ipnJMP(k*dPXTF8An5_)x-H;rHVopq9;l8OF~V!`(G{e_U&GJ{s! ztR(}i?Z|$s5#0a*DdQ$m_=z-WJlr{T< zzfnuIQg>v4USDgBb|K230TX)4H70CF&^qJ#*HQu35_7YXh}&5g1THYWi}@3N?{;kT zf*BcFh8lwjL+hobS z16wMS3}k|%?Y5@^mT|?90kSaLI=dKpqcfD}Tf2Cc^%NI4D9%{UXV)@gCU5Y@bv;>K zHi()g$a1wf{BA>JgVDTq%_6p&^Wh1nF)(nx-o1|CM}Y(c;Dv<NtbzrVm!h&DYEiVns^yHI%9>5uEPZez zBVoCIyM<`j7}Ha4`Q8ojwzklgu$sPwfmQ?B#Y?EqE4$S7bkg$&hR-y!ah0vMuru$Kh^6^Co024^v;4K@C(~4z+V-{Ea(xi9co3R5t zFEgu=AL3~RY~7SEn0X=7mPt3jW7nmu*n5imzG_puB>+$1k*yASXa~2Uyk$Rh{4vUE z%E$kx?87h(6_DAjl_0QSC9`1;b+k>O*c09vr%b1RI+XC-j z(<%)D0XZ7R+*+mzC3D1DMvX_VXqS$kx0tykJLewNN21=bw-kt;05YzgSq*S8(Df0@2$rTf}r%=-s|#EH=ti3=yhtVPnw%RWlw2 zE2Y_aXB3CJJVpj)d~~eZSEjSMMZ0?g=qBWvWzM?oVRF(j9UsC=VQ|=A(nn(bhQR^Q z;o4V|G>nc1OMxzB_P+b;1xBP%>p}^``Ol$ROBg&F7xCQV2-85KU5D@r@Jw;_)%`$N z0Gp)L`sRHlWy8%aSrkKv;7<4#or)Sq^QPEt$}G$yWB!+sPrjdalwj*pZ~W zu6E!+rWW|>4YrRRSXep1LvF+}J>Ly(wwJIVTz_`}|1hg`umq~hiX6lyI)aslM-}>2 zlARk)6w&ZOid;Igbe2qA>UQT046)}gp;f#&rS`S;+WWP;bwInX#vCV$U7K9XF$HTt zhV4pA3@wQUjvey-${3MYaWX7f&)IRfHlx`I*c-ZG?PoHhYh-gDW<{TXjogFY;S1e~ zm?m)Yi~TLD?@=9}7m<|NX?=^sfqO=s{4)k(W|b6BS0jCo`V{(s4!jk+ldS!rZ!OHn z(k_{yP(yAZy4@V}qS^Zk(FD-Jr^48E4Ov0yEH0wk5}^5EN_ zX@{HS3L3}BRC)*rnwLjztr&+~OipwHNNqwkH&rY3H*78Y-h=Xau>eoQ;AX-H2~hGv zpd`{&wS+&y`}?J(?n%^WN;$Gwylnxk57hHL-Z8TORr9Un+I0{5!78GuPY9D*XH@*u zLJQX%ZzES>SFQ3)OF;lyBV{xs(&~b7*9LTjtBe%Ny-m-F^SI)-I<($6bBt%TjsIIwPf)t)?jDUO+os#5X#*jrh{>M z0PhkgR`g-NzP%CCD~zc5m`4b+Wqo;KidBv2J=${UdH#dr?$t*ALIMvVSUIK+6b%Ol`H#I)hdh?P;pc zuEnoAK!*0k(4?=%8wDyGucdWda&T8u+eeT;LO0a2O-VwsYwT|0zG$xDnbnwfjOUKRq6L@o&3e8Pmns=jW;3H6G78bh(k9poZW(u}<9_N_HI7Uu=NtIY5C!9=a; zTa*P!YFN`C>EYvu67hczBWb%tRY=T;Z#Z?B{!?_ zm5pXa&>(^9Dc+Y*li$%@=cwb6bfXmdBj>Pm51 z#$=soi&q#-K&|1BmU6lpWLOKoEMPTq7PS_Y)nPK#gcG6M{@|%2StlpK8lceg34Hlo zPADua+ABVnXh!w0z=)+NT=kVKjWBVY$njTh8z&4>~-rg(zSGCm=UOWs~y4EO&y~BdMiQ zIoK8o@%NUkSrLsn;~95PNq^BWYs%Q)aHuiN+U4%qR>=+!ScB0$#|K+08Nn5(B`3T^vCXqWC@ZOwR1%zAJKG7K3x6y=u-$U zI29UvNUhV}l{XIqJm0UX;+RgqowtkoHhuc=$JoTK*6QyfrNO5T3)=ZaHz9@H$Q0;- z2jCAjO>4r|{Ct1F!bpB~`0!ko1s z*G%6B3|7{I`q^RE_PWlDWX!4R>d@Uwcb3iJ`t8RY95x-`)ynYvjS@G>D)`#bf<$8> zK#WVso9){nvaH`MsimUi`?z#1Jug0cdX#><3XMom+M}v6d~!plIk1LqrY%wf#UI`o ztis+L{pM0_L_(>MDj#5aGDU!mEBQcgfZJ79!~U$p(LF1YOqrF7yyLCcx@fs%T@k;Z zZJO)2^A&To3g_{Ps3hof6-DLLAbQ-1IWa-xx7gJH#JFGKsf4q#RcFmnobpU)4Mqg~ z5dR-B%dsXEZl69JY>qFWwsvBxxiH86Ab+cv2=E+f6&ug%bce7lIro202HaG^sJRLj zD4S80^b858m-)D|4m0bJ6)4o97!lGU2nFZT>C64cU2HpTx%QSO)sItWF2-6lQPoG3 zFQzo(!S`#|-h5yL<0&obJ=t@cvf!y7Hc}{&RPs;T#AWH6KOkF zK3}R59~z0Eu;=4x^7K>rgSP=V)giQ2YW6L4uya3@?^uzi)#1)5*^>!M#F11&R1((7 zwY~Pb>pn*EJqhMo0BT;NI~&(1aPpGTDo@%wVct==2(D>}eiPsA@UWhAHnw51dO1Ge z6L}my$$)hQOIo-8OV||JJsk=~`~BEyjO8LMXNQ@IjTr4W2{P@E?E4*^QD<7DYW=c7 z)RJF39A(ydJA#IadwKPJliOppcSG*!7`}3O1|y)qG{$&1D0Cd<_7ja3U>mB<snT`GaftOf@<$u@V~*957`Y=6~Yvf*x z!qCgIe--4A0uA2)aPz+LiXJCm8JfV!hh#0&ee4)L{S8zZ2~CMCEvNj8X8Z)im$oK+ z1jEXnuOu>Pde!ls+vQteqia8Ou}~b*DD!n~%FA+5_60K)g~3V@j#Ja~^|L04Tw=Vo zA40UPYa*c9s4!43?%8DQGk}P>;a?$2^Ot&cYrc}ZZ$}Qu7CWX1dC1B3)*rFHOIBqy ze%F#gL68n$5NKJq;~U54NL%XQ1j)6R}lqhQ*JsZ*L&#}XZ<62PSa=9hs2HU8*(xHM8$ z3(YSoYDhXRtYvZlWqX4nNg{~*Y;duNfpRBM`6QO1Fw)_Q{mu3<)w2itvEya z1h8O$f;@swS4mT*IbAmf&Mjj!c|AZt#cwh6L6~@6+v{o6F8p_9Bw=y-(^OvNp1;U7I7RYIN%L|F^n zaA!+RPYSeENyHnj=^9{3Wl+ZV+omhf!floLgr*B}ddAY;)fM*x6uYY2iU6S?FV41` zb0YI%(c|U2ilE;k?5dXL1SJRE*pXSw;uZvE7&K^pvWPusAzb7a97$WukuwMgsL=py z`ZJZ)0B{S)iazFyvbk0qSs|Z5?x=HcL;>kTqKx;TOmD?dD&9)_PmbAfW^Yo1!?@bM z%GjWqwk5#R6IO`?!(+@qJ1XGe29 z7c%qY24))a!sZvIFY7bjgayuf@^YN>%eaxy+4o(ZJYAMe&8RhDbevA0kvu%ZzDn}G zAEBvyGN@;SaH?$M(5(f)rfwa*yplsm7Zco)8;)rOhDV&REIR~_0Kj9hp|-AaLiE+- zn64&yS~-MQt!{3wN7H+6U`MMwD|^NJ*v?d*V(9^Yje04++&0m4nq+1oAJIKE+% z<4We-NQ-ISG;iu^a0?^FBWoyt_c>({6V@923(+amwkx{I@@U5)p&d~PEtQ5HiCc37 zJ5`?$JM|i^W}iQ(EGxx%S6#b=9l7F`P&$v2>>dEH@5tlAxPW!)=Ysy{v zhBL(1Wcqw98_#9Tiy&qX0ntrvTd5;f_FcnQSp-r&nUn{HFaiuYW!I)(H4q*wZltd2 z$xjyx7=X`uHYYd+91_8MzK15MRn6m?bDFwnvCHiy^YBoX#$`Feoiw_F3} zlRR@Mi){XyD>t}wCCFwyip@0W4tj%iYMPr!qAaL|Jzlk;>-8qV!ArvVZO@3)w88Io zm-Ts{2GR4x+05Xh+PMR*F)rpmEVlbJ(KBX9^Q8U$3^(UM)rx{7|FZhEZ$`EhQ^ zjL6?*Q7LUQ_0zG-Q>N2L_va1_sQqwiRB48PnFQe(|5|EqJ@E_F8vYs?jFH2LEDz*r z{-c`Z)kT4~_go48L-29E-do2x`@8|=0+IcWw*0=;ecrP=tKXetL0&LCKw}t&yf_!) zdX8yf-W{;vIUpV>s;F+ z;zmR!1c!EwK6T{%i1v-bE+oEBZY=Pcu{AjIXCk(tXODwP3HMWFuEsGX*B13dCK`cE zpnWyKU{b#uBYZ#FEj$X)u`I(yIBM*cP(Z15tEim}5(m-@h9%iSNsIey!dQsPvU{vB z*l(dP7P>yOM4%-Lz2mbHlTX(2oj?w%CdL7EQe)Z7B!eE8PQjZFT|n(PW<>tG-e@#r zsTV$Y{V?N$KWyrhIz(f?(-D`Kx4c4OndD+c`6lMrBwuO7bQ>+ej-j8#P7m5Ol={^< zZ$bRsh4aFLB?h|bgpRKjHj~JHJ&R%k<*XNN4SNiXBul>Q9bs4IyV)^&sN@lxZ zEd&Jrs6``q)IT=EwP3^hpEVStst}E>mOj&mym2^hcB+_G#GB5qeptsRc5i{1pmtsL zZLL{1+;S!tEMNBraC+nfpvLJ5ZerbO`^$lb#j;I6XwF*FIndw~c4QEDxLf24Z7+WE zna_*TO$UI2lGTKsC+HEKsU}wdHkrHk$s`+o#!cEjd;G42)>SW6K|!QkvgP@6$${1t zaF||oTe`s0im;TxiG|FjLvG`tlH`31-Q>zP*f74(jowzDg@{T(+UI=Hkjd0#l=w-e z)K>(W1q^2Qr^KA3_ExuF$_%z%^L1-fHE9no9uVu!hY=TCCve;V+f+BcHU<9CWOB8; zeK3u?J=(g}nD#Rlm}`Xsss1Cz-EmJ!HU?XLm~Ag9c=lYv^@=Q&Z)S?0WM#KHT8a%4 ziFNF##?wTS)|Ptp(PnNegcxg_Brn|_}4E5RKBuDz~|1!f7xED^5V!x|LQG~iepC^QUyA8ohh>+_(nN29;OCs_Kpn~_lCM$d0YsUF@}FbXY~qH4+xRaRQMRs7c*)cXs{46w-m6= ztds(B_$B?3VmREtFeE8>*R}`2;b=Gft}Gh_cG;t`?b)qxu05m{y{%N#d+ZB+4?mlz$jK)PJNB2M0~%*3!qo z+0|x5`;eHfr!EDb#meFJQ4C%^ifd^TXv>=jc=br!S6%1tyyOq2{@rIX{4to5k*|I0 zPR0+lPf5kBq#fbWf2SR}0*L=9>8M`>@ml;lAAP_BS``u$leHYASR54aw-HIfV1Srl zI8_58C9+j`v!}7(!81rfxZz~E9NtqevqyHycv>#l^Q}9q|Au9G=@b6o%cv_rDEnuw zXp7JbZU>T+!AVm+cV|6ssT4blCqcc~^TyD5szn%QY?o(o!Qw*p=CJSMrOV&5`fL4s zR==VZ#awCVqB)QyEEx2ipKS{TYN(gL>F(Tgf=XD*B6uYM^AVWF zVLJMmgA4R9WD=u>`(}_s0@8(Vf&A?LNFZOh9zq53g&COCv*w>q3`t>Y(GHoFv_t+%hTp75^B<6;k3Q+# z&S&`XfSXNnDrTmvI2=v{W3hT=3(;|e`9`nejIPVKar~B965+lo7|cYdHZK)p?FQ-o z?DLu+NuBOPC}Jho`7kMHrdCI7xS?qO^_NA zSZwBm{t~xdm0$3NAoPwlZ8r-c096Z%5l+L&Q-M~h&=zrP;VP}%Ga-C$9f!S%Z4UCN ztUEHJmo|eyl&6l-Z`X=Z$AR2~uOm3Z-|~I}X`)O;?)lrTZi?jZ2DvbJe@q0c-O2jX&)p zg1fKe0a-c`xdm)U7=NiBUvBNQ!_jvb`^Tpjl94@z$yiyn)5<6?WSD2Dky(z+FDYJ? zv6a*o=u$#5x(K13n$P%r=FG&$&_Yr!~D z=M|tKl6ma!-iKG+z!pot?4ez9K6THw@~Xze4c^(_3{-mdHNz&Z;m50pDc)UP@j5!EoVjq?iAlc5AjgM&@l+Tpck&R5FhMijW1^4uo13T~ zAMhkP767uoNz&TIHG5H>0p60b(mrWs{Ii*{AnEyE%@ZjFLn$)LQnJkU>lMvJPc=gh z^OPatko}`@*@Gyc|J&%xC7{lk0i-pH3G&frE*f-|B^R_Er)&Uydz1`$xZVP4rEu0~ed6R|!~OjB9h$Hcrme z!aMITggK<^W1+H`gR@&!2{^x&1vgaPwBcO!KO){+HoWVA&vdGv?`+TRJ-I=?gJpe#|ulL(( zM@hiaS|@6$K$22I+QjD18XKNHk*D9=amE3MOY4jEO26jN6gsZI5HK>(wl6~$?IrS) zieFSmV@q#BzT0lV^lNMjD)8}SQw4y;I?yQBZwG8s*byU!Mu(WufMJ%I8sx4F)kz%j zom!kYsrxO3Jw?!rp0v6qx!Rrus;dNqW*tkM-DM6{AoPY0x)Nsu()hwe)#l-+3vlw~ zr_{kgmpz=_FKDpPWj754DWCi4z+n^$N~m?#pH+#yt{i>SQ!vs|MwLHU9b!Mub=wdj zoBu`vkb|51fHvCo+Oq+PF&oTZ&2EMcPHtk^?OwsLa`prtoAljWx`qbKAh{U`-NenT zKb*PpF!CQ#T?TV<+a|?xlE%cphnGL^%}?9~`d;x2XSwwFrZ$2$xn;1kZa|v_98~h* z%s(XAEv>oV0i=pV=3I3<597qu61@2lSR=zb_Cs1E3`S{3^nv!f5UszTTz9x@Iv`}f z5mg6_xzezEb-i+jnJ#i^C;k@Xia2O>aepvT1rSr(L5-K2{wY3-)5`LL;jRpw}iNP!PQ4rZ)LO$GRvJCm%{Vi57DKI%i{85-}f06 z8%Uui!R;6n2a3rKab{o@Hxe6HE7g3mNBq z3>!1G(;+9;&L|LklI0!Ur4dbiM!?l*n0#4as|6=lQ#nY7f8Mifw_y`nc9o`|gdP^k zivI_>KQI0A4*#1!YGY&HFGc)s-u%Df*Z=v)fp`8xC+qd{T*=nGY3C^#s?YM>9nM%% z-zNfVvBHpElgqw7DO}jkrT+Ii{9Md6p>X2+A4DJ#Tl+t(?<&1bge#~R;$*&gudFm( z?iUeYGo}8!ylXPoTYmYUlJd)&*A7ShLp0au4XqOYFW27ATjkgXC(O&Q^t--}9S|K{ zXt2c272c>p{aYH^O@cmV=V~lzT5pkZgeLq`{5OL}7&=Fd;i90MzU@FcSUS)$DI@;R z0|3_T#m|1kRE+mZUnNSvLl~qi`tL@=r)r@8mo^%{v%-$lvZwW5-2tEDlmu?@+NQqw zXV?!o$_C{6+;THeL7uYx?+W{s;>pt|K#%X2QnpbN@aw^@AMKa|!1)LHr59gjMy=Q6 zubZp`@w-9KuNIUJou?$+AS}B-VAwM6A@1RH$VwCA zQ@`9p?0xm`6Duw&#%_9EU7!fG7N%iMk54NoY}WeY?@m16FoxAvx#A)!idjwkUsEHk zlz5bgrXyi+W&vyycGDHzzjwH2Teh~I+5)0jDcGmeqZ@$=2vZCUW|`~hcHPv<5`Dz& z%n0lO)o>&79rB|CBHcdG|<geqGo;aK< zWw7OdeS$!kV2*qGe&`q2ruun);RDmsdF!0};dC&98Iij|z~WX!^F@0=73i09t()gO zom}sZqtFjZ_NL+6H5KvwgI^5=k+cNi^qKVZ8IAG)ly%X!P={eq?qf&Zx<6e#6yu4L z_@$1KrBh4RB5C`(#!92eiMVr%+MdVn&^`zKwi2BEd0fUO5JVBI=v&b;A6W%dT^v$} zwG6+R|9z#!ay{e>96NGs2ZUZ1uhFeCbrcd*P#j2-iY^Eq z)`;4jlu+?Vo8{^HS*s#*b>q9f6*UEtoW%mp3P{gs-vsJ{fhZ~^Yy{jx&?1bgwD0UYkVB0Vq%&A44Y6&dDzpiYt#G8 z+p?;N9QPzraa85oR(1z7MU+Kje zf3sPV(@b&k!(s0O$GEJ%HrTyMF0dk;pd{F2T&JxdTm>4n<%)PhS@9; z@VTz?I`9y1EYRvhcz2Gd@HxuXPp;V4>F7Ixy;V5x-d)vSx}0@0eRmJ)*5QCq0Kkzh z4_I{VqxN$3XBP@JWY17{K{?;Q*s=a(183NMdpT*)XMQ0+Qg$3T^NGDkJv3>Dyq4wo z=vh#A61Iip2~;<=FOaqYC!j!pgH{UMvnwMM!D>zsKw#a;F=(=OiLkt#;GaH2O~vV? z)UdgpRhO|##e~CyC*5*91KgsTJcIjX^CF#&zDj;a?X9u{XOTt@6QiivBcN%>uv)l<wU7jnDP&!8mYSg8{*~g1J^X0hH=AR z8Ht-KA(TtrC4(TeXe%C%1>2l2) z-+->S%UZWcDog zP?viYs9jSn#L9G@J`~50pn8kv$CV=aRve9O`F}~{J6{~UY>8fvISp8i-AD*5o=QJAeNAm<3k7Le)50%Sikt#sh}I36 z-j*(>Dp!5iRFlUGHJ5JSW(H}R>mF|9Z&2@QMx0Qtx$8b_JCj*)Zf;qG`U2AI#;N4- z%4q@XYtO4DMrM~6`5jZt)m}<{4AEdrxijv3bVfPKIez0d!sQS9Cl>i>$^tWM#FX;Y znn5OArFhVp8LqK*@~+KmQbT_~wbK416VZKpb3xoJP}g0&?97P#C)dkLb4*U@%m$8o zs`zb%A+Aq^a=^ERkv}!5VD){iX5s;^CqH={KbCuo6X;`8Kelj{?)J4frm@E8Myb!f zpbNd8P%75^@N1juk+rrm|8T9`^U9t6SyMOggCzq4RpIm*zcB?#nsC8GdI8UkN zh%#`n@!Oq&uJ0r#u)-yKt_DK@r;i+_M=D@0oNNCQ!~{GGIFVs*p+25=@8PJmYHBE? zb=WHCzsZ97_f5!)C6=-K@G@c_3v11l^i50kXY>=3B*O6OoSJ0@hCyyZhWh1R)6< zgmwATyv^9l84qAKGs`_&T7UkeF4!m%NU&tJSmzNbDw33*hcLCQU4|UBro>L74<^`n~`viLSj#!1kcNVVMlyYtbe_7WE+<=82`(k?#13Tf&I`C z5w3GJ7MSf5jhsr@aLx&#=&mg{VViE@mHM>VD0)1=xom%5%90=@EvkTuNLG23i}lm#g%2^MRn=a-5rDUi&Nz~K%?RT>ERFV^QkLKTV}aV$#NCS^W=PqFB&3ZP zJq!&gwhG`Jx28;XwEr_#=#yUr^aO#sj_CfX{xBD;vwRH?QBLVu2~jFMr=Ncy7m0K# zcGYtERWn?g;-9~%bpOpj-il(uOwyEP6qLW4c1ycoMDl5>_!E3t1%o~-?7e}itjJLo zYOAYb&U-&)mb-a3PHj93uOI2Q{0(paH7(mnPM;>Y}np_N6#H5EEQ0kfpjABu@3@m|#CTp4X`91! zQ@vwOGoW@e+Vpe<$%cwId_jVQFvOvum1As5^`D^QU>g9geq@P{9ceMJ2CunFw{s3O zIOOsFUAm<&L}nh+-oNU6UZUPH@x*v$S{U@lb>YOQK7>;KPjTMAK*#TR-I21faB_og zoa@_}rD5XX>5T*o=r_C&4Emw=n+Kk#c_q|*{Kd>O0AY6Dz=F-BSCpPhXY*bqr63CZ z>lY1iY>@J7)_L~z>wruO(C?en`k`9kTg&dH(e$vxRp`8zBI@Jui@x2w|yxVQq#Q$^SEQl#uM(! zJ0=6gyPJ*20b-iXvXqjXt1LRA;mowGTC~hF2^t;!2`+m#outh?ukRP+0#Q~o-%Xer zyv1Y2wyQjMtkL)(Hf}5F#o^dG-l>byvm(Wy{f`1wBbIW~5A;u_?qS|Ev;GHp?wT1) zzYtYKX5&g*5!d&IEL0XP+)lJAydu1}x%n1&lfF$b!1S;5BNUj-ti9$ z?hn=GI=th8-t+kH+R($ukx9ETh+h(vNcLHvoZ%h~KQ-4NI64e*J*axz>I<(sw*tCH ze2(NIgz+df9rGyFQ*wE|QV6={&uz|%UEWKp?6g`?97^31@hGA(0_zNSn?O04n$&>( zXm{jtri&Nl4jy#mPPC62oFLwpYcYHp%e-)r5;fa^2tJBrQG)Aqup;lH;zsY5F3HxQd9Us5TD!C!pBnlIYVxD1Si_aR-CQ~c6 zqc%|f^q~SKsG`POu&e@D(l_v}CR42bxPXqS)qI)MO4lWYnYG&I;|2JQ8Wq;a^S)g% zgH(GL2CRA6Tzg}+8$W2}vj0Zyu~;d7yFoMIU=shRnYczV(MLk@PS~+5+P#Xp{2c*| zUWaiHcrq$s=QN*GTQ%18V7(FD@j`$B#|EHkx~wb(lfj0b-)w)U9?q?hX-BOn4dP0_ z)tyi6{xM39Wb0?jk3`t}J#J&QZQMQWV`$-9-6GS6898#HvDK8#0SAqKd1}~cCq=q#x%)%-oM!f+Sp zBS{MCmU-P~UB9(8N7vc5QpsNTa+`+B0*OD<`DYJZw9>K8kl4`8Fm-aKUZ8EXv}9&v z&}nVh%eJm?frm$9YLz3I;{u19-#t-0f#VFIwSZ)*fhiho16Wr1LN?i5{W$n+Odw^RF_6;8}mR7*?MV(_))sr{*n9u zFW1C$`gckYpFL*J{qjyIL|G0O* zo6&P^a6*bhJ@yod7LiNGUcMBEuNldoRQcRJe3Fs|=brE;!y`P+<9o<&&o06gx=s>1 z&3a4qc`XT3)EDVRWEd=c+Y!8b``2U89vQ5 zJY%1V#Uh-nFU`35i;k*j;yN}bpmmgdHA(Jh)c&|Qva&=%B>a|fZxRosnC7i1;~_9a zZo(Ikif!FUiW`@HL8CGGj>5|CXiW6xdT*TZyen{F;wbFCKFxulV#s#-|>ZcXs1pY?~+ zihFf%$OWGm`=9NU#WNIl8#p&rY6ahCIy8nC$6&`i?X?S~(YHsvrX>r*OIg@#>0V1X zawUGkgX(q2L@uuMgb4qvNAiS8NVrs;LTjQ4G^*$7Be?)6sD35L)*~*2zfW=~+e=*rtKbRG3eYGHjVbQZKIygA; z5IA#vbzD{L-ma*lQ5~gL66U=CGNzY6Q8mc#m+f+}acN9OA8O<^2$&vqP>3sqwe4KW z855)Gt|OB8M8j;N_`+ABCzWEA-g|`5L)x~kpLB43p`t6ou2q|E0u#G9d^v8_UT59GSYX66%Ao`Rw z+YNykr}K8_xweuNJBd1p`oSgyeydoFp-#ud+?a#M`cf*}bye`MW;fX$?b5M{i02-9 zON58uUHnb0!y*V^mJzYz-nCRY*ILjM6lOR5G9P+h)SQQU9aS~igOpi2^8R4g!5K5i zp!3aC?KS9Oa!MZbjxyx?!(aG0;H8$zza_g_zyn5jTY~#C;lD`e*io_@4igc&bxjPC zigd*v_6MevN*lRUXWiu$I|mw(a9Jebs+N_+>)uk|9C^Z2{+zeGtFIxZAkHjydA@_r z)4aYyo@=MR_v|&qXAEDE==f2V);d&r&!kq`CYO{g5)$}9O%k+6iv(vn%sU#w33lOg zi){f%7K9i4;%?{W;HrcM9>*?28gYF7m39bFl{4-UjBk?gfsyfitY;Fu6Vgjcqbe#m zYWw%DUKH!V#0@PJ?0ZRhyJ4a&;5QK4K^}rsy@JU|IsQnO1A-%-^T*t z=~Fd5HJ~dt-Q8b=MGpgdo{r2=L~GjrX=wue3TFdjNMY&uQI-EjV(kHJl8!3&v{jzm z3Sc?SIy)8TE;>2$KhAnJJr|63^n1~@(h6{eB;rk zJ_b}F_?M>{e;Q~$anf7gGPl@EvJ|^rps;+oc`GC~_mK;6Hs!8!M}IR-ouZt-D8h8lXLvo{oX`Gp)KP1i)|4pqRc{-Ix`4?$cz(Ui;4pZ2n1vZXb6ZAWRBJWWJ-|=gi)mk z$`F~tAR#D_fCK^}1PBr#kRV|SfrO9%-<@b%eV(58I@fjH_q)#fedmwp&7GY+tiATy zzqQtH?|Y|C+RA>f`aK8)lKuJE(K8^>S6tvD`>izarXqW;0r+nn@{H|aP-&<72jGvd zeGi>D1Oki|Ec6C}&er^V^pHa+bUK^P_ID2NW9j|i ztxTEtx@W`#d_DPFgS<^r+dimmQQ5WIw6!t)H$|5tS1%fl{@{Hq$>!w`KN*|Kt6tjn z{prU)eSh~4#)DA#`q$Qs#9K$dHTW(5rmH&TY*bE4H8qT1S_Pke7EUdtNNF}yQNyW& zR>SAu7U%FM7fCrpl4;dD2S_+udV%r*P--E^FpKpX|JOG3bJbG*;oA2F6HU}OXP1D01&Zma~ zk2iw%a|??<*2eZ=o_4;-TnD`Fd-;E&;`it4`NMMA%q%{AZT%(u|4SvW9dAV8nR!EJ5Qpp#GHV;pMzt!_mTsp70J^1CeDkZ%U@XKrK8|;5XN+ zc~=8eD*I`K0XH|)FxAxNwQa_`$ucUzX+E&w6`}#?23~Mw_}MP9`2|;pbs*kRdbvwVSxt`xNzH-pwo(Hs?mf?!2F=`I=ES`s=cU~OYu123d97K#+=LCauYJ1Q zo_GOM=P=e3R-Ch+yW7nh7|LN6pK{dHWL*t?D=^vTK22F;)pG&VU}Cjzm>H>a-h;XB zJ@k{#KsRz0AOEFd;j2+74p&n^-?BEXDI8&~&1Sk=J)*unZM!vC z@(&uyU$L6YPwRY|x}Q5?cyNt+VAV`4M(rPw?!au`maIBsDL@e)tSX#=_=#80`y=9o zWoTS+NJd;#^Rb@QKA^*&)@>JV447xFkE>BdT(Tc5x1Shq-;7-%nz@ITtX88&W88b! zW(sn$UN@}5XB+nRuyH4RqS^0!v85J8N)5jB*}NaP%YOWgSFZKLZoQ6kuUMzt#6+|; zMsdOP)eBLE&9;Wzi?2U2}BLv_cmTk9qx?ktYi4wL!g_W8G%(6-IGS843U3!ijNv>F(Y_d^Y58~bg%uEYJ?S{Vhp#RXq zfsAvgvux8$LCsdJj5S`STjn86Uz+1k^(9$vk)9MWm}5FrJ(@PS_sI(O`?BHbL3V;Z zk$#~%s+pVVq_;XtSXz&L@ZF-1)>heQ7ey0;6NsL{ zvDQnbciIP8I)g(kA)x0HTeiARyHOcp2f2cIbh+caVYJ=OGyUn+<1-|i${ngi?VT?+ zGH}jj?`#d9Ari3Fc)GIJTl?0BBwzfW>X)ns&bRf9@REK2cP0jj389~MBxTc^O)tU*}~12vE}{fj*E7N z@%qC%9kdrqt}e1o-HQ^7XDQQB+Wz~a>|ZfWQd`)_s43ehVTL-JJ)sj1qv~^T9ltXRZW#?VACtAXwxaExK* zVYOmE^~J%(?%%D|)nx00fwca)ff|!i>!>Q~h^0Xa!e6oFjB^CxF<$qgR^}s1H_chI z(Qvhq;qs{qksT`0#OcN5y3rM(32`+tY032+QE)oDU9`^QLq?>gWfFz7;?pdr2zo9n z-Y|G%sf3GpKPmWvclP);6)I;MJYd%tb(dCO@(=Qd4Gu!O3+w29qyEQw9V50T-FwpG zL*(yHeLX1L!l`rZ%V5MVCr~FL@>JRoFV%-S3h$f)2VkkxaaPrB3Y+!E>X6O&a#2I} z*_IZkmT%pwg*|YR88ONmuv@w@2uNWuFn(a{zx&_K8>t8@Kkbm6Pn^zKuZHlrzGI4dK*ThRRDX<;r1mtn|sX8)$V05`3z05NbIFop~ z?K1-uh*@BWJANt4ZXz-%7&Ew}%7~i8z7}nG2VuVEk9fJgNb)jU95(~pb zUD*e+FvC|6x007}MDn!%#CAx8Wzv%q+L&W%jiEY+IRSYMYL+XAj+ZEy2MO1Qp z-{xnDb7hRda$aVN8U#NkQ#2v7Vg4*9fT2Y}+B z;wGyb)}I5LI0QueUIJD)avl=2a*^^kv=L$Ont;ee<~C3(;LA{>z{uCdH^W{ z?>{0WU%Eg!s6nt#6DkRKoc&@qWuS2nIt@?{4?+@G_*kj;X!B=1a1s)TjDb%+0+B zpSI#$FjuAfz3<|ja>AIqq>g?V*ks^Ju}>;b^~y3P-kor`k3(M zL4C-&ozW9FOpV>)3(bw9WE>1Za@XNq^{ue}bZkqdHw?uE;|AHPWyxD8OmCOIKZi z6>}_$x?md5S-(D|MY)&6UJx-FqAbZG#+3kav1F&t5twj(WwxA&zvPk@1>d6d&W}l} zQD!&Lyt;AMkGmE#1g=arkDU+yOR&2s91B`N6IW=}Kw+#GkjXTs+)SCb=YuSLv(Og? zSNC%tM*5Chh;@Gp0S4B)@V5SWmCOa#qgv4V+t7UhmpJ}H-09hu@m0&buj&>O-whfa z-1?_rdFL^LZ`hjScS_YktN*svNU;Q^c$zpw2=W9Pg;&qfA%r&?H;$GCP4_oD&YN(jkc#C_ypBsySq*Qp<(5&~W zE-hV_RK)QeOuF1nc

c^8p7VM+Vd=u4 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 z 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 literal 0 HcmV?d00001 -- Gitee From 9ca311936fe1b5266f33046e58695a1120f96892 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:17:28 +0000 Subject: [PATCH 6/7] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20doc/?= =?UTF-8?q?img/.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/img/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/img/.keep diff --git a/doc/img/.keep b/doc/img/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From b7b35e96ba0081cd068280f299ab8b8efc0c1235 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Mon, 17 Jul 2023 08:17:42 +0000 Subject: [PATCH 7/7] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20doc/?= =?UTF-8?q?.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/.keep diff --git a/doc/.keep b/doc/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee