From 68fef60933b95674de42f658e6a438520395a4f2 Mon Sep 17 00:00:00 2001 From: WayneGoosen <13494899+WayneGoosen@users.noreply.github.com> Date: Sun, 14 Jul 2024 15:32:14 +0200 Subject: [PATCH] feat: complete part 3 --- src/assets/images/website.png | Bin 0 -> 68802 bytes ...it-deployment-guide-part-3-azure-infra.mdx | 50 +++++++++++------- src/data/categories.ts | 2 +- 3 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 src/assets/images/website.png diff --git a/src/assets/images/website.png b/src/assets/images/website.png new file mode 100644 index 0000000000000000000000000000000000000000..cb375634bff2e91507bec254f7bb7df046269301 GIT binary patch literal 68802 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

k%;9hb41n_^p0nRr8Hb44jST&aUQ3q z3V+tHRG>Qyeqf_K2@<;6hhC$T82dk#zdZ7)Et@$}7K746PohnUC$ZUJMdjvbHPA0Lqr&YyrimwoOG3^|@RcF?pO*3{mg4!`!^k7PvZ zV{bdGpMy-7b2mgbJuB!J+?$r`40MSVyhH@E!EdxajQO7Kg`Nawv)(UO+Jvlan<^*o zK*y?9e(2^x7$2$1^%`QMmNjCayy3PVA35Fj%HNa0vdW5juwKn0FI#aS@B%0_v^pKLyhrwK_2<(C@dU_#2(>^aqk;*vB6J0InX@=W;$ zRoIYas#efRm_=-Pr!=1AcZVtvN}8>Z<{wd6@1i_K_J7-j7l~!hRb;B#j82jn;4ND)+EHHrsm9u>Pn+(Hw0wAi?PUhmqNG3IJ4OVZvOQu<^B^-CM8y6UO0e zPY5{yyLj__rK6F+>9N$PM-Pz{vJ3-8j;T!8LZb-^#WMnSs^`eV>-|s?ZjA4qVHh7m zgI4A%`)~RpCg6~1=8#eHl~}J%Sqei!0Q^{?@VS1s8NOtfF-!DRRkE`|O)UCOQ-0S! z`VUQ}8z7hYstJC=mkU!671~gY?NWiCI&jcl?lYu4Us76V7)|aM)20U87xR&(rtW$q z#$%Yt-6`2`lp?eYA1{IBP2Sqp*XEI`@2EvFYlwADq7t%Ar}H5giWyr<^zdeXW#0B) zNqLQgsjX|W`}DSKXzXp8(mZX_-@bJ!B(!bE7Makzj@{Uvz>rwPOmetVZ%VHT6IiF6 z(V4WnuR8rUQ?WvJjB_@bXB@3On#n$A9XF|9b5PC3%d==+ZtRrnjH#Y9*Y6{*5vnlW zXlh!haQBcC!$-ji#nq)EeRnRMv-%dLC$o_Ims&id&!c<|iL}!WVt5=M{f?~XPi(Y5 z#W@A&QaB`k`m~sr_x-{)7BYeUVPn~6&mKa>Y8?m+&W%npGV|-OC5ZE8JxChxqa8N| z8Fk`4uZ%X|#zkhjTJ-1lwwOL!-d64Z;0bN>>?I%xINjMg{rPTOy2w^84tATRn|kD# zp&EGmEx9g=Fi|tf{1T5(yRz+5$q+JstnQ1r)_2TX8{?^l8K6X?NoiiJn$Mr5WFFim z_o-i~3`!L(uUEC@f%UqJOm3u(QxKe~i~}!&Wj;J%L%!>bHw#bxiG;6BasPK9DxUfG z5ZzaN0?tlknAyam1@G7@AieB=gdkuHeXuj|t!cr3=6r2(+9?&6iS8o>d_Ih`*0g|$ zwZ4HMVPayE(1{$p$9XMyFr8%g4OUA(H@mS-lwi9HYyYeBja5!7lw-YAW6c6jV3`-z zBP!LAjpZy0Bu4TvLI#VrM_{qv8GNCGc&!`taQm~paUNhA7sJ~DlWY>4%!B;_e+VdS*biz2Yc4UkccZahXnt z@b&XbM@L*UID^HOZZ&bG1x=gy>}SicXBy(YD@8owG&I0b^~$;Krs2K_z^Nj-a^3nw zZTR?$Ir0~2hR^f@olc6<%6}*^FE>wbIlmLdPqao!O?2O%(B!R@+vo>q4Mpds${AY3 zobMRX36#6i%ZH(g_%x(N$Bm`l8D`Qdw{<9Bv6iPwkZZ{~&nY$E!A|YlpyNF0dXl`h z6?Xq)&CdH{X1p6Lyv*}J%mS%u_Kg1pZ)FwX^KZ}%MW(Z1-I!a|8QGAj|3 zfJA&{Q3K$!=8%s*he%+5YE7&*pNlBMX{*QiH~FIaZ_JC5Q^PF^s%fQZR=Zj2w~p79 z#pYyAMhb}#jk9P{S=dh@Y&5B2r#f{nJOZkRtYx8XZYUpaowReRhsT6&EyB#juonRh z2X3pxaG8pgu>ngQFRF9TdeUDRBJ^67T1vL=Zf!khxOJq2ROvWlQiVh_PFPCuvV>@ zN}qJuF_*@7wu@}xu#(ueW*~|JKS_FKOdOFd*~6;}5)?-dvX)u=Lz&bN&l?upi@R2G z(pO+ff=&-Nitu0L@~W!DV|q1Efu`rK(0lGTV**E#89X~2K{3c;T6(nM0p4X_D3Ncf z7ir@}a9Lgq0Z!KFB}~viQcFhnjBD)4-<57XvS5qcH^Ll996NcMD}Y=QFixQn#kn3g z{7HrPm3#Be;X+mHZNE!`G`VT7Ehg0CU|~nIFl$CnRht3MMB;PHYhL2Ku9dCL(JT&P z!*f7@#M_&C&GN`%x072LgIu)81%x0)OG3^%n-mTJlpEIDIfq5W*DZ;U{tcJoqolW~ zWPO=-o7~uZxiqp}Is=lROhP`N>Vn6M)I#i$WaW-b7M3BFqOX$mrByuLDX8hxGN^3o z+r~#ERsDhd37r@bXasp1Ps&j)=ImK*r>V^9$x6$Al>6aUY5>W6M--BVT-ras!1>FR zk`;ijQ0#}L89mJUe#U0fveo>6D2!-4aU62BJP86m3nJsO?UWjJ>R$`k4Vtfu3ChF$1>B97n6r*&_S5?p&cP>-xQwn zRLWjzMnHxCorhp`4iUjTHP%>*XWX*K6vsp6ZEs7CyFUZn*QuI~q8fePJV8&p5}{?* zl4JCSF1o4Heb=OuQ5c z2`PV$^|#+cR{s}G!mol@Ka4i??o>QQZbg_#5O<}D&&Xg>7JiIBhc)OiW<3IxP^SIn z0x}AHu=I)(T&qeS%@lOE(VpK2xpt2&B?0Zhvo>ky{03Z*T>nS&5v!{u*NC4RI}|4` zKehOqn;jby!gd07C2-N62z-3#8Oxe_TR-Y_J4b@dF*nVt4!AzA9XHiH$Xi8ueX*g) z57MqWi_HC2R+gx(Cvw~CXw}hndD_tNBqSQ@zq*m0YXpGJ*XGTeFcYv-H$xA?)e_;m z4{!&cu*L4@`733|L9Uz9J|F>L)so4beTWGT`=ZD2)0!n981aGZG>0GH zmdZ7QuIFfM6qCbHyE($mRvqB)voINno`UViT_o+`ZC`(X-lL|&2gp!Q-XTiX*hoyu zqD8VtSNzt6i0;+vbikp#>NV)ZgBR@H^_V)}S5q^6qt2R?dAiYj^4(@stDZ!iw!lTB zh*jT^&73Ude`bn1+Dh6o4+)hvEN`ptyZtUOkk_^v(V=;j4CIlOZ*l<9oAX=ecHiZ> zIlMdJGU=|o?8Xqo9DCm+dxtPptQ<$EaoBOB)btpx_w(*VO!jEG4R$@#xOgw_0P~Oz z)LBmz$;7!A425?M&B=7UnA7(yq{`XL3lHc%>7UMPvQHiyp?&xrKQ;x{ zNVEI;IFVfTLK_gcOne30xonA_BO%8Kw~vD(S*Ej@(`(I{bFZw|%x8 zgGIEJ$$(;ogcxM|7yJ+}gAuq3-y;B(HeNhB7Q)#<1IE*lHuu}@b>*KUwc}?#Vb9kM z!}2D^59+rl*07qZ+sYtqYsEbe*a(%?i?C3YY8GKM>#LmN&K~S#maE09Jh%OM2|kb& zE$o>A>gt*@PiQ#I^m#YP^?Vx2y_WVCE&2j-bhV;&6kxK3Nzt?&Hracpgh*S!wgto8* zGN!oSVm8K3e)}(Fddpq_`+K%laC=PqoDqmvwezG`mYtLj$Ppg29kTNEhFcsv9D!2rjZ45iXtX#!l zo_a5>2nlq~*AmEWcUG7Bn7j3Post6$D_uy?Y)`j3@9Hhb<6K~`J+N`cm$Q!jWbEnl z%Uf~_sDIEQM$F@5X~YwFRI0$vQ^I2aM5HeddM%S__TlxsI)8Z8=eQz83Y=|A_=t|J zD#Mn7Bj^evu#pq_ZgQBtGJ}Up#97b`)?OWwO2l@yu49>N+py^4yX3*6U^>j!Fn~nt z7TD|vxcce15nDd9BwYTPNf5=yN#bhKAOL-1cf#v7hu#0i@A|=;c>d=g|K<5)x3lFZ zZ;uMgVJ_ZT3=|e>)A9`@s_QewjkDLj>Dzexi$USRh; zIPDzFg%&mSYWZ1xm*?oPF_n%%kEGybJ?LfP0M(8wSKnah))rIv6%8vj0Y}-}oMROM zCcts3Rc-~=%ZCHeEJdxXj#t*3s8DuV-}AtbV9ed6JSNsQ{n|Hfb@gDpBawVV40LwZ zoTD~kBCq4_2xHe4%`%o z7Mk9(_GW8)$gHZHE2rv#-P7%8{pX{@70M2z-fUhIBy(G|=RCDm$r>Notub1fHX+t; z=qwgF3$Jf~Iqpj_!fSh0f$}^jH~+ew#xH->QBZKkx67B^E3m`>?YYR6R2E~TLNLYw z&?+E8gsa!GwaGTJ-hEpU9pg9H!9;g11_y8?dXF~fTgTcNpM1Mdk283A{`ylhGW7w3ykA-aSpzBvd;q&~JkBGTHfgeD%{ zZ&KuE%(6NJI##;H7N*99lY|cUAi^NB8}ZL3#ORHf-``MnD?w*S-8p`1y;;%H(UJ|r zVfsTKIq(SX$Z!|Z6ksG1u(BO*-qEsWWO(NZb|-%K_`xO`ULuC|B3!iNfWz7;+>cNGnJ{jFRqz(B7T(1HGuFimSS<6-qs zNoYI-lS5Q=nCLpWDLdLCi!EcLjZ_##u7uG=Jq{WBMJN-iP?8~5w!Ch+edLwq@iKkTa@R0yRwLI#}dAR2dJrmqgrcAE2q*c0EjF81P&2Ld_@uO_zG#z6J@YtPBm~< zv6)IKS{xhc@i9)`ZcgM9XexS#)N*(`SllVmwxKaj1lV*OuWmT12MlxIWn|Wue7DB3EpzXuEf0DqAIusneU=(#itZb>?#F;&XZ|}# zWk5OXQ4@F+-~FZz1J{F#o$?KetxVv7q^D#mdj;7QS}zA2a0nc=rv;; zT928H2tTjhcS0>g`v{7F&)IILp5>!0DI5oCd!i+GuI;mv+pflw#aYuf-M$PwM8=J0 z6}~o53K2A$`g=@XWnJ?KJIj%C?6x1L(^JaeM-&P>sQ*e=XW5^2+ zOjx`#Jgho9v}?F4_JZFf+bSgaZ69Hqc^ecc$hl3qhhu&mu}a$?3TU}tcyF?&@7r&9 z2SUIWp2n_7mKQhPLF7?4X=$)G-7Bk&EwA6qG79#^PE|Sl+7hR4fn8)<=<1ij)L0tlf{f{-zM4Z&%4_>4I7hl zxqa9{7)w$XAv`Sq;mWf2NR;Jh@vWjJir4pjKa89p6o9osiVPl~u?+*q>CzOb*eEuB zh_D}y!6fjz;VJvF=d!!jfFFc>uJE4R|G|%h-=oYP2rA|axPOJ+=@sw<;IGNmEkoho znoq&h=A6r7L!No*@r|va?rjp^iQ_D|+qQq{YS9*5)*fC-J#H>^NR->1->H3LCHp<`O|<kZtYAY=PWG%h)GKe8 zK@4JU_&xY{s(u3hpluAcZ>ZLDY+lwRd&&GWY#1K1d2{y0b^p09zVUW{hZy_Q-}fRY zfFnt8Ckgj86%(bJ~anR=JLKbY#Gg+GPx3- zvz`-~H21vy$yqKBktl(*I0gMdb*(dql7Xuh*qoTk@R&IZP09XU&@M}f-_;lPPpU@V z6hv)NWYn(j>4C@bw=+8k8!_nGy%lBFDYtvl_m!LXWZxK2iIV1r3C1Q699`+YaG>l7 zx){$;RCSPDPGsGy3|#+%4z!ivALBgEk33L0UsM*BSZFH|cUu1rE*x>=H#lAa9!c4N zN>E2h9SF-5Y?tMpX?O5Lk#B%ooK1JyoMZg3CZesOdx;~f?YKE(%hT-7Ne02u$H&oz zK9O>Hpzs(tB3EhX?WOti0EFUA5Rh zzCyiZ!s#T`q0N33$bW*pnNYTw!;0i{>Wj`5JrhdRaH<}_pA*f~LgYbrmC#EP5s??O zPHKh7(tExBU0TMS=+_-5QEV^z6I1Onhj5%%Ah&RLz8l?tlHp$>#nG;SM`uq~DovLp zGM1&q+E^OCsCh;D=h5@$(G3FyCLP>`@rMe249-w4i^LCB+Hd|I;SY9w666DKjg34r z2#-046Zz^=r4sFu`j3VGiK*X=D0H?J>d;qF@kk^?QgoVD6b=-BF7nR>!3HHG_<$m5 z1{aPTS48%&X;7&U9V5n}^MpP@Xd@nCFZ!Om;K3w@|-g5YVwF;S8#o^@DG zZZPft-45}Uat<6BoFM^{n!92YDd{fsf5~7P=a?=|6_px;ldgx(=9$#Xe|7%TUP!G_M~P0`hWP(u^uG+g%&C{e#;CaAFK(aU|9g%q%HjggXSAph zNhY6RVkVTz^ojm!Dy0m0?dVOwB44pt~#UYgiy$$iGf2{Q{>=uY~v6vGXqxR4ecpHCutr}(j?;pc?@igHDz1s*p zCa5!VqAh>z1^O>WstNQ|L9Gr`lL>p#sZ!DND+p_eKPO54SzUu7wbV2Je{lkn@@x1a zYMfpQOzJ^Xp0?L+h~Iv(vLf+hi~KjfQu_G>&ZT9FuxDTX0m|RiPKDsuN^)A2`lqoh zJeKNwz85C=U*80ZD^XF(d`J}bnWygH@FXGs#TPnMJMB1X>|Q1$GzkZocOSUSD9Zlt zZv~3G!(F^P#*x&Tp^N)Y^tDhm>Yr%&eN=BaBw{)G-QM`83BU8q&HB9L|5Z0QL@pT3 z4DgjbGe$KZp~L-A_3v>m5GN@xzb0K6qrN5O@d`%z7lGhxD|JetIupPYBsoIXZ4UnK zUrP1_j^2xv1x7M1xVFDoatORAnPgBnry_kDG1=?F|LtKXI_<>tqMc$0vW}LFOykxj zwN#n+wu+wZT?6R&WZizVFix*_PUm`39_X~Gu%}-`H!@e8-*1qe&GHeSAGQ{j8u54O z#cDs0+AhPMNO|EVzn!i(dBd=_{J$w`+65J-O7Qtav)LV&s`5d z_v!X83IMHkYiEV+K0JlEaqDe7_XVwyP94m!us4i_mGjwUyO;S(d}GTI%@*&8df-_* z#MOpFY<4jT#W6gNAvUgU%8|Zi$ftSoUSZtahe+H7Ups8e7<8 zuO6#b2El1$$yEzI!3~HGJB2WO8mb~6(QWVIYJd6)Liz%s2#(~x=riQ2HztAt@;%7%=>JC zr!up=JKI`|@i|Vj`Wd?sB_YsW1H{1qk;G?c+!>XM(-;xP;i_2S z=L^3RcwMp#B90de>c=aG9GU0tpAQ;)E-#OSj%uQz_gb(wh;|&q^wuem^Ewlbd@I}b zIuUAE0NblF`_oea+4i+H`|$Up94)I+i}2&QKO4l{VtDN?M6T*c=ZqX(bG*2+qRTHL z`|U<|#uv!IcDC=>VYfs%r(y~Wc|*X`rr2e=d%btJ3=vG;#z;6HXi+zwVS-|&LZ}Ok zk%AiHJCOjd`e85h4Lix)?YEU2w1X==exk$%U@TELaK$5v0`^}5H&P$Vjjc)BC*^jS zp65O`@C$DC{NlFz8j-tw*UL}P9_U9gL$Moa zy+$XK`d!DHni#$XP7L_TWF3^M?qjSd{#7!X{%l68) z_V%MglPOovJU;kCTNq2SE_ZD!K>;YwlI{Chpm#+a3yfkX)n(fkpxT4yz6ZJX*wZQ5 z9*bQ8fI}U^G{8u;Q567sR}pm@q+3-09mPKRf`|pri;13H^`U0D1l4N%WE9 zvN4PY1lL+9ZQCyMxB27Mo^O24YtU?CSd;Ax#f)3EnFq(2?jygW2#;CN)`HJ^KiC!a zpxN$^F0NxF3cut0sH}9JFI=5@*z~)X`uZMcPkJDakK_6$0|~Sb2n+N2pq`vi=R6Ka zum?GLONFI>WldTAY$gzvA`Le1gy@+cb+YRIc-(B5_p9Y}Q|h6OlFwpX&bplBAs4Zz zE9bIMaA;VDrS5QXK8k3UOz1Ir(zdl$7l;6w*U9;8lI`oj4nR=*-9mE`U#%v&+0<4& zC^(iKeC|)api7IQ2PUsQARV7Op1+t|*yCt5-rblOD9HQXcjVU)BX}(}JIggv7V?FS z+_?}7=H{XeDy{s@rc5J-$5uVhr!?S73l?vHhq+CR4y9_FJ1JZyS`MJu#~n?p1Z->} z`}ma5(w)(%D4^9Wszt1q?Zd3mC$1R_-J#b6h~Ou1cg)VW6^OG z_Kn{mg1^9d{O%3I|$FmBiq8bB6Zz z8mFrS;|*h);Q4e<3Tt~QY3(EwdXjp5g7@Tbh{(a>x66N+)c3waK~5a{wD1~8=N6|0 zVh^B4SIC3M`p<8!j>52x* zz`7vcO3(T2ABDBB9JAJi2)eq6dz6;_*1|UbxFvgXWkEjEK1|>11et?f+X{@x7qtil zDeZRhXpe`@dpY}dZQd1Ssz#vikaYWw2O#jl!?E@$|6*tIox~u&`_WE(Ok;cT#3xaI zY5nPgW>}$z*Bu4$NYoePlf!1%MNjYWPB{kP<4BlYIXkI!Ww7VRJcn`(d&Jl*>xRE# zD2)^5gi(HdTPAYy{T<&;IQaqWp@%P?UcK$Ghg|4>YRP(*9;~Ucz<{p@TUGPuCjoAu z&t9$V4>R=|dOT$-fe%;po?ZbFk@&L>T_F+kb=DkUn4{Aa@Hh-{JqW!rn`u-fAQJtdoJT|?yh54ykA@)PG_NCN;nXQgN%>BGiL75F#7bevLSom+kv+N%4Zx&M6L@wA3?@s+5&(Gb9 zyhhWEoKxK0+(Ppv`$c`~IxZdFhX{{%6~>7;h@E$;dG;V)+);KsU|q(ViaGAt)mU#+ z?>HmbUUIDK`n{gnrVg<)$7Z)uRmp3s9bOO=v>za|1p%S1Wig+s5=7j(j_g*;PWNm} zpFPObN@HeJRl8%6JA|~NSm?FXRG--!z5dP&^A_L)9WQKDW-0c_#10zv6V;FX=19#I zITklh1H-u(>2IRb})!J9su--R3-51FAV9U7XSvEh6V&&KTTW~@1` zv+5*3m*WA>Umt#!bPNEeQieGmT6#@qkJ`7yJSM0kN?Ll>NBQ-WvH~3Mo_p42do272 zIH{%7cn-|x56Km{eARN}8#L zMR{S;a#E~ECi*&3SXu01tGIe_hN!L6KrHTG?!5Z5DwngciUGy{(sqg;77 zzs?)Db!^OnAHbJ$`wub{s;XK@?^;XxU?6h#T^rmDiv5c6CJbGF`_oPVHj&WbsfX`& z$JNi^Xq0DOvNMPoy?Y|p6IToUVwbqS5Zs#%Xq`X(nDBzw;!wrHB=~^WC3X$c8p~wZ z{|8>{$~bbNg8eCJM(>4=>ZE*{kFNoY0aF22cW18V^0n1vm284qj@LN>yBzyclzsrI zw1B=0OYmFBqhV$1GC`%kw+O)J%-ww0-UGF*VeE974W0FKbTHPQ;^OplPtkJCLO3}H z?on8G7y+^ z{;>f#>LKKLH|p;Q)Y$WxJT(_c`~TQ`%c!clwQpRubc0BDNJuIz9n#X>BHhv(0k^bt zBMnm0ASE3l2uhbA-E8UZci}nrdG52f&;S4B{ql}+e{tYgYtK2anAiMWHJ1fd{oszi z+3dwjfz7)zQyj`?AFv`@+8<^pQ`uop`iVAv^{!;{+&jIeOjx{Jo3zs6f+bD1spj2z zr2WG}^Cg|sSVs}qIL-T*WPDZkYk5=AC8S=5W40`D-8q&KtXN=3zO>ZO7Y628Po2S| zd-_7D&_j~kgvrRV<`RQSXjAsd3enM)+nngx(8*RHkx{k2Lo?eG5om3rF2jXqZ z8ov1jQ&oCzUnw^iX`b8$h^CmAkU>zQqkN zE?Bz_=>M5DGFIBVL-wWMzAVH1SujU2C*ywyzV z%8eZt5AIJS9bJPj+@$3UTV3|~T-uQg4}ggHjJ=cTdhdI?VC7d+U+gMkPUP1C5J+ia zwg1Z8FmGd0!m0h68T$C@jp}RhqfvixNZ{`JirH-KNBi{|%8aW6FW#H3T)y--7{y9c z9bYKirwI7TR8)&GLfI%4es`zs7r4ZYJPG`orS2FZNf zB%_j6-pyAUIngxdxBH_^-(r2&kE>>YC=clKDEeNOsVkr9N;`?KCS5_%z4yA9XVM$8 zuh5My_lZP5kQs!K=~<@N2uHiPZ~MD7i5eOwUOby-5@FF9G}QjN$Yp%dTFxs}+SK5_g`{UgE<0`>@$MJMO#`1Ev@vHqry6)s3un1 zkwqf9)pSj z*cm@g!Z#%1dD#8(RQ_d*r?D2WJ+{n%R0jtP< z&urekGTTqCEm(8>`JRTY{AhCKh~*??zl^)#(A_&CqfW<>TKJ}zL8RoERKKZPZ`$W- zD(8SbVkeO3ig`JFu$8Jy+K;Z6F$Mqu9DdM)iPS|NjcKEl3x%kizKQ$I$Pd>B>zd45TH*S+h8L@COS-nK@HGGd6b-{!sivN?HdAP;9diF}XI^G#{< z%TM=na|7If>}JOby8G9>n<@^OMH;_jNXyKt9z#m-sjB+0D%*ML zj~^f3KaBGwPaYI$=F-mTaveHde;$=(eC~6#-o0Ym>boCt9Jq8n!G67TwqaU(q_tv- zs%u)EV={<#bAqLesk?2MjaXEQp|_>b?MG8&eZ25Ks%m=Y)T69q_GzW|n|->%u1E zpB&kSu|K!=*|{3<$aZX*?+Kpi z8{>SXO2~4!xjO#tQ=v%qWG!uOdY_y&+i_X+>fL}PRfQV`#kIpy1Jps5gIQ=Zb;-t1 zU`Za(p`Q*lM;RHm-#hB&8nk_0M-nNO7UDE)Px!H8^81`) zUi=vFd-rf8=nZDCb2NMEDQ6x{ASL65i14g)clxJ!iH4nTa~WiB-fYxTGCoV2zp;NM zFnPf8Sz*ds+&pC=FPSQbKaEy|*U&fxTAG0P*j^#3dB*7H@o))nl(!l^2~+qfSx{d- z>u%gqyWZrpq2E;A@(Pgn!NB~`#UTg1M$x?=paf<;WqopYspykD zVxplK)%>XNK8N4cMHOEy0o%7s?JIpC6TrdVdDUssTrv&_aPMc=Rz?OC_`KeCp1gTT zi|J@}%tj9TY1aZ)*N3s;hA~P;#pLLRi9Y}|o$*kC?|NB1fzYxlncrEWp>eUY;KXo9 zCH+k$w2aImesbvJ>`wL4@uv*dJyR%nHsom%3WgUk_p-RK*MpK)U-rSo2eM5U+upxi zGOt|6n;Q0Qhd5(By?`L@;`g@(=z`r}8GVGc8D~^x!(2&z4nI#luZXfiqZ<(%qqO{< zV%|_kQ9H*z-8_5xl?pjg*}P1XmCc|hx&l_gV8z?&BuRt1#v_}FC%y(t?H`|C z08*>GT09nebqxfNb<84o8kAD>n>_4KR&2wjj44|Lm75N`037YxG&^$faMfy~bRq%x z9{enOBv`s@LeJ4>u!l?JTYD?!F7=xrTwCN&SEkBY$!_B>8w!ojcJi`}Fb&h?9FbSl zfsnXFRM4{|J#R;|!#ne+j)=8ZxT_ zRPu^aE-jLt9-v&n(@yZ1l&V~|0;I1=)(I157;T_h1$ zj*dSNg)1mipkNPIaa?F*cfUH1+sH?0>xD#Dt8~(H8`>);+DsIGyNy` z^eqT;Q@XBNVJ+G;L%rQHaFY6YCXc+S(P(4CQt7*%~q-Ejwe>}y7lX9&*t+J z&GwuOWMTjcgHL9(FV6SRs7@l~%UdV!F|zG!SDs#$9iPY4s@l(`?oGuSDPK+|&F*=D zZJXCyxVMghSjenE1G3khk$arH`oTQR_47OFM;;|IZpMR>RT57h+ zzPneB(~xT%&%N(pEoMFI!%hWP)Z&;n?PvT$x5=7a2oKw=&xxUuXqWU{E>P7a%0W0W zlL1uZ61&G}4f9RaBtCzJIySP`=Q4D3bsTQ2iAa>;ca8L9;9lhHuTb)Y-2G$y2bNT) zZaxu0+9MY#h790vOC6P6G4<`du$NJvslL3(L?+g-WK^cr{&t~4PODn2&GAOxu~Ar9 zdZrt=AZB#N*w#{LRKhL(n`Y>AgFeCN@TiBdE_aETs09ql4C|5;3Zq_28|Nxs1lqIU}OXxvQ(1ys7g1^5)`n7u~+M+kH!bNO&G{ z4(2c5rGKY1*)@?seZ&NC&HovdWG;<;A%U36Yw=>!Nhws$LK%M$=G2h6LX$@)xua!5 zsYjiCx1&jz(W@yfAngg&F}L?N3jzvML+yiYN|0`AC4uamJjbg%C>8>8vjMof6u||< zfC)5%mgaGdl&{P1;8|L<=2%_gxz?4V-;JeKV%fTWuqTNy*tO~Fxf*(PHD>Q@$k>y^ za=(jUpN&4oQSw<8=%h7AYiz2#iU1|IMcrhALARs&%H7qz@+P(74H0J1eV?80-_^3> z(%gdi;2$ud2V^u+wqYQt^L}z_cq$&N4e8GJ_FgGvdQ*eZPmOw zInXxp;jt9;J|+`kTj?Ho0KQTc7U3SHGkQBguoE_cBf^yVQ}x0It9TG4=s6DlkuN_` zDEL{)y|IOLLcerx)}ee#;Jl%vJo83gr)d5iNPYvj9|!Tt&&+|8SU2lL$njJTIbT;^ zd2`qrG-7Mzs$qDB$Ai^q@r)=@M?I;P?|4=Xopas3%80S!<}guLbU}3EB3K0%)G5c> zKBvo6f%^ti1R+l}Xx}1pYS^2{6+i0g=`=dz_5I|>z(AHi+pW){cSzlv2-$9ktqVa8;+?)_s>QgnUEFSF(s++?k&h#nA{?pRmC9aW;O*0}VfgEgZ zPT~b4hjDv3l#H2|pSu@x?5-XU>0DG-@GnW|&1y%bI`T44R0nOoI?$i{u%2B}B5e7V z{mE9nB>P|-c9bl~YJcOloOY*KWw4yHX8?;exX)A7NruYm+~#aOSaiAb(Y~bKZ8#k( zeS6-2E}^)bqgH!*j+=Q#6s1vPWwR0r~W-4 z4sgVoOoG@Oi~B4OPQx8tcA94wMv&&LcZ5uCO6pJfMl+4{i;%i&i}oGWjJ+*&n(M2Y zjI|pY5BtZF#<#s<1qr>fOotYCCqET_r7~*u6U6IBYoIKo_Ot z)~T9oAY`wKJS(kTkMQDMtKqX7SNLc*9#6vSH-%|?^rFYsgRM%u^kZYA)NjFD$x@?L z=QlUz-0?Ryo0N&qrn;)Fk2l9X1=5&7pE{Qw#Q)q0Gv?=IM~8MfRs%Um%bQj2;*t!J z!mA}mBJEd$Us)<*(blof8t2?hYD0CXf7oR`0?dJX|mJ=w1CDf8UN;#;X* z!cx-qI$*2&B5mp^T}ndj+PuT2n4|{<-+0NLOiWL2tvDuV5xUwz zX`%bw>{uJaQ8-DP`!q)B8J-Ph{X({x!qZci7?HK_&fi)4>#zOLvc>+$JRmeSqOit) zTL5r|;fdKkx19uba=RZZgs-o2-HO{kSpb^5?#KDn+jk&I8wunFscud!Q;%PseNPdw z>M|QU%07MDcWvr%dBLvl*Swc+4b>sNH+UFVTv}^Wwr|~f`OeU{YwY+o8wx@2$x`nR z-*{{>Mcd4!{}w2-=lEfM(?ELy(J=hV0l2g7E1DCh-c85R3MQ7B$W`^1n-i9VVdt;( zzY;7-OUhom4tbeA2#-_ONtg5Ra#f}3PD~-`|^u%cj4t;cV;2~C3|L> z+T#Zr`b9@3DkeY-s_f%!^&_t^pIqrBZdQbjwNe4w|s8>&<7KKTYD#pl)kcAF51_pNUn#)vxM^q^}( zFa_ADOs6&Valhab?R+f59YC0Z20K0{S9PmLB0v#>J5c|wO>WG(zIFU|tM%P<-_qGl z6;A58pYcUdy4#nHPx_ks!!E*~itz13u219gH}n}5by{=!Gued(YUix^pabP>z3N#8 zl;BbYBBTz-PkVYmqTt~rk7Efl(a`?xvw=DNsNYHgg(gFVQT5g?7QT=3^!N$k`3K3l zZcw-$#Vh6*SG58d8W*<=>>5 zU)Mt|mP)OUF^*p?%!OynqIBO@-}Fg~wFeG|9?m|**a#--uArM~Hee5qqaG{(ZQ}cO zC1_8#qa-xSL#G$xTHJDcRwp?u)>?Y*Vw0AWagfSa&b4@VOPBCbXE`)QiJa?{t+lBF zMM8(_wqD;vPd8IL=h8iVJKr6*zU-J#^x_#mxTDg*RG;nm(3b7ybS+P_6;iI*TGzYN z1a-I=-ZSpuDR4X@JF^h=P~js3Q)rj_0~xivoP4l7fwxcL@Jz;frPk~0c#{X5Ra0c9&+YXupAl~k_N z7jrI2oy)5iuc3@{^HivDMygk5HPT+TBG;8s%j|w(Y`lC|R=T#OHNQ@-1sjBn9A6R* zVUYQpHB?n6O>lW6o^U7cI3^2s2kskqI+pNP%#)cu@#!vUllB zdk=Cw?#N&)uo@B6l6NJSKe`OO_M$9ig?;O<3*UyMdPk8{%D;7}jU$9@;m9!gGzgMV87n(gO66{QHvmvxpI_=UKw;zZ%?% zTlRa4-A!I|G8-!t^`5qm6TH*T`fm+e-osoZxaGL7|pw*>4q zzspv|olG?VnYzSjsFI_IB@q42E0~xNu}ox3xqi#TW)zQUud^;m))9r{fhtM)O23n$ z>Dy(2T$GW=^+D8+IFGsK>Qv2hiG>+!FHwbQ2-$Z9TUvBF8Jf0p0>^)@Hd6>r+n>s_ z)n1H4f4DCNPX`vH+mtK5n;Pj`y*0J-O7}wEqXN~WugsS4bO;fVbHtjh=Q9o*mew+j z&%SS48?ngn)Bw%%lHwSReaCo7@1C#kpbWB`kI=;qqD-UR?0l}S?~cL|IaL`m+xf(p=|@v~ z2qdb5t*J(~4)^dlv`wQGhbx3NAa_*9|!5<`_I_0^Kno&~W*<&Rt? z7xSt5)hXx}L93CWxAUhH(UTwEQ9`}!*9UWNf&A#Lpr2_#KT%ASY8Eh-YdbggLC?xv zjGPvz?Ca`w%q*{u$*B@~7+b>a4E;RNU#%ZWHiOy{0?7;Yxuj8~?F_zs5VWxD4Hy3xEXYj%?ukCSWyNJW{^=J#S zkNYaqcFkjUnQY@#32V((MCraM%|P4o7<=$-NphASh9@dbBrP`+eDMw8%6jNP;oVj+HU;TEt=0OQ7HNu}FmSrv_6fJ|&q*h;Dc{Af1rj(Rc~{dU zi=76wv*3ryZ$70czx#m?mOBidTe!`kGk`{wjJ#)FJUOS!L@mEZI?ic5qV(&wM(#sF z2A7ZQro+b8al;d1zaOnl0MMnFGg(9=+mZZ$e0K11B|*DZTUfm{$a&*rtY?_YSpSeO zf58;p*M4(Ac;(!4BhNa&iMdxij=gXCiLj%i(D5p?ci2ezBMK9a==uBO=Ladr=Wlpz z4>nk)eRTYvmt}~zr#@76C}q21$`yD4?QRnW8I8>&&u)~) zn4h{NOp2KZU=Z8|$rF2x4pBk(G=Yqba0@QB)Ex*q0#Xm7Lw$BBk24)v(Vk!|vxyF`Z>!_Hz_V`%o*Ykh(D|(I~j=s zI(GheZnR;N7l->B2fbIBX3}l3wFxyk(4x}Bq5T2)f@u?8841uH7u)%^v8AN#my5${lm6qSQ~ue_HQao5*C zn~O)3=_$b7YL-FRE|bZDGOV&Tg)Zb}BZrgd5wo0#&) z5so$N|6cbqrS#-QUfneGD~}WAt%lup1XTP2$q|T?P$qzBM8iIVGV@>VT=}HPKbl~F z!p%ng`ZeOy2)!Q#kp^=QP7h-;8q}%_~xk^!`^H%U$i?{b|zVlSUR5nrCb`Q@~)F(YuDnf3+t6y;mUu zEgl$7v;Ti@or%uOe}qWWVk$xdId}2tl}}Avrh?3$f}V{=UfH?_;4e6}&%Z zS$@gMDU~BGT=cgh`+p52cH2F}Hl=1lBSlV38M9C^?1$9y$k}JwCqeZ(*M9h>RCnkR zP69)^qfkdFsX*M%u%J5 zs@KFewB!qBJ22riHWlUD?U^oLX z9e&s86U6K0YiO~bY!{%OG_@~pqva+!4VK+z_!Oq*4E7DAY?NPfJO=w3FtPC9ZWp`m zJIVHo3MA=`)be(h6mRkSK}ZC=oeJ(^#OU^vp$U$K!~J2^t^AXEKNw`L!xAWM2& zb(mc7FpZx)c3jyV<>oM>lV%|!_CmRTg)Q)l;FX#JH1EJ8@M3UB)WH0uZ)rme_J^Gv zH~EPY$!b}hf$(K3Lysi4AVHQ1;q!MA@3fCERA%~}M2pr2I-JxTyOoZfs3{owHuWAA zhM_}EmDTc>G|SJ=nteA&J0EL7XWcCeCV*-g?|tR6$9~tjhK4fNmw7KmO()j|{DdE@ zojfu$n>^lMyn-qYU7M_|oxDds*}?Mc`aC?1pkt1HO@)&$64Q+#@3<1IT=pk z!sVkelCebj&U^g)T_@#BPnvT!KX@7XUzc0@4kwBR9e6)M5SvI%du%PLt9%t_=ISHZ z?^ktDaFY2`zuwXBI?x+yjiW9uO|+S)W(oSkrK_B+c|h%=vK1rPC5U(NYN1>L>8r7L zy_jLF_Nben>dQ2Cq3TQ_;|>=C6Bc#hG3}+6-080k#wLaDn>Tz*Kll#2Gez`MJN6R`j zDVKTP=@kQYSIH{I-KRN6xkeiem$^y{bH<{@ERB92ljKyjb55v~7;c6$eTOrqH18WK zgSWEH@1MtjuNgUv^H9=x&e-TDR*yQI1^rGV7*2LL2EVqp+AuWxrGHL6I0w(5o|M)u z9t3ZG73i?pxGY)h`pV;hc-L$KRkYv4y5OI>f){kgRXx~#5Gi}=LI1_5E!#2 zPL|oiZnSUI*5yj6gj?fI3QU`uBrlF|vMDu1bvbS%*KY2d2BpX*E>lq_tY-!}CGVhK zTzMuWJkw?w3vD*IA>E)txf+5X_$hnZvzfPX@v+BKxYYH8N6dC)DIxi5vI~6Y~=ldwvd7V{z zNL9MYf8)n*py?X5;T9m6S1Z5zwd|o+YOVkeAyx zUkpFHL8HQa>{pW~v2_@?@p^YvekU<5=dk_cGHw?^RAuRIiAi_yjt?X#| zT9df!f!CqZ6?-i2(Oh*)xi!zv)+7}FL0K!tU!%_FXu*AKd&WBRmc?6dmR~Kr^wGu-7+kS>e|R}T<6vYn#3w(IT>7EKF+OqmvVp>Q zWqEf49hn%~~}$-_55r!_QP*J9>1`te&uSV6bZQbZ>z?o7yhG z7M1F0%|{KsG=?-$W`%(wmw+`tcNrVHG-m5322$X}WiI>2%~ei3*%YE0nlEsDV{0{9 zf4yHlN>fSCZ4h}7)Y-ukABjdaubE;HG43k+GN8Ab;u?6+ z{E7^E)vc}(*$d0pokmyPey&9orJD;obISRkvkPS=Y#j91Ahx-3pBAI@D@LfVEZ9Fg z$Z*8m}}l!j7b1oz1u8ZlU-z*sW*~C*k`_w zJgnPcRGv0I%8LQIQf|x42CD_Hd4E8WoMgRH1>#Dr(ABrNOlX%t25O7Q>fdI!3*{f-5-E-m{g$V`cDA%}d5!{fgBU8>RvB@EnwH&$Mem1%%?sqfvAFTp3AqCpq z&$-L}jD)oV;c$^-(Q6bu0!=nI9l#CJE#bj#Z}~vf`}Kc1EdPzj0MEkeR2k@yMdv)6 zR#@$T2WqWog?A;7C^4_Lj{o=gi;IHtnKK{Rr2H{f&nss}E zWCJQBedkiW64HR45ST@u*N6@K(BvBILV*IjDk#?f-mV)(W0lfdRwPFm%BCUno&av7 z{o88+!o(Vk(01I| zM^?Lte_d+xw+`aL^w+_-i%h`%157wE>t#s4lT|Q?SbkSW3y|gt?Klja`=Tyqe!RW0Y%u!o0Mr|g|DZ}!F!^?L-HAoFr)-0L@LQ=Gp z{HnlhQGZ+JU*P;cXb3ly`^qfsF3=Zt>u)9FF|?MEDGj8RW2Hd&L0@~1+hp`U2Z$@%X%TajAO(`wP_Abc3(ub zFhR{ULN#G^4hVr|h!NZ>W}z>tkkn8x*uDY>P7iQpT?AJ_m^2-L%VY9~#_vtE-`)&x zb4H3kga-epXYyb7ZvCCRV~D^~lKdf|^hI2%@M2B?QEG(@vn~hAYK-S2!mpr^c77-@ z+9Lbws437Jo-0Qp?_EqTiwEbxQL7LD6|6v?zo};cElzkGlYAw-_jMoG{P=kRkw7Gv zj32LoPlH?<;SVDb?qZ|U)T#h`8@TeqO$W|8ARum{7vA-c71BC3DfA|O0%xV}KxDJH z5pyQ}Y3RMe^OHg%P2l$!ZXp3cceRyc$isMA?1UO-I4wayd<&vf3K3)pAjgzzqd|W{ z5M>H)J#c%_mX}afV`XrjET61ko85)yArl7u43R`H634B5Nx!{~MiPJ^W(D;$H3Me{mvu$X3Z>NOGkG%EVPFC1|L z?mk(B+^dPQ!1=>FH2-Oxf4Hd*Yg~ZcAO!+05lJ{SK~>iPcL&i|xABL{{$W!VvP8S9 zs9*=>TZIH@KYJ>dd%uWMi3WZ?T*O6G2>}$zAW58{@Hc-DCC$7X<$K)Q+hKy_M)`xD z!wFlAno%Vsze*z!i8wwQ@`w8vtQ50)xf7O+timJp;AD)8CgpQq0tZ?7cs;C2ZT}Z%YaGNB7PvHde#UG3qcYzsu8!j!T>LCIU?1VjHvoc=46fC-p%j60W z6Vs|jg~Q)iqM{_`bN{6Pak6X<={<9}m8vk$n+7s{m+%ddGPjq9o8bbhPC!5@wpX~+w$Ue-3;AQ`58Kzum_@Hca)(5R5os>-h?BN10Y?qz#R zcBvA;9W{4A<_J4kxX&^2BGFY}XB!0b{DJT?;HoU9uV&^rK@Gu`_x?+>e={irQC^bz ztuV1fY_}CSbR89bkKKXDLjbzNj)UqYm={%aQ}O>W4b%KkK;e6dp7v-&@|+6EJ>q|d zG5;fXCNnzFlsrom5=>W2v(4xIP*3^n+3o{LjS;* z|5k~A;LAVo1+eh{z?c6U@Ffn7`1;NrQ7btqagBeV%zqmiK*#=pGH?LlA1Lz=l=&Y# z^AD8yCld2N+VJnc{)xo=hW!6TV*ZK5{1b_R3GVz8iTO{g_n%12Kam*N7}GzAq<<1g zzrn-*tBItW)@JV+w`G3pJBr&G2{ZzYYM5U+a1nbhM3q3DHyL_iR{HdM;@x;A#AJ*% z;7*4G?Eij2>~$Lf6B;^C?I8Yrwb!QoL$v?-?Z5v>Lzez_^NrP!^Idq3sBW(Qt^G>fr(+{J&-Q#MG8eenbQ_r?7lLmz^#BpZregWQSl zBx@SHMLGdDL_(WjWb|91#EMR^UClQn7!t)y&{;PyYL+E7O7!W!m{8m^C#EEY8KbRI zY?(P8w_~fK=lx^{SBen~6HM4}+XKh%>0+9NNk#F0TR0Nbh8f`wga(%cb7}F>UCf#R zIsDM4asTGoD2a) zsRK_fk_cf5oR@=CkVg`Yw%;oHKBruNU z=oyq?_&BeU#mFRu6=XX_tNMVWk^VfOb4(EJZ~FL~Tbk4|xE5GJ5ITQT6)V_>9*FWW z-2@WE2tnqlpVN67;C}rO;;v{8B|`{e>X{dZWuoV^`T1n|8lsH%kHcUjAPZvF&bHu; ze;&1hr%5$J54-l)ZSTb1(uK3(bG0Hw25uz4Le{76?+M5IpMCh7ZW&NaaYa%4Jas7D10NXfw;5#x+*f-SctjX_WhV^t z@DAiI1mCdGoUklORtMmWQG9j;CF`g(EcKJcknIzr}N>PeQzvguF%}4{_paN%SXn z6ZH>ZhbTcDcMi~4t_+|UH!C)0hZB;ziJWmE1ChMt3@sNjG?}S$ckr*-{~|ULiB>r~ z0M{W{nzD;9a_A5r<^@{_DtmQC&vRmZdhlmc?DC0EaApw`(qlqQltf}u=<_UAmK)aa z0m?LB5+XncSVr@Z@AoL-Bq{@92#9`)TobQ+|jWpJnzKUt5Bw8wua?nFi2RO#)i{i zgfR4x*AIpvM)I<8Ihf_*7J>xcaN2TWl9OQiOTgOAdODT2LixBIsGO|R^xGvvO0d7y zL8~@n(Vs)T{el|~EEC&YKq%cBz!l}>>AEly5W|=KgwEriP2kNMRd}BK0B-Gw{fKJh zrgkwQXFR*nIXIRloUn|>UFV_DMhGG`l^sG+gc<%0%^ zv%^uZWg?L95|McGI3z@9lCd)3B`o)TAx;s7Y7IIg5`Xy;nlf9Vp9jl-YEC5iHxdzS z)lz{3Cdn@F%2)u3X~UJKJR!j>=);7SKVq!dG^p~sNuf05$R6-blLxSek_iVuWYcG> zh=ZTtd@aKua)DkAA}X`>i^RZ!})xxguEGDzWE zg6)%vAe1naOQ&0kBq$geW*JVbxL)WC0Zva?_nB&)fI1o&N$FrnIb|P75q3_}4$)z| zcsBRnhZ#Z41XT*Tv%db@9my@1SgD*LSi{$k2u7CtMgmwyCP}-DT^M_Vh$@87L=!+R z4H)-N(u+eB;rC$Q$Z1>B0G|HHgR}acYFWR6Lc}DoID3pd@xOD!@GuL_0LqnsXBhGp zgJX#7h{#4uQr>jf&;o}d#qdK& zG3yxovnf?|@yQYg-}vCm$-!YHf^{@>z-*+{%Eo`~V-FQsaH@F*v)tEW_j~XHbp1`| z0sBe-2jnOqYRg=KxKCf3{&?VQ8Q}o?>o)l;3iTi7PhZoZKl1#`-2cb+WdMy5`D$B% zYwO=&4SK9tuVx_$X5OTkm(*A{H{9BR^F4YI6~Kqz$|1o7KKzZrT(EPCm2cFebB>}) zz7;Wn9Ue6eO-iX7xE2IBz5Uw>LmxjfgRvNGF=ERsB{rP=vWp>dR50AHAYw8N)UYsZ zmVPd(j|1~iY+fu&ipb_&Ad~^0@agMpB6F+vC>U7#=%NkJMf{Sd?;rv3T> z6MjRBXqbIO9Szu<5PM`vw*BPDB-w}DFz^HcwBPBy$<@If!9 z5chxd<6nP3%pg7Lz;>KAjghGg1irEZ!-O_H>Ngmrj8(*62tz5IlRKeqWiTTkfF!9O z5r642M<%w(jHAbofHizh4+b9-Kkx4WEF;PDg8&pbiN=Vb(JV6o#{C-`e$=)}8Z0Mq zkthpppR%*T5f}$D=aWJtwRtUm+!1G$532@B^LkMq!q+7<3_L?;3tLq_lB(I<<$xQ- z2Qtl{|7aDM-fQXe)!0)w3ZFo#rE`F9Ven9U9Js*=DpqXNq@Ilg^C+Y@cCsRX@K>Cy zJRC;K7E@LM%*F&TkfM>h+#y15!K2hzMC+0QTEXliR8<{ zuKo6WCy)W~;d5Usq1^S(AHr~O9}%q7t@%3pDY4oi!aXr>Wce1&+^C-f*OQrX>pF_?D7m?x%UK8E1h%S6?mu8IVYd*m(~U>|4|hou~{l+ z7;LIENW`n;@XGi>jGj{}rrQU(bK{Xe%s#pUp&zUjvwKWz6VvV51e7?#LBmN5fJhE5 zy(M(E#fr?*VAx$yai3`@Aihw=mXj4Bn81Cq%o!Hp;Od~2ETMkrF++P&(yi5J0H>(= zZLuvX3heRy4bsms$AQA(g=|;|L5?AnA%RBo6FW@kEgSj!4F(vjHV(owuo8~x;snme zkWO-=au+zWNDPW;=VWJp+@^AoMjvAZYxn?V%4o-Rc?wv@UffhhAsBHZfT9rPQE6oG zfMd@g#?uvL367IYyZrZor|#CU+Z{23fT@v&c2MOmW))F})Z+*k9$JAWz>4NlL^+Ec z3Wrax0#nAK)yO>IM%l*r`GqTi%hDmHhm3K%oL2%ChfkvAvf(#hnw24ZN-c-mY0-!| z$es3IO$uc+57?L3V%RsXgrEZnCav=uA^Ve)hU z&O|cI@CYDFkm?8*FvaWa36l!x#qe*$Fc!m!9`_S^F)1c?EdTRi85r*WLXy{^Nzm1C zjQNvK&5z486sTvh01gcZ#4}l!CYf4qmoS7=q0+XOEGwv-qg!}*UKPsEAFiapaBmW= znhn1+YYCMzJmMZtvuT|?+_`0f9*-DEs&5sF&fLbiW(B84&yZ*#G;f8r9}_=IB7v1Z zDm|nY>3M3qN|;do62mY$e1yh`IziVnbcj^j3NQFiVUkj@&R#aQZ`-5ni|9hF}IcJHJB+np&d|m3j|r z_|ni0F@usHKO(kK4Vn~MfHg?Cp7bgbr~+>R)IjWB{kRzmT?6iYBBLC>O^(r$p!lgaxKW&p=XoPPgbTQY zNzL**`_N$_G9?ralcbaGP6o5C0vdIxLJ=^^pODvycfE4%kYilVIH)-E=$NZo}8 z;KO9&yEx3}PVP9caQ_a(XvF!xNg-Ykflr$h%znn@zZa4c8B+`x?Pg?uHhjw$u(3!8 z9i&H7XUxPY`ZHdf2n_d4I8-{&KYZ%|hkgE&PYn?ZWgmTnF`+=u8h%HTqj&Hr4&f%8 z!(xY&sLm|&I@=*Cq{rU}U!NH^FyHnp%Ra^mi9+VJsa;y(23Dgce9%}ui=Jt8QbIvP z79mJL240O=aM3VTmz^`)of^JT!|Wq5;6g$++-b}py=5*6ju1%CSd8a0GDnnEqr#Jvagxk$N3MP`O9%`2PxI98!cup($-OlGG$7>S$vni!k(fc^a6s-S9+NbsIx3K5 zNwmlJ7+?QGXnBe&q0|wPIEUIF?rfVEfcTrSj2U@G_OrrlIBK+9gTRz_mAAr)G8#UL zajQul0etxRlGIanDEOl{F)X7|4^twG??^^)=C0p;05kk;YGTwi+#rzDWSxiD zE{31(F>EZ798IdMqX^mGpFT4A5LUmuA^2Ld=7i(=^ndcHu@U86vlDgejc82)&VW^e zc)=AaaOoqHhZSk^0w7E`Zz(CtUvZQ2pJ2J?4zdrEdbrLH!ZcfwQgWOu9fmu%l0gjO z*zX`xAqdG*^B!o8V0yAjD92sUG0U4+)d&r~(=O}H|hG%HC1RON1AOeUq zdS3nIzTRikKZHq49;)P^F{@^eo9KYBnSWInF2N!k03YgfbG*=AuN4$CZer1&+O+ zw0rB=U*I^YI`7N^JpDBcXZ3}cRoo?|vVbhs3l5=B3sM+MGKg4ql-wJ_F4Yy7v>tJe z!Bb3=$GZzR%1@&D2s0M5{-3lle9wLw+Xui>SaDAlNUfZ88{B=#XAHN~sL_BN;&g1g zN>m|hD3*d15Uk40g~dqZ=!b}bfZ0&er|(@hPm;=Xs@G$LS*}n3fhLfXS zVHw2?Qu|dYl(T7;0=IVHe3x|&sFbE%ooEB1g=sULuy9{2Yr@q4iP$Cpa3(lmhX+y< zIr(PGETeZM%iB%DK9jtIjYZDOQop>f#Y0R^@BBG83WocW81WSnEFUXoX)FKWQ#(o~$k!=P&$40}{P91x$cVFb|W86i%DzfYqqoBBZ~?5XOXjyQoIhJh{Ywg+k~qyoG5f#7wM<@5eQ`2GIdYv>b5a03EbqdJnpP5ZO7S8ynS z)k!~HQs8&O(W`|QcDKz#{!@Q|qeTXLx)^-6mwfen*O`@ILdQ_QvXe%*t{k>fD@S8ROCgU9(5D=cqTmZwT6Ai8e%jIr1WSP z0n;$z`v4X;YnliY16jevDjACZ)84g4HE}O-AEiD(sG=xd1;Hv(h42u;f?32TR(aS1 zB1!^+LO}@_dBi+cr9gTVkqagQmQ+)OD+;Y%gqRoCAgB?kf&v0rF_3^f0tv8e9=kX8 zTSLFx@Avl9|&PEoq7dFfdk3uT)=41^%*1V8`PyPuxp4Gi*q4$-P2cSS49)`r0ZR z=F4m=70_P4v(ZYMdOZ|!H(O=Ht;4BY#m4RC$Bm{CiK69knQuvJ#D0H;%RwXO%=GyW zNo+{V`^Rp5v|sXuh7j+4zZQO-XtV2IPsgi>hEM8dfR=$E-q3Loq8L70*mv??+blQA z^>0tmD~4-u0ET#b1${Mf$>+}5=LF`30K^H!F2h*lM~i__Ot@99Zfh13@N{h^1;YVC zeYY5E9%#15l?U|0Y=9NJ3DvU2$MFp9IbLsax!7XXwG>mCIVPkC2{_!qIc5fj9v)nL zW!d6_pU0&{z4D*D5aUY6k!-u@nIRqLy4z0kEk)tReOdB~4S$4OTA~7I_4<)`BKy4s zk-$(Fw&ILuit{Zn&n8up%1O8FwX#1MB}hihSjsH3iP)!^LJ&-5yYF}`V7L!rYx#lo ze&^4@D9w!{hB>W7B)Z)yfLazT0zdl3YJ|tdg$Ts$D?a|9%Ir@HOR=%Bq+`+L@==25- zh~imsS;6)I0iCR{cZJviS0RQDVngg7vlf2S2x$75(@+hA@FHJm>DCxcE&O-5AlS&$ zW6np-CuscZ_p)tS3EzF<|03)%$-Mt8J;H9lF}b9v+kY5$B+c)3FDg*JL!TL>^ zF5{)*;o*I{2rVtI_1M8ppOxJ=r=xeJ0sT5BnY9QsAm8Jci@@%cao_={)Zi<@&?KMU zCJrFAugoqN?R&D`Zs5dmc=}CLu1@@Z5(Pl{cG2bP4sWj;<9FgbcZWCxU18or_8%#y zL`FE=*&DqsS^MZ_6f%7V_aTHpN3e7Vm5^}zk{fA;gi(>3BBjUKz?8>+PfWRTnm}>| zd)|xu?>(dQglnZ4Dvegt)x%ALwQ9qwu`cD5@*xiQmf8PR`PiCtxoVj zI^$(bv4^7%K^<=+{p&jpmedY91_gVxHEal2&(QXkGu@`hop%i_0DT8)DYxz9Gq+}KRaz{S%w)M{aX6O3w54YFBvv4s;1!d4#@C?3Ri zV>+@1N*83@1}P))TR>&r>xu9LaxiDx+?;_GisAO!D(SZMWliQSi$d8kf&Mq>Q@}y~ zl?r1o2k6x67(J z)f`pDjW$S18J!l%KpChpctW1ta3I5qg1JEBc+iNWWOo1%fjW*8sxOAh5k6Tbd@p1v zd8d4FkOZz#L7BjeCLSr$dxBUs088Jh$B5{??W@Jz9as?EErwxLODaRnwkllLa{1eu n!b-zr1y$AQp=GRhQ)=<=zd9ePZ~xRc$9Mww1nsU4h`#h++x62M literal 0 HcmV?d00001 diff --git a/src/content/blog/streamlit-deployment-guide-part-3-azure-infra.mdx b/src/content/blog/streamlit-deployment-guide-part-3-azure-infra.mdx index d9e71d6..fa058eb 100644 --- a/src/content/blog/streamlit-deployment-guide-part-3-azure-infra.mdx +++ b/src/content/blog/streamlit-deployment-guide-part-3-azure-infra.mdx @@ -1,14 +1,14 @@ --- heroImage: /src/assets/images/Terraform.png -category: CICD +category: IaC description: >- - A walkthrough guide of creating the Terraform code to manage the Infrastructure to host your Streamlit application on Azure. -pubDate: 2024-06-30 -draft: true + A step-by-step guide for creating the Terraform code to manage the infrastructure needed to host your Streamlit application on Azure. +pubDate: 2024-07-14 +draft: false tags: - terraform - azure - - IaC + - iac title: >- Streamlit Deployment Guide Part 3: Azure Infrastructure via Terraform --- @@ -24,15 +24,15 @@ Do you want to deploy your Streamlit application on Azure right now? Use the [te ## TL;DR -See the full source in [infra directory](https://github.com/WayneGoosen/azure-streamlit-poc/tree/main/infra). +See the full Terraform code in the [infra directory](https://github.com/WayneGoosen/azure-streamlit-poc/tree/main/infra). ## Prerequisites -This requires an Azure subscription and a docker image published to GitHub Container Registry if you want to provision the infrastructure. It also assumes basic knowledge in using Terraform HashiCorp Configuration Language and for [Terraform](https://developer.hashicorp.com/terraform/install) to be installed. +You need an Azure subscription and a Docker image published to GitHub Container Registry to provision the infrastructure. Additionally, basic knowledge of using Terraform’s HashiCorp Configuration Language is assumed, and [Terraform](https://developer.hashicorp.com/terraform/install) must be installed. ## Write Terraform HCL -The code is split into the following files: +The code is divided into the following files: - main.tf - providers.tf @@ -42,7 +42,7 @@ The code is split into the following files: ### main.tf -This logic assumes the resource group has already been created and permissions assigned only to this reasource group for the service principle. This data source uses the `resource_group_name` variable to retrieve the azurerm_resource_group information. +This code assumes the resource group has already been created and permissions assigned only to this resource group for the service principal. It uses the resource_group_name variable to retrieve the azurerm_resource_group information. See [Data Sources](https://developer.hashicorp.com/terraform/language/data-sources) @@ -54,7 +54,7 @@ data "azurerm_resource_group" "rg" { ### providers.tf -This is the basic providers configuration. As we are using Azure, the azurerm provider is specified along with the backend configuration to store the tfstate in a storage account within Azure. random provider is also added as it is used to generate some random characters as you will see later. +This is the basic providers configuration. As we are using Azure, the azurerm provider is specified along with the backend configuration to store the tfstate in a storage account within Azure. The random provider is also added as it is used to generate some random characters, which will be explained later. See [providers configuration](https://developer.hashicorp.com/terraform/language/providers/configuration) @@ -88,7 +88,7 @@ provider "azurerm" { ### variables.tf -This file holds all the input variable blocks for our root module. Allowing us to provide any custom values using CLI options. See the description of the variable to understand each. +This file contains all the input variable blocks for our root module, allowing us to provide custom values using CLI options. See the description of each variable to understand its purpose. See [Input Variables](https://developer.hashicorp.com/terraform/language/values/variables) @@ -155,7 +155,7 @@ variable "environment" { ### locals.tf -With our locals we are able to store values that can be shared and built up. Like providing a prefix for the app_service_plan_name. +The locals block allows us to store values that can be shared and built up, such as providing a prefix for the app_service_plan_name. See [Locals](https://developer.hashicorp.com/terraform/language/values/locals) @@ -171,7 +171,7 @@ locals { ### web-app.tf -This is the required resources to setup an Azure Web App. The application stack block is where the docker configuration is set. It has a flag 'use_docker_registry_auth' to set username/password if authentication is required with the Container Registry. +This file defines the required resources to set up an Azure Web App. The application_stack block is where the Docker configuration is set. The flag use_docker_registry_auth is used to set the username and password if authentication is required with the Container Registry. Random id is used to generate random chars for the web app name for uniqueness. ```hcl resource "azurerm_service_plan" "service_plan" { @@ -211,13 +211,13 @@ Resources: - [Azurerm_service_plan](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/service_plan) - [azurerm_linux_web_app](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_web_app) -## Setup Azure provider +## Setup Azure Provider -Follow one of the methods for [authenticating to Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs). For testing this local I would suggest using Azure CLI. +Follow one of the methods for [authenticating to Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs). For local testing, I suggest using Azure CLI. ## Terraform Plan & Apply -Run plan to view the expected resources to be created: +Run terraform plan to view the expected resources to be created: ```bash terraform plan @@ -227,12 +227,24 @@ You should see the following last line: **Plan: 3 to add, 0 to change, 0 to destroy.** -It will create a service plan, linux web app and a random id for the web app name. +This will create a service plan, a Linux web app, and a random ID for the web app name. -Finally to create the resources, run apply: +Finally, to create the resources, run terraform apply: ```bash terraform apply ``` -When prompted enter yes to create the resources shown. Alternatively supply the '-auto-approve' option to skip the interaction. +When prompted, enter yes to create the resources shown. Alternatively, use the -auto-approve option to skip the confirmation step. + +## View the Website + +Follow these steps to view your deployed website: + +1. Open the [Azure portal](https://portal.azure.com/) +2. Navigate to the web app within the resource group rg-streamlit-poc. +3. In the overview section, you should see ‘Default Domain’ with a link. Click it. The URL should be similar to https://app-azure-streamlit-poc-b548.azurewebsites.net/. + +![A Streamlit website preview..](/src/assets/images/website.png) + +In the next part, we will go through automating the infrastructure provisioning via GitHub workflows. diff --git a/src/data/categories.ts b/src/data/categories.ts index 9dfb093..0ba38e3 100644 --- a/src/data/categories.ts +++ b/src/data/categories.ts @@ -1,2 +1,2 @@ // List of categories for blog posts, Development, CI/CD -export const CATEGORIES = ['DevOps', 'Containers', 'CICD'] as const +export const CATEGORIES = ['DevOps', 'Containers', 'CICD', 'IaC'] as const