From 1432419be874efc9493f70f458b5b7c8d89a1a0a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 9 Jun 2026 06:20:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 09 06:20:51. --- .../20260609/20260609062002-Binary.backup | Bin 0 -> 263454 bytes .../20260609/20260609062002-Config.rsc | 3594 +++++++++++++++++ .../20260609/20260609062002-Diff-Config.rsc | 25 + 3 files changed, 3619 insertions(+) create mode 100644 MikroMaster/20260609/20260609062002-Binary.backup create mode 100644 MikroMaster/20260609/20260609062002-Config.rsc create mode 100644 MikroMaster/history/20260609/20260609062002-Diff-Config.rsc diff --git a/MikroMaster/20260609/20260609062002-Binary.backup b/MikroMaster/20260609/20260609062002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..84594973b76a9cbfe7d65d6c33f8b3b2d525a2b2 GIT binary patch literal 263454 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%0DHP~~y-S}41U)@yR{o&ZnM zY>~6<8#r?@nPI8Tl5a~=kKcln`)O3X>$DhfYDjF`@6CA1HT9EW{I?opi8hD$Ftuf6 zRx=Tw-vnfKuoD9DjJ1;$MxIJ-wUuQbFnb)OMGly0p?J#;2u6y$p_roooKoxrw2Cy8 zYDa*oBvi`7b@c~@-ZVZA%QYk1FTSM4{Bl?I908LF^-tqEZ6Iymaoy$Z#e!G(x?55O zRKeivay@pf13z1j2myHD6-N*j& zzo_4*k2%0<=`n`DwBcR^cN{msMxq!r7T2}eXe8D+remQgWeG4V8H*?SQCZ58?u1-h z%?|aiS98XYSfxdG8|S-CIc41nvFAWKM{*X-bM7R9AJNAjKdiAw6g9I01Rs){ycz44*J9}z1@eKWvQpK)(r{lP;}EoT{ea_^NYo~a1+`R zgJNw=_~<1J+8eGVT2(L1WvL zTl zzMvAy!Yl=+H8H1Hoc*Pp{>FV0&^FBVCzSf)w<{^-;1iEP&6ozbU8lHS5-@vS7??U@ zca^eN&w|!W!(WP?I{wDBu#NTX_t<7~A%}xuTqbg3nzh=5HU-13ckgbW@sVzJJR;U} zRapZi6Q+g%J-n{q>$i7oyjiTv$e#-fz8yluy!hYrv*xjhgj}s$JzKk$f7+3)+#W)a zWoTpVAXfR0VrpqJZoxF59((=gL!6`xI7&+W`vT}^T{@m$W5*(7D%-u>20``)jN^}I z`*+}2+D9XjF5@hvC3EA03U*%?^kzDeSk22y#}^xH2s53}Y|9iBkhG65ck83Rw@fLa zI{7SOKs~o|cBS;4JEBXWT~lbE!C)kthi+vBZOB1RBhaII-5G>4wM#ehj&LAwJQ6dk zsG@4zaq5=Fc3e#7GWN2QY|wcGpIrR0f5&w(GzfybBld(>@aBoI)ibU=TDa+aJVJz|@h zL&QjpAGci7A&| z=Di^)`sR!;XOSA)c5Ibl^a}hgk?~;L67mgd1(_ItzS06CzQ|fMG;KIu2(Y3YO3CHY zqCZ&oDCr@pCAV7|=4)C!XLg~%Rdn&RFOX5cVCR;pZE+`yRPT7N zRa(C|h^f^gGE5j2s}Fbln5BK9I+~80J)yMQSQbqc13dZr0ahb)J(IcArMBqxTB5Hc zQ_uY|8xsNN>jrH`2jHVBIr6rF_}VFR-Z=?&29(sjW}VEc#n6>lvadEU&#cF+f!IVh z*yD!%Htv#iA1^n_X8ov@6?MUYiY{KXt4JXkOHw3mdo> zHXRA7-&+*@uDYYv^|IKhYyT593tTpe{^92f@a~zj+s(!R3rYafZY+JHso@><{Vo5w zfJ2MspmgS-C{l6Z3*3)kZH=ok{^Q#Rbr^`& za^3cUL~g%J8cbVjGklj@B(?qUSp?;;%g3JX5Wd)s+UK}V7I~WS3k^WFsjlhYtcwl5 zh-;o_Y>xAsim4W$vS`ntvg!4%n|55V{KyQvuZPAg!=wAdV3V$E-hO6TvxEyrqX+Rk ze3M}OmRy#ia|-n+lp4kTQq?C7jZ9*BrA~@5Q)X%+5WW5I!JU@Q1=S#>b>HnICCLQ2 z-Oh9_>m;2rt+b8qQF&iB3Y@QIcaO$RT^3}|N&J)x*;=qUQsYp4?YQRF@JGMIXYTWPlL$8J;f!m&(RL@3mBKCI zLlP^o37DGI<<`Zdh%ZjpksZkO>Ao)4-o2uV&5=}|_Nr7I53Hdvl!9b?Swx;M(k_Cb z4qe8Ry9cdU?;{PFY;N3q0AhTrj;h%LJ10Y|n!<99j%0jGVdp{`%msxYAJ``nb!HFW zm5^S$G0A;Zn?rhnHcTH#r!@l0Bq;djI#omD#EjE_F}7N2clyVd@jGXG7p8oN^wv{l zp}~TA5_{o(--r!0|D2eaHtoiu4l|b0bu8A7dgfb&O2)-KbLGLThlu5no+kjmA*c&Z=^Btz@N@fzE41do&~)0%05m(*$x*W+JU*Kz@Re7$mqm1u)rR%Ng?LZS`NFgie{RS zYuP9Ec+B_2%Dawy^P#sgV|Tmd6Q3k07; z_s&vWy^SDGM|fg8%Oy8(UP`yo#m($zUg$OK z;o?Y0DroGQH5RNTaT%oS>v(qZZqlh*u9J2)R(^rEds0XX4vxYg{PVJ*N#&A;XN#X4 ztxW>ENY^sifC{&MQSIgnIy&fPuTlz3mF%ho2_xGtaD-BWYv~pplK?id3aK3vv>Dm| zB}s@GMKw1;(5%tKOCbzAHa0C2JwsU6!Aesq>r{aK1rFI$tarP&_-a7%GB-u2=gY3< zaEw$4t)u#A&a54(OeOL>oFfg^TKRJy75M+|x37(G6;{qPcAgT$!vcTxsT1TV%8Gq5 zr~L#fnR9Z+^bPeL>_!$oS>bZ&oou9^vcddyC21$>99}a( z%&b7vty(bNQDbEQ*-szEVKW&fNca?OLv&2t?x(cc4BNhx6XZ3d-;+#$Dr{JL@qS;525MQ zXQ=BYGC+z>M43wDAY_itofu(*j;H=ae+N_rk?R*Hf&r z@`DZ6ae9?WYSH)@ZpHeszqJ?5ICnzv?>eOnh*>W`* z<2tiq32-tcBwm5wR-KkQl!SXid1_-Ma0(Nu@lj>09pBf2(`TPEl4MuINI!Zvx5P46|M$S z+*%RAdP4PEQZBfBq2R_p!CF;HQ-((}sr1#Fdc2@4d>B%3&g*=mWx<~VrMmaP`#Dj= zxHM`tqm;3VKC*>my|f*_jTn)*<+mpeG{xxDU*9rU?`1uIZTCSL_QN9DyB`_gyBkJO zeqiO$Nq}*XWvone`GN7_vzB)wwj_mTJ-CJqniu9^H(*QGez#y3E7IHs@y&xSasYxx zEbA4OPEBPP&rE{8Uu!V0`KEpuR~1l0JlIbdgC%jcx_N~aNKpOWUoJ)1LNws^>n)|E z%v?E)WvI3nT&#?ypmscF@?;slAyekFfNX7Axq>N$b#=QA4cu`kQ>-2pPbzVM&wh)} zPO;saUg#PlYdGX|xj1DJ@n?iUO^n=8WykbIkgaXCHoCKAH|pT9sKb=sD;NfnoAu^r z#SpxCD$rd7e6Ho}n7TvigP9AAx}LP|7@@ODJ`s!^rnnUh?nMedX|(O;bz|nNJ>hB> ztrfo-{^he4yq(uLu5YY84E-AhQc#BpX~*wd>!pC`tcUL1o@%ETj0& zGEH{+WUM!X<1Us9HX6sR?|ssy$H8m$TiG5SF)e$*)ClE74E!4#!}07gCp$T_XdAMr zTf$;6N3c`rh|KbQ8<%`x(l&80nOYJxhw7R00i-!#>UBz~NXP>IF8IQ}1D!sDYY>F2 zB{6?rwFo`EIN7@m-X1H;?-I{jmUzvFv|;|UNaD~hxM_U!61H`zn$@jOxOb5lR0gS7 zOZpAi)6PY3Vcaf4Sl{Y{B`^o%EpMtYDK|;&ho{Hy6?s5xAX7 z1w{PxAu$;9{(}VQSHaiD6r{Zm25H>*%IbV?-}&wi%}p zalsd>mYKqd2ay4x490{2al93Lq;QNi8{m&xp(JgS3X3Nw`wZp?uiYhm|>^b ze`b`F)g@SY6>bWAlMpShJ|p-LJj?SU&~r209ih^iY{zztulnS2iS25&|39i#$x2U4 z^RWQ>y2=nDs0ZT7=IIl8xXRn2wP0e3SvQJTaKLotGmUn_=g-XHFxk;b5!OSCYl|q} z#{Y1^lpYqfps2kKThP|tFvtDQ*Kb_Q&cOV`|11QFy0cVD3dMztdOkugMxd7j$7Er{ ziMK4pf4=K9$6SUJq;`-PR+w4t;lRC242w3(U$jTbJO^k@;h`|Y9$%v)D^Tr|+jw5i zYXl}sYDmYJUO+a^=cX>4-U%*9BcTPvoWz) zEnq~Iw$qs*P*G705-xNH`xVwMpy+Kfl20Xm1O_HjOVhJ*wyWblne^Y~Bh#(xxtgT?30^1}{WG_6q1D2@z5q-(6~MWcj%^^V^N!{&g#z z<0;jVpv{e7&@)ys@4ee0tI8;Wr ziSvl9r&b;#{W3LC7j}I_U2&hx%mc$T007`4VvOfnV_RUJH%zA~G9=KYEH7&_8HjWy z#hZDzVTDIh4GWr2Pi~Q@ND4SH%Som~;b~)nazu;vEnr!_eekg)W^j#K5kSbe*ucJ8 zd^fjjXe+0-X`a5Sjpyx-wXM}D6Z-(J##~e!yw-FRAl@?3z^>!>38%rh<06nKPy(ry z{|DGi=T@-fV{e6|#>l2*M5MX3PQht(RollT`W}l#$Km&jH*)Ez z7UM{m7~85}D^xV0( zGacj#hzw#k4mupDMKM18)~`z+_Gcv#HGM_5SPDSG`|9NFKlBNI!sqlLL}rz>`vmmu zg(bQN(0K2#A+)%r?kDX?DqMP#Lng3m$3Ru@)@65}16arXzt!|^l4_{U(}v6&y3x7$ zGS{T5uy}T!{Jo^*sulK$Xu__%?Z|Hy8%PVBI57Yz?Uzg$pOCP@kV36yaF0o;80nVH zQlQM;^vyb27NHe{&Y*Z2#H%!XrckS!hk+YQ6F#FD095bV$l`QQ=d3%9hclvJp^4}Xg~()aPSjr?+IA4Tl~T!4#(@}R0@FU;SUGiaqg^OhZK(L zjb$rieLSfoI4MQ^w-I|v#ABFmJ~$I?8#;BY4?6*=QESys2nUnLo63`%4S-rZOlITz zrF6M@(N+%5F~$(+|2c+2WKJlX3M-x#ioVL*hBxSa9c4}{a%=&Q0WJSYc5?+X+^g+8 zVJR~Icf<~&gqJH^*^B}VZwPa;+FWav(!eQZ(swoG-O*Tg;x6ZB5WXMGXxPErE2ZfP zJ*nscC-!gS&**7vWtYR_o~3gG?Owf>2v83SWn1l`0K^X>vSENqiK@ny?LY%@?WWG( z=8e^wGtA^GuHUcLPy?t*piLs{^~u*HKQU6L&`xbsti^*6k756>Y84 zmAbdA)3x@@&!f;GX{8cr$rSAAO2~7^KF9FNcAz&!BXylZgn1$4a#8KjBGGxQ7tujf z$Z4J2@j2qN*DYz-D8!{Ov%Wqn3cE!Bcq$EtdHf2eA0*%mZP-J!A%DX|C6d?yN!Eku#02 z=GB;DH)(za20q3M`)&khH+ zcX$;D;}{2JOUD$Sa-vo1f&?eu{3!1b-3U@-h;UyGmrj*RcI8E^X%0!0qmGOb6?8(& z;rjz=>zh*}Aw=|yQPpwmWF@Y~BwiDU`F?nd#j-EN?bxI8BV0(kB;lPkaXE(_S_ zDoQq9@)SCZoSvJ8oUuW*86)l@<4gU1&d`4O*jd0lrvMP{IHH(f>D=RN%&JFrW#1(! zU5LL2{(M~goiO>MEJFrcrIbgBuP}K$kNT?p*y12>Q7sG1WOPH4LyJO(fi(TE`HFPl z0mR5hm;5Q=57~DQ$xp@Mh)r3m*G_U9ocDWrkVPpL-*2H^BJwScx&y9Tb~3+Y%A5yC zKkd1J7JE955etN}i?9afN=c~`5-!lMBH!^#64PhLY`Hry$%@!@6`Z^E9|Lr^n?B>= z(u;ysi-$-x+u1>o<5ecGzhpt!phPZ)B4Li@$lzMR`wJkP%)t!h*1kqx-rr{W;e}4J z{S$U|jrdMMl#MBlowz_|b<$`b0Y&0aF-a1DeZH9i018l3s-j z6@Xol!Ua7qw1`%fsmDdh-}&d%!00|S%|1;aV^?jCn|W|yd*~~o-$6+XGcn1Wn$&P^ zt#=AJjdl4XdRE<+j1~(oDYzYtpCa^PFb<@%MkJJ$d!M?c7{-bz-#I?SeGnEmQ8eASCCt z@u&JQxyjm?U0YUm373o4-;K{l)1}UgY%*MmR$UIwcc?Ae;GvdwC~tadf}ui;i50ntN1Z&BfoRPy@t_s_6I^l!SRGu<^QnH9 zI|Gg!8vn*)tyOv+V(K5mzTJ%@b;}EDh}BH^-nWP$$N*V9x3L~*dxH>zWW)4sh%T7n z)vo^74ci0ev;Lhiw1nyD{b=9(ouY4NCCx8lkxA#NjC5*!*I*_JUDgic1bHJeRp6R& zw1@Zu_L>2Zrq;dqkUGG|;#L7KAC1Hxx4t|BVh-CT*KgMTDG;z?^r(>$oeEr`>*Un7 zGqW0|_=8_kZLK^?4fMZzX+b84wk=w;OwygT)cQnj;Mi}1$EyXC9{4m>WBLF zyu5MxrsCE5dW>a`)y_5kt#(5+EGB`COuUKYD?Vv_UvytBT|Y;jxDA5m7eUHiC?LyH zYEO@8`dL(Dkh4~-mHdSBH(PD~5MKOtTDo%lCEAh42**N)+5AW`QxS>o>n3E}eF&=M z8KRY)A8CvOwleLPt4d@O<9YlrjQ(Qlkm-w6%-ed@&jo|Q|6 z9uDTI7Ali!Z#?wDb~o>0uHzp-1>%1X8r#W%&a3g*;t9q})9X7BV&wOhk0)SIrzgRa zNdy4MMeN4}W&qbos}0(I4{6+$+N@FMdXXDQW%-Xms`mPi1V1759$+X%^(6GQUtK9GQSC9Ic5UTx#wKCCO2aFr z77#Uz5Ue=h+$xW~?0Nr$nc&x)beH7E0bkn577fY7VVfKM(Iv-L1NLf>aO*)pDdV&A z$jIn&V{y8)1hl+l*qd+d@SZ!%=p)Um6Na9eWRqk)TWV6u+d{mRNv}mphO)!NHgZe< zJh9QAz}L&ajrLCwJX%>C=BH)J(h>NKNG%{Sd;yckajeS$@4 zvtyL}%f;o`IA7olUGoTHD`YLXuoMcWDM8Co7ZS zY0E=v#Cx}RHd_YV`K65f0IVWq2jqyvax2HQu0Bbi8QOb?&K@|t4Doh zvrXY=;M9Xs>=hk;grb~aDpebsYH@I@K9P=t)TtOB6q*sRh=4pNW>s$BiKQMZh0W!kIQN!pv#M7m zAz2x)x`I$6H=$fJe@3zkpRkdbe;-8oPXCNh+N_*(`w~j==eJBOIp--=T1Wn!>gE#Q z`ikb#HlFz9AKAF~Qc#SP#QE{^;pA2DR)8f)sQeML4&~$Spl+OD%kMdy@<&rB?UudPrbzi8uH=}WC$h~9jNf0V9u8a#= z8}d+7{%(U{8fcKWPdIdnn6@}Gw-x#l?y3VBr7uL&J7lzjG(p2y+UT2Us?F)_;7%MC zKcVM@begdok_63#D*PS}9cf1jd*xN*cdO3r18}cW^9TaBO(_l8cc9Vn>(-nB zvB=R6h{-@;mV$qTW0zJgg#%j_(kzyT?AY>WSjhuQlP~Y&|A@ldsr{ z?mK|Y6q^EsyVM_3zYn$lI1pIghl{Ip`Cw4#g1 zTX!B%GAt_uYVqV%<}_mwpt~^dL;UW&vfNyyJdHe)s-Xb9Ozi{HuRPDe&a(QyaPh^B zz&KjH1D;1*H<#>obmGCXIAk$*=ga$iM+8d1g=Wr!W3nrc;wjiVlhQ~kAc$d0^mlP) zQY^e$zsMV3#U3B}#;7h0D3sd5Wbb0gK@x}EGnS_H7U9Vzo)q}~Ub$d745Y3ZyaSwN zn&hP*{~(a+lhu~zijNPh0%BB%;(tJFWB(f&cYj6O1SxLDPo}a1R=4lMp_A-B8N1}2 zM^N>nYG#0Ts-7a0uwIldJ*0-f!}<e=BgJN;g!r15@k^h_+^#U*r-fxg1;O^PN2cBv z9JPnZ;!G65tbF{6O$-d=i=N;76AsSX+HfFNN5u^7RAy9mPB7VDTaO_1LoCjsdlcMAeTDIb)IQMC15FXGqGDh10enOpx4O_2)fv{jX z2iOh0IXE8*7~GetI}~wFvppRTw{ArGQB(dfMzqARE^>ahQ+2?0UwLR1OvGy5d#fDQ zsh7sw>Wn_ZkM`9GJK4MQ9T7@cugwly1W#FNve z+8jlUY~r4>xaWF29(C20*>{=aC&3ft7V0L-@`0rJ_lv?%FD!)y4P(nI_A1v3-K9#u zMlH-T|Fv-c;*wxI>NvQMkagds@mF8VRy1B=4sFFO8gU|>3QMxZootG3Rh?y~V+9*L zY-Gnl@I6YfD1O*PC|n($5X0*kyN$M?{V9IV%YL%$A}Ap;XpPkmi8 zn$UeiL>yC?d9q;1{qqz#-4+zy#yd2SAj9-%yett|n?#=9nc~(^nWO|w;k;WVA?WBW zd<14JC8X5``L>aHDpirL6}fo_j`co0{?g4Dreq<#CQq&WX7*Tv|*jRm@SIp-nS9q0}FJ1UuA=LK&*34ODs2Ex}@0w<`hFS2=qo{meh|HqqX8p7KK6H z&^%S;k=4FvzRggMzXP0*oS$V4km8U2EpYZHhtgfBF(6D{4n+KOSOvluf|xiRb>WW! z&APcqE(}{Nbpr2|s>a^SZbS4IFzB{RQiKiW=7>^A6Z0dk6dyIMr8!aUJhEGAmB6Xg zHUn*>Oa0tch@vlkvO&rOH;>r4uxvU&-nrwdL-$n0xipz*)FGlJIwrf82SEeVdMhZJ z;D`ExZSP73+AYLNWPZ zJs2bl$(X+=kj!h3WhdRKeii~wkjj``X<^nT#r^X+bXt>CuwI0*mM<7ajWJ1ZrMGGW z;*`$3*TU_$Wiu;eYBm0l2XFqO$E{>*Cdr(gwL)Pb3q});SzCMvYBl68e#$aIqFZ*-y>IPzlszF%p2p znq;9qNLu3)TPXJ~ zh0DCbg$!Y$UM17sxfy*BVhUj-)V7@k4MA=68BdV;`4ImU1sMI;kpbsPTi_t7J2MpZ$Z(*niIP0*O`?kh+${alnu4yK$-Y}h+a zGubVxn8&;?e7@0GO}q=HB4;G4Up{Z&+H?ZTN*Z~KG3R!?87OwZcyN!Kv~vW}1_%l` zrN=U&Fyml7Q=k$;vEVDr&JMdr#NQfvCyG{#R66_T!!JOlA*O@iyrnF05jjjTxeSj- zG*df%p^LH^-0J#0;;i}P`yOuih_r}vIzVk>;^Gu?qH+sUf`%1;g>01-U;*;P7}TPW zQVi8M_vSfWl6ZciHEVm$uhPYe9L4%+R^6*N8)n;x^Wnx(3oyFGP`5Kmk6XDz3=m@@ zsnN?>aa6~3N_BBqf@~q%R!EAFTuC3nXNpWhp>YR(NnH4c+P1kz0ADGgqQP%L5J8IE zC;6Pi%tLnY2B=SGP7D@uKH_)!(ZDFbc(B?c_|ayQ8W}kA{VqAHc)Y_x?RTezwlS}ImCAv-b<24M)*xs z#S47adAb+v!)K(T2)S6756nlU>&CV3llE4Wki|EN!DQEg!VCf0maLKyfuyvC>t~cK zqdPBN*orpw7|dOLDklxEO>^H=sZ;(8l|LFvpW1h|oJr3V@;wU?F%;eiiHmBNWP2zA*2d z=VljIMY^JURy**?i-dn_+n9ysUq!*R&exe9=YoIcO|i50zP8TTw4wKqr@lrroe0T< zk4%wmR`-u-^!PM)*KD|hN%Ehc#^Ag@I(%c%wQjD==|wE*>-Ah(>CgPdj^cn#@29jd z6D%qUhfKDpctttT>H3^v7|f+kRH3H=T*GgIq5XkFJzUl z!AquvV{BL4{Xu6rXng5E##Sv62ob z8ZU3K?4`zHue^kqxU(A@p-|O9C0|JZF14n`K>Q!q@J?+hTm|c<3YIBlp z;S-FCZG)nyD`7jT@RtT6`X*$PS>qo-kddI}8*E;WuJgC;__4O2PB{=@g|cc(U?<@P z)3+==sh#X>Jcv{Of7T|^){GO0J3{-6_sjpKfKIRZR#D!)Ejz|PeVTifi3GZYI_0j$ zHG7qK;!2umMkQ=`MpJBJpM;~Lg*~br9V+C*l%RK&V@LDqP}vdSai=3EXcMja97bcQ zM_7eaeMiR)ifEX@1GEDl6BcErf0f!%7eArTy|Ya)sqIgs0B3W{=bYb)pENDdrZlhc9OS%UVPnkg z;*eq%4G*x8o50CC+=H#p8WeIIgR-e4%U*w9j4jVbVgD#rmGQ2t5JGX9X&h$rb<<%n z``6&>;9CU&JByi1{u70m1iIfOQnsNDH6wHy2 z6TB>OOlc>4O;j726ESDQty4%)o7EZ#UvV|jJGa8`S|UxsG6dj9nH|%oWfBg2tz;M!Q`ncDvY}_3hVNRK_C*%-nc($)#n>+C1th{vCkV4pEk5O(?QdsG~|` zP%Q8y5M;6+ElU?Kyr*PH#^K6hzLjOf=$A>EMWxZsuM0%*gK~B#zEKLFkHTV)h|QGf z3ml;;DFLxSJp}UO7p@i(G`c;BdDw%x%s#CFpN6Ey!jVdN(g0~;$GesLBNF1bq$Noo z=$_CmUvd1Wu2mEehc`gmOa;VkxM%IJ3UKkGKU;r*W24IFL-byN4uaz*r?_?%g~=FNa1%1R-4}qim8T@8x9RzNXki+7PfsBCF&F zI-U*{+R`_nRXa!j?NT+ro(? z)I<|R1wrE!y%khcC1%i2)sAqV<)g9ii0#Qj_9-adydXOJAY;U*IYKXDGEmw=F`11t zNbuZWKTSc)1v-AS6RT(V|3E@Yh3QA-7v_|W`6u>IygG4S@W3IV2?TMQYBGBWAs=A9 zd<9beYI^eLp)^EhmR2_{Klw`E8x4F-~`Dx^)Z=emUJlAzG9H) z*V#X_R65aZM&js;O3<}y0_}8?Wbo9_v z)aa5W1UWUL5R8F^A!J>Yd<2zg-FW)zqe`dx3}S-8B^(Sk%zq;SaD5}F;z^12$WlSD zzmKOVcYktlfw4|SFD37?h|6G(V>Q~Pt^BT>AKP{c(R19pnT4+Mw!*Zyma7}s+UNKu5pV3=4%KQW{ zdFL$}6q9vpy6RC4KKNT33-bS7cV!m}G8zViQRoR##*oPGm^z~JpL&j%#XcY4YQcJeo8?2S)^`;K`|1oaP7|7BOoLq8kW-y}X*Oy`@iM(WaJ*+4U~v z5d;->C#0~zLD19k=qA)}MnodxO$cgYXMs8@B z3_Nz(R?3>PMZ3+iirOvvw+afD;e}{0jUc#%%;?ib56evGL!#_#a2XOBQm~xZa)M%N z9=)Sp4T&(Z0+JMgojD2BN<^wWfbFS_KHkP>sy;7Rr(1BUvc=TWbqN(SJ#}{^dGvNa z^mNA+&~LK$Gzq<7-*lJv(8x#`aWTO)FRP4X8Y3&O=m=k3L#yA>#ZWLGNjv)TWD~rv zhC%nWb}I}bMm&JCBrKOgFDzlcGA4CesFdMtij%B<=4>)V{<6Z_oLHQYY;M3}Imx^V|tcfsGxriXP8 z+*sUr&K$QwZ1pw5KmllA@KC19VFU3*?Wo%ux}-s%=C94$20`_)&~Hno`Qu~P0^Hg! zeFguob1Irq)@NxPQl2lOHyt=4yLs;D=4`RK1nn$?9f{0qIH{j#AtArmbv1>Brp1wX zP+kV8tyK6}%4?D@KV-m-G$;IB|4k>U}bx3GjGk zo{6DU<>O?x_%LPIt!Ac+oI>kXoH5AP#-YTJ6Q(|QLEf)DRSN6vPj?F|+|Pga@HZD0 zI zQD~yXPLK!}AMDf5wFwztp)9g(5`h#EWpx#~nny5)NyZ@SnVstE zZ21&#oK1pi{_+rTs?Tc7m}VcKV}^Hfo~T7I;vhaVB%ld(bReUyzKSH-k?Dj$mq}{r z<4?3yFzfbK$t}{o5^_`oxttPEL?N+L(dKq0%ZFXH^xqVip=3FZ_>;PR-F{jM z80};;C`n-90v8!QX&CY4*>aqQ6hKF}8tPUj=!X~a{geQ!o9!#kR5N8Qj#4?5s`{Nc zJmglpsXjXn4V-^~DEx!fbLLWQ1?q+O@SG*D#exAiBl10<#%%GCI1d|2Wu{tl5sacl zY)LVj- z9)i^LJBwV4En#fdwv=Ie2C0qnMTl)fN=C!5y-*HH8*ewcAa>95U&ndWuV9n0iBl`v zhX>8~>ZXF&9PJ{pZ2bLPWOtB|4ER@{ysi;mUTaIHur+H0W#fCwIIn(Gyh5Q;jNcrO z_tv^zU_)0~3*=0U8#}-ZE;!du4%8f|^H&NL_%EB|>F6T1 z1~G~>F#Vo&4HcOBV7LGi%p;UIGdd=TxwD|u5`QOCV?!rmgMT+6RUPo^M!-HZ(JHWZ zNi;Xk@u43DheR79Yi=`_udO=9mUQlZf;0Y0e#i#{Oo3<|Z;Jg+lmqpo5JHsM#^;tS zb<)t=NI^upH7Fa}Wj@5cT1$^yl>rOG$aj9DNw?pDf?~pH@ncOoeOy?jT`^Fs-(phc z%7;<7zAl$59tDT|w4VQI{SSP&ky)C}~Udaf5cQjsgvP^|y`tPdQ z&FqKwD5RPl#l=fF#nr8$=3nHY1*(`<9$ z#^N%l^@uZ^!q`dBF?UXFjen8T0{cUTt zWH&b6mvE{Or`mSZe7515(R~6Ww2aV_dV#3dfsDfPw?AKwjj<;xpxHkc1`0X1M3Vag ziL-7ZyYUg3K}O!mVD=|P5LWqE^4^NJ{3EHH%`R+W4A0g7;3gIa0+etg zrCqI-?Tf=>Su@>Zy>maNh1>$iA|;X>IK(TRmpP0_#8aJwp@cPcV^TC4umKhmU^1Du zCEB){!b&%V&10G*zH;Mnj zO|=GGB)n=6zp*K}GP^sug}2)2##d|OjTw4z?I<%#Z|z0BauP(Cyo`D7sb)}8Xs#@zvzMk+@AI_86s8M>e|7~QmJ@F^5g$0x6bmY5Fo z7GL6s42&nG!ZIL-CNklXr(mmOLT)Nul@E;crnX1B!r8^oDfjFn0UCg0s_D%Z_<;zQ zU4CKUe=SsLM7=xg8{UvP6fhVn;bdW|meL5=NuZVeAx-sdc6SJ?`m>cqaoTY@GnGGP z!sqeXU8k&hZrVjwn54T>bFMpC0tSb{grS+=L)7*?pt&TdCzAHIjE!Z{FxrfeZZ=h&63jd~r6bnu4aGI4%LO$su42?;}l-- zzAvZ*+9My;{#;xl3f$&Ny3;6BWhxi$FfW`u^<_~-xUk-NfHqV8G&im$Er7p;_;iD1G;DrF zXX+czupYaV9vta!kD)+Q{1~q19c&iq=zG`h*zg$((HMdtEZocwD(mIyQ}U(S*wd2| zyjlBqUvlZJPaio%@!nKFLW2qUeS0C0qhOnqSkgXZLrNx1-93{EcVnu>2P z4}ta8R{`w3V@Yi#?vVp-ins7n#+#(?c4~0$oj;m>{r#hWqE;NUF*~b@ktb7KRE^~! z0vQk3(Xb9pO@r)AV?DDJ7;Mr^9ipzrn#ai zehPHQP*blK$3!GAffRi>^bkWk8+6~mvaZP~SPz?UCHIN0(hK}V16Ipk{bwU|5nF}& zt{O-$Lf3v0BkLruVG)PYoLOgmIijCnM#{ZRhp)!8?z2^v3Cj#{`GxG#6x`xo+RSHQ z7*v!wU{(siVF>9%RqM=y9e?Cht~|$p<^>l=twyJI>4^o`@x)S#O9~0^bGo|N_SUlC zN-zpPCE!q|_dj4zTG+5_A8=JS8^DGQ!&z7*Ikxm=KM%W8)R+YT+uaA01cyl5ml{#3 z4r^>Kfo=_MJon>e71@e3 zf0YVIt5j^(h9ubVuyT_w9gU4Xr7NoZwwm~Cg+)7_n+A0iBBe{14EZZ#{bk%=$)hqb zx|$#%I+Hc*y-F1FqvL^Wtg(1D>CW!HJ)b&LdOz-pya=|+72(qt^yBIbE1F8s%k_IB zmFD?0%}NFfvVXpQwA1llVuU{ij~wgSD3PRX!35F^gEn%^>M>h~MIa??hVq*~9TkhG z=QHxMsqwt^;BS@TBHX6b>XmL}F>w7cbSfU&-ocR>zxk32 zMTm?joBFAq!3HPso!F~6%Y*EokT*B7HMxC!1<&125ySq)fE#&m;7|@jT>6xRPkKgA zug0|ni`4ZWO{X^srg5v7oh-25husZ9Eg(#IBq*Vs!iA^w?)mtQVXt*b?uwh#mjV-y z$J!TVp|$uapJ&Nj<7j|Jn`5-~)(K3_aNY->vlOPdHCc4hHbKP1VfQ8V?-(74cVjh` zLn28t`1;CR3~LAvH2x3x5c-K|fCVi@x8HfLbg&*nL$@Yp1_82Rqj>kJv`5M~f;3h3 z?(%V1?@n)g)C<&{N_TCdTS9(DJj(~-aUtOiakcVWY{I+f;n0xg;B#y|*Bgk1X-|fl zA}?N8s1@N@ct$045Cu2Wj**U}n+w0_F1JphZhr$w7H#03IBx@fQ)G`3liR}d}_>_YdcV^=<=2FJv!I$R+O7bsH zM_KB~-Y?BL-(a$ARUcnWJ?}QzczCXa;nTEDbiKib6Nt7VKSA|{Jo8M3kb+9?n9m9Q zaYzckAvJeB!J+et{u=xlGtLT{fG$bbo~EKUn*kfk7s@Aq4a_)s2)j{f&XW|Z*K(L; z_Emp=lZgKs8{!x#;QGdcIOgP4&Yso}ePiud--dXYo8pt+6IvfM!VFrmzRTknO0yT{ z&p)Zow4PFR=FHQ> zNv1E-c56vW3W+4`Yh!BRiIy`KCFX4@K9Z~pv^SCIjbfmf@r#i9>ExcV)rkyX)Mx~+ zXe@EuJFD;K9d5}6mOwi|oH5f-8V8@$E|Q+Ne(g3U?xd8IHMKXrA!FA5C%9G|W6L$_ zZeF>dfUzy$T~2Z18)EgVFrup7>L3UQ9=f)GB%{yU4&9c^x$r)`3hxxe zgO2D5JOnGHLybg)UaG|AiVE7;f!3H83%pHp_4`Wa@j7GeqZtlpE~9@7me(@l^sYA9 z4{wHJr`9hBZz0o(l^e6UuU_shpX^(h`ZR;hf!xR^(&oz6TG|YDQDUV{A7@->im#4P zyoSgu;WvQ;vH|3k`%-<0oVuwG^{|~CZZM}!m(k`X%hnqGyYJ62;-JgxDdC%9W-j4+ zWejPKUI&}{mIZZny5950pSh&^T+RlvHxN!_9eR7v6fjWZ|XnF`M-UT}77*c$Pc5DhDL?Y}V z^2~=r1z@~odL)dV7jHw+ZQ)E!KXGGa&1M>Z-;~e?M^sTauxgC-k>oK>cpEh<7N=oH z@mL#(Eyafv{npFhtDM5wgf(T(aT?DPC~>#E=1QYK-NZf~X$8S4$dk{miq%ONmK!DL zvhSK;b-|h+lXeJ3#|MBuG9WqT4_1)g8fqd^3yk>w3;NvI0J(wFn~wGwRH^-~V@?j2 zFB);8He1S5?u|4@-J<&V)W#Ho+Pe3SZO z%r25-Gs`Oh!6EXvhD0dp-xQ}Sn1|-Q@H+ue(T~%V+R}rdPT%`5<6R8QJWDk)Ty6wf zfJivRytLwt~kr} zB~OjQ2aIdL>GM0#ZY3S+FKF`YK-rU;ATvYOTc1I4R#?0*7xtbcQ4GqFLAACcqQ-F)?Cv`Csfg3I}%iM}M zr%u+~n-rw&)FZ|~xTUa;-2}^&_5w2MW;VP9BG(2|D1j0$AqCm-rK=&U^gz(>6U#Tn zFA@aoY+Nq#e9wo_(*mG|w{g-lbC(@2#qjckQpHeZ zr^}+DLNc!r$Tg>mlLU>!n=Pc78ux+HEx$M;1e!Up*j4r+Z8b7t`RQ?i^HT3GOeBUlEr{K z-(JMtxo+-8O{Rh&MfuRgv#;qDQ6gecoI0& zpaUR>yRgvN;A-JEDaU5W-tw0ulQHf!+X;4+u=@>ftb~$q%>!~MKiusUPk(IQ zRImS;TYxD2Cr@9<`>U58cBiRNcc8h)%)mw_wYPWW`&EfcAaMQad9<)L;nZyt4`}-Ib?&vy&>oTO6rXZtIYS zns{+HH*5cas_udZshtW01lFU?--D0Nv6|$n$ed~aNAptM>?S(WLNf7bq_JR2y^0wnu&Xg-@uzZuembJ5!GMqsz1p zc``blO&&V`u?4F+WJG7fu~8%xFnFvNeT1z9YcaL|he&sdX-7-bnWH=5PXv>(y&pOk?AN|X^Ar_?FHRr8KHC^0W z^!6jehy$2CVVP)iyR!bHWbbrMa(AFYyF=1!U(Ov-#E-!hjBz2JA!`5lK4B@HZAx3p z8safwD}2L;ZzT#R5E<>6X;e$TO3JP0%>HAsVfLA`wQEVj%{~%Hf6|`u4G`|cc^gmowj2JAEn9a-?q$Z8n@q;dMrHhTnvCXQ;#O=C_>qc1V zc|dZ>d1Cwh(SMLu`5NLu0(t{e6*)dH1N=0hJYeasqY~S{VavH2YJJGwPzVz=QPQtNn)V+4k zlCjFBC#RD*4Jm`zK2~-aTbJtQCg=$^oga+DDRrOA7KCqz&N&HTZ{aTMx#sY0ew&PG z&Ut(UDY7FxM&hpL0wEJoKln#na*=(PjQwqxOmW%jT6R5bs-7y1jMgbM`1ik`RPg^2 z%-_4^7Q<2<=t%l?U{k&HomT-&)b%rnZ-la@+D86T*H}%B0}vQ{ZpM_~x_#3L6kLQ- z+I-AXa1izYpPuaGsS~IKgMyroiaB&CKp<&(#JQZZaymBvREaLjZ~b2?PEPrU0A}_T zpf+RuD&yqV$q|9Oa@mJ;V-e8k>8%oHYVh=W^@xHfvOh%OwAZSczu9mooWX5OBNES! zpP`^FE$Z=27N2GBTAlWb0ADlP2;Ju(OsJT3Z#8JGB2b#TDVmwl@X#eO{vNWJ2{*)l z%7>^xOK_AA@4!|wQxYQ9sEJD1gLdT-0oXVS(x}0q%&F_`Vht3JEsvF&${iSXpFsiq z$Bh{$fpo)>7&VnWL7??d!ADMZ02Sl4*t8i2r}AA@I> zl5LVac1EWr%xT+X;6kUX96F*VXJp{;?D7R`Q+yz|c%n(rZ8BALXVKOfM#YD8)CX!= zyfz8l|J*!TbRf^Hg;P-V0{s=mU^40_c-kkcLSU)eg|p0Sv3m$wkYJ^`d@=jy)t<7U zMw7aqhND#!=oA`+G2d{h#p?}xzdGhgP=_TD;T+r%NJ55m`9?Nd=xTsL1I51hwZ4ql zK$BCz7rpk!1lnk;S0x&MT3wz+N4Ho%USdIgw|ySRphG02zkj6Hj`W(frp#eOqjq3I zFOi)?dqcsfTnwsL-`r?ULAKQ#nBS6x-F2Q|J!<~s`h&uY@22FiOdPpX)0`$WzHCnj z&CspjJ5F!1^~adw9ftEjmx6>ICEkJnq#4M zV0Z_%G`rt|y~t)PH5a^DTcFN!fKzH-uf_WNZ=p#D&;F8J!=p3yp_jIn1y06y^jCrP z9}t$FgeeN{P-LSP&CNtIR_l|<6NVL^I#1G#(O!HMOO=Tz9}89c`DelFm0n9y*91%u zb5KJ@1m=?|0;Q~|`)2|AN?EYyB*^}g^Oi?6UY{O|S9w&1Up~TESGgOnU=ZLIS)Sn_ zaCh_}gRn7eqp2?_aPBb$N{o+0YPn;1(F+JcBcEUZ2bIr25i|uhS?K;(l5kHfMXRob zw@$ec8n(iFQsm*-9y}|*m?CHLbgJWPa5wX0Ubz!17mNR+lY;Q2CFFpZ4>uRw!gmE zPS^DY%(~bcE?&TZr}A6B&-ID|V-CutziK-DcY z=FOxoJqVg3U`Oj|M>vA8V1HcCS)bTNySGWs@+>aWEE@{vLU^5KffGkY(u8d44`-?xx?RX zpj7q}4&Jf=t`!ngd<2_Yhp^55xX(eQ(1CK+9a*!3lO7zr-KVKkasY-vrl}~Iq*X)l z60r6mZQ|RTF91>UWGGUVntuQ_cj*E+hzZ#{~=mCgz zNs*%js38es8Qj@P&M)dURQ<5VBqT*OVvQ#5OXunEHMM1yyaS5|2BF-;kqArmjpS^B zxM?2oyTpt%OeeAq%1N$X<{RL&wuIANL%=AxSN?$K(t7XgUDlR33+aZoAm%5Celemr&m_+Ie;^FvkJCwCV!%O(54rrI&-lAbJtB+kPK z&XALI;jr**C$^=W+(C!7(|mN3WysE4|H+0049-@u!1a2bciWQM@FMKQAnoagDKm_{3zK{;z+ z5p=yc#sdKvabiUDzeGMYm`9&vLu9a%MaN!0ChE!@9!P6sbx-lee$F`3ZlBIqKFJW! z?%YK3MW;qKNB$gR0Hr6lESV;s5fitx#$ijmDF8_<(7;Xu0Ovy0I65d?Y(qk+bwQM_ z=^d{6{~4HaYpBvTp3B;Na46lcYzi5aq{&Ssn2FmpKt8jZQ}pPD5q!#az6L&Z+nj<6 zy56ULF=aMwzC2ftZpqW+hnBBbwVu~9w?NNg9lK817A zk+k=GuCr<_bKsjzfn@ka&eiMu<+QLQzP1KP1JwfvT5h?Ulo#2kcO@AMrGx-ZXHSu! zph;1?S%2cIx{2dD{M0MA4N>j=MB%7Su?DjkB9bJUof!FlZqpT(vtc=f*rO@^{>jO- zASDb@!j50Sefu(Js(|cL zO3zLXke00w@lugZ*mkgNHW=DYDOSu#t;0+3FSj5@s!{a7VY6sq?Q z+eak{%U2fvO!N|&R2>YOPQ1v}ClWnDlKNQp#0MoavP00o{6L1^G6}?OwC=dwE=ySY zkq5`%yFX|!bh9{My`zrgTaWR@c&R{ctwt3Om#Fe+2-5cD;{c<5#KnSB#ct#(U9$II z`X_Ep{3Wtgf2wb5|HsXO(Adi_JM~-dW;#X@f|JE3vC(cj{qa!fLM?Zf$tJ3l13OvR41kME&)9BN2@{ymkceLB zxeIje&jwFvIb`T!v@yNa0Q1*tixL0D8~SNm3DG6S!%hg-qnt(s`8B<^y5WQ2`c#Ya zF6Z);efuETTAuHO9}|=Oazi&3+>X2}328~{jJurOZ<~;_NRIWWhTIJQ-0T+k7OT&? z7vQmn@oeN8$*P3~NG}uD+tTT`#TGl)$~EpNV_!=dI~${L5cvGG!gTL3&Gq`EkQ(P8 ziRvQy&SovaEhKxo^RdLr>2%MMU3eN^cqERm4c}j?PxLYhzFHz%iLJ3Q#stxTC<fz5}T z%ff@&D=mScmA%b)4(Ugebb35<@jiCd6JhuGXi2)nfAWf&5GxvNy&1B@K*hP5`tTD> zMjTt=L1}$|Z9tlkvP;-wkEDO9#gbttMB!#t??OC2-vOKTB{=OvN zT>d$w=H`hp$c78r3D5yWN-dxB#5ju5OO+r_BH~gW{kL#~Y?>(3K->3N#vHy!tP#I&dN%-38)Gj5M7XKm>M7s~#7RPH z(LJ?U;dSab;)Y~uOw>YJgKSq-q}O&H=r3W_yz?!w-pBcFDQkT5cRtyo_fC5H-%i4H zO+8l~KX7H^f46aUD)0O+z}P?>Ach7Yrut^m5^FzST=4JkT0X)$Gp_yP)N{Oh4s;`o zK$V%mBq&?e`wwZKs-xxI?V8pdImuaTj>?2CR6`__r7&*CHwMB)iRDdf%>O9ijM1Xu zeiudJ2kNH4j|6^6nWdq3^}|_|PQL}nF}P4_XuQ#)w>6$uq-&o_bv6&i`Sn#Dv=pC< zSDhV$&3}9o4!x*C?HF={0ZKUz&kY3qv}l}yvpjdI8vaYv1-uIt!|19A-<(o?r>XVd z3vd5#XsDFz@o4B-=ToAvkmtCGa3SUCG$qNA?#g2qK}lcw2Y6XSH__i#aw|gqj_Ugc zVF+dj>u29KuUy%UdfQrH5PIfniD1fqdFq~0Ws19&tb2Chxze7Lj{=c z(r9gj!tcK>?~}4(`eS;lU39AFQw|NMnz9N}a-)P!64;^DGeN&fp zUK=0CH30D(`et!^TkiIi5bz+Q10xOzcj#<{if#iy_5N~8TM5xWPj za#;Hns;R>upHrjHNGniKu&WDG!azc8C!NBqd6^^Xr;QR_hlM*CS1aDo7ua}`oHLIa z;KuE0hRM;B*?wUqn7Bf86KEv{2;22PHu%1Y6Y4 zzw(T7LhIW7S&T=nQXADt3L&71h-37zQ4xo zTI_`J)sx|^u?Lbgm8aOEiJa5U$f!Cg7Jr7l4Y1(`#ZaWG12x*x`b{ur?FLaf zh~rpaTZ^u*o`yHz$yF`Be(fcqSR()-?X^QWJP5O1G(S9*ly}aCM-QA2yChIjhLhaW zYq>`IYz5mT9cA#cuIl&x<_ptbKI7;`u;|{wJBedC_-0R#v}il%T3sr~%-}kLH>lSk z3{Qu@JYqVi5w_`L3adwL|7REI`{lWW40%nWaen*0U{&LG1o?TaP)oQO!TOCz4C4F^ z!{X<{G3BZ6)dgkX%WfoVZMuRa)2JtUT_~MOipD7<*H4W&3TnPtuubdS$JaY4|A>ki z)hJsB8m4U&Z*Mf4(3lxnkxq@VeM}%B;m%?}a9Qo?(;P|{vOb@>7smDQfRr%FUj}9x zT0;A8P{q&^ByVh!a=GS>4KXs8J9AxawLYF!+TqL5d1{Vy@Oa!WSPpzjWy)z5Va)aN zn3P|@;-D>SInS8{KYS&;{xGRtKgYKBuC`{}(@3Xj&9$LuMhFdu_JHk^{W(`L1obiH zS>7%s^n|Hn@*Rzu%4u7i9(`bj%cB*E`3HkxWe{~6B+9%CJLkS_ zl8$Ey%Y14<;}iK7!a?k8BS(*unF>p|^1^I=OlMH56n%*2Zib236sY(AYT5%xXU9Ed zp?6&IDPsG!IYOKeD#^0H#)s=#h#q~Y;A<$%Jha@8n3vck*zj!$dJ`kQ)I682<6DRe z`PKA9eIs!_Wc0LFG4!XW%}1L{Q*w7&Y8oVh?M?<*LF*7BR5kyVpLZGh{OR*@FEE$t zK=~6mt((G*rhpE&^R?4JEdjG>-|)w-P$;SC&i^U5O7TWot}-f}_Nr1R+*$Oq=s7oDJ9$2coi{*6pCSFY2z;5HM)91 zOSA;jhaa|&s2crGv_x4S-Kf6jZ64;Pnnkxiyho-%?g_ApFE%F#ir+3&C+76%1l7rh zY|M19MX7)z;4Sg7%Z1pe>wW}q0Vsx|3yC1-2GhN@hRgu}KLEf=H*u}HoRlFJcr-EQg3ve6kGT=SKMK`-I?X~ zwSUYqdRri=H5@qgPr3&Wot-*~u;00GtMGhp;_*w4+=Y2k?>>dE5}D_S{?hzkjw#M6 zk8c%GnIkO1RxI4^5=+X@dZuUILeHbwwi)J%SlY-Wp6ywk7~XD06*K@$UyhhRI<{(A zleL3_9>M!pi?shG5?Fn;Mke>M3pmgY?7JvM{TkMXk8MxGUz@WdEWO^o{pxxD%Q<_@ z@qFbxa>Qf$Z*Xlhf7yz3D$oE1eF%}F!NwK${~K!iZ(ZZnBp$4do8$07QN)fYh=D}d z*Cgxuxz49{h$%91RATeS%&lS5$gwIiwQ6~jLudIr#x1neF}$CVXgynkM+{}}_6K^I zmijMK@ieB3_E?WAh_4*W1=%(S=QIft@03cJyn=9|o-o7{B(Ml~A6rQnxvEO2a%zrS8m{ zX>(t2L!fXRBzJb8xwE&(V3!q8bW3$|Xl^@s4{K!=l%%a^O~v_B?=DFyN05KkpurnI z1l1(Yw)=jCT2#Dq{rpUF6o@msHSA~%&_M8_v}D zG5ynQHxv0Ht#H%xGFauG+se!{b-~s~EZHYujag;Z!HRZZtRQd(zEQfjHgka@0_u=5 zfXDM4*(pj~J=5{-T)V=Bt}Lxcylnv`XLk8KZF^&#_`UQn)<6>fl(<5?tyS%QbpYAe z0NZQz>zzNKQD4V8NWba3husomj**3?WP~M8019-`N|kg`=mK}eg|n%b6ug`~Zf%R$ z;3?BsKbGfh(B19cOwU%Hm&13@*erhQa`$Ou4Y1v~aoxkgMfkQ;SAo&t^L0CUbd=wV zPVJ)p+exu*6+Z5;wG)OS8Eb@Jv#eY&4su3p)Nl0a zv<*S8qgHCrQxC&EXLlp{_o2Yua82g|91% zjH&~=_cgZtgavaohbe*e4`>S0@wdF47SUy;fe>!y# zsTs6Y2M@~&AkyrNOm3ZjhmFK9p*xBI(r}Tv@2QVqd@oGggvE*1R*j=>e>}yjO}9g# zleXXwk|v_i#$;; z3#Htxw7Af9vJ>QGJWmGS;9_6cb#*COT(jAT)Zf4h;9kL<47^bFNrZf07_!psU@SpTkqjK~}oeQ>gdr9WAVhe3y{ht5i24!81Z0?bP#ouAL_l_%cK0UUTbDgWzm?&DGQQOq2bWF;BB*UlQEE>C~ltirH1TS>^>b7 zlTIvimnnb<@#U2;fBlN0`0EzPEUbbgw7px=iBy=XxZ`AquuG<=O2K8JFc$P$3nQJ8 zM83Dp$N6JbVHxWt5J1Ozu|_;{LhzhE2t+RGP<@|Si}IXz|19nCy;nIMsmD3oPI#7U zLldrk{*vaOY-BLNz51yfW^DMIYw41+#Ge!w)LOyLTCtm3R1TQQ$t@k>{T(Y|HVDNN z!cuVAJ*02ci)wukfs}9ZkgW0vAqAT4RAojcuuDOax%`xaE?-YK8#`Yi;1n-1m$Ht| zri%cUSaRiYKLgj{ifWO`owZ{f9Q!WpDDfjB5l53?;6w*Czms>&r^u=`%V6M>ZFpa` ztH6=uM@88+AM|!N@2a*s^kzpqFJ!%LK87tr05$CNWBN}v?;zWI32MOQ|98QXlQpv* z&y@bRkvW5$WYB`)$$CBD{MK2}t;mxX)cbA!wD>fu)dgAoOGz2kzhrsh*^Vzu>gJhD z{96-gV~qiLee;OZ@*!MjO{(gC>W0hEbSs0 z8jMXkmk0QZ0DjpD8k=$U$xauz2y??_0EliOI5xAP{u)tPxcHpyaY|j&#i(O}^uV zh~Ut{Dg8FpnasuzA)z7>IA60=hj43p#SnZx_^6PV(b0*Che{2IDl5sDuD)^fzHadC zE6BL;7@2z4b@vv$*q$&T_V>F5c>7TPZane%khINncs1W;W2ohdz%2H?>@HhYurd9L zh|QN3*5GQIOy&m_IrugQyAdEH8I-Pznd3?oL_&2MbrZbvOH)?j^i7(Jm?Q#!(_jgV zyy#`mpitOi@~6^5nP>*Q$8GLSW7>MO^J7uWPwj9HQ93Tah`6)+dd23(jb8|~RCoO$ zsOu@OJJ#42yO0a26=^5CY0GzisQDD#of6}?!+m<`Hdk8>M*XEiQ@Voay`_-48Ty3V zonBjnh08A@ADgV9C#8%TN4W{)0 z@dAalua;23MvmYHx;OU6Q*@Vp&i05)=8bHNyATSuc5Cx{UGH6N&NJ((m6H+N^o8np-*ys^y!QX*0U8 z#7!0s<8ons3zb{LHL}m0I>ijIt#;RW*3sWs|16ZMtf#)k3aJV&?Ql!_Gz?+YZv-#1 z+cHCL-)TE1pE(@d8H#a6HrrPP#+cTHWfuZ=uwZ*6<=$6&BD0H-K2lC)=-DcR=5b=k zCB&aNnqiL3B5R9Xow@{6$qeb@q-3lHpe!9pSwpCO@{F!Q%;=MLP9stm8ZK)D+Grz? z;rWy|zjzm7>?bw&3|6l;Y)BvpgP<_k++`HJ>B$;-QS}{_V^8swk~FTjmJqd{@2WPT zRCd+*@+O8Qi%bl80ZXaV_Fpz9g4AAz!fV3qKmZwt&@P<7yMvGXgDuEix@OUD2u%gE zXT|Xly&P8LF~lWFZ?wa@nqTyM*gAiqp>@6qy+DWcf@$zjS+k}_zAa-Y-B%0~X3IgQ zhX5mTZtkSNe?p61a;d@Ucq(LibM-=MPOa15dbndJYo_!XjX&tQK1nLohlg{R_``FY zK|mVf+RXjP06hni91glPWF+-2FtX;b(tG?S7PY*3xq1ec4|EYsD~aQxkCF zo@HG=mOYBW)uCTB?t+wul^!ArVNivXUlr}AqDsZk4@P2k~;0ekG14xqCF>RNFyyL zTtkPdG$0p#fl)hl)m_HI!aP?QMsf&0!PVqB!^z0HEXR9ivhw+8dV?2Z6k0U>R0u`n z(}TtnKR#0s(Q<>mD%e73p|tl>52!8!0%aqREGvxH65C2#cTvBHhjB;1RLKKd(I(8U#RaXYekZ%M{p>w) zVhmH(O|0yXP3g~H{9l|br68xrB3jKP))uWg%IFr!)K4^QO`qBU@jf92T|RW?!P9og zB=04ENe=R@U05XB4jMqw*niB|Ayq2VC|7dRT|BD3&OxQc>Z4(1CG{O1kj>?nxe z6oP1Pl8B3Y?#h*%`cM(EE$C1URI{QQC0P^yrh)=O7axqxt zjGpX>i9uyvZ_3;1XVGd6mhrV(ht@?kA@}!Yz9`oM zF)WRHa*+a+bi&|_V=hkh{^^<3!H2IJkHhNA-gBFILidzNHQB0*!LpcF)mq4xcWDVy zSFo%NzU&ooDGwDPIePi&;FE$XdHtvGXd9l;1D)+;nmp*^rf`p%4K6FcM~d?l3VHF1 zpB(;^9h-RZ$L>r1O|t8@BFTS2Z`;XNq4$ui|A5!5ueV4?l~j;|sg1RMP_)#?%MEts zmxCw!G4@FI<5V@78;2rtfjQpyDrX|ng4|L#EmP{{i2=-&WdM)nXY|Mq%665Ncf^O9 zHSlz`viNP9u4IZZPu>+aE1pr?XNDu_Splb>=qnUx)qH4bTjP(Zi>8pS2kJPIh5Eg? z5hpXHQo ziE{}AbKwfoEFVB{0!weOZYV}<2Hqf0X#)pWtGl$e_{_1Nq8oFCk&9{0oVwuNtMs3W zm8+1Y()xK5=>4~f-5~otwb2FT8cciHCs#yWP>UB)y~7wF9sNi`xc+sLNmJ2!fugjmQO!&L92$O zjyYCIMSOX6XCwRzWqhes@dv}#Bv8O1CNB|V!(p(LuJli&+$U#948yi%Q1h|$*~}a@ zLXY7NBt3BjCF05yc2>jXp>;z2SL6_)iKLEES!iQ&0+ejf7q&9!T+0ErDF)x& zl(%9lw$|z2qS!p3O(Y=~F{p>*!b0@N>uHnj?uL6dRiNK+ewRJP_8ztQ0kHw#e{uml zkwsyq!Z%mkyWp!gF(LO_UqQiiWT)MM{kagg}1X{iVS6Fjeg8C z7YQ2-ap)X%lbJZ-mK^^2#V;QLPGmRKTg3E9ZSnQ;t`kA)$E8rBY>5Kq*%=0S_28RXDoF*ys~X5AG(H)avFfj(KKltW#K70h zG&nrqWQle4IUoXz3jcAsq`tb|i<_l(?=Ph;F@$u7;yE5R_v^#W;SNZzDjSxP+`B>< z>9uhy)1D|8jtmV;i{XN3Emx@t$J0I18{j}f^N}GVoAyB!7rRuJ5`=DKB(yVFL$}dt z&Tx~(590%~D=8Ra^l_wg_Rqf$b-+{u#W;nKkP$BmM^Pj zgVQZhvS00%F514mYotGyE_b~6(PTzpM|uiBG|;<@I*t=`7Gs55ago z@lC_@G&ZLMwHYT}>Ib5M5kTJ96Xc1fts)Fg}kwCkZ5-$6YWM_m739i^dMhCm;^J?+KRHONjOM?KM zdwOhMy9#q5MRdm3+p9U$3MmyIa=}J`FV{rhioME|n*j&W)B4$;QdujWC~IPrphEb` z!@S=O*P7lH5r#s$m-cKFx)I&ZRjQLql>wqXZ~Qx7+mVq7cjto(yb^5HA-O$I z-eHKIvqB_s7DFRt(tqt5alg+WF;FI@ZpqX?N5Lqe(*sw?-+l>BNJ zduP^Rzh7dy*Y71nPd^>VLd=@>=iRa69Vd? zuD)zhCz1qL@AZq6P;4}jaJhk+{yb}Fn?`o-wY*SrG>^Nu1R#<8r`{<1nYNpO;{GsGosXu-LdWfghykj9B)d|qXN7R6f4(q%N)`cpcR zoarLS2f>%d;%ZUz#IpIULdu86YZV}Yjqxd4USo~4lf8((cAej)e-e*pH3{I2IrRwo zTlpc~Zk#e{t%n{TvEikt?#5N?V7f7O$xKLC|DbH1xK|_Hx>-Y_6}M^_@|D@eamT)Yjn5yLY%CfWp{%o9`QREI}4Gi0P@(YSp&|SxsP``DHu?j$Ick=k{%~eZ> zLT_j&+ExF1@6Rs7wRXv|_Z>wk`*;oi*Cw~`ZIaIqRtpV1d&;^mWzPcrC+A&5C1K$i zaU71>D{#?15m0%K?0Dy}&8y{GBwp0@Z?CYNRQm3qr9(@S$`qvdLR_k{L0Iy{YHR z9ceeHOw{pfNj;95@XAQPd-`6Jdy=kDw%O1ja{Ar2Uj&s>sv0)za&8c6N(mG%{L>ae z_mX7C8>u&!kgmN!9C|FV6_DkwI34#BI_HwoLJ5IEhhvL_gW>8<Oyw?x->lG6A$yEpOlI_1Om+>L&m#`C@+E@6J#L}uBy1m zv7)Cp00231uYNhZzF(1~ z2e4&lO)E$iu^gikLrFkbFBVF5vNGChad0`bEiptz==!fi65Co{yFO~DqF~qcC~HQ$ z5jf^wg7QP?%Mxmhr?)BRV*KfeGZ3qW?*|OEO7EzL3-!=Q8qx1F>ft6dUHZ#LDLuoq z00TZ{=M7Uh{Px0{FN+~u;Lho-F-#n@Wm?X`*BOHd)Bu~LV&%-Tnt{G{&TkHpxRi>c1zIUNiq zalF1)@Cv$`#=u9%q5#||N^A3#3x@j^vPVRUsn0g$RCJo&I3uRMAcQu}J#6D~rImbD z>imn9P91aL2$A$V&;E0m(ZNF?_2Jq&KB~GLtx(cJoi4T?vHDS-4Aa0OAKUZ zSEXpTJ8AN=J^s3{xgiSv>KVHy3blRSHuO;6CTDbnno2VJO`h?9 z8bBCQAQXPRsFr%g$%=wl{7J@p8}AW)GHZDWXbb}}SGYpeP&Vy_LEmL0+oQiV3@J*R zGRRI09K>9FIj5)n07|;1jMFzt2@7feernksRr4L)`7fXzK75&FtbQ+9LM|sJ@_BxX z`0_^YjzUnZ6l~0fEZ+h}_UD~7U)nl){XzHa2re5P8g@l=tT}T>>H>Ew>0J`8YH7aL znrdrfrQjID{ZpwDNv%?P(9|TiK2_bu721zz!Hy)uHkmGy#=dDbqT%&%p(pQ@>r-HT z_LSc;9$h7XQ3?>5-zkXuCXZP&Hw?-ovlCsM_nK1+ory~n!4chh&*@8 zbTb+Fi?P8ZlKyPA+L_^}dsaA{Tx6|V+t!&_vu<0J`=JsdVi0Rtwy<^nS4aM9k!+z)Tq3gDe4x19U|{*I>XurK$OOpX(4?Rw=;A~ys|Mb zA`eS|of|)Mlb~+IkPO|6XcFyDM=yZ$x#ENX4sxDbD3ODrbda!h?v#gv3={{h+$diFUhNDoplqMm|PG2ZuI0kbY^v@8~Xogh(~n$;%XFXP6AdxII*^fcG~Jmlr$l8XcMy0_y3SsfHIJf17d`Q z@*si{t8vF0TrwxJYCYL3vuaT8&q-RaSdv$-cK}le5Hu(bdJ3aP;U>_*PE=|xM8;SB z5u$koZu)QQ(I~vrH=o)zI}T}D+^6BcIKwkyhU`nT(7qloTI&?*qpsw1<9M1V2ECeI z+!ABF3{^<-sBBl&<&*ufT!m>>WtD2AfSCjLJ=T?@7_cqMPhNQd_r_N6<-;lWi+`!= zDEs2_DO<7nMb^yM?Ai(Zw6%eAUCo=IPkc3a4<3!f*_@9LQt9U^EW2L_0fsPoiched z|M#I5VG0rYSk6qxE zzH4nr3j!9gG0Dp9#4D^YD~EVhNov%4#N{O_DqCqoAVHA;7lKpGK4 zZ3{mp2$j%3hV1>JdpT)`T!F`NP8h~?8m`8bFRnML5y80~)_7OrdlMr@X3;NVduB#} ziNgm82H@ke-`a5&hLu&jT5>6d!a<{J?)YFD<$n5Ljjwej9a3m~?m!DAE$xQM(ujD=);kZ40MWjEm9EIZcewtuIL-s;m zYyw$r)NN(`K`wyWghd^ekcO(&y_i`DUFD9ywMJO$L8`fTF8Kl4Xne0-9YcC#1v)_+ zO6I+Ub;1P5$|&mT!QR)56?=D&9PN&-A5OX2$(E*L5s8z_g=sjJakygi;fYbqH<@#n z9(%$<%+B^=>tM7~To0n?t@OVb05K%HlK}{N3&cN!#7|Hd>W>c;<{}y!4G%#HDg)_d zH2m{|c>2ncucj|8C&r&XV93i&CV81d?(?KsUxSNRaJQBua82zAP4!?Rd~;%0cyD6jci*Xx41piOhqnHy5^RdqfUtpXFAd(7JfoqaPQ=!dZ^#O`Yxjk92T_jGI|#+5 zA>NC@H6V5YO`=dgdhoB-2lOebqqKWhO4NlWrxB?BagVLu^qNPSTE0kB<${HhN5CqK z7R053&eJ<;iD7RvI2ugMMm2d zr)ZxN9()V?6~>}FY-G~q`VzYq>y3#&4OYgMn(|LXI(fzuNYt~)Piq$6#Q7#eQ~}14 z<^G3oV+7%v>tFExTv+lp0_c;+^~fjZFFYclYNNDB#~B zP{Hoc&3%xd8#_n&pG4`gV{oK)H#4F%hCi&^fbsLhaIMQrSCXw*Wp+U9+d%}0k=mLsfHmSR2r3OtX zQx$mK#A{K8NeI}RNL{rN`r}0?GSmSui>rZ=)P{(B=!CB@sC4hu7*m2Lpza0vY?Lrn zrafB1)9wa4B3{8k=EYsoPz-9tsBJ3#(&l3iOMxg17L+DdJq(RT@lmqjTWOd zR|IkSTHev3yTyoXrc9^$e^4fqT8e9 zpGY7l00K)@0Si55v-q!=AtdM054@g~2o_5HiamUJNf7Jm zn9ely6N_b0Sa)%2$}Q=jK$23f|`AhA7#xCbFaU0Rq)6YL!whPFm|?~mZ58L_M$ z?QOuPmMlqb-6nHf2^4-OD6;Xw*f2Fw3EemY*|3DTzL+)=DdOJ8*}*P}=IZZk=w6i!3z#wa%j;06 z2`eIT&J=1v(vtE+gvPl-V-xH8zq*3apZ5mYTy?ds`` zQ8yg@167R4m>q55a+M`glq`1m_vCK52IJVdsWUppDHB_cPrF5($htY%zj;oGWTM^Ah`CveBCoaJ+J#k}TyO%_c z1Cyo(JSHuIYSw;ziTN$wHG(}o_@BcsB&mmSP`||14GX1Tk};yR;emfQY;Pq$VW!Wy zujfZLIS#2XO-oz*gvp^YW>FB=(Elw9YB&>Rx<2S@pKCvQt-N#Ea*4DgYmwIvZ3)@k zAm||alKT334Mh(GoR!Q3GHHITsHU1{L;Mzc7TTv*|7{`b!7@UusDrE;3HuI_JrPWI zsc>5Vkz`2MzlWJ5?&BrTYwG#lr#Dl3m~-plr=>u#+F4nA@W_0CL}zGhv?){JJfkji zu(X+@7@!u-;G*#tnjlTyQA%dcX~}@Jdh?FOxF4&fq*0DP$;{#j*>W_oBbO|c@5Y}o z1*wY^x`F!vp`$*3;jJ}QHI?s`+gVus07P9$t+me*+gYlcb>!6jFFha!IPy8ipip1?+x{N+m>n_uW&*f!*`8Z zAR{g%DW)gyAd+?WX z!d9}jb3|{^qd>zl52q}`1>0tcD>pt@FFwCE2OAjtrTPyCP4cMcS zGMxe!1hWB`l)xV z#%TBVC9o2RS`w@}6R|RIJsd*D$SH?IV8ADaHh)o=izz5dZeOiqj+Nc&y`9rjzF)MpSZE;~x~^hdvE3}iYN;%~ z{?^Y53h+gAg0f~ZqRYhj_g!FIM0#k48S<(O_`fAl&}$)crKZ0E)rBth%r_D-XI2O2 zQ1D2Jz`c|>WXtM2QOYP0jPk||Rw#x9vU|&0(X|caqFjZEMj?1*!Bzo~y)S{IZXz8H zmyYMoE>C3Jbh>UK;46DdtK9KRz|GRK1Yl6>QN8Sy^QP)x|AOHY{C;M$^#izRo}}b- z!C?+-c~^J=t*8rVoE2`7mS(u*+5W-!sk{-lrUZC%W+320*OtIW8a_4dWWNwOjbQ{;o` zz?|V}Q!4&upuI%nhDikB88QqY8KEWu7dc2d(rIY|nomPX{l-g@G_I{_e(C-6Ct-}< z%P*>C{R3Na$0pl~O20-Cd;8p)Q?qj-t|u;<8^_jvHjfgQq^;)g* z*DI3_vWeEh38aDTud-=GOa0esx!}?gQWg4j(QmBt-kCI&LkJi0GYXlRs(d<|1u}<^ z(4DT_W^$Wmop`|MOasWdtl6R=_tLz zJ3RmLvEX)SSZdlyTFs6uEc&vjmx(!G;ND&;`R&nd^OQmR(H;C)jn2$YHwu`T#sflbfG$C%P*c1;PLn1wtZj3Ob5869LwFBwWbz@26^Te= zETAIZsEbHe9G^pS%wVvGC4-u^&xtq*-E_m*0{Qi%wQ-Rh6XXb>(Ms-s_>b30UkLWb zCt9g;ng6hXaV@f!{$WcMA|9mR^$##f4XZNuI9ZALEnaUtt;Vz6--%f1oEPo9gOK>D z9y2FVF0PXkexf?)28J7z&Js|4FbhR7whmqbh-)I&ADTIG--C*UI#5G?9nm8MEP!|C zQDp77nz(n{z@Kl8%v^CN1rDHRkN1Ms*5-ne!OEzxUWyQ8*Y@7U;>| z;!&_yF2oSLX2?{9LZ{HQV6`TN%(&k2;x#obL+FH&me7EkNdg6XiOoYOVnOQ-55dPz z$%VupP~$eEB_V3|lXivAK1h6Ods3LL&N^DeQT@(J!HUUG?cV-KF!aIU4%P0`EqH{OoC-!dDB-kwW<7}L$C#6=)NlZWn3 zk&flYt)#miXaU6r!oVKt*9jeg4QV^^JBM4p8AwJvUcWor)>B7nw}@HzEe z?OwwWX#V=Lq5B(-x_-^5)tFn4w;WTMkmYP5jsOV&w2kA;0aY>d@STH$mKBY(5GVR4 zpW8VQKW6M5krQ}#Rj<{mm-j6g6;Zd>7B;G1eM>MiFljxTY#A|2o9bOy0B%Ts?WZ^B z5@w=o+V}(CLAVN2L%d0h?7tNhPT_&%;^L$5b3q1r;jEr5XIHeX;^;Bm1E9BQOlR*R zAy%B)k_Pyra;6ppUxP9rkN5M&;vSzmP!G-W5;}YmxmvG448ZDHor1-NN<~T!su8T% z+;a-)Ot4fF;K30cY|8HuiC!*yHrD(8koP{HOmtiGdvJdPx&k+a$uHLUlw>axXo$R= zx(!bdJ{SYo#4KBao*|hFO}LHE zHzl(MdAb72Dy3?h{&D- zfMm3&Shb%lOho>uisA(^|KeoZWE5sWfLDd?y&{b1H;sbvl7J|XEJzUSuL5?)r}>q> z26p0Otzk^lAM!HPr&XRPeEadWmJ-g&)WB&($y)ayWQAM>EOIX;XKvAO zMbVRDSh+1i@^98E!SF!solTgvj>n1ZB@Wy)K3DW!g~^%w31?Zy(~~7BDZ=c8_W=vm4@o1H#?om+yBwLLT$8*1GhQ=zJ3vvyhWE^Nj&HV zxEog;c;0|2k!o;!XIuqig4D_R*OH6TUn|cR=)^QklA)76K@9?RX*U#O;hRiyj@kf~10c`P+{bKDuhA9kKVyks z)rD_caZOSgL~A4W<)E6HHWtK64-tqx?UL8n=-QrBvf9xFF>zzN|8cI-j*osdd?gJF zRAhfiAdKjIusph#?5ODwV;p_q5VhmPnJI#t4?0uWNS9H=%xmN;(YX(p_}F>LbV{A` z<jv#;ehxzCMRmiUC_)(~&??MA<=l!@Bu@5VXOS3VgUf<6Tn$qDpVuY) z#c+P029p;m0(iB`Q0L~jO0~SufvKz{oGT}R{LGtNXaX5C<}7^$%K(gB*_Cb98E}^g zi%%ot;3&>|6~bRnL!;^ewUO2`iN!-N7Vk%G*y2zI9Ev4UTG7s?P*;1XrgC8KCH=M0R*p9JOGWea|h1OsAZEZMvC45Abk$W+OaUC zzQNmAjt&cXAG<1BX#6+ZRN+=34;4&MU8onHsv}}3Gq%iS=^_VK1J|X2zO3E~tFDyS z_0Q6asH~atn&)*3LJB(}%!hQ(Q9=&(iE={J-5@>)OG^3JmW}=nfZI^wu-)o;1Fpny za2r?OfeLi6M_^4Lm8jFdOZz+x9qMSrdW@karWHIqjvxO$dBCJS4Tz!9eSu3Z=x_ke z?p{T>-a%Jcv#Lc#)m&|MU+f{Q-%BL!9w{L#4#w8+EYK#Gk)qcp${r5ST4=5GfNfvS zcK~rAaAcuKFfe*#v!iDJyj4;+HU1h_B*06^0hM@r%oB!(c-|q0umeJRHXM5^s=7IE zW56q-gJ97SfDBt0mxx>_d@UvTfMpuyF*RE5;!ccjQ1s%Yp6bNUf#H{)C8jWM;lXUL zBdtjpwExsoA8W(+LamjUFh$G^G+4WHvIegVf9|>LGc{mjHy|Cq*O1~1_>$kSmRm*( zFxt=~K#DS*T~-|wW=E#dlwmcN_??Ey583J``yQ6x8AzEvbA}vw%i`ULI`!zz8-FF) zhDSTZ;L!_|OK|J_w`?f@8fawgQYi2tRuvDd%ngMUmlk4LGIoC^+m!~{(_d5VYAR%2 zHQX#)2J-*a-Xu(l$+A~-J`8j`yy30tV^qVc!C<_#QKeb2E>A8tU(I6Yq@^DwOX{#( zhP7!xPrdT$%zXOeYpx7FP$&#IV^o9E~WE`|@vbe?=7m4jLfMnFKT=-7`Q-Z2!-xAvrCr7~-B#JYNW zwNOh<>)gQrP%2Keyz-`*W;G{0E)= zOuHC{j!*@)`_Sf>hKop|%J~Jy^U?cjGA)-jM_e;g_;3Ol}UB>b%`C6-9tZR5x%YwrXBeRX!InBHWD6fN6o zE!F9JOW}AlLl7Hw#4|9j=bmpp!2M46=MNQ!Fh5vKU&P3C8_Ykb6)SHs02~BkkwSgb z0N;~=r}5=Ww%pS!qQwm8hSjtLqN)#i@mE^dhhL~&M6l_#5?HwE@Mh%uX~~1%0Z0Kz zm%2+ox7t;ly+AV&aU`%E*1~3xMOSM3MMSI$-zGk(G5w0@6cesEmqgrDm-EiE0lPo> zoNm;v9q1~wR5#>>z0Y(#rp%$Z=i4* z6LJm<>sH9*&+OKmdsNULE#IH}P-blHyRdDBs^e=0T7kg%^Y%-^z(}TO*4^MthyeDs zW78{6eB2qJ{=;K{;`;;T_)Ms@n3@&xW}|8QDu7l2d|apJ_Be^&EQQO0^tYq63SAR7 zSC7@{&iED&3ejT~*}6^*C}u0p+f7qnXfP3P`~P}Q7H>OFWp(n~vAZVD~ zO#0_Pd;zQC03vjJfIdd;aE>$2pnQkEaE6&vgkNIEfG}mWQ7r^b9Bt13!$v|H+Q)>| zrWcNSE$gwO*bvlbctDK~i9@AYx1m81#(h6Ou+Q`O(yR!YGsPA07iv#jYX$XY6WUIX zo-|T3LRWYFbHtqVL2d0_23pk>OwDktQuTV?n(>OjZ>LOqA==`OV{f={#o4v~@ZaTm zw#c$9jwY~shGrA@fhI5}gDl(e+^+BQSBG1rq(Y-)JI zkAOZY#T(45@@6tUY#5C_H*UtZ=v_GcM_ym8-X4MNp|1XCWaz;{i8b38Z~QozOORvz zLC(bm7A%Scef(&7kFNtC#nv-BR~U^Y<|n>jZA`W|as{k5)EtA~52*Q~rNwLNYeW6& zoTHq zV7?|(H8rPdEMqgERC)D-(W31a#W2oL84KzF8k=6r{nHLK0?AiDTbq6~1>fqusU z(XW&hZIy>=Ep_CGkpPrp16&i<+rTh!V6lf-io(dDrAEmuLgyXAi|)sp=n z*p+D-9r~rvL4TLId*KlTi!1-Pf?mQ%ejk&iL8C6^<|8q|zRHwo@9UUAyQzdsMzO=I z{?ikZJV4D{ZK%QwcRwjv$GyI)LF?nkBe9^)d-Nj|O^pg{;MAeGUK=K{Ilp!p1k#iX zu5W~hcMeRx+x|6?#N=gzXF&l*j)Ua;vv8nWlEMeVdD!U$7uUOk*Jl9#KLEgZA7dgM z6;9}0Li%Oo>hG{8nm7kRy9a*-ZRv$|n(vAZ=NRDNuW>928(iC0h_Fr1GzuK#_b)jG zmyf1E4e$~F27J#>n;V%9sLN=nu}sPRqcBWYvNyWBuOUN{e9ty;tqAwfQw7+N7m)od zP~PWItq|>NuJrF!$NTwZXcqu3K}n4)($wf9Thv^bD65GvGzTuF_1gWAYztM%)-l@A zJQT%sn}Nx@sSX;IAcII^3ffA9p%*x-T`m%3mP}5N=O}>Z1e3*{tll9qPcrKjp~Iz2 zoDE;jKU-X2^5(mNZ@{949XN1obfW?FE+-&v59ezyE|-2qYrPk0w?(eV{Y_I!S<;CE zwb&tkP}tokf}wnCiQO@MM%z!zE7C&82mYNo@K}d-_=;!bsf)sIb{CmINIdbz$pzst zh%TpPq5cd{ghAa@M<-z3^U>Qmy9<53$13rQF?8`h{{CIUm&7?BQvM|4`AU7gdcC#d z;)Cgjwu<6gW$bcu!xR{^eb{xgZlG7BiL2S^nDWRITuZmY zS-KVK%}tJ18EfkGWP%1KxI6Pe!I304}8#t6Ic27;45*)DVo+0VlFf^@ z>d6Xp^4UpvQn&~=4%7^+GQPj})wxxra+1Cb-mK_wpejbamk+G8z=gfj!ep8P#I&AE`SV*L*B90BP3Y~m<{|tb zCl}>lkPn>UJyH)0)5u7`3nt!hrzgxjJC38zkv{afqw}d3K4{GW>9+o!1z7|S!8)WE z0ySkMH?+Wr?QF+u?dwJwC0E8A7^)s)9fyPRg|!!5lHrm>bfnW63PPV_zFS(yMEAhr zOP`GWBFyBve79kuBOgn)RnCPtuZxOvCPB`fX5^2f&57M!Aep)k$ig=8`4M%=Ieu_= z!pC+M$dtS9^>;bdjfg!<8U+L3@BL~Gw~o;WNh0{@wj!VOYeNraE5SS6{I(#02d}(_ zJ{p?HR)o;ib2SJP^Rtj5&+1lhmAS0=&G?F)II z4-De`#~4Fvd|Bf)&W8GftqE+q1Yxphw3t3cIO-F;C!eki7psXnCGFkXrl0!p#RHc% zn26bgAvK6t=}_q1_wT+IEEtb-oQ6dR#M;F<;AXAPqm7hRDOw_c8G8(5moB?{NSPgn zigC-s!xmLv=vj2TalJoa9CpkWc(N}?LLC)NQfu4Jr}%AgL^r*oW@F(wxleEl#Kn+K zH?!EW;_g_-4?x3YNXk-86EJP0Wc=#u=NLRILF#<6O>P~UTh=^Ty#LrMqN6*hH}a8| z8dP6r5$BYuGD;7*u@|f>p?~LaC@uqkq~%hp3L_kZ3ET2sOSy4BM@ZI1)}BElm@>>_ z=>nj)}-~)4r-4u@cyd9Ix)nX$e5q7r&)`_JH9f_ zGEk1{YYq(#kah^gTH%Z@{N3>F(sY27#-lSO8wyf4R@*+lrbL95mo27oZ!6Cn;Cz{i z4S}$rYM)?>L=!uMJ`!;%%&Gl}RM61Z^5422ANcBWSY;}KLzfg2@p1Ccx6E@`(q)%q z&j08VCo?haUeXbj)c3{)punfy@n#3Q`tu+?+2+yL;7+qGpg4?EK|KsIh{B6pS|*a* zD1%C}h-b|-G4;M#!_f{1%`q(>c=i=6IF<;Zj*VlQ)s86$>GL6c*S}Zs9D#l^J}E%e z((Vp9OhJVLa=(l(TIfA*4=&`Ba{S4szBTjRh&aR$zS)jG{$xrtD{FHyVkk$toh8=E zWQ{BEJXUtuh#W12M+A2+v%Qk&7YXWs{`l)Tf%QQ+ffl>vgX}kZ!ilHk>JSmS^*c-7 zH;T=yR>^bF7?0JIh^RkyikEt3ePwkA7!uu@!!|DU4)R{ypO-E%RH3{@k>C=hk*WE# z*c-n%pht09T}ZTZPXkF8%OgF7ipa+!vkcgHbE1kO zl9=2a(1hX9&)_7qMs^>6QdfismYR)RvpXq(Y!7WNTv*P?k&** zCj#x@r(fz9gal&`J5Ez%^le;dqX}R(g&%2$#XN2AcX*K_=NLB@D6!eoYuX{zE$cZM z_4~f_TDzqi&<{8B8XN^pboY{fZeeQLBYB)rr7p5Zu+a9cs`vCNTuI^lS$?I}FIxlQE4)hjt zkp5~@gPS%F4GdDOo8Egbx0TM$S31q)Z@8dfM^U1( z_O!RjvTVma+cHBX&4^=jto>qUpJYV5=U&k%S?#>wCTczlKAaO-B<)YNUiM6Ufo6&~xmAwR zL~iD*qxMz}%r`2XV`<3pF(mxQOexE_rjH!L)x3icF)QA5)z_3vXEI_!WZ)Z{XEGcQ z93$m@^m0ignZYVV|ZHZV7w%Nw-1)u z%R8G}J_AsJe_L3O8@BfA4)$>$v*SUn$>Fa!rB+2)Ufo#{E5z3X!1d_g+QFwF%C@+n zeUoH&O+KJ{f(l;DuNQl}030f)jJUzolL|R9DW+x+izzavA_z*2>C{)&2dz7 zEFGJYTwA-AhyZ#B>M<`>hN&Z+V`fe}j{N$|_SvWZK!|fqzxO2D(82NDeG!T8MPbi_ zsr@iUAEdKq@QP%8V+rVORi;y8{;BZbgnWWMXQcXXxe)DxCFl!7+#$4{%(FcbkI`HAm+!hb*a2BJ#-l)bai3+<0l8%6A3O4fgDP~&3XEW-inu2ALJH!C-s#qmxK}StvC$rKS0E(hye>|-n;x)fbD?d+mrGZK`JnDU}EWMLNCpxz?{nF_2& zb>UrT@s82KU}uASEEbc)-NcOj3~&(4_0b04cvo-!+&w?$2Nf))aH!XkYXZiFX7LPV zf#R^vu7guf9Wm1TdR3*QDbICMW#tqem73H`oS)Cn@J?LREZZ8_B#(y~`3QSP6T8s` zC8HXl45|c#N(&ETYjKA*@h~6!t=PM_55O4%Y;lMvA}F>^EAgNZkAUl zm6Sy0N7m(Uv62p{FO}Bi!ZRavm^Q&nsEVFrLIX_r3W9GsTlv=GDEROY1zczAd4;%}|9+ zKq*({XUQeHAxxR@%$7U??yRd`NDlwzj8zm*B*nkYu&9tn+Kd*gOe4)-+!kJI!W5>w zNEFKU05W!wTQfid^AbA*S_;S?Fg{2~n)+c6syTw_>AG(DllESO=mEuPI^2f|M60VG zWvfH{MmXH5N2o2aS0(N5Wj^ddw+q)~gbVHF$nnLz%jLAD^)-izSipJ&X zAZ{dT3PS23Cr!VlH{ZFAfYpUtHwXX(jHm^Tp?hqo9s2uyKrW?%0EJdr9(t!>h0mZ{kOPm?WkK zjc;Vs)s+02Z67$rzOx$2RGB3p^+qqBG?2PIqiRVNPl1FY7>xmoi~YJhm({mr;w>n_ z)Qgb)I0fiO!t=7ZKIwcLUf?}UISI`S>VXCEg~0ZV`J(jDMOtDfl_ZmESz_jFB|_t_ z>~vDHeY=SZ)UVJ~IQ4$(>SaraQ*1*Xh2%^WHI@AZdkD&P?qJ2-Wp{q$!bTv1C%5S& zDHOx_jX?V;<4NnuQ_ZR9ASEXm_P0JH96NN6LH1is_NGx}4LvO#_)Tix$O`xHlO*38 zg6l?=cPRlxfqtxWMzmDLCmIjlfv8vI5y5?6jJhmN6ck@;i}wg%GM99qEeXEa!lzhk z^sj@>75s>7mpI2_S|v*nYAizPDPKEt8%ETDNjBPHR>9S?Rw)uX4nSKi&JO*)*L}Xe zT*&30cqfS*(#iPWO?b|ndim7MdaJ8#h}k~$63Y|WFLZi|7$%a%9(nV=9~skwKV$pS zGk=0MHATG!L>NxnSw)V&$iFwSIypbM1qDJxR2kL!$`HXY?l=jB5+1e2_oM&W3$0dc z&x2i07o#8xNQ0OgkV2GU3o+WMk*A}~!hvWh+I}KUH?Q$pju;tYoq)qpa$ENp z8Nu%QSF7oX3(|1w~hxw3!UErV$no=a-J0TinpW5GfM%&OAh< zqN`y9FUU2MAS-J^omZ%yssH+QeobEbo}ITLw>Z4gaJ2!HPy5=IShWgF@u8l1;z3Ak zxp)9~_fjynkT>j**cX|8qii?XTi({jHpqX_YsiJ1SD(4?oO=&FgDUY^ybaUbj}DjN zj&)LLn`ItuMBOXGx-%%_)MlTvG?C3ly_JnPy3XbUEFpN{DI2fM>|hB>PT7a=hcz9? zmVnuFQm}{y=l`C=l8BFTWzn|UmXM)QVq9#8641wMLHGdi(&Tc^AJ`R_{Cm`Ulv&Oz zUZviqJfLW5kZ2POP*y>%?@1mufOmb}!Kt5u4P92umH@iS*ehgmU%!o|r4Wvr~S{@uX=P#PCZtf!Mj5i9il zP2)5VrDu%JqNOr%cAg&uVmAQ{Bg!aNA*`Z_gp*R)o0~b z3EfbB-4fo3SVdV5T6|3MpB)m%$k}KdIrdf3$jH_>Syw#zoE=qIL1*zM4Mk9+^QwLb z)ViP^ikR-V%a>4^C~T!wYzs4`B3jv>+*k_`h$pcaSabbeI}WXrJpYaf9y#4DXwk*+ z&D{~VI4$-VFlSjvYMETEc;i!tWivYG|KRUmV^A@=QCy2Dec{pCUUUdc09J4V91F1T zld4Vu)2Y@4duRIOKCizkD&Mc_T{N^b8ov+tw8L9pKQM15p{f~O5P+-d96Q}d)^vnp zij$({$Bo}x^&$5&yDip=i%gz**iZex^hjP-=E&rtb$9< zRS%itrG4jfhCFH=v69e7WloCoH&i3X{uMJMw)9%wdx>~4^!2&G>=7?st$fkd2)TeF z1K31O!_^9-2h`cfTlbf@ZYKB#Tcp3aCg_nW^?bXYKg2j*@!nybix_untAp~#!)Zzc z64Efwr=o2Pq)%cP*q#So$#9W*V*yD0YhxanQRBp?eZ4Ljc*}S}Kz^Pj&N=Fjrb1Mz zlhsASzHrmhIG*{NO%ON70s=yTe;w%4r1DYCLZLp8m^k%|t^aKi4AGB}%1R)lz>s)$ zGJ4^^EglwzJ6RZeTV}chQ8pvVp%|1)aw-zc=P5~(m@Uh&8;3-HULnRIPTnKcw<9e( zI|2!c%NXvSV`>=roS zN@}L~V*{QD-w2fse$8QhgkO7~tf3Ei+|BJ2sxaortsDlft7I zd2530qn0$m*cwJHFc$^N?u9r!D$m594wDV$!*Oa$~ZBG zl8yndEy9eYa%p8pqKM$6?-2}GLs>?3mr>|=%$xBD3T zMy$$*><@54xShBfLvz!s9?FC9QHV*{JA>Y)&zsL&KM6gh$$k<=ILg;^odGRm4bYr5 zV?pyRWb55wmsqgc4rz3D%P~bMUp59S27<1`4nWZ?JLfIkPR@X> zZf$*6y{6sI2V+{YjEg~sWHrGkL2>{w^U0oBIMtFOLSwLK}BN;Tsy^A{^R z0nj~Y&w-K)=s+;WX+2F3ma#yZgj*%hK}u!}}dAU1FEP^cRs^a4NTh_0ATOg94oRPFD zgI?Dquj*+wDlEb#b*Fx?oCBawmPbTHf1mcwS&=^xnt^c-KkYc4b*v!eYK^H=$E#Ro zEL)As6>xk~J*&gKVVtIZ4O1NI3tn4u>IX}B0(!NVL|~H&b$G*)(yk+;^r0AEA0ZQt z1iX)s9x5*uA`vua$wdFa&1mNy+o-zzx~^z~`<7HhjG+)uV*MU1GC%Qt0}$(L-;J|F z2Qk|z8}LsB2k<}P-nP9e`N28c>MXo|l*uvrYi}u^l_TlXJX=>B?MAz3as%=)0`D(2 zxK%U#gPAT~)BRzlMKhu4!~SKSpm1@1Vym zm{wm4@Y4D~%~EL3Q`Lj)xtj@l-D_f7?K`g|PO%&&X%%l>#D`IOUD3+C{yN3|J9A&yF3$gk172T%u3V-F5+7@RK8TQS z9MseYGWj6JoZ0Jn4zi>i0V)Vn-BI9LjfnABOcmJu`|SHfDFF}PIF>9_OZLJ_etYLs zuphc;PE53$)t6n^%6xjlT>QCqu_Kw3puvQHHuTZHX*wKi?bG!XYrXU1b{LBMvkAg^ z6B`ylrRZHS4(ESL_Bp$}z=A2gJhyc&EVDA(MH9gc6=D+TMh!z{^c8^1AnxLH?uMsX zteCJh1*ME7LteIJhe~&F93AF|^HeqaN_KNSVOWB7*O1@V18(*73^xGPR?W=O=D!DP zf=_rd5`+XZlRp}fAown|R=Kf+KbGjM!@_gDC>C~T2=!=`!pQK&wjzJgO0`s~xrYGX zRbv+lipsCM?BU=N4f{?!XR$qx(-F-}Vi1IZW0#V%$#_lyr{JwW3@OKS)q0CCu_MN3 zZ##GMF{rU=D<#CVp2^j=`E+NsQt-1I+E7>P1~mkd5I3IWXYc+ zqZh{!@6IW-_wN)H`2TdA`F2JGud#Qs#}|J%SHP7#?KdBlO--@~I@$_~CbOee9wH%{ z=Iu!xH1~C@ZYtmQWxlBcrFvEb7Fwv4Kg&fpJVuf7h5HD=s{;%j!IIp% zTaj4IaGqQw!*+7&a+?LY$GB4FJ)129lGMT<-4ueC_vE#m91{a-3^g0V6(Tfl0O)0l zSaU#ShXGxE?1E<9Q8q?3zHj0$^R;_#+#Ekl+=5vT-;WGqCu7;>#q}eo{)F}k+ttSN z+LaphDD!ZOTTlF$MfOzqu2oOykrTPQ;7U6E8z>2}`o^H2<$c%HG(OmL02=ne=R&U) zptc2>bXcAG>cGum4d=I!d#w%B6&qK|e;Qjf__2*0Qw!Cc+iZ83Ef*9~91~t2COCpd z_wQc7M3mR7@=`l32*Hud%7?HT+?&^Crvx93+rS9Q=Bv^(1Js_B&;2V+nP{*zde(Qo zKUOkwy!roHZ=dX;=qe0Z#ILENz1j(#2FZY5Iln5$x&YEK>85eVn8QU}G2g{ZAL}JV zT^KuQZm7L)6YVt3CHS5z^T#wWRdpHTm;;h^@jgu8N3ZF#FD^$2hUGj8=DRoX`H{>h zj9P`Kn8oqCNf6$vpuxsR$X(IxhPv4aTS1XSd_9`f3uFBFOobwn*9? zPX4&8g}_-Fc5F!Do;;!I(3rvV`a^o&fmc;LBfI0G{}fOc-3v}x6wn_?hkS;Gp>{#7 z2RRX-FzESrZs`u&>*|oOnA$G}ulr`)+2sJdc$R zqEUYnBm@p3DrPd5_q1-NreS*oTQ`(Ow+r$KyMD%{@XxTUG(Is8`wT4E5U}I>S>cSj zG+Q&S@*IjRKS?y-s(;ZRg)Zj50Jz_2+2hsxe2+VbBhOi&gvf~b+ef{I52W4b$S(EL zxr%a-)NP-o({_T@gKMxQ4C{#X7!40RF*$;z{~^ZLP0@QLm4WB%)JOX400-IL;K{Ap zHUS^1{JClfzFGH~>v%_JPvse$7N;uOVh#BDpmuLJ!Y~h3h>PRv4$e7>iyAvhIfWg& zmh}y73#jGUyB%xST^uQ$1!t5uH-_D05E*F~c}>>4^Gu?YT;D)1U>y{w5a@%O^^tkO z#BvY`Svzt$9)6tcKKeChe7%`cLhCaBUhAO`+V`;3WFx6e&xqvG1~l4KQwEOa93~V@86i?xbZR5&9I~fLnWXRV1%}4pIAZ^t413 z@h!@2MDe>_%y&xon^)9gw|aAI=Re^nXd|MH;fPv=&6a1vT_V-FE-_%NC>}pLu4!r^RF2QYs_lrZB<%bpdU(Mi$_d0M7xTT?SwK#$Md&*bm|1L94d2>IP7lI5U#IYK@Zy~$D zpoO5fC~x$ecb-gMg{WBUk?Q)ze9S5QCpXKacqlwz54La$i=lvBlTTlwSp z59>(Nl0mDM*N3tYp^cbPD`z=HpKb^kndH!ghDUubQS8)ub|K2x3Y?}$63_1?e&YdP zvJ~(M60g8jA8vK-I&dFLj#X?|x?w91 zKR8>=Q1ff$p`nQA^E*;zuy1m^-Y3W0j47kCsgiwud>I=-{_NlC!pUy19+ot_WQy@q z^+j4hx=Ss#CUHzS$)_ISOYySf>+_fw>D|YA3~BL8$?o4^!?&UQrWybvhFN~FA0jA% zSVRlrsD6o8)zGS2Emzje z?*N=EQBPWuq_aa;%c^40GD+Vwezny8eG|FofhZgG9Uu9h^FcoBn}A&^)-?}t^?Q6- zxzaBQ#ajqObvAlM%z>^d=LXs^naXc{H6_9)0<7M!AOwzK z9?=;m+ZWlRAyp+KwFCx^(AfCAn1*QWf#P^)dqFuj5C|clXhkdt6Z!6}6nUIM!*$`< zHe*I8dhZMub3}|U6-u*b^!S`ssfa$%IO>@MYurJ)E0};MZA?eKGg65Z)}kdqY>dc$oBOul~{2vI`L02KugJ zNPC>CSNv+Jwvx{OQDQB8mKm-1t!=??$pi~gRJ4_=*k%8Y3bErX3+#4Nd~?r6YmM~` zbK0|@x7a*=IPj9I5@_l&)0-@T&K~^%FafB-|MAY{%$SmZ^~yHBb|@hv2r8o1`gI8N z+z0G}xZ#wa8jYLwUCmH=x~F(VO(#yEOM9X^Y^hm7e!jKoe;X^UonF)Zr<@Mgs)#nj zQ0m{h`qznKIXg3^+OEJGrc6ok<@?ea7pQxzTJr)<*3QA3#b_ z13~_9kFpv+Db1>>!mUhnI8^e%PVj{H6($);_=8rFZ-6!BPNY+^&Qkw1ntr3MnT$h+ zXW|ffs8CzoJ|! z|G8QAyEoh<*S?Mc%=r0qJjzfXr%x}Ch26u}Uzk-KCDHz;L5R6v3?B?DQgMFJX6f%n zX6%nd1zl!Nf%~n5r1R_C{9qeiMJUgEj1x@}5X2(f{Ji~%6qeVMaNgMMZl^}i47qGh zLdQqhDi7-No=J8vm)>fNZf_hf&*bE*uUZ}yafDf4s=#cE{JO+y>J}Q`o;@HlpJM)_ zwASng(Har97JTD0W_sW%8RL#UfF5rOLfX`w4p{)hmE@yL&uM2q3?2U+XrJ5{dO^t0 zCPw}bHD;x*ldXL6Sjmhmn@jA}uOT*8R#QqOl2e@)8k?Wy9FX40j}*gah@opY02lmY zEi;O?vTK_r?eLlLA1>D-Wo(T7mLFuk;n#cJssoDm92 zXd4RuyjU1r{axr1ecCwFun0x>>9+5r1HAdZf6@hUCr!Ba#QHGag zaI?<@f|6Rr-z7#Ej?@rRx<1B(-L1(i-AwfLS9NqVJ?%xk3^BCchu`X1F}Krr{LyoV z6IQEPYJ6-h-8XUu4t$YkxM3T0ao;oxOHCk*IFUu;r;>a@x8MzOzMo^>ez13+wwW z@A8EIkH7#BMJnS;q@b^zMbW0q9`+5Kuh;6~l+qrjo%A|;BSzQvak{A7exai1?}R6k zdBz3I@Q{RCUpsrVFHFs{UAEMQ?ur%iEJ z(b72UxRGyJw1}qr?(B;B;SNr6ycAFDU5ih@2b?R7J##HLV8+4F_{Ut*yzlqFGu2WL z))Ud0?5R0^J%dEzbJ7PmJuw4#xgjM!u)e^k7bE>2Ap+W9)^N%1E(2rMgyh zk%)i=B%^538w2Esz~5V&BMsIT7e|8o3&bu~hyYf1B5Hgsw5j=Lf&;DLGn9jvYe$`a zt^<%->Tgr@-p1czbQu0n>&jtix_69L2n=&nb(n>gz$S5tF`P?7ZaD8sdLHu;kuCCD zDm4eWma#D1`dsE)Wt*O0-Q-$SLnzs+R5-LR}^4*})?YS{7ff zv5y7a(VPvOO~)=iNfsjJi{P{aLKHcRn<*;2t!qq=-hYl%4;^Gs+h;|Gmye?p(ILpalx(z6J5kXIThFC+8cJ{-ppW zbog5$EbG+?tg_XIn5{B5QQvCQiuEQK`b1l#6eD+UuS<}{Q(E2sfKn^I%xzjN$W`ZL zxQz0p#lvF%R1l5gddy7$(qv%0;GS_p%Mnu{`B8Yo6VXJ&A1LTgt>E}iFPakE2Sd$e z0)??klG?>>eZRg~KcbJH7VRKrM2CP0l= zU-5O;u8yH!NAB)9QbzJ}YU9p0!w$F(DnyWWT#jtW*1sfi5KJvwbcc}_{b9oh zS8_QPnI~;yT!O0E|M+p`XVp{>AKWM57{1*)qlu$;CxYREy9D)WttNa@Fr2h`CiDs7)YFjFIVc?QG+IO-nrz?r(Z9DX#AQ?}M)K<|tp5iTw(64HL{fCuy zvv-MPQhf9Jx9F{UcU;A#4j)ESe%vEw916D+Ly02!ZBgaK%`Z4Cfq;x^MMYDvAol15 zhj6#ik4^X74>+i-idSDwZ8242=9z$wBu<;)r>SFeQvxd{4DZ^OL>(DIxb~FOdJv|$ zyC~CaH)})l6D$LX<(*Xz`9cFd4e^^LUmZ?kEqjjQfg)tcVdGsj?)z$kpFkoj(+9w_ z->wF3Mzwd}W#=ma`KX(LI3v8feH^ep8syW&GqXG#-%JLFe-+=?Y8GCY^~)609OFDK z2H=ixZRKoMjF1Gb{giTLg`1C2J(hx3K}T$*I~j9tNwF?L#{=sTJMbSzr8_@+@hV1V z(C%t4uI z{$Kbka+2`)b_~OiEe5Z+a4*H9gWMyULSgHvFOR#VaD1$FgE`TRl5d3@$L;&R%d9ng zn}Mh&yrVTZwA2^6bi)^t&Z6<;;@UulTCLb0AbPlRjBxYV_9yhRTUJxA`aTQk!tAF9!+vhJR~A?xw0+uVmb?77Ly27 z9_Bh&kMhi2-4B-&6IMMzNOL^R>WR4EXgNoJrz=$7^CM?hi7Zz(-gAW7eTC6uXqx2(9<=+6+}C6S-BM_}cO zBC5VQuV@@QlP2okg&Qmfjh}{VXUZ~8n8`AGTWKWT@v`Fr#qHHfiN9^nXl5~gk8lJg zd1d+(g=f*`M?^3-M94|+Yovh$gU{~nvu+vi`;3_L*;flAjtWcQ8_y~X` z=zXYK25-8dujw#EP&tz-?8?x1rW~{??@eZF1)c5!%pvfJjJ{j^jY*z9ZZMdJG@WOE z1>&ZLhZ_gD;iI>%#z~HDnscEpzu`wH7|9i{+5)V@N2k&f#P`C1Y9yAHVESN^Y{FU) z9-S^bEg8d%j211f6S0=zOJixWY}?QdYuf}yYIY%saBs>%eTXULTZeAyH+wj5MFBE6 zf>=(G!UAN{=CBP<8*Bgt-ps;skn$_wkSNa3Osqk}Kx+P~w`J>BkZHgo`ZhTLxOuJ@ zp(NiD5I9ZTxPzDEhO)l0EVLbVN^St=?!5~YL`?4nM2I|vPGadm`ql&bbHctpuG0OC zjHYq?Q+q^V*@NFom0AS=y{hH^sEy}`B7!0-*Fv3~n6xcE zXB5*c{p)%Ax6S2JO@NT@*7c3_3ChyzTLHDo6weMK5N@bec^5k)v2f7dYjzqSsD`3V znH)*dr`PK%f|L8KDm}8CJb~UA!ZGYn#A^6j;7dR~jvzB8_48J4OBA`{DY2s?6@Ou@ zJ^b{eUd5U%+m23r$OzMZJ)4`iuVqUR;h=_{ls$A?g%8o|RBA#?RxQ@@`&^yT;7N2& z76>{IfFkce>B%8X#o_=F3?5?9{c849w~Aoc+o*InCraM<4a=V9#^lH{I5@o&=Yab% zCCyG^Rj{K>uJ(|GO>@_n`nz*GCIt$;-LlLtT#&Q07RrXVp?_6Plt{5L{=DZ)Y#6Ej z4_-i#tIkaTwH+fn%w)Yt>nA^V9>a@8n3|lag;qAqyiY3*5uhM@k`ke^EB2b5hFHc` z5rNr7>`7+Pm}<35zNJQnbD*|FBU0{%_P^m26Eba!s9pwMrXX=URu6K z+!rZ7fNY&GM#jE&?xs91fb^t@R;+oXQE@-8gjCxatO2$|s{5TrTw5<;HMU3rdf@65 zbrL}ws_RBV<0A9(ny(ReX~1W7k(2RuO!QJ7+6splYkH5cgf{UHX^wOA3H1W!m?Whs zIY}VU%&O|GY*~~u7gz7Z(hOlcnpu^;#}p;fO62ilJ2Mv_K+V*H%QPTE10;Q#-}MAQ z){SrwX&JHq_y0aenBffQC`YCDYlnv^5i(ye~0VQw>|3!5YLm^5 z9Hux2hp%^KHm&zMuwI_OJqp38uc$fn({9bt3@^_9DU7W_F z?nTG`Rm;q)(L3ijnf!;?u`)CZspJB8cGQ?>1mR^d;^-nwnslEe>jQ1XEe{~+sg{wF zSSwGdYKvUKZQ=GOBRq?#xgS1D{o*YRNaOk;hbKwafmoA-h&9DUybqG+hwGs{Fuq1l z-kSWD@6b!6u`s~PHLlhf08!c&g!Z`1Q8CSrreKL#aJY+kvN16t_n$vw?O({}n_|T<=RN;Bnru9s z7)bCvA|KVvYXHC^fvGCx?L0x605t3h-}U<@jI{0}gHBK-)$}^>|8b^o&XK zKv?3f+y8+nUMW|%89Ai24^5lHU-i!=SwtEN3nD&?)v0FJ|4|_(B>zBDxoB?a(tpT; znJI>`h||imOn0x3#y|!an;5(F6@9{ih^{By8|za&xJ^$pO8fS%lG@J?+=`0%*2NoU zoads$LR^{KqKGYKN2#{PX=XRBJ$Z-H#~+q-pC>8$De~jf(#ov5+y9)#vX&(0z|BpI zPP&jyF8Y8V4j#^o$TNa51YE<)YsIQ;?`sb|a9G=A6Fsfpee}TR(=HBynek&S;U$;U z!afICCKqx6v{Cz;k!Rn2&eqy$XSf4VP$JK)wb@^cb;&)s@Ssk?wFu&vsr>YEP}3l9 ze@#>QDt}hvYD3EzRj*B6=De%>uBmx6e0%iVSaOT~5zo^J`=#2Y(z^dIHi6P`;j$N- zQNx(#P!d!IfVdWmx30VWB~dubLU%TG#hrsrM8;Y6p13e(rW~z`z#+?*(IB8_+;YkA zRbKRRILy(2aC@%f$!J+qW)T{FD-&>>(6x0KJv=mC1Bxg4!2#TA6iAg)5p2`hZ=EEWL*oN;L__IAOW0q;8wz~0Ww1Rc~8F~_sTBu3ErFTNXeVQ<4l#+xIc8}HFvSR6p%}kwk z_iA$Xv3jKXRtmY`J-cMBzM;mF@jbOy?6dSb{9-gkH!I zAglBuW#%fs*)KM#cM(PpoNetekby0gvp;}rpji~(d(YCzISXD+wma!1n4Q~s$Hbu3 z{V6$qb6qV2QNJY$@9*!*At>L^y7H9Sg}@gs$E&*tmDgtxlqo7+J5K)FP z-P7u?^`=S4al6#RDvR!tE!ar7!U*|udlKu|NeI@K-ppjU5xj#e85<)sCe@Lnfdb71 z(%CbA)!PEzYEr^SuEq8@1Hv@s&Nn;p`|VYDCE?h+EA_q=KjiYL*d)q^t1cFPk6D)W za1>%QWIw+;1y32zN%EhWeQy{4SQN^X?=Wjd`zKS6?#aOVg&jaUwuZObVuG=SmAbu8 z^zjpdPxkx(ZZ|SRMmjg?J(B5=mIx;Fdo80>@@!EvfnHOEh$cXSP9_=|_)q@}AhV(7 zEN|D*D`zyG4Pvuj_n2UY~phC zWHu4Wn0OtgQFU(!sOdQjfhBC8HtQ+r;BY}EX(xtU1c#$Z3wGtlFa`@J*j)Nx1cN}5 zvM=W%LW${jFNyFl<1nNoF>lD`E~RttpU1Ve(VZSNmoZ?xg-tecnjMOfHHy6?_>gN7 zLc_?W6{v@RGBK63a$CL#_W*ZxnYNnNnpHV=Jb@bfzCgtp$Dh`j$QFdL*@cId3o`mL zfD{7qoWjn%wKoUH36ZDS0$|2INP{d}6wrYqH5bsCH(#|yWLoAA*afWUqt9)RT1q|M;e=48|kJXVd}O`Q*T#!d*4<6vb_oNgG!LNLf`C>IkDu}Y(#kRs`9AZNqZG2 z<4BWi_RnwnR5E2Kt)95F#)5!hA3YpeDEh|Z*SlU~RZvR2|G7dbnZ^!8a*&yULeOw` z3SS8ZL%CjhyX@bafFpF~_c;&dfghpK^e$A6Cbh%n#Nji4z_hKaso~e-vYPLsH8NcU zXq5lr_=QB}ekWhq28f+nKQ$mda$K4!Bg5}k@LYMe6bCv$$Li73hu=2qMI$F!$OWjE zX7<>!cHS3Mg0GvBwbg8aft~9dk#_2rBo1HN1C*(GlJ7iLn$9Og$WqH1ulSUs^Zfaw za@`dmYvFmN`|t(1TpC@oPy;3CSn=)1unuc3+xa3Xc`ujccnHCmrj>@P^w9SkTv5 zM;?U~P14}GuLUN{qwBh2Xn#-PBk{FJF&sPhkv|o7HCqU^N`66;&8GXQC^9E+{5>^= zCN~d)s9Z05DuP&e`hlymTH=5sN=V-Uf;g79r-qM^x#lLX&IQv~YhwV$&(RLI__>lv zbA^~Hf;_Q7niKn1=qrmuH1??Y+Li28@mxqYI|7wcDMp1c)`sV%+skA%ACjl~x>n}0 zxF6JEjK|?#?h_X%6`Xv^*V|-IUsw zXEG$o*dMH)3M_5An0b8zYD?XWH^Me)2QGk$@-rS=RMLjX~L!t{=g`_q(x&N{T2 zd42I~@FcJ;{2g^4$7Na~Wx%9~XSMeO&2HzGQG{?cx;z-)?W#OI zxSBKe^t!0+OW(t#J)70hBho3h%=nGKF4Ig_2lbvb?-vLLCqv|8=#8PhbhUk|`Og6V zKLEfKHuOsaCpfB1gA3P(63iy~WVj^sQI+EJtBE4nJoo&Oi2$aUOdA27fU7-4PcFbU zIq=6%EWv+xAPgv{er)vNyguzn?D~`0TpBTdb@J`rl)ReIlA1PE$4|^GwG9u9y<<^yfokX2;y^_}GpuU6) zx0w9X+IB%ZYDf{{n~ZS5yfs(*>-Ust3~vOqTnh!Bz5+ z+^L(7KSn-0ru69x!zI?RZ~y2@S@D0wr-psP;lu z02{NqK|@-w14hD7S~Rac<@Xsyzqahp`qnt@L&)h7o+cz=)W8C=k_jhIY=MF04?vZs zY2lt$SkU91U^nT9zbLdrvDH*UTNuc1h+cpm9mzD@rdjah5j|&TS|Idb7|)d zJI{Z&&B274^VG$U3&xy_$|D66YZtEF>jm8)O11KCa+taOTtpjgC38J_C(!|woHZo{ zD^XDF*R=gFSECC~JH#^B!m3yBO6|o5-d7DMeUA#tLKuJcN1kacBIiGnh6w7N)lI+w z$A}RGIy(;?2Mu+gG^tFX-Zw~vn!Gnm!DtLh*SV8Cu@^gq7Uv6l_NS}kEJIZk0@*^X zke7^sUd7M|@-ZycBL@J&zeCiU;uIibf7T8jpS0C2PU>vbf|v8*0mFY15K%-aSs0KZ z)|sK1UHN5}WIjx^XH`iR7j3YJhitJ8NVd}T>$%sSf;|+tCXm#S1r7zFoW$OEm*}R4WRwuv>=zL<3r0dbJieC zbvK$mp|db`ZdHr$1w3C3X;){a=If7-0E?*HeF}#kb=nAg}Z)Q+5yCS4B=# zJASY@Gx#-DsFYfR!q><7KyO0JbBSkI+=T1lHTKEw#`OKr&5R>wS7xQ5IJ-S09bwhE zC<%MSZa^dNCs}t$OoNn{wIeI3yR^rJoV?%S&tlXS#~j^q2#A=t`rnC57LeB|4(9L| zBx_^U+?W}k#9zCNz#5Pxq!u7$epB8-M@)nfIpIV+v>oQwQ`cG}S{RSX*9==OQW{s1CxiUps)xTJ(l4vNs3}U1TmvZ%3|HC&#uyW{P_-_j2CTeixbnaey=+0*tC6Qe~q^Tm*F_`omIRsV3>qUwshbN#ru|Ak)*lD`RQ%QrmHnRanz3UTzVGy+Wl z{p=sz-!>_tT9tdG=XX&(t+=)7ji({2QYV){qX2SNc2cEnBWjX%f4I}tL+J$AjgXtAzN7kxv{dqVP-p?EJh zYsx*QI9J&-_teJi)jYrawh~8ySEq-yyOj<}n3XR0R@Z5)*-M$Ji%yz*@vWsTz=z-| z+_GC>?pJLkC+X7k$!=LG#>roC`y7BDPJP#StbiK?jcYQ!M*XqNQU_wr;%0G`kN3Jw zg^eG4MlT_XKs%L%(C7gZ*aZV7H!A|xR&;DWx_Ngq$CwCkY!|5kOR}0*x=R+tNphGt zH-t3P46QK__NV<($jNtX-yS+@V(NayO_F_8i+|z#$N9l1e=WrI^qd3EpMl>>StnqO z2EAOd=aBxLag3kMfZa8fV}Xl#)qK9yMfe8`3wsY8a;sc2-;0+-j$_&dg)(%n*qz)cMR>UqP96ZLc(LJje%qs!^yPPz zaX=Ei4MI#`G`l@to%~=P9s1C6LG3p#j~0RoFPmC5D+oQ9VJQx0S(QSFF&3!`pyOM%~8xl1!UC^#<@HVy}_$f8eXn2U~&_=Gnf@Ps9F;R6d ziJL$Ki3^RjjN>9qmY>f;+&;`uFWs_aL|SF=i#ro(lgVdKK9+e6ZP=lNEaciA`k6uI zU{_&qb&*?SYE(8`(AwZPE@)Al*0gn`+$VMhrGGiw1g)2St@0N5gvs}i*a$X=bx;w- zH#?^Ou2QV`FZB|f@>4{vzSUe=K71HubDs(Lme5HI3U=_eo4!$89z~zeXwGP2_Eid| z*85K#wF_iK^xe<~4;tE9s!i5)$3Cp`Zp{$;ebV=~k-?wn zwjOY@r|hZAT`;8vaSjrVzG$++moUfIHPtNJ=3qjqb=RrYjhE^(ThEp9qhheD1Q9aL z!t^mhD;7Zh0i~8+l<6>ExVo{HQ(VzNyfs@I%^ns+0|=7cm)W=9<{^8{l!>=k8Q?z* zU#$GAcFQ^3gkZVhHNj!ZVs#JDVYJ@>Q9P-MuiVX#Ff#XR9H-18W1Pw5bH2`vrB|d6?slXB`3Z|CSnG{G+7NXHEB$ zF@w6fY7Orss)wMt9Xs2Aj8%ocJe_|NeGr*SG64~kR!$zX=j|qw+0I%qORga!wwBAr znu;=K^B#KfvCn^*PJCrSRPVz%BYa{JZ`}eCU5fUQE4f9aH4>7_IiHXo^8Qw7dd{9D zmgzblYB82qr)L&s0T?BW|1hZ_QAK~L8GR&oBLlT$HcD8iaIs*5?+y>qsaA7Yv3Qj* zQmBF(FZmF|vHKYo8=h&|H=RzkC&B^>PkukyKNgt(w0{f_$I{lmi0d)FOx+0E-6UvL zkC>@FdXQAxjvZ54><^UAuIIpiUi21SRoE>*xkJQkgynP13I+n*Azu{Uf1r&t1ARCN zNO@#K2X9hHe_;VB0u>@x_U2~oleCzJ>&{Cj+2c`6aO(pUGh+vsHLf1+AofwbLl^T_ z(d5nJ6h7S-!}yIAGje5|7si3ca<$A!kXwi!8=@d$`KG96oqiNC`< z-2OhQA{A+1sFC27){oYY55bzvh!0JcV|<9+`Ca@sloZ$jU`a0S-3cZz9dIVSjOigJ zQLPW?n(Hh}@4W!Q`hmjN#g#BVM2tXk(Bw>d;1ZE}_((?DJtzY2HO7wpaYJTr zGevt4t@I|(3X;GQ4rvRpFUC5Q!IZh*r^r~%QVprw>POy4nUOoF1|w{i%`!1<{CgQ2 zfc5i)CdUhBb&LVc`xUm$&DuneCxqG?Kf6l^dF0up{S`jXs+7vt+0xK!RA3<3mB^|S z3A4E!9nYd55w=a4z zU_b4J-5^CyVYo{xH-&qXBu~$~qbYMQF#;n>Z8HDuxFkmm{$G{`b}N(!&$Glkf>?$v zwoAyh6%5h+DZu#ifrOyL?*E6;+Lsuqt@0j<754k*b2s43wuG^VK3Fw9x(fiCVdF~z8x4}bGxW28cga453k_2;Y1iprN<#-4*= z{}cG3fKcB17MfF^FIsplI1&_>uytvfNFXd`NQFK|C8Cr%+K(i3TojfOFzCM3VCQ}z ze1IVVDM)dYh@yE9Ov|&J6K)_xxdwLyjKspjvZ1plOhl7f0Hj~=Z6 zyMZi+6#o(K&B3dLWJ|Us%cP+!fV-$Bc`S|kwTppM;NI>`lQ81d5i$g!dvk1?FH4KZ zo3tuzfM8j3uKz)z(+90RwXx;cF3$*Gn1lmC=@68Pvdib02e0UlzQd zc!3ERyA(Sw$X$Q~c7p*-_0&wYpvcIEX_%5&T_Z~rcBUJN?bevR46ZObt7^$*tXePS zk7Bj;x^>~Kn<+YA$1-?l3WLZ-63vj+mvMITkl|iWeiEHP!(B%6S;js8_f{W0aK!K& z9l4MH4iC`C6e%Ezk@;BSd({ol%=L7Qq4uoG_URK$hMPCcq!~OPm>x*m$4WkVT!C+AGG^&lI_kGYFK)s-Oc?eG1FOTrk(f zttwN-8w@w=0h>n^{;S6amjUX(GXL*!MXfkZBAi4>8Oghdy5B^%O$RwDkzzRk=`?Xa z=P$v{uy{OTl%6&ol>?*>!^_jIqUX4Img76Z@TnLe6!;M5@J5RnT1Nb5x(Hc7g4}x} z-iFg0vONEV&OIrt226Dp>IT$ zrzx~eTh-lzv>};4uo`yCMXIp3H0`W5j~*aodf{duadRHI^fdFQ$FEVR+o3FFeObRx zr!#9f4?NED@cB0Cf<*)s25Qmr56DL9D9Uupvnu7X7A0?Ck*BLD_W2Z|~ zTcfWovegm6hZ@nP8?x(wBu$mA6LS3)iXguop0fDpW5av1{LnQiXtOhhy@E_kfi6bM z;xqhm-d4?0huHxW{$)(#E_Bd6WDy0tfPgd2jAZ;vr4lW<>U|o%><)o57ilb4a(mN| zQtNxdBC~Zf(yC}99Q<70OFsgZA6mbW6cm*eyp$-<-${*7`f4Y+g2{|?X`>8gj8zMn(TEF^WlUVIioS9^xMF9)O4$?*l= zmGW)SwQ~Zne-QGS!d!eIiv^|Y^TkGifYbU8U!C589XOT$pg>wX>X3@1 zPe=c6O=I5z6NT+wwS!P99Vp^(t=~UiPN`Nk(#Q-xj+FMTzmjnJLe6(Fqn=BH%o(az zo5JU{NvS;cary-qvWQQm+j=4wa@T2n z7E4<=OJ3K#PrIQ+LAS+1Q8>A}5*{Udq6ZtXlvu%@$O$Mnv;HT1njQ$eob;wI&S0}3 zhY03^8Dm=B(lQ7DJVdIqB+n6K({>>;6Z2k)u(v^~Ex{D>cRl38BbEq&4AFr;s9IgP zj$R->kvG$ZuyO2w!*`<6q`1BRIo<|I1D$hwPEeJqxjg_K6S%F=RiI-sy@$o-_))RO zjZ=>eob6sA1`3FY0`x1<1rL~;L>vK-umws%tjZGwcW70s_<;1ZoT9N0Lg8#zl*Ij< zk{N>yEo>{XCiQsD0{`j4PABLWbioPhEXVsKemNUz5UHkj%^Xh|VY7Zf5kMB3fK0N@ z?VKO_xY2fzr~LQEU`}vLy8`|v?{1$tsrmn=TNkFMgSfhC-IL)zA|&;EqnqXq>!QxF zmbhp@tIQx7Q&Ii191N*%5KTW3JG9&lKuLVUf8K>qrahy6bI-uR@v_`IT;~1B4_YHS z7EP6PDZOwB&}0zor9`Nrr(0()oX!n_S-YL$tsY0-bk&XsQT)l$h*@qu$unb+S45JW2w?k4Q58Gp`@;tRxvT4 zH42d5gH}SNK1I9Cz7duNj0p_9gEP#5_nl{Ukuse!3lwC*F4tV$;v45=+xLR{M7$Y? z(ubB%G>`54p{(^kO!US~tMX<;f_FHo`t+HA$Ej-!=0lQoR*NvT#w?u9v;8>%vZSa0 zE?Xz=7U7veKm@$a0N~|zP66FKbnY9Ddwh$Tm12kPNwx01Lr5oWfKtb7OVrbpOR9%U zOM5N9fc37kgcT!AgaG}&)WVixYAWOkp@{rzNE)T3FccIcaNG6h0sb?$mpGj4d`tw? zF>9v-5UE3VnF}i*YU%f`V<}vel@oL;_0jMhI+Zm-ka>NMv^KqR%P0-e15Nd6dhzWL zgP+g@<8i|Y=x@q7rw5ltZrsu;kOVW_CNlpKZ4D|RmjZUA9$H;I4v)K3{9PJNE9R(C zW2Ui({=Eu_Vck;Ri|dnZ_$p-L5pSo={p=BDQ6O9EE!YWBU!mwi1TP&sDyP4TjpJv! zvCBTKNE_yXD$T20JN+ALhP`!nF|6AROME6N0cC+hKd&TN2_O^khd?@az3F|LU*t!5 z+HfsUZ#R4j2cSNO&Hw=kWbocjHbs7hOKt3T#ca?hZ`xB>rvagTuNVw$C~foW3`+0Y zNY!ZjmJD^h6G)PJ0~6T+r;&kkcyvM_EVWg!0@S>d63hc0AHkRHLl+4UrTd47a0 z+_)IvV#a+mFmE|Xgitc_L-Sd~C)M1^MYnCtgX-nvL9-{XQ_6 zz%Pr^W}*^5U^Shu9eurNxlCTP@GFjxQy5r!tohay?4bgX2C29J^OJT;i@4&%kI$Z9x2_ym ztPl{jVrub$yK0}7Y}P(3I>S~MBwfoGKe7%+<_DK%nG z)N2N9-DeL-ztZp4p}){G_4#Wf_TFFz61*7#@`#;kQ%^Ta!{04;67*5nOl%zdE@oUJ zG(SZR3edT13p2*@tdmlKGPoGzieI~Bm)^=KE(z=x1^Jb>iX-XW30Y1FCE!f)}gN3fT`_nZF#oDIEug^N!_m55+5O)A#;5@SY+Da$xe1b4=PYe5oD2HBGx~ z^`gh%D|4v4k6gS=?Lfw|ZJ3b$aJ%`i38M_2&O`XrSSAPjTX6q`<39gIXp(TUebwI+ zJoJTE>JLYM!q3urbxi|Iru(Z6y;QGE(Wys0s^t?>`OIME_XY;RPc|vEri^M#ON`Mw z7%PFP=;p_eL6o)qXLx;|Kx#RYt%rh4TID9Xvm22bcZl)%&O;G&7kzDparXz{ihxA& zthm$0wsrsv)6ENXgr(i(8VH80?V6(@s8wNXqS`RnF=8b zF;~lsNsS`^@=+z9fOJY8Q*`Bm(Rb`W|0Y(tT9|BwM-s9Cn(mIsep@6wKB?WZQx}c? zV)rVMCCWHy&<usZA%yQ1f9vQ0^+B zq?nW^akq1z=y9F5JgK~>##!lMlp^W9>nB!$?(2*T6>(&rxK>~qEn*8f~rk1#ZaEp^}Oq=haZoK?bVLb3*S&xq1 z9C764+~W-b4YYJAAsq+S{8c$FKE+ZQxySzdx-rJt-j*yW;y$F0cpnd7=ms^a=}^t! ztDx;@hDj!AwJddkAkd=oPMdh84H^y1lT4JU3>?Xr#zi*^w#lu}sOPMoFh{jLiojKe z&Mol@f|1{Pc#(n%&boxV=6mT4PrXq1k)@h>P@=A>uzFqysSs22oUYvwb{mhzYH8-d z;&+LXqBgp;e{g^b9G)^nuXU{h_|I^6f9{3*KSs`>Tym+CAjGiqsL4A-2`rcc<;MyN zn|*;eqOVINiB0BCMNr6!TvYB(R1#$aT1F^5;Z}pID~eYoo&%`OQ3!!e&Bq+(?57$weZh{h3=y#Y+7g=YE7Q zim#pdD@L8fiii51CJFj6LBXOFl=Woh?OUNx@{@tWb<|=H)a{>ECqFCe5SoFgd01ys zzaN1pyq}3OF6_YJ`-Q(Ed5wF&5QLV^mIk}mxIg8 ze0&`YuyltT{&qDgwyfY}hk#>)MLBth=w0`vrhx2?nQ)|*G2EWDYRiVSqDntiisKCR zyLj@2H>u>RDo{Kmi*OD3SwzY{t7advBaQzblsV>?cI|&Z@opIURoTnj0d5E$V~ga%K%wxS$y#CO1%&$CUJ( z8XOkG9)JtC&@7_RcL!Lw*t#LYgrE-QkN8aHaOwt*BMvMICgJ(6(}y4UuUz6+2j|!4 ztN>GcL(qTB>?j72z(VoMoegZI2PoL>vY!YDlI+wQGmy4j>t)?|*Yxk3@p;dfdRUwh z!pa^RzXIl57C58vpiU6w@RJ4I5x`o8VnP(Nf~S=z;8JVoA)1dfum_)AT48s1#qbI- zjGe}JM|*ErcGuR!=2sbWJ_Y$jS!_687FA1E@xHDb*lg1$`SpGHbwb;&-LaESBA=2> zrOsMu%(sKmQBZI7?S=}Q#8;y{;?M-{qE_uc`#)#ByP=Y@8A6`ePSuZ9#cVf)9F3ID z@HfhBJ`NpZfjlt{F2fN$-^9)FZ*1RP3Jw1SYlRfKFpPd55=Im8&TTG$&`sRSV)oaU zV0#R4luVH1z0K;S=SdPvqs#{)4S`!oPrxx3Yf1~bdBS19OF#;gBc&gTyE8!0o|(DL zGsO$^HQ@IEA#YXyCCq!}dVc=Q!~-mP>YaAM<&QDC;$7J-`Ba5^`rUYY{|KF(n>k{a zF%hh*jgC~Tt!ch!_8UDQ0e)@QlmH@&ZdKOqSf5;(4t8MR+F?Zt{INm`e0Y0$cr)Z^ zfhBaD?=L$#RpO8e zu@-wca+fPIh1HLIQHjqQbE*-+^yV)z`E`?oVjfu(FhV_`#MP6iP)bXL1=3lgv9;}d z4e8DWX7UNuxL_T?1oN8ia`}u4&WuemNn8~57FHO*g3$K|hGB}~%*+I#+QHhuC*f=I zk@_8c+VY(rDxWMbWq=ua(H;DRPv-6zH!vgiUMj#rHV@SC_33Py5PIBQNh_!+Coe2V zt=!D8Ael7x&ry?Xxh}5(zfxtU8tcq1UhEa<5a^|uU{f!ZOuah~gvLhzyB|8ksO+P*hqsHKX1iE&1f>cWn-n1B`H_@2Vg_rhcuE|B2FI z%sNA@5Ecm^h3*Ku@ujylDdZ@?Ag_ICk{W2Zs z0PN*w?^W_p0P7xw8qW~u&n^z>_p}S%kVC)jtD}r;bC?v*)`TKVFx{|Msk|AC(vQQo zJOJk{k*o}!#7A-BS<64#Mq`|iU+>dFht143F6T6pTA3?HR{@Mm$al2NN6k;;+LTc(yX~S zi*m*6dOw9Khz{;5O`UN&)|s^z%2|F<1wn(-xnu<%6igF*892F)yBAmQVJt{OaxXlc z=~(>Un=W&@tX8Qz@%0N=L{Od!(f!c@6x8|9BqH3S2|*UoRXj6_X%9v6Tbq?N_(g7D$TQ8BZUj!(*cI(xH7^cjmKpC62e99hTLuNWb`_J!wJPcS1G zkOrs|P=>}S8#v8d-wTrEqp$u*cHyCuqLl4ZIXUkqXCRXWX7`vhdvG7pOCC_FtT*m6 zi)I|OIAnY#T|SD~Hxf(9lBJN2RF4;TMMfthYCCGRyr_Pi7v)~2O!TIVn^CN8HC6MM z(9g5b`Df1)NiYfLStTiZWw4!R!bMI9{ul)IU8_SsDqMmjjHk(^TaV*6jP{6WSvv7> zT5@OcvxPNJP~)GobMie)S}1CL+O=3LG?wQ+#nlu_%VH{K_4IBbW8z+*CTbX=mj+Cw z&i^mjx1ABaQ>?&m&a4hvB)A-N275FovJU2Ff(-ZvUG z6zcZ=?*#-1Dt0X&KV}V%#}!_0Dx)LxM_ctYUJf4i&oblccI^hlF5^?P8g}Oj#hlL9 zdHzlDI9Up8M^Q1dZ?%z|D5S3MfrtwMhF4CV;_YxEh>kvWdFPiC4?O*9j>i(f`^}-; zMY&8{>-$g21fc+|HdI0)9;Z^2@dv0D-~piRDjwS(tgM6G9SouQGA=qlvux@RXbe2( zQFiz{`tM^s03&iC48LdcOns*AqMw$hq|%ksnp9^nh-KfiQ^|e|i;vHeTOabt*MFEp zVT5aAr3~a87hgf}V{g!KE2zVUGe8I*3oQCD2?Y~)P*qhg^C)y%_R5_tcBpu@a2uHN zIwDz@#MeCWkl_dw@16pRJyGGKW$5q&YUnHaf|Mx(DR6mAAPl6P7kjhxOp@_61))#w zn*m1DXFd>Vx>H1Ht-KoSeyz|?M>iprSv_c8pSE3Z%ic#;e`72F0O;*9%0$H(5YAB_ z!)=!AA$9vw9r35NVfHy~+V?kj;3!wWk*b)JqDdF)Yxto5__>P)ljtXwV%+{dmL+r9N^&zdN#k_|9J?w|O zVKtf5Kd3G5;hO)Js_%5~ZOmx(U*;QO(Zh$`T_Z8v2&WIp7UlNPy(18$Qhq@%;t97s zN!2K@08`*Ab}6`SgRE`_X?vE)@%V^uiVRa%_^flh78PnI6Hw7&0=oE&Bg;bQrdT-? z5WB3;Lrb$wrM-jkRb4r)M-IpCQxJQ|6B$K<={wC)PmrpYH$_GeJOb^|Nbp z25tjP4s?1}erhu1M1nS)CPcLZH%K0)e(3S>0So{vIurZWXMLyJ)d?H7if2`{%87Db zMTya=d)drK0=g`0#EHon>Q)4hDUEKVd?pcpgAHQ6O#bG^a54XXcPUG|hupap8{Q8a z%ko>k#!?o!%B{bBW(fSk18kQL#s%7r1Pht6J+u})?`PWe69^i1poqK?PD$16+X9xl zkyAig$I%4P)F3vNq>7$jV+oue48`KV%20Y*vzX6IC2{n(c)@YrV>tGTcv!z+cqm(- zdQJ#3Kg>qrN?B+HX-4M&5DCgucIM{hd1iEkushNM8lhRjC5@PD%hkOeE+tquNR48j z;zXHaR*D4y{cM9XKcjC)>6?%n^oAut0phu;kGjkYK=E4iEu=f(WS;TqLB|hn4~BNpT_2Z&T~z|8LzUI5XO8C)Ew;m5FOrVhao}+EGGg37$19Pw zcZBAh`xDUClQWgRp!-<|l@rivj+tQ0M2=6W?5kvrJ_hEV*LA+XM5T`8^G?wkYz)$N z4@(pHE3?hnpkF*8_KO9{kOeb`U)dSCvu*9LndC$0x!Q|M#_>5umKw$G>)u@u;Q;vZzIlUQL>6S}IgL@h`KJUa`Z??IIh=&I_ z+4e)vKaa-BdG2bO9~S}x1Uu=KN}kU>Au-X~QF)H0=L;lTI;b6hJigJ6EI6~p-wGz8 zWsH={ionpg}R4n~J$(eq4T{mZ$fe z!L8Ik;X=0B`x00##4esu`#r)6+obo*w)VRMBl&qQ zL4H*NUakr8p%5~Pw_I@~VMsUmC{YE{M^t9#WQ9wcfAt0;ke%mF%xk79L%^x_IsV>p@an9#!nNGDwWHt%BO&e)t@gS_En zbW`izF}fwsj>hvpW8NmeC>I%ajB0K13kiLK4%{Aj7Cgul6VES?)MvUc`#Yh~Aekqu zz20pLd91K@SNeoIbezZ&x~@kF{Nck{=5aGYQYTkS1pkfTzq4lt*8ZN^_jRfM!=Qel zI|DndMYv3+|1w}$d+Ka-nr1t>QqQcsVKa;zKKYpd9wHq^hYPcs zWj7RpSXwqqDPX8>{o6hL=|>;x%L!V3=+59`S8p;DD7H{5^%qe~rG`QVKmCs;mV9L{ zTlzetldL(L3ZfY`eQv zUD6~hm9<*#-KnS=Hod{wc7!zkY1o_~a%4o7@zWgg9i6L}FZ5K~8>@d-{b9OqZg4y7 zDq(Fk^5A`eGLedLAGwYD?;fjuhH&2{qlzGQdUAxtIU>$FlQ#JQgz2b$p?TAW-bz4g zesJdQfq4#JWqV^<{i5a{Y_huV+cMYR%GJNh&pe^(2QG9~h{$x-UE zf~0-4dJg>L2pLdOu>(svHXr}QMOpmLi37HtfBgA3?cK8IInEurekYYC{rc0pz!+rp zJmK;O9;z$HG*Hi2%t?f7c3BV3<)-B_bHQUTO=s;WlAna_(uKguywMW30S)&VJPstxH0Vp)v`y_fZ(hNzqjA&#%E6ZKs_N$b> zbL*DiMg82+8rqt{=SrD*9IQy|4C{VR{cIST?=S&}mYyMW`GYK!vR6od+;v2f`E9I} zfZ=t3ju~i?EOTB=xwXS=(n++0KD@pqQLqkIf@NHtgn!ji*zHN_CBRI#`|Ep|-jIVG zS4y)Ffeq<1|DzYRYari|OVp+srq@x_8gx`l_C`2mn1X~!bhGD(NAMvPmpI0>=#ieG z6d_}^tB*lzqqWQ1sBUVRNN&iz>SEK8sI{a2G8703MGVnrOdvaT#lBMOAr2@?^S7H*%NioA%eh&(|G2>j9SYElO9cP_5qVg!inA8moiQN!u!r z`|Gz5)27u2RNznZrJB)SgWi$hZ(HRAQc=*oa&i^F9{UYn%lckN^8dd+DG?CY89L8gPA-NywkG z-4_XNzRGbrQtX72NMdB_j1mqrh@XgkPS)xw*cHGT18Ar*hHeUQJk1@BrLbO_NGwG> zR?rWY%d}S(Z(jb)k0NMXR%Bk(SX{g@er?%^Iuy1wdTn4qfCHR*e~ZKm2(6iMe(0XH zXrPq_CX2#{Py|7}6?_uF^c3bkA0RAcICxe-UbQv6)i%jKah_vweo+GBWysS);ED z;Tj(I5h2#DXZ`i0c|{uW@rep@lj7!7iS7$}`13Qub4r5l$3JZT24-r8CoABAfL|$V zETScIGRN{P3}f~7oPW`uNpx&%Q+2OzyN~D!VuJuTF0kd?iK<0G&}|;{dDOcs%pA=}g@sq5S%nu8m1 zCamb!Cv#dr*eBpzJ%scB${?7Rr8^f!ZpA1Qe6PCd*9z*ajvxtoJxB1x1s9yS$>(kz z915P-)O%u15<&c(A)1cHWd=iMCbP25Sq8h-vH^OFF>2L#Ca%+)Mq{d3kDW+BzT9#n z0#x;nuLa9Q!KO>!XKA}OECR5kK5kYFuL?;u%USR}E&)@0^fEOYFS#P%lTP^JdG#2R z6U5K22dKM2*}Y3UX$q2uUPMtZ8k~*c=#yg?R^E_P;*`V4ma+7|8IXdoq;GeS`U=$> zt!8^Vz+LPzTPaFqTTan|KcuGRBo;OxW8Ifti-qR;suP+H!LT|z|?gR^r$M> zTW+gB(H|9%=6ns4eNtbw5=BzkWEesB2U%yY(f;+x_Hb4EmQ-;0>cT;npj zU>@M4QU<1VyS||joWyt}Qkr%P&-Ej$Xjw^X4uu+RyQ-f7Y!zO8Z1YE{$FbI>?DpK; zHL$Hc)mJi$b*S&jx*UWkeP*XFZWpXmbs+O5y3tEm*K|DYFl~gH)ZfN2t_W*DfQ^S2 z_lohH&*3g_j!p*KN=ZrLKBo0&gAf=(*H3Wde*Jg1Zfe3B|$@JCc+r9}!l82phw zCzFPU5@}HI-j*7d$NODSWzF0E;7t(ZM|mSVp@BDixAv2zAv=7yWNC+~H3#y4pj3FeW|Yz_fqAW4?V^e7O8OTl zh_?P~0r#qg|Jv7)PTs*1lA4haIG?H^J)Hs40p|b_kCS@L3dZ;>|St zoFw%PsN`5W7`AN>do`i7caFizX_q=@B-FIX#A#;A`lD5ym`oOv2kTy3O~oX!%uW7? zpSF@MMZL>My>y`&lDs}>pv?}x4%sN+7m9e~jmoDL1B9Jvf4V~Hu2MkrrHC|f3_IBt zdotgNyQ~C1vtzpRtJ9N;A{h-f01u`PPK{{K{4h9eel~!hB_k}!W0?z=Z#=Fy#C_G_ z?u6mT<}Y>n`yTN(qGEa7(w}kM&?YJH5VdY01?|Rpxws%A_KbXRhJWUbYHTQyX9Cer z;&jASa1u?pOsvelV%UeZJ~NV=W?GfYRUwyVo;~1F-da*o1j5SsZ+hHgH|5F|&n%Ek zG!zeC8+lTMK}K>_I{3b&-v8UZBBo(zR2h7cj$5s}Iu(BGXoaKPlqoxPTFb_3noN#} z06PlDA4pox$Xh*WVLQ+fei48Hc?^mev8UgML+E z0%)-iQ3+2bUIrBO_=(*fhCf+RDLcT+5}&7mUtRt0MoQ%0pQ=!$6$&loW#zRN4fqjh zrs{L0S0ZCnju0SksK2_^If@LYhjBv5N@*Qs#MIHh^T}5R+q-oXHawVFzfC1{1$Q@} zd^3r#9R|@1|CNj}ll?8^A9sor{FFADP*%P?SYdx^Oh6@Wjbgot_WdGhlg|a2cb0O^ zQo}I#G4J7QRXuhX|2lcb*|nseS@q0k5kEq19^lwp{F5*tRpd4Em*HPbU;xD9bK>RMQkh5BmF#K%#O9y|XJ$6f?BforhjbYVH z+L(+j+F4lUj-Y(9PcxMhqN)pFDoj&*4L0|a%_dpdp~%2(^t$IPJ4eI1*!2s-`=N$^ zV9r(IfaVM<`g=WueW-enCOy0rvXVv zj1tIll)G%UYHT|wZU8#K$XBRCWMHsf-BlaT!3A&cx$0`p5e_KF5~DQ782 zbROu!>1l?oE40Hq(OPLh3`9J)im_V&**eQ94K zuC?oGA`TQV0r=7vrH8SWiKer^+YflUz>yk0!r8XV#jv0q@UHUYoow+RGs94UtyXKI zs!~nqQP>dDW~nRNG@-HGB7|ocvI%h0_*MUxLo+asq@NAJzjQJ4&d#vyS@E~r)%yer zlI+Twpu4G`CfUx%SA}jy{j-ta_Xvw|Hlsd39PoM>HY4azfvfyRw!+QINIjDsU{v)Q zeJ79KI|FVj#uF)QTW;}1%qJt3GoP@;vNeI%my$a+7yx#)+JImIC0M9Qu0Zi6ve%^U zavGeE_j~~VKLEfOl)X?poMV8Piq;O ztBVL(LS@&he_UB#JXR^7wqyRCNTvlhsBVhE7;jx=m7OH|s_PfkNYR_~SQ#EZ)l9j< z5X9`8vl3huDsJ1IQ4`nB*ycfg<_^Dq!wNu~RR#rr%aNOu2839Jgz#T527Mk!)0-Jd zV{;4cp60&*Y2Dp{E21i=CAm-q*PccD z4Cey-{VFZ5Vy4(eAVbqAkE8!%Y9;A=f;kyn58LYdv*OQc0UY2q)!A<{{vYzE~uQOP-6gk$-_~SzGv&0u>Tr<;woJ)z;Q@-!tfIW1wLL9=?-j?v{t?$`5Ciw z(M!17vV-TQCWjrUodr^=?!gM2Wb(cghQ86OonX#nbcwuS5U)(u&z(Pl0WiteTcM+* zUdNq0?h|r${DY<2nrJrXFf`!|^j0Dtg0Wf;32_jKmuq%JrAjd}U=SzKPwhUijSIMd z%LVV#?xBZDyy82{O}-w*yS3@0)4o25nlS5chd0*Psqkjp#d_LZ7?UwXT{$mK5AlNmYG=1Ylw!q;B@ocfMw^4W{e@&{%3SM}hnI!j{1rD}2HRQBF7 zy{f~IX#av%FOA;;`_xHENJK`Zf|c7S23F|O1)g=@VT@@zrTzCoSd-d`)8uh?`Uxyr zp%1D7l=GFIOdQ=%CUuTk(%AYipns6K`B*kRi1OmMG`21@dLX{6X-RW{-s6xLq zLMeShsg?nW>5+w=PCBBE?Pa+)iQG^+lqnR)8t)ky05OO<^!E6Z-2kEs_gHl$%L$EWTg2X=6;1Yj-fQ93 zcLJr43R;QFRbts#{JETty@|uNGXnY%dA_)sdHD>jHC$B`Ob8+DY$?e*;A5sRb&kmGp7+(AUkZzdL$2Q=9m&2@cjWXmF{>GNeA*Ib>51Kw zltVp+4=p3cUphL``nY7e&AUrE13Nx^eM--vrD!YBB#{9ajS|fUw^-O+p(1j}KkT3A z4bM>|44Qk(28pFo@4!|hY(G@($z0>kf|GBRYDx`xmcsb!vdc5%eHGsxC6BHt+Fy4} zz-!x#cyjlk=7XovW<*u*wSYr8SOHLJ_dIIB(cSd!^~!OcoZX8f1wOjL|7n)MC)$oe z8vbHx$)3dF^ES_3V8mf``}_Ieag{`2`iMdwzB5$y|8e4zyn;vP8{iP+G*af#XwAV#qkI>s@fbeM>&9=VjWj>*5lKYgz5@s=2?(=c0MdPja7GkS*a|hE( z3qB9>%*y5h6LFnKNJAPE!}0=+MUMy*XWuD6M*TyKZ{=3a(=(zrmG)`j6yk%sZG~IX zJ1-8?RRThDZBc8}@civ-y|op+v0(c#G6a`pnMSNaY=PgY_fHjMq~n`QdjE!S&19_Q z#|Fm2b47*|qeEq*ZMT zgfw*(b4qW7F(Z=DV8@aV@+oHA1M6444HHJRC<`r9E;2M$5fur{sRtmK<`K(*?Ur)_ zTdd5$j0n0CPclyfRpb9+K7wKyeUR#c6d}Wmev|MfBXOMIkO0ly6F9$n@N);OF>xmz z>6$}b6Z%DB$;afY+fUnJ<)M2q(^fJ&7V1&*ikyloyo*2!6eJaOC z6M?ExD8@CSrOe`pr(QLOL3Om`%F|{2N}wF!B}F!P<>!r8wXjA|fjQJz{_Wz!k}G+Q z1m{XFPzlKFrj$OK3RU_9yL!LSoC9Y?r~a@=VsrHw&cop92*~Gw~&;W zg)T85|KJ-o{MZ&C*iKRmNu0ru#3!1L3`k>@Z38&fF-Bn(>DIy%YqiB4HyLXVVkE4UkRrf9-n^D*|Aq9k!nzHIyrhXB8hY}ug&RDUHH zOoopeR?GFY!=(=IQ2e=S$Ca-BK2h!Os`Q82sj#~1FIFv%$3<;b?xLSPATVmsa{l^I zOAkJpmzPk#zya^soeXRK^132wzj^6v4b1O2hC3o2+^!Dp*oB$MPH$bEhu?P@e69)j zn#M>IBk8hcBtrGrY7i$@e{|b0W=1w*qdbjq=a&|T4m7WDP6tj}>nFRB^O{dsibQdz zqcSfCJ>)0-PT)D2q6K$W=1T;p?_Wt%UGCdIZb>1yP`ym%*DFt}Tp^b5nDJSUTjb6Ub zaN!E)Hup-6KPNOHyJ?r`Jh8O%OHTth5ef>!{Jw2Lga0TcIPT{UK2gz$ zHLwJN+PA9>U1UadE@j&U@))+CS4Lj@*H>c+RoKQ`fSWpIx4NQwyqk-X)+uyUF0*|g ztahT8^!u5LGhc?~-aD#c&&xEj1nryjv9xlC%K@0MM;Fdp+;25l=HO`Gfd zzkqR36EK^=m|oWGOtzaOvM9xcgE=Kf?x33}vTDqs-m$OCP_STds=)(=s9A8dsFXkS zVEBL(1s;mYZVt@ewcM^Q&YMZY&y#yw=&S4%abGCVtrOFGK z8vF|Dlvr$`W2g*<1t}wPsdHaOpbfn*>;L<+nOkd`y;C#Tz^DrXD2+iIl=^OxL&;2r;8JDO0c)~ zl^+e6KVa(73Xf@_yYYMn=TLRu?- z897w1cv-j~^u}J*iZ98pc+{oIBxdv%tl{B5n)GgmnMc)v>S`jrFE=zm>)0>$`>!|4 zn5H(th^c4p0cHSze2gRxFY<}_N53U<&J%%w!ID)g!!-V{Rbw%KGUqP`qPUt|LO1pK z>mw&$+Fq4xwA%wYTTAP;vocj}T=_qs;JY1O=K(eV%$1VOk=wy`Kr)>9N~i}2paX+# z7%|t!ZG4cyeWtb-b7I9sh~%KyZsYAxF*=$Jt4J<`2`wwZtwzWySrao4In!qK1I)AxK9U1h;6$H zlxt&4NM%q{FMwCuov2$)5pGJ|L;mkOPAedMai!Jeq+L?tm)Z$GgQf1byjI^t!KSZhfXe_MP*3@zc-ygJUx+bhcPj1{)>m(U_@8 zu_Uc~*d`-Xi24j>Ydxxy#1Nhn$#`nhf#$>#_VF;cuqlwK)m zZg5=k;f6p`Q(E%8abazc?D1hHQhlUpB0&n+*=4VjbowXJ9!Mfg7LkI)v;VHw63S}3 z3Yj4+E#sGYnvVq*-uQFr}~p-!b^vPbRYRV7+^}Y zdYh$^r`c5AKh6*+o#jGg+k){;=TWp6j9DfIuA@k>H5UV4*!rx65vUKvm(oH+40ZL< zI9}$A#>`sq(QI_}a3ayxQWB_j`=8=Uw%dtcrPBhUd_+iA>;-#!?e2qexh5?#pi`n9 zZospSaNcwK2)6iv_g~dwgs%s0E)G>GWa(v(9EAJY`iWq+3;QBkW*Er{&tq)*i5EgO zZ)jnbUUq&%ez(8d)UG%+j}11F9hyb)#=75Vdeg%e%+NesEz$Tc<1l-v~lPom96BH;g_z^_E6G0J#31a zPO)gUyKM`xJcCtd2x=0nay@s)QC}6ewxFbPsxC~9QBMavI3)};OC|y?ma`+xsWy=hF5r@k48U@aE>KYx0xg*^a6zD z>6iyJ)WEU`&9N5M&u80S?za((+>p=8G&wP+$znTn5s?kQ(~E)x&h6MtJzm_7IDOT0I3VbSTA4s=-%>Bjrq$vt*uV294tvFwXlA_yfMUC zdb89C2>d&#>|?JHA4xpBU`4bx{6tF%G6IMF8ct>7AqHOuYr02Y#=?!!|5ItJuA} z@|`0P^9(LB%YhEzUAfc$%w7|Sg#lk8zbKTi0+y`45ez$p#sYDg1>eyB%Y;MjdR&ld zl6hihT2N5gSOj%$2j+(1y$-q4YAIOYcsf9gN>Z_-Dbur}K;r-He>Vh^Xl1U==Xw=R zfPeds;nGAioBsnH%Jrq^cOCCAt6gSs8mN$ z^nqSPiAg*0?c!tWDNpfZ*%j9;*#SdzLompRYa7^a7R7CCIDPeU6;lwyBi*wsh?|Oc zr&K@O_l$t~XTQx3}!=@&Gy%3TeQo z{YFHEX0xW~rAVK5tAsD<`b=4Q#zh-x(BBO5^=9E4zu&P3Lq?>XUvK}*AW9Ab1BA;-&$1ONTm zh1o*|UYH20Fr)BGvB)L7ut!Q0VJBUuY1>Xpwed@O~?Y+KTb5gI=Pm6MJe&Q|1Un%bVDv7~gY;~CK8n`3 zOD8@X=qPZv|31y%?f2Li)zn&jm)VWY8Spi#-^RF#umNa6S-N2Ve_u+l}_ zY+w+sBIh28<CE_dvDJ%lB7X(J9*kk-C0|Ub|4jvrCMt+wfV~AjKNokwD9)N z_GH4+CocR$G)9sx6lbF~N4&qpUxAcwkM~6jwUY(RYCauOtuZ0Zo92f3bl`;4ssZ!E zs&>FHFs%uAV^fHGJzc&7FG*z_rwEW7l~K6@W-0h}O5>n}6|lOAAmc`(4#q2RQtmE^ zx@5wPNqKTM^FWNf`#s}@NVxVc>94a}-Z2;^xL%Z5_)4*94t^tzvxLoOM2K@*b=}CZ zbI(#HnBU-h3H`zOJir;0Ak96GIXL83<(<`TIvLH3>HrKg#1j^uT3QP5T(=hl->QfiepW^SEK)sE98;9aFKI5BakRf3)Q=(WVGy*s2p~BRff&EMun)NwR-b z;@SAs`Mg|u^OEK$+5NKeF`F$)FZ-+h7#$|(f_*-KVi@o33`AWB&S}%4pTvKqcdeBG z&3yG=z$q26Qb^?Te9`+ZDcvLVvM$P8S$|Q8P2_Z~)p&d0*#Y&aHroRrGw4MP595uD zrkV3Z7Z65QyWiC9;K5U5#^}LeGHf3BSuw0mCz?lRu!T+Mm8Hpuk11*Fx2cn=x~ih0 zp*%}#Co^IyrM{&=D_0b>@m&nZ0@Ck%G|I;7@*8D^SI4qL9R+yzb)=$OpQxEPOj!BL zseKwft&Ep8znu(fB4&QjqAZb3sIim&Yy?V?$mt5~%7|m0Vg4x*7)$Ye&rAaIK({$TGKVwZ zX-eddt}2Z;wey`@(ouD$ds9oK#-kk4*3H7PnQxMrP?bxZ76m6Del3+tSJ_E^V))LQ zK=Fa=aZ z=YZsO6zVsoRMk^u&0FG=uEHw11|Lg|aJ3a96e(55s8{K(NdX6Sc(Zz|%vpv%K4CTN z`yNN>zIigGb!ty# ziE7spFuDIYdlxFodvL8gn`*F5S8%7pA)qe4R${dD$psLn5`);9+?@YFsCcvBFrgLiyT~d?JTI*wRKIY1$K50bKWT z`qql%HU+|Pn84fX+>}7if;OZBe!eo%fzwg2d?{U;?{jSh za3qyw#W_JZ~{xbEb zWpelU9ItDXw{OewQaxd~<+IP`OfSkl=K>FVhNAhq~;k5)Qpp43Ms9WM*SHhGK{c zi*pV1kMlQUJU5xwBB>~IGA&H(58p2w`uDRyYu?H5IPJ9{-j!IKKdynDjmUSe{@Gu- zGT)dUsWXgMhIO9=$@ozpZ4^1(r`uUEdxgeVmfAF^Euh&kTpKm-j}_yIw`m=4vn4Qw z50F~`Cj9$)Ejh#&z2JEsFfozCtT&0R7#MBRF;AycPve#Z6TiX}2iOn#kJ;itx@v`W z%s|Pdm9E$;h1u}m5DKa|l#@b!@V2lhEJj@c*@gjR4I$MfXn5nIs>9WQ?(OqO;&eBV z8-%ot*##ZUrew&w-_6y4yCkF=DSj~lg?qGidF~Z?N*5Z#o~ilu!9-qn5P7ZMXr`3O zpplS|mRbl|l}G1~#gWX#dlsnhX;=Dy&5urotjtX57>z?f2r(#7y%4|?}2Z(j0mGXY2SAlFZL`2k@F@P0XRjW z5PPw4e|rZ&#S05e0cuL3I#AZgBu|Xpjb@Fc4TQE^2FL{J+h)vVVx1`JhdpeICL2y^r;+BND05A`XfFYFN6tP-wm(=`wFfqH^a@ zzX95x77)?5q2N<;%e^X~3ZP`XqC)?k2XBhElZgD}$0V)@F_+QlJdKbPcou-d@rkzZ zj)?QM;@oT!m!nTF(R=b;!M~g|WhS|c_^k6!w9j<`qxwfF1F64HvJyZQ9}KB)!pgd; zcd2GSvR}K%+k=ipq(_=pON@b)s=El89We&Z9OLRv&==sqSU4Gq(V*TBf@V?A^{bzl>u!kq_Q=^s^%(`N;E@fowWD`k)q& zj7>}R6s~lhz9a;hkP>7US!Q+*HN=c}^1~@4>s8i=?D~}~e4N9v&V+PPgsfct@pjq` zSgx1ndMx8wdU$Q%f*fml#hR~nTn!fk&w5(D0(+1620WwSb=b(OjwUQ6@m0yz=NJpB zS3Uoz^%(E9cJ!|L=th#e3`K6N{*{AU+FHeC0~51$MGwS35%7wlN)gEG;6Gt4R8?bG zo4~7@x)n!U-#9ol0!UW=Nm61#eX0w#JtS78uncYEoi;_arE>@OsEe$ZA!!KI?7bdC zw&|u9C}hza>l<4rXK9O{)~Pa3*p(lB@AUlt)_YNu)>i4BqD-uQ2G)8V6VP7NM!u+K=NHKsC^;|hUH4NDjT%F7++p9X&FsZ3E(HQ@N z(&wO_@0?24T8gtH)$YrRAjFcLU(P79u}9zxD`=@;IUl!;PunId+m!>8EE80h9t_Ru zNH_;Si0P9(U?T|m_d0BkU3bRKYPCfs{a3&)${dE`uQULaPpXVv&4?rFrXR*DlE2Kn zNNW?${-+HAclrMF{f8hSn@hpEEB<+2UF?bewc20a<;bayM_)7yi}A>RKyb@3Mw4wEnPM#t zeVcUmOUZ;N{-=OSzIFH4gT`&`?tONV0x1Us9$zL$v8jb!apT~^!Jrj$ROHI0!A^LY z2bZx|Wl6tatJO*Z)6>I&8r9eyE|zY| zw`FZHb5AmR&OZfT`R-H!5lv2fkd?08kX1 zBJu1x&GhInW2bP^5h+JlDX`pH?fVU8qf~p&2!2i~gC9~oAul3jqLa7l$_tZ)!YW6Y zb)5k*$2B~0%_8%LLu&8)hVRLC@9G#Bj?D)<=AR9 z$06U>XLWpS?c&t@Dge~`*!@xjUouE1QgwY()j>!i%8vCk8A>&&iOVqnkfFSFp z;ly^7hlllUQ3+^C0bT#9?&FSkZ#>W*i&ZSICs5LF1cx1Tn&lGsb=AmI_fUpK~v8!@Z|!X|1%$z_9zGTR&+ijLjrdzH9u+f68( zZVD73i+<3A1s~;$+T{RSn}YBqet_^7OI+}^H5lCoe_86vWD&^2*d_G%GE7CQe+EiP z*vis{B`~XZJQ$c;aoIF}DSomj*M_#cvsibEzn=r*S!% zHj*;FN3vBdvq*N3C@etd`m$>aAAgukw1isQDK?rbns3GFPXSzCMiF<#YOZnN0v+}d z;*@dxRr%=Z^`OY9X}36fL)~GDV25y>sDI@Eg8et%ap&zDhzYxz_Zy%zsK+Mz<43<6 zirX4hZ+YZD>Fg%F%lnfZyszB32!p?1)yr#GXa>#z7tmox9oG3P717|oo=F?S8bpt` zS3;lz{uVq;vPIpAS6RV#jTiF^n~Q{uP#1SH?P3F}EH*-mr6_-Q>rGKP)IEvUctXqD zGYhUwR->1HwZpR&y5Fe>cMIsm7@cY6e|i)%=Z)>1`!*(nnbNf*0h+g~#VZeblww+IkpXIm;~c^v{uE zxy$sO%?c+9HxHeiAQEj4h0-`MrVyFqMlrS%~y;E=f}U80Kg;Zer5nk^`2xT4?%EzuHr^E z`~21>c}XDmD7kkeDV@pBa-Ep65f5bafsv^lw8#3>V0~Q?m!h6+L|8OPMH~nUD&Z%i zE>3z2Vnqu)Nj`mPl>g?KmNzLJUKlm$1U3S2xn`-gwX=*aGiM2ep~nH~b-7m_#56WQ z*1Pvyrn9h!zA@HbPs8mki@#5Cq$hE`BYe+4bDXv;sr|V>6lT%g}mopRp-Vje^Oc9bd;PjYj` zSy+CS(hSHVwZh!%(e@G^1H_2w9pMY&j2W}&OX*sa)UH#$mCxZ-2l(O{Fzwu;$c`hm z`lu$PWq#T8tJx z&cSA#q}PLn06`~am}<5pVOw_sST2zEdqh##GKgr#px|=w7c!(4`$YUo<5Yp5K63YaGO(oWsR7An4?JF-)r)@zsfTIpIIm`@5%A zqFl&z)nh4~$lnlP&zXFJ1_0(DU`(UrMrFA!9@|NYu4(}8CDXNOe4!jp_Ay!jhS(s1+eT z!Y^P`pSU~mMULCA7A|DS__{aLQJUBbZ7b}PT4lOp?yvxb;@V@n zvv&G*+ep1Vu;u}{*$b7i``+t~xdHu@%fZ~Dtp5qs9|5S^7@N?z^QpDonlP&i9%m&@ zht+gj_oM>lZ!;7#Ut@P|nhr`|F?l_?QVOnazXQP6vCgu_Yr5>*5Gr-%p^RF(d;sT_ zW)olEcUIV>SjRl*PNCBYC4u(!R8PYRbY`uJN{AJI2a}=deP>dsJb^Z!WI6}6 zeZnLIZsB@lqQhhtleS<^xYKM|mJYctcE)T|5C}SxXifG*@1Ota3x6PxC{ex8T7XWT zIM(37xU-+AYfaPlQki3zH%BiyzCtR?arA6GKv*`2`l8(Fga;8#l6C0gTV*w0o$Vn7 z4yt=$F-XXC&y4E58>zbT;8lgsGFqYuXCk)KYJ0WKC<%q3keI|@{rVq*=rs1C@4n{e=Fg>K5bmr@qlKDV8kTOM zwr$c_Z9HZcDP+BZ`Vm7UP)8-eBVE~TadtoA8@0fBVX!+W%;#l3_m!2)!i-?*n9H#kaN{x!Au)9f;1U#OR`|-I)%jWff9pV}_E5Hq* zyK?Uab+Q~()#5n%|85h8A;A&3C|}-*pB*>q4;b5D8QmSFig#bQ14o!O&ix}4y%Ib? z{jnEq|E$8G3N-hm_^3FJJ;Y zCq|A(G`i+XQppFdJ;iz4Dh>NR39#)pN&+0a&===QAgLKu7mA5Db(mK($`57VSRXSY z%h_5bp$a^iR2timFpL6BUv>$R`}Kf3!hr<16We_d+?XO{O$v3VE+S2deQ-&>)sC}W z2NSGbX7!$csS8>z-vcw%&GhE7yhcInUK8zv|0LHOezCtYn3QBtSF-kq6~3x&V?!?r zVvaN!_6qR5FVqZwGI$?#08w)cHsg>QtQ<$JPX7_wb*reSzN?0)wgld*Z5HlEPesIZ zD3TCb*q-H0WXOk1czEf_a8GNJL)NZ|D~i2DX>KROfOb94QVEM;;WH*<9n{NiN%;rH zmO3%jNJ-}4@C|BKM=ElLkg2)W`}`~&>Eh@cv!e!qf>XuZ+)LmjR- ze;UvwhTs4_nup+}0M%z=7a~MnmPK10+4d^M)9?PPLTW;)V^x1iGgnAiv>*s&E5ZXc z`n~yYmYzlyh*kc^L6q1PAa&pjP!b%`uBFe&ITX@4Zx#lEy>JV$SRX*BO685=DT^>8 zbK(PNRb)?WfCij0>U!Z|R0&Fy;wR?T?wP5y4bZSxtM4n-zVX5F2?VVifgh?4XWvLu9LvQ^BnDT&vX0bOjFFdE(=B}M) ziJf>s6f+04;j5J6;GJoN&{Nlwxrbx>l^gFduYISLa%_UdRkX;kGHAq%N*?_cpJ4!vG+RRm*!@jmgO#FXYxQ1scfPs>+}qZ&aA}@@rUR+vlr~^K^(kx54Q- zeNU7!UGAf{h}i-vd$D1~2c+)fs47ixt3vU-ZUv;-~Ww`WjmtEZZmhsK4Qn zhpMBHS?06t)+BMg@hQh@Rvx^sRzXd<#NBFBJKG7JX=P^oKMD`*Yv{eS_{N_;WTS;+ z+CND>wY^3tS7T+aQi6)Z!(ZVdt(n$Uuyfq%(0XLnZ{9pM)o3-Q4RFJY^ZiJ@%y>Lv z3okm*mcUcup*WRSWM{lIM<*(|piA)!Z~etobxV>GN1^EzKQn%GW;khX-}hT%#p0)4 z$vZI{IQ4R6!6<6-g)t#wNE1wPCC3^ST9eA4ECxjRmQSP%_GzvJUaHLHm;iFEJ%H3G z%eqJGNP&oSHaSUD)_=n>j|6~C=ZHNy4}DL+k=(Akbz5T_JtLUO=~~kRD!S`QvDIQd zS*pagahUWrtt!5PA@xDhK2_gO#nbN;AHT{uUri-*78ecUjCl>0|E*NQK9;tznj#Tz z4nJ*<^r`aK>7V!=3^*~*3HAl!`lmAvryd2-ka!+Dw{!^lKCl6=_pN$}v!rx5Yyw|c zlO9N$(|T5XhaOkZwVWoRS=Q`-%O@VytcE4LNntp%3fDZppy|=7fLQNkfT&g8Ifxtw zhUflwTMOgQSQaHLNx5ByfZbn^ddr)!hYkhpsm;fzeg0Ftkkpnp&_gK~#lU#(}U|AWln6lb8l ziEWFCI=we5GB+E);Mlyh_hcfp^sLU$2@qbQ#_3p>V#0FjL9l?CFQ%HYFKUcE$4JTN zw@?M18bIPZogB|0DWN$V_e7T}e_%gXM((+j3Hrvs!sa!Mp9hO3D@^qM4JcQG*3+1z zdxfzxG~}FPPiG^ykk3y72*cFC}F3Ll((*LmoXTaARAnLzWy!pGp4(pZHbfFaLnpDyewnINT-9)=&ul@%U z#lW=R@nLi7r4!K7wSTSk!}IBqptpKT3%u{|UD)QB=(V7uUE5fr&=-QR^#CW~ZS;M^@$`EC;h}%Lt11?1OAz=*@YRCNa1>ov#%_!J^^8lkm3OHc1>KR+x z0P#gbDojB}FRdX`QMZ`HZo;G{W)82aMSJ>Ss#G)u)7s37x_K@+5#5E3|4wM}LXyO| z2M{{%APCKjSiWh;w8SJ^>NJqN+?zVwo2N(09}}14D66#-zhpw5*0(v0Eq@oj;VYVD5XO39{SSX~88$Cttk!B%RxbwrTWghnIe z1XIBVA_2>h0M1n^y!`@H&{4Ud3?TW<4zl00OPEAmu1v$a2Pr;{HYG*p$B2y8Caek? zCP(({qx7P|f3eovr!TzeqMT~IfIZ7F63ABNNfU5p>jiNeukOIQ!<(-qs|G?@=+juL zgfa2+Vy+@YN;nL0{G!}0KLuJjHM>!ggz?vrl~ z+||Fatl8SVghen_);c6Zu)tvL#eJ?VNNerVm(ByhR(phM)MWeniW zNxuAul&cGMTh9m3SVV_~NPC(X*1logY2#$H+dL#ruOHIQKLd7KPs14zaE3^*TQq|4 zk28zbvVg1g4eSY|ST$w=x%uEhgu=GKaW^)7Q&AL>)9rb0v&G=r`UP+{us&i&?9R&c z6LhggH0d;G=-Aex#(dy9NA%gazp8QjkjF7l?udJGQh(@6hP_^K&fd&$F|7CLE z3(`|_6(HPgC0O0bX6hq2`9hlkX>k2~PIbF`-vU_ii2E!U4x1*2jKH}{>2JP)Yg^TG z*qSSYYR}0T?{hX2@p=~F2mHHP*V}H6=_x1swR6UkbN-@NWg_~z;XpnV{k(+5MO5*4 zTHE$V9-Ehr#42l(ZjT8c;q&j%bBpI-C>}{2K354&ow5XTRm~;#SKX|xNG2(qky`A+ z^|ZNYu)=8`&wt@_v;DD=cqKH5`+fqks`R@ZaUUry-wSR$N-2__*Du!wCJ!u=cIDgf z&o=e2T%_t*4K;!T2JV*#nAla3WoEp5%}>E<@;QXDP+`45r>ym-Eajj=pIis_@VpK| za|EsQXz@PD+b0g`I(aAW@ir^!MXaZ+l;06aUY}iLDv@PDOYdB+BvPWnonn=VH+~bn zlEnSYRadg5q`mFe14&R}k(S;l*wo6rFlPf$gH8Q|w_eiZgyYl-x<2M#p`UY6Ss(s# z&uGTTnmqkHm-wMfTkbes)l{Rbc9)=*#n+zLcE>M;6}bE*kOZ-&A=VR-Nl$%ZDZ`R^ z#6?E8E-u^17Lf0vz3tY2)`s{&BTkv~d%G=Qi5zNmUETk!^BE({WBrdYBUYsfO(U*z zp;9M8#Te=oeP^UXwph93<-jW1e_mG=L%~HcYEgt_zn?W5qmaPy`yXa80l%}=oT+ym z!Ue)##dU^?jEVJgK)!-gkL9>2HkWkgz^UFbt`+$v@ArY)5ga0cz2<)(^$H7ti9BD> zEz_l2CKjz303HEcu&YsuPZY$%x}er!RADLOncE#um%5msgjw$ip{^p7RQWQW8Omij z)yb&r9L{-Hc$LypUs8W0+Cvgq&+x!uT*aw|Z;jjMYDaM~5XQih0HlC#grEk=&^aUB zsZ@XbrZVOZms)>j)Zy>AR=dzf<>Di3A!Vh#1@oSg*?HP79rWZ?!Q&!ZCidxFTdjFH zv%ed@h~N8DU%Pj4&|#A|J`56~vrKB#$jbt5bXj7I9*pLCe@efQkuIb}JIK%Cvu2@` zC7C#>#+5PFU_)`Q7eXp5)4&UZ;y-4>t}2)`rwaiHQ8ZnKNYllR_tNW4MU(Q< zvbkwLMg3{i6Z37qbm`+12E*?nMcg=*mS$SH#dy3h*ti0s=SWUb>mD&skoDDls*U-kFq}B zYqhh^WOxDE;iU=Vrv=%DQ$-a4nF2`@puK+|y)ajXxQ(4wWYmH%TbHCEsd_Za%(Z!5 zqlL3Cb{AGvfVyT4+5UER1zIMT+LU;;F=9wp78^qVa-%`cJdY-nSvU3RHfEgS%b7Un17O-Q--!_yI;ndev&2$}hG~**#e~<@h z9?2*IOsR<5%lA7|6vLD_LiP9Jf^-zK0DWpr*)0)U<>dAoGzhd}Or9Z(K-}fK>G=k7 zZdZLcZ`^8RJC|jj$L){sPO@a|>cv+9&>Pb{`BJ0l>dV?@Ov^mm(*4SR{RM*S@javV zux%}m!@g!q_qE3?_!LRbXkVW82q$CNw`>a{J**csvT212kQfM5tIfv~f^=fc5%^$} z&I5&iQrpYdRe&rIUdCqvskC~s9OC4)JFxlpk@<+K_O*l{pl6=jC_&phubD#>J4BZm zqjEo3N?P~g6TLP%FLq9}d&uYx?lawbx4`RmEfNMR)Lj|nkucM+T2{OcNt1E6LnXZh z@j#s2W5GXgj06^Xayr4J-Wc-Zyi+PGGwJw@jcS}%rVEGo(zsIU?~cW#l0==J3cR+* zZEBF=<0mdrG-~YVDTi`1i|pCSywf8iy2POC2(rc<7vN@vD%?9@SXEU1G{n^5#owgd zXfq-GiUkcKgn%&2?ttlVvoH1k0M_Y01t6DMd2PaawEWktt14wSo0WtraOEtxJfaS= z?pd#_ufPCcI(Pi9S^V_!C((pTC(0>DWJ>35N6s`uN-m!{mAM%KVxjYS-nV!6%73?N z-mAjk8||LJ$Bd@6t)uCmomMg&z{C0NoNOPT9feWt61CoE4o7@>_fKGC?n+Sd1|O$% z+zGJ8%HX`N+T|^-zZ@3wVby?k+6fk}$JBE)Bnf#8m$x6{&OI%XUuMbZ(gQGpiz9q> z*ZFjM_#eyTaPqPt2C=ZBSEB|n)8Ux7h}v(`9G_Hd2s%z~DYa)J{F?s|j<;2zKGG>% z-4C{6GY|6&j`BlT*+|b|`mSc!7CsJ~ljgoAzf>^H%=@wxW3K8X47&&#!aW>ooTlLh#6^|I<|SbxTEYv$T(NaHr7hPHE2Z6}l+84f%LM zA=TB-Lez`}6*#@ercDtqX;rhC{#rUmDH?#flq5@!=^BM*G^di9v>`&nx9d_W$nXn( z+#k*_75g+Xb4sE=cp~!tN zp8W4yP}xlm|C&N}Xr@3_^H0**L5o1_$S%U^WZ zl!ge2NncLnknK;Lh>Pq{j?5s2#~w@YTfQQcyE{Da$MU2%l3?4--F0$^Ti6vnfa&5J z&gPb%yo<*kK9=gR${t`E%%oKif*5wE|?^)q#WM#ShWM zVZq9X;@Rv&NM@MlP}JEhqOioUy-h`IoeEg_3D2V|lPi%TRp(!^pTiQ6k+>-%?w{TQ zFGG#>W{=66Qi=1By%CZ77raCkm-Y^J4GCf7oSg;y>Z{e3F5Kh_gY&1d(dla#5xhpP zb$t4}zM6Vj4CcAsn^RDN?~hWZ0<1;@2pDKA*2+g_iaCB1qHBX5X4AEV^?P3qO6y3W z@t^kmS{qHVYoH*S2*CC8sta*)jz4_g|B64UREV`~-Dx_ep2(I=vz@9aUHbNnhjg`s zBI5*f-{|~(QKTtNgv+_~f8flhPs(#L!v*lu(&bnEo(0s85FVN+;OR2fsV^h1=oSaI zl%!EQjpDt?JZ-5r9;ucZeI3bEeR#YPJjhaWpXDWYB-WOuPR__@7~`$H z$S}NVpZ+;fzXmx4F1*##gqme2*#Xu)O@3NW=&B?|#v~R#!-2)-*=xkRX!c)Rs#lz- zvGQHU{kHzU&b}aRwS$cn!7p1@vrK>C%D2isnV=Fg4}fFqV7z4ssEP6)aX;23*Ar~5 zNYw;1A|S< z>_jY8ZU&as-AHgg;o^hM85QK(B9f%NHQi8MyNO!0kv1KS3(4ysxA{dCYmzZW_pXfD zTL4**dhqe`w~Ml2spe)uD4rrM7ECb_3XZqUlphOSk}?^%>K6PCKxQ(}V$$`}Tl55z zFEufhR7;x`t8Ef31_;4?(5%dD<6GF|52#x^;OL0Z2&vfoV7?0vrqc%s_C?KcgO*LS7LBtWyK<3UWHY{WjRVO zLT6VGK$ZIL8)_%5x9GjnB`EC^yA~gQjcq&F1JM^c=5fZZiWBB@BTUB-82aUrlv#j9 zUE;!=g7vr5kLICTIi2}vyBTDcZtagjV$1tkj^TzChcTfiDP>%V=E>R>#3kc7RA`4p zJjm}!u6V2}?aR>CUl8<-oTLhvD$8X~k&7>fG& zx){IDjU|8G9w%7D=ndrOQ+PnJhb-%8U67lVoyH2hI=Jzx zF&fJ2B@K%5_J+xyS;9~6u@@KG-bE5@U8B7Dzd9^CvjhhznDzwg=KBSMG3GisDhv` zFC0|1#xmiR9yaNm2IJ}_-+$?EO6@G`@uU$bFujM70nsg20OCZ@Zjk9#9V(vbPB?wS zJizVC!DRq$^fzfU`TRF2*#?QqSpL!uioReX#jhnW?!|CM#1z$-E4-)kG3!1XwPcWs z^7}Ik=@;sKMhxx;ea0wHju6R}Q>%%PpuxK~8k61r`Z=yrNlP!+SN{6zV5c?HF{OJmBBhqpUQ9lOAAX7OWS1w-N3i2GB!c4wO(p;mkmTyMU>l`j z!l~-ERd*}bGe3>~)NiW-5?pI$7z|$O?S~tQ8|)wc65lw{KkWPok4(yE;ersu2R->!QKU%@z^I}| z5VlIO>gvIW6j!Srv<5+n?8U&-roP*J?K7BhR}c~^*f?g1L9(VD{&P<<73i0f+e&v} z`W?S55;xx;t+$NNc(2ZOVe~=)QLq1!q*8$w+#NcX>w)UxR#WPzOLKzvQz*(9j`yYj z8j7Nr3R3^yp|Id0-8mo>k6PxIED07JQs0Cd@R<)hXyveW;DoWDj`e2_dV#jAdPc*k zVd~i-0-JIkBLS7-4^2q}m7p7YZ*+nKAqx)YnC0yu?&JOY>N-W>KbE ze5Lmo$DuBjDsHQmV{&w!YSSoox@uWC4DavXzjuA>%@G@4n$TCT8y2dnJ6#m}L1$oA zl(}SBT#|aW5F56(YP;A~`;{g^S*Dj+k<~<5DdUUQFqB??vNAlGjiDl7=L4|Xq%y;D zH(RS52^6Z1>GFCFfM*x?sw`ew`t#M{(S#HX6!7Ijw1idLAtI*&B(H5j$d|a?sn)$w zt1ss_vs78Z|CsU~K$$&m}X@8R;&rUNTwWQz`TaR$`}n^xqM0X}r< zB%7BD{pI$aW&DFAKDn#5`ElVbedBOL>#X!$>ig)8uWTER)E!iP%7mUv`+EPl$>>Rs z;BwmQSWn85UM^xmQdq_NQ(Eb3N6>EsXa_SQNtivNiaugGAaOw|-%Dx-zahZ^qvhKZL$_(zsZM=FD&Mi4Z$x zN{z|FY~k+MVjwtKjTJHe3a0w?d5-oB2UC>Mms}MCs5#-%*L|ipLhY;zO5yPfq#H~) z$K~C2M9$d<0r$17zp~nihmg?Bz@>1&%NhW8|K~H&sYWq6@$hEEbfC*{~- zUbIKyUET>BkqPoTmOU>x`N|zL|JTi;?$Z7cXPW-khPbb(6%4UZZ|}?c5kh9lnz5?m zJV8Ha6`3XJ*C&9Rv`Oa*1l8zt>jNFvE0+NUrQJ0ExnuLyyqZQ=;m_@#txYODXJj@wf=*)3t-uIno|L`H>25}* z8cq5|Bn_I(rX+EoNRn!!h%|J&;g5=5qVn@Y`AB7u1IEU|cTepr>%ad9kq3NBWq$R- zed@C~f|qQO%MXg1^}HLX9DP{Ffw8A032?I@eY6(zFd(HW@Qh*Kg8IiyN`D7bn6`UC zvmJ9adT0xb-|sp7qTbMA-!_zj)c3q6YGQ7-9Y76fXlu<+$lG4)b+k)}p}G``lIK!vh%w`DE4oZ61qEVXf>7-WzOM{Dxx zE-@3WiE|O@DTbUS?+*$5;(*_+g|b21vovr%=KqhYVL^k;iKtCUQh%kODpny|o5}Rq z0}S6T829=;v~3~)cN=C99h@uNeSF$PhMxI=EsC{8TL2cpLG?qeX{JHSP`dpa{j}x` zQ@w!@@{C2KIXz`o!?Mj2zv^#+YQV9yOg1W>|D@3rAhbp#TB)9qXjc<2A;$gG-gV#M zOkn7CPKa+MWh%;yWQNuF;>q@y)(wR5HzSz;<${;bk#j7^tMRU4HIhv*8jxnP_KPdQ zOHaEu3&Tq755-}<#9}o9Jyn(!PaV*&8<{FA)?VMkDJFqNz4_4No|?Zq?U-qkj*oDz z<{?}O8>XDV+v!oBh9QOsRiG9;h8kcA=4eYbvXoDO?!L$v(>f9lSQ0QcVf1ly*>=PL zaAed5W6p$DHPExhIFl_Nt=2P#ul9qDw(?4WsJ{0%5vL{tARjrz&mu8-1t0^q2lLE@ z`4`@+Nbhzx5EWLMj%xP$I*?}A(0pEPyht#9g3TT98HDI5xu%smQ#=&e~s{!lkp32s=chaXq-5N$&uY7MWt>Axl zqU2L%1fdIu4gt!f5X)@dKcX$Wpn;$`E8U3tX$?gqtz>(SGTeIpa&cH{@gIL z>|`d0n-DmrLR8B@G|!V(YrkVCo84n%+EL&Nv$rk>Zvm)ee6B@*LzSvET1gkzy!VGf z&X)s33*N6~{+AdaHEgK}Nrhimw{C_G37shuGA#qA<7nz+So$6hIj1ufyH=e>CC3GG zPez^{y~sdn*roz)vC1GzYSb^4)e~<5Q$a``0Ua}g;002GVLK>u=!VUec+?FWtfDT< zDRlqcy^6k8gn~?ej(Rc(re!@X- z5|k8Fk}1D{KuLaupb$nadot^$zA!bXw1Q^7qw|1lP$!rH&kdxFS8M@%#gprYS8JE5 zutzSRN>1p#T;%}fIwS`R<`364SJKeyr<@yAVf(_e9cLsr$~O~y73s7?rJ$;l!_*I{ zL-AhfE!(-M>i6f&@aZXlykAZ3Fho#KV%_5LlD|J>ygQ6T>x(tD5z^SrHbJ8wU8u50 zXEzV!bwj}&YGElW72J-pTia`dg$B!47{2ocQ9%Sb%CR@AFu zi?_s+0nju}r8vj588kks2!^-?}I_Sd@>Q(*7o`u zHp&46uWyQk}(ot3fsToqlFMU=9Fbu?z8fMN2Sme~H9yj^h#tuy}a0v~N1&;_z?v z$qmBdhSc#-Ypc%CLVz5oXiRA*6+Y>l2m`4>r8d+XlT;8qtCm;qFA)8x_zIFM5`wMThhwvjGPty4YlTK z$hiE|vLDtW;|ta~pHRF}>7&_j;`c(J^GkA1KUq|D+V#`9SORZy5-A87j@4Wj@2aDD z8f)b|+!Z03bPkYqA_Dp92(2iVrU@lB*!DA`wH!p%c3aazvGIsVlk(zeigBt#i$wJE z=JNdG+|t_&hFLtCODFeUhP9(y?>w-MZ2IRT?lxEu=l)g}YEDy;nd!rM3e5^Si zP$`~1%l!fdiK$UfJ|VbT?GL|<*}QlY2-|baa{%3Jz{X~Mpn_7~+UR}KI9dyEx82<|3XXX!WX_4(zNHaW+grS6C`T0R@RLRvyi9kdnw{}n5_ z2WmU+d##7LqA=Dj#j|Um%=EU1k$>5s1r=@|<@_T?*BF8W^-71H+57#Z1b3hv9l7Q1 z@d+Ko-fg|6sc*|vva_jPPv3PVfLu@H<|$kQ8Ijx<(A@T*BI(q&D%n07Xo@;Tuwgos$QCTq#E{Q3f!NBQ5DyYIV1=@Hn+iF&W z&nfRtyh8lWgC!H?LK5z|?TfJh#KO@8kl(WmwhHj#OyFFtwO*3l3>?%Y4AmkM$zL1N zV9VjaTo#}16jSls=T%%kdKCEi0Gqixq=KH}a`d3{OzZ`+e3CPuLRBG0{JKTFcm&`B zwnWlX(($l^EUG`CDHTSVShcd4bF2m{C0UORpEE@EP7ks8QzaQ%zAlAt2c7#z^BX4b zVG8xTxPu)(tid~~qhh=((3vQp!u!V4r>J3D1G^o&B{zI_BLm&e|sNl~Q1$r8A;E!VvjYFuvj z98RDOU1GmP`m46rB`j&4aJ3|8htJw2K!l-bjPKVLtq`uazaoP$FgbuJwaPM#JUN^R zo3mOKn~o7$B&ztJq{wyHkdJf6{Z45Z-1r=Yv&)oikNpanj<~U>wE7>XHXJjCSGc_7 zH~3_eRpAigKlS&nkFhLA2VZBgKvnp&B_<^V>^>p_g zg;u{Z&<^GT3r&rYbhdpDS=V|=bJ68usS7ycwvbT){fJ)7wEr`rm8tAdi~V?fj54eK z0wPcny&XWNYepXF#F2+1FcsP(zs*(@~O2KDsxjFZlu=zTGn=`7{X}k-T z0Mn-1MLQL0>4t>qZ<(*@IF^S=ijEgbs*}2q`WM*RwLx}K( zW)btFYbYb~XX08HGTGi{an@63-!j0<_^X%;j`zOlL47}r&%X}qj!p?rV)ge^x0Q>C zS}O0QPHrnxSYKWaX}gE2Ov4B2R@B``D4-6w{R+9{n{qNvZ2p4ODw% zGi)`PA7S%QsnJSfu5+?=(&7WD=<6*@3anSubfk}rd_VJt)PSHBTw%5f z5X(^mUSsom-Pzy(qAl#58eiW<+UlCx5s=rpz1-m%k5yQ?u9hJjDh((5`=yQ79KG?j zvkEJXGL(r5W0zCj(ZX$aFvigdPleZ|)!F1|N4;^M+KOp{!Np$4S}kNcFuDm2^G=NI zP1)ln;wKCQdLl8M#8IE5Z~57acfpFg$vE!`hi-0N9QiC?2buM=3{Um*RHazdn1^mm zQt3TFlx4XRJj^cg)Ts=Sm<`4+Y?Ig`@knUZ5lxN3JQ?F?bzQzmy_dc>=gV0 znMS@aG#|J3>~Uj|0WPbVmGIvgz}g71;X~vKx{OalS9Wx4*d&^fC+N*-NRy0?X0+si(HCa~@cL?1C%DkHJ*^}Y?n>R<6sx)!o`xjl+= z#Fka;05`G{ha!487~X_FmmFT6~ z(DO}{;aw}@ZE9v?(CIL3Qzqj62%-bkQ4Di3JL=XVh`Gsqap%VCm-^&kW7nINE9YFe z?M+O7U`J>PqMC8zYkRg|6p;)1rq#1LT)yvaBYWZ>OA_`Ak?G7|s*@j>K(D4(Z;C)u z?g2#>(*AG3c%C@D&f)E$?3y!q#2u`=YMRL&&gvDLiTFmd+4{M)E1q|X8HM&8Zh!m+ z6R@&XkXVgTP}yh;$LbrM5@ian;@X5@fE)cDt!gEufvc-V0@#UvCm)FF(1LV*nbNtL zycFN^5dwzxlLn7&4tR&BI8o94HS;5OYw3XPzL##&b#Y}DU5$DHSkx0 zABUY

HVB>_s>MX-J|T@~&Ng_wh10kg8YBup`-2II6=+erxkE1rPhM zLP5}6@)#-4(0X_sJxOABj)Qg`C-;=r>sgxCWh%CLySy{smQi|iS1^TZC}(Y3M;QPX z|LUwbtJ{i0>n$f>b)c&~*%T}aa4J;KJszZ}H;Dw%yRDvjv{p%hnZqiqhuG>w4S)P~ zkl!u408=!IP=+?Dbt{5+ffV=rl@A*~TU0QdXyT za^mrsoj_o65khEmS7@}`kc#Wa-i^fqd_+o1kB#3 zyhQY@8ONk$>ksJ72gSjVoqRS8P36v|9vD!hb;eW9NkzMpMaA5d?t^0YMUXWBv2N>w zW|>~T>28wsLsO$8y&zyM;@_<>vD}EA^_e?oJz_`=A%?ckJ#Q3lSoBFWB5zL&JPNd@RhK~Ns<hJ+@Hsw_$4~M@p_@B405_93&6L} zPB0|g3=$I2p76KU$Fv%fcFx*sLV@~OsvM>vFi=+2jhSXr0Z#}63fpdZN5%M!k#_pEdJL2OHspra@roidG4zPD`? zUcD_`wqUe%Za4FvFIp-6YsZv$s1hizdxnIP=2-uK096!u`$PHtlN5yvD*6(EigDjJ z0p(F%-^u5N|%Nz`5C9 zxve;sHaO|q%rv<(YYCM4uGC&wqDKu&BeG=1Mk5S;71Pib@lMz}!T@TJZL8axs&K^} zIh}>^*4>;Hcz^h6xSP|(=y-#ERlw9_*wb0kh;a=egGm);4&mQl8Codl&uX@#-ln?` zIoD3I&@RdUa$!|&fscukJ&bHCg%bmi@CBjAgvjA&(XYkp&c=i}VYjL!zf5P*)iro9F^KWY_{T zgPe0-t}%7ug$du;--Y(PB!`|srthf7G-Z2{GF2Q85U$A(3`szV%qlzwVUPp+MuQD> znL$r$fC_&joo?w3-y))fPT2wCfh3uDs53FOCc*10;$ah8x`QEg1B-@T>SiRG@u|0# zVK@nfILZj^Yei_kbL2pnQUqYT>R0=kcfy$4a?Tn#lJ;@Gob{EUJUvk|u4j};K^+xG z!dR8h2~C>iY6vrQ0g>E>xxFg`v+`;q%FVF%Y#F%Yye-VrPh^9Dr1+3rYKA&#IMQ=( z0MpQ}eooDn(~|T2YV`$E#7lH@+$PXm;oRFR?_>FH^@sx)<1{p==e~IjO0;Q7oQQUq z9Ql3ikhXoJUZ^1WUcBsHoJ~i~yX`=2bSZNW|ISSXhO}G7J3<_S+e^;eu2C%H$=NvO zAL&o|^3ukanQ0*gfJ&}SNWvfXTOtQ$1BId}k+RPLtNdBGRXAMc@n}=7oPUM+yQb$f zu~l};4FT!VMbvO|o59RghU*lFRvs9&Grf?ByWV$6;efPRhV3-u2Q77AGM*)_11xdi z2{?Ynm7zS$nZ%(X8A_vD`Vfp&<}?U;{Pm`&ka3ZcMI*yTT$ZR4Prd+jnk40@;@}pVCidT5jc4ny@LWAC-!cttGNrsSLaU4k?)%#F{ZI!_?Z1{tw-A? zwQ~tLwdXT z-%r72N_WPi1{w<1V0m-x>NMQ=Efqh;P7596_eH9R)f7#+A}4=?D%!AThU2|B7x7Rh z-{l!hvPFUjvs2u^nF3T)!x^bXI8$c2pN^PcyR~U~N}p5?7?2|5~EevnDCdXkMy zp2^j{o-YYM1hRzm2=1;LgnUA1xlxXa6?g9D`sgKc2iWy-_|quWQTRW@)5K}I|M{1m1eP7@1>s3k!fd5wYS#eyj(u98ingh!R9~PZ zkR-r|<6;CF*Q6nhoje8X1RR7hX8G6hR!UPC=6MFJ2tY8;t<_ zJ3Sab4e&;Eyr*nq?T?wqIRQp8Cn@gUDttj6u^%4J(ZQbXAZRy^*{o{D8H1w>#)CpL zRclfnOUh{`g4nsCto9kT>~%W0(xDq88%$Y(NE@&T8 zZ3DRlFdSWemcJf9SMMP_hyEzWl}fwO8Kp5t`X=YJ`b~2keH>R+hu(tH^c3FFQMl8D zx!W6y-r#@5R(7LJ-k73Va_Ab}Mvm|6gS;DVB6@DGxO<_w;B`L?)$GRQ5zSZ2^d&8n zhyY090<)2N6r;eB`@4d2mo{O;hJg~nY=rQ`N-eCXSKzs%P*(%FKv;6LTt7t8=HS-s zII(XttteQeDKP=WR$Yx@mjL3pE>U)hv6uMGLj@3j&fT0T-kzhQx<;7Z@S9y%*g&(U zR{lkFd;AugC~S>e5%=T$+aM;ZOf9WETZog9sL203R!QDYl8PjMrtlk*Bmm| zMf_MPj<=>sztlm@liJ)Z`*MI?32WV_bLt+{5wJ{%G6`84!)i3#TSK4Pyp5f6xa1@c zHG+6r{H+j?n_;jLVd3VxniX_(5o_ekC_2PGqvN}~>mz0ZjWJN(tt0eAx7b3-&G)oR z%n<9{xdM!HC0A^4Z(Hbu#!~z>j~n)906fAGorh=Ge&rx@HW^EN@%))ws~elu0AI&> zvLHt`#Fl%pBA@U|dJJo4bCf0q%K37n;=}A7I~mH_xxrA87U?^h*TM;mHy-`%S4ytv zOY4}6=Tv^d6K%KJF+Si$Zr<=w0_%WkSGjtPZCOv|6>);x4GGlLeJBO8q7_3l%ne1I zwappK9#fZ5T8(&+~`|P&w(LSJB;X4B?D}t+;Z#m!CxSpN=ud;y#QbUv>WforwB$UpD8$*`Pj6{x7*jP1Utyfy=dI23*qoN{ z1(oY@s7V*z4+>o{cWah)No zWQQ&I(d4qb`7Sv;@)>9zM_4jk4ks&iVpvCwcZl9!-yT@4_Pd(fSf9janfO&TG^q-i z_)ylO>|my4-A6#+$qoPnsB&R@@&ws2Mod4RPM$MVg9H-f=EAo8O0)NqB^34?hixBN zt(3n?Dnu%VzuHxR{7iKUXLx#VNGfk3RznBlhoCa7$Ln3#6HX*)8O>Ejfv(VKTDN{! zFiaDkpsN9b#JcM0`Y<|kaEi-ZWZJ13KcNF|{Tp=MVDKoUlJe;9aY7Aj2=Cg4S$8%v z8i#<)z6rYnCbt#J3d29iZ*IcP_|*tf{g$6<7Z@Inq=U%Ordw@TLx}KiM5zE*#OcDS2O=Lnm>ngs1&H^*gH?Y2tcIgjWpr)zW)CKNf?$ZQe6vgV`i1^F*pe7 ze?%Z=3h@}_At#R$m`>=7C&4g&(}8a9CsMEI z>)Z}FTf|&};TdnV)-RTpI5N0Zn((x80P;_H`-DqfEfIBZiS?FjzQB(-kcH|pwO*h1 zvt^+2YI1j^{+Dq%0=6B6kz_VyKD;#{-5P;~E}U6%8OK*!RzZ7u(maue5xzF60s%jpi* zb=P`HSj$8M{O2Eq(dchpTtL|xmY5z30FQJ$7c52L2q$*ijF_55-)Y|Lq(1I|6a^Zr zw7hOA`5;fJ;`JoaXokeE7qf}3>ITYLEE9sL^95c#t+s=ZK?WfJNP`lNTb}4t??Bw zkTm>D!m!9o@R^;b=zJe8M8j6b0sE=p$s9LXE8tvek=YkXz+AgEgSZUE9vt)Mo4jSxv1=dtA z&yqRldrywzYifFo+0z~snN2Z$z<74mGOcg>PL3yAp_6jwY z87>Q(AO-qQL;MMGA0Y5#VQ3JM-pScVS3^Uf$#i27EpHIGZUIYQ#ny8={JjgH6lNAG zBGntxQ>wywniO=*@jzna*|;pZus-kcIJI-INnAp7|B7)6P7c@WTr{swgF?-6LO1>u z5NnX1Gz0^kc5}uL=V#@BTTng#wQA3w2k=L!^0Ckp9;4oXEkRfD$U~I`F1fV@6!W!3 zf&d4TQKZO|Tp4S7O~O3NQhp?fS)f$2wp|I|t&pJJZ{o{oYWb-p!&-^z(%`8Tn6sHz z^gOH!5xYmdB=Jv`y->ICeD6kz{Kx;_!IAMMjF{wMxFim4caE?U%eDoosmxM*60>iS z|Git2<$TA~opUT^PkYU{)T{#K~7LAa)#P32fWI!~3ig1}Y;COnntD&x$g1NLAV8~d_1l6W~ z{Mm(Z7Bp~>6bVl7=Y%W#Ze%-n#hMhKU3+gecTP#{SQhu<*X>6dS`OioD zb2+4jv2 z@)B5UAgg9-F+sBZkLTWV67H=!#mn>9bW)>WV>QZG{~AKDS1|l>x0fa|_N=nL57U!> z{*uT-&Y zy)Qp@=aJe~TDV+3@M+cu@o&lbvr02e8W>AfltwTuGu7o6CM{xjGV@(c8gk%ijf6Fj+0+T6{RgTN$cA@-Ffe5k1TK<-Q3!NY zju%7Ue^x)oj^$Y@>F|OZlv;naHNR!r;#~;jzaUFd5Wi}=vE};M2iu^D=PQU)I}aO{ zh;C`@><@IzZKao@y2emEB;neW;+DTjKjqxhY(kdB;aEB*dx;g6{Uw&(Y7)R#)D$z6 zt0k=^-A(*to&M64!+fD$0fflm1ZJWH&ksMoQ#GsxxR@b2GLScu^m<}^)G)(yucOWB z%*kbeenexxvZJk+zQ5Jkm>!HKjG9DFKa3CA$5N3W97L$RAME%%K!>L~R!|Y52}aI23EW0=@xkqIC&ud^}=nZRv`nWkO|Ni-Xwpg`CPrUsvx35|}1 z9qEwpE=$+?7Wg>aEj^Ns>eiSN`L`2`ZmFCUt1(Sv-=Yy zwK;7DSTFZMGnw!jqewNdULzXB?-9dA@FasPUMebuW9c|z@v1&ER8tGYYZLM>u*C3< z?#rek-9Nl1xfe{wOir#h(#&v9@022%(*2&IpuRDCcz6KI4W7N_$WcnyiUb-hRXoVo z^a=8S%UMwA9+T3JD6N|xfDSI8=B%=+T?Tx}{&`fXbZl-X@Bhl0mRoy=bI;0Dl7hUGvhd6N4Y=WW7NLNSK3 z4?Q_!0YGw%%gS*w;FR$+{lL9Y^d|-rq`Uoy8I2|;1c-|MMc{jgIu(QVFO(bn#FvM! zefrYzIn-yOut6$wUnENWwY?KH_`QmJEEtH=XHb$~bGqJdo%599c6XlFx%<=T;HFzK zY}%8`VsoWK`A-TD%sDjuUV+y!h0Aa!?4TI7sTg)#LBrU31kfqccz4e%P@!5F4uTF= zJ7NN&TO&Nu&mb}BgA0KDK@~q{pzn4#ibSiC+`2s64%ddJ0<{sQ;^e;NVOfneod96? zt+lkBeEJ)tH!2LCbE+qGd!GDYS6^GoFTJoF@J$7;7m}6(?f}L?W{kA`nnD8B2kpWV z{SG|)4|RFrn`6z#*eG~EV!5^+>Kac&Ujs;se~oIEYk1Z#JjXWY7ZF6sQKNK`DQ}6x zmBtA-<9kDy4qC9)6VAzPa;>CZdRQqCEox+87+F2_=)x9!y)F{<3e*D;R)`_0YH~ZHheO~73bSxFO)()O?I^KuGFn(K03e!dG_Btu2Q{pKR!&m zt1qik3k2acBwL=?voJ1%rmQy)@oZ7c7`k#96dpz(*WSQ^xwJ5D=ipsU=}(R+u&Jyp zUmY8Imu4<3{xG{23Ex+wEVXoDzN8ct4^gFXGwII}=+0s6`AvE~lbt~4m zwwes2l&QEhLHnBUEtQ4h5E?C!W33O*r@eX*JSfx(Z4a+nM;5$Z=31Yo^#xvKe6j2SJ7 z#cf%(sdjf|(0e?lGI5m5NhlOI%96BiP zBlgIcqd)BCd(f?J3xLw13hlDf`#0guQQh+4BMUKP zr_1*DgmMJNfedl0Qeg*8#&Py86<@xLM~7-k3ISYRuHWcl84|Rw$vnh@Kz<3~HmiI0@SuDtbYlM8yHQ z0jSFYZ@K-(n&Np#g;O(UUt{T(g5Rs8XC$fnVDQOuI9qt31Ifwc{dg@QF-EBuKhdda zuuIMhssAuBpM>t~&H9v*%%+6x4jSwgoyn#5hHEJkQrzvOx{dv*_;oGmWNW;Td*#_4 z_G`Y+zL04n0|i7BPG;OhkD_=+uZLm}T@=5vYB)ME_=;%_1((Vm6d~*tZNldC!3WBKgmL)><{`bBOOeikU8K4Uyvs9Daf#7%|=D zw@!)N&yd)hgWy3CcsK(>y^^rT-R74tww9ewUKZ}ac7eAJ`Ev|YO0$Nnuibkv5`Oy#_dEg98-%yewdlDnYkDz znlwEL`7bl58yMtgxE{uRR7w^j10pfI-}XOv($#g%=dbq!I{Vqgxs$A z$_OWpbHtX-%Rc2zxD@a?D7tv@gw(9({qp8AD|pdJP2Wm}X!Re!P-m0Lhkr_)UrkP= z#Y8LEs(iZ($G3lmR$=Ut6W+1+AV$C$)}W3)BkzQeO8-olXPEz)xIA%x>%GT<&Imf0 zzr*#`U92VI)hmYS5f1CAd%|2_nfp^jbS37!sU66H$TBUQe>Tc-ye4}$obO-&Vic7g zb;YkNtYzOGux$>6wehsJGK0L5-dG586`3Z`&Df>qivA_2`^=iEScO>3MlZ~#IVGdI z+oE<{`%d+&xkazPal;-oK1czL=Prke;CdQ;B6q858L37`lL9O;2GD;rYQF zik_VUkE;`QkwqX2ArYMwW262y`hHx0fiVb1E>LAk6RnaKqJE668Almkj7EcZC~~aL z?r&L)KDC5jfI+1ES+Gv+#|Zr*aa%BQDrxud&f>)I>4pml2Gb+5 z-=W;7+jAyIsO7>Jb4ut*hE_^EVbXO3U$-n^rKLEhk08K~cQHt?uE|}N4%a@6t<*>s4PNZOO z91SG;{@aMlc9w9c6Jc(>Dpoy%+om7;W-T5-T-F3%_?JRt+BPttnpm=+zX;-cR8DQr zg9sTpw4at?6w^!`;bAnAF-gqER|DP!I+@j@@!K|?9xY+r;TY|2s>|IVZ8`~vu}z#i7*PWo>i93}S&?B$BDEl?2^vbsk=YhhI^bmhU<~uopw!*g8`2UEEe>VVyoza*}_+`T>(8ELH-y> z)}sD9CDS&m0G&b+zMR}$|ASJ!AF+T_(P>R(N-{6*N|%SH~S$Qud&4{xG=^ zczl8oC#LJIW|u=bSeM32XQ9kA%|>ODNef!4(8zooSvu*@A=90X*Q>?aA9NC@nVXx_ zU}B8Wiox+aZ?qk@Ndwi~h<_X2)L{oQFu~5-K~o2zy_$aGXu$0mYGJiQU6qCYF~prj z!6N5N)I!bw!No&DSKq~yiME`U*h`g?50kAdU~UkFWsCQP=(TgV;!W|5(zbKwHZoWI z(yh#`vfpryJk`bfwGv0hC@jr<<(ApDhlH%BGe_0tUqlFZ7=RtsNm$3Bf1 z)?@jy(3OWn1_60kh9jKIGFme$4&QAOh&{!v;d_ocsJQts*N zH8rDjOU9g-U5ILsM?e>XQ3&0y-&^0y2)v!M(=U29Pq-G8Mxx490J_15(9y!w8aZ(UfN zhCI>kIIvNZF13Lio(wtH5OIVYQ;NS-1A?81!_|LnVjITnhoa`-DDqKu0z+i071N#K zPH`W}UxnXJSXeAFMy|v*IYwK<&{meZ{9nk`Dt%y$I3)x9N(|Xbt$=bQ@SuV4gK&;o zvcx3N_6)MZ4D|sSVjzh;)?56tqG9?w@KE8D&*`$bJiOdxlX`GmP<{<+wk^wWF}zaJ z=o}>wR{vD-p(<&K>RbYkM7#Py*S?#c<$&G{U-{fCwB@gbwOARe*-5pNY!fowe2->b z%aQq)-TRjaJwMFuWI-J*qKL5jtyTr5k3yZj?quZo%ziugMlTv7v#aE?Z9MBYw+bHf z4sf}lJv@2BNZs(`{N8a{E^{`n43$pr9;_ge50_qqn2mkow&#a{yH?q~8FD0T+K zLy{*H%|@nFCTPHFI{u87Z|TaQ$HCeN9DsRF(x6(QiDf$B887I?KA3U-WH9U?<usvU(L5sX466?+26fWoGRqC(#-1!4cjGo1K|ry3 zqDXee4q&4zPW{u$c0pR?6M^fVQV~@!&3aXTQfaw@hHwlzNs)`JzF4k8+W1jARTJnV zJ5L&A&h8ALBn*zZ8?b~At(1JP`I%8#CB<;QfK5Lj%G5&{qIbq2Epbjee$uCQF%yN4 zdA0b{a@3)P{82rQ0s~Lm)Jy8P3>o?UpypG-m#|g2HD;;#$#R?w*OSr(1;xVv$VYOn zS3LT>&&>!axOCz=!71eHeeD&ABvvkUU;tn&`yHXJ^9je&#$Zqco!C#*c(on5twb~(1vDj^Z%{*Za zwO_1T>2$LBs2j+xXwa+%URHMwYz74UO zT)WthHZLS$zHeSOdYb0A+L6e+N6B$Y|3)>j5Z@nbPVYR6(dk%tTvC?^DNgH#jE=eJ zB5p*yRU!$oieMTPvyCUuEdB!xnI376jc#_}2=5Aw>FH~F4-@S5dQST&Ex{j%>tw~$Og z@^}sRbJxgSzT0zwr~mB@ACq=vjF3pS5PqCwayaDTYqF=?b;#io|uM;l|O{xVPFm??FNnc<8+pFIf23MJtqQtGLZiCRBv|UMNrz12+5C%(9U4`JJl%>2yqZO z-}(-&H;0(C-1SP8w52J->Xkh)??tDYF}zf@=be^uXAiF%2A zQ}M&xYxHd6LrL{l&%S9TKS@v!f6*1L(Pwn^qZfhD17pGaF8f+R;Ao+(#&ZCskcX>Y zgovBPV&fd=LPQ}QBnwK=MJv*A8@DNy(^A{->6e@%evqzZDIW4t!2zrPiqaLvbTxD; z$j5>`iRl~8D-j2g_kn}|S4)|;M-XBj|Khhv#~7E|1l4=_?Ukk1JuhZ3kP%kKrl%;w6_;jj_QqkW_FyfMw_hk&0NEp6dE=?Jr1ABddtqKG{GsDK}YSn z3S{W*@58&47cgjG%H>zG5gLNd5BlsLV}mC`eDmpEt`V6R$8N)$PK)EUz>1S1$$~x+_RWl;W8?M`vfQ{k$>u-=6!lgsRL1?nWmwX z0z0C?B|#(M2&TAsd3EK;6ybicm2$P#;B%IylIw4GsU=%VPS39ML2;d65zd93|Pc zC?jBfOW>n_GsC1J*3hR+wJBR?ZdWx!gqQzoM$zG}SKq$M8+0{sSdd8}e-==~?K;I$ zBiuv{3$ZP5a9-G%#oDK&S*(T)BHinleySu#Y{o ze2Yv6f$ta6cPKd-Q|70y=me0I&Rn9Vh21Ht?$G3J4X9Sb?lO@QgRUYA$W}Vys@G46 zTvI^6jz=D1?M89%h#;X?MzAZs@PJfwkHhxIjkX5*GQkhA$o^K6QBu7fKCf!;$b!H; zzDdMKznwrUX%JOOoZsW+`k*LI$9q0{R-1QkkRu~HHxrho>S2nD2v1i6au2;BhfVs< zgJ6%o3Y^_VB3}?r@hJi5%X1SQDk44(tKsZ`$_JwD==Y5+=)Yo7b zL`5*>!k~?fqZ=bINeg^IE&`4(EHAfQUp2|+jRzBbjO8M9`FlBTIfJ^1kBsU07t-A` z?-h8nWMi`F9T(1{?eqq4p6K9Zj=|I=995s#`6&`RdK_}f2s;E<^L?BIo3Wp&fW|Dm zu4ZWZ2O`&heTgy^Y8TBd25?a;oL*1DEJ#JC=Pa=8I}1u z42pGLKdjV0=-Fsk_m*RVf#> zq0tB2reR}#>{e(i2WXZ!#OQ75RYvL*u8m_+64SnT>C+^^&NJ#*Jv#mr;~`1LKi zpx1#x;>zE_;fb!bEk~XxNaVHb_!asXp24;0I$16OKR3Zl;@U@H`aRJa8gorHm=cklq!I2 z(=^RRs={CbU4f^NHB>pWQ70iTHX6&hp|!l(Kz>9(YljJCLSm~Eu(|VDs64Hn$oU{ET`pvE$B(8GF-b}Q@WIf$t>9?d6KY6pQw**dt_ zuB>WC0|zSX)-_6upr$;8STqC2co+X`5VTINp}B){CMM1iBUN;8N+`#3shKt_k_jXi zrr~km$p4v(osx282N1=ze2vq>n;z}1iuuJ4ILVZv#&Nhsyk#(h9Lm1UR_AfiEo2d-&E^nxKcvVRFQ?0AWxy<=bO zI(_U6lwZP4&owQ}ljDD9&e-s~U>;^I7LI#?ch0;paVR~4xIaj%*{NP}7EZx;%urQp zI#Hl3i&7FO(RAOA_yEKoP>@c%TkHwkG{nSG{=3UT92Uy0w@+*+xa=h)<p~myPE62Y~6qW?#EB`adDcYM{0>EJut8KZYz94)rAbqTq)^ku(l#9km z$V`dde|rb}7nJe0nFl&a-`8MZy#yZaQ3mS%aw)I$D(!)@aitpQaAJwJfm;f72kag|ni(5_HODv%!@s!#xv!JUf6ELEgh)!_Q>@ zE~yznGS#Dx_%b$8k`q!}T>@ccg8Kl*xFV}aUsm6Z7kn_yygc*&GwrX?2`4ZFWaSS{ z;S#=ko1r354Avv*YhG5RE2(8z-Z7+Vav}Z@%`5Yxc3`sua(DZ* zeRI3mk0{haD=8Ks$M-*9l~$ej+1akBMtv-LdGP8Bn5o)Kho{yNJ)-?yIel?2n5ZBK zLdz;34#@#PSYBw2MBVDj&4&+U__7QMJCbr5EQuU6s&)w6&s$BjqSk)oXxtNENG_VC zM|12`u{rpfwg0J&DRQnU)dGNm$jsJql0=5WH>~&@VbK9?kVZM!HHv1rKdh6G_&I39 z6KF_~!a}QC0LY258F*Q7khEW>sIkA&#)i8=1;=V|FKm!%55=*Ehua>sXNdI2$_;PU zm(52tqb8#!*76^dKVX9P574V#kk=`U_f*q9G}B$JuG8S8v>5U(6D=vOdrD2mdrLJO z=`+B>+5Dr*&_hwnjis@Rh?Hd7xLD8T9_gE?dNAt6Q1bIjr$%4IU%$}#2eF!rqo}SM zA}Du^mBijVy9mj3WA)jiL_9o=Cij87&It%bz%xo5@PeWo{k9FxF(GrY-Om)DEv*IN z{MD%SAP|-4-nKjis800!qD%tYh=8#4m=RydFgnZSNAge1Qg*D-cWyeXXI8oI<#qu-mJcKa*254zHd)RQ zBslJW?{*a##9WCN?!}{2b!jM!=OKb(2|8ODNb}$-l!EjfufKOLs-o$+G=-w&FYAxR z3`pmkMZctz+SUuAu8y6iGEVOJOt*&EX#LyU^pVio;5M^nlV$V_q=!dL_rpCb38)!G+NQ69~$ z#=JYcp8Qir?%C^_Dm^3C&Ed;TioB_SD3pkS(BTx%qOgb1;#PNQDgqB!L-lS__MZ8` z<3OPk_zZ+8ew;y~9!Av>>BF|b=8ET#JTONmB@(}SBCoQf!6>dL5_cd*Tk{^OMD1be z6@ZvHJ$TyDe&j8`*IL?KkG-lpPKvqa%YFfrn#F=gMpP>PpE?d3m9D~z~WG_-sZ zx4g}(Y1m(#@X^~cG+TMSNd;&wAd$rDRj``4j(prFBzm6h#i@tRwlsOl5H9 zP&<=it;_lY7?iO26}nMG-LH$TQle_r!Z#QQhAP>-??+V~wfp!!Glyu|=jh>!ls$$8 zQ39KQv8La$4rhGnw{e(mr*RJFjmBp)j>$H{+1V&zaXMO9_bJh1>coJ)P%*<>10!}$ z(J=E6O;|}~^TWZhP#4b7iZdr7V&)U_QRDg_?;pl9D-|c*)#?rFi>K5z+aGUh2**A? z5;cvpX4ue=jO=X>N#_T`?6Q0?vX`n`Hr5Mh0;zaH4`Vmx>`ltnjr*6nkU0gI*%g?v zEbHilEn3hw>^F6Ese_6X-ZdVOP*&Ick5q^%FQ2Woi&ME!L~hyi~Uf z4f`FL0}zD>hXiK`?TlP0*8MR?XVaCgQ1;XGn)#HX9)~*<@Dx1*AGx?z+K@~k;c@w6 zgp}`P>hYQYT(Mj?_>4kYPomX#n;rO6X!=*k0}*$KH*-RWX`1K_IXENY7%@tiu;Oyk z7zcGWipg8cHD~5E<+z(iRb(i2IO9C%6yeZFWh6V6GLN1^>t%Cp5coR2q>9QElhepS z7mw6vD^KJ+en62FiE2G6)?GO~amGpn&OhAFA*?sAVl8$w>Nkh~Ajlz1XNYMe2m%pJ zK}v`zOkJ|?BYnXlkm~`Ad`^0;`PMv6jsOR~9*$b{R}2FZ9$$kL%0$os2Nx#Go0?Oj zg6tpFPN9*uYS(cn7W^P(%;+CHEDGM!dK121bd0;#to_m3a18gapPx=g7ymnP2JM_X zQZTbM3~%etQht*(-a4V(`5qP6t~0CHTr5+ensfM(J&y1Kedd zY+|-){TQ$@)g)dEHA( zS5znbP>(yaun?Rc}Hc;f?S#G2TQNqs1cQ-V3xq_Zk>*v zeS;IRD3UdG5BMEAc2COc{GZ9k$whY;%QJLBVUxAP^~<(jd3mj;D1&aR;1bWtGK2uLVJ=+o!R>38xey+VNIA$Ed@xn{+i-gBsnc=A zxb}C6wLl(K;vBS+`1+cGdj(qn^a{Hz%dL^+hs$tI*>_Nn;m98NJ=FipJ)0fP{KrFj z!@0M^w0MjV#L>QJ^$*>$#~>~{wvJ}A^n7Ouc5%oZSbe+-|9ob<6X$sXw@7TChmhIT zCa76talD`{x}nn|o>0lS2i-*%DGJH01Gzpg?dc#dkVtJ9NgDQJkQdtr@3{R%e8eCT ztal!*&VnNIwj~&$X08hIdD*a;Dpoxp3CE@ZtuHCkg99v ztW*Z(_OY#~%-MMT9mmy$pXuwdIYz-}pz!C%Zb?u<6@v>QG1@iKHAG~kR=|TOkV6kQGqExlI;*KvA?N|fy7r}xbDdHtd%`me?~ zijj%CpPJG&AWN|CvS}hYPD`H|BqLcVd?~U}nk6H=c+i=@nkm-hpZ~_itvJ`QusuiZ z4>JIndggNqR|F`BNZBUx*W)C1lsq{bxtpR&4sYwN2w4eJJJ6U9tz?n(4MhTaJ5aeL zVg7Op`ZwQ^9Y|@Yf1(YQk(fob7;Tf@H0AHZqFW`TV54yj+w^RuP+|uMzcF%Qk@|jU z>E2`{u_;s`BSe7lE0Q{Y9(f9L*7{)O>F|DB{TA6jnwNNTAjLe_?Db7?s!y02(sQPz7 zyTomiqo+)T5FJnzZTeKCR!f&A)Qsfm7-4w(Y@z_C38OTdwwlGQvAA?v>V2zSS>H|8 z7lU@LL1X;e=%N&pjL2f*YMF6`7r}Bk%Ug{N4<#0eSTbV;AGeLVnXM`wJ|s! zly{~k$t@dXVhkU>>6n3wZ|e0+cmRi|sH8k@4U3fs!`K%jha@f>EN8dw*-5_o#(@I4 zKNg?qjalX)-B(i)9OMmw56lB&M^ zM`O8W%I*973%G<89Hzg(&0o7NGj!(ALtMB5q4HJ+a?>m27@R>F+wKhsI7kxL?y<57yrk($NgH^vmFkXSoCfB5nox)oI~| zG37ZVf?a2A2nLh6%j8Fv|HGgY#j-)w8Wyq;`_xy4@^Kd*Nez+y)v5w&>=ShzLpQ!mrUK(UH39Q9wfAKk$ z!7_^^%vUeSTipPFm`7b8fw94}sjMbph9;qmKSY>p2zf;`4iscvQiRxCyX~)4?%I;? z{@6RcBSn=S*8z=O(VlhR7*Rd&11Dm3|GU8Xl|L8W;V7?S%Z>-Fj@{i~l12rdJ>v^b z3DaunaeD!$%l@}(Tf}2w+iC;lJMq~pM4}t$Q9hk`-1O-a@?E!e}vzM;`vE%8b6WgG{Ds8e#!JmK$ zf3SV39M1%G94&*13Y5inLfoK>WvT;5yoAahX{K|q@STjL&Rpna`}?mIlo&*)J}UkF zu3Au(>8{IfD~qSTSU~oYq;_YDf{Oi3^AIYYx6m@f0TJD`;p4C95eIT~JQbDCWA{=R zTSN(zA`A-hNfew8G}piI>X=5?^pZjefIPysBna31&oM_OE~(4ET!n*0x|qQYKnH;9 z6>pFm`j49pCvdb~lo&y1F_5Sv+cc#I%(ZtjXJIBTE>(t?yy2PQX+4X8^h^4j!X(69 z%Yt{2^iL=Pk(rg%5g>wmrHphW6}3=^(I8n z6qGkzCohOg6}D3P_d}#Q89NL}lH}=oDF{`|vu>j8?IYllWClVr17Cfeq#rC^AQ#)D zn~JruFZ}il*ofT;RI9 z1s5zFcmY8C(AjWjD|v{P7M`L4DP~kM`RLeslQXUNX$%Ib8o#*;z6lcA@v2Wh{@#v# zaR{fUP$^6b;y_;@hxj~OI#wYxHN=EjJK$9)G-QL*06G+w7D*0o9_>KLblx5=P0{lV z%*q13jc}8~u0;nWw`@LVl3AH=&{lX0sjRJ7^s@grgetMS5}p0d|8Ktr1Frxy5I={t z;t423-+xUeA}7wJDP*raLrk_z^2tIedBEo>xb}ds!)E7wnNM7eJl&e%i470~2ZMBm zR&!n@wsfgRq}m~P2PDJWn2%9!kDCJ5->;5u%*>8cjMAGdX#D)#iW+7de(Y|E`a+jA zJ?BM2sPLjVH-fY*AN*|vj3u!^A>|u1VgM*W0V)PYhhHYC`o_;TlkJhLLZLt<3tU*7 zdMZ|gm&|Lm1_^3eL*`%v>I_g7O?5Seq~?M{<|KxEEZOA zX;s&!-hFjlPH}19PsWl@L13tc&kCh+Ws4BWg@1WdF1Ap>oYWT*ipQ;9jQf=aBP>$5kDMq*dqN=6V8^a-0nU>C9T=TwURbV} z<)h?VcQ#%60}`7c2#;idPO(2u*Me6Y1BEzFyZIPY>`Z8u7%_i)km+?trgtVrKSh~#l)#@qdhrGszr?q0O+BqkD;9*IsMhK_aMv+5 zB>jQuvPx0H(FB>Y%Yh^ZiMx<*I+YU23EgL-jJ*Ub-%b%p{bg$tsSpa-p~NDQSM&zn z|4u)=Wh9S5T*8W;+fw%{M_T#uR`A9T-@?>Jl`Q{hF2umh`9LjyZ10H&3?zBzc;G~h z7nKPedF+iYcmA5{nWD9-Md8gGhF#!y;pL-lvMW$?Q;S)HbeEzP{lG~uD2{VYZoTDR zMviZlhp483yEe-tb}8~IWawuXM{0CW_S39!6>E-bfDi>> z7iU?MI&{A{hW|1|V^i%CB9uo4nyLr!q;g_PP9TK-2{(*DX*PX?>CPq{ODplCrM5+I z@0cL}XJM)##xhu5+tLvOiFvX20LRatc7q7AWB4#e7r2Bzrr-rM&iR!d0gsjU#`qSEi%(dO}pJRyI1+EkC+6x zm%|ybC0|l!Mc6IEIHW~Ml-!nDwCiynrm`Sm&cQMM!>>=e2gjc{7;p&p@^)fQ__fa; zkg?7+^s~lo3G!3k7#W@K6bp^V7faoN>!q=2sQ8LYWV6DX(J{ohJw8vsOJ>ElS-XE@ zTTHB^n<9J)<(y*BYBGYb1Za32F8WdKHZm;rxsC>$_M^6`naj+4FE26{Zxy-in5acJ ztRM98+3(T9!KeU7<|ExvLpU@pp|2jDK^4!DtF)+7tJDP{qFJ<%>H$Dhe^`Y$7r}4w zeU+7xOsClXYXI-ucLu;iB6?)rl>$$X?gpfpX#jRmG2=>9K8no&G2ILw$+!l>^%J0X zgXEYica})gXD|ADi$lC>o%9+9Ib2@JZJvFq6!9WE9ZOrV(W=NI}An@pb%_6@In%! zT0YFEOmGa5W1>gFd9bMeV_n>Xll(>?+3$ds2z2g;obW2->H*u1` zf8MoW%rRiqg~0BE6`TJ54ppQORu2Bo{TgIR2{FHamN=+QzwoqfL1i;=pZi=;+2=?b zCsiP`-A9^T%`&ZH5_MTuy%lzc@WofCVVxIw8LNFD5)P8q`CL~bXPERXq&Ro)nh}iK zuH^frY?x|m`FQ^Znxls0@-h@J^EdPR1VaRqazuNJG(*>NkYapwE%{W=@h79(v#?IJ zZ2+Jr4n|U-OsB^_fynR_NB&He#(nT)*!7Cjk^6Z;LJq#!-nV)u(?~Yj%Wu3Qdwo={ zd*lKGA4LLTc$bF=czJf!r5Y;W(qj5=sI*QnElz?|n^TG6ZR>52fC3-ey!*{B(7Z3J z2-%cE=yiOZWhuJMv4APBlo3!BVJ)wU_zBhr4lnL~eR9*X9w5}K=e1C); zJ%%ZLW_}Pt6hbt#=l#UhhvX|R1-b7$ok>8AA!})Oe5XKN990Vxm)ruX)EsR+_w<)l zfFt%c_B(lK(utrOX7@$6;On7sut-Mb+-Pk9A=kWX%}CcU*D>wjbRUS*V4hf6$-*Z@ zQ2Pq=VLrO5H&f}=3N+F?EIaqgzDEgf5nXuW&y(6JhQLjwU9GtnH&xm{$g5K-r}rS- zj=KuZZ&^k>eeNujmvhz5MYaW`DQ06u%J?*Fa z%f}=j;-FO3#)17vtdt6&7low)r-OI;qLrp7*rq+G-(zMg;nNPJ;uH~Aa8FU~O^@s< z&h?Vxzf&v=RYkXajjor$-0QcgqT-gtlQ0CflsIPHt^Dl@R^ROZ&l;I~J$%qDi0h+J z#BL)w=|u<@_xs`h@6e9wZ(1Ow%s6&evDG1v+tPCxs+A`o#>hN^>3+aEqi5|#Yq{?a z=Xe?VyC_SPg=6EbJyNsxWcu}jE)jRa)}DCB@ah`vWmD9@ksyocISTfIq!d=9R| zod)Le1kw4-Af`;cGij*2c)^n`<#ydPk%t08l@3B;rL^U203Jnjns)=bQs}`dOG|P0 z${fTgd zw+u{zX$){(!p51*{1_@T-u+!5U{7!Lr47p3-7YgQ2h3v_B=rvMcMj&HKJAKF8~sHf zAwn*cEKryOLEK$FjVKFf$Up6oEFypB`aJmU3=uVOQpzSDgrRFsGM8vQMuT?fEED?X|8O_$ zLp3*eypxhmk=^CQ!3pjyq0G-@&-HEjUvX4Dy)A3 z`~+;t2#fimUXet9TU_$Zao4Z6UxDH+d^bqWyS`m=6SC@P#}#(=?k})0a;{4m3Z&<{ z%m$AZXUL=#PCRV)QKY^-M)7{RaeAm`)p3Iec1Lt*EK};CL=}-255B86#<+P;%Sh#5 z{7KG52G%0i`=@mMF8jnJ&BOZ9XNalNp180}2;~;y!sO3S-~!~YNtK;G zx%iyU&Xydo*YV^|%(5zFA{5RiKV3(mm@+wM*oOVvNN*M>wu5@|N>a;HUOlt#ZQ^{~ zj^s~0sfbr=fb4P0P%}!XnH>x9ENw{Skx1@o8o15Y2X*&3HZ9gCqB&Qemppz-k9w$|%1y`J0-I;;<~{6* zxHjo41mQ0*0ns(zP&)$uJ9eBdIca;m)K;YL0E+2F%S?@fvVJJ7atI?}r8#T)Q8JF% zL;|-YQ=vhDg{Nixi0msk%v&va?{QZT_Ca}|Z)9phK1$V|`g%~#$B};6qpTZ5VMgDU zXnXX|?mfbtjCY*S&7Amhi2X3LhLU;(V0gmYqii+%ZCew-q6m>G?g&wbngDrN{Z5L_ z($z2`8;&NiK@EL;nQ{_UV+Dmw^59;%JLoA8HA_tj7q&Yx+*3(8L-RXM%BYc!KIN~$ zeZKuTtlw0f-)pU6A^Cwi1awVSFM+waogQn9PhVX)^YRtYxeR9Wd+V-H9Gfrk+Y*A_^ z@eyYPAJ(05XurBih>z7FHMl{z}OV*mNG%HzM>CV=B6 z`&b!Hsl{u-r&XL}(6y6oK(ev4K%Bp?Pn^Ai@Z~A(r$_Lxmvu1k&z>X6h24Kj(+3^` zB||~q9~?BJ5_QUf|CmbKcCI^JyqN!6Z2rTC*Ecb@{{z5YNCSeO{jEzo>FCW`n9F{` z#vt{NEW7RfQ5Cr1)gwwQe{5zDGxf~RTNaxJ+|_AcGcOAqm@%Vlo6iWugmUoQdOj8a zfj`b>F5O0DovXgJmXb<_66VeIE~!;IH36>`{p_0-SvknBuo^iF#c4uYdQZsskNC`W zqS(~T2NHXzG97IS+Y4c=44D}Ef%dWwIeE^axWEFQRiz#38WHcOt*lqXVg+~JMoHkO zNe~8xVhN|T{+)mnz%Rk(;x3$-7q|!XgJoR;$I*dr6DQYPo6!DGUvU5eVNp;|Rm!2) zORETdp;^9ZJcWwbLSkul=nsv%e?2QG*pDI(n3-l~LTe_RJznXY)D@uJs3<6ZR}D6~+|xUwX=SJq9Ua|6wkoT;gG6cu;vojZ5vjR+gi!>~!d z9sHpZQO^AajVB^#Z3^hIsB#1&T`1tjA{4&y$`M+NeJ<3Sm0DFd-|ek&e$%tDts#CW z6oAGui1puD6yP@Do32!<><11E0_fnPiY*YZB8h?Au|$0;%KB#P^q$Jr#uYi| z(mNgmo>&Bhkb0OVX&80*|Djbp2ek&r!J~6<$vpFtoa&(#nZ?Lqixn_q0#pFmx&zU( zl_}7_d1R=RQRyy3p}}u2K;5LE)37ZML?xGrO^yVbLpE}2Cm*VcQNjdR_Vm3&+IMR-Dv6# zQDjicu*!{}XPL$LooXbrEooF2!Us=3U}0!lP1u8=8N?9kVd($ANZa@)E6eLG`5>P2c1|r2VjnBiHmy9_L2* zVU}dX0W=&~G;IfT<_`gLHL>>`DRpaFdOGNvZ` z6KsEfrmc7ce#1PP8_;etaKc{Y9hJSMy?IR-IlWoQf(NcY0r;XN$x9kCeUgpGx8v-{ zbtVBoZb52(a8nadKKzMwGy1y28mt0;t4Rjag8P3I5~B2U>?w?c{RWQp7}8Lr#j`^+ zJMqIv4%I>&ACsEXHU5H7zKEy8mqy6-7WH-t`inF&>^Zd6dtYy!$gi#G z7$zk&tHgSfJe6#`=y<6Mvn=iduxWpOfw1D@NZCm%LRy;#5V0{^9>eymF`ThY>0EEd zU?sHYvGNFCYm4T=w%!hJEXz?F4n}jVGB8H~b(=Rx?ktfK$G9qm%-?e$W1rfi`Omtp zIY_2OSfqrW@~m*?92dc6)@xGlI)tSgS7m=|J0@^%e^`-a+|BmF5k!*oN!mIGq+gQwziV$=7Cf78Xay=$cH&>PxDszN>go937k;Mwv zZSXTu;nh5y!k&ky{C_?4a=Jbz4*8YA!IJ^WYzVi4m$O9JQD?xI_@(d-Pe_Qc55k%Kwi?22 z9^-kbUjaVsj-#oA(la^awKcCQO&^=8+>8qo0YlL~(hHt0`A{6lXXig;zbG1m!@1hn zdVkuCRz}rM?eZ%d7&D^%JL%jGdkV-{iE{Qk*w^XOe>ep$l{)Oi&0Co;)I~+G={pT7 zIqb7C&a@;mK&;{83g#&9`GbeY5<^DfQIK>>Q)R@eT~>Z15*2K4uMAi(TFn^djr&Du z7u;6v7)YfzoNTPuU7mNn)s8%`G6x+jO9!B+h-_KNV@B}JLildo?0{yI8J`~B4Htwu z0ggIHPpAm5l*KEVNLgqntzS*xCA*spv}vBj97hMNYekaZK|@(mS7QhFRF&^YS5hV; zrS(u8%vhytS%_dz%R#~EaAR!PkDcqHZABZ?jzUfsbZZ-Fn%s+1TOOU5BDO#=!~7nQ zrYO{3Y-2HUe1Nq)FJ4KY`)ALg&qpG~OS9r#velw>$1b1msllfANc&O37Sogb(6YX` z&{Db&KpXE0Rrf!|sU>CNKPLcnl@$4Y?2Rb5adOQB9~iV5%J!MysW^c?1f$aydrTQn z!S?jvQ|^ia5k8tAhal+qA$EVMX1TozAXJS?oA46KdUUT3_~Q==(mff0alRFA^W}Gs zk4pyQef>i&g`QHDm`U17z!?pQ^4ON~$~bQ1In_J9RH|XPleVcnBJKyDBM7LnUY>?KDBGCNwboJ zxwQ$umcP!jlv()%hY-Cp)$z<7#n@1%B&t|1$gleB`SeMnC&Yq`z@Exe&8T?hq!6p8 zE(7)71sT4II#eat(377Au`@W1Gi55SK5_Q(-_i?0ur<6~ z5ZE+3`-qfY=M}j)KpgKK^4PDDbeogIl+57bnG^v3KLEg9_MgM!cMW&gmlB?a&~CbD z6jrBH)PQ4RbJ|Xd1GWiA57D~bxT05=m{Wz@)-<^WO*A+$pH13`n|~X&mjLOUeGCF7 zXz@;z?+Rg+!X1%|9foGts4*&s|A*p;F5R1`*5>N;)_9Ml(-Qx@iDEs%8%&wnq|!jg zHg*99D}5_1iECm?;wZy3dx%x5w6`7Wr>z)Nle4zp z!XyhnnpNcCLNorg!+)A26c^m`Pq6k@C)c3E#x;L7XQw9qo!d*iL<|90EO1dqkstwOv>I%HqPP z6-M)r9Dw7`2pqnpsi%T@NmwhTR^s0Y^FYyOSHap&9RNiJFr zi`<_T#&Bzrq+Mh+9&%kDe#fwuEV7#4-b;7PtXnq4gJ7a*apZqw&R!U59+qlM4KhV~ zXVjqfEy-)K%OPWUKY_S&6iDs;!Og02<=r#5?m~TA3Go~8+E@{Z-ir~j`C66S)nH3{ z5`2O>h2=n&2U`Iu@!OoHLx*PwZ4rwmc++w6rA#~6x1e{pTyzkttEn%K$+j8Tj46MJELf`@eA z4nv@Q!Lr}o*(jtKziM5syiwUDlz~Tgtr7-I|*-ORkG5|50m|^;D8dtw&I6Uk)c`vSbTXctD1oQ8acHO8t%it{V{Z=>wY?E+j zo`F4|FIE=eZ7c+l*qsXo_Cn4S^Kl6|8q6Sa2^FGl=-4Y-?@h#!dDtSEE1lFRj+V5+ zpgBPpX^&TDTmd!AMS%9tes5*CDMkq=nfLqq_DU>-;;AW)4Y~-SuQP28F~4(>w@x%~ zKp*4z7+MpXCXxO zijjku9~43Wr7Mx1Lhl?2RuNo;9=~^5h^e3^@MBvnPBV3aP-hrs6%LT=h9R* zn{{i?0btKfwd*=OFwv0zzoC=DG`|IM)M_!Q7kv|3pa@qDna<$d$wxu6Ke<+zB933P zaJg4rj{i%(+BO_=H;4cHbwGe0H>#4i%BMARLhT9tbqd!C1q3Tv0iBrT#HQ`8z+! z!NJe7W(>+`s))O2Kiy=!v0}Mt6^|%*!yP#EuMr+crv{L_;mknl zSQUCLKEq+Z6NDI2I-kZl9}>XyO*4B=0$sS3-pX4&=QA7Z*%Z+eS zbdrsXH06`O7$*;NOlE+EcrRh@U*gU)c~TH%g~DM1E`^uFk>ckKl0@sn+7A+LaS5qu zOh8wXk)}QV@uNe@^B`ZDDLVr3VZ8f)s|^{4JHsBM^49^lNUL9d;4bcxC~qXz4K zjG*=zBLY7RXyABHxq|t@`kasyytMgvh0K*X@Befb{l{`F8*jL3Btuiao4@pGo*$6^ z=Jk-+I{#@e5#QSG)Tb)4ooNjz1dH&K=O`uvc4$vHQOumF@(Yf@GW)O`zLbb@8NHha zo+npaXd&`n&5TXiIiaf*xe;rmq642QWxy1KlL5%Z=3pmldAiSfzo>?2GQf%a*7m5t z0!m+Wj(WG5Rwi0S!Dd%jL*5XM6}v5Gh=#vb1y7mm4X0YMJRHXOiYL)&gRHE?z$ZLi@A{}k; z#*o|aa=}8};{fWnp#k(^WxAXnc3rFiBbUKr?S0K~OY47uGYhrtd~lhnWgm{l`AAhM zf4|)@cFO-H^H>5xyXdeh+oz0Uv6avo&b4ehSDrV%HIRfmEL4y0iJ&BGTFgd1_mhN; z#QbCYq`#c>n!6EtY<7`brTK|cKsT?5wcaf72~5HgC=bS+Q%jV(I7J3!74YT8aL`7W z22}`I1g-@cvn)0pX!-oo+e04A9E1f#iuC~o&eqs0cNuH(eW6C`7y1oG?1)0qAP4GN zY8v8dY;i}AtIG>2+T-SDOydJDEOPL~A=1cbeEWcNBNl;%fDx)BaHhVk_WX9g1Z}Z% z2Jjr({I%`7CmwqZ5)6l^2{SzGTge#la^JVl+X963HL_B68RD6X=xHWSZI$i`B66SR zWF+a)EH^FgD3$F`Ghq>X&GJqk^Bv)+uWd!OT!o6%63mXD@CZ7mh`lQqB05KgJ+-D+ z?$gpt&LbJwZNdm4eTsE_ArlD332rd?QDUvZX(M-%_=XR6KQ+l211CN1(AeJSJDb}S zq`z2`V#&r>E_v*S$ZPM+e%{k1)oyKd5N|i4sGBO= z)hcbunm0-ac3fakD61=0olH+fbf{k&tav+@l4pQe+o%O;X!fQcDRK6`hjxha8sOd~ z`iE=oCbMRu<484pcN^8NT^$9VBk+Yw3My+NMgN#8B!>Zzvl>Fl#il_1_HmnXPM8Uumk#`= z`+z|nr*2~NNW*qGBC~aivhU z$H};Gv%v2uxKXCgP&sJ?M;t`v!XkfitO!&ljEIj}`iD)=-A>w+N4L7N&3aH2gXO4< ztk&>rZ}70f6|ql5nT9n(=}4d~)7W#^!yT&mt12>knhGGIhjrU4wR>6=^#1O7M(o`4 zx`po5ps1_$3mRXOhu&&*>x3|Mu7_;f_F$4wRjOXwSrwe@1QlE;%_kgBA3d^DS#$i_ zsYtB0%I?++0rxmcHF7%M3)$I<;%8{~C>|ISFWg@0=IZVw1(|YnW%4?g`zu0rD&ao) zNlK8oys{<@D zm;YbNN;&C)t+|G@t_IT0{T}AaOXmhLXcVzRq+)XScGtKWCc_D9);P@k)y&#?hZtLA zL@r#X;}oeTOdar+88VN0+Q+oeQsy&~;Q#w;M%x~tbQCmW2Pqc8(%#l90XYBSj0Eut zyR%0KnV*h;bmo~2H|^*~ndSg z@;;t`yDbYDihbPIy9vORLl5$O5$7aHvlXN3Gz7ODcGEb331qiW;o1ks@NYa)`cLL` zt5_M^P%ak%En2W8m2iUb6FfSuZ)jgvBGIe?^^7^>;H{+LQ83cL8t{~DM=NHMe)gE1 ze#gQgr9Z<#!odLKgj$JIyWjEVVE;(nq^I1ai4VO8E9Bz`xgy`ebFJ7m)-g}Sk3IuJ znm#1PbcJB7pYlY#3Ljuej;U6o%3IDdWvAc&z$N&>%s^aR*8--(qDev8hDAOm;$xHUE9JxJ5huR?`rMt{ss^ zhWF6IIz$iB(-C!7y&`yEQE{!R`^v|ID;9@He8yk{n{Pr5-uhFvP5CNC@?-MIM7_8uO0VhRF z-a1_v)@X&4(ra@6jq9Qf2NCZ-&(a0T)$#y6>RMireM%> z@{BFIPY)V!ye{5=g*VCB@Zp->B|ac;j1PXk%5S%<5latFCqJ=EZr@p@RZ6VfLKOxe z2CY>jp*4sx*gk+mYh*Tjz_zixIlU#abq8Iu`juQg(W{+6_=gZAiWwb{^Rb}Qrj&7I zExU>9S`v#KzYxWA(9_SACYxs#YQ^kc9=eb)CG7R9;iK41tA7Snv0YDtruw|DfDdKC zbnQ+w*k`?Xt!?-ut>l;AHwknD8{cY(H-gg5Rp<-f8L*V1Zj5^xchMCSG{*_iuq}U8 zP(V}K%G3VyUgN;CP6T>7YNKnmugzWg=|hupuOxl)xndaFO0-o(v&X}L|!fs^QNDZ+K#F#vSt0Kw+F`J{JCPEUTv}If) z`>Gq5>aWP-3*Y%QRq(!mm}k;|NkiU2@OAvc2~Rj24Ge_rj&Bsk?stW7JR1TC2?7f? znVd!p;RS=h;sFjZ>ea8prvF4yv2Kyi@Jf4{)I5E~$Fg^NPsf7VI*`6C>V9q(x{aqG zONBXgdh{KVaXQ>F(d-i^S3KXF0HkW^1hE|-m~T_8XlGP)uijzJOmlaBKC!CDSEXZZ zrRpA1Mz3OW-IE|Cu6QugnuvMqWOTTzn{7+BX!c81KcEQG2-RkVQ}kEM2XFqRif8ygt|mGHP5a}!kG%;lh^o-{ zarC#^i44?z7f|rUbh|qnslZh!q$`*yqCPAh&_Vf%#1dphGIH}?viK)QabL>R{YI=+ z=n~g6^N=4gU)I~mnD)cY&}2NH)zBd}WadnvqgT>);T3FMs<@`E4N_v=UuaSv)qMOf%$At?p6Baxw1$PH4YQ@opz32nL;=w3C1D@WPOV%6VSfT1s8VWghbq3& zl8zR3?DTWt_H<~G71NYA5Js3doH7;YR|7V-rD0XL?lw$d5NFuubK$*cGc_q3C=q#*l)mvp$|q6)!=Vh=ntxRVyByob8?vR}05?UN$~r6h z%XuhvTe==>YkK@H!wDe?_1~bj8I?#oV?WmrDCnpa8WO%6VJ5B&mZ9afF$Zfg3hx`q z;*s}SvcJMZj1wr)M$Mkfz;rqz>~5{bc1=fqL79#Cu(*n4{Cy|j_oS4g&xsA^VHaLD zD(&d5WzubB5Z|N^k4@`3e5Fy+rp6d#5hZM>U_Y`6{X#8Jp55hX5pagke$OpOY_Gnx zwlmunT7O5ecM}*cvUwXvg7|ilAYVV!E{_&b7Z6<4g^jRIAn6Pnc0#Fa`c;OMP%JR$ zQYortT{2R{Dn(13h`Y^x!Wp}WMzn#;R%-5$)jp1)a*HB4jN1@M#13re;psXP<T3!vfBylU3v;{}FHFF#TFk8w13n<_T!bvE%7p8!6|||6O7!Ga zc7&=&Tr-upgNBr#oMSW625aTC(1n-9Dv$<%0kA||B$(QUKh)g>?@sH& z&)n}xsf_J9XISnZbPKc4Nv76GeAe2XPri6=1I_o6@55R)eV1V7p)PNsOPEW6TH@Pn zS9KtARO|NzJkp3vdneJ}$`*juXb)$|n~Uc1NY11b4&p+!MSvqEVAX9(4c+Wm-OZFN z!wcjXf`CObp1>iP^I>rmB>16ScM*UYjIO(Osn_+qMa%|>flU`0eUh=cUk`5AOR5)i zu3p(fK^blx8!)lkVsBZ+WtqBFzZtJRUe~6lYn=X*jJe2t-vU4>m%CyhzCh19OmRz? zHzAOlCRalG1~^3N;I8e|qnvkNe-DEj{fIJNuAylyb=1yn)p~k)Vm4eMgw1b;2OL^^ z4$m{YH?tS34xu3Q0Qd%NZnY{GJlxJcyAzE(QX;~}dj}Bc$uCahV$@QQSmHcdFa!L(p?s+DI#C7CZ$eJ$Yr`Wf%au5_PkRtr7EbgELWyr z5_CG-pkWYnG#6xGc9l666Z|8NIQtKtL=hbYajRMx*`gK5jXRKI#zVf7Kp7NpCgYJS z*+2+uX{k@frB5YS`9ZXk=wV-nGoh2pA4V`sV{do^*_$xV8nRG}*=MNXIAC~690AqF zzr!=Z^VhYLdX|uZf1{D^u2>P?8|UvDF90zG(J0$-^mBb81IFGHN2?tWC?&ivF$c)E z1>hqcR-*H?^kob+m;a^EnCweaK2X8#K{#dIs=O$6;SkMZ9t{SwU>EPwUH>;mx{qmYEUg~S z(-_04L6&y-2jcfEs#iDHTqR0abQ@Q;V*et~J4!pa859xN?G3zU1?H`|-J2l#6D~AI z2@c58P$q_0`#L@z&I9z>Gco_9r=m_e>V9b_2`U^_OCfJ?)?3HMBjrRy<$V*XX#B7E z-F;-wtW%IGXZ`}fy-V48>WI7h^$+CUqA8Qf%zgw@xT=qtPWm$jc-g=T< z6X2IX^2Utai+6NmsyMX}3RgTueF8NgO1nFvtUF`pf_x;tfD zy#Q^ZX6@^vQO6N_@&a`FQ<^cqn{AtFKmId+?@pm<)y_k_rr ziB^}V@lPbr+>H-n!b>gDUf9NA?5dzQ+lI*sfECH#8{2y(@`C;it6nab=@0EFZve=M z4cEFKRsZpIP!D=2Hq5cBo4pFl7Tvt4rK*fQAUII4Rm(^z#Fb5&p3@NZERkgudC17y`01fmbD%KuVdVNZa)e3ty!eHY|Nk) zt|Hfk(cKsc8GRtja`0DyMk3*xu2{fI-Qk-XOiJP#kVIE!Ia4^AAO_CpJ%kf@l&EF$ z1Wv+ReoREVXq3{WZyqVJJzL2CXZTC^1m8702gQ<({~m^8r=Gv!87h%vlrdioNOK3M zbV{1@JE^vYTpujQ&2Pxv(54-JPnQAKKp6~jh+1)OZ>r{SKmdTmJ^~bXTO6oa={FGj zCuoQ;${5C>EpOywFkj(~`%6+6pr*i1tg7Ni985{4>qK9WTf&x?=lo^%#T9jmGy!U~rM?NPM0hs6wU?G{kd zTTdv+QbhmlLN$g=RykjYdp6nON&@-P2Tonwl?sBxWs%CbH>Vme`M25uik`7_;YcB83zpjbPQC1y689&*C~xsXhb5F)Z1}G&nT6 z?55HA)kkmj==pGV-dNdMBv~gBMpQ65H7VQ&z^lmiI~6Hn94mje`@3k>m|AB?ZwV@y zc$mT7_dd)kv8{8iGc9O0NpwUS|4MOEO&Dsw!>8PcW_V<=Td<43-zVVtLieY!EW6R* zLY+=h?PU0s^f$S%3jta8Tw74lXGK;UPZ*E@uQN^q8N=bDSbN4}y=HBDpPJG*dW-Z* zdiIGH=yq!1IHUrDVZGndpf`3k)f1jb{OO1FB_Cz>W;PJ@3FAtN=|qjO64A_RJnbfF zEIQGL?lOQO>z637_|zoW5zdv=HDzn%pUp7`HP*vjCF)%{M(xM|aqGO3g!Y8p%{mVn z7U~-E(nbejG`{HdEDuPfrj3$SxqJb~=-aS+@f|X1qL}NTX#j=qb5;kpu2H$z1(hQH z<%vOj&M)44v9=c-i`#`j7H7O?vD~f3qNW~h2_|7Rgos=<_H2@01Ryj7nP(2Kv~hjv z2^=J9RmvHTpV2sN^8e<^wOP0l`n9X@{PAqdhK;wG8{)=E{p?9w<)2sQ9@IcZN#*VA z`y9T9y`vcKtUYclGnSe6nsH?HU_8Tn8dp_N>6og^y?7A2GLmBm{bf{;LN#<_cq2pGUEEwC?bXD z5t{n<4^k&ZrQ60y@Q%eIzv4R(Ir)rww{9rj+?KPoRPk#VAh-fhf5PqwHhQach7-s= z?grd>Hi|;T#=4OYrM*s5I*m!!AxRZ`vS|sscf)oq#2KLN?VL24+sl}+Z1q2Lfi`)s zDXB&$c9fDw>G7-axaS1-4>6i2+tcw~=zuz=8Xd2#@R&z9c^DD5brI{v#XvR$01Ie-~Nm^i3jssbQ5nQ%l~XnXzdrU-%GvkU^qs zfKsZ^sqY$K7W*>cYpf47kcrB>$%V#_^GF}$)FeokH-0L(DHpxMjG`j6tMxmX@dkYM z2os#wVxo%OjbA(n1m+qC7N5opNBZ)ZxwA+Rh7~b+#0ZU~nvs!73a0H&^Y8}>u%};O z&A#4b!wy@G-)^$n3(x^0a~AO+*;~q-wo1p=Z>F^&(H$$axW=G!E=4$>-YN(#YW;$s zdRpqJemJ9i1JrsT^@{hSbShD)ETZ`EeruPEV-(H`L&aWIldeEJyb8JJorHXCo9`C4 zzTDo_eU4#p=8NiFhX7(<+g0+lLVNU8I(Vs;yZj0fac;s;J5V;VREHL>C$1`h%6V|0 z!PUX=iO}B9$apHfVPQJ%6q7nO)me^-K8DvaleF*lZsicS?5_3pk`+oK`kCT!BKcD9%Qe`e)?Mgb)wQ_xdPHJXEPV5J1fj-ogL}7I(1}Q zA!3Q?zcOfTAD`X9y14XDt#Dv7)Qr(5xTl<#bpSoF9yknqdwH)(7<{f2v6i;DAsq9;$1SFE?5T$Q`^ zPgY=Tt)_wE{+NF*>O468FsqADa}DISh}`7K=I%j%aca689MYFyj$@m83C`rPfv6%t z91w49Z3OvjUy=g82V^SI@b1`y3$<&Ry!9fxM2Pf*UgUNW>R3R83ow6PieIz zGGvryg`QN?B_tFix61VYZOUJn5O?|5xMytN8{HP-Q{;Kr3CgZ8{DYE`o=_K7bN`)V zPv^|pFbS0{P`(CQ`MKl3kzyw%DAzvjEoH-E5FMue*vWCa^n}?xLdVX^2$>=!mjPSG zLCFCtxbJGbp+)x`M|cwkk)|#Y!Eh@S-8iTE3J)D&HI`E!Iejem=Wqd8@#F2gA&Ypzp)KOvl}e}K!R(7I(K?+@L&sN8 zgbU@k8}Nrp^A=#8a^=7qSG-#CS?BL;_+o(Efa|>FKso|@OSLax6^P{f5-?EWi%y;%+~&GjQ7{K>BTGz?Z*!RblLUz#F`erKh&eT$V5rZX6^#BjN;r zAggJUWoO{u8Zb00EuiyqQt#-n(;8->-KbIYJ@Oo-xVl~^goJNT*`ZyaDsacaZ@{hz zwBML)(}3pTd1QuL$}qinL0-l>`KEr#_Xep_5^Q(o-5tj5K1TNoV+>r52%~z0`KVsG zEcmAS`R!=K>G>y_wok~<3-CjM4dfZdl zDeF{ml8V#5Ehm?M9Pz9jLo8Z~$S^YWpAKlWl{plNZy!_zYZRT{4Ld9T9CQgD@bgxk zZV?6T){ASL2OBECN$F6x<6;(7c&%yqpG-_T59y@#R_-o@KpRWk)J)DN0~|%z9c&ZZ z5i(%ZOnBx{09F9mI7vXw_c=!w6R#+WyL-?|+1k=a`#^CmroUhc#vj#c@MdnIhX@cK z2Dqc1c*$&DS#!V~b?J@I{%_^@abYSRnOd-#qziY$=!p8B-H{gIR%PzSyn!q5euAPZ z)axBn@bqHCYd*yPGhqSBgExnbj;uS;ic2-37aXY1EX!1#W-b^qA+9*R)xK&_?-;OH z66@eiE7`8(IBjdw{n=-Ox9whxR2MJc{EU2T9Ta52->JzaW5JQ!qwKI0cH04PEfrP8 zFj`LEyG}rg!a}B;D<0=I%^U36P%dJe#{;ANx{aEV?STX4WjsoSJ zo70fDwFotSU$SjV!C^p1(VYqcBeH!seVtw_KE{rwy#|3Rs8D-pX3>?5bI{r( zH5?rkCz>{F5@3(aV~;f)e)0for(XP=nG?yzUK3~&v&@kKhOVaNdGxz%n~p}|OQ{F_ z1A!?9lD0`dEl~W*Z#4)l)K|vV)WNR-0e-<283jtQvu0>ZpYIjQwstI%4|fY<0=)py zVDIezsSRJk@=u`>U04n5EQ{2a@1NnN#~AL6)oGi5b%qP!de zN1|y|R`(JdN5kf5-}!RK3OLe0>5Mh+RxUx1`{(U7pI!UA0H1sk5p@A;hbDiI;lMM_It8)QIy8Hg46&l~o;#s9 zxG_ul7M=i5eQz9>R3jGAAAIpC4T(Z8T!@=y%R~pv=$)r2( zL?CsMz6H-#U2`8A;WpSz;P$ST7D5AHp3G=|ZOO+l*__4#UCMv>FxVNrIjwT*oBjfZ)1MEwud1z-_IK*d{Gw+hp1MnU&xx-4Gemww2!0ZD zAEw*!|HK%vqBQKOnt3=$VHt|PBl^J<7rY)T4tz_VBo3ZRm(5!{ISr`n6mj8zA}B+g zz<2uJf+&4qY`{M%E2`V=G+kI1;>&9V$GLG;@8v9rOPsr;9H4}1oH5*_*oXhiMvWSF zgnT(U_!6(n`(^?Rwkx23s0D|N10@2v*-lmC$ropyDkSp37vMoAiji&)uluJNLGHnA zw$PZ>O*I3DRsPoD*&O0a4)5JGJoM#E64TH%X0E7BK^iI&VLmnY#24(X$l~_tfks&|HoJ>yjXy3Y@6; z+zaIkLU0lv7s5fsxW3hmz{Q=;$Huwq-m9)w`z8o67r#S1@M?t`48-_BoR@uigGFf-&W2yW ztQ5PT1CpqsUTc6o5pW>&c3dls8Kv~ag__l1&(1$4MY`nO^Cy2cA0?}22G(IsV6@Q^w^lfSsUlas9fv;`)uCsHL{b)?1*^l$@aL~RU zE-xNvUY{NI@^vKuag-@e7Qqr5znWh|TrVp47s-7LlUbBVNW+^PYN#bme3jwY+)fZ( z60z!zn3Z9(l{O~>LCnU75}~LZ7Cjhtzqt_G$OQLgOGX>a zdBTi+jR`S@oVWtx_!n=K3L4=}Yg}zGp|9{l7&}#h$D6M}K`0giu4C6{7={A@J%q+w z6##c-cxOCamG`S!f8bnUoK1cSU!#lBPt_YCuC2^=a?(L=cL5s4sFg6kRC4S0HHPq8 zj|-`j-X;@_7Nmccic7uv+R+rA{X7^kLJv%iEbLyUAK5}We zaD+dck}n8mWkJ%q+KtC(=&E(tajNs%CNI|?PJw0CuiOU9kb*~Tp?Ex!J``@D55(}v z)aRmW$lLm+{8-)@3Cg<{ADrqxKjc4_2$be&5cYpQ&XF^&-0sxplsGeGp8Hzb$}H{* zfAfZRxYJx(MQZcp>z`g5Q-zOzj6ra?g3>6cE_LH0E~b6ELg>1T&kjfLF`0^E=voW? z7yCf*E~j;H^^UNCk3HmY zOc2ayPJIqz?~)HTI+pZ0h;E>=H#h&^1&YB!1@Tt;kEk;N3UF#IjEiD1X5kGzHfr(} zo$4oXeDph)pbIpj3#JI$$!uXeMMnQ`_8B7Rr<}Z{lF)8i{Lu9yE;nC${6T;vdl7R` z#f<{XHe_ocBk4~!$8a8@PT-o401U|sNhx$z(d!Ll77_|?>_23XA-OPAiJ0UC`Us?o z`EwzAz5Fa`zX2G5MPBlneaKgPz~HDtqmfI7eC*%W@EX3eIfB|@B?y5FN&;1qel~h3RE0Ui$ZjuH|XI}^g zyogRx?-8Az735v=S~j)!IdrnxY-N?c8U>qs&9!#SH^DfkdbXZJ)sK0(E%IrQ%{IJC*7s>EE`z8qh|Z^4z+#gj|0X ziv8#F!F5Mu~%(v&E7uCTO1SmW~|MY*r`Zz@|m^cA2Z&L z*OuRLn0odoDAMvMCwN2KWz>!m+bHE|r(*R=^IM_u-G!f!ftpMYHwAdh^|bqh82|E= zC(apo^-B8Nh!UOL&6Apf@g`Jmy>Z+2cYVjWhF@^OcF%eQymsyZBxjc~q;>G)S!7_L z5~6~`2K|^gSw%$ixC`j89ax3?1?XxX)=&MRcnZwEm25V|0NfHyI08Fxb!~wMk5|sE zUnF-Ht?02}*MRql7W6ZaiEKkM?xp9b$WKZ|>P4VyE=Cm#5|`3BpIqyAsh2NQ|J`)F zz0Zr3#&L>0`HfDa z#GNXXU44Ar#wcQ$h6M#2q7}Aq%Ka(_gj=PpMW`+zF7a1b?b&5eD-Ta~{T?7frAtX1 ztzRne1Vx{j^DLZ*^{*FdrdSypJ9rM&hrtr;=#|%nqUKlO+0r`}%@3<)x~M3!PK9v) zboJ9+@}$qM>K-hPRfI6@ctxMwjF_%Kc)=|inHv(g+h>jNMHsVrWUvP3(V0}y-_Lyg z_l<}?O-_4I=6(z;0_!n!3}3szD|PWy#1lVGD#h!F(3(Ff$u519dhpR1CzB)Z@qDs* zoR27xR}mm(lL&wy$2$PCQuK4$<+*$ks4Wa*@YGloa_3+(AMUR~Fr|lMIFaodr36qHVz( zH&C!lZXG6^ADWv^^*!|2petWySA@A|p$`N6v4GwPU&qDvVHQamkcVJuo;r&a9mODU z^u+-LG$wlvf)5y=&#@#sZt)uz|6b7htBEckoXuU1<0ck~Xx1l-sm>*$1oDqxBg((o zFkU!LISOdSU3*@W-MBze4NJWHN(q8EZOUl3zv_*C%#(8Mocq~8qy*Qa(xd(UJ*FPL z{`0YM>yqNOI}K0APk_J>hN8od9`6E_wEu%QSeVh)`#h^wJ>mFqS%I6 z#Z!9p4JFoF&ebmzCPCaH_bOjZe|G#FZhO?;X;;wrYOWSD=X5NBS_Z=Mexa3v=69?+ zqhndHod8mzC~-YsAx5TI8+4Z!69k^5odHXsjwTSS!aTbb)X{Q;-9!x#$SI_Jp1f`% z*^H+8Wk)lPNIF&2R2Wn>K@f0y>8*zzIZvGNl=G3|u_$DYE*}2Jz~BIYVIw>*WEwIq zKcGt={^8W^^b&At*yu=&k}9KO=u{Xj7$&b%2LzUAdD#*`M9J~DioglF?~Y!+5FYuQIxTTvwh?yzDy zEM%y9WV7P4S@$A5NOnt};YJb=#I)Js5HjI~C1UsM4&QrXRh*FCo3umgeF1X-7E-MI zfI>9oNtD5jtg)1GCEMVsOTo{j@iMA&2U56R$J`tYtcpRE-DydX;~HDGpi~S0e_K#K zJ>ItV?P#H{N>*~f9ZEJ(}*V>07Q%#BENGWDVLzu zHbLUz5C}>)pBjy)Z5k1`R@dZKefUuo$Ua9JK^z#%ggxQCkyqwJ!!=Te)XtZ1LHc8N zJ3MtQsD9MVkx*IOiayWiK2G$Kb)7;tRzZ)7F>cgBg|DFLzT%uXMMC8_a{4Ch`svBi zzB=^u^^0}4sBO5>1RxvGNRSIPa%iojeBU!68K9}=ig6AgxIO74?EC6mAfnTUI{Kk! zy8-LS%TZ0OG;8&;_mHTOUSF=P={+;y#JTZS8Y;@n3vQj1v&a3Z->NMxgt&h?qx9~3 zi7S5zx~#0YOF7)GFZ-5O0&G~zVD=Px(jR;Vw@GRD+Jjre!R(p#2aTW*OF*Vh$i>f^ z(zc=bllRyi8Ux1%XtksQY7 z8YjB#R_P0EGRVg7SR<_|kfTdYmJc!pmX+lo?W{yk#t{H44#V$6z(wlPc9bVJG1Am(-i^}r*?F4w zCG;2UJVHrKn18+=9SN9}$?eQ;^H9Ox@@~H;`sd7#`7B~)pMxiVxL-~NleXCXbIj_> ziIsRt2QMBfdO&8W`%kz+vN*Y$S*98|vXy%iyT>%a zuQDZ7qgU}U9?UV8N82J*h&s2`2Xk}tn_hQOa^U5Bc&OKyu`f(0&M5P-8;4gg$(0;~ zAZGaZK`xju5t4({++N~@uC@(9gJJjo7|hJ-w+3+(X|wfu;2auIwPI>UDMU*$GPxJE zn?kV@WgTSyrQ|-9NpA8VCB&YBl62U`P`MxmyAV`)*2#6o6O4px^N^kIO2kY=oPSUm z$`izFTV$(oo2PqTa@CmhQ&J3oV;Jw$+hF8TAl5g#=2qBmBc8L-wo>UswW2shV`Qm3 z?zr2eKOfiRbh5-;1CJa|^RPu-)MhaIKQmCUq!D0oZT9mO7H%v6q-9TCD13<36lyhy z1>d2scqtHbkPt25^9V3y_q*FyTrDh; z;9}*iY;{f5!{Gpb;8g>hauiOYscm=9 z`3qb7_sZzuT*QH`P_2WILW;+;?d#=r#h{fWpecH}izw@kVG76JjYlHmI+Jd%ok#hJRx?l{NvY8rf4?6()K9~KZu%fpcVB^4GunAO z=jW(+?{Ulq@6VV+iCQe~iIQkYdh|ubK3IxhD68^{DTDt=hhRSfV(-3F;kFd}UBi4G zZ6_TsPf%8P{^}}L%9BKPAoj8UJ=}wpj;s=Xh`bye$=|neT8gQI7VVnk*}t{R$siGW zm1fI)BM@t}>elQ050YKCq*|D*11FmoJv$l%@Wru21FgzIFKM=F02VG*F`*;b zd$?{1b6K)di)HiVcdA)APZ$iiz9nyMd}0GsSrk+5X5Wzf7&}cEft*=1#?`!^XdqQJ_$S1V}7rzl2|06hIhE`q(F`ntSl11gR4P_m58)`796&d?C^ z9I0SfO_A7H(4^H)Dm8o~d%;P$x)TkYHV3&^O7hzNUJ?!+AsFVONpw%8|JrW5v)1)l zQ9kQVCIg|Y2_h-bQ$Hj|094;`6dJ2yLst#088Nx4wY_LLPm-gs1$VV@$tg|E34pEOVe7o`ABZeDv z47$vq-h%abc3n2z%o!%2S=PiGl*Ra>Z6i|4cz-m__tozi({d6p#%GM_ZH5sEz}Obt2d^JU;0_)a&@=M{kFIk?P&k4cL;rnRH_)4Ji*#+9=`L z+NCFda&6Z1ElYa1*#Nd82zL@>>|j3}Ih97X0f6OC{AOsga72K%_jO@$N}hwt0d(x3 z+~@z55bOilY_tg@^TaT43fmE~&A77Je{O6~$mMe6)}b{?p)3W)nt(147RCCYJ`=X1 zTajIbCB8nCv2`@?dPPq_2%F&Gdm=)5RYT3^3}e`|xgk<}o)xD%6P8SbT<%Xo)oU2w zg&<2lUz9Aa!OS{(xXO1VTxeE#a;o~t!`RmxGP0{NV#gcwDa`|PV^=0gAp0~1km%yY zEyzV`N{t{!zom9$+G!~Rktg_qyjP&Oi!*?D6Ql(R*04A50EH4`feuw67n{ zn%8k)zRK(FeH(mBRs{yL7P~%86Vm8`0haNNvarATSp2naXs*F>=KVoxd>wJdC^}F% zI(mBJbT}B{24(Q&9+x{%VLHt<(JJzXux6@r<6t@5HAKMF#Ya>vqhYrGx1DhF1!q1D zDioh4Ztn77<%ne(#Ac2ji{ab2cYZ^mOGK!uYmM+7|Gg;DrJ_H)Lp+>_)3?RAaqV9WPN}G7p(FIN{dq5)w&Ro@YPR8 zTF%oEP1#3F4*f8VSL3bm5t4t1Q zHIWBf#JzQa7*4f3N3UPh`(gS5Cz0^G2t=dj>*%N8l+aq#u2LLJkf>}S&PR8U=FQ8k z_C2FS*e?EOmmwNmH`+R5ymnj*ZGk^p+!NJjEuiMQa;4?ByQG29;lES9+2ObZqBQii z+2L(*JYzp2kg@^gIw{=d5eO1Cg*Ah}i-up3L)g@`9IX&B7}xUjzwuhlLMyc%wLn8g zLG0d~g91@KXZrvmVg*-E4d2bhf!@0i={HtwUg;3?YP=*{dAr5?Yav4l@(78XTs6uK zP(}1j!r|w}mH+=O)0n}GfeKaY(E*RM*{KY*W@ zCaTQc$H#>N#2WAof#X$DG>x8Eq`2%Mtiw%S)aS0GDuQ`XUNCA)4$pNxvZAP$p8}Q2 zf=x1S6JV2HjbQ`Dk+Hkd8_Z%PhfbIrou3iD%ZK7p!=ao&RJ42vuS+phE06Uwv_F<8Wpt4RrlQxWvD@V$fYNUM%aq4dMMUO;w&smBz->B-z6_*>JI5`^VMrl?uAHTM=#Zgpn zP;%~}2_^twhCB(Rz+&w5Au1F6;9_>y0Asm#RVJt$tupRcqV$>Tf_h`}x@7-pGh*+L zpsiGVb^+Xd216w%o- z&dJ0Qs=d7d2dywisA0}~-zxg^u~nZ2+RdW_u|)9zfMZ&}Tb90FJvDOP!CO5mgRXcm zZtIw`K1#7LcM@QpA9GRrVl{96+H-ecaW@)`sJe9K4>%;%el*-K;dpVbtMa7I! zkF6KkFNBnllu_y06bx4&#)Xrn%^2pjcHcZwS}NQmc2JBFZ(3A8DVFZWO|3hD zjL$vX`*(G#_9>+N#f5j=G#1x@Eqj0^qL%=Jv4SEc8|jiGm5wgkjRFyu=UVB?CWXxoM;@o2K+~%F{9Ds31ADg+B8$aC2R+)D4QKzvY## zl-ltj^KH3Rvhnd!WnlY4-kZY+HItJ^>~+WL<8^d$9x{$h_DU^ap)@Hi=Wwx6zWN>i z_T4QLf;v4$YXn$liAXezFvq?Bdv;;U2%X$t&NUXJt=CCw46Ok<(%FraOhJ?o*5Wq`S z#o}+J1A0$hn>u`Lt5y{pt21g9{ob!SJ|xt6Za&eZMP?QzE}tF|vBbHy)LreK zSiOR;D?ML2ul`1uo5C!V?dd1{avAJ12hm0&aPq40RKOq=Ic^bH{$RcgVRG<% z*Cd@ziML2UCQ`+c=x$kRn?#Zn=0+wuw7Y&9c3q=zhhgIeCG7BIqU7K` z?8z6aZ(p@#AQ*mEk>cN`y)S$|@(@n*Nu4SrIaYzFK>KTtyHN*r)Uze9_!K6%bZICJ zCbjm=KdNjgmA3liUY_^bRTYCn$Dztqr2iL?wQ6noM6$bg3CL*pQLb_iikzJB5YLsv z1h(bP>Iz{CT{W*ORLzOsnwdj;P#*~NnbyBqAzkNP{^P0wU81kW4*YS{T^0i>scy^l zrY^L={T{Aq-L0}ElQBOzJ>z}f>mv!!`lX7E-u=@kQ^|f zP?T}&8O43{+i|d=b{~v>9fOp$qPLmsx;6ak)GUw`8HMhj_>e_h<&i?n2{HL*GS${j zvbnpzlkbJLf|m@SZl;lw8Xf6U{uqqV#5>tyL@xo;OYaX-nag3P>WOUmCaIILaoDbi zP)$fLiyO^JJmEUjUWX1q*VQ>WIXKmy*i2|}rIhCa=cXcg@M)a|!eULhD?gpedBuod zPV$;AO%xZuRagDr8)LObLbo+aX=t0-JH{s3ZONd%umkB;=VBaFf8CIb9JdLC(OV(a zLJ5OE47Jz5j~ZZsr&vIZC_DlLeCZ4I!aUGz`H6-Lb#39CWmIq`wsnCnsgHFA3o?B4 z`C_+KEbHi0^LKG`{U-Wn8h);U+M|tDD+fufP$8!tq^QWM!9{y(VRpFAz)c#D`Xj~% z>Lun0wF7RaF0bp!bX^402}Nic|7bAl?2Pxu+Wimo?PZlZ*yvRrA`&c`gK&duVX^CP z&_YiQ2;eawp3U1iTJC!Xd%X=LU0#T=iL0(Oi&aX%qA-C)_J>Ypnh%a+msqKO1YT?r zMm{et)uBOXd5wgrr?s>)+YmZ+cn1zgzpUKGh70@fcN??Ad0Ca|2$#C8mxM0bX7u-~ zG3cDK4a(VVo=c&@^==ZpmNy64?GjXLbBd&}7;ecsXlvQ%$7;mWZi-N&R`C;@&)*8L zY5VGriKcl6#YzL%$`2gnwy# zG?JK}Q-m;dSj~qWBMb3X`)f$zY;ML;^TC$md2c?Ne%Ce>d~gOVq+z>d=M1+bmO>ox zE1}meiO2Awc-oa5KXOZ6h>5HltMEa>zl};0Bn3R)?Br6?9XX8ITkW~*oIFa~a5ypg zRY6dZVr~?rre>Z-=Zf`@Ikb9L${eNLlvUdV6(ZAN#C@_@ADZ906M(H#v?&Y$>_+k( zM)h+l1?I7IKCe=vftGsuPCj5MVXTiYzknb{&+J_$LuwGXv7k}6n`t)BDlaf3w?oybF*gxf#E% z`(_&A?h%R05w4_#Xk{0NGzUJ}X7v#!vz`+s;=gF#kM+_p*l!x297HRA0_6Xt5z_pB zy1*+Q9oS>H3lSoH<~kF%z^s3L3X5DWW%Eod{}`z`!MYd`YUROz4-c}@TlrPs}~S)YwMY5 z6s<|L&%1a@cF1&nvKND1^Onu0>U`RgX_o*!h=(~LCi3x=l7%L5X<8zuI<^Tib~a#4 zTM+~oR1g56rU>c){d}E4y{lC~+jNZ(ck>U9Zb&5@8!>_lYwxVhN==PYvFJ>GMj6(+ zj)1=DNX;JfvxEIRS`yj6ATbjQeIkj$%<>avDKg@-goB)rbkU`Fsaj*Y9nYGGk!H}~!4u{hN) z8*fCJ)$kNGZFj$msz+Z9e92z@-cj=b#4#nqQQt46%iA#W?6tIV13Sv0`jrzg z9xjovFk`v5=?;B8z!!YO39jl>$gto%s@&(|9a|;2`vmKbYF?v9zf3OmmUIaAi`D51Zt}OvKCzwPgw0c|mpk#gkRgooX`Z3$dG%D9 z3TSe4q43a|U=LM%w5qahFRSB|({IhjobAYIIuOSV zYPsALh~Q7)FzT3knlpF~+*MbY|4y8*a3T>aKT&-bMOF8_Q!hnQ7U^J8e5T4syae%I zPN>=p`si1emLNR0mft$=#kvP&UacSSBxK zL!94Gga2YlH=w&Njd_$J7RfmxP~V ze`BzVbuiH@WOEDTrpSUyj&J}<01nU~L9L1`Tq`yH&C9Zm$Fxca9B+2ev_i`aCo{G- z$}R`H%Af^{8PiQS<9=1$cALc>+6uOMx;>P0Ad5|uFPJj=C^==~=v?2xhmgVGgFfV_ zj+~@pEG-+|k_W}BM`Ta2J}w}b#9^#{TKTe)W#`)5Z&kZ z<1Fau&V5LxZ}NpgSP0a=b&6WBOW7^4jQsYKxo!GW?BH5bLMi{d-W1O$WzlT;rJica z+9M9sjqNjVsJpMzB1ud*{sKsw%oR>UW9a1EHB z;S%p>yuZ#bJgT6hKL;%6ZsbYk!Kod|){~3CV(QFm^Xaw=ZZ;pVm6rz;6?xDQGFO1n z(uT+Ub3Q+L;%w@YusgWQoyD@m_!5NzMQ^A~Wd=;*n<1C!A|R;ObzX|7l+TX^#rd*~d*cq!waIVyjl)Z`zyInXmZaRKK;( zvoie&7ZibuV^zx?+YU2f5R|axNlEb{zjevoD6*7XUuj7592(FYi89aBr(B#6xtDVYuZ*6?ZhIsZ_jdVr5 z;~YF5&Yg;@Ditd!%V?B{$6@OD1e$UO8K-zlifc(^hN zavp^Zp<*B!`6JoYX|Fw{yc-7Ptnaft70$oPWw*^w+FS}eTOvu5Ash2gJ31hNN{DJv z6j556g+N zTIx${smz+@GVCL-#=zpKnUI4s$t1{#5sT&XFilA{X+Ke&T_f#EH>xOHz%gclkHfR~;{N`u`;u+7kJDfmJ&^j$&6= zjl4Jv?Nv5yb~ac%^$)epkPO1lJvBP%Rz9*>c%3Z^K#WJTipnUP&3>bCDn(5OC|KxA zZ*;GXt%q2|7~xF=M0Xbsw1D5DUhNuAec+G2eIX16xts}*Bn+FT_ma0-Tj#G4*4Wz7 zWv`ue#D2Du4`eR8ErQ8LHpD?71H@So=7W@^K>&0rmNGS>PxLwsu|>~zwKVxeJOjLQ zG=49@6=5jbr+(9l9{c(e&@`F1`11)^*Cf#DELRe-F5nMdLA@^at`CO4pu{bJ%RFbR+Yih!e|K#t-RgEv3V=1Epej|eO>WFW_ z7;C$BHFh^WPZs%&jlh0bRaF?obaj`7RB<7(^|2@KXJOR_jrfq&bt%t* zK51beF(F{YqTcF-4r%Us#ul`ed2nNWMH^S2+L*TdB7Jw$B_zRrOtzMNqE%ea94otU6yY@@+Uv2BBSDGZ0gm3#>~znYZlv-O)?}R za(3bAXo z+bJS8kRYkB*>uByETBT61!iNrocH6!cC4{GYWM1vq`Oe-Flv@e=uHgNI;gfbCn_r zx-Y7{vPhcK!&@)ax6i24H^_Q+ymJpw=Ve!8dgg~=uX58ZP>TR$k^pbV8&7Ke^$f@N zlf}SF^&gPL>8^27LB>q4-3ch8fy$gS)mvP)276%lQ$UI3I85vPnaBO6t|jH3!n^>;a+1SZP`9x5_OT8UacGu%-y zMplN8kMuDu%8W7#;*EM9buMJxY)kT>5`8{&x*+51F{9TW?*`|AEE)+>g6eToBpbB- zP|=&e5^Km(!nV zPF$cDxXhCCfA3+RZOu1{^cB&@d^#Kf z$e<6)RefA==uA=_;ggR9vJA;Q8c$|OdL%1KP1{ZQkQO!PHMr*U6b(6A#P3WyAV7os zOJPn($*&;CporXHa$&C=9|A34&3Bky@Ye#R!Hu_@XN{j?=+Ixcz~~j zaG(SnSqX9uLWy-|SyiyY`QeK{@IWa_%=T#vZmOE=~3G2{_wEB;j9}O^TLk z32hF{BC_lA71)9l#=2ma-4>H5VsMbH21LI$09{Px4W)wl6o{&1{%V-VI1~#L-U+Eg z<{r3ojGWpXKUwKT1!X0xd8hn++~-%&vaRx;lE56@QKokZ(6r{C zW#eRwf~Bn?IYfA3pn8IjYXt(S4$Oy_%au>tc^4NHZ7%rf|AM?r`?OEJ$*D&gcn9YC zDBLcYt~WbD zOF)jG4$$jrybRv03)ldmGD};y_ErcXTe*)Y*HIy^#{0_Z#+PQaR*PdH4sN2|hsb}5 za|t}$P@XMJ&9L@=i23xXQW?D8G!90iV=G^g4=gBP?v4cbJr>sJS{_GiK7>69uA%E*2gp7nO@EFI2=|A&Ct zeIn%~*f856y8-mH-^+LL;8Vx5IvVNFjf2A^3H^nR?n(*j;Q2O5PMO5|99#Go7gHP8 z6$AuLM50~LhdMh>j+|I4wFJmujKk<0#`!$$YsiQ=r|waKrmPjfqE07Da^Cm=ODdTR zP2dv(bRg|+C6Qd#?kLF&An_B2sAcpX4N<{OK4^!hVNwl(?C%iSEW7-+jT`L_rLj(da->Db4o(J1CoF^euHW@A+y$fj!?LY@Hb0E)&i0NA2vjU4sp zyelVkUUj_MiJ0JsHXZU0ooo3HdK-O=Nqb+f`yOikFIK}a#mm-!2Ai! zD503CHowlH*tguCc24uWi6XCv&h62+h`!tdmK9zBy znak3r0S#0IdwB8(s+t4!o@}Les5=SMfj0Au5P?_Zv}WmB5cHx4G&AnDfpS-Z0QMUT z7cOju{COO@OP!P^@V9GO$UFs4ZG+Yt)p2kyxFRnuDS`@|T|BVlfZ0Gya`}iS!nX%4%3>Q z^5mkR>@sXB(Oujz5gNez?py=Un3_57Zp0&{bWKU##Gh5KT)F#-QowCEhb7~=VyMUm zPt*nE5S(?0zYo9vYfv?Pko?1i4~kUlPQW|?uKEiQyZ`QCVN0$HrH?~*$lc~QMcI_f7ou~$JJ$EevBY!ZfjP!GOYv(U zh750xu3l?Un>hS9b0HpMrZ0laRdfGaw|EHN0_8`&NQO*qr4m9^Zm|QLNb#n-R#)rW zUS?!4unUs7=4ohn+?2gH{&M!xWl9))x&aVR3XrSiyRE!We2n6#@!6|%E1giggTnU> zoF_sEQvFuTqd4Hm#vdBY*s>n((Ar1}=J(@PnCH?QE<|H^4}SgvE-*!Pwu%v$V(m?E zZ&8+ zyyanuW2w>T9gj}8?egKe787C_k*56H^W82SEjF-ao9&YrAPkjlofGuYam$Wa21$?{ z)tGic4?KoGxk1~%D|v3*0c#3a0odZb4r+^)Ft;t$KHYnx`B#`HBEOw;{i19?Wha35v9f`E_;^)NqJ-dqa;RXObo~+WSP&W?ayysKkdmSgJC^(Vm@T#` zHbSXV?$33ODfs3~6%MmS@m3C=s%Fs&4T3^4v(cH#UAF_-3_*?~TcY90R~)ea07(}~ zM!;JX{-UJKNRpBwnq$QrIUX`4`%wyt+B|eOp%a5*0-b1QPMO}}b7pH=p-njKzObU^ zXc(HxE~b2~!IuW(isOHRjH9IdF#c+Lehi8{%I=o(akM&A`8cX+Bs(arYB*9(0Dz-tw9MzY`%>_8vXoWX;c%eDW@JVJR zz_9Sor{9iTa>`A(_ew~`F9zI_QB!CLV|AX-OnDTAl=4%+mn9d;q zBV8tBli*7k)!30vv`NxQ^@B*yrc>IJDyc5mi|a$crB$0gqSe|Q8xiad=h$~LO6#oq zMLeJ{=;Y7=$5~qUmq!BN$}Oio;P!+K;FJmU_4;wTWJV8AC1mKqc(Zp>g`Xs!&Qlmu zg?o!cy<)*vXMHE&EJkiWdp;8#7#bJlK4Ui@VWMp*wk@+e^TZ6u0TwyEqalpU^9Ibf zu>TjRK0@tB z-ZCLd8f2aZaYH)LN#e~FNzo7dr1^+fx>P+@sIzQD`z%GucZ=6bPhi&l6)?yB&PtNJLe3pjGjKE>{plh6Fx|8z*XHbd(>QL-T4< zfcQ{~+8+p!OPz$p;TzhH|D)pMUwil-ctfhoU);MqJAE{MN&AS@C0b)nH)N{a0|-jW z3bPRyLuyHFuLf-*hNIY*63(wO`*5T*yv(>`>S`5={7fqd--Um)5Qi&8K61bg5?DeF zNajLfN9Kg8sBA4g{Yu3~{wi7x{p+FiwIVv}OtCr682i7#SiM+9-__)d*KTTrWyw{j zV^FnL=hfg{SQzKWJztENk&)S$_pT3uBk>i5#$&1ZAQC|7)!z%5dmo9{bA`Y8&2T&q zJt(!MIVg+W#Zl3#`S@%m-td0w+jpV{Mj-u(t8`SX?=8Bqf2xoGYRK0J=g6_U3ns?& zgRzc0Sj&N%q~cXEnrNQZi50sSyjU-?)db8?dyxK3pQaap-!)ZH4(RZ7Am#It~RmP3q9;ZCUp=N1*JRel6jnGSuW3B z4aYmwCcIr@A`Ut9(%dWq>3eFhU~V>5X36d^zUpN@SRGgwtqd$-&kiUdQG2U@>l4fk z9{RimI#pCvDq7f71gQhf&=D-#A;;_AL04|U6krf4$qYd0t_$TzHC$wQEnI5VJ?y7n zpXZ#VK=dd-026qtnU)*i(3DL`QT0sMM87g(W^!|%0SIIyN+Z@KsRLm6T(os>Nq)5{ zW%zKjiSoQLm5osU;!g8On+6%GHr$c8Pk!+T?MvBI;Wkp!6WFt=cD;S+!c|@L;~_>* zX#-Z6_n)X!2qJRle-{uZ(YDj;n$MAb`AhJ;GL#_qe}&n4=lJKF_e(TT;J;7QZED(; zYD$K(Dpl?}xAt0@2Y5Tf!?Rp0`;SfC%Az*=GA-*2(0NI#@2!1-jFizgxty+j# z11u3?WhUpL2sbSFCe`-;-O)?9G!P>0gkDEqDi)a+7$k(rh_jB6jf0HgXToH&WCuE{ zriinjtS_YJ;r2!ZG+`<71IyX_QxMPS&r$_mdu{;>e@vs;r@~;iZebYp>}+BcA>q^_ z5!|0dqii)yf7+jnM9;2Fuyq9#`A&s$W7>+T&QnNt^fW&F#?2T1JAjZqdi_gS!6Rab zp*a}u9?Ye~Q05g1T%^AQvJ3j0uQUx+&8T<-S4cB?jmDf56sD!WXf5veWp)L0|4c=tVoN$ZsCu<02^AGT>k-$VPTTEVV2-W z{?SX)Wt+kjCJ`QhTzz;qMu?twZ)6vywIW~mO@0<1zi;pHMiIVu-Km_+5b^E*&V@KT#ybCaNYx2KWPHn-Xm)+fWzqt;KtP6QENYTX7H$y<+ z(vfyF4oGMFOeC^ht1BiX^J!luf!g~7hc#MNe+pSHXqjwDyzeh$vndbIjM>zFZ>uj@ zTzV;D9#0)K?!!t_F9|JJ=ynlgFIa9_uz&Li&AAM$$+-q^7DL{dBq(ByiOz-gNw_<{ zomk*tuxP>Ht;kI5n#!RVn%kT!X2{;LHj4~?pUxn^$L!ZG!4j5KBRTnXGqd|PYf(;8 zv}T-F#FWWUgLv~;7qdHYi@v9OH@fRLzy z=M}Ts9wam}t^r+1!xcoHp+&vFYbrMBhX^*2zRE1`rf~)FM2jcRq}0P>F#vk{mJd(& zU$dTdrB~085!>767VYW4u?LM_N108gLoH@x9$#}zGoDXQ4ufB7jhg{KPAd`k-@u<@ z=d6!fHVtKY-mJGb>k}p0zw8S}3I=!r#&i&44sScj15xYc1v()+Cnb(9onOQKsiLm% zE-Qj0Ce;r^+*3tI2SglAf>u@B>PnCVyM5#zk4Eg&yx9y26TnqY(zES?N5sqT%ys|PL90EXXk$ez`VUvC{&2p!@<65>elq>< zZK4Ga@d)f3%;Vq6xIN^Y6XyD%sgs&G$qU>bJ+M&>2MZx9r5ephwi2?kFy)+X$|d@#&E2N0xT$_Ob#`E9N?P5EN_ zSW9!%_{KvO>Q72?9}#$sm50@GA#81}4wjc&nvXoS)K7Mp))Lt~i=57b#pGTm`!AHN zp}RoUN2M_AWUhcfOUh&TM-As#C38$aKzImT2o*2DGrF(F&Rqy|8l0g;2w4ystY8>K z%<)VlHR~g?JuT7Ict-M)S{D7F!P4y5|5r$Q2wBB<$h-{u!`2AcL;`3ZkfBK{ii4CD z;sC~_Yh8wQdx|@lMMWH;Wr|44Qk^WEhX$*_6@Y9cY&D5g3VU&M*2O_zD6>7_;m66{ zu3Hqn&SSDyR0}8bayCzDE}(eobXURcBiFL=Hv9C%No=i23Q!}1`gMZi=Ja{`YQ{)i zFwFC$FhI8%TSm*WK(tn}ST_T4jQHmYSkQ#IN2iSR4#~nU+CkI`r@E&Frq0gU-0lv{ zNLmEwLM%V1MQMYi;&U@7S7!$3^e_)okge*SO}@Y-P0dKXMaQe+ZK(t|nIbyWNG2nT z;+R8L$PCvu+>@YRC^h6qG@~idUvbfrZq9iqsG0n#(Z;Y|mJ|Mf-*xZ>Bd%qi$<4-nA zxx)4JYb5PaMg-7ewI5cJneHlaiSx#dH^WReej>n`Dm;e(Z{u7D3-W#7&4crJ>M*^b z+7I|4;3)#An6v-+s)oT~>;`D#2RLZv7i9)17`|svyRm3{#AY zyD!rjIE$!Rd`*Wtb2!!L$}s*>&r^O;RQwfdwQzrq!d4%;jST!v#+(!HkE=XBcv=X5!f9u5-2T!# zT|Yg{a23;QpI%|mQ-Q+?Qjp)0b+AK!kgO!H*5^!kr1}FXl5zVigUY2^!roT)&K`%5 zk`(-u5G2gT|4cNz(paS?OTyn>Y5Jr*$YSm3E#h+O0vP?Gx5p>!n%GsTn$3{=9_ARV z9%T{3XoHNIo{Zdd=jr^=Ay+L|kmm&r9EdR?hS*=38*~c|#1vsY!>e%TUz?DM89r=* zqTz}7_9zCuQ?|p5q%5EoW?z0L=hq=3vS0($E^LyUZze#StQ0UqsDF6_s?DKXc`#su zq`bwAqzAr}IN)jlvE;O|NK!_KL`6;U4LxDUycKvkgw5gr5FdyR|4~%y0PI=vK@(rl@zY7_gk=@VGC4DLTrhjsUteyCMIRNBynG zK>*a@#p-jAK$tm26hHFAIi88BY+tBFf*rrh zhUGW57yJ)V9JT=vsS&8xmm!3Y1caG~_QhyIMCqBVKeRtj;F4^W^^V)0%5MnXm3R-O zy&jjw!IIe!XJCT|CW{B$nQ*J#&iDeg%XgF;Gdra z$kFR@Z%s@iw@<+Q@_T>OcgAOM_Z5}?@*k6OJ7;#`(+(YTyptY1dbaXms8pf-pZ!88;7d?lfzph8npHProc38g`pc1};Y zh_ZDSnS7o#DO>aK5`yGsCSdnv@j zWX8qtlHrJ9$cr+>e*6G%3t4L(R}yKHNmwI6naNYz!o1zwK`X?zdj>Wb%JJq1N!o%GyK;hUll@n01>k=x zC+$#B148P+ip9%8A-);Yk<^a1jZj;~c>smC^=?s)Oqf96r zda+a@RTlw%|MM}v^AcTkd_h5@rGIu0p%DI2yEd4U@#`OER-&IlZIt82SHfbF0^ znKqh#F)|aAu#?H~5;wjyqKt}!5_@bM;DGN4 zyn?KB13N4hXt7}??7sM&=O5pG@1uWw`(JQ6pw3Tq58DBbHj_|E71>7U*(($nYO4Q0 zL}yg;pKfSR4_b=nq@fA4GUsAq2-Pe4RnJo^R@QU)l~pTXNgOYcS3hEVxz;mS?!$kf6%IjC{is%0eRqhCnjtf(rG2@mG_%J=$-t?LM*bXR$3- z7&!&vrajX|d}Oyu@I&4w)rH1?21)a1YR{gMBs6>jz2+M7wtrXUb-1Eec0)w^&aNA? z0plt6F3o9Y-v=v*G~X-RaioDZsTD)IrVhq<<|1%tn_A0*sc!{fQO5&(!XhRR2t7u} z84zu0qNA=^2Nj6o7EOqAg;s+x-Gyjop@*p;LuTlIhp;wiR_la)rDfxlQ^6q}&((D^ z+s0zfOPMM=*rAX1(U*~(OzG^wUK%~j+X%yk-E?NR0(f>z*Z5bR4YTp^1{bxHL36*W zK?9^Te&)_IudVBwlJ(a(L~^b=`K1d278yPm2)%<8J_2M&*345?b)`B-+);kvq?bVB z-wnIdVCvmd6S0uNgbaG1l%@^h37DAZs7$vJ-|7#l{kiC}P~x-R*ES?XU;@9PTKg9- zH)LS8s%v1`34aP4l-&>jmFD7)Vh3XHGcYWvhPzpuSM?USfPJv?RS;D*DN{xd^MygN zo4z*EtEpzO=FM!@#z?(VL6QBWV^8=%i1uYM?$}_j&5hAo9I-Jmlz#Dgl+j_C1)_FB zhalCOEZvymdy_Q?rP79ia)^uW&24r`%O9bn0m0@xvh0Yij!r<7GwR%t*;E$-?Pl13 z%9hiHxmlcTyf634MNqH;BVuhXBT5!LOv19GN9TMCud^s0H=e~_4hLM$1^_KWH~vQ! z`)JVnVUvIbZM5AEz*)I+Y;mvX z*GCY^{!@$HSrf8j(a0V0%j-)HaoctwSKbBk&96zkF%)v$Z+&%VJ*=xB)&$!B#=pwo znVUyq_S=YT30axhBM;FU$&$#(!WFl6g{;!*U$@T|lbx9-P+cy&sDY5Fjxsnr9Zcg> zm;*YbC7Q(26#MrBsUwydt>8mbFew+AB%Qh0$nwYSjzsUx!a`sk9Gkj5mKcH^%dU%* z0z-Sc%9EBh{q?*5IK;rpP%0v%U~fyIxF84_oiV~K3-vBC!$EV>N#7JOXcmSu2A*+m zV!a<>*kspdECAK$1n{dvaMD8)fu?DaY$$Wah zCY$fWqL)$!a{c45(>*+Itt|N$me))&to57;mfBz$!%MCypdv#(H=5H3nIcox0KBEI;rQ>R% zb}1S8<9j%%i#J5J?)$xZi@K7jHudDM%+@4j0IEQYFS#PaMj<xCNhRpp-8GINCj1d(N8sl53AAkM-J}F_!^p{czFTU9p9)!G-*ZUQ)*EkfA9pVJb zL<95xDzjjuKn(rwq!Z)>a3i;37cY+e411q>4&&7EJdz5sSSRthpr6lRRkVX*3okG; ztLuj75a;BbP|<5%8^TUuX%S=Cj^4`^by9)5%I zEI+tdJB+xiB|0ZA{_O3ShgMk+tggB~!FCxQ@3 z>{n*N_LAYS`*Co^YjBhI^Xlv^8!zO>+JH9#eI5WI-apq|g>TInHjU#4#;j>aT^IaE zO`vVESzAwdbq9vC5V_=ql5^OrHYHq^_#sth6}EJ4*;+2R#Rz{i24XV=l}N z&&2EUMx7(*@M=S~5=J!QT17N8{cTTzr{DK~_W}y6>pBi_t>VS<~azk_pvNLgNiO|JorDweV`+ zm^k4Fa(1}^q&Y&}0(UN{1$i!2uA$&*^GS$b-Tz1@BWJrS@iUAC0F2mrgkrb5UNR(? zT4;TKvI3&V$w337XXk7W32QDdY)qwh+ddgm@%H*jbQY zjk7%u#QIm~>#mhEwgjyaNly|m_a5#~{Pq;JNk=Sk#^Hm2uJkG+AL9%OW+)iW4 zGrmcP>rba}j&3}X!HVY1`Ip@rWB=}Z#0oy}_8crWY0+^V zN^we@N8hmxz7B(3@g`qx2p)2Mxl__e{Pa5$?t_hZ+{l?&a2d&$z6zFYJxO^Y4vp79AMxBnb6Pt zab4peP}pt&bezX>SAjLr;)@7+%KJP_o&b6`2HBH_6KOqs-a6rS!`Z_?wJyVkDU?Cl zogW!~x?vZ~%TM%OgZRw{?-m&t2P=}+)gb|9(zwFu-b0ZW(FOY+8u32w*7B^F<;8z! ziptamo}Us&BEk&tzTL|E1VnD&)`S9|5Uj}^;n}z=690`7=ecyCd=?AX7WGtnHlQ-R zzf1p}S_vd7?xSN}&T$g$IG4EI3V`}k5hz6Ks#M*ZIu|S`wR_e=*KT;?o3dhv;3yM0 zsvj~2w6>tQ1RXo~(q4p+hYiD23THJzh-nuAz5kkJxNxf)b7xx>d8~3?QRP%fjPbGp zyEDgAwcz-chF%= zu!0=@AZ{L~xy-XalEHzz#a0a!g!B%i`$CbaXp5cdih%gKU*H`s7ZizT3ew61LCwPB zrgUp3&jM0kv^{_O*Eo2hwp|JwZaR(|jokc(n>9RhE}d{- zHViu&ZsT`AX^j8;#ZSp|hs{l;dd#{oHB6O%BN|!rQn8JET|6rU$6sd)AxsodX-G!O zZ`=-tsDCnmlf5%fnE3J(a{Fk4GuxW_g?J48hzC+-;DuNHY-GahNC5fe9o4tK3}p8! zI@O)b0kB!5qq_XzHU$xQoAz{16D}O*akvTkU0xA;dJL;Y?LDq4Q-J2nDv#CM{IOS- zPUd%L9cp8v@*ql(DW4h1bG60UVED`X_p)e{!4b=D&Q_0K(wA78AL2X6tt6}V-UFE0 zU{{Pl;UQtH2-TkrZH4`%Qa zCaK1iN|fpVJoF|xUQG8(9FrACgopq&_TogM=W1J^5$$*DF4?ROa@fQW8rcxaC4zKy zjjy1!zwjtbhE87`(Pi1~FqIJpiXT4*YHY~FR^xOl&`J!py3^dDiO)zW3k@425ytmD z>aLqgN-gD|Lp&q7@cF$B-@I{*P?p&nBai6X06-_`Osd^9hcBQq<_{3xOYWcC+@ z>kUynE{La6g{xo^ZEqI1DXki3Qr>ES)}am@o^5ghOptbe%({OXlv1t@xcQS@mjOzM zH;G??*#_rDmzz8(%ram}D9O6u`)+|2i@J-+4749ew^Lq$U~aguF;EJ!O*B(|oqsKd z)3=r1g-I=@SwX3N=j>Y`cB@Q zSFSGZ4a{+kiFQ-EKsIT?zr<(#RRw?}qryy$Kq1Xtui_(|QQ)_{ zB2}WrUO~?|KKkaDuIq|!L|wuO7KYeBL3h;0u&-#u1I^#u599UZmQU!}_F8){%4?M_ zWtNGTWL`C6k1~m*_aVf;keJq_z(Isc#*8crAnBwZKb>$SDy!sF;DFyNhQ%v5>*lz~ zoe0(kd2|^+<3;KLy;UH!`Tsdkp~7MMh<@1OACe3by?9YHbrCuXgO;i+ct9Y;y#~cF zWuZrkNsuIeO{0Vh(7}ACy%_;WJd~lmSZ2bliL~8Xpi0>jjVXY$`2|obgt*hQBvdT& z7BgmQpxt|mia^dh!jrc0BfS3D+_QIvoCSzF=EYOY<*fE=d7vfl5tKp>Uu3o`a4 zRcXOU5ML@QV_Z!RJ*eP$80_dQw%N=5o!~apl6z*FfhIOj1u(##;ZE+j>Moqt z`9Dz{DWYJ)Dlfzw?Tjh&7t0jO*`<_JF=!Pcz&^xlf-{~RG1=a_2REV3Fu)y$eQM>7 zza8}Hw!Cu^fc$>#3p@J$?nRs(`XsoeC^rKeGmBl#`LE@w`G8Z`HGPpCWrfO!>hh)y zrrdhP{%;l@Z8twR!;bk%4#W7%sTe6LT4SW-Gs`VX<)z3xBtCFhUz*yI9$_m#d17fF#RwkK4!C3SDh>_!GlZ^@eGyH8ZrLkb+cVACQ=;Y5#dI7tHUq(YZ-^uEPv3_A>2QsL zn_A4l8vaXC40W8`Y%+}t!zwtAk%)MvH6qeT5*`Pc*ty3XiO#J)a-V?%HPVE#6DbP< z|2gSk!=&E7g&|0nq>M2THGib2oW@|PlFNOmK{7{}qbK&^h|I>0J@NpsJcX2D-CX4& zg|!8Z_C`Q)2~!~){~|#3;B-!2S)o#Oq{9JsdC{0PX@RZ2EnWQG0}eO2a?SUx;OS#@ zKq_-xOn{PR^)wThJBKCFK7WObn~&$zEs};% zSh>W+IPtVUfC?%Kq~eVm^>d-1FAg70pp>e43XgeN{LaE<(|rW}$8GD5WIOr!2rkV( z@+pCtV!e@DC!iC;h!^WSfO%s?{uW*@J-!e!B_t#!S4FPct$cc)2=r06)azZy11sB47YZzv5S4ruG>j=0}-)=j=a}sjCS$Rocu;__L75+S3GdsTu96iI+SDeuY8j zPQq{eW0Ga(Y87!4s!4^_sKYwzLNwUGd~2}hX(?jdq)}!KAGzX0r%~pjg{Cj6+GeI; zSUWVY`q?<)XxH?@j4yoYQHV#82?e@56n~?%um9J%KSvjI4YQ%T+H|&rD18PphQTeA z17ooLCLQo1{63%Q8fC*$1BjPsfqeQZ-*2wQypC zGmnJV$fz78UZq1qTJY-r{hskj8D4pJ@!U!ZEaB2oVVpV0AYTLAedTv)Ya1t4cBI+3 z0g07f!TkOIDxlZ0J(X!aMdESo|9u0|5)sBDADUoHd1wUI5_dqybB`R0@GIjX6(*<2 zs$I4b9}k1A&hqrXg%Qk0TBR71{5kR=LS}mD_*e>zC27hr@nR$$RifSq?&ulfox||o zN;9|>OG%VYoULv|haC8PkAj2!Mt!-)#1Ziohs+07GF@$Q*98Dh7=g$Y2-^8PIk59X z$Fp7Kgh6RwIQ25a^@Tt{1mS`+2CC+&r9{;}EB_@Kx>qEE{xjO&TLyUQ<+x;O>gkeR zlC3?B)YVtdR8_Y~?^Hj@9;v^V=hR{1-@W$cU=Xq3j^IZ6tyats=OZYU=rMQpG zdNw<2R0JgMMB%n4bqOb&2+oOxh|+P#0)4Xzva(6xXFW18gYPg7j?c>fPyKaeX89T> zN%g0nzzIFJTC-t46-Mycl}n`wkr=qrNK^Qdr2@cYO0{Q0AgmZVyCde^)q4YuZ}A?u zi%JybK@RgCV~e6US<`pZRP@d0*R+;>*xfiH1&}!ZTBAy(u0N(v4%Grer~r~bHN~fp z8~F-Ye^!|hnDIrpKLVY70Fz&f>DjR)UzlTCAmdicqHd_`>LNsPqs1B_Ob4TlXT!0$ zFy~`Yq9zO6SH0M-e;Mb(sjzF9ty*C4H=bVr=a|gReQ6+uOTg68&fNvX2N9LweQ9tz z>hJ@3pYOPwruaVCGoVQub~f@=!~^YEJ4%TIzjM< zF=QzicO)}vI|F8NgnrDhN@_4Cm-j6SpT+zE5cS{vs5pxIDehZ{Pj3Mz~k{9GtUbL)(v3(v5v5rXX`izrqN4uQ79G<^=< zh!$eY2ZND$2jBb8|2f1XxiG*H;BB2wS!%bS8j?rvRH}k5wTj_PJ{^681Ac%_8+pcp z{52{FH^bc@d`!WRf5|=9OQ_Kt8V!>?Tob z#`7)lj3}1l4Z$%9|L?Mi>x6_)%TfH))4E2>cE4XB5ZfVf+S9r>7Z7b&|4B{GhA(eSdoUd@_7W69rOuEV;8<2Scg4S+E{e*>`=PwTwOV$fFP zs!3AfFH-8YegVx)%<$gP{G8XYy;!1#z*=CvQ{thy0k4HJMlWwGx<6BE!Fb3AeGG;H zeiWLmOCXjij%tS8p*fW$+c5Y6-)qX5E}iP2qWXebo2|lpXty%chaPuArzzL86|V)B z#a~5SHpEg&HaD!U!mW`EMZlD-`>$v>grw48z)P2!xb{&L$!Jnu_ge1HzD~rmYQ|6B zodWHdZ<eVtdAgjh(*Zkt9{aG{Fd7}kuN)#%c&7%ox!hRS18s!6!IhUI0KaA4h<1MHH$W>m zJzX^Wb~|)DW=f*D1I1ET=E1DVh>M}(`Ho$4eq4#89jPP^gFLF>su;TM&nN24-ic1o}07C3KK#;{w~QdAoNI$dIoFZ zX$iT;lu?ii=@CSXfRPQU4pJPKiPns8Ou@Xo5+IA*j)<9;)E&Dt=7MxhJZOpF`Y?Sw zJGNltvBtE;RYjnniP1vo^UJ~8b8A9Z(eyFwUj!nKr(yJ9D_77WP}*pBU6t!@0ivo(}EaJ2oU*2igU~$g_EzJXKUh5Ki_`AZOD83=&M!xGZunQQG7lu|R zeZqkcwN~w4QVYm2_X0Y0UWaQw#VJ240v;jKYiiM`8@&#$YDkG7mt3~S-gkrF!+E-M*pK~Si(B` zg;JmuW=Q!QetX^~?U7&zP!m@gN2Xk^_$@sv@Ol56G=iM|stXc^EwqbE%OL$$)ob{e zb3-o; z0V>5q4kI`FCGoLBIrI&(mP>I9FiUXQ9fv}b2DxIeX$B47G_{#bIj63M5E0j1Du;grt7vma@;b;nX^2U|F>Z<+Ksd_!9O$#P155Q8q?5{*`mE_-9 zIy&NHOU+0{OMF#`?7f%_sGYx=3$#|W&c{AKZ;uiP065*5E<8*S z4G9Y;!8A6>Cc0~AY;fCkBuM>{zsFw(+~#A4zFKY}W`eQ9{DE&Gg#6PgrAAzjP9`Tq zi5*~gQdXD1wH*){`^0oOth*VdcnEYP#TkdnP7=d8cwBs@tC0^bGVR^qTQgWRm=hHg z{*+xSN6gBc-$Vm}RIIb^%UQjK6nY^GsnDun@1X;%l0=*in&+6yGms=m;GbH}WW^ANRL zBZZ8W46^ay_X$nR68E}IK^Tv(^yesQqS^OVHy>C?m*Vb+CoxEfYS1|)QI-3K3)RJ*$fj1c}qFt&B_n#nn$cyZQ_M73wOu%Kfotf{pTVDZNu3vnp>9Fu)3K zqK|7d=wKGc4O|kxl@-5_<7a(6W+MwwKIr!_avoAb`nN0v<)aAoj`EF0#}es18!kR+B!S>K5Z zPFStfm8);|^dZP3`a?&6liL9YpB3TGTKmw$&9iQe9wKjAzN^H%TbgS_t5$M+;2N?l zZ*GmT*3%b->3f8nvTBS5`9!0m`d=m$>(2Kp-FJ=H$$^COTA4kwKf*~xvgBk9}9n5LCVnYAdIuA{#BMy?!;+ZOwj2?1n`LV~M$xJ|g9x%;t5 zQ2ng3RD7MS9lqp-t7m*H&myDV*YT6B3?&7ZEw!50IJ*-ZH(Kh|8^%ke1g$Svx~OrI z33E?;+B4>ZU(qrO;t%KOFiWRY_pT6POG()qjf)%MHC!eSc0H$S1ux-C8ZyzBokUxWA9Czh8Po ziD!W`u*ljs6g$D#>y_Yo8~L4T`G&WMg3_NW*DdS&EX)KlysAonsEO7H>3?#UtJJ?I zT*Q2A(f^e959{HHA2&dc@{mSSb6OXTqxbtmQ~!Eke;9LsOC+!Xq=e#EqKivHoj7X% z^Je(1E*|eprQJ=}qzTw2+%q3yZ_I4Y#AthJ#rwZ zwX}b67DmXcbkUbg$KMLy-j=Zvt_a8+w1;l+91fdRRWm)ts?;Ezi2!%#P|`StG*hKv z#bniKwai4q+{`dm%UrE3CWs*kVnG@;MTl^3(t$`fYrMmu;@C^JH&GpL#X6y()|9nca@AG4}dI&M-%4Da&hr(2uugK~TB0VMG?rLKd6R16KU(Ka@k&HQc zhM~gyFI$Hsm)xc?m|d%0Cn(?ZdzJNyOz>qUn&{+lz!Obh*jT3Hke<^34rYze(qVz8 zup-P9f(apvi2Gsx+~M`!?hrnsN$Up(P_gtb% zOulH@r;SF|A4;_hv49!JF*U<}TU32z$5-}q&uIbgIRDVtLI%L_`uN-)gNV(W`=Z&> z!>~r^&U_TUxBX1IZ#x3!R#|T??Eiz8{+4x?JMG^BifSamoM2Z=k_%}Q48u8Rj4B*v zLvX|6Y7Z5^^v*t&ZF$bSZvkX>uEkJ1o%eN_H-{krPN zD@dbfVYzCF%)EC#4!i51Hiqd-Tv%Ex`-NU*Iyx^2w98pYqzsbdT;{2)?{j_Bn$}DU zo_}mOd;M_*C2i3qHZ!rsL%bUXs=lyF4mXLl#8KA zE{WuQ2>NhY!5A*j48C;SIP@lfkZJ=hk;7!d7o~#U4G9Z;PXC`WfT8uvBpTJ7wsoM@F~mB zfcc%pD1(NJ&JcoRMq7S^<_e*9)TJa^q5ZX$$tkTXhgzB<;StYeVtJJRI|EcB(&;K- zG01|P2AFs)w+XWJ@y@>$P+y54`de;sqFSvR!XJl&mtX zF993GmSuHXlZ^a^RZ({;(kn)8kg|-n8D=+`ap&bUePU8?fovBOJUPqwFm0?9nVX0r z)vOrpYWWMU$s@-iX)o>N7KHWS4oL0S8t{?bUJw)p<11)`2N4fNjOu&n5^<;PH1))mfCp!u0c6Gao*!CrQ3waBzJvw;GzBi zCq)_>?W$Ze4GMe(%qYPQuF~#*LJR(z%ek6n_LHqee-hmR={K;v2E&WrPvntucyl?G zU?vfbPr5HRA?J$112NnsFD!d$gt|oWy#-81^&=B$mJ+{$qDO3q73~J$AHlmn`3fD0 zNqSFU6FvLU#}B_oLr&dzF4Gn728bh}NRgeUC~Sm#$w9f?=Gp+_J7ryB8U8@BnVLp| zWx)2yf$zUm^62(A2Qd`BLVfKwO#6`JlH7fL@TA6?#>@QIK&FY5Dri%VsM8bx|C>9i ztTSU{I2gWFdSF>cO;OoiFoD85;zO%m?61b@*yBPDv#}Wr2D8 z3g11w!jJWoW1TZ3p_~1lx?`606edC1UB_-mlDfRUiqL_lGcWWnWFJYlswY;KN2Kei_d&-9!005A;gD_k2K)f4HS(qJirIcM|RLFG{!tSs8 zh>m5*FXxb9%dY+ByKK*7=z|z)HMc(6;vrpAe6Jinp9U!w$&(%v`_+n`k%<8iB{aCa z*2%un^{kYE0moWz!eS9I1M49ExcHx1^DOz`%snoqhU9EV;52&fE-tdEG@W0+{&`lU z!&RWb?pyto0Sq2NlG%0oSQ%$JcE1F?LVGzw7oe=dLe`*HVKJ=r-L#?sgKun{Q01dh zb%VW=NH*V)*D4M`H>aZr06k}ZHD zb$j_S?;Ye0{HD4Kc~ScTtiJ$+Fx7;rH{`t+p zpwqXir2bQ*`zvl~Y80&}tzGL6;}w-f2a|U_e?AjOxq#jNfmFAOJa@zuM}b}p@Z)9y zcXT_Dq9g@AIBPtbaFUzr##(P>1ixRjcS$|Li>{}6MwnMA-~U^-58Ge;epvOdfy^?n z5yk5&W$`%zfmSgY5-<;*2s?kT1jRLb9%s&1&Dq!wQ>oT-0J_Kb`)iZt=y^W-bvZj4C9K3$+*38qK zD>O3K-}mJOM)VSfwpT^i0v$vA33~WrPHU%IE62zYKe7JtAAiV~%AWN(1(;OMM+yAL zXkZkcAEsVka0=;fxjW;D0Nmx%tCg@PvaoO^&&Z0}to|&XG1b+5CLVXUnMmnK)u=ps ztm^D*N5jhdw;zI;^xc9#Ofz&P>BGPVy3^yCZd*z_NzLj(o5R1Cmexd^_(~WujJ4RW zC7_h4bPNVrRT*SNdyMQez047Mgzc92EF+(^P`;tL${`vg%KP>%+RP`rF!sirmu_Gw zo;zCk#*jgiG#NWFy|eUNetWFMjfG7U-JF2!1Z05ajuN?aRUS>$Xf89=Lkbs7>CD*L z$4h3mWD`s3FFP!_(I3!x5E{!oSz0`%hw>1_4J9Uwh)CuvElyJUZiIN#DpH!Y-SMH; z3YB1}2IH@iM;WF5=1@2Uv|7cr`;`@L;f9VGHjyaF(-iZ-02OTclUxiIw;*BZB?Th^5!*6;!ECxNX4 zzgEzAz4q)^;K**Wez#)Z3wcyEb3E@exHF_adAP^XOsGwefhyO#MZssw{(>4z4+KoQChHml6<2L^rLRUv zlG-;$e#(+TF4*joFo+qegA%P=TjDVcY+{?&mJT-CwO~Z-cKvs}X80^%Vqay8(?g*c@mqqr{NOlc zwWy0}fx#R0wjgM`5@rhzlri^#%hb&HBq`Gmq4JvMS1ubBz!au|SP#yNo(%f2SMD;` zj7JiPB)^RN!vSkMoXVJausKp@EeI3I4D?_oWuVkJB1yO@`JLiBI57!F( zQ=<{+=-ynZ0xj<^&b!e}P~7~={|t~7UZ4&QUQ&_}zTP=V$}N5VYdmYO({xgfuDtUt zNjl*6JL}I`Hwx(qgxSp!#lUMWd4g%D*!vcV0YVFyXt`PJu(}lPUJa+Giitw}LZtrP zYU)BTY8V&T{@K?vuao`Lj;`p-ylo~QoONt3+%^oYHh+M}*^PM#*#2ZM=^f59yKA3t zEn48b|7PcM&Y;MDTiEDAlq5j8Mb+kEReXSUo{ov9qsraa+AZY@|5n0i{2veigGE&{ z#d+j0F^)(6xm&BbrUH*jN8ZxAFNVap1>Rv&%fz0gdOk~UU4AVk+L`-xPF<5ev*Ph~ z&)o?tu}M5-R$u3KC7Hylg94m00G!?XNuVqNfR&>Hymczd{Nk>Yn*Y+ib)?#GenfIH zIir0H`o_V+tUL?XRN6+%XlN&u;O7_@gsw6D;ox?vSEpK3my8DqXgD#6gGH7O>Y&3A za`5H`vG9xdk1@3}e*%h;l`kSvma(7UA`v?b4jz|3N(zGuVn_XMs*7B{Q4MNHn-!L| z-ip<-LSSt)`~iITZz57C=0~RzQtS4v5lS#;FX6XVzT?!#{;^+fXxo-)@+7kyn!KSU zc~BC>vp+mI{@~pgQXg6*NogY7B5Wb038iOXUZD)enf%tN&npNGcM3^?Kr+6b{YsV( zga_4@yNmYQfDSk)5n})ayJWo1xpvi%fN29qA4-(4hyF5{G&9MS;Lk+e77adS)y>c4 zGFpw|;8LNLB8t5%8|Bj5N|Y#B(|R*>k6daE-a7D&Euux+7We5pxtJ;tD0bXp0iJYv zv};$~|51@x^bqgShY)kCX5msKxCdyn| zfr|8s(C*3Kp$r;*HL0%orEt-7Y`3tCsqUOGl7^dF%nFplBk?Xf9xLA^oZk~vEox(6 zx;u#qOYju6$g=jmo&k&|8V_EnI!hWi6uHk+YJTu98MJ{35ihu>XS+0&5{Z$k&HKI= zSHzT2^|S3!$RiShnKS?TIpki^A@nvbU_nc6B`|^kZ8jOzu*+KXp~>31jDJfnSkln@ zNtSYW!4;Br7arBJ+x7+{YG(1;u2HzY3^4H|7VjxlGR*bL8Rf>V;<~gcriSdDZ}Y8j z8JG(V;!0+*Ej!9H&o*`oCGLNrBzjS${I^;MzQjGmV(nnCRq4d4uNYb_D|uA2zBq1( zh`;zY_NqPP(82D7vfdwscMgp zSotqpV*bfP&>(Rb*8(4{5;4q2^2(nEHr!r>cgL@_F?}h6U&B`ue1inbsgl`Wu|u-p z-zpgV;9sc3FK8O)aG#_OftgVJUsB;Pg5$;fbJ5MRQpHDI`6^5wyCMv((d~5}q@mwa zJ*jDNl#lhO%P(*@PUX-7fy>qvlp1)!-d}ZH)g+TGV>tHBnURFd_yuutAhqsW{-h0P zP}0ZJMAYz={?%^Bg%e$kqdg9yO_nbiyPSr4%~wbB}Y-8L7be8v4yDd^1z4>`)4f@$ld(Cj) z4bl93M1oci(K`ieHFiP02oDqjY-S@@*$0~-Mnu`f;&UJv{-$+-pp8ss!`#E^h{r{+ z5(17WV-N?j=`P>U9TQ=-fQ>-6bG`9B$h>Nyp00 zFT;I~$5gP^;nlbr=YSnKEvR9H|f|AFxKP*gI{c1^HPyfKC*#|C4Yp;2 zGZl*`vB|FyJ`mP=u0V!h$1$MXd(wt`CLr-gCYz?)2A?J4<-oUkzX`jNLRiqsf3%;$+RG%^*1PRWMD5sR@ zDDF4qRPhzwI;aV{YK~H)VeY58UcrKNv=#z*j1xIMy1TyFzTp$_B1t$~Az4tIT`?jT4Wq#G0TdV^q2SNZILwbV8<)Sjfo=Vywefu5!Dy((wyR8qS$UzUV!*Jd26i3~ z--GxcFXbT9K~Dcp#8$)nRvZp}{ZjYqzohH$k0?W1+*-1Xb9r3caN+QR`(^*1-n~2e zGKnYO^_T{9aEhJvVzj|+5JiDevF zwegMgboF>@;-zz*xjr3wI*XP9O)6hURU5md5oS4(bk;SH-)u6;RM|CUH}22hthF67 zs9Q|z89u}Lvn~KW7;a|Q0ALER|1 zbkPbTu(uIwJdda6f3N6=FQ)&l1bp9o)QBWW_1@XI09(0+f0erDK@;UlkL4=RRJ`c7 zk6eKl5u!@79%c2~3(yuQWdM?eDXRL7H3|_zxeFsW&WkxkY-|=p?-u{fHy!l~OoVeW z8T}`!wTSjQxmm-fakdGi<^I|F*=^AzQCg<}!j3bNUp0wj(zQTT3F4r0wV`qNjM7o{ zv2XOff^?#+>10n1HUw^A={Uvfe-mX9RM9gunh+SQZmQV|nRFIAui#J)3o2~vNG zKPt3Hy)(GLOMQ5H?dTo+SYGp5qhq^a-;#QD2($>j_F@~I*$vzpM2(Z5ovTOAR4Vsvn{H>N>oQi|yuCvvbmr>Tu9bq>Mw%VcVkoQ!DU1X(#-MMp4&wvk16 z{|HR~^^2V5zenc3WkR zd~ytyD{QmI9;}cED7!GT^s6G#h`|@rdsjRE5_vjKM8QDstGS@TrOAY1YcX6> z`uWZWDMHWP*}48M^2h(HguK0UJUp)|E0G{QjNd5M&fhF*Pgca(UY=j9iT9J$|Bl}i zkE1303Z=1>sdqyYa#>Q*R~_w|ZP5kSbgN|8qh_PY_#+RGCK78sJH6xDQ#tq(FS1qe zZB<0uFEPcat+Ns7Q&x##b;PWe65%r^Ol;a*mQ&Fb{0ea_nGuL>7Ez8;o`sPr>CRPx#nke~-zGP8^EQ?eM%`vd862Pgz8{&E1Z`a%$?l-3; zr-(h>p)Q6#d`|h|`T+j}7GY`*opY1>f8)007hcZ(ZzJS+EBqs4t7`b9n^B$%5rz;5 zTI~*$3ppx}LdViPSiC6Q&V`QJyT?%Vr@em?Km~}1I!u%Q`l~P(5wO}X8`%UM4y)wv z+@%iBayT$V1B4qPs>2IrmR$43(Z@lYtmu+9fv-IXM;lX6kc7aU&S9`r({g6Nl z!qKOO8Bpq897{p>x(^QRU*D5ht}-^BA87hd6VeivNwsf_#L||}E_(<`lCM#nb=WAhIN7C^M_{@%EYx)9k zt4g<%dq<4035*);23lB%I~#Y0I?rYEj);fne;atkiUaBVSn}aiGq?p(3_kIHLq7Kl z@I2YWny8j)bs_{^YC|dJ&5k^MJWbjj5y^J2YNpp$B9U_73h^H3ZAQN@-RN+Jld6X= zf^7i*KLEg;@j$*JiB}PKEUpjCR9N8$S&SacLw|S|UT!rp;T%QgK$#@RWvrh2B&=IP zwY1lI*p>mAQ%gHZwGHNwa!12%lsSW$+2sAMftWO+d%cj+j&g+no%bsss#FqqY?E9j z(Yk5djWkDUSBngx2kleA`wiJO^-Ru3ENYUVP%|PINmF9}W9+I>bZ0G*sg~38a7LKc zZgu|%3ahrfoZT4#@y#Nd)dPm@=zL8IgSv7KpKO!RT;_76~>~*1^i$N222Zq=ca_Qf<$3wmT7&&KQw15)oHgl#5f; z;0$Yb)#|`ru8)V>4&gHa;5}3ALlRr4i+JRL!-ntjR#}U%wfvfnF`2X zCs9=V3RA`$`H_p^bix>vE$9JpQ(NA3C+!RiaDanM~FHWY4*aTsrYq3MXA-VJBaGA+4=-*1%|Yl! z#%$-pjc!tMCf2fNX?=dRVMkh#uN0=>WdV$+Bg!UGhXw8IbEre(#uuW6T=**UC>lD* z;34r4cO-XYn^-;kqijdKaNk(a81nOTidij6nTnYka=Ao+Pc7EV9LTqso%vo6C)LYmiclQ3vgRX@b6#Go!2g3NIEcX}vZ(I0#FZAY z!-83KN=V7ym&RO;6?+K?<9_wZ{ZTj^KcQma9iJ7>B3!#2xZ zoiZ?;0h?96K8(#I)?weL6sZ8P*-i}M!;8xc-jJMFg=RUS5RuW#A%3hszW-f{%9@bR z{Z1V{xJZ@$0y7J@J(QAi{Xb!fJ&Ef$zpXrnxm`>2+eAfIyV8t+`5O+{F805;As{LJ zWj1CTli*RMv*at5{L$)vXj84ll-Wv5tJ2Ec1w1qy8tU&JC?CqvC{D5*Kkw zV%MZeFe;`lmO2~*{3fgdGS#|f<82(1*CzxWDaPNcmt0t1aYAc{dVLA)@o1tTksm?^ zOCFhUikAP*#L5F>3`ylP!-c_1PWdHo>Bw-;!UlTP;?9*S=$&}2 z#wv--YH2(}rhj?Faz<6idtFo6tVA*f)e!hEko(HwoxtI@4!8iDm3kK!WFf$xfgqGG zMrx-qnN=@^9bjb4RgrpJH3@qTF%yMFF$uQ`R@X;4Cyi)7>|QqHV}Sj6^}~mB!OaiT zs3ra|+!c~cN8DGr^K=6L>b^BOgqV*Gad#xfs3{EQWweMz3~CIy)Ah5@ac{w80q?oa zs7DEW2BqM_6Awx)p4TELrip023BGJ;*4%-CgBg zEl0121sD^=VS|0l&aQN6_Q)uXbcEJyTVw{d`bsWJzzUknz+_%kg%B5?7S|)LDEe}S zrT#hjh0mD>acJR?(d~Y&WonQXtcx6`j92fI*X4>|xM7E62|MJSv$qbtIJ0KBbQFz? z;3-!7`^AhLpy)(9tPVo z1qhTl1nw9<%pxkYRZg~`V9$?arJJj)Rv*V)BUJ1I8MeYi-wbbqH%z2&Ku-FV?#BT> zPil$rzf6F9rJkmna*F(duz`LGt<5kYAS~T7#Di~7)hqi{$RZP`<$VIvDrCC;jxdUM zsuF%>(~MIN6BT6ulwQ!91hQ)^+gf~UO=gsS$Nq=$Tm2$iOz1(GWe%&9(~m*p7s>Gx z?O&?rjg1utHK@0yk^L~wb7LOWDYDv94>-$^a!_0JaMZGEAvm8^3^gJe5*Y%^L3ot& zxwg3TYacPxOXIs6s<k+;RhMb^7vVI+*x2;6k=Ry_#1`aztN`lY8G%m=~v0+zqzcX<8Fn z4+5LdYUq7)7D#<#e9h{dyU{H+X{@Rxd{v7`h>+v}ZD~i&U438;*H9jn$;^qocgGqQ z?lB(j(N9#0hf_jC3FwkEEqZda3P72WjnOgQAA2;OzK1K_oZbVE4Pu7SI|Q@rqD@8f ztM*t$v*pBNPMf=z%9lZ_yfue=9VDY^4`CdM4n`lsu7et$K$Fc+xVe?J-$jAgP8MRh zo8|uxl8Q^kr#7vnLZZLCVF|!To4Kb7^3@RSysKn_Cq^Uc?J1;9*o(%1_Rjk%Ek zgVi-jqIVHYz35Q;GRcJdu&C&`mh+|yBXXeyxx6${#E%nBJe4e>%Q1C+O5W@a?#$ZH z6~e0Mj7LHRevb*da{sauU5{zTOA2FFvtGFQI1C4s1+!gs9k^gFu4xPg`tUeKz(fUS zKQ1xrcC2&&mFH_<{BpQRgM6Zi74eY9yhY;TbRg`)wyD%K3cIXG{xo`F@K$Lv(5XTd zg1qK6G*c+O9V7FV)|plT4`IkYhl6l420PHvMT*0wC%-1b;`iA^MB-)8T1uh$%+v0t zQY&i}Hoo&A>CoT}5<%8+{IjO<+N~?6l@*E>g`hZ^+x-F1Ivap6MChd_Yz|vWz|K#S zlh<4mzLIz&N9kF|?^DAFL(R}yhxcxRW3wbW?JyKQDUlq#Oe?5{6#i&mA`r#uqj<&{ zMn+$9tCT&i-w$S5^Rge1<8#LAxdytJXJJm$#q+wG>L5Ny&w|je_Z2U+bcKkc?BXde z(UO5j)(gV=kB{F-?Hi8la$9*dkQM8U10ix?`7w3^?)8)IuD5Yri~k9O0a(6(D+slZ zbM8uHR(9{s2(6{P_dhRLw zXfdIu7J%&9DRWTW$=Cm{hfJ5n17Gdh++mDX=wA-T8G@9dvcz{W0=@CMk|zDs-*tfU zltw=BqF#w;L2)PaWw9Y3V9@>%WYhHco@f+PQ(o}!o0QYL#wzB=x2O{b8|^)BfTYZB z$XtB%xRgw2bVnv`VWDCo?Fxmq%O02Ij0??Odh6rr# zO}h(BnsFE_rQvMm9d7(8dqtNi+CV_TD-MP{wu5r0+PqALp!w;LYt!GoaS!V3xEiFCXG!ndnJdB|^rIwC5&`YY zP_3cZ0J$WBTghGXCjyx1Xg(iN`TDMEs!F5XL3{;i-K>Da`Pf%m647X93%u7Kr4~2> z|KtSA2Uwo~c`vv&JA=S2nz^0=HV2_^e8iPGv5lhPn*1F_*V-2OrIu(ej8q8+AJzT- z8cnKm^3JCE1BHLUyFjEs1~v&~Hvq?&cAgJQ*Oxq%((wNr{GqWFU4U8%-G8`2rx?@G zFDzdtvX)OLYfj#u1hd{OLh{LGANc5XZIJSAvNh0CZI{_Cu zvYzB;UMW$UKDsXX)laEDFn-V2&KKGbTBn)yGK?xIoC!~yW7|ePQzH|x%8`X(qMkwoRf~-MDKI(H>O~8M z#>GsU5oE@+U3L)ksnET2u_Fba$nehSc+GAid8U1r3EX4#>{5sKNAk7RV%hL4A`Y^v z8`Esj9>i(x+Ccpb2C(igm{%ID?q9y?n&TyG9a6{sduJRH2;VbVahQ-KmgQ9Cl@n9ah|pEzQ%&8Jj5p>#47aj9R)f||UIdveuK5h-1G)cEB+nbAoSuKLr?mq)r?hN*(b5_EUC1D9RhQAy4kN%<}`XX)tDT}&b~Hl z43coM_R>fx`J0;<`LF>eZcBKIcGKN6m%}S?4TotGFzO&ugomUI~4zDKQyu>cd_U&B=TamueYX3(~IdS7j}dF$iNQ(Y7X{&E6C>EBxH$~&o}ORfj--S^oWK@^c<1kac@!^1e< zh03%r#h5WM=5PGi@(wG{%(J>CJMOHDfoMYz$;JN*QY{1vQTsV3F(0eC=o(R@S=n~wiEazCEDN5h7OB&|A@%RaT52iCd-&u*VCF*r z{|A?nR&N{)XdM;P0Q0rSIs z07co>)+w*Ik!5=EHfzt63L1XCz)~cv>0Y5i*PAIKUL&>&(vQYVJItOC{X3(GZr$Rt z(@%$s`oo3zV28oU6FKM8#a#He+kOj+{n=VNjl;87$ZTe^!OUHw;VC*BI~P;Qw}Hw& z+`w*!;8Fk}_)0sGqZ5kiO!ClWur`h6uY%lBdvi1S{j<$3tfc^5i#rE#(7gl+AGyIJ z^nR;{ATvs(zy*S8uaGrWr-JJ5Pp?dT+D|NcmYSO`H0AG3#Yj|+c5=gS@wcR#aU<(z zSy#NWxe@4xb$~D3|DMjYFaL#&IJjDI_$t2ergIc>6+z3Zw>{1?2aL!B*Ay&l ziCmXxZjKf^-F)T=_HwLd_FSfI?5GPT>!>Tazc+!v_wGT%Yj1n%|F2T1R@=igAU<-A zNVJGKd(gBGp!R{?UQ}B01$AFt=juHKg|RJv-l_R@4|qQ&RDrjpH&1CyT6zk~_#R9) z?OA0BTff-^Il}W;m>-NT0VC4xF#Q=wMaK$0P$A%{s*?BFU#uto5(?pP@1ACqE5G(B z#oT^CC4~PdeUIwx=LAnDcjxE~=BCwrF~w*eQ0^Jhc|D_kxzb z6Uh1~C3l<){T+m1jAk%vvuDkH;^$2&Xw~l8T#Y+P0}yi_`3@K3YLXxlBwL+9qWW9k z&|8i(pcywv#9kFbibNSV1*$6gh*+R41CQ^W;=oJx>+8opRh4|H*IU&64TD|5h?idx z+O+w&R48I*Zx8p%-P<;yI`&%c=b zN1GW8f;7=O_x=J^-vmE*Y~g`QjuCQ}8!7De$2=6VdMM?-5xO=W~gR#%8ZTNwz6G zYVfDt8JR96WXXNYMjQ!_MZr1+rA3oCEBx)-Pv#m>QTyR}tjKi;Cup5amIsz_3cEx{ zL4vZdNI;oQbNYF8nysVkZ?^3kGt3>-YPv$rGd4i>VDX^AK=3z{ym9PY6?`XXqL%zx zX4d#tLPbU7e}^XK9-CtE6{%UIT5V8--nKTjHPSTkWQ&|LWaq_X>oP_>Dc6JKOlK+e zVF_27Pn%FOq^2J1=etqp+Fsx$WV-mo$jkJj?+*zzwkjcCc7Y+B1$m+u4(r%s%n{3| zWoVAW0mvBJ*=bCvWJqR$_SCqvu`@JPS<0N~pI@@Sh>c&x>EX2hC%eG@KsyUTcF1cf zOY9B%7jK)1ejnIHmICwAyFRb4W z&DFPQZr)^PpdQncSCH*`dL&mV*fMVNK8)FL@E~WbP~!t)9L{uDjkj06?7ln> zR(G*-i>7-O`!b`blS9jNJ1t<-kkrnIrexFal)8L7;&UvH8zfo})o&zDE72oVAr zGS?3Pnm~ByJH=GHF4ywJ-K&0X+VYi= z>}&V1w{g}yF3P~)gOyXOK%z{)p@%Ey^$6e}rneKc4mLt)iXR0Bccx5NfgYm%U2cG% zxFnsbDkol$$5R0(U-p#w{5JV3X#u7LfE{iNWsXyL&6pEgt;a4-bnsEGg~-|-g09?Y z0^2WsItMQyD#?6fuxQd_sY$Y~r*h%s^#Ys94HLY6Mz76pe41$3=5;9_8L+ex(2I0=V=WA!`i0xG-oZO z+wo*ana!I*_!Op4f=(Q2=(Uo6ZLTH9)VK??DQtwIcx2Z5g=hj6@;sDm(wTy;pbth# z;Yt%pA5vK#l{KUx>D096zex)pcMLhb3Ds*b+UX2TFR3EH@uO!Q*ZSs#^m2IvQ8`o$ ze{sXcGWp%xpZ!R^lmB>I)KXy<6qc6fBn8MbR3hRn@ji1^ek&4-xNvu-r2FrJnnNG| z^`b3Vt;xE%_+R@RnKf$sKFRkd%~@@DL_5zO^KwPlV!l8zJ)%cVsL*G<$h1wdlflWI zP~^9vTvmCmP*z!;O(wDhQhMWSgyB!=Mq|xq{e)uMW1I&5)Wo>k=U)V?4~Qw_GI=5grUK3>vdERO#Q@?C=4#lzqw zMjPC;Q-~X0U0%k%fZYsAG*t;}VQ!l#MM8CT`{;W2zqlb8gmVE~Kptm)i;HhazZ*4VnJu zOQtv1p6#z3FYhZ$o=-@=h# zzdRBaL4L+LqTl`Bfb;5!?Fa3fdX!bkIz|vA1#_>OsFPZ6GX9+SlA#OzijykXr}rF( z6ZHG-VQD?tV8n^W!Htq+&#tbc-r5MQ=!~%-Bwa*)&bbg&ZR( z-hB{vN8Jp1$nyXlviV#Z`ORhq{+kA3&^xK@Y)utVWbC72dHlA&c`C|9j>=aCy0HTpg zAZJ7We&er3+XLGD+yLoIFp!cPHfRsLKhzLUW%k8K9paNDl=E1~;i}fU9h6&`IF9v} zZJ8p|H^gSi1UBO1@a@+4OXh)qmGNw1>sq)D`5|+9(V7Zff)1w2N88(cYu4NXtlPqp zNrgg|&Xot8?$n0Gu+B?LI38tM-~HtPS%c8Q0Co3=0mi&P?)93HP(d9Wgww8RA0Bp3 z@y=#F2kQ$18YagmJK`tqby5cw{bH!`ji)2!jVb<#VNf%TZvRj=jw`kDJKCTa8YTrcFeITz&)Z0?hZ04!PG+P2awSp&#|wZ>PUAM zTEl(Yz~)we=$bm)JtCs-XTu6K|F;fvVyJd^Ij2fGJGyYMpo7urmzOoHKwQs?T1#jt z<6I*;b^=X8eU_fRl1}Crwa*+3J*snzyCZYYj~4xhP%aQOE9>}L7&#C@YyAD2@6I3E ziKd1bb=e%1MW@>zsPUis{k6yKq!-u(3)$g2C8V{#32($=)=`99rS7UD#RD?|leI^1 zfd0OT^7`0kI%r*ixep%2Gnd;H2ICt2Z1?eW*me;TyVAh4Wk=;RZC^CJ-U<$G)m(+t zsqswO2A1znZ8z;m% z_n)ydbSe)lXQUa{aWZ*gxIDD9krSuZ1Df725Oiz^>WmLIS4vl?O97GnS%H;&So$Nl zo+5&d&>SkgWzX4aw7)YQ@B+5!pU{<@5lPRis5BCh{9Fw{6x?qC&3eD)?KUu?QdIR6 zD-wy*V0tDg3#7B|IZ%R_Vy9F{lvK)WtCFyuUz=sH*#DF;%H;ny459{P8^go+R=2H6 zvZJ~F!J-cKu?xtQx6W;DFpM4qMW@Py< z_O^byOwKySzqY<2iiqkYBTNOKH=Dh5tnl}155m=)9GaXbIUe1 zE5}~w zMETiLYz8%2O>UaiH3Q=qmXon$WQ~3^M^!JAnNw3g^>CdWh<_#~ z+<=E;NRn)Qt`0hF$b<^@Mo9$TTky#NxhPKxSt9ibqqO>G(FEbt<;K9t1$4^N;C1KC zLQ)*=-UR;wF?6n%t3!Z}u2C$DK-bMM|!Z=E`wUn(&o9N+yl;va< zES~g-EYAl3xmWTlnoLc1KtzY23B8>cBmg(~+*z-PEOcHP?hysMkw^ z>YlNYJ>K7xbJ6O|u5zR&-|=z74(lXzI^9!8fK)*rl)4oLXMo?2dqP&ybYYKco!F)_ zC8c=aV+zjwT~1=#pRSw4ML_yW~4^tqX*u|3Q7zKHJ+Opfd@_-clr)w`-~`Blp3b)jSrmY%#VJ!lbDR*oZN)) z!6MD(V{jwa9noUJqZ+<2iSB`?ssbBDXu0kNn$WSM3*)NBDxf#solCBCz*wrT_+vm61L%t zQa3S&0KT{fQOfMneOPuU#P%JH0KFUMEfJJKKV1s^8e_V>^L;;?&xiY~)fX}~{A%!g zpfxKU#|~uw=`RNm1naMQy7+&o5kI-H>ViD0O}UKj2)IMrv1<;qijfKw!#wCc2BI*v zv`#A%hIW&Zuts_y@X?aIFzTfW1bATE0w_&$ae z*d1Ezi1q_r`t|yW**KKc|I%ArOvwX^*f5It=l%WNQQe>nhU^X9J$EJh!U_tj(N^)e zLY2^|9d2`#iYK}j6_}e{aj3Rw$|TgQ(*_^;!+~aw!8-C- z&gsw_%Jj6vDTz79dpwsqC!Ca4u9GdVrV`&5TIDcpWmhWp#rIODh*3QRci{rs=fFIC zLgWE(;v+*?5THM37vKnU%1GC-SR$?8XBbYR>ne{{im)y2qyyC-Nu!)$wsss5ZzaH5 zvvBs!U>oWM1A&LQ9jw-~X<~NFQi1~j&H-CNi!U44l3a&#!zGpLGF7jijeo6gTRp{W z9F*eDAw>AygG(}Iv)wB>^$A$!OSvX$#^H^lcZvZfcjiiLkA(fU|dnJ%A$qUyyrR>f`c!0 zvx!n@icMZhSClQ^c@$LT_9aT*rO0aE-iW6<;!$wnzy9>yB%0|tK53lN*fnMZq_CVPwmMD;@GS>N+RywJRaX>|u3=QB;job(%+UaWw#R!AqvAk;k z11T92K8Eb4f_u#VAjcq%oOF0kd)thh7%$glKZ1c)a$=a`g>sUSaKzSXpOVWJnZ>mr zYPAm2)Vo%}9@v^(gP)-XFgXD88ij+ObK)`qRtsi4wG+`cV7;R|Vp<8oN??Ia>`VM_ z5z#;Qu(53sqv6F+k~xiF0vs=r_nKHui|t+j*iaV+h24Z{IgJCV$=%%4x>lX^s3n8U zB>5uEXZuh(n)pdS38O{%h#GP3<^mmKD)|e&WC4-nOPn7!-;LV6u@ zC~_ih7Pwlght{@A1K&;3=k9ctqYSvRZ~**VAu6jFrBF zNWEwT+j@V;BR$v;h1@C<*JFHc7-pqDztyX$t|5!u5Y0)Edyb(aVha9J5&kN*j- z|0mFie_h1Cn_H(#-MQPLBDq4vgC^9-u+tt9Z|5bW7tiYw2uS!pJ!v7P^(=_v;=eR8 z6ZCtZ_LKDY27Odz0pOjveU*F_vnZ#^P=QU1IK<(1#yKuVCD=SUjrq9Ym_`tDS+X;> zObK4lqc#q*$igap_OTqGh>2Ycw;S|l`8jDx9HqiyC-m%Es3f_5+btHAzi$$I?wwbruK#vC_yT31pxj_~>`W~+8+)L|E2IM3da`E$~(=1HkY=etm?8i}&&5Ee2 za>38yo)xL9Sz7VQ{#x~GBFB)ILqj_7vhh~-(Qch z@M)(cvV6#|`n8vQcz)GWZk#M@tNcJyN)MPt;)pec5W$K`_mT*Lx*bQ8cyTv0hwZG$ z6mF*Y0y)!()F?OM@J4G|Ao>A`bR12&AK?E4OCy*Ld`wfUnFNMQhubJWC$+e25Dv%4 zS9};IkvLd zIgdzC8`na_*ivr_65~b|7q= zu3)^U6eFjB+9%ExU+Z6f6It%J!8LG-?A_7A8Wp^S4cVM zLucYmsgL32rCRtof?qdut>+1!Ti2R(_-5^@QUQ*^_6gb(fAG;ZTI=Eygh#bNb))*~f>~Yt)fXV7t{Az^Fc$ zRhRl!We*bGic`L5E54KB`bKsjKjSQoyWx6pUDXaWOc& zf06yU-kL#VT=YKq${{*YoT-A=N(Z??`|2PHH$8AS{od{}HO98;W2m1W1J&FBE+88%0wpEm+w{a>=+;1WGdp2t7{T zV`Qg1>sgMo!M#_miTev?st-U`sAXT%1V7Bspw0X+>98&G(>j#(8_vO{Q*u;Z1O-6k zt{s^6k@~xuG1+S|D@_-IfMcB4uzlILC?6$mYZ-$(Nm8TNNY|Dy*oW9Xdr-0%C8obnI-d#8{XrY#51cuI<}F3>PUcKz9S0aX`Kq)j5E*(N;Q8u;@Pe zd^|Fig(}^I#)t=}c@T^x1GHTt-x&pm(n(1)90JAE?!S*%hefx~>(Nu(wMr0N<3vW zI;%^~(&oxZec7=r(K+H{^?N4ZI9DoJG!63-H(|r}gf?F* zv#V57L1L#%uKr^w!HMWqx)Ex=w97`9x3y=@bL(KFG5c*g6fYM^W{NzcLR&JS*ev&u z0!qt$_a>6G)b?a=_ zBrK#EO0_P7y3YZ^h17I#^=k?5>sGfFMdhHZ7`zp+MmKcKPD!M4@oEb(@SCfQ>V%Zz{Azx|gI$?~a~_O4UM>yw}D;EY3_fD8d+a5j#l9Xn^;iNJK^L4d>wunwhso8~HM!3WVbnq($tIN)O-lJAa?*A=T|DHp z!I>)>T1o;U@dc4^aJ8Sv9Usd_#s85{CJd%M29XE)g=taeL5Ln5bB;v6n4C$ETFEt0 zc3j(*C!-vhlpaMz%?QvH2Z4WN9G&s}KYA4dV+}qq)TC)#Vc^llRSJyF`+$uVoElI` ztze=}s;x--OsRvHk?EX23utP3PGtjGBXJ~zvIRDZfw>s3fpC9sLj8)H*BN(JHcZ| zI+P$?nV&0-*lWwqrU59CQF^Xr=-M;`aZ&WokX(i)9!owdes&EcD-<|l?dbIX8OGQ3{vOG zy8-I=$aP06_{1RoxlF6_`Q%-SfnX?}i<~R0`)=_Zd zS=#fYIE9oB8L9)|eJSV$$Or$P&T2=9EF2U)m3rgIZXW5%Y5~yH>59r`B}^Vz>E+Ci z(#IL#zPN7;1iA8ep!J#~+18f>x;&4EfyO#;xNMD)mim9E>SI~-t8jSn#efflbbS4O zG9?W5+v%dL|90!YS3s6)@FFEY_$S-$y_&_RM)U{Pah@y+>nxK=cVKq^#hBGnC-;S0 zVh1PSI=>wvBYetyB?0DC4N>WY(XQix#zSli%=^Htj-Wdj5jFw+rNp*Ih1)@*W85tx z@}wjawoTV)n37WPa=X1!^l;Wim#fzn<_^I6ZUuRFx_dpvc#X|5^FN#~xDOVW-7nUI z9QKw&&H?46H}3BUw=ax+t>zR#KGYR;XSxLFlyt=wa#7wYgxVKxd3ucc+8oo}=pB}64eavZ$Kz}rjkku9;`1iJywb}V`5-3H#aqjfIf;~7qC z%YtpW-Ti^TPv`*^!R>LgxzOVsV?^=7o#pb@6q+FmYN2xqY7D}vxs{-sZb#6vFO>K! zM{{Pw^+JD)^KB#}H67}2T$DGfTut8cQ2gw;;1u-aXUCUc(a9+F*ZO)*m0dmlGucXvD6 zZ)V9J#ibfQZ5%3|z6N$`#RDFB74>SY0+}Qz=lc7+0w}+O4=Tre|DK}l8_6S< zCA%v=N%13^6O@ zsx7J>t77X0TdiwiG2URsM3n<;NOShIizh0faiPb`}*$yY%hc>o$TlEU8gASD&^1}@*1l_0-@pJ@zT zNBvVPvd^VVB!+12H*l>;!&f~zvz;)t5U`3*rnMyMqWID|7X7R;UyQxUT zE-TuhE*$}G9q~986~w{WeG#4A(4_%MRu+TCt1uY(y}lJ#yo97`Dj8k@`o@-|nSfc8 z#o~C14K=fcb*M?NlcpvlezbvdCRUb*o6UXZ-Z{g@cf}ynRE|WG0qb*;~K_O?2}eF`j5=u)Vnp+++%W$7hwbAFri;v(4j!6|e_l z?NCghkt)|g2a?fMnQL|>QQzZtZJyO9JjH9a-aY%lnQ{NLHTTeiyi_SZn`L94N76ZB zSvIFpm(Hu9EUJ}@Bu06miFw?xk<($_bhooppL$85qNe!{^Y zuZ6_}SPj4qEI`fw8_6C;NAS*+J;Hrx_o89@O?l_$zs>)$Ax73InQ#sm1dFa-J8Cl7 zv(bil78&XS2&gEkD-}{rJ)KA-`)BwkSco}=Sc%hLop0?Vle_H7ylL}RO^RQyGl<*) z@)%4Q%DxUUe{mN>EnTDUK!T_$xr!Jpn=X9Ho{W+g`>Fn)>ikyn+1NJBI}ARiQD50M zZ$vgH^Lip@>1E$c9bkHOO;~~GSwu881I+8Jkrq^WS1p$_QRj6a&_cCq#V_G@Il=mF zjr!e61DoeN{^g1R>wn*{wly9QRY;IBwnxm)eo*=cS}yv?h7x+1}b z8;&MD9G=!G5y}J^UW=ngx_=O??m<&pnvm}@@%%iLH6N*J31cp|{q(n zX+6U!xth$OjXZ<5pNYl>p4juzq=fm9eS6_dc8S{@?FA6=!k>BvB#0pH55nKXmK!uCAms^r@L9w zyj0oNb<6!oNd}|yqn&| z-doeuNFTJ_mLyD&@l^wQftVOtBTCOc?azM zKGq&A=3Zi}le%RII6V(HZ*En(ByNSq^0^mtrx;oe|N6@!p^T~=@WfpH-bHI- zzG3btw>?iOT~6UnNe)EYl@D`^%oXJE+kbkjFt+N9B6b+|=wOq(z-YQ6w--Q>;a@_@ z+X?JTwVEbY{Gr(B)D$EQ=)?B?qxa+k3B3o4(qFMX$G}s`2sNleZ$3phhimROXW#-q zib%LCpj_=l<-i{{AOU*;KFe`5;)ptxZN{g3vn)?g7WjU3=zn#U!I1-0TU^!3at=r; z2Irp)-KYJLUi!>xPX)14(LVbMGG7U>MXy{=^NuJ5B%@X1q)Y1pQeUo}H$t{U@E3O2 zCy%;@BbXkqK@Y!5{R1v(Kd$cDA#OIFf1d(Z43L+j{k@hihd)ex9@x)U_m&dXt=PVk zRo%3tBBKZWNdd;jis_EJn;gn7VmN`H<1RiEgo{a5(gh&QL~*onPK)AT$s78xQ&Q{m zxYJ5x;Ur&B(uj(el{){(g0kqlL*@F|w(r8#MaNig2d&u$&~LJiy_bCtJ<;?K_3mu6 zNsl=1f2px6mZrX@`?nN41cNvV`T&v&3Q&wnhZx4B!cMXpY{som#L$$U7EYlVn9W;f z@&W{L!aO+Svi;h9UPzf4bGPq}mmhtx*aGJjw)Vl_lX(+UWr=n_9x+*433c?|8ZS(v z_UHBSQV2vT)NeG*0jW=4b~e)Jjv&tT`E!TVLiANkeWx3po);OYKw8D=p+2oiz*UT$hNViFOJQ-IEi$wbFrv zUI!!#21^5#A<%Udyv*nsp8X`}fDfYg^2le+rmVyg*=K|fsY<029-0e;BFUfxptF=` z8@SAf{f8dZHC>)o!|R6^gzL1m-DtCveTyGPSM4e+l5XtT6EV#3uA_sLHSQ1 z1n5(d#WVY3E(#lQuX5gcK8j~uP<(q!gjcGUK^g1>7mCrlgD;CQa13{f37>%UZCWC1 zDhCeQi=xKhDdI9kucx`gugt==&-!)E?1ALQV;Y&{i6{$4eu@Ic6|md^shWvBB_AH$ zVvZ`h@-Ta}IjgZlkhnky^d+WK+MU5omf8!$q1MuBT62EXcHLXdv0#!U_#F4BM{A5N zt%^6fj8=)0#&EJG`$w{jS}!9{{YLwJ?xG~?|Gd^#us3?|p-tWCOKcK7RV@I1lT3~a zv9`#1GTvS{`WsfMc09I(y)PoLmPTXqQ5~a}y%KoM&;KL0791{fgTHtaS6YH>7F8=+ zqz9)NEmt_2dsIl?_1PuJ*z8fTqd;%LS~>1|>NB!fpdIgu4*KRt+?_SW1rWP3U{)QsoQ5<6J2j{+f3YtY24^W=EH zF2U0DFY3YN`xKdeGRVIsP%NPGj&B!mafo8~l*8%78^R0%RUy3)|JD$!5x6428QYIH zb<};_NAMu=LvIT92<3wnvTWJ{g?T*yL0fmXGpBiX{O>0!8d%Kl@EJ}08cJfUKSSnU zH;@^fA$id?OLKDK7lS8DoU;t6Z~(ir16fC{D5f}^>>D%!^#r|$E6(O#Pi;(6N`9qo zjt2vU`cY*25iY2%vX8 zKDN@>0?Mck_OOiquD?AaV*RKcbe2QYdD+XWu3VL$kzZ(yJVhQNgyR9QB(oDcFSHJ0 zcMF|9?*y)ntMk2i=|5S_J6BLsY2E8vnX0Y`rJyYLIf6y=tYby*NCDH|)W``kaP-Qq z>{d)ep`zd@0%w7TlM+^3oZyQ53R!JZTgk$0DcdKD*W77PHySs{iG$6_l%U2C~#|?AmKo<_~wKO}8MIR0z{i%_qG1^fw;^Cm1eA@*Q zLeK-seA_hF!xu8~P+6boB<#lcB{fZPR3x|>_@TI+0KoRMv_A44tu^owg%&*;K6FN5 zP(5R4<`-*nrBPMcA~so(KUVgF4>xxwL7YhHkqh3Xg*zb?%X`GkAlPfXzHUp zOVPI-+OY0{G`L?VX3`Yo%Z#FF;ws|S?8aRbEaU&By%nk}=#JB(KyY@YMiz-q4q&~+ z^$O8<`}qYnvUcP~g>Zx9VE)sAznn2{KBV~vB9`@77l(j|H0S~RXX`tm+Z=I}bjt0l zj-C&MS54d|;PlBCvzN@mR_-nUZ+EQ(;|r|5CwE0_U{s>oQowt(7Jb+ShvbqR(c9P|cT#gRu=_>{rc*nz8| z@ow*&%ft3)v5p8%y`Id`L08CqX}o=}h^)%2YIkX{g?74sKdTWmHTEn__klN6(d%0y z(lU7RCM|S)Z#(7+i;YEu=FCvZ~xJ2Wb=J12e{FA$Nwm`%iDGiG=mZ zs?DpCKh&9o*;G%Z@1DfNR+V@pa+txm{Qn#_dqX^Q?=q-BaM9@VspO4ZcDZKq{Qv1X z0tGdEIH$k}Mm-MM?6_c45ZyNm17n%&c74R&)buFX9l6$s_WaZ{8Gc#a;EOaaDyrlP zlqK^S`E<8mZI^_BBG*@?S;@9vu~? z$%a-w)mpwuO?x>dpoOPrFo2WRr{mQ8U+IMT{iR+j5LI&eq^>Bio@by7W z^w(6!WZe@?3w3rEmRm%48DjbW&E~Ad70jRY{dkeUg;e?=$Jo!6Qn#Ojz|aba_9GZeP#0L6EJCVXL_{I%sR`BfgXrq%nui<)WhuUS&DLq2MnWEj(Cn-Y z4|t?uN{;JB@^%?fUd#nW{P!RYy}VM~F)a{R_cvEE+h|jW{Pxq@SE21#%vQQf7ClKsiikIkx zJa>;1prltOJRF#QfMu*ke?hUMysL@oJjyO&(@e?4)_G3{;8eQyR#9ZQol6cJn-|NT zn#yq!GSPnSr5ItLC45h5`zK1YdK;TR%d_Pi&55e&X=nyqbcM&yOae{{^mj}aNXoI8 zFEdt{PPdQxQA5)Y(_DtTVkQ;GxePA^8QWGX-l~)GSlDiO{6_pup@9}jVgvAbXKzmg zGa7!?knui#cl1N2VgJ)CH6me!eF_VfPjd-JA?Uq#!toqH+s#J8O)oBFiE?$rbnLMf zwnN8oMSUKmhE|w|50lT?zKA%frU@x{r>`x!mMfKe=^fVg(TNbK$h&^1_IsOMS9)3s z;B>zZ&#?+*57uxRV_%qSFW~Yo5uMV98QCXa=grHzu{emN*z{({uXiqBJ3o2sc9ImR zjkhF(8`@DlcITlkEh+IIwKi)kyn$AAyOy~Gh%2(XS9VHe17?0dbPLo$FGUN?a!Qm= z=xFgD6a5GoV7*Q*dZwSIGD%G7v^E}Dvl3u|!pozBfv`qS|1C8Ae3m^j4SJi1X>2;C z_XD)n!pX$m*RKa0Mr$x;jXE)Clhx$V6|HQdfco>p=1K zJaf3dwnH%PT`YQnf#fmO83()`f{ngSP07R!zA~Pk?`=r674K#ip_^jpVy^$U8I z{lLluBs~qORm^7+Z!Gq(8P`q2mB^j1zs(X^!#CrHeFQd@7zlhJhOg?IKJqW1Ih$gs zN1hCQUFf-uGN|xW>$FTct>*TKKKE3(>@H?Bqol{B@gh+^7O69&M{C?U-H@-yD(p?+ zaL@UdMstAy#`4n)T3!A12qJ(-o(U?(4|hY)t{zs=n~OZh3mq?#Qeu?sVL;>JFn17f zTwIeyG{PW;e_+j;zFwID6TLIgNKP%Mbr>*7H6)wG&Uf{7!;0LZ9I?2Ht=+AhocnwdrmB-t<=+tE`T zavgPz;h|?ef)3i+P^G2s6CczAzyMv2OJfMk&PufFhB`^H&+d1_F6jjG&5;f#Hbz8* zxrEge&t{8vQ$%RH*9OeDF+1<`H}~|>Cu5{}xr~ax7w+>+qiHQ8{#(+G_1QyB-s?$w zin7;79)FyuyLOjq*yZOMVtekd9HadnHW%z=vi-(A4j0#TXH!vLBu~v60~>&t&qZ>S{P!_jr$??e9>?&(z?4`tu^9BSwGfLcHko-V#}c+U}@wweGiuAjoXbV zL?vAGL5n(z%e*qc1C7RayDme)tW_purRE`A+JU_`=_A{4vTRu+LU#Wt=`fp?u( zR1(_2P1U+wxle&sSK8_L1u^ zPHuoH4ncMj#9ewf=BBz$^==`}J)TZ(5FmG!XuQPRN3ssv<@H%zM^8WWP3o%6@{M-r zgumG^C7zRDetAX94MCAKn2Oz|JC{S;=|n=AK>))VFSMUrc`mP|62FQL6k>0H*5$=? z3U^#6U4G@Y0=nu47L$Nc(F(jfqP^3)qd~vr`0Sg3UnZ4}2w2A-x+zALvOt>QWanXHp+V+|N!XV_!=z9NV+#Snt1#2H z?q#{M-!(`=o*f+)BPa8^gfxzIs~tzm+{BzbT?+iHJ7Im(TjV7N&p*?ywWKG{DQw7^ zjV!Pj?0ZrHLa@kC4hRvMIltnx7yn@4s2;jz8?vBKG@o?yh^8nf==ipLHNNAQISi;- z8iv{p{sH=|s$g3aGnK_KjqIMin8U|Od3t@5og537mS_y)AyLTw$gs9+W=wn#v`e$a*yY z?5|jH4y^hX0Ukt_R!b%@o6*Ad$~G1jYJQQb3N4!kTbl?4Qp!ARnU)$-uucr1p!!Ll~K8`vror=qVI1mYutiWv1mH@@!jUK;(G zuFe-U?h~EOAWSrp{EYdH?I*K#gxCLur8+vzqT@P-|Gry0%yP{vd*e9K7Gn8{9b{hxG>I;-);ZAgxMcz0eBfsvyyH53= zlMWyxC~YfwCF)j#A1;lz^E30ioI|KzfO6T?7RYppP*-jG(wU+7XtR8QBbDwpYbETB z`F4hhc`JYl*svUde@V|5mW>HW;;-x|{~P$g_J87w_uFY8!3ahzs7r>!AB zzYwWV7h(Y`?=&Q`wUxE{I)Nk|0Pu~4y?A8ShEHk;dgNbqB0&te=$(aIqTYt{Q+~Av zI7t|M7vjd9h(|2!;}D$wbyUC4dE@j<(yR`wRYQ9)1?jHCIo}wVxes=dQ|`EHQTvHW z+Z8jRR_Tah$K)*S4DgP6z2omSHdr9!K1TwhLtQ||K>9%LH*A|R(ER`?G!4V{^!)D` z_NMDA3In)?&}HH&Ivx`=1|$~{KF}vkQVwJJjsaXkE{`d&;zYr8g?PTWA^&d7=)UBQ zPWynQ%0+fAV@a9u^r7W@+^H^^_4gKibTH(>6dje;FiAs=VH7>u@`zgb#q{*>jGtla zc+pU#pKmM={_NANQ+#@eXNRf-%!ItWvwEUl(!Abktg9djoTRen3%%tz)aV5YZ1u$` z_$2m*W^Sfmg!PKz5&K=d`viC-bgR~4^xJ@7V)$pL)}fkF59(FS!Gl0sfB}|NY`z5z zPu1m$Q{mFM$Fj5mDSr93f%TMe$tEFMkq0>At(~kxoEZ&w+LNmh(CB1(7t9` zfsSuV1O~|TE!c>rE>3ChYg_)d0J5CfZT6uL6vK64~IJZTnOU`3| z9#Z_S*~sL$?!_UT&wLvUUu+9%vQsiYavSVEn`?JbUXI9_E>K}lnEfK1B9mlQ8pjTp z`r=aar19H}30$$^%(9jNq2fkn+)sNM;Vp;~VLS<1{cG4^?q0Hyu{M+;ctXxa_T*~W z!9rUh<&3LKB&f_%=>VibxN44(1^V^Wy>7Ga1MMvEAkwVewabjds#9=jkmDmm~$LcFOg@{})7)1K?xV15Ijzc}10 zU81{&iZYE3t8G1I-xEwTOHcDZ>#sR*?jfVIuM`(#WVd~*n%gs7cuvO)y9~{S7YWRl z?+BXk=F85q?>b1VU+em60`@Yred(t}MXsOZbTa+cWn4Eu$2ML?wq#RP=e*uPO3eV% zVJvlXLg+UXIyL9t`PMpvG5(E{j<%owQQivNuH7_M`uy5n?c}hJmpq}uh7QqsK-eE{L?xFzhHY+CO4O0_C64N0zjs)YDq&<7ym=nyEYbkM-?s8zkTu5sd z2H|;YpF2f7VzKPhsm3*>$-yD@9)ct166{U;IVK4b^QoPk4Ow7$&kS?|!wct(5+^5c zJ->0hFc!8pxcw_~u)l6jJ$=j`ze~$NYN7r*+Up2eZ@{Z@y)LZ~7CbEi^-y1q4a_l^ zW*Nqq*9B5cscK$Uc-?SqiryW$9V6|dJZxIxmM+T9$kra$jc`C!`h&QzL8iF!YEeEk zXmi|kNSIZ~wzKH^0YIX`0!wvzM}zSy&mG^9S-}nxK2drP6~OyOKrik*9R7(nV>^(_ zb{cmu5+MMDzuB#lN zt6?7h-JkGB(S`rGdtA8M9U#~Et79e)eUO?wOY(yf_ai5Oj0 z9;tltW#?vvF;^}JAgj&$SjD#TDoMnq~P)h6H%MFLL)_)Dtt;aSrV86P!7*qtJ3{*JKokT z+WDFEL`)^5EP>>YQ}d~x`Uy0xx^hodQ7cexja<%2K`87vYjdCKwg3m3&yCV_EEp6- zKk@J5h3D}l*hGl{pFh7A14xlGHFV1k<$KZ-IGu~^a7gWkn3Gm53!o0IU@B&)fLqv| z*vR>CTqWRixCU#UT+Q3RJ@qI1bmPoIMyJ&oep!`|w$?P3i+=0OSvHd$sa)&1$Zd-j z!;Z8Yz_D1gg_;M6b(VC^3^DPECC+;ut&s}zLL7&}nTUHKg_7)Bb5}oh)3+91BCBJ6 zq+q!&r5zbLw11hq;}Spu)IRSoSmf>r&Ou5gH<1QJ5?`u$&MW(o7a;a6BZXrG!#Q8l zN-z7LvdFbKG|++2pB28wRZ67|B7(ZX(2qZ!^Er;nFor)+-f+7K?nf3(%V z32xu|@Y2)FM?>w*nUBI9f{e`D}}O?p5Ar&gkp8z~}o0GvBQ%csC- z-}li@kYdLXaR)cThjBN5n1eJ$Nz8n%fxV6ZAG>DJ&^9A%`ZB9-2;hFMMUzCETOoEA z7=Ds*)FWT@v+CF-zb60X!hc?-Ni@gC+rf>6B1l}OXOS+L1Kv3+EHjfIw(`vr%s`JBB zo?D^`AjYR;l5OgX4QbpUcY0|^iBG|Xr!)JKHcm_sSPEy*@U33$S3N~FfjU12+sQS9 z48Q%@y0cW82BFBH=~n8H`PW*|$4w6d(@To4tE`dPQ8Gth)C~;yb<)xUDnqWp%TUgZ z_+>HES8Ec9&%!Ggp0dS4n0Y`|=p`Sdn=-#r>-Om zB>PHtkiQ>Jd9xLdu6v<_zj+37CaA*v1hd3V^hI}UYzda~pe6xe)3vri7h!1W?ZL_j z`on+$c} z3mR407ZmgT($!75$_;>3GgY(7kAtJMb=lnw`B=38t9IB$g&3zgK?5HGP7o%wka$3Dd>7*6mS^kxV2Wk7 z0|rECcovXoi^O69sGtd!Cd5y!y+*EFjauY+B@NW8a{RkY~^(*;!!jG3I%wP8Dl`b{?T#{A-pI!*76|w0AD))H8 z*UxZ(zL`1voHFfp`y_U>il1w3W_5NC;Z;5Ro3o6sAtPUK7~oK3Zo58rXW^;k2R60N znkesQc#}y{dO%=|^?x5|9-^7ngIS{>{8cR?Q;TUZ9c7brY!t|ae+iExLaJcK%NsJ92-lBpoaicordp-j1$4N$n*>$0`5{Nv z(^bszIv}MqfOUI>V1BY^6wq9M$e(yG9i91DZT;Y9AXUKo39Tdv{JTomJj(n5m z5rPhKR=XiJJ&v?CET5>zL)un7C*%I#x3$)lE|W~vVB`Z~-egWsEqfB4{m`+|e`8i8 zWI#sxE^&d{E*G_;C~nHF4E9azpji!Ji95R*ec+&>vjF-z6Dt)+!|r+W)?WQzI`; z0sxm1zgQ4bhKYn^X5y#w<7*eG&@OdiRO((Q3HRN#^bn0lj!N6w?mk2dbnGpklg@#w zwuVY)hvLgw12*l=|1EyzY}su5jJ2cpWZntg>phRwR`wW9<;zT_&>P?`w7MO6QY&&h z2DgP_h6`s>XBq$nYkyXXQ1dy5!_Y;fmUn_J6_Q5^&sDG&8wy)jWe{PP zQL7FDJs_~(^YBJ#%u%C*?}(qqb#L;X1vV@kQll-&3m2&EpBkhWj=>|VwbQ98&T&56 zn(HEf2e3j|JA@{~_F|bOS9WZfqbm-RBPj3zisr=Mrm$bU=@wn&P-9hq;yjKSy zvvYxkU_$B%CA=2PKrbh&H5PW?1}_7{4WDxd{jUlMU@-Y_P{8cQZk?tQo`cVDVix7`3Z3H)&fqm(QYBaH#IKw!JaO!p&YY^X6pb>^=dEB2vtf99}cwlZ6?y51-@Jtd2o5ReMS6nD`5k8@cXM|`Qay|WeLKpY#Yx-4 z&(yLx(w)0e=@5iIBbo~6hk}10GNY86oKsxnB!P3O^<^(nn4Sws^rN%uLTWWec z9wk6WN;i*KPE7(WW>R+M*E4WH1cpYGHt{^W@xCaIL;FT+3%g|XLPoWKaJ(4EatQqi1Vga}{cTTHeyDn|7SFR0J zeISSXwAI{^%%gw^3EVPPdO&ece3|X~3r0UB`j3{Mpy;JMA4w8mEd$rr76S%6<1yrIn%AVqFBNZsOJJ)Gq8hRuK~nJ1t-e z97=r1GuN9+#ULCZhm6Q3#XX?BSRCC}g8OYUkI~Sao=-B^ni{1R#ywve>=z0+hJ_0n zY6Ncs8525r*C^a|=E+|4QsSu{5=~${fTqDGrSRXPt%-9h6T-OXpSYTeyhV(*>GNnG z;KrZ<1Bfoh9e{rk_D9Tl*k-m2jh_^r2mN*n*wQQDEK&y87TNcAiBI84dQQ~9D{mVB zOW~q~JEI1ntt6h<^adrI5pRoHxG`!VewYT*r-|Le-s1Nt=lTdG&ky2M@dZ?5n5c)Jh&uVc@I4xG*N>qw6)Hw&FjJe;Oc7 zDB|#Xw0aiURuI$LLk*2nNe0xOZqC1)Mv3-rc1UQj} zb3;r4te=iR?thVL*i%=GHs2$gO%kP4CKpkhVK$x?sa!6`F4bt~NKRRs;~cEa9kE;u z;-GepL$_osiQ9Xi^8E)!unTvHRh9#_V9D*a=|i22kZ!9`CUuh#hXQI@Z=N~J72SmI zi>A4TXKr;cAtv`nl0J}{eJgE-v+UV_CbfaxAX6YJy6W$Vu(xlT2p&14_ii8Z$m+`H z0v-8dMu{4D69-faMmgc&>WD>^LmNkA8%K6==Q1UpyLd^SYXQiLaf7m30C=GlJsOH~ zCem9|g}ZIs8)2bHXf5i!m!r({JV;O3U8=>#j0QM{M@l?&cM;J>fA{}?(0p?R<^9IF zdXhRcxY^f<9x2>Zts*Li1P+wwpPwC|*Ij%~J5 z0@e=b`RaZZun1F<@$Iy$kBvi{3{c|vWB@gBLq5q5G;8-FCZUzxidy0eFpSFRc-mTQ z!s;$@o7^OMz)w5Y^JC|ASPQdb?ffN&b4fw2`s$GyO8=^&J~>;F1C_6k5h zuAQN+b*Tu5OrY&o1=Xy9Q>g;1Eaj@{`|)fS@t9gk^)B4Yz2j9qWI%=RL4_=b3<2gv zT0u~x2AWVRQ28xtd*JM1P%;sPng(wZh;9wyBY|&vC{iy&SrpReYUy6T7>QA%Y$#Lg zf$ScX4kuW@lp(8nZ>QV{!I~>pQx{%1c7W3vYVHYyP1XB0m4)mEu_f=V3QzfD1w_@# z_b1lbIoF)OjjR6qV+?FOkCm0o{_z(f1u!zgR{Px%)4kyGl3Ri$Z@I$5(J9NNxR)N& zB0Th1X;8TjAuudrphmJ*fe8%6gMTfpeWUwMY*h6Y{CHG1fKa9&OMSRfT}i!ykC=5G z3p;Wq>^g78pW)BYchQ$_L=}NmMByiBFuG6NSZTqU z>?XcYzIp+rcWmP#o;1{~|_wp-weWfd2ZW(1Bz*`oW_nU&(l`Ek7}tAl4u&ysxobw{nc}gOlBx z?F*h1o&gZGLW(h*mgl0#zuPbv`ux0r(!9XoNOXAqv)RA}zd(NWa@f2Gx0keh>td1#UHwTtprf2raUdU{B+9gQqwYjr?+=%>QZHJ$ zsSQ5m?XyI6x@WQ_fJd-O+>P8}f|z-$&1@LwU9P?8YAX-lI|C9)fU1?suDLDrWLag{ zlituC4UMDAw~2yvw_NjGes> zZ_HRBd+~j@wAX0DAG=j`31U^5zQNWD9~7{FUem6iF3dqiE;p)s$)1#pAA7(<8SK#B zvLTzfV{1rN9F86jYB#j$PS|Q!c*yXB3H;!_=8R#JaBf@2{$+`+foXyqKb-is8t+xq zb!2Hr3j?uh6_RoR9ilnDY4F~3kIw9c6EYcVV;1G$>bwKrNPvm^l)fX-P@Ha^?yJ0` zZk5gCv=yxgJnf{vXSH9cW8LN{B2yRw!zvRpE8p7E=-rHN0mUbv(#+-PQD^vxQ%^z7 zIQIF)sE+gh+&3Ime}>>_seFuHVt^`WO{)X>m^rYUdRjxi(wppNu$h4)(lGN^ty|F~s&t{i@f^{Ux8nT_-c=h%#4$(p?fGj$W+WzW{ zzg46V7gG(xlj*To%?>7wM}4EGjV6{`rb$9*d5=ifBtDm>Q+YA+j0HE{=w~yGxmf_; z4JI%V2k)AX$t4eHRA^utF+vr4o;F%SkxX1OzqiK!dz~Dl%waFDEDf>!U+p4%Gn^5% z;*qh{Kp;-#lw=xZD(!2=ZYX-v>7XHz+K$0=seWyGr!ZUlBLM4G4^p7#F_VJH{)<={ zMdf56>KAdYs~`3mif{zdmti=2a1~Iu<;xNQQF&;Xnb>R&C#?>gHD4v9_x$qbk)mI@ z@{yLwbA^tPyJS1Q;ikf`qrZ-=7d&CQTNf4B?58V@n`ft}k6v?#R)Ra^9X%^FHuk1u z%fZ)Ph~5(Wma~9o2D)}tW3d=|I_-_H+4HMwTiN<}~v!cXh^~$V=TJsn5cd-cIBK z+eg_k6Mlq|8D}(vrN-BB0iYMFrxV=p+ZogkVJ(FJ)=35tLfehDe{AgqWqX*pD_QGVvd3YQ^~;F}*9?P``th zzSX#7T?zMhAOM&qWpr>MK4vqR~0wKf&0KiSx|Ugm0ctTsMm z@*mY~Dw@9#HXGUFj5pw&C#k&-xa$i|F}XJ!dlGLzpE8{<9j!ilzU=1($Rt zC*c!pSk4%14r|&fMaNnbG)d>G;R?GxHg`TD5E*})ES1y}*hXK(J>ESE9ZTlfQUq{j zer^}U(&-@~-v-QF#GR3FMZ)Q>-sfyhxCE(Y+ntH?1TGm$8B`+4{8+&Ky#jPJDd4b4 zY;y6!!C|n1V30KiOx?#g;Xg^4t=N6oxZ~Q~Wi(%wgr<0Hgz2Ehp`tD5!uzPQ88p}=@+-F=2vTwdr|jC}+^ z`-wWEhba7{H}Jn-HbBLPC4p|J@zk~d1}c|}3}kE| zgVEEj-nfTCfU1Vm9+D+nRE*+kV@g)P&Na?rZegma?p$NUmrglT#<5%ELiLqg%=LO` z4dtUacIbp{6V4EIOi2*S*owQwTI`!We_T+gl-h4NL2G1YP^d9qk4scz{X1$2n!PdM zGa#=@L7wt#Lh2Z%*(fDW@ZWTCu=9489gDSc3Tix#mL@jPg zs)AeBeDdgI>R@#M3Lyq)CGd9mp1}#!PcV8x2b-(JXttf;o=Q|m7&#B02=O3if(TXB z)K~^pY;{C>|97G=U zO6}`>HTwd9B*uw)hCS^p{wr_#N=*-@f)GNdnIGJm|YERJ{of-S@YEvaEc54R|q7}fNIB`f zj(-dHnEZ=QL1o6%QIIe1td(>$^d_cEVaJ}^6i}fN;68P?)C)_8e2VCgWREe_p%tWp zlxft}e(a8h85ZQ|PgA0f9e7Enc+C(QE1deQjq>0ZRsPx#37J!q051pj`~gY<-CC`s z_Pna}DGZ6j>dNKQZQVeHbsoydssdn9Le`qSyY|I*PT`Qdye)S@(sM}M8`Jjauy~sXEgME7r?_Jqr z3=p@zkAe`}DnhlO{v0TWHJP0(l-|lMgV8i37fsj`TkX>*XYkvn{yrfe#mK=2R9x;1fb5$ zP>k53K>``+Hia)w>QBw@-Q@kIkNf`h^l>L8=^3R%;_F4PG#c}BD`71ElhksZtKmYF zYpU!kS>I^6JfXTGkD0i6x0D34Z;7w4EH`t|$0L!!VYQxG&zh;xKnnd`=iC{mI--V7 z&LG!=$Ap{H$<>bQ)q43-WbVhF#(t)^LM;BKb+%e5$|k;^8@TZEkFm!O1iBo9X6GU37~P^t z5f+90l#R8st3eSr%-ere{lsCy+g9=6?d?iUh>$Vy_ra3Z zr6O@9rjh&%kfA&Kv`MlW>7j6GdfvOo5{^<1(%z=?ABWnlU5d(IwJj>;PVq!~7$Udw zIY_6I@O(C8f8M)lKFxpGyW#@W{1DVJ}5YwC53Wal;#=g69n1k6E>4{}&or z3G#k2dtQ1^YECIn=i5d~*$h*s>9gvM7sFggY zFL3(&y>Lj^rFlQ{7p9NH4FqT2lRk5uMcgw`I0O51a10#)3gPmo^+b0ObRCYc{PTB6 zjm`Q!6x~c52*w}L*hlD$tKNeMnTtLgh_LU4hI|!BCKL%9PEZZL8GhCt8}#r)hjMPn zk6whA%SXbG*nH~6?yG3n_k^FFZ<6obF|?DVh$z*!4%;-e|L>o(c$V>VEm=%)m~PCxqab7Ly8G1M zgdUGDY*r)>J$|+-F%!;@Z2cRY_D0!X2uARjS(?$fipH%D@b=9RzrsJ%in_l5wvkWf zbwf4T)K2hvA~XPuoo7F)K#n{j!C%^YnP#92RD?Z%a4*pj(&Wzi1LJN;O22}xQ(P7J z1_jRN8V0mR3n4ayOmLGkBu>Cba?4@|1#naE_r7;N($soJps=}Dh4nGS;p8oDSS3{~ z-3p-GWQ=mk&_Al@9veVNs39NqenI|38M84Xsf_f$_;^ASKUVd3bqew3$TbYQt~t!5 z!Tp4fG+oJdd2-W`(CvPdonedEL@aN|Y3|jh+JC~2@0yaRSA)=@y?EShqH$l)7)Q3Y z&U=*a$XYoGCLn>-6k{qVE|~)}R&fw`HjLn08@`n8LhO(`yeTOI%gmt`(mda05*4)x z7Q&@gGlp^=RI<#rXe8+^CX$Oj^N_AFZ(6vW+8a^uKJ$YOZ*G@S!4pn_lcvSWwvT9? zAk?PeVz0_EEKZyGM(IC#1FsI>ZK>I3&qdJurg%^NEO&O# zM7z#CwJ7QQl_%acQ;(_ zBGS(9J}T`T#}JZ^sqt>EvjG7AKLEfA5x+P>0c+uzSiHd&P#W|gablFNC5l7sfK9qY1cS0qBy#r0pZ#0)BW zb@e_^&KpC4JUb2Yzs4^`%Q%cKh2poGD6Ls6AfyG`3rh9ZY!Hx?3!`c8*&6Ywvr$=V ztW|QD-VXiWW;_1mmM0@1 zDZPXuh&+0St*c~ywYII6IH(*W8cBP?LSq@ti0dUl0%7K?PR7b9dsuJGXMx9-Kq@6P z(l`dPI9ti{r-A=r-v-+l0zFdx5Ego#$MQ;(5`m=HMks-K(#we|%B1JlkgSUQm)w{m zsIw$%`ekvcws+wmp61Woo34(W#VEj~o!*57v1+1Pox2-gIH*1x!t}g_FqSY_;c2Y% zB}^c%FT;84Cco_(s_MsvK=KD$oP!Nr?D8j4XyZS<^3fb8#W&8zO^gHR9u7@63cJNtf+ zLhm3*{dVEKoIgRRST+TrLAt9Qdcw5nJxkyIEivi$>1yk{lz#qT7#UOzZv?F%0N+gYiyF~VX;c(lo z+vFG?Jt;rPwls6H?CsXo$%ymmp5OFUlP43j2&Qzv7a%GCuUVy+ThtvA&&103TL`)! z8u9@1-US8_XWMS9bl|%Eb~P!_k45oM*2@J6qo9g!kd@1>?8_>e!))IDu;R^ivh&K)78s;7tYyD@d?i z2*uZ}=BtTDt_+KOafWRx4fZ4r$g5lI$}Ue2t>tytaRUYHc&JC7G)d4HA|@Pl?as|f z(}b%<+fs)$2NdL|^K-NY_!|Ve8b5^%^eZh~$uoO^DvbAes(J8BUiNhvkMeVZLWi2! zL{K{eZf%@{+hQ@bLRSz}L=7c4ueU+tSou493psg6zSd2?fEHLy<~#Zou!r#mn$m8I z#&Eojd#bZ4pRO?qE9&Hb*Hwv1Z|6{Y=G=d+7HX* z&-eX4A_@#}FBnvC$P&mLApV6>sx)v8Z4!@9m2jF{#jgVL)Y9Uc7MTQljq4y#!^(KI zQ(Y@%hPyEcuIJ(C$Zq6Z5{p-3CF$dCr>&cUYUR{;`^U2b#%@Y%qv8K1S+&`ObiW)z2HfB>bqWzVeI0aP{Lg``aJ}X+tWkVAM?obH zT_4DyF5KOOY9GK{=t;kPFFCzGfc&{s7WTu`Ua}5eikvYnJD)Hm(G)tDE)Mnj3lKPn zbr)(N6Ml1&ra%UEqn0j`{DV_*Z+d$~Mrq6in17FPyOTbs?g}_7APt!M7J_=G@%cDv zQ;&#boo1iTo&hBu)T^N*WWlcJc6Gf=5A2Q`jOl_Y$~S*mY0+7 zQ^my}DaK6D4U|M?IErIlRjC*m5{JGD5BTaJs*3X>{vq^*NxJ)d&M4#`JE zXkA8l*w{px60W?@Lz!tgP};tK;p@Rq5L01fUXGq*VxvB{=LI@YjALqzIlhGM^I{rWYj zc&~H?gH9TEYDa9zDLL;A{}4&bih7RnIP4DUy|z1Oqcs`NNJ!7yS4EuDav2U{BAA`f zV;2^Qp8KrWL6?PwX_BqB6-X5@NjqQgZ|rf?=^DRtI0S^E--tmwDPn?uxS%FM<-j>a z6F&ayA9t0TPKIS0CJ(A9MWd9aPs*-uLohbp9qLWDNq7%SK3vKMl>A+hxtYxP9 zRIbw?*)o4p-aD8raxq6nE5P?;4w|LOPk9HpYcXs%2O_W~hLLIoH(0z1?rPT=tXmJp zNXbaVWS)jrKgAVgm{*J<6?u@tT<_(6!JH|R3XL13zElJ(qXGRoMpY+}Rt0y-pLES7 ztH!CXr~@=2p!RW3It{tr2jBnIf&rC_0jWx;g$lFL=%fkx;~bA{I+?J%-NFx3i%$qif4)A?FW5{H*5Y>nwFbBrhQFRm%D#z)sg`CGNC8bk*(0)>L+V! zdg{M>)@Hm;y!&eeO64Em22OLcPsHmu-75hfY~8iML9PUmE9e8pmR?I?C^l-&hb=Sp z{wd?Bm4wU`;G13$n=HO7#U6oVp^+d^N6lh2Z~6H*eSPf0EnKwXSKG`2-Fsmrfr z+Hx>{+?kdhh~DJXz}W>2-9f{%)E9kb=}FWE&GXj`~^p*VdBC4 z`ed4_0MCLAgMt;Bu6e#WrhiiNf0#DWTe1+PrfKbn=;`$1Z}n#p+bn zYMA%&VJc#=)9CVZJF}?$U4Jo*FcoPn(>(#39?w%oig^NYIn36s@ zishnl6#@7{EkQ`ozy|yloQaRIH*oh@g=vAKh-FU%s`&j4L$u%DN_WBSOGqC8X4(Qh zHh4+JhY=Vi08>);4~qpRC`4V2Dz243j2i5^L zs@ciqpL~!pv4-08t5YTI3|D05E18L7jg=m9^g|>Pz9W!lN%&%&jd$){6}~3smFxy@ zX$p6v)PVtwRN2Dr_oUjtr^ybyFiY8stHrUG2l?SxkS495ch5l+!isySG~o z6U&`<9Ox4f1!fTxnVP?hJ)7%LK_&pMnGthf1!a@iemio^b~WjbG{qBoL=5>KR<#|IYYOflUX5!O5rL(Ai)-CFLrrtqnZu zA2nYenRX9fXb_VyDjonUlIiVxsRXHxPaDjig&p?0A=7^a$PdO6 z?qS4_&EgE=>kR%QR1=w@cNF%ONC_9?umG-^0?hojOtvsv>1FEv?{Rq_`CU@*3}>dD z2RM*}Q+ci1?iedZ4`~$AF(*pS6h0xban+4;+7y23mM9qqaDX;E&;R9kk0=s+4a^r* zNuYBuFG4QNBz^0o=-+|0ad6H%z~(tP6)16~gzA8!wWOi1AWAi*ApZUo?QsqgLQR^e zpehp;2cw`k8UphW z*2J)B;IctJi(7FLzT(^$kF+pdBCESeN{9p}@g3}6Mw=m`6Mw$TCDFtt`VWhn$liCi zf4NYqTItbgk|!@aJ)LG{VyH>TyQgi>V<2e!$WJs;(`ZB3n9;~qdUARe)V3)Jf=*6bkfw2Huc1tw^Nv}5ynf+fdG6-{<9dJdp zK!m|e{NIh?HBNt+X_37Rr>m%LM|({?Qy{@v5PgBT(i9IknkK3i+o|d(f5{lj-_X^g z&XVH3>a{=QIsH81w{EhP{^|s3Rxp`sLLyS`ZKX>Fdn26ODI(zAKKdu$X@#sX1qjKG z5u<^j!;%n{P$pZxKutT&jn&8$KVmV!=H&H4STVp^9_Vufet-C3SnSgJXqi4XI-(x;Wl!kwlO<#-U4o zslS;QcdhcZIU9PmO!8%SIR1l3D0I(L4tP687HnWb`3T4xHJJrft3&sfoDc7Up7V{a z{iXJ{8+$2eL#(5mbfbUYE}!}#R2pM6XKR`F=qEx}l>(*~V165iT0&nY){;3NI^!&f zyKA6-LxQ5;nG``s(W6hB1J{0RdY;n(NV-kkX87s^Yd}%%(Y#buBN&b@7h zQn3K{9Az6X5*&$Oq-1OZ;S`_O*yxiP(O`NPd`&ZOH_X|pN|JYO@%_B9p>M#(auD%p z8Jp`rOXt6yY$im?nWFd(!pGmZ+;!#Z$>N_bhnqq;L3p`pGuQ@c{flY2un{!2nIBAW zvO&ac4fiC}%+!3-oqWuDqrvg>ZG9S%?gr*j72v&@A%LyogF?ZpYM)hWl|ECO*uD27oC0>6pU93kXZyas9MDa z_~iIgrlYJ$Z9#01&7DO)``VkG<#bDMGgo|>#*a)EA+8rS7^tx_9ozFBZ50CV^;&CR z;mv?uFB&Q?TOZub)g)o35qn_rmNxhlXsR1Yx}O_|Q&Qw$r1P!0mXRC`B5PEl_lTst z-p`cK-G43=drGNX+FO@J)scpS**3Q-xB^`3?Sd5A3{6F#&eV)KMb`SZ7SgQy zbvg%b14OmGDNq;gf++qjvGks(AP)4qPo|_xF{71pxnKZ#TMbUBP-X@FR=EM9_X9jU zKnO}&(WuW0$9nZesCqW+sHD0T&XUuli3@yFY9R*P;APx|5H)72A}3P3@?+UgA%Ko$ zx=>qyw9&#HRbJ`~jwqFT$~#l;(=);8CK*XrhHb_b>ja*#e=eA(DNt#y1Mdfsz9lPe zbVKH%t$oKJ8yFI~XJxM~Pue$^n7#T1y9C>kR>Z%KSR@75t@AFJq094@MUePN3rXk) z4prkvT^}$Q`?nYft++>i z?WR=f0D7K*_BAt)Cwxr4uU|m;* zH%(>CfFGzSL&lpU@}(IRU&=+ZAAA=3zU^MJWxk4`JP~NfJEKQ5pH^Dm4gg@;tD974 z_ffcGh4qOxT6%S(Vy20p(&RzHAGj!KJXF#Gb0y@T^M-WJ7ZjB$L{uEnx4q#hD!4j* zDBSZpdQQwjldu!F^C|b#uFLANYT-mV;f-fpNhc!C!jew(>=`n^o=JP+r1=2W;<@2CLeCDvWD5l%Zaiw z#~eLh|9L2=0wYu9zVvwS#KY~mvpET7NR0kOQb0yU)yOY$hrn;;AO0Q%hWG3;ueP9) z-R@3MonBx4g(%N*$W9dkec#pJd1`pbb+LdJ@HN|m`ipNHcfz-);-saZdF1-W5-7d} z&VZzew^PTAol5;GcsX#@0ij0qB4@^l$@pZ>xo|-DQpbjd#^5}bR0HZ&>ryd0#z2Xxqpr!BwgBmXN!0YU9q5jS|2j1>$ zbng)dA^Zv0^~QB?ExViiD$#NUV89A^cA;53oXOW%5@s3qXpXPJrBVG?iUg8b>+)cb z!~9vCCr=waD?|9`YMtIPqT1hmVGoR_E*HzT;6hR#>SfJ;`zbf4N(E@(Mg$*McLueX z!?*THxeYrL^xYaLmwu4r{J$m%CZYS+jl%g-tS1|V{J$3mWP8vT|5D?Mo9jrHEzgf?d05hGWMSF~%a-`7eUXGafLNE%PE3(=z zG$6f<62I`&aq5P7AQIPsJYZ;H=9^Ssih!AdH zu@dv~k^;6R3c<9AT5FGv1bwgAqP-8AMQq@t5L{j4cSgDDmf-kV1a)OeiiI6XcnKk| zNCSO<=Oe(EeztqT9>k;d)HONBJ5?^-YT=D_2@7FFqiVTTCJ0J zp|fD>8OIP}sXcOulRAB}9aPSLZ7SgQoD0r8uq#vd09(rgmTa0$U7cg%RB{L-vM(6N z`IGU9b?xBlxU^!t*YRzf(&HvXH4}t4G{F$3amtxxq#aUjBupqj$y-YZ;YPjw0NtO(AMzTST|HgBzPE}v#eQlR61AsRp0IT?--Lw z^Zf63R-$ZTdSITspcDlgd#Z%^ahkF-ea5gcMY^dNq*))$5%PzrkB(t`*gibZD)C#R zCl?C|g$-FDKa>`p@**UIM$I9n0WwN~f@4`nmO8Dd*5fnT5-xWebj>>aodfiG*3=fbH;5S_+Mqb_xfi;v<3D?Jp*bNmU{*zr zrk-x&m_?Hhs#M+D^y{~MM*p`0$gJhg(??J&@qJovth(CcO98wxDM>UD?)jfhvUcVw zgB@}>{Y}sV2_>6a>uEjYlvW8oIIl zymKW8?T*FNYSy$AUiU~pVFfnWf-xtgn-%p$LYNFCDiSm!)KAfm0cSg!_|NIFUjKc3 zb`<}rGm&Zb-vCQzz4SB|h&jxrUFv7N$=ckYd_NRxW$gBKSTbPuEh)~Z8cS&Fz&*6W z=n1gURac;?f(Wz{j=zxsg3kr1m?s~KhS0IEreg9Zt1j^IOX_+%e{Fxg@FDQ1q$JTv zxC0w)XD522#@_KEp0wE=&}19t-yM}tS^-6@r&b5$4f6BH@vu6S1mbN}SeqRTnB|$^ zuJA$wooNFNW^9OeK*>WVovk^f@cOMg=bjO55L`qI!nKd&mG(3jD&%#<6ipEDO9U#g zsi+F}DhKZDjwGLF3(yL@?;Zv`OTu-2RmOPloMkf`Wz=Q@3HQeZswnlBpyT~zY242XCMl=7iLrD`QaVavNFQ`9;bu&0*mvpYRk-^>Hhe)(5-4fqKg z$E;Q~+*i2dP?jJM8MBU+EAe?hLJ796&22>Yp8EN@c;Zj``U#hxg#Zr}e_dM(9Cx*$ z=MfiD4vy|8mBaJ<#)O3^SxExrxbHZy;^GXbL1zD0GfmB2Nxky8o7`aZNZ-^6Bg{&# ze;gb2WAG{Q2Z;VTcd3R|;`CnSN?M~5?C9^+`ATS|d)CabviKWZu$8qXQB;*1bADr={i<}3!4z2`Rd?Spe@5rQ z%YxI!%K#7SnDub#V|nJz-tvlLAdFOOUsqw<>6TbdL)qR4)L;2(1W)$VDJ zC|hb0C9gwOQsvUSs`so=bxwdenqCl&Z~?LW5<1Z96@)Y5Zny)-ipGed4o#t5IR5Q) z4k~bqI@9;FS-#rTO9Cm9Gw!ZT@A?=fr%tE?+Z)1poBkp4D$Mq2kL{^~0^IHBRqm)@ zuh0D9>R3}mFrj~N^}zdPEF9NdjLmi;LW$M&2Ds4H7f%GghJg4Y9NMtZ=Hj2WibRP+ z4iXs>4-q#^K4}n6E(?xKWLf&W#R*kAdt~+X81{Tt=I`sma$oY=N529(><*68xQYpN zEK!6qYW?=}khVr#N(J+PAVLAUFe5D};Y~f_r`m)SVMqus-K0- ziY(&kF=1;+V=4vL#MxcZ6YVbPvZ2-s+nW5^cNE!fL(s-OW<*OZl3!rnvn)?&?Xz)cy~f*w}0`$^rJ z^o|mQMM5%-1WcFJi5gUh?RE6yZ*WkpJ;U6)UtOi7?T6`uA17nB-Gu2jm=)7Pb-3&?8*Hv`%iseVwi85jHPfGgrCx5f0eymI@AQfvlD z5wT2sKLiXdUDFL;VEl>MFf3OaJ7hVjl$;>d1F;mfd)fr8V6ZfC1H$a=QqI#m;=Z39S5z*TbyPRlT=?iVqb{rQ!?(|3h_L=^nn1 ze1tdn0-8{!_;r@;(IcCeU_>!D*ZIGSs5CPRG%NBqA?24y&?>zYw1c1rvM{>kB0m+7 zKQ2u0=XMM|CZ)Q0ah}CxSof7R#xM-)-C$HO{auDyYArOr`RR+n1~Yn?DSb4+E#^Ap zyzAF6jYjK2^YciXtCp=)&{8qyDvI>+KM$b~CIQ`k8Vwg6uA?eq_B-mY)ndJhJi^2V zv)Ty1ZBQcimDptKoRcpf@e#@sqqPBIqrywhv``9V+ANuBX#_eTDg#PBMmJAtH&Qcn zK@NpeSfqC0PI(wxY0ejxBbyD&pYTJXu>n5D8`aL|NfrDKA@+8>3c|e^FC2*M!U-LX zV{J%n4XgL7lT!IXA+fHtnl z;Hq|DoR>eoMccDo;a0b=KJu7-*QNWXL?E~|$07Pb-IAo3?dh*9Ou*tv^2y(VN-7Li z%9OAX=YR8ZShc2d8_(omfK8+UM?o>vwuT&*{W)gRG~Z!e%^IsU4K(`D?yE58qwN|+ zh=ODYciRJ8vKiVMlG#dTF!uSmSt_JD;dk7o*rh@|gm$pe#wU*Z6xauPPQC~D2Ow+< z{3aV>NjPAJ4!WlYe9??ib`RMSt5+vqK!Y-2N9M4 znR!NVJ4Di-ahb^Np!y~8?Pr^kxWTIOOM!`ad@Yz5lq((O_78~e=?(rc?+uola*Tv&eGfL=!Nmp&!VlLcV^XNOvaV5_CeGg$Fqo ziCT4|?9>^AvAL{rUYEALu8alQj6^Ml)YSK1np1`Mu;(@)cNUP0OGLR#E0=lBXw9;Y zbE)EArgC}apf^O|VL5NWwBCECWB6S5hiLG7PUm6~hLWdo6X z^)0B@$H%2~+t4#!l=aTI^loDTrcp{er&eDQAq)U{2X5KA0H}k9)DFaAD)a5(=o>`@ zZ0E4V4tz~LcXPnxZ<8yK`|c<*o1rYBrHBPA{IAk5Qw!&`3cHoT(h{rP;Vkja-`yR{ zc;5x+b^lA13~U6(jM%+p)8zz5W?hTIoo$w^&Ka@S#TbEx8&aI{_{iG*H`>?eh6B7T zi{00@TNY^_7RYl&uBrpt@4N2gRtP5%>9LRM0_XUk$xMV>Qypk70YQ^Uas8Z~&r3SC zH4Pq#idh*tClIUJNtLVi5t8eGkwy*s1+h% z?h=CY6}P|kaIH}GzP}!J3^g@r4}h%!>ocP*B>Ykh1Wn(2&&`7^cPmL^IA^e-rWa5# z60xXN^V&`O(XcTaw4Z-Q&sO7`rmLi7CAL$&h!@=XSsTcn+cCx`TmWw5vNk_8Ii;{Z zL%P6vY*`BTPtGuO5*;gbwxl7u?sGIc96NSL#%^n-m~ ze7b6GuIX3*5_vQ;Y}RcvEo_U$b3r8lTOMA?07~&x%VUwy0#+j+0wVi_Y+=*hw}6PU zD8`6TC_E<&#K&`wi{7m`3C2}f0@B$UuKoPi(+pif%@Ppg%8bIsesf<{Y{}kid@+Bw z%zsf#b@*eFLcsbV1T{Hz++$}AsZe!~-FE(6)JO06a-KpOh*PX4xJSMML}!?kyk#!z z1Dzhde!H`>StU${0dPI==p&8B24!O&4cuT5vnmaVX~sk4hNNKxj}zn_e1!-6B3@sV zyv|qtk{h4C=q}ej0pahc&?cc}vI8q&jTJLvLwbMz^h$q|!_(P+2=EWfcs7+fB;sS= zxX6gtYV8y0SErp=w_yn%7nGTm3p)@HtRf|#M?i>W)LI_lIC}=Lek5+~9D?VbA)dMM z)>0b9pZTn1Si&GXWOQM)6Im6JUea8=DT z5|KR?1o0ymv_UgKlx6E|5n!09bkR{>TLQjO2#`Y@H)&|F9 zBuRz=`u}z2?&82l>MqFVq)i7Fg1^PJ@zj}C;=5B;L&`h-&Cty~|3tV^B|PUN!ch)q z;GT1vP2$rwdK{S6J2x` zD@*SP0erzn{u#v`%N5x)KuBGA5V~p_i^es#kT~sdI5&Zn-#9s@!JZ9`j9j|zn~@IA z0NW;PASX6TtC9rI2Bi*c<5+wC{wOp|gD(?t^=mZ&70kY6@@~{Mg+fYyyC(ZJ7Ia8F z&ChsChJ;$NYi>6af@J4^#oO31I%^Tww+Qt&3g0;uZakfN)GTT^#nSVuU7PiNQcE4! zK50vCmq9JxaUO#Az3=yI+U}=_tkHMxP%KkHaHlYnO*xOmnEhTB_<*J+FP;9C2!r)L z{!`D?eiJ=b)=4wR^Pd-i5RuZB)WSqS=B)nsdy3;Li$Fx!lj13f1RmPc+>x>JhoM^Q zdVkb$&;M7Y2i%Ogawd=5v@K;|i5Z}!G!Smu8Elq=!0s9n>q!1vMRv23ZpI5h4?-?Y z#$NM~!`xtcHUUi@9o6Z*kUIL#Yg*v2>6tW%HqB?sql_pt;^C$Czx5d%M|N=_)J+2* zaAws9-4r6(L_||9NAfZsm3vqhmbid>)X?$tabBs}5-s2xn@b*;;`}vzN}=;Y(BM1; zCNxEJ!^u4BN9whQzNwm-!vBzM<|Ni?7_LcC?;*Z48f^qmVXgRPQ+fS$Pzn*mG>H^C z7%b7$D?#MJtq5I zu5gKbxcYAv5OH+me%(YyxCOyRrODt_wspK(c#jv&S3}7(wab~sGW}S63{aKj> z0BX4%cx@zO0~7h})XC33w4O(HYTK2s=xw|&o0CNE>SZyodyfDCmhTdER4DDH1|RXX zWL2tVb);2tobMfulr|}OAfNDloa6^1(_y6|9=8@N6QD%hejsp~W=YXr6j2D#j8aT# z>E}?CS(>iVdX8yyRsHglppN(V^tv@yjCt5Sj@Y}(OU?$~2>DM-PbSo9P;46beUlRg8*1f3atv8+sa;CaWySMxJw6*`Mc`+X(PzxI;3}5EXvNv zPQYq^>{NGyhX6W8S#=wAmR6upEngDcLwlcj_j-3Mzg+SdFu?cCyuLN_{$6BuJf8;X zMqZ5l-__ACiVKA)8r~L>!PQ$*3HfnUp1v6uq86IK z0+yH_oas#`d}FvqXJC+o@qXN$tbfaJH?iP7^z#%sW&iLnD}M@7suqUX8679082OBQ z3_)QzdPJJnTaW^k0mjg;0S}qC6eLJop>bB z&@qFf)z6#yJ{eC5SP~p9PU?05-F`V|1&EL+j#oPLBy^Io85QODVBby4Do0H3CsHep0 zdMWE#3yXQYZN^NS)o#zo#KGFH`yNXU^fg3uy|Q=hE?3e7W3}9vG&LFUmfkt}dXbmR zNZWU*19jS(f&}f_ec28Jdr#l*yxe)3&{|*MS;t#+690%sF0Xy-nQ$x>mAS*IzRwo1 zF8xV7xV5w0r2UF_*LXL~H_zh>|7ac#ev%!{R8G9Xl1dIH#8O64ht}8rnZej?Wq*}% zmdwwCWuuIeqj^o;1}8e{noLqS)G8WW(@^bHFD?4|xx#cKI;8MR=_&(b=Z!O1G`o@I zxoj6Ae5akrObWZ`PcjR-UPQEvvv;wja~608_T(YL{cmrILye{ZJ$hWwV>qko%mY&Q zzrgeP+K&k@u%fT8As{?u^DZVV8D7e(&oqegD81*LfmhA_N;TI2)yr)u{r`%G8L`Z= za#aiV1N;7pv}bnVc|qhQlNA$!Gu`C6-N%O2Z4=+w=7bmLGrLi)rGnF}r%xS=h@ zV{w)>mRp>Gfe+h>pvB0$BoFJSO!}a=f%+yy_zqs)P%6a-+F2Jl2GzoIp*LGh5dkkl zUVv;azzxx4jU^ud-S#a}4fc4Q5@Yw1k||8geL4^Pz#(17%MurQhj?UiKGbe4eOde5 zE6oU5>eF&2;=r$m_7Hl24aaLx&9;gP0MbyupGLC#j{);ZdSA%~+R3V`4_q{fIvb}g zOCK8lvr=09hNn9pJ-R3LBbZVZ1eN6FWfcsln|Svge4SH z+UE_@D(+_Yy8W;R{4cn%705+S=|pOKg8P*838)}os70ROHP>^XGaLWxV)~N3qLmGY z{q3J6e&CV5yERZwsvmM1HN55~(dKqk<-Zq$3_TKoNTkK|Jp8K>F;Lhs+sbB2KE_+( z)+YZ2%8zhC!>mT(PfbpTE9J+L-sP};bavD8ET-4kn!&;(J&sx+*}BqGilw+|&EAi} zRnFhHTo3m>QJFVeWf}%YeR#S++|2BcWW8`zk1Bj4VF%BHSw@AkpPyuS?wv`7!yPkf zwUHx79rrb8EJgxn8QF3)U8w$)qfL4BCm$P_9?o4s7#dqrFd!LSk#r&{h(&we_=a%w z#D6Desn-DlBm)p=();sX-^apv*SZ_V8u}Y*!E_?*Y<^V$%=&h{$VAHT|5NXWM=9&a zEju_OxlMHd1MeH?V}HxxgCr|D5NbmODx=DZv8x1jx~XXuEiepA9sfB`C9$b05$5wh znKvI>0;GZ2E|+RQi-zy4(gqX14>sa62S&g)}55A7#^opqmv@7z7(NrmqbRt66r$xcVKl#RtbhrA$r&I&3MT1 zM}YzJ0GCo@9EM&dSiPC1lVs|CVBBp&mnfnnR~$uNzWm*hGe)q>!x`K0iwU+<#=>Qd znzw-fN(yzf1EC1*db?}2Eo6l#?{6Bh>GDZ>gBe%T08c+uPZ85qe{X);7}Qu0MVv|b zmm)p%bqRtlKIxFqNLPa!4OHS+-wbbc5ct|6D%yUBkKG0fimqvRyYgO5p*xb%0MGF1 zfvR81yF#209*B&9?hK9sB+8|4z7<$>Z6SKSLGYe}5Rt7}7O!THX zhcr9X0Y$TeFHqp&X5zBhZCUO~DMEKK#J!e8#I0aEE}HT9?n4@F2}Hs{=7vB+X#9|E z`In5>`??3y_?H6U0wt%9k%($77>V7G#kh4soTlmwGP@d8sI8+y2-W>9EON3^u}b(C zTy~_`i`UO#BzlK|BNJ*)gt>*;eH0~4*qK0Bp|LsLixl7QT9#rJCfIH-I^SCCp2)F= zBaKsXvV}4hOVp_gt91z{!6|hvKCxFpHdJuyBhb`5pFtPs^qc^ep+X#eMwR3+h@`c1 zp-ILUUl+b6l}h40gS!xXsL5`^z*78T{)&HDgW%?Z0J(NAF?%erjD(v$3H$#EZj4K< z2iDSJ?pz_W(n?a29?%BtiGY9C?l~<0Nv86tWidF)HLGNEYDmWEO7r5pgZR5qsLK`t zo9*+oJgXKC%8llkNFQq;f;@>*n7oe>+qwV<_XR8yXX(SsqgmkwJ|*gNTL zfg9tk_($B1u7f6E(h^`rZS^Xtue2FD4etvq{zE; zij(deGI$svcS6ej*4;X@AE73#sKj>?QKJT`XVn&|i3j{7+XrsIq`wQ>BVRoBG$y|8 zsBE8-^SoX+c2hVGBStS$gZA8$OJ<;~664AS-mVLTDGA#Hb=erkCGKEoymDO*fjJMi zfX!mH0m{c&d?Nj&0mU27=+NBHTGE{kJMSm0P8k-%q03qAD;)|*?gZq*SWSb$V)feF zPjGvY!s*;_Cjk?fwA?5Xgc&9sjM8uDxu=8pi1}Mu6^0Z>T6hkw>$mb=NAFI-aAOW) z)}~j;F(-nL!gzRe8YmOT!mXigS;MJztur|rx3rQXv$NDqCpd*gFm!b)Hx~o6Z1N^- zhw~NwQ1nn^@(xZ;I@`&sq|0O6Lz%UV3B13AmX~82YI2-Dz@_7QQJpF5XN_&0L3Ib7 zT49e>RGyH*pcU*pa~Yt%cvbrIO3|DX@x%g^By1CfqI&gLdt3_LMkwZq62O5N!z`AC z`(-PBq@^|=QZpPe0+gUW)d0F{E}lD+A{*SY*7v(MTf?b7i|O;%8dTg$Y)}JAH=_;k zrGIfA$95!qz_uFgg_PE4Kijogt(BrVL) zI&Jtqe-nTV_z?ujhxQ zzPy9GElt#oI4>_w4V7-8BlOKh;e->SFu@^8MF}XqE6!v3)eU1wJ``1ZmG^n5>(RNd z6{V0***mPp$&eTO#@N9E#i+nZPS$8dHAUQNB-h_-ut^f5R>plTGjH(O=i_E}54Y@z z38Q*gJRTS}EojB%@8ev&ni_f_Vo@WLf8pDV?pS=DiD%Rv3Hvl8sF6LJXXKwoN3Zt= z>LX05cNQHvND4Gl)zHq73Mp|EnUUg^EZ3sH zBBtBSR{w5)k;GcmU!NwDE{biz*R|w*ODv>7uFR=Bv=c%(5w&x+4t)e_Z1q$h zh5}Nz-E=pD7ZB2)D_UJ^*>LryG9-(O=Q3skwfjc2-!p~RWR&X>$ZGB@;O0KT*Fz2YQBC(C)4%FY!?g`C%WQ{J&*K zRw-M_CE4{Z<2rI!2>@v)e+2kSH|9_}+3cKe7M zr(MF#CZI&N?Mmu!Jx4#JEtK-aob4GCw&q?9+pH#)#Ygm z*Es1?v34o_Q*^Wzkc2GoRbX>bv;j^tmvWfsBqA)6j_x=m;%J{ZJl$TTu%|*dAa4Ys z$FJLo7vSJ<{VsS#L6ddY>>*s(wihaQloeo5q62FB| z!5m)c-h%{#OxB^fMul(7Za5hs#bWlNh_Q0RR=97E9}bbWZcGFw<@`#PoV!dOB8hQ} z_G$J96j~0<){o-oM-g^0IFargO&igUxPY z0>VPl1u{V>pvv}W`zxSyO+*z6|N1YYYHZg44+1g}5>4v4BB39Hq%ltju9`Y$%=y02 zhaPzl4bftLF=6r}fM)iDPrexY?I|hvpRb~ivUN{Htw1>ab7Z}Ee3)g}{4^Ty>hL4y zmwAtJ*n8TKQvEwhMk&X+y^&NaGnn)Bi$W&C0b8Q?mDAqs9j1-0ZP=Rs(@1UvH2oT0 zc&UgN4^-<;_qnL2yUk=!CFRuLdM4&L!>BJLMg)M$np-IyZz?KBTi8Y_@d~Hd^NKhs zAX7mdNmqe6Mg{s`v&!M63IveR4BVoUV-2O}H?!X>{^hupH$^8ER5DW2&v<`F#Q7c7 z9IE<)^L`8#)SsY%0DXaLU?eX2Nr}K|&~p81Xf8?fEX&=_r;>qHKmX~oxdKN|9LZm9 zg2u7+r)9dkzsn#1e|Ae>D?ouf+lKAVv-{7iZ&I^*Pefb&_*A6L@GW9nN7>`ED+5iY z6{4{QMtK}h{`U=>r{4Wyr@iQcy|V%!aOJEUHf4em+!7nKx%wm{&lqSt!v4$oQ}h8J z(NIhpyg*$LOW*_Um`++xvUL)&rVNnZauMG4TD0Ab@sYbfn7*au8UoQ;QLzfS&Kg#a zn7g5zKj(g-vM|n$@n{8#K(6+vBQ_V$c)DpYOW3Z=smM;B6*L`|PrRU8Xz68%3xvK( zA@@c|TP5UWJz*WEeRm!Lvml!f4L+}4d0vDZOHyQpAd{x`Gin?~0OHfkU?Fl-zybJ; z4g+mo7zJb8S#V@2p*9dr^LUX5fNY z?w1XSt)0>9)Y=;eA1mM8%0~USP-~Ppa7tg0jK~&xb{GrE_ED^dlx4c+9>JzJcL{7f_WHy@bX`Up_n-pbG4j_FgiHps)@ zAeajdy-s+u7F2~k`=5qVeN*yfEBSA7bM2QQhg=k zAu@!1rY|gLE^3c(Eb+jxfab1N)?_|gQ5l|=88!XVcvW_y?w%RIvw!UQ*cdV3c6s+o z-gh78Gt19~)K9ig87rZlwQqswuJbJ@O4T?x1d@qtR~^tbK56#K;1oWA4FG6aBJJL+ IIQi6tiYKa1)c^nh literal 0 HcmV?d00001 diff --git a/MikroMaster/20260609/20260609062002-Config.rsc b/MikroMaster/20260609/20260609062002-Config.rsc new file mode 100644 index 0000000..c50a143 --- /dev/null +++ b/MikroMaster/20260609/20260609062002-Config.rsc @@ -0,0 +1,3594 @@ +# 2026-06-09 06:20:04 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ + "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never use-peer-dns=\ + no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=22,8291 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=tcp \ + src-address=10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ + src-address=10.30.30.0/24 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" dst-port=\ + 53 protocol=tcp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260609/20260609062002-Diff-Config.rsc b/MikroMaster/history/20260609/20260609062002-Diff-Config.rsc new file mode 100644 index 0000000..204c7f5 --- /dev/null +++ b/MikroMaster/history/20260609/20260609062002-Diff-Config.rsc @@ -0,0 +1,25 @@ +2672c2672 +< doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 +--- +> doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4,10.30.30.81 +3258c3258 +< udp src-address-list=!Trusted-DNS +--- +> udp src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +3261c3261,3262 +< in-interface="ether1 - Unet" protocol=tcp src-address-list=!Trusted-DNS +--- +> in-interface="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 \ +> src-address-list=!Trusted-DNS +3275,3276c3276,3277 +< disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=tcp \ +< src-address=10.30.30.0/24 +--- +> dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ +> 10.30.30.0/24 +3278,3279c3279,3280 +< disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ +< src-address=10.30.30.0/24 +--- +> dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ +> 10.30.30.0/24 -- 2.52.0