From b6462a596a4cefa6c567c2bf43c0cff3625c4cee Mon Sep 17 00:00:00 2001 From: "feixiao2020@sina.com" Date: Mon, 25 May 2020 13:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E8=AF=BB=E4=B8=80=E8=87=B4=E6=80=A7ha?= =?UTF-8?q?sh=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2.png | Bin 0 -> 39008 bytes ReadMe_CN.md | 24 ++++++++++++++++++++++++ consistenthash/consistenthash.go | 23 ++++++++++++++++++++--- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 2.png diff --git a/2.png b/2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4ec03fb7e92fac4ddbd52389bfd0b8324b42af GIT binary patch literal 39008 zcmeFZWn7g(_bx0YB@!Yih%^Y&ARxJwZfVIaf`D{)8FWfYH%M%njWkM0!=_uhyZaqP zpZ{~t@4V;3`}y5pcHH+pvu0+kb*;J9n(hBeUIGV;1nbtVTR2jZqDr@Jp)}mOh1`pQ z41VdoA2N6Ame(yQ(HAOCW9zjzRtbZ#TPtr+NX8$a$B&@CPzgbPOntBQOYk~|L<{oM z6v~hImB@r)t;l65_Jq(Mzx;`~TI%rgF+N6_Mv79Byt@64`nCd|KeDvS3o-4-z8nnn zPaUFu4m?rL60ct4&#cNDJE&DZvlMQNji?YF2(QY#Jib_EP|Z8L5ZH3=-VN&dVc;atCYdELH#gFqtw|6Bk68Th}>K-lg5!$bJ3 zTN$K`)lV9b@Op1yrza63-O8XhHok?*)qvcKK%`NqeBWrPD)hi!;>g`4j9TKzdp{xp&N z+-XcE(VL8%j6RS0Z_8!{hljs>5na+7%`(w$0!JpXLd(-+)$RMr;!`D?n}^k#!N8%Kf~&hR~Kd2y6`U$i6J$Uk?#X6*s*r5L~%uMmV-e zKGH=-0;!gQ2(K5D3zh5N{1Q;-vQ+WXzvY2SExDuLt>fDdF^!Jyu4A-JObWbQEgd)A zPMnr%RIbArIk}oi9Sqaa#A}l+{zq#k3jm zu7gFxdIgAi1tz0b*jX$7z5YfTS$VZ7-S8J4i>b6=`|TP9-MxmoR_(?jvJDB#3zyac z4l?Pi##Ly2Xh6Y`j!!p1w%5>?gTl>j&5sA8V~gs#aA{v9v^g!-`o*n0!d`9%2|mU3 zD&M>I(;`som7KHkyX{CwFqBn}3EisW#OjU>0Z z2B#^^Z72T}Bt97Dk*9(`6D99Pw8)kR#VF$r<0J!fUOk9J)3W78FX}!y94-q`js}@@isKG^svW%Q` z;@WikYVD@_#&Sqj*M6R8(Td`*!~&c@FD}WgMf8yA6cW#f$SJJdbkWgM?GhnKuVTm^ zurD8jsMpn>6v>kBo0jc(BKD(`2&%^vhZp%eo0d_SYc0yLFLGUr&up~D?ynYAN$RAA zX5A>m2EYD-m-FWIvIoJYZ=#><-!HYRyo{n4GGZ8L5F0y0imhInxv)TaZ|bgpPh-UX^kJJv zVxm`Fs#CTpaRs&3UXf^S1}rkK8tUG=Au}YAa6J1(f_%8nL#9YcX}ZQ~f2j|(tUHgy z@2>I3k^KE3tQ>KwffW{F-tsknUo6RjU6NL0FwuiCV@7e*~F<&7c9h)?wPq|?H zJX!wiv(}!imQkqZw=DYPz8HLZR4(%k&va6^x@ybiN!&EdWnx`t>IrHy{Y+T(%PYGf zjpmJyUgG}@PrC~>dfM<|dbY&(*|HGy)4_}kVS>KTiPJw#(uRn8>*k*!ku4{fBag|N zXmKc-9Qe#84xu-iTS{Pe4lj0ls7_T`4L;f7<44-aGIBs33(?cA}L?*d*eAn&@vve+fj#wvwT8?OE_=lrM z1y~2Af;y%Bu9Xh2S2Fotm%s{PTBQeH!c4ACd6FVjf|Vf>D#538#mHlDrrPqCrij;I)jw>N#B*n_JNFdG z{pnJCr!F9v1#zE9o1gR_o^o^(E&J7KTzmFEc+fQhoH|shb}``T5gG5313K6FzShj7 z3(QCRnO$1hxUCYc2g8PXoG+dWGxu`;XbzO{w7B4zCG15c=CMGjBYf0oXMnTG>ft7b zBBPa+w~iZ7AddJ}E*BfQ$>D{Li5J^lbJ0mvWRo#EQI9`lnwPy_-<&-2JJ3)+5O*zq zyb=u=4pBRaRfA|TOPY)q2EX|qmm`%S?aRCy_7%I6ff8xeQa_w4?UjrZ`7%I?31?a) zS|z#tae>Fhpx3N%7uptgTzA?T_Y`wDo~gQnq!KzEuK$-Lf_`|f>>VUnMsKr>v+vgZ zP_Jk^cg&WIsXw>1oAIDxYPKb#reOC=08Eqbp-w= zaQTmG`rpGKaKkSpq)C?yEmD0<9$KbQuWYa8D~vxac{cTBMBpC1T)$WxKZEs`-XSfBp_A*)+ z`QIv7K&o~K|1%28Nhhr9xa)cW#Ca&dHvzPpnL`Tp60g$x_YJRCk|!t|NP9EAD=pN& z8Mbf41iw@vt+XgN{AWq+<{18CE0bQ}+cqJ%1|Gf+TvmK`{(gf%s3+NykU{T%p3EQx zgKwbzGv^@8<1E?|;NSl3j&6rjQh14bwUSxy{&YL9F37N_;_?&Rzxc!Y?+=#LlUdI) zGhDGk2jF((53$Uwe&=nl6O4x7oxMO!GUFEZuG_j;Ej$v`&w&}J(}ltp9Fsk5r#~rF zF*7%w9ooq#1aS@fN3Itq%N(=+)e^ha+zQY2=jELI?76!PX`^7mBSSwpr;xofljlc?W&{#ByC$0tprwBdu)W zOCRGg_FXTJW&KzG)iP=s)8!{tm2po-VQ>1!XIe7Rkfh=IHQ|Hz!qb~09(k7s&}QE1 zQnyf#v7_G+bzUJ*)N%bx+&{LBP=&B+x%hM09UrMW4s5_Y2$2%a__qfg5>K%+uPA2= zrA7QPKRFg}- z$Py6o!>6mZe$b=r34irsVVrn(4EppMj5ipC_;ux$lEU`*z0bxLZi#M zLUpFST?i*`yw~L{@g}w>OV?E~${*M1C3~-T=uDa5q%@hOyG>(t(KC$BYEQT+$s6Um zLH}nz(PAwNNG*aic&T&+konx;5e?rvAJ#tn4(94gdw;8})Jjx<_{O&0v!=MyPC9Ha zuzIdMRnM;-8`ia(kxbIq^GreG8>8_8UnH^1Rs*cN2dt0RSU(RtJlfRg^+vh2OAVS7 z&+W-MU~?kJ1BM7&?jdOx5D=)8<~)A8|3Mr=KV)MQEiNPCdS9RK_{Z7ZrcIO$VeA{F zD3OE=Z@dr53OW)z&N#zFN)$L-bMI-|RPpkXZ~3OdQ&?(=j_Woqhh}a*xF%FA#5PWL zBk(9o3V-rS1uf@fT~Z_dQ;?e8v1bx9{U*{Z)d#I1AHb{>gV zI)b9{O2O)-b@xIVp`NL3N43N{PQ`UG@yEz6mIvwhz?pC)+-OKfh1X?kk}?5mATjIR zJK7Pvezrs*R{lO-Njdi94{dBljrv>6hj84-z&g_LBJ*h`6;`Epix!EnSQ(upLG(+t zA<*0KGAyGxY6bMHbwAIKgg0}G(1KJ)4PJ}h0X+?1Nw-kgb4((`=)BKtP1N<1bR_>F zznd8q!d&y=#qe2D@yRFE_m~1`Ykl~0FFw;dHDxy{Z|~K}Y&1+PAw8TtC+9cWoU)w4 zubY3h#CgGLe_;O);5ecF3!X&&8-8xCft#}zMVm;@Im4az+Qti z_=fb4Yq+`ge-_qj9%DI}6wcVKhsi~|67&aj@Ukas_E;@h^9s)2n)?XeKqZAa>i%&3 z&O{oQ-bR|3XRUGHMIZu`){;&TS+T^p@7~hYE+IwnKhPybGDo~1&8`#lG#VU86T7O~ zO@D7)UcxITLL!JfYC3K)pxg^hdRemZqmWD0ZKWf*cE&cQu#zf8f|ym;jC@GjdVx&! z$f)x#{2|04*@3lZm!nr(0Z%ihE<@9Wdy2GVsQLE>3s>+H+P+Uj@o^t_Z{77MwLRL1 zipl>zz_1v|(mi^3f;bq~DeM6e@E+LBkAuKsb=0GFZu6{M{q_Vuu#Ib^m#=X@-uB3; z*jcUp#e`}{H(EF)e0I%;^faCo3bKA7Q(u7PofQE*oSK;-pSfI2{yUwmqXI7{&>A*Yv z4c(`T^VZjusu zNEAW@pTC4;rvsuUrloc(wQwF<{ln5M`fxDjbj9iQ!ggPD_REW;7$)bsYSuBm(3<^K zRp+(!S4#7B$3R^`L`gA@wm%ZlBiV2ZlcJ zH{Js4S0(X0xEuv^%GeHT6|V$s!;YP+;-`Q3{5E^);&;7H!rpWY(}|pTP~1z1k%Rso zh_Ye1&QHJ?j)S`Z$uP3FeYti1yS3jz!vkzucfx7M7J!_yH661#{uI}vl=E_hL)U2m z$5cLgENSJL@iZWG;L6jlYWjouMQ;WxgSLOBQ;V>Q7`A}qQKl$2O+7x@KH01TJVpU^ z3FZAWK-_6IcpNCDKKfb{sru)5Hb)JV4 z@A7Eorq0^NC3#Tyk>dhmR)ldh zYJ~>{-y)dZ8%3cYMJro}9tja>MppYw2o4d;aQ(FJ)=?U<$6)OY8=gw5vX zg}ci$!99D&?N3QVXILQR1Or%C!$DwCSPIh>TPxf)Zc{uk#K=r%vrl zmN2Ednz8@In>HIfTj!hgtQx!1EZxr!Hqna+arU{_%DW>?nrKQB7m)c1s)_X*r zyuVv*3!@X<;dwkWwPER_Nxnz%E*>*cJd1mWD1pR6MO($*IyHEI84UVKdGeL$uV<{o zmg2)yDMnmf%|9$1HtT8;i;~GE#G&HP)V z;Emz*xhwnTOoT0Un`dK4X89l11M0L833Q10uVJ53g&&6~HtMlPtk zYDLUTO{}E?^m>FHm~s!p4tR%}&L$7H46(;)DbIw1(ICpzoPLf~;(h4pt~ar626n${ zrV8?=v(uH&8V}U!2U-<8L0C)EX3u=j!6ZuakK7GEdq+nrpTs}VDU%GhIHLNBo5Y(u zrVxe~#-;L6G3c5aClVK_Fu)P6UZIn!Qbt2#4s-L7mW~`djmIMHpO|o)c0V$ou5&+F z9jrq>8)+3%)7H*UE_;EMHFJ4!7Q+gCtZ8A@=+jE>DG){O`0m|8!2PF8syyan10y3} z*E!RYt_gEC)}UZ1gxtcstekAv1F7sx+Q>2N({Oh?yR!83^qQIpgKw!lO0GIOI{NLn z44tu@Mni?rLhR_K zA)19{{J!hMhYzQxr|0Kx^~IG%MXz=(jE$c#t0XoVD=K~|UzE>KbytWY8hp*vrHb_6 z(W9pO*8yhOqMa|@=OjiJI$91{NN7+{Sw%%mRFnqxGPw^*fwqRK>fq$0`(kG-m-KU~ z^YCzjdnqgS3wHEINs;(Xr z6SKs_O?>};d0E*VT-`W)*i*w`upwvh^0>vt#j<5T;FX7p1wnvWRp>idS?&IB&FQ^s7VCc-nN@EZQ7Sj&iVs>+;pr)ttP_%QHiR zgBtddZ>s`Ntp2PPcTk8=+2rnma*&DiLnQb0k>cp+=-Jt~^~KM5cq-s6C)R+=nj?MLB`f`S=M$XLreJ3C29Nvo?So*x<# z5)u#y1RM@$T4CT95HM3#<>KNpP`$mfv0*PbW@=)Bu={y4gnK$Vl+Nm!($bx!UP6wW z2{igLGJ(v5v%fkz^78W5wziUgW!Y0nh>Pd%zKVz<3wT|F2Lhj4@0&+UQ=iplZY#M8 zE(PKD8g(bEY;G3h=7!7flE!zmw~vjFbLzLlV>!6F4KHe*K7CrM!CT@)`A5Heb92Lf z^4s}EN+x*;=_mu^T+d?T+}+z-TU$fFeY?c@9nRnr8lor?u&Nq^%a3u0SW&Ns>ms@y z=A~Po6e-E1udfe`On9W|McY{ux!B(BLI-&9^YMvmpzOL0qmhcKzk226;!yOrOA75P zy_d#xNMAV#_&$C5Bqt}Q^f~J*ZDJJss$+F9I5_welXkwN34u^rD`@ytY4vxQIdb~? zVCyybg`ji}*hgYw;=;nhkjXMhJQ$HeWDNa#hAlhw9_dF~cj@?DJz6mXiIK0BOjS`O z`j=K^IA-dck&TVbn>Q)N#eG%Vd{|gmadB}zK0cRhk6BV>oQ>|_;NYmWLhxIZN8jwc z{G;eJ-rkgn!^0BNO@=paB|pEDj*L_7#)1b2pAiYgVj{aR3P@?n3gY78Mvz$lob|r8 zG)X}|zL$K3H3^XzMsMGy)z{Ypo01Fttrlu(VG)fL^z4KL`BdS(rDa9*fRKqPr*AX% zwNnd|4hmIZ)*#^UvAy^LUO;WYJk%FE16K)NlarG>A+912S4l1{(p-YDfv?Y)bTPno z!7DN~jf&=AY^>xt4jmm`$YVjx|J6ryX8piLx{$byjxHxyQBe^=V%ziW@1umjm;1s7 z#>*J6EiVRgl!4ozrKQc<4k|Yt9vT?f-`@`k4ehz?#aP}0j%J*Y7EIH3&9uK$#Kg7K zEeF#jQ*xzOFl^jN5_E-w=Hc+6TAYfy%D=9_dRFwU{3kD=>4z;uYii!8!ZN&n`$o%5 zrOY_ws0x17{`&Ma<0uG#eWJsoljP4)^)y&hdJ>-NuWF2iSlpJ%JO8V)MDjX515>Mm z%CWR|Ev>DzA;5%W+bUZYffsEHnU@z!m_*iG9bIfw3-)fVTB0o1xG@v#7cX8&Zj%Yd zAywGi7;-bzMw^!^3{(<;(VW2-_~o zIyySq+n2*84Cm+PC8f&B%b6Q;`$id4dJ_4wxzuNumXS92{I+Twsr$$3`J*DrA(DAPhM)yri)c{;C37Xk?T( z7gRzb0J=Cb@)~puK%+hC=|#(8Nl8gaNJw8_U*z}pe8OI^An?~mZR=nAXrrFnuc}B% z{nP!n{X-uvsGc5{?ilczK-YoB1HC_QSv*)9mMO!zb0=eB9%Yn11(%G^;92awNW9|-AI|&KjgX)d7 zwZ;ggP8j{)*>1~#bJLu~#Sw8&;oiN=&CNX~U>x%CBeHu=GD1IV+>D@?plfI@dK1pj zvAk?7CWiLcS~2h7`WiqjHqR9>V7I16M>TYH9~+w$ z;h;-f-@biYyEgK#z`VPABJGxM-aM9n_WXH{pDq--rAFhRp9Dso(TOecbrVDWtKdPhR-?RUG`I5-e}eTr&oh8G+-V*9zdxtp7tcOEW9 zq9JSc^hG=6%NtsJFlhMu+!K9$%7vH+&Zu6gNP0TD)3dX+)m1_mSf;eJG=RO=;72+V zxq_^T)tTk^?c29EuQcO;2D1P4q#vI!VEWgK-oa3ov@kVQHUprgUZ@Lna+0&p#x!}5V9kd9Fo0iX z8oiXZXk|%-k2B>Ky<$RdPTSXjV7@7sZX&rVOB zV97biRjH{z=$5)ya}|mH&h1y`%1TO1UM_>H;Ly;c{e2a6^>HU^5lVPj8L+&lowJ9m zDXQ;EhOrwP8wIA!y#97&8y8QDbaen9*VNPu2naZ@yw=y%)m5-G@6EaikS6>3^j0ei z3qy_KRsUM~>?{Znfp^7OSP1vJ7f7^lUR+$6pPvtd1$P&Y(xuSG!3yP#jOcN>vGs1S zK{WUa=oKs2LJy6d3G=(L;!zh5?wvb$9Hq(-TpXNOm*~&4Ifl-)e~k(6t(jRqK=G0i zo0HuId7d>}4Gj$miPn0d69Y-K=;-iQqYNnu3A}m_(^FGFNMI@7ILKd`boBJT|FPSo zuC?JpOEa@aj~<;LwJeqziI}>`V1xvJu>dlHz`)GmXKpTI5C+2)S34mX_Ak z2=tCU7s;a7B3H|#Z z+4A0HzX3vY8pHsz8x=n>0$Sa9h*Ns4As}MP>1b*a_4M@A(MiPFvmyKwMAKxFzSYx{ zyjy~$BaXf7<8zx--DS23^D#vy3DElMs249=KGDS7oSA{4_{&zySh*=!PFEKffI$&X zn}>&CkC<4O7z}c~)P_nl+I)O{on6=@Zsw*aECJwRVPPS_#o#{nC}nN!YkN5{Wr*a1 zme3gN2X=`fO^%MfKgkV^xf6E1desUdItaEi7CQ zu%^CV7-vXU$a)s{-phWA$VFsLRo-}%;{5y|HON=b^JZ)?{Tk)ypjSKuk()h4;(Y$R+~%Dm86qH72)PRE<%Wu0i7(7R z0)S5d(WRuTxP$}<=-b=d&C0$P+bp!-U?S6oq^1_BlCPYcL1-CXFTkv_3 zDwtbDsK3Ae<>h5n6<_?*Va3<4MduJejEhL=zCEyM4w z+$aPE&Vz>!-c3V|q3L=dMHVIE`x3dhDlSq|1Ic}NUW#;ntYLL6?D9rN zq9o;P`EocsIx=#k);bEQ^D69D^n|I$g&AwHl%0w+IDT7fK3Md@<$X;V85>A*C za5cc;6VXu9(`RR7WB@JJ5WAN-kQL2}+t$?iI#YlewT!UTuC%?%Gq;{0w+BxXTH4UPA;CyG5`v^NuDsNv$^=%}u$s=@ym zjEIMgZDwWzq2z~1dQdlI1=R^1J_^NH{4C7y#^2tKL+k(*2LMG?oX};zD#rrIG zNrr%cmv4)+eIvhmA~E-w1)FbdY-I3x-GEKW$F{b%A3uJyw21RmXDhyX)jKc%_VG>e z-w88IIcbPwWTgC^iF!dupw?(+VL{i1MCEg1v<7s5jsl|rV*;`P69T@ixR^cs$>4KW z?y{_keJb3ivB;?t2 zE9V_)@F`L#ktp3pOWrXm(|Dr@OFdkZ$uUrOBsLu`faT->mgXJ%Ak*9atS}RU=b@t5 z%MDE-A^e-)KcVp=E&4I*eh0M@5HeN#;1fPDN2N<(2dxD++tI4YZ~Af#!a29Jt(BFO z5MyJxI+7J;8MT5LBpn@6{-{{XmzN&4EW%}$lU4RkPG1dfOAgw!{!HB=O)m*a7H~#9pUjNW zWeiPk<%Ik!ZsSPW z*b;70NPRQWghHW;ij=VRBN;okVlpN#ug#4O^AG!}fQn6aVj(#@+@OXLMQhZzDip|Y z^HebDjFlKG%IN5*2`7bzzoJ^+dSq;77HKzCq=&NUBmC2C_joQeuRV8lEzxmGLsPQ~ zj1TNu*Eks>a9Cm)ku`aWFm8o6GGSq86WsDdZJ<@wf#eb3tqPajlyl2K^Kwj&5$?F> z&Cn^3P=uOIUY>lE^A_m$ewJA;koRs;5Y3gg)?*p-N#7LLkL7v7O^zS4sKkp_=`9LX6og0K{o6Jrs2HPuqyOO2@48y7@%oXO&_B;G zkg)}M1%v0orR$XQpSG_B{o6E)|8?6l;h?BI-LB!LZE#KR0TOBBw#0QATC5Q$aIUr* z55_kKnbbD^El>uTRP$+V78D&m(EkK#I6;l)qJMU%==g7tuVjRLB12@-HeTLKrXe;w{F%mJw0kl^TkS7 z7t6yg@^`yKcKZ^~JIcJHZ6s& zGg2U1lHCQ;f58o#(HSIz{>RH8E@C_EX z6kkqS&LduDo=pC#ivm}Dvm#LMx;q7VbRZ*3_M+K$;x&?L^1-k<(^0g3NAP_+RjlPk zkfJ-L^*cncRK4I26!N?v?eR_)`yg=6r)s>aQD%Smiq8NhvwEADRfAwNlw;+WK|(Re z@z}LwsA1aeuycnQ)-KN`Y_plsIrc8JvCdm8TH8RNx?dw0-*g<lK^_~U zlk}gJ@cqFWc^LG%4qYO8&Xm)fV%m;WvP9 zo?9NvX5gF3TIlIH$nWhQUYEa5gVf_s;p%g3$6TCqr$Xv@@ldBkMhcbJ5_zZhib`KV zTBGAJdEUKDv`a-Ta}zC5eT)xdke|_b%x-lqNL+sqeD6p2ut&6$>%2&_zL@bI#YGga zn&415m2lA(yZP1xlsGFm(bc3BB#_lke#;-hVxax?v6IW*!tzg3(g!!g2VOqX`c0<= z$%BMR1|Q~e6$|{V{r089Sf99bo;ScTH-|6S6(}uV;vR*nUHONak&_q?`^`d^{7ZZE zn6nN+RiW>tGA11tnSJDAK zS(%@KQ7^x-W~s2^Kb2|ORk)ggB<8YDgLq#J#nw@||DGpVg>5%Se8w)Gk z3yzhG{SCiaw1G^;-~MrSRe?65&}xij$Yc=IOC(>!{2Ei*8RwH`c!u1i&!HN1kU4#B zC@8Wmfx2IIkus0}p+(dAMbKDGr4+>;C~)q7EVoJI!6ocAzR*n6TSfC+y{RJWFt0Wo zr-s_*am7}{kA@%S#B2HAN~i=@8N5|H%Kd6U%J%nQMU=dUq-t1HZuh#lF{+&phH=Nm z7(_#joX|A`8s)fvdurD8ZI@@^eYR=T+l+k4nICF|Qw)1;#PeoP(l<}3jp1_ou? zUveadB$c|M>hsl7dLOmy%K>b+T2T-v;iP^_Hr=J4*CBOe?I_;qn@KhmAAZ)b(qs2E zxmTLQ)cU~hbT!Me@@dOGv*H?#?|7M;mShrMM}0P`8Z-YhPu{?s2b@lr^sBFahnwdu zPIzb0n(m9^I%EG*1F6b=I-)*V6ZC<~*_>%nGF_qN*$WiSbo(;LUjQiV+A)n6-kfA` zb8Z;R7u2`!2SA3_)bFli5sE$YexfRF@Ae+L#*yjA!qdyMC|_XR@iE~Lkvbo+D6cfX zY0Ot0lGU(C-j$n?`&!GF(Y-KT>h;T&~&F`DUxvk~^LMNf={ zEI8DQB}NB#OTF2}-gfK(Avh}G&LCT#pdd9Dr#w=*A3UK}{XM;sPK$qxI#j6OX z8Qn*w-FVLjcA3=456>)COkiieSP@>Io*ujndM*yCtd~?FzH@F3=gL=Abb2SLIHQ;~ zD)zy8iw&2zuw7-=?6Rl5MHJP9D}|aawMdo24o5?E7e5mf!R)r<17)dzEe@UVw%js0 zG5H-;ys7>!IVv^lF*5R4;pgKnr@C4HClqNq+55E~N@LhU=^9HnM2y zv4t3Ns9O487Zj$O^W(z;As<*C@zpg|cye_dE`GZ1X$b!(GQ3&+3MaHiypJW$3!eYj z{Cl`8mC$zk>zRI%dR3$%1jB@X0;#xLs=*PdB7p{RKBPg7*?r8q?O5Lsd)aD2$5-Ns zspes|?dzU5N4cW)(yvatxY`jmRen0W>&KUU`7z!nZ=Ae_(8;v|$(NTzww^k!*-Z5BJzPjL|Q0%BSfYoV8f9&lZor-)Wol3p{w z!&4h~l6@60q-%Y9HIPUYM$1q`YMqiePTV^*N7YM{|B3%T=@eS~YW1Qe2y4`S%scub zj7S?vcRXOuOb+UnrZZ|--(D7)_SQ3wEhIFdn_HlaWfygV}lI7*4 z=ms}G4(x=P+HDj9PKp$m%Ohg~wIVylA?=33$+kIdc{rB&8>;8=_#CrcK1W}J7E7_d zG1AhMXTIztx2MGnXBkCDrdx7DI1|Crd7M8ufH*-^r7@ z&VxwsdX*YyB*v{S3{Cr=5o1W|4!>_deRP}gGkZceV?#0dw~ZvvjoUieROJJuC+V1{ zqL{`y{@f8GMMI9l&N@JT9$@-e2OsY4zs9m-E5bAV!XzNnjMp2j_*P}7QG$20uX9?( z8rMerf3% zXjLd(BPIHI^}{J)UCq_<`tJzZq*ka%1${ z8qt@)w3Ia=(xS?K*uk>)jm-EPc1ERe z3=seT@Nna_{&4}jGLm^$?F=`}D}>kBNE1W_k6v+SOp*9(lt+1sxzaz{6ykn0!uR@i zm6^sNw(J`MjFb6tHdK&u5wkmWzx?F_72#3Zy zEoDpaZ}$NZFZ9S5Q*}E=FJpPfZJ#I|49h=Sw!$E=>2-W@Ymo(KkoKdVxkn^ z+XE*D>`8enF*{x70&hRnJ!ki`S&~uHUftAbtzgkAR%b2AG2f9uwF8ygZ1%iw@K+_ED3WUu?<7^)+)$T}~YVHs` z_+-o}^7I`cPn5+6B*h_S{#Q~%^-?;Z(mL2nKH5v|m!d=cVbxlqtcq+2ZQVKd+z9d* zPIgiH$x||34YRuswIEu-LypHI{Ufoi=$bWlIRz}H>2c@8vmf5W=BF-m-xGOFZj5Yt z+$-1dY^r>ou9IEs*zxGm!z(GI5_L5*2d zy-HZ{kKiXMsu&{#pO7%~O26N#ojL8gRDzxkdJ5~q`YzX$J9IW3%BrcdOw*K}&n>>I zfT9G3YyP@Rh|fpHSxc4DuLP;~VjRrlr8xsfbuZbn-lLVlD^iSe2gu~elblZdaO#7( z#US4)*ft8f_Ji9=DwBhM1mG7nHh+FNN@ z+=95bUSJA1I2PY3ZWP0sN0&1y>-zOfgYsEIz@XUE>nZx?FwnoQI& z6(^qy!0PdQa(5mz4h(88Zp6dzLABm|wax1!cxWg?&YK8{EZa+MQH97}@eL^PHK$2f zTO$XnAEs0QZyQ6AQ1*xh(ese@GeFaMx zXE>nml)xGV?LH4ep8Q-79sap?TA0C#=(#`hpU;EHn9t*MB8uJ?!4+fE z+!vyASK6n4($n&;be-J)`Vx_hKBftyaWfD5%&m4C!|vo59Qw}hesk|Dsx*~O=*L<) z30NN1^rWz5(^}*c+?wJvyI+rE?##FN;j_5;g{S2l2yx*mbviJMBY9dIS)(iZsPje& zSM8ljD1TQKwfm^r+E?dMbEl_`5hp)N<^)QjDct;>dQcw4o$cH?Md8vqmDbiOj}-ls z>+Eh`_4Z(CY+bQGa#=9ku3AQ6e7V7DFG8lGP!yvRCsf$bU--6-{&xUg_nf26J3kRx zyJ0@o-5uA^_EASIP9lZJcyhU>&qk90Pj1gOJx6H8{AP5&jUa1=<&iPj9u#u22dQ?< zSo}SN_jp@5hH>qnhW^gvOs(q2>`j!5VFZ8}u0XoO)$ zdd3^1RK!eLpe@JQ0wEG9_LgS}IDdMi#%F(h?!A`LQpYJ753oL+Z(LpH8%N0aiF+;T z*QPo*r~SNI5DgBSETKm54re&1WgQKh#u$0sa0n=u2eDyT4#$-R;3y@B(+|#b{J^2& z_GIIy_9S0-3n#;V^b1q}Hyad3A8V!QbHnTa4(j^+>L1p~NBAvZjsBZY z`oC~hd!p?BMJP$5|K*+jHF3>p0p3Ui0P6p+T~<PmBby3G8TISrVd!)Q7wR0n{+ZL^Cn8#-J@+V}1ae z<@=k3_9#Hcc6D?-eez_a#<}#aQwMW}3V4C+*B=(1i<>*V+yCv5m`FgCftXlFni#XQ z^TRp$)bTzj?t7ha2O=h0v?wPl7i7PZd8r1g5 zuvChYOJ5G;Q0{4Sc%yP|by={n2G%O~;KuP*nco12?EPP;qm>7^n&H@$raj*uZH zI2rxb3Uy(#vWoSfqU>|I{1_*2nX2r4Z>vNK>7(8Qt3cPlF^1NQAf-AXwi=RwJs?NWF1b}Og^ISDbz#Sf+P zr?4D+Xg@VIrR&^3T58m$9oCK3_?haXO-b6Px1R@j2%i!1&-3o0iA5MkbsC!sc0@Cu zl?tD6q80j){;G6XAEAsfv$PCd3;23@dpcdxxW($|;zDbH?bAyLSkq&e*Nox47$ zb{-z>y1zk2TO3qs(!PGKal))Avpo~Yf~Y+&N`b^drq~0ce>?BBLOOUF9<4<%T1H{2 z9_FH|JQN`Epujh z`5UX63SKgwJ^14a=j>U;mRRmjl{4|DPtz&;iaah{HuCZi)-)WTf;WR2q|H{C5O~>~ zX;%=Eh-mk$-2%3fvltq- z@QY04B_nlCnM!OBWrYbH()tSy>Lhvd!w)Z{6IG$AqY*CA zRO$z;V-FX?2_|wOt6zbFDedLH&QkFM1sD`5MqVF_+wh~@u@IaQ)a=h)5Ay>w&7bq~ ze%n=V&f82YDCiy&z{1Af+ucnoZxj!}i>tijLB$zk{q{Dd3lW5~q#IB79H zT9%#xO$L7qYqIp%6D2guH9oV(Gs2bh6%;{jL5;Qf6z$yX=bt2Ecaiz-pW}!7y1E;^ zOXLWTvbS{xpLBjgrz=X2Y9M;=I6eTyurFlXeM80TIvr>!<+OX|BtV9GZ1sr2@o0WL-HY96Cb!6^xhBC4)p z#=YRQ>bEi{_#+P_oE3Gx&&1X2nmDTKr!XHWW`{=f@TW+V5Sw^Ut`D~7QjrFik316- zDOWVqxYHBQFTV`AkZipBDNvqd7~mz(>M5&iR^wa4KjwrRg$WdXh=qHqF^dfmv75~n zUP|MNMP0v|iS4I&5bh%%mYyCE`qPZD zU$ko{o3!ltC8E4Acis%R&Tv}gJ`^{nt6#=4!OQf+p6b<|&^UuKFL_7Lgw~ozCT!8d znxCwj9{L)VSw(g6W)L(cTT42RlLVO)T%4#U&m?*heLt1H*1lJKorF?PJr_TZAf!oo z-$zj?OUroEP|x08Jl5Lw#?d^<`)>4S55*UEWIpN(c5(L+lAzKe zp>?0+)oA@Y!h@U#zR9aB2=`-#KO@osBZ?re9Qx8E?-7|1A0XH|%`|la+69He@c)Om zua2s^`SunB0TC1sQ9=;ul%mpd5_HEX9X-4`9uVG*^gA{S@VlW2vFC^YPK z?n7xt;jP$$fdg-I-J=OF^TFct)E$wUE_(6wt!?fPG9ad>;FX@4?eo?pi!euy^R=17 zi%Btd&>Z?vBWPp=lqhP;sQ6$giANpx4|1^N#lGcZrAQm1-3 z)wU8m#SSR)&DQ}#rf=VD0m21cba4@2Pqe_(Ia^xdC}{+jI1A#B=%avMTEK+~__7Y4 zoO~UN49RBjBKyaKQ>NvQ>=)W}nanpv3--#AaM{~bS`EPS_?22a`_3Xe+WB>*&R%%d z6*ueJ=__%1`uDO@#!fxNT!SXIljX6QSC?yIlpT-i+PS`u%hJr3JtbQp8J3%>HS)=P zfP-z7?dos+S(mEZ)+9o+=7T=%K+B!NeR%PVCTsr7!V0}|y?UFKZ;`W&4zSfEeU0Af zc5e@1m&**{#qbsOZm)!3z6XV-(P|j3kH72VA~+MBgZ4k|FC}UlHG`LAyMx}6gYFB1 zHRl2;?rY~VdA&7ftz??lAl!|CLXE*ov6a`ERI(~G6z7B!q-+RguHFY`b%lI^g$t=UI6KeOXLC(cu2gkjFdM!#&j|QuEq&t4 zP$<(#4E3(^+r1%ePddhK=HA{{wGsnYr(W}edvD`urpcl9aUaH0HTh7OuA~*18DFmW ziAzXy>r`R7qu~+%jw972{YL>zZ(r)qbV8+5!)P;34~XenD;c)(^ppv1XdJdG>TI#+ zRdmRmbPMP0HU9jDT@%x_r3y1+=4$<$A`{+V`Hx44|znl6ZO{y?|=$YH^A5Tt( zw3%KE`OV_Cr z`<71eB@I<}z$n^pVtq1!E6sZ#uA(AsMGQ42*7M{FnNigR4eL0_NKe;m7tGI5&NP_D z#W{TY$vp~2KNRinLmh?YNZ2%)B~iI{&b4k(+G$nW`_!9-Y%*}j4(hYpelmyPaH@2z zxXh-HGh#OUciu5A7?UH0jrNA={Tnp{Y|Knd&bvO!nZhYgcYU_DUZJ;CbFgMck*RvL z6iOxgUQX(x7^f4ixF}SUV{IkgeioD3!bsdHOTPV#@Bv(WBc^hiw9g(pAz!U7d7tvE zPr4AYxVf<*8+}}1*839O3yCOkeT=_48F;lgTqPxHpeNW{pZ&JQ#&ug#e4Q@sPp^ou zaQW-Z21P-a%h(69|ERKjPNxRDX4$5PT`1WmJFA4F&k5;a9Nad*(dOl5a+~Tmf{Etm zTwIWBUe@a13c8a-y_*c2ygiX*e1VvXtG?%E5+!y$UZ*MjYkQ`)Qa=H2H++OyZ@A|u ztYOLb$!hcm8IV1pBAAcPwW+_MydgMd4V!xmrAIHMSlJEt$CS^WoQ(0WER{PA=>7H$ zI0YvRn2b(l^4=O+T8Po7wMMw-1(!aC2g;2OSx0(suA|;*psRBCgy8ym&1~{s@)xFj zL!JUO?r%BRrCZLQKO+Q@7YXFsM`2l`=pu2`-aZ_!BWixAqNRIW@b4v z*)Gn7%V|DT$9nKd0#B)m2Dt}QCgi(%aPa157$IKK9O)%*UJ5mxAugIYoYrG149Ni!IJ{D_%u$HE=h9%Dg_0jdDm-8 z-LiVPf(VVrdwh>WTGdTY7WO;z$|W-z&Wp5YYUj@99fpvR5)YR$@0DY=^U+It9Zp|XVv0z6^v4yn z6)o%3Iu;VA{o%pwX6CJCXMC~MjNw$b!yI6*N;spt6D|JFhSQYs^x^H+PG(!>)nB@^ zU|#(oOIrn2AY9_L_w5eXjnQc6f$AUWFuvMP&a1>U z)F+F}9~|6RR>EFy9#^fXio)ADyx1(>EJ*#t`6D8=PP;;{!0w566zm?+m|uHOFcShe zbiqt|#x;j&O#iBBnV=U$Yaic1Q%mn*w|_Un)st;`JDl0N)3VhtYd_oJ+qy|6pUjpq zv;48U`|Xsn~e&SWgx zq-*N?-HdrPI3h`yX>Zi?qq}K4atxNmuJFYqv0Or~_hul)xpta-Exo+tMVrH;SWb(n zKzvt?NM7!KHw_d_t2~BDWCW4=(vXLcHM2=>Zo$|Ip%lSUW{8JmV7sAm_BXZs{Ep(Z5tmu zb51%+IeGl3LMvw3R$^8IM@jxnopySYhP}r?f^Htu)$(FxoRU5vMlKxs5~rl@EJdZu zqs$5jSyu&c3sUrF$f5m6Mp0F%d(eotl0~l49uJY zJNriz87FArn_Z$%?H;9Q(a=>(Q-5?-SI8;JZ_6YfPMkS!-oAK+n97&C&guylYqnG@ zRd(joM}u5F?s)7ic%E09?WAN~ZUgaBv?lka@o%4&9S8P?Mm#Ly09PTi0yhe}zgFaDM)v!C+1pcb)sFSC^%<2rGFnd~*gKc%xEWtt3v#p;rdndq4J)^QqYiP)_&^ zT+-WL1K$A!hOtO`lK^|p?3rp)t&3@2%K9#?tvee*7k`uBAPUCA@vp`fRU zeX`^@f*}$g2)v#0qs01)(lz3$dSc{wwNuGnQn3&96~Krz`xS-A&RKq+*3Q6>urFue zd2CrJAJXKAq3O5#Tb9^^)?sMaR@ej!;jbi|a!g&)U+vBd7qaov|5-JWE62oB%^Vy* zlhiC+wzqU~A!y;@Da;60iMFhCAsCVnPZKkGw-kiC6U}A#jKMJYK|T-1@6$B1g89i6 z1@{8qHyibujz;S4BIpLU#7g@8jZ_ktd#5FnVy}uCyRKY8?vu%?5x_$PO9L*N5WyLL= z4c??_fh#rP-3{K2o0WVllr2Rmb&qgog$WQlg22dHD>p|XnjV3}h5p`m!Nv5K$hSA^ z8hK29&wA{2?+a*G(y6|FA}#gQdLa>f^lQJyNEd83THDY~lk-y5`;6JJ_NB@sr`YY} z+b)-iv(0S44WXz;sTQ5clU!Z)iSHEDH;aZj4MY`?vkZgVK|K+mR zJALp<2pUmDS*pJwXr_f7h;jZhqJ-xGk!lbZwmTd@n> zy87&Rj@u9Ok~zZ)3uA;UDhy-dTU9IiEk~s45eXC5Ah&YFGCk(^pT;SebBH69m7sHHfZCW=JHTg|;p zFIHu9rVe5~lRpiUTq+K~GE5Znz~<_F&f#~{j!PyL(} zU+>t;Q!}S8x(tgjZGel#w?s4&FV{0F+lv6b$icJk zs9y&6xG`E!cH|8+AnXyFgnb%XK0zP+T~rp6n07LXHxqcpK`!+2twbs=L`Wx=pXQK;^gC+e)yd!`L(#2Y_)dCg23tE5V#dTm$!KULM6K? zxw;>Y1872-t=OF@=$XFS?Z45Da##k0e}folLFDAWL6rbn_kRXACgA@+LNEVEc;x?x zyxj1YH@yk4Y@+#3gyjw3?*9n9OdUn*#-0Xu+{+-`)4$NQ^ZyRrd~p-GdGj36%|P*A z@uIKArK>?a+=cX0-%G?+CAh2(9V&(aBueBB5)61J82oIvw>**s6+YPn#FG2TaRUwk zaD3Sf8|+3r!Il4KK%>2py@$$S00q&uvWXMnhTnei1z;*lp5*=-ou}~JnCQF%$q)$w zC_7c))z#W-KSf;26O{~WM-G*i?N6@y?xzBB0z8`VcaI>2kVBQr1Mqk_;om`yQTZ*l&F!zS~_Jc9_^)+ke(Q>?SGHR4K7g#O*4^_+U<@jR-A+ zso;H0jcJ5ZzI1_4_SnXkSw642Cxtnh_;kFoiANPGD$RM_Od8B%TV#?M8cKrAjg`7g zta?FmnN?m1A3n}a^mhPojb$NNN9^@h((2lIIjb*b-mN^7yzP99*t_GfrMps#>nsR9 zs$>u*Tgro+P^V z7Zkoz6W%z47koGEBb^WOQ9P6QUN9WizcU3w9$$K}R*kR@5V>94-DF!Yr5gP*m{A|V zJGKVIEA>KiPX}wVmSvQ&;hB!9V(~agj9B7s z(D}A^%pAPAmRLnF>O!-0{_s&`ZMEk$7}tbC6h)qE%;M&GMw?c1b|h`nV2E37{|mp>e)Jze;NM*D z%o$eV8F=RGvcAJAg;Xk1Q)Rn7O5~Rvd{;vLS#hv<8c&#lxn?Z~`K$udb)$lKNuVD+ zu8LoMFcZ0%7<~hoBz>uAsy($kV9Wf*fGg9q!r)ut%NxAp+zSAGa=9#%Ci`mO;*#!` zn7sb84cMcYb=jX>a_mqI&eTOltvhlrh(l}cd9x?zpg}50-iep)GK!aj2-pOOSp{zE5Ap(ytKSIpAICYf)QF{&{aAP5dbP1jKO!k--3Zfh~4NU`lK zTb}!}Q#={wSiN%`IR`R^VM`r3?7k_Lc{A-;UeZl@8y(bismv5UA@|b9HVu1=p#VaM9UUHO1E>cKiv~5mLJHiy;FPDZlc@wseU<)8@PSlyrWCF-dP| z$Lsdr@*?m5^_%KSNc2MLQJ{h&#pW-Ql5aT%w6PZS@XF2>zurgspYBI6Qt{RZ)9f8 zm6c>c9JQ(6u`S*2P{a@Nuft?R7Su_XS1#3S_QPEiaEpqM6iapCC{m*fX90sp)wuDv z*;iv8=mmbOsYWH>}3G!1C-MJdfCe44VxvQ7h!g4?S<7z0ypj@++ zrdE&8gba$JK3S-w2PJZU7et~nqam4#aO-rMU1Q2NYmHUbIhyUtyVMto1V3MYLg(y$ z-7vO=y&l9!ks$U^1N{jtymiWgR75QCc~W_9jaQY(JMZRgui&%$q6P-%_4-2D{Zw1; zAP&Wb%!L-}vkONV&W1q=1q$A0MaL(apPlg1CxgZXpQZRu_Ao+Xn0(fVttchrVxt5rXP|brPO3w^r1W7@vkqBt-1iC8t@74dB{TO0N3;r76y2X~ zoN2n)yzj49-*~38mp*J`rPo$98fvW=_If9%b3Ti z(SQ1d=Nm`GM|h;Z;Cj_pt9NcnL5X3a+DO&2m8e2n$0-MC^((#;47<&d%CJXd z$8Ys3p(ieHym9P@c1FjbjOHE`Mk##PHMhzkUGef$8>z*H`7%aCe*NcpvcIg%EHwgs z0l*rI*{5PP0f%=wnHgbqS7?n3X=V3hZ80vQ1On84um=Lrg)l2w&i8$UQnsvlq@CkMdO*C@K9` z99KG^VzZ8LMfshX`Z8@VK)eew*^H#ezEt!UW$n88h&)FUi=Ga@4wh%uesE#NTtQUZ zp~_gu&F!=jC$p;EbUjPtB*^k$D1+Z+kKdpZQ=tg^HOdZqS}P~=t-QP%q^c-yt6J59 z7hgw08%=hmo0P;*^=Y(!gG%XX=^uyoS;OtRJVs;2mwhbSI#zWn47azuEuO9l67L8m zXpXvaqsoL!)Yr9}i;g}w@;;^)tWRc}&Cl7_d2QSfR=p#L_^e@AF(1SktwiGVNqgH& zkKoOWGD)6(t#+|rQiCY*Z}#)@yzdzm&0oIO?M&IExpPZOCvthQ5fpq1y$4(WTs^eI z6O~yW$uL3SDvp|XVo1p(f9a3iz>bXT>TdRZ5`!IJQdRV%7{RC*cQ_={!(6v_c-=sw zNx0F>F#9Q~#$8$jQZ>&c#9ehXWVp9R9peV2CC#A4TefUU%zkg=YNl(Da ztT*jqc`#&ebokNnqi+sH;~o9$O6iKs*%@Q!NNTM~=0yyf%E`NBWr;N!1;Q~$6|WsB zFm6+TpzmoT8QnU34ZezM>8wH3+x3@@lIv^Eo}mWnv4AIBk6oMy z7zFKRhnI^zT(B0a_Rjf%yQod9`(?*i58sHtx^T#P=&hl4M#^vul#&Y03W+UZLD{D4 za+YW7+ietqqS5U9%!uiUfwupYq>>Q-D2&n9eN`V!?|7&;@m&D<)=BeSu~>WQDWY}A z^3+moFJ;9uuD1LB4q68sSh27sKH`28tzjIPI?>xbY!EL%||PZ?`$Si#R?fDT-ByJY@LNoVGp4njJFxJTotYGA{iD5qnu4@9}2btkEXC^qOKP0KC6mA6j3VHKtp zVvxWe`AJ~3LOl5ZQ*xVSsR{%i>+=J(}Mk~Lqc2~|HP$&`PkybRDP|De?l z+uss(@hP?6^UU#I8!3C_E4Dc);wGBuwOgXTNj0bWEfgJ@Pd^emh;*lgYoUb=J`oW? zNBVI&O&96&Aw9~qOeJ!=f*&!TWnjC;$kv2UxIWyT`Kh+@^|%;|#~d+J?_0Ur7?`xP zKz7}~6TZ%qRE?X^b40iij%#h=z9nxXWM64>&Rfy>p0S4s>+P9)KSUHlSDHj8Wgozk*R(fc4R2GU}aes8kYQRtL>r`Midb&~o zJ|Zve3uXEny08Spr)KeQ+^OLbB6TjR6qw$;j}yaCq9(pgLd(Y<@KIE#(HG1YSGys{ z<-F@t?zTTSeCro-Gqi=AiR9-ZvLTI6ezh6+4flP72TLEG;4$Sa9Sz)h$Rf@4H%!Z&cp3SC7E24(X$9c815GszPJ<+s*#wcxbHQ6;m znl$&-)HYgaPMx!S&;Bcg7a0xV%vlwY8X7XV0+QUJ*j}h}yV@rjFUDQT^nD}BD(NF} zJ%rVl_qt&#rnm=_(Z$78-cH|`fab^CUJd2WC2nSzA<9lna6^XHh()IyCu{rIO7|O> zh;4MkY=`)Tq+a>=rpE2p+3yR|=gy`Z=9`SD2olzGA!V=8#al#mV+?JD(4816@0#mkct6TvSH=oFM%^An3#!%a@z zwE_v7^Z6t0f=|sm!q0Y;F!bI>TG(I8q~9r8P`rp~N{u*bvzeW>=c>-Cf1?~^%_Tl3 z8%3K`ejBe#@GAzJUXv!TjipHMx!5zfWtJjZ9!JmZFQ= zNlwmQX)yj8hLUo4=`hiE$3L5I>YJuwg$MR;FT@&Rr$pio$@h{Al`@sxcs4k1B?c_D z1P><2o5EkIlP24CXU6YNs^=D8!=OojA#Bi;u!JHh4sm$zL_ZP5ce-=_P{e-GS3f|h zt(ak<9+Um^n`tHaKw6${-9}g7>zIYtofhPfeD$7w7@#zMs9qD1A-Mk41>qXdKu7c| zpnR>~TvnLKZg7!g{U@InkCZ+Xe#hU0UmK;J_&L5k`=oKWe!e#8sey6XuGIv;WH!VA z$FIF!O-{jMX6EH`z0>h*W2893(x<<0){-N@9kEo@YRC54=hqlkN;cqnB6g;`Y^;&6 z&fi8@@-{R>W$w(sFbbB^XSa2wGHYt=atpKKEVj*admfp}5m?y{eA%WT!@vCQeZ^QN z_JnKAU~tqI6Uc>xy5ciB@GML@6yQ>PdD-G|%@7P^`I zd%?Hq4tW($hhmxrUk5ZK6@1ZF?B1n5Y$Sd6!m)UvMb%P&S0P=L6jsOmE&#P{$Gmy2 zUb%8m3RyzC#-e4$bFptVVwQO@Jv-ku+ViODb$0YmDJJ*!Hqo9cm*du=`R4H`3xn(m zj*HqC5Lc(}&hTQ|5vO()!GdRUrLxKXTm-sBCl?@o;Q_CcN7?Zv7|Im6Se}&6|4^&qqyN)O za}n8x%(M~eB` z#=Z8@w&1l5t!Az!jA$PCXrgr>a%RfL6DSG1uU=#Zy`k7Qq82u83p5Fg^BDWpil|O0p#!D~R{iQey{fWQrvNRk z&zoi6N_eyHzS){<_A;Azi8rz11o@sXo_&;_Fx-B zoDzb?rt@&jp4(z;d8VuQoH|r}N3FyA@^?^?dFP}@qnVA^T$xnKGo7Q!=S&c?Xd7mBTS$PddWwWSC$Qr|w&g_VsI*-~zY+uqmQv#Sc5aBLMzNBLDaj}Jj@VFPuhTt@2nwS zjqjKBXO$q;H9Kq0dvw^L}YAcR+vGi=1YCJ zv-NS^EQsyK+zhTb-9ynK6H*rIv&}4H{kq0libg?sEfg$f$!zc>0&L67(`GT`XWtKQ zR(lka)ng${8lp^Z(wsK$yZq)w;3bx#koVo)Pc=wG$xd8GX$5m6vpqzf=n+p9GU-Lu zX_BGHKV6lPVCZt_r;px|*Cf&W*!g*4ML$X2@I8;^6rtUxItx-rJ)^$=XAFslw#cbV}Vl&B1Ou>!x_#_65#$gh)MgyqLZk{o`Sc_b8uIMD*&1?U&-dUk>LY zIs$FlS_xk|j8Kt|+szgdJA77Tj{o|^+MVL9fyl(e3Hlb1@qu&%VloW%bG_=v&$oj} zLkYn#t&1A;acPVo6T>13QoLJVYMF>ANQg*~Hq~45VZI(|FI4QlAwwxYR|MPUJ5BZ3 zJWzXf5vn}lNo;sY@5WTbgMMD3R%{QILybScXeA>8k9g0guH75z4^!^D6DNqV4=k*bgp0mRbMwSQQ9KM> zq(!u){=6s^)Q!%G+k*v)7VBUPEF@MU-oivSKd!qD%=^CLk(QnlD`$F>sN=(#e>5S; z&~Pk&iQu$VaaYhBs@zEtw^gW{tw9h=e^JgrFjLqHl_Q#j7;7%_o48~(X&}1Mr=E%v zXsz{u^%hf-TRj04cMK!zEsA>fl<4e9;#4E|8?qX#?BE~mc&1HfBRmKym)1+DzWl2D z>P42OxO87UG=veGV%@|@3r>Alpn=Vcj#zE`lC#(P+Sdbm+;dqWq^x^V2}KdiWhU~? zUSWw;T;oE{gNU#XmyYnI3F+YU`(+lwcB@0975=r?@ZuOz=EJY|r$Z>|-~~d~&qkRq z8*mRO-c0*$j4BUUM`MwJ9&U%j@1_l{<+PVhp75fzOt&*Wu);`X@WdjRLp>9E!!=Ml zBSZy%9ZHyt116vDI^&D=eZ7CoCU56}v4(hAzet%;5qOlo88ZhM5Cdezh>sTjS zrOfL~=j(N{6!Og)sTrCCwd_=?x_@p|z~)JfS{}(*j9h-9Y!z-uE#=K(C^LW9&YvUF z)%0$|+3|T=#HAN`xmmb)mQ(=U$Gp3D>;khz2r&Z0i7>wSD?X@`4y1Zu<%Jb!(n*Jn zc#e$y?|%gz%RIp5Mpt}r57fqmKgB^0kjlmhTnM0(z3G)LOAW`6cws_>0s3HLq*7u3 zXXG)V2N<_`K^N<2@ST7Eb<;;Yo51SthyFA4AwIY4-}xx+^WSytCQ{xUcrX(kp3DZ_ zo4I~1U@kUZc+6!oMuP)-Y%_^wL4OZGuZa7X%=y0G!#P}EUw?9o0nf&mTlN;>`7Lsp z_#ZLi`dB0Pdp{Vkd0ZeHTl+mgVurHsraC|tEimWo%WMrETc9Z`Js(craByHp7IE`P zX5~Up!t}BbCeqSani$b`VH`qms|f*xh@k0M}cE!D;ArTy>!&$&S#$+ z8h8PW`NG0Zw6D#3kjw&5yu-u89}-Z(KR*YEgO-+-uGBjxbO7@36F0eomKJqAD?6;Y zBU3j3fNE>G*xK3sazsmT{RH3w0VuY%{z3d8=|-hNbFO9I6Ba7CzwGU~+-8BA*|@9D zMzH{`6*cCqjg2K8G;;p3vN8ZRb>`Cn-rtpZ8|&&oFarxKtLkfi@$P3ShmmA_43zx5 z3JR~?(*`WGveQyi$D8g3q4(bXnf<9-M>A|A3out!|RQXijr}>IOk-5186=Q zX@FHnPV3*E5g2E82ZQv5wLjqtAu^nuvx6rO0Zil4`i`riA!v{h|H-bhxY!B;0Z3xB ze*=7v1wWVvGJh1A_=dk7% zbZ(Y$k>}7gtwI;!}V z#h9;CqZ_@xmw4MD{}wj4$>=R_fV0Ip9}vKTeYm+g7chs2QNBpkS9^I)lNVVF!_HRFB<$x=jH+rhx-E%F;EIx85Z_)k@6G z#{N_RaIa6EKK+)Tqj7jFRpb5H<7zfueD*$jEp1C9Zl|jF&2n!kkSbA!hsSPfX)OqM z3cPG3v6@(_@yO=vb}G`TX$HWs=3G>udKLFZeLYVDsSHD{0mGX73rMzSSBw%dyC#}8Oj)3z}_hf@ThLO>aDye)Ee@0@(q=X>AVB0RfIW zfTr9sPP3J3Bi^M+sM5NK2}szj|EDzuA_`UL7ob=WG>5i4VjPth>{1W^Rt<;aySzpZLnE zs@{BMidU~gA6Df6*KdCtg zg6kRm7%)S>{|1>7v47j)59g;8dv#euBIi8Jf597^`ggOTOzM*&_d5CfnI?8!?3;N8|%T2@w(j}ldUeC!1;H+htJRYgUK)P``R z+ZU5-78aI!0MDC;r&&l=x28ES&kO`%`TAy1-w+L-_-ydUk9%~!q(dq8T3S-)t)CsS z(G3|MYQzGrV|+Iara(4TX{bKsdUfgfmk_t;@T6aBYv;p6L_(VmOIEVzw zQfk}SP~XnXWGfLL2>-9LL&L`EJ>mPyVef;?2J^n2A67k`oA;czI z0w0DU%=};{zS-Ih&JCbjq5RvMo2e-&Z&qs*#^%Un|4i#_V6+qzNFGU;zJ8Ns zX;5%29>Vpkj4#NAi$rMpZ(LeGhdmU z^HW$@-}@6sk`oH-y3zpF*_X0ePYL4(fzA0(qq`Iou~;WZi7&H5LPFfWuBtse2z_gB z&z5Ni@F#b`)KXKaXZYaGA8*}y{6zM(gvO1SbUszoTd@U+jbsKOZvoVezzyp9{hMyp z#r(%mM=O;p4u)XX@RoQq5)#E@o(aqfNJObOg=U-rKw1EG4!~r4dL+ZJfwJ*`|Hj%H zCw}PB#6;}ff&BY=*+^-h*P9hdlLn;$>DbIOqXwA>O~bi=jY~rz44Si?5|!L7Y1qxuuKd9c-MNd@yf!Er3T=Y z-hQ|aa%L$2JimY(-vw}XfVOJ~;Kwq&AjjCC+1bL&D^*t$?C&j;(LY8SpH^36A5@i- ze-sC>&a+=ktGifgK|YSCXy))5$aj5je$dy~H~Lfy3kxWRTbx#-_KCV&8^EC6XzsOJ zeQVF3J$=moAb{=RT|p^O0wck8(((Im06PuV1U4f5ZvH?Vps3~B(eqc=J^3dChpseV zg7ecks3ibs4|eW`8>3}`8~% zgXNl-VNB+cs;l!cy{TsZw-RA|4<<-4)d~W5kIJD>Nr7o(ItJ;*VD(}%1^~(yL!TcV&2`S43k~Yt0St3Pee!DA_yX_ywzeaIa0?4QfDFt6=RI`=|K>XnU$p-tEH{29&-WA zs_yl~`+vUd|4Q<=D#ODU8^8|rMQm*z)4>6pDw8ZRi<{jr3p+b--M+;SdYRkVMa)Rw z?9wf|4335ddo4{#XJIiIR>08O0h9O{rKWA;k)x$$VNp>LaCI~7GC`@5!u6XDolcw^ zXRe9Dp1>42r*}k1frAqCs;wXL=1l-;JrT>y90DQt59Rp30UiX})D@6gQ}c|^0butF zvC>skF$z?cwxq-zDG-9Vkp5Btq^+0WS1R>SuN&>)<`zpya<`Rm{rh)WVpV;8vP63P z@0PcKe!dkiIzlJH{qW2w>@GcyE2t16XX)q|BWU&z0CIA37w;SVweU9_Ausj!x z2bB+!?qw8LwX~3ev#Qb4ihDr)0*j>`@MCZ=W8bT$u8td&OBfwpt`aiR)lC^*17=nC z8QIO|^B44eS{>|=-P$Fx7_F#?rH+o+R>_{4n$pBp`!?3hU)=%nuMYtpt?Nt4f2QxR zZaoUj4mBS)XjoKOcsLJSaHWY6`hPYSXp8W{!L-E0SX%l@SrVdkkksyLf%0Cy&;9QL z@fY%G)jACSachTu{2=G5-`osi5f}+IL(dpkJyZmPDs8?|RN&p}10MH{Z2s*0l$9m6 zKqtaSqPu@~fP?!Irk%~l$EU~)W~w|&FgHC7XOs}00e`0#7l&8l{_ecVCt3VUk_Gr51j{=2L0Nd*G&&(%Of?5nJ4CVv*+FI1AZ0yM< zh1jn8`e_|q0MOM*_`wb9-q2bJoMSBJ^MS*o{gh0eU>%g|K%N1$T+QI}@2DoDAQV*C zdDWoulQ=sIij1EnCJm2Y^PWVdc~5`73bK>(zA zed8Ghc6J9_TOsuLo%N5d%~kBG*|W2=^$w%!+Yjfvy1D=cIsmyf5XiI>ePfG6yP3kR z8Lo|)8JT31ENP~=zO#p)-<6g8ciJ>mn#9ev{lm-D@uE;sPRo=-Z%n<`{Q2VYa^X_W z8#Qqwn%jN(pdbQpJ2H6s^N$vR=2bJiH#J4_LMZ&SDgtOfL|J(>nPB&_7rKBGHM*E4jA!O6(o*EXg1U^FU*WPRHOj+KCs?dE`>YLjajc7)jzC+8ub}CLJD3bEF z0YeSLM!ok&E!y|Su6L{<`IQ|@i^5k9j1w!5ZMs5j3D9q(v4GGDuk+yA_C3`{Gg6x_ zpk%;*VslG?tF0S(``>^0gIlt{%|TOemG%6l{moB_8`nY{I8*=IuUp{i?4OVP9VYUo zJ?KRQ2D5_@Jo8Z&mGAVtz3? z1`cc$D9BP)h!p+RRn~%nPwUgETBejN)~nsqT8GQc6GTlzl`@Xp{uUG^c=QN3OMqJf zL~Gt{z@jo`m!C%qGf5sBr<~T@*M#b1CfE4Nx`R8{JGPt2uLl>>z<~lt>?*lEKbV9z}koxp3%F z$iQKmOPNN!uW#7ZR#}^

tJD!7=r}+$v26Kj#zOc&X*Fd$H@1TbTU)GBEjjgSy=Q zM76Al_gPOBX0-k}Z>{xsN~7QNjpUz?yaSYITupx->OtoKCH74gH!m;Shqw*&xzT(Ubi(Uubo5*s_X|%eq7fL*t zV=g&b+=q8ZU+$e<%rANcT$hUuWyn|!A2qrUXYG_rYf$Yth#6MEwc+mt3!I{@hJD{l zXK#$%xD(>pT+iTzzRvXz19;yvCdnrqZO(WvLKn--;u#z0dFo222z!e}XPG=F^yi4f z&Q%yo($ws-PQi6Pk%w=ZEGM^M4(kokvV6}2S;mj;-VkqDs+L z+NcWawIg?56@x9-SL6ypvD9TB4V3hteMbeq5vdJ!>gh;b-%5FUtYnjxxbZcc`?P!e z-l%6w?wTWX?HD25mXa3}nycB;t_c7CD9k5>R%0DNH2E!v@xNzb2s%CEg{Fpl(2Uwz z&_s2iM|#ThYf&jw;~hG7p&}YM~!6sjX$r;Hs52iQ)bTi?BU`Rz`UQYSp;?m_EzCdSb@z&dZJ!0ePI(xrUdP8^`?#d^&Tl z&Wop-aK4;Z;S?)Yf)|w<7|+F5?Or;F?TPQt_l!cGH{z3g>s$EhQ0or9+V7e-kmE>W z)Iuczh=lO9MO7F&zom$COALPMblyP}Fp1x!JB7{dOZwLe0RcG|TD<<=;F3+;kYAlf zN#10+>@}Rk)gVh!__Ict>!lb=2|0o)v6Ow~<;z7r)Z4-4_ZEEM=?bt6U>w1`GDm)O z7CN|PXXv-HoXz`-7graAVpC^X7TMwRl~td_XM5b+7vJ?9FZ#BmSoPnFgkb9Jr?SCA zgOT*1wolJL>W>a(X+z?Bh+t8(g%+synu>=!E7~@j`Wj+?sL=n*%)OP&2EwkckN4b{ zVm<5H-H@)Rh>&YA2@>hxb3SO?TEJxY5|lshc&M|z(p+R0+5CE?uICeyRMhz6AkX_W zLu0=^+bp~Dh_u@oZ17ikM0*%6K5?!wG!6Ia6bBj@r>Y>nuFfOR|X!w`&usYvxRkvmJw zxPU*4XIIJ!$-cjO{o-^oA=Y-S4~Gk13yHAO!JVCay<)cNm0iiI#p;}(nj4TJ{DB7A zCdMuCflu>E$k`3p6-xq83zHoiwg^ZI%A%s;2lDduaDN4B{q7>Nhj7#@8S;M?qbE0I zgX$jP_e{;;_6Y+=N#^7B{6ClS&OLX!ms76Nxw=f?{=a+uHE*@WfYs=(ZI!^HICf9T z&-3g4wceAczdqYLyLo;8?M0IRx=!cuK1Hwx`+H3L<9lu3LX;a>ik;@gKd;^Y+kEQP>GQR& zzvbiC{Q7t&SZ{eByhu4B*k1D;nCGVLPb>bOGs$z~WG+YwcUaJ=+yV6Lx;@YDeUUyQ z6B+|_;=*=$&z+`Lu(sTh#P%;ClV%;1`UI?Ce(u|xewU??MG9221M7D+Ba`4mcXe&7 z4SznKf3v89s1_HZJ%-ZuBC3^%XoI4(H;HOwBATG6%}rw3n1~iAYHO3K9=<8|qD_6? z6$T%HBZj=DiQwej;G9%a@`Z= hash成立的最小值i,i前面的元素都不满足>hash idx := sort.Search(len(m.keys), func(i int) bool { return m.keys[i] >= hash }) // Means we have cycled back to the first replica. @@ -77,5 +93,6 @@ func (m *Map) Get(key string) string { idx = 0 } + // 返回对应的服务器信息 return m.hashMap[m.keys[idx]] }