From d62fb92ffac561b2d4cbabb9139d8a0451ced494 Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Fri, 16 Jul 2021 15:05:03 +0800 Subject: [PATCH] =?UTF-8?q?doc[zfoo]:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 ++++++++++++++++++++++++---- doc/elastic/elastic-search-setup.md | 2 +- doc/image/logo.jpg | Bin 0 -> 16153 bytes 3 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 doc/image/logo.jpg diff --git a/README.md b/README.md index 947130f6..e6b77800 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,26 @@ -Ⅰ. zfoo简介 +

+ +

+

+ 👉 基于Spring的MVC式用法的万能服务器框架👈 +

+ +

+ + + + + + + + + +

+ +
+ +----------- +Ⅰ. zfoo简介🚩 ----------- - **性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架** @@ -45,9 +67,9 @@ Java生态的rpc框架非常多,但是很少有rpc框架能够契合到游戏 - 有问题,先看 [FAQ](./doc/FAQ.md) - 每个工程目录的test文件夹下都有标准的demo展示和注释说明,可以直接运行 -- 问题讨论群QQ: 876280300 +- [问题讨论群QQ: 876280300](https://qm.qq.com/cgi-bin/qm/qr?k=uSo2FnXz50i5UZ1LYZS1sPsVWW9A34v-&jump_from=webapi) -Ⅴ. 安装和使用 +Ⅴ. 安装和使用⭐ ------------ #### 1. 环境要求 @@ -160,7 +182,7 @@ public class StudentResource { - 服务器热更新和监控无需代码和额外工具,直接内置在程序里,解放运维生产力 - 使用MVC设计模式,规范开发,保证代码质量,高效执行 -Ⅶ. 提交规范 +Ⅶ. 提交规范👏 ---------- - 欢迎喜欢这个项目的人来一起维护这个项目,提交代码的时候注意下面规范 diff --git a/doc/elastic/elastic-search-setup.md b/doc/elastic/elastic-search-setup.md index 3d123482..f8c8ef42 100644 --- a/doc/elastic/elastic-search-setup.md +++ b/doc/elastic/elastic-search-setup.md @@ -42,7 +42,7 @@ path.logs: /data/es/logs useradd sun # 新增sun用户 passwd sun # 为sun用户设置密码 chown -R sun:sun /usr/local/elasticsearch-7.7.0 # 为新用户授权,文件夹所有者 -chown -R sun:sun /data +chown -R sun:sun /data/es su sun ./elasticsearch & ``` diff --git a/doc/image/logo.jpg b/doc/image/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec41a656bde8cb2116721a72669bb80a67a4d61d GIT binary patch literal 16153 zcmeIZdpuP8_dmY(Tp5hpU@-1e#-%b$a?KvXkTmEbspB#+I&uu<)@_D_N$wSrwp`MM zgD7$;%C(YdIFckG*XX9}QGIuv_xqgA`~5!WeLkPx=ianHl}PRrjyTl_IEKI@iAdxF|U7Y$n5z1 zw_f0SAD@_zn3?$anZGsu-v>1T@)BSh*oFq>0hBz5mIpt#fTxf-V!^L3;2$p#g~niU zcnL{@lpKHp(P$I~jm2Ux$jH6OX8=YXtDr+?;uJmn@wz;csUWjRLeIXsS;_P6bE;WD zM7$(HS%s{swrH_F&A^bc+ueV^&2*NZ}JJ`YzqqJhHQ`AxhpC< zCN?hNK;prq

36cFvKb$8z)XPZgJxmYps?bGGI}ZQaF7^$nM=-)L!VYwzg1Deme0 zx$j>8{ej0Lqhn9TCnl$+U%Y%Z|N70_cke%d0Qy&PkiWkQ^o=}-;2;WvL1XY=ZhN0yFJD?H50wjP9{{Q!eQ91eI>1QD66$!Ncv#-i)1ynU_0ZyC< ztdA3-MnoVanGcvjQvaNmiwtKwL3atI+>~F%O*l6D>G`F)0#qq!YAOuL8?`(|2y`-e)1YQC6 zItDkX=P29Ka4j1Ke(?rRx}x612{{2Q$l^5|{nS$HwpYIxGe>ii4ifZ(=qmux9mJy> zU~)^apL@&)uSMo98-wP|ri7q*>rhvHB|ySH=$CHrNINY==dzz_eIGf=)p&h@TH--U zy}6)SoL*t79+H$Bb#y||GsM5fHfHMS&rMjsOC?$gIEAKMOv^_9+AMc>E4E}-RY$At zfd_4pu(967*3k-7*!3SQR$jsP@#`mcz>)E5(4ip_lFx(z^~F)cW)Bu;$m;2lqz~WJ z9%JisEKKyd8W*5B-PzFLoffd`?G1jp0H^S};F5o74n@gwIz%|Rr8!L``K(pD9wn*0 z%%P7@iQ_?SGWREJxpL>pg&(;%!wH*-QnW)k8QG7&-fk44X$P-Ho%ksqd@m1gBO_ns z9+Fkb*D+Ptm;i0|5IcFxTyaEm!=&n$2-4%QjllUd*VF`PQ<)XjP||jdPN~1s?4U^P zpgIGnEIkOeqPLIQn~)#2*%}CMd-rfBa2bpIZEDCzLW6QQSCIv5yvI;Rgs?n1EHE3Q z+7w9V;~2A{TCQj&iKg!C0M)AaP5fxXw#Fa*Y1at93d45ZYQ%}V*o96~3{bTnEuW*$PkcnJk@r@wCApgXK{=4)kx5MoT$@hOL z%#kf^KQ#*(kZK)pKAuh{7UQ{>0yj=XX@E1&nAX)DkW=Vx(ekRvtHU#_@BP2Cj=95C zS6ji^)n+YP;xGX(*KBCF<*I2w*ZBk>{?#Yjlg~c|@bzI7a!3QdeRBm;I;Gw3wnw@h zCEN~NB7m|*TxuF=uNg!fik3UnQ^}QjqqGexY3r!-in}6~yvV7?ZQ~-cw!Apg!CT=* z8ck77FYpCytiBn2vX6g3*;&GN68CiDtCLZY@4WQ#jt1`NAg6jV+$U2O1s&5!DYHLX zGJjZtnsYvPYwzvBx&wWT9sVf#u`dOj%Mts{-fGO;X6$yQU|pn1{<)s+>0 zw{3L>PaI#j+Ed4Rl%hD}m^>ahdR+heR5gO<+>#qd0CYT;sqdd0q%Gg^7G9m3=knkf znQ>_Aw(yr`drCeUQY_e%{#_2`x$Q5W z21>bkoYCiHoY#Tgdwy}YEhm-EwFuSH>ihR+5DVDXYN`QHBcg6(y05B(Pg*7 z!5%YVqwz&vQtwK5EBaSxV~E>%dgSCvM@i4AW= z(?Y{6NrXwMVlcape;FmW%a$gCdx9gz*cu#6cw5QpW+ICzx;v53g}SU1UugkrWaKgX zdt|W2vXn7TDL#9h8tTRo2o52_{$D)pUpw9$-~it=j;(XjK>ZT$q-#JA&y~+>%w`#{ z6lBhA2$NhmBYX?2PnXGO!jE+`ST+RwPJIQx1hF8D=Bp41J$2;iKbLLG*If&1zZ_W_ zSD1sk>&ub4?DiqjfwZB>IxHJ~iG(?E-(O`rIK{eaq-%6^@>)t+^6^P4rIt-|T*`*{ z*#Jumo9Gg2x=Fv?3OgVFa$j>r%~~CoNk^%(oPzQA0I|M{QnQ|o=Mw89PqaG|M7zoy z1~&#gwfL|Ec-ZM-Q)e6-%J$r_QI8*%tzRddJGZH1`-b|^dd-}>1w$p1jci#atL~Hr z)Zsg_wRp-cslIniTZ1_+SjuO1juufxfRpY_Y9Wo7kh3sB-8&?M-h7x+iPztS(%06k zJ){Or)rzzU#27?(pVM2>%7VmSaa3;W{`L!>v~II8^S^=EKY;v;pOw2Atzf*&&G+(ywzw=h7AL3`Ku?U)lEzXB1?`T!jLIpdZ3FD_^U*VE zN67E9KCUraa{qg6-V{sZ_7x)lV3#UPcy)0~_7ds#*z3itBTxtC7x5BDoo@bt59}4y zYYXd~799_7jNY#j=O)$(?@!mP)y@_PRR$yoE(}GLfStj1u{>7oBhL#arbnmE+`6u~ zw4}8k7#)hA>kLt5RIc@98{tf1C~VZIEd+zd^eSmmxVz~ykT=lWX$fQeT3#$n;>clb zg6)PA6cL^K1*g6))L$v44vgt|O_E4$&4@#EAkXGh;z{RuA|$Y z&_im6n|M%<3z1kM8qb)^+bWG;luXu`x?nN4cKr0)MBTZ>ut5RTpF8@Dt?f&E56fjy zcKD0=d)wMv3?*$MLQ)9ug#g(WBdfbL(=rvtV}!eWdmpNKbh56NiVC8dmK z$HF_f5@rh)O&u$1QEGgP(2vuYI+?B~fsaVoc^nv3!^;P!&KmC`9g<74Xa($7s0@&Y zcQHDrjpz#UN89UwA^3LF**TlHunpf@&osM$NR#Sc({*9r+((+y!%8=kCQ4Mv))7mB zMcW!+o_s!PtYFw{5q<1Pdau}sW0Ktn6yjpbSn$}guD1;^Cr79|5w&?`ZHGpB4tOUn z-$4!R)=Ql)(-~GM2w$UnS+cIm@*`I%*Cm6Wc8b4S8sI;SL7-3DqIrNgWOo9br0@z0 zUQ9s>Wl^cGOFYpc5oUF27IOkFbH&P3W!|d;E@JQObDN)-ftG2z&G`n~wL-ev9RZTG z&o_AeS1^t;Ra&cGftf`Az~;)}j@aMt>?||VvDZ;&uB;_?#FcvpSRvklPFKSB6EI?p z+Q6_On#N^m3DU>GPmI<8D8`apLN7(4Go$2c>2Ow;$rF`Z>X$fTDZ(Tr5*nyC1PeZDA}KyD+b109!q7fc32gI&PO$0DwJp{Q&u7+WU~|`IsI2BN`Z&T zdcme?Yi&a^jyLGh%@VzODzGaml5Rd==R1UTup*xvZsVu5Cy-n9uPp^^YspB7oTd`X;Iy>+cy2)<=*;})Hxs~b%_swe8Kk;)1T7leY z!Z*$jG15#)JETkWew^+p4`3Al|~S0dWyDoj^IOQbK; znT4F|f8iB0OmhR%d5hnVts@b98Wll-fK|;^UBAVx^}*@wK`t{9Arx|o#^jPK66>!* z=Xzhig%8YE)hz9}{x+}+y}hHVc)MVVRaZn>GvYVUx4$5i$H1^!0#QJcD_MYPW0F{0FlL~_K@w}OMQ=A!#yX)7u{I_)H z&mAO4G>H@oq&@3LOHrZ?1G2h;NiYX-W~l`uc0ZCtrPZn%SaGSEy^28@D{i6EpHW2m zr}UZCz&z=&a=fyiJUxf338(8zER5-#G{=HwX=}`B6_}Ib+n7WAqnBm)vk|8& zq&pQ6CV40hjJ{p~UGS2a^d}gYqBdSV_e_p`r zWV9@8zJcy3MOO*&s+MRNX5~;)#k9(bCpX_O7-XC{E*E6L3>(cy2f66sLDJZzQgqk{ zotlMgqbPW-bHs-5b0=>NW$x%_^(J;s$1)^!&f1B|zj!IUJJ|KIqmo9djizkudf4qC zfM#zm{}iF?o^S?UyG7oV4}&64suZ}#7K zF9ZsIhj2uTQGB%8g(T%|g$l? z>tN2u;XU&t!oZ+&vRN1=!Hx1mxy_~>H(S)8dmigeh~5Ps@gWe zvMTsmfsjm;PL-V+rXMa)h$G+_7i23JPvS#}gQ@w$22<3v^{uSCmnrE!oclVz+#?C=^KL!gTdv~aI!6x6!B#p27+OT8Zx47< zHFkYZ(b~R@zJzX9oLTmOfMCk%AOSC!_M(3!%Kj_{Uxb9{HyR6T70U-#Ts1i4={UtI zSp~kY4=eDZ`kJs~-=g@^=D5gIky;w~)73b!=0!l#W{i!}4o#gH;%}5cl0exxZIDui z_2zZE(`TSf2g&BK(=-_eybb#8HCJHw$Dsos4M-i&!(sHZe2%cW2I{T@%jF(4PT1}a z;P*zZlq7!)A&$`T+7*B$)b3s@Bk}ay+eXo1v0@jq=e-w^gZ()>+5(rcg|Xsxy8fB& z3i=kJXKJ`vKJI+$(v-HiI8Uh(-JFPU_cbOP0)^$27ea>`Jq0J(IL^6l2Bcn zDjmGCSMu<{YA_yW-J_Hs(|9%V-bI>>Bl|(pcX7B%7go_9!RD)C{kb{+0hqpy{g&{+ zHC)dwU@vxVs9G7e#x%?z2(Q&sfo=r48Z|!}VEZfi8C?VX@6Ukm9|`*M)N7jA)fu)1 zYMbqU+EJUG`ogWtT7ek&ivB7f{<3eVwu?o6i z#t68+_|4h%X}$DSnf-!R-Qz$zzMwD%+cFq=PXPJGOw!1;e~3N);i~?^_5YhRzj-$T z;0n;d(yFy}sQSd`V7m{Nx4tIaiKfxErk+nyoN@E4Zy_dGOTtHX(jL`yVzS$4nx|H& zes{#ehE02Dy0ySkOgQLprWnCt&;&p_l(xLM2u zgV0=y5OCfk@DT$zA2W?`lY#b^wmhmpRS|!xT9^cysgLVFh){Aj&h4uO=IX&jv`j@| zE%rdBaK07cGtFu;ET+0i%@?r`sL~wik6fv$S5kgNq8YSxLZtT!MuSRMWEi& zIFZFLX>PyOQ$&)8m~W#) zqG{ZcU+49Y>HYS`jQtE~cE8(ChZO(KJN-83t3=-%wcUxafZd3ZeSDR8dLQ5L@@z)= zGqQUk8_o5}1&YLU20IT_;G@~ub6gYh_4j4lO#hRp)+VwQs3rsf1KL?*lI8^ z##p5SRWJ5vuye)2dk%bBhl>YJ^Vfjzb6^VU_^BsL$rNiEd*D^~Hj=mRjfX-YDlJar z6{S{lVQ+62%9D~67N8o=Rf|>&0v@X{q>fin&lRqdjRRSk!t%~3)@jbFVB2HDDE-_x zmR72tSS^~e0*SoJi)|;t-+7VWEax}d_%odQSH(gM=c}3_#gr}4@=(6wt+(R>Z!sbq>((RkETBZYJ{ULhTeKRrUpg!S5h{A zbl;s}37@X&kiFwvUL>?mF`eCK{R%3n!&6TMi}|~CSyguf;)~Df_@>}1xr@R!X=fLR z88W9WyFmZm|Ky+lmu}h>2+@zeNRvZF3IVfD%sdPzL>Be}jn1W@KNriFc%w(SCX>Jn2nMG&6vwGgsmCy^f6MQ7WXKG+z8pi0YbS zy*S9mlc!i^m8;GfYGO@2xe?B_bCHnv;`w8G7A5Te2s6Lw{QpqD5c_D%d6kddsp^}m z$&~?i*a!h%0$|^D2k(mIF{zPI%QotB9>mbu@aZj*v>L_}UB0BLeVEMj2`KmYTFR$d z!u4{!GhJwAb{C*(9SMOpqY3%IF5n+j`foG)|6&IS9HLAGPCyr?9~CJ=$dq9xN!VNm zTezM&YIifw>f&luNH zJ_y^Vc6e;=S7Olou+Qtz;8Oza&v1K~9IX61va)M{kTDY23q7##%X87*sx_iHaS$vAoV-fCzt%Cdrw*V`w4fg_uzYyX zeZ=e@j$bv0MWc|i5)gLhCy^0B1+j9Cq<>3c{xxd+`%)nBNf(N|PWetOyg@}36C@BY z5kf$UfHQ+6roH{tKzINl^P0{HLG4|GbZ9xxTr*OTIUw*}lhnJHCMD~Uh!P}73jwzX z8qoYO69UMiLwpqy0JBk|zg}q+|L@x_u8Qi%Uc8)ylsu?9_B_Zt1{2JXcJ@2#0;^X` zhmN~dkE-hCNj7G!a*=L%zLun<`B;8QL%MxTiTpi}r%`A0>(FuXP7Pb0w%@BT^_*^d zwxjf|d^bw4WzIT}+Qw>{(5#h>G8(%K2ewm1vbz=b{ydhQ?&BD0Vom8$>K~{21rLhV z)hMI-J&e`}W=~&6>#t>-@pw zg1H=N1(iyJtk;32uJk!X-$hw#k7^g68Hq0xwg}D3HFJckA`51j3r_iqw+Nb9-Cfxt zw(Kf%CH&D(n!N;?x69b99g;YWNJQ#g6vws#mloL?kjxCjqh7;4QVqL>sLAyMk!>{c z<3ES*-!0_Nv*h2$d?^)T5Qid=CbmSu8!250?>Hj!wj_%Q4VqFXjr=fyxAF>CN`}7Y zEchhOONC}iZyq$Y;<1b^ID5xQ()MtNx~(x2l1hE6F<GTjIBMjj#1!s(Ds)02j2JVV-_I?Lu2*0zqZNMI_D z6{wY{HwEQReg=O2Q7otsyc^pElRMf*R!8ie%BmZTRd;e`_IeumZ?+iW2l!W6!pkXE z{}l~>o7{hOxS$NcP@d2gY)4ZgTY(k+s%@6=1`3m^#e`ZUptjus0`Hh9sO=h!i?2GA zZcGW*pegkGE|iSo5fiXDPHOGV%56NQo~I_*)wORp0-sv0i7|nA0J?{Kuyv6zhSr#u`+pBXv0V%%^q0`F)|0d{ZuN zxpx8QMPF{V=IJM$2(6nqc(wQyyma}xW$HDyGzI%%#f%u(Z(7!}8A<&T^nc!O1+4U? zWJE%>^6LzmLVsaP5&>e4wBLHq@OKL#!cL;P^PcQSjDz~OhMb*RJkk{UxBVy1?-R(q>*qMc-5~hJZ^+vADb}5M@}PgK5Dd_9K=`CVh|o*<=2;1 znL)lkrDibFfTKdXs$%g5j+X08>m`gPaMbWTn>%J{R&1lBTZ*FmFCx^Atw`@n4JrK?fSgiO z!D!q-3$gwL!0IDSiclik#&<~W&=nkh`Qa6G9*5M-jKSDW%LxWHNyNT>V50D9ucDtp z;XF1`GNC|ZO@sqXZe}7h)ruhKeGL{>m8ueDIhAIR0PwRc(c%p6SXDBjM4{xiX{>)M zXv1rxNy%(u^Rg_)*vbws@g!*rUA~&@!6uCc*rCdnM&?h%BWDy1W6%~eLd?>iZOb(d zcoig4h~t7~I`{R;7r5lagS_5f*eZaESiseP@$pd`e_ARdE`aYaNkfwB|KeV7N4Jg( zd`)c~kr-Y(@Jh3-^2gT^37bT=E^I z^9UDR?r;~o-cX_Pt$XBk1Rt3TA-0!b_PB(^#LKh*cMzcXPN5)zi z*q|=35ifHtS7?~9n-HRz>(cHoaMje)A8GO2wm9AhwEf@-L<-vdAv)V1i{4Clm|hB) zY9>7|qowV?>>SxtVs2`8b-&hx+mQyny*;clJ!P~2GU@ED11xra%@F?5DrEu%`It6o z&2X-qwC1Av&EndF;iKz*1UBH^K$cDA9 zZuM`di}o6j2sf%=MfrETY%jBAc`dIR>%eh6nVb7v!D&MZ{FRg8fvrM?VI(#AD<6#{919OF z^PoB`Ml*o~+}8?P>HCXl@l(wpvNT1$K%{~V9~%qY0i0-J!Qqy+Sd;p}gKL^yCNlG} z;*t0DZi%pEEk2a;R9~+G=s&Y~bC{T>7I31pS_my=B6fCvbAaD2Myoz&eHmwyz`Sy_ zR~(cH1!)EiMz?W^J3`GT-tAYDD{~~{AX!(*%~?O${iN=!F=^1gMKT#_z`V)v%h|luQ)JYzYeawQ5nKsg?Z^~3;CMcs7Aa6LUp?zh}LH({NX!}xd8pj1C zn%+CD%)!GaZBf1JA7BhTeSV(&wdXELFiHTYotkT)ZF*^PlwE8ebs0-bLU@(mncDAzpIs=8DX z14545smJeM_1kX<4sti(wJAu~L0*XDeWdB{@P>gy^?{b~QfDgj)3%v~sjQzn2&S)b z@y4x$XZFzES3g>W#C%y)O)_qIO7M zZ@d5QI8VlX8Eg#>nM9rRH3qKun8moDXj43r6Cu^>Rq3x3-+d`)WYI%UC3McP0#ll( zZ(vTWzvfH#wM@4YJ9sOqFv0p|dncu;yXtpr8O-j>c;w$6PKn@>w^dmn@yA!%3?T>p z+#loseQSCp&m}|D)VHubfHb}k{p&fvzFL{-m* zUS{t|#vGM@)Z;+~@Roe-`sT9LYMi2*&iO4T{h_|m(lP97ixNwj%oxHopMdXADe6h4 zg3o54DALIxbOCP)+NIf4m?I4Eub)7YvGjk$`+tGuivVp)RgwgxQa(xo{NqHZczU}l z5GJA{^g^g+8NVt~lKKJ>!bF1diG{H>RME|K={aL;1|#`iJhZ@7j#p0QuOK3^G3I8*%4eGMt?<5t%&Vz{&%;uw4X>*g?98E4G#ciPj8tEBktUz+TW)IfX2az)L z005Jbh$2dHr*r*C?iN{cJGs41C#8yjx)FZ$G((DcQ^gX`kRif>?vYJehf!d`OFATZ zuoEdvl>_f*pzSN;56a!QU?`URf8@$IFXeT8>9PLGMEz;*lLH)nyH+fq!+VMgdnII- z;=^k39^cL7uBmyYY*Pb>Vkwx zN7L29`>FK#@sj(tOE+c(3=)wb!YGr!mYL5<1PmK>Zst3$$W+7qy-84Asw=pMjD3t{dDqDY^|hw^m#?c)def(38TVcL(bUi@%Rc+td5iA z6l=HS5zU|2OYrD?+&@y}KT$Wd_i(T(?Dj*hElsI)!@~i=>2N7Qsz_Px$m_A)Y#rw= zq?0y42Hu5iAB3%ugt161@aF)exaQ^-C-hTrzHCFh5`y07;GcYE@J3;8E4hEE7MeR9 zCyHNNv^6jHUH0zLsu@H8GU42Nuy+ z?7sk2+Uy*OPyCfr{Lfeep0+@eZN>37@N)TE7;2!dz`8#;-|2S2LZ?A1FG$HOAcpXto;WayCnbs2v=pFdN-Y}#Q$>vhZ1S3V z?bq<}5Wj6VD&;b)Mg(=`V_4Ok%8h+|AL;ehgr}DJ6{ywr+qRq$^ks%@k^s@!A4EEk z<(SA+Dyeh8idcJBVXwrQjMb>H9qn+*O`)+F)^qK4r^Ee~*_Iic=WAVqw!4oV)0)1f zCLhsX;nq?3pxAR;)5fHo$7|?Ag8GL@t7ZI?7@2ootJdt&E(=20?`DANXM)}gdnwxQm%wPcZx&)~o3{bcHV8*~GdfMuqm{nA z-0!Jg@2gf&wA)<8qD!}O@tj$z$SBP#AD8q`2K+y0s{&s!{Ek@{s(uispN~P=ASAYh z^inKZ4%fbz-^(UiGJuB_Gl=^)0k3dn91T}`ZP02Pu99tn;uZ%Sok))f^QyqK^ ziVLpOTO(?8LF?z^{ln=AUBHGcg@QCkvlZ&{JycU(Y5^N{)~okS~s5`YLJ_8j{ zHZD{#?K(eng_i#Szy1S3&3lJ!+^7)CYf!IWoSQg=Kcm_ff^FK<)tf3p=L9x<0V)4q z3w!^`ZPNRH3`GL*6?Q94%%IB$U)=j)Ye-_d5oc860xKk=%CI5GI%QJER5PK-Got0B zD_*JB?=#@d48ZN>>X*NM&)h|=v{EDZY+vrck~EH>DKsh@5Th&@!xS-^@Hs;$lMvM#oCgh`C>2Y=}N*!bC}y?YXy?w&>$QpzNc0e4i=@(W zFCp0YfV}=&M^p`kj<}|5%C>4KS5DRv#tzannvbkC#)2IEV_IJZsAxUZCg3O0D;r3_ zX{3t8)p+qvq)ZYdOhM9vSCf!l>7;YGDX2%!(|NtEiN!Ow97AbT{e)d9dP~CGiI#Ae znE`&k9{$WzI!k^L_P3|q{wocC$Gx{acj+%M8ERhi4j_onW>J$lVYa+39K>4{g& zwL1-YMxdC#IoIbb9*I5y0D)gC;|# z_`SQ3$C1VnmZSMX!MLEGZGr@KNv}z`Qxf;;RgpSVzz0P8!X?_b1Ca2v0NMmP>QmXu z_8DK#z|wJSWfg9lEb_3&angPX*qE=IfHWECxE`D~gM5YoG{A!-EGhneV>T+3g#ANZ?eCY+{=g9bhsL45rj);4@cYuEXT$gJpSODq;Rl94eFi4? zU+2r#HGljJh&}^}fY$d3zkCLYkS8jDmG|&(KLZY*NWk7o*=L`U7HGgPzFLny%D!WR lZ|d!?eb9Oi|G%64-?U~Db78tMs_Sdqt+jj*2Kn>-{{we>W)uJb literal 0 HcmV?d00001