From e80ad70a4fe31c86e8850900c63a7425e93ed8af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Viau-Trudel?= Date: Thu, 6 Nov 2025 17:17:51 -0500 Subject: [PATCH] Design learning tools Provide diagrams for a Virtualized Execution Environment Propose interfaces for a cli toolkit --- examples/opnsense/README.md | 26 +- examples/opnsense/scripts/README.md | 22 ++ examples/opnsense/scripts/common | 45 --- .../opnsense/scripts/dependencies-management | 45 +++ ...mate-opnsense-example-localhost.drawio.png | Bin 0 -> 108282 bytes ...e-example-nested-virtualization.drawio.png | Bin 0 -> 141597 bytes .../doc/automate-opnsense-example.drawio | 321 ++++++++++++++++++ examples/opnsense/scripts/harmony-ve | 105 ++++++ .../{devops => harmony-ve-dependencies} | 42 +-- examples/opnsense/scripts/harmony-ve-network | 74 ++++ .../opnsense/scripts/harmony-ve-opnsense-img | 81 +++++ .../scripts/harmony-ve-opnsense-img-src | 91 +++++ examples/opnsense/scripts/harmony-ve-vm | 77 +++++ examples/opnsense/scripts/learn-harmony | 75 ++++ 14 files changed, 930 insertions(+), 74 deletions(-) create mode 100644 examples/opnsense/scripts/README.md create mode 100644 examples/opnsense/scripts/dependencies-management create mode 100644 examples/opnsense/scripts/doc/automate-opnsense-example-localhost.drawio.png create mode 100644 examples/opnsense/scripts/doc/automate-opnsense-example-nested-virtualization.drawio.png create mode 100644 examples/opnsense/scripts/doc/automate-opnsense-example.drawio create mode 100755 examples/opnsense/scripts/harmony-ve rename examples/opnsense/scripts/{devops => harmony-ve-dependencies} (64%) create mode 100755 examples/opnsense/scripts/harmony-ve-network create mode 100755 examples/opnsense/scripts/harmony-ve-opnsense-img create mode 100755 examples/opnsense/scripts/harmony-ve-opnsense-img-src create mode 100755 examples/opnsense/scripts/harmony-ve-vm create mode 100755 examples/opnsense/scripts/learn-harmony diff --git a/examples/opnsense/README.md b/examples/opnsense/README.md index a2a7a1a..a76a0e6 100644 --- a/examples/opnsense/README.md +++ b/examples/opnsense/README.md @@ -1,15 +1,23 @@ -## OPNSense demo +# OPNSense Demo -Download the virtualbox snapshot from {{TODO URL}} +This example demonstrate how to manage an Opnsense server with harmony. -Start the virtualbox image +todo: add more info -This virtualbox image is configured to use a bridge on the host's physical interface, make sure the bridge is up and the virtual machine can reach internet. +## Demo instructions -Credentials are opnsense default (root/opnsense) +todo: add detailed instructions -Run the project with the correct ip address on the command line : + - setup the example execution environment + - setup your system configuration + - topology + - scores + - secrets + - build + - execute + - verify/inspect + +## Example execution + +See [learning tool documentation](./scripts/README.md) -```bash -cargo run -p example-opnsense -- 192.168.5.229 -``` diff --git a/examples/opnsense/scripts/README.md b/examples/opnsense/scripts/README.md new file mode 100644 index 0000000..efb2ca7 --- /dev/null +++ b/examples/opnsense/scripts/README.md @@ -0,0 +1,22 @@ +# Example scripts + +Scripts included in this directory have 3 purposes: + + - automate initial setup of localhost or VM (nested virtualization) for this example + - prototype a solution for an 'OpensenseLocalhostTopology' + - prototype + + +## Remarks + + - A nested VM setup should be safer + +## Automation + +### Localhost learning environment + +![localhost case](./doc/automate-opnsense-example-localhost.drawio.png) + +### Virtualized learning environment + +![localhost case](./doc/automate-opnsense-example-nested-virtualization.drawio.png) diff --git a/examples/opnsense/scripts/common b/examples/opnsense/scripts/common index 1a1f884..e0b4424 100644 --- a/examples/opnsense/scripts/common +++ b/examples/opnsense/scripts/common @@ -7,48 +7,3 @@ _fatal(){ >&2 echo stopping... exit 1 } - -is_string_empty(){ - if [ "${*:-}" != "" ]; then - return 0 - else - return 1 - fi -} - -is_debian_family()( - is_string_empty "$(apt --version 2> /dev/null )" -) - -has_ip(){ - is_string_empty "$(ip -V 2> /dev/null)" -} - -has_virsh(){ - is_string_empty "$(virsh --version 2> /dev/null)" -} - -has_virt_customize(){ - is_string_empty "$(virt-customize --version 2> /dev/null)" -} - -has_curl(){ - is_string_empty "$(curl --version 2> /dev/null)" -} -has_wget(){ - is_string_empty "$(wget --version 2> /dev/null)" -} - -install_kvm(){ - sudo apt install -y --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system - sudo adduser "$USER" libvirt -} - -install_virt_customize(){ - sudo apt install -y libguestfs-tools -} - -install_wget(){ - sudo apt install -y wget -} - diff --git a/examples/opnsense/scripts/dependencies-management b/examples/opnsense/scripts/dependencies-management new file mode 100644 index 0000000..0bb0008 --- /dev/null +++ b/examples/opnsense/scripts/dependencies-management @@ -0,0 +1,45 @@ +#! /bin/bash +is_string_empty(){ + if [ "${*:-}" != "" ]; then + return 0 + else + return 1 + fi +} + +is_debian_family()( + is_string_empty "$(apt --version 2> /dev/null )" +) + +has_ip(){ + is_string_empty "$(ip -V 2> /dev/null)" +} + +has_virsh(){ + is_string_empty "$(virsh --version 2> /dev/null)" +} + +has_virt_customize(){ + is_string_empty "$(virt-customize --version 2> /dev/null)" +} + +has_curl(){ + is_string_empty "$(curl --version 2> /dev/null)" +} +has_wget(){ + is_string_empty "$(wget --version 2> /dev/null)" +} + +install_kvm(){ + sudo apt install -y --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system + sudo adduser "$USER" libvirt +} + +install_virt_customize(){ + sudo apt install -y libguestfs-tools +} + +install_wget(){ + sudo apt install -y wget +} + diff --git a/examples/opnsense/scripts/doc/automate-opnsense-example-localhost.drawio.png b/examples/opnsense/scripts/doc/automate-opnsense-example-localhost.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..a038304e15791b4e4cc5c944465a6f8beacf70ff GIT binary patch literal 108282 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 literal 0 HcmV?d00001 diff --git a/examples/opnsense/scripts/doc/automate-opnsense-example-nested-virtualization.drawio.png b/examples/opnsense/scripts/doc/automate-opnsense-example-nested-virtualization.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..9823d6c971142e7752758891ca1cdf1136a4cb84 GIT binary patch literal 141597 zcmeEv2|Sc*`#;lEmXsw)N+^-t*t3mY_9RP0n6YFSG4^alS+bR-5=lw2lqDrgd!&W5 z2+@kEXhB+R|NEJlhoR}5e&>JAd-T4YD+v)uP}U+ed}uKS5KGtpyVTE;|2N5`^W zU)!9H4%tRWhe%_X2aXIlsW#HlHSrL1tO=fhF77xiouG^s`I8_@$_?*J5R}mtM4=qL zy(KX2j;=nAp1u-ZSOPc%zISxRdQna=#s|COaE^i~T{#IU@RhK&w6vg%CirCJ?&TK< z{tZ-=caWD|3qEOhd*iTHSSLewa35Vc83hR$dFT>DeG6kFL6jEwjC1$Ef`9a|&K`K^ z5-m3$yeBxKD=mwXkb?dP2RAypIQqC#-2xhuKi0?B9q&aRHcC+fC80zftTz~~FXb@# zh_ACF4of~FO+Mm;_rYL&$cMlaP=Yc#f>IjbuF#K+7KH-f4=+bB8WLr2cyJdIp-3cg z$50L%N?Cd0tvxqe2k3fQ%9&}2n_JDiA$(iUKs_HvZ#QE+28#pt#srdYp{M}n15F7N zL_Q#^s6am8>H|N9GH&R=M)zQNGNhrSq+I>nG4PZrClc^@9Kqe2LI=u0XS|me)|s-9 zlw*!QKKOv?r@7#9l*v)ffhbBI8P$P}-w_o$&B`4^aHC8MMVSS3Tp#Q1>IOeqTAs30 zo{sRzl$rRtIb!eul4qb676;K9rX%G!fS3O7*G^8} zXHpveziy`ysJPA18na2t042BC!#%)HNnV`t41Y(QABE&(PVglJ!7S{9_w&MFp%sDz zFTl;6fZgcr=nS160N4v0b0c`-C|{GW_I8{aGW-Or4*^SIK+>T-i5L&8f68HB~AC@Ip2o+_>i%unklY&W2etC+Po;~CT zq$Y9e->U=vS@O#%O=o@?rSHivBTa+*Q3{lUvxokakx#QhGjt%{+shXVet=N;djiEs z(vZLPAjwgbhm<75z_2$b^*t-V+(IpgvriAo{(^!yllmxFFH-A4*iuoGA2v<1M-Js^ zkbj08Qu!iMAX*E+`*{48#%a!}JgjtKyGVl{q~T-K{4o2(5yZ~l*~J|fI zHy->0d`X&`nS2e#-5;DY<sm1e4Z*^hmN3O`gis(^3D7pNzx0Ky#W+UNUU&VSZGiXjv-#BrONl8CvSu z&5snvahjh1jhbpzsluM=0SU(42Otq-{KgmW2f+X!WFa_G4gvf4p9xwNV6{KF92DbC zwH&Y}nBA+PNJBf!SPiTfMgxL-rb5gguFszangl$AG=Mwmf+!W-5Lz&tqZ1aV>FDg? zN?Pn0u`4*20$l;PjS`V!F*A@QzzaSkC??s?22noXdZpmrj58ilpF9Hdy zk<%2E(*`$m^z|k~iZ1Sf5GbYTgY|U}c61`4RS;9m)V)r40s-#{z94an8Q#~OBJSpHP@t?hMMKEQf@eaHrP2@-*`rnvltZ(JO{8gs zbu$zM6?aTm*A(6Ik0Ka~Gd(ppNTMS2uc3;ie9au2IDB{{}!bUfi;k0{YTt1g?9XOP1Qe(I?2E(DT*SOrBO^n zvz$X3_Q_|D)kM)ko@OMjbOIecL9r-UCJfdaIOA9^XLnH2NHc#mBTD+8$sEl{Rmj3D zLWPh0BAFu;Er5*75q?k-aa!6D2P%KbM?9w0noJ#s*<|X7zq=1X+}Y0;Ak9#<>=YYK zodO@6IwBz<0Urbj%&Fs42dPK*n+-|X7dhBXpT>qXDxGGbVxm=HF=JV0y=9oJJfouj zFJl>KfnYzh3?Q>aa-Dyhg=y8-GYSgi;Yw>Ne)v_)0xh8K&&`4_spy5OB+=cI)B^Hz zTHh0oad&YCsY_5WGga026Sn|1;EZX5~Q=x9Q*`UIP1-U3=M3J zra4fc2-_@*6KJ7pGpvCT)P)5l-$A9LFRANgO3Eke)5!52RTD<-Q<;2$7nI)v{G>L)ql%?ef+!# z?ob1{l)IM;o*K{j*^vPenKroJLPCOhWRxgi$uB4*KSmqBV+slr{(Xv@6kR%#>e?Y` z!MlK8R9!ohf@+f&Yn4%=* zQ1TSb@(Z%!kCE4ZoE5bl31I&i;2e`(31Je}1`haOUERS(2tj0*7)x-LSoqbQI|}SzJ)h@n*IfRbZYw`ys4kBv#GVWlB1Q5h4lukx3QxY z8Eu@}D9Q`#OTc2pp%klDLVa_Hb`;En)|ODx(lQiL_`N68|I(gN{@Y}{ z^%MdWd@Q^-N)x;^jeULB|B~C$NW;xr6jup$;;D3nGzzY1qQ+R{;WPgg;EyK#VNsk0 z{LL@}vo0?r2NM_eRcVxID8e8s^#aJkn`6wL1pu^$$UTkzdJ(2y`u^ZmG2tthr{7l7jW^w9sjWmG}i(-~XhGlBOuqXriQf9@zVcCN@V#=%|0s zsBoG+o$s{g^%D`(f9cXoQ)H96ftEInNP_)6E=#@YqDCtYm?3Jvd)5EZUUg|H@Mf9mk-dyO zO?5&!iP~p_J)~LWv(XA7W^mNMth^N{4lyNQ`?Zxft*(<9YS;STyN&#yaci;<)5l1~A}%~Pg^>LB%_XDEmNm2O@X)H@B$oucz; z?ti053G%6tpINAKegaFJ^*SF#G`R9_vBtl*P|y*Sf?Se6`k7HJO5rj^rO99z&QHkD z4n}6(=5w@J?I+-pnJqAruG%DqPPXR%lg+tuaGssQ4m2AL;E->Y2d1>Jk{QnStb;Bm z)jaGKOVRL(Y0)1AzvXlGR1L!I{xtOdq^Qjl#^3K+`O&tuGbK|-nv(wc_1sihN_vC_ zV^C+0$clL?$@IIPVHVUge8+|~+Sh-PdIniq(bBJGAb#a~23cC(+H7Bd$sKB74+%~h zQtM$D%cAy>WGR+>78&Rt2WFE7`gc7E99GeepeEmSL}7mM!8ozbpU$2ppmYT6&pUkhT8{x8tX`)H?w_*aCPGz(MzJ- z9K~b#(+xk!LiZO;_blHO4<^7L$sm=4O^M@w%tJ=O5%;8r{C!OVY}}}24L&w|!a-PZ z{}HW!yT^Y)#wgB_Gz#8q1ZEXE3aCq!9Qze;1G%5bO#a(KN!f=Gru478TOn+z|4=Ty zFd9BS_yB-}QLwomF2Hxd9t^O-^%G=Z4Q!#M3lKjFY)3-pG##BiTuCZ+1`Y_$r9g*Z z(=+YC^?w#%74Kdld$ ze{Xp8&mz7k6zacdw?g?JmzPZf8+d{n)(47wJb&XG)1%w(qAS>qqcY*Y$m=NnZ&8&q z&e7M`-5IENU!aT$u(6ps{6l+#4Rj}1104?q$k1mS$fN*)BLAfgIY*GQ4t=E!nQPJ? zUV!Y-MU#I}T?KtNbs6a|_&Rcg{kNDNct4*%H9h1)xxZj~s8|L@8>s^X_}EWdsGk|a z)LsB)Q0{IDxtrXD10p3LqXLZ4!0`#$R#UEmP!Q0nN#hNPKkBo9>VsxHa^{PoCp*94 zN0LeZ7aj?}KoW~5qf>uO8OqsOAh!9F2|<$}oi_D?$<2;R(&h>#+dUKvw#ivqm}7nA zZGOoY04gX=Ppi>*@fZqjf1qYl*h7IA%@rm(2|N39Ci(lR5113;&uK2x4CJ2b?Q_51 z@dB7yZ*tLK99LmRkqQlVn0pAKESoC;g-TrP2&agV$`5A4_E) zU@wDO@Ze*!NAPHssLi1CufH+#AMqHquR!xW5^(az)@aH?Qwily`v5;fS)P#Sx4+q5&)dPhxZpL^Fb~^k*`WEBv=<4GL>cdGFQ!W6N z=pbnX9nrW_8$d_LO1EBH!y=HrFN?8;^W{YSMUD;HHgU%nx5Zryeaj^%C=wg9m@`@| zEpKsJ*+kSnRsObs6jeihi+$p00&F&M1FH(2OoXc6_IuZV*te|eD zY-0TV1k;<=(++0kE_Zfrdw7b|qQtK1(qIij=Kh*_7v>Wd5qX&Vdgk z$A+NYb%*LSP0?0p2ed01j}AbGqxYbb&>83>=zR2P^f~?NrMXCE5l$xMZw~Z`mEohM zo#7K>{`Yja+BWE|z$(8xf6VjD<#~@PJ#BfUouX<7?L`g(l#NCLlh<6d=5ep-EHI@!B5}1aV2+Tvwgatzj2rNShObx5zHtVAWZ26-s zCM369c(BIkz%%68o;#TxH+b;4taW~6z1bmmPg$MzQVkidh~*Gkce!t{N&TFaebDuH z7v4%#_m$l$3V7f3sMJ|+RTpnapCijM*)y8aZA@t{q85jX&4NrGE{Nu!XJaM(G|Z*% zUW*XmLj)OLy7jiD@Phy=20>&bG7*`H3y3Vlg~UZfRw5gboyb94OyrF5B61Oz61j=X zh&;sQ*R%q)CeZU4ecE=pWNKHMmo(gxyoj4KZ^4<+&z-GcCGqE;hE;Rikf?gaZd(&r z8amwOI^3+asO>tJ15R&cXhna`;9d6H296?lHrB}7tY)XcK&Jg9GtoyWO;U%2uyAN0 zQh8_*fpv(Lz&4a((Q>y}ioMOiZVY=Xz3u$=mwjJeCIzTIEII#zN$6CA2f@#!UlVaRvMcgkDv^QdM4TU3vwqqx99R(%TzqKZs;d-4~5!Y!IU?C4(?MbVo2$4#MK0#le@JC*EZ@ zyI<~P*%ga3Y7gi?+q(IfZUXMZv&)rDY9r^X9%k%4pHnj1693 zIl>thkCwNZAhprZ&pjh5L z-n&^I&Nud!y5B!xb3`rlux;Izz%(nQfDu}U!f}y(tj$jGZO@DB$oEB98@)lrl&1h`?_Hp&V9-JCZdJL`k9)QJRP%$`ECVa@@D&^VjQ{U_#y&pWFLT{M&H9 zNBxR`!w_FTst$O6SktnHnyauvIZG%1zQ-3Ku}f{2$u9d{Uc16L5?aP=;~HXcgFSc3 zH<~D2zd(5H1Q@5Zt=zT4JwIz0zus>(MHXHQ<~*1j8~H;cnl5Wz?Yz!;WAj$bSIu9r z9=Xnqs8cED@#wK&hMiM&e`RL>`Im{6-p@5Z*)b1^3%xAULo3Bj=f@bd8oO{qz2=@% zw})_A7d7fNnlxH9o-%IYf3Y-EIYm5C8tWJQEOP$gGdD27%uB?iZhQ;QP7e|h)r+P< z{K&m*4Z&Ah=9VSaEawi+?jKc8+*B( zi#BgK=hb-$oyI>&B=U#n{CtKwB)0R>qf?!~Wq#=VtogO`JB0$4q^b8d$KsCZB~|Js zENfF6>2tn+!q``IPx{3#aR+%2Z!To=yldP$(e{M zZa&J^R`=xv^SNzAnI;wI`}wBl;w9@8aYa}>8@*qrxaQG0Y%xfBPR*Ij(V|5MhBAL_ z&nEqQyIS`9^lW5|ZjkqSqS)b_q*}Co{~CGsmem1=gJc`|QAi8cX-pa;OrO9OON`!B zs?FELm_vVbB4^I_y%MSH`pu44;kyRd;(32B0XR3XbswI}u={c_A&R+sqfE!qG_ zC$B;@TF#`YHlH)HIkq{zIiWcTmA*lVV_|B;qq81X=X{6{3N{u4bV#B-UC;kFg@Z$)YlO4;M1-YG)%V!!d1Na?6%=6%#zl34$1Ahre8UwlhKw8 zx3iR6cQ4>}n!kdOyy>)kr}4q(LD|Djkc)vX4TP5a=oarE)%6@H%;9^6-5y?xr-$*3;Jm? zl~Si}mdX;u5Lls0gOR<+CT65U_R1mL%OLaN2f4gjD~Y*b(VNuR(59MJnhu(-je;rW zI+aG;p9gM9c0Av+(rcAoVntVNh^q)so+w!9IfzDcvLyN;Ai1yf>}WqA?JOW(lxL#N z4+OkXlkRdt@BAjVY$0rH=1RxfQQ;E?YY{;vbXyoh8M7E`*IFt12$ZRQe&XwYjZN>d z)*@AmP!_?w@>a>{ltScVMJ|1DcH~`k$Fs}3<~Szpg~UXXK6{mlX<$jzxy5C6$QBbc zV-FkskRV~r&>BL%-D1_Z0z7k7-<&*#dvPt+f9RfGZ|?2JjikZmtfo&mF1%j5S0H&i z!pJhLN%iyNv#s`-A8S%08Dh|8jK^CgvV~Nv0_%<|VDr{MLhzg~;%-z|)VrwhRL{b4 zk+OT(q@Cu^%zwd?y9e?`%WNP8UcuZF)Qrb>&v_Xhe}&S9RUj)v2G;_ zH*sc59@KYmheQ*-lp#mqsPa+uqgvSeJw?ERtF<20nji9}Ab&5ywLH1ekWAV`NDC1* z2AN2pcx-?pa>WkW2AD3{1@W3_eb+a-*YJ?>MjuG6vWg&xCPY)B8F51!N=;ON=hjIS zWAEcqXE|+ITPw@2$jAsB#gs-yAzhlXJwy6R^)$nSAg)^(Ng#;zR$UnsoFEolgKlSb z7(H?I`n`E@b2kgm37v(@ea5E5Eut-sQ&iT%LSZME zTsxx_CbieFox^e`zYyP`4&MYrV6={lG!oox?NEVc{@(GX^9}wlVudyXpQ0G}v)tnP zC)hu$G_{|@A1QbhpZ7NC`rv>{(^4%vF|$J^U11}hA;46%q#oJ_)FNx-7i5ccpI}&{ z4`<}4z_Xz19SjG>YI`}GZVg^(~M4+=y`M5{%cq!p;>D>wtDv%Wwm=nNa_f5lPIeqwu2?)4gFesL5DX}$vO2kF1#8-HOmEPmLaWo~J^330$G`Sg%Wt~6o29?9 z!%Or6vkJbm(xkurZ2w-FyWWnFQ#z>9G`d@U|Fw{8*NP(y$$N`?$5tezEX;5SQ@R}Q z3Cz$r!;yP>E5&Bdw+ZnidS)VHI1c*{P%taojEcQ{Wuc*yPT z{rsdA-k0cgSDi9Q6M1yO&m&XLBfb1}qv+`hwpF_4=RKdxW%q1N+e<@{Y=y4CW1T*? z#2@7ua=q<1cY3?pwg|XEdMoJ(T$Yg5>@J;uQGTv4@xB?297O8!?B&V1u>+S@3 zsvsVXJvsdC?dj^V@bSSTxz4@Gr7H!+NT!Wd2{AWCbi+v|i_OY>2K{Vm3vPHYf2803 zsv*VyT~%*8SVdRYEWdQ)BWj&rxK0<}2f8$Ocv*j8|GB4KqYrNY>+7B-YUSTw-ST*! zT49O7zpm2?QWBBFllk{<^OCi%f$fk3hi0$OUK)$6-! ziv>CW9O6FGSDsXAdhV#k`lPBythaWAxTS8d0peFCqkV2J^OEzZ~WcMvh}4TD{s26yKD68py#_MRaglp zlycbkSJ!jruY9aui8p#>u#3%=_5B z&gkXk3y=F9`p(Bn`RqdgmxOjqd&9ltzuTc&BTOze$Tp(8t9Xp8I?`mpK2 zqDxjSkP92SA&)Hp#Ki5vZ;N|tKqTzt(OTjcHa7A(AeZZPIcf>LV&a{6-{6|(^_BxF z2Um#spf}%27ngZa`{4?6N$>L4XSM`Bj~)h#+O|l2bZgi#_5e?4K}kQCS6zDQGhR}^ zIh|ym7`ja!EOAQN34oloeS(I2Un{%WULS~UeWVe%%6OEa!YwTA`;WkEJ1I-e^TE@ZTCraI9Z!cQommG-@HWb9Nw!Hxsj?OE%Rlj;lXqF^k+o{LW4FbLKdunk6ut58W|fO>-~^bh`bGK+I**w&E?H! zo6m`CzQGiWyDfAh;}TG-b-Dh+b-+zn%y@DO+x5azC?&)<$T^|1?wn=dq*o27fr>WTPiY3`r193)G{Qry63Mu_u;@Z?*YmNtbn3@a#u7+C7ylH%D_6D03+Erv-h zwbA+H3$oLSOpY*O2Mex9uU+}5*ftX=Dd5R)cJHZ{^a=$}mfw1bPPsdEW07HognZDz zt6cBW`BB_5E_<^Ax`O-%ZVK__-T~g7C**Y0g^skBVQ<-ez`PCx-$436`StPreZUn{ zxF-8F5jX}xj|k%DVSd6U}PC+cHE8x?l$9Owdp`t=qA7a{Bl^{|@q(vA5h{ogXq7Ka;z( zFg7drO#uW_9_!`vQVkwD^RBbHW9aq$_}o;n5f+6fTR*Hq1JJH7n#=xKvu9~Wy2v^-r#?o)9U;UbKq9oI+SrGV-H#*NMLQEDH?_? z7?kO+2?lGf0FlJ?;PQJPw4OLA&dF_qV#OGP1-|Hpk8{f(4}^buXjK{b(MfB$rnb{N zwswMZeIn5DrEoU!LvqIzYS@%i)=yx;=bz zUenWTm%FhSTWyuSS3Lo~Eu&omeDJESkic&On{bt$o>;Cfc8WBn)-U?8Wx+ zmr3du2CXyKSLc4cd`P7NAd*pu5et@ph#hDJ$@VS8tyt-5a~s6O=Zh15TZU9k8%=G_ zuPuTJ6v2?XhYrDVRg^76z750SoX8q1^Ysdk``v>w_5K~63Jc>akA#o6#X9ONjGiB3 zZ|hZ+2TdZ{)rG-9?Bp{Orf}A9)`op~_07h?>74TdCNd-)-bIPleG!P_f5$({zlPt4 zKmGcJCV&flGV)Df4rhI`ZE>7`RDM3U>Z^r{&*+Zr;n|ti8?@Vc?);WSW6^_Isc9d) zMQ`6ogDmkB#-{N|l!UFD45GyZWi{-W0dbD+MZH1x>QnN<#ccZk{A^xtC=R-FK>FC@c^TSRA>Oao z2VCB%s9&_syq~i2%8HT!rYMnO<*-O^y|Q%ZTO%cOhfI;=KT?ys=8 zzv=u|wq&`G*%`+{5p7PgtwO6;~a6JYd zPF!#`|M-`k8_I@09LreZTOiFX^@2-FbN&9IP{)L9|FGcFcOdYP3XXPsE7xl0eEaGR zR?8mrvCm7Hd7c0@rOVy6f8mRzg<)mQnz+r6uOOI@UynOg+MUR<$1^pFpqSYC>}|*1 z5P%&m`1mf0!^AsY-Y9F`L!dLFGE$B>_*-gVc~y=G#hXZ3b;Sy0yA8>%Hf~&h&Dypx z(_#Ii#O~{n`M1o>1%nf;w{`IAisSFi1#-?tqWDEu>K4*=+ojy z>rGFC4DVG4(B|5$)NM__SYe4e5kT9vQ4yeDW0_OydZ8=}G4UotoDlYtC;u+sTUMo+ zDJ6D#C$aPfh3BvTYF*%WEr!i9&w!Ilu(B`4e!^qvc#Ll$fi<194fY;(DDsM~U*lh`&9Mv=W!S`F}iR63ez zw@lI#pf-)KDr}6%5myn$p@EdcO?!wY<*6!SboNeh6Tebn%L%OG4Se*YWDMfjZ5dd-| zcS}3_l7EM#la4Tq1$erGP|)estpWtab&FsaHKyCLAap@iA3o#D#q~Os)$cCc3LXOE z(_m8%er$(54UcM?yE?>pGD;v>4MB7wIukKB&5cFM5_lBu#^P?WCm;Fl3N$yP@Ojcv z^hpN3vZMP2W!4>S7zQTU7PtjPARBP=#h#|qd^^_Ma-v9{essk6wLH!Bj^=_n-jhNG zK1{HqS854qNshFh{jxzbr9W~$?-}5$E?Kl9T1Jv7+Kd}A(tPh38PLlS-#EDD8+0kI zce;~lxME;uaJFl9MyB{HA_h3|U^-|zhMfIJGXznBB@M$MLDB)i(OJp?CW}qqfhVnJ zJbr(pq{-{!1r?-w9zxc*EiufCTOGM`C*s!dlJ&_VsnC6*V$c>{+wR?LzSVqZ{QAWE z4R$I0z^^tR9weD-7qPH@f}J7l8{I)ws% zky3t>pL0$5k_;MZa70(Z_?pB92)4A%l=n2)eZT5EmVv}4VgZzuj3lt36|~ev586wo z^mk`CRD$HJUSVAN@#DVJNZBAppErrau(BhHP;p_q6PI}SNT&cVY5gNWAM5ZHR7w0P zIe}?wN;kG(#T|852O~@fNUj$F_~^U`WauKj*^&y1+kJ)Y^NmbZs=w<>*1rdsF);E0FSRS$#5@C)*llQFC-8aW^ukaxMg zl!cq6zI$Jq04oz>0cSTfzs2)z>9a8)=|dA3u3;Gp*obaK_qwkpm=O>t7TebbgA^Cb zQ`L=0RgLT32Z+}iyx1KWEm2VzM=c3l4=CmczIz_aIX*S zTVsTq7C}j^E4J)5WV^DObgxe)m`v4>N;$752Yg}FB$++34B0{`!ye5$<0xeIXe1Ow z5v3q5t(R|iTh-xJ-Cqhj>K_4m33p;g%+lze}n z-~43$(LzV4YGiQ!W?K*Eh{aD!XZ$8^mw6i-?O@Xx>e00 zGgKxp1e`ttB8zQPD99;aAC%j^ujs2KIz%UAEZU}b z%YuFVWjbU@mO(Z@Y;F}1-(1lEayc0X?NU!c=V>2_FdzvK#E8jy$Oi$ENfMQDBG3)j zvZJ99R)A=@5QOh>_ZExoKw?VC%Mi?Xa*3(ycpe69* z?Ang*fX9wOKG?&L;WFwWTX1A_L?21WW5^F00%)-{NRbO{HsT~F6k#1~zADFzN>X?c z#BD^6G{}Fj#g*y=wU{l3M-kb_W@a*VDoMKNSCdBcy7x$Uf>ZglrFdOfCUVs_FAmlB`$&X3!u(-@OK5vxfW_pe)LP7mrm6!BRt5 z5Pk7Tz#l~_9U$>sWOdrUJML{S*Xl>`5^bhD*siMOlx6X<;+6v0$(gKW71rn9yYm%4 zJ*N#4q4x~9n-w5)!RPINlaDg@2s#p5fRL$eH;-3LCL9Pb(9<70poXyjw$I!Ex*sSc zVsAq+Sgj}96N>}n>mU{fQJTYZWE$Y>OX|pq$uJ2_QD2lk7UzDw;2N0%EjrJR5J(Iq ztryw*+HhFiZrbUPEG`9C&{y-Jgk+JJlR#4Z83MC=dsvE7v-(owNlZlLmMvbDJP@m0 znYv+Z4w=6eGU{V)@$bNr;7w@QpcJqSs3$&Q`oet%0ER^) zQCjGNabvVV$J6CQ)Jhr}hZ!IrBG~bYbGjHOWM7L|lN-`GZ#Qa_1P$gCcDCdYcQCLt zUHx(Lqcr&VQp6doG~^+@0e;ZQj18nUYLEt$QmUhCBq8cP+BtlBU(*$AV{zSr`GMft zNPa#oGTFiJTreuziqoeJNVAM(2#i%hypc!|ALP2Zmr_8T z9y*z!AzeiX45A57$4Rm-l)LifBCia8RlkWvV>-OAvh0saw%UeVY(Q2V`@tlz`$}2> zECLBD=|?{+LNgAHKmeGu4C2Db(}y|OV$57`XzQd_Lz6?sMQB%|w=Co)0|b<{gFFfa zfN-x#DemiA_26J>U$oT%=#~xi5CtMi#B}(ykf~Gvi}pTnAANgEPSRim^!VZhY+pSt zKu=pdK7Zhv>Cb0-4Q2*HH7#^CYKR>xMGq6%3X#52-WV}r0P0%?%d%PL&+-N zCs*y|DH=Ul0&&?uPr&v}$(|x=u%1CQa_5<4yeieNODpf2D7S%t)E#8vedd+*E)N*Z zIu@qQM?_*kFoU*d1I%faVH*vxD)@=qhdj=dx;odFO;~~c^b={{CDJFk)rXq3{JVmB zugfh87=0PsxPijSK2YuN!sntMlx1&FjYJnBs_IuUgW>yVMkqZdRxOeAeeyA>S4aUq zM-WW6>iFpzAaR-|=$=WZ6|)l!td-|*U)%QmH&#rX&nA_DMJ{J;J|D3hy~r({Bvma= z>Fku5M(z;ES>mO(#WPLr1#(@$I~=I!*=uV6p7wUF9+_(*(R-O2G^*0NFM!1_IAHpq(JdZ57@J1w40iO+O4hm1|@u)sltOo;N>t1S&Kp8=E9f$;Mw&Q%G z$T2Ftghn9-nE4`a?iaEJp-{1BMNzA3E z$OqxC@e8qE6HYW(EoPOQmG+|lmSLO!C(Pk zW3T|dmh8sq^F{r9^t@HH_B`Z3S#qM0}`?4x||vBh$rg+kt2Bfc0WNj0GH) z#g8&($R?}k@Lgm)IRu`i1ZjZz&1rd53kV=Qg~)4p??E931R-aGBB%3_-t|Ykx6f&q zWN~f4;?$vSBppYxJ9NWU&F8l}XDV*bWm&G+yio1S*6L?Fnfu~IOT0twZU;9}k}>C| zP!f1)>}@a5Ycuz|)JX71MuRocpHH91Pw~n&tZ9a-MnHZQRKGV=wr>;VL1AJ5Cn=9_ zkhs`LPJObPfP0AS=#+iww>-)R4qTZynq7;SR#^bE6O4c=a_Q&HJMVL*_emB}kF1`B zkr=%NK;)#Q2xNuCdL-gn;upJDhinkv_NLj?8EheO_^t?0%m(Jwwh9m`q$q7aL?{ra zUQ2AYUk5=$tOP{aWbrW{3J8==kNGJW_el;z7{D~6FcY5~7_s@w2} zHU;L_AKBtn2UScnm%@E3P*JJ6S9bozMcEnk3q-oNw+(*1uqUUl!oj`1B|C46;Yhl_ zME{od+KO=Z`S*EGY`HyXWP6AKDa8%^x*B2BdT5=l7(D|IItxLLpnMvaq&j>Cq*yvi z>v=t(#F^y9(H5v&9$>;}j%w{`2U##T5K8#HyOkk%?qQ*ot%gRVyfoZL6Y2DsE}ZMr zXa1%MwQ);N5#$y7D^XmHW50U#*CDUwPl;M6FTv!QRYD zBBWTeJPP(fx)^Q3P%|+;GW>L6yfsnr1p|~#>I2D+N+sVOYXFS)fjXR0_3`U=enm$MM1R$`T;o*_TY?JaSt#nE)hT=gIiKQ) zAJTkeg^^9bmMI6AB@O#yE)2xa_W>Kq-^|hs*PA0d8IdBA($F@si61^%ekqxlF<9a0xCo zk&4BEHddu45BC1M6Jy58hldsW2LdBrErGP>PG50MEOa(<_a#t^>;|%_<;CZ^+KZVQ zxhg=Z(PI!|OE?xk-qfPvaow8;``V8L`M7{_@?l4NA0yrJOB5rA-N<48b^V`w))cyN zLyq7sZ!&fel|bjK`CxZ`DOc{Zcd@Hd(o;m?9Ig5L$2b=htuL2F#94}?k)j2 zuiJx-=Nymqrb(9c25Gl00re8ioK=RW5Q2i}kmV@}!%F>x_O}%s?iYm;gqw=k0d+P# zX(YK5JJ)Z$9>*!~*375yblI&t;lMq-fhnqfUl$_9a#yI(f&{0You zgV$(j9Y`Z*Jzg@tuK+p4B@m++BVs(D!QBUUF|AfRl*eLPkSkFZ-D}Wb4r#Ln6#W`= zAiAObK#2rg)%+?@2@0;TZA>$QR(Jm7jM(O|{1r`7=Ix&<-n;kq3ht#_yjj4OPGYAK zq!uG_>^Y)exm^!Cx*iFwlunxCtK0_?y=}4@L9lt}Wj7-M7<|4+x2F3g`JtxDM~2n< z$BnvA+OWOce@8i`KYU`uVF$Yp5I6mU5pOm$oCX)FNV4viubD zYUgRn9cs!!lV%XsK2bA2mDiBJMT4(QpyT#InPO0&>ksOp+j}zcUI9I$^NfEVPC^JPX#a+6HbekCDy);7ies0am(YJ-ifaeRU)|khE^4toQ{D122Q0T0I ziiALD_~0DCK{`%`Ke&p#Eb?smvl1sx;Z19fEd(A=N$v3Fmlrq)V!V9_ag z9ZVK!dLP0rg=juvY1qGDm0+2)MX_sB_V5$mrmAe7ARm@ZMr;fV=zH9bjc-^~kQ6B` zwut35D9V7US>*lRShSWaEMhy^AYkT&h=Zdv0ai}LG8T>yLGGYyBlPbXYb39Id#$L7 z6c8-i;@^e^1vdeNZ7!K@pvc8T zZrcO>W%k+A1#Szt{lHMP4z>ZY7@`cxiS!j>C*e zVC$pP4(hG(alvbO+g6>~dKux-R+hKIr-9!e)UCNlI!{&mkv#}dE?*=0q3hDfocC9CCTnl?hfbTfj2h!A$;qAuW-@kOvJ_B(Jj62 zmBV|#hBQ4Li&L`=3P;zx4Bh!TF78Ce`;Yg<%DNZ!)&vbgzDYwCeIqb=IZNrGF&#K& z(qa-((g_mY=a?mHn(u-Ru8REA$iYJqOe+Nt4m&hI#bkVS@pOr;ROieEj~xlQCy&^ggIv z4w?I&i*vo`)0euMm=WNpxQbd9o%!_0R`TiT{6N5%e%cg59&Mo^sdtu zk?A#`t-%=qm5M_RXMk!Lhw!np9FKtUO{>?oAW(!UMxK8B?yB=21CCsrsF>rn$l~|| z2G1I+4`G)>bah%9d(Wq^wt;%+^ePYQF83akYl=B3iqy*iuGu5d*KsWVoNsdySe-7m zt%38e>UIUc6$c$uZe3{(b1Cs=B$~D1DBI{*{t9$RgujN4(ev7!pP9R4ME04e)h9$X zq~BvcnS$WHUU&^?&PKf)-`=~Gpmb?l%C3Ru8^zf46VR8`E2Oz@f!cg`@YJ)wl~6c~ zS__hrXnS_Equ`=k;|PDce){&g6^lg7H!sn8rn>8MLfrBFr?(51b-zusssiU|8g6aQ z(YPV?71S}wRbZ2!LrEC=@#Y&DZ}JQ?mK7?>SQ!cju8~K*P@}iQV@N|7`4-!0T7GcCom%b{|3ZXQ_f4RQOg>{jN-8)2XFf zq(H?&wkB>aTjT-`vw8H-M2Y*x$3LWe~9YX#kT4yL-WVo{e?W2Q;n^;_o~mdwpLT{948 zd-iQn`Q0+-M5P;myReW2^sMSmF9E2nO>4=PVn7dnkm*o92aw|P4{JdvPwEIMoEQW4 zbQ1RW z1JYH#K9LEf9YM;{-uL6nvDM6PgWk3;kz|3Az?eOBpR#)|1KV~WYXNZ0pqNLh3V2hg z*quf&7T{2%^cWF<#Uz8TeGuGl%J!>l{Mr){QMOl@#${7aS^n^Zw9UL3$WiF zS~;9Gl&C_wo=f0WZLeAhx=6hAMQh(dN*Tlc=k z$`J~+a9rG{F8ESy^uyKN`ZreZ0w%ngIq`A#LZ)#4c6XuHOT6;915gbcXe&Lg*?Mt8 zrpT}Sj=b+x+nb9X9<=v+S)VkajJ}N*aWrgS!m(u!u#h$aA3)ZVM|B$>@RC^fNgOmQ z6TUo?-d9629rwHKd*gJ#VV0~Z14GNl0Mj98CkE>5*PgBV%mX|8D)rWtxFfc z{t0^}(uer874sej7wCX81+>M$b5fkx%bo1&spKy#*xt=sp^@M8J-Ny;_LQZ=QE52SalGf z1YRLHPvD(i=?)Qq|Dd-av%|-OJi2PCu7|l9il5M=`0F546QyrwsaWZzXOT+(epOAz zhcNSd6)kM)C*AciqTP*)7caI3MNOSo=7HY*BB&)&-uoGvs}SJXUMt_{gK`3>+1puP zNMOswuraYph0QgJbsdaCho1%C83Rcs-9@rJ0k(BJs@{7J<$}0q#IF76j=_W#L9bGD z!uDolgA8&fu&l!%P+g{F0 z)HK+4@>n8MRyW8XLP?2BPF&Z&g3TyAk0r>XMun4mgG#Jq;@^7Tz425~?Ny+?;w@wD zinJ`c`z94`_j3E#d|9s!UJ1gRzu##s^b~aPwZ=>HWVC=o{biSRgJQ^aK*-&6{qx(| zUQ5M%WJn-U|0?8-3unGFds2pZ?LyV z)h2zmawynGNO$q)P__CJbGMGl;!?An@9Uiy z!cHqi$t^M5>bGHc+Be71P@5~?wpRcktbsQYMD;uZ%AXWNszmZ}Y|jk&3U%wlY<2)C z_XL3i*mI*^K!&vwYT&l5_AmB5w#TRMaL(Ng>M24XXkYmlcsm?leR|3wG>Z3&9lpM! z_BHkxrL}(`nmkQm$@hXaM?PflOB~8Quv@!wamgD{y6dzubSULsNCa0V=y$tn0zApw z|3}w*z*F7-|Nl9uC~{DCRv95OGBUH1St=5lN!cQMg=A(ENunsp$`;vMB-t_#vdM_} zJzuA;&*%Dl|F{3`=62maU7xGtoY#51U$5tQJnql<;x8@l8ec3K{{H!`2$?W`%8#?n zLdod^#5C_ezuw$)w%ZD7cE*7bx_C61t;{6yDCNGJCT12X@jcnLx#DT#>&?2Q~S`ZHjyl znz0YS1#R_3O~jFjW>eE!95nLT=62ib^Yc)OZ^-O*0^?O#!Aw)|p;ZeCq(v7>_IHo| zp3n*};kYo^*Y^RA7CpG1=E2-}>gmAl<~W%+F3BMav=r7lQj(E&4$1z~JY0exwKtje zfM!N$_-W7gLOVJn=6|m|y5P^p6i=^LLPVn|HwoHxPJ3Lu(XY*|FdjcSn<*rD5aXY* zjABx>LWJlu5aH)Q1bI)2T zua|=>20Lc4=#q@9#?AJZwEq0tTRV?I4{BPA?XZTk#;6CIzJ=oH6OS#mN}qC}EAtwW z>3K>*d&0C!d=)}pbj{9q1bpjwdah-1W1(!Z)ZYjNcMqf-rc^nES=e)nNyelbh;Fa3 zLQ3#q%kJ^gzplfnZmVP*t=uH-urxgF<7TvEu4^lkMjJOWwK+B zuCT|i`{hBXN8d{9Ms&};yXv7yt&~BvnE8P7cql2OXOX+SFx8h&8hX1}nSH}|-@fa* zX85&f?%Ty$0fYP4UIZyAil?F$>Ra^6{w=KhOD-&&RDiR=`ua?c zo&~;yr9=GLGv!2t`nC(KoBu}a{a5t<1yJ`M<)Y$yh#G&g>fgaDC_Ht05JW|C29aKE zO2=g9jLlwVUU^N&eZm7&`q@Q%3u`p5sQFlF#wgtatXaZ3TTFH~mlYm^2BvqK?HU|_ ztZ?saxA6~v0CotgH}WvqY>np?2mQ^2hCKZ;r;kOsDQ%x$$XWH~7}c-sTYIxAN!)OR z*Fi6mX+iLIt07MK+TFXKQ+)VqnfOCXcynkq0-RVv$T!vpY#N%dhlVb+l8x$S9ULV; zs;Yz)*N#qsFDaFEj9IduT_bs}efdkQG+~B#)?7?B#as0oJwHxKes*SO{_Jo9s-J>R zv2!jLhB&Yt3VX0jN5#2HmoKnf*Hf^%?v9cPB2J&nZK=Oy#8bPy&4{Yp4li;Syl=st z;qz57J<@0P%ILEFox6=e%nlHYM`8_qjZ7A4EaUW@ z_}ddqNW2aMkAQVNTv(1>>~$Qi8Bi!K*d>gve3s@ZNR2dvfX;T?g1E6?>B5h z?a3{>C_p;x`MnpF457&^(X(?$<=mKz%U&W@L8*hm#it~8#srkRJM@Fq`) zx_n9&VTMCD=`8a`?Cit{p`b1Yd0(Ty(ZpPWSA@r#jw981le7I1MZ)Bq;skgn78k+r zb!VH$-|9o}CR{lkCts+|c^a>xHGRA<_}STwZ{PulOJ~TBYD1>Rz^iMja`#b8973(& zmk#=k!M2J3wpN>f;yQkM48u13Ke5jS+zHyB?X1@LWqLOT@vnbTags4tcopF-e7xHYxcQlQ}j*Y~Vgfg8YsgghK zSYcIXTG=2UdDHUh+2VU}NOh_yoOB=^h?~s?TpA?_}3+OK=V}DR&m|db+1Dk3ybc zs?UNU#Pz=o?&Y#l1=kKjUDCRkQ*zX~gk4gYD$Xbatm2Af#`4u$tGI!|5{G5s6SWH{KlmC zJwD7Nd&+s2^aJVYvFqg-*WTedTJ?_zlP{JOJ57G{pvU8HvItAX0dgVF- z(Ug1g^m1IwCK$UeQ-b}qLWCmi3AhlKFQ}FA?PX{V@@&Mj?C3jwy^0WFC#4oF1I7!D{8_!-3n6qQBIY~Nb;xE(w;jxShvF4$x9N*I8=FjW)ulhEnC+Ix=I_Ru!Xjl0D zzwQZ85;)tyhS-RY^xSe~G>SNLi_b!|rOlSh)z!4x)gU=RTa?m*Ta8?qgP@k)@9F(l zv}py-TJj`iV6%Lti{uKcq5LzI4x6|`FG3k_mus(BrW_iSHsF=0Xx?#HPn#*@SE5TL zkZf5pS;kyj)+@A32yU5uwx(PY9?ED8O@d;U+T1QqxjI|(AHx-8@AS)he#-wCsjQ^L zH3namTYfFl1Qvwxou*ZYL(X;8gex%6^p}`6QJ6GxFWZF|S>-jc*AJ@pV$0re8Z~wB zp$67XTACZzy23%asCf@d5C}OZPURlPAhqKGqM@WL0!Cr`-jG$=BgG>QMAG`*GVD28eVjP<(oAGxD)s ztb)eaKb#yxxJ@|pFKpiVtA-cQ?DYc`Uq($^u7 zB=$@41?Vs(Yed7(5U0|x9>riQDwptJgVc9W846&kezK?omCUluvEWb^rQ*()R^O|9 zrk)Enom+tVon6I1uOPp0Mf0?Uu;-3*`HGx@3>s*SANP?BtL0n5D7Kb7o3~$?CRf7n!R8lacPw= zIlNsy#h8%Mb(#e^R=HvWjsHk6b@ca0=U)F zE9uuMC131>uCjJi?+>`ld$aiS^von#8_#{-^%3gEAhB1@m!Y65*Sqp?`|vWD27idN z4Hj8^sW0p`K2pQ$nwKu19bJoEp2)bz zsJX>%=G04DR)7UgshWN*)~^0*t&#aip&1_UUa`VeL=^ql8xsuD;U%dWH?^=lGSxzg zzOMVHb&iLPCPMVa{Ry_q?#>p}IR*z@*?v!F?4;47lI#oqEm;Nnuv&HF@8d6+*H z+lX=y%_b#8Er84Y992-&ZH7zZx=*Do?oj&N$Hog;M6%owOp-V;bDH#TNtsB1pzp6x zMGe2WHQQ=Jm*Q_^p2|zF&+OKOeyv~tO)|g)t`%A9zijx1zlB<|x(QW?t4{sq5v~e4 zL3EGEJWvr#I`>ZV@2%f%g!`R_s}#C(d-FQYi+~HsQVM6ZKA>G&0dk)~ov+b%5_tJs zPW5Mh{B`%G5=*cE(x~^ODg?`4c(x68k-JbcKO60MO`$GV=${ArkPk5>yAFh$T@le; z5Wr@L5~Tl$VE+75Qyo+OZOQXW`*cJgd&C+478)B?1J}2s3rcWH{<%XoXWXt+lksO7Sd~MKP%$(!j502 z4QpD`Zl2suFDsuo(ZbQU#hz$s+zUQgfwJ*1aguG#R*wOd1-|knSrbMP*X7Q)Z5tZ( zQD>WWa`|G9kD}|BC?~KPK%gvF zPLeZ}WoU^%qpK31YzdnE*PU;}$H4$jQ!$qpU6DubQ$Q|Le!Evh|LvF9jDJix|JAan zQU*pzEuJeMSxTmC5a&w*P0J@UDTt8gW3C(6fm>0Cc}{^*)HdbAy>IQPT~h|h@{n!M z-tI=F5nt?Fha9H$`ez94BzQ`K{%9re3!VVDKsa9P<-9lOhaK#r+!h>S8e_NbJ+V7N z(_ifR^X`wX^h@=t&58#($4Snl-$XS$ev^8{m&uR#u!8j|pfK!xVBv81)j2t~zZ>uv zCJ!&tg#?ZDBK~z*b&HQ3W{Ws;K>08$I=T~>&w{laFs{1nk=LHGYF@zn8xS|iqN$mz z97M^2!GGKrtTCCK=nBIhgqRD=7)7+vP`ly=L@BJAbjL3s1JcOA)|SDp_i(HLUYwq) zRu$~DtX+DUc*(QI?dYO-`oS>6eV|M#&QQUV##Bz8wdxlV|L(nC*{*7PC!+@pKz2cLo9R8^2TybqgwXQKX*8v^Ko zH6<0FyY>)+qD88HTfIl{s7wH8CvC}15zK0rJRT@L^H7%Fx^5c-4LBLXAo9<6X$Ai8 zbra1&sl9$XjQe`B+AWrdHho7t7fWUxFDF`W;&|Q*g@NP>)tD<=L=!yMl0PWg*X#Zx zb;C;)(-QYBij^-e4V$Z|Y_>UIx6_L>#>Uy~|2 z*il25=90|Fr6Keeb9Gimby)QdU*CcdN|2qi5=1}Wh=<-@=R+m6XWJ-pfOE;Ap~>?y zX&g^z%CGddmVl1Tfn=ce%oH?l#!5Ntcc93a1zM%Y<$|;A75VTQ1JK$Co`lq!rfllz zy`YkrQ(i=^;~zBm}30 zH-Q;Q${%R`q}YKnoi#6=E=;JV5Z(vE{$BZbDfYRUHxvivBik=_;Mx++q0#8jbv9vT zVmR~q`{DC7n36a;sJUla##mPoqe^u#AIADsE1V0B>;!+DDrjNQ#;8JTLe6zrMIoXw z7Q^mWu>YuN6<{uJ@vMQ8<}PYdY#BFI`Rt#E@A$saK@u86sMi<4QjeT>oHZ>Pv=4T` zy*3qfJ@+4G#8?+7ME=c;2sHNiwU$e5;QZ;tDy3U84`21Kfs_jmE!UKv{a82W_X9rbtyVRT;~Z5#p@O4c zN7-zAxcQIH9cj~b2qCC3L(H9X7G1S)nB7jsSy1jD+RsvUD5I>~XjZ`SypBdfkS>1T z9>2uqo{PGLZPTG^&-Zp39-sGILf8Rh{y@Z)`J9@g?X(x_s0R^MF;UFnl|EFAoZzz! zpuDvbYQ%%KaNr5c^VDV|!VQw^!A^Aa;_(;_Eb!0@kT+I%YU)DXGol$mTj&fhpS}x+ zPMAXFF<<||(APd;_f1Z7^ z52yA-;=(%ge+q%tM(;ZTWY?*6lCOx*q3<#o)9y*gO)WZgC?d3g(=Aniat9PFPBrJr zDVrV&4c+DRPtG+Hn|LC}b9HKo^K_okq2=7nvliU6B21zTcALN zvs6^ACNn!RfbD1mK5g$0LFW0OsY4Dc;X~MWIpd(JDuQza)svrzjOoGmqt7RTTk0Tl z!agd9j7j(oI-w8XUTa0VOb)4QZ?u~{h*?8>^U|7=gi0P@RTI8+j9^7wzJqK!hB@}` z$IM~ArruNe9#G)^peEc``*CZE-kf^u>;^kS(nHTKMep+kld*cQ&PcN1QBlWPs^T0z zrmSux^UWsXN-DjQUsvEB`=B4QWCF+V^UC^Z>g;d7l=}&eoIPo_`D7$j;mC%alrF=T zS(Nt*g-*v%*Jh;7Qe0OGY&qJgsMEDYfT*^q9Y*R3^7VrqjMlQ;)PUi z&=AYDg0^F9Yiw`cRUzqG1=qFXw{NX68Abdc7yyxHFIWn%O*DLhBAey8!w1v=7-pas zP2Aqp9P*_8Vd$_M38@tDTb>2ZxFnbH=FVLD1yXYhHM=XhMeB5UTDH5HClqV4)_(7p`Ov64SxXuRuU zDH^tQQiVo%j3wDFB;HR`f$Yp6`I@b{$p=+w$(hT8SJE} zZbCySy}7Mf2B+j!d=Zb9E-YIyG};WG5igV|?tb9B^l|BDi-wD`^e`+Nsojo!#KFSa zWQSIdjinm0ftlCO)v;Ez%uAJfzdL@?waRosm?WzqbD)utz+i04xINB6YIBM08Q*MQ zKAsM}Ntof*ePNc>F|zdHiJ!lJ|3(M~RQnUoLiH5-&QrTY=D=lMAuT? zlgLr!sI!)Ss~uvuow;NwxP(*bjT%=01<7^e7_+W{--bxns#R5}J8YZ%B8O;k8j?Sw z6Xn9j@tBX{u@)AW5y*`dSm|+(EgzrJ0}@AqNq8m8?pZQM9Fe(d_u@eH6IIt2pN@EW zJ)}09O!7z-__7^5?6xL+>ZmN&&g1KOJedL<3{H`XbBeCJzqNYYPd|K4HM5ChFyWiz z=#aO}Y3fM4A4u(Xi#e||IMljgH^;2nf}8b8?0!GZg%1U%UdcnCC!fMVxarn@NUr~! z&~!_LABq%B1NY$nCYaxF9GU}G&^7tM zt6y4daDgWPOF4L=x|4b?GKTix+LZWsh~OOPQHqd^WuDeRH;>26XaP4LvW0tOwC|&v z?&{C?a(UZqw257o(0d2IBT^Rb>FDjA_!;40@&b`z|quevwig!^fn znbbxh)xur~kG^2ZuC4Qy8HD^gHe z?F+c`DMvBvOUcifFR!QXk*n}<^9qbgx#TQ;f(l^s3q2MJf*{IWnqLh`;UMDgFR-W? zJwLi5_Fj1#0x^ECzzHBSSbe+c5E@+LZm25Tf&B;|&A#c*m+zqX(#{8WRh6`KFZNy( z6sLh(LbK{0$|OCk7(!zN&S$$9{gORBezyfyvh5-lPvUjgzJItNh|7dc9Z6LR-Jxs-c|(YcDZe5sn%Dc24mJW{{%1LY(kVT81v=gz0GLxHM1 z(K02MV%e@v4T@9i-`C0#TZs23R*s9xn@Vi{J?7#SC&&mZtW^F|iK*sz&U;pRw7L;O zsdRBAn>(e9Uj^RWgzNtkdlj|)$LK>f&9$U!hP@oz$RC*TviocAAnm7`&s{o2Rg8~X z&o=#LDKjJ&jytcePv%DMGBR4hAvCG{MUGj3m7enJNfQ4lOhBzBR~@327++N8)j80* z0~=`$=u!D#{JzE<9jIl@D3)@P1*Lim6YD7BjVAoi3p$VbBr#fyD$FI z`1!#Z$#EXna-Ac1&D^FJb zn)&eQd*dn4st+c$B(%y|{CVjeHMB5ww7@+7xi~Tc>Y@6~LLLg`D;>=|H?pz>6bzww zn$38bNigP7*MDA0nT)`LQ;ke19Wv-Aav1O|VC0!Ev(mp+3j~kl*uJ%pcfzb3{SS{fMtFtaDzK+SLeZJ z4>Bqe zM-70?q7b>4K;I$p0isIDMjCo>fv2}P_mtlxU|?Ii+hGT!cPcoi?3`}cO zjG%pk^jiZc1A`#aA@oA2xLY!g?w>&J>XQqM4X>q^BNcw9CTopkJm{AG3tZ@A`<$gK zh$zL}%uLq{M?Broh=@Tkrdyz9w>-pP>;2=z%VB||!C({BBm@zjxSRx1-=d*2?SIYs`v-Rb14@Jj_jhy59{(Ba zI`vI#9tuA2&7`V*2T)xeLL57vetzEZjpO3*5Xywm^c4r34Tf)F_6+6xwoLjFJ|8p* zgNpa&9dxl)KzKEJCXnaWBX0(H9eWMt6|e@@3LPFVX@QnY%6-fm>2$%%M5r_wDB#1c z_Ourw?RiKygahIor$2uJJva4(Kj7QwTNP$0*xGl@*A-8Xcw;w_AP8zp*7rM*kbCV; zqO{k?wrAoZ%v8;ICo&Nq@?Ro|BT@!_upa71_9cA83FqJfSuoC`IOT5~9n)r2{q%dZ97R)ALfksRf^n51`nr+JFg<;A|076!)>$rhrX&#j}f;A#yU0Y;W z0u!m_Uz%Q_A||01Zbf`QsyA=+in8@>KOI1hhcYNQY}+dur(L~1<&kGGnQS>?4BoiFGTtwzl5L{biFdeyjx^e-!nqf z0&O2=Y2ved^m2-Qa^8}uc)0b~H&<(#y7lUf@XF+;L>XkapUQC2k}K~gV2g-HJ_w{c zLf!%sfniWxp0b;n1cl5KDoi)>T7>?Bq!A~abDqPrp_J*-b+5j*)dM1i@3NE83e%^D>izg745 z6!keq%o+cWX+uVvSYE}{L_Gs}N*G-x$Ok~MlIq%~%}Y+iLoj>dXSl1f2T9foWI<-; zC)h&exqtmc2g{_%7ruS}v7e?;G5o20rzV0{9HvacdmfIf^QdF~v5EetjEmR(QUr!H zB3Gcv*CbGg;Ue>qN0{@JjAR-(1CD6?{Fn0|bMZR_)j1;e1?iN^+08N^XLufUQTRL| ze^SDla}-^E0QxL=237qZ$28HoTY}f6Pq9Ck#1lgPoW$vrqF^Am0>rcKFt6asnW55d zxhKP=la1~rjUtZR$WRZbfd*Vk0~1YA@6-~7J1dR3UJ&{D?SrU*mcqddoB$||DkSEV zCMP2D`F6`|D6gy{HX_ozh{Q{u>@urjr#ZKMAPzz|}%TC}jp#0D+}|X1sM9 zPLzNDDDU_2QV`}N%{SD%4c^K$O?n?d*uDr_mPx?HJ^2jZc!6G|&s-!8dv zQ+zD&WEMmVNYpYeHt&+`k}TXoxxeEG)&2#Ig)0l!7xWfxEto9e8n0eH{x=v|Byu)* zwYR{oF1={@wu zHAAZgFt~Q8&^iwyHG!$oGN@I*yH)Aw1k^mLpQZzb4@m`X2UAe_1W|n7U31H`8?oQB zXL68sxaHvG@Z6!&VZ>qYx==^&=J~&t0{qekvSEkY3M2-|Ze9zcnONq~u?Oa6SC*Q$-jo z<19{g(ey~qvs3q)Rb|NGTgBf{tpu=$6PzjC99NH8nE$x)UYpU!)#N@MyA|YtQEFsKKnFqNPGH&*R;oxc8T+DS(3L>k_ zOr~zi*&{y#eo^*UH`>C7+F{2Im(;Irmu4cjy$=i6D$mBr2EcnIOqAKx*?=PYjbN%X zbN%<;e}JOm!;9o>e@{OVWpAJkP2YQ|S4iz!HeCV%nJ{*c#L#9y0FSCMM z79lhc!z?Hg@|(~^=5mD0s`T_QNu7YlcW7%5!fur4=%4{&NO|e``xmWsyI_;XKhq#s z09&0~pAz>^EdWi1D0P~jZKurx!45jd7bFs_k~bbm1Qg$d%Zb;0t^>tc$+(2QJej9{ zXoiD6UmPmWfy-xJxMMX7D#-2GDBZtNXlVg{FcU5NXl`BID7)%K@EAS_fhzqSs1NFC zm7a&MLYc`2TzO^Y$2w3`mc@gZn~l7Y64OmTOXl?>QzPND(}mlSSJ8wyAC8>mdinv> zN2?k*y&v{`vxYY$IvP)XCH7weH~}4R8%p&wo=Z7Z5gejP)rJWhS&lz?&}gN&U(lVi zIH?$dGV?yBlmj z}|=ik;J(w|T)he`&vm z-z&UoR2^kwlqu6LlU|=ZQA7g)H-cAlP^cvc)DbE5zz)er*9#1&FkS1ewt~@Lb1If~ zl{c8~f4&gV3rI(<#Qz(rN<-D#@*%0PtuR}Ds47^S=T@?BRZ6|KhD!cO$opkfQ)2NH zYp7;&{f+<`iW>N98x?3@lK2}e>>;BTD)+*J(Ff(;d3MzYjQ-Mom#+1gCNToClY_2$ z2EGhF)ix5l&nFPsA*GryUM?s(1Ma%CxA%^#YZ3>_BvXE`q5t{VRpIwxx}*5i@{W^P z6QkKl%nN3j6Hwow8vySXQqvnh!xwn?F{ma{8x$i_2OXh+OBEo!6cKYySMeH84DweQMVlAX5mH5c@k>@HnHf6dXaLfwuJ@H>Zw^r&H6`2q7`NT=Ywd1+cu-Z^4JP z*`$0SG(dFauWqxH8R<6P_bz>fs`xijQnQZ}jMp)4mvLX2ycyc{DT`bJ} zud}M-C7RaLccDdg^C`UiyMZ6*GaD0TBqFaOVr$QSy2c-E5%kV9Ro0u)s+)V3`X`U_ zR6lUPV9D(JY$yr9v`*6?M!}jwkQ859-zG`r*nEE7>$&Z)IJs z&#h6#m-HCZcLd&?$U)O99BMeId33&qZ5j2Rs!E0&dCr}uOQgF2iS8t9nH|*kv7P?Gg`)Oup%T8u{fbJbRcT1C9TK7;} zW@Nw9b{FrLwXNYk&Bo#lu^hgC0MqfQeRJ$H(=Gg$Yuj1ji z5u8bfSug~wGVg8C$CbHF%Y@s!%y=rX+UU~U7eNN9mgXf2R7Ehklmk3%x|iqUoBiXK zb)?bf_DkI7__S2*#Ov%wWkOr`JSOA|RrOVBnWzp14gvUtBW?%^unSXsW$-r#F$5$Q zSvNks;rF5?h_@kS31x{!pmDvyszv{wpvR<>yCm5m$aTEB@9zu@d9`AG(^Y^f7J$5h z=3ny8on*`OzF5xvwfue(mgea~bHCwP9>S191)v-y_&WyoNR)nl0Whw{O=_p+Aejdc z9{e)6c0;#`o1DYovf;{K)#fhPL0q)@(cuYm#(JilSB8;25HG!{bVTp{L=i$SVTCq0$J8Ld1i zP-&ZTSEu&{cw`mbN8T6YMJlnXx0*LRd{lQ5D+m(crPN_p&tLuUZAXXhtNFCOv1r4? zb-6Hpi}uF*o-LQ5FIVr*(*6u}jms9|jy!s+aqDtBwS&PFcVsM*8=N|&$xAkS$}tK( zHgQCJqak#o9wsn=bJ^Fl4bX@p>5$wmx_mNy@*$B$T``$jl|7l7q%6K6>Ab4`EA=Zy zk!WZ+C4v$ z9zgnt+LP_!^&-X;E}b+S`x-hVR!JWHutf8BN4-$nau1mq+jXs?9lS2xreEHYTXTY=+WDHA?29+yCkC(&g6jJm?{RO&3A|zn`k0@F} zyH4G^v_Z*LitBZM;sFBdDsKX7@`ABUvyG4khpY}P3~^>Ko}94>T68x_}rf) zv!#1xZ0$akBJeA!oxhsmJ)YW6_Q`3YVN0Msusd+2+3-G0=pa8S1HV;k&-b#>$N1Gr z2J$C-Gwxa&<%aG<8xnn^F2>(o63m{oluolf|2tWV;rpnhfJ&VPwPRtiFi1ZEkq_nWcKue@rCbC?^ubpBTN z!xhI{PK0IVs@mBaE+t3o(F6g(@qd6q;QnI_26TxJ zLYF{Ihb`xCdIP|1>)du->GePHY!*(hlLWBKW<0eka1T+l)djWCTNOl%K6;6Bv5xrw zEM@yyVb@;}sWg?^=RSz#tP`zEGhxYYzvtyu=EsquFs4BHuFaJCqTYM6nxz%;S99nOGRmFUB0YX1}%FuvV~W_T`81KL8z!x?k=F+)wN3jHWuQNi^z4j zNAV(nloy8^8ojT4R4PTYMRWJCRoHcGk2`sY$sjgkCkIt2$Cn|OJI_&!!r2AU&JLKT z6Pm{&g`_Boea1C^m-g4p7eUmx5F#uzPj;y7k=bA_wsl>8L&b6@ zh4G3~F`w_<=W{_yGD9t6S`mpvgu&i;6d?@G%ZMJBi^1a_p>#vU9MUOH>cbTyLGF)5 zW6R8ttshNwfsDWmsayuh#3ryJ(zJh!Qdhe6hYTx$0Ew^p71T=kk`y2+$i5DSv zb5F{J{dj-#mshF@#=Rjp=y%Wg@sGiX#(7cNu@v#ZEtVa;syW>&N~;4&jqt%}Qb>HLM z)~5n4@D`B*oM;a)%#4A4bA36F8C@9iSxy0?Dw*N@@)Fbr9OSOw>&_S*M59`Z!hegc z_nPSUuVue{O()qD26=EVvm&2}E7zxa=o{MA+<`6s-PlMaSu+f(QmKtDKV%7Vr_+}9 z4Mg?Dg}{oDyB*Fy8_=6)9wxSa{KILj(%z`)^G|H%6no_-dFKrtt8oN2bSo`HF!!@3 z$}`_065`uo7Jzt~yF+ntZl(6*(XCfe{4){Ox+1PoUmVJ^mUosW65H)L&!AQN7xr!C zk+;f?3mBxb`#rL!G-3GppIX50Tg{nB0vVvA&>aNaM98M4b%^xdSAlgI%^_tkQ{Q_8;hQnyJ=SyZj`#_w<-b}4(hT`z88NakXf!w zG+7&nx~|j(jM5N<=a5{NM26s{8-tWqM3&JF8@FJLDY)Cy|16;XK|4>byH}DMd zReF?Hrj^WyQa`S1Atv4wh>K7QJ=i5m%Z720t@0X1}(nu|n zXJjoK*SyYWP{He1tJUG^>CaA~z;_u8DP^kqptEpAIFcoiN8;>%8w4g9OsNSYQS;D~ zdf@OD*|Y1%4v>iB(}-Kw@>;PC*p+zcc_;v#a}E6sH4*DhjB5b@*2fWX?rXKbAOS$A zjC{y}OJ1ZA8F)$|6&Ant*HsBOSlnmIqF%f1iQ*5kkH{JX+SXP;N;+6gG!e`pcm0pE z%fJdbyEr`AL;^wt{9;4LBX^VD19~1!|1z02gLKnYrL=REbfA%XbP?2aoKzo$wj=FM zpRvvjF;<5qQ@vbwG)n)GF~JcHioWFLipw;TpZ8GDRyzckN2F&8uixgfJBA0}tH6}E zHjuWY6d106*IMV1j5EU>>Ca(A;dP^h+N^rT@1JKO7@k7%^ zlQ_37)HtIHs;zTLgQ0@Tn}WL2>qp8p<1UHa8uA-BqrxD-ftYs ziZS>Isz;(rpX6bvIet|#w_XSWy>ps30S!;W`mB%}ioO^TljEaAy!o4L*e+&6iFn>AVIyN^V# z?q7Z{Iu1DjyZ;}**Ms5z^?SvU1ULz(Qbq)C7B>vwCo~NUSO)4}jn0|C#T7wlnN33C z!ZXw0GN(BH=(xgZ5$-gBQE7`UBbEGc`%`0)JiIQO>yg*zTof#W)LxsGHf75-IX7AI z%^R?cFx#M3JeP3ZnB|*_;ma5Kz8OWs5EPlSL`x4;C2#uLoe{9|hoE#=x1(iP>WkUs zUzspvMn;_V!{@_SwIE^OQqf$_mrG$5@8hI~E+zqCj!rIDv)MbtzGM1?d9vPU>DdGW zuASU{MRCnYp1Fdso9Gf>hhcg^V|_!2p)T9KE;Vm5oyk6^V2!(O#&KjbaSWMhxtejv zZ2LIL_nB}hx6DOKaEJrEwGb6fyjf{Uz7ohmx6?4`CA=$p6Yp4kKs z6&BE=O~^U*A}R#Ij`<5z@T&Je?=F&pGYW^;bO4;Wk}$@ZgVL!}C$TEzY`Q)Zan~@V z(p^D<9FIHUjXa5JT@||W*wV#y^r|KP76!~Us&GH9LWDFFA;SI3qkOxG3N|^G@<|}Y zSa95dFOFWO1oj8>QvfyNvo3cqU#p7^tvrGJYZg}KD}TBe^3X8+Z1{2Z&09YH&hgW=&m^t+hjqYW6m-!N?J{}oLvUKsN+dU&OPuPE?fPUAJbW2OQHLj5=@(7!t z0%(-i*r~IAu-t>sx8h%gYPc_z!i57omsYN14L*JJistAulrh5Gh(P)1F0ph9)*z!( z)d8z-F2A?n_-v3egl)g<_wDXu%h3uam_`naXB&GlzxP@2K39^eph#r>h`~PanQb+( zi@Izb-+qDv#{r>?)jE||r*N`C78dLg0Mq7n7 z-@Ky`!u~$Uk#K}+0P@%u_23`&IY#+A)PC}yRICHUhOv%LDw#yHNO;I|h?M1tdwweS zJ>?ikW<7-UN9S)LVD%zudf53wqeFy?vys!WqFtxUF{87^pMJQ{8=2X6IH`h3(V zgBAw@j~XKW80yG#GO!K+3}U(+(WfB0EP+$M?PnPNdK8yN!7q~Yl-{2)zQ4SKhA$RE zuF{Sw+5Z}#_{?pt16-xED==SFF_&kCrf$OjfF3 zN=<#}<2%|w2H+SAfw4_Mb+$mPZG9d2!e>tXO($TT+Uh^oLmhmeU3^iZ4CGVu5Utr; z6FDlKaEwM-0fLr_lRwTWUIc}h6Ho(s!B+q5JDQ_Zwzl)UK9pV$l3V?!sM9$B%QG6l zslXU$MC9)2yqbZpQ&&jgiNM>r`i&ZC}XQi{{x zL5>T~NHdH^Lk|Fbc80JHMzd5Chk|_7e$r20m?st0MJm$ttbnjovihL|%OXU2CKmBGbb84E4W2b%J z3*}Fzs(!PO3&(#8s9e3jFuEw^wP$hYGb7Qf4_jt2$ekim@dn^8f~X9jKP}HnPsSoI z?0SjZ7Bu@sP{SAiOV%@QMH?=!;%VSg3{m3%;?jX_hpN6QNXduoQOzasbG%S|%{-FW zAay(WOgA?652m!;ZuiE)EE#- z_({7S?V_}WWJ;J&wA%Ir?R$06cFLF&coEcXShcgiDSafEWdi8z%^r*jPK0JhU1IS^MQO72C()lYCpRi%>mCrqY zHDL#)J^Z(kMYLAH^(BJLps|hL^g>leU6Qr5rY}r2aHxmMvJgM0Wn0-0X!LvV!$d_5QiC)pl_-DoOFZfa|y8fMI%Lp*30rNO2JY2P6Az zlHRF-rsUPg!ppCm&D3s-u+o{ynV#ZX$p%6e8rx|%NymJH^(e*B2ihL4@5z%%4+0eR zG5vaC#+=_5yuD7BBZWjE#g`Dxr+ax_?8{A%MQ5_dCyz<*ZG~?yfg9qlq5(t=Z)x_w zd5gQsL)y_|TrONbbLKd^1rLP zGlbJkJ0pr}GWKVtKcUI1A}`L$arV*Nh0$aJTt`@$Q@0jsU*e8SHWDpv7}EnK3rzpU zJ*w$gK^4|Go%un@mx)YTGZFp4gp<=4>s1>lqjAR7mgV3ma#Pa{NiNIn z7-77o$X{+ykH1L}2`P5BFs3;*nhe7uMfhkNa_P77&+fMlRN@Ky-e4pp;M&1oPT}Qc zk}Y6~OFA5)4Bs;SjYyRnJ4UZK7?=Ale>kV58`T%u2t`Gs;5K^cTefn{Yc(w8or$6M ze81N_F3+oJJ9YK^@n_=gXi!~SCi;A^ZfL}Tp^$W7hE%S>JExD=EnklLdyPW={tG3D zs09}!CdB1)yyhO%r?{yOcappy&E@IYZ-h&WQqKbfQHfC;(H%$yvyW6W@q0D0uDoRPkrr`WtVsI9kMTcn)BHq6cTU94FNnqNTOy(-zU#8*Of zIpU1?cfEo;MkJ&P+T1R0#|`Xv1gnplq(4W5qriQV4LdH4@!v?7gYIKHA9LZ4gAH~Sd7&UOcN~130-=oDa7(d7TK7m6e8}1kb zV1xsh(b74L{5cJ4^U~EZ0UpT8MfMnQ>FHpe;xsvMrOSA=ymHlFOF-`u_dSU+*yZ)c zE)hkQ%KP6|uFnrpQ-*xi^GHNi`SGXV9{3^`GERp*tJSys=TL#&5W$w>3tpM%gndj8 zPzgVT1eHNUwAkmwU>Ju0$J0ro-oSUgA@fA{cn0gm7BLFd7>CxKZM1;7iF&fCE3Y*COSJK z%JeRwovlZ>-L7&hh}-zteisIR0YVB(_Rwbay~tuVK*v)DGbk{h_IVOyd9fv$Qo}Wu zC8zGk&sfTb(H7(c0gZXCcLC#MS?x!h9jABT{gpp`%Ks!Pjbxatf?f#2i~Z}KX;Ioq z?w_E6-#}#Uq}pV(M{=gM&rQ(Gupec9o zqybCm=UZn3d3rGT?m&5>2r@KnzW6>A5DfFlWq}CthUI%gk8*ipNtW%zf;Y?S$VnyrSSDh`YY^aWf{{bc8aD^NFm0IMKMw9y7 zAX*qqhIut)ftkc@Rf?8%Q#r9LMxzs2Mi?^5wI|5;YWL;SKf`G_S+QUt>RM{>jX5dS z6MF{JtVBpb84m*i?*+0S)gpiH8zg_!XwaS8hKMgh^^c0J@dyT?P5B!Zq4_!K`XLv` zu#vN`>Y8P}lk0o@AEGZf-4592kkjdK#$Xm!yFfp_GjV)jS(lupFS4fwUe9#l(wckvK9>ur# zKz{^8YJX{okcYyLe4zKMe$I}%a+Lgn)~+5yvv%_&>3Y(5n6x!|UMVQyjVY2Jf<&f# z&af$suz}Hy$iPoW>68rD!8%xE8%|pXB;jXEoy-9U&>wU-&=64{2>&z5k#baQ()@Ki z{Be?1CLBM!0_L@aNa7|{INwBoZdX|rIU**(vius&uSa%Ag|Wf1Baq1+eg{;XM*I#vs)A1)2<7yEb(Y2|+2nP`kaK=8lv@IO|BKYJmN z&IcWPA6x=RXpOnAXY*W>Xt%>XduUrHvH!lW6}n6q?$P0j$2E#UA%iAPxGcat*4KPTV`%>$Tkio*b^rg5=R_SLds8+ct0G%= zwo(zl>E+a1(F^DsAGe_$h?4JUA$hY)dRQ)$1*}iN|7u^hZehoJeegfUYAAPhq&xMhF$tN%;*dHG6>n2OvHp@+L&Q!-`s^6{mZ4mVC6-CvdmKe}e z|4KL7r7_GrYe>`yoVgbuXupjPCrDf})y5|oMz(z~be_i}D*(PxaCxD%JI4^fVYD$O>T+!-bL72{R82ecSV-?hOgf zbi@ZlK0=5uH|hx#;-yrp%tGkJE2F32+@s$=u>S;*V+26%;L?_NU$q*#Zi$c zcMxEUfYZ|haKE7+z{H0`b>bOxjD=1NB3cZvDMx*7AtBcoaI);BO2C%5JQiz%+UNrV zu|k)3ngaOk+z?C~;OJ8jwqv1%gRXn@tq5?rEtrWd4x+FgvokfF(R>6ZKbtUyEsvhk zae4CNBZ!P=0v&*8=hnfVtP8#lgd!o4`7qc)lwY|Zmw<1-eNO)#)9|io*<#CB=r^{| z1pa?B3|gxtfWbQ#Y?<(~@+vKOHW0rf_;U1n&@b7Vj)@KBi;*&^Sf(dv#H`>15;!wN ze%0SO)OKK#Gko5XhcOEG08jtUJpH@KBfFynPL# zBLuIRASD>HT*we0dv=g(B;uublZPY}BZ#=(&;AmryoUcHxY zDEZTR1Q?UY-bRb#_gAb5#*?`S2^0{QLwvb70rkTgx-UTK71E!dRy~+>JvrQMJp!%|ea-_3*T2gaep93-y6`tSG3w5aJX1L?3r|u1YfC5(k(Q3$MHTM{S-TJ^Rs;tamM9K|z}?#1mjVkW zEp33yRg^2})p(U4BlvtHF~&1-nnlhzZ{2bz@i1RnNP=HH6ADVXqxL6;Odk_RF`UAB z3;g~!+gW3#mxHe~C@_uSK67{{{>7+t9e?@x~50 z^Ot}#S@$z+qM+Wh!esy4Y?PnW*+CB|EY23AZRAmRCYCT}-&h!{Dzk%k2=t7v!|=^)fFYAcbV6bXft83_%-jfcUYi4_ z6p3sppd57o&%_GVuGM+VZx{Sd|HT3TrE{9`Sjb7X1y0rNg`YU5+JGctuX>RL(7&@>5O7x)eO5sh1 zwU|_oOkaQw?M&ZR=+|*i96Wb`2N{KYEA1HG-pw;l2RcQQ#`(`d@x6=budbJLstdjW zS?k;fa5UnKs7PRw2C7CGlqs||ZSy&9@KUJ=c7d(?5t{vJueYBA3PR>veL~XBPEInk zH5(P024}#fm0p?YfMy5c8sE-9$PH@@;<4gAW!UfQ z;&9q402ZA+V$QuJ_XPuXmGdHVsMND1e8J|ATLAZ;dB#~XQ6@w6hf-rmfjR;OQXULq zHW4?90NGNMZwxW#qCpT3|A`@xZk;=B2gjDk`qMJTkZx}Rc z-Ggn=rTi9UeD{q5+k6|o)#_l9HRg*ziglyPZ`oTt=c5{EPbRQB$I=xj1;QTR0(8k9 z?~;}dfHkfpk3bduHZEy^B)}XuMLL=}`~SHb`YwY36+PTWMVU=1ve;EaEc4d> z?bJa3Xmb$G9rTJJZ34s^K(1|SG<1uQF~`?}D5Q5??NpcWROxXzexgu>LMMZyAkx8k z(M=fP(6{BZu5Hn%U6{pZmZL zCC_tXR`J0%F*GU|+qqfzGnTJO_Z9Gm8fj)5$6ep5BMj2raQvh$5)UghY3;fe9KNs& zH>|rxm>nq5&b?O(W!+S2Lsv+wCx&eNOy7AT(Rra9oUC}bSsig%Sc}#ITOyBd{3?%M zfck^U3ir3ny*CQ$+xqkJ9TbToSv7Q?Pql-VuM*tK5%CaZjGQ{hUDHO=sQV2@VN$xB zI}ob91gd{Gm&d4iQj9sV9P%I&D2#*uT;a){V{lqvR5T9>W9c>#A>c3og{{3`Y5dPo z$jP!VpGD4~Wrr{X9N!i{#ISYN6f$8p%HsG-3r_=|I7dly06E=13x$)~MRH76t-#H)&Dhwtli$hrIC)&n3Y*Ti~AwH$Q_DEb^@> zea!-mS10$QAnT9C&o`ca7y>4T9WR$7oZxgUv?stfvStjZpi*Xu2ijkffz`;K(D%~# z8}Mn+FBDat+Nek@j@cM8$pIWH(Yjr3C$QI*_|GDpge< z%nS$WghU8vk51!ux;T(1{ZMkwU#AT4Kr7|6Zb5yDkC-7da%hdU#279tXoIgqPN>db zL0;Hd97>J9Wipc{767nq0Qq~28cu8GXGEOB1aKg|=#h`@T=dDZ4ozItMix8-IDg}j z|Mn5eM-O7V9^_ukc@ z@0mR8S`r#)8{-WkP(D05CQu`A4k{P$SSrnWg9dpSXp@14dhQe0P&V}tPyF^e{sEdm9-)Jk9j_#}0ZYHyFMgj2J(Gzs{{>1Ltt@*|rU`P<9O{?OwwF$@dbxT~g*+ z_SGuEHS>eM19&~XhGBr-g$rv}?X!gPp&7~<2GTMzdr7ZBq~)RaEaWYxd-m2p>RhiJ zIs-*B7{q6ykQ+$cumem)yg!f42nfQZ=svHq2Nik_62OB~Kr*d_fvo6`_TZl?m*hHT zE$x)v>0TJzBe8xN>JI!DKYy_5U(qedxu}(X8aZ|DT6KB5YhfHs#;?M((JbU^^xb(UVPI0}1#XO$Pucy&-g~|0ghk(a0-gs~Gk6 zpew&V-F6{M2)xf|9jMWGAMu;1MXqAiC_X6g?liP|Se$;P9(=KKKYSpEb0UnCH9ZzT z4T2j!Ub%K-X7c_HP+a>mC70pwbV(dE>I1j;6&@27@;-a$ z!~3-MlEZ?ojO1)hq?h_`ZsuIk=y1FD+GNX$??#H*y+V`|ifUPLF#8}nQdq4bUfR8* zdg}dvZG!);KI3txip|l(qXgjN;`k#(zU;nzQ{K^k?tf>HyZ;&Li~~aq=38S>?DaYa zojDH3^csLFH%u;E8W9+-IWN#Zgy91wn;%H&OqJU-)b=A(4! zp?M2xkpNkx#&sopar`PsWv8s%+m_a&#aHl{L!PO~7mey2HOZxfKch|n0{+=8&{?6*lIXmAkqTe&TGW zUwr){V;1iRWs|p>k1qX6h|-Agk(`(XmGUj179ZOL8D-_}0Snv0M{gK}5=5(dcpCSo(b7uAS{sM%P&6j>?e#npC*I1cgQXN0K(U>)W5D zu=pfSDm3sLd(M4sHJNMKjo3tVa$Dn0KcvE_?K%RP=sKDe!X~%p;>srW1Iw!)WL{ux zIfSU1$g)*iobNO(4=J4Ad1N5F4SCUqo+=CZ_w--)NR)QxMC&*1%*kGjRyDI!la!x} zM#(=OU$df+A1Ca@it#<`Zk3C{DTlt!At9ZUgJaB_!Z~nJD}(WWU%WK|GoSOkT5@~R zbiANiyh&D}ick|tc;lP?U;=77$q_@ppBCwZ!`xRo2@Sn;;nIA>C0#pDk#YaLO!s6= z%vS>;+ae*dIk1d|aFKzvmJ19jk*X;kkopmk%wa!7-WAMT4IhVy;i7Gjx~m=O2S}N< z*@hoKmh9;DwLj4_Lw;bE7Q|ZPvKiKP^S?WVI zyyiE$jm3@{^4|O;@a0a0qX^h1I8rJP0t^C^KzJM)HBa|87$!XHT>|C~_l3h8un7x_ z;Cu8Jz9XNw=&Z+9(kHiFZpIfK#|c0N4C(|eRXo{+G{GXbzq}*SJz+5v43WE?xX>zG_V6qaFeB3uL zr&H{^WsUF}6j1Wk#r2QI-xsb!?y% zz<{&$F2g4~Gv?2~FQ(AIExITpY1yTe27y%phogxts@2}G?n1@lzA>7_uh0TFde|`> zs{2!ao)CT}wS-8ZVJlF)KAs*3(P}Rk0wfr3%zT(y0D}Y|C_+;)^bxd#?{4EBO9`hG zva7zXo|x!JX;@lN*>72N)Yk+yhvcvKD} z;Al7c-8lc;Rl*zsAZXY3CtCaGPWO9^Ff+q*h& zdQ)OEWwoPMWZ0a%DId^q(H6RGj|Miwj%dEOd0Z;Gd-Vc9BHsQSpBN_qwo937SFruz z$$GQ$^%bO`Wd*xbW z53-~Z;XbwmMHdIZr1`hW_-FJd+Qu zc_9`z_D(JBk=3mBCxj&PFk?epJ!EsR2tL9`oVDWNXM$nu9JY@}$Dp0&EeVi)IG_4)Fz6s+@Bom0zkh0>btt!koVspq}zWApFLL0M_j2o&735uER-c3e9cue5@mnk zB6%HeNWJ7-mGwjDq=$w2bVb8tim~%@*NgL?svMx?I85~d`GYU@s~$fF0_eR$E=hk^ zQ?hplpC(NoZAk3;=;xma>TGc9y@E(t@iaZ|R}vic1==eW5{j|kvsBHy#GEa-FwC5f zh^?9H?g&ZW!8MP^PM-?^TUA|@r3M9F^cm^6z4__yJ&zkBWscx8Nv*;+ZF1qdt4GPc z3!n?#+npsqe-!M+NCMQzCJaZwO(WWyKjA0WvOiFMwv&VJ0fsn97Mp#r$bc?DVb1nm zi~Sdrs>5)6SwT*rJAr6$rw1*Bd_%l9FH_q_=p0F3wi@+K82KuGtx%iG{-yw|y&t1+ z=8-NwnIa^^*0m>HIInX3Z}TUE3zYJVVx+EfTPkcrL7i!W-M_iv@uU;*g2U#tiyRkF zYDWklt!#`JXB_CbJyY==`)Xi_YH{x=c7_#fSbat*4ump)aL-2=T&TtuL)1}hG^MhF zHsWNPtDnbTWiX}T?8{M0LWVNX4`r)aJ}y=;X2c-JW#FymPw|CzleF8!p~RQhKsf%e z0*%S-`GMP8aJ3q>)tn85$%-zpAq@)nYquJ~mu~jnwO59A64h01%eO#|Dj!$1!Q0jc z#^nZiLlWt7$NfyZAn*De3xU+Hc~%5e^?QmDo4!T)iS)PPd%yYCE~s6${>z2AhmXs# zjRyWmB#P1rF=h#bFyv@=z(~Y+@U8iDQiOxCm@bGng%Ya=5bYZ>;q|A+BNu5!+eZ6Z z;y$p90N!X1Ftk9>KSSOGkFkZw>pkkW#sb(TOAAYn1J+=~mdlJ==uAXx7sP4gqk5{J zEC4tumPo|r65Z1zIz7QzYU`@-U425e2N=3b4|8vyOcVacM{FZ}Chcl=A{c1NoWh+x zjoI%TPp$9K+4bKMe^#suz48}oyN~kLaskGBb59HFa)W{3O5CEZ>|@-;Zjz4=R3~nM>!v{FFJc{_&b; zjgc?~KuJ%ELeBzvVC*5BU#!2_b7KZHEk4e`lw=r6OgoewpR3-LiDhHg0;>Y|W%g)_ z2MHE+R7!BEV6BxHoPvB|il@MLO6&u)6{Dylao>T8h#DK!nT3gsCyft#{THE_VI(|9xspvwzf4bDRV?FxXif-*R zjC_J|iw~xFELyiPyh7tI^+m*?4^XvJJ%Tm{Qv&XM^8Ca3r$W}$`bdoYQvcd!w(Y6{ zm>e;AxmB*4{zum?2gP^5BEpNmNAL6_l|E^F8l^HNoCSDh0%~4R?jvVH)}O^Sx)g?D0fW4;)0c zmtL<}z9p|a=$rkaj=Qlp4V&n?nbd8#YR3v;*jE0A$}j)N>%x{_;b*{F;V$|1O8M0B z17;{>N|(AWT)K8VMDYgK1Jd2pHTkRZ6GoWo+x#Cse;PgW zI?-moga1tCcHgmG@?DDE#QkcXRHb*M=aQRVD&FaYBDI;n6s`LGR zEW&VNxof1D(YV5JXiUJOG`t#Y2T^__`FF0nWw{J<*!_>=DL8XAMTN_Fx|5u|@j3kX zcW;hNhqkwJ$@(!y@aY%%Tugp8x}|=DROz?*6xB(I30@?z59}F$O?LO0U=E zQtF0GZPH`^p>-2lA)U%1K{;s!|0}{3R>IeAoJ^fLWy7My5a8URfL-*&{RhPYqE0e5 zm?bX?l9ow=&xdfeD3|ir?F;~qd7p&_ntKt>e8G~~IL+}6DB3DY6hNyW!r92&iXbVC zYF7Scq4l+Uuak6Ly>Lb3S>)Li9|+3cTgW5Sw_Gk!W;0by;&n2m5zew>-ykQA+5&&6 zP#4O$n6kME`nS9f0Xa2e6jOXB=*;Iv<03S&^(C=~_S0%ZyJ+WYP?+i!ePcHvu}k|- z#&x*6L#z_^6}x)1v(iROCS-Q}#{Xn2u@WHsv@iCD=JJeLfzH+Yy10Yn6H3EH#}*~I zcCGY&YS!lb7=K7L|CGk@Lfwoe@#P;8UfeHYE0Y1&{LGAI;*BJxbga!ZCC%+6s6#-x z4(W2SrrMn#yRXtVGE8LsQlNglxfF#B-k?UI3nDEPX;Jx&e4GVkFovMdy83MmaAC2+ zd*^X;U$R_>aM#PNBWFmfX->C!-O4<@^G&f$VFb<=)AZy_ADTUenwSFQ5AhLp)J-+_ znHi$y4OyX)ev6ICjcAXM8>I=q7lAEnNIY>sk*81mjHJjCsJU~99@e7}6K_WYv2(Zi#8II7v&4nn04M|z zSm@{U!ITS37YLpnsA-3Z{EYJe|4WOzqpl(J;*RzY5KF$^b}IAV-(zrNChMqHw<@2w zyS{d{B2fLuKG6Q0&agfsI4;k!KYIhBmC(R_)T<%SsjJ4u^=BCDWGFkW1YW(IzFcwT zDs=S&r0x1~L;(>-ob{nxck6W^@@Q)I=;K!M$0VkZykI8c6;*!t2%)2h5!P|kK+riN z&L~WwTJ+uPaNVhJ>3)`L-<*0kCJzm|nN2hBpD=zYplB@ENThw-h-5!yKxJ>b?SYf6 z5_-x%6R54R_cP+0Y+ah#ltoHYr8?A&*^2zGbGKnzhBtLdKM-sYUE55^X?x{LD?eg6 z!b9MxEo@tq!TU*m=H6^1QScV7D@1)AurUUh>zx_$rmn+X;2Lis!IymrJkf4-Q%tmV zM^N%yM-U#!T7sqjS-(5QSG8o?Ob=WwB=l9-p*eT!zEjNIL*D_Cq!A8x1Rs`4YF*|> zg*!)V#$W@br8@_Xz(jUp{GZOQ5;6A`+fk#+1iX{O1$xGVt4@$*Wq-qPvm^8?Fh$p9 zFm2_@tSg8{0W@!+FA;GP{WC6c-A z)Eer2`-`{(-wA`&0EGMELXejY%ux9HjB~T+MBffNM`n+>}z6-%Q2Q%2i*CxdH(g6qc}XT zMk#TO4%V^B0zl8V6C1(=L$)>o4qd0wD=X4}eB&mibEb>yCu;bU36DN7rW54G~MMLl69v#EDF+$u;l zHl3`UE5vk2FzVs=w_xGN5LrqY&bE2rwEqon8?p2~`9)+7O;PLn^|bKS1HN zgxj5|8RVfat*O@`#1-FUjcZ;|ZG>C5Te5drVYqr%na!y-ypyqq+WXj_OP2|g!&-k` zChFslJ*nj0>kF68m}Z>R)cbf?HA;6Xt>4gxyu5BItv=={xE7ke7GP2-Y+5>6tCtz* zV0l77YwAYXUo1ef7$oag3r!VlM#~Gm3#sM``pB5#l$%Kk&$kLO`;ZrzkXP~gH`Wlb zuGazu+U#O1v@sc%gB!X=wgH_V@|fXKdlY>ZpUW#2|BXYxe}4>K1;aWb&AH>QUp4Py zG@UsJ>|lu%3%LDU>53XUU&z}7@ch)w-}xOc;ua=QbVL}Qz=^l4!{LTywt##yI0ulf zXQs>^XZtB*V76>HIA61nn>LCqhtj{20((`BeCEO!!B~~M`&_)Qc_YW`Bkc(m>g|!F zK0Z8f>ON7tvlr>dTQU>@eQoSlP~XgKQ$AWhpa8$ZQZQazdM`0|_3fROEY%QXVy2(oP z2@MGxI20z#j?vj+uR7h{&^=y1LPp@YgR$c& z%FA$0rBGZ%N9}szom_`mo1Pb=C_=LO26^Er@=_s-!;ho;Z$ZabB^X@E-5pd~99-gkp1-fjE~%TxAx%&S9G8z;Kx)z=usnTG4;@Yf+atpbyeOh@1_* z9!re2$Amt{Ld5s-dZq*aF;Nc8De{!_PFaQdx}EqGg4MV>z>gBZ`6c-4^&#pD`LHIY z!vMu#2)HWz@7CI5XX+EuymPL_!%1dIxv+bVEfW1*>o zY_#^!H#rp3o%@@Q6oLM7t~|AIc^M70deh-bhZ(J+o@?p z(kKP6piB63b-^py|7deE+L(vFo2h7cr$Bs56FqN?%ALI^ztfLay6i~XnQ&57kd$0V zObi^S{;k2aSTIJu-xE>m&93r7o<&On=jEuLM7Bh9T#o76hyAZCI;y+jrvwGvkr#e= zbz0<;j~N;gYStv^|My*D)9cZg0*GQ(>&l)UR~33Ga87f_o{BF@pu_of=2yu(Q=TMv z<+Vt;`s&;(=Yt)E4Xba(b(IG^!Wb?>cH1@bRH=P*7BQyMeWX6@~6)4$5hhiL>7Ub;b(r3e10>0@xNx8%$~_r6zvh6^ZV z*s2O{lg%#vI*N}AA6`8~G_>Q=JB}LzjG#GC@S%rdKs8blj}+Wy^?q{>vBv@)`tJ=R zulY}vRgRx!#UVN{+B;+Z4VZ>*17_g-KD0}_d!5^9m+UE+N};jlb_?TAC0pr8rIfmGPj+ii6LI-+8r9S_1ldS=}g25X3pIlIgH36A%%k@sc)*6kOklO$_srof4~gU{wXj>?bhEqPH0? z%Awb}K<8%+s&bq3q(R^#pLR{sFgbYO3|y%aXJLqp#K;E5;*2BU zx>TZpSC<DgLL$1h@-m=n9rE-Nvuhfvsqfb-&}9Tuq$i#*3`tXMKc{E z11GZG28!tI?1`bL8w#!{b7lD4lE*^UuJu@D3Hi6ZoefQ3qGzCb2HEJGXKh&McizzXo@}dO^o%+wT^r^v-~nErV{&JR z-|ak$>~Y;?Cz73mY1E3}`Pt=YWZ`-PBzA~uFbrydFA-Pbi<;MOhpf-bDfIB-969yo zmBrw#j+gy=^Qs=1**!XWy8S)pv+5eZ0HL@iS#Ys^#O>%YDH^qg7(%Qq5}2C2m?#(n z;?gD0zJNn=t9vKZEa3=KELx0TivGc?<13F2jDfp+@TXyc_0XDO zE6H*nayIZ2H91RPM+KhBV=!2Ak3Z-D58B`9Q#dQ?s?*Qwwi=p#qB?aXHs z=J#s=c>uM1PE8or94q-Q3}}IC&Dej?S#e*?^`l*ZdzjS>D5K1A%E5Yw@uT z{c`@IRQzuWi!2$M;?7+;dxDt}&TuRhjwb@!-7wheVa96u>$0HKJLX?L{Wvj4Shwh| zwFXvVX(P7h=IJda<+VeRTrENjVU9pjCVaXSb*8rfS^uJJw!Eok9aW8jzL;0zQhrQ% z%xugC%(a4Ff}UIFJyfMTannZ8Q3n!n2m86^xqyZZ9M znTB}wDAOsN%v7TOy@o?4fkpH+Hz4tyks_h#(QT-^Q?4{rUIR$oO)8etg4bG40CQ%m z=p_@T151&imCBnd-P>;@Kt{Mm9OEH)_*2-R4=2Gl&UCBmT%W$F`XnUv=fx>Mah$-* z))7^DPc$#um}6Cm3jR+&)@At*Az<4LOQQ zlL3My)_kXX+9&u-8;-VlgiW_;8OqKKTYzLyJ)!=+(wJ$vhwnp%Uocp?s2b0jrMHDrJ` zR!~FCry)(E-wQ`h%PFuAIX55yES#07Onk;8zSGPBd11Dm?Sdw8;;!??QAgl(5iq6W z+_Fe0Gky;?7B7jN!K9l`L~i`mKh`N9xxOGIo^Zr!MT+sPO^kqqe|DJQ(Jjg{=)hWg zu7ZJ-Y45GSmYGoa?Z_Qk3pw?8bdha6!a{%~Mc0a`FvMf$PzRkte%k3oNOYAx5k5vAFiC_9g$q@UW}Kjk|69xXNxMCrQUvbDmg) z&qk`_kz&blGLKsIJg`tJ$*nVu;PjPT~>I(5}ayU?xv?VVeZjN{HFP_ND<(sMWJR)b}+f1zj6JENU?%_Z`J#pTyM%8Z@eh4J?-4jZY#`<%zF4%`J7&vuUm zoJKl3Ji+Ma%Z4Tn6*E**IqrFa9jZ&!Q{lA^l?xnY!Yr4kNx$k+$Ctb(Yl)HS75iL# zCAW>WT;bu{QY>z?jFZh-4xSkKQgc^VJ`0Q*Ib!qY0aM}BQ*HVGCa_!tm@x6EvvSzT z~oL18oh#}oYth0f+a~ci~(DV2r5GUVgYyAEsX!6$j%Sz zlN}#28Z9A}ZIs9#jX`i{)i2CNCiIq*e6=(yGT( zgty@|1Fpo#82^(lgWB5EZnf!@#fD-bDW@3Gj)aluHCS04a-zaCL~X>?QG;eDA4&)o zKCuXhY@<#)#zGb3N&sP*m>*#U3Kg%@b*LZJ&2UbOjqS!HBLj6*MrS$(AD- z1x%J%0u@lL^gAB-S3p0>$UI)(;d)x}A4xEdY%MyGZoDisKJWv|`znz*p~NpBFPXVt zxJP3;C_0yJ)_qAPc1oVDNa`Vq7>>@Gx-hIy5FW>4C^5M%0|{K5ul3mESr+Y@H%iXa z51G-~eyeos-;1*^JJjfsCi0gSujbn4e7LsP9zH8Y33s}H2#EraD{cq@6 zyD(hW!yLTZ|Mr+IwimN?0IyfKd(p48OR-vO;L98{`yiOX*(n^m2kK*5`qQ7qvevWbi^!H~2 z5*1v>tD9eZ0tXSpsqd@cKEmaCIPO48jKQKjs&QU`%hMo;QVwi>M$4UmYaoII zM#tV-v-V+eJ=LR`wlhn*)H=-u-*g_Bt^IrHZKd6*-VlU0qnDqKa?rr-Z~`;(+>$z6 zKHYH>Cc#5sHna>XOs8$DjN3^y5Q_nb4IT9m(0EGL9AGgaqhjHg@Sn)3Ngp(uqkAY) z3S=|cBZII&W!~T`dlGsPb^8C=?O1-CL`YWxNCpuxct7ldL7*9$Fvb_5F9flRjuU;X*#Bx*qKC^B%U_AmzZtH_^+H0pH=jWNJo_|40w2b{@itPNreB1O>13Z&gY zc;fxYzkTWNsnYLXWf(9slMDo_%=;DNps_^(Yy`GXzc6Qi7|g%1nDrIPT{pyEM3G_) zW|cR8uFoJMb_jNkW#NC`mx!HpXWg9)nOTaSQtcNI+NcPIJ!AvTz%Ij=N<$kzp6#s z`%xZXPdtlsT6;L`OlALV`1*&q(8p23)YJUZ+@uQn`Gl%Em3b}M zt~>V+Xebe!v0jAXw$EP+y=9noy?HACe?A)-3@R`F0_ z(h4xFEg)0F{W+vj6aT>EL5OxE!gzo+R}4bQ7Bm+_^4rL!Hb7ODfCTL%oTX%T5O@Hm zq_{U&%DK;VaEfVUNvy)tcrXaee4BwM;f!Erw%N(^DmH@vi3T$u83NJqs|3ti3Ek6U z5cvQljKhUhf^+zYZv~5y1rn zh7}u8woPA=SP&6V-J@d6XJ&k=V|jZZ%6S>^U$^gGJ8NwtKwnA6KQC`|w4?K)!7ILm zmL|ta2^#j~`H%I6MK0;r+DUOB(}ZP$9yY?me{)7B{-sFc2nh`h(Q94x-WGB4w5FJEXb5J4NGGSn0DPs00TnAw1G#1y!+t;ZmU)Z08p7y@AyCo;=Hx=- z@tQ$MO@}O{=+9V2!JkFQSqJO*@b}iiqY^#Ip^<)*oB*?CmQfDJ_e;~32w@1tS z2-3u!Rr+3_F6f)Yo6nq%qIez0s}31dM1po8D0Kt5x|mVTbpHn&Kh76N`PH4)#Bw_B zYCDJL6RoSc-P<@AbHF$UNN#zpKh4r?qlx@(cPYdPWoSChbSk9&k)OyIl4(6wc%*}i zTmk`Yy$jpkYzYd8LIS?>dUlg{A3=;ZD$GKhoi=nKoemO11&gA6;+ciZ^PlD+) z3h{AvPd-5$A=uXmo4uvtH(aU}{VIG+3NfIPKY^}lMe%}QM3i+1yp=lo@GB%atI{m* z0d%zmd*=c~w?&QxFfsM{>?s^S)8M(Ymdnbr?!@2j)EUJDw}-wS8<`V?PFN%H`w&>{ z0doI}0id^Y7YB|#-@4Zzzb8mX)QUR^xQUw&C4GTXYFNrG&v1HvHZ%DhNb;+)E_M6| z!T=f)rf_#A&X3@3PQ5=omnE0w!TvdJ>7%k6-^Y`72ym8>I%pj}YFI=Q4H_AHh}PMz zFLKry6iFRjyy#IUphz9#vJ;PjSUw^!=!|8zqm8qNe_nWG&wN_B$D%Psht;0X)U`rX za+rR=UmFaXhv-Kn`T>@O37`t;e~S#WXaWay;`QjwY=CGKMX@MR3=t~I=P)9V)Plpx zHbWyH5g**fFf}PIz3Iaz#*ML%zeB2oTcmV9f)i6{pXQ$FfSEkg{6p?mx5vlUs`X+bV zXIhVCNln7HJLk{0{5-)Z;wC;A3M*YySmpY5M`v2QR?%6tZ3N;jLxC=+SlyE;DIS*^ z#lVjrWBx(0$c5HPR}n6n9VM9)lqh(sFszdU^j>*|0ajtwgd=ma++LFSiXl!?Vg)B~ z2?m8~?xdaEd#3a-W=x~_xT39;n%;zB%;&BC#URJGEgwlodDj-X7o(Um*CL@#n#zN6 zgQ})g!F7)}zpIiaZ?^$ck{9|p<0(V<;NI%wJh%{|Qu26!a=Muq3w7!(o=~V&HmM0NzkM3x*%iu^Cn#k1?wNLLX(YvW z!P{SSK#MvR<%+!ygr||4Yx|SyVM5o;$-PG}3(drlhuNV?EqN5p<7+Rjo)*bSbQvdp zVXG91EHo!p0lchi8a-19C>|VUVM(jfQgD7t^&aiqhaSHrx=UH4_sp`eeGt*nghY3_ z`$R_jds%V3(aD_rp-i7+ndL^`-Dp`Z`b}t@cUg?~Mynf{ zl89Jvc@x%Gz5ueyDwB`dQaqoihl^}7*Z2gCHCFJjJ0zVkiFi*(UHd`$r4NtI4zTrE zt+;xMe(2WDZ9sL5@QC8fnp`2LP|g=|H?m-uM2*+-(YHnWvDz>&@8PJSN(kBIMT{&YueS?5&~d8tt}~A!Z53E*1DJQT0knpxF4JdQ@gOTqvFDL+V8b1 z-7sMtj2YU^QBAJo&6-klaEbTjKe4^AZtR&X|KZ3cng4TJ+`m{r2J5GrN1Cs|l7j^9 z-I*S?9<`5P+j#K-ZE4FZPqoA9rLBrZykM(znYDn1&xV6Z14U!;;WvG*pp~tjEEm^Z zCEac-D8DUGpdZ_vwePW^%2$VVu6`2mc_VKFu{P-H!o1u-2sN8aAy64@BnspQJpOyN zk<29TPD)0cO49f^l@72*!d|#OH>Vm|2$?O$-m{uDga~I};@b1+v z1{+tBAq@)tai_ue6W1>K4V#J^rq7#2k;tXX%0x=_3fpk3c8y-vlx)eDL=?(vJ@I*W zNi&Gu5?+!|3h^`?%@YP2?WvsO{T-xur0*tQ?vgTUj$FjfE5)!mx~d!;VdxZ7!>zo% zXbHHAo5NL$FJ@5IH0e|qcd?wXX1$C7PdJ&Q3QVMMRfo5m&!1m35-5tScN4Ruwal=M zj@H$WI9(4bj>MNF ziwU~v3J?d-#bx2pR}`@9Q!Y9uO!7JFgJnH|gCzc-rm?h`z=M0wpH{CPYWN2_*Ojx` ztpj>T@5=Z8WYdpi{wTc@oq3h6rq9iF6liwzHX*Aa+WZ1n?pG(kOY;2pC2^sb#HDd2 z^*@*)z!3(;RJ~qTp8xJ}R8(XZe*f;jUmxK@k(YSrK|F$Kv<_lxez%Jg)EMOJ0D8Z3 ztSd+X2$oezr1~@sW#H2s4>;tXM}Z%p7HKQ$bUpRo0{ZuFf+Fh?%Pa38RsN;tXIV&Y zVYt&_B@x2sA}CV~!+`(kN{2ZR%ismb@%~~B$U6+w;Jvy$sQ+yJRf%%UAJhN;PNX-M zKvv)9Ve$?V^6Z~KVO@i{T~zRD4CqOKsFC-&%c&8d@LSdWyC5tS#yE*;Ad@{ta8yQ7 zp!5R9heCyq6=t^&fhooBYpyD0QeNZRxj5}@!cppH1I`M) z*HUVMxw1%1<-=hbaWaqE=lzvyqWcm?mtMX=HXFzqddkA=-8C>qS_YM}V4p^HW!CX5 zUo_l)v4|1*6O+s&gG%gYMbigeDtd4-Vc2I}p6ZW)B#S%LXVZrN z-1W!`n^Nct*po2tsDalM3J0#5ePA;x+SmK1t@wAm+`AUX#W)9K&FLkz^z;23RJgWI z>30Nzj72=x%@_N#Lt)_637uBkDP$*QP$_8EI)nt0g|1Sd>9HL0N3JD6jz;(hatn`4 zsi)pzJDVr#652j#ed=Q#)*;K_VH~)lVJx;H5U$V~Pm%qbrkKrNE0^Y11jjWaw z-=fgJw(1K>QKo^{NWC2u_zTo+!>*sfAie|!oMUz$ z;Ho@Gm+3j`R_%(F!^$&ovZ;g`2Vq@d6f(?_W@`$#0(&LF4v{~cipOG*!Ru8p05`*> zmsrFg=oSXXl3~&PUeefjRq5$v=CJixNliKC+I0>(|US@^opz z%hHdX?9a6x2Lj^I!3|V~@;WfgFY9RoS@u}5x?er2?3qu%$Ij^RfIUltdx2(5!4TKh z7BvGEGI|9u4lw%yd=*;r9%$l^>Q}lx-yoF^s|MEYM&eZ&<89y^*fj*=xy?Tg{Rn^# zf`&e|D`q*fZ%7Veg}IKlUAB-j81S_CwkavTKlt7e=T+Lp!mb6XzHh1U!!Npn}r6L71z~eJj{M^jdV03ZbM#I?(;0FdVlBPhq%J_ z*?ZqE8wQ7?l}sfxLoHl)<@nnpDq_L)4i<6JEV0KAUVO&ch~K9li6O>>QL{es7)^z` zu{iy?EfB8{!6`f1b)-NVQf14i=q9PR!(~k>?;dy7&U!0&%O1E%g~%%;><1Le73Y1J zVws-_zQ6C=jA%dI_&!g-bt_4=tztfzx8Q3qsi=1Ld)>Xo^VLyZE=_F zEb|B~?$1n*E=?Z|D7eQ7yv@6Um%{78LOEd}v6|~nNf$bBkqb=pLJ;gH)dx467C??* zUj^J>6fWi>oE?oIeqpCcdCm|tSt1#%UPurbb-atLs&wh^X)pG(4oc7;)WR=8fY4g$ zP_0egp7rKdj4(@xh?aLc;W7>UtSJV2_~5pZ-|`fQk$6lxT>g1N@eY0Z#6M8@*90IP2qZ6=DJKJ*#wg{!Kg8-TQk7DvIItyP%dTfgL7S(;I#aswcp&0EQj?I zQckk=SazqFfZD1MqUu7L01x3hx0hK5+b@`(c!CW>Zxf5asMf5#YQli2!hkqm#N(%0 z+yCmnZxg2894^n|26Dmk`<`7u$vQ)HAwtO8B7B^KXd7-0i?_k%wN+TWlTX%`D3`>p z_6w60h9~o-GEORuSm>O%jXvvP2&uJ$kbspI(q>i5qbJ=#z!2&88Pi7b`#lB9F`Z?h zuS;4xx(^l+>y*Csd?`{g#^M{j9a-3|m_y64a9n?T=>Bs;d*`Aa(&(fa-Y3S@Q6$A; zaB?U5`R-1<@FCq@G(UWnps{EcXT;)!@J_T9jYPH=9DH9sfYn*_#7uqV3I!n>^=*m926^k%&Dun?{30TPtn?+tyCrAgVfi9RqkKwDMV_&uI=yP zJ=Rhiu}FweovhbtI1@2l#d;HKn#53sJE{rw3uxbo@Lp zO-WgXLsWrv%Y(nYwymjim)ti{v9KjO+YHr3XpxZ(*Y}>}@(Z4Nsj!5aqUn2wmhWvU ziFe<~?>uz{leZz{zA~zl&11NN&($WuD&zg+#;ji96@x!_1iW(W>3}!kwm@8aiXy*S zbxHtJ4Jn<}5g=`s444)j7{BRWEd9}BeMn573Ks>?Axo=H7Mqz<@Crf?Eyuah&fP!$ ze}+r3G9L1!Tw4GXpB+5=Ce1VJ(ap7Fk;bK`IZIvj@-ZBu7e*rif#R$0;19EGijlNG? zp?8AdSm94i*~mxw$b?_KG$*6Ozp{b7?T1{$8suzeT_6baN07h5y$e}Zm(O}>+fpoQ zd!w5BCfiv6*7gmWrcnJXHrtM29XxVs`ws0r`!=5C;++;J5;os3X)T&@(OitCvJA^V zlbQ=)=gLSymMo~&xVfs|P@O+fBHm|)3yEV=KMy2sl>e?Ieu?8bQ&WxPxM%c*n8U}3!s1( zD7=$qXMH566O_;&`W*a?Xb4nT(@Wv*hkjaManL<3G=l;e=$>5W3zJ&Q% zeV-vT$WqzmMI73IY)|KAMHB(GX&21$_lw21D%mwmdLFDIb)uffX%$=1O#nX1%ar2DZBG=ewSYWq&>$WYO{a`sB+BD0FC=S9x~)!2$q#5h4JovYhXN_8rSfwT%5(NI!kKXng0_ z+HGm`;*cXhi%LTm@=WLUnYxHb;JfTBP@-$BxSy+m*=losyn@ll_UZQ5oHaeWWP~pxR8^ zks&x@#htn)_ilfrRBU5HL;Rymcq~R`$h!icL%TN(B%@X*8sV2o%r>cHGhwi;yzx5M zym6*hCt@#l7dimpHc#9q)_9n&`T&571+%-`?D%3EzdYFueQ}( zG3ovg_-A3;@69-LV;a^A&P{H#0=E*qv6(Dn`OT9E`ABMk=Hqa>H=hb>7GlL>>|!tJ zO}+Y3*ay;wh^H>9kc{wj|83HxTVML%(JV{1?hUdPbs>P49Q$nhtL59eMcV( z+2ZtBG<1|aCWfauiz(shqlfK}@pESOiT!nGaS;>*E+c1VkZR4RTn|YX!T1mtB?`+e z#&W#h@)l1DZ>-TlzC4OY5Y>q;{=l~ zDU)q@8c9qEYajJY@G?X3=RDbs?U#k?G72FE?Q$x)jwCnc7Ukt|=K{WnyHdSeQHP@U zvVLoVOaRn47gFwGq3qqZ^!R6?e+VmUbXQ zpY~h-Y2_}}{NM`94=M7(y@e8m2b6!ZXnca8)S~0oZ%V|LVbP#sPL8}QiU{m&2XOU8 zkU_HIHTQY!K@p56oP3Am@4jqvJg@8-rmD_F?neXG+C#3G{5R6J%?vMKO?!XK8`!aj zfEbL=N}ttV|8kA_SA65{pp&A7JEK42CrC49dtLuB?n>C*5w+qW^lIRqaBbwsK?tSO z^Z&b5=5ZOaZJu@fkLz}ulY~=es!E!; z!wu$npndnFRyqGJ)WA+#Uuul`MNpzhu3eDx`xD5q;g|AOe#T@Rc+R$EudO>gw3G&< z#R!H~Xy=1?7Qt&^sy#4K3ZB0o^%R#(u0hS`02+zafWx-$=rI=E7N0D}Exw1H93keg zw{gs4Z-CMjmR&Co&EkCrNtK`rK7cp4h^NAEJQ;$xUJruz=1$XuTl?slLA&^Zx(a~z zf@?p%Ekiff3se83!_glmjQmYL!;`5UrbkIyJ${s(06`RR7lY;-d5DEuouXElRUtX) z0#T_9xI}GWC+T42Jr{_YdQj`dS3Ndy`9wcN96dPZHTHarICk)h*O%vCh+htld)cMZ z7y5l-(%uzPy$y3_rQ>$!zRt|%sO{u~SUGSrL9i8?oF0Gab!DpKeyGI7JBibxR+S2j zQX%w*G2q`@=In5JuN$OAJ@{_;5lJ1;=-y{_ED^F!lW7tT-d2xk-2K)owi`WxLp%PS z%O8KO!Tv1mF?$-h-y!Gp@nP$Fpi?A5UUe6zgWdklk?)m$=3Xd`;oBA7J3TH1^5pQrh80?cocF(2 z+E;fP6o!jh`AS+H23mnOu7#;-G=Q`%k)|1Ff7}NwAx54$gKPW9%4F6sV{hh`Degt#U+2w^jPVnE7?9T^;_Qs$v%d)snSWEbpJ>T8z{r~$Ca1{f0 zY}^x^%}xIf1N!U31rQeHh{%1R2zX!@Sl(O=P$~%QR3*DL!9V3#!T~2I>Jrf_`_w7HR1U4JA?{ucvDUf zPHx>K020C}CxZX1yv_A@4mbL;Q5t|>M5~*Ied{TBhnR!sLV@?{JP3IhYPrN8krzS~ z-DZt$ll?}kKZK4!=k%!}39$GhjvpNI8hSoN96ESQty5nEf0pLfDCd@cej~25KnMhO ze?OwiW6II{jmyAv=|KcJc;VzzzN=#-mK}I<&Y-Rz)rFwjaG2^U(BT%0kPZC4XNa^Z zpJyte?xTdVUG*oWdl{4TcOEk#nk8Ky;ybl>XpTj{I%y8r3HvH$%` zP1-eahJWvnByUE(I>5-De8tEn7b(dBa&gA=fxE9g0>{86pdUDb7hrQsN4^)$@oz*# z>#X=fqEBF-!D+R5LLR<0OrApO&$d$NE^A)fdQ;s+KkvlXM6c}1ysKZ+r~Ib~Q`e_% zO!1cUr7}X6%K!N=ciG$1Uh5p<0~BqRom`Hj(IxQERF0Qa7{+ef#ddyuwbjr5VL@pz zP|oDfgeQ+wpSs~P)RGOqR;T$L_jfR5Uf%jMpS_!OO>Vfb* z%ab2?%RbYdK85dNg8pH*ctpf%GTD;Gnqg#TPSwl!t9Tj(Oo_EwBB4A!Q2_A zpe_!;9u_H#@Jt!$n!ee%*`11pAb*}HYHUzv> zRfu?#?a);;wCXe``X$%roLqTch6pyNzg3qAMxfz6kD-2*E^#WtX#q z`3vx=3=kY~TAP7{4DAf+UY+DyQYBr}aC;vtt;XHteXJX>(Q&2Xf449LY3%0^d)pE1 zb1q2fbY;57P+YEYr{20*v}PrLHU1MoLw6sszjGbW<@|b!*zC$6T!|Y^*~Fkczcd^C z*@HlctH$MD8KiCV6UdNZdCY*ys**iCEEcLFi);IR9^jA5ae@~2Gc4gsLKb|+7u2|9 zHyiuQ6$v>TpR@>DLJHz7!XD-;Moh!{>#t#$acgf5s=-~<{FgQ5?9&n)&14yp6Uv%v;`qhu%TjxM@fCU{g&*a6YPGJ;kZl*$BC1n^i- zJI^F4qRR+f(;p?E1{A<~ML0QGKN#31(mb zET7qzDo*Iu#$$X15OzoW*y=qW3D=s>dn^19w~~bLw@EwBk=5O|qBFJ_{J{dQ8vI9B zE!I#8x`ANXeh8RA#N}7q;`-`bquBG2C2yjbqzvk^lyVbQ;*oT4~?&EWSsT?SmiFY-KClx2vLpgh}2Ro~G9 zqyHX86-OLkv_GNivkaf*Z(FLYxP_P^|~O(R=6^wMUqSQK71E&$yc zvzQX?f1oe?kTT{FQ}6a$z+dTtOPxLJIyt-2)72`#?o|4zbizuXLGdq#?s<#NvhHbY>oDU{AqxtQ47U0YG8j z6vMam_~-R?=*^Hj*yYu4P)T=H`K>>r1xpSDzlC3)`tUF@G*)zGv?=z~0F((WpwhHM zOqqpNKGBs4AcV2QlouuDUTVuAfGYg%&;)TE28eocV{uFJThpT(>wnI9mxEHn0S?qM zlw`w~XmJ*LkE@3+KIvGQ+&KZfZvfpUowhBc(ANW=o9CvLVMO~a<%a|`f2vqj1H{Nk zb?eX~!C){jnE{UOV;DyFKtcpPlMizIg29<7lI{LlnL}{avynL^nko*DA@ZM})_>c< z&pun21ENT&$2#)08yQ|fZYDXg_tlU50#GF7Jc;Otm?X&hTj%DZ6%@tY6RWRufl=gm z3IEYMJwQhoST#{P>vO2F0sw&&=3dytfp*{zO@4opa9+AtkrM0=E{C~3_!_O0u=hn2*hoR#XQX8~WqS13xXMPD69Xbkr*;haBal%;( z+wjhRKh+89?18urL>|sgcGPw=FL$~Bb6JU|w`aMMwztQwcF!kBP8xp`h^PZT3x>c+ z1SozT84vi#LTomQEw zS<|;kTP#@~H~6}lmWloT=%rw_3`^qmz1c$JoQVDgaFFL;c+W=?jA&5irte=M_SmdN z5}U#--6a!rFzbVZqmn1aptORb{xK~%JM4h7B2fMdb?wZ0a$Apu9p?8FMo$1pYrZYr zeCJ&IYo_-{Smx>{5LxX_o%p*3pz!U8^@C&s$CpoEZ;@cdS?JQ+@}@G~c4VP{H{+Fg zyI*MKNWyMs2Vk%*!@m5y-8SweC~LOny)8%%dOYF2UFr7kle4xEv>{?uihv{}94{>z zmOiWWdG&LFv!+S*fFxu5Obk)$BnS?92rC^|9JL?#&O0m+O_yTJ%fFC>Ao`SzdpGMR zaEPVrHOgN>#B-pfoASO*k$aD%_Xz$=7Dnu-GOl$H9vnM=1=g3N^KY;p09!#BjS?TQ zHCzUah_PPF4tW=r*`;~bA7!$=!#`EVr|k!XlNa91XBvXVyQD#IWtKUi9wDH;gTnH2 z8zgW1IK0ithMl^bd7`H%3wrW5V0!6$4d^A|c@NM$p(uiNJZZZ&i>22jA4+oBq4@)B zS5Bw$2Q-6Yat{Ez18;aL+VOl#QihfX#W05i3=*~+oj}z3T;JlM?}0=uzcOCWf4x2c zAL23)jxG?@)V0~7A(;$3*)(DJSE2_c zVw&LIvwZ+!IRxKCBzJS3@TU{O`d*e^L*e^XO-BN$!WOMBii~?o97gVg{kn3cpgQjZ zbVN3OUv*O8d*mOdT01h6d6}PlwO+*9**E6+A*{DH*JH=Lbc;_7ySvwO(|1nui8cIN zuc$#{tF;8ngZ`H`=-cxk$PT9F0BzCA(1P*Wt6H3Eu$A;`Yg zbC9ToEiI~%zWZzqc&`0m^D(U^wwvWg*U5#Bd1<3k%6#&MWL+jPi}SkuynYc4K|Km` z>9PeZ;&NP^**-Du$UY%}V-lyJB6)HKcs(-Nd64@Pi6-Lvjl1rvimLjv0f|b!fnqt+ z^Kw|C=qw$M8D%!0A^wdmA(c((?jo)Rn zwdn$B-4bfCZv3Y(_dyBrPIvBqe)vbY(KnAeJdfoG=R4sVNeIC#3p}Pu4{6H(6duDo z8Fv+i9~#FCGGaph{3AZfibU$FObV&%d`MO84ZF|AADZJB;ly;@gd(r+1FBV$zz{+4biId<-xb!oKsnL! zqy!spiM4t3hPjO+)1Pq?{zs!G;vvcz!>11@`%`b(-j!nSHk?H`sZ?Yw@h@Yxg53gc%}{31ZqIQknzI6YB2$`mqR#rQaWg#*Xtl z@VSg378rO|k$jfTA~_W4)ORe-nY>BZF*rHu3@&qh(2io>S+?Aa^e1X9#r9S{_@I9- z`SEn9%6VKa*X9i}$cFEe@rECySdnIa=&;{J-CKjGIUT{GWH0|1@jVU?TfrbP)yVf; z$8r1#~c@vx_$pf5MHghYoTaC+)zU*9xpb&Tr=o7O2cSv@HA znA|~A(}x^}A{Cc!^Mz;*O!&8b0PdcQ*SEe)kDh`zt9gC_@~tVXBwhqiGZj&2pinV6 z{~2=co}lumMS0!(8gxze!1$^!`q%R$jP<32-*0bghJL_v?7;y?YTg&DO-?b)A3l%F zyuu}Y;oCr=bbELn0s&O=gft$E+}UOm_aoos>tnzkQZ0`2xyP25u-DAD-Bu^?s#|4n zLGY=TIV#T1S72-`Jsz1Mfs`Qmlv%d zx;7)=OQ-&W^iii2ViTP-7XnoNKxec#Ds%%)#!!?Im=uZ9O)0OhMj{0Xvfp?y5_ZuX z^7!aeY3@2!t+~sjx`6?ZD~7#6ta9b73~{fef}Kqb1)dQPRwq6K6XihD?}1KhZ{P0s z$BR5680op;(b0w)stXcQSHD^Ca8B?0@Dy|y$DzDn-G4rc9(QYsGNASchFU9F6AnGs zn>2aIwzq5zBs$Fa0eA~e!B^nDy@VQ@O5;K?mEpx#ET!RdM48{$EoU|WuE^UFlSLYTTm2cmEC4{RFS?G?% z84tLPLV?o7t#RHs!`hGluG9A7RS7qP0Wpnt-=6_7&NF^wY6!^es}#O8w{q1Nqzl$lfmcclA) z?3n46p&g}zzCRrv8r=^8Hg6+4Fae&UAYn1_fOHrJwJ;aKMNsIu-mEp2CHhB?HFZDC zl&PYFeZ&nCKt*vd`lj_Xk0_cj1)UCjrz2L57>b~RYeq&;;Fl+1n3_I&TELKnCI0DH zg84}p>II*JBk&1;{CmcjVGlDVji0nugI>V|&op zIZWmA87aD3Ju!SbDP)0UK?bpc&|OU_mx2EhicFk_rE&E-ld)ts_#D@E0fG1ebU^Dw zV5CZQEI#~$1^9vOtg81RW+WnZ07CE;JLK!}W9TY`?j?&lB<4#nMAsdX>*NQvB~tN9W-hnYGis}fos4d$tI_5PEU-sKL(P5gmc zK=>Fhy#yA$Sdr}0&$n#lgp~8hqDod{y)0E&4?9|Z|4ctHs8A)>yeRIJ?(m2$MfKj{ zBR0tt_G*IDitzz;K(`&(uh~Iks@k$3b&QiXvtobGkpwX_-?#=5R`-w*_GIx3NA$~K z9_d-;&e8BW&_+q4TPTZ|sea(=mUc-99~LKXmqMOf8KUr1StuWi^HpE7d52Ft-Qg=K zoK0*JWbXSPTl;?4nY12IO9-9pJfp_)nn`@u>0$2}$p>MyN5WP{1>yODXZmIK|E z*WP98r?=$c3DKVSe(b`NdD`CG;$Go8It&IG!Ac#lBVXsudP5UIQ%xhRs9Y2u5;;0{ z|5c*RWXu@TsZtYxgo-O#5$K(yEgr>}ij zb*N&_+FRPF`<;|+%9q!?ggW&L1rAjm`e_&GuoOF$$mFkS?{A!0MgCR5`oe{cpu~-` zrn(hQR=zxT4h|N+pdn}AneUk@{R-Gr-W9dhWc~0@4clsAn$P(O zlI|}+0Wao#SIwLAl6B>gBL((T@A=+D&U>Kq%f3=pJt+rF=)qQk`-R>!8^wcV^h?ob zANIO<=#Y%F z;@idG(}Ud2Q@x(R3x8|w8b*7K(|h*N8DBu5_N#Gs@L9jwRM29?Yc=eI9D5 zp;3fL`!5ZhCkKCd!oYdA*LE2Wg&ov39wX2%yBrqh8K^LfV`(}31?t%lsN#y5RSa`J z=xe-cJJ(BR@a?}68#rThy)L-^Rx=5@h$|m~{F{{jtjX>8;2m^IvjUBRKCDqnB#Dvv z-EkO>EIk1ZKrb3Ywd02+8rabNR+ztE9dER*8Kt(r0)>79r%w2(A`5&fK^AgizV46M z_B5M^pF&!AyyVSS^U}kz^GTn1vlb$ZV!Qa1*&jcFnd5wlk0AiS_;~SYs!}*w zKHWCzgaXsL@7Qt4zSH~7SFcQV)YV6@PpOqsnc1#|Qe4a4BXI52;e?bZGr(&RWMl1L z+q-l^nWZqfRQB1GBb#lCG=GM&AFEV5Ehl~ON>AD1sU43S6MWAgmzRx49@rTHQ`vjd zFY4KDOeqDo5)6K?ifpCkVJm-HMHjfaKQWwi@&k)Rl8t-sq^>$-{;A=(x}~_p9d|)rX;KR$TP}Zx4%EJ@s~<| z__+;s)pgYjw=``V5q9PKh&=Vb{tyOe48-7fD$zuEbby}-J3u~|Vg+!73P5#dGR zn(dkMAc(qP_w(qXa-icqH#`_|;(^J9tdS&H8V7kVdHT{d$1Uv?wC8WKyI8IP;{h&ttjXb7i@Xp>NDQb~y6$Pwn-|+?6-^r7qFEGkh7!OXB<1&w zOzMQTV1gBb6@!&@?JOX{7*QUj!QBj?b#oREhCxweeA>WRc{xaCU|3%cXQ5xq3(F z#o0i}ybKf|rZk9yh_g2K;HqZr{7wRG`0X@e;x0M`%s)gW;n=gm_29U@vUx4x$!`?nN+3o5c;y8h?2Bf z&%kKP(ZspfS31pUG(I;SpRU`-BQ9QDJ7tYh#71K;R;A|ak9{iZ+8}Tw{|j=!Uue`|6ZW>abg3)92qCGIHbstUF3mznR##r5TRw8eWz!m?4@M3n z5epe>aPQ@uN03Da^-VA=bQwRZ>_PJhsC+Xp4s?HQ3W$OQ1IJt1aWo}lL-B}Eue-Ip zOr)mH!Fl6u;0P;lr)6bMPQpXzy1epiG)4yv$)1AsL?cRkM#eVNV0u4l@_J~DkX~e4 z4n^)CBM<9)8j|Va&nNH=c94AuZqg3|R@Kvwd=dAQcrc4PgtMbi4o}DMKcK%V*+O9f z1hTr>nH#4x2 z-`#%g2i7ReKI{$jOHZ1-YZ5(tE@jVnj)kl(&ucyXq}P=L+=`~9hx7t^ZajrWGh>Ol zDNQ{d7nc4S*pt4VLns9admzCv23mU-<5HZxfd2X;|EH&4VN}msFV!=T-;1#+&RN!A1&XMKv}2)T#Cj+c=t8XzQIdZg>NWt@Iy*5H@KJVW2Xf4cq2Q zk*U;p^QQT(BF6z}r5r6Q!%R_huiRKb0gz^&xAU(Q@qA+yYEf@^PYi{|buK^21cp|rhW$nsLe5%~Qp{s-^op08Jr5Tzx2%$qY{2DB`s2hiFiJ0XnAhr*sav43 zIzMuY*rnU=s#m|tm2N_Gh~fYGo@R352Qzo$kxP$s?+F#A%=JX+{oS;{g+fiGGFasx z_BUg%beCgCQPwjp+`i(lrT1|2Z=Jj>Y(&$w{s}eXbD?fik+ZAcJ(qEi_~mXa$0B$9 zg}Xyy&`1DST4m1O--bJxZ&g3n^B5fA_BhM6FuX$}fPz(x-{uZaj}6CFB2!o(_o~7Tss~usI;n9mVF<4vqia~@rDzI$0;NsI*XNJem46cpYRTMy44C`N(#(YQ%=o} z$(y0|K1^X7{xmvY@9ao%WK>_qp)JMwZEQ5Z(9jM6`H(jH~4ETxVF+_#*_d zT>?DmY4W#k;VmK3Nx3iU>(3}#uGcyfcVYT#@21ml~5#$Qqr6|?@?{Dwc@>Wx9QXTz97Wj%yI%VWItX6lG?$Cb~@pT*%M&*^oQF@7=jTvGgkV z;l4zPZrd9I7OtsI{PS5(_ab>8r#^TGUSxd$!HoB@&s4$L9Vi}nt28?Ir?X=Ltsxx|Zdd|jYPj^4Cut$i;K6|clOUJ}Z8JZo*`S;Y~ z0up2pIjjdCYopTf>CRTyl-|h zxNHg;*w>rXfS>aH6e`Fw4X^GL7{nfQ{#^U|zTf_bxE5Ul%)E;gd~r)Y9=8q&pXHYJc+CGB62i_ld7tybU&<|V zXLst#nwI$HP?Fqeg)hFXAf9vjqulPq@q$Nu1@vDtpmzKgNCu@!bp;r`%?FbC@c8h8 zIo_Lh42HFi9kWJT0yMhpLKBrNuZ4#v=D*~bc(32V*&z;-_NPTnq0<5jd(D)O)gI~8 z%brnB(tB=ZkxpXhA?W#6_-7}Bk|MP+-Qx)pi+xZjgJ1l|KD&gR{7srAxK@nf&F6*g z6_u8x^I^cL^C{9NRQ*~YJBWO;?s@h~9Q_K$Gg7rO*=)tkKaiaWymDgl^NBiZVB%Sef6@ESCz|H zbCBQY6L3q-Qc$RkPNNkC=7FoY#R_WCahKT|G>R1fZnx<<%&YrF3d1^8Gv}^i`K%gX z3QqP$5w8aqCH+{g)HKTO{>|^#b*$!i@xeL!hA*nm0sVhh5!lyz0>?qFSUp;bYAuQD zaY|!wKT43x2}Wr~-393Ol@T`y2a(v!u6dGSM+ zFrIgLiO;urkFmX913Og*U2@y~ZXj#&8B2FciRSsY&by1czr|zum~8|y@v_sxk2Q+6 z-YtDSnWY^Mp%6k@InMl%saAGL|HrZ87bc_QFV_OKW5A7~>y`FzOMFDxDEEK*KG@R; zv-CJOO1|Q)&xxQ5`X3z}(9Z)^ltc%5n#D1w*c&R;sSv5DV9~plLgMG0*7troo_?mzx#SNAU%XaTB779q(73KKIVy zHYW|&ojzxdsn81QV4BUb&2j$U4m2}VNdmV@&=uZ&bH#Q#`B@lP^?}^T9%^ZKu#y*u zFx9X_M0#uXG@D*zH3>M*a~nf9J?wmhO1aCJJym=Fk{AjG`O` zyKwsbI`gMHIS!dtkSLjj6b1FUxZPuwFz3mKzCc}jKjy53sk#!S*TYK0t??yaTCaE&o*l$s+( zK(A$96GT-23UEa7=mi+c7JQSN|__NLotiCqXWVek}m=8vQW$fcThH`R=!BpcUQ8t$lIaQZ-h$abLAj2qppB<=i zSK10Q>Vg>*=z?7N5D5unV<+J&o%v(P@h6QUT;}6PkCE^~EY1`~qJ=X{yq>wn32I^+ zWSD^5kmP})kPpm}Z~O7=Jfo<~0ZH9sgie8m!tYLKX_}3#5ZS~Fg`}MJe z?yFpS+!bwA2#%8Ox0hm-aZCYK=R4#l@%r#7mnJ^SpY4A<5>*vc4McQH&hV64eQ5}% z${9FO{5w~+zeVMhCVpMeuA(vp>f{!+HJ3xuh5F&$>vljHsM}$wl-FerTM5;makj3r zvWlU8+D89*A!O9vkVkPq<6*P_HLXGz_ran_*}6x+piAkZc|LS~$G{nlObKB}7@fi}@R1pC z&ptZWmH~H(Icu*h&80|Jkh5gWMKuUMhb0|&Uj4AMvr$v*O};QZGk&q?=yL!CK7!9* zP2t?*khaD-8{5k$+f0e~F_-|BN9QTI6}+|htVyCeflPh`x5oHc`NBlHFOcsRh;$mi zCF^2cn}~)TZR@Gd^(<;vln*`&XHbq=(#-4A`@-p1JM~6RZ}sK8#*fsL&~9;oh4}qR zr8nPs5WJ1@WIAB!WVypB_+(PU2F6cij;zrURTN=vUlNVJJM9q&6|qzJuMpnMQc|JA z4CKrW#PVwA>PegyqPt~UzMWB+S>{`|UnT!zkGZqs>18xB^8Jo43PAr9aI_zM5(gTo z%IFtfoqqxR} zpFKJAYPIS@ijU{`UjU^N?s1DhMUC|ah;^#ybQ;?FWf5cvo>@NcfcPiqRpy3 zF*>N~!Xo41wZY2nMBXXQJnD{pmv7+icMi+Vdrx8V>s0rMnN(6LL`nF> z&DapyG1$*hX*X%IBk>UahpGFp1GNY}k6~(Q{;ASu1~3KpDK^h6>dX;FCV`I%iv4k^ z6c4}&14^v>@bU}ol1;dz4LbWxTFJha^2PhjnlXMQ5*BjDhY&< zXJSlC+h-m;bEy~6xqD{Qg?Qs^j0++AVVgJbC_$K>lkbZXqfY^wt4)%~6wjwoZ8nVV zjbT0vn!L(~YWIO)3vimGe*I;_?fSz*wVU3A+eNPLF}^Gt(Szbn$|;zavua=kX1-wjjy~BkV;Zy`kHML>nf>cxObu$yJRND&8~!XYlgU1XQbred~`|!KJzR;%PL`L7sEnyzOwcQcggie zB}=Q8IW=z5SFcton|9$^k1n5wpQ?w@*14NIS}l7uorIWow|!{qZkDL4W#wkr+5JvbpM9+0g6{Yz)y1&W*2Cv^ zFNy7Wwn7`dh*I za&swTv`DuFGwDs4qH#jiO5_BfsMdyG=z0udMCpf)Uet}9E52KZJXD}4|6vcQWytt; zWSB=fjY*mK6C8;5V-Iw|fU@#iCmb8rVO>MAn1r&+?)fi)b{NLS<23jSS^-_viO>j` zMn$S>Ksu$%Zw|mv6E3FpoIA)cNg3vNCV+B>h4C_+qL*dwDqb~$`I0dPnJK(WmG90O z-1=rOF=WCwW^JO9$6eV_Sv$|OeEU?{9RE2>(UCQW+MqPWWRdPL; zsXtNkXN~9b%Xv+F^fMosIl5JCuSfZ{)>ZqL9}jP}2WW|SVSTD>eO|9z=BC%`<*0@B zpQ0yb;Z*GfV$3vj@RF88HJ^Atm)iGsfCHHhN*6~l#cN(q+Nb_t0jGv!xeetY#n67U zmz<pnslxg22~!9 zkTLlUgcrXKfr=%6@l)9qI(tT78HxDv(*Pr!+V)mX(WAp;`0?n~u%61bv% z*N&(#=;&?M;lRQ|Z&&~Pb`#x0qz43<0oCu3t*h;x^rt)B{0{0uc|L)RIzjoec+mL~ z$c#%@VNa+Py`9)ZLuX)>_RQ%2R{FKkS2X_2qhP|sHHGzP8TPz6o|bQy(6m$g%#Kr3 zJ_Qyah(PqG`}^+S+gP2GG(&r%5fi^S4=1}w>SGlMaBKl?ctNfyz zM5#PmX`833BzF@sXolo&qUZejXV(jBYG^?>m~(ngsa~KG-q6XZe8n>R)Eu74%Q1k4 z3dQC8DT6pfbH*Gl-~!G&wiaa@r0ns9-;2f5&|&TiZOc;fgzq$Gzx(yL-HKGCFBFLK`S3-d2^LrUp-QyI zRE8+ofb|1&`Fqugs#|FY_VjJkZoT{|>^}$2yVNAHPZa~fF{%OEd~X7MrM5BUl8gj0 z+M(5;@f5Ohi;E}P-;-|B83#c0p2D<+Ya|QLI=D z^Gcw4fvQ#RmAKYdJ{5h{6FhuSK0lsB2hu92`XseJ~6s{~RVqgI6yEXSH3yG+wOd|-4vIFPasv&EheLP~Dh5SyG z&xYed5s?siNcLPjQAbZj=sj<>D^;t^1^yl0ZfYKG2eyA!lV&I@cOCz__bQDc=>xFQ zod@jVCB*K?y)`r=Ey`~jRsg=gRt9WyQ`EQ~;c_3B<56;D!oy#2kvMETS?d9XPuLIZ zF)Q!-P0*Klp zl50NN>w!h-zEM6HXmXwc<+C4BjEmEgTu7f!lm=y%W+}h9?wQ0uXrmeO3>v@F#voXC zJtOOGj%WK0^-?e#?m!xu@6RgX(QZ!gcWLFpAhs#+PsJj&^D|-5kJ1yMs+qhQ;Qin- ze8q<~$cFuWMQ!SgoJqE2X~X6GBSAinH0)H0?_8f4*jRHnpwI<*%eQ5lmasMcBP(EjzlA#B)wrBfuk#*AAsja3R$a!LhGzWtirjK zmQ3`P`9v6ck<-)9R=?lYYWvnUxSL=T1B_E7p-FnL5Kq#>k6u@S#~?iU8&q+^Oua&p z-n1y=?Q!p2j$>VP{l}TotUc12 zoV#q(*oiC$PnPhgt4R-HBpe5xO)MY)5`L+XmH^G8+4}D_*EsVt(tV`sGs4@(Sng-nw3Wc<)zh__#JCI+4mmQqm7=arPp_J z@&h+{EjKoYP!$$BgD!lOGWNOKYtMWshA(#h3~b#}uvsnov))xPAV7P0 z3X1Gypa6W?cfxkFIJgWLIao7%$Oq7+yvd*()%7Zrlx_O$R_#uV5_j2QAHici9EVo} z$8X~W=1)_6+_@%Nn#+0%nfyNi=3Z_6!kX_U##H&kcvpx@CCMah;eJJu@HpcMi($1= z5QB3Y^Y553;Ox{HCWjV+=W&bASDqgvecr&hg}dA`jN6fOh556~XL{vmKc^hq53k%o zpW&C8o>?XQ@_-qDb96(VTcg9r6K4}7otxU;wY8qLw&yKIJ{}%xUx9phc7*6v1 zc(~H1DJOt(*uli^ZH}Z}W_|?`K1 z4wgkXlGJ!ma!!NnB|Lm;%10QzhsCFn;N>%ai{!kPBKfo7J%oO=kZ9yeK3*EBnIOds z+Y>JVpOlUsy$2n8t_(`BA8~**?^3|!B{TSySe~;G&GNs)SE7bozNSGrc1~*F8Bl;Z%h(f~Wlw2>MG^+=4H^1us|S_? zUjUo76#V>}Bo&VmK%nYvctj2ak3-+g&nK=1Utfwq)*FcEKADaRj}-#h8toe0S}fhZd9xxjJ8G;{B77mp99imS?m+9?z^x_6n`m0#)gFh5+O=BrSDc@U(}EA0nX zc`=?^q%YykYrBj#R3!p9+7HvAbn;76M`1<0Au9U7a{nt*6%73adPO_1RPj%R#~P-; z&1}yz4&YpI=4OGnReC}+l-2yy;C?Wa&gUuMqqHyz>9Z-X7qt0jw$<%E$TC%QH@R-1 z+@j(J;s8H&{MZ+?i+#`c67fiOkY-Asd5yIq^5>{=i4mecjlTzRuk)M28$z_tfJrkQ z#OnAMcIh03s%J+)J`XoT*FUB1j~GhsgiFg|CQ7%SA5-%7FQJ zvNamGOGcHFpl#q{#3&@rdcStn7M`nNrbylSa_2`;%T;Hn3gMFf|Ydr--noBWbj_Iq@yF2C+zl&0;h2Lexyw6I5!5#rbKK|7NkK zO0my!PqWKc?8Maxzlobh`uA_+qtdY+9B1}Qrs>be`pfz3MDK_8MgX3b5_%ISu;@Aa zUgni6?;z(F1O=k~8-!v>Oh-TAX@oIzh1aSWqe$v;;=3{~V$IpieCpSCDDs(%`Xu3f zQ7@UCG}i|0xdGTuDZ{%jvf2GQ@gj0O0x0sln)%8D=`*)@`vugp=;iR$IB6m~F`dme z&t6+aMeElg|8bf$O%Ji*RbF|^)%6QZ@a{y-R%1i#nJg|7=zAgQBjv3|QcCELo1Td5 z0t2~T;Eq`GD+w9XHcAsbx`B(T+pPrFb4RY}$`pKV5V#DcMJLgO0EpvrJolXAyzctu z=IoCV0*`2wZIl~|`ki;EN`$g60v6p21^vZE&w;lT&sAKMtZ=z08sB++Jf;Kd77#R$K4qlace*2naoh`;=8eY)=?%l{h&!JKyl1q9>(`%_@QgrfJ><2 z@0F2dh=E>d7MJ6}tg86CYyQk)|Dx*YYE}<9!bs3+v3|VII}bSn2p8*PGQXU;Oc#L zv~nv%-kUO#{%n_byY6|2SddbXUV^BLQFM3!5POPY^~b$a2|#H^u=12h%3KhxPzAKQ z7-3(lY}ik>@2WB2uZkx`tRb8mC6g@B#y6W@pc_BhSNxo@k+qs2BnVax z=p${bpJS76{yYL==t@#{5gdeHWUtzS+z(Vyivo)xi{gt?XZGea$2VZ{N#gRY>!%dU-b)lLh+lGpTg9%y~+bbebO_Ghr`8T~H zbbEF@35SEGAEr11Cy}dIA?Tp?y{$Xei#n_${=aYd20Yz2d1At<_;#vp5mo-mA1nYV znPw|qxl*)pD%=dnK25njW_q6&GkV{^s~0(L!$Vi~9H>Y&_S^W|Zq0X5m~>am?$uQ1 z%GfmXQwgPEE;Bp-1hS0k-<`dXnq8SI^Yu|lX&k83z!{BXi;<|1-QtBsDskf+JtR_k zxBT&{)f5CuUe*4Dio+;6av~Lxnn+8eC&tIo5yfK^=m;tFL!LLrccm%2q?NZys!^*l z>C_d(sg=UGYVg5{N8dCI?w#!vcSf#I=8sPkK%0KtSaZ!tXr9Ledz+~CGZTzA4j+@{ zWcmV@(j*IP$vGX-O|Os0(7oMiTv1q(IVa1^-l#x9>l}1e!jnY;9;)tD!Cq=R9bNqC zwtqyhe-*Axzs;)6sm-q~a^;PxClBT~f3@qjR#t_pEB)`MuQeP|THNPWWa6TuWmD6J z3YD&d*78RPtS2oc-Yo9i&AKb*dr{@ZW9g>&K5?Btz9q*KDo3pcVIJ_b_lcc3|89N1 zmqQekU!#flEEl44n%P`1wk8TBdp>n}5gwVt(KATQ&!ZVpf=*lxuLN#F@NoZ8MvZD+R!% z+}YV@&wuj7%WTt6CetUd^s$_6DK(a zCRcPW*63&|8l`uNEa@m-8z*%q9OQq0`o7(vB6?ccrA}j{(s4bDatQX3D5bC4NM5;ua#L9up~vp=6Azg(3dpxLJ!=3tL-RDlg}TrJmj^ z?Y3|6vB@bdGn<+rB>jiT%bWsprixFgrZy|^)+M`C0sB3b(z6WYHv`eYQLNi>EE^cz zP={~2(2VJQ&C(^I5zA1)J?B(L+NX=0xqsbpUUmlA!XXSk63A8vIq{r7;c4_MW%ojy zv0f1rsXZ%mBM!iweG0VDe(+`($Ce>eeBggXefx-GfNfz)YAR=?{sQz;a{Sdx`tliyZDQv+OX&M_c&v+x?XBak78gN;mX832)^pa&8g?91dudeF>B>u&;4A6z|H`@&a46R{JeXo) ztSw5Iw1|pRX=EwiOq3!zZIq-RqwEeth|IK8%A`obvuEOxQhqj7%Rz4HYSJUP`v4KQ}^35|W3Z5U(3dr9X%DC3rpS^HY^6g-*>VwIEDd zbZLby0Jt{IW_{_O9j&mK1YftaK`y7_|`r zgE^%Y*8##y%*3xtzQMWFpSACP=d{x(X%0?a@otWqGqP_#TTh;PbokA$Gr^6z%WR7+ z%jy`?o*?U3zH+`%*l#_NnjMpSurZ|FF?Wk@p-};d4-D1zZ?;NdpPXAW5BZ+MKokHw zc!r8HB)1EI16-=>jJyCPuo3=Mo*naiS?5d8%w22oc2;tjog`EHWx97`;m3u0XBnJ3 zHTlu3$x&~gjt(38r*HP5EshB2{F}{JNY|gF{4PdDMr3sL%H^0Ty;nb3`E$r0fY??@ z(wO(^Rh~x^a?H0>XL z5Mu3IlM=wgd3Y&)|HXQ{Vf9!)sB{VXklz+mL4H-0$aP0p9&40z+x8tCT>SxuOwH>z zzN|j-@s8!MRacUe^a8n6$tVYGeho>$~I7jY`kJIixD-Z)aG9`Uzw0(@FM+%t>FT znoo;#TC2F-ofEILtu>i<4JvO9O2?_mEA@ha>#P}gbOi)Ty#P6hIlF^xU}NniZeEEn z0_iJ8tuunfmrYj*cj!;v%lJqxnF`H1dEYZQTlKi5AiNG4N7;299H*~%#$v$WLq2~F zo~8YNDz<6y^3QBZsI3MSJ$8Zy?$S@+`OpyLwcw7iY9cspcw5R-@&|T27@}3j4$apa zZ$8e|5PG9Dtj`B2DXb+OK5{_8^8m~580JNq87a6(1sAYJCtdJSp@MdOtrx`?w)$^# z6S90ZJt|+OR}V`EdVzRH@kjnQ-MS-unRLbAqzKj$di?>luUoy_9NavQCw75|OLv3U zJ}?*Wy71pwaF6%&60%g7wCpYjHj9%RcEFPu2E^VL2rv$I-i?A0ollm@S)X~4FDd+* z_(5WL`kLA6Y3LS@@A4s4SB&RGKo1LC#S>L+PGp5`= zf!<>TQcz5N^h&X$RU9&^`@p^X5ks_qxlpu_dDGtWyc&nR=3L`Gkb`jsYs*)Qw&7{? zr^N=+%Ks}gE*w-*)V&SZDJMeZw}Y23$a*U)|Cb6l?XfpJIC<9IC>M9+YE z+kdNKP-PkAL&fIm!Hxb3ue48w731}PFX*FAFy z{o$!z3xKbT@l3m)~wmNKoscumL>@o@<-lW z&KSY6=wsI^yam?^x(#%|hLTWUI7VoHe;Q?G-3I!7X=pPDkn6WVAl7QKu^~*8>gSBD zqnJu_CB~#|90jx>{jUFDWV!gQz2e)IX_C+ex2|t1x^3$B4B$EVb^PWMpYVfu;7v*fGf9oW6mwjJc z&`c{KhFi=RceEZ2v3eG5hQ44(d3x^ss8jXFmC+UREA@O~8mLTP@(85`YrJHt)=2r@ z>uj*tMD^u>FZ&O6KSd(G%^=Hh6Ij`x548em0nII*J2y+}LOphOC|uW(IkZez!0YHK zOO*r)D|ov6GRqadaeZo7GChNyHF%QIWpN#@2c&`_RF?Olqui==(p(C64(gmvd0B8= z&rV%eU7`Ysn$$Yv9tFTZlu$~2N;Lm01BSO%v7zqI2?9e%Q6(0~^sGED@fKd^mG`Vn zmG}!wr$2lg9Zs3lwMqZ^Wjqtl%I|Y;utBvDyyq%PyQ6?%mhY<5gtWv!2~Xim%W`m7 z@A{4lF)ab8FDESZl?Y;F*>7If5c=8&I4}-go#*(-T zPikYd#qwQ!w!`!%#^DQ`atooidOk5O{s}A1nIzVW@$C@{AO($9M=ul?v^ECE)I=MJ zOIyWD=<$+W!c#osp1LHI$re9pH4Pc9jW!X#Y<1!{NP_r}6==-)qWR369cQT5^;|?) zJfyXyhKR^E8ejy&X^c%eV>6q9u|CZ%fn^`nAV-5oALuPW;QfC8o}Aw=A4&D9?vQJ+ zSq{(-qR^R~bOM=7B&P-Hzpu%LsqeQovT|iyS!n)RQkMHcIN&C!B8)ekAJjSiXKn#;FI5;zDP|B{Q`oI5FP3ulq~rZ^2p%jcl6 zA#CWs_+W9?9Vq16@R)e!zJljLL{w}o@xMpTfr8L5*gOJFP9u@N0whHMtUo`%4kx*D zeX)Ps&av;e6R-XBakR0xyj8xSeTKNQskkGl?h+ACb#74}A!%O|H1!G@TRe~RBMZFh zCLN|85mp{g>^!GDJ`U)i+^Kpjot!Xj!q!>iYaMsKOkXS(tH50vA*=OuQ|yT|dcQxj zp+;qLYt3M-ypyM({oPJwZ00v;97`kL{+5m8;)YjY>1ay^2sNJYRoz@8Qln(kwl7Ze z^t2{0s@j2s!~h`x-oQMv)YD?@PvNI0i)H`g4N_;poak=!-Sj}i>z9&KZb{ft1cJh? zwbr!FRjb+Cq99xG$7di{ZFA%*D73`s!86?kk*Yl~m^0@Qk&#!{ISVv<6QW1WmhMCf>=xgYXbf>s! z#*I&+X5~j5)&Y+T1lveMGI)wUXgB;)EiG;6r}B+j)nXZu9&@&6HuK8N-5DkpZn1vh z)jOJjWLJsQ`=KOj{?T!-8#FjvYvP&jRjuef#gd4};>YoL{M7K)B^|MT1Rtm{Uk~1E z!1~;UNQ^gKvd+GFeF>HTRdZRxgkP3#>8Kux!>E&IGG~cqG4;@mSkZ?vt0rcHFPl_U z1mqx)D+$yltvosWAEabb25|ePSRQ`AyWdZ+hjfG?HVOBMy%oCD{I2%8RAI6UkD?b$LX%SigOGV}i zT6IW-zNqex@jzlc4DFYb`CGcWp|MRclih;}tWLOlXt~Z0X(-rjpsJ@;*#TOc{s5dd zKsAMU;*0kC`$C+56di%;F0dAUP7I1Ho5E_ZNL}?j2HlA4>u`1=TdiqQROl!QIpLwp zhfNBVol0GaijhR#0eh_M=kxcyXS$clh_snHA|0l#D1$qoaG`2q=l##kHBiSs#ls=s z30UwQP&B#?vB@8X7PPJZ?hfNO@t*`;bo;M9xiv=G9$ce@mVgHhY%b>PPcj{UM> zD-rj`eQ|%lz5c*Ms;e{X`C2nLb#gDE$Vxo*1#IJ0$ZZ|jimkpI5hUu1ksbU+`Sr)# zqOWFgd<9DdCW2-6mQ5a+=UG`;XnmJ5r3{1wsga^R`#=`vgz4s9sMrapy9*LT@;RD= zz#IS9^bB^urpIC4ByKslwL~hFD1B8jCr7UL_LnS+-eW^m`GP1F$eccYrrC?0`ize| zPd{*3&>k&zHIDn|Y(HRwwU6!cU(OIB6-yM2mtse0r)bHvjDeh*=^+b5dZ}x!LB94g z7(+IL7)vjb2O98s1;}kPX!P`+j2J+O*Y{4#)Tb!^c!Scg_;%b0--f&3uFH=oAJj=S zo-?@GbI6bh@!lPTvH{zKfdU|uY}G6Yhpkj9M+@FG{g>WLEt&tc!~RdPNP0rvsES$9 z*3cYjPBb^#ZdxF1FD=I4@ZZ?HIt$LCk|YPq0c&KP>kkxG^r&gU$rQ1}Au;>*7tBTz<~Ju{o*gDXZWmm?TiVk#eM+C1eG#mDxIMBlb$R1A8YsfW4o6lAZogS!)+*fLSccZ#hCrj=I9D^LfJ&Xo{RqhV}Ts|0-HG@ne11W4?Y5^y? zwidg6BEf%veo+8D)eLCpZUpf9^WG*IIe^Qu?G; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/opnsense/scripts/harmony-ve b/examples/opnsense/scripts/harmony-ve new file mode 100755 index 0000000..60ffc95 --- /dev/null +++ b/examples/opnsense/scripts/harmony-ve @@ -0,0 +1,105 @@ + +#! /bin/bash + +harmony-ve()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + SCRIPTS_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")") + . "${SCRIPTS_DIR}/common" + + _short_help(){ + + cat <<-EOM + + NAME + + harmony-ve + + DESCRIPTION + + CLI management toolkit for Harmony Virtualized Execution Environment + + SYNOPSYS + + harmony-ve [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + harmony-ve dependencies # manage localhost depend + harmony-ve network # manage localhost netork + + harmony-ve opnsense-img-src # manage opnsense OS source images + harmony-ve opnsense-img # manage opnsense OS images + + harmony-ve vm # manage vm + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + DESCRIPTION + + Automation CLI to easily provision and manage a Virtualized Execution Environment for testing and learning Harmony. + + This tool allows: + - new harmony users to start testing within 15 minutes on their development desktop + - automate virtualized test in pipeline + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. +EOM + + + } + + + # Implement functions + +case "${1:-}" in + + "") + _short_help + ;; + -h|--help) + _short_help + _extra_help + ;; + # Commands entrypoints + deps|dependencies) + harmony-ve-dependencies "${@:2}" + ;; + net|network) + harmony-ve-network"${@:2}" + ;; + img-src|opnsense-img-src) + harmony-ve-opnsense-img-src "${@:2}" + ;; + img|opnsense-img) + harmony-ve-opnsense-img "${@:2}" + ;; + vm) + harmony-ve-vm "${@:2}" + ;; + + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve "${@}" + diff --git a/examples/opnsense/scripts/devops b/examples/opnsense/scripts/harmony-ve-dependencies similarity index 64% rename from examples/opnsense/scripts/devops rename to examples/opnsense/scripts/harmony-ve-dependencies index d35a220..a5abf83 100755 --- a/examples/opnsense/scripts/devops +++ b/examples/opnsense/scripts/harmony-ve-dependencies @@ -1,32 +1,32 @@ #! /bin/bash -devops()( +harmony-ve-dependencies()( set -eu [ "${1:-}" != "-d" ] || { set -x ; shift ; } trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT - BASE_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")/..") - + SCRIPTS_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")") + . "${SCRIPTS_DIR}/common" _short_help(){ cat <<-EOM NAME - devops -- utility script for this example ($(basename ${BASE_DIR})) + + harmony-ve-dependencies + + DESCRIPTION + + Manage localhost dependencies needed for Harmony Virtual Execution Environment SYNOPSYS - devops [GLOBAL_OPTIONS] COMMAND [OPTIONS] + devops-dependencies [GLOBAL_OPTIONS] COMMAND [OPTIONS] - devops up [-f] # Ensure that everything needed by the example is ready - devops down # Destroy everything - - devops check-dependencies # Check that dependencies are installed - devops install-dependencies # Check that dependencies are installed - devops setup-network # Prepare the network - devops + devops check # Check that dependencies are installed + devops install # Install missing dependencies EOM @@ -49,7 +49,7 @@ EOM _check_dependencies(){ - . "${BASE_DIR}/scripts/common" + . "${SCRIPTS_DIR}/dependencies-management" missing=0 NEED_IP=false NEED_KVM=false @@ -73,8 +73,7 @@ EOM } has_wget || has_curl || { missing=$(( missing + 1)); - _warn "wget and curl commands are missing"; - NEED_WGET=true + _warn "wget and curl commands are missing"; NEED_WGET=true } @@ -90,23 +89,26 @@ EOM case "${1:-}" in - -h|--help|"") + "") + _short_help + ;; + -h|--help) _short_help _extra_help ;; - check-dependencies) + cdeps|check-dependencies) _check_dependencies if [ "$missing" -gt 0 ]; then exit 1 fi _warn No missing dependencies ;; - install-dependencies) + ideps|install-dependencies) _check_dependencies _install_dependencies ;; *) - echo "Unknown COMMAND '$1'" + _warn "Unknown COMMAND '$1'" exit 1 ;; esac @@ -114,5 +116,5 @@ esac ) -[ "$0" != "${BASH_SOURCE}" ] || devops "${@}" +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve-dependencies "${@}" diff --git a/examples/opnsense/scripts/harmony-ve-network b/examples/opnsense/scripts/harmony-ve-network new file mode 100755 index 0000000..fb0e62f --- /dev/null +++ b/examples/opnsense/scripts/harmony-ve-network @@ -0,0 +1,74 @@ + +#! /bin/bash + +harmony-ve-network()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + BASE_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")/..") + + _short_help(){ + + cat <<-EOM + + NAME + + harmony-ve-network + + DESCRIPTION + + Modify localhost network for Harmony Virtual Execution Environment + SYNOPSYS + + harmony-ve-network [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + harmony-ve-network check + harmony-ve-network setup + harmony-ve-network cleanup + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. +EOM + + } + + + # Implement functions + +case "${1:-}" in + + "") + _short_help + ;; + -h|--help) + _short_help + _extra_help + ;; + # Commands entrypoints + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve-network "${@}" + diff --git a/examples/opnsense/scripts/harmony-ve-opnsense-img b/examples/opnsense/scripts/harmony-ve-opnsense-img new file mode 100755 index 0000000..e3ad33d --- /dev/null +++ b/examples/opnsense/scripts/harmony-ve-opnsense-img @@ -0,0 +1,81 @@ + +#! /bin/bash + +harmony-ve-opnsense-img()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + SCRIPTS_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")") + . "${SCRIPTS_DIR}/common" + + DEFAULT_KVM_IMG_DIR=/var/lib/libvirt/images + KVM_IMG_DIR=${KVM_IMG_DIR:-$DEFAULT_KVM_IMG_DIR} + [ -d "$KVM_IMG_DIR" ] || mkdir -p "${KVM_IMG_DIR}" + + + _short_help(){ + + cat <<-EOM + + NAME + + harmony-ve-opnsense-img + + DESCRIPTION + + Manage opnsense images needed by Harmony Virtual Execution Environment + SYNOPSYS + + harmony-vee-opnsense-img [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + harmony-vee-opnsense-img list [--remote] + harmony-vee-opnsense-img new NAME + harmony-vee-opnsense-img update NAME + harmony-vee-opnsense-img delete [NAME] + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. +EOM + + } + + + # Implement functions + +case "${1:-}" in + + "") + _short_help + ;; + -h|--help) + _short_help + _extra_help + ;; + # Commands entrypoints + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve-opnsense-img "${@}" + diff --git a/examples/opnsense/scripts/harmony-ve-opnsense-img-src b/examples/opnsense/scripts/harmony-ve-opnsense-img-src new file mode 100755 index 0000000..dd8fb68 --- /dev/null +++ b/examples/opnsense/scripts/harmony-ve-opnsense-img-src @@ -0,0 +1,91 @@ + +#! /bin/bash + +harmony-ve-opnsense-img-src()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + SCRIPTS_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")") + . "${SCRIPTS_DIR}/common" + + OPNSENSE_SRC_BASE_URL=https://pkg.opnsense.org/releases/ + DEFAULT_KVM_IMG_DIR=/var/lib/libvirt/images + KVM_IMG_DIR=${KVM_IMG_DIR:-$DEFAULT_KVM_IMG_DIR} + [ -d "$KVM_IMG_DIR" ] || mkdir -p "${KVM_IMG_DIR}" + + + _short_help(){ + + cat <<-EOM + + NAME + + harmony-ve-opnsense-img-src + + DESCRIPTION + + Manage opnsense source images needed by Harmony Virtual Execution Environment + + SYNOPSYS + + harmony-vee-opnsense-img-src [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + harmony-vee-opnsense-img-src list [--remote] + harmony-vee-opnsense-img-src check [VERSION] + harmony-vee-opnsense-img-src download [VERSION] + harmony-vee-opnsense-img-src delete [VERSION] + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. + + DETAILS + + - for 'list', show local images available + - for 'list --remote', show available upstream images + - for 'check' and 'download', when no VERSION is specified, use the latest + - for 'delete', when no VERSION is specified, delete all image + - use the 'nano' flavor +EOM + + } + + + # Implement functions + +case "${1:-}" in + + "") + _short_help + ;; + -h|--help) + _short_help + _extra_help + ;; + # Commands entrypoints + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve-opnsense-img-src "${@}" + diff --git a/examples/opnsense/scripts/harmony-ve-vm b/examples/opnsense/scripts/harmony-ve-vm new file mode 100755 index 0000000..d39c4b0 --- /dev/null +++ b/examples/opnsense/scripts/harmony-ve-vm @@ -0,0 +1,77 @@ + +#! /bin/bash + +harmony-ve-vm()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + BASE_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")/..") + + _short_help(){ + + cat <<-EOM + + NAME + + harmony-ve-mv + + DESCRIPTION + + Manage virtalized hosts (VM) dependencies by Harmony Virtual Execution Environment + + SYNOPSYS + + harmony-ve-vm [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + harmony-ve-vm list + harmony-ve-vm create + harmony-ve-vm start + harmony-ve-vm stop + harmony-ve-vm login + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. +EOM + + } + + + # Implement functions + +case "${1:-}" in + + "") + _short_help + ;; + -h|--help) + _short_help + _extra_help + ;; + # Commands entrypoints + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || harmony-ve-vm "${@}" + diff --git a/examples/opnsense/scripts/learn-harmony b/examples/opnsense/scripts/learn-harmony new file mode 100755 index 0000000..3bab681 --- /dev/null +++ b/examples/opnsense/scripts/learn-harmony @@ -0,0 +1,75 @@ +#! /bin/bash + +learn-harmony()( + + set -eu + + [ "${1:-}" != "-d" ] || { set -x ; shift ; } + trap '[ "$?" = "0" ] || >&2 echo ABNORMAL TERMINATION' EXIT + + BASE_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")/..") + SCRIPTS_DIR=$(readlink -f "$(dirname "${BASH_SOURCE}")") + . "${SCRIPTS_DIR}/common" + export PATH=$SCRIPTS_DIR:$PATH + + _short_help(){ + + cat <<-EOM + + NAME + learn-harmony -- Harmony Learning Tool prototype + ($(basename ${BASE_DIR}) example) + + SYNOPSYS + + learn-harmony [GLOBAL_OPTIONS] COMMAND [OPTIONS] + + learn-harmony list # List learning steps + learn-harmony show STEP # Show instruction of step STEP + learn-harmony check [STEP] # Verify that your ready to begin step STEP+1 + +EOM + + } + + _extra_help(){ + + cat <<-EOM + + GLOBAL_OPTIONS + + -d Debug mode. + + WARNINGS + + This script is experimetal. Use with caution. +EOM + + } + +case "${1:-}" in + + -h|--help|"") + _short_help + _extra_help + ;; + ls|list) + echo "not implemented" + ;; + show) + echo "not implemented" + ;; + verify) + echo "not implemented" + ;; + *) + _warn "Unknown COMMAND '$1'" + exit 1 + ;; +esac + +) + + +[ "$0" != "${BASH_SOURCE}" ] || learn-harmony "${@}" +