From 46973ca071efc2472f967bb4400875d57b9381fd Mon Sep 17 00:00:00 2001 From: Kate Osborn <50597707+kate-osborn@users.noreply.github.com> Date: Thu, 29 Feb 2024 09:55:25 -0700 Subject: [PATCH] Add NGINX extensions enhancement proposal (#1567) Problem: We need a documented approach to how we are going to extend NGF with NGINX features. Solution: Add an enhancement proposal outlining our approach for NGINX extensions. --- docs/images/hierarchy.png | Bin 0 -> 109568 bytes docs/images/nginx-functionality-groups.png | Bin 0 -> 118132 bytes docs/proposals/nginx-extensions.md | 946 +++++++++++++++++++++ 3 files changed, 946 insertions(+) create mode 100644 docs/images/hierarchy.png create mode 100644 docs/images/nginx-functionality-groups.png create mode 100644 docs/proposals/nginx-extensions.md diff --git a/docs/images/hierarchy.png b/docs/images/hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..d49aca85504e2dfc7270e6cf1d457ee905f88a2e GIT binary patch literal 109568 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

Kv750JT?EgHSSB7K{Wy(4A;!Y^N{}R zw^S;!cZajRSM)lzMzjiJcn!Q;m^FP)WTzvMj#bsUi|b!*Z#F@PDBbXIQbUMNp5Vch z({T1SvC0%l`fQ4@~6rdaY8 zrchz&Me&vy*CJ|y7tmg~nLYFxs1eQeYvV71xj#`!x&i;+`p9w!c4;5rlGcS|!+baU zJw!jVc%z1=;*Gb5@ceALpSxs#JHC2zbA7V#ru;FEml{Zs@)T1`6ua55lM4>(safAx zBf}I#uRQ~W1e}`c{%g2rdCG-8&4!BDGsAVTzZ5iglY}4U+IJ77Jht&9Z7pCnn^s(U zeC!3axF6WW3OjBwiJzpauxu}~EID5avUD<>(MU_`QAqmTGtb9RyqMvNoH7F3msbqh zr*)!cXeePo`44S&w*Q1y;b&*b*)0Ka?+#XAf&v&PpR50ne6gI!pK=&Ro1?K%E0n=n zyp$ncUYoYRCWxrIdMbbVNuOj$jKi=te=lNfmaIJAZ+N|tkdv__7!-3YIE`(M9%7MEkiTdCmcXC|DJ1aTOytG3#nLkQJitI8D;x|3z} zOo`oX<5%;$ulAzzj8mB5Rh4U0!!}xm`Jk68+GZm#QSLVu=0y+(mPPOEPoXzFCJnaG zt*g`w^d;#|#WgIRXhDW77-nP&ybRoo++_j?l1_5C z$tH2rzNlYTGkpuJzB=Z$IB|2za>r3>xOPD+gZWZ9CaK8bEw|@sw`~)iI1+vz=9{US z633jY`|`)riM~h2(_^_%RQAP9&j0M7gFKiWc*~bAmi|&X3ofx-4q!gh#5CJxFBj{k zSbi%>&JBKqH&$ijQB#lP(NK%bRMP+h4Zo1V^{^}Qw~aap9fw|v1HW7j8#i4R=Yx+= zBbWP{Xqx(}OqM^n9Ca8cpe<<#YX>3D3b_ZQA<(}YMh6l94Xdjl8xyzsOFUoA2#TVF zU*Xpfn3jwVnQ@Ie)NdMYGsgesN#0{&kE8jc2Y?%|it#*yvhXL(pDJ5^cSL*x|C z!A{%U^89Ar#qPC{nUiHOg;@4>^Qefut7|&QbVto_dbxOU!M$#~ud{Nyzl628Kh0)$ zeV55@ddomC;`AJi!^>+^_y0}a!4ZI{{LCSYgzGtAg8`6~;NqIzUg}yS6oUVN>3xV`30f*f6u2z+eHe&539P)^nOG$ZUg;)fwZ{H6A?viWtJ+19 z%x@cjzyLT*lj`K}JqQYsmv6dbvudWr{o9#OOpuY0N8?F|GY0o-6!s$$tTiXS5Z(H( zF$kW$Kn(hFpWjmg?xgIF`e;n6Wy%CY|R|M+!+j{X`h(J+Um*@Rcbk(mGwk%_|DLx-BGszy3a zc?*}|(<-ME4hZ)8KF_Bg|7PTdMrXT}H#Iyr2p%mMwkL*Q$s#o0WV7V;eb1XXYO^kH zeD9kp$3%<~r&~r|z|r=!2eRTgNzAh|wunE`Ho~$iDF&TenQP-CXWzROx>r~LAYXL1 z!vA}#I74A9gn?~&m!WD~vDmnY(iVWBPa0$*FcfcLhAq{+sUBw;J3DT1kX zytw_{cu_yc_+kgWcm*%J(M$KGO4Ks|oO%|k$A^Efs4UqB7jrTVi z?_)%G39pZqNhfs)dka=cIXIiFS4Rmnn28>%Cn?C=JIe_*Y($7zlYY?Fglt)g(olt^ z2;chBqe<&+>t*9L|9^Q%Ofi4J1tE>39p zA!d2EY)4Qx-og?{7O{Ng=zlpH8Bn#HF?C+#W7ZL9Y|%yG_W#DIQn1Xiub<`TV<-z$ z2msv)`mcehvd!R~4`C-N6f>FarWIp1GrD8rm<15g4e`0RzIR!48N^O<@$fPuHW+fM z@1L)2zX%u_-1z@J;-G)TyYKzliPj(~LvS?G7vIAipTTe+I&?BWbZBSB6)&;qP;Su8 z6$?2ydR&(0nH+c(6If%!2UO%=+ax-?z(z6(5&u+TOm>bBwiiw(f>bY6Qhd1}Z9Y*U z_NxBmUr!OHAj7kHWbJDX7 zm3^FpuzMwx;T#s7@y{o?ESx{IhI3_fB_{AJHaUc{wO<0{qE;SFB|ZB#oc`BT#$)UC zSgoI*jMMyM8MifE$g8h3-kI~~%`Cd&qnQN_V=X#k!<)mn5Z@}En+JKH-I-sX-I~P_}lPaimk^=_&>P{k=WVBXnxhOM_R-bMNf{y=3}ufr&^+Um^@ns1I#yyo1=Xv&SzQAu}F z1e1sVM1+`g_d9l0)2GTus-QyB!skwzG$mILDF>XA=T;kU|8oubms3dmlu-`WvL{(h zUS2-fTsKRQA*Y6sS6!8c8UEOMDCY^Agw12(gtLY|IEqvEz3hNQxEkO8%nEtH0I}Re zBme8D^B4Om(SZV&wCoT{>3staMQ-WpOdU!EDtC|_9yr&hF5ES8FFAgU+$u57Cj3~C z%mg#)^aT&e3NSc{Tgd(e@gMa1^{w9ms9zA|eGXlqwLJ<)HiylUHCllC>QL_Tiz%s( zVM2cv_OSSvmn>8|r#Ml|?kN0XPfCg%sA{tlKa9yh5x~))A=VElL&oj34aN7?MkAvh z{%o*1FxF0PlipHE1AS114Cv1h97*|0+5d#mb%Gn1)Lc9zf{80F227H1#@q@K$d9sX zr9uYfcNkI>hpVn9p1)J^s54$tF;^Gq^?Po?p0BFTwWt^@#ysn4wJx9rz*aAIgN$BI z6Nj8@{?fEU!^t9`A2pO`lzHS@xab(=%<$_9Crs^Rl)N3x;+K{WJqLy)I?y>!KrYx5 z;Go$7Sf3+J*1yiNCH=f%>3L*cGyvCFIX{P@6Q7^k58V*kSjYaK2~RP&|AwTSul1)f z6x+!EAgg3^fsk9LQ_5UEVm=@PT1`Xo#ATDL?5FL?;qC(LO{ExNvy_l~0d+u0X7cBF ze=aO@V`Br_F~L0r4oF0Z1EjIx8Z-$AReg@qzy6x282{`6Rk^eQr(-}hVq=g`!hS=>3x1G zN$Gq6=Znhv^box@3QamRjJGz8w+S8|ccQkT8#yym3z^<|IvwBGy}#?#rtA9->-Zi> zmDNPm>N#On4KeP8QK^eP_LX{0hPj!iRld1_b4J5UrN^N!eN(bC=b{Y`R&QhsAvmsd zq|&zEU)AriFyGRfcIwSStB`iDoFs9jAX2Dl#Q~jy>aRz~A84e1Jf|3IV{EakJ)Jr# z%3Ly)am|oTlJk*Bl8g3x?kRZbdrMfyDl|h~^?By}@H~bfe>$lS7ORv?hq}+5rCc>p zlU&_PR2Nv<0Y`;XrLfy8n+L$&UFa0P_>{;s~Y@q!I7C|L!LrTE&w5f>JkFM z1Op-~Y7i$YI{k>#T|}mUL0Oc8MNSPkbXE4#Di8#_uM?rf5(G0=YNvSsNwxR|wb9Yh z87nkXF60gor{(cyHJNiNbl;pUaaw4f^~-@X!8w);zmM%-^IJ8TehP90PxZF4HrVXl z8`%0jG4Z!Ae6X0KhpQS~|8}b!^WJMtu`^TeveW`uX!mo9nm@A~&X90#yy5V4skIK| ziN~<8L;Ezm*ZXL1y{RQ$VQUGYwrcU~_fM&wcMrZ+db&=v@}}@YbW`{hIjZ??->e_|k5%h&%oVRH`+ujvZ8*y> zj|7V@@3-}{I`l01N($!c-Vy4G9jY2BT^;$gvsPAZb+mEcYPyd7+=>hG0`e)v^uujS zwApZ;e$--T;?U3y0l@w5(Oa-`4OGBU9R>V-0dE+p^ZO6*v~{d*$`F$(?80zk+w;CO z+TY-{p5NdaqB~@1jY`tZrc7qntj(&N4a~i=4HJi-zyKzK2ceF#{|v#-6a@X8?{~7= zziLeU4OL0P7heKgsP3y?9@Ng8Z3w1t)aV4lS;BbCRsY*r{)pGKV z>2j3+1MJ(YhNUI}Z+1aFnirwejzAeYKvC>6c|{(Xs$Nswb%J5h>nClDpUF&?9It9| z4U_wWF@zs$yt>9=Gc;GblP;8A?L|Z%bDU=BRA&w3Ug%t{bb$~{o*A2afHQQBxS95E z=O6M1#yoi+9Aw=VHaPqM`r4rLujdzTAw(oMj(*I_=3<&4nVuuZ>4;faw6(MU3^JF~ zg&N4qMb1^zGXY0xgcTWI8QVz@?)4rAuWMw4PS)prljZqOx0gB}vj`eLts-(fp;xTA zd7n^Ia!M$4IaI|z(tXaO_87cyJ+{^se2TQ!O+pJKNAjq*qUS`wUf9mC69jv5tG}{` z?9BK7P+-T)#9o(Qd+JqY->pz{BubvrJv6yJ?JM^tG9=ieAW^|fJ-*i6Lm%Cc+!bHN zji*?;fE$6$x;?9GtQr48?L=9PTV9)x2)Y zzn3Z1khhw|bn)vu@juJS*&2wW~l>*XvgG~a0CKG=|%=45eSQYyX} zQ2B_a?4gGu(OEHOqnbFiB|k#(8P|71XjhVE?|xH)POfi_qo^1?-X8Z$Y1qYLi$?9y{I5%s3m-&`3(EKV%0uGS}UiDS3Oz4;rNfFWG06fUAps<(EN0?aZHxTfp4s^uZ{liH|m~N6u45> z_be76!pI=5^EzcmS!>y&sYrzKHqYgyV)I5NgGjFBO~x&y z_OfvykL=7$^r+WO3n#pFyxhaKz#@pR;jPy==OV{T6h5)3HXo z3+$h^9Cd(f=3GZTlRB6syowvdb2y6&ibzu8sM;$n3hsPThw#*MU@$@6UiIEoY+_XPuxJ2oLvZI^rZM5QpXPVm!!1Q}42?wNW^G3Pc! zGVTvE_GHPAv=kDpSJj#+;&1i4BF_o(hS_|5>%QX7{R^(CS~+Zl)B7;&U^%jXNPgKr zUoPBjL)tK>9RAzh_e7;{La)DX<3zb{G54r1Rl`nAxro1U{)x1k$KH8~536mYddu!) zmHy)FMqBHc41-~~TKNR#MpxTX=|83X>}oTzv*OjHMKF`8z=cf&b_-%qxA?(|FpuPKvh z#Q!;AsX_ysE)KKN^Q}~q8cOv$xArR)U!g&DwAXWb+;ek{jUiX?;sm*p)Op~i^`B2S zhdK`6KT-6wReQC^9krLfEe&Cx+FZLzS2WG+p)zO=3$*RVPp$$dQnuIxe9Q4o;DBm+>g! z|I(p&$XxoRD__M!v-oAvMxAhaepC70sS=F9;au}N;u6v29fHJM}S`ZZS_$FG_ zq@$?Q2*5&2h8^I#WsVdMc_Hh^$uCSSubzywC}^*&JJ!xU>;T#UBj21K6Wk!uUR+<( zD6)fc1UeQ`7w7?iA<~_gg~p{ux)e zS<>GeZf6MlNR0|hl1eHwFAuaVTT>5{uN2UuwcKRm-%ydvX|H`4(-*@9YMJi;31_rA z9C)&vENd^Acfmtf!;79%EljRPJb^G-VS{%u^xb>M0v7R-WS*_;Q8u|B>Kb`~m=ZfM85HvKiQ z`+>>E3s&oT>IK~NJn8H?R)stmdim|`^$T_k_>MegrI)^gF~1Kx-}$;qESpqQEHW?N zvY%_dTH_q*?VlYCC0Lp-IC0Yt>DU4v_1v;y)rH4nEh6ow^rr;+rbD}HSYG{Vy}?pS z0q|Fm;PT*g-Rj{Ulf}%Ubti9y$jf0?MyS57SWEfXdnKc68s$0Z%~LioIfR<@a!4%w zr2}HqkuQ>Ir#)6bL5n1X5MM(Vn;cU}v*px)vny`Z>vYvP;;M&TFeS#d#ee4@Fu6Ts zDb!plS+~3Dv{dLx_IBm}*ue@rFUK_*tcXWQfX)xvt3La zi1zWXJxK3iE)QC;w!1}x1F*rV%6%J45-|^*inp~}`RyyOPwuW9h44S{>KZxD0dR}I z8#8ru{Hd{1yME|FehBWZv_;$eQ-C4iCfayD0bFw796FhJ4aW zKC?Ak^4!76AmZd@;lS1fZ3GPwP>i+wP6DNgwxPIheWeu_W61&cgOk5uq&FUv(@Gr2 zPX3ybTC5d63nsK#&aXd`^!W32FflKWw@umSZzFZ5srAM0U8;|P(z5U{w}n0esA?L8 zk6z03UCE^8lSLSBxlT-z)~C_Ik=DObgHhfk4_y!5WW4frJK+a?rT6^bw#HLpoPbwf ze*$u$Mk4EhGee)v3??pkkoX+oo>QUdaJayByeBysi55yuxc@y#z~mUKldO6~=Mt@p zg=6h~CygN3h5{9evnr^(v~RxABv_Zc<}>GfnnbrYg>GKt+5n3&88J1BvLV)FkEcNB z!(sE1qF()vN$>F_tKLr-gF(!PWw7DI`dKj&L^-^ixCt^*zZ#z`;?-2_H+zX)nT%d5!Uw$-&olW5iO zj7GOq7=pgoE;x#oWMAdiH5+)hD4KWua0lo%#?mT&+T_G z^QB3{y?y>1Sc`jNI+LVm=_x~ahbQQ8jz-ZT&51!6hVIJg&3M`VEc0!Hw>br87&HS) z5Q+xDx`K{;T3NK!jbkK%M}JOY~X@uU+-9>9J?Fp^pM?RFH49 z_k@)_QUO3M14Ci#8?zFMkoq@G@kcD6z?nJDLT{nHE`@o(;8M%W_av-dbqRe)5mLsX z@~0N_o5mHIZ_AXr{v}(ExnJKrmK8kLo|$XdoUE#2w%p!lcN_M`(qgqcYZsYOg&?BEyhyW{eF41Z03}MtTqiI++g^=# z%dHi0(y81ZYI9csSte@`I-Du#OQdH)m;^k@h0I{Z2!je^ZSNjNvM=$mt;(cKJ_3d;+EWz^zLJ@?43zcT zO_-xFt6QTKTVv50MYY#IK*6kia;bYsO&Dw=1yL3Y;ipcFD#Mm+tDIwtMLa}9LRf^% zsW!SDeR$Jcvsp3|bl|G|#jZq~JxbD;nL(ek>=s_x7?4zGff`r3_(DwBOdV3*-24Z` z;MD?pyK`70O5!EJca0y|Hwm5n3Xvk)n9T12FaSWbhb)pE|FJyH)o2K$05Q?Y^vvwrjl7WE9wADhBl#Sll><6kCVaAY-GC8LSIcCcUrml3QgaM zFhAm^p4hK{_n2nk3d?thB%$+JXZ`X8KUew7aNz8&>IQKcrufXcKt|BMSO5zWU%Sk5 zUM7oWm|olb8_mBAet@16OrDoj!r14cYxjir{P>KIrslDkyjBzINSqfaiY@z^Nhe&VF- zc-BRzZSziB)6H4uQDXV~M^(pQf!51&tiadfTuPazhcSB!GQ#@*v(gakHR;4wJ6bq~ z-f!l)2W7=1xP8Bxnr5PjwftQMm}^P51Q|4rg;;{jSzVSE)r3Pi6k==kM#IvpWy_)x zo?I>&u310o-&&*Yy|tRZ!N82$v->2KT}=H#lKk6SEk;e)FL?IU_?M*>N5zn>0O`JZ zzms7ss$`pQxXWRCl^1ozcsT8LmtAWicZRfmb91V&G&_*iI>4dy5}9%y zMc#CU6#nT;ZS6muPGHKN7+~0Y6ZPX9Imr0h<_#L1)j?wmYSw;wh z^}8QNx((Us(TXCrs=~Ta5aEtIjH;lL0D+>S+w7K`TI4yUY~sJ{DX+A*^}+BH?Iz(Bif7`0{b9hV6>Jvw8n;k ztHmi~zgP7-495sB{+$uCZSFLc_8n!LN@mXgYg9UA{G2ph3`L#h^K7;a>U>kUVhLNc zUfGng=KBhL&)Mr$LZ6X$Q8;%!b8T~=!n+=PHLQfYhA^y)UK3BMO7 zD=ssZaMW6=arDa8kia21cG1cRK=4D`=}2xU6I<)}n}CoY2P>BgVR7^&&UJf8?-pc~ z%%Jm}{H4pcfxLDQD^#|&UnXkriV<&E?_Fbdls0hVHAhl~%rx#++pZUhNg8GPT`|)6kjvPBduWM9ia-M%EHb01F zcK3GRouXLk)8-`q!LnMZvI&tadV!8YYX|$EHTi>*SEQVbOwL*EN??m*`rpy#uL6&K zizDO?OcR84Tbt`UpoX<%UGTP*2I_2f=Bs`8r6jM!DgEia@x$J$mz@wV7c^x81xiZo zQ(+Z`!l%#g)+n$R>}#^!W(itsIQE$)`ZV2aAkTO?9PXLqUaP=#`7N+W-8<={AoOlk zy+tGW7Mm$BSvbn#zA_(drEkn2X}gjp<~yN#gh)%3_H1;PrXa*^I9oj;d0V)76gb#z zrJYOHSRMW!Ma($-XoI1r zC_ZYkSXdK^0o)-WKaT)srSp5bpTUO3X{oN@$$8EMh%jOCDbP1RC&g?M_V?~jrvS|b z@`UzHEE#>2+4OE6k|~5|B!^TSs-wJ%Q>Iamepo_{c49VMAo{g&tI`*MY9qCG^PWf< z?MsG8(!S6u)EmAT&J>lj2XA8jF?v39vBcy%#n#kKX5E9{ksq=PW`+3*^{$b$=1AN4 zO^u-%m)G(ZgRrG8K-VkFe)4jF`Pk-4i|wQ7{pA$Wa$g=!r#9#k^$Xa?E2vf19c5u} zkyGsgfUV`O5CYfiBGFL9@HVtq$!_-jW|Pi{_?nk0k%zcyOECzGmkTe#NUS8Xe<%R^O&$Xu-TR-Qw@ z6MTl>i`+XMWRZBMKW%cc zfY!TGqLnKR`U1?vvgC|Hydc8lb)m((_|P>kn#UZJ*Yv6(e8aGz=is;PhoUm=(h;hxQ8*>{^#zMQtPP5(&RS1 zW-5-3IKUTwrP_LV{X~E1E(E9ni+ohPf1gr)m^}i ztRjK)$dk^>O-4Ys>{^#z!Huq1(OS40h*KsRjd!St%Fu^$Binc4MsJ#Gg`UIkR4Gop zgxA6AbGsQ3IkGUIHum1;$>0mD64X=owH`NwcQsvkM(OhhM(<4l7#92I+bboA8*n)X z`hu`3i|z1)tHWbpcCf)8?GODIF6!!a!k&ImHq)Ee#z|??ttrJ~{L@%g`Ldlv0g7J$ zXWGyQ{hS`)WpaB@tzHQ^vqc`4x4vG^Lf6UNxVjoMf8XnXbBu|6`Z*-IAo({&IZ2+D zb4Uu!yP{OEP+WXdshx`!rLiXcyXf&*r9T=5@%{Lkwef62lx|i{D-VpTTedu|;Ae_w zk)Uk;1(cfl-=99Jv;%FM?Y*5)!_^<0XY(UIrN=#LCvS~zdH>MsAvNsqtbpkq+(f(= zN*->+8k*9{Mwll_39=RNXt1Z0OLPm;OJnqk2Ym7};Zbw4@VDdv_)B>g4-$3BhgA!$ zPxa1v02PN&8V@)3(+%(bowQs1MfTHaZ3lsVHhbHXF?IXazgBTIcgPaI`k*pfj-RUm%8%2VrA(8CAGK(vgJu8lX$5 z@47Shn(PJ{{Oh3KWp=0v8to|*3fFUH8pfH~xbMS=|a$wJ!CyLaaaNG)%$Fl26?adMU8zbW)2!K22L`H`YmM~hvmDRnG*c| z$p>duZdJ{wXy1wJ$0>BjfrAfa6DIghl>kE{(KpvO@>iYAA=t5Uys4~t$R%o8CLl%D z@B99-{_);^Gsn3<-R)Xj+Ve>`J489g#;#ZOB(+5&hT+XPl1mkAs&$|2AC$P)VRby zEBaKF;}nB?irbV*(V5=$dC>iP^$PBJNzhwc3Ty7{MVhgBNC_r!NkpNw`1+Nvuq<(s zjq7<$i(W>#4J2Kx8@`wwREnWe8ef9fhBB@z`REl_QtjuVVM;Q_CrY=zQlM}(7uKu| ziWZA9oNv9-qTKKfiH=EUqm@)~F$s4wmR|w~03oHrnA`uvqQtW$SM%D)Rq}&_id5Pk zu`O6sE*Q_s?m7$p+z>kaxUHtDO1J+sr2hMtgBQiGvjgt@FXLWZJ1F|H*(^}i&r(Bj z8NFmSGZD9p#-xsCBivMiH~y5vNeV9W4?LZ=yNd!Q7BOszns3WA$`~i)krRo`T`7ZW zCBBL@z=lqIsLurussi{b&}T50F{wP`1XVXkej-mQ?9jHsZDPmEX zM|mRtZ#+;M+K*7{3-%0a?1E&5LMXJHznBh0+nBqxea*8S=l-OoJ0|S7LWi%a2gMyk zk#Beo`(360lf}rbqpWR4%2U`*n%iIfjh5LuPZ8Cg=IgVX!M;LqXW_b{U;lkhSI308 zL!JeS?)IEK=C(LZDUE~ZbdkYTDPte2U)^J&%r2(VItamA@WGO=KI zU@=T!=UmYSwTbBPXIcP&?D^KJ!hCZTR5|F4RBJqo0=?gbMfG zNu#JxCtU90P+=8rsh#fgKZJhn>L_>=KYnLJ7-d0KvY{k#6o1)Q$G-Jj0-dKv_kMcw zv)?X0C40=x52Ea|1dUg;?{Yo(o%|am&p>@CLC^GPNW(a%1&Dt*bec``MD%O!k`4-) zEQ31I@9|VEMz$2Y^!JcMF#KLH6W6>*D*gSuMGYGBx2o;g@Ijq~52NB0szEWG5tFLK zX1Uo@$vkKh6t^vZVD)fnES6r#55a8ms;AJ-u9!iY1&X_PKXy}vdZ#)cz`rBq2J?v$bDP! zwZ9^x!y;98J7eV)1q^Fs)VdO0yZm>h_?R3tUJ}SPuvFX!i3?2JP`(1#;{-kLBYp(z z;X(0ZZ33CjRum#tC~wX`0dG`ZYc0OWud!g;$*8-h)~!{pPiLOBBwaIP&yBL}EJok; zI6>&Gs_4bvY>}>6S*>_PgDiITUUWCt(P5q%dnA^HTc6yu_At!WYH7wSkp0y2eHd5Z z-u+I}j!XQ?LqFFyoxCJJv)g}e0SZn#ug7AMUgKWh_>&4y0)e8dZJKMRfmP~h+wv^^ zjhl1rre)H_PO;7GQ)_1WB;m2;l1Zg_i~VP_2vc939W+ONIwj2h*T%Vcu0 z`0Uk%l%zRTYMYm~BFVaq;v1W#f|iDU?q{z#Rb0#OvtHP>JZgJ%@iGOrN7240CMEB+ zB#2#VByouH1d8+LY5MS>g^oQ$j*gRiX#Vb#s3RrpyLVg+K296h8AlA|mQmU1tK9oY z^FYO^)DQNO}AhxHA^k z!;f@Bj~4rv@BmKX9c^98KZHcEqxcj-ny<|S$yw|LR-PWZa zl&oOl!haXEpI4M)`g;k$%esrnA2vEKS0+)mtJ{I~ICsyYRWcn4NB@@jO;5wA6WiJM zj^<_|8J}J=d~BI(`O>!O$D6hgvXl`sRU;!{B*sfzD!dt%v9!DW3UE-YcOlH3!K_E- z!fCAVdtJ-nLf&@*WxVXLJQrZIhQ?{8bF>P6savzLDSeBr#vhN|ci z{IYP0b}h(Vds!%@0D{9m>O&mrdJJgi=)orAO}WG-zk6e&S{lc5q~pB6-!|c=ty2K53tflA#jXCwl40P~(6J>8@{M72Sqfk9;%|+0JH68>NJ=WT#u- zX=C)Ln+P9p-ms};1%y|H0OKMjqj-tpQsG-iTE%(Fm{A zv2?4AwPiI}(c-1Q`Zpwh}`l#LM{O%8jBnSjUD^ zTgGL#V6ygcN%?TF%aRO|UDQE{l#1lEua17D-FBvgKdx?5QDss8`%0v+0Sy`G$sUQQmoA}I*pCM-tsi{($ zVfCS&rlKkm1P01DynQjjQKvS_u?Zy6W&#!V^5c`#mG%k&C$fNh0d>v(!T&?mR|iDZ zH*KHYg{3=|1{DcuQRz@xKuRfz1w`ORU}=zAKtu%TQn~~LDN!1hE~P_|Sh~CWJKT@Y z`@Y{_`iJg0XU?3N`ORF{H4uy*1brWdzbWl}$F&ZL>$~1f_9ArKfBjHU7`Dy4G9^-b z>kL-xvqNh;^A5n$w!D`E?STElg{_Drq9=bz65k>PuVPA=6hX( zn$iA&lh(~>KF`t)p(k}GFZt=?BsKBUvT|p&@~1eTB};dy3I4S-&6i#xEjD7o;oJ~<>sSc+=BXm^y_n% z*Y@p~wI{71OoxTJvMA1lZ$7()^g3P8>Q}O4 zZrdxbNLb>0rogku5F?(4eG6pMXf!nEr=VpSoNsur{R#fVJq%IN7i+CR;5 ze=MLoog-$yy}Cd&@YPdw{<10ez`YK@UdFCWEd3ityT=Ub*EijQ>g5u47wMO(d*fSC zxf)D-(v4Y45uFlE>H-vCu1X!RivJ}RL?nL=UjKXDw;|9#TxLgU&MC-H_Vf z8xtp~;Ullw_PK2=r$|rYlM=EMCVt%IOO*JQbN!y83%&+|Q3MA`y5|-+H|oV*Oj#HG z0!AX_&+OnX>h}$ZND>rM?;)48pLoO5x%fVU0H`<5pT+zot59TPkPr{6spVN!Q@`q# zGbzW@SERp24T!e)ZDIy@Z#xf;$Au2OJ?I`h7ZWzr76B@6SB;BiOc-zke&DsgZnW2-}0vs>>(o_QwKZvo_qr-<92rWGWHY4_dE@! zOubuwU3W-Q7Ws`vbfqs+sA)m_hxGpCcqx{FW<=6XQ+ak<^s~K@|3+lQIhZJv^>{v5 zMa;K^uE}C=6ZL<(W*|q$-PU5qyJ5T3Peo$4$bKVxhswz#wv3`JrIbQZ0@^0_m!T$- zef@%F_zi*Wz6#B2L5#kmvdTyQp|Z&SyX6!u!L>;8>DhJWpZG)sLU?!HD>y9mx+mb1 zBfNH@l@l`{XDD@%&*YQt0*Ro#*O={KtwOiNI7u^ZW|ouU%fDA@mcJfm@P~si$~&e0 z8u6`;8z*qE1`=H1f>GbPHov_q#Y7Mj_w0U%1$drLExXw1v@jNf%0G6d<$bcY_1e?0 z^zg?$zn!jivWf9K{gCnR-Za3uIbrM3-%H%my1v8?S|fG!iPzq2rB&*mlyH}nSE{Mt zQ9k~a-T??*c>w4WeW!$PJo<4C#ezJroRsIOccN}RVUhTB;b#R377cH*ApY{mDp{@@ z%+h}*YZP|B{W;1BuCEf?7<13&tGY>S_`J+`I0l?O;UK@d)@bv>Bpvu>1ms=jb1on;>r6Dg5z2n ztEp6gBtBsOJ-^2_O$Fqt-R{4|a?+GLFym9R2dC5Ne$Y`|dsQEp!E;tsIsw{tA2uhFx0?US`#ktQuVXg#FKLRte9~HeUrA zfO@O4?l)g!uQ5s0;c1T(c5hba$8dhO1WTcsUD}QUJznKKt6pXAfahS{_;-G*M}ZdD zPZj`b=RlN7bK2F5@ru1FXf4mkRI16*A**uto_Qr0PQ{)6C!Ee*4{ToP5R-e0%L(Rf zNKX$wecE1np1L8O5N-wh_%>1G6FitNJozt+v@>7~ggxn6fn=eVy~&?A)aj=0rCmxB z1DhHjdwf^`ZyLz)dDS-+oOe=xL~=hw_}*vk)VlF1xc0?D^)+$3TcYXfic$Asauf9b zr_6zG0z@^`G#UT2bw>;K*~QB{y}mqQn%&1Ghhvf|Had0Z2_U^;}N9Q{Q-c>}kmYCr6LyM4E1xj$=g9W135|7wjeM)>DGrjoMwW1PC%I07xbxfQ$WiDA)U^33-cmx}|JOP3fI*2lZZvKD~&~*^^SgJ5;H}PkiuLTQ};b`mfqMgkc|2 z68fVk=vkN|{p(pSy!1g%&Mj`6mFSOkn%dffbB5tUUs+vKvJO=F47OGoMv3%aenxX6 z2@|28G50|pi|td=WcuhS|GhFnVU+=$MUz17TF=hSDPJ+KB6U*cf`pBlaAhm^v{-8X z*tq)(PHQAQmX0=;Nq9=zqnPbPm;Ka)pZn|v#!+{I#`bQCc9VuE`isFar4Yfrw^11n zSGG3dqh=bd?=`rrCyO~-+7C#oJW-D;-zSDdo>fa&qS8%!BEq|B=U;Sobj3ft;1?59 zh)}O~v1j+A1C%nOnJupG6wNI-NuBr@ASQD;*jM$jC}0BH4jUgV21fdCiH*^hJ%${o zJ|9&%n9a;%e*lC(E=nW?|7e7&S>fqQJWt9#{0&+8$01zhJlm6-uww7FM6u@k?gA#w zG|>{(PmKQzKbqj7C!&2k{QkSPzU~c!G0*5P@w3*^5Y)YY#!CO1Yf!;IABqXbizWE< zTw(#!FD~X%YZ9I;%2VePSjJ{s58b|5wRO1mLPf#x=>P+ubX!jij}d4GFcuaTPM7C- z_eN49eTpRo)DLnkC}qTMKU*vaLSVj{c%~4O?00V3^(tS4G!tTc%Gg9q^ zPNy^AJ@I#m5V|KQl#b^D;G11(SvbdDE7&Px?jgrRw%GOs0 zBwwjUprED}{j;p!iDCIXZ;EUa<~>!kBNO;|;$v5Aqj*P;&L?oG7O75iAgH{XJ68=5 zlo}YAjM+x=iCW5rSD{*bi%^OyMvT+Fzn1hRWT!+sT8VmRn*6AD)BI;R$1GExj&Fh^ z*5|&iLfO*92O|-zHx+6QG-(KI}0ObNsC3wl2m`qP{_~BJ94&^f5Q;6Us+F zF@~GQ61VK-i8+FhPs}rw{nrP6HBfL>zD#444Thxy=vw`eM1c?T>#aDGuD^rp4_Ao$ z+TObEZ>2wA`zA(i=dOOrmYX|KjMiTK6%%%nU&bbEO#9O6@nHaQ=Li?M%|9n81-=w5 z=MfzAfKrz3t9AyU9Un6@f5>QD(%9Ou9T~RL)kjqQh&ngDieXPgW$yHI_UBG83h;jx za70smd_`e&bNG9$`nCHB;ugh0L%^2TQacVlN0@<G!T_cg5`_0(Yt~x^@?a_8#(#bE?5k@(=R6bs= zk>h%?=r1+(x4H2-@6rRD+Q!{~{^MU*!|Ug*U!L`Ns5p$q#fP;-fjmqh0h=O*s^}N? zvHWBiqk;hGGxp0X5g-)@aL(FhU|~Q>RJ!u)yDcx$8QbxZ2H@enPN7LuV%>A$tOzS) z!o!GF@8Amg3Ljjp(0|;lITraUzW7JCBP4Qo_pf_Ywq1W{as>-nlEe|o4Rjk18-EMD zCX#w^><5S{`1t9#Xc-y)Q?^G&>g$)&K!PsL?wfD;_XbQS$Svf@lNjfRGNcAji*L&B zr|HmbY9rp6SzX{pDj55r{DFXwi=-G+F3UL8obmv@5B#X^6mQkHosEEK7}sIc-}qdv zhy4e#on9@A#hVx#UNX9QdWvT}G0kJ}c2HZ#g=b!^(=_q602M6EZ zEH(__e0&T+AQu0*_s*LnNH?>l$?}QIv4f8laQ-~H<OTwab=Gx#NluDRJ$yF zU%L306%R2IgJzEOarm1Pm}!*n0q&KW)=Tp*>|&CKtjX<|ClkB_JWsnnBdBtc3yJgf zpR#p-d2G4yo{;-z@5kls>C+zIxPm?83=e!jKro8=_ZegN)@DL#ypGZ#_xTTT9*5V8 z;9_P`P61Q@2dWU!;S&hi{=s7hz1+b0`YC(7t}&uLm!!G-+I3DTyawMNUIePnj)URL zF>dg#@ZZ34^V)OT+xRPY>gr3?-8Q9)7|oMuE;pZz2G76nDJ!sjjq<~Y&>@sAWi;f{ zZBS1SD0Huo(u0W@&(%{+9fO-Z3H*1#MM^##p~uzHCuCPp zFq>FVGE>8)x5h34VO?vAtkm%dQc^k)Ha^xZ^ld1J=O3|)RQ-i({>9}}q!ZnB(v$aD zURjNdsovfgwqn&&-FC$L7GxP}c|cN;_sl(odS%n@jl?ZS3-Vi)2S#;F(-k^Tn5Q^h zIl~{DIwWN0NlU_t#kVzWPJdm1jF$x^t6 zJrpc5cMfg5kTNE0bbUQ#GWP94!De7jpBE2s@WeK2S9yPhVXfW6=!;iK(Cs>H(jtHT zqUYK#Aiu}I@eyKN?Rn;lHhmGT8Lu6q?Cp$h1XlMfEieaXm*&VV=H_(G4nV7X)xW=Z znO$WUGbXk9u39~NRgo@fR3L^1%w?akKS>??*}>}!z2DHk&J>lVJ|54LR+&5McXsy% zMqG3+e1ww)w)h-8(_#e-=zrY*EncN@gRXn$Fqbv%R7c4&{FD%aaj!djXe9>sB|$fL zS+RclZ;E+xZQbWe5zc<1*+A`5AN|sRrcO?M?fuXflkXp|JeBp`|H%9gz5Ot`714_- zLl1|k%BGWZO77Xdo!4Wh;}4f^mfBn9>_L8Tk?VXL1oI7O*o(S>{>%b7nir+YKJGf(a^LYhgomUsPJ9LUwEOdfn6Xqo_ zljZeo1|d5{(qOVr^)RbQwq1!G$P8MA8GVjN8Z$l(JCmR9%KK75-YbkDZCe2 z2fHF<;mxLCNFeVo`?o>@t2U?WTEk!8h>esfU+31a(O4zeM4ePvUHj8F#7`!3vZ?@# zTor%ePWUyt(sYz*gn)ocMwHT~Zse{d1+_W?+r}crad(22{!^5;x)om69+IDL^eHO7 zb-D4!Y;31VAV)V#mY9^dl7#QUgj?}bKGR!c)sv2&P9bFypzPC}wp5m-Jj;1HUT}7ev z-gmdoW{uiAt|WZgk!fF}z&$O8zY1LZjq1ae-|7WNq{X$TPI6mOqlI0LM7+^kH9mEU z0bJpa#bMaI`S&ZxYgbLgwX0>Yjp!~)NFA_?Jjz#<|CVh#F`ZLT>>NLF9<31lF>a2w z%8}QsZ<|IsAFDd_ZsarkJHt1WeGp5-PrK0MIG>aFj&&x`YHpX_DvzcN%(jVZr3QbQutw*T#9Rm7;Urg7oC&5$XK z;i2uz7nZ92_A$vZdf9$U%4JaJdthW{_`a_Hw|rd51YO(%WvyQ!xv9g775B9NBfYeX z=4rlbjPL&E^Ru2`Go!^UkyKVaHr`mX4>(abb5^I5qEc7g-mg8CwSOu?@ZC!#%J7}u zm(Z4tB;9|w$^-JU@Bh!~hyXoCVE^>fsz&$a=#MU&NrIxP43k@uE;S0TZ1$FT$`>Wj z>N-UHHEjnj-&Gyl6IcdsEh#D9lOLC?&@p;q;{R>esRGGO$|3uy&-ztlsbGVCg+{o& zfFlf>{we0lOa9N-hK8$w(5qn8SH4X=244?t7+4}ky*H@VX{n3xS!arD(~OHS=<3_w zD=KOZ&4oV=4L$Ab?5rB1E$^2PIdjvOW9eUPhMZ5C*l z#1Fi1*DRt5w$$l*jVCL*9ZRmSiVUA}xldO=S!!(AK+Tqj280$p09X*SdgGC0AyjqIy`u5>oC_Z1E@81f6ItU z>nBzr6z>$5?a@KNX`4I|_&pF`Q0b(_kz1Ur*Rs?I|2$g5*YRWF?~<`r8h);?DA`|2 zQ5-O=a@_m%%Az9v{DOj*@o~eW*{d1KbfW#2R#vKJW*M>Z@m-k;p*SAztrBZcqd$75 zo?<~EmEF~X;_4sfWsja0nu3r<0TbSjA3v@d#_ldQnq5NECB(%iPVmTBT$Bop^5dDL zWJE;t23)BaRl&4~vZGd}285-*4euCypRKRodILkcdGPQXfi@{q6lv*j!g}q$2wWFO zX@B}8VI->a6s1^5gpm7KX4CeeTGT#BF@mcf*U5ms|H6b0;H)>L2Q;AQUM2~)KdIjG ztFA&uH^CF}&8HuvdOv^W7^`qdTc4~Mtur(vGy-G+FuOx|NKxoq}g*Xz0RXl0&@f z+DO%*ekE$=O-hDR+6d5JezeysvlTvBW*I8cP^e~{?DEK>^ZFF>0sOj=ri>G8zlWgi zZyy-bCDgGs+j%sGqb8+bPKqMk9&;G({6P;);3}d2K|*ZPps{N(MkJBs?wuj0pXQ>{ z|MxV6gFzUxG1zK!)a#|X7m=5C%Ip{{LWN4D_0FCbHvFk@a4$|U^)&!y!@`KIREV2+ zBYGhGg%GshNK;qW-U{eBMlrjxMeGZcd2Vyn5vl-#1*KCxOYX z&!7q@n0#{iTEcBT@|qo9X7}d--YOulP`eQSeBRE%D~Z>*dWeP>9F69c zir+6E*cf5s5BV=X(Cfm`%AcF;%}l~iuNL!$MU~3#4qvE$z;SjREcpMD3Gr_%{Gt9g z!|zb{?;`D=FKK$p6i|BP%Xj>IPWNp*cUlpXM4?CrhvIGJWTiDsA)d?@PZ)0Lw{L?d zQP8&qx?iL5SUhAO*p1Im+$IAd5%hrgy-NMzZP}nL`>g<8Oj4mxAjEZE!J}^-X?iZGhywk zvAdn!q5LI2mA1dFuI-QnjR7~Pe+BV2ntsz}%)J83gSG76hdzJF(KSZU==QEvL%jW! zsNDn@grlkL2L%kA2t46*u%=h3{sMw;Bg6LZad$jVf6i(ps?Ra44>~vR7X|n5>&zO~ zGC}^z?&pt=Tg`#}`7AU2v~a#h8AStT8Nkn5+Y!F|S)|!$9x`9vN@ze*QW7)U=5)if zlp|5`x!|qu{BXmC>h<<9;7}r?bz%Rv--U!qP9V z^^*uO_kBY ztNJ*%VQnPly{S^W+s$O%YsC%xU%!4WbK5XHX+qRvSz0x~rwp;ZTC5l(L6>5vf&%l% z-Y8g5uu?E>cfPz?X4VWpGS1WZ0ohKnv-kT5)lv8F1S^Q1R1e3B5?3MGiMt;bycl<0 zyLwp+j5%-E-wNy5G;y`*i2u~3J(kC4QnIi!tPID5=#2p$lz=ydcl$k@Pi+JnuXK*3 zIKO^y9VptGWVQnr@1Ai0h&YwhM<{!(5c}9D&J}tChP!-1w8Aj#@sw;ofZFa-3TKKk zJ)cGNBnL<(EmoUx2A@4j#30U3Z6ZQwAJCGcQ(L(#W9$&2@k>)wWDzZ~K* z@`_5>vX~1>$YL4_eZBnzhhkMNDIKs1fN>et@=q0Z8Tco?|mzcMk+N-~j$V|ZWRV)aHl2IJfH@_Y}1 zY{yZ5IzRfi_k$qQ_rpBz8SdQikyuz?v8Wa-YPE9{62F_xPo4!q;QLArbuHr^wQR7#(0*)c)eiUHk>bgaw4XuW`hk|GoGa-?10HfhlZ)si14e!Y z(*6BN;}hRZ_?~U_Fb5phH_jg*XXfNXu>d6p!%%Pt9{gYx_c$$(U*z{}%o;ra(hqd&9bfQyX7w^9H1Q`-|m54+B$3I9i~lg@Ps^Wqz9|{C_*hU}=blcbZ-BRbllB zOMGB)122iylMeLd@vhuL#eJ53Rt_2bRe{(uiCe;|?`iqsTknfo7f!MVS<*y*LH^9F z@Bk}hk1yPmJOGSbL;5898!#6^Xnir3b}@E4%>WbkkXH1Crp5N{LtdC58iNcu2%e)8 zEL|6jgb|`SVVr?XKqDLeI*NsMob_@$nDmQ*cRTj|w9wL9RpO!8h&?)_e}RV2st#!x zJ(3#{{|fFb%Pa~|LSV8uYczqp@z07BYK_q`P7rS5i54yRBHG$JGhbxk;0Rw+=_!dU zMF$e#blBad3PM?u9eu<@qC?L+);4Rl+~WH|K^ZU7^-5ZXdhl<~p>vgRhL|E842HZ~ zlWcXtbZ9UzrJ{O=)C1R_#yWd45hn_ezo+QO!B8$jMcyMPjKsqYiDJ{rGs+FJ8(MsJ|5!Xi#SZJPoU6PHa17z4Fx~^ABZcm9|&Z*v^N8{yc>3|_1A>kIfU`i~$5$C-nkGf9bvuJ;mqP|yos0z{f?XH> zNfbv!Y+cn~G&^#3>~M<&C$mVIxzg8q*n*l}jDHM-*wSy2yIYeycpj zr2$rJ3z`0%2C{mMYO2pWGBLPV;e%hhnf5lsKt;K$ZPEuZ&0o6u3qjB2jRULi{u4GG zMx2toHd}dja>Crd$&sB~>b}B7knnwW!ynGY9q+d#(<&e(dN&=nuEQJla8Xgr7wcL< zWi;8DH844~>ictSl8?tKIl*I`=5z&f$je9z%vFDcFT4CLHZpj2!)ZZ-Q(r(U^>5%6x`#8>qlpCN z4L1_h7w+2=feE3S*}AYlt1$4uMTw~$QoJPMKHxSR=HOaIVUXDmj3iZSLdY1aN|(i- z^m;OEK|x+jN4b8dx%_@`7ZAVdi40t`AZdA|JO&uc;^)aCc$23HiK$~m$Yn3+DpiO( zFr?e)C$hINienJIBENQK_sWOK9VGLt>V!~1aUlXWVrF0)ROJ%;-F{PvUiz>!LX2*n z0l-;#45-!F5UmD9h+uIfp@ry=(|n}w9`Rg34fDwss-;~w|=xqF!;fdWO%V#{(;9b`c3KWbwBI_OB0kL>HdUG#x*mrTql6}+^3yOe5e z?qwGP-}iZBAeI60^!YLyPkie?*bwc`y-rq=;-0RVI^Z8os6?E2b7X_bcE{^zHNFjO z8?XInBk382=;6*@aIDp}Wd{ga$-A?KJG?hU4Gw2^3q`RP)-MqLRK4@w@|pU4yv6_e zAvijaxwJU77)C8tuKS+Yh`D;C@q63$$7whZ)n&-i&M%4qEX!Ll)pJTr`}{+!?L$NN z5IQJLt92=3=DRYs{!fdI3W^UlzYEILTJn!9iU8rysOzrF&5eHh3X~gz=rgPd2zUlES=iQCyZjkgX3^E>yWI z63CIRqAvg!hieu+WQjfCF+F+DNDleRx9aq89tPh;g?QH$z-g7k&ypHW7~M$&`4({A zmsmUU>fQy#DKH<F9UUXNUWQGZ##h+U^!zqCw`{DYp zJ(YA$S^MDW(K1T|BFj`m!RH@q`+U_NS+f>JFyg1rH_{#-fKf3<iBaD4+N40U)B-9$b=Z_ayw<{Wo&RYG%-0ieux4e z{`6zICM_oZaON26qs}NSc1vbeA(KT7)bWX}>~Zduawjs?M-=Th+<`uN~;82avs76OxYo~W4>oQ8Gm6%tA! zuqgw6!V#}b9u`h#arSoExQ2+1W`-)cT7*VLX_;|~npjvMe7_~y6@4RCs?K73&Z)wn!hDj0-$@1S$>+JdAflFtnoY#Du6^m=%yT zN!f2{d!0u@cjri5628`%JmyJw>}Hao7-}62Zi|dx{AR^2rhdVhP#pJs`c#_Rv~1vl zt8FB(8{Ejm*7iP_><$vh1~iFJ(F`z& z65MmBIWd|^uAUg#*djLd_y|0?{$3z^O8yJ2)OJpy*4hnS&wA!Tjvbf958RP=M1vcJ z8!;DP+iKFEBmO?`%OSGKK4S9ikcUicxOrSM=wKRROghu~haiFIdn|xO4h~!CYz8Y^ z#O;JKGYSPiED`z>KDu;P%LI7q#-Rb=h2BVu@yPWZim?@>mz4kr^(|%rw0SG+G7$Lr z0=AqpRnGGoB4Z*@7y!Cluo8=Bi_|7~RtWJf6@-P_=KI6NzQgL-%fj z&+F@eN7$IdCZ+KTgynW;1%lS3FjqgkRCLfpmRnO@dKy%hWNv|E&o>|Gzwbx;Dx@S% zIHsj@#z<}o0Axsc8FcvB8(+vg#3?puHwJ-WP%Fnfx`{d6OS_sdX6<9|l{w9laiaAb zC-kX&FuK5!%R7{`l}HY>cq`V4(N@YktUkU%4#+)4xXjX>4j(mK`B-UvuHWZz@F#hq z>}_DZCv>)?~sj7$`)3`yfTT9C>t)hz7(nuA`&57p-hf7oGuCPoaq&fi?jo_~>XZ8{=0 zKG%&czHC^9YdtfWHz&~Wc+`;q$J_{D$2R;s;ER9$C^bd0eANHd^Ff29UCr;_A70h& zZD?z1^TT{5d+y)F$Ix`^s;abVe+Mc=L7@uCFS^C8s(PI%M}GQu4!nJ>JzHGi|vIVOWaUKn51qMTZa(RoY`U<7tDe1yRlxTDOn57W;O+s@ z=%|z?)UA>>owJB27RH8Ca#IBiVY>G*9|#CXbkJm2#kI4ohUpbDZvYhe5JW0UmkY;h zAPEvdHIcN#?Dct~U#F#+>M{jL;$24*ax_Hr6gCZ$*AEPQ4fzHzi<_0= z#(FfN>$iN5YK&7GFX#Np1S5>ML>O5z8mWUQ@cB6M%i&>O;rvEN15S0>S86u>5M27 zgyf`DNo&w9cUS6q6bQvI7n5wrc}08Rad1;vn%(seN;yj{1G24Keco%x0BUJ7hH8R| z)LMF}VYN$ATlDUaR2v`|8x8L;ZlZ$>BMe_m@^y2aG_oJoegD+4AvlRGhSet`WD*nz zRX?JBKh42fS)bcWGY|)U-1{e+Kagjhe2FB%hkC*oAqQ+!D#`LYQt)mm@qpHX?9Mst+rSCEVVHM(>hupoX+97$}BCXY~|N7L2PVL|2Q-*FHge3ZToS`XvD zOvu!GYln}J6hn%X(lSR|?$E#_K>fW35@lv5ut-RaEdgdILaA$rER+)_91+kDu?9Gr zZkNOE(jANS24X$p>rtNDV;+E-S0tK|jZT%N|L!rPElUZ(@ys{`nduicInZ(t(E0onE!gmzf^Oa;_1-o+ zn^C6e`Ni~A9qb+^348+hyVJ{eK~&p&8@L_nLncGh6$uVjUH);=-X7YrUYatSG)Q96 zqNncEm?VNn+pSVTx{cG1$S`QmbVB?xWvVp+tV;b%w4eDSnHLnyOS|)LcZDcm4{V6` zaTcqJJ^SCz0Ca+%9p)-jQ~DMKE@uUdjH{#<&Jz4i5O`BVtbJ|TzXtt7C^sV9*jMK` zamq)p&it-=4dOqdvKaX_tVOiUwVN)QCB!pNmZXowj->lN2N!BQASi2}kkh`Y{#)%& zM8*~AGG>34T!Gk5D8@%BU>E^RUFkBmDJ)j)@a7&xQP^qiu1@wqO z7N!SdgBsHvx5H}syurT2ly+N|6)g{B4MQ2P;4SY-+%so^=3oMJ_|tfRs(L{^Wodky)l!#P!7>-`5#+bVyW`aMv;7pLd8Wb%Air@FX=OlKU!PTrjUbtz%vG=*e1}^o0$-b8hq=j3=Y{J@sgHoT} zU?TV#v;J+3)fV}{dLrdn=+k`Ul8>br=><3la16paV-K!1J0~UDkLSFr&LuQhto1fy z1pH3Ai%eo|Lk~H-I=}myceVP=BOK8l&w?#_@Q5rC7nZ@`2sYm}F3L*Uv59@}7mc+H{7WTI{k_IUbeJ=6w$F%76Mq zUOswE4UmyVi1MJCtK9w&dUCkL609NtCKy0xRoYdrK1^KpkgYzd8m7AU zY#*GhDix2(TfKn_!X(n?efUaQAP>>h5fAAnJgJFm&1{+nXqdA7p|srq6LBr^rQeae z-x9_j5(;t8Y?;%>hV6Nl6DfON?xnd)w;ADKE8_tsLz#U@Udg6beL5}GaExqvH_%N%P8Mb>h;B3&<+Y2YU~9^y5+yKv0a27$dFbaY&v1VVjTv`nien{?d^^M>$aVpPaaf>oDyuW6s8XwQGJ zkVKV`G)+h-SbThCd-t|m_?Uhpi07??z$ICSkQkev3zUglz)(miy@=(_N30;h472sT z#3t?*EG*|^S@adB%!$g8{0)zbzJ~r}0s_19Ybj9sCd%?y=d`;v3SOABhL2$=_3_^t zL&sse(TH>+=I!CI0wha|<3~I%`m4Hv%jl(Lkm5trKPvjbz*CeSdP9Y1`12|(# za#DG)*QKISog-?>ATC5p1j4GtiX_>~C7OrRyd&^ydrQmvN>xh_ZVngbGtU*dOpE`- z>m0LK-P`{_<%;8r7TBlP;qYu2z+nQQr;U zD1q+4_4G|}5a}!7D>W3^PXwhXY3)8r2~+9 zYwCXpm<1w~A#|$Dx<;#EIfy(QeUzTrEVQuH5e`t}APZAv31Y}O?gGqxZ=cb4C?eQ` z_E2lvQE(3z(pOr=JdkbH%NbU2<17f4?;pn&270iA`(6!heTz2-EZ6d^$3u5d51~kZ zO*DmF>0`=WqF?>-y=XhOk8^-z4=$IZ!c2XJ2BcoU+A~)M>Y^s=nE#Q>6IhgPJ_uZc z^9_~X;#XGlMY~`>5#ZQu@of#IoFzS2bO+wGqAq4Kf$kkQ%8 z{HHu(RNKmwmbrW@WK;*C%DbN)w}S|#$v4C5ZZ2zXlQ-$v;Fcly{e!tgSXX}|)2m3v zxk1;56HV*Hh*{oeHxlzG*`*`ynUqM}_$dR&n8}CiDg9d_3Zeb6p;{~~&NF>*ywlqi z>H50UsL%k^2g5gre`13T@xUnzPkvr>SmCP+|Iv0s23TdzOkoe*fs#sve3411iAYPO z!LI9$kz@=6B{@tjvMuy(w<$Wv^}W)2V$`K0dwL))T_iM|&d5`~E0Yn0) z=zF1IZRLoIkPz}KvbLE6sw5=+qpQ@sy5sN!JhOd3(KEU+^a|Flrff~M$w=$fpH?LT zJOO^!$o56(;{@}_qs-|IImn9k<+h;yYn0;sx)ZGPs%cBr`mH-5i`5xG*mInjlfK}y z&|FxhEr7A^`F=bB{%4l*G}C>0!ynkII%#i3pIRcE4Syn>BZ(3X6RPhH)~P0po6M(C zS6>NPM3}FhPy=3kl@9)<$O^fyjdmO2{)4}S-;p+2>HCcd6_tzX#p`{Wbcqh-A?C8O zva}w0=hE4w9Pygyg`W=$Su8(0^)DRgNG?Z2N$0|5>}Wi+C!qpFNa2-NF{~Dj8w3#8 zj0}!#0>{ZL3DPoh(Jq3uf}bPgXaWdw;`Q`z7Klu)(l*fWeTn{w8})1X*7Za=>JH7A zBe5*8Vr>&dP`25^J{-ng!ez$XV%VBxgNgU1-}FdiI%hsX``g)2ArA4No-l{9@fk>K}C@SIP!_eJ{GWk8wXyZ@rXEx zhVfg8JKJ#Z`%}eDeh_d*p(>*x z4eDcYBI6I|yix%V1pX=1=S@AjxMccwpcAwc5M02Dpf9nA#th~oCMwNTQngrszv$sj z*8SPn6Vvh=NFl}%R8jL5LAtco?na}~B}=AyRRoy4?*U{5hw^Wb-@;%@YZE^@CK+xe zDmZ1WLj9l1Kiq^G7#i?0j`BOE*?C=*gtA2yrwQ=?N?1_snxO3}UA6<5LjUPcvAE9m zULmFHBP=pp-`hz$Rn)g{jHJxYek4ZE*oguZg=9T;Xl)HTeXG0nQ`9q#1w+<=7{ z(ZV;&&9|)JuXxdb{!QSwY0@rKWatAZlm+5SUZHswNT7lYGixCWHnCwyD}LigDp_M%4YW0!P4;X*Eddtmftuc(7IWv z5g1Zid4zTW%Pm-_G?EC=(dF^2Obo8keUe2%SV@Y&QipLN^oK1r<>8vI*}UBMb9 zwO`7zXVVB`*l@XoOJJq|BAsahA7-m5=txS-#~U}_o8HM5X8F#eig<$fHF00zA*Vb; zJfG}a|7n5ET~DY31~>lu6}WH0O%@Lg{WSw5+UmTN4LYtWJhifb0HVk5Xwc?&0nO77 zf@p^c!gEEs88odb_lT%$V41Kr)g*uoc?m=eLDyZ=C-X!~-VhOu*p8E+=A2zXC*kL9 z*=wCuO4{}qf6i_rOxDPvoJVA~1_)&aVM&GKfJAAWHz$YCw>wv0KOXa8)CA45(HeuF z{^2mQVNXPSX4hYpIAXfg=#-PftZyzN>tJA{n)?Cc8I{7wwLid;ItJMc5L&`^i~tnid@!Kqcj- zmM#2+_Fr#p;Z%`N8glr2!9_V$^_@}?ssygkBCG2|K}|>u6lE+IitLwink@v$1Z!{U zZdL#0Q^={odI#!gFRDB=`2m|;(|xAWVE8u8%d>csYjidhp0Ea|LkmeXIx_u#KvPZ# z2Eiv`!T$xOi#3~Mp+ElB(G`{L$w0d{VKCO-EY8){EPaL~PJZ$ve34-`cdQ6fnxb8-e#C!16rY4BdKXp`r{o zmOdMDNA~?gI$H*C?9G7;+6s7n!$Rz{!`%{#5a=?10Ny@ZAug00Z*^)xhTJC+g&dbe zLZHN5#J^_%QR~hYN_Y!+#FQF^ua~HqZOr1LOK#De#0UsJx!}TU*QVuw4Ut*H6Gds$ zGmVxhz6#v2Bj*F0Nvlte^U<_1bcNR5q)fPw-+=_9jjxr(9O;p>=p0fWnWd8uKsKO$ zKI9o?=-(3zv>a1r=%~PbE%v*m3Bx z9K2EhB!>+8Hlr6x0C|GTTV+*S%zs3cuEyHD@g|o*RuH*%cHbxD98d)%!MN>O#Ewb* zz&2))fn=6m8j7CJ{(=am1kkOaEV!(oIaXw zd;>`3NgUlvi%N9SQoNVl8zV3(=U{a2I0c)E=UX+p62o4k;ETCG;$Zq@oNRJANv#%w z?CP1-;UL&I+X`5?`>E{;EJRCpNv%D!e<=AL=F~Z59wuKtFh*&yJ$~#(Ss zsBiqcyOgv_NTZ@4Z6GNjAqWVFz|sqdARyhjhzf{+2ny1o2-4lLbcaZHcX#v78u#=3 z@xH&`ANO@%7hh-g%$YN1&YYRg=Y+h^Ra|Ko1CLTuS^|s#dci<4P(x4bN`n%A$x4`= zz0I)eh=7rrVlihrd&qEf3oEW7(~YztVr4`1>`(Y9+NekMUfAx zAC#>$fWxi7FztLjsW<0YykNlt@#d9V`&8w~#VVLVBFv!`ilx@1ebTH}(s(kTnY%J! zsKav}{YMaDR-8LjAZY6(_y}))caLzTF_f~o@g5Ei{1cSF_c|%_XE4m_kjaB|iQTo6 zA7&4(RS*#}Om`+k3AE7Oj~C%tw!{b7&L7OT1osdg!AtNe1^Ol*qm!q>$MeFYdyz+e zQpL_)m`833$}o>ZGLQ6}oGuAoEoJW22b)uSZ$0bx=4E5pYCgIbvzG9G?{WeM)(Y>- zg}9p&Q#+eoL6Vje+K#jCSa4fkdWL!@!^aoGWb*Q*r=mYnYr2{*6hE)AE$m+z&(;!j zKTe|;?wKEEVW*~SZjO`&Fo(p)gdz_@0H~Opqh68(&3X@4Ras4sdJgi21q!qkI#(-9Q-bJAM^&X~=r`7csiw#S+sP!? zIEK~u3KM6>{2i49deccJ2cvVioX|yx7Hw#IA8uJh`biiHbVW%|yPEoQPuH>Fd;DaI zxQ|#24CXpeQ3^^VgJO_x1>>Y0+}Bv|R@sJ^bScOveC8llj1xd3G z#<{|CJ*yjq{Y77KfGl3atq>UcIW<}3wxHOJD@yhWBy4m_caOgX8D)J+AUm)bgGyKq zuYXd5LT$TxP4SPr;$SGNI(%*qVcWRQSyMlG+!dVpO{q6)5okk~>q>W+LwFoE`o3r6 zT|V*Ic)9e`ai92WqSs*!-w&|^6|cp*jj#}*ExIa)&pKUHMbckj9`Bm)MBBD+Hv5X+ zzI=@kU0QN9{qFFTQAC|pc$ePEpo1!$O5puSp63s!F<7kdSFtSlih-uu=i!3qiS-1r zYwmBz7*qSUg5*pz;_N&yaQBA5R0i<}UrVu&`rqg!dO)O9sUf7*@!Z~5#o>9Uw7A)X z;-iV5G{NZ|!Y%9b$@LfMX>5No?Yn!v;htCN!$)0u%iP9{tAIM03}NYI!*frQMk2G*V6MawNEb98-Xl&Fv8_0XI3E2^jUv1T zBT78vrB;}l_{*xmis_?^XdE`9s;AksF1N@LS;UJXcX2If>}hIU=5CLN8quV|cr&Wz zDm=UWZ*9oZAg4lj)o-AEBrb8#_g?4pCY~g&)(MsPoU>2OD?vjuEY}^p%g2$A#R zW+m{UFDe>VSABJF_Rl9~(q+W`dLZTR_*Ef~vP4CU`J4x&zKA=Xz<`0_9PQ$={|uHA zR%RO0(+O`PbEr2|h%y{u5wr5ZwVl^i$U-ySofh|k@cW6b9}-8}iHIhk>Bwa~b@1D& zuN_W!rDpQ4%V>WgGN?k|zu=HmZpt*KUiQn=ofH}3?)6Q~w}2WoJJeEh)%6xl&17?a zwr2v2=fVk*z*U}RvLc({&cX#R1yTq#=woycU6PPp*a~0M2^JB2bN7nab)#)*=J#8j zpWM(=bhc|YV_$^V#D!L*=suA3C6Smqtr8uw&CKmV@jDYIrsk+9w^s#%=@;d$=jEOM zWIZ0{zF-s<; z&v)@L!1kr97E1KKwn8tDN+zjkhvakE%O52M48JUNJYj?~)R-oip^FD!(!UOQZxIdc zoYR%}ou03!;h;pXmA@!|vXoHtKj?;a7RdPt{@csC`*_E(_dJGQ^S5wt_q+%Ra4^vJ zZvDlS5U_fFq+O{)35I^?LNOkM-?@n`8sPcm;5Ozfe!~ZTa+rvUXc`jY^vNo8ys3*iHhmW9}drU9t90aK% zu3H`AW3+y76G@2g8P70IoF;gMFnNR)5YIN8$d@8c6zE}QgW;R5<9pzqZx6s%Q}1&U zjb%Y=Vvm<5PxLYk+OwwBKT-?!`8LFjY-mHR_X~qE7@bD#c-BJk0%;|pQP6(HP~Vba zaigb`dnqrv$26F zbx?_Z^Nr>w)02~sE8Ny0Z{)QLJVPlysy)>AG5Z6()F2u*gj>ls3*3PN#3n}1T z(<@xf(UJ_8hG|}Th%%-XQ7KCa*35L+R6IhaoWws8oqllea%W2%BUs@X_PRrIsR6yR zguicdVtUa5cax3UN6dI*=N$`AvrIV~&nG1^j(LgC`(jN?b=jt^*;PU|oO8-ddU>}y z;n0Rx1tMBDx@D)4D57eyaW7AG9;eoat|64^;PBW~wf$W9%M#_g_8TW`&hB?sW|n*_ zrt-u4LQ6Ih^leENCGIO_QXX{T&&%u0F+-~S%%6+8&|DWEta8P%p5UImJaCEe@T|zF z0vG-ZSpz#U{p*RuXuXAa>Rbnbv?}A{YG5nS!3Ux%i;AEC6CX^ z2gi~_QB#5)bG~mTHYKA_o_RboByAmiUL_T*Al6=YC0b`Rf%W2MA<>ji2iD<4HUdz4 z53Y@(+0MOhq$J@>h2@^solK zoxh};{e;>vO^1iioc~7W_r}jtv{(1nMFlI)NS<3++KZu%$>6iFt-U4o?aicas=DX`SfB=@mOyejXqiacmr6NFOw# zep+>ZNAU?XYCk7zPd5|UuYIfaGd8849gJnF(E=}jM7W~33|@ou@WqZo{mYm5384Mj z&vv&&ZY|!AO-E|Y>geoeBsq!Sy4_{ZUqnAQ*5ZO6q&Ixi($x9MRdLSu;E3P+P*((> zC0AJI4`A0&xEB(@gYY~zR_fNA<^q%+<{rY5zCUkFF(YaATq-Z2(@8um2y7e(ePBG7 zx#KoMa8>sttN&WYvo?};jeSfzAUwz(J$R>(Z=f5N zd$Qm=v;7mn{b+qMF?D)%&%HZljas?3H#$7d7;-OW+!e#Ff(kpDgmy6ER7F!*2|0a0fAiB=9qhiNZ8&aTt;_yE2^&eIPTI}Qxom3^5xI(P5C}1 zmQdz!zva0ct^2q;fSd&FAjcX6jz+E2V25dlLG> z5i#DxZaN2ecQ8*>(4Eg~g|A0nQXz4_bf?-^Gtz^Qg%+K?Z@BQn)GYjJ3D;)RZN-uU z=~R11@MLCG1m~*=cM$TW|B<#{q*v3*mv7b+(y7@mZS$r|04D7y4~sHf=ETs#z`aW0 zy|v-XwnT)Kwi+#ibZcFjsJAj6&bnM>M>ESmE`CV4+^%j_rpdm2^zuVp*TCSnfH}tS z+YO{<^b;_W&jt4j%8ss@UDh*!qW49uG=4J=B||qq49Eou6uqLm+IzFK|GZ>h*Rm?$ zaCw&?ZVA}D0uHoOOKW;!UwqtsL=uu@Es`QyX)*Egynq~azDcW6s0hhxJcuWgTWxIo zHR;>z)A|p@Xd@M_5}Ki@?#V|d7Xx;x z5TV@|KsTenit88B`u%E|k>XW7ZkrDt#4`&|s5zFVDT`K!%8=veY5<$J$3xxlrMM@ z>GdUp82>5KM=!TVTc)>e<-w6_$<9WTi-VVJc(ZZpOnoWS`{iNx=K^-abtIxWCcfNn z=sK;R%SW%RHwPA`xJkL_XoJls!&d7b-J2?wF@<+MV5w%jGt2%*rB$$uO%I8D6K}nVv9jG1`5YH}g^0r4 z?oKVuO;2wWXBG0*hDw|;|KZAz&n7K|-y_>PhQ+Y*w*4F$S*VW5j#%lhVCZ_HzeJS} zYp`(8c~XFMdNsuPadAjHFZrRE{4YD9>F7f!uD`NnM3!&KvXd($)t+wJLhg}Vpg9K^ ztlFcN*1z(-WdrgtUZPhYUkS;b8=UE1zUIG4+`|2@*PhQa>ag}pO@RW)mT!<1Pd`4Lqhup)SmhMc13_eP z(mM~!zx+orlz!CE)R6oW--2C6LETI`ot{{`Y_BLSVL)^7Yc2b*y@z_OUHU$MIffF> z{76m14_9;HF+j|6q_hlYSS8lEv|kaSk`xwnx0x@kLYD=d2kQ>6b@>Erj_WYizOcTjG(t<@^u5*1#vuCT#0$jN%CwhX z)&{=RuE__aDSeMUN(=rlWQiwW0oqf)gcF8n<5J8&q-QeNmzF!sC-A40Kvp&qLEXvn zhzt^><1bZJdj%)+z8Ep<%z9kQ=PMsd>eUO?Y|S4O3iESZZ970@rfIT7_4UmkWOG@9 zd-Eq9F1Pg&;{x#YsGLWEl>ihiBaFQ9n+uQ^cQO_86n3d{EF;zvo9Yv(^oZL6oV;EV zl2NcMm&b`2#O-fWA%$1??jCZY3R;y~p4#26?%yj0G=n;#U#Oeg1_w~Tn{ht)aI5&} zlS58k4)Q~fH2f>_ehvzVPsES#5}n?MSS6K zj{4=2Dc(3Vew<{xn~ACqt%=PStZS|^$%|iHIt)^{}-JI@aju~j-UP*2;k=k{Egu+ z*LI?}g@(Jkeu!3VefypxrJhpfc#^_iNWdMLk{z*n@Z#uBrEB3AJi4dv``C4feJP8W zd4waEYas#lVnd;R2+YX$AS2fQnURNJM%JI}mhB$zo{*x?d3;L5l(=dZ`>3a34vL8q zQnYj>Q_GgoC3>{lLfmi%HGiKm2M&%zHZj(eV~_^^!13LO1Pz2;6!^#Y282z=3Tu?@ zu{%@VZaDO_heMEd!Qdq2A%2>C&xPnzqVWVdlaBnR)KZ?3C*-t&=^t!7nCS=K^z>K; zOq*`r#%AgIgZLnju1lZm*ZgZdfO7OP3V;aOt*8O~RH*cjg;m(-v1sWR(Yjanv>&TX zb2dZPaue0bVYmMA)PN3tO!dqC*FpYcW=80^Ro*R{NGe>$rm?q;yEiozuEGow+$CoZ zR157EceC8i<)aT@BU2-ITP+A3FdQ& z3+_#~R6b9hAsQ3o?+?_J@74)8r}e&;Ft=C)97(`~e|@~Z$YcRoK<+zkF}gqh>=GcP zeFfjZLm8gtAm{^n2n_Cuaa~L4a@g4=`ZQ*j9#j3P`T36~Kpk|$d57#SP)EgKd3%QG zKkHVw@9m5LTtP-3Vm~cn_@pHhu1Oa=Z1@46%PYVFVjFNSVJGT-X~9h%YC4{3odU~( zt*gyHb3FHlBnYO;>`7Qlhlceze}7$)+zzPS-qwrpAiyfx-(zq2Pe|E#I3DI4h0~{} zFTemq&r!e1ETGPAx$w#5e zNz=_jUemv<5rE%yhhDhlp9+d(umlbGc)p2}Q)jzm#LdZvXF-91b@|t~X0OS)n!RmR zQu@dl$m^|d^Z(;m*7?{SYs0|{J7h`(*&VF)6mRwW|Ig$rW1xMlWYOG==h$K7y5{xN z{~bm>2RPbIMF~t$Vw*j3X3Ygx41XJLJi%Z&@7mkTh=HA(m~<3s{Uy^>(8dK0^~Ep6 z&oAj9ItZ{Co8sR5LxaVOdqo8_yYO*2!k>Z{^ckD%)$jD5C}FDLJl4$Dl*jQNJ12Qd zdFrS?bK*Uaj)tu-Tb?<0k75@q<4NP@Um7srXd=NxXechyxLw9h63tL?y5ZkGZ>xe} z_47c6My@)R4^<<#av=Y&n^*9b!w&EHITH^&?6=(0>%6eP-@b=~9)G2le>Z%NUByX; zm3g=R^9@tj18>HiUFlcgAF!uLMB*hAa{_@7PG6QXzC>!a0O~L+}{?`nX z@V~URytsxyVFGtYmecqtvD);^i8|(lG4(|iVD3^=P42_#BjR%hibUT+S$|u|JAFK zo12^85)$tBX6SP8@$o&@(_2OLGnub}ar5#4HN-})+=_WKnZvz61>)ul4JZqyZUM*RA zx-nUogQ|j?Ffi^Js_qB;{Ha1iPfu|j2XK{Sd_#*mBvfq8wnbGZ7AAa#1A91t0_tF3jum!lFMbHssi~>u7`IRj zDD%^WuEchwO9HWv{9WTjJ+um53|$vHJLte2_gZrsTVjqlS5^I* zC`r{JE$zEF5|}_uvmukr7c`hOYl@LNQa;@88E`=3lOTXu`yOR!>si5Rf7Rgp4BwqQ z(`lHay|wTLMz>Z8-Z4Z~+(D~J^fmB=>{pv{{MWBF5+|8nC*}tLnlugVOEMk4AGT>= zXzvi@=MOgn%w*s5u`99U;Jehs@0BR^An$$zJXDPt06B&|myMY0EJ=`}l2sk0_s7}S zJ0-~koxA}%lDvaM{&7>>u|Gm4EpfjMFBE@%V!{BMtglZ|xRUc~k89VnVM_D;$&Sn1 zCHF8vud=BVhZC1m*XRa8_h4f>hAgvSe9S&V$^KrP7$BU8I1J&R@#YZkq9*b6k%(lCqTqMv$(eAv{U_{BsI0AC*1Ztd(hSo zrixl9OTxOSH^1WoaGcf&l(7c~SZCaEtY^sw`0AyIFnWM3jY`mZ99CdST_sitWix zpYZ!c5iG#ZxFLukLkIc2=CuUE{Rj1&3kQE6X0X(xgOU2dXLD!|JgM4ng9-N7{o)R{J}{HdZ%e$=(=MzP-OEp03-h7 zT+m)a#qnm#W*v{G%DP1T+9i$^e6f8AlOH5~vZIE?$!GfwVvg~r8^K;W1#HPvQwr0* zSnTj-Ge;)Dmrg$fF^;Md^wE536Wv3_oTTG4;t-xY{aEifF3#)J1;5|o%1gRe!3@O5 zlXLGrUXs7FBSn`%GL5L2Zn2rYa6V&aIoBC%ru0_QCiYz)R<_t02B zyMSK8@$CFfeu9I@rB^z!o`W`!aqEYVIV3fzTeuYZT?Wb8FGGj zwJOIsFQM~SL`NNWY*iNeO- zyus6WmZ4al1x>L_l%s8QgpygQ3_zY}+GvAm1~#01;o_~pTNf|1BY0h57==q&6jRkz z#h@^T=*|t3Dm=frj<~gJ1x~8W2Eg~TDhz6dW@80UTUb{A`8i#j4azMdK_isCMaiCt z9wOG|aR?ylF)h^lz}t|T9_Gq9HY~Dw3jL|!3~4iVcDg4lULQ#$3vXtj3NY9)4kbA@ z-MCS2NEi)|k2~E?8gbdDF|r9tBEli+W@FmHs~*55)i}3!^B1qGzbC^*=5_h|MX}z2| zUqzS>8XrVgTJom6CUe4L^P1t%x3MHgHfJA;u453E_~q6N_~GQtbkKFLJ5O&iWO6ND zeCPN{!CMNLb+qYg6VFquS>LV<*CxRhX99K0_BUFnykIXqVbtsR+lJ{lW}0blX6!)p zV5xEm-JD%Sk@ck(TX|kEP9uR4az(!NUfQ5?x8X`)gDRstCWX>|Eb}%Tydtl8J+1}k z{bZI_jNat0*dQ@E$NFS&FyB08&C15crr)#X73_sIg8||^ny!Us$91oC>>js(Z(FPA z9b7|f3@$UVoG1S~P>AzJI?rb#x4o3K8Dp9L)SA1iq5-le`Rur_oKtL#Ob?$mR#}` zC} z*U#e(j~@0G3hg7_ZalyC8qUd05!VgqczIC_C6YSHjYW9l0YuQnxNvEgeNsEoamBDV z0B`xlpvOS@){iEHI-r|ZGlSDr{adZHQ2;u$Jx5)f>2JYDn0>LX;aJ*ez=-1a`H>P1kH_s-@-r zU8?MjWHFs5{>t8(Pkotg&E@)$7QEt}gI>8rHR?hGs$JbsK5P$sK~1@+?h&&@6Q z;$B+fA*X+*L9dnBd6p|nYA(Rdg1P5{y!HRs!F0}{{WqakIRYzK4wisU>(`j@JrJB` zZ7tRDQ#+mO`nb8Z;ofkOdJM@-jXAC&^BmXVwLTA_y`>W*!L=tDjr_J0ox!VBB!03I z9+;(u$pY+4-*&^G>t76}>Qh-~P`2obTIzbQ!4Egyn_^>?^!3(`F>I_dyJwp^kp}9v z%-`q2Fd~5>7HYuOIP$65PjVX{qA=$T-m(ctIo&zd$u7#Np)IW%@j5#pMcJfcTt!r> zM_xK(qLqqxITMSNAq@C$Qva|keAw_-hMfI5ae8_CBB|m5G(7$kVCZMkdO{%HiVjh5 zaapl17`pEJ3_iYu4_)N{yg5N@n|L_URVB!>_=cm_IRHK)0pcq12SC;-wpq@$=HGFZ zqetqlf+{n>+dOqS4(6!EV&CTih$wQ3aiJ2=6W2Lzi97^z1RJUT$)bjC7!D?!VX`0j z^0mdqYwqqFe6#MyLD?x6@B$UDXJuUQ+H282%_#$POzp47L9F^g$$j$T>fyxZwLBW( zd>DpP6fu7l7q$4>4Gzfp*9=G+6cNyOPmCz7GT^xe^uA?MVMOlH{$CUlEcZzf7`&>f zAJ5_%u;)zY6hYywTiE?Q=H8guy(tPm3bY43s@i!%o=5@ig*0YzUzaG12#~hhue!iZ zlFDJw*$)eBIND#Eyxn@Y3e7puEwT@L!%2$Zgbn#JdG@~+MtmD!-_MOZNedA2Zh@4K zu?z_>vZ@ZIeP3VVu}`a-)RcoFU9bwPgw(r$6(Ez6-M~{lZS8&(s5w6-(37D z(c%NaEZM0CtvKjI6}@3v_mgBgp0o;6l4Dy^Zt^f1fRQfI{D0Z06d{Ij+RvNlo8gzb z#{tq5{5YIt*zf=$6jY}{9cLi^xzfAZZMC@JfEW=_+j7kohnz@x@=*MpevlWI9ww2( zoL%LDd$f)YC#2=><4+0Z7N5BD@tb&_95M|VPiQ^%o?Emrt+}NDRG;sC42@fPENS1* z!{4mU_qNSNlO=z*#4Lj9gt{X7o2(abdaXGzwL;eu5Eum)LB>=8%ZuW-R~hDg8H?Va z?gc%y8Bd#kr{44m>$k1_O^$&nfdjQWYawAfDee_qR3@If8r7!>LYQ9;ie$g0%{v|K zt<4z;Q2a2z4$-5uA#w!L_%fZkHfOd}1T*Z@{^I1QI5BFHz~~xYGORg}j$dyxeMT6f zp~h*3-sSwnQy+X7_zmNNG=m|VWjrxFA=l7`jt)fln9=(!q*fL-t;OJADo>LI-u@%q zY;>9F>BX1$SH{n31+R18Qb)Oa-=Kru@zKcE`$jfF87$K$fSa~sg_*i-QgDnEgpRcd zAb{sg84#5CJrtjls?)o;-_t>8l{NPBow5ni*;{Cwbcq9c*F!;$YYBU#b3N91@*Msb zWH9VL*m*vP+Tvu87BNF_Snj`tb=6+2cYs&w4%5j>`C~qM*Ex$F4Rp|RhElsc#-sWK z>xOPP)DQ;neKLotj{znp`@T`zXt7+DE3r)W#VCc+Zl`rkf1!asDc@ zhMM+?riKE933g@%!=kKh=U+12StaAVQhQ~Ex~7f-xuAcPB z+qy8!#U(Zje&fUk@h1pJ*QoiQWx*L37eMA~-TR2MAljFbf&k~#ngjDVV2%5|Un)Yh z8hyhvhlTSS@`b-2guL(*7GP_=^t5>8XEA{9gMOZpJ5UqDg+?vm3+j&}FDJ{aNlq7~{zlH?(Zf#xn5; zT?+rClomSiA(*f#<3%+7^h7Uaw?fnmF23L-ig1U$(A%#uWFS54Hk`qg^|oX_Z_eF^ zf92lsW76>pXuLb#YVI~R92l+|AHF%1^mo!}$x-C1lgV7viO9D@p-H0Q&d%{|j0e0k zDFc1mp{5O%dT0FM$v)``%GO;; zf_K$*uAux~vWrb1>WWu0{MeSkzAA?Vpyirj$A^cnUpn#f91T&(h5?oOKX%-mHpgac z++0h0>}5E{C8*+Y9?M~9Fur0O!J9SL#6zg(U^(bJ4R(xkQ=a4s05gTxFlE(Z!qSe2 zg-H)z*^lbD{xFP=h~xb^_s#Y*If&-~`VrubmG^Y4OOrHnSH@BpFS0J3akKnpK zRYp}n$zw4{09hGdP_?yUr8krYrxKoO1>d z8}{0f@ds!QV2rzz!tMWcc>$Z(@qZT4`}(&iy$tr?zbc8w*MomG|}L7%4CJ48oIQ#mi6^KLX~5}f0F)hLHr#lq1)9sZuFOT}HWJKmz9`W@YhOKIu4=c|UhcFy9Q!#*{;RO?FOPP&*e%Dn zGnb>4+jc6>kN_k?9TY1g_$)(MBN z`~K-poB}C^3&$)aouqZsL!?m0Tb?8a6=rNZURKa(?%UVCtk2jsv?UsEgTN)m?@ykf z%~YTL=tJx;&9%+_8pVn&4vI*C52~Zy_jtvy!gT^7{whO8my zB9rM~|32MQV}^!*1%1Af3&+65Z`k%l&|*9DgR8_phhsKg_OO!!(K35|ZQZed#ERe# z{uG-$d|Oi!tGUpi7#Zomn!|n=sfc;fg6&K0Kx@(epU_l5Hlq-m45D*bp$~Cnr@sFF z5!4}2sgi!&PTM4qtjJ1~#_i9qGZS+D5Qm)QTsCJ2fG!Z2t3`5-|GMjB0^OY~1U%1Y z0Yi;d9}67$tDGdP-twjz`j@c-eYYBx@UOeHa-jbFKIdL@0w99PNW-s+zk0g~I=kKb zWvMe7+lFD7TkYShB8x$rkLKZ5oqlU!PUo)%*m%{z?V&CtQ~Ci%}rU_U{z`v z_t52EcfC)%q4mgSVd~fTKnZpe^Ut6DnTOUO(AmI3%Z`~GXj7(F5$^g&rObqBvY^e| zr!5i;zeNZVo__If?oNRvta>r+j8tRQy(UU~^iMy_-+{XM1vi5!f&GIS$GotW{nu&- zJ0{P;j)!enYfRg>9X$WXNbC|oqenunBvCZjHecKl=l>bjlm;^-;;A^7UW?W0sJrM2 zcmaqtpBvZ@GYtKREd zLjvXlFop0iR{fxOaqQ&1jCvaWue%e_-Edq*gt|P|6rS&l^fUa`TMAZh!k+Kiu-!Gx zKf1yGue(7oLwat3CgpFiB0O_<2h|`3vW*_(8n=9!ttR5JD6kwUc{+60a=71OFz?3z zNGL>|?2T0pm}izplF;4dbWvcc>|OXwN%c_IlV+KyspvrjF zo#4T<)1VxZ#qt+J1#jxNMaR*Ix3gcvri$dbi@$A0?YVEn`;fBFyt8%R^@nez0cm61 zyhL7*VWpjtyT^u$1AlwFLnQa0&C2svG>DnywQ!xi*Nl1G24LN!lJ_YcPpp>JG}u=`v7GdUAv7mM|H&D7anD*|>Bvg+ zn2N=v?xSF@V(*DMljLo>C~iPY!@pP3SN^av(D1?k zU5|+}-QwdzW2d{bM<9pwLEV45cc>j4n4IlGqlUi;ZZ=+}TW5>JH~emJ(Hon7kIHnP z;b=R@8m*jAB~JKmWc>|4CyI|`B_b^FIN{Luv~Mlgefp|=Ww2pQ{HWOR1eyFIaXQms zr>`F2FSoaBakkAj+L~D7bgpxa9RZ|STNFRP*A~B*>fs9t;T$E32otO$8a|qO?uNBx zMx{lG8wr(wsf#I6$?Nb}TXqBE5Gc4H#JJT^~!@ zVvqLpfvVqnxlhrJv0aQG8r>~uQ;j?9p6xBH*pVG1UQDMKwJl%L%`66_%0t5-ea%D8 zk#2b7?4U`>vn$$p(m!#m-~MDtztZJrfZmhC7c7!FsuU4MU^I5a2S#SD*wI|q&^j~3 zgIyx_iJ}{sm$_ErIRC|W_1U+wf!q$!(u0EzFTI4MQF(6&gRS5Y1#*G2xbF{7$p@I< zyFk29nYPB-Zm)-(e@)Phe z#!Vk%e1CgWGMj*fV^ebUOx@eYk%M+8OH0>ZQFj@MmntTm8e9y3pel-8hdFWjJ1a_tIzdnTK{VLg<^1&Jtpbf?0V z0UlZ;^3i~~&2N`qS8mi?L4$)j^8|F3!^10*K(J7f0muACrmF^>y+JT8EK^^}?zp$p2K+sUQ6e4JAM3g5Dc9iu6BqNv*?^o}qP4)H?9?+@WMkUpB=Rf+mExrw_3`*{%LY}09>f!LT(Q{%T*!Il)!9(V_$V8{!vwA&A9&9meJh>eo>i#xRYg*y0{*E zv#>8D_N7%Mmdd+M(FGoJ!ecioB<1IV?GPwUrJ))$HZ|EY*bG@%-+yuxY$X^zf6X>S zw;8SzG&R*++MA!DHaKI@Zh)zyE?)%oa(}+f+#sT3dOw!Q>8aMIJVcfD0IX^jkHoZ zqr#zLL9#%gk8>+YDbM4Fu-3@t{yDlGG7=9H_%|hy;Tyd1oP9zk6^z=D^Svi==|b2j z>+{C^M>sF?5L}uKM-R)Oxq^+i$S*<}h)UQf^z1#3#pY}8PgOGIcvqreL^!k-BnekK z@EQ#e(zpO`_NIS4Q=-8MPiBV}BDsZktGE@92@xrT39cd)$@2Q4#=HpOo5F%i@~SY; zFt|#m@T)t&>X;k3p?K1DqQ@}&(r&WH=v?Y?em|$Hii51TwD8qYAYPf@=2{?l z2(8Uh?WecKw;jSzF9U==cQQJ{8H|yt8kMF@MVsX(0||=Fi0;94Q2pl{J>r5o5ys*) zpmIN;YYhE{0c;XUZ!;KW!d^=DRnc$XgYm`;JQVX7uiGY*>8s*SmartaAbmuc^F)!XC~6~8!lO$>^R zSJND9bsF7@-3yy?UlX2-&v{OEXUDf=KQK8()WOpYrC!{wvNH3vM`_@JMtmme?sMUl z{s-nW4nwITa~J6bR*nYsj&flUOGJZ$g*s8&WOU}GAAc~|+mZe}U*yP|vaQbO7M7HL z{N)s>&?hs#R`NCYV}s0#3@3t;ld|45KqQ#Hz8ua3BJz%R;h8vq|Eck)mR0npJJ?yC zSFFG036oe^Q1Wv1zC-Os?SZ-ca0jI1vxsx>BoQH1=b~w)VBy}~=($XZdhuCxf$`e} z4*Wh>kcWqTm80&vxp7=jS0I|UEbNCap1~SPM*Iw*a`*Dj@m56ivq2Up9K25}U8KxU zQGD-<)yR4!g4)K-$VC>ug%TdWJcr0y%kOiG%t{?3R-Ue4$InAk(`6k_vx;eYx>t)U zZbed|Fls@LH$oi~(0K-Qs4sDTWmR-(N5e8koj3`pG0a+mnA&&?ePv_oJw2~M`XuhS zbVr&yySYk&ATd$4plHPo!GbX3HH^Di@DG%4`?FY~XSt$X`WVXTEf}xH)w07_((RNJ z2+6dL#t&=qVY|X$f!Z2b^K|moh_9u>EM|IbnTTo_Bv&(HvU6Ua;%K6yJ$Ic%%2!f} z4^x%SMi(AAv6Fp)*R0m77x)!yx}h3byH}!ZDsGe(1b7?<>fc-UCgVi4;UByVRE#@2 zo(u4Tq3*7;9(6t(I4p?`Z`VY(Wah~aSU9c92ikCN@HMCtOtUVkephrGn9FR!SN^!R z@CB*no$*0NLErS+Wil68!LgN81v=&)8QvFH z8qQ*T7i~QwMN)=5-Tk}<_g~)44b40(On)S+U@Nx$g^cnnd1k}pMX%>fc8C5Mm5OMB zBF}B_?q{NcO(2Gl%Qwl*_}IHiqF}zyfA~YmWyg_+WVpVE z`m~E-T@1v8maDemr8T+Vm`Ezy_l13rm3v+_o$MUhb*benv3#BE!Sx=8D&r0`WH$P4Z%oUWxAhsv?Md#wK zceE?b-I;e{Mb8eZEcK3J$#!STe$83*>V*mmb-m%vQ)3j)4-Z_G5{%2MJE(K??A#%m zV=C=W(m9zgn+&(uF1LMA5&i*@Hjrw$o7;kesg2;t4)Cy7)(iZ=(Xn^z7T7K5SN_W79*Gbh{ZUDLU*r3s zUc7tM_6RBz925n>;5S3x6nIThDdNcrK7vTTOFpuQU|0cnfHCS0l6LsSb_jbKxPW_i zo^Bl~_2bkgdDM(!u}raW{>x2>{TF7Qx)sWmXoo~Oaqnve!2*`?8SozXMETM3s>V9@ z6KAYBHwZtZGc{tyAxDnI3HY;8;E~5FHL;l4lzhsYAl(fl{G8VD9aW7P3VOi97T?EKR;A#0E0L7>#ml$kDQOk0Ui3M$)J@!RChhf7P1a3 zfm5D0BbU@Z?d1A(dZqrbPjFnPa}Pa=qoCbCVR!N+Zh_<8%aJRUpDy09ft_05Y9Ei{ zRE>~@^3SMMCViYw@ZiW}@4&%4eVN{T@wtPi(3t5~PI!6Re!648Xe4AxH)OGkuv~Op z-Eidd99( zEoRL8)OOkK@y(E2b02Ec507QrRcduzKPD@ z?Y{5W3MuT&Y5F>uqu}sB>E#fFUN{2IRoZ;8doyn!U$*kIHG5z2wVt{IJp|t19e?0^ z&V4i~4f^AI+=1_DB_Y5gpms%T^CQkdcl~Ibi7D`&#G633BOvxDZ&~|3NQ>#iP3O0@ zG@MeHFcaq6&K$oy@t#y}&m1*~oo*QOB8r=hqSi>B;_3fn+c~^3D`ed#`&QyjI(qtK z&C3f$g2?k`L_VM5h13~kRpN}KJxN|+5@axD)8T=;s$}s3t3^}I=o=TNsgl%gV(_6` zof^8tZygMwLqMr|Z;Gaa4Z-ixkB80=C&~Mk>8;Dsj3$0!<_3E!%Mby7h^H%#z{3Qa zCRX4@EZYk+Jjqdg^*$!Sc(6PF7nY#zot9A`-;kIYN@2 zS8f$`^He?O=h|nux6jjvy6u&_A-MLOuvY5+0b^Xk2Dm(3h70W?P9dZi8(BYe*RhWx zMvGBjIra(ZQPl9f(?#-=XZPXmB`1y#i5{<-&hs}2tnGVm97NQWRLH3KT82vRB_A>Go=V1XblHPk2| z-QD}1Up(ts&suNyaqN8@e_syXGuM6fb)MhP_cCisAs;hCKCBD*6Y4(0;r-*Py3v~S z_e1=t0Q$gnkUj)6;vT@OhPOao9Sh{Yi?W;D4`XQPjKr*%?E{HR&Et{*cc@@>%prV;%Q;A?O#;x7Q=`+ufAcb zww`mT{?UfcZ2t_bwY2wQ@Q0YjpO-u6iBOVz5QCZUThuz#w8+a{pZ~05-1@Kfv(&5G zRS#vlsnFY3ZioYA6%UYQ@piDqKlHmUb9H%=6*djX7#j~TU_qM6_;V3ryz0_MQe?s~ zA2Y~AHGDIr1H6C7UWEXwk_B#83Hepv=06MSeaCi5Ij=g#bT-sb2rlM_F4}WC@QDvb zwBFC3Xv!Wxe$ub&8)-N)n|K%Vu;V&}5w}SfuRtBr4?kDCw|A{V9Bpu62>d8_yz74vH7+ZD&0@6J(pU8C-^Jdj9xOgQ$h+TWB4j;YvDq5&^{H-B3!*L^5yTVtSw6bgV0E{I8^2-76pd-4? zq0pdZkBfZ|ExVQb3sitK_0U5aWr5p4#Vdrp@*(O*d;Qw!wPkHi;odP~Z|j|17znx{ zYZtqP1(Gu|@$fgt#46`|b{9Txe=ZB1Jy70rPUu^nA`aGaS$NU9Ya8I<|CvQIw86dM zVgEqDib8(IPJ*($SW7i%sac%XDDY~%_ww2O!7O*bx2JnH>6_RNpK^JFmF0ZxdGzkO z+H(rt%Hx5p>~9HUP)ve;K<&z3!ToQa$(5#Pi3~(h_r5!bqQ7Sn@sbfB{0C&? zuZ2gePB`o(vscuVKS5R8Z#H|r0orJr8-L{_2okQd_k_Ev06DU{(P;F9h&Hu8tWl1< ztBa|27{W@$(!AV?7!?JohzlawKf)vPK#e-EF7chSP?=%mw36D!cRTl$6@&Pw0q8P|p@`PC0XKd*D)iDr3Q`^j%vL)Dq5w z&-V2B$nj{gZew-E^HVb6LBvmB67Oa$dWPhffgowPnbZoi&nou(ORd-#y-q=GI#B z@z%T1=Dcc_3fTyCY)zlquPi#LkHKjIcMtjcn!qyGZ}=7RA5u4*#fx!#PrNh(Q_W~=r*$PW zhgE-|oH=2RoJ3TSmQ0EB*O@uVuqwu7qWt&5t@iZ-x{OF1nbR5#D%=+sJI7pL-! z){$bmXx~aY`tmW>D1@Rp^r4tzbz>b1t|cVGwZiC1`UvV~a5bUPXKBmS-A)+Y+tG#0 zn-sg2fG7M0M&!~DGi{>Xm&Ebs)+DIn&}FMuXh>t-V2%34j_lb7v82L_b{YWh{cZOc z5pqfoG}%)Ms`h$koJ>k=dAY(r6|r3(Bm{_wQib2t_rKL!Y+6S|3+gvK>l4fAU392B zO?Ti*?W)e$fjSD-twc;ov=EvPG60esL!!min}iER-tR-57+xM`pW2AgAjLM+-yXf+ z$s|1u2eeb4bf}h9MQs|U?%bL>9dMTDVt|aSW2F-qXbf5%xUwlmX@WaPo%(qFD3_%) znwGerB1vji=^4kLj|$(noiw!xof%9>{?MJ@$vyskt&HO|hvlQgkRc@8(zk_TiF9)# z=stIw=M-&L#us|v{nM^0o7?!f?lpELB22cu*MjvM)e1;X(=fUnL*}TO)EPtC+?fv< zQCYkmE_f(~g7AgEfqZ!wCy~i$&T4hp{0u=fkSt2YeBJh_%PiTE8hOpX{wwjeX(f|& z6JY(JYgPO@Ow51<$kYL}uP~DtN1B%J4@YLSPd>t+UrwDN+;Tpcy{w34g($|AvitZ! z814%g_mi9#-2 zt9vsFMWM+esaq1Ygq{%7Yx}F+f?Rn6(c8bO5r~gvW7~Dl$uwCBvmwG6ANa_thx0s| zT~8?^!*0Cu;bVSGfZ^19-?#x0=isQ_;$9$NL9;EMfoFn~dl?#8QFr`|#6oA~dHq*Q z0AUW(053Bzj^N6U7zCTOoCb29t1b8a?z|nUr$K}Jtk5mHKQs9j@BPfzdf1e{)WZNu z-SpI;lr^jXboEqH6;g3(rrBf2A~Lo1=rj<_9}Jdr)y9^OQjC(G)Q4Q}8!NHtHIVZ! zS9a?1NDIWhX>-hvA`BeSSo(*ru6|Rqeq9pOJ01xd3nzvP_9A+r_21q) zrY2T+ClcRO45 z!vbASNQwG}O%`o(W@&Nf%}b?~b}uD-A!Dc|`sT$LRULxuN3Q~{A+HTPB`##ZK7vH- zKWQ?1gb)fB@hsefTwN>R6b){9UM0ea z1^pr=<>asXG=UtCfmGaA!;np)ZcHzr|eL_(Jap73GEMY^X(nz zA?s4J~ezV(hmbCEh!Rs#wK)B1QPcMOJv_Ni)1#V6_fgD`TGG2(^8S;4w z-b*%K&6oLSCde?*QB5mBqeJf=DWG>_e!PqupGRe)v?B&azp)@yiNxVoa06Xr2#HJ~ zXLD{IgrI>{K;iZ?ay7u532_fanhi;YbT8Nd(#Y0jlX5{%*G>K8Nlp9G2cYIWp0~nf z6TXO|onx^ke}b^ZkZ(3^y5rVvp~#C=Fqnt>2O9>`Sf;Vz@}LSSGSsUvx{o$w<_zFv z_CJZl3vw=$&xVxgkW0`rajU&&t+Y`;m2pm`T$q}Wgv*qUX!>rQDBY2XgJX&kNIVG! z)2$Z9p~fW*$cDOZ3kn3Fuc$sah9U1Bf2}g=wcV&42tmt8Wv?hTE zHvr}d{E#^WLal!gJ|DNgM0hVf1!bBsQAB}ZAlh+AfG%(sz&~fcUgIUi>ga9q8kUCw z;-PDK!fOIhvgSQHRC2<48a>4KEN+BTY>bW20J-oiBrB`!+~z~;vH8^TtI$;O>+jR2 zh$>d%8W;J#K6^fu7<=~}`H8DI)b;fb(S?%=qKgWNpl>0q1b`W>L$pSmLUTrvPgPbXy# zSdJl6$&L1ll-UDbzo07Ju4T5TMKCHvwe7V01*UxQx*IAtcq+X@kdW~Y%PACSnt<7& zb0ajSdd!`Tro}^z%XV~UEcbf?NW_m)zgKCz@P2x>hix~*R2$PR2-#RiSaSe*-{W?S zis&!mU4H0>s3pw1mKhk{PIMTiSa?2cF-G`6hxXREHrG-1IWqjePz2H zF$*{zxbl3%r|tfK3D-&TkT;s64!J3Lo|=Ns@8pQso|{@GDcfE}zD|d`;ky zl6g&dENW(oxZiD1s-#(NK>z*DcO_&q0=oP(XQH;op98QZHCZVB@pqgdBo|n{u`Zp5 z#vS^~a*7McP%~PH{(#RIoo?TQ6t{Pm-kyOqx0ALKy;h~f)F(M1*TG}vO&gW3$cH%K z9fBQ4;vC`D1=m|OdTv#>4O1_eS~kg;G_BC*_zg2cRFYV@4@9elJ!p7>&_4mQ#Lo}` z2A8EFYVR0>#^+PA)IL2Yk2LYaq9EcB!9)Q=*>xiErka#=6?D%s47ztY?XK@gB*WC% zCnmOBy6f&D5Oce2NFf!k*)coOAZZDNDL9WD7*mVXTkcC~p5w8X$mKu{RYYEig9K!^ zo~C3hH|2VvoUSf`$||Ab;+c|Z$b;e;`5F41lXv%kk;Q^OHGQ2*?N#lH!|EO5Cq%&7 zEw!cY3m10fGqm`k(w{f?HLDpg-$w~C=TN7!yHH_f1>yM*VLYC-jn6b98nsPPQb;&< zc*a_2xzheKwzw}>Wl@>Np`x2&lnHRX)D@AqaQc|y=R9PJ$#V^N5Z*wVq&%gd=Qolo`A%qa8iP z<-Xcqj)_ZNEuco8Y`->)cZcMul2rWTvbRB- zit`QAn~=3@=s6CVkqz%AeA1aU12^f3DsJAb*>)JafM5!N~KKS509`IWfVzZpi zG0HV6Ip1(DYj*f<*!$;#+y{l=4qZ7-yGQTk7gio*t$T2_%kce=C^5?}IWrw9_cG%b zHD0o0M8o=@u=OypBIq<2?~{txjc10@jqSaSEc2RAlcTuK%-EjnNTW|jcNNFvNT!P* zM&9FGg;tR6S7-g~V?+2~dH1HmfwOAj!cW znYIS9=gR;Gd-OFN(;+%L5uS;RyLJe1f|az70M0n+OtUpIEb#fET|-i~5yCMc=24ys zW2O^En%ZqGOKPG9oqn7y>Pi?Hq}tYhnkdcp_LfRFirkzRf;ndV`7wMdvp0}=nD0Ik-!!h-H!ufB8u5I?nJ!(|D#a^In*{QAacHqKmrQ#4hO3z|D z2=jHA9nSQ@h=lzTIJdMw#?#T)7EwPwHG!^x*pQnAU8P2an` zNICz=5vVQkvybnHnQb@Kfy=r{+uw%e{}PUKjE3mXeN*|(rQ`~`iC~4LwtrT+-(tZK zIzTzktU%7?bw$WlAToftObrd}Y2Yi7aM`E8w^?(EH%a74=YO zZqNQU#JUFHxu;m$PtOQpI!47XL%-H^EeJgxu7T=UM-V zoCd*9R7QExZF%jV*2;JJBmY%(6~!}Ez=x5vJ0HKQ<3x>R9KV4iNP zGEk}oJcI;=%Vq*dt{1Bg^5U?ReL8iCLnjWM>S2^~rnGq&L3l1d@13Dr?*_+lP4s{^ zjr2$I=0y)!L!=ldviNxAp$ehEYPo@Qf2-*VF#3e>V$ez%Ht~++*ELT*XwVl?fF6>Y z&i^4XiKMG~VYG%4lU6&xq7Wt!uXZ*Dw&%0+U*%F9jmL_agJmT8z48lT(p!NB8XAYq1BJw2fy1eFXZ(leNX^L;;(Y0lx0{pBzMQgqF22Gio_6Ia$2_jeP43V_HFOw zT7m9BzZ4a4sBMHVSeDDx(51zc$z`O4_HI0}xtCG7o6)3qN>2v686D*D6LW0K(}l( zE=*=_yxN(8;2sspX4wCwah*Lvb#mgM>rVa#Rk_mPv<0;7QjtuYWE2Q-{k!5z?p$u! zvItf%>DmRj#d-fSOXh#k8I69Y=(2?a?-If5iFSuQ zb5AAzjZhkp_C?qCxFr^nN<5Z06oM5Lbc@Y=^eBWRup3ILtqTHCL9nLAfrvAN>&c0h zUIp}ts|s-@OV0Sh%&KQvaH2?u#pA$4w>Q&t1c~qm$yn#MaQcSgRnvzpN!ko7W1F%> z2!~@demMGln`wlaCi9O{#r z@uxrMUZo#T?S1i^D$N_(q#Wfg)Kc;m_354^>{X?<8)XtN%|LXoB)8Dxg&tYUK}mS& zb>EAQraR#X1~)M6alfz!ob`y(>)`HVXKB!qmj(% zaQl%Ehw$%cuS8k;Fe#1%0wq3Pt+q*4F>+U8DC)+~%em;dL;|aU7>=mowjkV8uh_lwf^Pi2wv#hhl zCVZAA>8l-ttX9E^Vv8O$M7|RTa}+>er!MW-97=aDXjIxqws)(m(Ehm2`?d6x&JnhV z!gn}D=|NMaGt=&%$FZieT(TZ{;B!@uZSwiSxS7BK)!<|6)F!2D_W2|Cii_$PotkFL zJf*_6J`U;;G@ zk895(bwu0=kKK+ycNEN*KUNmc?m`OZ7q7Z;3v4Teb z=)kbQWw4R&5i9POcV>qjFf`2ZRD0I+?7iJ^$gFqG3}(gal>K@briex-v0V?sYPaT2 zw@U~)jFhHRe>%h#LlV*Jr<6ywFk7+RXiwQXD!NeTbvnHNB&6yQ4`-pa*jm4Ps{wj= z?@rUvdBK8%$g9}n56K-fjq}6AJxCV5y$xV9C-ME%6TIYod~aRK*@BIe>?z_F&fZhp zpNZC#gsaOWS=C_t9Gh5b4I6s`VVx+lalOxHRb+#0o<>@nJWH>!TO3_W*{h9L6q*vm z`32vsuK4t;y0&!XU@Bzx0BaWP@^gPcL)IoeQI+q!XmY)l51>~sU&z%U3QYQF9xzoI z(Xx=ywPj`zelF`Q-(+t_USri@+hwtIBwM1e=hMyd^P@}Om1)BNCR?bD$oKh+DBz(T zqXDdHc&skK^V31OUS3Z&{?LdGlHUId3;BlUBwP)3t22R3wfXnoyYTP%_VKFZUkZNl zXiynzV7xq|1mZw@->WTX!NIAQ+V|}*NCz_pe&;Klt|)ri{~JMb%OJC?>~6~}jqdd< zVII@apP#S|K2z%kU0q5Eczv&IsY6X3zA&c2@@vs}nqt)e-Prg%_xmaEEQz)x-Q|1v zu&_&gM|9QaBJh{WHCtIH|0Y+|{)@5r54rLe@$w&X<^N@JWh7W(E#`0HhY8<#@3S>h z^x)~Q(e^b%`+v!zBs}fX;4ABuk5`m?_CEU;oiWMnNY4`8f*@9~Ob#)o-8ftv(z*ye%#jC%IaD*>HXt2^cJwCHA zyI+{d@bA~@fUr?{Ve@}L!2hp-fDf(FJAKM+N3$FkV~0&YYwv!3{>^2h<-nanVH2}0 zx0o6JF8E-|ukiDeqp44yZa8fe=D){Udwu8Wfe^CxJ9dLOkwVg%g;xBMcdzUMZHs8* zV)nzfvwfE`|F1&yEhClFiHbIOj<2}w*wGElBu?ILd!ci!1k)F?U-gHZ!LT9LaS@&^(m`buLa>|eAm^p z(=O)0cirk^_tp1?a8M3YE(IEnx$eC52>Jl5+Xk+gWH+l^?-$){j*=!7W_961WMwi=;Dz;^Zkz4 zTTK@`$`@5fcy}k{I#`h|-k>jAlUl8r$TArnr(wvT2A>pOH=DWKS{Nji(fJ*avAMpPho+ibV~>rS2x%VF%+58B?(<6Uu^s%K`qb_wq?B;nr=| zM{3>|Co^q;?To9fUZ7gAGN|cIQ#3>F|<}RbSSQWeE%?a{k;I#auyNV zS+e++qiuB4e*X|I2wZ@il%u;>LTaKhFrXjsafjWGf_`c z+2dR&#;vCWW-Tbs)+Vg3IH1(OA zl_ig_WY4E?A!Wc~xNp}`u?3*Zc?kv+6hhV&H{Q5dx zH7BqID#Sfyb!iVlxNkeo5-W5w)t58c+D^sz{l~QX2KOn)L>#<>o^6*})zM!!i;yTa z&a$?D;$PmR14X&8tq$7y4%11}R~5U=8g3++bW2_S=rhq|zP?`}5wUc;%91@5Z$fhg zs-WE*RGSJe1yggK%BGnZ@P%Vz`kZRh_lh5$Jaef1Fj?!X?|j)`){3-WzSerob*z|; zfKo1~7IJtx)TMU!K50dd1jP6A^Zl%xmus1=7k9xIZ+Tet=;CJb2e18?(3^DTqJUQL z_1PEKxNNk*l1Nh!#%vu(&L0KRhf97==6bXf2w{oMC2zM)^#kfO_A+t z(u|mEOa1txf$>rWhB^bU_-*PN^Y-Fy9~9)VW~6N_2eJif-w#?RYb;BXnN;6v4&U3g z6soWW5b4N~E`a@g0%cHy{A5-GDAt^QoYGNg_e=`2>I0gd*f!?5!jS=AlG&R;kkZcf zyoI*Yq(Wh(q>5S09=s&DM^v92*Q`+B@K##Pv2IRdRJuxw3G?%+q1u>O9O zH8OpdMV^hYH_2{o*8+|!daGnG>Y%jq_K%j`v0>CHAEE!7q9c&tj=Y^Wo5T8iX6{n_+Mt@Xq$J2lZ1Ea2JXHr78~MoS0ptE#V|vKmyU_noet zGe|e6JGiop}M~EFgf$Aq8Tgb)*E& zP5gB{IF+^ou2IzBYiF;*Hn1U5B36J#BA*(qGu*c2S~QbP(|Av`&2&uT$Q`N9a}Z^m z_Q(Cuq{Di(olKRh#Rl{8s461Iu6%mPK`CyTbd$M@4b(+%i_ca>HqL5WE;`Ip79%UB zzJ#T_67+dtl5#^=%Waaonm}4CBLatDyLRCY#XJJd0L0S)YfhcVJ3r`Ap>5YlgpZq? z$}jayReXGg^+oZQ4+}~%bkyO5wwr?aPNls{tQr*Y#P@?T>M0HG`Ks; zFd&k}-Ihs#vY=lP@d(g@D9CHD^Z+%pg~z&5dqmV?%&Xd# zABJtcKWNTpJ-`quRjB!(5Ailz5|Fzb>FDBuDm%v^rP^^0q>GT7tJJpEHOi}&qYU~n zo2F-iPgh(9oPDG8!$XwAw(uTUi*HRhzlAXC2BRUk!i`Tp9^jbxr0Y~sw#Nx$PNx48`u(u$5G#9tLg?g#-e_hb{;=S-@x@e-w9(#?xS42+2S?5|uc(=Z+J0&Qg+u#ZXSXaq{Q3isLI zsHF1JzSJEgu{U6d)8`lTymbfVc zI&Z#XncjS^PDAYu*g(eG#)Y#*46V64IW3t`<6<=*Rj-)kOx%pZT7?#Zo2ESCL&dEx zG%@K)W@W?5r}a^tV)}@$sL}JToMK`kt6eS7A9TDC+^97<&z)(~zR?BBMCgd!hd6w# z$I6yH%kFFjtjVzW-U^$TIAA{(lx>I96^&tL)ItaezAN)(s=$#{JZ&^%XbGf6ohT3! z8OD!;cjhoEY{$Q9e$0m4B>aKd!pqt(N$tMfK7GRYW(B$_2D01Gq0Bxv-*_Cj&OhRj zbGFOm!xFz%SDUI$*$1lI8IitLwylB%^fhqzeTD$U$TE$IY1x?@;5~NJ6EK`ElO!l) z!6dtJ>IY*6nd`GZaMij(zT+9gRK4J3Bl~PltTuyKLKx`&X-GRtaAO(5kI3j?_16BV zXQd<22#~$0As4QiI!7`QY4I5Fmge%k;f&Oe@vr(Q>X3ht_`%kY8wcniXLl!#o4y-EOA1U8&cJs6U*viN_gr7ZJ*P zhxy$KlW|QOV4X?Yf1)TFKU1W3uB(qG!5|HuRw?BS2S<{qpe+Yf<5dh)sc&ZT%+RW6 z1Ottk{pV7C^a@9lB0eYlZGl#{7D&r8yweqFkf7NUR0c01H2Y(#^7-K`>GdKOYj&TX z25`hmG^G?g>?J_Id9*TvJpM%)>W@|uCnbo0h*wl^L;BAXc4- z2hYI$$I)Pcq<-)hZgvAChyO(RA2uyB;0G{zC5&8B1|4@h7-Y)p07nK?t^&#nxX2__ zEKtitOOP*>xJl;q;rpPWl8Wgxo(7XB{Fw2Wa3e8coN3 ziMUL2?Krh_1I2l?KtKo1X&m*JN?B`3V3FIGd}teJAuS-lWyBRW2%TKs__I2~YIzbS z*fG-6=7#D2BOgD4w>N-aSLbOjw>I_UB@wtsDmniFYDcYmLUxY4El_c0_wt2i_$HDm zj=qH;;WIGimpR~ve66@0Fh2J36l$GWN{;2#JdHMM&dv$CGhVR)Iu9&fvM@1qyI(`P z8KXaRvgQ#Q7*#ZA5U4=lSlJIpo&+-X98d-?-X!fGsXVnO6t~|2m(#&Z5URq|YHlk$>l3xe+_4lI&UCIl*fcgno0O*O~d5Wwd z`GEjf7S*mz%(sfZB&bscK325Yuw}z>uW2Up)UI4=?zXvfWV05KFl&|t4n}GXoN*|H zMdHUMlm1I?iM5=}!hI$L1{B4SCHx*e<2B0W^jWlzXura9y&kiXazUzy3ZCQ=05?4O zZEi3>k1XxHQV+v$oQ!p7vi+sWrP35*tggZeM-#ITQ+`v|9)_*Eg$q!vrf6mb<7e#{ zwtc!I_;1ccX|6_BvodK7K45({dB;WBa|tbZ65u1_M!022ub{?nC@Q7)z(jF(5h`B4 zCkyPOQl$#-Q#it+ z0fKXEOYAm44+qmXdRjs*;!gr6GKoul7$a^WsL zqP+}Hu7GHPtP)e>^qlCn;+$ zpM{8AC-7C#c}y=1)1+DrJZf~Wf!#o@{F0%*10eb{cG4CSK^sU##=C6Q0h=@7KnWXH zugauI2=#KK|&vBq5GJuY_pR_xKe&0O`S>1*0}e^ zACzjToxRz=EDH!*3Pn5_%VSfq{*s*Mm4vqer>{6baijM1xq>rJ=lD{#1$QZh%0u#A zhHPWER=X(g8ryHz6{`UC#kZ!*)zDx?6sbU3_7`I1<8jZPx$zuZaka1MarT*AxgI~W z%zV^zP6FycJ>5UTL?{E%*t=l9KUo4&k4ot&eT0EG1EnU6r%y#WY0hfCE7Cop-GYap zhL)k(UC91HE2VOmIVdvzH=ga_8Qo8mUKVy1fC@YK@l0?6R!cw}%ybFCIU1O`SiY~Y z|M8WG6UqKg1NjxJ8Yp8c=-t8ZbUAy*P(o#;Al?Zh{2NqgUzyqh#WC~A+gWxwCc??v z18`(xG_XS1@dj1#H#xhLuej!vt8fOvreF`hYVf5S$Bw2P^HSq-X;b?)z;n&`#;og} zE7Y@!^iVi{q|7DI=}NtgjQ{66`VjT77Hq`apL<$!exi*5mdp*{p(IX)`V=A3geP)VFZJl?Tx;QrV>|E?8&rbYv|w!^+G|tua*sz`78OJ?Y@;@N!d*gPNlNlsL|p- zti?^KuoByOl=~6~_A)u-3rx9?$?zto$+vS0{)1~Yzna?VIN*-9b7W_ObQta(sm&hq zX*Xiv@xCKBi&|i==?fZEuGt;7yZI68KZWuwLQ&(nt2wEyw74j5A->rUItw@>?@ z*7)GVASsj9nS#%dV|msC_MxgAj&w;$@4y91wyP`t{O*)BicsxrwS3anQ|$NJ4xhp= zVtZvb!{_|sO@E2^trr^`q1OqwwA|=UAr+DYfN=i!O@C00O8F^Bnk<4ri97bf+A(={5Lu4jQ}Eq2babL4ZA%e8gIH(fov!&BF+ z-X#Z3_=HXHMCYgVAEWL=uK^trh&jUyl3M%CO7mipwbPGsOZ;4Wt>Pw1Uo z8m21WvBV%d!%LefOO11X_2<7e_%@5c`(ibnVh)bpVFN`HKJ0I;_L_ zt4-Z3&5@1FlF`%(d+ENy8~Zu`JnGB_y0=OB_TxZYkngB4s4H+?cFxvk6!YRK7-5zY%(IlHynaa-i@%h;_U>Ms#=< zwD<^;{pL(RB8!MbjMe&`UqCBkFBoyW9SkS z0zEsPxDuXz4F6fx{wn=VT!lf~8>+**FVs*mX-6|CFdzp}-R`p&61M}i-}~yD^T*>z ztpIoLu!%dHvC@LgSvsL(OvFl=I#HY9Ox+`1XOws5{LW4|>A?gg2_`!@8^u+hUCmWD zMUEL)iL+WpQk_C?#2cZ6Y_e|YCGq_xDrqm|smq}l>$qu`9hZDN!A#K0(hf&E8Rmp6 z2-1IOXP`Y_X<^KuAUFzhMHr%mkAXx?coF>wp+xn@q>Ni!H7)|K? z>BjdwHu=MxkFM4&yX{4AtLf!R^Us`TC!0zD9@0pG9u)Z?ms*0l9Hfz`uCl#!zjf7K zOlUyIXKE|fPuKw0<5r~RS1drfZzd+cDyAu_DPl-*Nj>fC9@`znw9=62rVzGBw<9_- zRSoc6V)0qC-*avvMiVt2=fqtfQ9}hA($NPl>Z#clJ@2fnwW`#~!RjeYIDbiZ$NP(Q zJ-E?!IGIEE0%kMd)p)!zgGJsTK&vo{ z9Mpzxam-$tO=`^k^zo*MCRCd=%wmap*~sr@Yf+sNZKo2o$NmW625Yg~XX$NzPW4c48+ma(6^h^F4hEBkB6|A z4B4uXv5vcNxFMQcp{;va7`aFKVpOGtmsExyKwPWzSe8GBgiAxM;>wivA!c!M^}XdA zK*Rpft8_!Q#oiEVhYrBu>_+H}fZc^tIME?a?QZ}3)4*0xpwMR)TCVQ0z>3lk3fGuJ)7alRfcEX`LIEX*2@fFX^aceYz)R45XbXI15`( z1IG|V?ev*6!vtsy>4R}rzIVi#A_55L8th(sw&RjGj^?}ZbFX%nI_nu(dKDp-5`mi* z;l3ljLfz-s**BoA(i-+xd947Auzc*A($02pP0Y)49m3Q~HooK1Dcj|B_kH-$YC><8 z>zY0#;|NG++*kWl9NguTcHGFqvXm2q)KcD9T5l@bKYrFDStNZ_*EgOZLW1}HG>JO3 zDFi2r?8&k_o}eJT@8rG(Z;u}T2jmJt;PtX46Z~dBNiHb%pDg(j-WT&MxPDrM2(ZJ# zxY{SqS&7|4uex`9Y_``DC{z6)=a@~rnZDksMmGf`Y$Pv6b<*}2pkQ5<` zFmQ0Kao-^U4DIwe(pwVQ0_`WOF9=S?=g3(`h4{dqY+vtc`^S9s9Nz|Z8LyhYLU5O( zlhbhfgc82ik9|o$akVehqH)ssWoN_nFS*)7WZf0Hz?qC-8pM72t3@tQ)0rviEZ9Xg3&ab)N`C#NXlYv&_4oz|Ng_T zG7C96$3o6Ce9I^X^3;J@^1wPRYK>?7@krTr7YKe`?pGY=`Ma9_XoJ<1=5xp_DFY}( z7w}vP(nuu@(yc1B;dQ&6O7XGc>~(SgxS)kd@r_x&y^sId+e_)IG=CS_8~?t&azW(p zSODAS1tHP_C-D55c-(%E9>@8U!KTkZfoVj;N#n#X^$gI*UBwwC_k_L0H;GW7Ghfw0>160G~4g3e<_mq z#U1btmnEM^Gr{lzU1a0^;yas6Ys*x&4#^pYqDL6^=$-paYhF%5;b4)?`q^Z!{GTt} z3^gbv7A71kqGFGoc=U(`jGuDP0VzIVx#}fX*tp_n=yq>W{Nt}1fG@3wqSE<30%ex9 z^l2pK9oVK8V2|umZh7`wM4lUC8nMYNiyxGNjh7?-F-}ec^PummDD1-jfRAxIM-g~9 z`C4;b3bJgH`(m+nvZHl;^E)xS6#gmaCzm_^FHd!F77_l!ln-C_1%BsxR{$*yclIl2S>tl8i?G9rB(Xlub+sunhJik$d%Mls!BjIBrmYoa47 zr0XBq(|@o3R|Y?~tG*}SaWRYB^i1pA%;0W^72gyVu9p40rYGXz7OH>$WaQ!9yMa}Y zGQ!{KL|EsJ`(y6PXIW4@s{L1;Vt|wZM|jis_|Os+uv3w!S?$Kr-(#?RlSJ5j7B)0d z9qAh-8IPm)m01mZYoov7kTCJew|yfl?UzoVR4PSt5M<`%2?v)Bsveq%m=#X))jb*dK7n0aKX-e{;+uE7TKQc(II%uf z>3Z?EPR7C%Z2ImN`M0%j)TsW#HrTJiAB9|XpJ;Hq;@=H#3c2ilGX@hPIg6V+Ez3F= zko&vX4~@WDaNS?IVnqkoYSpNR`E?SvA{SoSgAsa~NzoKgyYWqWJJ8=NWYq8^@gEc1 zYhXmg|6!BwJ#r8uRdH^kT4=wn{I>an&E@Q~sQQOPs%EZTFpm&n?qWslOa?>se|i93 zVP~=Qeb41KhzVg+?s%SHteS494JmPsK1WT=5A3^`g*tM)V5wEwyyB|)kD)f`;EOj> zPV}{Y^@9R9D7bb{^Iy#ne+Az3G;oAJP`DH|_g@45q_`3%Ajte{+QZYswBYU`UAsD=WO>cV>I7EV6T9!z5DtDp z<8f=xJS7G2swo^4E}2Ts|LZ0l33Vw#b#9dFO<>ce&Zj=!=Mye-dPXD4`qN`_OfmxO z8ZNA@eo+K^V^80fivkKeHfe}|jji8^z-wy-pbWN^AI2Mlv#3SfE>a71RIH2xH*{Fu z!S<)dRu%6Hum>-e0G=FAE=&JwSpL^=(#FrDUvhNS|DK)xG9QnG2J3_Rp$OYZ^8f8q z8vImpwb01mziJ!*-#Nf_=OByW-p&91Ddr3Ksh;+-@jna9-`~?u2)01*;2MOzOr}Q^%pl|R|FoTJb#!OoBwuIz|o^IG1>3Uh$Q}$2F%tF>)99? zMurfFt1-TeBwiCptPByi7S~l+`fH#a5XP!p-!wcg-MOXi87Qr7p@f%J0*xY8HuOq6(_TW+7U+{ zQi-zMzWrmb!c?qCWhjTKn9*o4MbJQehlrbK;KV8`jI~47^wIEO*%Vg#2#4(m$IAGy zx??9!ys4D#vQ3tv!OB`c#?&tG!jxDsYr#PC7b5?V!^Fy|ju<2LZN@Bh{e}&*zo>Z@ zsy=EK_n zwtiN>PX|-U!i}u=o~Xp)G~IKLuL{1`?7ngo*uLN#|1z#px)W>(28M37nrD;!`4OpW zlOBO@uL4NZK*(5(f-S}x&u^UDv3>jfr^mGxnnim7dCR&H-byv<^2-}{@7`q-i)XM4 zfmltR-X^<<2Szk)25>jw&q?{hg%PcYBUYut8il;%HfAs)e3ik{GxgM3tXfljAVgAv zYlK@zJRo8WHf-2H9CXz>&+zLtEyu7HM{ci_tHoH+xhKO!Vhf+ zkep*Tg-JRWRI{f=fzC8bzP{BK;#CriHnh?EdZQXc%tb3P`nhS@I`i z=n7r6X-V3tIJu-_(i4~Y5(ej5&VcX2$pRPpVfU4Z%1|PANc~2+r0h3STZ33_V5P`{ zy51^fUgOg6`iriLD4)IfX++eijC%?uAH@}!}u-eJ2r~o#r zrH}s9uaz_U*KJ*5X&$r~Zp?ZQR?UWAPBYYR!z-kYx9z`JUU#MG3}#$}mHBiL85;_Z zEs+V%q%5<=O|f|foi)nUBpf6Wn_G7?%QbBEQ(gGV#(-aYcf2t5xx(~jX(^B4M;tQEhYF#!#OOY}jxuXsr_1 zN=x=XE?7rjYnmfezX_SuhDsSFbO=Cm zX?U6dA{xkFHM{%!FGfVTv*c4_KP+7&toll3u`Wd0A??5=aZ=CvSVnqzcdYl7@DC-} z_cW;UU`odV3wbIZJn=z2PVx2EPIgIuvqE^?PRQE%KaAvW%hFCNs^D6s@$qx1&zw9R z+52-*3*ror^G1YTF>{ z^~=P|DmtcQ+zFn7gN>HlV@Q9gp4j^P@Rpir?fI8r$Bf}qPevQ4mOB4yZc9_u+EMJB zg`4l;*BW(C!TPU<*}_WJ;M+kF<>5!Lnxz>|oh{y-i@a-_G6oS1F{V7tyt}s%zW<-r z{kKcN33vmg^o=ZR`Qmfz4mwD<-?on6q~5b!rk3cmsJfR^2S*?5>8IiqRJ=^ulj4OB zaf0^7)Ksc!htD3U$MzODmzI*NY@*lUyoH!koMaOv!T9}GvavEvzdj~HvR^CZVc!|4 zJ2}N$@LKk@{KI@kWJPBt=3{a7=nmy1OzvphkOkr&x_iVn1WXv%X?9=bV;C= zgYV%NuG(OHsvmpgj@pqOnx;1SCb>}4kZc(47HhTDcUu*nT6ZPsRuJ<;}B4F)6o8p(DSxjWz2Kjf7jsE>W~Ta5+rLo!d2)?tmA-Q&nxaO2VCF0h69L{BZd zhCJgpdew~{>5n8M3rjoX@LLu5!OwXtT0#}7$U#Iv(SC}ipG#?D&=Wx2OWgB!O}A7Y zb`O;Qj#WRZ{!D15V#kK{`5UtLmK`#R>>V~W{{s2=)=N*W}fDA;2w)P5LO;{<|!D9v4~ zMC*QU!?b$IQtZ8hi$axOOUyczruKj9Rh^8BxhnwD0`a)pO~N+kOwS^{T56Yes2Q_* zK6ig$AGQ;&c*{WTf~b|NGRV&Dy;(IDvsVE(u284JRi)LEcMNTNcq~XWQxe!6oT~kl zOc$3+CmRda%fLWsRBVMczMHvK77czJg#rw443Hw6{VCJ~Oy1gS({dICqi49LO8K*v!Y~yW-C~_ou^zE%?wjVb76f^0UD#RMD5NM7K^e@3-Z+|JQxU&(wnLYU>r7SGXVeWHhX0U9`FWSXuR5&t z@Em9JCDEP%kM%A9`~6neFDw?e)Iu+h;6hM_%KCNa2I(g4jxxLuDzaI@n*gg{X@V@N zc-8Yk*IdNisBS2--rDaH8AtzmYskQDe!(6TGb634j9fyYmBt57fc64 zd$Hv&!N6)s-nVnPE9K|mn;sXOhdw0oz)N< z_DFs5@03+davyZge%!Mha%}kl-|ipM2mLz@f)FW&&GuE*kQ#o$in)_Fhs-|^AK{YT z@nWiwm)6t8S#qwTT6_JN#w7I+shJ=gSG!MweiPPR&kt$|>bLDpqaQpz(N?hUdfm@_ z)|26|8PJmnetfH4d$w&$G}Oub;F3i+Z<^Nv!SBrSm4la|j^mE0Pl3=Nt4)2m7f^=lDwYN4`Dr~H;SR(aVh z&gGJ6kLli874!k)QvMY@`S2t8syl_H!wHYZE)f_7r8$=HHEpKbFVQ`9u6cdgeV26? zPVe)ki{T^08;Mc=NGHnPqr^KT`Gp%5u{K?Y0*ZZ(R)=^)@}m8b1Lg#2WlHeMl>8Y;17 z{Ft(&@*tba*z1ou^m77Yc2jrH%H(a}=^v3|m?|emN(oeyVfy(>& z9#h(Y&Ytf1`e~`>>VVw7@~|?4fY>6)ge1jZbA`A|7}0C)uYpQs&O;X(Vlyk4=isU? z`siqJcoZj|a-XarlRPd_6B>u_oaG!HD{Zj&xOd4#@WVLtGwH^3t&?t3XhTupwTY8=x zbRhkCy5hGqQD(Q(#{BVfVgM=?w;&_MYeX4p3?r!&?Xt9BvGv#a<*TQ zt#{lZBL{ag0%O3$Qc1Eyhb5&OBb3e+4>V=ERf=u!Ymc?Pn(W@BzN})2%B)av`tuNJgM(77OJpYZJ!Ar)0vN_1jzX&|bPalbps7e`z6=CV`u z!c(t~tgzM?5Xp-pgx$qI0`ko}gAbdYSe>eFwtGXcim2|64%ECiD6(q5z(vr5NXI9VZlAcnkb($%5lg&sk6`B8P%iy}d+0rP=K;UqN+HOX z??syJY3PXK8=95BMaAHRzbkr4hCcN%RK4m0bmU*z}`$Z}P_Y9Go$@W85v&>c;kIMfSe zN)B-;ZbN<70*F)HP4Z&^n}fUY)sjmlb7{B9$U!pNWOnEOnc9J{v8o6Wf?e2x$s@ib z3fdi4Uyst*wBqy=Vr(i4b_@P^V^G-Zb^2DEKc7?YR(pjUoJV}ZnpIXHE4Bu(eTr0< zQjFtl{~%PZ6Hk#Y<&)8teB2lvg&|Y6e%A+=~s5VF0?TbaTzf$?m?a z790Ve!!au+=^wb8A5PjKl2I|g!OuMKkALG0^cH?$tMKcBqK{N$c^hvj_1RV^ zDfJFvyt6kRj1J1N%sm)pyqTZiW`>jas(({ILfRNAB@nYS1KD6+&w;R}@*OSDPd96J z#hmR(3a5^1@+Up@zt}})WZFDpS>!^6q8!LkF=>CSyHa1c)iFG6QtB%`KT2zvFkBmu z$t>IRQqX8~x6?V^apQHXl+HNjKIKy-6=b7e|>n*G^_U88R?N!39>MFBbXFizK5|%b~&Ml zd4U`!-$ERX`)oZ*t?{q8V&%T7uZZiZi$UCa8@5KY4XV8iWQ?3XdyciPWFO9liwt!q znN8smA8-#1$^x(=-G+vuDd+l>{qD+>W;jRFZA%7EvywOn&5M^^Th)5Fx!)jq!e?8R zsXpbv#pY*l*H5Jn14zebMCG$7)o8Dhu7nDL$!31-^FdF6=ykYlAf%^qTJJrACivvX zV%3)ng5a@d(X?L+NjYHNhiwi`+BZkdf=O6E5yeYvME=!4S$Cx(y>wPl7cA{q!&O~~ z>F|3dRK-tGsEuH%OS`amHJUv6(a z*K_sYFj5n{1+KMulUpyGOS=zfE@MMt-Lj8uUydp?1<|W=y&+BtB9DQS{-FAY@VTzqoZ+gQ31~=NNS02H8)F(1PY}v zdC$o$yX*Jy-rPut`*N!q{c z0RNFm$WyN_(S z!%vb##^pi&wB64EMLFp)P-?ft&-hV+%0DyUWT4<7Ha^7fZ(YKJT1~$i?@<7Rkv;LP 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

w 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 Rr&QT|9}x5%`P-k5{4d@6d(Qv> literal 0 HcmV?d00001 diff --git a/docs/proposals/nginx-extensions.md b/docs/proposals/nginx-extensions.md new file mode 100644 index 0000000000..694037c3ce --- /dev/null +++ b/docs/proposals/nginx-extensions.md @@ -0,0 +1,946 @@ + +# Extensions for NGINX Features + +- Issue: #1566 +- Status: Provisional + +## Summary + +NGINX is highly configurable and offers rich features that can benefit our users. We want to expose this native NGINX configuration to our users through Gateway API extension points -- such as Policies and Filters. This Enhancement Proposal aims to identify the set of NGINX directives and parameters we will expose first, group them according to Gateway API role(s), NGINX contexts, and use cases, and propose the type of extension point for each group. + +## Table of Contents + + +- [Extensions for NGINX Features](#extensions-for-nginx-features) + - [Summary](#summary) + - [Table of Contents](#table-of-contents) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Gateway API Extensions](#gateway-api-extensions) + - [GatewayClass Parameters Ref](#gatewayclass-parameters-ref) + - [Issues with `parametersRef`](#issues-with-parametersref) + - [Infrastructure API](#infrastructure-api) + - [TLS Options](#tls-options) + - [Filters](#filters) + - [BackendRef](#backendref) + - [Policy](#policy) + - [Direct Policy Attachment](#direct-policy-attachment) + - [Inherited Policy Attachment](#inherited-policy-attachment) + - [Hierarchy](#hierarchy) + - [Challenges of Policy Attachment](#challenges-of-policy-attachment) + - [Prioritized NGINX Features](#prioritized-nginx-features) + - [High-Priority Features](#high-priority-features) + - [Medium-Priority Features](#medium-priority-features) + - [Low-Priority Features](#low-priority-features) + - [Features with Active Gateway API Enhancement Proposals](#features-with-active-gateway-api-enhancement-proposals) + - [Grouping the Features](#grouping-the-features) + - [API](#api) + - [Gateway Settings](#gateway-settings) + - [Future Work](#future-work) + - [Alternatives](#alternatives) + - [Response Modification](#response-modification) + - [Future Work](#future-work-1) + - [Alternatives](#alternatives-1) + - [TLS Settings](#tls-settings) + - [Future Work](#future-work-2) + - [Alternatives](#alternatives-2) + - [Client Settings](#client-settings) + - [Future Work](#future-work-3) + - [Alternatives](#alternatives-3) + - [Upstream Settings](#upstream-settings) + - [Alternatives](#alternatives-4) + - [Authentication](#authentication) + - [Future Work](#future-work-4) + - [Alternatives](#alternatives-5) + - [Observability](#observability) + - [Future Work](#future-work-5) + - [Alternatives](#alternatives-6) + - [Proxy Settings](#proxy-settings) + - [Future Work](#future-work-6) + - [Alternatives](#alternatives-7) + - [Testing](#testing) + - [Security Considerations](#security-considerations) + - [Alternatives Considered](#alternatives-considered) + - [References](#references) + + +## Goals + +- Identify the set of NGINX features to deliver to users. +- Group these features to reduce the number of APIs and improve user experience. +- For each group, identify the type of Gateway API extension to use and the applicable Gateway API role(s). + +## Non-Goals + +- Design the API of every extension. This design work will be completed for each extension before implementation. +- Design an API that will allow the user to insert raw NGINX config into the NGINX config that NGINX Gateway Fabric generates (e.g. [snippets in NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-snippets/)). + +## Gateway API Extensions + +The Gateway API provides many extensions that implementations can leverage to deliver features that the general-purpose API cannot address. This section provides a summary of these extensions. + +### GatewayClass Parameters Ref + +_Role(s)_: Infrastructure Provider or Cluster Operator. For NGINX Gateway Fabric, this will be the responsibility of the Cluster Operator, as the Infrastructure Provider role only applies to cloud or PaaS providers. + +_Resource(s)_: GatewayClass + +_Status_: Completed + +_Channel_: Standard + +_Conformance Level_: Implementation-specific + +_Example(s)_: [EnvoyProxy CRD](https://gateway.envoyproxy.io/v0.6.0/user/customize-envoyproxy/) + +First-class API field on the `GatewayClass.spec`. The field refers to a resource containing the configuration parameters corresponding to the GatewayClass. The resource referenced can be a standard Kubernetes resource, a CRD, or a ConfigMap. While GatewayClasses are cluster-scoped, resources referenced by `GatewayClass.spec.parametersRef` can be namespaced-scoped or cluster-scoped. The configuration parameters contained in the referenced resource are applied to all Gateways attached to the GatewayClass. + +Example: + +```yaml +kind: GatewayClass +metadata: + name: internet +spec: + controllerName: "example.net/gateway-controller" + parametersRef: + group: example.net/v1alpha1 + kind: Config + name: internet-gateway-config +--- +apiVersion: example.net/v1alpha1 +kind: Config +metadata: + name: internet-gateway-config +spec: + ip-address-pool: internet-vips +``` + +#### Issues with `parametersRef` + +[GEP-1867](https://gateway-api.sigs.k8s.io/geps/gep-1867/) raises the following operational challenges with `parameterRefs`: + +1. _Permissions_: To make declarative changes to a Gateway, the Gateway owner (who has RBAC permissions to a specific Gateway) must have access to GatewayClass, a cluster-scoped resource. +2. _Scope_: If a change is made on a GatewayClass, _all_ Gateways are affected by that change. This will become an issue once we [support multiple Gateways](https://github.com/nginxinc/nginx-gateway-fabric/issues/1443). +3. _Dynamic Changes_: GatewayClasses are meant to be templates, so changes made to the GatewayClass are not expected to change deployed Gateways. This means the configuration is not dynamic. However, this is just a recommendation by the spec and is not required. If we propagate the changes from a GatewayClass to existing Gateways, we must clearly document this behavior. + +### Infrastructure API + +_Role(s)_: Cluster Operator, and Infrastructure Provider + +_Resource(s)_: Gateway, GatewayClass (planned) + +_Status_: Experimental + +_Channel_: Experimental + +_Conformance Level_: Core + +First-class infrastructure API on Gateway and GatewayClass. Several GEPs are related to this API: [GEP-1867](https://gateway-api.sigs.k8s.io/geps/gep-1867/), [GEP-1762](https://gateway-api.sigs.k8s.io/geps/gep-1762/), and [GEP-1651](https://gateway-api.sigs.k8s.io/geps/gep-1651/). + +Gateways represent a piece of infrastructure that often needs vendor-specific config (e.g., size or version of the infrastructure to provide). The goal of the infrastructure API is to provide a way to define both implementation-specific and standard attributes on a _specific_ Gateway. + +So far, the infrastructure API has been implemented on the Gateway, and there are only two fields: `annotations` and `labels`: + +```yaml +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: Gateway +metadata: + name: my-gateway +spec: + infrastructure: + labels: + foo: bar + annotations: + name: my-annotation +``` + +Infrastructure labels and annotations should be applied to all resources created in response to the Gateway. This only applies to _automated deployments_ (i.e., provisioner mode), implementations that automatically deploy the data plane based on a Gateway. +Other use cases for this API are Service type, Service IP, CPU memory requests, affinity rules, and Gateway routability (public, private, and cluster). + +### TLS Options + +_Role(s)_: Cluster Operator + +_Resource(s)_: Gateway + +_Status_: Completed + +_Channel_: Standard + +_Conformance Level_: Implementation-specific + +_Example(s)_: [GKE pre-shared certs](https://cloud.google.com/kubernetes-engine/docs/how-to/gatewayclass-capabilities#spec-listeners-tls-options) + +TLS options are a list of key/value pairs to enable extended TLS configuration for an implementation. This field is part of the [GatewayTLSConfig](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.GatewayTLSConfig) defined on a Gateway Listener. Currently, there are no standard keys for TLS options, but the API may define a set of standard keys in the future. + +Possible use cases: minimum TLS version and supported cipher suites. + +Example: + +```yaml +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: Gateway +metadata: + name: my-gateway +spec: + listeners: + - name: https + port: 443 + protocol: HTTPS + tls: + mode: Terminate + certificateRefs: + - kind: Secret + name: my-secret + namespace: certificate + options: + example.com/my-custom-option: custom-value +``` + +### Filters + +_Role(s)_: Application Developer + +_Resource(s)_: HTTPRoute, GRPCRoute + +_Status_: Completed + +_Channel_: Standard + +_Conformance Level_: Implementation-specific + +_Example(s)_: [Easegress Filters](https://megaease.com/blog/2023/12/05/enhancing-k8s-gateway-api-with-easegress-without-changing-a-single-line-of-code/). + +Filters define processing steps that must be completed during the request or response lifecycle. They can be applied on the `route.rule` or the `route.rule.backendRef`. If applied on the `backendRef`, the filter should be executed if and only if the request is being forwarded. + +Possible use cases: request/response modification, authentication, rate-limiting, and traffic shaping. + +Example: + +```yaml +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: custom +spec: + hostnames: + - "example.com" + rules: + - matches: + - path: + type: PathPrefix + value: / + filters: + - type: ExtensionRef + extensionRef: + group: my.group.io + kind: MyCustomFilter + name: example + backendRefs: + - name: backend + port: 80 +--- +apiVersion: example.com/v1alpha1 +kind: MyCustomFilter +metadata: + name: example +spec: + // some values here that are applied during the request/response lifecycle +``` + +### BackendRef + +_Role(s)_: Application Developer + +_Resource(s)_: xRoute + +_Status_: Completed + +_Channel_: Standard + +_Conformance Level_: Implementation-specific + +_Example(s)_: [ServiceImport GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/gatewayclass-capabilities#spec-rules-backendrefs), [ServiceImport Envoy Gateway](https://gateway.envoyproxy.io/v0.6.0/user/multicluster-service/). + +BackendRefs defines the backend(s) where matching requests should be sent. The Gateway API supports BackendRefs of type Kubernetes Service. An implementation can add support for other types of backends. This extension point should be used for forwarding traffic to network endpoints other than Kubernetes Services. + +Possible use cases: S3 bucket, lambda function, file-server. + +Example: + +```yaml +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: custom-backend +spec: + hostnames: + - "example.com" + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - group: my.group.io + kind: MyKind + name: backend + port: 80 +``` + +### Policy + +_Role(s)_: All roles + +_Resource(s)_: All resources + +_Status_: Experimental + +_Channel_: Experimental + +_Conformance Level_: Extended/Implementation-specific + +_Example(s)_: [Envoy Gateway BackendTrafficPolicy](https://gateway.envoyproxy.io/v0.6.0/api/extension_types/#backendtrafficpolicy), [GKE HealthCheckPolicy](https://cloud.google.com/kubernetes-engine/docs/how-to/configure-gateway-resources), [BackendTLSPolicy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/) + +Policies are a Kubernetes object that augments the behavior of an object in a standard way. Policies can be attached to one object ("Direct Policy Attachment") or objects in a hierarchy ("Inherited Policy Attachment"). In both cases, Policies are implemented as CRDs, and they must include a _single_ `TargetRef` struct in the `spec` to identify how and where to apply the Policy. The Policy GEP _may_ be extended to supported multiple `TargetRefs` and/or label selectors. + +Policies do not need to support attaching to all resource Kinds. Implementations can choose which resources the Policy can be attached to. + +#### Direct Policy Attachment + +A Direct Policy Attachment is a Policy that references a single object -- such as a Gateway or HTTPRoute. It is tightly bound to one instance of a particular Kind within a single Namespace or an instance of a single Kind at the cluster-scope. It affects _only_ the object specified in its TargetRef. + +A Direct Policy _may_ target a subsection of a resource using the `sectionName` field of the `targetRef`. This allows the Policy to target specific matches within nested objects, such as a Listener within a Gateway or a specific Port on a Service. + +Example of a TargetRef that targets an entire Gateway: + +```yaml +targetRef: + group: gateway.networking.k8s.io + kind: Gateway + name: my-gateway + namespace: default +``` + +Example of a TargetRef that targets the `http` listener on a Gateway: + +```yaml +targetRef: + group: gateway.networking.k8s.io + kind: Gateway + name: my-gateway + sectionName: http + namespace: default +``` + +There's also an open [GEP issue](https://github.com/kubernetes-sigs/gateway-api/issues/995) to add a name field to HTTPRouteRule and HTTPRouteMatch structs to allow users to identify different routes. Once implemented, Policies can target a specific rule or match in an HTTPRoute. + +The BackendTLSPolicy is an example of a Direct Policy Attachment: + +```yaml +apiVersion: gateway.networking.k8s.io/v1alpha2 +kind: BackendTLSPolicy +metadata: + name: backend-tls +spec: + targetRef: + group: '' # + kind: Service + name: secure-app + namespace: default + tls: + caCertRefs: + - name: backend-cert + group: '' # Empty string means core - this is a standard convention + kind: ConfigMap + hostname: secure-app.example.com +``` + +This example targets the `secure-app` Service in the `default` Namespace. The TLS configuration in the `backend-tls` Policy will be applied for all Routes that reference the `secure-app` Service. + +When to use Direct Policy Attachment: + +- The number or scope of objects that need to be modified is _limited_ or _singular_. +- No transitive information. The modifications only affect the single object that the Policy is bound to. +- The status should be reasonably easy to set in 1-2 Conditions. +- SHOULD only be used to target objects in the same Namespace as the Policy. + +Direct Policy Attachment is simple. A Policy references the resource it wants to apply to. Access is granted with RBAC; anyone who has access to the Policy in the given Namespace can attach it to any resource within that Namespace. + +The Policy defines which resource Kinds it can be attached to. + +#### Inherited Policy Attachment + +Inherited Policy Attachment is designed to allow settings to flow down a hierarchy. Inherited Policies _may_ have the following fields in their specs: + +- `defaults`: set the default value. Can be overridden by _lower_ objects. + Ex. A connection timeout default policy on a Gateway may be overridden by a connection timeout policy on an HTTPRoute. +- `overrides`: cannot be overridden by _lower_ objects. + Ex. Setting a max client timeout to some non-infinite value at the Gateway to stop HTTPRoute owners from leaking connections over time. + +When to use an Inherited Policy: + +- The settings are bound to one object but affect other objects attached to it. For example, it affects HTTPRoutes attached to a single Gateway. +- The settings need to be able to be defaulted but can be overridden on a per-object basis. +- The settings must be enforced by one persona and not modifiable or removable by a lesser-privileged persona. +- Reporting (in terms of status), if the Policy is attached, is easy, but reporting what resources the Policy is being applied to is not and will require careful design. + +Example: + +```yaml +kind: CDNCachingPolicy +metadata: + name: gw-policy +spec: + override: + cdn: + enabled: true + default: + cdn: + cachePolicy: + includeHost: true + includeProtocol: true + includeQueryString: true + targetRef: + kind: Gateway + name: example +--- +kind: CDNCachingPolicy +metadata: + name: route-policy +spec: + default: + cdn: + cachePolicy: + includeQueryString: false + targetRef: + kind: HTTPRoute + name: example +``` + +The Policy attached to the Gateway has the following effects: + +- It _requires_ cdn to be enabled for all routes connected to the Gateway. This setting can not be overridden by the CDNCachingPolicy attached to the HTTPRoute. +- It provides a default configuration for the cdn. These settings _can_ be overridden by the CDNCachingPolicy attached to the HTTPRoute. + +The policy attached to the HTTPRoute changes the value of `cdn.cachePolicy.includeQueryString`. All other default cdn configuration set on the Gateway policy remain unchanged. The effective policy on the HTTPRoute is: + +```yaml +cdn: + enabled: true + cachePolicy: + includeHost: true + includeProtocol: true + includeQueryString: false +``` + +##### Hierarchy + +The following image depicts the hierarchy of `defaults` and `overrides`: + +![hierarchy](/docs/images/hierarchy.png) + +Override values are given precedence from the top down. An override value attached to a GatewayClass will have the highest precedence overall. A lower object cannot override it. This provides users with a mechanism to enforce/require settings. + +Default values are given precedence from the bottom up. A default attached to a Backend will have the highest precedence among _default_ values. + +Inherited Policies do not need to support policy attachment to each resource shown in the hierarchy. Implementations can choose which resources the Policy can attach to. + +#### Direct or Indirect? + +| Direct | Indirect | +|-------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| Affects ONLY the object it targets | Affects more objects that the targeted object | +| Requires no extra knowledge beyond the Policy and target object | Requires knowledge of resources other than the Policy and target object to understand the state of the system | +| Does not include defaults or overrides | May include defaults and/or overrides | +| Should only support attaching to a single Kind | Can support attaching to multiple Kinds | +| May target a subsection of a resource using the `sectionName` field of the `targetRef` struct | Does not target a subsection of a resource | + + +> If a Policy can be used as an Inherited Policy, it MUST be treated as an Inherited Policy, regardless of whether a specific instance of the Policy is only affecting a single object. + +#### Challenges of Policy Attachment + +_Status and the Discoverability problem_ + +Policy Attachment adds a new persona -- Policy Admin, whose responsibilities cut across all levels of the Gateway API. The Policy Admins actions need to be discoverable by all other Gateway API personas. For example, the Application Developer needs to be able to look at their routes and know what Policy settings are applied to them. The Cluster Operator needs to be able to determine the set of objects affected by a Policy so they can diagnose and fix cluster-wide issues. Finally, the Policy Admin needs to be able to validate their Policies and understand where the Policies are applied and what the effects are. + +Ideally, implementations can write the complete resultant set of Policy available in the status of objects that the Policy affects. Unfortunately, this introduces a new set of challenges around writing status, which include status getting too large, the difficulty of building a common data representation for Policy, and the fan-out problem where updating one Policy object could trigger a waterfall of status updates for all affected objects. + +[The Metaresources and Policy Attachment GEP](https://gateway-api.sigs.k8s.io/geps/gep-713/#solution-cookbook) proposes a range of solutions that help address this problem but does not eliminate it. + +_Hard to implement_ + +Policies are complex to implement because they can affect many objects in various ways -- i.e., all objects in a Namespace or all Routes attached to a Gateway. Inherited Policies introduce more complexity through the hierarchical nature of overrides and defaults. Computing the effective set of policy for a given object can be computationally challenging. In addition, we will need to define how different Policy types interact. + +_Subject to change_ + +The Metaresources and Policy Attachment GEP is experimental. There's no guarantee that Policy Attachment will stay the same as the Gateway API receives feedback from implementors. + +## Prioritized NGINX Features + +To identify the set of NGINX directives and parameters NGINX Gateway Fabric should implement first, we considered the features that the directives and parameters delivered, using the NGINX Ingress Controller's features as a guide. Once we had a list of features, we prioritized them into four categories: high-priority, medium-priority, low-priority, and active GEPs. + +### High-Priority Features + +| Features | Requires NGINX Plus | +|--------------------------------------------------------------------------------------------------|---------------------| +| Log level and format | | +| Passive health checks | | +| Slow start. Prevent a recently recovered server from being overwhelmed on connections by restart | X | +| Active health checks | X | +| JSON Web Token (JWT) authentication | X | +| OpenID Connect (OIDC) authentication. Allow users to authenticate with single-sign-on (SSO) | X | +| Customize client settings. For example, `client_max_body_size` | | +| Upstream keepalives | | +| Client keepalives | | +| TLS settings. For example, TLS protocols and server ciphers | | +| OpenTelemetry tracing | | +| Connection timeouts | | + + +### Medium-Priority Features + +| Features | Requires NGINX Plus | +|----------------------------------------------------------------------------------------|---------------------| +| Backup server | | +| Load-balancing method | | +| Load-balancing method (least time) | X | +| Limit connections to a server | | +| Request queuing. Queue requests if servers are unavailable | X | +| Basic authentication. User/Password | | +| PROXY protocol | | +| Upstream zone size | | +| Custom response. Return a custom response for a given path | | +| External routing. Route to services outside the cluster | | +| HTTP Strict Transport Security (HSTS) | | +| API Key authentication | | +| Next upstream retries. NGINX retries by trying the _next_ server in the upstream group | | +| Proxy Buffering | | + +### Low-Priority Features + +| Features | Requires NGINX Plus | +|--------------------------------------------|---------------------| +| Pass/hide headers to/from the client | | +| Custom error pages | | +| Access control | | +| Windows Technology LAN Manager (NTLM) | X | +| Backend client certificate verification | | +| NGINX worker settings | | +| HTTP/2 client requests | | +| Set server name size | | +| JSON Web Token (JWT) content-based routing | X | +| QUIC/HTTP3 | | +| Remote authentication request | | +| Timeout for unresponsive clients | | + +### Features with Active Gateway API Enhancement Proposals + +The status field in the table describes the status of the GEP using the following terms: + +- Experimental: GEP is implemented and in the experimental channel. +- Provisional: GEP is written but has yet to be implemented. +- Open: An issue exists, but a GEP still needs to be written. + +| Functionality | Status | GEP/Issue | +|-----------------------------------------------|--------------|--------------------------------------------------------------------------| +| Per-request timeouts | Experimental | [GEP-1742](https://gateway-api.sigs.k8s.io/geps/gep-1742/) | +| Retries. This is different from NGINX retries | Open | [GEP-1731](https://github.com/kubernetes-sigs/gateway-api/issues/1731) | +| Session persistence | Provisional | [GEP-1619](https://gateway-api.sigs.k8s.io/geps/gep-1619/) | +| Rate-limiting | Open | [Issue 326](https://github.com/kubernetes-sigs/gateway-api/issues/326) | +| Cross-Origin Resource Sharing (CORS) | Open | [Issue 1767](https://github.com/kubernetes-sigs/gateway-api/issues/1767) | +| Gateway client certificate verification | Provisional | [GEP-91](https://gateway-api.sigs.k8s.io/geps/gep-91/) | +| Authentication | Open | [Issue 1494](https://github.com/kubernetes-sigs/gateway-api/issues/1494) | + +## Grouping the Features + +To reduce the number of CRDs NGINX Gateway Fabric must maintain and users have to create, we grouped the high and medium-priority features into configuration categories. + +For each group, we will begin implementation by focusing on the high-priority features of each group. Then, once the high-priority features are complete, we can move on to the medium-priority features. + +The low-priority features are out of scope for the rest of the Enhancement Proposal but may be revisited once we make progress on the higher-priority features. In addition, most features with active GEPs are not included in the groups as we want to help move the GEPs forward toward standardization instead of creating our bespoke solutions. + +When grouping the features, we considered the following factors: + +1. Use cases. Are there features that can be grouped by the use case they satisfy? For example, authentication or observability. +2. Gateway API roles. Which features are the domain of the Cluster Operator? Which features are Application Developers responsible for? +3. The NGINX contexts. Which contexts are the NGINX directives available in? For example, http, server, location, upstream, etc. + +The following picture shows the nine groups we came up with: + +![groups](/docs/images/nginx-functionality-groups.png) + +## API + +The following section proposes an extension type (Policy, Filter, etc.), extension point (GatewayClass, HTTPRoute, etc.), and Gateway API role for all the groups. The goal of this Enhancement Proposal is not to design each extension but to propose a strategy for delivering critical NGINX features to our customers. + +### Gateway Settings + +_Extension type:_ ParametersRef + +_Resource type:_ CRD + +_Role(s):_ Cluster Operator + +_Extension point:_ GatewayClass + +_NGINX Context(s):_ main, http, stream + +NGINX OSS features: + +- Error log level +- Access log settings: format and disable +- PROXY protocol +- OTel Tracing: Exporter configuration which includes endpoint, interval, batch size, and batch count. + +NGINX OSS directives: + +- [`proxy_protocol`](https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_protocol) +- [`access_log`](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log) +- [`error_log`](https://nginx.org/en/docs/ngx_core_module.html#error_log) +- [`log_format`](https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) +- [`otel_exporter`](https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter) +- [`otel_service_name`](https://nginx.org/en/docs/ngx_otel_module.html#otel_service_name) +- [`otel_span_attr`](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_attr): set global span attributes that will be merged with the span attributes set in the [Observability extension](#observability). + +NGINX Plus features: + +- External Routing: enable/disable routing to ExternalName Services and set DNS resolver addresses. + +NGINX Plus directives: + +- [`resolver`](https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) + +These features are grouped because they are all the responsibility of the Cluster Operator and should not be set or changed by Application Developers. + +All the Gateways attached to the GatewayClass will inherit these settings. This is acceptable since NGINX Gateway Fabric supports a single Gateway per GatewayClass. However, once we [support multiple Gateways](https://github.com/nginxinc/nginx-gateway-fabric/issues/1443), this could become an issue. It may force users to create multiple GatewayClasses in order to create Gateways with different settings. + +#### Future Work + +Add support for: + +- Stream access log settings: format and disable +- Worker settings: number of worker processes, connections, etc. +- Resolver settings: timeout, ipv6 on/off, cache timeout, etc. + +#### Alternatives + +- ParametersRef with ConfigMap: A ConfigMap is another resource type where a user can provide configuration options. However, unlike CRDs, ConfigMaps do not have built-in schema validation, versioning, or conversion webhooks. +- Direct Policy: A Direct Policy may also work for Gateway Settings. It can be attached to a Gateway and scoped to Cluster Operators through RBAC. It will Cluster Operators to apply settings for specific Gateways, instead of all Gateways. + +### Response Modification + +_Extension type:_ Filter + +_Resource type:_ CRD + +_Role(s):_ Application Developer + +_Extension point:_ HTTPRoute + +_NGINX Context(s):_ location + +Features: + +- Custom Responses. Return a preconfigured response. + +NGINX directives: + +- [`return`](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return) + +#### Future Work + +- We could contribute this filter to the Gateway API if it is portable among enough implementations. +- Allow attaching to GRPCRouteRule once we add support for GRPCRoutes. + +#### Alternatives + +- Pursue standardization in Gateway API through the GEP process before implementing our API. While it's possible the Gateway API would accept a GEP for this Filter, it will take a significant amount of time and is not guaranteed. After implementing it ourselves, we can always contribute this Filter back to the API. + +### TLS Settings + +_Extension type:_ TLS Options + +_Resource type:_ N/A. We will need to document supported key-values. + +_Role(s):_ Cluster Operator + +_Extension point:_ Gateway + +_NGINX Context(s):_ server + +Features: + +- TLS Settings: SSL protocols, preferred ciphers, DH parameters file +- HSTS + +NGINX Directives: + +- [ssl_protocols](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols) +- [ssl_prefer_server_ciphers](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers) +- [ssl_dhparam](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam) +- [add_header](https://nginx.org/en/docs/http/ngx_http_headers_module.html) + +These features are grouped because they are all TLS-related settings. TLS options are a good fit because they allow configuring these settings for Gateway Listeners and are restricted to the Cluster Operator role. + +#### Future Work + +- Contribute back to Gateway API by standardizing the keys. + +#### Alternatives + +- Policy: A TLS or Security Policy that attaches to Gateway listeners may also work. However, that would involve maintaining an additional CRD, whereas with TLS options, we only need to document and validate a few key-value pairs. +- ParametersRef: While ParametersRef is also scoped to the Cluster Operator, it applies to all Gateways attached to the GatewayClass. Gateways can have multiple listeners with different protocols, and the TLS settings may not apply to all listeners. In addition, Cluster Operators may want to enforce different TLS settings for different TLS listeners. + +### Client Settings + +_Extension type:_ Inherited Policy + +_Resource type:_ CRD + +_Role(s):_ Cluster Operator + +_Extension point:_ Gateway, HTTPRoute + +_NGINX context(s)_: http, server, location + +Features: + +- Client max body size +- Client keepalive + +NGINX directives: + +- [`client_max_body_size`](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size) +- [`client_body_timeout`](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout) +- [`keepalive_requests`](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests) +- [`keepalive_time`](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_time) +- [`keepalive_timeout`](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout) +- [`keepalive_disable`](https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable) + +These features are grouped because they all deal with client traffic. + +An Inherited Policy fits this group best for the following reasons: + +- A Cluster Operator may want to set defaults for client max body size or client keepalives. +- An Application Developer may want to override these defaults because of the unique attributes of their applications. +- Since these settings are available in the http, server, and location contexts, there is already inheritance involved. For example, setting the client max body size in the http context, sets the client max body size of all the servers and locations. While setting the client max body size of server `example.com` will override the size set in the http context. +- If this policy is applied to a Gateway is will affect all the Routes attached to the Gateway, which is one of the traits of an Inherited Policy. + +#### Future Work + +- Can add support for more `client_*` directives: `client_body_buffer_size`, `client_header_buffer_size`, etc. + +#### Alternatives + +- Direct Policy: A Direct Policy isn't a good fit because the NGINX directives included in this policy are available at the http, server, and location contexts. NGINX's inheritance behavior among these contexts does not suit Direct Policy attachment. A client settings policy attached to a Gateway will affect all the Routes attached to the Gateway. This violates the Direct Policy requirement that the policy should only affect the object it attaches to. If we only support attaching this policy to an HTTPRoute, we could use a Direct Policy. However, we want to allow the Cluster Operator to configure defaults for these client settings, which means we need to support attaching to Gateways as well as HTTPRoutes. + +### Upstream Settings + +_Extension type:_ Direct Policy + +_Resource type:_ CRD + +_Role(s):_ Application Developer + +_Extension point:_ Backend + +_NGINX Context(s):_ upstream, location (for active health checks) + +OSS Features: + +- Upstream zone size +- Upstream keepalives +- Load-balancing method (all except `least_time`) +- Limit connections to server +- Passive health checks +- Backup server + +OSS NGINX directives/parameters: + +- [`zone`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone) +- [`keepalive`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive) +- [`keepalive_requests`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_requests) +- [`keepalive_time`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_time) +- [`keepalive_timeout`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_timeout) +- [`ip_hash`, `least_conn`, `random`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash) +- [`max_conns`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) +- [`fail_timeout`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) +- [`max_fails`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) +- [`backup`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) + +NGINX Plus Features: + +- Request queueing +- Slow start +- Active health checks +- Load-balancing method (`least_time`) + +NGINX Plus directives/parameters: + +- [`slow_start`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) +- [`queue`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue) +- [`health_check`](https://nginx.org/en/docs/http/ngx_http_upstream_hc_module.html#health_check) +- [`least_time`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time) + +These features are grouped because they all apply to the upstream context and make sense when attached to a Backend. + +#### Alternatives + +- Split out health checks into a separate Policy: The upstream settings group is large and could be split into two Policies based on use cases. However, we want to limit the number of CRDs we maintain and reduce the overlap between CRDs. Two Policies that set similar directives and parameters in the upstream context could be complex to implement. + +### Authentication + +_Extension type:_ Filter + +_Resource type:_ CRD + +_Role(s):_ Application Developer + +_Extension point:_ HTTPRoute Rule + +_NGINX context(s):_ location + +OSS Features: + +- Basic Authentication (User/Password) +- API Key Authentication + +OSS NGINX directives: + +- [`auth_basic`](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic) +- [`auth_basic_user_file`](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic_user_file) + +NGINX Plus Features: + +- JSON Web Token (JWT) Authentication +- OIDC Authentication + +NGINX Plus directives: + +- [`auth_jwt`](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt) +- [`auth_jwt_type`](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_type) +- [`auth_jwt_key_file`](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_file) +- [`auth_jwt_key_request`](https://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html#auth_jwt_key_request) + +While there might be a strong use case for defaults and overrides for authentication, we should begin by adding an authentication Filter, instead of jumping right to an Inherited Policy. This would allow us to roll out an authentication solution quickly to support the core use case for Application Developers. The use case for Cluster Operators applying authentication Policies is less well-known than the Application Developer's use case. Instead of leading with the Cluster Operator use case, we can begin with a Filter and wait for user feedback. Later, we can add a Policy and define how the Filter and Policy interact. + +In addition, since a Filter is referenced from a routing rule, it makes it clear to the Application Developer that authentication is applied to the route, whereas due to the discoverability issues around Policies, it wouldn't be clear to the Application Developer that authentication exists for their routes. Furthermore, if the referenced Filter does not exist, NGINX will return a 502 and the protected path will not be exposed. This isn't the case for a Policy, since a missing Policy would have no effect on routes and the protected path will be exposed to all users. + +#### Future Work + +- Add support for remote authentication or other authentication strategies. +- Consider interoperability between authentication and rate limiting, so that we can rate limit on per-user basis. + +#### Alternatives + +- Inherited Policy that attaches to Gateways and HTTPRoutes. Implementing authentication with an Inherited Policy will allow Cluster Operators to apply global authentication policies for applications and Application Developers to override that policy on a per-route basis. This would be more convenient for applications that use one authentication method for all of their routes. However, it may not be straightforward to apply the inheritance concepts (overrides/defaults) to some authentication methods. For example, JWT authentication may contain multiple fields: secret, realm, and token. These fields are interdependent and should not be overridden separately, but that may be difficult to enforce under the current Inheritance Policy guidelines. +- Wait for Gateway API GEP on authentication: There is an open [GEP issue](https://github.com/kubernetes-sigs/gateway-api/issues/1494) for authentication in the Gateway API repository. Instead of rolling out our own authentication solution, we could wait or even champion this GEP. The advantages of waiting are that if the GEP is implemented, we won't have to deprecate our bespoke authentication Policy in favor of the GEP's implementation, and we won't have to maintain an additional Policy. However, we don't know how long it will take the GEP to move from open to implementable. Authentication is a critical feature, and it may not be prudent to wait. + +### Observability + +_Extension type:_ Direct Policy + +_Resource type:_ CRD + +_Role(s):_ Application Developer + +_Extension point:_ HTTPRoute, HTTPRoute rule + +_NGINX context(s):_ http, server, location + +Features: + +- OTel Tracing: enable tracing, set sampler rate, span name, attributes, and context. + +NGINX directives: + +- [`otel_trace`](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace): enable tracing and set sampler rate +- [`otel_trace_context`](https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context): export, inject, propagate, ignore. +- [`otel_span_name`](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_name) +- [`otel_span_attr`](https://nginx.org/en/docs/ngx_otel_module.html#otel_span_attr) + +Tracing will be disabled by default. The Application Developer will be able to use this Policy to enable and configure tracing for their routes. This Policy will only be applied if the OTel endpoint as been set by the Cluster Operator on the [Gateway Settings](#gateway-settings). We will also need to document that the collector architecture we support, where there is a single collector (receiver) but there can be many exporters and processors. + +#### Future Work + +Add support for: + +- OTel logging +- Metrics +- Allow attaching to Namespaces. With the current approach, every HTTPRoute will need its own Observability Policy. In other words, there is no way for multiple HTTPRoutes to share the same Observability Policy. If we allow attaching to Namespaces, all HTTPRoutes in a Namespace can share an Observability Policy. + +#### Alternatives + +- Combine with OTel settings in Gateway Settings for one OTel Policy: Rather than splitting tracing across two Policies, we could create a single tracing Policy. The issue with this approach is that some tracing settings -- such as exporter endpoint -- should be restricted to Cluster Operators, while settings like attributes should be available to Application Developers. If we combine these settings, RBAC will not be sufficient to restrict access across the settings. We will have to disallow certain fields based on the resource the Policy is attached to. This is a bad user experience. +- Inherited Policy: An Inherited Policy would be useful if there is a use case for the Cluster Operator enforcing or defaulting the OTel tracing settings included in this policy. + +### Proxy Settings + +_Extension type:_ Inherited Policy + +_Resource type:_ CRD + +_Role(s):_ Cluster Operator, Application Developer + +_Extension point:_ Gateway, HTTPRoute + +_NGINX context(s):_ http, server, location + +Features: + +- Proxy buffering +- Connection timeouts +- Next upstream retries + +NGINX directives: + +- [`proxy_connect_timeout`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout) +- [`proxy_read_timeout`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout) +- [`proxy_send_timeout`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout) +- [`proxy_next_upstream`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream) +- [`proxy_next_upstream_timeout`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout) +- [`proxy_next_upstream_retries`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries) +- [`proxy_buffering`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering) + +An Inherited Policy fits this group best for the following reasons (same reasons as [Client Settings](#client-settings): + +- A Cluster Operator may want to set defaults for proxy settings. +- An Application Developer may want to override these defaults because of the unique attributes of their application. +- Since these settings are available in the http, server, and location contexts, there is already inheritance involved. For example, setting the proxy connect timeout in the http context, sets the proxy connect timeout of all the servers and locations. While setting the proxy connect timeout of server `example.com` will override the size set in the http context. +- If this policy is applied to a Gateway is will affect all the Routes attached to the Gateway, which is one of the traits of an Inherited Policy. + +#### Future Work + +- Add other `proxy_*` directives + +#### Alternatives + +- Direct Policy: If there's no strong use case for the Cluster Operator setting sane defaults for these settings, then we can use a Direct Policy. The Direct Policy could attach to an HTTPRoute or HTTPRoute Rule, and the NGINX contexts would be server and location. + +## Testing + +Each extension will be tested with a combination of unit and system tests. The details of the tests are out of scope for this Enhancement Proposal. + +## Security Considerations + +At a minimum, all extension points will need validation to prevent malicious or invalid NGINX configuration. In addition, each extension will have unique security considerations based on its behavior and design. The details of validation and other security concerns are out of scope for this Enhancement Proposal and will be provided in future Enhancement Proposals on a per-extension basis. + +## Alternatives Considered + +- Data Plane CRD or ConfigMap: Rather than adding nine different extensions APIs, we could add a single data plane CRD or ConfigMap that contains all the NGINX features described in this proposal. This would allow us to quickly expose NGINX functionality to the user and simplify our API. However, this object would become large and unfocused, a laundry list of NGINX directives and parameters. Additionally, with a single resource, there's no way to restrict access to certain fields with RBAC, which doesn't fit well with the role-based nature of the Gateway API. +- Add support for NGINX configuration injection: Adding nine extension APIs will take time. If we first add support for the injection of any NGINX configuration (see NGINX Ingress Controller [snippets](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-snippets/) and [templates](https://docs.nginx.com/nginx-ingress-controller/configuration/global-configuration/custom-templates/) for examples), then we would immediately support all the NGINX functionality included in this proposal. However, this feature comes with a couple of problems: + + 1. Security. The configuration cannot be validated before it is applied. This means that invalid or even malicious configuration can be injected. As a result, not every Cluster Operator would want this functionality turned on. So, for some users, this functionality would not be available. + 2. Requires NGINX knowledge. Without a first-class API exposing and abstracting away NGINX configuration, the users must be knowledgeable about NGINX. This will be great for NGINX power users but much more complicated for those unfamiliar with NGINX. + 3. Lack of status. No helpful status is set, and users must parse NGINX error messages—potential for frustration and bad user experiences. + + Problems aside, this feature will still be useful for our users and is something we should implement. Still, it does not eliminate the need for the extension APIs proposed in this document and should not be a higher priority. + +## References + +- [Policy and Metaresources GEP](https://gateway-api.sigs.k8s.io/geps/gep-713/) +- [Gateway API Extension Points](https://gateway-api.sigs.k8s.io/concepts/api-overview/?h=extension#extension-points) +- [TLS Extensions](https://gateway-api.sigs.k8s.io/guides/tls/?h=extensions#extensions)