From a8c8dd0b70a3d440615dc344c473bd70403d51fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Sun, 14 Apr 2019 18:25:51 +0800 Subject: [PATCH] =?UTF-8?q?Hbase=E7=AE=80=E4=BB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- notes/Hbase简介.md | 70 ++++++++ notes/Hbase系统架构及数据结构.md | 2 +- notes/Storm核心概念详解.md | 5 +- notes/storm编程模型.md | 200 ++++++++++++++++++++++ pictures/HBase_table-iteblog.png | Bin 0 -> 32122 bytes pictures/storm-baseRichSpout.png | Bin 0 -> 10568 bytes pictures/storm-baseRichbolt.png | Bin 0 -> 10545 bytes 8 files changed, 275 insertions(+), 4 deletions(-) create mode 100644 notes/Hbase简介.md create mode 100644 notes/storm编程模型.md create mode 100644 pictures/HBase_table-iteblog.png create mode 100644 pictures/storm-baseRichSpout.png create mode 100644 pictures/storm-baseRichbolt.png diff --git a/README.md b/README.md index f06de08..48a8ed0 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ TODO ## 九、HBase -1. Hbase 简介 +1. [Hbase 简介](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase简介.md) 2. [HBase系统架构及数据结构](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%8F%8A%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md) 3. [HBase基本环境搭建(Standalone /pseudo-distributed mode)](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Hbase%E5%9F%BA%E6%9C%AC%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md) 4. [HBase常用Shell命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase%20Shell.md) diff --git a/notes/Hbase简介.md b/notes/Hbase简介.md new file mode 100644 index 0000000..6c35f93 --- /dev/null +++ b/notes/Hbase简介.md @@ -0,0 +1,70 @@ +# Hbase简介 + + +## 一、Hadoop的局限 + +HBase是一个构建在Hadoop文件系统之上的面向列的数据库管理系统。既然有了Hadoop为什么还需要HBase ? 这里首先介绍一下Hadoop的限制。 + +
b=+dg%M@Yb^iyT(*GieGk0SFd zRpFQv&1prOHTe8|%ptqOoOwK0RSv{V{hZl3P7Fv9tHg)Y20H4_1%)MPOxt~zgdnxR zh&|-r2*LxAINBKL;kFSYIIK@n0c~blVqD*7B>GI9tB>He#&vaV+Bf(@A6}X|De&8) zTZ~|xbTm$}MKhxwcsGD6I_mIdbV;aRYG0wEiqh^k5=!{8&(~iLTwIJjK^?C _t6nLp?|({YB?PXg0fWaLzgoN)A VPkJEj$?L484GjSeS8xNMkwHteHXXBhg-%L8uCHn(M_ z^vauj^yndcY6hG ze48`+@QXmKwUPsj3~TQKdFH~(XY(pN)Os^iE?2&TVuf1jAul_J?`~UzR1QSugKQ89 zdNj1Xpgtk5KPW$AD(@9d66C2t!1?97WqDI$y{CFi*39&S-5^$7)m`EsIY_1hhV#xt zrsY63@cSK313mA%g#N$M1{%n8@t$(+;rFZK<%ik`zf|| J}vcos@sZFSzpL?sM z?;=mcwyV-lO?YkmO~$53h|&>?X&MVc(>jS@OVV^u^O;lF7-`tfK^V>(51n7EboyxT zx$taizf>bji5@6zn&~(U$@txNPpEt{@pLbXOa$i*vFshCXd>N+Ng}y6@GS zzsG<6FVV3)R|@zqkY+r7<2jhj229}tbyuGdTZlFmISUq^#1DOB@ _&$ yRb%@(brvHKg@43n>SsF2f1M?53sR6{@Lb$?TR#z zDJ;HHcT5srgAwq^It68756Nf=Bxu)81h;{V=@v*23#9>g&u(tC-xFpxg8*%;B_+1) zNx;&&tN4NGVRvp5A>U!AxUETw))Row71ZC@(SG|8BXBz{px{^0_R `({q$yHAh9^33jdih(Uh?j>v@s) zG*F$7gv6i^zUiVC-_$u(`z|*tbifb4OdW(A0=g`n-iw7->z(;|C6!N18+^22O(_@F zy`xuxXPL3mw6hBdvx;J*+6A)&VXW^p5F^(k-+rb6SC}p|FA&v4Y93xKJ>?LF&(2p| z33ER^){b*;ZIR|N;nBBWoouFQjg&kUftc4PlOz5*#4c|PKjAI0<_5^K+3b*~H#Mh~ zu2PbA`F+2`DA7O>-A;D7+BvPx{kCN@1#~^`TIW*u)YFv!KbPvlJ1|4V=(a_@=>oTS zAT)`2KG<;9%ydZAVBH9uWAYHEKRvVT(PWwb!T&cO+GLaEnEl=?cOK0maWb^P@0<}A z9RVw9V-omUaz-!#G8aRp4}Gsa0aMq$8{IEiT6e9}WZwm(h(xuGcDlD_Hx^E`Ce#cW zn2JSCDD3De?=dVy1iG^wW~9w8a^>IpX6cUV)AVDCNd$)^Mh(20KA)>Aq;kC}_Ome1 zaupq@D7wH8LUBEb!m0Q6I&a#_4O6_$;+*D+xq%s{GnMSLM{QF2?cgrqqd+T;e`jo8 zl9Xk+vSShrze^ X$7y{arIv=c4Vfh;=QBzo59mHM2Wsi-!G3v%vHx~v9 zk5&gqh+mJagAgaCbeBADh|vL;omtBQc|52k*Kk7oJwK$2yW$fB*l6>xY&=2PIZ*ia zCq)VV2*V{8TW#b}iPhv5Zsz6i*#$nRnHbnE7VB7f>Doeg6Y};+oo7==r Y@DIcK3l62eZnw&^%1n9hndA<@>*Iu=h~?=b*c7B_wm z>>W5TSH>1Q8hXjrM G*gEv5 z?w}5HPt`!}FC!hKAFEe>qCeu=h~%Da3Z`%<(-V-R2B^fn+rnL^_2yVrxKwE?0culr z02&Y!Co9f|>;&=r{PTkwZEiPHy_BqBkG@R_)Zz@WaW+TtwlsRXGd_QLuQrf7Ex*~1 z4_1V0en&Xeeh&_^pK<|~_Dr!L+2)r%26gB-kC(zI7L|AA`S&)n`KjEB@UBH5iHNel z4&+H*lcd?I3CdkQ4WCbRfBoa-em2ZC+yIEpabUUcrbRf{lsATF{h{4R3enn5=r2!6 z81Cyiid>32jCJ^WP>i1+vIbc6!kQqniqwx!gf>&kQ*IKHqg_XH8~YYT5?+;6u7RC} zh*ZfaW6HOpH`^-YC{=gPTgl(kCNQQ)A^rPiP6Z#m$TS2yI?EuEpyCYr>ts;@JmHxE zhYj YA7U0`ROx%$giZFS!W9j*2D0TSJU&?|(WdVwZ|Ov7|W zo!c+9`ptTuq_ib0QWPE(a1b*Q=ul;m%A?hjL=XYyPB1h@oa&d`6<*m2kur+ctSgo= zI*xBL%n_l$I f17{OW0}V`e~9m8RMi@FqAWJT3_6`J70YjV2h~S7JM~DhnI}@2~r|9 zh9lQttw*Ac+8_eapU=QWe?lwFU)bP~s+Nk%F`Cyimj>qf?wjusXaoRPv&0bcp%){b zlyLu$@6@cuAS>tWl6KfdaxRfMk4K(fkXyVj`Ix+Aemw$L`hlnlbmo c(SF_nrF8bZkZM2n?F+Vm!m=;?0+2`VB!l7%(@!0*e%*h_F z;G@L`#QFLA_M0IfKBGi>nEi}0*kFQxB2Wel1baXOGmK>D#@K*)Z*I0$v)woZb x?VrOH7LaP|OxIjii zZlV=_%&WKybUK_XjVxg3E3_7Ur@0v3# mkmU~DOj%<*cSFHYQa#lPjT;&Pv!>4?s z%>}90$<87Y(JR6)PJIVwXemnneq{|8qhhexE}E3I$AJv zVc0uPz1)$bN(SI%bCti6mZ#QQ=>a@oY(YSA$l+Q^z{D6#CTD0_oV_;BMwtc{oNS@( zq11=mQATJCeEA*bYXqlaxuj(qc@O9OrX@@uEvY<9-*R_bH^8B|Ji%0t-Sd0 `6WuqeVEY&*=It#!SgORJHPc1uUn=>uO(UJa8jUY3E`#71WMrgXLP;r zCi{4KeZOI|b;oRUdg*(80Xus@YadoQPh=tYDEYUv0fz!<4_x^WVOFu~G8rtni-PKx zAnjMmXE?#l3Q=lvsIY<{7bZnygR55tY+x0qpB`jaESF8Vfh4!G`bGhk7&x=@ONsaw zw>2~C!8vvxf9*lSuP3y~Q}b>|$t>X`k@&4d 5Rkf=UPteVBhm27L6u_w!%S{A+2KZt1TBurt$6jyfZ9Lq`V377wDq zPlyAx1d}tsLx>(=96!wFZXywn%1YP sIhL~mE@Q6i*P3rH-OE|4V# z@Lh+~3!&JL|KE586BNsgnlGQwZJ4hjs`bj7O&wl#8Yd1Eio22mHWQzW6ERIL+Hb0< zh<&?ztEEoypsVM2m$~5qGn${cfO2IH9P-#HsGh2-+c!j2bbct(?pc}IshSXM>^XrR zp4yrte(rfM+5vu VY1CM-GXOI_ay5r3ZPH|KF}UkRX~#%r|t1h0Feh2 zS)fo5FeD5**%j^LnjoNPLpmGtUr)73;RG OXklOV~6^VSEY zq`#5>bS$Rcd#|PK$;ItpH^+t>%uVawb;pE(*t)}jW%0!QAs@1oqz|O0FX$;$M*1r6 zZAw4pEpUZSlck^0!#y&AF=kTnBdauI_HyVNfseoF*_O-ibB_o4Z^93)8*%9@W{ko- zeu{1L6lAmft!3@ucsOZ@w7n!AuzcEoWvi6o6Ca@UQMi_w zQ^9W{byNI@HGD`L4YvG*a>2&^9T*4tWx=Wt*cwisFT<@2=I@dPmiN@cdPslg$l1%o z5e_4@PqJgXE9Yw}MYI%3YnOi6=0q=X04>ZB4oTZ+lU5N5oy&_-u%m}-))AKz>>( zlrH!F8?ggE|HyZKce!_&$Q{eyYDV7F(N0L(lFR>spa}RApOx-=@T|^G8}7V70?!m9 z-h1!SdRZ|@`L$LX1p_*@5%`FW9x`FcIuA*oKmUvsBrM2rZnBn>wEv)_#v)Ge)||0! zr_*mKM?bjRl}uJbGNk`%z%gz4uaX`VOEuvsP}}~l@g^KV>lG+hV1x=^e=es#yX;Ah z5wSB#un+WCK!lp^@wK2{$gN}wXq9xG(Cc(M!P40i2y_hT{EPun?>9MYn2iKv)#xp& zmfQugpi47W<2SNy)+ZE~YwX4?dB^KCdGp>Tgc^9?(FMy8xo4y095(&ezjBzsGBpZX zn|$`M7$;$hn-J?+7oG3Cop#T#d0R0d`AnGdD0t+R%3gBe^{trYQ;BT4sub>UKIVRj zkpr(jqD1;1eC8u;VC6Q6P2yd-ZwTpY^oqWNkxkyIZswEQQXYS(jAp7@o9`ttPJk7{ zrf;PXLYu-Z =#?K$H_DM9I%dKS5tPF8wmf50*{UN#4&L)x8hvJ?by z1uCdT0z&T?!#t2Gf6 G5bT~H)@%b zHnD#2A>EWyqdg`RMg{K4Cs%f~{1@DgqK3DOesqsCsGXj(KD{EGFjs^BV2Iok+%_#X z@I&NG302ww*OG$xeg^6|$9yrgrgZkuynD~yi0Ov+sq^%OeY(BiXP9S|qkYJF4>lOC zd`>i19d6y=Tx=|ebZ#d^r#{mM`?6o$qhxIrB^lL$)fWnP$&J;`^M^?<43_RV+`LWJ zaXfE=^__W-&P}Tnc9d l1CCF&PVu;LBd3*1Y zchoAYNr#uax(ysa)rW3=%e28F>;!aML=k^IJTO2MODk1auMcV&4
TM}o;$fovKMUOMowV9 zM;8uQL-bVP)Q@4)gDZ+S7PuQP#Rb(Md7LKYOQQ=f;c5s231tI)Fh3Nw(FPgtgnC@j z!Ocx;P3jTV+~|P!OtU z*|>QYTyj&kX>TgoEQVJNB1lk+UMB|2E5p3{8VdzkD?+H5@jbFGAPJKEVr=I0+x|lM zyL6uZb2!-PD@$raK|-TnfJn}pUumsRDz-ZnQF;8{I9l2i*hk-h(-BR{EBE;3gXHpu zXzfiLD#mJ~Zr5@eSjJ~s?$EIG+U6u+8Z!Au?dQ}xNMN4@hPwF7z`J7X(KB%!F;wYa z;ZUrdV&~b_EtWQGrLY4^ji?i+DX&GH;JvZXT#A=;zII!APa!9vih@hMtTXV{HkX@j zuMoiHkCoM=^o9CS4<`sOE|~Olu4J7$Cz4757)KLM66ceoZ@?A^UAz}9ttXfxLmGc7 z-OkTt7*^Rc)g~ByYshwC+8-llqpT_@noXtIDY3wCfbDVg+8uzI(qpac0pw&vxX0gm zy9g*(y*WECN0zHxfx7}jVcBwB4rMf2c^%T}-z1H$fy!E8>-pZjatH2Sk2%B=p?LSJ z;KEi1kb6XfoD5VuTMfX;~?0 zo$Q=*=p4Vu9PV9o5|1yxmO8{#FqENEVf*;D1`7L0aCg?16WLLAjp$e$a6LCQ#iCgl zDPX=Zz;n7ghCeycjONRszBMd?8fEtixTqD*d^pLclC8q(83HH-u`GDET_dKllX~tz zVzvz3eW9MET~z3zaIZDfmpyU)fryghJ`ccjo4+5@Qqaj!_PiC>)5fJ&*~&UNv%!H} z-n#k-hk)7>clqrNSUx|+PV G2S3A2)stP5rH~7Hsi~W zOl_iGU|k_rr1wE*I+vBd+5jf=!84D{2EzB+jJQWLza>T2U@Ek~O6Pgpv42)28`Y?N z0L}DmAP4+w5$tNLX&5L_ zXl(9IniO7So`2b?6!glnY4C;Z8}M}Uw Q`1Vt|Rtkk~0@YAOqtp!_we?Ga^|1dZj z2JT5J$zIH(1_#jyewQLSwa!yEcS8bXqlc?<86Fq#cfHY{H+R>HCOs|j7^Ggiqk+u1 z HAM}va>F&y~Ve{tH z-R9g9zQ@j8<>=?X&fL6q0=lF<-IIj`%4{NxZMZbeHfHB`qcCPX#?N74TaRFGqWzq9 z;=U564S&7ZUKF4EAYOaVXvJhF?#(AK6@&imqZ4uOX+=Y^{qMQlPUNkoSou9IsfP*C zvWH42e-NkCR8i4D$VvQUhum#-`Sk)2x0D?1Y HI7dke+eKZfWwH&Yl4_@3?jG zVRKeMNJI~)HlAvsLb0Z6^_Q?TV-!=XuYFWg{V~9&;_wFa`xMVPgaNcy9+Yv40*xxS z=sVAercp%Q;DM^7pBRDtrm(E({kp;Kks)r_Xx+ec;O5KSBJT%es~UF30#d5_w~I@R z75D&LL>J*4!sNx0a80*6ywS#!m3(aO!bX($w%#_PhZrh_{~cBRH#Z#EL`!hj`A<9B z{?C;icNV|`)t0!&tVZUM??oLZYUkE9F#`1tYv8@cl?L*?#?k0i<;^|P3-Ds&ukEI4 z-`y8oQ>Fp?%$`nO-+gi5y%f(UHNGhSLPduLpAF{YpCp0(>e9o-brfNc*_fxVbbJT9 z9%8Y(CDr}@lB&4Zn5_qR$pu5|_~tk#GCkaMlrYhDT-RjFm+|)aYtzS(ecwX_>I+6~ z+LZj>22T5gzXi75<0Z^0WV4j?>Ch9kweX}$Ci_&wcH_j wP!o!?x|My?q6kRtb18@F~aYoylFag%>2WJns8@CD5N4-9H(zZyn7SP#UI zb{+aYpxZ&YEB=Ej*(V7)D#r#-11yUNpO91I|KzO({65Zm&%~P^AMbxJRrHR8dE=M< zXMRGgc>SVh+R_gN>I%O#f0S7Q#w2=@u(3zHznTY8)n6^J0kt}j5v1c(%>u~@!yG25 zf6U8b2RMeiN4fCN*5|Gte^M4Vz0@X6GcAPKj_a0>aY-5W(tRUN{Pp%1(P~^I8b#=G zz_ZTu5?ci8IwUbN#>jy-J8_ii5}CKEktYR&tJ5?+h0~!s!lgm)k_2gexA~aYJU1 GvV!c??WmhhKwA0}E*lirGii#UT?;wq~ncQlR-EmCF| z=G_hPrQ-%LVne5gU# Yn% zuQe=+*qd+eCHBoW;mMuy4RX(HkSvPT-7nrLqP-8$vb4Jd%YhtHkrN;*V(5 )kf5DWc?eSm8L%$;(o1K|rHFTEiW(x~OL(6oaACK1=5ucd`U))1C0Y^(KVk_lxp zFAIk(h!^Ddn9{GYT#LwpLi?g5gM6P9f`WuCy;W}s=LNm6Pr*Y7cS }!UPBtzU |tr0C#QYy8Ub|Cr(rC#^6yVDe0%Eq (2i{uE=fIrl5j9>rS5;rWux?PM-K0~8vP@5*CX z=SP&n0X3L^0b`htf&3XIwY!wq8v0O#fkMbSN!|QBU_Iz0Sf0YE-o(vYdZTa@G8@QT z^MwYX0LeZ94TSNDU@B_ZRZs@$*9Ojqrp`z&%7Mra!gL%0_k6+)guJK(Sl~ZRtc%8K z8neI<%|{=$G0Z4Z3>k4BoQu>wz~cSCG_;=LSl7i%tmiC>gSRS?XT(bSf5U*Ypl`bJ z9Kg|jO+DQ~)rj5-EsPfV91pNKHwTjlYMD$!hofwm*;DQzaC%FrJiaskbntBxd^|u0 z-!)&O__lgOq;<*ea;@#;LXR~h=1P#JUtTqAI<9vG9(4kSJL{|`*m&toS&P(-SiaNe zeB7CUb2W42@cEbfNHaNc`ksf4?p=i3GzyC8vNA75Yx!Zr&Ciln`hiNrwNRCa-O^tl zC-)~$i)0 x&oVI{mUy9S)O*yA02`O&*+Za1?P*YG)=gEkMa1>O#bDzY1w$tfkInBsZFJN zJus=fWqRxmQ%Qwx!w@eYII(4Aetf2nRF7GJhv~zki(*;6S4z(>F9u|xCY){;iSLJ_ zOzLhA^!uy`Jxg77BKMie>Cy;De=1+FT=tpj?%c#**k^v&=dSU#n!;&@nU|V8v%bN+ z!UB3Nr7wjw`l1WZlZ}0RP1{UXe!Djs1g3)BE&?}px_9F&4U5&+!7hF`kkC G|~FfCqac?`clyO&DPvjF8^G|lQ+-f?i-|^o0hVaB!ZHA$cyr* z!g|pXp@KeBz^F3v%S?t;@nN*v?)PQHfp);0!qRe6E`vuwlhW@bdBm8Gr3#G!MXYJ4 z9+?!e9{eP8qK!?vQ|zI?0Ct-lO(s8BErr(qln+Txa)Ql>2dkLLH`?KpDyk-aSo*te zF!hf$+vzG0!lFB~ikjXJKibf2F2{F$cLCa?FKA%|70SgkFS+AldO2NHsJHw%Bc`u_ ztZ0#EgG)n!gNBKF10hJSGIGhQh+##m?e@TJ%($t+aqm=(N7hgIbuy*<6F(J};XJqV zZ%wf%G5;#vd+P1Q5`C(x`y>@V<50_FA6$=9 n32^;nNgojH)gyhNM5gt=SiK#yg1FqfB;41li@P0N6}kXK%OJ z48ytG(G+?>nTh;5?~`aozb+ZU`ZGXkQ$XV8>Y8JIY^dNL@m&F}3OY-Ij44k;DO6RO zqtTx!l&Gn*RbrkALLlnX8UB5DF}lzefjY_t&@_GW!Pc8{O+fM5s2Fddwp>KFa1)r| z@891yaW4L-5#-;sed=u ZgYpo(Z+AQ^i1B8eJG{PUTffl006WWQus23l z=lEhld1X`zXx*-v$wqo?Nx*|Ej9`pJffJj3K`O*uv9?)yt}VmT7px0N`1iA;U$>tP zl)__lyUse_ak7K8wT!pO;TE7>vQHqM(xrwO>J;fP{8r#MwN#phn@zsqyDYo-Y7|v& zl7_QDDxM2Nr&vDD0gi#29T_vlMUv7K(>lv+f0Hgk(ugT6pn&g<+5^C^%7jxj#36au z*X*s?=Y%hZ7pnSee<|4*p^B&?bp5%*U+%FZzpk(ybB7ewPW`S`G2{abN?{k-W!3ZA z|L_I?CjaER0?OM{8#)TK9hqM3o8xIa_y%v&YRpn>Rl7Ek@Rk37;ujZ9tL=KMx9k^Y z${tCb2;DBEGD*UMyX|AA!6R0{O9%}1#B<3WR>~7KlqOWQ3HeNO_L>XGGn=r}vLC<; zET_r#rUY6vphisz;ZeBpH+gWVj-C+!D3eDfctG}mv-Z1_7~obUbvoLEai4>h4x4S% zovaC7n31LeN(}yi0ktWyq5vJd5O0#HL;vol(?EeDmLaAPFLE0cx*AB?;^~#6yO|72 zP;81*s^x#UZev0Lm<-ANZz9tF+|`-?2#|+W0YX*Edh;5ssZpK4fW{QL5gd(&Z{5} aF+H(6O>efaPO}+<}Yzfg7h2nC$FqRNg zhd4`!lVJdrqj~KJ)s7Qj`})5aaWDf2Z}>_36Bz%Q{E3OFy>Y3gzTwHewz@WipY5Bg zFWvzvt B#2nx+wDh #i4 zyj99cg_c|+Q!b^El EHn#I)fE!drp!4&-LY zLosifGHHIKtB{Mi+hYR0*<>c^z$Hx<=5TqKJNBT&gU1v)Ur=Roy3TVE<2S^#Q0sX` zFw|%3NKaBcWE^8gLt&Lc2e4W_ fef`* zI}KGSp-`|f%N1_Y1ijN1D_#3Jsvx!?+p(G%tiJxkJBQW-y>l9Wd*{^Ddw9pLx1gxH zZv?#uZ{d6=Uy*px6b}yB45|9IC0U?>Cc#KQ)Emhsr1Z(GTl!kLPV|7MPMZ^OF_*s} z%{SxV?@2kR9vCvM`IS2v5 zq}G^Hknah6z^qc!(Z&nrMa~JU0}q(;K9BcZ*e1@VqDY%3hJWaRasYwFb1tU!{C%^l z``1%(x_uX8$HLDXk4XOZYyvSfe!FkQ`U*o3 >%4S2-(H>0>vL7)2L20$A}z7lksW+fHr_u6vc@qXy$+(>1_6(>1! z1sD7q-LC6~Z!-3I*w^kGSTrK`rSc}m^$!$7zzYT0C$7aMfER-p6zekE{aqa#i&$8KspN2Au13B zq$q76O*(>fqy@ZRf@`n6_gQC*bMLrk{{z6x2y=e#`+I)R 78z}=UzWzoB1go zLN3^~Fsa~0JXO)cMp_2C3XQG4GIgDoDJ1=*XD{5l0uXP7057EO&H}v_Sz@lGcAA(g z(HEZ1qSfNkPSTfOptq-iEYF|A>`Jc@=^D)e{1$CfYU+5PKHT1bB-p9kyu%uHv<$DgSha;H?_Evn8 z8I!JdiVXMZKgBcNA&| eR<^9~bm;uVKyO=%%Uz7RpN6`9o@&tJE{!erlvL z$%8O+C+ E>ktb_iRmY-;_-XI_6Z zvZ^R+#hXpqjWISkyL{O!;l?;jK1exD=R2eg>9 RT-O zyCS_KnWnnDpPz@Y6KwAtsb7j!GL>&h++ikG{$U9V@!3eQ s6()>(`e> zWv=f2)zXWn306vJfvYGJnTLgFd^+anM6v1nX7a_5c*%VAKnF)BO+&4oME!3c){Zu2 zmI}>WcU(QM_ u?_orbx!SC1*`tV!78w{U)~`I_)Flr+OANKQ0lBv>Wk@Uytn zoTRT-g^IAu{Z9nKGJ9c>RUUk)kB?7CPBttfD=jWDlFnI5m<*;<};!PuIKD5~;Au z3Sq9%4J9I+MMzzf6hwbijov}kxu?cYMK^PoGN{?D5@2NQY{b2tjO{s=4fA8r&=^LY zh?sShHew(M1i2ZPY6}vs={`B5zNV+wJl&Z)QEb-RzWu?9)gsT+#B!F3yHzWZH$ZLq zf!(1wADDKM(d(P)Ilhn1fwEFOrGApdxhak?U o#KTX_P?o`R5E_FE5 zMsw}bVv~=3|He7R)aShxVJ&Ni-Z{huBRC+hbt4H0Axl!MFce$gl9g-X#1wEdr z)KN@ xDoq2qA&$i~Mg!!%uu)Sx2YU4Pa-_iW#{Q=< z#iU?%oD (`W>PoxKo28MFb>9!zlEUgZyA?#~ zK8SSal_vh%Kp^B3kkU8VX( bmL*?H@VvPMnyX9;514GTwbYH9Ajs(KdJ z5_$Pnk_E}OU-P3k>0&}pF3tn0cy0B{%Ws)jjJ#FpZ+W7H>HBa1Llu(1g@ @WLjppMW0#O4@4TVgj-nR{`fRXp#ysJeVIA}PT}(j7kq(;{iNRiTnB4m; zTEn}v -?ytN}ju~nLKlv(6=w%et~gp2?O&B z8e<`ZZH7koP`@+(T)yf3pOtU+LR|4~M;m;)F`)gP{Q`1{0*lEk4gzLh@43It8U!|@ z1iT6SD6?_1r+V}en>E6Iu>7u8K6@QrXu@}fLMzb^%R&o6)PKL-M!SQ>Bsj_a#~S&d zT2rOE*fns(x!h6oeg3=EO0(L4HKo(OFI&D;(y|8sHTF44P_215wDRarYl4m2s0b85 zS)1?Mo|;j;?4 Q?vNW~z^1``d-Jd6lI Y0NrXxnTr4&ZGzB)UUZeqX~BZH1p6 zu%>l(9u9dA&Ar}IgtZqE^y6${Tl B(a5 3_AuB1^<`(hT{#OCFIA5mF9@Nuw5 zD(~M}u7PE4UxpL^%z?r(M*q#8!o^39YL-XUlhFZSrT_KUN+04_hpkA-|EljWy&d!= zt8WQc^VZG3Y70^zEc{>;t;&o7+_X#10D1rRl%VR)ckdTqRpN?k(fkqalOQ~zgg^I% zFSX@*OIChUBD@OFB}A?E;Xq-}Ypwf(H0HLffV+arD;F|Lh=QkO=i-B2dyq3hyY#)e zTf251FT9SBpx@2>M&)4wSVt^9sc4jf4%D4{NPK1ED~C`Jz6WJqIwdZK+a-iCqwDen4Ylda4JX^U=63nQYUc@o%oETp4hf%NA`u-%`=n zijU&6y;Viy7QirU4W587CbcIBhuA^7^H@eWkjOpPCeoSrmR__uPlnrpxrA^yOH_)| zam01=g|GMpyF;*R#Yf2rsWn$@mZL=hmU%}{loR lo(F=!J zo7LjoGD?HG736^Zi0yv1lwgCeR+ya%EX#btSa^$BULEDnbc-|78r4)^osBuoDJ$z@ zr#RO|)fz-scqBMT*wl&8y0uq;!zAY*9k3kIC6)yL_6t_~zX~+a!e;(Q&r;J2n5bt! ztPPq8&g83T>K_uqmo0w?3lory?wX7TRJBym#A2gD@|i3OL#%6Q0i)^j>*EzL_)3l} zowoB6!$}0zchtu&5;s*DOZJJLN#6QRE>Jc#iM*Aa#j?OX&q^5|yeO=ZOkpOhk zF&*zH=o=;`n+8fwXGMEc>tN4dvglY&jUsdXrz(LVIIJ30J=R!J&1n3_T?gLZeBx8x z7+EgR6V}b>>k}=PLzXb-BWvJMICo}fgf7wVji+vpmrjcr%g&;ZOV|Qoy4(!Nwa%@J z)QxGlrWWmpSD!dFaSqjZy>#juM`oi5MpB4YE_e95?h6MhZ zeaO@8W*=1uyRm^Y*ce|@Fg{_@Gi0%v%YCCp(CNo4pH|&ep}<3pp)3-Ili5z3&3CBL zY_L;s$w_BD5)7!gr)}$1ExDayo{+c0 &+* z-?M)_Ul7bU&jFcIBL*FaJEMW{{+)7S_){wcKmA>J44jGGKj_dTu87d7mEf7z%0#Hp zP0IBW(j*AMnffLakq7hu?f1SkO2uV+A=y1>@q@RcS)^+_1CG XZ`r3*4vL)N zZQf8&7STRjQ`&mPr@4?QvVH&lw6gt}S>mT>wubpD)D2SCMVO5G*^u9U^?hPss7YzN z%US0FT+j1EH)mr`<@|7 aPdQE)#ZE>HZj#O7EKy^TJ4lw(n3p6$*R!MnbA5 zT{y3giTf`m?9LS1Ffk{9Aq2k>w-v{?{9-iaTm(H<0~J;nkMzL|@1r2^Ab37qkwNJ! zEVQxvz^~t9)EMeCTX-(~&7|<9UY9Wx<_zcAXtUC6*oY*DZM>12*nc=%3#+IF_9{JR zd$dLohelT4UGXju9!D^D@mbJu$^fcNpl&!EPpJ<`xGe2bu-YbpuNUBxdgpC5s%$SG zvs~!-bnAg)hi&}4{=mE48(^*;jim N0Gm$o9vq9MA3Ezs$F7e{{nK`mJ)PXx5oF z-%>*(OF;;356_~+XlP&Vd>~nPim+F>EF-zDy6Pb81Oc~`FZegjqixvTNV?GzYacL4 zBaCn_eu>8GI}$bv!4y%?6L>Wj#8G0p)14BMjW3nOdY?)aYLjc> zt#+}$p}VDy@8N*yh|St}@R*LXPSZFp+HD$vg$}9TBScw?r)B };|4%JjtYe5}!hUOrxSYRCRhofydMWUc Z`5y*Og$gW+c^}xhI}OtBgNi0rkRGS w_H<|x~)2BK^x)B0=8P;`O`T-7@Pk!r`-SB zs0Pe+RiZyBa|vsyZDmH#!j>u}qAEuD$D`}d>t@c2e%bEJDhx37IbX6ISUBi@K>)W? zIJl@jr1CS%lQJ>)HLKR+!XxT~4%jk0N*SQ)nc&o+?GGQ<9(t=QzP5Qj6!4YNQ{Qh? zA56+M&XRwoJP6Y1fUm)K9R!W&^%5laP>j8era-6YIHh?S5-#fA6KJAj&Opj3ME~`Z z5tSm|Q{l?(CL7YQ08VIV?VJ9r|EhxXmjM6iT5>_hXpBFeV-CWCC3V8o!&7)w^{1F^ z q!)eZOnK)iw7dLw(lL %mmAwxBb*QVJ18M$0qK|*?;r&rjRcFcYhZ$ym;#chRW2oHk&)8>w z!>Qg6FFZm(p8V{n`xSo?_MMTtN8c$-%Qj7-chh>{%L)|D4+io%Ok;97RkEN;>At&$ zZxFI4;*?!kuLy$1sGa-A% Cf>=04Pul9L zh9cL2X(q@^T4$)D{{^@ux`}v_^*W59_h=HiqQ3P0q_1}vj#H@7BcpmQN0y2^7?I(q zHwWLcsu58f|8ObDP+bb?l>J4YZwA+zgb=g^yo>b^)i*H+O!D$s;nHS>ahUDDmyi^= z-pkZIR{cgUZCo^eQqfB6^ep|-`zgIAda;PXa!t=h+*14TUX2 B2teA8k(p+jH*gK_b#WB3^4C{MvB^cs95jn{fZHj z^5J81b64_?Kc^OzLG{;;L1=tseOLnJAVK(3r_g@;jIQ8CmK`oX?VnO!ZzY0`kjD%U zO^Ev@2CQ(Zu`#W4-=mJp&V|%?X!NFt&V1m(2|8E5k)+Qd-2!-<{LgvjS=!%}vdX$U z(%+_n5*0{? F}mK3X 8-J0F0&yhXfk>dgF%ib{Nhb!C&!g@4} zu(5AsG^lcisfiFWSYp+b_-^p?WwnFj%1_s<+dA>je7p3x?QsgxS^fOV^iU}sUtun# z85gyB;3Mp5Qmv$epJB*xnCnBCzb?r 5(*9)1g(<7Cr-VciXCy!yxpvQ z?|5Ya`M CIV%PQaJ-&WmhYZp6U#P|*jW}Or8IHO z(g!Bd`NuoGsXq)TMHEA)u{Vy3W13>ladR3hbu(PQFB
onn3~_j>Q7-&tjoK@p=Q+dAPjP2l;Sb_&EQVXOXcG!31vc|y z@RW(CwAr7^q~-HBw)WBnx78d_^{Kp8vWGiL4drLI+w~!@KL2l^w1>X+l$V(m(PIx9 ziQ-|P;Z0BIfQpcJUCRzdZ1&}g5$Ns+9m&SCV6rhzj;F)zM86t5wdr?#d 5QV lDcC~)%Ybrl5OnCEry%-gT~Pj6pjd?xA 4!$ohOc D$b_PW_pM%KZ(pTuAWv09a% zd^|z(GD$8?3znLU!iFv*m7tNwP!ZQMJ+yQ`&U>_4%Iqv&TIY9S;eH2 7Hp57UZx|;t$Z||mJts3+pspaz7r XU zQ0eJrskbYvTY4P1Y-_#8nELl$37|t}!`#t!coEw@=Ly(*iUhXlE>XCPeAca7>f2LR zIcZbIpwaS3l%P3!{Z{0w9#7QqVD3*sjU`4Cqu><#A}w#p8QCv+3Fc(u$$&iq>?8-U zFZaZLE Ybmp9C=UVoD?~$bWDAirki-RJEt)%ToepqpGd}$ z9&Jnle?#@8qj;=fr46;b)1^1u%NvG9vzNquF2)?nKbdSqg~K}W0kUQlELBhQdZ=GA zP~w5R-rH-(D)YHOWZ{{0AyUG}ok*u*cW>z!#|?;kI&2h&vePx9OB+7<_Bb5=Xm6TC zjEPwC#^qTPe} ^!VTH(5igZ2$z8(<}vcA~*^4UQRO0@;?7 zLAoi2ICgIl!eXOZ8zH)BDwEfTN=?g1`{>Fxf{^|G$z(L$ugSqvXA({NLG2HUI00*r z0zT{1otBd%0#Uw DRobPug27HAPV7 WsOV}&GpP7o})h;&OzMkjj}rSlE)>lv3~U|Z4NK;O4<4b Yeo|T{uE?ukKqWd9;&6b^h7KP;XX~ Dis}ySI-lzb^PWlPTz_x;RIxz6@2brThxO?%wuY z6oGz@t5$il?*VMvr?P>vt)Al)onPeK*OUQacFYdTS8K;MI7x8c*UNKYYwpXu2S~q$ zs^{kh+{>&cDBFEoDy4T9rBe@scx|YBJn+{~=N;NwREBKULQ@Cl`7FM4G!Jf744ikS z{NnOzwgLx4{k|2`{1Qio!yBT5Y+*ecj=V)An$*0hkWh96_+d~cRM3th_@DbQ|A$2> zu+-WClhn}mXC?pT$8xQzKYFiw{OnTlpL)EazJgEn{XREGR<)f-&H*k@T;ookw5r9# z`T5OHWDn<^w~WozFTf`Imz!{*fZgAJP2%*B?F8#|uTO&i&)-D*l~TA% z=xl2o1EL!$z<#mK%Krb)^koo;5y0Z-tOez+uA6izm;wkIeiI=@h_K^8JG;(F@-ANj zA%JW&(t&G+ZsDCIV?WF}U)bQ&hwBgHM!O48-=TH|KV6WH`P+5*h_lw&TQ##(CZM&8 zS^O5B!*FxNP~wnLh&Rsv>dFJZuSs|K$Cpp0TlbNt3V}ZWbOJy_AC7{pzVh^)ew5-_ z)i$u*CHua1#QXF-9Y#%NGQI3) 2Pjm2XW`QP!2ED=qNM)grdKKES;bL#R@Zf{Le&c!&;W&7_@_*5 z3&?qtq?N9!0J9X(hL5UU7#24muP7j_I1Su}6-|H~1a;v`G%`q$(FPgGOcXeOJL?k{ z%thCAfMeDWI48`r8=I_znVG;y)Y*EVhou?HcI5T+sSq7mJ;3_e`(QVGyIo{*<=x}( z(b>cAd^OYF&3mOToE3)2O~%J4<=iyGMd4j^XnwC^=sjHuNoq hW6|6oBv0k5qJO*_#l zOvX7)DB>;-b=}6DCs}owp2w}RZO64KzpI!N{>b#y2BT`+(u`i4j4zzj@1nMZT*z$R zcKZ8+wA!NoNPq0cXz Y1%S|lmilaj5kgm%(dIboWzL$*PW44K;j@~$=e*Hr=~9m*k2?zD1I zz0m${_8Fb&lJruBqJI~S|E3Bq^hSKdjg1I8YBr}hu``>zTu}m~6Xq
e z4U1kJSH-_8XQvO&qnXUhqZ4@RxY1hqoC)E!u?Oau^2%7e 5mJY$rB5TyWF% zuU#{bBQ_4v=H@#9YJ^7wIqMY$5rb~)#z}q=lsn8QFS)?E0L$qW-QFuizlS-|l_fqa z1)kFvagO4v7%|lY_ zlf@d4aYag6&!suOWH_NiA`)NE$28@t?WMDCdkI=9DbA7|zTroM~ z>sg|6oVp+?l+kY~!#>{VEFHGmzL}!H>vBW+(=mHFQ!u>MCeYB+yCoh_o(4%`VPYU% zvM) }50nU)k`rO$viTVL{n0SGQgs&; z3RnW|7P*mppTU^W%V+lE$#6E|2 930F6 9+y`4Fz1fZtjTFqV5_}WaQ4YQ{mseVBbXkX(Iz+6s70KXuH zeNoY*CsI+myjzhwEZSN^gCC}x8afAE{Bw#mD{3;==}}k>X*@BeJ->a}bw0+=qLO*n zxPIA|{%E)xVo&msbx!UQB@L`0gtE3j*caoJq;3RHn?Tm_3zFfOMt-_uS8lng9C;9+ z >hV$x7EHKoG>rwvXT3AJN?I$PQU)e64;p%N(Au=DHSamxE+qm(&fkE`=B#oS z8o7TAnc#8gumq#+$&$Shf1ga|t?gKi%-B+^TT3z$MPx>m$*xvL_7$W%b1a$ kL~poJqnb}83U3N5kkfNa1oqXlH=XqAV1Zf5s| z?tCZC+L(G(6St6Z6)Jf(`)&D}dn;#X5)lyf!Cv|}nSEzT14H8aL|R9m=B;p2oNb|$ z&S9^wW^CU!IhD!YlNw^#d)O?Mgi6wfmT4Di 77EE2Cd}_MRhDJ^K|) z(*kuRz8>k#-%9+WO?H`1#Y`I08N2n$^3{3J%>+f=n4#{#GeO}Vdy!IzI+oMS6Z})i zq- Zd{<^s{2;TGFl6QYk IA!1F$eZ;4u zn)#`_$o!E4y45>=FMsZ~Ho@m1hJ;Qa&eXf^;{z_o8)VIPV%y#L84ko~0o&7npi1~5 zd-3>md68D8JBX8A`;+|<&Pln}e{Q4gp~%UWn7($jOc1*4@r>lsCC4atlCPt*h9-vu zjTD_#a4vNXbI7Xn>@4g?0(!(< |TK>%IsA_d#SvA#yJctf(&W6b4crn#@?^$T`KXqK5ifTNP0$vMo2N*UEXkqo3BT z|K78Id{MtA{$)^!I<5Q+KsLBw;6 zeib-R3W~IQ>?tQNVXd_xG)!A@$8<9gT7 wa=!SA=iuUfkbF*7Za2`K{4f zX`1s}W52W#X3kzaV76|+57ur4{G7X#$2wgps8Y3M_LCB`tCiTyo$nji81~$`p5g$; z>zVoWrJc(T)VHN3+UH*?>))O_anCa!7~OxpKm690Q-AxaaN65#sc#$ixJ-NfEcG4Z fRgz!6?*wFdYHEmI^q2$hONY*C>S+|5u?zY?WU54N literal 0 HcmV?d00001 diff --git a/pictures/storm-baseRichSpout.png b/pictures/storm-baseRichSpout.png new file mode 100644 index 0000000000000000000000000000000000000000..e837d34d7e895bde96f629222efe638d0ac14415 GIT binary patch literal 10568 zcmd6NbzD^K+U^J mn%MnX>l0)fcX)gJ1D zK$k{<%i!u2ASd#Dq$ZGDd!}aQ0RoYKJ-;p`3Xn4ZnKwO^O+5|V96Wt&-R(gJuFlVF zJv{BLXa;6LAXbq2Lq)?E>DU?nXO>I0xUIP@u;r605o-*_1{}&_v}u|lR*Y05@*_rU zAFk<43o}EwnXs+C>aX93YEO}%isR8Y@?aloH`Nr(#o4w<#g-|CxN9eqUQ!oGOim(I zFbJXUknfY<+*wsdHhj+}j{^%nmd$)T#`mRHdk;zt`VMS-T=B_t95iDnbWSAzfkZ`$ zMyNrcPXkwh|GUGgb_rDVl9dSbiQp9#2z32_YUT$MGzn 51z=Qel#EL5p#c()$ z#0W$pqBSZeV0A6qlAKw#Sls0_dt~erDWfdyPzWJ$t?$mVh6z#kAIyAf3dO*0>vmq% zM_zhGrEqv7znE}d!vv&2#-XN1yc$cu%kqlK3m6GqxyyWOAf*;iZ#b(m6Yn$!o^$tI zRJv4d^_BsB7Hu-8_#LOAh_I#RVu^-a@Dp6XvuU{GL|F|H9g=_RqDJ ze54t0;+HKc`JF#teLqh!c&9LEYyU2ltWV7&De9~fNVoH}Ky+~Fr<#@}iFTgK!oq5u z3Us6FfRVeu2Ry45?wm|ENvIehePck1Xpl%;c0Z20lQOQaeDukS2c33z`CbTpXedvC z_%BMBKY7U0ASu@A{@6>%`v
(~wJiE7;$QmCjdL&8* zQk1lUYfSIfQqA8!4js0%Pjt6X@Otb- zU%5~c4BBO Iglw~2;?f?8NIY`fj@JVYI#KfTu>iu; gxkRzM=?j~aV;%CbA7_x+n`KaAU?9xa=9?jHQC5EAX~sdH z@oZ|gkN{O+FakgP9wDMZuZMb=Eq`!6E36R3+jjj*a@z>7bSQ$jE?jDwh%SZ{E*{jY z1Tu`JZ{dHnsM~ifb6JI8=J*^D6a}+I_NgZ7r&)*}w{%a-yvfw%nk=l5VZ%X9k9SVw z2Mv-^@|b(u;pxYnx U|**w2o90#9$Kk1ep#m+CIBaec) zi;kD_SH8p n7TjtZIrLaA+1pN(LLkOp_csKp>+iJDJK+mS?KDqHqCV$1 z#mtnq4<9c*HKW<=@FFEIxx2)kwOD2wuY@UE!!|(#zuU!es&-kqQ_)WCHA|MdJk&py z-s=+BdE3_>V6PnREuK(I;p03MAS{hcYlR0K6HX@EraDwW n>yiFZ@<*YXwqc1y0HBaGTLz0(FaVUefN|#noG*^jQa{amcEl>~N<> z{RzwA{7?@XsyoCAf$YH7B*DZD&o*S?Fw26v$TA1ZD=&{8#^jO@#b5sOh*c!X4mdxJ z!|X35Pym}sA^LB}@@2l4+iYrjJ7Hn;0#-zQY8xygpwerK5vlbK{q$s{q`Wt-8aDHT zpj7fVuO_ISVem&gE@zg>LXEW}Mto_0ld6xJ59VxM-nuXU+&Z}JxN `1SmOkZNJ zD*BVwjeLb`C#xMn`Jx>%d8(?+V~6i{5-W7fkezY_qKYvDw==TtR|5HooEe8RDXHt# zW9KiFffwKWp!ez~?aIOfFFQoA65UbTDEWpokA^ev->iCd{=5l1>;L`Pf!6{eSZM6` z6lnIP(PchirKa-=hAt{7XIBfM>z*+9quT$X058!ist+L#z;(1TxXCqJmJoebwGe0i z!lK)D6U-Libq-zrlW`$kc9m$hk1h4`I_JOQIn43jvfGcW3j{!mcDuBR6$B%bSn#~+ zzMku4zEWo5FKf09xG%0b6#l@m`~LwI=#ACa!OA?TAKBHi^j+x`)BZS;2tbyKWus<- z5A8WQIT|LH?1#q3jnVv6g0!Uk=L>>fyi;crEHcbd2fSyitAoQm#dRMjDG}HDY+A!+ zn(KhYp&?A0z$q?nWjvocX(N1)Ll6S8h1%_^!2}Eec#+FQaJeM%IY>!7`}__TDqwX< zp;qZ7Yu!CRg5oO|cY@@P{<;f8>XJEygA}0_q5cF}Z{&t!MODQlf;1K=7vl26h{()` zt1KrhpGV#vurl4y$Xy;Lho@PfNj|Z^Le_7ye0sGq8@q`tOC^OA$_DR$q04A{rlKl$ zpM7Q9VyyOsy_CSaR8^VUDAqceAeV{yFH%K6o3g{YtVaNA8kgb)6mxp9&IJI2oh0$m z9*k@3s0Tat5bVw%DDpVoA7WMy8| z35rCk$01R@lc**+quq6qJo&}~DQRz7>nffejYbhf$ ze%Kz;yU?oR>IU^KQF@{L6cG8 zIP+nM_lu8$j@2^<#EX5~FRF@xaZ-($GTyh%2M~pk6R%)kM0vb HkMY<7>K2A+tsMHiB-2|pr8cE|K^L@XT&8iH`-4?0J%)q~l51+Z2U!REi z6pK-yj&})yO3gJtHwf7-+?h$>vnPvQU7UdjbrAygHR;8GSC$`B%kI-w)hhEgLYqj& zH %jhj zuPd1W#zAcqd+p(P$_91lH_{SiLZnxVw2C#- nj#e^x~>O_1}4HRwBM&r~~@fdsVQ)&QJi`6#giSIwj8SY%oS?ADt|Ah0X>~ zG66g6$Dpf;m>54ERQJ)*w96*g=KPZJ4-;Kh9Zzu`d@KzPv8XLDS%aeAlE;4c%biOe zrHrx6GU)22sQW>wm5QVELX*$@NT>DIWC=syP1l0=6A$b EICRJM4K^;U>wsGauq~zN#vp3}VNxf=8M^ z8@1FY;t41H4mFq#e>QS=8f>jdcvos#@Zb9?5j-GUXWcI1=v&hHJhUOJN$W||@<4FH zk0U}lK@5^QZDtF=9` bd zsiws@6-B}YZZ`|e!y$gu2nAv7yMD$TkyJEj`M5S3TVXNC%|@HNb~0#1N|_`KNuIVj zrht)*pHg1LW1dC@Vjtzqh|QIS%+5gH)w`VoA>_AX3Uz?&^^HByD+mh HNGIf8 WbO7xL^;mI+E${ XbFYb)RNy9JwX`23nkt)f_ z`3~4hFQFS(d2eJhnbQ<|5 Ez5;7@n?KIDnP2?1jYQ4e zAod$Xhu;I@I9Es _0@ADxj|9@Ga>@_fkTJ<_eMK}nt=YhJW3yze#t$`TULWY>-`k gjf;j&?ms*A`?yLIE-Y8aOogQM2l6?xb^GfgFIp4;!Cr~Ozq}MP7Ko4IUx*c1T zjX>UV>O|;TU*@an^%jnU;x4ig?inY~^xwF%sl^(#zt$0CjydnSQ3WOYJD>^xWRf0| ztLS5yF0##X;+cUe$S?DWP To)0*m>%ZA%Rg2C2@H*B|=FiR 2Qf>Di55{!j#>7GoS83Vg)GX&HhzGnO9 }li z4X$7dl1zWqc7sZ&h-}LC$&c%fo&XF4&gHl12sfkAUx`cQPoAHg-El