From d4a3c0e6618793c48ba5c54d1ed548acd96f6a7e Mon Sep 17 00:00:00 2001 From: Matt Keeler <mkeeler@users.noreply.github.com> Date: Mon, 8 Jul 2019 19:40:57 -0400 Subject: [PATCH] Initial Mesh Gateway Docs (#6090) --- website/source/api/agent/service.html.md | 7 +- .../source/assets/images/mesh-gateways.png | Bin 0 -> 79522 bytes website/source/docs/agent/services.html.md | 8 +- .../docs/commands/connect/envoy.html.md.erb | 101 ++++++++--- .../source/docs/connect/mesh_gateway.html.md | 169 ++++++++++++++++++ website/source/docs/connect/proxies/envoy.md | 25 +++ .../registration/service-registration.html.md | 65 ++++++- website/source/layouts/docs.erb | 3 + 8 files changed, 345 insertions(+), 33 deletions(-) create mode 100644 website/source/assets/images/mesh-gateways.png create mode 100644 website/source/docs/connect/mesh_gateway.html.md diff --git a/website/source/api/agent/service.html.md b/website/source/api/agent/service.html.md index 47103d1048..598264ed0d 100644 --- a/website/source/api/agent/service.html.md +++ b/website/source/api/agent/service.html.md @@ -518,7 +518,8 @@ service definition keys for compatibility with the config file format. - `Kind` `(string: "")` - The kind of service. Defaults to "" which is a typical Consul service. This value may also be "connect-proxy" for services that are [Connect-capable](/docs/connect/index.html) - proxies representing another service. + proxies representing another service or "mesh-gateway" for instances of + a [mesh gateway](/docs/connect/mesh_gateway.html) - `ProxyDestination` `(string: "")` - **Deprecated** From 1.2.0 to 1.2.3 this was used for "connect-proxy" `Kind` services however the equivalent field is @@ -527,8 +528,8 @@ service definition keys for compatibility with the config file format. entirely. It's strongly recommended to switch to using the new field. - `Proxy` `(Proxy: nil)` - From 1.2.3 on, specifies the configuration for a - Connect proxy instance. This is only valid if `Kind == "connect-proxy"`. See - the [Proxy documentation](/docs/connect/registration/service-registration.html) + Connect proxy instance. This is only valid if `Kind == "connect-proxy"` or + `Kind == "mesh-gateway"`. See the [Proxy documentation](/docs/connect/registration/service-registration.html) for full details. - `Connect` `(Connect: nil)` - Specifies the diff --git a/website/source/assets/images/mesh-gateways.png b/website/source/assets/images/mesh-gateways.png new file mode 100644 index 0000000000000000000000000000000000000000..929aa35590ed849eb81a9c6f478ac1e4177f0667 GIT binary patch literal 79522 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%0DuRR z;6{hp`?#M;z+Sb81hn>n`O<sNKS4n(EQ69*p6C+s_6ax4ukgow2QQ71E;>5SZg;3Z z(c}2F%QXVzwb|bB66|>1ga~<z)(~5$V*?}v3B(%1T>f)r!UHfSMF7P(3S=Adj+}pW z%@2iW099L1+`kI-@X6j%7ax0Pz7e4F!QeccB#1>yWx!2>0YP`VRHJcIY`Y)NY1Rrq z$w?gkLQ~?vEBHxW9@fbi*4nTxIQM|DM^|*fRc>T08vs7>TI-v%9y5ySE;A6ay$ioZ zieVb#!-Vz=OmsYA!sS#;vr+$w{R>^fMClvt(s4k`fD~*jqm`^$LMf@Yw;v2%+B2^q z!#2N1cj>JyKPL~ueDfg36m0VOz5O~ccC;A&b?+=K1q}@JgwlVrNDZZzbo*7&-+xA> z01(nPf9eaW^`8g-9n2L|MYRok=YJ378NvDQT55yw--BPp2^!B&rdPmP^xv!hbp3x% z*{VPg!n@#MqCda719uD)X2c~x{O1dUlfUEgP3->foTBdgCoN8r?n87If4r>ys*6b| zt@k{(o>#zMV1K>+uRg$W2Ec7~x1T=V-$y<m+<|CKE&S&1tpSrFVBS&Se$o94&i@Zt zS6FLwFkx1LriA}rxQ?*~=CzL}!n(kp)_Kc-k+HBP!N33Kkzgw5QN;hhVz5pGJ(gB( zG=O%*Jm~dn!rvP0@_+l8*K<E?pikD79LXfocb>-=2ji}S2^=yG78cVZg_rOz733cg zq*LXXD`UxjK0uQAT%>$A^FsxOs|4KF(=CYm?NoVfT;I;<T+&wG&FT`qCD&=9ofk*= zX|l_1EizTAHyrY)kD%@F*H;eKPm<rm{eA>{Udf;%BvttK<z+GW&95I)$y37lLmg~M z_)rnB<OT1-{`jclGO-mO(;DAm|L@6Ngbk5zgAK9_U$fKxzPSnBtn@_KZvL;VRKcVN zc<~e6en)Kom30@vR13U0UYvTZ_PccOi5$$k!iU_o;mQ7g-z-D{Z(d+m-2Sbt1F4R& zHYM)x$e&tZ<v4&h)tld+y!};E*q>Bc_=o+QKZRVM{CyL&(^z{`ZSaN`))~KhB*;6> zB}r34PWbPe;|LG?&90HBz5X_x`w?h*1j@R}@80><mvw?=<8t4Al|_iPHitnlOIg*x zRb}l$7qz2fK*;SbSUlNggLGlt*_#W8?T~_oyQW`T&zbwOkyTB1=p(y3cF%V03g}B8 zSu7^DT@mSgMbO8O@g{j3+i+0bLZu$A6QEzqW)AN%ge5sle01p@?+Xfff+yhF*>@XF z?E3Ef{YtIJnm-|ATkm{x7RxW6DMxNoB{j?mH`~g&>AWh}Z%3}js)r0Vc26)s1AKz@ zak1r7Y2lmd+-wsR^2v|MAMby@_f9IlF1=DVryR;X+pM<bwksF*6i;AvCrb@lb?era zTTfa2w02rW&{X7>vordDIx|Rdqcj9`;GhiX<N9vD5&~o@c@-bjiH`v_SEcK@&HN+0 zZm+oG0#P?{(c|b<wk1tM$20@D3jLkUuhZg6c$!QF-7Cviz6xm)6}8M}nt0;lO>;m5 zl#F87^tCI3#-{B=!EmgdfSELR^LXkd_-{C$(huqx?ZLz*r0u-!4+hH<rk!8AXXx%P zT`x-|3=cFXc<v<GSGa9{-WTCL*(x|PBwOA@?T&PDHQZQ#GjuZ<ZDtfkILg!1z$N3_ zS2497v#Nh$$;}H1-!rpQvZ6P(02=7~+Nk@u3sRq@lom(6qgnBjLP9%l=U>?%mUZv7 zaevU0O3*uPijHq)amZf7FC63O=<i$e*@xO+6rQhlF32*PS#Dbui<oDZ1}WToch9Xe zra)pq6U%M!c=SSe`HuhNnXr#WXwsR)o@UsO>N_fGk?mqS<`d=ORNBSRy6l}rZYRC9 z@uee)TxctuMYEP$WUR%0_;&;x1w{}YF1xL(Y4~qX5G2-Wa}HvpDBRN{K<%C7<-N5u zJ^9iXU3qB~|AUSw<uhc0?G$|`Ow!kswX?##B`T?siqGLB4^lk4-VB><ieP$6MU^Fj z?I1#MA^P^5UOhQ%`5>{J$3&?0vV%k4%H33K;|ei8P<(>$seoIGbW{6P=K6Qq!%_5^ z^d%^60;3x#W|60Df`4oE>+MNOqpy&9jtDBdSu|7vG%3w<`w@qM$}nWPd2+5AxvTVm zgdMlSK~5WSZs~gBsRo}lm;D3#X6+E&YO%hQX^LyV1XYYAT)qrKu}-;pzNzMkyrEru zl;MSXBLp87lFQo56H+rj)s}4PC<?aQWrjFbR1N-03xBsITcN|~*t$xcg14plg5Td& zNy)x;stk#F7o9!O<kp^W`0hM@v1q+7sC&D!fSV>s_HgC_^z958m!tL7aA&-w#Vh^Q zyzOdTsHE1Z=3$haQPJEbhw<5@D(VRID^bc&Wbt~?CdboKgL`S`xK`>8+}T^nKeIMF zaO1Nf+Ah6i2W;2XU=hgI3EG0(8LmtM0s_0LnmpJxn<;3Qyx-3^F6CR3X#C~n;J)y( z@MU{7Vba+iMbKu79CM7s8Ai<E&ovE{VO|MI=f>-`HiJ^>*C$Q;ajART2<x}9a?I(x zwu0{Jz2PpKx`bzH283Zxwib9W1qXm~MEP?*OJmY0j0IQy<?kFH6CZWDduB^(Hl=g* zGu}gq$)qew!Q-RyoP?q_yA{Nx3bd^Z^hx)>j_n{x<!5KT-uW`>>%f9lJRsG`#YlKR zF9RZiaxP1Q^{m`aVWS#1E3Uzhd6!<i13w{q=q=xHVsVg12c?jvtk>EYl<e^)S`cxq zN-JM+mUc=C1=}iOsQfuvhDPftVP{*hJ9oK7YqS<)b%^__*+r2FwU8a0&12h^sFl;Z zs$5q~94K>d{lu<S!KRP=;5i6w_)<PI$cxyf0+zT5+)p9v9x1i2at$^Jtv?Gi?R5-w zVnfh`4kdoX8zt;I*Tw}#yuSL1^f10^heS7Npin8{c7HgpWk^A*R9-LOZBoL;NJLy< zG{2_1JmU_2I)8w6rJGpmWvAG~F7K;-BuMpf$O+LxN%vl#SefLRr-AH-+iAhc)z;f& zOGB16q|GD4-C|;sqBAJ`p828GR@AJnw7YcgGmj>UE|&D6TB+f;wdAaMe71sz?TE*+ z6fB>QMo$&%3lnsFwtob41XQ+-(Aj0M6ub>dj4s*CJY^9%kM~@fV~et@?g;Iy;EGEq zwMJyAC%5xg5dg=JU^`sC=Wc!tGP*M8jtyz=oM2Yht!-tAYzk>Io;Z3EXqfEDcnpgT z7qMbQMkrl)M}I)+%-ncrKw{`tqgJV=UO<W$CE>E|Mfk|-V7}u(pwC{3)AzDTiq_>T z%;B=`uSRaMk}E;@`AEJ8Q63T79vy8zgX#;eEcA}mwVgTaNV;Mf_mBuZEws6hqV4TG zsZx1cw@DtkC%v@sywLfY7^*oHz2&INI>aTHT2?yezMo^VLAsEnr;ycOL{H6u&ZUp` zkr)hItamMx@bJ(W9O2?V7$3zxN!WfQai!hY?510=yY@#NmrSe^f8VxgWSGV1RaRT@ zMADp!X8b#v_%W6?r^BZPFN3|W=1cFS7V78L;7#^_rnjk=edu@?vfZrE>X@O<D&|^A zTw1Nfcf2PDLA$@({ZcPl+P^QTed@AphFa*{0g<Dm2aDN!Da&tF^9|J?o5I;$0*>$u z0Y{8er2ReK{4|%as(i3geFW!k2UO)_0)81i<lhe8Ywg#bEg2fxli0lPLtd`h?$n3s z^BzLR4)|!ys)M;T^^CImWevm^&uu%U3g~H~3HZf%)Ny3z>GAnw>n@T>&Dy5=V!mhv zmfCp^E)to5!wvD?3(Hqsx_NQmJ%$mj#!HTK&W;e`n!=5V&}avbz+uApIvUFU>T8)V ziTm*BEBkIshyl!8fddu{@*uAWu#B{y>F0$nee0tnxqW^a+43Psx)ImnA^w=1I&>oV z1yp0vdS1U<K>4O!>q~uM=d4$LUXPRV(ze$0Qj1Ks>itAD-l?lC9$Gb3BFyoLqBVGz zvWNli`BHw=QtS7$W){~R3cF{~4SV%j>=B3qQQXcWeGh54+HF;Z1A?NO9n^TLg&F%P z*gg@Kk_)fuL%(*rrD2O*UsC))w2DUR7k(kNlx4CkV3m0?SK>3s`|#)C9b*O=*=kJ{ zFo`8GsCd;Cgb;8P!2g)ad)M9y6;p1HGBvz4{47t$`pKaeo^ZD+q>2TXGa@V^vhVrI z5?6C(rc7}4kh;y|ETj%3^44z__BzgiwzJ{Vq;2y*9xqH$vfAlUd%~JW7?|buNiiSs z=%bHt6Jm-B{nQE1Cz*#PE@#*si6QPi54RJjUtJ{~B5_JXov*@BrCYiJ65`}JY2r*t z$Xb2jow5uU^tMlG%Mu<C8d99?h0_YK4~}h%R}<lpS}ohgKTGi2%~B5eN`}+Y5i^gX zMy*=2&V=9F(Td3{)Kh9$?!72}7lE5$F~_A7weTfqp`7<wNH=$2K1G<>V#*dK=f(8O ztt)#wZ;)?Dww&g+$G(#sEm6XuXV30#jJZTxLi`9ybmzFKOL`>Is4!-6-zzI#x~k3# z)T@X&<Dr$JP3xho?%GwPu6{8lCw*`jldFE!lg8;*FxEU+fMy$IIzCNU<QnY|cC|rl zc~=}9-5FL-!pe?p*THInRG#YYp=T><XLu74aa(FiYK^={k;(zh94GiPY4qX#jmZq= zd+2Rr0yI>#(>z5V$I;NOk9x!sGsMWt`iDP%_gOpQNqjwBhX`}SXwbc8>mRlk7=~|= zj(M3g*pa>5#Y|VDU5KV2CEN?535G=7?X<(XMNSmvOQFhXvcC+Aum_x`^N;vGsQ@z; z`&r2H^~=-d@jlJDsa3&;GM)%lVft2%Su9q#bw34U&Y>jTkUGOzrw$>wdg-V5%eE~_ ziZ6v|r3(o|y$<105#L%_y3BtrT^+0YJeOHA`yH*iP$0yy+Jefwo1d&|PwY9x10$cf zAz@84<=AY$212OAl1$3;K<k~^fursAJ-e(Y7w(5r{k$sOT4+ADGu@^VcfX$xty2^A z_dOjvAelFy5hKb(&A)Xnb$KJ@&y!s7m}oG>)6cjX$uRA_^@q&fF!}xIpk9|13@aT2 zkreb==u(=BX)rY3rNQ7Vv2mAPoBh^xDJy7h-DT}(tCc~L;N;I==D=scod@tyd(9;u z^EO^0I$ZI|h-)<-^e^%S_A9BR@*rb~d~t7?TrGq4CA=&*GDxf6A|>{K467`u2dxTL z>MP09e<FGeg~D6v7ad|OB}OZUKc)@&=%5ggae+b?{<-YLo0D+yYv5M-ZJrL9%gaQH zpos?3$P)GoCY^q1ibM6M>7iUGk-8`LHGv`Lxg@K?vO~Z|UFlzU!f97+jxeQ<Ek>dc z)`yDdUAy#7yQDwMj&f8(;b?@UP7Vkp#?@RW)~oTZvZih$*D3gHAZvOkLj}59Qo_V- z{5E$NwK3JXAFM5b&2$D%B!U&!26@T`n#byDWV4mjzP+oilG8|@mlV}JJ+Z2yXk-i| z0cPi4{j~h?s^48naG17W`Wi#}Fvp<2K0P#&`dj-*x?lSN`}Z2pNGjq=m2sh^tT@t$ z>6#=a21co|7Vs6pZ@$rRoI8qOJHe8FR{V`<)941xWAV6P;lV+)LjcVF`T`K#D`}kn z{Y1lC6F1A6B;(ps_|P0T2Ed(na1<5xeFGW4P^;_LJGBhi^HtNntbAX-N2mhug=0P1 z5b?55_74CQ^yvY(hSu(o>JI<}tNsnZtN)LF)+xw?Ke_<}U3FMGLSMdn=<!~51;@p< z&wc{cO%+rFVA#no&w&P@$T=+?iIhnM;*F@e-b`9OD@N(VgY%iUvZCKlzs;ADRT)p3 zY3fNVj8}`7e>(L@c9=lcF6}nD9NO;}f9^~^_`!;^(dk8YFRWN{0G6V1Twu6NeiLq= zGh?xE$dMEGe!DnYh!qES>2cSn9I-hvLGy3ym&s4@KkTRX4zWFKj=#1wcDxb2skC8S zW(x-0OF95fm^dRZxd%%B7LQc}R;^W^6vuNtvWrgiIXY&~!Zu$AOoAfployo!PJz9| z3CS0mto;o~{J(%7W#EFF=5h@o!Iz-1_m}K0PpS%Grm-IwEiFwkIU&&9Im+HOSD8~J zF1&nZ3Ky4`24dekQTu(N?+`1+=5YmvMLxQmVWgIq44iS=aP79ZyU21Iy>6^by!|!S zRByqExU+tO(EuCDi<zgxC^6ZHCt;^%=e=oGy{G9b=6!riZrU>Bm@?>%anr^tU9Of$ z6ThZG53a<E7cZi{BE^5R0BLuAEb%_<$w-+>fu2C$>CPmLxbLvebpJY<G2y=eC;x`8 zX#uR#e^>`@ijrx&Q^Ne7-!tof|Bz}64)UIDUd6vZ{RiK}PWM!&gsHoU&q|?;d6Y2n zg$$4qJQF?1u=$`x_e})4#3v%9G0$01z%@dIS>>CnURPt2|BEIG#E-uWfGvf!Avl;> zi`vyNZ8xK^|E}8V0ge@9K)RRZ-OJ6NbP<lGc=L?q0cvQWPcdfnW38Sb%X-2{k0iQ5 zXiTqc(E@CK-bJXZ{Fdu>)U&?8%BsZJ6ob^04Uv`eV65EVYiqLshmzLTnpsS-^-i1l zBe0SLeIOWMt*~Mh!pM>w_PdIz(d?CI9|M{g-+WGfLFuqv-Y?KlOrAuJ^X~K<oo((` z{qW=1>Wfu!k$b8smkr~P`I}#pUiq8Cp{1+tRy3GqgPDLmOgW$Vm@d=z=E>zsYk!b< z{KO9N<^pX~0oS47;CZhq;pxx5BL%f;mp5y9*9_F49mtU+px5q4i^6J^OdT%SX~?iV zszzY28;6x#`MX%K>ZyyP{!%?u@_AtH<tj!i{n|`^{YjMqle|81qUYDF_&tPFDqvnI zQ}_P*&Tqa4RMH=+)nm2-mcoC`Q6vqhL0;s_-wA=WrU=HKVWracpIIV_&BVs2(qsG2 zoA$Y&9x(^%wV<B=6_<&O7av1o!1d3Yb;_U~QZ9v>|IDPn*!|C&TA&{DnGLE%|5Xg^ z1-WqD-4T?lkrw9WeN)SM|9l78zEaS(Cz6`W0xy2m`xjdMUrB=4@Y2S)aAh)oN(LK= zCa6NqXYzmAnDZV~9y{FPpQYfl40@+Ml<qGFm<kGe*q`rhj`_ER$XI|rWVF;r`lpF` z&p;m{=qLPHQ@{|e0p;6}N&Q<31kkNC&t`o8X-7L4w_t)d|JH&A?5k>brzrlZEESCK zo9%l1Pc4*Rf+it%z4*7XHlX}vvFLwmfef0YB3SirWj_Kc5|^Xw-&&}^ShfGRyDZ$? z+`K@D_1_kF!}%e=_9z<7md1bDN+pkQ7gIg&{~QJh97eq$28^1EoOvzzd==P|{Qc5s ziFXE+-F<(n?oUq(@*x2Nc4X{G^KZABz6M?B&zP+B4|Piky3n;QJ~{aBo2W4AcCWpB z^KXrgpM&v`QyZ~^!Gqrg=IDYqpENl;YW?>_J~bIkp3QYrSBAfDvePZn2AG~LPdR}1 zQb!P)4wH6&j!rpB$=+4_wRX9sK&8r`7XkwvD+keM*Ygx;jOZFC-}^QF2OVHWKvE(5 zzuSR7m}&U0abURRe~nAs1YfR)jK}}G9SDPhAJPT??ItQv8rTku%=-V<@81pSzv9-o zLDP!LD-HiE9(<?=%oxUdz3KnFX`ck@F)^iH{-^7_;S9iBj`1;2_~*?!*=Imv^=IPr zU!LjD8quN;Ph>HWlqK+oay={hr>61<KKj_xC4Z-}&od??NFpqv(5$d>TvfxO5+n)q zrVCbqI#l_?3<=m|81z7302wJD%*ht$QZJl!a7>>Z)Gu7`fV69;DT5d}_hrm23sY0l zD?$O!D{$rGT-9Fuv@N*f?P^1<Io-;B5k$ftfixKfRk<4ww<iFC<DRy3qdny;DR?)b zvxEq8w{LHDZ`09^Hpa|8puU(i$xd<v!Q{qdDBz023)tv^a7q_&>*n>vF#)?NmJ=hm zq`*`e3W8^rI{eLGfp*64lIXz<n?g9Y|KC*7xZ6?>lgLP%7Z<n~0`hBYm%J&?%R#&D zt32i;4CrZGy(qX0iF|I3j-~ANyiPls!~P)P?f~59*X(tBvsv8ixrV+^b&4)<dp>{( zZjQ41s+fDf>!#yBEdX$pd1y&gMxdF%ajsn9)ChH>LlI=a^Q63L<r5b)R^Vp;)4p?} z7RS8vkI&*nwdPZ0TY9kU`v?8CkpgGm(Q|y^CbXR9bOQ*ZwF;7>QLd44vJd|(t<-UZ zXu3C#WtYl&8G5;5jC;XVrmYMuv%nX9c8~Z>P_~=B<^n{}CG2e1?>4<XYrzeaJe@L1 z8H}?7VUaP-SLC0amYU|=b{pGPMDnrfK^zzg?vB6PdDNY|{6I-+LeA@A1l(AA!1{o= zE?zd9nPiK9{cA+B*Nuy14#+pz2I(w`-;x@ys=g&nqI;dSCVp!qNPgE@|MNe*`>UVx zNHF}MZKgmm#FDL}L9ZQ|g--}Qon_15S(QaKxOsx_fb>4N#1Y5_F=;1g`MV<x>$Kps ztW9XUg^qnD6E}=O>WxffHyii9dv7u!;_c_%Zy4_APuOxSEHcfJmN*}6Of;QTf<&gM zEka0o<h@=R;n%$8lO@&<9<jcn09U!-^SRo;iK@_W1{yseg-Bzv{kj{Zgn=ZVE1(v8 z4bmArKrj+WQE8fY-PE!l5*-o^deR7{c`fC6pAmm+Wj)Yynl5axe8Fw1%@H$<`Fk@; zg&?#9o&^X1juH$Xh!_onoDkohAr8HmnR@I8?eFgwDf-DK-p)|_^Kpx@;#l>hUNE?` z*9d4e7^+d7eE#JAGv)S*@(t<N_>%qH?Br>XmxNRg?xC?`Nv@uA)DSBG_qoX?NxoWE zJ9#VvLSRoD4k0LRhlCQgT<v)6*?45%=?<41-@nwu36z|Y-Qny-d}=K?Dt`iZ{X8Y$ z;nqEL-aQbcV{~-}a^1QZN`P2{5slXMAyA4|gn|${y+b0mtw&Lm=Lz%*Q1n{C0#d=2 zK9E~fuk#%aPmcdwA6{Y$N_4-X%I-q6Ql$!`2-o9>bw}6vJP<L+sNt=LfV+S9!0KWA zv1x2%RorVJ-oJTJ=BoI6OBhYNvrj6A;kjd%LWV>6!2oC(qEq6Ry`hkaZ#$u4Gir;$ zV11HKfyW1879+Z!+t9aG`yP;(qPKH~lQ>4d^44XGKZ|A7f_vF=3X;}*MXalu_gYZe zaw{aBffyg(mR+}n%Nh+GO)mXVT+VQ~ui}{R7eJ!fEVeIIoYB*Dl9^Yj*)su8Z6$<- zTfrTf(>qb`6mjpbuk*gz_&R;NjN4oT)DrL{!jMOdEV)`}J`94}Xb~x;%=>Y~Hj!4& zEl6k*%l&u|kuhiw`{@xI^^W4766{zQ2QQ%3BrVEtjy8koDH>&O?UU$c`i=J@t95(4 zI|>;$f3DG?s?_5>H_t0M*vSGj5jF(9&!R>@3#0Qz>g-#2UCtDHU7L|weR*nGw@&ee z7%#%Gj~%(+4idANK;KpdQnpMW45~;PouLHc4ZV9@Q!H&OV4m{TLeicS1SR8F@&Q4u zsTM3!cgzMBM<QfjEB{iIr)MC?>=>jQQm|3>!0sC*MoYuCEkGJyKLOWO#xcIgwC*w_ zkvEKc<k4|})Z|hW8L};pZCB;%XZ_*(0Z>!fE~7BgY;r#bF|W57#Mgn$2LjjYa-)LN z51pRTdAE9Vd#tq$@*a)vJ_Tpg({N<9nI`4RmXEyBppk2aa5uMw30mPqqe)e}f)CTU zatHMFV7Ya*(0DTtCCo{xt|v*v{Je<VdH^>*AV`KE>}^%FobG3PU{?sUe{>?7@FH|K zBaEAd=9QqdG0_*{Nr@fA1zre{V&XBR)WPCo$}5>g5UZ@kUfL3pd}wkMQu)IU#N>OO zl&AFPhQ?_-L%xJxfIQ8fDHZ4APOz~8H5Xa@j#2zYBW0c^E$DIu{y!rUB^hcK--AR} zae~@&q-J^%jl6Psj@xXOi3V;j9dnou5jJ4lG#Em5rbzq7UGI=0ocE|mW{|Xn`CVtC zTgYP1p>UM5=r&x4{%z=DVHuJwhk?2*wlDn8ZeVxC1~F46TDO2R2VWBBca<M+f-vJb zaPu|eb06!oN8(Svb8yjfseInL>9_KXAjZTyq2Qx1vRWE5zC%RI-=`+Q!l#t6hm>*r zS<sOW{^%+e!y}fG*{!&D1)0-SyC@ds|Akdkr~d(lW5Db_5++6XskH5b4^u$Qger&} z?1StcG)$)RL45p&eXK4z`;1=aC@;Bkson9oAfBwUlvUVy$RwQoqITK7Gk3%~%PEz= z2XsTaag79%h#X4@Li!Ki2`M9?f3U2YG8{6k5S-?-aj#H!MV9Ge`GjUq0yCNqD1F?< zLHeeO?bpu#*%X4Ja3Z$8$?ywH#`hs0!!LxXQvy%Kh{x?!vt{)~xJ#MwP`cx(q18jA zg{fT{<lc}1@pcKPC1Fxj);gw8vY;(rXy#MAG5HHP1y07Pv|DMc2oJ0Q*Duqu=_q8U zx;)Q7Y&#v}4pK9TJ}!e<Txufpn>)xOdd=WY$6ANQ5N^d7QB*>E752Tnkj^M!l_zhc zS{%f`x%Nk?y!Ndxlia+?F;<1t2`I_Q{~Bc<OHvFLmGr^HpSF)*2z~6O6gcl5e0Acl zXK~qQ7h$fCvt3nhTea6krXivKsVYF6DI>;7Y{rD4VVLS6L5!!4vhWF9#@tl?5X&bw zmVk@4Aj}|xasl1|$+$rd9B}#ci>f^llbNU27}~76k~tCG)A$FUz!f)wF1F4!p+Q8x z78+R}G}fe@rv{@nEMKV*SX4aXxHqe|x31H_LNq`3o?E=XxAA@40WSgM6zm*7Ctb+h zi86i}-h$_FOXm<OHp+p7b9f};S2jTh43h-+Ct4%or$WPX`V;2kJp6<M-^K-o%k%W< zC2NHkP*D9$;{VybH!nlv^)P}`acM}Lm{8J|QV`1F7Dt}s9UDqw%IK;iD?CKgy2R_) zy+!prlu2q)t?3}j7#D@)%rKnajjR`u&>lk=@->b1(Q}jMZ!d;pIGvzHBon+e-MpV> zBdnX;S<lHvWNepxo2RI$6qdFSh*(!%YTRFZWlD*X!eMWVg|srHyf)=0rD;fX3UW|V zS~TGdYe`~~%$$HFSmLK(m%K*K9yt4)8;OpCM%odw70SDzu6MnH^R6MWh8Nypg-B!U zKvNCo3-gBKQ%c=l;NTniUcTcGr~47RtPkZVG_K{GweM;<5@~8uWKY3mo)2GftTp9O zUS&ovl9FKo7*grCPhU*wWBM0mxZ+WNO2*IZdog2vxE##r-{^;~|3$n9^S!u=AA+IQ zb3D}kN7RP9D>A~oN!?5@Y)ns1N~8_B#F+`7=P$h(lYez2<0bS8!q>nZS&s|VZUE`N z=lwp`0$Y5miFTa6G01)@P59YHMNwPkIM4CTJ|Ra|e(Oz6XDI#l^N3fyhY-zfTI851 z40091HL%W-MTD(GBHb$FDtFSstr2D<<!1mX*%qt*wZ4wveZoH_cx2sVh8Hf`7NRhz zO9#ryvXVTr!lK~~06vi5fb;;yjFHu5l#bdsMKGX`HWP2Hk->@zFBkL+F=eglFL8nt zLDUT*<M|JrjeVv@?50WMlBvn!V#yms*^R7l3%>{t?B3CQrjzmNU0qJ0<?F&U7mfxh z$5&vzynYAA_2~XJ6WiN&xUK$xBV9#0!!sVJhbEW)0U?6bu&9*in0DE}M92{@I4zQ$ z`uX1d0VY0{)PR4WXADmIO~Ar-vo#lhkN9@u-8%lloH@m3Qzuahb7d)xlD}5$?`6x4 z8^}Yen)FszP7XYv693kX**jEL0K*{NFv!M|GxqoMRPu2ErWjZfW&Vd)0oOqZV5Zam zcYh{WR@TZZ>61(rE}Q*h-#KWN2V{T(2_11ipsQ9fBt}5~c>bRF^U?%hoy<8cTyGf( z)SD_HNxi*V#)XMg12|IYTb7CA0y3lG<Ku-)ibn4fn1@S4Zy0TW92&3*TL7TouwNT| zL?&hq>}`-+g&q)jjF>UX|K=BGo@#`G$9%N4xjVIr`|Jr1xDjOHjZxA($cfmTuo{u! z0CtC0e6#arGQf{cApPVpnLY)4_(O(2I`K`mz;*7L&lp_^5a}m{m{!HkjavX~86+JU zT2ULE4|v@i0^5FuzWapB4q8#4zt=$sEIW`fzNBXX4m8abOgUbg?l0s^IZ!ARhHn7e z+6ReZ=OA5k(d_NzG=Mdyz-%tR9u!7L^<ujJ5U*rRRYS|B9ovt<w)ppKCx?-54-86) zD49T71}w)q<O>n_Ov=S*HV)luYao{s^H^yIz%pMa_h<&K3!wQyXg~O}%@O`$PJ9ns zjOY#$*qXC0%4fh)0kB!pBsVq)pg)dM=|VuoH3M>S$}OmZ_V-R^7H&@BfwC@8A6;-i z?1uraQoEilpw@tjiV9x5wDLSm0NHX!$!<I6g8}?UwF4fOKtCYL;akRUklTgRb$$H8 zEu|OvNZ$wCYzd-+X&;|~%&UuTInRT%03z<6;lk;mqPQ=>2dq3cHQ?O=GUClB7wtXu zg#$&~bMVUe_tgenEFub=!7N2krx$$BxA>O>$!vE>g-k~{n)XB2upFmNvVk_msT}V< z{Ey8cG2GwZ&yfb?ZO<%kUMG@yX**6L>%FCwWUjc!Pg@4fIm1VTF=aV*0n{Xy^Z$08 z9?bBOrU4jB_+jMPaW+#x%kI%3vm(I>i_UE;@eLErISkFFEvIAKa%ME>D~ya^Y!-U~ z?E*$1Di=WLxM;bwUA+KByvq-g)^wFEUcaufUIJGy4a72c4&$?w$nk7fghvoM+H8T8 zI=OkYl_?knA@9#0@MTH5xNaja2$K?$z`;1$ErVvVtZSa|GaN`(u$wcczHA`)(hNib zWi$>~2haoby>5R}3M^p(z*q=V&R8+8(yB7YN4NnK@QVza^PbLQ*%JV55s93iUFN{` zg2PUr(hn{X3S>HwvC!(ftVq@q<%YiC{5IxNa{!Mf8bp^WD7N?=k@#mq+p;ZJpg-4h z*T+Y|tULfoY;sh!0C7BG`Lfw!m;Su68NgHG^DgnO#Pg{E&+%%jw_m6vjKdUjrleko zj<T&Y19Qpzb-x;k8xT#D4yyy|4=%Q!7i0M`GB8!_&;@0AQ5CYbUo#GEgOt?n{%<h! z0Or`I2T|fL1onK;nbMy+eomLEY&(4_8!jXJz-4llMo?tsdD-njOf&D*UaQyM2V#uM zTaav&I{Ecg1W4m=$1lAC*iuZc2fE3NYO@89gjXMPC&og?OH_;2g;q445J>nV$li-) zL+kff<1e3F1MIA;%5|+w12fn^Lz=+>I*T^sx`bX$>N}nGu)orSreb>upgN9fRL%aX z`q}i~_Rkbt+z=5k0_5erYobdvNDW(nEanJ65)5)UhB0w02FSN>#1PT&S$y|*bG|vw zSe!-`yZfmSkpmalL)7|~N!D{#-D8j=`V*;rjVfJNajDg`33;kl=Mdj0@ev_5Jw_o* zAW<Qdj>!X=&`^he+Vk68M2z?4PaHpg7HS|mDXJV-pEVRAM_TI)!N*kX-d~hm1QU~I zh$~}4|6RZ~%rpx8+G^Vbfr&)IPtD#DVP}Q+Y(?b|$)7?2A`Z<UTP%aV`K+C>23wa? zz<lY%-xAzHB!-ZVAa-E|gb9tK5Qd}A8cEG{Yp!9SW`4#oPW4R1m&doN-qcBIrdibV zRC5dF50JO}P2FF8ifwMS1>t0ZayYMn<P0FR6bwb5pJqfp3;>Wa=pc|;zjyKlP+9iB zhp#|!MnUHZG*RHFU08r?`&r_%Pj@QlHsG)o(NUR|NPcuaG{N+bR$={aubdni8&37O z3S-AEqlKjq^NhvnmGYMrCcFWh9d3zfD2e(<=6J}bdkUo`@~MZ)y>}ehWON}uermOf z&j&=Vvx&sUYinuTl?~kFxYxhd+N~Z)7#jq*MgHDMx!}5)zQ#0;4f1NV8X$CW)q))@ zRyjd)TagWK04->7HkWmRh}Aiq?~BJXB)loi%!szfCt|M{ferZvqNdxmL6P(UFXr<c zjQ^89SCjNJi0X!1=){$Wp-~1>DjHo#_+MoJ_x3q=ic&$r*cOA0j%;yHUY?-t&1$z5 zp+2G?K@=SM+;8(hFbEF%dt0a3O9B)i*uKfC)3#;I`5&=xcWpj!s|L#*aBHz^p^4!+ zygr_*knu0YLM(i-R=%@%!~N@z*Qa6h&1fh@y(_G}JSI2A=oPRCw{Vk@ug^LK<}HKI zxfd*#9&<qL$&4xm$wS7)b@{60hERg0iCXO7p7%rqr(9>eoYAxVAHzg<*T|SUxVME* z%6rICEIv+r1@JRuZ@IW#lCkvB!n0F6xu?Ha`K<E9ee(N?HcUh%OfEg#DI9Il8(}QF zY&)~<SB;g!#2t>~@;-upkItl`w7_qw+^9N1Lum77XgCJ(SO-h(wC*ub0)@UDetW&4 z#*5xl&x<sep{JWBxO#rq$3AB3ATwa%Ycq_Ioqg=vTFbgrn4(ZzwrO53y>SkvH*VD- z%Drw0i{6qIAT>#;m7J~aGF&kSX9<f@1JpYUumEA({|&-}-ljc2M(gCho>P!v96S4v zA5gYj8iD0;I~R#|5Nc7M5HvmcWRHh_aYUabW7B=5?e$i8c51-cKCgp|%~JUQ>9O>D zCt2*!(fg$wkcGQ{LRvQ59exgohVC<`QTrxj>Tf(YIf<#!Z}gl?zQnRWZAV${ZZ!0b zZ95HLCmO?{x4soT4g7>}W8}-}HYz~V3RjML;0E_$-*=aHzxzk*&w-Mpax#R#2)&Qk zk9}gN{2NlY?!ngaVLn{f?4$iGN{Wg!2b=@Z)kL%r5!+@gmNWbg=xD5<Kcd_e8g6#V zF1FO!o!)>1<Sf0Pr>I#ONFHS3DN{s17-QLK-X&mUDNfn+N5bor)Wq5ALHNSGwDu~a zRh<8^4lli%Z?C9Q?-avXT&9e4@}Ds4KM<b6j<!q1BZ0)F`N4@)KfH%oTPBUwRj~Aw zh@}_5AI4G&lRuYWdiTmWQte|IhD?Nzv!p!)C*8fwEVdvVQLI$~f#%^MlD~i8+aO3Q z34BanoJ7lg;`>#t9cw)Bo6_Q#t}PsoUVIqDdQgw&8-~nUNaB_opy$qNMk1$M7Gt8w zS!qm)D>jJ#mXbYCYl^i3YmGO8(mz0N9qCkJw4;Gdp?(TQWI%eg#pKJ19A1ABNM`cQ z77)JW3dc7o>lN>v`qW`d$J)f&A%{hTeKz#T6Kifjo}iXNI;x8|Bn`S{B`GF8b|G}) z;<utMK=v!6U^HA1$~c;c-Z=2f7inK~=leA<>VlpC!EgNKX?X$6G$z&lhqLhU&(oPA zd-ch5aa{)bzDZm-M?OrN%XG(P*^)Uym|_9x?JGQ&7^WHbELMGWi}046m#qw=NUE~> zrp=0zJalFZC{8HEvfbGjC1+R=s(x<rJ_#`mIK{{2Ow<Yqwv!U<eh_i{X`dF}iA6_@ z07dPK6{FfmqW9kp3kVBn-eS&~y3N=fG5T3L_-uhFiqUF-H9X$F9Vk*oaNahSHP)_V z1ug+#b!M4{PRpNyjDTJKiI!vlLC~?7CK?d6?d9J5K{g=J2f&ife7zK`XJ&q#R1;mk zQ_p>vCOEn1wGsXYo^r~(k?2+KSHqmXsTwG;gTsZ4pOTaWeOz&Yn|;2xWHtK_&XFer zkc!<lZ7b{dP78pQU?a@Ic8Ps*_1iLo*&e1M&)$$-S0sRggzqi|mH^0lb1oeM;%s>n zroB8OE+{7T<;EkJ{L<PG0%?vJ^KwVG_DlcRuq2j-+8`jT2IY12Q>tI7zwH2cA!veE zl#y!thOjE&7mg#u+G8F>gLAEctA%S=2{_#~uUYc1<uNt#kdd)~1iz>T*6(5)ZS<K4 zBl-3GX_FJMn_<cht4XOaF)@u^kog~Z8gc+3%c@*Lec3=4B*o;gF<M1lzl}3*(RRc+ zwM)E$P&$$=ciVh>*=%|;)hU>tYoP&aYZ&M%m}_fL!3PLgz&tiy;%09$Ix#W4043cU z_9%ZO2{?T0yL$#)R+FlMbyA?IA*89Dik_>ykq@>)aOt~<{Ux~mulaaf<Eb-X@vu3+ z66{O^v;i*EyVwdVH2}~0=a<W19W3YphC^{-Vxn9r_3_<~WPIPEpIz+seL%+#I*>A8 zzZE31X)O#?93;Ho2+yro7y`C#O*X&x<FBDGeF<!2^%}_&8&sseBpxS_a<f@jO~iQT z2@q?jqECTgFZ<OmQVdhZ8KFQ^Tb!;2h=0LMP~9KP?ZNnK*W=YqqAx_L+<{h&e^Z2i zDR4X;?=GaMoj<khA_473p7A=$Aoe&+Sa^tVb^~#0YE^)-#I4cTw5rx!K(j-((rv4> z6X^dEJb7{-2yCaJd#q)~Xs7o9={VroAr=cL7c52-xZ2yIr(>N@)Y<~3KF7OKg*f7? zMZ_g|e6j`8{6YYPZcELUTKoWC?O{w#_ZDabgk-=Bn#6;bh=d~iPC03J6h`4ua5b&J zQ)ef(obq38efS2{Odvo7BOj!h0_vH{gmM-M_zP2>edoIjFN+pNyU(Bb)L}>z*P`hh z+O`AqG3LE)uUkoAN+mB1QIe(r-XwNj^eJiFTVG9_0FYo|auV-2Z7vux57Ss71BP<f zXR>p<N}yODE)Pi|X5jm94U*{{&mu6{a&AYJ<U(EFlOP=>QY-+k;*;iwzFL0ukB&Qk ztvjE1tVMh}U~PJTgTX{_vjvRM6&cnS$B2D=cJP|0J}|bp7W$-R7Urj5Grm!xER55+ z0Ic^jEQ&q@A9O^;v)a{UvInq}3}_D}!>SEb)@BW2v?lotda#m>^-0_xd=8p(xnU{z zq9B7IX56&_)8?MBsNN6xfyyx}IM}zxM1a)A>8lwgpKRrr<N}QwGJVYnZkz;QtIe2f ze;M59*t!9r?aKi#Fvb9bqtHdjyv*rmfPCI&!==akJhBFyO{*|J?ri225RF1($9jg0 z(8BR%QCVVbKnBKHyL8|im3(|W^Xe;f^g-k~g#RZn%b8EPrZiqtq^2<G3PHqFyLTz` zDAdXM8n@@S=-a-t$-qnR^=l0RtEfv`&wzWc^pnTKdEi3|tBE`G00;LZHq}9r=gi>~ zc2ngV(sKrGhaKR>f^`LeHMqX}Klu^8ZYr#|0Mm$#vjeP~L8A=;04!TrM!ychG$O7P z-~)J`vJ7SDaWyD#2>FyX<<hJwjW6NAG6JyH0tF$rKCJnKxsZ3*Ih1$r+XG$0#I+DS zMk8-t^?q#~_-iA9%Quq;Fn}>MvegK4)Z%X&K4mk1e)dCvjY#F8@F>YRB@6VCV7$&C z8&-ypSbzB@Qm^m2ZyFsY4~x1xa9jm!x4l=E;^PXydeASN*t2K`A+Zp)+YwA>f#JJq zV%<s+QX%P%>5L~ip+yHJCKY}fSUVW$DmXpJ{nTJTyG<q_5K^=xkvL5OI`@tiLo6eZ z@c)awuZ+rSi`oSQC6q=$x=R{CQk3onX{Ecn1f@&5yOEUc6r`ma6_At?kdC`Hdd~5D z_l`Th@r`@Oy+6J`?~vDb@4eRAbImo^oX_*D5#kbmglTThd4%_V`t|oiUsV!9L)Exe zZ8AcRI^aAa(X==p)GstP^JV@{lvqqN6)(q{tUqtC33I%6Xll7e27$uqDDJw>Q2wDl zV<F`Dho1uUhTRpaor;eNTxb`YB5?`3tON&Pi4ikPiiBWXGnIRy^g3hB^lJx%+ass) z3C$loa#SK_+lP6J?i#i3dhYUW7G%2wvsQJK?|_6tqPE;~YEl$S)+eO5_8`;gbh=-_ zlC+q!?PFPMgVNp&YWDeu<&Y_iNYl*_s57MozT8OBKbS~VD*mA26(e{86`2(v{X<7D zIY{kp{OEayl~+a2%uwA=P?nRVmzoxESeF;Au9N{tqit6|$$f1HulNkXIe~8ubjCQw zZY@9_Ok_@dXy;{%mGFx8&4#%E2?Ui%b<$3DpbC;6sW0=6Yw$p(02iSpr!0b}0#rJq zbK3J4HZCf72g?~Kb{2)&h|*LI29hsUBPOLyhU(Z9c*FeLE$kQrn}n$1wVh_5iV>)Z zCe?(4vV4J&VpVSu*_+plzN^KejgsoqM#+{;AckWot$XbxA!wW#lU>n|P1?t#nrisW zY{wE$VC^cPzAdpbcfn~+7FC>;ExZDyvaek1C=NMpu6aE(&FNgeDrigANfIrj#^h$v z_n`-?u^RsTs+oj$3?^na(n(;D1Py5`AK$G$?md@vAXw!A6lkK)`;DVzIO#m}_^hUz z&S(gq?a3ex6)<wI`>rZ?aAk70Q+<l^S2zGZFkUd4)ov9lhcOQ^be5byX~cOywpX7_ zw|;&&#jPOhmg~|1ltg*@WFe5A*$_Blx&UVde7i%}Hf;QgYbgtI8uU-<jPIjT^iG-F zWZ#dfRl3JEYq{NvyNTr2SK)fMPT?C|b+^;tRPK}3P@pB7%JpE=g!$%UW~bc2Y;@H* z00MD{+InfxaGuMlF*$|kQq@EZR3}&9V441dc;U^^LM5b3?gPhpkYqC;K4_!TGzr;I zcUfoWc-kR4e!tR#W%tqY$~^aQvqxEPXy2M9sajgG+h{hlj#St&BBQUE7xByi6%_UE z*twyZ4vO-5l$Ar+=8wegp^sbC%5=7tvJSjgp;}Igo?*#q<GO>l8w6JvkSdD^8A@*s zAa<kev(-zqC>S*_&$(H+We_RxFN%V~XC(mZy-jL4G3gC@Vu}UkV0K+f+MYM{26E1I z6pwTk3RU75%V9(mC2VC#F-{i0YOe;_xt~L%oad&JujgHbgS#dPHE(-)@T85GF!ohC z7A+R(<cvInK5GhVR&_X#3x9?;z#hsYef@1j^vo6Htc<PS#<{ZX1IaHke<NZ{Bhp2> z2@~82Op5)lbZAf6Fb09B2BKnibM8ZIQu>uW<USZYVwbS+6$Ry#dSt#Yy#aGLqhXK+ zNt6Yaj6E@qf4ql-l@aRWuP|&quC&nx#QQag9RBLei3ooE?SpuyQjxD5EYwke5AJYC zKq5@!jMUXXi54sme-e8j=BLZD-Uje2Lx+LfgFo*0(|Nk2cyrLFU9R|ypm}_~#cg;) z*T61tg%#Zgn-sxDIA57`0FOYl?0i9wfg?1P`3=mU2d`;vcOb<EzVG2gY78X8zc%6} zNfWzEfd63aX)`+Aelt`xXT<FMagD)doW)3%%$M}uSJ}=;9m(^>!#D@Cxa^MkTfW!# zngJALq<agY<FTv{TWAxTK9{XW!dE{w>D3-IxGiKN{n0j-Q&L+#f=U{>yZxE7VEuWV zl$i^o;6zek{NSZ~LSyP47k%e)&4<(xdXx(XLA=yvzZIufsicW(UAVfG)&jif##`xg z{wba6RC|U3Cng;HNlj5UDFeBry(S!7EQ`|?!R1uvhbZZ4Eg?fVy~J#9jm*h*pInfU zJ%0sGh%sSmyaE$6T37r;NQCB;8a9ZpU^sV6&%(5yAUO7f2)&|Jif>r&R~U>Ns3dZ9 z{aPD<$DI)H6pU1@jiQVmM6h%rUvIOZ$_z>1?GJDV3nn7IC4D?AJ1*6L_!K9g)?Hk= zVgcdx3q5sz4I!I2ZGSS?G%ChD9k-;sCwH%npNQd22x9l}`TOp!peBkv^7X3`=0<36 ziyfnUN<y{2U-@duWR3|-osCTfe?Nv?j%gj7I#=hjxM!k2r{6!T_%$maUDd8Zat*1j z{(Juvtp91y2!I@@oxt~R8ptlz$ed3JqecQ2REFRbfb=;7EZkHwjM9C!l->yAnB6&| zp$JyTeM{f~@b$xv^W8B^Y~yA(!4}9;o7ug{8_p4+ojqPUI$5QK!x3SViutkH`Lpz% zy{L*3w%kwX)!ukfo$CHLk%dw_;>T$HMBH;t8T42eru)CZwlBhfcP#rM_2N!L8H|0} zUIyh`_x&{Ss3upY2rk=-;RQD+)D?9dRoT%jL03uaTKzlQ>>CHt4N%FbKn^U2n+FYU zs$h3R0oP(zAj%Z8@GC6=1rG(zU=?v|?MO?99Ko;DVi+iIPxbg!fDO@KD94`=CUjSA z`rscJZ~+Fm@<F}4lhTbVhdwes1AyuGOJsMif3AE45zi@b`>g%}*o`-W5o*?b`3b6C z{Z9Uh0t}(~w`Vgle|-aO=m1Xim|^SmpIX*<Ah<G2i?;D*slREQ{4Utz{q*wVfAY_j z4<O=sB#I%|KZwLlh&lgX-5uUQ2ulI>ebvHN<?l9w;cL(!{aoYYz_Z|#t$EWEx7UJv zY3IkUU(p@<e&6Ay&k*FoV9Cr))<SIj2Rl1F28PM~EFI?4AI$q?M9M~qCtEixe!)iw zd2;DqpbQi{x)ejFG<%;H)F%M0Z_KIj*K>HtBa)TGwexVC;K%hrFMX2GpEtSuSRcv8 zefV7dsWm8Lae$H*kf2txDZXLuA!9=@bQsys+Tb`qXoE=tPIU(Gg%!qcsL-o(M+qh3 zJpyuI1sQJ%PbSK|s$bvY2gEw;bpbeV7}E^c@}cq{4jWVubak#m=m+1r3vl=-J5$+* zA$@TD9HIp{EGqVA?$Rv=^C772;!}!F8bOglQSd#ukD+vIxCxV|yPtu30Q_3eXNOYo zSwA>ErhgkFAi+?FDG6XYGUkvSYBPq0o1&i3hsUdBt+Ik}ZV*19qv`dJU1Zb^qcuxs z=vo!H1;zq)4qZn}EvS6zmefX_Y@xVAr)DEwFY{anYV&)jmU=Ymz64F((0Wyuyh;Z| zWP9<Am0wY!e4HSc8+moHmve1LSXkIXiPRB<RH7C68q84ocr`&^l1?I#<Z@jMa_^E4 zEm)x;B0!c-<Etk)qTh_lUd8Z3f$lAbeX=h0L}N+taTo18Rv4c#^g|8s^ogh%BIw_m z$a||96mR(|VoDVTrtZeV8RA1<>w(D=yuk<IFbc4IAT(rdibPPCWMLoM&D_}rnULE4 zB~j?NcaXM#;u%0kC@f;-!E_<V+uoGm1n&Sd;=SP&WeD;k5`w*}pIo+yPe(wb8n~@| z1~zzxV$4GbFfm>a6J51;JIjNnw{+ClwpT4^?q+TTgU8@fRY3Dz{u*w%JIozeM*1$_ zjEIki`@#)6epns!CY8#RAL_0p3bspMWn1a2fU!HId*Q$io?+$mbSoU(q1+#SU&dy~ zVby&7^)#qP9}0v2OmmswzZsMg!4{;U)S;%5SjdEZm@q*qi2QjG1SB?-%UJjj>%=wr zxqb#Jl4sn9j{<L{dRXqf0BYLs3LMxh8eHu|xl*&<jR6W|sIcZkk4Q-)lceltWN`y& z&p1b6ksv>a2eHwNf?DbjUzQD^8)5_SJ;)gSf~98|!B@~ccIG)qs<&`b2Cy^{;1+aB zbJn2Q>EJJT1ivP0{24!M68igJbO};){$qT`L*L3HLTJA201*CXqSDu%kpF6k6ioO! zzcJ7_LiL^jG*=%!ihos_{|1Qc69u1zG^9?u0fTbm#~dK$70pwPFlfld;PNWQN4gGy zI7vnv<N-I#X4Ieo;DM9289ID8VcM?>Itq(G4r@R7tJAOu8VI5Nm)Vf>D~4R~qYkU= z8<Y9<@eRDuwcxrxhz)I!JJhAv;)GcCfBE=Q(2CN)?|=RMf8l0dZa0Wd>jN5}#~_CV zw1nO~T`(0Q$L(r7VHf*P$%TMs{ueb?egVIgO#hqB@!xEY|B21<|2?V3=j=Y-C=F+^ zZn3r9VEW1=#WKkP8>`!k$h1SNz_4`^pqmpHh)bs~)W}`9c&YcsZE8YdBBE6r(1@+b zhwoi6ZBk=80mhkILfcXHvY6!ri<L=}nvl6~ql@cVT)d*%lewlmO4Qk^mq2%g%rlAE zvnf^J?iLZRUWk8lH<kaP<+crdte3OxR&k^1fM!iz!~BR-eLEt}qk>QG&O`rJ%P9<> z-1z|}w_piGd6~tjYz6)gA5Jqg@Rfd<0bdI}Vb0`L^KvN234Bs>ma}3vt4`;^3OecW zc~2#?P}Lt`5%<+de{<_lj-+R<O9}jf+pao#$w2h*?eVV4s6_0jump~}IB?_O<ToH} zv&=J%0$h4&TV^sBdOWkWq?~Kj>5O_IP9dKDsIYJ4{oJCtNJY&#n-Z75$(5DyInhY_ zHcO#A%+|)f&EsZ`Rr9l#%ZKG;Y4I`9$hNMJ3+tuEwEQwXmoL~Iog{=-MUvM?v8o_O z8eq+UMK*OD8H6Xd;k!}$LgT;ul-&G0r6JUI+OIc;TZ~K&nDv%iJgiRg#m+((+kTL! z&7k(In@;lE9^sU0cN!6!roWYN#)a;U8248%6Wj|y+a%KcoI*WkFuQfwZ$Ek&^`5Ak zQgLHi$hwA8QsdO$oGPwZ{E2|R%9sMx3`%CFMg2)+o?pM_F?xn^{EW-<ypeya_#{7c z!W>Iajs0vP?9oh?$R_tmnxDVO@fDqMmFgF~<J;MHx|7E?YFBSX>D27UWvG#h5)T#l z%zysC9iJGY_qHi<78342+1I$#b1#m^$9?5!Wp?&@>#F-1ET;$!!hZ6>hRXPl=^j{o z1H12c4*On2wH@?m7Irb{acE=&Ik|_lG3hT~^z4lfOrALt_wQ2v0Bm=;;=?bt(oNQE zS4-}R{mnCbp*V@0Rb7^yRowV0ZvB^?HQAU33r#1V-+2LDA!4iTlh_y4(GCy_8Q|K6 zn+O^EK@i=H=o=tl%w+K-n0$c8@)M<g?Z^g`x#abJX5O{*r<m)W)x=O6%(3&I!6J05 zzvXd!*Ds>yI0#$1%o17UhQw2yt;g=0f0UcypNWxt;$UfRB76AiBD@#h_o}uyaMsM3 z%)w=3-vK**4f~g*Pub+U61(EslVM?)=AEx6Gv@}F!mG?OXgaQn0hS{+2O)#;{E<Or zA!#G1*~>J$X<J{+ae6`#Hg*>(UkfIZp3Hl?hY{A9;nIkEd(Ebm(9zAir&PEDH6Fl| z2WG>0f2bKb9ge2!^MBOf>4DYCK1%MHnv)3_i~iPOxUp>2V{)*yJ4It;W@0vEv3M2i z&RFWshH?GF6KEuIuU(e>RHF9S@u*KsS4aI^wHU}qfH>IdGWM=W6!3z%T88-?kNPy@ zV#Q9aA&YkKnYenTcJ}fnrL`%TQGeOPchsfLX6wq6n#RfdbE%Oot!67a^wrCFgQJH` zlz9h<tq(6}=cVfsEds5Z*^JLTm)Wn)J>8!s32sluC-qLc(3!hbQ&^qy43s+r_Tw@c z!#sXeYsld_Hxh(q9kn45BPgdeRNut<7WQf&(fWy7bt~L{D#p{}HRrw$D-20vZ<|va zjwg)h@o(gJ5_w@e&d}qZu(OMN>vK8H9vicd`#|i`oVdrI^05D+Q|`{oM{B%aB>eOY zYA&o*H%m<iuU!fgsTED5be1@h%7WmUJ@s|+ZrwWnfFHEh$&8nYRJu@;%~pGV+5baO zzxr1iRPtT5)tnR0<v84A?v>;F#^DREvTuirBp5=nJI}v%?&1_z?Cte^5z^p1hj0-w zj6l6&#()^aFh3dFSoWsd6Is3kb)B+HU24QRV~?c}tSCy(P?85|boVSM`IqJ7I0ME5 z!3^&rWs<;M6uRO{*UZP1DdiNOZ)ilh5@|uMX3~xn_|c7XH@ebp#3wP*LQ%f-m6r<1 z<7{3XD{7TD$pO*SEPag{YWt}pdspu<Zn6Em{(*#QU1GWW<6iRJPZnCQ#8;DPk02?Y z;x#|CM<lgETS9Lh5T~Z;xmL&Zsb^l#<hOM;Ci2Dk{7_rXo3nf!-8VJ&<w=}>fpwX* z_@EF1Z|U8^4b=X(O%qLv<pcFijkH8j@k4d`6Zn>V4}ZS7WPh`sbI8ZfJ~;Sk*y{(< zcgnoM-joL@9-nmhyZjivpa9$sL6v}w?)XJN#1Q;RgTC^f??lub??JAAKmu>d{=sfe zc8uXZR|S!H*jFLJ*13is5tWh6wG44cScP$9+Y#3?*5ZD~QceNthKNt#Q@M#ywfme! z->Au&*S%1;h<<5%mDo&a51)AG5m2a{rL`@uBGv+E&b<11`yaGbrG|p&Jr)-RTq9kh zc9k+}%UKAAe7;S~cXBdPtjrgc8=l9pcxJ~b>^Vhu%}fs{!7<7lFz+v@hqGBaSxVFg zU8R)wL+SzmAe+4!Tki_+IO8RP9GT>iCMW1-(dM$UQbB9dMyF}txh%?6m&W-qDRqEV zdY(oPGRkqqJ%2jW_3Tqcy3ls;s_X*At}Z^Gi-uGF0ioa(f8oWqFCX<1Gh7GSq#yMD zA;+WE*i2PvQWWXCYMVB;Vk>8*Q0kWF+IkO@Z>nF8ob2gJZftbtR^wB>kMDy91EN== z3R^R&rl_ifvAx>5?@|6Z$Y9}SS#(tuI&flolMH6Fv`^D@I%6eq2=of7X(DjU9gWtQ zz3LL1;uj`mScs5q=Z^H*lnB#Y*WPUf1`~YGLXDp$VcV^w*kggwU3!lYyg~x|iO^x+ zs`p+14%4XD!uC;(p=|f<XL}KY9fXhOKQ%q(9VC3DRpzJ}W#91zR(hgi3}IU>^;Chp z`GtBCA&sK?v#$ci5@&vKr<(gjOHPoF!3M4RLbvjw9}4>)(W7HNNx*5eyiV2}d#=|+ zdzcuvfgpA-(2wjOqG#kNB88D}swes3X~0KO*DQzHp9$w>ss481^i2<V2CyQ=@iC1m z`U7a_Hf*X`bG#3V4L&|$bR|qQD|M+jopH7k``GE$7$uU7%3guCPV{{Y9fc;r9ubo3 zp~ND-MWv92W$YC5)>6gfTa%5oPzAEwYp;S8*cqD7Ls}L_-SZy8OXZ9%Z<JP9)u|;6 zDA+mo2M3P74F{x?dR<5AjI?o=T&$Ihw-9imCk6O;5W@`S_HyGx^jRNFczXO`+DwfQ zsFMpC8C1IDHM{;u)U*1NW&+Zx&F%8k58tvr5?kj{ARV*4yG@{<*Hmt(ZhGrW&ckRH znFMKC{Le3|s#aKgSOy<2uS+KkUW9(Mn6goBr)B4O(2_kPOZ`g)h~TBU(a>(J98-l~ zrta#tk-+_mM?m2yb3tCH>&wX2hJx9n=$5hjh14Fa)zZf;2h$%S;sSIxRAgVDN3<mB zk=7FJqdk^(um|Eke4hOQ1ZZuQPYUCBsf-lYS^}%Es51sW6U0>})6Q$sFTRusCr4gO z&S+Y3pNN}U%kR7=RQEh2+2u1=a~5}Zf?Lc6_Je!T?=ATFSglM}(IRFZ`gDP1Wj*7U zpqmPS@cqt`6|ln+2O4Y&Qo~<#e=Zu-_Pn$oeC5i+ev9-at!p=L_%>1M<FZUwiUZCR z@^pWft@Cp#d>zA@Erfo3^J>0~-th&(?i}*PulC29B_rgIYPO8(oHyO+;M#+hADqyf zM`V|2UzMpT4MdBFy1VrYFN}O{%&(ru68?_E7_r~p8J`^Xg1+1TI8179b)1YbI$P<K z>e|u^N`$5fS@PxJI>YfDHJG?QlqS4#>o@QtK$Ft46=t@=V{)rIy_!<Hq8u5;(wXU$ z4*z~nVyp7$t?R07Z6*4nR_Cz+3zvZ-38Qf1xXu)|ZBB)ZTEg&ezHub1CTGoYx;Tg} zouLeg%?$bV-+W;G*IcPj_9@(c+@=&Aw@;$R_jktetN+ZMg3GspZ3AT!3j|47a|iQZ zYd|_y*aeI}A3qN@Ju{iyEF&aO%*-@|znr=@b^H3$DDMX<O_$c}0L)3{9nFseYm9^U zIy!o6X$R_dL;YCOt|-Ir+H!YR<-9JB|7L;7KHbIU*doCEvrLU`E*m-9PhRDS>*L;4 z#<{NML{WKsM!GNhYpEmur|adZwJ6&A>3JSl`QLJaYAw0WLksqR0%3wu3c{)Y;CXHP z9}@37)qQ$-g!x)+D0S`)I1%Vh5573{#R~1H&tucG#DkX<3*GlmO>loODY0VW2QUJO zphROE_3mg@JON|wvqu>V)X0Z%`q}w>u9>DLuXkBgxKYTKb90}c&8Q~|*nI3P{NeP@ zW-&`ww$3tR4g2fCo~AktI_D`Qf1*qo!FyMbs>v`r>z&*1Q=;p_#eyQW7L&$1?_J*^ zJBY!qUZJ>x;NLzDQ?YE5@>cUe`k?!UF;gh3vesk(t19)hk$7zUIr<&rJ67M^?`~j$ zGacr6gzgk1THu@MOs2T9n;aEC#D0N$x^5p=Gc=&BnjUhWn!;ln)|RJD0;AFRTBTid z)Z(!WW|^yq2`5D&y~D<~v`KO;f@o(Ve`@s7puoj=#KGb-mgJND)kEG8JqGJ|RfbV3 zECjd4*>(gqaT`6(ZU7px{eCz2@}e`5Al!aO=SRvX@B1+h`EU~$KvaNJAI9>*jtllw zUf<CCSN)9CLQ`$9GTFn0sD02e?`<@hv$qRB*f!IAY>e`BvslEUA5~W~1YJ5H-gcEx zaf$xXrvWAQM@^LpuVziFKJ=mBLgGR8Y@-ZGR>z(9&}xylcY--FZPu2v?&6YDmI|-f z-=DS26128QWiC(Zm9ciMHfuCYAdlXL-|1f2KC4rJMW9Cq$faNEYS3Cg{YypY#ZP!Q zZRqcCP$h5{{sd*8!8Wr1#*}k_xYEUyXKiMZxNp&v0gz0P06I$|LiL8RH5?5uUdjEl z28Vwmlpo}{3jD#MJ0V~5k5n!!!XMd4;8AZ<MiY=&gnxzQ@AMJ$tvn?0K^qB{8Svm= zAK+$heN=^JIH88k;=G{8)QSF}^tNd+@U;K(=F&g)0)~kY{11b)_cC>6_%$2IyXSaZ zw=cGt^RvFXzu29|(B#;9#Kf9o{oOr#=3}zJrv`I`UDgH1g%7udmW9r{&nfj$;&NS4 zMzzP1T%W!LQhxs)44+x7z>n<A>7RDE-Yikv>8>S6opv+W%tzz&)7D+!uOBR!h$8-L z2mJo$?T>QvRL5m+g*atc5=q}T{<>c<g5C8O4O<c7oBXG|CS3eQ{zjPVhQF|d@byV% zGF5k3Y(lw}UT5_Z(A_*mwLR4zQ+nm;zqseXhCwjNOw6X4$1E<F9PQ?5mE@NzyeYIq zGF^~qU3LP*;a<5jsc0e|se;j4SA{m!n|9MTNohB@4=c=rsJ+V@>LH_FzA&?k3Rsy? zbCB>BI6l8z5=#<iMI(VbEN^Q&O?0k8Ee&AQ43oA&eD7|qaD9UwmXB;Rd!nkU{N~P0 zs&l-lO=>q67vZ$$<zHF=OrL~5UuuY2oYi<RYYcTq$y#m%54;~N$#j<pcn<CI<ugh^ z%1;yPhVsQP>z$Dl@YG&_%751U_-z<T5<c@Q&$RchsF_egQ4nHGt+=XdK-ZCKl488| zw0#yuBb?Z}QtvFy@u|iZf)>(h0&}roL%Xq-KzM;>%UeOK#h)(}!RFSa66MCqVj)83 zO}zow9U=(7mc9-?c<yqQI<A{$HVL_9`HVN<VMOqUHqgIi;oWKzD?$un;nGXQy5*+n zu;N=AX$LLVsi^aC3x>hW1^4k^y~6+XP}WFS7c`86m;?1mHaLNDXFlnP(fcL~?LWqj z#Hq1tSB*|bE@ckls~MMWV6Z+FAm`9eeE<VJN&wy;^!x!j0WWRMcEQQ}Ipglu(<bgG z?EQVA2qpF<(zAsxU0Mg6bhtU}1VPB0=yOQssrO}`VW!pD==At4*C+KT;&I;YCoh+} zq)mUZ262!mfgT0}&+wa@>0_q(b)4UAC8h0uCun5N@lZfd(7d8w0!wwJosX5`=Nor5 zcN~QyAEq055NsTA*(8oa6Ec*W`8FN~L&wmcH0l{ugxL!eeOsGZE~gI<fyS*spM;Co z)h(IynbMb2j#$kPRAavZts^&kmvg*>xSH_l+Sa*}n*r>CR}FK*X4voo;{eKm;Mn5p zfiJU7It7D?gMX_Yxn|2>>-;brOyqjwpRy0~IAYq`v*yp{l)vA;xeN}x2LzjW$UYAp ze3W@O?J*Eh1C9@$Af*ApE@iPc0GC|0V7PhUuMcdHE@y`OW(8diy?OBQ4w9Q9GS>V@ zfki$8Dn(+DI{&GSLIl$Bn~&#$|4y@e!-;^beh5sx=I<Lp9odA8?c>a^#Qv{m&_YF0 z_@0G7S^-)%+{80f^Na3r;|&F&bU(S^&JF78SKC0L0F;_+YjFN(Y%sV#F037-tM|7T zg$knKl_h_F0lX+ALXH^Gc;mi*wW1&#bjdNr@-GTF)L3$Ge-ZC_Xc_)}v7jU9(*L<3 z^Z5qAmG&BD|DC4)|29qEyCm{(1OZNsWTFwptXlGKQ}cNMsQ~_GG>ss4V_tXuhg=bu z&loojLuaV#;O}_`{GC4n5Y$=>F`oLzFgGQDsiu|Yt^G3><U4^~{-;Ej)KDjW%P9%w zqkLHYk-{^!0k{Fb^p6_E0p^(Lb+yLdeF9=bSYY~p>L2~f-ht&iM1qNd+pbaa_ayL! zTLJm*_%%b*KduCK8*U1DQ35Tjzq{nK4<<|hK}FRcS84-2r_UngssJDI*E9aLlKpZz z|0<CFzFh{yB;Id&_~&fIg>Wet#S{O)D`@4@KyzJn;{Nm#A)p<Nh~U(bf5w_t4m6jK zS?UiDHY@^$RU6*C`mct8CdSYJ-;@@g`^S~*<e(k@)3AxlrtxvF1$K9Lr!f90rv$_s zQEo)5$NV#0Q3L-j1%i76T`}Ld|Ds4)#6z7An8=3~0Df^#kdK%-_2nPTTOg_dRC6GV zx_Mc%(?-CtZxq0}k3nQnKozW^Nhw~tiL5dJ-zoft@03Pc4nUR|nl#b9;M`QJ=AV<G z*zBs{2N<&1Zw1@{j5m$LbQG{fqXAId3$ShV>(_m-69B<Bh1*_|PW_G{V6oN!BJF!r zS;{YThXqB6XzklK<G2D!vhfT?r^J*HQx>pzmk$6A`RaW4li<mkz;Qi5Vb|=PULOHo zDWH`)0d1TXfNYoJ|2clRF$NCrJ_4BQ`aOl0%ug=>yGU2Emxs2q7ijIYINFe(%4Ujb z4|*V4-N=g3s)6ye>w5U*4ZIbg8LV4C=WRm>Vu-X1bgOVIEgA*oy*^-wNvAw!osAWz zJUiYcDQQ55Ke2p@{M%}KFl@$e#KmWE6Ifot@#4W*zdG(Kxf>m=-eSji{3QgJ*$6L< zGST1P|LL3Cp6fy+ZX3Drw8ESH01t8w&PYrJ_4kK+NcST5AqYOk40MWogb=DL;M&mw z{iu0xNM*RfsXT8GRt$|jwb>R|>#2-*X8pG)Db87wY_H2RTX(_mdnNL#;84tIfRe0a zH#P~WYy_0p><18=m8|Oo;{_=4<MTMI1KPC>;M_iX^hl%;I{kY`1yaN+Ux`tY&AhvY zBgv#*;k&J-?TF({cd$CBpZE!o5u5<kcCWt;0RZp;f7^fCVHH3&p98HYaG-Yc>1whr zkUx6K`z2><47PY0VXK!Wop2i&B{O{{^`(2Gl|}lKS62Yiy8=+~$D0!<_Z!>*X580J z7M!t0a<v!mG7-=q&%fMt7b`lYx2SbLEj3b3{uO2-e*?bd6V0*{f-05^z_qIDS~vex zotriCGZsaXo3pT55RC9#3ZenWO2&TpXi$%?@(M`&=tGJPK;q>R=sCR%t*f*Fps%Bi zu{A*7HI6+wnT$ijI0evMTVyQS1DF+{c!W-W(+jUtLo*8Tdzyh1L09V3br(Ot(ZLWk zd@+DT01(-bgy?z;p1kB&=gMUHqAa&_@2P#2AHvd4pkEf{{nPsvY6eo44csL-=8|Ey z8Ys{JEOfmXkt4PyVnt8~#A5`12VgaARrEjWaX(oMV18ciUBEv+aPJoD55TDI12ou{ zGr%$O+xG1TxO$pes;ZuQZIGIVrd2)F77q|+!DZC=V2uF|O6OR^OG0Vva9%fdGTyIO zNYl{<U{~KEh#vx&>+P0kjQ(!x(hjwq_lXz7qT-R2r>%}>o0BqQA6%~Dn>;~wxa0F) z|KmQ%0ywSB{O}1?V~L<2+=u&K$SCM9zj+|XJ6ne#&jSvvmWkaUbYLs-ZA0ILms1^U z6@U|*4g{(E`i0$HOC9#UwvW(f*F*9{RcBz5ri|!4`&14Q4ws*70McNkq_5;-f*LGD zKsf(mAe?BD%vh)#Je|7Ew>5ZW1fN=$&Pe7iFe~ywjtX!SNYC=QZ@<mn{;=-*wb)<V zAcsYj=!Q27KdB%AcgCvU?W<z-3~%oWpyRI~9&npCtWv)0y}8!ITxQ#4j5r{())DCF z@VFHTJvBgOASgdu+Y)!yDbJe#Zl?PE02*%Q5I`11B?lLH!MKi+7T+%@7d*BD_GW*q zTd-%1ilzjhNHf<s&ezu&TQ9k=dyp2NZ>y#{j5ldqGrv!LfKAHl=V0H_2az_kP|3yN zR_s2#SrdD8-1w#19s37^P{%en0C0mu)8ajXI@7oJdq72ugFuL~ucQMaJAlJrrSLEL z*E8Or^6d%cQ5c};H&aGLaCX`a1w43WpMLUz22V2I3%T5nC5DmPuamyrp^AT=M!4u= z8?WI5;(dI&0VAw!J#OWp`%7DpCe%kFXTo~gyUkdHVqG0@0b?(%7&}b&2h{_{a$x4T znZ3wgY$m7Ns#MD!Du3@ypugC-RUvicllu_2p!~y5>}aqdh#!P~6sh~^-_wWC4c`OX zsK!N+_fiWY-t8Osj3iMKcr1V{s}*C%`!PBj=p0OCWs4uZh)F8MlXwU)@A_HW+e|i6 zg5fSF=;6_9#KG^Ssc$Ph!r;W>jjDU*Ad883eCfO8Tl1}3K8noD>tX?rU`#{MOc@t# zDrysrFM&wG%h<Y<FNG2YXpQt&t7?Ah&*L^EswC&7U&w^t>l_{FPVs~E78v9lmcjJk z;Zaf?h1MkqU7Rf%MoyAS5SwyqPJ3`o6lgOzp$*is>iWexGV3xd81OoWF67WS2?6-* zNptDKwv{s28v?lHGLPGRZ3e;c6A(w6zDe2YV8l4Z!TUmGoD{#c*R%|XT_4fedT0F1 z^+!d``mZc1darApiER{Bj7f~#cgqhy7ai(7RaVA+^t?4=WI8OkJ1)UwD<~Z=jQ@74 zNwF|O*EG7+hu2w%qu|F|73IyZt{2-JQxa2CE!pjj(*X3^W~V;CX^p#o=+#iu8b7~^ zh}4MUx6u&HNxNS8d}QH*Pk_g^_vU^A)x1pQS(L2R(k$7#7Kg+Jx19a`FA>glqd>f{ z!NGM|zvr>J?OIjCu+C_3FmiKp5^<O%Q`tU|9q}q)ujwK8FbaqBXl%!2*LN3T)GHsl zXcBO}_4Dj4E@}5qT$6eW`%r0(rW<BfbPC-Y2L4$Z%qZWt`~+Ced$8OZ1!VOy-&M#J z`zK}-)<0Ky@O^7vO0%|8Ez!vB(r2u`0$OMhD8c<hQt=x5=?b_^Y*R5K6;+#(e*H5- z-&gu#Y6KR2v2w;!bL$(%Xpk8>i<q^I=oYF-(c(bk-A?ycz{yl;e6AHzQ^eLQt2+wq zAwd^9fb?cPp*XuKMIeXc3}M_|_uB7(bAx$~SC~}P%CXIP^CklApCQQd|5SGEdd@4B zn%<DpY%@l!Y+hL`#mHQ%^MIpz(=aVQ{PnlU8tU&MsFOo)40u>>!J#8^!HFN(B-?g> zXMpv)KjPF2s1L`0S2ZRoh-GBZ6G8T_?5Amo;uj#Nw__>s)GSs_lel`ghzOh<B082F zg^Z*(Su;`R@j=Grei4R<xH5~thL@7a)e`bz)=&NV`l2R6eeCWJ^u@Wh2of<|O>P{C zqw98N@z^!0gA=K$Nh^q@w{c{;)UW#bMZ88aR}|+ooNJRDB?^Maf$DtqXXcTz)C?ws zfs*^NA`%RT56ZL-suNY1Xx%8`g6~qOY6QlX)u)*GjyEIVQ>-b3iL6Yd_B?M_#Fi8> z^%PK;mk@~>@lrb8Wa8GT>&27_6Nu=U5K9v=GA=1(3c&Y_ihSER?^RVY>FWAf>W$8T zeWDC5#hX)Ak~m_wbuyWNa{H&Gc!=-^*SHpMyq_S#cV2gr);_hKV^WJC2z9+jN*Y@{ zA^*KKg|hf{mN-`t9g_S?I#{801|_v5r`3!4?T9w!>nr(0r6u@dX@VxLRJ6_C?;EPk zntcO$YN`XmDhd`6DJg_2kk%fx*h=iHdE1ZbelmD=BKK<T2F#i%^I|C&i-s58F<9I6 z>T=ihM|Qit>$2b<#mH9;x9_m{5HlCrmmt-k>P1JdPuyGkk-pXQ+=*X>nZ9re1WYna zXKrU7u;ffm=aIi<y}hTQ8&5q+v4+Sv`XLyju;D?rj*18ws?74UeCcTB_eB`$sY$+# ztbJu+$#6pnCx>~so{vZF5R8Sl2%+<=NF~q@gxB18eCJbP$y4Ul`cHWwEA!7_-~=#- zUrERJe+<Tc<1GfqgehA~9D+bU_Cs~kt`|F=&`KK-uU3C;z;rB+`%4rmKAhsBMnjxx zTz+umc*|Xx>!7Oj0zaJ%I|=@HdNZZB&_R|}#Rp0&Qsa_xns2KNO8pEL`e3Af@T&bt zi=)E)fP8yPNA3HunUd7PP`gU;WYs1!-NVZgGI32QCiAs|pX2(^BB^pmR6cW;hJ1`7 zX1{0V7y~@aJzc75qgKc7s_j#>9_et*^Hq1toG3qB10jJ;bJ+SrJa=W0k;xT-ou=Fg zw(6SO%?WD)$*Sg*q%g2wkRD$@WvND|ZyC$Z;q@U^vweb~V#Ae6h$tv1si5Y`y&fjq z*I1*WGaKW*Gg*>sFVZV~?EPj4p()=mh&<ipVYW=7;@rOc@yU4K_|ki(?~_u`x&ZBT zE!X>4tor4Maq_JH*W9Pf^JctUk}6FO%9@ZRrpqwjK0t(n91tlf+)2`bIgAer73oJz zA_4;skq&IwPJi$}FtCX5_^_&jZ!Dg%+=25VBh7bpEp?xdF+H2oE7uF_&+lShh0nvX z-2Az}BKpE2OAS#F2F!VDFz5HuUWt;F!e?b=0a?sV!$Y3)F=VEl+=LR6jV&6@xwk)V z9*yn>Z)1Yg%xx%q^Cx&7xIqmix{L{i<`99X5V#xELh!vWp^u4({oVSftfV&&`Th0u zTNqTvqh$7nH59O^3T67#$$k436%~N1Ja{>LE?V<NdXRIJ{_TXN!8@_@Uf*B$a-sC* zI1coaMkJ)pIPiBE_FT4Y0^EGFckSDC2@21jpR8xUO?tyZFrP=ysZ<%p+WWCVMx^cI z4(;um_Mz{g!RFMzdOQ}QjTB1Ee+Jl?NOeD%j6Qt)sOvOih>wpS#!;M@WSOJVqHIkM z*K#O=|EtN~Ul7sxMyv}q5aDD*N$Kb|0E*qDVl|v&TzZh$w1w`vI<ioP+hX=L)Jz|F znznbY1)o@!&1roCNW5HzGoAv1aUI~x#ST+l8$CJ#aW&8q8sUl2*|Y&_sbJf1Fx`3Z z>B*OBbG6i+&v`P*i=6=^d@jTEkh;x10#51ty6=MN;5<<Ku{@d8k)%iF-C+dz-b*|? z`5>GFVnNoiyCZk&?e7xvxhym|=4GX5LaLX|?;2*6wHfwDAqCu>g+>}m%Jp%%)MsUr z(m1+FC6+mP$BFF5W-BeatzKpxOCN%Od@m;>Z>t+&Byx|~IuKCW8qRzpItxTwfy{5; zI2&Vsz!i|yEXrWiX?ou2;6yu$9ZJZ(5B950WEuCzWwo?YRt+yse&kipKIYXFfAGr) z(3RnzKSF!A(Uw3;&SE;61GH{8g$IB*t{9xgsA``z0EGiWaFW&aUceJ&H8n_}25b@b zXRFO~*-~ZVU&pAnECn+Ff!C;8cTg?9v}k8Wn3<U=8~xmzFq4Nio(bcpfX7$-#=7PD z%AH>^85}GQ2+6to$2$u}#IYMAcag@Zq~c=Y;*w;!tUq4>w)yey7v0Ivj#Jv;IlX`s zolQ(ZPX4VTE8EW?Z3yoSn2}ZM<q=rh)byH%jG9B0vz2xqyiPg;+{&C=k0A9e^-3dX z3(-ydePTKA@DPZ<o&ZYp&qOhrsLjeSRH|4Bpc~R)sy^NIl+j#xuEx^+e7ja;w5pKo zp>~7Ac!5G*4jEXiN#<Ra!_2k;IeLOHHa@<n9Cs+r74j~S;kApxm=asCzvgd$mNAtn zCDox(SAAa(oSp7zszqnVnAk60qF8ISaMp?T!~y9U57_ty2L}TYXL<6uP-CDbkJ%?F zrS)zQ?EY0zx*I^kK@-v|V!YdLtA%`(6D>Qs@uP2dp|Q4bedO*z&#B7y$%?^mCM(bF znsRc4oBLg~sb2w|Y3Am`QIHBK`gF^YQ*%umydIQCCK{@^le4XrD#T(raAsQX76iY~ z)s_jU0sRQE(fM&4Ul8yMf8ktL-Mj_~h1#6c*6T}aPYy{bss6#iYM#-}7Jqv{@K)!R zbXnZe3gx)*6oRA$h+l^>mB)No+hql<2sA1lHE7l3<>#9RsWHqmIZ2s)kId~)O@CMZ zq2R(G$IuZU)=aOY2SX%DrKm?mMP*3EL&CgzI$m#67G<<0rr17bHc;J|7c^1D(la_k z%->rF;RE+<Xx!1g`_<P#@kz074n1yVUqK;Usx`~fQ@otmb<rZ04EC3^K;#78@I^Al z7LpU39f>oiLT$HF7x$RE#twtsIp-AXM?!r<HD!^ZC5_A2fKb(?m0-rxon|84v{Kzx zo$q6S9203DSnAfLYJDNz94g+zC5CtC0wj<b5t-hM9%GhhR41|O`|s!W{~UbN6r|O+ zKIuWR7^O>K9IpqhpOF829nkhkSadJJj|v@81CHt0{K_P5<q9!{v(0f7u%bxaYC?r? zR#!j*T=t51Kg)?(wT$plRCIJUQSSC^wUP*t@;7(K_{{qGv(fN)49}kvYG=<CjVYqG z)<DVzQosh<uKkrF4fD&+7{qghVU-^{48WsdX)<!*w@Z$@?jGD3%+0y7+q~5(MO}+t zP6U<|OD;n^LUFi#MBOTr$cvsZjHr>>*o4Hy4ZUdi+?i056-^L!jP}PdR$7(7sXj|v zpB-{JU5U4zsp#snu+f`%r!u8wA2#`QrMIMiVSHBO$Tp{1#d*jXKQd)2Haje5$gnAA zr9F#3yFZ>eo!|WkY&sUCsA*`-$MU7TQd6}1>`}ntmg4Q}2qqOycJGQE*Fdhfl?sOT z4r(wVFQ#D9ob6=!%qw{85P1xkl?%prlb`R1g7+;{_s~mrXs>}}04);}6m4tW9d)zu z@@jb<hmDObu9^l^$|Ui)OWQ(t-W&iq-@@Wz<viajFpbULF>BSy!%8SiTbki!9|S#P zGOBY}TTxYburfuKY<LYaB45b^n>oHOi#I!zh*gJ)qjE9>q4uFvUYr%tbiqTS*SB>v zmFORSbO^F5iI+=YX>U&Gcz6W_@HCV@_4i}(V0Dk67$4v7@d5ALw+$#l%(6&5(0c!J zK>-DvC=Fx!*~7w=8yj)`(<Sh=rG7eHkET>bEYFl}Vu2o4DcBhx=P-H}o~#6KZ?h?P zVa1>YZPGsv_V|c{FW*0byq%?oj9c)We4l-!TZVt)stX9EeNk3x;S>C}SYnxnS$zic z;?Z|K|JYsDmlri*=ha9`1)mMysHRS|RI1g+8+j5IvbNRB7)P5CjDSTbdp#fv8w-mf zx{ArFLyTvtdh|iyl9btmR;GpYbAs=Y5?Ua=b!H?u^j%$D{Ta=%!;1UjmSU<Vq9CaY zA}wao$LrP4jLJAFhdTcG=;bIrh|IdhbB1@XYL$4}a+SXO;>LSe33+>~2Tq(mozxM! zEK``aZpNq8sf*nZP%M;Vyj_%qu`+}JV!#Q#2^CsQ<2BRzc8i4umDeh1F>a2fOIH2| zO3bF}jW0WIKU$xURQc>)DG)wxHpstdD6H{q5*P7oIwCc78zI|0nb=-fbDeVVXLHSj zhGhzW4ZsqSqThwbW>aaj+B6J84RHYyA)6|G9gEVWJt~BwO=PVpPX!9^;bS`fcG6D; z1>YwC$%|q){H)~%eBD;>)F`k~N#LHAE`bOsT~|aD`L{oDg5yz@{*rTQm5W>yyt_h& z<U>m1&4IR$)WP>F%n-!G81^EtB>LgmM!yBbhIbvI-+-70twW-n^7n5}Fo#hczueI+ z>uBMUl0bwH2D?!CZyUIO1zc$Gw^0cTNEL{Q>kJDMkQ)u7VPOfdz^riDXCeB%AV<M_ zXrUaxe=bh0C!Z+^7MXYK{dK?l<3#mU%G<span8}{{Tu^`m(=+9eurOzZM*Oeucv{0 z+hVgOjy&tGp$jtX97Z7O{@3uDTfyyrg?t=o-YF_g>HNN2Qp;px&(JXgCnJ}cjBLwu zQP8c(eywfjd+e}SUp;m|Hxr*zrPPZ(H1LOkCDeHK0uvwZ_i8YX=z?Y=`}jaU*}B`_ z7iRPV5$VeBS0E@znt<qHtNvr3HbK;z5xsy5HpjI&QUUg_L3n~*z}UvUIB*G*&IBg{ zI!L>J2;2r(Q_;NziQxH4!`%mpv&o2s+Nj|pRyh-C2Yz?amjw10X3du!t@X?6y$7tL zd`+v#Bfq_|g>V}`bW=+X&xBbRusGZn%trpzRv0)h@~=xROLpIBDAsSoU6F%071#6( zOy`?X&A5V>_O@4gYqR=uP3&GWP{Ek9=wSK%%FtEeQ*NbT4e=G{3Gm$s;XwQ3YCQgX zDCf}2Q=S+5T1tPEM+C>hI`H=^5&qRj#FJQWoUd9)txnR$=zF~2O?`<RBm1j8KPlVX zT={(z=1V~bol?2Ces2qW(O?lCqoudAjoMHH!&;j$-unG4cXWAgdw0CxSacIY*cu<s zaFXi3-W3$H4-11E$-qY${kD^vtA-zgVd(ym&H2}3p>LA{VMd#R1V``w`Q-!1i#_%l z|J{sVZvqR91Q&*Q(qH3r^LmyMNe2l&zMcKutecl+LJpoo4JX0=uP+IG*1`7iQ7MAi zANvh(XBk0Kz-%wGdTnF^_xET)PXrw!)OhfpyEm|?<r4*hKd+Y&27M4FHNE}kmthp> z3w4|0r6fKot*5OQ%xV*5sJUccg9Oi}TRg9AWAkagJ^i(slfF=c6Sr?2B5as1s}pKq z_lkeO*W76Rs-fMn5D_*+Fu72vm?P*mI-Y=s%Plhml~@d=?ALv1EL^KI(Jd(V;2u}` zcJr|z|FYs6%bJ7cwHGq}Z!^0YJ`;4oq=5ha-Tz`-0$YGizLqGP<tzutKm2LiFg~l) z=$Ak~w*JtE!x^@N@lVUW5QGW1|3okk<&S|!9G8JH)#0L$ys_io!{3GmW{8)!H13~9 zT96DTgOzB^?``kR@4ZQYiC@AbGW|J~<RKrn5K8+y`uz3#C*WnC!?J1r`IrnVFc%u| z75-(~UZlX|+%jnR^D%-8pgoT4S@8d%H>NvxdK~_Ij86j+>EL%GVWdBMc;W*yI*%5y z@vp}?0)v|x48;7ihkLhx>meZ>L-_MCo4~o0C1X(i*~71QfcgJF8_2*kPRk^chRlDx zM!_~-pLLKYpLIt{`|ag_w-^klP{{xLUa7%-pDJ@6Tq6GEa?p>!D}8y*00V;v|GI7Z zy?($wf+MhbTv=Vco%QMrEMgWCAU{zk6o3kjWZ4)mR5CMr$N15E1bt7EboRRvG1N&D zCb$q(ZBSsI11q^LsH~;|QQ?u13lTG>*(wy+bIiby5MEF`146v~Ak$k_#j)lS6BF}L zy~3dVH3CqI9`d<$Cxs-^-&+Q0Pt;^AsM7+`7tv>bf4>$@duC>)^=zUnXXFklAs)HD zJ|0+bml1_UMbkhL3`G7iMXDuyH8Bwpq`jrzf%d06*c*WSf{up9=6lLS5Do%k(l$co zB|~3=KiXM1uN9ga&J>~=hW6aW#l`3(?4565;LT`Qtmf<Jl=2)lM!T@pfiOWZ4nvLQ zT#e`XQA$e6;o)I85pQ38E{Kdl)k9KNwgsqOL8nrH>LgHy8Y*s9NfRWU24?@p)4v=I zZc!9QEFQ{sqrkp}uR>?i)=^idE4=I`uojPL#MZ2{$?P?qsaOFLyg;BxkE*o!NQ1k! zAWrI~71;}1VAYKS*iO$#n-IUQW9l3Xnvi`JeF5a5L2SMQ#PzB`dXax?s!VrnD78cp z6q1cFw7JiZw#W49`Id85bEigD?o(kpfjF;rx%eeJd`BQmIMYjxnY%b}vhb?J4KZXi zwLk(Z!}0s1EE<tS;lb&_+BHz`W+M<h*xx7iJXDBhn}62k1do_z(n#0&0`WwWlsvFZ zyV2>CCzN94+qxaV7Sxze$)cEo96m9MzF6BHGyJm@@2h?S?NXPAr(&g>n`W1O1nfqk zN4dTyC-^!E7%wLH2B=dOpS7*R+c>;Gh1U~+-<0`!viw#p73cs-!#=N4wAwT$fb`Cc zyNpIShuvz$5fI^7p`@dW9m_p9^nz4xTL*j&6Lc}$3Dh7ObVLL=Lqo#{-5{^Ss9maA zlJ@FH7p~-o?r#4MQv6%+;lS0AkhQn|<yzoLe8LF0`e-Yib}Uk5Z%<ghe3@xaZHhRZ z3KEA-=})%;1QRg724=COy7&`$!2|v8clLrnQ`^IjotcTL1_n|qkbFzXt@u_tPj%Aq zae<0AJp7h8jH%T}^-d#1UuIZOS5Ht^Uzg4TDRD-gq}CUU=gDn7odMpm*rPA9v$6od z;r6jYeqJ7Q2ov=+0BJl+YNR0lr~~h!UpeLRk`aFMY1<5QCGo_CqOy<bCP9v$(z8o8 zb_Y1042p91V=JPgjS%(klO+eac!s3t17Pa5^YKoDTx3<7t)DI&qA#}($agXhAhBGO zlcReMKANh#>jE$)Ox!mK01zP)s$JYo*|~8^px_|<1eBJUoJa??y=_1=dlC&3&Ty3@ zql;dS0BiYhM0U8Us!ArA({j4J{XVBYCHw<Xn1DEc+wA)wdiwxxqh+d>!Ewh&o(xLD zC0n=5_)3l^q=5t&z@exIfyo5KC)C9-22;4%mAm^MlMcg~4l%=m{g61^<5Ku20Z*Ye zRQS@SeMzbK{?9<e`+=#Bf&vCE?o^Q)Gw)qE0<y2rcA+eX_6{r}2P0^EQXEamQ&MH5 zDyszzAthhoRQ^M7c8=5TXMPF_{p+hsUgsTUFC!zP0@M^+KN_(7xeW1U`wMy_c>t%t z?{<h-j^Tg?i#Y8gsH3B!syYcK_&1YM!C)}YC&(LeT&1N$2jrxst2#-`G2mJ-0}rc7 zSD>-tAcA#p9ebZch3NYj7OUg}Snbr~qId5GOsZKOKt@Y)ZEY>!-)8<RLbDLbXlT$l z(y{BM0+Q@iM<ERSj+@G^^*Q<Z49%_wM$L9lNe#f-Ed-c^h`*LQQh21EO08^3adEuI zHW~OjU_&FL_oc;?-Dm)@os~U@1&XqldyUtB*|kpw%^r|SueF#N?UH89-32B8o%wn{ zKR>3ob$;F@z#&=kd*XpkLn}U_EnKD1;Qr%|larHg-waF-mzMP2BJ}ur6M^4tKQ^Df z`}=p!a8N=A6u33J9#4@8x0Kfb)B$kc+Qz*grw%j#<Ef~q9OH68Z2ks>Bisd}V4M4E zA0{K30emLVUkM5fw6S^*&Rc6xsmlkud?oWWa2%Y^fzojmTvj7*cO9;htcJ#e(Rm7d zwo5@6D2QmE6OmT66INC>d}-=vtNx-SR8q!-+tvi-6t(3?39eMuSTwnQHp3C_q%vW6 z`bsX#+h3LpkEjJwr)pZZB9^xlrtfRJodLBdpxt`~ITMi8&3jZ54w9LtV8&@w7zEjY zS_A}rn&m-O_EMDAa4@h?aP=~j5wV{he&i@<rZxF)ez&hkDmmM8wwM{1k!O(Kv(rQU zbB6>wGsX0ysCpy5SOls@-Al7MB@zTPmmfqG4GWH?Zl6*stJqq5x<bGCr1AjryP^10 z`dtBetr`mJuCnw(dgQ$TWL%~Cn?0vb9+eG{6Dw-(>ywN}Uo}F~>Yo!433t9nB=s$X z148V8oVDIVAQXv3HHgckWimg5!@%#7<GMEPW$fJA;(n$u5*Z#H>wu#|IKa5@bGpM^ zsz~b#m5h&nv+TOtOh(*Cucnn)_3!Cc&rz7Fhqh1WMl5BWhl-1tbQ6ykwq%&M7#s<| z_N}CXu#7hy-6M&uNi*G4t=@wXFEt9?Rygm@Ttc?u()q<@a6&P*ac9;T=1(PUosATU zUupPfZv_KTi8u<tf;6tN&8ZI^q_SdO`ZY-4ENL!K`kBMNqZohEgX9ehdqwGYUi9yh z4WH6;vVE>E>&{uu!i>@<B3nx>%brV};nhD$Z%O=?A~8z==DXO#%#@j{eXN}RBFTQP z1>S?U<L^cN^f|W6vxX)ZJdXoX`7)wMRy0YjUwleF&>SECP$d~=p3GEfYmPKT*GUgq zx{UY>kj&GVb5d6@>o|H-PRE!?pna8o?~_-xzA8`?a?|P$J(&y|DO7nR(?nhUaE$?D zTA?b_lzWTr^Vt?=fOAAlgTv_$qM?3ClR1I<weSu{nK^~^YJU#2X6_Pw;UC(BVujnO zr`kh}PZF|X&qE}+)}Bv%J4*GE-t}dgiTuGzrD?a{s-^P2tj#Tnry>7JfLN<sz|dyO zH_dWsHismk^{B1($)%hW(Pw_s7atQsb2g)bgPUG=;LL@@S%*jlOOedgia5&b5C%L+ zFFlcEj6QRY;0>PT;;wG)Hp<^rka7GOz9ztKNRNgcU;JfTQOBR^ry0Q*Tdu|0)oUuv zV6|-)1Vw+xut8Y{tqKuO!*nj5-PZo-vnqzUSlv38%86(DUztYF&TJIx9E#XHE$G*t zprrIZFNwSf_<g7;_dunn+H|bDD_LZ_OsifoeA#@e)Uu=Hbxz^obX-MFL*7~TAoGLh zU<S0EhqLPzIvN)J0*MqFR8GaErSmFHu3atG4~=b0<UWdaGxn!W(dY|nXi3$#7wiSk zTQkZfoD}3-sq2r=?$5h6hH%Ai(a&pE44O4*D;`^IykT3`V93wllfxNQV&>OyEcwt9 zmFgZ`n=m(jkC$pNRyJgi@8YvXECmR&On3Y#$JukD9(@?KJm*7ICa*q@j_<0u=ylI| zm*cUptGjSLV;3v8KGJZFGDWWtsfHJwXrW>9YC?in_e!r{=z7HRW3ue7%}<wTYn_9& z5_QLks+h$EcYZesN0C^n!LjfS#<l&?l5?+OsU(skjY3n5M7%ZEMl<CcJ{`93@8&;? z5d1CWJWO&t&KYC}@TOW_7IvO9R?&Q<`Dr<|f0$|5c*M-J0bArzCdM3Yp8WnmH~sq? z-(4A;vW3L!iN$7NRVB(BH<n?F1kIs+I5pq<eg-o@_s#!az?Aa}MQM@gIdaq_{kwiN zbww=P*ypM%WM=Ny#o1+ed)^m158oW$w|4g!`FY-dR3)?NHa2V=(@MX4-jYaBOZa?7 zAUB_IQdj+FytPw{c^{gk=V+JbZt=U)iv_j(wE0uL)1*%eoXcUaAGz^l_U9TqHBz&Y zkD9479H04q%@r#$unekO|1e7&xhwmX=5Xgz57JAxN3j#cVpGe^tuajTRg7BiOJ4j~ zO?tOk;5)s8b|Gh=SKKGoP5e2OT)R|kv=KQj>mpSDJYlkeCQLrdz&_kyr*x`i_PVRD zBRAj)M>5<!mq!d^7z&Y>SG$|VW4HU?cI9F?nmN?_UZruhGU~Kyem^5BO-G;O8Kh5~ zt_*XiSH5Z&Nsgr>OXJAMc75k-6+3ikpx&JHj>&w<8Yhgu>1N~Q&F&)+O$~6J#-K*E z1<v9+1i`l!Scq3QfIivkU^2i@gs(i;WfIX#1m~;7F+OQ#SO9Su7PWK&zk5xgj*3by z?M8#gjO_nt?<?b??AmV?Q9&gI6lstyNu@E!p<#%jRHRF~>k&k{ySq#27!agoq>&b3 z=p1^ev*(HTeSYVBKOfHd`@s+VnBks#_PzJD*0t8U)*%siTn?2p3vVBh6FGJKV*Y3x zkw6pTpiaa|&$a2$<k&!Rj`G@H-a%J3=Cg@Z<!ICdcfJxP`{gK?uu)V0`St9j6qtP{ zpj5HUyH<1dAYMaw?pql<BhzANxt3hQgV>!blNApOohV&rlJeuZ9O$eN(S7n1q6wJ9 z?C`Dhkws~-;e>0`cPB&==(eJ+l`K<N`J3l^*57Xwp3$$B;4?j&m(a`}%Ow({PNj@V z&wbBzGel5FuU3rD^asVfEPoxkbC>$c<IN_Wc}c+#dARa!Q-M#JE4Su?G!s78jCS)I z<+sP<!GqZ}UXNK$>>Re4AxF)ZVS56~<ik?>u`874cI_YJzd7|#qW3cBjk2TBPAu~d zZR`3Q$0?WRnrrc1TNT1Q<xcM7y&sm$a|+~FYpfzVI`a<Qa$=8KSWE2wLid9Tm|Cwd zH}`SL9w_$Y#WrfQv+23G%0U3=IKxg5$e0|+Yy0})cA7&q2kB!G`H2<oIcT-q#{BHa z?KPP`kC&IjG!Eid_Gh{%0p*B(M5rx8ziH`3is;Y)p>&;C3nZCgu*r#3i=?^9F1eU; zWV;lulY@R29!nGA2|FmR4(6OXGc2i;t5#a4BwbVaSW$}J|LkR`tDINqwKl|7@v0&; zi-6k0HEM3jR=9HWwOhFZ`7kwZrNuT8B+&%s&2eVJEr??;VPHYb6UblJX?$#Hn9{jf z+@4`g`V^lT=7A73j@(PFD&`ke)&H{TLp^_VEF={;(_Q14F5Ij;A(1|N6~`KAEwTht zZ+6x~Wg^f)y$U>*r+5CaaZ28wdvQ7@o50SzGnmP%Ol_8)?BC08APj$MT%-IKWs)2u zxiOAkU|RNm<3zd0G>tMgYT=~VVMR&iG5q^?1)8%Kpa}3OylC8$?(VaR)Dz$=F5s#^ z{}6UHqxow$cLL@1Bb4sJK_jyE&5t!f#&I4`{W}GPg-d85m1S2KNcibm)7x3`>R+F^ zYk#Pyhd3<D&-51<OZFSZR%qqL<#^5t8{(>lA1iX&_LFxB&399$l@vzVOQjaF#Z8Cy z?j#O3$)I1a@aBpU<BUKZE_{@fm6a77ox*l|SVDOtD68|svP?#!r%(b3${`VisFkvK z=DPS24+-xg(f*p3j{S!7oI0)D-Rm`^G33)3={Yo8C<ThyFSB`zqf&jD2zO3c!|dqr zIP_w4`~~!R&>_q5BBM1ob%|HGeVXkM{R><%wR~vXaegV=pZh8QQ@`K8e}fKxH7M`l zRFfB++}zyCJpH5vQsK)$m_T-&Gka&gRf4H&!D#JF*X>8TSW9Ni>M?5cDq`vF<z@cW zNW_bp1H?lf_`Xz{n!BZbvwGhf0<|Q^G0AS1&KmtGAq#3!&83RjR#^{eWH+iKJtFX3 zMy4l{W!`8uIoU#r{`jQFBLV?^yq#fiu8Vvou9ZvBuw5u)l=EArRvc=G^Xvh`mJ+Q( z-YMvxRT$koIMuaNivV*sUAX8na%xtVA1<OL6eQ~3tB)7S2!-Dc4vM~8Kc1D4cBQR; zn3sq4+To7292ivIQA-(Glklo%o7YmQT{NAKg)Uu^Xm?He{vnlu{7gK}Ca|%TqX4&w zGmqN?&*PmxX}JNJUx23?)|9=u>%9~uQw~S3qn+O!*EIuHKrWfa=X~!@7ro1SK2Pg= zR6OlfO}%3F5Nl6r?~^yC-4E5Rfbh5Vbig*&*~O)(j7nmqf5-D{x)23E$3;KSPN5|g zK1{>zr<OziS16*2gdqN6Q*m$-A>|<v!@o0+GHWPH`N`2|$Mwr->X^FhR*h(@$rS-A zXku>UyT7xhc+eEiE9DfyvRc!uG(#1Y-S#YqVb}$TKOe6p4p79~qDvWqCOi|r!yegi z_8Qq`&3oUYPV6Mjs6tw=o8!wngLH=z0zVJV70NBH+5H_iv?@R87E7G;QxT4|etvO% zsOQOur?Gbxtfa`E!%1UPtkM$|BQ9W|zNr1Ib@dq#GgZCwHfzb9Q#>7|37}OG@k?Co z$vsI9?n{p5^$OAR5b_ZX+L{y3hfEK5ZWP;lp|7?HQrepcthHm+4?#WruJf_^69U~< zBveaeF6BTFXmeytO-0}<slrah&3Xr0b;Bu7ZO2QvCq5hZ&xEjc^@FDL$nY=_;T!`n z*Yp4<nvz{9#IfO9dDZ&Xp|Ux90XG@foXBxPi%$XJ;>uy8Tm?!{HQYmL|EcWua&U}m z=FGxlqw-q^uDR<`J`tXrK1=C7mW+h6zCY$`1WkV2M#nH;eF5_K72q2fq(=kY<;Gc^ zkuzmgdm>AIJ-sI=NR=c6ka5dBS-~?e0!a87qPt}$k3`d?M;DU!n7Y+E<^oI2nB&|m zm<_pDmhUl~c04PlB!<IeCgK$tzbKLC;^oh!d`@RNvSB8Oi5~EP2yS!E#+MvkIwwSY zNoP}qPwd6%c}`db$Z*WZRdE0KEm9l06N_a0{AMmSFM4@u+G1*`OpZU3RXs`zXEa3e z)eAk89K-LxgJ5~_^MMHZV=d%^Wih^-#$D!>68D<PllGu)yzrfA0bZf1UlNAn<FNC{ zxgt~Ql7cv)Q@0;*s4fqR;-zFbJMb&S$M;HHo$oUpf395AP2b~C{tH`QpKdySbKD8g z>RP{l*WkFpF!0)J0~^Mkmx#Gh<9=0n`0`qUkbJ=rKn1DlpI?g8F}tASpif&lx^r*W zJu=O8d+R7aoof^Pe48?T1{@&IJH6ea5BeSo=5M{4E&p+)DulSHFg2C$rf_EHS-<9H zY!Row5+Rt`z52<FbGIa5_0z+KM1t@3^$ibbbatN3?yZAZM&auEFM}DaSJaIdGti*3 z<K*GG)>`+G>f^8QtNOmAj_|89s|_QXCGSRl%k#|8#j~|;cUa}SFK0v&<Lc~0L{viW z(P2bGs==y->V8W+*)q`Ely|4&Wlnr2)?0osS+>94xc`S+0<UTN+6VvNkBj%3l@scc zJWDl?NfV`%IHoSh$u~|q4P4v35Ja$8BmH3XTTfVQj=#-7&Mki98aXU1_<h-{G5>mM zs<eI?z{Hy7ukTknm=NaQ|9B9rARqarN)A_bk{s$G*4*?oa5Bg!@G+H(MrUoyDYws0 z%B|aSDe;TJWDO}}k3CwD<~&Wt{qbCq)v<6uu7XKZXzEp!1-;Nd7aRF-9+SfsKs_T) z{S*oM#n-CK6UZr2=TA`b$E&~Sg#KWE9YSB1I=F{*(?k_V%E589nd-{T$*F8^<?gX3 zlex{5#?<09QnF=99UGY5c+zaSc;0>|S~m0HC)-lDciTtghg(%H%eyjN-kZZA4x<ke zWM*K1R3i)Sz}5BHSP_1xd@SsxE`#ILyjOjKuQTq@@L5)S!?}a1!jekN;hZ+drY5=o zMX{4&9_J_*D{|`4A0!1q*-_~hmk%L>W$RBXc8Y^Nza4*1onL>zQ2oAK5F)tAst4yh z+l;Dd_#kqu_W6y=UZcM7Hw~w<56Oq-Z$=DFdNtxicekb#2@vb99saAa*i`35loxdB zv2mXgS@Mw2wr8dm92FJk3LuQDP9^?2qgsu0if(3U95}9^a|n+cLgtkSKJXT8U6*_V zs1yyD+B>zkA$Phf90v`Eg7&JEGFX1!K4d{V`uUWG^~nawE0%u}ZPs4RP`Vh0+!rn% zoiNdDMh+wkl)x8J+Lu5C4pM?DyJh<HTD`rjBhE9pgPL>Rzf5^0!}4+?%y!Yw*tXnl z)N0Vvu2bv*_`0?igKf4?N;kD5xq4jepWD^B*&$Z0M$QB~Ib2-7EP2|Hvb;yBOkkZ# zB+T2XW=Pb^t!JOCF8`wA>@BI>5lhb8)I5`q)g&wXo_1w~(6fHwgkau^lJr02U*6Nf zF%<`tB}VYWePh%I*G1;Raie(SrqA>anW6BZa#CUJNxgH@I%Eh^ZEy9~Kc$>u(df5G zU2#!q^o^jX*25>Pye}@1sztbQ4FSkAeBq`a(x#6)-{r}|Cz=$UXo!en;!1lq#-xmm zoA$+OY4yu_+j_<`u3h85Cim*OMqEIi+WDBw`OwCj2K6B(tG=Q!CZ%wl(>f*_9?|4! zud@+9Dzo!n25T|OQFtEPXQqmFMKVTjg=@ptBB_$n_0%<0;pV2D%W0h9&$7FncW5ih zP<SG5h3kUMV@Q+Y_2AyRr|2zB5mbB-&7c??XF~wIosF$XTw9~o!a>n3ppX5_TbJ^h zQL2fG68JLPd}D#|{2s30#c+_l87tbv+!~(~m*Ffg%_CcM5kgj>NI6ttuRI5DRjflp z>FEWft)-3gq`!UBctBQSX}lieGkK@`fqE3HT$Pyct2%{>qVnRIrdH2GG6Cb_{%$cg z0XYV1B2v=nA}5WKd*phJW?`EXEWh1dlqkh$%e4xEsXRiKxzyr<_0Nj!Dbua4H%}>~ z4fo7Z{Ho7BPQF#2C5Ymzi0UXULxcG=mL8)Dr(mLuJfJeg1mSjzUBFXie0G#^N#n+` z94+*=*ywuUDHqj23~@>lSqc;eZEm%y@EDE#*>h6rUkjktUG}4m$jnC@KVIcnNB@q9 zkRR2_m5RHKWHzdq@DzjT^FQ0$l$$@*uKUV{=su#*35D(pUz^&{Z56(?zuyhLnb&FQ zd?~uKtM6nkWgQ_Jf2CvM6xPx2+5H3cJ?t$n><zh?=utXUJtxoQzCugwA4m^^)q>iB z!#>;g{Pi*JfDS+3gOZOr`f8dfT*^(aJ=-fYe&-aupPVYQUy6(jvq?*GJA5p2*dE=} z5n{{<OMOzhTGDxQ$EVD*cRv2<)$mE`>bPFRkME^F8$}LFtD?_t(s=1sAMe7es`r&N zde0{$xGsi95+E|gx>sEU_TSQDco^?$L6Z9)UdU#qV4-Y#o0qNnJ?4t@qPF#`cxqi% z4(=+4g+|n%*pHDb7xN-xr{NtqF<p3L1z2&RpCW3;anzYYC(nMhz7?tMtzU9fXV3R? zMoZm~6+hWd==6(U9+!L+xtp>m?`3^=p-wdG1WXp<&LDGP5_Xl{BcI*Bk<L)WxnkRY zH9eb-T30KpXj*wHE>qy&NJ(NbWd*0EuyyFE9&E#LN4I6QriZm2sKVt`#wVzc2^5@? z-@p$kM4YWa$B&E?HaZjT>ooNekjrgz*!VZo-qXA|R}~B6s^H?{)culI+*Y+)dUNrc z(Ji4nGBgHxF<c3@iScbz8+~kpO<xv^h`mH8^tlf84v-P<V``3L&jZh`m-0+V+oi%{ zxu#XB+_a!sMifCr8~MOQDGf>3*#AK3Bu`dWE?iAqA#>a0vQFw%NcER)0LPo^KaYhM z@EY{5^fKS$a~iOG_ab#plb@b5m|cb)Z8s~TLB+wQ^I1uFE>;yLK{|abtW^zxg|icg z?)uKXI?&9<d4uOlQ?!$k=9Xf!q?>N#EIu>GRXw{kQ)8LX-cWBCz1&Udpa7br9;EiP zzkIMtlP6LdaNp+L=mc%50=!wErXFF6cCUMJ6T?%c<2*ZuR<jsrrtkj>!S{*yM8@gk z6Xg7<>uA%=Q%E7NT^Y`u-m0g>u-AdkHGCq@CN{YQT5QOb8@Ar-MW-KEI`LM^TZ#ps zP~#Foa}VjsV8x&ubT`dd&TdSHA-zo9fZ7J5M5*uz;(`2XEmAQiu8@l*dLk^fGY%{Q zEyj6HtruGDgW^0?RDof-TAc{5n=}Y^!#YJFPFt5yVK%Wm$2Ihgk(J!@x23tBYsHH4 zy2!0)Gv7t|-FpM!MEah&1@}Xw!I$iP?kc6AtfZtVn+o)eQ{9auA0+pQB-I5|%Me;4 z0=9FaMGjsf<moaG1Sn|)fK);mn_iuAfux^9Vl$bHl)^<e_tAj$Sfot-USJWc7)i!K z&y5B%cGkMcC3R`JQO#|H7%I2wN<N?jSEwe18j@fe$sb`8M~7?B&_4wEmenI`@>RDk zxZJE!gI}66KBd|!d@WbqRo9GDuOcdFk7>R+-geI1vBAc&&s&gd<*l<^zt9pGoFOQ4 zQ{c6qXyHe4`EahPsw#}gmVTnCmZYJxp?Y+`i=gBhF3w3HpvWas*KUHIxvwoYJ!NNT zN^sF@A%`=ydAhWcViJ^;-N+$BMf7jm1X8c6!l>zv#}!6R!p%Cxkp4xqqn)-rOMc8{ zoHAsA&fFkQE0dP(&UAJJHf(32OHqbL274@H#+*c8_}#~jl2p0&H;DuM(q6ekLTPaR za`hz8P?Iy1myc3TeWn^bbE+^H$F9X@|M^8v;Kz}0Zc3K>OQ2-I%b+z4B#Zw}frv^b z#8Ji?$eGSvbjV1Kde-Qpmr;(gk9sNFXD*|)jfe?!F?!NX5dAddr5RHX=_O0IiONPa z8Fwn5Vcj}?Ekw67;5&Rp-i!DNlHGwoV|(hsY}dj@HbngQcu_}V+)G5(W~A4U?guVh z8L4HPd<OsX4ka4CnGbOSmJ_V3_ymRdEnq^B@ck?)o}mZa1{_l5m8$@4+e{gl;bDb= zo^-|2Heemt`2I(_n1^6DO}M-6OYkhT*<f3+QHnF8kSc{_i$16?L>eO5kGra^&5fmL z<WnU5HS-hvb9cY$ppGtI3=#8Hh-qcZKYs`Y%^{;Ew~Nw>pl-LzP(*e-_<`~9Yr&%i z4GaY*8;rq4*#+Tazj3<vut-y!h0hTs#bva`H)+1J&#$t2$Bdb=FjY%?>}9e0?)6iA zhuXSf?C0FT8GuM5uobX*uYOousNPuibP_WPn2!(Rf-g9z9+L$l;qn!dvUORl*hjj* z0axka8@X+1IE~hlQ9oGvi@5wM$?Vm|<y|iG8l0mO)bk&jVPxyJ{!a2{H^4-Mtw=z# zx2H-%w-*RAidI6|6ECc5&c(9nN$vEWYq8aC7ftO9!h`qAt}PgE)OI>sQBAa#*o%I0 zRi;F`5ho>U#HCdDuHrv<zvfx=?!I_)7af}MAP1JuZsY#D$D8YNBYnzYsp$D+&Z`B} zySc4pZ_#E^U=kh?&k%k_JeAN?qy_bs&)N;nIgxYi@cKkuy0^b?Ir0tbeVrh6Ri&dX z3HLXsN<NH!Mwz7g#)4#idC>GBcfg0;sL?GjNBj^o%=@eOs{0qq@%m*l{*^jW_K}Pr zFp^GtwpT>YyzG62LCaKMs)P@`z4#tE@2iw&3EUFRbwAzLd9v1Fn(9lps6=y1va{a; z^@qupsKnLoI8Fp<ufMMZ=C+-Ud}}*GUfJ$piOkWiiSg123UgK!S87N+e@kp4nOTIR zVKtqj?(JBq)E+s9wzF|QPWusmUMaknm~)W8yf|?`jfT{xb@;Tlwpz3~Mwz;(V7Zcd z5vr!Hm!BF;C8V~rP0d;(V2tc0*rfBQzGKk1Y1+-WKJrIxNf*K9_O5x-MHu5ZQZD_F zjj7cltpJCiHCX|vJY<SX?=0h5Vh%~7)ZDK0J4=<@^C<J)kxl-%i!z$}d?|$kzX=Ie z{pRt{g9f-?`NO#|X$ZQuEu<RZTwhP)P4zn1*$HS=j1`aD1MV^oG&wtYIv*m@z%@X> zk`2lsbAnYc9F-&sx%zSfILP;aF8dOU`;MMD&ZFv+%+vuLTFXv~LfbtHfu3aoSeiid z{+6lEhr*&#uIY5$de7;jRv$gLUzM#z_$*uRXN$@ZkH})|PR?9zI<w5xo37=`(7(-w zr3*ebm+bzjSwy@|>K4FAakS~SPeGOX4uk5BXjMjDtlZ8^wF^aTYOLDyn@EXjytZw~ zd6u5;mYV%JQ3eL%I$2FY)##Q*BXA$MSaU}9Z@rr1HIbUhDtJ)AsoNq4B~hHA>?*28 z5BEM7_G1xdSKLauRdN@fIdxh~xG}AxDgSN%_WF(RN;ZVnTC`L2vb{xwY$&&WmFn|J z(j`^>jc&X0XaupaO{LK8Y8ypHZo0=?y$JkAIp)s=wGD)~^|c<5)V(hqrGZmke-log zJEBZwAPF7QWROXpM$Lcw_U)IQBkpotGhmhj)RKU`RlI9+zI9%~8TbckP-TwLv4s-} z_&G6)2ErqdOMoTJdsvQ{)jOLX4W=1ZE76D!i;8ibB|4j0b85F(%}<QiH|FC%jP`ob z?|;M-W!I1=GO={AYlK)CS5Nr1JI-7uw~1OCU(17*Us>lcy!}`s-r!(in8x>rB2Go6 z%Ex6Wzry)D%C$@7Y>D~<jCz8t%E(>;X6zJz�fgk4(OhNZeLhegC{^X}gzajYrk4 z7=GFoT;T#&*K|7J4mvL2y5(R=^q#|C`{_c=?(f0h{dKO}_?+U6$DY$W@w<MTyu<ht z8B=>`bte_GH9?tF0nXrV7jx1$Lfu*spS^E^#SlurVRs29w`I8-#q$08tp@s0>V!m8 z<kP|}jrCSroZK=6%wZ?X*GEj8q@eFYUk(-)b()H5sH;Y__U8u-x>9{X*=F$&N<_Rp z-cmkm=!P|gd{U|2`E>HkEd!!#X+GJIyQuo2`Hw$DURj87-&7vGrNXHMQD|~)H<K}O zQY}g@GmU|hxvbg?t>iwIHZ^@rCGnVzQI46Ww{vDR;TRGtZojIR)gHZ`{TtmCHl$M! z6=WB_7`W6*y;?G$5t!pJV&IfcJhg<+32#OUY&|R+|42Y%lh?vbVxx!ESj!9BzXWm& zOAnYSoWD`YH(Gk4{S*+JFjKb`EQb8cgP|#*Rvz=-ZFOP8(u|*lCx4(WTCXhrFyHzX z-YQzLqKJmQtW&dL+Pm0}xUBh2ov_`QdnD01F#uXGY*+IoG?(_>x?DG--wsogdn9T@ zos2bdjp76g-gRHhUn(1i88L_MA4;^?P)+P%Aq(HVdlkEOJO(8|OrO#iU+(bi<aL{B zO=xJ1X>`33J`dMKdR;9=JWV8PmJl#b-aVX*!Oy5tF-^hKv~#MRd3;k_Kq8dqS!<_d zv=Dx=wBU@$Vq3F7*W;qCIc0-*&_g(C$Z>8(L#?JA*HFRd*?B9XF!=P?Rt0aX*;ZLa ztkqObr@i@Jy)$_Wbt}J{WcO&4Sm~_~7P${^07>TP=(C+-M^?j{*31C!M~<uquGT~Y zmi@LW5)vg#&oo$=VDLpIl+h{Ldheo1E_vfiAXF&?eHeVx9LgW`l13wW<7EKE@Or~x zN=``2912ju3&8TD`aV0`n<)SyFAv6irT~}9@Nuu&T_EYQO5oD}{Tu%Z79SU9?y?5P zjIDbx3~2F+v#pg6U4iZmXH|&-<yjGdK5XSu>e$i}Hrm|$`|_rT`1nXV`O9+3-GnG> zCeKD>jdg&8kW1K(<ARWw4L{b@&>sb|DpI7k(+w{RW~EYGNUfuD!P|Kpwq1?UyMrbU z`@Y`TR)WZ!W`2A}O+A;nw`0>6uJ!#upfxbhJyj3!(N)ulHLTUDH5a-fU@+KB;}I1Q z+<4t!goij&=i@h+1$(V7_C9#h?vu$2sZCF3q>b#HTHbFI38xL(SvnaO-C4}rZk!1f zb~%a|-|ctao<E*@A-DfCo>h|xkn6O**wM_Pat~+vt28Q*KBuXVna#rVjx?4jk0fz2 zt&i3lb*S_=PvYwU)eiJpWl$ht)D@ZI_?~y|6HsSzbGvvht}n*L$LCj2xgV@97<eO6 zg+RNqzyqG)&{rIMw{QQ5#MaGn_P*MjJqgb(*+UB=FF8cQzKf5U{rI-wGncbaz9xN6 zA7WGU^3I*?z7Gz9t%an=kh6K+lnaT?({JvvT8)sBo#^H0QO*3gNY9CghO+V^w0n2y zmnK7Q<%cm}zL@1e?G1bJ1w1?h9Yh`<YbUKlF3)AaNagAYaSY9=+idsrmT6OMA$2R} zCqqTyiv$ddRPzD7t(`KoxMI_V?*Jt8p?CnqUhlC4P*mJ(Q7<7H7STM?aQ?i0K@y)Y z{J&}^N3XGGhfwMpfHWR*J`;XdTDsl%1cz0NC)c4GdJZ}LjH?sn`s{U)Cnv5*GxJl7 zsj=u~hBw;WXv)@8zf4S``j^_Vb8dfJl5S)Fsj5xTq9*<mL=wavJ{VySy0k8c<8+&p zQN^3`GtI-Zmc6**JWPxgj&)}YND{4c61}k&-{XR9WQQO#=)nN(>K>RNEYE)bjmX|} z-rbIF7ZF=m6$O5p^1|Hu@Aq%75^Q{>5j;^zr3Vt!FZWe&94=UXHs~!KayB}<jmO4K zOr$hVmQ}yGO&o6jaXjx67hcF-w{Cip^Wv<y$I)hydI5}R0LW5GDmm}$)4Lq`LL7El z(***X^-6gKI6d8)s{1D5BOeT?mUXRPI9^<4z>~|%b_)gZ=Z|YnLuT&w%t|$B#AT>| z{sLE??GJQNN|bk?S|Ue$p~f=WL3PXVB=w%PYMV>B;QBr1!N&2wcD+-5LK)}YW1PTD zWbVf@7SICQ+3TiB_)yQy$Lp~C9gI~htc~89uA9gKffs|r$i`WKV&Soo{I(-qdx};M z4W{^#iBqyvo}m2q#Lvfr(v)}H14L($*No)l!!yRVo))JQrp+)r_#3#8l>cCzT<%xj z@e0@<c@nq0Ac~}W;@tV>ySS-_@$=rU+jDpP7M@`LDMQ<RLCfC%fuOn@CCoo+1n=eG z<b;aGZ*E#8@G^DlR5X#`EKI9fD@~*;b&7d<4H&i%sHgL3;hh^cjGwz~Z0O>b^9M{b zIf>QuGa^U{;#Z2^N!4^rjGn2lz;e^TvzulfS$o~@n}K!HoJ0D(S=S#aNRdeclMk#N zuP}c<j4l(0b9ppNn8Hq+YqVt-XaR2Dd-#5<W}+|1cqm(HO13!8{-%t?0(Kz9$Mi-m z+%3vZj@HT_TaR-7pc`Knw;`%8{6RBq*>C=JN@v3-SfWG#wQ=Q9-6tD<tUzOLP?3T* z3ExZ+vRD(B`ANB>Tow<W8Oh|PYYXEQ*!0=-`ez}I{dR0bamkskA;BNvXY>2^66m$I z_XYHi|1=TM=HhVZ)|Se3@d3>>#(rx`st@v&xbW6Ba_Z*2ry2RGZSUu(my<t(mi#ib z^06G6`_W9`tQWX1QzNDrvT;?n2@=y+0LE+#=KLb+V$e0ddH3x6`B#Hbel7TM!JG)* zbb;)CWg0s3p{riXy-8K4RT4XgC&Bn<rDLCaJ{d&ll|Br)38}O4UQL6A?ER%>d=Vn) z=y(uG_mbq|J#dXv2=c!_ZdGCm4hw4mIannAs?5G@oU)yro$OlWqe_D<9>=#h`J`;3 ztoKwULiFE&?g1J`Jw%T}UH7qx`}zEOziGMGcaOvLwU<s)QGLzLsO$X^Ge&V@ow{+h z0Y)yYix)+Zh4*l&<iP#S+pe2HQ?*qtswy38Wq<yhzrf!loTh%Ocar+4i!&S<3dDJ_ zJM7wL(+@h1um`XGAfLrJcy>iF8jxAf{egJpkaq|D+^rn!0JibEp_VY3<0c6&{`HHO z33p_GCc3b+G**EI%saNQSpWLLY4gKDRRR;Yb0&w3^$~)yobNMx2|=JeXkI=vUZ!!+ zeU<W!O9$6lYsq_~$|a$|^tc}GGrs!4xM3vz;;S*K-dKc%Q!}L&$&Q}618tPjy|k7! zL(o!px0>nOjGj_9FU!;wLg4Nwr$IitJu;_WZoPI%?HyRsZJHsbb~{$8fRX9YynuyW z_|jqL`|0N#D~~xp+ll<JH38Qn8mij_TOtpMs7NP-TZ*eaN4)s%pH*ABG;~l^HkM|O z4BY2za#-P*ygI$J5&xH0!~fy+(+urKy_YG^?6RYlNl8hCN525w1>VC7%7GdSag*<f zF-pR63x?HV2S7UMiC)WSE~FSV*@q6z_2HdDnhFRSEk_*#I4g>ahI`XMZA8t|KO5=u zv(7<#W6#vFX?+J`11%+Wfuv?Q%Wk{buNW4E3R)_yd#6FQZ8#yvUU}2=_uO4KzK&fr z{hE+B9Nbu5((dk+(ZSu~+H$ENZY<W-Xl+Jaep?--_$V4>*r;`V0=W^L_S0PZNY1@+ zp-rvD-Dlk_po9!~RbXwAv!d8)GLBF2*s~iD6n$4F1LNJ|g={PWNgFmkW&35OwW-f? z4{sWkUiLdLt<mysR4<$yC84X*sr3fiYz526WHEABU&$x;p9K11)YueHZNMsd>Xd0N zE!_oX5V~wTe*1Am9oOllr*=C0n>pR}H}GfYFa(xj1<$|D`#?u0WRrG_%_H5=dnLf@ z@+Y@ttm;_br2YG`)(KHP_odX#&&9;XUDDLlQN<z=?Wg9izAcF9t4*V;f^~-apg$?? z9amNTS)Y6!DAMe`$n%I*3LCJB`8in{kRpRF+#Oo>Df?llx1wIcO1ur|oo$64b26;y zjHDcz9Yw88cI~U~wT+!~7ps(m#Oha^ky_Los`(bAWm9|Bt-8%xE3AL2as8?Nnwv#C zm1k<LQz!>qcIL`X*rF!@=6W^sx~1FwYQWZeq}AsN1OkHT^;!n(!d`L}UHy7aP6z~W zKRDtSmY3;Lc@KYe5UX8<nHn7>Y<ZdV4&3nvUyG_K0WyBud5_}Mal;Z_Rb1L{=(uH? zQ>wdCFnwqInZ)Nl?Vyz9@Grwx+Gr8>t>~Zn&8N%UN(#YpG13vCpSU>YD}LM<e=a+h z(a7If#s_4de0alOpJz5os}kXcKBSECBgN>Ou@qhd!W3|-K#u_U(~@G!JxND%qt#DD z46(c3FV<CMsPf+0>#=fk*O4@wgE=mGEJ9o@aNBwK%dN>pDK3^^*@qgnWKhaMWosrk zADC|0lOHn4fv4QpIs*SPSz!xYKMm*?m(mmhAq@k2k|6#fE&<}+*l~NxL)6|a($b+o zRC_7T2G71XnsExh_@!jWej;7Sji6r`8!f`^>z{g4%(YTtFX@y|`1|_<Gs`1-u>A?* zmbv{%<mt#2gL}KIM&AfUkP2f6>Tt>;<k6czuCg=`K=<nlkf;3);a;L%tP)Nl+?4>g z;wou`;U76QoOtk!q%d<&UUmHN@#Z8$1c{+0+$lQ}HzhGTniqIhK&D^+qTVC@aIQu$ zo;|!X<UuPKBfq~Q(jH*<oVF4y9zUe=&R=5j>!3yW#B!X&HezGHG&A#8%gcmpM)@3e z``=&;XHA;p>R=Wy$;%{91Tq?@gaBc8L(eeRKUWgQ{Qh{>1rt42Q<L*>McBWvwx9-S zSvFgm1IdY?64895Z}-}QT|pfCTn?x*m8TAF{$r56z&Y5Q9D&@tDS3dZM#v1W(oi?9 zbI1Y5!GD<5EXmgw=tGP~KOpMKEx-qgV`H=?D<hI&3pZ}vQ~7S62gXSkyq-HEzaRf1 zQxmfd4DEu4_zAYXg99-9ls|me<h;e(z4IL7rUU^i;0XQR!hMq|L)6V4220lKs!<+o zxh6zd$?De;STi;1{vB9HlOufTL(H2-fgobKT)znuVE`(Cfr$s4nDe9Xfgi~A>Xg!m zGiY%iE1?gdBV58nkNoMd#`g6cFRYfn1jbOnXFk0)JHm*$Rm@nzoIU=6E`1KEw=BXb z*FoTkgZQ5=li`_dzE2l~X1rMOi+AoWDR#wv1mP~y_g$BhOm7iT>*?}M-B6!qK+(OH z0S+J$#3R9%nXI@ycE(4WlQ1SNmMUO~%C}0c#fU}ulYKP@EG>;d)CtCYw8eT#Scwr& zQ<>tW&<*lqycv(etFgc@GW&t3zGLdKQ=qKFm7YueWiIjrvnUpnDhP3CfvExuC!?J1 znje~2#i|gknI($72?3s#`GyXAoY4r$MJla>TjWGUs;veW+Ko}n5hp`xjUbk0U51v2 zN7d9BSSSRUn7T$|k7xVh*uf~*HlK5JR<7e9F!tTPAbCTJ{YddzcbqgsE?5k-ud#)l z)(?O$vIh7SX0bYzHOwZ8i`kB4mL%Kqu|HYb{OSD~RRp>X41ESTnOk^|4nWFinCvGf zh8%F15qe^S6a4L({b@qK<b}Y<gs*()BZ2krd_V4q$5i29;Q<G{?K2UJKQ*A>5g(kv z1`$XFTwnta8p@IJ0ZJVCE5NHglJGwN-5C;hM66ZSfS2Qi!+#qH{T)>D6mhU``T=7Y zg-!kQZXIs@#)EiWn_dJ0|IU{u7#*IZ7fxa;CgvqbhxIA+?%lf}L{mLax5fgR(ZzDt z?={AOe?;Ccj>Dhc*5-GE255h%M4X#}G;bx<LCMO>YH>RE&)&}^or<Prez=;tx_;wG zxe5})Q!!@f;`~eo-G=dzz&*mk+t<@9ISanm&AD3wtCzC)=@PK6ZGa$B)fOVQhc5;V z4yo{wpk&k~eDbxwhJ5t1^Kh=5F#T3`2$vcHg!+_v5)<NF2agJ2;;WC~D<*0i%JXh! z!2@|0v2DfBl2IR^;OAg>2e~$&pqsS;X`NtXuckOI20Z-1{ITsZFE$Q;B(Pm2f$wc| z@{6J8o>bWjR*m;Jrn4V`)$X@Um)WX>nO+*r2pK)kmI_f|1{L5ik_&%zU__$qMOy_} zYu=rTri3^zu)2n%;9RN1kNm%UkR!y=#S+#p#30~0TSKo^Udrmjk<H74Pg1%s0GCkx za&%Fhm+tjlU{e11Hu(uL)+McPPKX4{$Zc%eUle{D<xMu@r8*e*UD!_Wu{<j)E12uO z4>IKnP;(Fz3D$EZVA5Z@@9##4bL~2PBlb06eXt}Xm<LO=Dn5PsgnOS!HdEqY@Fi&Y z$Uz`yZc$`%a&jOnbQEMbnL7upi?ng+H?EH5Jp?HwMAw1vfnO)_&h=K}_b!f;03;c5 zX7Yjc9Ez*wbAibp{XC8UkxYd*K04w`KY#ueJQeo#_QNA1aT!TT=0s|=3BXTd@Vqd! zBSTkNPO^;)+!f~})=huOHk^kt57G>(L58d^`SWhDzD|e+xqblOnO+t#che^CY1&<1 zO0Dk;nTRL36JVdi>^FTwGeQ~s|1zIpf0P7GIIIz#7Vse#<Ru}$_z3iYUyn-ADp5(R zr>932wC4Qd&(F`nxrE`%?pPb>>r<8cKXfSsmifS`P+sakp_#AbD$!5J)jKVAJoGsA zgs&+I|CO)+4mn!FhhRAYsPb397v?8mH~Jgikb%eJuOEQw%8w2_2=`pv{|Q*Y)LXt7 zGv@!i;s4yj|5-Nw_n#C$vjh*DlsHU`#HnGq#W<Ilr~=Na3#)?k)KZ5PpObt{o!ke^ z`G$KAa)b`cUbx}-W1RSgrVTq1<tR%Z$G=1GFwgjF8qCIQT3$)=-)EjS7jQ2x-QCG4 z|0x;46YmAwjaz(L+J9%({JDh;gWZo#tmPj5e_spAy~yRGBzBH}Z5KG^V5^BtH@F4t zpMS!&zy7YQ!`XMz_<zoKu>1J)gOgiUnfn9qabtEP%<ooWg896b??C>Q%J2dltfILE z319z-&j7#s6H|bSI|StY>-(SsQ4G|>BmKYrc{6a)n=e64l+n<x_Ma=c<`;=^Vy>+j zzyH^3kHD^1_e1Z^UjXdStCo}nrBL9(0q?W_zV`YVAcUs>U%h>_!nrct|G9fOqJE%x zeg$fwc&gssUJx@T1hN2hYpu+Ug_+sd+4*>RHB2Ty8zW9Hl`-kBz`Ls1%3BY_parS+ z@<2%wCzmaV1rGNC&`mWK3kwQbo2uCWr6HydWXz_juD%bPJs5{Ccu#-?f$LyrreVLr z`>+I*yc=tCEglo4Iyn<RfBwX$62A9{pM{OBufhFOUeq$3VAj3ce=R~nN9=TO^co0B zeefmMW*!t0AfCH%DMc6eH^9&l5$kcMAc<TZeOc8_9TIBwsh|x2w+$ONz~?eDVl?}P z9Ok*#;f@PN<X5_%UH5)tLKL@`^?~7t8#w%5z4E69iE?S63I)Yc=f`{G^yZhpJ`jN9 z_cTPr!H^j!W-iW-T@d&3_=iPfO=7D4Uh#h<w9Pa)EdKueE<<y$Krw~M?+~Q3ZG-$g zhdOOubSNL9r?1c6M`NCn(*yIdhh%816ZxOclK0otHvz{U#>Wfd{F={E{ebV;>PK0} zJXD!i_28gkfmC05Ve;B?flUIV_s1lyV<<8qOy3!ngl?nNp97>dNZQ+hsZ0#Jf@HJ! zA7Llk6BQY7{U~W$fXt<&Izd9;3NTZFFv8ZW%QNckhgeCn`}s-VEXy16%^zix{<Y|R z({N=SCQL4Sq8RQI6Mr88cuFpr+Ymm}vJ2Q2<UsaKCy-H!1gQ``3t6E02DJ++zNjn_ z0w-H$tYN$}aQjw50iq5O4^cNUHLU>ok^uR@z6x|cdM%j-1qiU_b;S-@wX7{!qM{)@ zu}qmEC@2VZ&yG4E!7<Hxogx$%WVkt9-E!qXAb2$^tvev(Pr=7T13sL>{PN;>eq(6X zWnRqg_bYX2Do~XU<T6t=D!?l28Kd7FpIF}Kl`o|;+}8G${bwh-=68!Q@`s(8T6DZB zRErCbIJ5PnlUw}i+@UPR0y?%-7@FRvBP1?<36dP&Z%ftnrHXqsYJLVW4JG+YiE}^_ z6B|p?yP5|{D6Z7BfJ)Ot&DWgr7&jFd3_-4*@AVrR+8KlzTBo2qcCnd<z}#KFC-SgW z8g=8h2)140hAOmTGG%iwkrU-vHMa9}sMEc-M=i&5CD;2rmNviqhz}@ce2(F?Qf^Uv zY_BeoYXCzGmX`EYR9?d@mp04`((=jfi7_6m$yUrZxg6)|oMx72J2};G2Ux>CLLE|+ zC{6wjL9$YiL}{R>Ic~9YPCoTGvMP&Z_X5u46iPYMFqMtc=(ohH0Gi}N4eI)0d(@Rc zA^H)YY6^sof+l=}GzZ`~0KZ}I`CTvA0&14fVC`CX!IX&X#mNOMVjqpFRW}>sQ;QbD znA04iMJ)ixxnK6n8~FCbu@oT?bvg2)iCYhU<pn<)9q$FBF$9H$Vf4Bv*m!aT%iO?t zmyVbDdl0EseAA17mVmH^;VqbokU*A&`OK_67CK>O;on0GL%Q@32czL%3-{2&`OP{S z3N$62tX3nu;(nEDKa+o0U1$pJ@Y}+}&B*`W4WhAgt3bFUfOW=UO6lKV_c22bsy(?> z&5->KQdnr<Bu4|M2Ke6$$)1%r4)DZklueqx;lVaXSUJ?e&Fp-6Fz?VvZXYvQA^s#r zJArFL{uB(}(9q8ytQNljpj-?8G2XsSMa6XktMPTXcy^($xIPFaxht=oz-<D$Tx%G* zCCDc`g7FIMJxkM^?qScfB3XgWy%X3OHFTd*^|vo8t=6?$;f@v5Fm3jGYM8a(qL?HB zp>o%dyvCOjPjh*l{yxOs$Vsx-OVdCkQ>;A^k0762L2hC^Un5@@h>0~EKHsXF7aZ2Z z6@%tGkjKP-kLE@Jl?t-bAZ6qfU>S`Q(0UVqRwsLJR(1DLH)!)KB#Wdhgj`1;<D82= zgJcS0*s@N57mu#}OfbZ(U1a@3;MgA??FoVfN@>NjjoVH>CkwatS=&X2)mrwbT(~DS zgit?J3+z#Ldo~vD&f;l28K%vP*JbxVMv88fe$lYLJU=Z>dx}l-*X7f4;Ib$L@7E() z_W*X$6`BfJQ%xxGB`FX*m5Y)<^)NI-Ul1E6<(JQJF8PCe#>IQqOZj7^9_<{x5WBv- zX;A@-pKe8SE%6Dd=tr6P%^E!6quUwm$um|-3y_qWEyl4U#jV-uN=m0u)d98v(jF<g zXNPVtn*ujxYAtn;Vp#-I!$|2-H}16`pl|YVaNN+}0bd`lNP+6F-Az)Pc<=#2+7sep zF_CX4vlrk`nN|ZYPoxfxDMNw$jA)Ty-Z<cSpezD$v6~PPgz>u%HPSZ3Qv~aJZIG#Y z8DN5al6f7<Vf4tTcI*=*`;9f5V1wRKS-xXxWZY5u`}~!b+(V7&YZzr+K<j9iq4iM> zD($|(iyJ}@?p}fu<75Tr?%$<OmZYTV!Dua)!OHFuoZj3<Pe<b?%4EnyX3buz)f;U1 zNcAik3~zJ?UJEAp*>iRPeyFvgEHuHB6(aP#(3hmlfa109F`G$ANo{rG&q3KQ`Y^t_ zFmv^er`V#kn~ds8tnL<L&`6nCcOe4{WMAA$noD{u{i^N*_O|SVqpizNzk>eEQ~9eL z^B2F~P_fExDd(V%nB#!?jsJ48&mBh~GibGLZ*e(w)7>U!SEqOx7f%oxr(WSt$ySXE z6->-r#(UD{L7G;^;Bg@It+QA<*}7)jpQTjLOSxxFb_K7fSzIv*cBeAuTPQi7XnFqK znxoovLi(+DEy#FX&z&APqmDq`&deL3ze++{JscL%Pw^cXvIfr;BnoR*6ACrTGO|kt zYksXk?t$SDPr?_;62N#E*6N10p{u{BrRbW$Oq-exHM%yZ>=iJ2h1Rby)1O_lRE6Y0 z#7cCs^Jqvj>(b5guCV=3XZlCXn_!n}3C1d3bwq0!xJlhziCz?zmz%%EGVXEXdo69^ ztC-C9<|7Hyz~{OJl&6|<VP+j4@zC$GX+yz4g_t6bF{l=64`#?h@tC96x8Xo`hew5i zH&{ZK!Rb^H^Bk&nTU0JbceZ68AtL;Av=Oh!Up(jie`;C3WrobS*Qe%YV$((sP|(O~ zwR^T3MIPbQI*4!b+Kh3DyvD(K-=#wzW-$ahmJDR(hhpKZpHQnyQe2iQEMB}tA(_i) zIo0M61Ig7dcwk}dbQO-)l%tobEA4-N6IAhQl+X1TibpmvQ&pBh#<9aVAy><R8nUN# zzORV;&aq%wz9-1*v^EanvKuE?j$u}gM>yNO0dXY3Jhq~43Ua+RK~8Z)rfe~b=j%w9 z-UgkNe1>;*`(|?gP22Mz8tkhJ_tDaJG?lW%d#+{*d?;wwU!V6hYN|8KJ8jo?q;FlA z`CgwZNhEc5d)?36WYitr#X1vO$YXMLJs_Y3j!T8d-dhf{R~TO5U!j|*W7SQNNuG8` zKlwZH3Ih;m9dRo0_#Ky{qyBT611Rtx-tE66Miwahsf8VSW&Z^QtN=W)*;wmv{ckz% zH;5rS(i+}9{udOe1@NHm@ZgQ;e?SQ!S3ubxh|uFD{_ktA>tZtZ{*UVeNXnFp9QVJk z{ok`({zOv305xUtC4^%C3rUTGpVg*|hyLB*z<fd+DuAR0lOWQ75dP;AzqSM<v#v5t z*MDz5jz2y?Qmfw?8UB@@SSbLIR9OMR;=hp;Kux0mU){bd0!t(4tU%1!t!v<)oRre5 J@)xiF_+KD0Jf#2t literal 0 HcmV?d00001 diff --git a/website/source/docs/agent/services.html.md b/website/source/docs/agent/services.html.md index dc437a1fe2..030331b8ad 100644 --- a/website/source/docs/agent/services.html.md +++ b/website/source/docs/agent/services.html.md @@ -63,7 +63,10 @@ example shows all possible fields, but note that only a few are required. "local_service_address": "127.0.0.1", "local_service_port": 9090, "config": {}, - "upstreams": [] + "upstreams": [], + "mesh_gateway": { + "mode": "local" + } }, "connect": { "native": false, @@ -140,7 +143,8 @@ deprecated and has been removed as of Consul 1.1. ### Connect The `kind` field is used to optionally identify the service as a [Connect -proxy](/docs/connect/proxies.html) instance with the value `connect-proxy`. For +proxy](/docs/connect/proxies.html) instance with the value `connect-proxy` or +a [Mesh Gateway<sup>(beta)</sup>](/docs/connect/mesh_gateway.html) instance with the value `mesh-gateway`. For typical non-proxy instances the `kind` field must be omitted. The `proxy` field is also required for Connect proxy registrations and is only valid if `kind` is `connect-proxy`. The only required `proxy` field is `destination_service_name`. diff --git a/website/source/docs/commands/connect/envoy.html.md.erb b/website/source/docs/commands/connect/envoy.html.md.erb index a1e058d8c4..51ae8628ab 100644 --- a/website/source/docs/commands/connect/envoy.html.md.erb +++ b/website/source/docs/commands/connect/envoy.html.md.erb @@ -45,31 +45,16 @@ proxy configuration needed. using `unix:///path/to/socket` if the [agent is configured to listen](/docs/agent/options.html#addresses) that way. --> **Note:** gRPC uses the same TLS - settings as the HTTPS API. If HTTPS is enabled then gRPC will require HTTPS - as well. + -> **Note:** gRPC uses the same TLS + settings as the HTTPS API. If HTTPS is enabled then gRPC will require HTTPS + as well. <%= partial "docs/commands/http_api_options_client" %> -#### Envoy Options +#### Envoy Options for both Sidecars and Gateways -* `-sidecar-for` - The _ID_ (not name if they differ) of the service instance - this proxy will represent. The target service doesn't need to exist on the - local agent yet but a [sidecar proxy - registration](/docs/connect/registration/service-registration.html) with - `proxy.destination_service_id` equal to the passed value must be present. If - multiple proxy registrations targeting the same local service instance are - present the command will error and `-proxy-id` should be used instead. - -* `-proxy-id` - The [proxy - service](/docs/connect/registration/service-registration.html) ID on the - local agent. This must already be present on the local agent. - --> **Note:** If ACLs are enabled, a token granting `service:write` for the - _target_ service (configured in `proxy.destination_service_name`) must be - passed using the `-token` option or `CONSUL_HTTP_TOKEN` environment variable. - This token authorizes the proxy to obtain TLS certificates representing the - target service. + * `-proxy-id` - The [proxy service](/docs/connect/registration/service-registration.html) ID on the + local agent. This must already be present on the local agent. * `-envoy-binary` - The full path to a specific Envoy binary to exec. By default the current `$PATH` is searched for `envoy`. @@ -82,11 +67,11 @@ proxy configuration needed. bootstrap config to stdout in JSON protobuf form. This can be directed to a file and used to start Envoy with `envoy -c bootstrap.json`. -~> **Security Note:** If ACLs are enabled the bootstrap JSON will contain the -ACL token from `-token` or the environment and so should be handled as a secret. -This token grants the identity of any service it has `service:write` permission -for and so can be used to access any upstream service that that service is -allowed to access by [Connect intentions](/docs/connect/intentions.html). + ~> **Security Note:** If ACLs are enabled the bootstrap JSON will contain the + ACL token from `-token` or the environment and so should be handled as a secret. + This token grants the identity of any service it has `service:write` permission + for and so can be used to access any upstream service that that service is + allowed to access by [Connect intentions](/docs/connect/intentions.html). * `-- [pass-through options]` - Any options given after a double dash are passed directly through to the `envoy` invocation. See [Envoy's @@ -94,6 +79,54 @@ allowed to access by [Connect intentions](/docs/connect/intentions.html). always specifies `--config-file` and `--v2-config-only` and by default passes `--disable-hot-restart` see [hot restart](#hot-restart). +#### Envoy Sidecar Proxy Options + +* `-sidecar-for` - The _ID_ (not name if they differ) of the service instance + this proxy will represent. The target service doesn't need to exist on the + local agent yet but a [sidecar proxy + registration](/docs/connect/registration/service-registration.html) with + `proxy.destination_service_id` equal to the passed value must be present. If + multiple proxy registrations targeting the same local service instance are + present the command will error and `-proxy-id` should be used instead. + + -> **Note:** If ACLs are enabled, a token granting `service:write` for the + _target_ service (configured in `proxy.destination_service_name`) must be + passed using the `-token` option or `CONSUL_HTTP_TOKEN` environment variable. + This token authorizes the proxy to obtain TLS certificates representing the + target service. + +#### Envoy Mesh Gateway Options + +* `-mesh-gateway` - Flag to indicate that Envoy should be configured as a Mesh + Gateway. If multiple mesh gateways are managed by the same local agent then + `-proxy-id` should be used as well to specify the instance this represents. + +* `-register` - Indicates that the mesh gateway service should be registered + with the local agent instead of expecting it to already exist. This flag + is unused for traditional sidecar proxies. + +* `-address` - The address to advertise for services within the local datacenter + to use to reach the mesh gateway instance. This flag is used in combination with + `-register`. This takes the form of `<ip address>:<port>` but also supports go-sockaddr + templates. + +* `-wan-address` - The address to advertise for services within remote datacenters + to use to reach the mesh gateway instance. This flag is used in combination with + `-register`. This takes the form of `<ip address>:<port>` but also supports go-sockaddr + templates. + +* `-service` - The name of the mesh gateway service to register. This flag is used + in combination with `-register`. + +* `-deregister-after-critical` - The amount of time the gateway services health check can + be failing before being deregistered. This flag is used in combination with `-register` + +-> **Note:** If ACLs are enabled, a token granting `service:write` for the + mesh gateway's service name must be passed using the `-token` option or + `CONSUL_HTTP_TOKEN` environment variable. This token authorizes the proxy + to obtain receive and route communications for other Connect services but + does not allow decrypting any of their communications. + ## Examples Assume a local service instance is registered on the local agent with a @@ -108,6 +141,8 @@ service { } ``` +### Basic Sidecar Proxy + The sidecar Envoy process can be started with. ```text @@ -118,6 +153,8 @@ This example assumes that the correct [environment variables](#api-options) are used to set the local agent connection information and ACL token, or that the agent is using all-default configuration. +### Additional Envoy Arguments + To pass additional arguments directly to Envoy, for example output logging level, you can use: @@ -125,6 +162,8 @@ level, you can use: $ consul connect envoy -sidecar-for web -- -l debug ``` +### Multiple Proxy Instances + To run multiple different proxy instances on the same host, you will need to use `-admin-bind` on all but one to ensure they don't attempt to bind to the same port as in the following example. @@ -133,6 +172,16 @@ the same port as in the following example. $ consul connect envoy -sidecar-for db -admin-bind localhost:19001 ``` +### Mesh Gateways + +The mesh gateway Envoy process can be started with. + +```sh +$ consul connect envoy -mesh-gateway -register \ + -address '{{ GetInterfaceIP "eth0" }}:8443' \ + -wan-address '{{ GetInterfaceIP "eth1" }}:8443' +``` + ## Exec Security Details The command needs to pass the bootstrap config through to Envoy. Envoy currently diff --git a/website/source/docs/connect/mesh_gateway.html.md b/website/source/docs/connect/mesh_gateway.html.md new file mode 100644 index 0000000000..d507e87fa8 --- /dev/null +++ b/website/source/docs/connect/mesh_gateway.html.md @@ -0,0 +1,169 @@ +--- +layout: "docs" +page_title: "Connect - Mesh Gateways (beta)" +sidebar_current: "docs-connect-meshgateways" +description: |- + A Mesh Gateway enables better routing of a Connect service's data to upstreams in other datacenters. This section details how to use Envoy and describes how you can plug in a gateway of your choice. +--- + +# Mesh Gateways <sup>(beta)</sup> + +Mesh gateways enable routing of Connect traffic between different Consul datacenters. Those datacenters +can reside in different clouds or runtime environments where general interconnectivity between all services +in all datacenters isn't feasible. These gateways operate by sniffing the SNI header out of the Connect session +and then route the connection to the appropriate destination based on the server name requested. The data +within the Connect session is not decrypted by the Gateway. + + + +## Prerequisites + +Each mesh gateway needs three things: + +1. A local Consul agent to manage its configuration. +2. General network connectivity to all services within its local Consul datacenter. +3. General network connectivity to all mesh gateways within remote Consul datacenters. + +## Modes of Operation + +Each upstream of a Connect proxy can be configured to be routed through a mesh gateway. Depending on +your network, the proxy's connection to the gateway can happen in one of the following modes: + +* `local` - In this mode the Connect proxy makes its outbound connection to a gateway running in the + same datacenter. That gateway is then responsible for ensuring the data gets forwarded along to + gateways in the destination datacenter. This is the mode of operation depicted in the diagram at + the beginning of the page. + +* `remote` - In this mode the Connect proxy makes its outbound connection to a gateway running in the + destination datacenter. That gateway will then forward the data to the final destination service. + +* `none` - In this mode, no gateway is used and a Connect proxy makes its outbound connections directly + to the destination services. + +## Mesh Gateway Configuration + +Mesh gateways are defined very similarly to other typical services. The one exception is that a mesh gateway +service definition may contain a `Proxy.Config` entry just like a Connect proxy service to define opaque +configuration parameters useful for the actual proxy software. + +## Connect Proxy Configuration + +Configuring a Connect Proxy to use gateways is as simple as setting its mode of operation. This can be done +in several different places allowing for global to more fine grained control. If the gateway mode is configured +in multiple locations the order of precedence is as follows + +1. Upstream Definition +2. Service Instance Definition +3. Centralized `service-defaults` configuration entry +4. Centralized `proxy-defaults` configuration entry. + +### Enabling Gateways Globally + +The following `proxy-defaults` configuration will enable gateways for all Connect services in the `local` mode. + +```hcl +Kind = "proxy-defaults" +Name = "global" +MeshGateway { + Mode = "local" +} +``` + +### Enabling Gateways Per-Service + +The following `service-defaults` configuration will enable gateways for all Connect services with the name "web". + +```hcl +Kind = "service-defaults" +Name = "web" +MeshGateway { + Mode = "local" +} +``` + +### Enabling Gateways for a Service Instance + +The following service definition will enable gateways for the service instance in the `remote` mode. + +```hcl +service { + name = "web-sidecar-proxy" + port = 8181 + proxy { + destination_service_name = "web" + mesh_gateway { + mode = "remote" + } + upstreams = [ + { + destination_name = "api" + datacenter = "secondary" + local_bind_port = 10000 + } + ] + } +} +``` + +Or alternatively as a sidecar service: + +```hcl +service { + name = "web" + port = 8181 + connect { + sidecar_service { + proxy { + mesh_gateway { + mode = "remote" + } + upstreams = [ + { + destination_name = "api" + datacenter = "secondary" + local_bind_port = 10000 + } + ] + } + } + } +} +``` + +### Enabling Gateways for a Proxy Upstream + +The following service definition will enable gateways in the `local` mode for one upstream, the `remote` mode +for a second upstream and will disable gateways for a third upstream. + +```hcl +service { + name = "web-sidecar-proxy" + port = 8181 + proxy { + destination_service_name = "web" + upstreams = [ + { + destination_name = "api" + local_bind_port = 10000 + mesh_gateway { + mode = "remote" + } + }, + { + destination_name = "db" + local_bind_port = 10001 + mesh_gateway { + mode = "local" + } + }, + { + destination_name = "logging" + local_bind_port = 10002 + mesh_gateway { + mode = "none" + } + }, + ] + } +} +``` diff --git a/website/source/docs/connect/proxies/envoy.md b/website/source/docs/connect/proxies/envoy.md index 9d600474bf..5f6dd44654 100644 --- a/website/source/docs/connect/proxies/envoy.md +++ b/website/source/docs/connect/proxies/envoy.md @@ -217,6 +217,31 @@ definition](/docs/connect/registration/service-registration.html) or connections before timing out. Defaults to 5000 (5 seconds). +### Mesh Gateway Options <sup>(beta)</sup> + +These fields may also be overridden explicitly in the [proxy service +definition](/docs/connect/registration/service-registration.html), or defined in +the [global `proxy-defaults` configuration +entry](/docs/agent/config_entries.html#proxy-defaults-proxy-defaults) to act as +defaults that are inherited by all services. + +- `connect_timeout_ms` - The number of milliseconds to allow when making upstream + connections before timing out. Defaults to 5000 + (5 seconds). + +- `envoy_mesh_gateway_bind_tagged_addresses` - Indicates that the mesh gateway + services tagged addresses should be bound to listeners in addition to the + default listener address. + +- `envoy_mesh_gateway_bind_addresses` - A map of additional addresses to be bound. + This map's keys are the name of the listeners to be created and the values are + a map with two keys, address and port, that combined make the address to bind the + listener to. These are bound in addition to the default address. + +- `envoy_mesh_gateway_no_default_bind` - Prevents binding to the default address + of the mesh gateway service. This should be used with one of the other options + to configure the gateways bind addresses. + ## Advanced Configuration To support more flexibility when configuring Envoy, several "lower-level" options exist diff --git a/website/source/docs/connect/registration/service-registration.html.md b/website/source/docs/connect/registration/service-registration.html.md index 9cf75bf87d..91842df130 100644 --- a/website/source/docs/connect/registration/service-registration.html.md +++ b/website/source/docs/connect/registration/service-registration.html.md @@ -81,7 +81,8 @@ registering a proxy instance. "local_service_address": "127.0.0.1", "local_service_port": 9090, "config": {}, - "upstreams": [] + "upstreams": [], + "mesh_gateway": {} }, "port": 8181 } @@ -119,6 +120,9 @@ registering a proxy instance. this proxy should create listeners for. The format is defined in [Upstream Configuration Reference](#upstream-configuration-reference). + - `mesh_gateway` `(object: {})` - Specifies the mesh gateway configuration + for this proxy. The format is defined in the [Mesh Gateway Configuration Reference](#mesh-gateway-configuration-reference). + ### Upstream Configuration Reference The following examples show all possible upstream configuration parameters. @@ -149,7 +153,10 @@ followed by documentation for each attribute. "datacenter": "dc1", "local_bind_address": "127.0.0.1", "local_bind_port": 1234, - "config": {} + "config": {}, + "mesh_gateway": { + "mode": "local" + } }, ``` @@ -187,3 +194,57 @@ followed by documentation for each attribute. options available when using the built-in proxy. If using Envoy as a proxy, see [Envoy configuration reference](/docs/connect/configuration.html#envoy-options) +* `mesh_gateway` `(object: {})` - Specifies the mesh gateway configuration + for this proxy. The format is defined in the [Mesh Gateway Configuration Reference](#mesh-gateway-configuration-reference). + + +### Mesh Gateway Configuration Reference <sup>(beta)</sup> + +The following examples show all possible mesh gateway configurations. + +Note that `snake_case` is used here as it works in both [config file and API +registrations](/docs/agent/services.html#service-definition-parameter-case). + +#### Using a Local/Egress Gateway in the Local Datacenter + +```json +{ + "mode": "local" +} +``` + +#### Direct to a Remote/Ingress in a Remote Dataceter +```json +{ + "mode": "remote" +} +``` + +#### Prevent Using a Mesh Gateway +```json +{ + "mode": "none" +} +``` + +#### Default Mesh Gateway Mode +```json +{ + "mode": "" +} +``` + +* `mode` `(string: "")` - This defines the mode of operation for how + upstreams with a remote destination datacenter get resolved. + - `"local"` - Mesh gateway services in the local datacenter will be used + as the next-hop destination for the upstream connection. + - `"remote"` - Mesh gateway services in the remote/target datacenter will + be used as the next-hop destination for the upstream connection. + - `"none"` - No mesh gateway services will be used and the next-hop destination + for the connection will be directly to the final service(s). + - `""` - Default mode. The default mode will be `"none"` if no other configuration + enables them. The order of precedence for setting the mode is + 1. Upstream + 2. Proxy Service's `Proxy` configuration + 3. The `service-defaults` configuration for the service. + 4. The `global` `proxy-defaults`. diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb index 74c208c253..00fe1956b3 100644 --- a/website/source/layouts/docs.erb +++ b/website/source/layouts/docs.erb @@ -498,6 +498,9 @@ </li> </ul> </li> + <li<%= sidebar_current("docs-connect-meshgateways") %>> + <a href="/docs/connect/mesh_gateway.html">Mesh Gateways <sup>(beta)</sup></a> + </li> <li<%= sidebar_current("docs-connect-registration") %>> <a href="/docs/connect/registration.html">Registering Proxies</a> <ul class="nav">