From 8c347f1218569a817733ad7d32e08d3b0591f0fa Mon Sep 17 00:00:00 2001 From: Denis Tingaikin Date: Tue, 9 Mar 2021 02:19:24 +0700 Subject: [PATCH 1/2] Add OPA example Signed-off-by: Denis Tingaikin --- examples/basic/README.md | 2 + examples/features/namespace.yaml | 5 ++ examples/features/opa/README.md | 137 +++++++++++++++++++++++++++++++ examples/features/opa/scheme.png | Bin 0 -> 58407 bytes 4 files changed, 144 insertions(+) create mode 100644 examples/features/namespace.yaml create mode 100644 examples/features/opa/README.md create mode 100644 examples/features/opa/scheme.png diff --git a/examples/basic/README.md b/examples/basic/README.md index aac532a7dc9c..7278f7e83551 100644 --- a/examples/basic/README.md +++ b/examples/basic/README.md @@ -17,6 +17,8 @@ Basis example contains setup and tear down logic with default NSM infrastructure - [Kernel to VXLAN to Memif Connection](../use-cases/Kernel2Vxlan2Memif) - [Memif to VXLAN to Kernel Connection](../use-cases/Memif2Vxlan2Kernel) +**Featues** +- [Open Policy Agent](../features/opa) ## Run diff --git a/examples/features/namespace.yaml b/examples/features/namespace.yaml new file mode 100644 index 000000000000..7919ccab9bec --- /dev/null +++ b/examples/features/namespace.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + generateName: ns- diff --git a/examples/features/opa/README.md b/examples/features/opa/README.md new file mode 100644 index 000000000000..a98ff72721bc --- /dev/null +++ b/examples/features/opa/README.md @@ -0,0 +1,137 @@ +# Feature OPA + + +Let's consider a current simplified version of NSM authorization. + +![NSM Authorize Scheme](./scheme.png "NSM Authorize Scheme") + +*Note: This scheme simplified many of the complex things that happen in every client and endpoint for simplicity. To understand it in deep consider looking at the source code of applications.* + +Each application in the path of NSM request doesn't trust anybody. Each endpoint doesn't trust the client and on each incoming request the endpoint validates tokens in the path and if they invalid then the endpoint returns an error. +Each client also doesn't trust the endpoint and checks tokens on the response. + +Authorization checks enabled by default in NSM. +For example, all e [use-cases](../../use-cases) are using valid token chains by default. + +The example below will do token from step1 from the scheme as invalid. +Expected that Endpoint(in this case NSMgr) will fail the Request from the client on step 4. + +## Run + +1. Create test namespace: +```bash +NAMESPACE=($(kubectl create -f ../namespace.yaml)[0]) +NAMESPACE=${NAMESPACE:10} +``` + +2. Register namespace in `spire` server: +```bash +kubectl exec -n spire spire-server-0 -- \ +/opt/spire/bin/spire-server entry create \ +-spiffeID spiffe://example.org/ns/${NAMESPACE}/sa/default \ +-parentID spiffe://example.org/ns/spire/sa/spire-agent \ +-selector k8s:ns:${NAMESPACE} \ +-selector k8s:sa:default +``` + +3. Select node to deploy NSC and NSE: +```bash +NODE=($(kubectl get nodes -o go-template='{{range .items}}{{ if not .spec.taints }}{{index .metadata.labels "kubernetes.io/hostname"}} {{end}}{{end}}')[0]) +``` + +4. Create customization file: +```bash +cat > kustomization.yaml < patch-nsc.yaml < patch-nse.yaml <{#5 zx1{VOf!>hkJEx7^;;71E$5$Ucj^b(>hs;9;RJ8$A(oh8jQCOqp(3!G$ePYp9J3`>k zv*cfeKg&OgMMHke5p)J@`}}U#pyub?Aq(0QIEvWwj0Dqa7sx;4*cy(W;{f-c>Pg(Z zQ9bP$|9aAx^qKdAd$V7}SyItCcrtg-c06%<9W|sG+%wN_Z?UZe$QK*GOV;YW73021W!XDI)mIb@hD1!x3Gj?FnF$1F;YRh9P><5wMClJ}sDl z#DznbCZ{lB6eut$ARUbr39+M(fY};GPT?ZBONPoZB*Nnt3Jvq}K`>;R1I|uN(xaEf z#Bi3GU-JYT+YB(6jQZjJeMa&Zh7e3#&#gMOg`nzvm6rTPS(Ur_Qk8GMIIxH$5Jd=v z_|F&k$Ky7-un&KK|M>!&E^XA|@p@q?me01H8+A-z0`JhiVr{)dl@BW(P~N4yPH>gt zA#(@$aUIMQA0_|8*A7{=6hoxc{70Q5qHUpAHZQmXQ6|`RC(A z{QlE`xn!Qee;Q~cRV4a%1ED|u|2R$m$y~9<{otbal{p34_W4S^)sLqCeM^oOK2Oni zzoCZo_u{*(_olI0oXUD^`$2;}Z3iHqdhvNYSav<_!V|ddeA zO#*a!U0s<>Wm&o9<&djYI+bo+l^8jn&Yz@dx%}_xG?jEbSB!jea*{G(%;j>aY4gL~ zol78pDn2f*X6<76;=z6H3keA<42-FYy4TB{SshLLhPF+n#p&8Nb=K_c>WZ`}ZkJ1$ zZf}6$#@cn8%jJ6NhRiCt;3bk&CQKAO=svI6G%QNVBzM*Enis8YgYwLcRIrQmGSy1zKB76vzfPl&tR*` zz3UqL11Zp*|2xA~Q&ud=d3ier4bXq(L;tmsyou7X(Hgz}niWe_1meJB-2(A{8HuR_ zTYA*vriVNfGrCYHl7##J*qbV2_SEn@;MJ~G6V#>uF}DGg@dNu$7#N~Ie*B0yO#Z)F zTLWkD+=$bXR>+2RvM%V#F^rqnI2{fVZ>9g+B=;---NBU$=Puy8huaybV~zr| z`Tu3N1>(Jh97%(rI#b&{oz+V3?~XFQ4{~36_t-wYtS{lYlYi4E4Mf?^^A@ivJAj=5 z4NeA^78$4=O^3FRI503UE&5|FT$v(bVyK@!&E(m^6^ILJbul${G6V#c^xn1hhB7jM z8Q8*jdE<)j_Th!|u0lpA2tlE|D$oeOQg*8~j=5Cpop2k~0YGQ@l1PUq0D9$j(`mI$ z7fL5{Wn*L4POe?6s?{=(k|!;<(=@!Rj*4IV(2^Y~XR{E2#(0;Cj2F&a&V%oV)Na4@ zvXhK3V-Vw=pNPH(rGmQPO0PZ}?bcwClZAx0)z@l%OS7(=9r=2vCwg@U`u0US{V<%q z^R1A)UqzrHiZFH~O09)hSOsSDdVKbk%bYxzqirt7_Yw6NtTWU&FHBTamzi8AbInc{ zxX~(OA(){_9veiH=jqLK*_1RkF8U|}LtI6aJ~6b}>Ct-Gc1Ef=t*=u_tT+B8+>2a4 z`5>N|8BV#A+B&MP+4v_1ZAiv2DuX%_L;t$mX%&86!?ys5l}I6&87{aaMrk$Pdrk4T zxng+;6f7)?9kaW1H{V$)m{^HW_}|Z-o_90ij+g7|{-8Ucno?Hw#|GI2C&dYPd!#4( z$j}K@vFda&H85FZP@m+#2ot(xR?KD6-d(-On*Q|d2?HrrxO-5f%hp>#895HFVLlH{u8>9P#PI=rphN7Zslm?#hjwq%T|y=ahtCt;(%j;=H@`1K~~M*4~Q+YrdCSI8!) zu)Wz)n7r;@ud{E9MT(L1CiRkzTj}!&cu<2I_{M%Z8>RFx`2^d2AzU*9q*&ix#x_i3 z;TyHkvC^Lz_=HgN(SQYqadSGPw>GBU*oE_+AdNd|5XJy(2)e$+?WfRMmRctd{bo#E z%FQ;Bb!!#$&?WI*D|>7q;r!%Ck)7Cw;ELP|seFz`WN>h?V7g@SEs;4(Hr%VO*GrX| zbb&RlPmLCseaVd#o!llH{9d^xdm-@=b zy#e1Z+pjphUJ$r^y@Tf#wz$29wzO3E9bVS!sHG)hum^AYi3doh3=g!7Bhx}=Gu`$J z#A+}05YIP$_Q)<6oq+kg+K>;Z=5QIuWt#UsX;G$QP8n=e)V`s=LE;XV--Sd_}M72HkY$CablMV1|kg7;W zy%sTs_+%t?;IaEN;m?PiarKa4w!{MNwc&hs(6jAeJe8SN8eQ`&6?MYtrxIeqPOXS` z(Z$h^_|erV|I`LE{duwMCQ5d|c$7`r2489^T0F6Jv>E2RA@#PdeT^}co~*y`s{FYg}Z zvf{5^%r9XqU?EGjZx{A026X971rDl@J*Qi~A+^!%0hBn1(HmNTV%_XMX`jts^WF=D zTWE4>Ka;u1txPV;+f&=Dyj13Mik<~dXib$d3heDX`j$PqCn<)JJ%@(bF z#E(YtDq#TdYkr>6QQ>#Co3fP|ez2QjhNfKKGcxB#E8;e&X|Drk?}fOCe9jbI^)t=P zZ{^T0R&X5;w7SEZC1B0X_^nXqz`Ro0PWiGgn_&}a7SHbB+O)6axW2W>t5Hws$yWCa z*nzXP(UKFJM6sOHXTU9>O9o6|IPaBySPLAikZ5#jd1-F9GGx&6aYWrgyzyI=*XE)7 zD$03+-r1SiPG(H`R zGE+CMeXtMkb?bh#m75Mu*&FE!c+KEP(m$2B!kxq)+3MHR2JO3MLoyGBvFT&S!+-+s zn`?*9waa!hTyM}!_Sf}Vx!yH9{+LsH6{c}~BXWC7xg*Wt_}lF5@c`lk4-BhMLZ&VG z(g_pSlN(|J&huVA8i*&6^QpsUHAVwsEk)$=lt8UGi=Fwp_TwyY3(r&bEt=wyoQbaC z-41ZLHOTmFWwI&;IIaqwk99NQan4(jyMCX|qj#kZWZynieA^*LgFJgsyqm!$c<%fl z`(~{I4Sw%8oceSoz?IF1IkmOU24=ehSYrGDVe{a#$(i$hmC+!-vPF+FMNYRsp~(}| zXF$HoeqKyeE7xb174WP`GUDmM=_Vho_nsqNA&?l+vGkZ*%2+`5{by=pdI#+RM^R%k zX>v@Q{Dvt)Y}=bs8H<1*?4_IEvuQ~4x3xVsCcW≷>tvR@wf{TZ);|wGr(Wq~Q?w z8ZGJOQsm_AvVx6{@a4Vh-|G%jpFVvOw70(rirLaULtu5$iA<)9|0cG=-cyT*YK=rp zTF|@Ig4dy zD)a63p3q@c5EeGebEL_IP?)9w7QOj1!d&9dmZ+xXVJU*idOM0x%S)+NX-aBqYv)Hm z53+?Nm_?-WcL|QEkc2g92-BMpWZj?Mx+ZB&8^klj!w)_Dwh$b0%et)hhH+tM&`(9?vJ4ea0 zuE{%geJ(T1*uY5Du?@j?(V)&m&ENLjd9ruLHir7#!KdPl><9F@Iv~ z2|l}E2b~SaJNC=UYPM98dC&7m)$B-UNj9)zZOwS0%V3MnRLf~|sN0qYV5FnhDbG<> zgcI*IqFYKy0Jy7sbV3Y-C{IgB4`Y<3*F_C&D2Pa|vrC{Ke$F-*U6L6NMC%XkpyUyz zkA%06Q=~yJP4e6r^GfV|#kK9)F@2vrbURa$>ou4m?bPz)bVoHC3)WSV+kNIpK2I*z z-P+5mc_N!!Dqnvbb{mkV>tQzq4|;~LfmCUZeG3zjrxw87CoEUWFmBe4+Rwi#Cp2=!epG-17J?wTKl$^xd~V`&C6a5S@c1Wye-mi9|@i6jOaid zvpZj3a^!s+|9W7;9DTHD*meDJ^8R+j^;R;D1$iecpd>6}Bpp9;Dp7i9U2~S4N{!zG zwtW_Sb!^bQ%w=fDi9da@Du83~fUeetbE+{ab#fZ_Y8A{lQvr5a&u$V7& z?v`)zU}xE+TQ-X_GvSoc>u@;rnDzJQgCSG;L_u+J^HU}Cai!zwJSAYhRM}ml?TgX( zj;dj(+&PPiEZ|0v6n8GLvOq|b?S@L{1K;@MYRQ1lT&OXmslc)|e z5x0^48_%lmAH1FRSHMT-J#7q+pt!YpIo%15MlC7!O6kF1H7&uJeC_x2KaaMl@{SJ8Y<8Qhtn_q^*Oire6Q_$KW!X1C ziARiQ$y~z3fI69!;w`l|I&(~`=}91 z3w$G^Bmcd@#^qQNFb%$u^zLTm1&^wNA5b>jeI4U|@WiK?vxe@7@R`?W3i9-6F2wx@ zzoWbSLWFnO?Q?rPs4@S(`$!1>#n)(uBw&k?j)!$C8N5}Se$BC@#`}UUHgFc6u<_}v z?soY5!eIMgZaTv8>G6GAdoLTcB=Qo*v=uy1^VMy}F+RGtp!mEZdf0EUtrN42$+SrO z&T6B@dLF-XI#DmeX$cwe)ZVm^fFQ7HS%<56JT2uee5O8TK6~rFLsk`MprDoiDi{lN zpZaw;>@RP9s+RIG9MR(mfUB`DTbym$G2dqxZNA0Ru$;aIi;SiQH8v^K}e&yG1xeWaGP zmcG~`JT+?uO}xk~RkSPN2*B%n4y3zeXVVQbFSpzRxK=B$aMeI;C%-J3_?!G|ja?>O zJg!`OOWRWnS~x-Hj!x8WEWosYAoD3s`$ieyc3}aqIt4`wUlN@U$5TH~QO6LZph`q4 z?mV$2@wA_HRDZs+&YlciqeYOTwRT$q<|qhF_&%aQcbk>TXCP-go`B*8C>TfYLfx$Nxke)_HEOc7=73UT}17rxJX+b-qOYMnt z_NxyYnqK=+mwvO2&_(Z$u}#XowL8L6Y??0u!DQ7(ig|uk>jkUr4X4MXyB+~H@^p|{ zFRu{}S9~l1LC1EC_Z}$^;lyU&Oar(JpzSUn1r=DLXYMV^*5d;W6xQx$6vbpn4kllW zRxWY&yA8AyJ3pwp7M8%|aU~nhmF$go4g^hy)?m7qkN>5NFGhBJ5Znm9hE4p5Aj3 z(Us;)vXIfVnu$wu)no;xQFhN7u^}z^nZK!Q^Hw?aJnRmp)@NXhodS(`Zb>Ccpg(1` z;o4M7FnyQhTJq)zLia4lMT!`%Vp)DjG|m$b?z{Fv_d1UWap|7pUzG2F(CA!X-jN^( zaHsUzr>~=9eGNJ)pM_eA`W(l0p8GqhRCR&_Vd*U&I)_Pb1@#8V5}4< zU5|wCR)RkC^YKq1#-BjpoGMhvN2FeTiXjy>fsymUb&XpVVHIr7vp3k&qUep)Z2Mn8 zs?-&TDX;JElWa()x?z!D#=-7zrPp&rJ%7XrFN)8p^LEHd4&RKpO~Dr#qF!0G>p&O2 zjPDd6XcDa!iR$6ACN^xDKE0n583Os3j=paL^dM5_EGvCT8|>NLG)4trhp)4p#F~)9 zNzE#PI+7n_n@2=P`_jw~T%*CEn7=#h?N)qehI7iI=ez86z&p0+T{nHK(`}^sy;3MX z>{#Bah>(y2Wf1bM&5jVVK@-o*AwA}9i`O(zXTMdS^U{WeL9LeU-o1VE`#6_x#?{?zYIi(si70 z6|=G|xJAE3@>7$0n==vu9`UoKIY(vNJ$Gj)f0-12oFwH9tFAJLrerGm$qL5|S=lrE zXoE{nr6Tz+9oE+Sp}5UZUHHm1m!|K_+kmDIHQSVrIk~!*YXhb{fC@FlZF8$>x;na| zKo%u?q`2oBi3$&rFao_{J|0vLkrp2v(_v3O!otGBkI>Kt^;%C+gmDyL$LyJJ7dT8pQAMKr^j7@bHu3kO#x#+J*Bftv8R6leDWo!;VqgII-Zwis^54 zpIBi^-moh#MXeKK`qX1~Z_RWm2Gy11qyi#%E{@QA{k?Y9#t9cSCn8f`*en^7YgyT9 zc^k9kzw6kR%Qoo%oA|=64EM}rb-c8?SX;ha4C<2XP5D#-7a?rGB_Cx9a;QGOCO}Dk z5GcRf+WxlpJ&t{1@!USa`&}=vF?9|pCMs(*+z7tr(K=gPBY8~p+c$KO+~mlVlSFSwz~M{J)ETOyW)FFL4Cj0*_C$JO zfnn0a#u~g+36lZ#s|jg1)M2m$k`dzR{$3?Bv>GvyJjL-;p-S=-mQ-s@E6xrrbeVW9 zp=;YUP;apOU^HcIuoh8H3An(^D;gS2!T^P+72XArEcjY_WSVqQO@{Q_j`zyLU~SMH z4uPo?5!_AnhKt4to4FzYzKBeCy)e-9P{Bc*VqDmfUVd5A|6KWF^iFjb7U(s%yYtk1}SpgVRRz;?(&P>J!sGUYi zouuukh9a!KpACn+efEPMuhXn@SZ91*z7lptoP^EjZbnqW3n+jh4)mWg;hsh*pO+

e^Vj*@+EI@*q}ATvS!90TTS*HjW(nE(eWWGL%X{cz?U8G z?j3Iw<3*lbJH?^}O0e>fzcLBN=Df{+p&45sm>+-T$>4l z#MNQ9eXk-xerW0}++0{BP^sZWLo4#){flpg?zgvfaKg1jW5rU6;E`aM& z_f&?`p5_Br7IX3I$ECHXGipMVH~7r%AGMosc(jH46w9ydn(Bmn^TzHUH6Ha%6}$i@rwUtD#u&)HF7Cz0qEcyvc9=dvk+8>k3U#Wp|I%f@Q)+$+rz&hQ zKh_^{v<4;F9Z?~@H_i-c^KTa5j2V8%?sMPXkZ$D*q9ivQB~J&|TFyiBi4_~};NT#w z_n9ApF~#51w>M{JMG6b%WoBx{^31mSBo#XPg9J#l{mK4dC6p5;-~a^Vxwu7{tC zIQdEl?)-%*T{O2%FHbJm6^3=y>93HmOUO&BR&)ZJ>D7md{B4SoPuEdUTpbmw${uFU zoS&7x(-LW3E4BQVgo|ECHI63tZuub2UjL=Lx2v#Kjq%~LOf#>fqSL|nr=1kUZK`z{ z$xcSdv0ob9?K8jZiqgjwRQ!%i0~Q@PlKtbL&YTpTu9XuyCOPxexG&p+yL8Mbg3OYeaksnLp4m6mLE$n< zx>xHE(~wXR_Vwie?wlS-FRDB_Ckt41zHxT#-6t~IbrZ8x`XVWX^wmQU*3Ioz!h;y~ zHjo8R{q>i}tzsT^@h+CJ*mHA4-`kf2z1R}&hlNg0()W?l2(tZBzn%C_s+ANUjgL?F;Tt5CA|U_E4uY^T2+#!Ql#o&CV8 zk&RRA4v}X(drpzW1VNr`DN12BiMK@DE4vVH6wjowu>wD4` zqsh8&v;#`=N zga;>o?WMFWFNa#N%$fkb^lM>vW&67p(CbjN^fR!1Tjzb)ZR_IFeY1!xKM z`Jk|YUU2*|)v??wt}E|}u(g<#{eD(ToA4?8f@cuUG-<5#82hF4*sYcU3$?(CVI zuK2vG#-Dj9GMbs=vp;QF5x)1uI%ESK@(C()sQbU4UXph|=3jcd6lS4Y%}sQoYbl~@ zv98@6?}i%&)QSuLA)+Whml*#OIat7D(Mg0yBBm+vBl zk5aGx3U^8_sCa_z+V}S}?mA(eSiJnT@v~y{*uc*;y%_-^1)FndT zQ>)F{Wwp-i1zejwP`a)7@?n)lIi`CquN>~(>-N3W{UIAz*gpF=?m_7x*VsmPnMr-0 z&|m}d2Fq6}vXz&*5xUH(0yw~>q zh+U)j|Am^I-cw9FWhxh!qX>nv*;(SxfL64T-^sRD8R4b)s*Tb)e!jlG)J>knbCQOJ zh7nutLnIL+op@bb=;=k|>r(YV#e;+F% z>Gdm?9j}+|>z=n0_k74KzfOu#@}g3*b+6>*CGhAVIF;c4ur8r&#bs3eA;{J2DS83| zV5+t>^q|eOr2p_+*Abx3mz6Q2hFXY#c0&o9zy_jR_>LXugW?_tI4q&#KhR>l5e(Vc^$4rqy@(IMC40b#G zn=fhLj2Z4ftL~OFHKmZ0lte`V!2$l`#>`VZw+PLf?iLY;>>r_^v}Zri-@oEFj)V9l zt@<;%|BbM@5pQ|F(w2X(1ck1J{%|rgNT`t5*w~<0WF02q=-H>BKRnui5hrCPyN!0d z)r81im$AOa6Z>2kXE^7DSpGhcE z8aiEV&2(Q$OkkSK7*p1ISL&{)F|85jJ@5)d)Fx$1ZgzNoggYGlP-?O++J1JS%rLTW z;^}xkDX0iMA5lJ|$&ZYyW?@*VNh`R3n^AP*A-K7@VMw2#b;pzWha<`}n31w;WeIJe zNj^yMJQXvLXjj*IET&^YKaZ*ULehG@(Dv~BW0x=^#NmYJ1_Ve9u7?MGYyCC065@O& zQz7WY$A8*)0bvw~k*>)JGn0!38G%V}eci%%bNmn3^g3ph9TUU{t$(--q4x{`bci(-d$ z(M|vB<*OD*Ztnm`djJFHQyx)Dof(z3LFSZ z@h#!d_`qEYzZ!IP6;(aPHn?(Uan-wNcOW;eZ5Vo1Jrg<{FG4zLg7XQymZ3L8Eeh&A zy|*MK#0D^I%|qN5y$8yxZEiC{5{q~gmQjI3-?C-X=Lvc@!9TVKGjpg(hl$L4hw@hq zP9|l>y2DA}sQR6zNIt}WPS`6%r^yn3P~Mxa0{VAcQxz=_qT8a~W>fVzOv&6BuPM3* z<$l21l3fkh8{x}CeLw!jbf~USPDQa2C%ZWwi|*C-=?E7o?LyG!|CUoZDc-2SN{?#K z4k!phN+8rkuhJ3UR5ogKy3;90{`rYJ93w<1YSAccilfjd?hpt`FAa9xJX=@9%76Hj#pm z^Pk{O&W+WZu>3J=U z=$8~ixK{#19|=-ZQ)z)pSEg~hIP2+6KWcHn zY#@&=4zv&QY*n#84*q0eY!Lj?=Wn1-Y7P<$?MT|I;rBSgqXze5s+SE5)dq!ux24>vl{QsygB{-#=1!rVUA;;jYc zkDAYOYpmmP;7Vqvad;mTqQ_Lg!!g!++88S@CvpOrfd^cYAAEDNO5k)Ae!39D*xkpj zXa5C*O)(SF$5U{!GO316BfcYEbg0f7wZwpXRjQ>QLsvi4>ofTtl|U0Vw3T<*mt#2e zQyY*i`_yVG4@6HdP@#%*VOTO2O~3a z=lD*(m@mcfOIu^tDr`@aR^KZcncHpgXSToNHnsUZx5F>lDFpLJ=KBO(5jyNueLSGE zXm@1>ndv_Z?0^97G#21QyRz%+xrG?q1a|}xS4m(OgRuZtHEX+ z`44|RphEm>3sQTotbGv|=PRnGif^9wyWgX~KR`09Ot*sMiw5w`dqN=il$VsZ+xO|S zk>coxhc#`L6nwPo>jTv@0^%Ys=o#j0?@A;zXQSH=_$r)3I-v4)?-1?xAI z?T5T{ba`qAk3+W}@@nfa2XZ=MH>{8T&`_tcME^J^GuQKuz$LjX+~yt>xwm75l6CRT zp*k_lUv9WA`Pf2XF*ZB+wihC30q>0s-fX+T{@}dCpUuYHT~L@SlO_ZMo@byX-2UCt zue$BbM;QW}t=kfk45q|9C32d=jWKGx9|x=N6yeA5AfOvVm%*Sa{c8!;pp#mFw%)R} zRZS#SGe7nWHG;;L!+{5K@($m*X#8iYfd$(X5Ty??$~>$8QJQOAztd?_(5D}&Nvu+l z)6L1ee<1ACGfS>9r;QJigguN8FpftmoeZ@a;X}&R$m#UH>0!1&Shv7B*g*1#R;09l zmgmPfYmr>0zZq(!y*HW-7pvW!5U(YqCpL4$BB!#w7$>n2$2MPgkGtgY$$j@jz_1Ju zqTfB|LlqaIa8qv|Noo3Qbb~UVJ!*Scoxi_WO1k0v6C+z?`=#aMBLnVY8aNaSJ0x{- zz=D+HDOSbsdP`@{@>z@qSWm5zCSozZR*1ndkJJlY&i+(H?TAV+3Vzxh1^${XcyRDgS7fD5!9|ErYoaT``zZ#h&kw^$;&RN@L8hsX@ z7mjaFPY+wUj5sA)&)K~`Q)*SKQ?je`x@!_p^@DJ+ReyOf`R7g)4eZ+{*5z%H2 zG0k&MO7WG_50$CeAPB6E4g~3ONAhJHKID`BGrpclWU1@#r6RP{#z)F}j$K8o#mN=W zwBw2n9JNM5A?hwGTYt6dQ6ZPzu1F^VWLuTPsUt>S(AQIN@P?ajotg85Z4Gwms6q|V z|A)Iy|I9~R1-U6ZuHJ%ZQ(fEPZA(3J=n!8dKE&v{O832bb?A;3jZV+^E997Pgc?)h z37X}_T;Tw3P3Z2?;m_OO+T>e~h=V%ZB4(vfv9sv^a;E90j&64xxim676U31NTgXu% zzruF0C)L(}UXVrwQ}fQ2NchlIS54U+$?lfWZp_Rp7Bni1_aq$vjY2iH{NVY8#2T5n zrTr6#`i2N5WiZ(g?1(xoP<&X#+wFTnu|()`6($UpQiz@GsrAZbM0ROVRcdnmV{mXV=vbm2ESX;yBodk}VY8=P3EfN| z@)@Hu_HsJoLm7#D3G(f)CCkx;G!H=DSiV@)7g}1`e-Y9X#s*iLouCy548KLZw?e(X zq@<)}+Y`iP-kXSUHCoAu%(0*sUT8x*aGtIxj&`K&J)hT4q2l1IB1I#Nbac_Srfz5V zs6vMS08Ac@NtDlmLFNmB%c<(55E{-v)Y1T`0+;#6_3mwGu^R1>I+KOv%+c474sCV! z0#{9l#vIT>(>maFy48xRfAno@f29P@krVhFqb$zhV71Mj7R}3Oz2EVl;Vu=HMY1A` zG9Jz8=Djlnkm-H)=M;SIwd!bNi`62-z;pFsOA1M`BsUOM44I+Me7z3JD zS^Vk^fF2ngjoT}JBWOHx-SmFFp!v~ooVLpD#Yaf!b@wTg+a(Di@sHvxE7NaY(|Bt) z10{g*Z^V6uqw(J^Y<%Kr=~f%<_J%TD8ji-C@?PiU`Dg09H1@_+&Ny@K_p7!xB4*A8 z*TUTifFnNTfcY3;UhANFcK5*QBWnv^c&}Hd=VNB~cz=0u&EXt@%yLa8D<)DQx zq4yKE?;P-vyF=Tc^X2V#z@q7Da(P9>L+c|QW(B~~}b*tU!YzTw{U~|~&0^;Q*@ie(VkbV?u_*yKN*>_~2-u+$J0{Xml z7UE>yuo$#WYOBl3s64{i=wLL_^KrxFkFY<&M?V`y8Y)zL|IVbm=oN-@ONDE^6*V&5 z=KkH084PF3yCXJ384;DFSYBa=ucvAQnzFi%;Q=(LY(4w*^`nFD$Xz1LWbwZRrl1NR z3836J~lk!vyQG_4pFtgtX6~5pXATTcA2CXEd3GJ^AugI!?i-(N|Psq{&++TVN z=ettyCcey-Nx3zqw!Pgc9}PKOLw@@BcApZ0CP?1re>#7#Qpux0ACJ0!)m2!MB14Wn zUK0f!aW<0=4d(UwV01cPY7d5bA!TMp`TYFscrsf!vFathvL#E726(wIPi8=dfyr?& zX>|v!{nR`9-Vt1Hy1{$HF<(I{y{XMqmCbUw$7RcF$(vg3pzx_x1T`5`c--9CDoxH5 z7Y}iCOQS#UF)anfkoa_mj3$*Q6V_$n#8Ky@=p0vIjCkiT!+1=E=fD&}kdnT*18&|s zH%faUkPECF*17pX%*kkFaA7cQJR{^*a$IX*TE~WriahC0X7*kHU9S^k1-8mJ-KHxQ zgy={UiL}?b-5THA-je-sPpc?mhK04Y35@Gg3knL#`9U>nEfQS;6>c=KqF0$j=V6um z)i@D_ve6&m6sr^Kn=dtx%SK1S@y8>*blpk>>ZnoYqg4$9U{G`)IaPSF zf-@5ThO4&oR0g?>K%kZ?Wg0p!v~BuRsk?7&eB#&i6xR=1$e4=FWl%QS9P(OeS5(!g z55MO+-ha<29OPFNr0lvl{Q8mHADLqRG^Snj7;pSFu*F$ks=mIy_D3Zx7bVE&v3mv; zdS!V%sMCCw29+T#k-*ti{{H?IwnJFGu03Um-X$()sOQ9R0zvqhJOmrwWxAZASBj`dS+Z+GyI{sJ%sy9$5zY^WgZZ(2Bv zC4oqUV|OatE3GtegD$>S?PG--u*6j-BE6%D)FWeK@t_(f5pD_eKNK2=9W}^btb#q* zmyshqOII-Nu1_ou(J7Jc2);^ZlIo@!F4sD(!{|FSX7tJta=S!0Jgel^{Y5xN{;S)#E~p}7+Jkf7l3v*B z*eUL+?D927gprpu{7rq3CLCMvdA~NW6vycGW&~Isl(HtZ^8Uy*hR>7~xT$Vvr6Y1f z4aXcD*y9qi+{PABH%&2LjU@2%=yESElps8!2K@0|?^R(g>5pqNXJ z&eCBtxPSCnxZALZ{~Msie?%zs1N5U2BfyO?pbezhPZ;0CKv~RPD&zVUSCDd@d`;5@ zdCh+Wz9uooR>EHShl$Q8*0JN4(#!bb|vp$u5qk#yCt1)Ml=l`T(Q!_Z7sJL=*d6t6(vaf9X z#i>@#up@56#;+ z+3My8zIFpWdLLF4H;ZtuXNa- zp8Zp-s~R|U6i)Vt@UNO2Nc{R&)~QBr zSXVz9qex=G5U*Ams7EqD>3TB2+uVx}mJ)yb_@E~yt!=8PGCErW_Mz=-U1ix`NPqVw z@%U5D&I?(M>?HYbvsK!r{E9NcIVYS_CxNAVEaF!*|IhR#NACUci9L-tJPrk3&{t^QuQ4 z6A1VkLA6uSS6=q!Dh>=G5Z?vsQ2pQw2U<{aW;?(2>i)Yr5km9Od46;E98k>xYT+Zx z+Zln3#IXXZ(o)S>zE;-#dtCw(;`~~FjYK_&jsOkQL#1Bz2hf$e3zLu#k9Mbvuvjx?Bv@*u%fE12B0UQ_yf?#Z5g0^yUJ z^Zj!?vkPoGQr7WyW&c=JV}#m`9A(-$RdOwUV>gEnAX(UyA`sxsCQt9$_F(fsh#Cra zU3ZqqIS?dTYq~{7+TWmGr-T^`Onxy+@KF&HP3+sQ0berY21Vk|H`nl8iQaSZH8t7>sqY@}Yl~JSCiTg+%CZyM0{b>JK{*t0gz#ssf`C)7!bFtW8Qc)(&{-wK zFGl>WO}m;yz4Tr=fpNdj&9exWpHdXE(tk~ltf_HXu)_MN3#n08efL^(_;oGtP0h5k zZcGX}7n>$<)4Gj3J>XBZqcfM2xw;Pc$)Bq8-EeN5YX4wZh!Z^`kzrlXA_Q{8(mOp0 zFEj=soelygv}Ef2y^ebBw{hI}_d|9yvm2MuQU@nH}=684Gq9xUpw~9z4Chw{m z|70)(BkmRZ5Gm$Q8-UH|hB!Dpnb>NU5$j8AK~X+SA$K7x;2WDec2;3#guRv}Z#Zy4 z{LzJ79|1|P=jX@63hvP6LW3_2C3ML}Z;792CGqA7> z5O$y5r(8?f!7ufTUsv>EK|~>BX?Rv?dL|rB67OgO+pycA(d=JgP>&83R&|vzr%r_h zwsn)*{_H2BqY2bC@a?vW)Ea2A!CB9KT&Q#a10OoA!?ZU4<~+8lh%N17LE6IdD&yOpAUu3V*PX&Tw>vr5;=$kr(uPNsT%BYM zT08`(0>1-gpUPO8WMRmOY{4R=wt*&Bfc*5fOOdS@G{#5Qp;SDRW1bVf8+{|0QN1A6 zBzTuEnBiV(ms+2byY!RCh0_=y1usdN%zBWl1pETS_Y+rhscVHoh$Q-djl)gplk-G0 z_la@{i%q(Zs9Eo*r}l|hkNuc6SHC_PXyrru_zED#eM7S}@Rxlsp`{(?d_5=J>U`vU zef|Fkd&{Ugf^J(hKyVB065K5WcY?cHaCdhP?!n#N-GaLXcXxMpcul@@?mhS2G2Z*d z7<=#T>TarQ%{Av-t5(6NOMC_kbV>>2^<@Y*C@QP$;X!tUe`7%TSBWN|mU(ze{k}S`GpAIwP zk6|rDTwmDjzqT&iL)-&q07VcU(-mng_?_xE`%bon=I7jn0P8Re%Z6XB+3ADrg!M|c zQ{-Ep@spE~h#jjSUN24P##TYZjqjs5RwYk|G4D=9^I4u0vA(-cFHp73oH^*wG7ORA z_#@2KzBq&?+>!k(`PH5uP&FHMKl^zp@by7uLAL%aey;8Gfm-u~!@Q?HJ0noY>1q@e zZ$Q95V=AOBD7fRW-wh1h-NUuH*{r4$sIiH59i}%7sg;7HQ~`?)4F(`m*YKs zg(uN^R+N>NjGAp|bs5&|`$XFHoKFy!80IF7=`-h%Unow99f?F=?=)S!Vr5!AHLMyq zQ}b*Cq+f#q4sgt%*-lWW1WULDrtuLc@27j$iv?3B{x9K(T@b2&)IMH!5kG0KaRS5T9Xl(X&G z>ie|i@x-Lry9Ou!UaqWH*=yn{&|+Kt#H|-6gdjdJT@EpIjOMEyUODI(zVjYzGyx{CzH6WH_W3CT=ajyaSkjqgz+~O^ zLbokRUWg%<=A+o8V z@<|9e=m1M=l!@mY=?zSyi8#W@CMS<>BVn02WZ!ja!OC^K6w#{p;f`==ryfST>U)3$ zxsWE~FHlY9G#qT>c`Ho{LJFI(1PL(cJ|Ufax*IeQB!Yy^$bDQ;)J={F`&)IlObH4K z0q@;yBwe&HO&4PB9#SIp`6YW-kHYh(?o=HuJHtkpbxttD^Dn;0z@_HwLWqTY1KE`Q zGF)U96saB|_r6Z2VE?)>$zR=$EjzrUwTHS3qAcAKaG=Q5e1si#0YjCVzj3dS^Rx zIcvMu%J6zJ1;i=uYgTV!ZMGOwDJ`wFxF~C*ZcK~1`+-?fNR928_??x^LKw#Y3>mp^ zUAbS0=>OP^w>!~a8YLwaXYrn$W>PBIwk?F3yO5~KGQ+okZ(+z|b~dRnXGS0$L*(aR zk2B1hS(f8?8iybJ4$&uHCL&*C5y!6s$A*EPDn_+Qe?_fCW3@xui3dA2V9PTtON zp?&q<^^(T7(Qo{D%@mAh`ZYjUGagSr$wO5>qT)vgepJlLAs-HNsrKF-!u97WChrXR z$il%q-zEzaPB=Mx zZxf42he8HhE$uzl)Wp=T10q)tin$44Ij`AfY!=wOvHfsXKfgSgnQe6xqIw3t7pZeX zVi3L*gDD@2K;c#4?Ic5)=rN{2hAf@*Z^Mo2F|j)9J~Vr-#oBoN_7gITE9f^=7*8=w zH{y5$X{i>Q=s0ui#Aq*RJmy*>JtXkpcU#dxpZBPHh7%=Yn7i2iWI#qm;;HNjU{|;w z=rA>kd?G_~=5ak^4EMY)fyRZZDHm@u`yrYRg~WyV^^PB72sRn%4#d3r)oi$Uj4r%P zV6iF!juTlk37zwMRI~7ca?HMb5<1S(&)Y~Zatt)IkGJ&X?h+4y5*{2mD2kKY!|e01C3CL4+2njq|EZ|h z8;Qr+e@aR9-%p?G{pEU!k1%@0*Kg_^DCPf~%1Y1bf39tp#Xb3J+3a`opD-`PKxhLg zH#&pCBA61T^w!2MT*S3_kenbvf0_BsA_fz7Oj3Q@FRH92*NupR%=jZ&G*(&PnJj9X z&)6Pg#oTpR8l0JV{qe(fIX4OsSdn?GbGT8m9q%U=y{=c-NM&V{6tZdqOyW77NJQ=x zViHrcv(_ne?{>K`0uyr^5s6_br~>>djioG zPwfftl8EC+8#uB&(QbpUff%~i?_EPcTEWR_paLgI>s8_U_FO$>oy7=yauENt^Ss+B z92lWP zeoIyao8b=+Q+5+-`KKYmoy*{VQ@A{QSIP!pgKG2#5dO5ZxB^YG@}v2PlCuMU`5HnF zDKN$qi0O^n;kT{_o*r5A+>%Q&?uHq2Oypk zl1`pzlj%4oL?i{UN)H?)_0B;LzdD_uGyI8#)7Ir96SG_Bn`uTRqcW5Tq=#k*Nf!^d zz7GV2FNYd*nDFw7doGCn*1Iw&`!R!y%~CU|MVx;{%0;3w$B4L8PU2=j6~<^f$J|&tW*C5=-y6nC&?k zjCOgzVurAVOeSz(_BSmF?@3m?ogj`Ayk`&?BeQS+s!d7B(Y>du`@(Ly7s-ixFptq9 z>f~3Wvrr6U%qg1Ee0;|Uhgs6Y*cD5emkqr0AB*;|jWwt#;cwA1$-3|S>bd2)FWocT zIX+u?XXVQ3K#QGwXZLThB#X%;-}!~4)lT|aWWUN8KV&bKFXDo7O__ zz}F=~FuF%iKMYe1+!?MTKE`F}(?~d4ScvL!4i*i{xBE)%n2^2Qy|}{_2%jX+`5kjx z`C56uHOy?kq3q3CF#*WjB=m@*qv%x1y`7v57nUD_@#05W80TFeyFarn9O0e9#7^QN zmV!2h*Yy=YKmrbjTfY%|UH0(#q+4WbhU2fx|cY zrAcjpI#y2V=EuWvCmcAxnc+2_qZOO+^^gqOa!u&(r~IayC5V{)Sd!W-)Wsl6gCvr8 zB?`y5$ctcr>27hVWEH%!_+`*&E7Il%-?Opmyq;fMYu`F5^6#lH_vl!IHuv%oHP_08 zrZ)*YcCd(^lQs&s4hNY3ezx|ww@Ww`%k4#Yd$|l{4Yx{JY&~c57njJjO$OLYpg0aBPB&>9tCis2BXd5siRlHU zLS=$l>Vv)Y%~J*m^)%9pdV~b+0m<0U8S&K~7;zz=0(eHVJC-f=nEpm-<93)sM551# z!eZl>Q&sAzX&_}&0iMRREy{7x9%T@kwK+O5V*NnM%3qDK4s#6rcl8Hd^%gGMSNQ5` z5)NWVR1+>XwG6;=!xmEcQ#jGmINN%pWiWN657&u1`44}vkW&_SDNF^wJNVo#!!F)Q zQ5%({U$iS<&AU!UJ%(Uw_R5e_{M_kuqclcfl>S`&Zi{T0jbR;-@=adVVm^Taj#Wq1 zf(>`x13o;LM|}Q=ENflN(*Bk-J8X7sEsEy6+8+l>AWvfT(y7^JKuD`(izHoDM z$A+GdvaX~0P|(vS(i05TSKU%sRDY&ry0lWTobU1I&!xf%*V}_Ea%~e-Grm=&4Iv5ko&v#j zCW{BCbD%;LLbH1B>|cBHql8=p&r;0lVF$jEL#CUqld3!Y33#hgDguW>Ra(IK-RjIp^sv>wVQ2MOQ?qAP0 zbUP_tX~MQj?Ej$ZKhNP`LLop~g8uAH?B6s)dRIATH^0Z`e}0Pp^+%$KOJ2u%#P8jM zduglIkoz%aGN3CPKm>)Jd!D;*!(;*j$5xB3oaHv*yB&NTOXn2P&{%ei%8V7Yg4BLJ zQhD5^_jc{Mql~(a9U%5f-hD)Tzd&?wa$2i{?8+7lQmr+D2U7Ah4oC5JACl=%z|+0$ z)KXaIITrV}Ha90MB-Hm{TuA~%Sv!elyWLQ(+kfF=I@Q|ydD-K6c|GCRZ_$shiIR;( z1$}>ftZK+12E&x}^!u?gJlR!MvM_?chenuJGho24{(b%Lk4khP=>PoSOlN6nsR%9Lt!Vb-pqDhc3%4KkTB-g>6$oXrkP9kwst2@_^8hM_N@uNkpXo1&h z1(1TbGumQ+%NQ!pZEZ~(Nu-Z@M#VOzc&O2ltLD^fqT1Jg&Y3!qns|}_ttuR<{lBlt zDEx^+=)$lo^0{7lMcW{T!2jYre7oW*Tf-3k-%VZ_=H%u113fxZpU*qA|Lex4WC@!M z^LS1OX%pE$M*U0djw1}!NGvr(E2N}^POn81B@zcjSghcmZVX_IyrCP~wc(Eq0)S9V znWiB;nqY+7e+!|be=hgim0r}+5esqY%KmauLao6FBRcAD_96c5@65#Unl>z^b8xlF z@c}0pp2zzI7n_hEP4cICOauLywafuOjU`6Nsq|aI+w-A6vA}StUiZteL*wJb9TWW? z#_+f9%R_Li!*^sMFB3gA;4CobLj;@_EWYc}A{lKNs?Kq4ulz8^yR|RYh?~{B(a!H~ zIeQezhY>YzZ(LUv_(W}B81TrD$Hi()1RA=)_^5gsRdC}86BFmts;2l%2BZ@ICP~=A z$%(;YjUm_T&Ga^mbu%F6=OL$@*lRnaIj`_t_Glg`c`eaOub96+oCP_!!)9~i-%M-% zkojzb9?si7^A&Lf-@2f(H^SMSHox}kt6ca65AXK@b!gnE>Qf}}Pkk{_zr>#WqmIB} zMp#*q7Sm<4YXUSiurGO2_+K|j+PCCeA=PEIud0sg;P1~MxcaE>f;v2I<427umn*E5 zQakK+hvWLW6`oq+_7fE{7Ecm89S;SdWcu8Q*e-dnvMP$cxG9iC20-x?qe%1xpF8Dz zx@p+1bf`WqgP#v{!$w~mVpaGEZ*Jn`Q}{%01vu0`LSNT&e3ElqC1~-?zTeU>RlWDY z%%CZ!AT}Vg8*Y`z2YQ7`3z>}i0O&@Ae@yg?XH9s@{Im(R=fnKyK*3G4nKfCHGq>RY zN?nGPfJ$ZT9_Vf)K^FYl%sJ2=EH|*Uv~(MzBX=bV|F8wN=OUXc|exSp)? za?6!%hQl4!Tv4PINodqJPD(Fa!6SS`$~ z?Ov9;QhjFD_IPZ=F*i^R!6tp46F+r{tGb~#MD+{wTS)DLUZ=0ZhjVPv+gKhr9~!Jm!!v*>S6iPp>hm9})Jl z9nJWC*j#tjyzSsvT+M4xW~16Hg$j+2Uk>1L^}uyG5EQ>%_&=J$-}&*YNA)t4{`{%1 z4WA>TKA0u9KPUI;+COt?Ucn?40*mI8vil`lLM}Ic-kTvk9w*+s)U`B0RvWOwu)^J6 zXTGO-KNWgo+rHwgKlJBqr507|)Y!fQX)yL}vIUC-KR?L&>zT8mNCNOKEsM&@A&qn2 z<05ihbT)Ns7>%YlDnPFR6~~Hc&Y$;*>*`V|B)D88Ab|Qmw#EhS3w4 zXB@G3&uco5CbhGpY{gxrtzFfrw$rd!$Ic`pz}@hN*5jS~#=2CR8U9atDtlloPWez3 zF(4RUhA-cK0uQHRAdu>07#VT4j~_cKDCG9f6F1~1V)2J25X9#Tu9y*(6H!=7=A)7m z%$_L&vG0G7N!_@_?Fzw8IZW3M!Rk8Rjyu|QJJeg8XwlHnh$|8k6A@ka#@|lH0X#7f zw|fq_CV=Mw_BZ8w*w)q-<2F9^I$$T9*A!H#b8>dRuFZUf3+p5Lm*_IVw+jMv@k_At zZPGS1WerwuGl>|=jGkp46_18sWs<7H&^IwjNj(kmYD=urfILx6%#vq}v1-N@enq(} z`&#jWGO~{#V^&srba5Is-DHe)hr&@Ij^`N?skLbk?AgRBcEzO=Sk%nRY~&&C3=_-$ z?H!$SX=U@=n><4aJAz&aI+MY+{BHnDWc`PqZ38TCb-m-u#{73 z6EyQ;*AfhTElAr+MFTkNE?6gl9LY^1BO^gH<(Leps^!Xiqp9Sa)xgX2mmx1(2SWGm zP8T#l{4K6`-uUhl%#%H>g$C2y(u9XaUk^l54Hd8|?t}@=nzEsZcyo&$lv7NqyfUAI zpi)Q1*E6521@b^1oOXSpaGJgey-$(nN$Y;>S=)sfrg&av!@u2d8Irj%LDe_>PKBi& z`GXN=_@eCW9)1uzsf~;R!Q&ZJQDfjiT-72@-72kMXDqv@DENay_^(hK2s%{$gK}_m z>Hg+UQp_U&JirH}LH31Q{*oJ zMcCi8KT2mN$uHswWHd#RZyq0IEWfk(0PCZ4?Woj)-uY|M_uJ>ja|TKOuOr*sBh% zFL=tXo6x>2IjML{UGtlXPzrodfdGrxi{D?95WT_i|3HhzRoRPfSo({89P4oER%X<{ zB%!6nYDGF;m_#n!m`qR-t!F*Y2Hc~@eY8F(yqTm(5rzVOSrqXuN@ zy5I~9?uN5sKy2R`nrOA+X#hVCiOjdrP`pCx+{)UMgA84iHgWdP?t<6TaI|QUe>sm@ zSJ%{=&IElYzT@gujsO33~8Ikc#y$VlX8ZsZ!~&AU;w5KIx&ec_1V za|JrB*56%f*R8GZ0lrzz}o;iHRuv^Z+3-e9N0&CM`&?#+};%AekFS$n6 z#1*8b9>)%QrN7?@1uk^rZgA=0OTVkdYcp|ha;jD9flDOP<(HRB!Tf`8#H6I8y?TtU zM_uWmH8wca(@voDEJ*Atd@~Gkdu$V|rvn|cVfw#t1Q!WlQ5qAGT-YUV>fO3Ad>5T? z(Rl8xFSluvU%Hec$#II@D-$+~3E}sd&C0a?p~;w`BpBrY_Tq%82Q%2o`4@jW>@3yl zQR=>HJ)b`jbQLKfuxX#Adns2@2p^P_Iu#-?)zF@M3};TPbe4rN?w~zim423L7Kx+| zsWKm}JW-@Bl{9IEp=i(W_4q<%pCU1}WudcA%(Eb^9raK)c0W#Kmr!ZHKg|ztyORR( zFXm7%hWOQKZ#Y-X~G0&N!Y{lNsrup_PWAISW%I>8EH!;r+7N@{4}0L#1` zF~$Ev<#q~geE?x001c1xsx>~A91tMY_}T8^x>7hXsDKCz%9P}`8Gs?|umWT>!ypMC zQ{dkk@+bgQ-XjlL?tJhiH8pm@kX<@?tpCyrBP!q|9#=!;0Lo7p>&>W%WK0f}V?lm_sdhPSaZ8d)rn`|PdtP3A!B;gTEitGyZ=q0Za; z%_Vf;^xM^w{n7Q2W|=dfAa?EZC_Q+{YS&znfYgA}?vLkTDF8V}oN&ane#c6)a{L`3 zXHBr1&P1L0QpqKH$jbeINZRz+$QQV9+ydokg3vrSn+!VQfeRbQne#f74~aa4VL^y# z8Pa7UYW*)yT8TD*cY{MwBtIi}ILZB7O;44U(+fvb86;*162^a{lQg5>E;k*w!Z8DC zIM|`k4f*wjbGxb3<6w?c!77rxyN<`!9>&rkD$~a-*DAh0uC#Kx9D$BR%)p18qkSN) zNX0q{GnwRa8_B6WWWu8?Bz9EmBzD$+Jg~^SBxFhyZ>{vao^EM8NyjluYWi+radD_X zD)r%-_uby>DmL>Y_hXud`%Ksd{qYa9BcJxu-GR8i#oeHSk*4z$FC z0FpsqmZE8W%x(=)KwbR6AO7>kZ*TV<1k+E*jh08Zue?oftD79K6DK#E??e@RGL45=-T?CQ`%{T#VE|)}Y zZEdXajlLadLeY3YzUyJy?u)}}wPUXRyfm>`TE-s*A};s!h!#JD48cG6mg*qtsfb<_ znF}f3RU7Wz{Hdt6wEvm^W!bN;u8={tnlo|Rlf}pHMeZg5H5%jClns~Iw(Cc=*+JR5Eb^6U5dRKVC`8RsMTLQd2szJ% z^2PA`A?^Ho7!z1l$Ekbj3o@SIrOWi|BP_zzpP7DP*uAgr4(ccNNv{@1nX0Z3+%Fn| zwg|r3rpoFFYA}mu49J7?!pJMANzBNPz5!K>`;3fg1_CsVmE;XI0U4_>5gMTW(j=m{ zzv`R9ccUOp7T8?+-5vB~7F8Qq3D!9YrWHYc8_eg(zhJbbNzUk=RFK=S3DK5XZf0D1H(|=Q7l=LCSzq;n4P$TCN9lFH;q$ry|ljEO7d)T za!==QY2y7$v!TZsq4DA$IUt6uLrbOq7@HfvN@&Z#x4{?pu&C&*B|cfYGGl$ag;~gx zc_OKowc)@fT&b^A=p}{Kg{WWG=-g@cs{Ry&ZNi3{&mDbouHht3-Da_@7Q|D?yYPJb zS9?m73HEo+T!u*btc1B4?^7~D44DaO{!N-m-dp~c@(@%AmO62I_)3eGQ!NZ2LZ)%K z#sG_zwMXDDAbLtsWe@S(3k^_4uSmam@d8sZ7W=0diJu&5Kx-?P&)4HKtGoAk*l+3! zAq9+`8_$4wqhGIDQVq)s;BST@h?4K1z7|-deN*Vy!JyaLX}e$B2If7!TW%vHF)V5c zDrgc!au`{Wav8WnlJ6Qtm!KGh&8C*&K#5Dy8gl-l=neSMitsPf8#<%`H#W?)|RryxV;#%fXLeTqR9Wana`U zQHTgp9?LAe#;<6SD`n8yEV%I_z#do29>893;6h-X)y|gLE{Rdi>Nn$E8oxlzsGfO% zXf9_ryx2$aR=6dr7WM8$ZCDF3E4XcLxPSqNi6-DeHHXp_azFIRQ7B*{mB^On$AwtB zDwVKDqrHRSxP0h6AMB9?zEgU`=Gv-Hp=#e+Wmd}hyJ+z%A(o@eh0pC zS6tW_L^Bm-*Q zOn&Ji_A;Y!k{`92S$@EiSBkgx*v8p@!xxJJ4cS4za`wJ=ei`X_fvs%4g6VjFJs)^o z0WgmXu$PW-oAd548n7pYch5V${|2z13NbIQckk_FcjO%ob%bx%nSr<8cALlJ)o+j+ zgDZBflXz+s;a=8<_gLEZ-I2sfH-1Ux$^!Q9oa@p`TtL*i61waJL##3!L1(s1lAkl* zF=F?|AeO}=ap3aR-HRhU7Qk35hksC6vUcNk+%pMIfX%A7lh+3?>aU%WzCM-{2vTTb zT?(Q&jZOrsyDw2B2uAj@&^a29Xq=K!>!ZUgQ_h4(W=s1OV_DaV*EyM~cCU`8Uf=H) zi?h#*Q@AS%TH6#Un+LK#E7y#nou8hP7?T$Rfm&=+jrG1~GzAOhkhakOJ<9lhk}$8& z^r}~K3}U!ao4lSemMUmXk1h!hro5{HJ05tBeSTN=ECNl_KZ+d`6yg-f{8H^3+0ux(zX-cx9mwE0kVwihWV4=aOrGrH$@(sK-v!`QC{%uVoJ50#_3GQ`_P3*L4(`Cm^~>d zgZ}rP_(w_WOvleC%~Rs^U}QJ$?h27@lKVbWHTQ2C2nA5*VS1`34|9K>j4y%RB}yg{ zSdcjYlvZF(&sSt_QS%GfFVl7QSv@A}6hq@4TrHBfHK{&CQ z|7m)n`gz+#F>zUjFSDAQH|C&|g_vSkzs+rPwFF^{vYQK4o=!F_fY{#Gqi9nKdk#ZA z>aJgx!DL&B?bN}_pW71He~oZNM61&FEh&!XDS5lQMQ;JOrXX7l;O%1Z&Ad{4Aoe?J zjgkh0eEVOBz{mCys=~P)Es;5~N&V2yA;zn2&~T$%Dcq~m7cMD=P7&&cs2Xa`FDx<5 zNEFf8ldOFoW@}P=BkO((wvMq@d7bjO%Ekc!{9#O+8!F5OPyEDYLY_)TpZo_`lj zkC=R^$?Sv%tFM865A`~vMDT!Azl>m@@-e-;l{mp3`T+{&STrxt;Ma?Vf=d224}k^! z2}ThHturUQ!RHXxSV!!nDJA*EL4rg(ylVs4P;CFOFcUwq3!sK08X8!dvo{liQ&(Fy zMl4)D>{-mHq9or!h!Eke}Y6o%<@Tb0vw461$KfZ=um2N-uN-%5ZRNM&0o3 z#nN1JvnyXXM3{&qb2UMs{hw8@^Qf(0fh?9piXpOMzl%}38YUUGXJ$3$(S-FOPfcZZ za~Y%1cAV*i+~FtSc0tB#>kfG}@~9nmjArJat&>Bw0dHX;2w*F|ro=3BGE(rLn^o{G z`QmKv9~i2eoRmj{T8g)9V`<*G%WckNs?8q;f1DP5xF3j2=DB!`Ga0ilS!L4f#GS^j zUV$*?9Q~KcRM1yGFXBW(T(?3~o7Vk*c*cZ%P!Dl-40VVFIh^G<%;zzaYqmV}c)M2D z%x$rtQ?%icBl{28GKXpXu&=@+S?-UZ$oAQ@;^4VKt2y}xgk%$3F8<<}b{-so8%DD{ zDxenxpPgB)xopFShK4?zId@P4wCj-Mcg$9R{{j@Mk6fJdLcb`x64%p8)-?}bTZs5r zrZ+epe4aQ~tdryqeVT$D)rf41LLLOA!k9SZaL}p0b`)|^(U??g3VWZB+?AX#79Jw& z-ren8gj?JDR+BNpskuh5Ie;p@qp;)a%})}xe5zjvaCQgt9k3Hwx=rTx`Stb_b~zzD zKVV;<8b2dm&W>q0z&JpB#|AdKcG+$OnFkK#5$XhIrMZ5=XK^_Qx`-MZ%Gx3PkSLRP zo<%@;ID#2Ysc=&f_w|-AyD{g7_U&{ldEp?t^4wIF`*J<}4w?LQTeBMt4d$!MsDKcN zWVlQamETaCmRUp^qUhES$bPE%-_Vak!=SJ$CA8t!`< zg(-8{(@YO=OVYPqfC8XB{(~?1g98V2vZ`!InGzA8RP zWv%Q__LjPm->pq>LN0Uz_es`kIg}Xl(cDi?cmc{mk$N9B9g)hJLaj~O2^&kZ?s{kj z`MS)=NjEmpi{Q-N{ionYnU@2}d_q?J)p<@g_?w%(BZ)R+6I01BVNDXB(_8E#M7K+h zAUeaCqG!u{?M4cHOymM4dMa^WP_-)dp9hFCEIGaraHmZykP8hi z9y0YEC*(KL$;$+rySftWYlyL9ziK*dM@1Po*cncsdJTv|d_&DAMZrw2{NCIV1}rO| za&m|otk)w~dD_A0oxcLwaB0^@^L|EdOG_$Hfc@bWLuh^nm|@Yc0IeHh(2ot{b(2c~ z7$L3UX1CV?MXoSVzAJ@qwRq=Q$vpv48Qwp(f!Ve}e_!a%NHnN1YjTtMVy<*`kwHBC? zi!3cAc>6H)zI&Km@l-~}{t30Q!6MTWs0=Y;!gJwbOpEavOjj4OLPM87eh0>LI6nVs z+BXQc(306+TqX(Akbaj>u?RJ=i~H$Je#pd^%=!*%6W_Qwp*Tnu;{6+|+)zKf(9}5g z6$guh07#THU3Vc`;tbeik zY!zRy>%-S*+4OH-r(nWmc)vX&LHL3EXHttAZ8e@AYrk^<$!ibuBg5P1?L)(7F?fYP z@K2{MYcVv!hu zCIHca>P8rv0I#G9ll&JmqJsLVL|U^a6p`-IXf}+5iFKT9@#*=g-r`T35wA2{jcgUW zqhR&JY&RBzNET!+PD!YJ!5Nw=UH7`=zfH8@92xOWY|Fs1a|RW^gYlm9uzal&$ut_pRCYMK=iQ2 zz^(~}!jS+1aN^Yo)_-kLR`vzI=|2#Z7Pj3hk8GiT+jz6SgJ&|JI4Cu%ipk!+y83hj37+s$nb0CPm6J;d-$gl7- zl91Y=m4eu5%;p=w9vKMX*X52m*aq`K*)gF|Qc`XL${w*acU6TIp-q$Dl74+0M~;hf zoNh~D)D5Iu_W&|xts}NpISx?K4pl+dw_c1S>Hx=aWKGh4N!Gp3UtE^!wCTunUxlG< z2zCspMI7jS+WGQri$U8DbVM>oG%_wgLs(%Z@dq2kNGi_aZNCg{)i7^EsPSk`MHQnW z&l%qosn}ruU{9fe;vZJ6$(sTgPbZ(=$~g>;xn|hDD}w)pg(k8N6s16D;9fi5aw1F$cx7E^$Vo0|!ErtaUPt6{9jI3;2=@_~q+F zmf~#D+CjG#8etPh;Jz&F$WJkkQt@gvw*w9&A{RE_8aBS|ewbGp#dK1pJ zIP|D2jBeV6iIzFoyjr{UJpO`M=72w#_nG&8`8{nI6#S1EBLIDPA2o zJeQyL($Nd!_HPpRfp!U$pX9W(=(KraOhxSNuj3lWlV{d>A9rFWt#3SO)SaLG&9gO& zz(e`u{OcDeOITS#Vmq+#n{?%CjSMU>8@~XE{ z9_Lla??TP2OAAyDDQ7FW2=yG+9k@+WqJ}BCtYe{e6>1W-4w2#tmB@a$zi@M&lF=t; zrvZAkMgv zzi6^jYz;*y`}Wa!RF}%503|}cTgaP8quWbuuN^HZ`jeL_8YZ>zZ>=oBkrH5rl3@?# zJaVt16^K;eB~^(B-7U334xSuqh))!b48=9~!I5Cg{_fReWhF7kkgw-{4{U*OfU5#1 zlk#}nhHlS(`Z2(hIk69a)HB`?T*348X$ee#et4+w(!!hfNh<7uu5NFbbDZ|>T{yVC z@%eeF7LQn;;8g36*a6HhqD(f|!?0KU+nbwURT>tnHX<3QuVnfdKBzyPfMSV(OoG^dG(IL$(@H+9`(ouk!$h0oF6Xr}g7Z?gM*& z`vO!CfBfjbhuNX}4=Dfd4~FnQ^tX@Pz3D#ULrdF{2oXCvpyPV-un2hES=Zm@2RvLs zF-fc_me$|C-|s{xvOduR)-J!Wgw4e@$-=MZ{QoVUB}Wc&1DXeYb~NGTl-dwf!W#e4FV0mcfCST;i=NP!l-Rp z(A+-hjvSQDdhawVVRIFWkAODPB5-h<<2xkcm0$n6pY?Z76rs7$kAZA41H0VM+Xeu= zk2V0nYb1?WN=hFl!itvu#v(pC?%$&Aib+5214Iq*9<*=`NIoT<>b*DPPo1)wk~ATq zQ_rSy$Egy&Za(J)B2bIrmK7Qeb;bk>Sil002boAWoSChzLw&?<-){ltdMGu1Jd@`} z`=QcYo9JpX3mkPdf@Wl#cpdNSG*-@>lH2z)NQ{W;6{6IyEEHDmms}RG!$rVZY;A2i zNm|f%V~s0Gjq-vm%Cl#*MBmChV9x0cANP!6+Iq}3a-lfq-c;URvUy2)c^h%{+iL@# z+D;8>dafo@Nv;GDN6;52TFKv^bOG_yAVp4IzI)lagZ7_lW&pvo%?;!A&_i(5=>6PS zLq<9s>cGLx{VhT23unBq9^!}uL`56t+AA}jxbYK= z%N^Qs_J>`+`WNbPBjM|wdVBl+;Z22aqeLDM_?$TtlCRh6%xSOd4s5slXTfnU&|Huk zKI~*CmGZ+^z@3j`iiqSr9iimZSnA;DxariAPY9S(Km4rPOEsk>!&`k}yZ>rGm{8!s zlO>Jh5w)7_z;#wCU={H80csb7&Gjm;OlYWX7cil2x_O=e7HS`$M%CiR!FySHA6&Nm zGIQu{``X3JSIfCB-9nqA2)#YGhv1{OsU*(8`PT>(xu{x#G1pjLK#C zs^3-D`NIvePA{82XFsO~#Fb^PkqCEnQKIO``lYvZ^0*%C%iTF5$|wbm`{O6yj@J7U zuEff+oh~WI9}1Rf?K;N3;A1Cm=geLY15NjM`PD~jAf{O=udKN5hp8{Ko5qWOTEj6C zsiwEmxkyj#V_rVmja0b4-!%fh1J!mHlIa)#7u*f8=tXrp8&&c(Ja2zX?|Ix;<;D9K&<$nb8xFJf$I2Z5g-i$$|d z3fz?WK4FX_FRA<9QrCWpJs8@4!H)QIPJ>%*+?Dy(I7{PxMlw15PR~uRl4JO;@^-)r z!u`(ceonAFQ@{7>rSR9Y(Xl5zJy)@Yw8SX)CN$mm-oSmMr?g3kG=artdoz0(VqdHMdM^NTdbrS@<@wcFeL z`i8f~7!})N$A&lPr_1rpwYN;&VRWk}>X-TWj{d^e_i*o7sUq5Wq;}NqcSw{Kc=`=* z3Es5HLeqJcg-EZ!iFoh+iB0vvKqMM9xX!GN{gyY_VLL^u03qZrt#6PX8Wz9AK3|Z( zL;FO&KdfS?zL>D%%&%<0w>Jbe4y2O`>XF$Hs`wc&3Gnn6tGl!`^}mO>FaNUS+lLk@aA~Q#`t7> zwowRr-G)*(XHu>O8>4kfDs#f+n*9}tfooFH8f1s;dC|70a*<#fj}jrm?c%kpE}ARs z4wsVfDaN*LanvML^z4*EPmGU6b<=e;WaFBjnF8%%oHiK^?;L zwxN?)Si9}H!W%js*DpKXqOjTC^zcs1Ppjrt73@Ut=&;LQc` zVD4P)j#L9;7C7&}r{#g^9rt#+{zjWXuN`T*+;Cax5U86(5M5Klbh6xt7{lBar=ND~ zql-`W8RQoTUox1Z`So9ku28qcUkxgX{!d#UkAYy=5dX$&EhF}p(6$OVXYtsuRO8a<;Z%y z57PS`@xZkaT+-A@4euD(Wvw^GU3;j7>+IkvqA7eD#9oFc5=d zYrd!H!TXI{`fXLLj@ww|Z&r5)X(>E$$mJq@mf-v};28P@2Pz&4{z*_24ugu(bCpnX zLo^AZk7=&sfmQXLsOlkg`Je?^;QkQ7AS|E`1o8ZZ?u!ETlPfC6r`jPd z#DFjx+^cRwaYBb85bO0pTRFaHA;RLX9`&+S^mrlv4_#jw6-U!;J-9o;9fG?CAKcvu z!QGwUE+N55kOcSO9)i2O1}E4AcbBip^St-I_s7?3Ru*ZR>FTQLs_EjmQxfsXy&Ek*+8u4QcDrezs#rR=R4>hD&PnHyk#+_^oXeW6r^r}(^(BfF= z2opSR+8GD0j{L}pD}79U+S^0cy39GyB)ZJ#La?`Rh1h){w68Sz%jH$Vt=X^{6ex&$ZAO6k4slN70w+eP;A5qM%PkkDuV4BcEwB#l+6fufA=*>Ow}jknptsu@m7| zPZ$+B=`n-w3VXTITN*9Uq!pj^t$4BMY>)>!TIMJoLHjM~(`MFq_GTTjNesS2^Y*Vg zlB-MPPepz=rA1FLOV4|3r&e*#<3X80p1l}rzhD)KSDXvHAdJ3(6APOiok^EfE2kZ; zgV0>2QQxjRy|hDrRO1|Jk>mg`-Ai|+r9V9d07;R67jXkvkq+pM324cYDlod)^;)e3 zCqrW;0wC~MQ+qz|<9PC1^0?cf&QP(1Wb{wg%9Vaxl%`Carcl2B0uzMTU(McC`gYQX z3URHC;&*qDZed4TE9uj`P?e=PIwEp9TNov&WB9Qj=4!1PjXPAXT*z5%E5zQ%q6O=* z80WA^etl^^I+Tt_(gSJ=86iEcF4rO{)oemgB@C;^XY$Sjb5)ph;*V(OLr+$YqY)^^ zHzWR|)gPK)2Qrn`oldb&!cQB=SDRZIuoS7rhK^#7lx##^g6u?*4GYM}z3j|RzLTd3 zz^vy|p}|Iam==A+0U&Ag(2%?~VmJFpToiqD@%QiP zSNA`nqO5u0T<&O;WqR+-{a5ihoxF@!aL^Dd9b_)d#>>RHYec;LYDDz1%Er^&ZqF=c zW@Z$9FQZ?&*Qo9J>E6alc%1+awHtWB{`q|BiVcYj+uO6nef4T1hHusQWwl^OJr8}j zy4fqOe9s33G{7HG5c%&I{WDU8;iSM<2rV#QW_yLPa}M9YzWmAb^%*BF3$Iy!czEg; z?QXGBEGdP(iO;%_bY|6gK@od)yv`pDENm-ZvYFLbh z8hY2YFME+LV0-~f?k}~MW#HvAZK*3Y|CSW7x0a2TU9+sCx|(ck7KNSVuqq;$SU}Y= z%|knr!;U$6;+|#Uv<~f6+~*E!=8)>1PZp)~IZr&~;-PoT^Oxz-ve@iQL%KUzgqP!? z(j+<87+u$CZB=&ON)p@*+2Ymfk*TkcT4AqZlxOCLYQJE$PDF%SaR-bm;dtWy+Y+}i z00X?>RrAGC9h9yc{#oej9I_raW^$}p7$|pyw;S~DfJ}|bIMWIgdBj}F#LFVbzZzz~--X)ziJ|1X zIC;I@Rk0I96zs?@p?BMTFwgB^BeQM*8s(`y@DmP;6=pdxQd&1D`1z9vK=&(kn|;oB zj{mGX5pv&8NHN6N>{_lr-;&4Q@VuJL2QArp&oMPmCVA*y`(aiWpmQU^rqY=G#KvrsCY>x~(iwq| zZ2z(S7yMTak1v9g#}Y|gj~TCD>ozoyk+zezca>m7Ok8!rFPL-5f0CltR}Zn66X4EJ z@6SLOFFP1w%Gdj&@q9qBcLj^Z;@0U^K)k9HPJ&LAoFQ_9@y2AW7%Xc(YpN@8GD^Bo z#*699n`MQnqfe#Vw8HADTz5JPr=5S_n0&9b#KO%zmAQjpy(g>Cft1|VMyQ=$X=Y#Es2iuRs?`fo9>>y9!eQ_wh*CSG zkhI^hAtD6g{h4T01D44IG4vcd9Xs|R$I}nD6OnjLh*C^%C-9FY`ca6D6XcD#f%eSj zY~=Hb%z<0jUJE`Nd@z@Id`sCAsU_(M>2O6!uA8QPS`{GpD6bmG8{2kGR3#=i+kXS$ zEc2~^@%QRWJDSdt2qo3EVh%aASt~}zDN;YLInpFq{Dn7DSuT6s&8eHo|AtoLxD(wC zOWxp}ER6^3yVvyk2Ekv}&IEnrt-tu)A2wbbHm*$>xV8__P(}BeVpuEzYm&+w-G0*L zAh2@Ph!hR$82R%=PDxv@r-stN$m$;D_fcoy-q3?HB8AP3kj1OTNBybI;sPg?J)y!} zne=oP2Hm*9t^QcZS$41IU4tnGW(eekMe{v1c3Hzg!O8D3aNo=;wa!OGMbST?d@yED zXr^PiK4Lj@`Yaa&Rxgii>3_t%8BjU&C8a^4FlmbX**@~!Bkrpre0Yf)~jfC6`TYvHiqYBOWTdq&}iPAWu!Yk91nEP zf>?&pm~D^7u1|t-{J=C9_j%sZK?mkw@6$pnhIC7^91Fy zz^$UO?wBoll^Cb-em(#6$xB8$ekKdowne#M)l?tRv&33d*igk$o!W4OfmQ@=pjw-g+-Tb@~*RoY-$nQ0o9rvm@B475FnS5B> zR75|6Z!WnvNOfE(h)e|JMvjZ)HF-gSvQ;k|*#Axz*7q`-J!xiS zYoKWC5Ar9;9u_2MVGs+@ZRgKW$62k0QVFaevRg>oL{o?L&|*~@_xL4DFfs=Wc@|cD z+i_olVUUq92YjrJ4;CqzkU%C)U!nPp2y(|_pgXfwYtyw%s}jELA8y^!tN1LQQqI)H z5gJfKxqhI~GT@07wB$bxp$S^ ziRPd*&r4-J&77yS)6~=;!plk7)N~yr8cm;KzBPU>?83fR6v;p7w?wuQy-xTj8I%k&4M8iRvHwX)eS?)Dn7D>cu&&kYhJ9wb{4 zC*5~v(Fz6))Rk~GK2oo2F~W6j<*YV)yA?HLm|mRZerMFu(V70p*7l}+7Y(S3nlY;! z_AB66EFKB87Wn-5ZO9UMcmHd2{4g*1`DieOrl5EjI^Bxl=2|uny7UF@3mhgYu1qNY zL=1wgAF*f>gKGLwR8|{2Pmu^MVK8I*vtckX!@u`|I?*jGt~?K+is#*pOQ1g@l>}MK zNXRDtoNyW7U_Gob*bj0Chx=$rL32t%CMs+u&}e_4*LCU9AAN;lx0FKTa!3| z1Nj6CL-?pBBA{FfEVP4BH+8yHJ;2{xjJ4?+Q<^8q+~X?k)ca*!_kK!iy{gU!HLG(- ziG|-;?U(e-^HlPA&TbWcPCjXQ<$_5Ij*K!-^k{r^a2s20 z)N80D%2(u6UtseO%TMOE7@6E=Br!jg1TJ6YZQ7I2J4p_YwftoE>M&dlX(QH?k#%R` zQBh>AJE*0W`6(tHP6L|XjOvAA&iF$j4{j}l3V|LTa#u=9(Dd&0tRr!e7}|eJ4Z=lX zxAeJ5j}E4x(9$Q{)BN>85*iR>XI`!GqgxLAW50~>hlYj%fz)Bl!`Ecg43nW9y|Ah~ z(*B*ryMOHNWbeM!qbtp3qag3`GQinO2w#3PR`l0U$!cQNFdl4hb^J~s3+h^|bMa+} z>Tm!rt0MqbZ+qEgLY-J1RW2=PGW_SI_ZNG0i3>MUO!I+lGikevTntjWP{ennL7svl zW1_~4Dbmx3w3@H<)q`^BYmvD zVk%3~m16Rt2^lp~oq*x$Gc$#@oRM*H&qAV1n3=ph;B;4_sa-&=P2C3<2lmD^r1Nsm zUQkd9On6t5#(uNx$NCco9fCGA#Ngxh2KM>(4Lgai{WcoC3&SEN81Wa3lVy5ByCkHf`?w~4tG7k#Ldj!Cws}kM{Mjaj+I=S1g+&t|k z&zd`r=>3SlrV)I7_js?hLmek{Hqnsr@22?gi{-``@O;0v2{@Smv;U`;OlJ&~b$5`e zU9kFqvz#QB0*F4vc#QW+-k}N)F)`)FK!O=5bvQqH(w!Qb1uAOaO=suQ4$E4AqEeFr zI?7O`;H`umGfcu60s43?y>D6R3de z=Cz#f-}l;vtVaG?vXA$97b)!zuK`jl;J7Q|H$(TTIitOS!Jz~VQk48+{3k0^p^_ku zBI@N7-Z1T98wnYOa?i>Uo}XupA^q)&U<6~%SG;fPL|!2wI+rOEpU-PbCI&T4g}4;@ z-DUnzms@GxjJ#H*uV3^lAwH@hDaB6^%u4%vq<@!S{ z9GkO|Jn3ZQ)L*y4)y;_hQwS0QU7#qnc8Y#+XdBMc{5wtSOrH?1d*<8(5iHk)7OTHs zHx#!#LCM?*#zI+>@Gd0(9kr?qf+tMW1lQ_FK!ydyb4zS(t%jzc1tlCKbI_r6D>~E# zn)#Ch?ZFy6G!){jRX~4_R|_0&$$m#PQUK*z*vmk3vAhxfEwM%a9th=i1~95N{9lwO znwn>!2STeG=Kx)pN@H>=xi_VRH{t;Ue@&C+=oCI|2MEjyeofW2_ZNe zkD$YBB7=h+hG;vxd;md#snm?QnpY8?_0Z@Wx|>8SrX=q*N{i&7LTTN`6D=@Hx`T{8 z@D`Lw!6(t^xWi^lU1@F`xBagzgIea`2eTy}2QWNp9&h>li;dnwc^`^h{E;PvgUmxs z#@<0MUHXQ2-!W^>6PJ88aw*`n@C*B=bD_BQs6#=WAc&V~6dlSNZut7s`6RWQOpomC z?_qrvn9!9Al*<>LzKnbb>kvlo0yquNBDFBAj){yMXoq>McC7K%0Dr~#&2Pkd*Xj|^ zh}Z&sy<-Hk`z2(ONzhx&bgKEH5i@-K^Rzw<2qvWQ^YdaHBYx;Mf6QRal!IZZ9*HOh z%s5bLcJ1#BrFK>`psYiKs?>v})~`ALgW6LOBISw83c$bBLBig*3pgn)Cz-Jly0bxF zVr;raNe5KhS3@(udQ0y%vz)BJ=a*+*5dL`s@0hQ>UtrI~h{Mie$MmCR4!u@P=Ee`? zZAmuMNW9TZ310mba#!%jZk`(gPk8o&WjxInJ9(t_wdv3a(Huwec`^LjFanl*eq*JT z_L@`Sc(@f%uq{@ixk8*+QBkGRPUvJNYT|xL^;sOh?tuVi5Vmewsj7S>c-?{PV7ytq zbR8b5&lEIBxwYska2GHgG`BBcT=nVjWq$woPL+`)I{ zJ`h`%&&&~AfKyR|+bR;o9R2P)o{47t#wl!H7gWwem0uoHY?KZjPtXplk(6|@o{qz> z?t(5w>|wj>uNMx;LGqLed1Uc8Sma?T*q{C4qMS4${E@2YIL(Ch6-YQ;pe^a~;Fgv< zBNiGS>&pW;LN*)lNAa)y!07=Jg+h8g-)CxA@N$93)8oBfme7A2 zS}n&@)aWE`@q_V0gvY{1MPMDe`u07VCIXt|=3+N)nMXvphA3Du%6Yu-9#;e&G9}^T z6$`o~C>l*(%YufF1sdfa^6jtH_cuUj%dc~-?HCId`^L)Loj3q|q;9j$%cF5035D#p zpuAd+`~g1R#-B+_x@M}&LVY`Ci-*=tWkf#Di%)!2OPrDKVLxE6bxL7{+-I=9PyPtU z&=rvaXapB-&cb{NZX7gh4H=n&5#L2l5^Rv7VE>eevM{8%#O1RrNS2*pYhf>^ua(Tz z$s@j=`Ev+*f%ci7JCni=;^om7Buv@GW%(CiGVbw$m=4+@`8#wP3~<8a;WiY!>Qxo3 zf=U2fiSgIau5x}Ju~t;3T=~IaZCvS9`BBSVI2$v8~XS@UrsCq+C+C`c^#8=ihGON$GK(iO-UP-d_5H zG+S{_xvTGJL&S3XnBb|G60C9T%gXaH|X}`A5iDXB=;HJl^H?IS=Gv(`CYCl z=)?ZIEdyJseNQ$I&)dPky0mXhk|CXvv1Ty*kNoHSTZKm>_0|Hj8+Xb?Lr#iyV4|LQ zy4f$Bz<@axj49d}8;ZYG z&;x+azru!4B$iBxW#TY|zF$vGGUs^R?eCZmeuq$e2>{mvn&xy+cM;))*5a1z1RnaA5y!Sy*8x-?YiK|vVq3cfbf_+eP_rbr*I!)Ge+krpjB zY_Q_+yP4ZwV7puIwsfsX7|{HrNnTc!wC^E`wgur>s`I*B(6{{Rak z%RXqn_Dgw#&8MWABX>Caw*|>4o9~r z7u&WD^(IeZ)AdJZZ9SNoCMo67i~?luv4UjwvjnDX>tEQZZ5oFnGFn>SzkkogH}Z4Q zAIHbS8nxUPr@j7dAl=_;WDX4$B8wa}|LL@7`0iZ{p#Oorzdr6Kc53Oo+dBP+Q2A>+ z?zRlI_}y~a+S;mWX3PZL_U{qglCv_FpRICnuk-*S9qS-0K11R zv*m-zJ|c1sU+Zil(<#vSc*(i zt7?(bXZi1-S#EUcVf@1@ry}&a2B&{Wtf<=VVn3J986h5lf%)I<3l?guf^tF@c9cn% z7?rEC%vySj)uecspY@Qc_T&ffz<4bBFC_N=5VbGO=HgoT4~0C!{}P+}5(Z^cY54L? z=Q181JTH~BY^-ujWB`u)?{mKVn+LeZD02W(RZ2?g#X`{~{QIj1igsZ@PG9=(-=iS> z-&-O7r>%dV9jdUsoqT_;yjy{-mAicRf0=9y{<}j=KPTSoF~?3$H>6J=KN>T0n5EUA zUsk$Pa2Jm|!8yWCUU_2Viq??j;x9U%d}^q=+ws9qCmA+oW)$zWW5m$5)CPP6K(YhE z$H&JPC&^#RH-O~s{{Hl0T15q5`)?CurLp`RNEtJABT4W55HUW3^^7pC9Wj=_+Q&yw zL++Gd<`{Unzr~HGAcd||V(5p6)&y5XPE;4cJ(YfdGyPQp@$n{Q)Sk~fG{qH=q>mmk z`;ztwNMryxJnRLAm`hlubEVlU;Tfn-g#j@2r$D0iZG-Duzv7CDi1FRwrYGRUOBc@0 z&Tg7pRH*38wF9A+*}xg!tAjMvImye>lTrK`bcH zi=)EV@!s#^zTR&B=wm=Td7mFJT!w*Upi1VWAwKgL4ob=5sfvGJUG~ME4KtAaq9W>-oD0)DRF5l!8>3GvdvoOXb z!Nm&#|1A$U6=#!@b=k>>IDpbgFfU=P>kxW>fk@K-b5frP6oNV|AKcHv#U!cLqoE=k zF8VkvnlUH19M87ijUn1|d%pX!lZ!r`#sM&*S_$F#>G(PJ1Q3oVCHjV2=pa3#f3g;`dB}u!;z#@3UOjiwl|bTBgUc87Yg&bSiY@D9@sU9P&NYb z8);Ml*wkT`D$(hvomO<&q{Vuqn@qr?b9+%8aXps<5r&$hhCw|345G=-bd=g3B)cdf zG6mqSW<>d1OrJm5g3@&L6OViAemL7g06Oc@9p*>I(v?YXLd~s)9!#R%+EFypk^I)x= z94K9ZGc?rR2IwCqU;Plb7?J*;5%K)k%Si{64i7*G0z#tT){ZgGQ+ICz0!OZa>U$)& z#}`e;6&50A1Ju`2!pHb&0FSvV{`s~CM`gY8`L6OsnAiRTpNemB;w%%sbtL9$6NewE z?;Bh!OosE8QS5cLjhXP`9h`0>Z^wNN>Wi=R5WHkZJW+m^6R_1~e%0boNgg9{X?mTl)YQy(~|rhq?(uA)gh76)Y$HFi=u`j?){?n1mqSflh(<= zN|t&b`9cFLZ~Oo2K^XHEHmhC;soZ^}dT|^WK<*v@ujI{k3;06|BMwL%UD8tU?Lhl4 zN%qtM@88<1t#4=A3~2~xY+E?PQ=75Qv_mL<(w|%|YzI?&VnZc*d1^eBk-W){2L+c! z!qcXZp2eGk27S9X9nroyC%M^i!Ew@#;~$#igT)Jl5B=vBHfJ)HOo z772!Iy<)&Y;Ikt`q9HpgfL;yxtS_3CRwxrvk<4lsbJAg9sl-iG@OXbcJ(xsSbouZm zYo@_rX<@eO-#rF{SuLzW5-JqdH-=LXE33ZSmlr*!khFa1e7^tn8(RxRe9dB=ypD9a zx$#IINk?e$0yudWOFA$j>HiR;jxr(tMU3`*FlSTFK#F>YAu(OfF9W-En1N_NzUb$y z)C1X5^u`DxZ*Vn!+?a2bo{F|4#Z2$N!j zp3DR~;mMjYKBp@fHSL#%wsr(iB2vlM43y;xIJLdO0rBHK3INq}F2Rp{(^`i)nS)Uj zGbi2{3FTdjkZHanj=C`|RvZF1cb0tm{oOn$6xG6G0}=MrdWeFLjYma432?IhLn~X> z8O2c~;2OVmVA2&8#*<=3ic%QGIi>}HWS#v9B5JB(9OxbqTb9Bq*0{wCHYBGv(77x5 zV)i67cpxtujmt&)ciRa#xJ(?wHwtu|Q!(*nHc3zVumEQ|s-L|Iuv^xP{I%}1${Dh@ zDdNDQM+hu>t0ZuML73(FDa0i<1kh1DY+wX-s07|=MCA?;Sr9}tVPHyO0fSduR%Q-( z_-l<<6##Q?9C%U+j&5^kXKG{zOoGNnqq@A)V*i6@FTVw6Mnt9RTyankWltNdF@128 zF?%O{myTJ9*2(PeeDse4vrrItq_d%F`JR92t*45)A}T1T*x4_CK1mLI{W{syM3~{l zeevxm=voy)Kl6j>mMOt19UMgol^;M;{?dapCHR@-%DXTpXq*+HmtVr@ju`(1&pC4$ zU4j(0${@JF9sV8905D$UkuFDJDTY2sfI;!?{L72JDHpIVb5s$JTh7s$LQPWP&JACX zPH>ZS%A%1$9AEfO(39y%4z>w*^;|j$Ia})i-NKn0X2M#Qvl}FNOS>oQjSA zmtwJSXA0u*m!ybT$bhanlEhNlYIr?GE+Nmfxlby*6k3Hou)m)@(y=~YDV6=lyBddJ zr{5V@Q(HS1fcRcG|1Jk3FdsnonbHdYTY2v|)BZ|aNN>H`oMi70-pt`CH98LS+{mpz zj=kM0#Glbewfd`GxhJht(QWy#yLM!XL;))E?9LhpLtD$>P`g8RV)w9dgm_{R)yO+f zYCk^M0l~MbqJwx(kThERs`+j{-RuRyQ%!p)w>#Y)B{Y3(%%OZ{vt`&}M#2d#*fHzP zy_M54v|;Tz>i1R$={`yb@!+*^)r#|NWlV&)h;00&4R1%wPHHZoo;SMrz%n)9V#oqA zX4Ub*emb|Ro=^El9%4e~JS2SL)w}L@Md4%k7U54Sv~LWWYYFI`3I#7g@L~~FIw;H) zp=Eb*vL#?7J;lp=<7hD`7KXTLLjmKPHd0?$#Ka%Zn+ix(+n!8+p$)6hDr%Q+Hf#gk z!HK;VMVU>AmjdQx5s|T%^u{mqU_uUSe1B`9X^Dl&Yb1@Vz^!-~EB^wG@nj zHd2(##CZ-zCowdM%-g;Yyj4X6PJ`nR*HyI0RghOX>}CcOY^)c>`z6@^NzeC%1D^3W zbui_^)oT4wo+8Kul9FsblevWzM8K};l>8n*BDnw{@N6ap-ar7YoXr@me@X;k1qM8z z+#ua82}C@fsRhU$6um4X|I1hH-|z*Dqz3{!lwx@})8yeo#3*uRB&U#>_#61t?byX7 zyy)&6Qy0AiWf^efFk!KkIQ96vi|cpsViZeHu#m|;<7toqRBi4rEabWG_{j&Od9bZZ zGB^Hv(!WrCCBtw!qM|OzD(N##5|}+G%oInilw`|iMI|Ap4B;4Ebr&y9QjEf-L_E_? zkFOn4FqeU@{w11*ApZNVG)8@->)I;`asj}rK1bbX4Y3t$vNOm2s9`b0!+MtaHB;Hg zD-E%OhCKK{#_9Bjh2;p4Kmrj2Ji5~UEfp2jRV6U_^fk6hC;$PVK|n%d zAwUSzzsa7qbCkdBH*+44@Pcev&C||L4NX(S<=2LXjeWgfGvmyxD^2{_QIY`25U{9+ zL1yCd4^9QXc;w3)s(G`ZPH2nQcA?(v1iSPAD3J!TtojBJMwlE?zrYnB7UZ<~E3jx> z8Ul!}@}{*%=mvsS{2e`+smfXC{f?N&fAl`U7){gQ3^*6S)dbIW3K4vA!+mMDBw#}B zA=LIZ3RaEj!fqP5Zxy^{_!Lk`)|X4AyE?N|hMdQFT_BM{t3{$2ty-5))=7gg8Hr=?K;di6r=oJV(m(CO-|l>rzc|n^HtYJvVa&XmOzKwe_Os6Uh<% zL{5fn(BUK%E}?^UGrwq`Qshb$5QmIgZXbM?O)v|Ol{gC};{Z1zs+rc!_;Ym+Ouuy2 z7J!LohV`j};)0)vK6v6DVdMUwvtAm`4UUAEwCeL(cUAgTL5B|p>=mB7tudJlVC@NOKn$j=nxbA$R_C84^{kB zXzq%O+)w91v)swO)2jsTupT31O*v#=m(M`dJVD3bnjbU5t`*@*(RtSt>NP0L)a0lo zrj&ePxvhT4yvAl6r-14>cbZhn7&yr)9=RC=Eq7J zNI=B#7g;?z19NaT;+EYiO>( zMZlW}%&)$z$6r~ez8`?SL#7beJAhiV!bX+_7Z;KA z!o1!0_?oHfi_K8}PWS79qKHoAC?s6wJCdRwDZaFuzGW5%sj3@rdcgr!7ik|xqsH$x zn&1;HGy(f_>Hw&#;Hnz3RS6vX@n#(H={q!Q!6hK7+T+A2Aj2lv2{KZN2uuE$dSs6=m|dr<+YQR%5(%j4H=AZ50bc6D0K z=XBYJP3l6|)}615yIz+fdH}EH(};9UGa745k2fc_k{zbPwcE5X1^AFNLo@w%;HgVHma$ZeG4#r z3YU9_CoUL*eq$rTgPF%T*RUD=DrY)rzp9xsizigW?tI=?eO|p=lNYht`*TyO~)@`Yy^Wnp=)nJWEL!}slU8=EO$LUpVY|Hg2cq*Xu z&?C0Cph|sYd9#oerBd z^bR)lCxt1u%~xwTO&l@axc*+GpZd^FRtSkTq$8ackF!6er0N_3@eA~TA@O^;$?d_= z6fp0|Z?Be|81B!3$OkOYPxn9Aqu(g^mgzBJnd$?S-G<7kwXs2o*AXA0=v~2-p!^mx z2Hm(0&kvyBe0_}i%#);NNhTi0WV!G4NmM~$i=NRIWY0fSh;$HPLqC)Obn35dy5~tt zS8aLoN~O=GBm}87vD7-P<}7fX=C9{V%Vz@0KBqV851NBMsPJms>|eN%H>q=Sd9?qd zi(y4x9<@D>WKD#P|09RbLw>HYPAytb?wsVofSCKa1yFfmWVt0F#*h%HXtRi=u+c)4*9_UVrgnikdpW~NP9hg{?EPKMMa!?-h?<%2e-%(@3 zemH1uodJ>^J>eW~t=P~dfw1lLZPt%^?xNlu(mp%Bo}J71M@9rr#ZI|`+dN%f$}Ms@KWsOVXvpFlaB27%lK<+Iu9}j+IhwV;D$_%hg?K)IH%Pw zs?MXyr1eER_iSCY2XAxV(vg(Zd=V@@EzWv)m$3!7hf1d8Vqg8a{ZbM(C$Ifi zQI+#BB%lw*&|w|6YO!U;fj_fX$=6qM_wFbR+JiL{nJx27Q~Jj!EDM58cK zqJ|su(C{*{mp&c@7FzWu!AC=pHNSH-|MO8kH^y@y46$JC`RN*^E%W-LBA@_t%h^8% z>PbjS=KmENX?S>C{_xV-`T6}j|GY}3kQ`v-yPs_he%mM1V{5zl9aeMZecFqUGBlLT zL9EAB&eoW*H0H3|@Vwx#2E=dGt*vd6z-44))CE2VL`&zP^s71ZDULFM+3B}hd9OBC zSc6n|a#sC5ZlDRNE~~#!7Z@?~4^wm);mVGN9fVc63dl-i}Y5Qgi;O zZwD)0{kg@~Glv>?l?jI;e)GNkU2F*3BOsSTvTNaHukbH7XMsoJIpnsby3QwoqxVp? zGMq;vQI`z@U*(xe%NUme_n#?Kp31KyQ(9{7C-g|5X036$h!2c5Nt`MNE^4f?lLWv} zNVe+cXQ9DrP}7$X)jgW$6dZnJQ``mCqJ)$J^Yf02?Zq87JdP z3TK0$sjSq79$$(ZRzSAbDySd>HTCGl=Y(1@KK;1D&hrJIe*dGgYZOItQ_1~s3#UY8 zvRIlhyyXmnnL|p$7SY0m1s#8H%iV~((CWv$^Je^Dk<; z=vp%QF-mKky~g>RZNDo|L(-g&lmL>AWr4@+IOATB15>uBd?8F z=S!Udd^Q!{M`(5>qf>Y=DE`JEocACo@l~<khMY3nK#aABLXWvB;C~3jCNOw)gh^n_+JH zC>{5O@MdGPSg8IvRPG|MJm>?>i<5~++5*#Utz_cXn3%TTirL0l-mV@+Jc7x6ET5&t zA&MZi0c!&`$^;$!GLJ6Si|k!-j5-+Pt=n`NIDjdaDfBwaNd4$DRzGrE{2!KY zfb#<)U<`HDSPWMIZ#9Sjzm~$yA0TY`|Chquo7@KkiNa)o4=(?gu;ta%(b*jsN*0rR z|8UxG#cWq|XPG+O0Mn5dCvvCS;4gC5T3n0>)5@o zTRV621sjWa;`S7~<;e!gj$ydX-$jH}%3cY}xMBz* z7yh~;jO%Cc#8qULpz+R&)DLYEl(JlI6r1lk=g2$OJEkXCisAUvzomS=i@Gx@d_W&1 zod>L^PcCmqkHSC6cvpPrHFaZj64~=^A9xXO|Ca#tTbvK;LysBX!^t~EPyzaa4mzce zoAtpej^~0x^MuD>WJLf*`gCb6bvJd1mQD^>(L-$DU9aLE0pT1JBK-ppRh;~%n|cB& z8L^Mw<|;}A798|=2}++=)#Fu0xLn3lhLK+J&>%e7n(>2&O`U=!j2599CHtZIY15AL252*b^T9Eq{c*b*RR|!xBtKlo(Pt`7bq{qo37k{QDLg!7*y+tG>u7u)Oxwx^gE3xl`HJRl2L&Z{#{tIOa6hI7l)y7X@ z%R;Wlx01JK2qr3CMI|K6uxI}XqL45YdG@#!>oco<#UisDpTxN6>8*j@rFT_+k_tNr zqJih>InQb>7aML*brGWBX!AFcJXdE+&l#YKpTTS+V$)0;B*k*$i9`Myf;!%e^bh7v zZSwk;Hbl;)A5;0z?P5KzWgV*V*8Y@B)ST<@aBe^SHdYnRdm zi2HiMFpl8WJ$U*VS>RQN{~k=K4X=aZO>BKfomaYcH*so{d9W04Gu98KLApn`_}ejl zgMSrje(FsK+cEg9v?x5B$2dJEz`UX(^l!Idv|2`bhg>luUQj~x;7fkAk;STm1ve#5 zl#lX0ppZg-B1Q2i+tc@s+#5##({UtuQ)*uu$tRFl2;r{p(^cBlA+jLga%^Qoe2y`o zZaYrJ*znUz9bqR1J-VSynpYgGmt?lsLEFFGqabt-i*3kdb3*SO=j||M?fltTpEjQ7 zzAgcw_C`k`{qU7&W?!x6nA!^epBLFJkkb+7_{9&-wY0-U-qHz4ReNYcr`d$?Ple>v zRdyE7@Y#b5b`Uq zu3hANUT!oc*^`!)5U>M^KxQ>%Ln~QBf6&4#$j?d>QH8g=*&qIGh(g8*nM=;`Ei3oz zVos|nhOakLgkuDz(2DJ!2!^mOes04BDF? zlkg69qz5%f(C$6;m=AOk;3neCn522IE~6MXL{+6OyVqD^P#uAYZwS2zN{=+QoLWUO_0n zbt|Bm9BT~G#}HUWq0-+2-SW_Ef-6y3`<47dX~ACRmBYDPoU6Pk5EU zWb)xuMR9&>CXL6G>c>OTzq5EhiU>fO8y_k!*C()v0rHEB!O zZNieI-*6PZ&kv0$%;xSg|HIJ)A5bIG|8u{a=>G9Bf!86ap+V{A+rxXf$6cE{|F$)+ zOv(1FUGKIyZS0y!Dg!64=%*azjRea4^goBOek%;=*Nb5`88j4f;zrxJZ68}rty{=< zM6bq};u3r*CtK!eM||{T6KS@PzdE=2i(R0z9F!n5`5kBCw5{-(Oeu&@$%{{Y4R<)^ zaG~Vj-b_LpIrrNOCOE+Ew^bBRq{*qQLRl%U{B{1MM+3uE<$J2ZZTt1R zukj$0@5ku|ZEK7YR#jA;s~ zFnYr`B+i%=Zj&TqaO30pX-#r5%qvnVbx!V=*^o8XSg1oT6VJHEsg)lF9^aKWd7KJR zb7orPITSxbd`?{UZMxL)4F1@C>!?Wh>ws0dms=)Mn^JkKnsMT{a z6GJ*AxjB^cE8a;#fhYGbEWhYJ-yDygjilvJV#P>HQ6;Q1wi&zvVir_(28Gh-&doDN zYKsGG!!Sd(v8nVqIFahw%%z4UFa#pSoo%vWOnOZ@fDmHir3QznUenh$Ztm{5;6GWV znaV{u^C^yMBL$FMSDU2&{yH~?yQb(`c!21CInq^C>8q9wC#<<&3sOr-N-B&yHf{ob z@rNT?;J3NCr_sI8oZ?@E=afuKf3pied1E>Evh8XB^xp{eW3k%`>{rwdqqpZ^a0cF?WQlrbx2w{Yn zBydPE=#ErXR${EItf=CK|G~s!!Kq>Hc5F18Wi+Ihez~F-_?B<{Zt&5$*?^}GxZ>|o z&JGt2jfePeTeMk6*VnTL)^1+B;z02{69Gxd;hv5TP)H}mT>0C`ml|(Cf7#okg5(1P z0hQ20kkQjw%4<6(pnnV&fqwtrUNeaPI|9$Wv{d@5rqu+1Oy$LJ>@lrQtm79DKnA^L zBPp7;fn44t);Hol8n8P2*YG8Ivr37gI10b0;GO`r%kS&uM)X&#Sl69yAG1A}O zxIoh;eK2`>3^g@NW?XkKFEe03nQ>npT{;g7$XQC3i)l}_ zw?O4E;`ZB7CyHTC94ab(cyqlzKo9}w6MO%?3NAdPuTL6i)+Rs;0kcIBh;k~^%2=YW1ba7J%!GhtoH@G7+5R z6R426EfklB4dFLLiYX*PaIC0us_hp$FenXnv=dZkIvHO6XNDVC0fDGdQSwIgx(_|9 z(eO#|M5D{15#5t;d>MCDcmgr-#ON}oGyI!iP`w?`L@E&`A*-Y8wk5(hL3?)5YmHV? z2N-2Dqn>q!3THSCJ^hp8EV~y)f;nIR)V4Q}z`OA*%Pe9Ms-{>jUt`OD z4{G@Zje{ZhGIF_6Oz-zP)3~gF!2+NN-a;bMn8av&d)DpzUN<}RygGXslaVu>Ql=ZU}*{5>jh$@2xSPXah2&*h-oFZjY zQGN^1?e-nj!j`g34-yUTK*QK}pV)kJ!~v=tV=Q`*ti+Zm)L$)ZoR`wC0B3Xq@qy=~ zP~R*)w2VIHuXiy!!Wz*C*GU8;vd+4Ux1-80(@%3qyfXv^Hfh@X%`+s@t?zk(ZbE+= z-6Id*L52mz$tMG)O_(-J6rK7#586EOogN)#&Nw!Zfo64{W%zjI2f2(X0Xy?`p8TN{ zRSq=ILr{6ywOntwG@T>#>Ui759x;QBcnFB)p{!O_KD5J{=Z*f8iF8%iVH&G)Q^g2h5EjhP;GgS8m7VsJjee}he*`z%{_)LpVTxQe31i$K85 z{cgxi_(AZ5T8^1@T)M0Uq`;jQmW+33&gRW>&3lm3>$##nr~gc%b3Ir7?1?nX;QeJ8 z3L;dg>B{(ujXZmSDNVSjt)A_?Tm*Xhvm(&EiOY#Le(9cAHPN1^Z1R8H8WKD_k;o^Ei_ zMlYA_%PC`NH)zfubY|@W!@aroGMN%8OQnn}DVPjh@kTOBcCOun9_8~7;O>Xb@tktJ zgStk(dAc-Iw<^Ig69}TDSqZu4b7|PXfsx7Go$_+6{fzRydFS&h2^azKweRw524VtT zgxQ{xQpq#Ypqe(WMWYGix9=ub&be=LHnT(h`-@7wlt`l|fDXYO($}A;1)Md7? z?P7=+^dM8#1i>CKz)r$@;HVM^F@HRtix_Pm;3b4=H$9Pr_>w?u6{$YR9BHFO$HFxyn5?#8mf; z;=g5=lqaaF&)2v&58bkr{T2J|xklp?zL@LPQMeK196ua#FYqS$FsYF|8)5{)_G)pI(nrH~U3 zJb1N`bLb0`dC4y2-A*AFWFjr!hdgSD8!h0Rs`&&LCh93K{E6Uz1_cqo(+DuCZcgu! zwmj(M6-T_g=Zz3lGJGYl`|Q9r(VF^3yIq)%0!L-+IVGWC(;=uUj(PBu_(W=*tK#{A zcSFhfAzzxaNDDpVr}wV%#4nx?h*O3XU}q0gF^0TkLh<99eGy#U;8|Ru7?6{L;Ol0 z;i~vF;r_E!v{vbFHbuBOukdT{l4hBAU>}kvPM=4@kiDd5B68&q;OxMc)Cp^-0Aunt z)M}+F;9iv^)%#p0lKO2($o3B!0iYN~F&2IkQSjLgPWn2IQ%DBs3-BPf2J^NKyADHz zKJ?+~K4DbW<4%<<3Cw1^7|OTJ|7F-tsXs}!ZVe-~JnnuhqKfDRYjA@&WA}biH2dla z_hm_Ms^ZKRcS70wBGKvmfottA+T42wZwu`pmbyM~zD%&g3*nElYxwe*Rz02p`h{${ zIyU&>!E0v~tO8b=t#`ADm$$HR!ctVO%BflQSURm}{7V3L(q6l=cgVs3J>953dg;^Zw(Y`G(0@HA86|s*qYYD33vM4daT70m*-S{ zZsDz4r?0GP5j-5)asyu_WF0tREB`s7zYnE_q2q=UHjrx0cM+Cy-XDrQ&wjo9n*7P1N5Z=keE@^pq6 zMQvp~(d~-vb3Ql$)a19y6U>{jr9jH-yrnU^`9CL-*E0VI6cg(v_AIc?_0dO$yr^4dW3l zfh6Yck<_25NgCzIcuOWIJ41NL(OZz_5EOy2JAM^+U==NYj;CuhSldeB*BVSUj?+sV zwx9*Mbu3si_4{WljZ*UWL}IK1*{U+=;iOR>q0%4Ou!UOMEPlX@(SmCxv@+*G5s?qh zb%giC-ob?BCia4JxVv+{(uKw~I%yHT_6*kh6m)UNKA6BZV(Wd1Uo$pkIETFmJjmwI zfZ$M{ctT%@ewjUbO51M0)$Q7^7-hnjY_!r&t@NWGWMnQL%p3gqSOw8~t)LZ>tn*HM zhTBsl?1DLtdNl}4?f^P>S*H3%5B`df`fjfY;#r-vG97WcI}a3G(wbHYoU_^gxzwj~ z8GHZmrpMKJ=)dxPK_5lPpxM?e0>Pt>&zXo^G(QKVQIchz>LT4anpxfk+eLl*Fa3d6*@* zo;_yar|~Xd+>!C-O50d`j}nVBW)r+Nvh{;QpZgCLlqCZ92fKkHFDstsmtmaFe#&>Q zseo@_8x;`MUvma$CKgHw%n`!qhV)~rZb=^#rB2OjoQZE|aN~in=(W1k`DYqezEgS1id2-@<#eQ z@E^H(e|dEWx-{daDPYtDELUVVPVE)bl81>7@j@c`o0d(i6*Ced*4iS;gJ{nUKHX}z ze#tOunr2;I?0iiW(fqoIN98KHJQ&HXGccf`R3*h2ac&=VwRd>4NlpaKNu#0PdMS7? z-!K~0Gvx4>Akp^K0n*(-LG!K~JGv8G)P(8KkB!bIWQL;A(yi=rMy=Y@ym{94v=hLTnp1{xpDgcp*Z`4egrLwQPr*Nzg% zx|3e6%%rP@^Fp&u8BAt(yCn@XP~TI&^KcR{3F=E{*@^LWe{5oAJdz|}Ch7;IIxd7_ zI{TFGZfN3JW1?!F287~i{w8AiG(gzr+c#fxmiy@2i&n-9zxMssf@M$A3u8k*uenoF zC=AmV4jm_qw{QETi@zJBJ!ecGMGFkG%9K;2y0D z9<{(ku1=^`nmPymJ#_FU8iO~$A13S6%bIym)kl;o5;?{<8m8|(W5_vn0&GcICVd{X zqLc3-gI%}%N>`rr)DM>}>xn+cv*(OGlOs>j=gw`qbLc}RU}xg-6LC{X{XqX|XtK*~ zaYx4QI>+$kIdX&S05JDw2!HMh!vq-UIA7-n|W*CVj#-cc zMBo!NE#}4@zyLN*tmfH`rj)t2-~ZJ7@f1lF68>fRf^|Ri_#N$BtMid(G;Ps(-?=6Q zXn3iuTwrEf9q{Rs`f1deB9uj>koz=%f$ZXJS@Aa@2X~g8cy$=lw%}V?UsnZ;ZZe)a zn014DXa#Ha{u9l|o77)P;@QlP?kw1bUw9QMt^!GvQPsa2fPSl*l$z3|(dpX#v1WaWm1m$m8Lj1xuAfD=A%b zdQ|chGQEjH{WOr^LzLHOXpZHmL7Jl<+$$@Xw^}>(yZ2?mgKb?Ikqi`g!W8V!1iRF> z0^s^$pKQEE5lPOyjG>hc2=kz=n{TQzc_mX`<17zM!-D!DsG>{uGjyRFFichw%iCiR z)8)=gwfXc2QXP|XRuHh~*ZrJln>XdUL1Bf+%g0%D0PJM)P`-Nz%5#MvT%q~&zV1>r0l|J(F)R}v;xhIn8cWa3eZ5=)ZbP4m{Lp;zUiHu;9~oLfz?MCQT6iCY>n2>N zQt)pY2tl2w;Ed?n!Ng#LZ9*(gM{a89ehR*gTqs4~duSmo#VEVG#*Q-+TT$bD=cP2# zi$oNGipnxuVu~IopXJ5#A1|j?2n1~&*Kg;W{OtA?HFZBsBn$@o}x1Pk9pNUeKgm#09-f!Xj`1OOIMCEmXRO#eA8_fiL3>_jWZ0L^fK%>Wm} z=GGnCVHM3Fm8W(|+33(8JRmLUK}z9Z4%H`JmC+y`TRF7iZ=L&Fkv(;64kaStO1V}! z*1M#av-P;sCAh|;aV?cJy)N9J6slQZn87Mjq58T9OGo*EcvV^_@DX3Z`Q?zVIxP_% zu!^}OO=Ei~DwBnd(N`1SUYPncbZ=}nB0th4-s&4|4SGaS7Qs%fLLN6L<)&hN3*5g# z!`Q)~k`Q`Bg`|Gku3hU9rbB)bd3+AvFVm2gT#d9O#?xYWE2KXskG|Q#oNH|dS=I5~ z2%N*=PB@Z}$X?MCez%10SKwHw+n43L+VpACJ}@qAy21UtxjU>p=iIVu-L7v(zYej^ z6FG`2sn8p!LzEzJ5szUh?~`Irj?=ewwtF4s0(u1xKJpZ2Mp)X?R!a@V`eWwkUrh^w z9{b;jlrK6dSoSc!pT0qN5g1*|WY48FxpBzq)^%uVJ1x$>Ow@;xf^X7mDS5>q4ZgHy z;Lwqm7M6n$wjwH(gt8X3X=O*>gsI(Q`&Nw;#cjq1A+3mQI(BCKz?v17$JphQY2mrq zXVj-+{5WRx7QLHabOhCGj6u8lw=^ERQXR_^Q_?$ABElOIj!jifq_eY85me{!&BfiJ zC(2pkms>~q>cQJ*1M+~(ec9$Y&~rKubTtYFD3SpD{L%jfJxi#Ne(?fRqxPgEC8Hiz zYBwDWtgP@shZPy63-ncMCN4kV{yYB#@NQw$)2OSY42Xv7bp}dm2jl?3@TfgdV#8Oi zoAYY%f!6{*{~a;_^4^N3NW35ZNbsw7OiUKI6`jQUpm3)(|1X^G>%S3TjeJBHz#{w| zrovW+|9Zy1AnJdhpnuo^lo-G%EIu%#>v?*Il#A(aM&S)M?h29ysE^{Bn&iJYf~(ez z5S--TYnkqUVC%~J8X9*Fc~dnx8RC@(toTxHbe%l{!1#qrfm?8fy6a`FTM_RqQ6jE&kc^FB#vY^JP)r$632TKf*j9T`sYQ zn0V!`2tW#oI0fNyj=$NO1+FF#56-~jFP8hV+dH-WR_0rrRn5D2eQOHJ7%cOZ@}sABdQ7<#PY z-FWK{&2=>gL%3hRm`tnYhsCcxn921`z)AP5+q;^YXtaAY%IURlmQE?E6W~}5*Tz1_ zc0)wkpvRaX%KN2vnnJn&dkzv1(e&~5EM+TNp{go2gp>;~7Zed}uDZr5N!K8Ongv&y z)qIV*#_Hha@)T$3riZ=&MEtA1)rs`ts!>h`R#qL{eI0b$IDi(~1-KTQ&8bhf-8XKZ z?{_$l2`s!S2m0iuErtKr^v!B1VyXLxGa2 literal 0 HcmV?d00001 From 907072ceb807b4d24211fca451976cb0e16d9c61 Mon Sep 17 00:00:00 2001 From: Denis Tingaikin Date: Tue, 9 Mar 2021 02:22:08 +0700 Subject: [PATCH 2/2] Fix typo Signed-off-by: Denis Tingaikin --- examples/features/opa/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/features/opa/README.md b/examples/features/opa/README.md index a98ff72721bc..e4cd5bde9bf4 100644 --- a/examples/features/opa/README.md +++ b/examples/features/opa/README.md @@ -11,7 +11,7 @@ Each application in the path of NSM request doesn't trust anybody. Each endpoint Each client also doesn't trust the endpoint and checks tokens on the response. Authorization checks enabled by default in NSM. -For example, all e [use-cases](../../use-cases) are using valid token chains by default. +For example, all [use-cases](../../use-cases) are using valid token chains by default. The example below will do token from step1 from the scheme as invalid. Expected that Endpoint(in this case NSMgr) will fail the Request from the client on step 4.