From fb9fd7ba8bc790e520daed33273c9855e67a1c86 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 16 May 2026 17:40:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 16 17:40:45. --- .../20260516/20260516174001-Binary.backup | Bin 0 -> 247419 bytes .../20260516/20260516174001-Config.rsc | 3431 +++++++++++++++++ .../20260516/20260516174001-Diff-Config.rsc | 22 + 3 files changed, 3453 insertions(+) create mode 100644 MikroMaster/20260516/20260516174001-Binary.backup create mode 100644 MikroMaster/20260516/20260516174001-Config.rsc create mode 100644 MikroMaster/history/20260516/20260516174001-Diff-Config.rsc diff --git a/MikroMaster/20260516/20260516174001-Binary.backup b/MikroMaster/20260516/20260516174001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0c37edb3b1020ac0d080e88a6f8f88f0f296b44f GIT binary patch literal 247419 zcmV+aKLEh*sF8Df#sdIRuS!H!=`Er!VCD>cua$=Y000O80004Z`SAPzLlIcB{Tq>v z_jP`_ma`d1zNin+z6h}8R4{zhj7NLkA^Ieln<|=K*w9Ij>p%URn#J})>_Q%4;7rH6 z!E7A%{b!*ES)z-8jvLPmm?d~C9C-=^JVEvdQK#E0&G+{`EaG*Yil!}dqE03szg;)Pn*8ccA5V`H zffE#vn9pc`dT)eU<(}?P3s*}twLK%31DYFLrK2BFcWXW#zA<;9X>+0P!9R&4|rmI^1&-6QkeB?d5s;iU|SGvDpodBm`@b97B~r zNvM(2gh!cOoL_J+$3-7ImKZ`BHW&5?O*ZvSuw|LQAqq+)`ymX##o8kKBiWNnPAmV93qgcGEjNTN+kl#USHRx+%%9m z(Wo9Z8k{P>RTVG^nYXjqv=}O;Uaj6UTfC1y-G(g1K9dRY((GD-(LAX;n_X2vI1rNj z8)WJ=Jxm&$>$e-TjWp3`e&9~TZ{OUT1^cm;SiTD$plXNq<1#iO7+i5zu1 zLu<}Oe^=>PtDj32%`pGn2Pg)fkL9pvK69O_TXl{VAHZO<=$}t-s9Klr35$#TJot_j zyLEfYQk)#@orm1=X&2CLN4j8MTh6*Vt|Qim(Vm#b;M$2kB8kVW)!DVIF=malV@VM; z3|ZkH)jU*&y+!|wygp2Xx`m<0a_AbYX@{o9?>aliX(~{qMg~(K=FGy!TwUus)s%g7%g^Z*Qv2NX%4aBs)8ux$4N)sF~}j;VHy;=+xL zt2glsz?`NvGqW=Ri4ZX&U9g%F#@?e*7=6)0$V}YE?E(Ib;(6wiHkAhJPU1ss!k<;k zzv)aNF1^eeI@g)G)q)Y@hE^V~ZIm541rdAQ32jMq46#4KW|*tK4pBE_Yjq5keYI^6 z1A6qOyxss%E4V*}cnJ$d_Ah>~(k0<#mAGOi58+u4#wOeO@!Zilu&~=hQ?|(QqPv?u z*qNN{AN}E7ONqS`xAl+hj~jt8&Q47gD&&d03IqRLqV8L&6U?|7oT(4ZndO7y0 zEtEwmcHrvT5%m~sZ$v@V5bzV-NdiYEfK!v|4p`WE?#Sfux2#1z#`W7svInbdu4YQD z%7?E-K|5zGFv(c6w@Q5n~oR17*25W#883-^5mSFD(byHjjMAn zRWQ6d3!PdbR;~O1G}Y=8wk4mjZQ;h^z4o)E30wz9fjeM}I@yJ9^p{9rvMQ_JlE9t9 z^$^Ks1w<=V3A!y9ju@A9?Qy7Xanv8YpfsPUu>EXb z35}#C#3kX*;_<;UfgEVhXF(`)`Z+5qy=A|hu4ZpHJI}cn&v17@+To3xiegpC_r1YM zs_LrvvN`hD%>TnQA6ENiXQ#lk{cj`{$|OkxJeD{{qRHf0!bn=cp5L@Xd*0!X8QgIz zY!V$88-W7x*3e6?dm$dKi~=x4$lQ~aqWxfKPTj=o=&6{+yhLFk;RP#|afR1i?+|vg zcep&C2>2@zuNhT<#xYabQ4NF{<1mPYl($;+va*>SD2I8>m53GH;0d*ML^qI@o)@LlYhqC$g0HAtvq*gruJk9%I%vbA$*TzY$U^Aq-B{mZ4 zfie??@v<(~+7_z~SnDQ)Oe@a=m)e|}VohN=H1;l4a!5AAUlO#5*n;Q-6ZS zYT0&9)SuW-F^|2OtG8D#(qqy4o~y0LrW@@Kb$9TaMK(sZ(?Hq7@6VMX3WIc==#)aQ z743Thf$osu+bM$8Y#^2f`sZ1tgV`~MI`_F6PeDz!YLjJ%y%#BCA8lGK2eOEQ9wKjo z`=`j7tKc*~F)(sps%B@C3)(^G7-+4{nC_al zA+C$Obay4u{aOW2u-87n1s_u@K({k(nHC~}DKo{2LcSk+t8>~4z{JlpOC(Y;+X8~7 z??!m1+iXN`M048-caZk_#G8}>Mz#G(A4+DmaT?g24Opi^m>xZHz^A@N;J8*p{(VsH zfmH)vl^EIH6!6KZw#f6E&dZ(seaq*MJ^+dOhXJ77DY%^wKe_zd3+ z$YfaW!w-i{3xfFJDSBC(!b9#eMC$A#`s;-!V)@fL6G2}i3g*6)*sl7!GQZJut8!Y@ z+2V(~QGTtLJ{UD&7-3ZK-wU7lHiuJSjg(E~{tyksnXiRaI{hLp6wz#JTE&dbkzo8x zxq`2$6E`(v!d&@_q!)`CPX!jAE^TZ}qa0&O#i_kBEO0`$lL5R29P~>#O4nq;OtFkB z`%=wc5T$aQ5#f(0I_YB3E9Och7FBomVaHAUIU(_Ti7qbyQSFTND#hbCE}xcK3~E#A z78L=53k0KvOxg!4<*VZg#SLP3vFhpRt`E7e%5f01HwAPVi;=<&?)hu$dMJ7e9Xmun zyMU^GIic{f9@WwxzXMiQ;%Qr*WF^Ct5-4vP@h^4vGExSfV;KNsaVSdIZ*h!n-GmeI zH1Is<7ui)!X5UZF@ycTm;E9=CEwQI)^mzIh8|iJF-E6@(nDRNs`l<-DlQ#O_C8+t2 z(mpbe#Us6;4;?-~pviI}tui^&$s~1Q%>}O(f*+yxMJBFQR-16(Mq}gsuI4T`va5*> z+-}_b+r`9FMf_RwQKq!*t3zR~B2ptu(A4v!o{6wocLb+>2n!+eYHs0tit?v)}=;0fGAw~mBsriTKogBydn z-(bMITXwAUx9%Gh*~bq_w~`>$naEW0$@<1 z@ray~Zc%@@^Idh_a5hP99h4_;0Nfew-06If;DA-0#EBU4-7SPm$oR-_jO6jQhmYt* ze>d}ixjGc673pMHA2GN$^a6H+0h7twEi{3T)6$B6pixJ`yB*Pz4!A5V7HT^Pbeqjq zy($`1iyc!W;5iw4q4ssqM#G{m!i_-%gJu9nm5J zI*Ve#hglw7&&gO8#MFt?s{uVBtJI3$P#E>$popS5+U_N^vW}&SbAv3i~z5ShF~3JzRVn{yUAWrsGHeF9zh%`UBCag>`jU%-E3ei=*TQ9iYVn zx)EtEkabU1Ce|B*YI+siY(sLM!+>flboCj()@;$F25$2)b=Uo9L=7x1Q&MX=b7A93 z#guXgrukZH&!M<#AfYr$*n_5?yM0-7c+)8TGQDKqrWXAgu^{s~GcvrAu`hxv=}pwx zTntAb=x&YKW|mo86EzdHq$$NaiF=f&A8t-3*fFiqi}F@iTH0ycEk$an08Fv7GZ`n0#F6}9z*HLbo)m^4!5=-%=AD%{X+!)&#!5|$j^<`|>sC(X%C2o~Kncs8z@siT9eY3rH zL(`N>NQUy1|EI4gdp~^$1k@U}g+^c`z#C40KnfcVB~m5&)QZB(H^Xz9zZeUqXJ~4f zLNwUg7utZp$t^(D!Z=*v4N`G#@BMtI))TyZANY~X`bX0G7#fz39H#1$6bSLK+IiI? z=Mfd$=ays1A4Ti^mB7eRen6WZ z;boz=^&wAM`;T~=ww6&=Tkyt`Schn4uD72_8XZefp??DTY)=fN<}i%7vi9%mN>9wS zAH;|7b^ZP}5cOIe;beztau1knX*B2qJ{ii5jSD*QH;9*MUZWdCaeMb%!m(i$OdaK- z!m@(+lW{-;G`8L3$KRo+|40SaVB-HMcS9D_^?fnYtdl3t5#q!*%e+VYfen>3rOC?% z#s|N{X{?g+U73j%kpR|s=ggXBFgCT?&dYtQHkuC=*miMdlZRk+Zi3nJ0$)qE8uU(- zZh3CymzEVvSbBs1NmB)v@Pbb?Ed zd_{wYEsVMh8iTh`Bau}Sd>bfB`n2qnrRw~!vq-pf>~Yd)A^F*>PV!5oN~TVhg~xgT zKV@pOqW1*jJq^ed{%+~0fPPed>gKl8pcP{O4C`aawHMnM?AzCITVh4`rVl-^eKU!y zkTGkT6-y4rgAFm8WjQS|%>?+Tpiymb`~WV6_ZS8VyI9(H{T5D5+5qzn2Ox`3KS<18 zj!70~mOf_mi9cY;-e;tp?URK^aKAw(JZte9s};^)My$R#<#L?;?_yD3kmxGnJxj4% zhP||CxME9-B%O0S>G=$?+3{E3vigj)$V0tT9q6t61%4B(x>1x??p;90PXVU2N7=Ci zJM%s-68&2lyAmA){01?~Y0ck_MGd1V-pV8h_FjMniGi5%X7_&LGF$@j(O|;Cb5bh5oNAxN#QK@9v-;>)Rq{=>c{TzWa zJJaF~1Gz)K9U7fb%l5^{jMC=Pj?!LZ)tNp&Q`S{={<0HY@d6-ng!o{l!# zeIdj%2RF60?0ETJlGke&yMZJ0yyJom5&trz3kpz9duIQ4qI+i6PFDO+CjN>(U%%N= zMY?H)+i(TM6vNe+ry0cXS zJ-9|Qgy}yY3wROeR|M4%5jsD`|NQ7IU;LyIey*5{UuAa$=tFxUAS5MGc|wpQIfl(Y z!^IRL69jRXRe(CG4H zO04pu1i|LxQz2w&Xc+Y_f(}(*g}=N)dk27z5g61DDJ{ybn%yIZDzr#y>9;J8VO}uuc6Okap8|WnHYPb0 zs>pd1WM)}F|3J|UuV#yC7;g0cmkANSys0K$%QXo%YcYzJK36BFw_- z%Lw^_}4?YOjDMa@KA%ib%?o62i@d7P3w}yqp=*ehyeL^96NkE1WI# zAu0T*C6+C3As2NYd5G$iz!m4I)ro?B^UnP9$GhnHaCIW8yHXFQ8W)^ zwWOL)|3%UShOEQV;KtJS&CO%4%UZSErFh48F$(%6bjFycbPcoEz^A2NOZjQS>cxr& zrGq}sS!~x$CZH9U7J)bdW~0Z$Bkq);7jMVu)~ylnKivYLDpV>Ok6;##jhRExfV=Rm zYyA-RmWl!<3^CI**9OudRm8YqFqC!G?VK>Xo!&by^7y&Q9EU7KK`_MDF^8I!(P5#g zswdF`I;Cu`Kq+*A%`FdX@KESJd7=owar`_ze4r>U7^`nw!5bvD6_q2+FS_4@omXRl zJ>>Oo1^%IldTH-50}iPsTz9%3-EHMN?v9B9T*9GP0~6O#w5&jTtPKD? zs@@&twV8NM;}p*R!DF~13-O_smJ1xnWH~}>*shO?QQ$n3TgV82Uo3^5RNVO&s3G^v z#$0a|&6RfEShK!yNN@8{dH{UI5l{GoTHsnwKP$fk(rG{E?XK9(-$@gX25dZ99FvE0 zhPg_7ri#a<=|lqR2N5I#r4I2#>kC&DJVFYz{M%CA??yBGW=L)<`+i|0ImaN`gOt|N zW}YV~%HvaxQWIsz6aF{gThSEr<%>)H1UM3-tD-$;K+EN15A};NR6HY6n&r!kHEpNd zF^JpGdu_qz1~0;$&$;-7^fGCgJ|Ix$uZJ8~B*wj(P2tLN>9d^!Y{ACdko zZr9OomL_|;hB)x_1S`E`r6B#xvv6DkkC!A1f?X(;!^>{nUBV?eP1KTcIIes{G}AN` z{Hdc_5h{61tu_j9GE!>Oa0j)#UHv+``f5#3wt3R;yp3TOVP)_K5djExuPgZms0oSa zroM~bC&_4{fh9vq+#h$h0=a^oo_x5BI_PM(?Plav~u_A@-M>-(MSTL2c9r+^Z2Ov;ihg;P9ogM zbZ>7mhd$mLmCcdhCSL($;bB#B z@w`hfo8S~*@$KlXTA;%Fm~u8LtB8f9?NU2`6u#$PZYgJRxS)Cz_Nzl~_4`4x8xe4k zGnMJ2@| zFU6EY69NWDX(z;NYv7x|tnhcGnxWLPtzbcF_=(H$nbVUSy@yN!EFB1H#VL;5jxlWt zzO*t995!(=@HWBvoG>d`a@wYIn$j(b-Q3CvA)Pv(nKS1nF{|B7^IFa}QE4ZNJ|*qj56{8nz+xB#eA+vmYInkP*VK?93 zbESxt#cLu_Sr0$VsGqUYJZVssbpqn|CkicM-I6*|tvHEG2w15X4FI)6xmv{f5V@ot z@8M6oJ@j~T3M@CCz6#;y=9J?Y??|(F-q-yMxRF}%ISRb$n+FX#66<$WuY7sX8PQTU zK`iE|K}yBqEdkJ{yZ9QF?-4a@2%!_ZCSxvb?^qoVstM)EyPfQ^3@>&e;cTo}xK%x- zANg?x47TG02Lj5AfA1bnITz_Ky?s?oe&-v(LM2cZc<@0$;4mo36(Z3ipE)^kC(jG zZvIVuvAH7)%E-4y(ZOLsom;fUM0tOkw|%FxqNYC~NcO(X-TA*C0rMVEnK#&P(=qTtI>UT> zeLhw#OQG3)cR`G_=+`_Ws34h@+0+b_4MUY`fXq2l;~-SB%0XSa>pww6FVYJSwfJYV zIr_P$YwkeIT;W)8Iz80p3G2DmNtV9b?tcE*g!GnYH0MXp#Hh&;qdB1d_hr9Kid&^j z^a`Wf;3QX1*wXVw5$XG%0*9BSEnY9Dc`A_}mHB#$BA^CJ6gF)DIV4^)$(~xT)^>Wu zPZ1LyGH&G=i~lk5=*$Rw!Dw)oVa!zzw+*_;5QF;D}@&CmR|AI_=h2z_%?!gaJ_r+@Jq@%;0`yfVt81NAT3 zTGwbm84jdINEkKGAeTAd03Qe9>Rz=(rFBTIgl<1N28|W=GUc3G`r*p8D*k=cNyHXw zYsGq*RfD2ytuu+-Y<5kz@TdntWH?DF1&a-g*6NG(Y{+4hpJo5hPuj0rS$e)CS4yR; z&MXoqTVPrjtUDziSCOPG zG~@KPq4_?BGaufyIff`z4~J64R?;EwS~QH#46 zCz1c95QEV8yS1F-7{oq;TZ7miFumNKd!*MTzx4hjk@BuQ^nQ6>xj2~J%InxueM}?P z#o%ytWqSKZSv}Dx*)_OO3|qJZ8JF}yviJ+-xs?xfp}%qDZ71()kh~n`15M9 zdbpn`8Xo+ZWie^o1;Uj(yW<$wAOI`?z)oh6<~(wVyyLwcW#+jW;h1b&Z>Hkp`HefB zh?#&NToUlu#gWZ7)PjD}Fj%4IV%D1PAAhgSFxHyqqW{4yjSu_Dh}l!xOqy^1eD^rs zF_Va}T@Zr!=-(e11Ec;PYp$z7=^HE0%J6!$n9MGD>a!8~`6Xb{hhy{?4`_@Y{^>Z0 z&%&3F&OreO_>UIK3&Y@vKC$>KknH{w%5vRiJ%r=1MA-&j4Dwu{6oXsd@t7*orH>#V zInVzDA$)LdPT>xG4G)!UP0Y=rp%DAqT^1xUWj&7%UHuJJj}8k}t7(>`QMAl`-02an zI|}cFvzimR16Qz*s~AlQkKuA;g&Hvb6A^ zLO$n6JZ2M2FFU$iL)sGWa&tyvva8wM;l7yzjD_Q~`I>Ba&Id*f*B zD%Ji{bI_hHvKjo=^yyAWLucLHzcUIgB-bH~HzncNNnu?*Zdn**){}~CsRe-YIIM#& z=)h)ofRD^}s4@{`A1&YAP-9Y1)YXDe{oTh?-wq z)e)3%ao-t@lnB1IEYr2YtIu;gDJ8H@X{8Y|qC^ zfU2^F)|M7>u~wTQV%~qDRY9M$|7)v1rTMa6WK5SWaQwl`oKD-so+u!9dbQQZ6%kVU zK*L!Qo}HgOjKlNJ!9nd+xYSR-tI38sNs#yBHUH7Q$4|>=IIaLB870MiV^$)i_EFoE zrg{1Ls)#8*@O?A%&@uPbP9ntkStEaZU@C1Gi8UQc_ge_3zQQw3H;Kh8tZ>bu!~7Rp z$aLwx0t8d`VL0!F%sch3L4Jvee}#r9kF=`>skaP*t(T6zR=dg%Vf_(v&1a1 zK1QQtHo`qs7hoD2u0|q=m%e5rVJ?y_{<4cwHo7cMsaP1x>^JmNMHWH{_SkHTtC`B) zb#BjuIYo_c$5kmG9!dodtok}aL2DNrugz0Y{w4E{iXvUC+ zxA9n+oDJe2zs@av;g{$WXt`!Tl}m_lxHW6RQS*&}WT7lZvUBka%h3!kpRT1SRg&T( zO&z->%oXMwM#27uv#|hV4Fc|P@efEOy#?{> z$Ew+--pkjr@bLT_cNLfz_)P0za4i`V!hS92!l(l|9Y{wbr-h3{(IE z8Uyrioo3QXfzr5A$XecS>(kMQ_U}!{$|sE?l>%=;X-M2!q(MC zS(aurEsBAfpSqAgDH3g4ugJC~vGv+MFFAZ)Mscw*x*~+9&K{4>4!9!FS)VbFgHw<* z-^zKzv*rLX;n}CAhhL~Z93J3ut+>C2;|I&cGUYS6+k>)ATc(>jWWEI#Z|hh%@+u)8 zW22V=>8{%?k-8CPiT_ax0P^*r9xOu*MfpkoNNon4I;H%_$Vnj?>@#Ylh~MudDv!bA zYo>pVg@~p6?RDQ$C()m)6Qw4^+kJLp+l~(^0ev@znMuSlJb~kU`mU>hu7y>8bJIq&CA3UD zzLU@|Ien@N_R9g!|6~z9IOSle5UcH`x7!Kx)e8eK#vyU`eYzh!@~+3F3`ij$gO%p} z;+?h$ zsQBzLlkj^D1vgo;xLJsZkoN0%-wuId&h3HsYV_ApmXO+*`F>wkwpgMsIYcRtdCL#c z603Vq2;X7+sDKUIQi-V4f;G~Tda(xTs5+^Xk@YRbK%l86=?6n*WG2z6QkB0cP06#D z6xw`S(PSwW;e%1{X&lpcfzAFBpLd=}BK9Vki~gOzg;*cF~T9JNY9Un`zi zm-OO`dI1l&(T5b2ffWCjNjAs|-R4-%wQ!pKlS+~aF|_~9Q*j6<0jhhHuAur%?A&-i zHjZ3h`;Rqyr@Q>Vzsg4sUU{FG_=p#~l*Lz2Vl2PgGZg4j=+W6# zAR681TcUJ9_=Z9f5y76w&4+ z(57cO)!z{gr47$Ev?Ma1BQ4GqX*nPN;NrJ-l#yz5k*Mw>+j4-DD$rZ_ zn8w8N6if(_yfwEx>o=kh_7FgvBOh-W*ohPUt#Jux{-`$@gKwL*>2dJfA9PQcWVPLd zdv4w)EM@(HN5cygKlDX%Yf4G1A=!`# zOo}&B|LhUm*(QtOrGLeYeue5V9%`f3c&DEl8eblGJQtHjNzAoO6(sR9K16}CqfHz7kT{!hlJYQZ4R|60Z1$1hqT1!Dy2>bM6YlBF||@Efp}qzWpE3X z>JIY&MIZKBC-W=BxbT(cfWvvV3*WNeL|4lz&0u| zn@g2KUf|{(NbkEG$4}+_1fQf7Dk9eX3;_kp&;48~JW9Tq(KqRQ_6)7^O+d|{@4cdZKIyY%* zhk!o)-$A-)44dIw)>L3jL&%p)Xg~1M*`r@>>4cl9UobLGlnn~E;5?!zC1gxrE<}kw z6Fj#D9r_vF!Mq>p8F*ZTj&ED^k_v08)RW_x^rrxUn4%#ak$Ap*pt6A}SYj+J!LB<# zH0!E-C~DqD)zVN>8!6=k`pFF~*01uoBj{!om3plT|EVh$FEa$7f4zVqcf&-o<7<5` z^~2yu6h&RpNpd#cEGL8>5&a$m#OdBo5fTMEp@7=3?*^!+21xS=oJdr6@)AozL(tuL zw~l3lCg0!3e0wiTK8Jl4PsJ`Rq!m#Cpi`S@EDNWchOkLNxd15*{HtRY!{udoE%R+8 z%q>jd5R3WA8x#x=P>ngd-CoKxHH9gy{HTvA^Ji2&1bNfDzjYm8awl3#?WdJ%`9g~C2Q3-|H@TlisF$D0kL;DWVzrDsk$i+ZQV zrcQA4VU3rhJ?0`VBm#p;eVfPf$dVJ;3L%AVfY*Ek2qDb`mRh+0qfjumZ)6)2&xTvq zC!i-xcE4L*9?dWAr~Rg+VVe32%!WS}SRlCEAJ&;slA(9c*1%Oc-S` z1~y@sY#cxa%U6)zSW-|Il{`W~O>_}kgoU_)5#I9txeqH-{Z{$?X*$}zIX#*Fwa-K4 zNP_bLor*$Of^Z`lEe%}Es6dPO?1lXBDu(^Tm}uOBiAqIjs0Ihz<#kt0V94& zYk~I$%csS5{?+^cV%gu=^&QIB~nB^X!%?R2)Yz$=Sw^fdR#p-i$-RQ_F@#Y zPiZHu;Zm~z4z*iHdny5B=Up)1zi(zs!KX>(U+U1E^KJJOE+e)#bEg>DSJ8;!t9SvVy_RO;ZhkFoWO>_<&v z5cmwu6XRg&)vcE~`E7`!z}_dr2IgLapU4wYyK>vlMoV^iD=$uv&-9 zCicaXmb>8nRQeK-ukxfaVV;+5wW0GHTl+ZNc9qCd4?z?5UsX*WKI1(K(O9F@SZa)j=6Y z*+kBk?ap#glq7Z;z{eHx{qXqiTG^WBq7C=T$8{p9m(SN0e_CMVhK#uQ^W_91GXa7W zc*!l(l2?<(%=D=-^G^}Mo%FIURDPZ=vm`yYwK_&9YW}AR#-?Yg`=; zg@qPGqJ_C%Y=p@XZf3Z1AjIEHeNR!MdTFMywOFnv1qAC$MLVcBzwq^8EVx30y0qX| za07$q=y^yL1pfNgEK7mjZw)UU+U&0DhjVj(Bn^hD;s@5%1b&I*Tb*E>8U+}WF)bFV zZU&Lm4y@Wv{7wqJ`-wrk^?_j!)$V7!m)Wo3qX^XU*aHPYgA?92JX$*0c!1&QA3{K~ z{X|5=_F4t>8N}=s%hwd+aPr?6;A~G8<{YqkD7U#Un0EuEavE+011Y;EhCg5IDBUwWtAcj{Vk z?hc+BolC(urfOW2SN#Gp1$xFtMjCAD3A~d^va4h==#0el10_6z+qSa7>R5m6J5b4x zx*z;FX0EM>x99ba2^IItdtM;`N*_}V!AEu>O#Bewt$pKDO17WHM8}m41v0J<7&%Ox zK>66WBu?n&U#^DEtN4}kH`6rzbk<7t%cM~6mPEj${xK91SVvZ_*6MvlIk^1yVpDr6Q6wCSql95!-Bi3kRt}&qg)XDgI-EY+QU(bgqTc5=h$>I-F zHLx)kx_K+_aL;#a7Ea(YLi)RteMHo@zHV4AxKij0F3z5zzl{solvJPArTTy9wXd%?Vyj&{mr?HQtOH&Y)!mm;yZ z)@QLI9Z^Vl!d?D}=yvEHT<-7MY8XXsc8|=548B}6FddX%gC5eqRzp|(@@j}PGi}V% zK;JJP*Yspzjp7nkH2S>WR`gb8PE@1H#)&fJX7KP{Aj#R0$6T8D6CW%TSp>6~8=dC) z-I=JC8E^wtDCZG0?^4ZYV`&{z)7z3F{w=Lfe-@={5^5$N5*VxqgaY+mhvyA`^#%JB z*ca_BE2Jg2ZvOd)ei49s&vxdp+av~lh~MQClNi$|R|Fo2qpvH>A* z2TEw(Ty(RLF6s1leC@G_S?dXQDTMLM<=oJr81$KYw{ZsaF?qt0|C5|TKGRa8> z`{R;#27?s>Hytfyh4Y++;099`GJV8hfGn?KwQ+kpk_fnL^S1|dr>Zxrf(3GiTOS_! zw?Oep>5iOCNb{|2F`Scs;|t?999*aLd>#^wB*hf!t?kCsdSx%ol5n3xMs}PIu)LfS2*9k9Z6?ZJo>W*eMP7Wn(bB?! zlJLWcQBJTX?looN^bT?)An;cRf$&amfGG}^={Z4`Qf~q5v3Gl7nW8h$-z3CZ0MaADmCN%9l3r{BOT9JmI>RYRGu@-y)Z5gO&Y%dawl+4miiT2!Naj z;dQJSb5W-sWqOSg_U2GJIoGI2!O^hPnosR{@#4rBTec06E<2yP)5d;A^-S1nNE;6c zeD=(WWm7-tNxrw>)|0x^#Nuan(moK9w;9Tl4R^wwL+)2neaM1t{SZvmXQ-~ ztx{~BZ**RklLXSfJIgUMh;f@Xo#|0O6Uf@{{qjLQmP;HN++L`&T%7gy022w_%AD*a zoZox*Z8 zvp(houAJto^>kMFZ8duaz=y~-fmtchbBlJ7*f@tO+f>(YYSLXu-P4{_=BYy+;j~18 zaN1p1(RemjwVn5uJXq0nKqmlGgsc{kDbu-4oeYM(EUalb6I=j>XOOt+9rJv(Cq9DU zaH3mVcJBpp(~MalD@_=Z7(w)1=wM2CMfb+-{ckQG8V98c%1Quqq58ecHa1nga`uAu^)}vyt2|+p(X9a42{uSs7P6YBeHGW&viC67e$me-fFV^d`q;hGh|(D zhT}8H% z4{*ub6#ggGC2HZr@Xf?~)Xcm;i-iKFReZ54m5RZ<5U7|F)m8$6 zqJ((0Dhrd4;k%-}e+0IdqKc@oljc4v?@+`rOcF2>?lA!(D5}&(K=0zbu-fLTZjM3YqiJ#tcvx&y0I<;b|B445h4Cq)-ho|CDdtG+tUPl(%e!f9MlMOe?V& z@{GTkw@N$4_FH|cud82+R)jjhYhae-9jrsf6SQkznq)QAj0LIFRVUS;tWzsKS8ul} zUhaz2I9tCv)`zE~ilvdE-3etHiIP_uT z$3px(h%H{!2o_g18;?Qcq>jVvwnwk0j;>Bk#qA=jfle(&1{z>?Y_eJ?FVJwjd$7&QVA4M)oX8I4s#Ean{yxHGS+&sQjDdpERc6nZR zF^E~a7L|fxG!^IsuJ08IuH|SUkR3fy6VfRJ&6O~}SMEHu#E|^bDz?UvikSZPX;27L zNreF3at-=Lxc9?@T)=d~tk~SuN3&i_kxir#IPSd?%``PH19;wT4@d(Ag3Q#c#6+Li z!b%(C|KmD^(_#P`~X3_=%wrA>4Ohve}ngc-WchH^;giC!XUc?_2^{xg1%Ys zBo0NR+U!ny)(y%biB%VT!((cRYHqZ{B<&h#{ii*_XPmYjyu6v?-~wn$&@M7`=w3!A z`t;%}up7Seu?T55s2!MEW12xfguEpLO~y7HJ?Yo?^#EgSWulgi%^J&RGP$0_EFD>V zf2~}mp+Se!UtQVlaal4+cDK0cCR5;&ryDrIhSVE^DgH%Yn1TR^<`03Nc^w#Z3Oh7zJD1ApFYuD#0U<+4;h z;uuFRH={$4{R{CS(aqZc!6@+y-*GZ1l8F{fDq|juiHaJfGjNx`j|pI|{$Se>g?nxU zRP9V^iz<6u)4;JWq`YI3`Qefvat7Hs`@=Je1|n$1Cnhz&+&OzNRAe+tpORDVRJ}G| z!GExP=NzO7SwJWx{e%(=&gyKfU;ZO0wkl{5R5~FqGHZp_nwVHH4nC@>3JWksidXj$+(~A{GK$UJ0Qa ztk56HNKK30iba4#jTXm4Exa8_R8o^rk;Hh}NbQcmoauq$&=`Qwfp=l}M4Hqoj(i{O z#~p;T(a_(vhu)RGe^YiP%13S$m(pW?5v^exuCwpc4&W>mdyXL1LCD(hRp4Q^_wzJ! z)DY7hgc8&J2LTk865#!ymsa(pJv_5(^_ITJSrBV=VL?=Mn@=ID;ZhLK)tkV%#3cS) z9(Zs4#wm4NTgqmz$NdlW4Eq{eO}R`QE8?@Fx!w<7{j^yjtW0G)Umf#?n);uBCf#EP zGs8KHHKvFWXF;4)oU#JwI|R{aug${sgQ{OZ6oTIMs>}-OuV*H)vj`?RpJKm(6Ku67 zbH*l8Y+K;E_8O@E{&GpB)5yj*{u-Chl+?EJ{`4X{z08h0~hf=3zMOVJ4 zV0{NW7&^z$1jyDPcE*+2WMB-%qXAZzseE|Vb3WKqdU^~RkAgG9jJ6gkud8Wb zXR%goxXKus;Jv-O{Y2L=mLm2Po2T2HN+z&+mXecs5If~0N7BoU%1aAzWV;?H1=w>L zu-u6STS9VQfShQ5U(>d1ac^A+GZKY_*uH^=ud=?hLorAO^1ROyt#ISEZT}Y`yE{!9 zIf}s3&VtLr`Ap5u+LUa{KFvP7~~ zVqwWnwD)ZLrx;1+7`F9xjH1)lhQtHfCVWk+*=yXKs4J&xR02VM>WM$zJ?E|7 z@k*eWfYg1b1$1O{#exyk6PUp9LdvSE*?o4XG$Ha>*BG{(U(@B?R}EL|lNd);yWXLD z))-eHEDsi-bLn&jFJ z{iEV;TNp(L3L-n>3(`o4{R|!I_}F`M!iy{OwqiClvc}(`|!)&uuhis3KTG8`s{;5vH72fXA_=z+!+Kofo-0Qjs}mGDX%LB(1WKMd?V2kAM>u8JpXCGOWti?>CA+GcJb%- zq^ATdipfZ0A)jFh;{vJZ2v@0!tYqjRhNJImz?J2^N#3QT18L8(68@*E_dWU;5KA&j z11GD0{@;sHkyHYob|SOy9E{+pJokc;)IU zGQ=wsf;2-dXbSQEd>pASxC^;*zL{k!mCPBceJdZ!rNM;Y?q#2+JE?gH-G5$-=gY*WpNo!`C zrYsR`rB4e6HON)d9cA^^_`#;-5ETh-Ge7^nb6L+?!ijHUx=wYnvm}^iqtQ#72uqoT zG7WE&nX%`LHF?L>Xgnbr`&tr!t3 z<#a(0yVnENoUu+dT#8rh$No*Vluatm-hAju@XwL+VKS7dVoXoxq`x@5GdJ#6QjBr5 zAg3EDcp~MM_KObw+@vyadUbT94a@|LBWO0qbIys)S3fD#iBFO*SOqkg(W%z%^?GBf z?`};7O$Pmkw?Th4hB+1Hbh-(Gj)we{9K$+3aZ?)E8PoYrwL}&XiVHh&2rve1buPMavZ7)6%F8XRXsEbN*^ggB~W^$&3 z9Xb*n?3)4NPva|Qz?oTWce?0rEUwU9W3PU6V_HCz5@a8kMY=JF6)7dgFNRR3eLG;k zv(MiFV8|ec5oRVAjt4TxrlsdWsL&b6QIy4^w z23LESdnFIBt~XhRBpF4M^{CeC)gAff7sY9Td|XkaFm;NkWXPnduM zX#s4=``+{c?4!~Jj$vNQ72*<#_)ov+Pe7(?d`X6^=%9%?&<_}eGDk5YJie%I@ed#@ zzuTqb_qv|yp-8>a{32R{?s~Kj5e~tfd=wwi4L+Z> zgGVVJ?-clckx7+Zw1C#hE#43Xtc(eSN~i8|FT^aH;ERE;1kT_lV0JOBPj6?67@nWN zED7OkM3Y*`WRjTyKz@^HW(3FZ3ltPQn&MxBb>knr3GLx-V>C_Px(%w7p}J&;M2bqM z*^|)GISf655eQ=WJJi%KSeho%WI7{$O?qMLVr*($#~Dq#hh+9>*j}-DNOFI0r!N$F z41PU<;tSKsJ?XjHwmCh^KBU3o zB1JZ{>J#>S6kgL9UA4Z2y$jZrcjd65_S6~+2y{N$#768%*0w1q@nc-GOx=Lm-$#qT z)~N~kXCPJm|FrIovf3IUEs&$3JP8wNnfM>DNjNZQG9y2LA!Zb2>r+=~ED{vl2#OJr zyVF_u6bYPLmG1whKZZ!$r`?lSj(i9?kl(6rRuV@BCXfWua%!FIjQ_*>xj=rkW2+1X zoulpc@x9kRIDkvcF3HupX0FZOH3rzNLz($0r*ojqX@)kyn}G~bYwRcC$3%gN@Unh{ z9Nut&f=s7Ahn~WcJxA?kXy@53WUkfKu-;!XL1SmPNGRi!)=G`QWr)sx#}%C zsW)h}zW`*RQ*4L*tDdphEJ?`z%2}YBb{yPL+5LW-_T3V|vuUss0@EjZ;y;SkUYfW$ zILYHhtRsCZp`-N=)us1B#9}0bSPjLWwOZHDO+nJW5ZMgFUzy1n6U?EGs3rjgWTChk zzZg^3ghAr*T+9W!i-YYoYf|y2Ps?+=307XRFBmVp5K*emVo$PlbiS^ECJ zh49z}mtrM98a*?hjX6`a%NSW6Aq(M@!%StTl@mBOJHObq`H8R6TTm=2&qhEQCkB~t z4APF!mF_nB5V%Ccdz>q0TMRite!$P4%q4gsR*>NSb2*{Wj}i#o!=3D)?~j?Uf+Hl- znAB|7DbVMZWFT#!kaxU|nR28mq%CJMDy13`2~ofui-ioe61Y%%drK}slKyXBn8lN$ zvT^f5ewEPk1{NiJ_ySiM? zJ8dbpT)jlm1#<+nOV{gjspS3~lc{xsE!M-zQ)y^c(d@p595z^I=7Pc-QhW;8*WBtZ z_3$`T9#xzB08^Z>K7l&Ef*GZP_gk#Q{N!UoeL-;l2Q@vkjBn=_gdFqDZA-h#r8eE{ zFCbUs2*EYbFY4nfZ0O3u7k!!wFc#p2+tZGsohKGqj0O5RKt5^8wTYmL2=jXv0mEU? zrk=upy`c*mu-qTY*NNwQ>m=7dz#=C!7cZRv85^X!FFpVDyD9(vLav9uA&3MXTZb?= z!L$}i0Zu?M04(+Mv~tpyH7v)mPuoPyMHg@lJNy?>9`0%mLY|?F&Wa;1WV;e-(&N>N z?07B9<}wGMbJhIp8{{pmCL@^ERYKH_*9X>d5&p&Qx>XS)okDz4NE z)m)_(9z8Y&kKVS2p{Fq=s0ozr#tuiqMo|EsZC&!>%~S;*-|`*G2+WL1!I38v((&X@ zKO72GcC$9T6T=u8X=xG$X334DzUFXP09NsDIAUNSI+0o)P&2J#nN^=^*<(uC5NDmz zK;2koEh^^*YHF|=85w!el-KsM!zb({iwSaKdFY|N!ji2vEa_*f^lTEv47V9_vXUVdvEI8i_Vu*XQ8n=5}5zG)m0S{ zx~zn@dbB-EQzld3wvMQ+6}$i1WT#fypUa*Y>!5*Qsj?fd3Q=3APRC`az*MxYJ4OUS z?@f-pl6>(v*A;2HnC6fMLDuC(L6dm|JOx>!+V|<;UND~Z3-%eYhLq)eCFL!(S2&u& zsvm17(qp623LFKoF$#{Z9|Dy#Z4MO>9|zL>pgEhJ-G9O;-6P`zH2({HaJ>dK)y+Dl z*%>K$-GDr!*&+wUi!6f|C9vbJ{6Xl&k0j zD#-QHscw~K1^gpGlVn!Qv&?qhYi^F!o;p`+p~olVV<1e^Nso3`9;F9a?XR>#7Jvft z>GPLrbgr@QKaEmFn$)IUe`(}KpU^wYDbYfP^LfD4A(*j;c zdYujlr^BADgOgc!BRCFmGnu{e3&a@m)N;=9TVF{B3X7E)-7$0JcYU2RY1|sG=fym9 z$dg;ThvoEf(mI4z6syI)`c!+bR3CNkI7Fj26k1d%)mr@=!#gu{AgA&Vr8fw6X%vr< zrm;L&Ty8qLii7Zk)_iDG z2If-!{ChMgP|qyI6Uxvel{Gt$>VV20azXEiE4Wg zFU#)!0j?|_e4!P%=t9YmTnx6qT`b6sVla%k1ZrAm*lZeUnM(Jy56o%`QjD&13?w!x zuzs9zjA_(R3ds4OrqDIkl1Oge$CPOWD1c#JDU64K>T05RD-V9Y$%C40=cuU8&ZM$<%A zy&SaR=R!pQSN~SjhV&{OC{RNF$0Sdu>t7bL7=@)BkT8G0HTfZ%-q(hk*t;Bi^>kk899Y=Vl`we+RBU}=6GEZhr0k4J9P0Gp zEtwW(ZKo3{C$GkO?uu|+cfhp|+JkTe15teq#`nP90;l1qP>6>HC7Yy1vb1zZi#ppy zZS3iAoa6p*E^=H=UsV`$!dOyb|Yc?CC(=%%7_i`Blfrof3;Nlhc2(wz4^$|3*ecer2F`SOF}>K(4&5&}O_y z(o18Z*PK2Vi!X}unt&i1*{I`B_K3m#Gw!Ev9+czxbV84PCW+X)R<`wmMI$!N`#Zc@ zIt}o^zJhu##17y`jZ_>9A8zy3Q97^YuB<|;QuOPP3&g32lEHi?(ELnCeB>^4xKw9rR4W z%s1lwx!|%S3I~{>;?0VlEeFd|XEvd8{xT2`&4atM6sN)s6=S3IvqOxXi&$JcF@7@m(GMP2O0g1!ERUmyF1OLP= zN5@}K=s%17)(RAO`u5y_ndno({zaw^wk38G(&5@V=E@IwS0oXWFUm}ufjkto`GH|c zO&@{w+lG1x6!6+Doc?XU>II2-o)Kztr6AC5vUIzZWcCnibK7(V06FY{Ra)F327o%$W=E+Pu#O`Wd-Emb0AvnVx-Jd7uNJGr~9b=Gp8X?Aj+bRXOdQX>&PA zYWBaExA>7iX#Yo|A?+Du3r=-EPyJ~CivUiYZBHloVK=c*6fcoz%C!j!GE%l#7o8fP zAZ>Z-7bh2yMgdPdgJ;5yFnR!FVG+k{Y)6C0GKhcG_8y0lma1FW8iUo4-NN@3XTf}{ z*pjJij+LyBH;!-T|84x8CZzDH4sF?3LwZC+1f{%cG4YN5_w>-m7UN(S0*!7_)81H{ zZ^|FB)hD&{hgRfd+rq24pcC7RFG1^OLivGSWQRh2gkBet%rsrAGb8~bEA&GR0jC1_ z0kbYshguY z`R)KaIaWT8;@7|D!}N4cp2@vdK0r@RrWGLtmp<8@dwn2|zWjm8dYJw7;J?T@exgXD ze#R%D7vFTdf>2X8-5n16zkxCcz6Ui=VlaEUVT@Wt2oLKeyCB~55Bkevy}Yjh*uA#? zxPntM%NM`~X4;loZsF zvZ-QUf!GhJaAf1IK9_S;e2l*obeMBCH-(m*keM5`9cl1qF*ZsWsyGlsDhcsJwkJ-* z^Ub_p2od|sVP&3dEIhgn#I|4L+&~vk@|<2b+n~vHQHfPfYsy1S(g8BSe7S^DZ@_AE z<6xI29YnG!FVewiAF9<>362xCg0BjQ6gflNTw+-y&+>E zQG6q4_MGTu+7XxbzrGxA9R`n2;?5imnx(iUTp|w+!<@l+eOWG86N(PU0yLYm^_ZV?M3sHN3VW^Z{)B=N-BK+jf=hC+ z+w&@&xPOEfXBD8KzyhtFNit0l#zloHeb8c;k+gy`{3MEvr-*g^>ZZWhcSZb=M#K@- zG+G=izlh2W+4;fDIz}7_>5SKL-jJQw2X^boCHH1kJ^mqx^rL?(TL z(Kmeqp#Sha!F4gjb`gk4KRQ+L$Z6ZsRC;X=4zds#23wQyW}wh-@GSpsyxwJXw9iHd z0IKa{y;Kyz6@`bnsr?Y*`=~JNf7Qo$-Frw_pDodlb;UZSLdCyU7(iogx1fD;JJbJq z5FsBb8Bfw2#4_ z?^{2xivi-wY>A0%jG(BR3FMb4SXrM0z=N0Z_NgD9cC6E!=4SF2eN?i&dE)N$UYyU8 z>X2dKKz>>2s1*$M+<-5qDIt`dVS@Wj0#%+^JYP4YD-QQIw8rr$`6Gr?GetfswwU1z zexw3`L{ZVQ?k7B|Tm&vW(RMdzM^QD1RBuICctl;*OYL>1r;EpmoeOvToyC?Qo_1f4 zR8;7bcdU4eb=O+h0qhA3b#-qM8{(TBP5x^twaEs2i<1JHq+n%A<7%1y62wj_1^Cqe43+}I$j5I(=7n_a zojK2!MR-pQp$?Yt2_2(0fJZ#`%g8p5!#4=Pu%5SZDE+(h-1;aq&_DZ#f82fb?UR5hUlecdUIrocO2AeXf09DgqIIbLqLxHjbTj);eEMa{d235fW*kWwM=U&uoK~jhPhTulZ zi4IXYN#ucc09lYE>%sRzMa!cmZ8=+kq^Kq`cDT|<2sgCbuuTJLb~nFkiCeqP`n&K< z5HZv{A2Bc_MjG@iIy!?kU#}3hd95<9p2Y{~SyPf6 zX;=nji9oo{e+2wN7(HgT*pdOwJvdy>J`G~~x7Quw?r!`Wwm7^w>!a)#J>b9eW#De+ z#JRB>sZRN!KZcjBnq4`USdYT?xgPL~gtYssX5`w=%ePERqS_n&GW=-v_U>1to#|y8 zE`}H+0Q|Z5F27vHaWs6B2+TQVd%_AMcouut1CSm3RpY^q?NB*V`$Ou4Qy=x_$MkeW zsi|eyvEyE_ikzjxPoF9-R?A}OFH+;T7l?w-w)`VYvbbXcZNAYj-jNaIyU)&;m6Zxs zsxW(%e)3u(y7$x7=RaH;+=~JL5ygVPt$F-0i~y$Eid4FZ6=rAG$_I`KcL=3Xi|2!E zhC(tef=}A8Fw?8>XL@OaIOht=d;-GeOtq01^zm740Qu+0sv1dzpJEu5mjnOg#)3r=ezS z+h1*q)G+xqP22%xo4Z6d87jSpDR>F%PbIm&L+t#cpi?8d#iDP;amOc68mkKet3DCI!aIi#-g;NrN(DGE& z1QdV?s7R%U|ApZQ+b^n17+Us;Lnnoz9Nh3~mB^9AFLxwmWVDZe73zkM3%V#4&;8rc zXq_ibhf|G)0m`yelEQ(#X0XBna|q6zF<*AfSH~BnWy?{R2uZWhCAjo#5i}$FErj=O zcl&p0QJX4}s9I}Jom#9VZ#^0Y4c-o@n1_qtL-Er`WTP| zr&=?97?;BrhFHso!l$XbyF8<-Z)(PJtNg-bS*}F{=<76KLg0LmXI+0ZM4{sWVb76U zTSCg57TJ2WO)pkgf6-8f>=0v=tIKLd6(@X=$?zamF^CtWA|yFzKKC!yw_F5#zcFk_ zZhBye>j%paEC9KSkWG)*>BO}dts&SAWkY(DaGH3l62&U4Ggv3S0y}JgxMmiy%lK<1 z5C@Y^KtZyAQ4s|!gMY(H9^*ZIe<-W~e%uCZP5>_3C%v9Y>%52Y5Mjx;)I@NkuXNDR z433k7uY*HP;vWB`7@`u7&zdj0|1J4T8*b(BQ+o{;`u}NWbNlIT{;V%ne|xI3Tc+?N z!g$fke^~;XaG$8vIrz8^?^Vpt+~6imQKf}B5de5g3#DSr3JJeb&3jX*n5h4@>f=)B zhGB}b*2~l07S`lKPBL14c4YprQaZ93!OP{^p_H0*g&)C{VxFSvQ+w`fG!m>uMu&6H z4tAgy|NAMAe65VV{@63L@;FB7*8sTlnLI!{|ML9={3OUB>iq2gXRxar4oQ%6xd<|O zOK0>N%PfkpE`fYgK$K^-`_=_-I!XiD&RXr45qN3s7_?t}zq;O0P_cu zBS7W$KeYPMt1}60_&b8Q1P%yfHxj?v^CM7VqbEZjp1Z*wrR*|kZXaBHx9FB_rT^X_!O2LkQ^UDehjnH z{12pcj2c_je?Ls{olvKa)IBz6_rZ+`AKWz0%ijaA>ydP#OY6n1boPloL3sz-$6TPr z_#USj;j-1r759O%h-I@+Rx(uFjl+@${8x&tiJoRctWh+;m%lUo$2YTG{4M{(M>^@Q znWDpb^zvN%($16B3hv*v@rHO7ca|J8iDNGNihnK@3BJT6e1~^@%Z5gqC%yjhIF79| ztBHgcklZ?q-|KXmqN}f9t*b0Y2-L@25&lFCr9XHfqdh@l;4zbqW%B(W#x)2lLHM^r zxSc!A$vzwXAG(2GA=|vJkk;`zT;6{Qk&HHKqHFI{7FypAv;J?8Z_Qjesnhpg!#>X| z=ignUDFw5A{Ugi00SDr$p@%7McmGPRzTXeos&u=BdTNE+0(`y{wyK$AvdNgjT!oAf zur?W|tK<^a!nITz_P4u>=!k+MYT@pH%O&2NHLd1x0kj2zfbM!)_-3V#1v25yKeh|t1AK&S$Jg=kqJu= z2!a74oac{CO_g((pT+7;MI-yAZ#LD`&?{HQfV$!k%n@DkKG_D2ifd_90-YwI31 zQ8}x4YCCHic#84*_aDTxYJ~uJ>rG$5>4gkFX-_ zq_8$;+9q&r&eM^U2|~wFOp_w+vvDEWpn&o=4mynoj=eEr6bUP5&4Lz+jsio~7zCPE z&W?762$=*-z~8_9Ot&*u3z!ZFDD>=&T6+-+MDpu`!fVF+m}rDVwERYO^a*g_%1#2r zek`1&S#vf3oAh_Fh&z6%S8O-4E>}7&UR$}E!H8|vog=U7>AwxW0`SHnQP5I*)yyBa z`>?q!ZCC|>E-0UbeZ!fgsJq9G_J-;^%@PYitWcWje)TFC61F7jVeDoQ97HAL&uP*B zL`^GyW)qm#zuraphj#9^!wSemAqlRh=8m!4DHf+1FUihuI^SNMUav-MIfSZ&~Inmikaw2a9-L#b(y(`LJL;KKOy{lhfcoWb5jh;GE%_kSoQZ7yUS{m2v=A z0#$m1;%95A#nZ1>j625$iXNHUT&9#=yx*+vZnIklFDlhqKC+%q*3>${psP_SYdG5@s}KE5CuG(z9{(xukT%xht}&@$25b>NGDUX%Z< zhhM=w*{6zHfVn|Z?m^*|+xoy^PiVx`jd2v?~wn-IdN1ijyxCM#o(V%f+KjV`=#xz@Lq zv$_v=C*m!3Yps6&{XrUXOCo zx(?1ZzyLRdVYGCjk5kg@WXV~c)+hZAhu8!7#$$CIrk^_&G2-u5fj-!&`od17sLY8U!+L) zVwN$H-448=T%6;@ozP~r&q==6)OASlcec19^+nMm%7*JtvBHj2O?Xj@2>Pd;F0R}J+Ke@^f_(;i z5b^S~s6fbP;NhPuLr=nPj>0Zk1_~uVt{TgvL_*7d?pNc7U5E{+442a(uj82xV5xFj z8g@pnBy)+IY*)hYG{X$g`ehJQ$Ajc1hZ2dMe2vo}f0|GV&cW0!+{}4)6R*mdnVWHq ztG)dfW^`*N1N^Fswie%MN{Bw5-DFpUCZ{|^SA_Nr3DHPws-EwhSw@VWm}4ry6;8J>NJti8*?PK}cXr1bkh8A|I z;64rJPUUSlxk7M|{&AO9U9*7xxptX$O~uI$H9*3J*eP6#wzd7H2Pk@hSI1;FYO-Yv zO@b|9JN^IGi>ejeP$OR@!qx;G#sQst^tsC2)9bROV8$9lSC5Rk?nPaZ^ZZDyb*&&M z=x^5xSkT^F!_|>!EC?t6;?ia8KQ~s1)f9Et(+D$gCB?RMt1RcyCH5~n_V&S5jaSq~ z<%U6Z#Ay*p2>B=ctDG}l4<&;3cAxxds~?f0 zPn`rn+`H3Fwx=Lwqcuyrj5MjEs`q@jLH9UJPmNGkAdY)UO~8@imLcOaO;@`f2?MY0 zEWjdvp?40k%|e0iEeLzKGX!CHR3n!=cB+{TX4U0ByiiX)Rs38J9052dWSfxAi6k=r zNPLMR0_$;Sua!O_C+WiR8LE!I*PGVb5H1MERAn=?!|!G%wcCLnFHL3l0j&DRN6dYg zP)&=Mk6N_8F5O;#qS;c&y+iA+H^#Q(q~V8|#WJHTALFC_*j1T~3fp@^zZ_x{I*=aj zRo7r|SL`-Qs@_0|9|25RvJ%;xWx>!w8fs&~9-ovNn*hqF5;Dn1JfdCx^qd)z1>r*0^iK56b*&OCb#KcSR`{0Q}6hRyWAY*Yu!1n zf$U|76toiYRpk0=Ztv(;<@I_|t$4?H>%aYptUu7AIQOx2Hz?|^;5ZpTAs5yN%Gh~n zM=_Otf;%^t5z7ZHRaqhFi76c`F8ZE7wr05y=6e9nPuk-lIK;8_hp$i!)mE-u*56Tp zQ4Cq(Fw&kTgZCm1;8QZrp#e-tm)=3#LRFZ(0IYvgg#-#-KMH&bNqu0Vkb8UuU30X? z=5ePzl*9J5bj40(nP=tV!^OZSLl9bc2PjVk_et0o^^h2_{_$@Wl&C{T!>2v8;hZ| zmI)q=`^;-|*DdNJ@uJTZ2p|Q!xH+;Cx73#t!#q%a)Y}Ti@NG^NDT_K-+aM#(>VjoG z_FT}lMr@si=#KyL`$#v9$p+247_;0#zC6^;Sv7|^gLoUMZv!6-6p$w@)dEgi?#oTQ zNYM1RuW#2N3o!U0l)ID+_vv+6X{VheOTXc6(q?LO!&u+EE!nuw2qw+8N|LU45sfSH zRD5l=pt{dsqv|T`Yxl;L*1dzmn-5rN;_*I_0+?5Owf!2>hUmQ6tljbtP(@rU@K#yL zucafTk26y-UBG8XWF{R)^_}+E{#G5Zg)$3|gsddEvh^56n82nq0)2Fau`@XgOVkn` z$-TgGUm_<$(0LGy(QBJ<2MRW)3?4x@<4qAW!PS(u6El0-h)(ZtJJ9ICtRrs^K~BtL zTkHT!&N(eoM&Zp5g=E=2@OI6!9%(#mD@BE7ZGqR~cGAH8$)Iw!(MEe?FNVDawVFmts6(xWP@bzZWLnhK9SBZFjgR%gdPMlRDuqEspC8U6cBj%N1pZ<()H`mIZ_>Ya0 zb+VJP#C;*yJZ6gf3ZSEAxb1kP`MIS+xv(T?}k)^0I?=)X8>`VaN~ zI#sA@&cCSISa*aiHdXRNgbXPYz3PA$v{NV4dM6xAB8cSXRd5rN-cB5HSHjp-kfA~x z`D}#)o4uqoAq#XiP~jF1VXZ z#yxyI-quSvck2w8Fj7$*-&lXQgG~50j6Gg4!0zJrGF381A78+nbJJz%4g&^@3b6gl z#FA>bw5j3*U6v}k^`TPor1#MEp~!hj8C8okbvCUz5snEvkjNcK1@SPT&DF}SooMwx zng&Q4GZsDpqt-qjFPYfz1EIPw<7N_YbpF^u`k_d(%e^-Y4h5WtOQ)V8jyHs0q}7_j%zwn* zAeKadQ#qgNq;=JBPc8X`AbGL2I?~yu)=cbg%yap)-T@=$_B)A+xp%9A09`Ki@3DXb zrlj{qeXcl!i~^b~#dom+^WkbXxf^~NhvUO*F{zATZi?&1?bB22GObv^ z#D|IvU?5T?0iX>eTR`4KS~DDOh+_Q2@R18Fjf2K-HtYqUpJ_76fTX5G$^Z6}Kd^-A zKsLesTpQ;i0{)a}i=KmN#>G`!DS@NR6nvw{w~8D-zBYDrjB{U=~>(n zd019#jCJnuO-{{3&3C?qqni#0W*d#D z`U>5Rv^pZ!U{@>r0EDMkAla!=;CH-^r%JeZ21a_HU-n`(dp45_Q9FZ%IP z3M>%UqZb|v1b2&T06?!&kMgEx8f^EmmmvNexo)5`;$N_xJsh6-$ptLNUQV1HyZm~Id4h}&@+(i2FHW21)}k+pRB1OB z+fMK~JMz@NMC&kpoDDf)1hceE$BmLx069O1F7!3fxtdNj*yKPQ>c!ykondZ(`GJw= zx!)2RA3!mUjFX6qHZwuaUUhaih{(KU;oeN< z874~{_PCAAh56=Y*IwV!()LV3^*%X1q*FPbgDI#&-pzy>=hK5qI^rK&588b_wcY47 zG5=KTqJI-3Pju1^#Px*IP*Adainuu`$ld&3?h=Pk{vDZfI*`tYX$dY8LT_blH#x&q z0F!shytDFZIh>U4Sn~0?7`;_jW+UQDRC*pU1$VALBU=nlq9PZK^ff8RhX$F=^&+4#KM+1JzTqw8C-{O;LEW4JlbDg%-u?zB64MU6 z$i9}AwW~06hc%ypt!QGNa`b_UgS!HPQF2lnJ6!geQfjD*Cy!LW>H|5nM0_{}LBmad zbZ{_{6f$|zX1Rk|12nKASSb25ZG13D8FDFtCoh702LfcAOFJzY$;?RdtQ;=3UB z%)6=Hgao9;I<69j6UHVsMz9!5A*-WbSs~ovxH0glS-uQXU4r_}(Xw&WV)v$E(D7H6={)r^hrzfrxbW8tHdw%r3=I=0xA8FG6g`eTuv5 zzGy+OQ}^Rz5_DBnWfe>e(8%%qCtW9uk4xRRU-|R*?%q5tf(o|2HA)KMtf>5d9HG9} zN^SL|cNNc<8`1)%1lNg`Lz`s%UpedGKFI-Lcns{e?4YT<)x5t!D&+@2_OuXTQy|qR z+?tw95Wc=V6i|C^ztnw4V@*i9TEhUK7Kl|4xBiPWbtqJ2b8Mi$uYV~VnMD!m1v^Hf#l{OF?N_8nO+7qF{ z)v_TpBs&a18j+Q5XcO2N9Mup-KXD^f^yWms;9S(Mi@7FK;(;gUgg&Rf(;w;JJPBME ztGbRrljgplTb+B0nubL7T=65A0xIA9pE0*t^(9K2e zP~X(uQ%1)daptS0$twv!%XP%1!3&y@9=PiBwr|-87?y{B0^AsswL2f!s?&#I`|Xur zqq}BWUXO)_1n+;brK?Ju2i-BmWQ>P9s*&xMr?oy?Vax|kJ?u>hIavNL*2 zZ%=H!Q=upX=a!G8gkY34$aMLW{v%^T=Z9UCE#653WB8UJnLtAS)qbcxgl6Yn?Mea`RJqD(VwRa~+Y4i;r7 zPdf6(dFN2fwa*`3+OCMZPxNvRFr;h4kw$T4k*~#Gzj{-Ky=cPnuaJ=lt3_@Y#O4i- z&9lqw#16Eo2U~Q3Kzyvva`Qn-TXE6t?MErNC|cILYC<~dvVS&A2dKxT21zIJj5Hwm zq4T~h+ILscHzTwgu!k4XV5yC_QK8ffIJm_nUGvtwsdMcfWu=gZ>X)Gb?*+Kge{+R> zdH{M6pBGeTv>hbL} zEh)|^OmxFckY6Gxgxl#vYyU-!WQm>vED*PV>e5Uy@X?3Q%3jwMnPwzNJ(QCrVRCzPUyR#E#dUYVC(BBDS5G)^c~Mqilo3|Amy2&uAvc*EnEg51PqQV+uX{;tVdsP zjb0FAvLw`pv@{&(O0feOv&e2=rbnuGfJ~OKGa9G1irHkO{RjH2^yMD%)9{7OcKZk}~M~1loba=wnkPim`&lLTYsH9ZfOMl=$}K&?A$xjY z_vfG78pDI|*lZw|7G+!xZ=0VHh)X4vQ+}XPl0$|p5uqj5~21MVnR&ip5Dg5lif~2Chg$~A>SkA ziq44cC83mfZI<1a2Qc*Y0_A}=^tjR1Rwrd6lCUp)=8S6cOrr{M$p@E4RYM%ARG_Zb zYkioD*){5nBQ41n4dvlmo~ETw`i62(f}$EVwd6V-RSy4qLwqoKSh;;X*1>iK>5BT- z0)iFoQD&z9@F_@5u^($SqE_A%%wF^y43Og(uRvc+;JZ%2-`mtN}g*U3bNn%jsWM2?{EsZhwAW*A>hJj|jexRQQ52rcAcofq!i}P>_Id{&phi z@?T6c0%oK}IAoNy;f1R=yggDOk=X_aeTn^_3RjSaR;OWB&b++`Z(!oLGI{7EzW&kO z)1&M-haM9!E@cdq;|8=6%u!IYsV3%VN6mnwiJrbP2DnQQrHW-LM4cSQk2v0`$2&^L zk1!S%s#8B`&5=fjfsg!`hQ0ZsgFl5?Xf@yXS;N7~`f8Kbiqj>$Npw8&B8=h1ShP~6 zwpKBAvoxEgOnpxR*L*R<1BlbmJ7VO0HLIk!aT?{zvT%U42| zt}|}ogkWq1QDTV&!JRcOyPV1DFNN^GcIqnz$tdX4jLI{TeLV_NGZ;t5*lt9Wr{`gf zwhURkj~(kSY~Q4rqOJ{XQK>>vyoq@)CY?0lSy zW8V9-io(p@)g^=D)KZWr)x-xlKKuIx@q^tDzNOXryoKY;!IT_teNe*(YMsZeZgtlC z!&onrB^=dFDplJ>ieGTD$v7lR*zs7s__Qi z#DTd@U>wD-{b{G~s)iqiCVPO!$5D>o7c2C6yAO^)aKsB$UVAp|WwHjv3IYRxA`NQAm1(BJlrN!c6@va0`v}KgP{r>)gTAb#%;AKMqFv2doKz zy?xKi6yp-db{hDc%bF<#Gd)eexmrL8YUTZReH@ZEDODT{Q!B3nbvqN67&^WaiA()gnzyx z5_dVq-x#XLdM9_mRSC{~&p+eEm5NLOOd@UciOD&sc@U1D<9}UkMGvQLr8OKq-V%Uk zri@e_$9Go|>f1ewri*7$yR|9KkGr@})+VVw^b08=jJh@ua;3d$Z&Z(E-P8eU&SGws zUJSwaxrVD~;0n;&0p)fm!H8=u`ETTo!bBqWh5a5Q>YlP#|8-YWE*-WzrOJX+QUyxx zi#leiW$bI2`9U!s__(ESDd1m96bsD)KmGpGTS3&F-P-BW(kFGVEfCL&;l($}Rnu`2 zdy&j%=h|%UjRfOE>vj(_Y7O^o&MGLm`%?@@4!0eZQtKta_V(^A*&F9m>AJ+W1x9?4 z=Y$Tad4n&1;$ED!nHV>~o8&-5C!C^y!~R|LnrJbRr`~yh=~36($67_QQ5#9n3X_IW zMddI2r3;aAi#O7wFB74*kjZ&DmwtM1tcjC6oQX9_&yA=%_%#YS*)XH*$`2e>=5zao z5&K?M{ICt-`HS#VK@Nf0VLPMzM?utD|0iFVHt5-Uf9LM?cltvN4_{&c*o>n8?ccFQ zIMp-7oUL64_z1S~?rw;1y9o4$m(x~{PVA9_w&C48sWvhM<>BOUsmURT9DDSsf zGS^k@xcsZq^p+u(5BluRPtnL@GjWKTPF<7>41_K^W}mZ@Im9cKIOq+|dgeP~tHU-? z{N{v&Cp5?!4uluJrw5`o%0#jEWxQYxvsiSsCUkKXK(%f|OXy`N;Ks<)`GZ`!D5R}= z^6PAqJ@G6%C(_;#zjXi@WF-FlLbuEh#Ipanhy6iF{z_)vF8-iDPMD|YaZA4EvyDsqz zpQG|zCgkWKwt~P_5^7BxKU#uK$0;_Y@N7k|$s)cfY4wj+WMm)%3m~sP+41a7DL4c; zBdJ?oHDYHeM@Q>>tn^DV_h24bk|^buvrJd22H9mb)(nBlkb=3dkLX~KZ4rd za6jyIX`~EEp&NXHpWzfu4k20E17~6i(_t~!H>T+;0=Q%fVa`ZTHHg~q5Hye?pUQiA5UVJ$z~X?q%i`UCU#hlu!|BBw}j-P+M4e_34n& z^LO~{twC}C1E_wVW*+N6Arp>bPE$(|5W@9bcK>$N8TwdDz!b00PrxZEI&c@Pm2bs8 zAJ)6v`dnx?m_BL1$NYt)40U~Cl7)_Q(p*bzcaSjP`JxLI4GA{fX!Igphf7Z6b&q2B z)}Alz<*x!<*2?={k7Jkt{oIE3BKNI&tf~$zWeKJ~5LAVy^R&F<>K&^nJn(m>2d!rc zQetm&VnlEXcGZLxrhVwY@JXlMFdzp%sI*1xH1q_OvSOW6pU*bIXk%#nbo_oJ0v3Q> z|6^eSUXVwjS}{OL0_06_lNVnw@qSfX1^oxsU}I9ex{0XO!{RGMnlh7t`g|ye^rfnf z=tP@f-VEM#M=H8~j#J@5eBF#QY44Zpg=9(`ePuZ9zgP|0Rq}tOjSVo&sUJq$rC@R_ z2C1{uz|GM9+}c%oLN<$038WX}gh}nSGIh|X4$1p>Uc;I}4y!-&aBlu6TCg0$bcREj zXC-j>ZeVgK%&JU|vl^J1e^DD;SLx(ZuF3+;qV;X!gFV6Y5)$Vj+3TiJ213nOyK ziqnz(sGHtQn}?X`jU9;H?gJvG{l2!mkgx-Pyj>+7QfxWJhB`5#el~jF46IxQ5XSFH z?ZE*^r~HNQNYHat&38X(E|G6-M+N zylfu%HDcn}(CC4e(DU0a)5k`p;PpJ#4v~|nM{a`w_EFAu9=T+ zr*w8zZ#2xSg>>bol}Zii+>l`?XYa3lBmcCKj;lw}lJ{&E7CI~QNf71XMRnTnlR~TI z>RX~Qq^u~dXfgI(;vLVld`9*uhElew(Pg{h3Y@z1LA+Dli8+pFld$0=8~9c_(7R=B zoQ`XG$%ye586A(>tZ|oJab;e;KC=8%TRBbzsRI-k4vh^7kakzevM)r%Vczk<#;I)9;eRek$*z76I%SF=U18e0zEZK&$cK4q-1{dRj_hl{XEWSr8t+C4u9 z4|oveRWaFN!70P9X^Rq5^#r|nYnTE&h(c3xZVISaDsby~bTiHjN8jNo*9u@>(~ebg z6H2f%>kcAGJ#o!q8$5o9LGZtH22iY)VUsIyr1BKHby4P3{GrbP%?yYJZv`_~2l2pj z=Q~Iotyi4(5~Z6MlVZ&E!le%g;uH)#YazoB$NKk~MU7UvsgJ<>p(ld(TBHF%JF8S~77v|~Zib%~RDOTD z5j&gzz%WWsj6#lSSP5nF z6sS6{u;<=*{M9xZx>=B0NwztTTZr=_eM=8<+W6?jmGfRCd!_jV^q?w{o2GQ8ckULW z8bW}%i#qdzo9eEYQydwJbr!v(5dw&CR@-1~sIb}2o3IxkK(0ikp#>YmBH+9vkbML_ zAW%nJ>wfYWjW2ZmxcjiTjYSUI(8)Epxy?YuagoaIQ{7B-?aS^?0rN#}>J+`Ooli_t zH+w_$Pmm=!A!JY?Opcow!gn$S>8UE=ID>)KsLns2i&^z?)S0TGrb)Ok6vhc0L}4b) zgnN}6T7-xGrjjpTFood&p0bmxX$N3Sbw>ocxTES|R%xOSo=z9s>trf`80L?cw9p&U zv2upLg|?R?X7oEFsl{~FIlw2}zq~gRm2(RAby>pxx^o~#D*gWQLhls)xyHUKd_e4V zE5j(THLMSK2`VdEGQHNY(GzQpyx}B;l6Odi;t6P9baI--M{VbHMzaV z(*ZThvfJ)bAZv1?MhF2d(mC}BNy4bK`ZPMPskm0PKc8f?MGg)?{_g{fmttOd@kTnu z$i|$+X-|uyG0LN4Wf_%ZzG!*aQT8JjzFYyV3dWEJqHrlJ=gV$;xN#AF@lgCXJCLB1R;Y&ZE7bAqj ziIr-NcM2f-sId>FU?n_?ra^eYk0L962B0XOye-9sG6UClr2+`LFb+|r-kKNT$_D;y zpBGw(${iXHdV{X$ULs@0uoaEheer5wbuuctXa@ZNaG*7m&>@n;ILO{>7ner~%HQ_) zDU*Dr^2ZtVe+?xdWMi&N(okf)Ad_9U-a1I0(n(ZexH`oSiEJHfM~i^EpFcJrCFx&4 zrZv*-sbBoV-%xO#Do$3{VA7n`*r8U=Yhw5R92*X1uhBS)r(v*X&61zmU(b+Q z?8s|bV}==f!v4){_O}pl+C@DYSC*Jdx!ADG@Nj_WE|-Cqvo%D#!ATEQAD` z5;Rg4C#;GuhSc=t$NP!oh#qXeb8;>8H)+ zK8yQeqz+6;cX~^&{1c;)NnTYYESh?L4Qf zHtV+%bck#8*V6`0vMb3dPPFFu-Hs5FC7A7+(I=WXpc4~b_(lucVW&8J)n1GPNTEbT{o zP0vEO!AnOzczu4}-oSJ*M0fWJoLK@dE{hWp$kw_`f}{d~--CxIA1G z;XG$|0x~UXMmXame~6tmt<-9Q)+^n1!NNfNQN?bT>L&5$mQZwlS#KcqJ9SW+CE=md z4HzZk&mz&=v93h6OH?%)D#QnCV> zZmqajNHz;8d0vk5+t?)p?x2%=TxVeMIw&xx-{6wfZwN|G4eiOW+ONcU552>R!!sTB zUpoiRG1RIJlhzQ?qRj384w)qeTNfm|?)WHO0$65e*2_q4*rEZSijq}vklj--H}|m% z-YcHO%vGmWF)O>iJT(s?5$XW6N9en;F~6oXsWVfg`Sb?RZDQEUu$rBq*>@F&gG_7s z4N^;|WDQgr%$CBV<(^byD`s@cpr~LPb%|(;t$vU~4+~P0CvEfWNn1{h=VRBPu?kB_ ztutiIeoiESLul-@A&<&@2Skf4@EOVb43>gm3TI9ro_Rd5l7OiYn5|=Okzf?u_aVC6 z`bL&`fj)xsmm7buC)3AfZ;bhVv=Mzl)kg|elR^v~gjmTBBa&Wz6KFvDGXi8WnZ)~h z{=B-CjMY5gSvY@}chj=pj@Q=udE{yyD_iQPf=xRq1@WHz3>UG}#|$9SPMB7t>jL+L zz+}-#*p?v6$iA8WtY*?2)09xGfsIQ&@qnbJo5aOmDs~Z?qnG=>80K6;{vBLaAgCfH z8QL3D-(<&9DsxD-J&i_X{(qt*vh?Yov5V~I{t(}`o0frvROS{MD42bSSO|+B1^J08 zM0SmGh(8!XUfn<_gCavGbw&@mP;YjjxRk(XOxo(`Q(I(z@>JK3{eQS7l01PSTTSm- z4H1QQK%X%T9My*?+XI*=xXQ_jrJ7KX_^i=cRho5N%?!e>z{!KGQvzpM^-z(WAVN$O zKrWaq@wSb=Z^(0kfqmDCac%iS60!17&X_BRrJ0)r%M#q=7UJ(PK{=%s8O1*iS9Ki2 z)4a4z963 zjHeC1fo19*k!i*Dr?*`c3R+$qQZ&Ys-qtNB;L@n986Ag9x2$t|@BaGmbjDXAlSQ+J zIcLWulA@tcNp)RZrZvTb6O)pimAbG&O9?o>vW!f)%b1U}f0wGf1S89R_>L*U^z={R zV)!bls&$%)FH%m+Z;?uY3|0kzg&5@=BO5kF_f zSAS=n3Gz*uNv+z>*YC4Qdfc+TW~TgHbgLQ6sdG;g&Q<$Md=s&2-n2J`8>4`k28!aq zKRj}5#08hsOWtT!=&|06^b0nDXLT|*M@A?1bX6G@tR=&qOtxr>eO3CD04I*yw#wHp z7(IiWxjZES<;Td!BF-3c$BV1y%$zxIF|jhdr+2SlLql!0=K4_(GN`WEnPTqfx6(#xOD0hw1Ks+SxnV#gVvQ>Q~`SER)f;KUennxC~V2bQ9uzR{2J+$)8w2oAbwVF-7EG}?QR zd7{Q{FSGEDOpTOVX;asiU_=|x@iEp^kgSu8Kp1NxB7AaQ!`R{kJ40VA(6EdfrrdoI zhAUVg1>x&}qwf>-$?{h0L3t5n!Z=JbM_+Jz0j5&3My4Zb_i9(1JV{eVAiTzvCp;hN zc1tk&^VS`=%10I+4T-79Lzn&iCMUo9!FSsTovM|&Qy>rgV~&x*u+O#2iqM9SmKi(^ z4v*26_iNj9;HBT!2K`M14YHM+gG+j)(Gzjm(9^ET8_C*3626qtVWeA+0CZ(p+(35s z@Eurd-#Mq7=mQYcGZ)G)Fah0aGzE4;1}d0b#Llc)2%jX&`L=p{lzpehtg`#^MQZ+D z+ZK=wwkL!u=N~JXfAAtw_0FYbJbbVrY(HZg${f30IC~<)Ac+MOq_1|}8iN4g3MDfg z+rY6scz+US@46OiW+vGe_Lq`j%OiAyHn9eXCs|LFKNBsNEyQz>3N4kfvk1;GZK^DV zIXi)TkS9W)qHmcDrXJ5eX|}^HDyBS(a(@rt8&C&FE07@>%>{{u|~0-b#t^Px*PY6V|oC zJYBgJOe5&|o#n5Lf=)4HQ+OS9)J)eGOgMyiVey`|Dm4~yF8*WCsK1+~wSyBBbdY_T zDWf%dCQq!jQ?_ABWW6_Mi91kJaWC$iOi(A3l_yyY871NHru;@y3_`5QHFEOwD>C)P zACus>B`bG_43`UHo99bX)?TzA{N!EK9T}c?E-82Kh3AeMSm0)D9P1_@y*&ce94s>V z%fK-YH%+zjqRtNCkjy!c_M+uEUFv=ErhfTsIp z1A*TNH%|BXpiqn7UR5SRDX%+G1QpxYiWLZo5)=FT_pffKUF^CsMWW2{YiEcLGRt!W zX=eBTeCwFB1@4Z`T|XeOf6!npi<>CdESA<*a9fT{Idd8m45Jj-9({7ux4_{M{Q?>? zw!R_Kg7!8)b6CeVH`*dI@6oIJ=#Lc%JOUaiwyw$vw1K#^8&`|AC#(TPzT~q#Q6naa z!;g(CRkBtH1-VJD;0UJRA`i8~0_C&ac~66cpfWCH>%xV;B1dJGb5y0)ve(KBDvd;2 z(2-Q+u!zQrH-wm??x^n^HBW90!)1A}c}izk*0ritGf|lka7w2r<^sC8f>U7nY~ws& zLsww`Z=2PMJVS^kenCW#Alds@AT8SCAeX+5$#kuRRsCPRh|AfM!~qw|P3Rrh(W)%A z+>%hrIBmRu@@kBQQe70wIn1;63exD<(x|UxHoEGz|g>*g4y<%}D-IM3D8 zv5nOQimHS$#e|S{T28lP6SipDIY2_&*k{o5pnDVT_RX8X!DiYy)`|8qt-BV_`qN~O z(&1--%KV?nrWy49KtZ=&3xI^wBOhq1#I`pFQ8Z%w$~(aFy2Y70YCcOVXgEP+1gUn$ z93CdIfZ#yW|JCU<3f38QIaTNuEwVo={PJlNw&{cuqY7zI7KZ%{gwfx}D;qBHMKQ)4 zfAX))<<>QYrU!;;@y8=s@Nkug zdUj1l@Iv$k%^!M^_&*}ZCC~{C=uButVul3c&uSOdIHhTnP+cL#RP@TVt?E~;6=M=N zgg9;~OZN8Avv`f(%hUKv2H0zTU0}y~zTt*WyHA-3khJND1znFPtpH?Z95<7A+@*VV zM`@xySdW=@%NL6=?VUAC zvC|r@NhvmNtJDyOHvB^A$H!=X=eNaeq2fTLQq^bXa~%XUa2kpnh*O&vLy5dnk>Fq5 z)*V`IT#wMcXGu#7(1c!V$Q#Z?;2 zYPwFrzL>o!BV?V^E)iPRdN+Pj`**++(0>6^RPxUmN`@wcGclEzYc$>YHK&$&b@M6v zsEQeWQcWy%nmdoLHhVAbolru7qfj=P)DGMYnaFYIhVwdJDDEEl6c)sgG%ciP-~2~p zMb2nsVuPW1eb67IEbR*b-DmwK)oo8k`$R)`_k5I((HQ&>uS)@M?|OKB6M=Ap`Jorc zP&HmJ=tNO=WCe9adHZ$-WtZqm)j?ORFLLFzH1j1cUwNuZ0c37@?|i%cY3z_;1g{PI z^>xM(nq^jxj0LcT8OCj=x`u{+qTYBZI*6n>7g`=7oFiYTMI9Fm(@-=u_b-I*HL}D{M3Pu@b3a z&;NBw4vBhM1D!1V%H3bFgbB+p zf}By09f<%ouYJu*28~;*5Uq~-%y}&=Wv~KrB|56G7il$&Z1tk7!0I-Jjoh+E>0Bfc zBR5?5co6TfPvr^LSDTDf4K1pRSMYQMG*l_mZv2h*U6OgpGi8`=7*A_3CH94VTdRLB zEoi}cU7igS{ZIng{D%VR#zI=;LlfsourD&7tiA+r97OdebLMo1JBx$9OX`?}lA>Sy zv0B&!s)W~WAfl%dwIS7MLo5N{V0O@Kppb&xgDjiU%!K^@VmR(m`9sAT;TZN#C8+fS zR%WHOHm53S(>kpW^Z9zK`ukP-l4HjAFeiJ#eJ(lusl_efKfKKxnT>~xh4+n&v!t6< zPvM11`7}N+&}k!~F}+7wT(dY#eDFJ)+EeOMv3fdxP^@%zom|`W1|khT#BC=N7+7u% z-JZ#r8g>YNtE>=}posunzmSz|VaNj`EiUl6OJ<~{Ipd4Fu}eKV1{s<=Z>ura{r}7U z+wPE(Tewz8+F8E_49F<%Q77uxza-5GVc zT+G`})+G`PQWoavp$xBg7qEYK=mNaK9_;Sv-I=myhZpSqJ}Fl1NFS;Sar$(M@h;2? zI>O*xqJayNUqxCpYe_G%<$;bu8cTrhUBk%!HveH44T)8uh=wzFUX7WG>q<=`{8c0K zAi1soPW!r1F`hVi!+YO9l7Qq_t~mnLawtSt!M^+ccl=MI+OVyh(3pB=3IRA)#LdW>NoTRX zCA!n?s19Fynk6L>RHk1!i*h@A@KFNP5<><>#$yz=-;P(`Y2KcZ^s>SR(efTuQ~bU|b@1w*n=X%ETpvPw)VxopG)9IAK8%u#JQ{yB+5 z5tVPl@A=GML>YWlef^Z2O2F4$>)RHZFNIbPT4Z`C)?@RUm0~0kTfciN*ws=E-xEa- z>z%z*^?Q>}6D-xNK|mf7-gT3li+`}-YlI|k*e~{1?Y>Af2ZKrNrK-goh;Q+sANvp_ z1!HT2(;!hyuB5(y{9@o@hJf;5psSmcxb@}^v1F>MMt>&PeLl6`G(wb;|I&xPYSy=p z@Y}goCEcpSyMlsAvjr`@6O`--)sQIH5-M14?pTNOq=j2jCY^H6!UOUlXsUdyVcB)4 z+CsT&N^3i;brY;Ss{z_bDBY@4YTZo10l@W3cp@b~&JEOi0pygi1sLOFB`N%|V}tkK zy?A$D;izL)9?*7VSkktkc)Oh@a%S+2(wQsv+En-bhM<^!A7g&_#P4j!%xDmsl*|T{ z!#UrDjZ)j3FU5sjp-!A4g(LQvrR;PiD-qk$dy+rGF5mM+c2C}nL_D|tWlIHxNig;( zSZ2AafuC~Od}RDz$xtqNut8{$fbkZ`zyUCFs9v@9A3+=Wl57hW6Vc3bUsjrce`W|B zth=^759TJd4BV>N9o#M^c6-f1p^UO5JJ z)abZN(^XG6qpY|I!1AL%JU$0^IMFot>;~4jaQmbFY2Bs7ay+0m1PwcuzJIwjKO#ch z91$_;vXKeWH6MfYZ^yvsX*a`4FR=D2u%=RcXHWz)t-qF^5VEd2`*A-I6uB%|xjScp z`5GCzEoEEf>9cZt@M7?Xk?tP3s47_(S@h9jOScNRsNfc@sgcfoFmbTKtA z&Wd80OVfp@_j&s4B`Z@>jHrXP@pnzLPBQUUf2q?s8N^Mc9Cg`=i$h+B9%cbXwDZRf zj-?$1=~`z-mWq{yph?nS(%ga5x+DrDf_G=}r);EEw@b>cddYFux1|~H1&?ZXRKxu) zKNoew^*E7nkpv2b@q=Diw)N8dxjkF;sfARQd_0DVggM^=Z!^ke$gYh(58N6gRZn?r z325#Q;#dDcf!;i?k`co7@Q?34=gkEey#xWyE%g$-c)XwDWyKxoyqH-{`Ny=~c_#U2 zQ&`IdPFH=3dRx&hLWIcv41tZFiP;+wYyh<4U62OGglE zetgj|t*vXU?8=WU(|gF*`VKj|AfaEhO? z@qh-wncY&hdNK02RL@*|Kv*cbt29KLHs%3S=ADq*Fm#F=T2Ujn=D;m2DF$*);mC` zKcL(>42D89g@~YwdtO+Y)8rE znKj?Rry{XJ)|9pAOp%A$%5ui<1=_*(7HOqnbok@yxW;K-%8c=LYKIuiT83XEE@koP zboEItPevL6(lm+17Mz|OG~gF=I2i|U3a9&o`Cb`qbc5Uqmr*8=Ij^Qg>?HH@00b^q z5s+g<&j|VA4Gk7`5bNp42o=(wm|<({J;IUAZK)pdjV0~FvmNXyIi7<0FNQzSTH&pOMHjZN84;so@ECH@M>^`%$ncJMu1LhEvo}iQwKm zMLo(@zPNy-(S_{8vEt)KpoB!UN2rpE1i4Owt{z)b%rtT4NFOl-Nv630w6RXEHLq3~s58bzfWn>9?-*SAln~y zi9q`BWw|(^<$}?sR)ylY__P3UvfL%m5nqJak*>PflDq!2tCMHILU&4w+w3j38!>yU@g*uoUmitISeuQSsGX_^o zsSPrZAOP-{C<^N`#|GHWRw2iELVOTtV*JURJ3YQFIbG-4%>U%%Q8f!aH-mbqvmO!` zorp1qzXWl1uK+F9LX6ikXFTPg6udThhCy}dd8x#l+Qw)6+N`;PrdES6iXIBvah*1K z*sYJYVb-j-vZwbAm*&E@!>KFzFgnr!4cckV`)UK|C7p4zHt! zMk|{8TVmv+AbdXpbt(-oQSk?#_1wbN^*8XMY@{Zmdg0cViaCt(C#m$Tnb2M_+d@8} zKciCE#U2B9taG9KVxuw*Ij--_=l5mMQ(s!`zk-vAuV+8z$r)WP8((EMs>~-O-OwK4 zmAiBKoR1>q`uX50@Du04l-O>(ZHsW^ifhB{xL_9V@zlvWP+79&wSBb{{=;vP&;fQT z{e?>?p@OgctK(5Bbl$>9>=mA?_XS=l-`!VvgE;x}XHnjA(pWtlaeGu#L77vABvFUn zHP}q#a;;UJb$_@-eJ5scPh5>v7ShnTjDVU8kvOwhI3}+`7a~wcU2bSIj*Fa{Ob|Rk zXu(Txfb0^E4t>R(s z)ERa1ND={=LF@6xF|q~qolfb_eOV>kTV?g3NU{tr)-8lI9)bWsOvcd_X$G5JQTKg= zhbf=Y{UMRMo!Uy@W>CXmEQHs%v|z904SC3YB;DM@H46CX*w~=iqj|Pi72$~zofbwZ ze0wo&;7uxKkvhIpW@^ov!eFK0K4j~3XUgjS4QA;AlO`Ioue4VMA3U|br-z&Yr7|%K zmb;wQjF!$kB$V3kC@ce`cQrZVFNXwCCBHT-M0e^!54`6c_gy6xVcjpvP+<%Wq@{*& z`|%+@pLgcph)QpA&)QZ!4b=EiSfHq&PC}KmD7SkG0gr&bqPE*8TN7avGo0{xD&Mt=a2mi6%i=ov zJTmXzM4;~|aWN@~9?vAig~c;NOR~G#NE5FaFkJQ~xy5~kIot+BH7)r8E_z~oy425@*;(7Y~;9A&VHgykkwYb;Av1={oMs z-ybP@Zm}p%;S`@08Dn%@8rKmXmn|yd4EVBpiqP7!OheCn{|W1&C8yjoA1SYSqI2PL zY-(#SPsQZ=BYS5Ak2FH>xo`eGr%`HDG63K31qsUV;MRzSa0~4F7%&u_u7dG96R)H< z=Q9rM)vfIKWSrcnm2ba|{WEm>flZI4>SmFF5ENc*w)-%xDx=`L;65!*F+u7nJR3?n zJt2<{xEGHHgVjr;{9!vN6s+tz-$MH~6-IKJTtZg9pu3cR=sElrvwOdT0H~)SlBdKZ zO9Gs#6mBe(Lanf!8c!5wq9O2d6bO0`T#}m#hw*3l(T?*Wq2`rHP-lh5OH%+DzQaKX zQejKRUp!l)h0A&CZ*a+K)QV35hV8|JO@}pm<|Bq?Q9IYF@GD%7}DCi(V7slxc^fWR{|5g#(0y zOiP86JERtEUrzfY!}1C=(~U(>wZF1PcNTf}TOdAM&K_K!KZ&bsfar=GW+&S37gs?M~IiAf&PjM+AamL@~kCDxjz-kY(XWsW3d2OuK z1dgWBCABz_4>!?bz22RM57ytJ1Na>WhSYrc9q9uek|LX6vb_t7FvX%^Ineo~Ov=^4 zo;T#ztAb`6wmGDpK|y$XKGj6j;%Hcu(fh+$Om1LTD-n?{Ue6x;A?zEWU9BcW_>!Ue z0jaj&FxvOs-3f-(37KPM_Vg{BauN}sUsIqw^IWf_>IS$ zb%qZv`cxBA?YKR4Ec?G|zqPqdmygR627j9hr4JF0KiEC5@rU#I=(S@H>)kGP_BbBt z&f(EdXT6>PeW4r_O}TMdsN*JY74IYuSgR6g@msQqZf$(?)O5<$y_{1X*0)+GhSza~ z6+`&Ph?Bi$=G9LvY?t!$315ITd9lC@vZhIBxs+mNA4mM`(xy(i4r9}IjwctER9?uI z%iX;VrCXN#ESRhyvxf9;r@=m}5y{-p*MhqEe+HllY*5f^Hg`8P_^xk15uX0F z|2Jbskq}X|M6yg$^1zGn>z1KT)nh0HaRO6Qv=--s;)fggUFe)B@q*x>O3>8y8$UJ$ z7aN-wzEI1~s|NuV_N~zkWBj_Dh1ZOfolJL-2=x8erfYI!j@du$22qu2)67$9tA$Ld zPoMrxoEt5sfF(ctCY89Oq+=x4wQ$aK&RYQgKLEf(n>Ba7T`AY0?J;GbZ^Dru18^Q= zM=Q$kcsd~B{wCUTt9uiMgMih^5QS9b(wNF&EZerMTN7+pDf+Po=!;Ry8jG3g(w+kC z@OU^>Qh0+u{Qj}hC(Uu4?=xXc^T~j1CEkUT%Foqgo4gU1HFTALJ@P&Bud9r=Ux$+M zQWTY@H6_fGQ|vE=kIp-@KXILM`)BM(iRuSY?2VpsRZG9Sx+ERxQ_`_=y%3{lM_37BwZi zDW9O#2=3=KbD0^Ak)knX-NjU0Z;YzR=}uoD)w)k*xd3Lnb2OH$Du%~DFbiQ8%PA9; z=o*16l5y(4#;@IKO=ytjag)>nunD*5i#+Qw2mPd`gP=$~833$M?wpEE$C_`_xZ$d- z<45FLax=eX(=FCX&O9Dl6yjXd<4C}mvJzni9{^bD{0@pn7&== z(k<37O4%-Zr0M^U?zJ|q>+jHNj;puC67U`Nq!WOtg+Ypvw!G(m=@r`#nzLV;M|((I z8ehMKN)WCA7JEbV6ek^EmWJG%YV={Z@mKlHf-a}CV`SStQ8;_%-bZ{l`Yk&Ln-E!*!N8{zzSq{6155w)q z#)FMBAP}+Ht=K^BfyQe7!AMzQn~*hLSE=!I8N{A+pxCgol8|Wz%T!zRH*0S1ANy7e z5Q2cWU_vKx(%taiWi|bz0^rH}9U`d*JGx(*Pf)heo4mil;%hRazu0cT$XLMiRyQ<_ z7Q~Ae>`(kDuY-g`PGF^+R{fazV|1TIApoYfUTUIO>A9KqPjmNTxMv++8L0P=)^+2! zN16WWDm~te1Ix4d)j<)COXL#gi(N`0jY5C^wS7fc)xrdv*U6CdD&*Wx673^Qf$xX= z*vzHG_w_NCsF`kbd-9kYg3}{O%<}v-Cow3Si&34dBet~^3k}WlaB_hiY``^Wq;K9= z;rj2!^EJBK!&i0}nAeT1TeiDh0|(NawHiRL{9Y5mb`2WQuEf>XU9x^hHFKXD!1^WD zt7Qd+jKTLQhpJ_}>a$cJ{~50?XCHAhtyx1Vf$WH(ePMUY71Bzk3fn53=mKbk5!1fJ z(1s1T)S|n!i{%L>dL{RKC2=`W$z#Fcc3f(EJqP^>B%VIePz2X-N6Em`?0)1sA?&ZG zVarc5YZKR19O|r|mk4tC4~i&h^*(O#A4<_VLxSwa2!Rm%ul#R-@v(U{ zYGb$mGI2}$vnE&bt_m?^SQC|cG3SkwEb~>IX0yj_DB~sn<>KNpDswVOGEaYdB1KU_ zV**SVV3NO&(_`aDs+@=l`c_`M92wPg_YBTY^yw?T+?PhxcrifCxAq%(tAMGs{-K*v zl-?==)udAJ*T%L@DJYiK-65Ojf}`#_=# zgO)Ld6j(uksFn{<1r#!{Xk+8fwer7;4{6f7QSzze_F3gn4tPm zw)(7avE%%t>j7K#jD(x*k7DzRq37=0{SqNCT0_UytxGsc5Bm{}1ec>_EuTTQ@~>zU zmXQ&g(UkUNmx@6&el5*{sHbL!Nd*h{?sc&<+PjtlWa*)di7tbCS6PwbB%=tVN*PNy zt^VCnWxc;pYkc79MRRp`JiVsZJA3fu@%K;Z#!}}7J{C(Ndx9CyaMeZ7;PLJ39iE00 zVj+6!#hHe*kILT zCE^5K8Kxdr2w)rL8i=E5AZIy`KTHeG(3sgk-13pJ{`XBE{1^&^Z+jZZc>^(K1nyE# z5aY`N9a%fLTn`SazY;lf+@)!Rya?(`p}Hb1K9qY4UJXf_$o(iKLeabbN0Rv#zOm(I z#$fNa%<@5cg-I+v$7BjdG)&D^1}yQ_zaE@Yb^J;B_upI3o@#0UK9GaRhEtXZN7L5U zR7SFo^IVQh8dvj9@SjMSy5P?*7!Y&nc|mB1guake81Shp0uw5sSG{B?r06uwT4>Zf zPQ(sf%o3wP9;v z3S=mk%YcnGPcb!iJ(3uWXO;qe>VpQI7(76Z?C}M>(vu)r` zvM`34-#zWMfz>!r>0qf&3C^2=?lBQ>|1O~~4Z z(kLjlF-M^3mCz+BZxU^U5*KJN|Dw6(%bgsh!zE~tecw#KM5vOH^BdJ?L%g608>*mW zV$A|XOO~{_T%SD|tRqreIJdKaQMq0jHLzCOX6dZFBMQai0rP3)z}4y_-u)XXNN>-l zR(9VQcDsX1dasJZJ=4U$*c@x`V-=9KUzogQx65k@z4&adtdWGC(g^RnPVybZAFDKj zYKRDqQW8`1ZEq+DTBDZu1LBPZQPW*i6y-!P1@FSrp-t)>L9A8|E#}*8oe1>tT{VR9 zYU8*S1mK(9D5R5YqKm}xJF~wpQ|zKnd(~`G4L5_qgvw18(NsNd)H|v_eh5w-%^^pK zDiW6zkjOpDKR;gEY2PL_VUI49*|njmfump&_j56xDo}8ZCQ;#~ahFcwd!kz~^5)4n zo=$oAPI9z!j=1pPrZ76NUDJZDiTjtm>w>M=ZHSpRKwx-xRl&c2ky7zzwz5SNOE4 zPKM~{DC}#I|Er5RI5YsS)xkf1nb;MAMtD?QpIte|o60$>yNvtEd#=FNhE%RJ3>0_ik-8t zKBtx=)){F|$^I#P&ASg(L@W&CfHm*dgd>OYs0!=Vza5qSwB)BRUvnn`G`eA9eD)fU!mY0fJ4G~UxSLHtCrhYYhDzsE@(ft&uO8C<`(JE5%ZN?BKU<&Y6rG!IMV%7ZWph8d z`LgrV9+`z&!{$rT7rd>8<{SNyR)$mjHc(Lnk~JN-FP}T z$+i~9e8Vk=1c=Cfj8A?U z2!gVZW|so5Rrebjps|qVd!wT+NzFhv`Xo`AA?=FIlBIu&EG8xC-igJ54$}*ZHQ?}L z%b(n(c7y>lWm;>~Q?yziGq+j)1~-kFjZ&f%CjTE$Io~tl+JLBc{-A6T2cF77>N5^L zD3ZTTanfIAbgnS5g2wx@FR;YGLsV`+H*S8{)wPf;+Qv4QmXgo1|q9CYL;}G{^umnZi4ol z9Fj3Rb@AcIZbr>!YPKxc3 z2fgx?BUY;RvxxZ5Q)jiWOvW0V9TuIg_Xt?8E04Q=`TOJ{G|;yL5iF7m5XJNmZU&ey zc~ai&P-JMIyuxoS398XEa(C*oIisY)t<3}wj(Z3=h{*JM=t(5fA;{NV-{@9*(6kg) z*A~q#JsdR9n(bj*R!@<)4GpH1c0P;yR2J?hGIx)pk=FzETzip-a1xn)!-GjdBx>9Y ze7$q1({x424C@Mgy$y@B1*Zlx8s7xmA}%f3hv-)(mey zi8OFOd}nS~;pAW1H7hfP_KX(LJ7*_1V|;(mnrCsMSctcw&y5cw0{%nDB?7g6O$r6G z05+6@&Bywj$R1*iaG_5+Bu>7sF^aO#UUZBr#7DxMpg5YLV}wvko7KegW(zT0k3%x;4Nx$p zaOLlFvG|Z*4~wWX?_yDvGYvD3?}{K!=nKQ*J-L|dCYf)DNT%w|B6KuJ*Tg1KWFGYJ zpINIUEk~5;)IrwBDvvgYnCb8ka|bIW=!o89KJ`K_U)W}GnT(Y86RVS^c_21{M zK?ShlW*a0Q`7`ztwH}vN0j_DozXMt1mv~3^bEKLstoZN5 z4<8j82Q6CzfMErta*Cg9JFT0yMj6HCcZ^1ov|3!|{@ncPIncWh2EJ^>FZ2xIMN*6z z%?yS4;Z~@+vfsvkA)5FSL3}F?`zgP3)rb9BqrTS+q^w-AsF0)Ss9OU!RIm_j?ceS+ zw<+sxA0}y06VC(KD5?ql{wxc{$?(-LTwKd_Vply@X5TJ%ZDmRIL~fq-v5@?~7)D5M zm?I-33t=Q5ES*um%8!2^?h@Kr!-dcMLiZwD@p6BI6iJC`ET|0VC$5SQk|uSw42-?V zG85lY)xnS$Fyoo{2FA0%Grmot={j`yUw`cL|DcB@p%9&b=iBegy_amUoH-;D9msWI zGUOJWmA0tz3_cOW7-sNg39Zqg%WLKPhmry$;jE$c%Xmu}f=X@y@(x^WHV%G8SB8Ch za7&fKvXOfdE6xFmunzlHS}(z>*8IO3uY8>MYE&^VO7!I&zUNOkZ3Y?dCJ`gPfOrqD{NIGLe#1PsD5881g|)GkVAnN6 z-WMkRxr)yb!f3A?bp#|=$Ol=O*+5?oc#u4sj` z4i+x)#Zak4G$n6($Y@fdEtD=WL=ys7EmwaDr&qe6Sh4VNI=SOB zy2>@{ccc(l1qCS^N87-D-6XaJ-3A~xU8eP0Iu-%+=kd1uyG_U~Q2YD3UDq&=by2q{ zQ@%1YLgiZdg>5#b;$oZ40}kLRen}4Q52c-5x4!PK`LNi560+& z;}nZw!1aM7XZP*F;|%46NZ)t3fav!2cxK<@%u0r<*7(n?Cgt@S!(EuBS58{T67EVL z(@)QhB@cb}3aJOZp8yr~R?p=n>o}DD@TZY;egA7G?@#(t+glTx6+DkW@eO(nXu~^A zGGRP+?uJytY(<*lAt)3vbqszQ1#L1v^@P>fBape|eB5#zl(!B7mMH5^h{248Zgus0 zPcvC_NS4C{)O3AdCKalBsJrtPxkulCF+B5#nH(3`ZnJHV_a3*%%8vXxLM>BpHW16U zqU3cAe2<#>+WXg90OIl&%twP($vI|b-7PqPuj56Vt0#Ue=8}E4EIXq72Y0hWlj018 zmkNRj)1;S@+tylTXACC>7z(AUZp^Wi61$pH=IC=D@r(BiR`}&LLG7PRS!bRhmOB@I zBUZjY0_mXiv=Lk&BJP`Pv;`Dx8_y8h7Ab-tE)zS%Y7M@0wr|y$aI*U{px98qjkV*a z8-3X&0r;;9o|%TR18tMQct18paTubTp&Pw^$_(3Q&#Gj;_(?9*;T3GT2x;darXp_R zTk1xrX~Yfaij{o_*QrWy;Cf7w6qJY8fgKH&7C6c(f>adwtVztD#ZNc(p_nH9 zXpvwY+8R4M7{c!5#%;8olQFLSE`30(Y3V1!S1xA>oc+bRbKmB~P;Lho+I3gkNKhR#KoAmBNhloX=HSdl<`&fDB9Le@mPA8pg>m=L5q?q=988T z3@34DmZh|%P#J0*_()Xf$t*gYHyP^=c!MvMzuRQ(L@vqg@!afgGY-)UBrY*=dTjm1 zrP@zMijbjA^g5Hb@BZx=S|~o}(^XP8y*dya0hEjdpF+q4LO6R~e%JSuvtP}N@c|w@ zXL%F#mOc!RX2!p8Eug+Dcx3J$l+NZlA^=6z^lAPYw*x8t=fy$*+8hxhibv1=`p({? z@In{SGS=JsS)R2Q1BxtfDV)8@jqr3~OFIW7eccdazw3FGJd--Qrd*|ALhy_TKVN0X zkj0J(x^7y7{D4$OChiH@>h)uBubAokCKj{^M4U zrw+hLi5W{*$j}BMzs)WCR-ukP1c9Ynp=@O4j^LmHCm?J&0&uExVfua7Z;{gBJ3isj zC3v&8O`rp}Jw*X+PIDf}RV#G5oiFSc~J0#~VBiRT)>+^2Tu1$V_Hus|{Mv_neL< z|5@F>3_WHe4yEA!wQf-Aez;N1JdpMqBsxL@KE{_nLkJ*_qWqF-srz z>`Y&4WU>d6Zk{RB$8n-=?#^8C{_gx;tIS3=-r=Q|S$czsMqcvpVAY%L{`q}NGi)V& z&g!JtOf9o?BGXfB*M072bRXZ-Y?&d?9y^~CvJLw`Jq7k_C+Owd$C8~np&&!nzz(FQ9lCz*g@zPU3@7gD8>C{3l&7JY56=sOxV3( z!LoNw`kWrDOVsT`m-Dap?oMF4<+yr<#rwVVNr;gsnZ9W`m8v_a(nuj>h5XA4sC`G9 z1*E~5r>}#!;jqNoQy2hYru4iI9qqMw>T!>sZkdo&7OWcRVcw^Mzmi>L-5#g|L?_+e zM~dCRc5ez4Olt6#08SI&W=T#|QEP|A_lln9u3Q^EQpJMNelc`Q1b?{im%WFf2D9T2 zEeLWlW;y8zO|x54sDa33uPu|>)n_n^q5%w$GUOH!FbRY0B zOS40H5niuJmS=^0zlol)(5qe=RqJRm>m&roq_T7z7m;2q6cIA zXsqE@p|IjwR`kZxP_)5|fYXzNz5gstd+gSVkJwFC0F0}~X9SCz=bFBJb)Zd8!VsC_ zi}faN=p#hBbgcp8*GW*L<(X|fOlp{XFU3xn%TKp&CbJbNCx}``6TVuS{yyH6!@RO= zX%XizkJfRa?4+flL4}an;%IRz*|1Tv+*ZcBf?TXQl8y&`(0 zUd0on;ok?lHo&O*V7sTEwos$7NbmW9LKEU1BDT+zqVj%#X=~iH;JM#XB3OGOp0s(R zDHBm`^GY;Lbn?<$)EBCpL;!|j5EqcQu`j5mvONQ(&Sk-r2U_mL`@MLq^ILgu&Sqo) zi7AGVvL*l{({27_qd~@?woB!Ok#j1;+lqlVHT{yT_v%pM&dVd_KLyNHMV#2IuCy}S z{@&bAzplHHnYk8`7*bRPDd4IC7`db3*Yy*|IIO$5|r zgbu*8h3a+uMug(@q7O)?tQdO}`wp!tPLca1xNn_DL57&bNrW|xH1HVp4QJ<` z8J1Ik<=?!Rz;0&{v7Tg+h0ek~Oy71I-KO7xtuPggUmGL$43rlsx-eMYc4KKx59Ilg zM6MN|LpY3ziM?Y@cYq?|Ps#V2reZ8XZHNsFQ%s!OU@@evMWOVSYSF;H9ML{l#s|L{eZyyW=uXI;Uus1;cGcu95n(&(sU)uD=8nVtj z_OQD!{6Obp@giJc{miPN(;rU2=l;;JDDrAM4vqG|C~hV}K_lR8v)ywaZkR4AK;E9M zLyN*fmIS0SWiY$#hi~&p91}v>;)28ZSZA&G`&eyN0UYCn3$y;ax)7-BmU;C)?)EmY zl7zKC^HjqM{ceQq4jF2B%vE`GtvbRXht9 z8*}3N19ce};ZOgGK~@g=Qo~3JeTVc0peAx!K1TNhZv~rO9<@v<&4Q@UwmHCYcq?b~iIj-LQKw^O^pCE3_KSg_*oE}h9w2o%lDP~Uy9#F9Lg0i}#!dsWot{S&ERy)?cCKesC|Fn8 z2qAV*l!DC{^nqg<^3CXk_dEukGiV!TBh46FBZZP02n%w8Hk{l_=B!B0(k*;%?%*u) zggMVCeKA>)QZ=p_Hr{Ofw@tX1R;*aNra$fGemSUP-aGSL1g$JQF z57rIBjW*=EI5L#_;Lp9Fq&SQA(0vaxV*;e>j?KY?K;H;~bh{gXEK%`FRLsoK-hMx% zmU^b&k3FV~5P(m4Ka&vcmP2N7RTpr zRxqF5kShT0Yt#YT!oA-kWWhh(A?KU^&H_y8JM8+N;j8XzzqCl*hfcn&XcP0ML za`$AV%P>@-*#=PaY`}rW54?~dngS~=t2mZRF*mpCjyRDWKRdn&@Qn)8yd~k&KI#nQ zl5`$y?u2FKncc@bL)^$1iQ+pc(72YCkU|G>;ud(|W4v3vBG?|*w;_{+>DM`0B5vyw zT%X)2>Q1PBEE_9S1@yVh@enmpbaa&0FTSOU4fh9Ct#o(~)uk?~Nknu-{H)OG$nLJL zuR|i`1>+%(vHlobCFaWCsgg!j$frGxVu;TEeqEC4=R<*$cvN2=BgG-6jOCX8R!H-&@?0{YtVQ3)b&71lP2yQY{?jNJUEUl;^b_Cj_?gJY z{ylkiVtBi^L#dTWua0xDhW*Pt7lI#uxYE9($kHpoW(cu3Et_CqHQ$}04Eki0T!&qH z`e~{c&MAKCoWC~ zdqHz#*(NR&Xkf8HFngud9T~51^48iHb8R`y)+~rJenfxHzt}BaX))_|3aK55Y%mr>|s+D=hn#rhE21ed??A; zuzgS{p_PsC>)A~*fyxYqfFx!4VQk)x031#)mW~!od`FIU74KEjT!3$jmv+{@S3DMQuBhZHD<8x~i(o>W{7*Wq2pP$M7XiUBu(|dPApe7odM7v9 z?pq0%M+GZ(Q?HpP1ex=o%I1%^@vua~8zA=$e=e++=bFRT{bU*Y{B3YKHaxf4F6IOgNAod+)>t%@P4Vy&40wZtGtn;o)=+qHF_9@ zP8wu?$6#s)R4!|h(^mKY)`=Rnwdqh~2G-nRpsmdi_Z)b=49e2S_5N(7#PcgSt*1}c zGhpNau;#pxbf5k~zQ*8fgBHRvW2&6>m!dU3nZ=g*+{>cP@fjkj{Qrk+*-}$XP`OSQ zW6Q}ZqiQ#)Ta_&S>Nquq_4kheB-6vg$}G;HL|0^t_#Z9ACD`+_H(&R<^w%ALjjtM! zoNC}kjY<5b)OeL;K=y`g{FJi@qY(|#-woI{5QZqhBxxaIYxuvQS=R@G@{scWr8AZM ze>j%2I=duYOA8~GMYA=akVKspR75gmNRh0*w*x~wxBU+RT%gwW|3HDA>9F(ywO1g5zK zEaYfE5RkGv3&qN+sB2@l6?Tizz7PxKBmO3*5(zfqk@gew)YQQxmxyVTg=)WM$n9A& z{P8@iBU5lE4PS7PQ3J9eK=0!fCDaH^bw`&KlOi2g)eRGPz1vYwQ|iP-rhSMVl@1I# z%sP>V5;_T|u9#41TfYhVefF$@&S#D?Kf?)!R)@Etvvf8j1A(~LVkWpiIxAeTgL_-) z{j5baIFCUxX&b2VJ26D!G6CphLT2m;8CxQq%J6oDoKl3Qzh?H9c=ET_hrBseon8>X z2e|xQx~d2rAI`-_)o{ISGDII?ytD57>7Z~%FS{8{W?GSZ>EdEaZn7{EbH;9&LxmG^ z#GLJ#hjR=`m2EWn!Nic9?rjuN?L-Q;LLyE@;dmdy9QZt=GY5QdRykrnk@75Vitb_r z2e%1$IPR<}I_im>pkNtgN7ks_#1$YG zTJIlj_B2nry%M2bKkLav%#KBuq??2zv~@PNKQlT8gHrONJ+89|_hgsiW+){#4rN{hTfV)MxgQMe z8i+CwxNW0IO4nRR>bDcm{{y4<&muJ!lryMasSdHB{Ks(W+9j1axySZ@+fM~BxAo!# z01HZqP|EtBI-mA15`A})mj1ih7y_jtPo-r)Ml5LcHA!5_`<;vg&CK59BN~sBDZ8g& z&Vti#>%F6y1po5K3|!luMP_xVTB#<1_={)fofzrh6j*l4tzNCwJk^eOXiGuH{wC;U z5Yw2nv%AK~JUAxvAlal*7rbu2`=JmRARo4=CsSVm2GBpRLsC;}#|lm(3)-g@=87Td zT>Iw9Hh9`Qq*D=-ECESg7nZ-}7ef&tp}EE;w;XP~8%(MeBG#&c-??M9S1NH$VP5y4 zm8&#exMOUf;P=HAyW$MQUec5$*0^!mv~3|}RmmGe#zvZut50l?Xzx36LWnFFzOvW`lb z6;i&~#&eY>hFHN;M+^`$EsE7(XrvVvoN~>(zKPTx9z;A^#&D?NhATZ-!rIiiIevS?7|RYU3EMv?Q2oWb@wx0kEn?4x9U2 zcAHEQxpPL(>vtY}Ln8wPUQ`pn2GNWMvDG+1g%<5` zztu!;qI6-lv>%484$T-*dlt#06dJ)NhTpJIL1o6)>QRga-ds#DZ_0y%VF`vMOf)q< zg97=hM^xTIDqVLVGlef!Tw|}Lq@P`NabyGZTrs`#bIwDZPo1;C8u>n{2K3%5IGEN)QpfFa(>j0N(? z@JwUZk2E6C-rX5Tm$%+2{OpMWVkDTq{8SX{S}&WZiK?KOQN2sQ;*i)D@Z4dK(nGpp zNtycj8_r8kr`dnih0(3lN{Z`y#AiOA1D0M=)eeD3<&IOU_=?GZ)ibk4W(X1fePmDF zw*YhIV?ZKk0Zt~4pTQ*6{6##SCL+0i^;kMIys#;<0(0KJ2j_&1Hk*9hM}fWdurdcv zldhilMLSj>o#Jp-Uu88*)Vh+Qy!vzlfC|^E381?#>+go!44$o_`kyVz*{-H?sn=6! z`vNqse$0sQxl%J}VL@1dBW_`RdVWTNdtVu`$HT}|ckEt2<&>XhbMjYA_2_{Gr_e+^ zGG#D@Mskzp0C=uvX8WZVl7hINs!sb6(;Ffd`Ca$i?FwKlxx0I;qCWw*!_Q?andv^a zAqA`+AIb5(s+w)(G}N0M>3GhR9NBiaBTOyK={pybO!re>Ui-}tA#c`a~>&W zC*Kv^R^PjRXjb_Rd^UpE_WViT9BmJum;qaT4&TUtVbXP&hY{MG+*lg|41?7o7+B z+A|F|N*k|JdFcln`)u=33W(o7+KS&+-0*w%>}&tKD%;-2b-3B81137t>w~>-goi_3 zQP9M16LFR7RRsh-6+AAk zZlFGwp*_BO4Z41-Cr6$S%yVvKbTc0 zk5o#JtXC`~fIC!Ss&K8OM3W$1{1MLIz!yoZu%F9iY=zT!y7RSU1b0}~bBqN0i zuZGywTOU{9@_p^k{*Tea`~O5}TOT+pv|9=5s%H1~RV%&j9dSVpsT(6YA zCX|#X-$kT22nu()vQdK0EJbc;dHMKw6wI~-EhwhAK9j$Z374$68~Itq`G-8)lR80? z%6@gu0BHRR4o_^hqn+r@){{uJ$8`5#ZOwM4*$=5VP)0!AO$_@8_ zp0S;nSXfIz$KYw}V{H0J6U}FY8;xbccjMk_tvX~zBWO6P4C~KWu+yrb{-AFPuQ2hM zvguxqo2DA~1z!ZsG_%6}$-ML7%Warb#58Jv z1sZTqGlN|VCJq~AI?1u+`%e)r+#%Glk2||#wrCUpFE5vuYd$skm2j^MIXH%Z`eQu= zj`-`c`i}7czAZ&-cDT*IZP(nK#>2_~{%?J*tJ`&fC1HOl@9p`*abC>YM6E#V$=Fal zO@;?ep5!8?kvyUv4X8>VFjs;XOm(q+4eKYs1@`+gl2S@?2GvkDN}wBVWzDjnxsedI z@cxnfbBOY)J%TcXYo24kGpZvFVY2fo*^gC2w=M4o&$L+H>pd78-?Wo&FCEqjvFE2) zAP~~USduNRBu>_1(pth!-mEj*g|#jfX(3)lA1ek&IXg$;dAw&H5!cv+&)b`;FUxp; zm&@c?>StWrDjp@=NS)m-blFMa4RYEcwgFhGSKH$uT@+7yOHsxWwmj%BY*#=oGx+8JY@{_gKw2E z=EY_yYxUcuACZG`w`RAGzCNOf3g1{Y1FGsOn&p_lFyiJ%k{bfv=0rrv3Qq?eaw?K3 zY}RYn44m`yl<;wyOu}LfX<8VSagR-#sMiT~(U$Fcfo8 z3GM9+#z7I%)Ocv(E=SH-@P}0A4V(UXbmL}y8uB3{y-Ag=mA)oh7@u0qG$QHyF?NZG{_iU~ zZ%J#Vlqzew^Eoe|(fB-eG+Gugqe_Nf1ISqZ&ZVy5_~2Bc1yYXV&J$Ok(2@_(W3v3Y z)$Gz&VKq7u#sK77dErPbP?f?DZP5J=3ydOtqK6wo8Eh=j5in;)AhiT8o1s*=p(atY zOQW%+?(R+R6fP;a4mMYpaTwe&GlTwBMj!*w|L=fI#FGN|7qB>(X19#X5D5A1@89K$ zo^s>10Q3LlRKK7jeCj+e%G;#z2>W|xvCtGiKNJ_D{7r|MQn_ybm)5u2-M#^THsTvl zmnS6P`5e13&y0TEj`AOED>k+in$HCtt_sw%nsOmZMgqD>!5o);BybeO zoFLU`T)dQ+!GfUR>a^8)nW$18uA1$vh}CJME-7y5Z!F_|nzeoVTW&0mP?c*J#46H& zg^@(Va>I!Y|2S#|2}8Kj)<2?U1bptyE@+0@iW9_sj}+Ipd&CdLOSZd6DGD}ClK56X zCIL#n0Xo>^@F=t5HvcOUxm2sL!GSL*{a@wl(NJvfEFlRCka4-$KZw@z4E`;K{LX1pg4k<9!x2LMeXJ_SnFrlPiCYPo1!LD&@) z1hz0o_pYh)ZAm>vUH)#dm*UoxwD@Sq0E1BI;nk`Y;WP6-_2sqtnbWs_c^?Fo&jET2 z7QkI4;7mY^-n3Y6eTgvs8H}KccRCy8!n?$l4t7X3P!1AE6trdG1TgqPVO0C8%SiQ| zrL6%zy>g@pGLfJ8U!9uH zo=q5%^rV8O$I@d&4A1A&$TGqhFor+c9*w1G#j0P>uE3yJ4O#~KC<#G?9%^K7I8sccymzMh7 zoB}h>?9{tQ={@vcxF^gNDYpGVd4r`6EwIHY7GNkhH)EBOD6)D zne6}C>{zcnvqQM-`0}^v#s@rC&KKQF>D$@AoN@8Ds@Tjk`bJt)2kz6EDKOUVD)hv3 zQ+4KT0Is)MjA8QRG#E3&s`pW&)z|M92Wrh6pG-8PnZ`+JYvAQRpkvv6Ysi3ajf*K`4<&|i*`2M)_WXB z{_x&j{BwUw-5uvbp*iRpo@1NUJHp+b?Hxgj)=j@|SuNPnUUKlmcbkX;bj1N=VR-yF zefZnbj3*EBg*9;rpdmSf^>8mvT-q1XU+WuEx&q@{93FS-O)|;tq=iTVTo2Qsb(PmO zwSYB}%zdRyNYUQ|zaDcqVP;W1p}l=a3w~$537(6-DWmo*Xo? z4@!kR)e;Ah1#@(#gv?${xYGsPW4(1pe$2&7^b1=FHc^6=xXYbg3&;ko!6l=d8P>CA3T-?Z7~S z&$0g5I=C$-Jos3VN!8Y`CF=_esj@^ft!88j#&SUIh*IjKeUfOOb}n|ZTY>KdHF#IE zO{up@(6r&N{bTUPG~(`kS7|U$zqZ_R!#^0kEhWWJ{k#an3;$hcD!Z3I^OYn`_S`-n zi7Fh1A_8{yairAh1oS8t)~fd-?zi-7_EK}Rj2QWEcpt@YdWWZ*N&oxB0>VuKxa$?T z`f{*p8~leau|~?G8+${E#wyZ1<6XkMmI19qZpH;~%Y0=M9emIG+nD4_pC8-txSn<~ zd$91_T*Ao}gU%)_!9jPleO_YhNpoE5Db1ea$pWj6Eap-o8kg>40#jG%P^6woVy~aT z%cZ?alg!H|E4YQVJepKoW3+HvrNaC9e^mSIFdvHc8hglY5E2WfS0r+VQTjv55OUmx zZGOB$MRW#gYgf`1S5l7=-#vFcb@iXayKAX*byhQH>j#V^u@1Mun2i=o_POAHyW$eC9Y`yvPF_O9xppR7Us#LP) ze-2K#m?Hj?HGj{C3$ZEi_g)BC&s|{XB>SsXJy}e$!14JNKbH!P_iAA67tqJUaiLW5 zW%sZ_eKDgc%?r29XGUqr;a3To#l#>7t%Vjl(jxl*?Y&FxPMmje%ac>KG*l7~0r8k< zUhG+yEmttRmhdQ}g0RP<#|S_dc{uv^N@U+uX@S@jUlmTn-c`Vn|C%k0=Ls&LIcA3BWAzP1$8N_wpy&tO9hf>gLzKmr6Y?1Cj@$Uq0F?9Bs<7KJj*O6UlyK2 zq6Ps@EXwge0(Q1J?&y82yD~5?yl2tw;zCa z;bN{gQ}ttCaI}?*`KuGZDfHLFPq?_k%K)gual8Y)xgenjt7RZer)(eq=Y1(4PxynZ zw{ZUCR@cl{Q_?qNr-i3br$`vAZFq8z9odHjaqy#nW4RuW5j|37Y#65qXzjq-H&T5y zXrlZRt%EM)ze~@CXa1DSAtkdZ^prvPlnDJX(BI0;tRX4bQ(s zs8~WqB8c{u!$U0%ROuf>EmYLJ`=p@&FxuYzJcyMuvvY>2Za@y1pxiRKsk$-% z_vsS_M`0p6tsK0#P#cm4_<~#ZE5{(F5Mb00<>dNJ*^0DWcEQ{v{=AeLcBK-!15ISH ztV-%qiJF;w_8z3v8QNVkOfz%rMYkM5_(#VfV94Kt>!75~(+M`EH9|tAm5oAot?TOS zELecs&?tNftC`RkG*mx6n{8k0<7r< zVPp@l^3h`ZyWK;|h_-Q15FaN(QuH_Czwz)Sm0@qAMtwWtMM@LwGm>0_W=--{P#?zS zaL1o;z9=NlIS6B}@4@P}7@EjMyn*FzVV!(IY+}d2l`eFtrQ?StNyjoJ8KiuT&!Mdv z9R&ZxhqaeJlPPj328DFcsUfeD;*cj|45#1JAz(A$Tn_*OK>fd~@4$0+I#KlIjzA=J zp8Q4<;LpC-Z21t4I5^$xV+9Q@8b;3}TIZqIu{+ILtf2>aA%()+5+Wy&3t!EFXzV1E zT834X=o5#G0~a}C@zV;-Syqk_mHOtB=+ALkoFD|Lo>T8awUC92&T_;`aD%N;p+c>d zw|QusU_0M1H|bImW6K~6iVzw~3C81{9>n?2gxgUPMXbGx0{PfL)H03l%cFp$?+xKE zEoW`6w*(!p73eTMJ`Enq4zmlESq@9$n{r3uATXz;C99jD)qars_*Kq8H8^SApENw? z_$}u5|8TrBTWm_d$9M|fzLwhND+c3bg?G7o3V(6hqNViICf~WLmz!XlM17M-I(QLy z2*(02OE`{MNe)XWV&yiE-4`SP9-GpsL+ZxAm|exZ9V7!4#c$VZo#+h zDk0QsXFp7bQ?7N*j0odk`rkf`GsZ9c?$)<{ku!BD!ixYv#pg$`|GM20K}jlbPqW}D#^x97vQpRycWyv@5F)Q%;c1DJ zI-Ag+RyMKI6Iod5idwJZ*%f1`bHJWonY?yQ5>xvNE8PrK;R&1BM%($f0!jVf+PM+iNmfdEm|Iv=yK>WxvIl7)r=vUjWRRx z2l)z3tWV)53gr=@qb7MWWH1z@M&_?-5r`Lr(-Db0gUQ^6g598{^^WP6_I^erUd}N) zkpD44+v`n1tf9(?#RMj{vHOYB4Ay8Gnk23Vx%JKg6slb#^>3Q2?FoQct5BO6^hH1d z48_c4-I7LQI%CRBU*@{RBpX@ui`H3WGqG3f)=CRvU9}LS~@tCK>GA#b&mf$GA;v zYtIXzs3JiyA8%f*V6Vg_>ZN4^c~f|SlAPUMm1K3i;^){AZg>`YO#DZpS`-M0tAD;IvFt#TsjtXX?Wxv%K!VXnomiriH@nShJ{`% zCkg-sVd2+gtgZ(5fyTcpXCsoxOP5cGCk#Pzg7IWdrJ8-IcYf)Ex6q6(O2uER41Uo+ zd^M#QaSuvGK5KdbL&WKQL(zQ2K@an0AX+Gbkg|AVI`OKKlu{>(Ozg^8u)1`KcjEpb z$R@s#H%99BwG+h`2(6Fj<+9izHy}Jz&NELNYx~rie2Td69b=dueQj1E%5?rpCaz@r zWgH@4UPTwiy4OqkF!)^R+mxdoLKlm%MJ4;+8&Hc|gIpVk%!ND0UH*Q7;&2lhjI|dA zGtw?sUX>974u6~t^1%3*>m+!TlV-y6r1U#9XY3=wnOiTK8!mw$VdwYdDzPP^cktaa zW}@U8h>g{uQY9f~ECv5hpc>lQe{S_bTSZe?-RnB2n|rSO=!o7BjZ*HNBD}ZA>7(x< z@6ju8l$G*nI+wlyhs02MA7BVde9l+@neaRHzW`NkIkcHDU=Rr(Z&HRcudy!egjA%B#$X10_pprMBP!y8Fy)*{53An5fo!kb9 zw@CNu9)>8lcQB7yJ z>Z^Yv<|^jcpU!9|2?IkDO|5Ux?3!OQ#f~B8TQ8N^Txvqv9v5)gr!jJ~&pMHjSA{@+WSWiC4S>_yR;T&WBNOgRtOea(SL{d=JHt6P1zN|=$)J~oigH0kGGbh)5`6KoQ z=0>b+viCl;b_P{WLiKn_CLK>Jxnl7rOv7mQ9_G&-=ux^WO#)gv;3?VStU88Ba=nJn z0SBEmJQl|6yYd9~MnK|lf&R$Si(GssA?Xy9U{*kQ0DnGP4pM-yq-cL1Z}y!W*>my1 zCrRXqaA&wW&V)4bmIxGIINNi{seW1X6Hr+uqacICmVqE?XGH~ev%wYMkrviNmPuVr z17p8F!|kZr87P(>WU*hlapiY!DcmkjKfnXqH+4)?BkQd*)IOXQr>KXBwe(_G_MV7;pM zOMI2`u3bWJE4!tq1{mP) zuPe7YPIj3rdgm*aF=DHM6~fO~&wxYTa6X-ltBuREa^|^!ArqX^&?I3r=0J z=`>8<5X+)9C_KrUsa?GZ5)pz+xvG3 z#?Y;o;z!Sn%#}=C+BA!3LTZ>HFTseV;zXq%KGerXOLEF5h)q5tqqGTV7i)qM3>)O8 zR%oSLqYcN_SR)~^76`cFl_^%d*s2B?6T~)@7=Fn_`;9jZWaePD-SE2zvr_`I?A8nf zw^JxF7f4|z@YX$AVS$P~OvxrUZ?itZ9qon_@=@I`PBQ`veA9Rup*8MzKNmeOp8|Ab z^U60`*iSo6?7_!|72PSHq1ix(?xc9DP44#pJ$dvaa(3f#-c8V(l}30%ien=g*SRM|0X>SECVyuKf)Lp2ynp6z3YGz?5!N$g+s-HVhq<}n9eotRl_eM*AVMNF!>NucB3KIA>F?iZls5e1 zUcCCUvD2M;J|Nub&d>-7J>Mxp{cHXY=7hp_;EVOH(iE->l*Bz1-z*{xOxt&?k=CpU z{0Ea)O0K5@(O=z`9XIjas!Mqe5)~truASX|HkzQ&$=A%d1NwqlQU5Cz1u=e+0q4V3 zR&pg_dAWpnPbn`)MjT+*0^?~1R`jV0E$=vkEV8iEtnRL`Wx#{i?$id}g`iAE0r%{Cfvhp6(31uX*H(_f{4 zyz)1VGGAI=R@+S9x83YdkS}v{lAZEBv2pm|60ab6taIR^im*9ocx^J?%zU{*_+-g_ zkbrFr#mx+$nJh_R?&$=Bh>^)-sbPB$Gu8)t`xT!3@3bOPV*BB`s9a}MNF1wVuC6PC zC=yD#VAFUpbbvxyb(w=l2qHSejBY+{CBQRYk>~Dquv)7oMx#-MJ@7$mA-DZJ4q{hG z0n7XnMe||=WrOtZNhCfMRmX^R*&&771GLre0bx=i%ax}1@nA=Ce8LtDfOIeIwT$tP zT-|+~=J5*mDqjSv;2m^Lpd#^9f&+ii=YX{x+Nh}&or>i_vyw5CCC12Agt#P;Q4YM9 zq@uEb!N5!qmMA=Tr`Gxc)jA`FGmp#UW9Z!lpt?YP>HpqoGkpR(T+ur1cB}_(J{*C? zBu9+anY;CGk_{V4{};|Mg#aUF>w8Eg^77!>xJ!`od^KqTqWTWe>ySkWMgijOcZ;oAS`p_Ng9RL=sG~w&G5_mvTIOUadkL*$VT4PC(aDuY+yemu>6YOOSU`6$_!o4KhM#bEIRWM)Epnap~S)T zhDX@Is~vrJ_tYIZxPC|364o$hIZ-CRmQ68kY0!^$65AGWcp$rW!wGr=U#oV`8Odd_ zDmh1P!~FqvWbp({*y5dhoXdxgwPKG-Xh+Y=(6M1U9=Fn~2xWJLc7R}Gs!9?HE%9tC z)z9l$xNPsQQ4OB!O}qRe z<;L`ZH6Zj+wtk^sv)y~7fnqz%hLM&0{4Ki?E3`P!k=-0Rw)RKrO88*bO9j2qQ5wg^sihQXN=dPuJu5eZ5}a zd%|!mrM1#Vq+%j*m6d?#t-tUz7bx!pLjYhay}F=q&pPz25v}2Kbh`$s1Qq>y54OR8 zt7Q22SKDDfMJuEzJ@*^88H@@!EpmULaAl`y!Pw>L@gU!Ja7`;3e)~?3=m)iIssu)5 z2+trYTp8E-3=7=F{8a(7s@@43qtj_oLT3}unndE=c4%4O`VPuYu~6L8yT>$8XumY2 zd?T{KZa659-`E1Dn|>>JkV|+tLu2V;K;KCvIAY|l*cQM5FHhTWC%r1RO_HTH{u%GR zB=bkA%pgq_!3E108(7zJRDfA{@PbkwidAnr=ESN2d2d9sS`9RG#X zSbAPa%Nrwhn5HRye)~D!O`07cW=h>M)H<;P@1b@YOH`kL%xF?tu^2y zjWXxl_bUKm(QTW!V_dQgN5)M^8b)Ii@@zsdTu@fy-6`&>I0yB;aCGjn%!>S3zr7SZCxt|7v2T)Y`H zyt4@7JKr_Nh=r#qxBeD?T(lc${9N$TE!L29BU#faLH%wDwshG(Zk-O90ZfZsS1;%x zg-pp&-Oja41bH7^Cts+c?c;HN*-K~OxSqAK9f6&Iv#4{u`GQj_E3MPTwx!UiO;NKw zLhNZrwI1*sbR0&_LyJbtzbak=PXX8{EhZg99wlY|l>BIhe(aHS!?+5Z>=H>P9i9hs z?n$T)A`bKWqrjdW6nw(664rTN?2uFBsR}u!s3nDlRmz-_0E|xo@kJYZ^Axh*l_Iv_ z#=u+d;V{2heoc#c@pxLZ^yBm|9RVMG{7aIJhA$+?lE$G8-DU8C(&J`7SH{uDK+^t= z4}gSrRsDIP$3;4_vm#pyR%m6g80A8N2&MfKI8}n`1DX+GP0^Q8g{D=^StAD1tX$UX z7v2XtNcwaEK`fRK_#(oPEw+ua@UL01aISIOJb)gUrVG zYyBo3hbl-W<}gDO8%-jzpsij!dx9nRCxb+If6(c8fC%vgD~GV4cNvn8D6)A8D{ND6 zpE{ii>S6eaOaqU6O`i6^dwO&4?(EI30pWncOVe}K@;~amqd`eY*JVDMGmuhg7#~G= zu|a#?BJHIHsi}0($J{iGxN%x1;d$1z_TZd`rda0buHnnx2xCj1jG~vE2L_Kzc5sju zdoEDZqU&AfEJpT#oCJs9n^(-8(nIG9BCrn0B2v`bp5jQl(Bvg&V$gC;c$l_+8r98$ z*>RGJTM8ONKS0olfswPC90$A?Jq$}DV>&M*wMcij+=?Oo*AGtI*iDmVfW=FPN8k?K z7Tva1=6=2^+wNYqZ7F`vZSb7d+{RbwpkzS#Fq{7!NyFv*kS&NI21yWq4`x-pl!{G8 zCL7dwt+!AEW!T+#!z%VTdU++}m}otLQB@QSW*&>nsWsKZvAkn~|K}(vLZeyFU)&>- zcLA;JuP4lIH7Egyw}xp9^4jAd#0<=1f9BZB4-=yM7WN1H%e&va*{^}k@rG+o4qVgn z<FLB|vl8D{s47d?l(ycyQI`61g(V=lYJ1GuJT*>LX<0KJp( z|DVSB=VD(&rK>3*08EV#nyAARfid_)J>)jA1mfrV+%a+j!uay7yW_I_!_eElZxR7q zV4bJ9w(?jalOtWE&eeV!Q8p}POrsuQXDPtIcn}mA1?-wXhLM^)Dm{DO%^x}e@&4up z7v@9-+^|i`xIlyr)5kS8VALx(A*aZ!G>I(jv-0GrXGp*A>A2#m2KW<^apH{h0vepZ)H&7wo`sKI4N165a`qo^JX zABaG8wM{Z#*{RUh&hN@UF#KEc8I5IQlWCY~@%$L%m=VxKSjq~{kIWBkb^eUXzACjmKR|~Z zV_B2jFy9x!lF8INLAVOsN>|dT@+!vBPH!Wc{SEtRr2h@;uagH(+y6tiDUzjsW{C3p zjJxU@fC3HH*z!6tp?UBDN#30}a4psmmay}J6y0aT!q!r8tB zPdIBYys9Gnpnt+cJ95PDYNsaLsY?Bux-7H3g%seE;x>Rx7Vd0|04pBG;Z__hLO zQ$Ih&KLsz2(#uT{@&3dclsEPBHS@hG25Fi?UwJl$d^E+Iz+pHLOtK=_|fB6XNO+1T^2T^Fr`UKHTgonlE*ZeI#kf(25BFyQx1zenM=_C zaBFjzen|r=gLG^AAU`18^On);u}rYeQQcfbz&0oEF=5Rz8L z3trePyvV+JoNTr8Cbu3V?@44AL1arzk&0E-S>-8=3ZZbSg;^wAvyIlEIsf3AWMfa@ z(h1W34O9R?S?C1XiH+jXs0W@YAB#WCkRkRgHNB0atO`@o`(1#u2to*j687RdcB>|-~*(K4^L&SlV^YWga#fSywX+q zYvl*sSl0v#l;?80j%?$a&WRQlT=T!!LA*45wM)R5>;}ZS5HPEw%1a{WfG#kG2Xhl< zIOfY73CJcf{y1~Jz7SzQ!yjgM7YGA%HOv)!mkHh`K%&uJ42fxmax{YddX)@U5I$x0 zW{{lry9wn*o`Dx1#!N)usAlD^j2L+}yaWshWVsD6wdmAjU)_x{Y{oY}xo)=%bnqFN;;e$@Tv8sbd(|xhdO~P$= zO50>|{AC$e}0Qs8bTII{Av7R*L?fCjsRo0XDJvSt}~;7eOa2IcYCfT+CoX@&%h?ZFV=*VCaj?- zVA&!Y)iJvr2Tn`Z9h@&accp?p0MdHu0WSwrLb$dB_A0Xcf%M_ps{vt&p6{-yC2x3c z>a;X^a>fFYC;e35h6s>YSHsR7GPxTw9gI`J`%OTIe(08Wb}V`Y9b4zwoeL>N)8qtPUaRxIZWuh5nn;@oabn4=yP zwlX#4KlW57G$Q)&@QzG%&Lqy7SFc~RoO%%iK%zaQtGb8WURy-zc>Z8!+m|I&K^62V zN%RYE;eph{jZfZQ-;;*T55)&_U47aKK$qfF#p25tJ<35jyX&9}vQ`QH7pExM=lG1+ zkdTt5mBwo{#UPS-9~cc&g-E1!*n>kZ3krA{db zmEN;_sokHkwj2Zv$IU-5GMcgydd1YBIDcgZ^(p!^4|x%-?RHeL~E9<#Y?Iy2bTQTaxlEX;Br$n5l?3$t#;@`inw zWs%uy* z)x#kvh;W|pF)#0ntt#l7r1=vwJ!n61T+QW04Cv7i*k5KfF_&id3xJ?n&Vj5J!ET<# zd`418Igoii%;C{?o6z_z3u;H)TV1dkdx2T=i*E_a!g7h9W3tOO%GK|;XV@G5Zu#YX z_I2UO(0dXONy-paM#5HgnF66xB$``RQkO=#WrD`63NKQX3SnU2Aan3&BfbE~6RRkj z2u(;r^`Ewvy#}{aS}yz5D7Ug62?=wZ!eJ9-?w>5ChTb00G$xNqSJP$FarZ`T5?3-p zD^}B=yd_y1lAtHK7@S8}UfbI?+q>O;+{^49jG7xCtdXH+<*AY?fdYC!G1ilFgw{kQ z;}B+|TLFxp1t*^vCFQZNT)&cPvmzrfNO{}1A?F0NIEQhC1>Kh)q%mj3nY3vMrUWqU z6QitbMgPG z54FJFO2ZyzlEmyY5t<5d7un>|drmaSUb+(FUYF0mZ{a3-8IOTQ;GWox(itmyI42kt zzeM+t8XVoBM1K%q$?z{+U5SWG?WFVmV$F#HinO;Pxy)SBc}>sqUb)(-{ftuei>{;J z#lR?XJ@P3x4jgpb_y{!pb7h|0*(HmgK+VRWrq{Xv1*8 z{u;Vr1lwr_ucXX2iW9wy(URLStA8{_Z=a{&`bu!xFs3#LN$)yta2SyedQ6mtkFUbs zn5Uh#nB%k=CcOXvsrU+ zNrPC=rXH>C=9=RmK#7ktRq?V?r8~b&Q^z!8U}qquHYx4M$g(IFZOj@n@f7m@z_oCd z7J=7rp*7*ui8|my%ZK zg%WFdwrQ9Ty*3C_X}{Fc5AejB*)J(=RO#0%xmJDUyAWm1L2C@l!=}MXwGFw*n;$!5jO_iI};+cMJH~I-&SU~IEdOw6vF7nbUvNe~pWCmk_*@M9h4a3QN zE5*m#)G6Z5?zVUY;7)5gQLi88gVH^vNmyt;z98UcbpI~2rO<0(!J^%dHX2JMN?i*` z&)@U{j=+9l7z?p9>K;j5U3)GTWS?;>&Jl~$zbaY$nNrekU|2#|IPSNN3O=cq~~WZ5r~;Pb*-IK<9tNr3je-BYf>Om zgO}hH%GW_eMB25ei-6%WAkIT6p&pYRrl$oKPUUSDe}yHx3+b85%!a;C-e45^4$}Ju z-bQcDZIYvs?4TFuiY11F00kv4Ti)pp7f!Xk+-j9~%a;pH7o&oCS&+R0D-2k+)+ zeq(vHqe(xh^c-Y*sg=mmdK4F{=0hjIrFrTk7A9nAvU!sqq_&RO9r~;+KChJAo@6!E zB9O8xC95CXIWEt%E!fEgMJSl#oo&c0+ZPqGMDHy#6HoYAf7{Mdc{4pJydt>G7+>eM zmM@?@c3PP!Nz4jvRueFq@8Ms@c7u=14 z-PJ+ihS;%XA-#KBbVm^vymC8al6Tn-1(C{gI$jOM!EO=-tY=+yJ)^MY%#OoG$t(X~ z_HVu4X-`liSlr6}Z+`u^=W)Op(ym)k@w@Zr`A)drePr&;9ABYx52NTk0lJ9Ayb<(OtK>S5~Xe_9;ha7Q#i%7<>xNp0blKYhC35jl2J zvRF0oq0w&=Vk7%7pFyruAGS%YBQ1OX^7pZAD0b};QZ{{frNz)B^q7)Q^yaujfLH-| ziR~s6;daeou-PPUIW@Y+$x0jGqD4dG9Rf2CnzXA^*_Ld9WM+4R-u4g5M*i>d90l92 zmb~Bv-)aC*ZYC_ZW<`EE;?=hLnO;%BoG0=A>1xP{jFv53XJiWj%eS|cgVr3tGqLP% zT3D<<+R!cWO{Hey%W!k>pBUiNr97D?c@gA9ZBirE4rE%l>R81W$%mCKLa^t(gVKv( z|KuyMJTu2HA)`06?ub#plQjyXKx1E5QSTABTlPTT_2eY2om#k*J4_)UG`k0SOCQ#fKeMIU67RUfYv=5~w#>}BR(7b^WNQ_$1=Ek2zAkFrN z({f(E@_e;lc;ZApsU`Op`NK``2~-OU0NLy_8|1#LLOF;e0j&>RN2|L)(a z7|Men(99$|V{7!$BVIF6`$=caKC2qoQFxOlOe-R9fdO&V&j;ADy)UR@Z=VYQKJk_Yf1&6B#-JCME6B7me!CPZw03hyk{(}at714aF(!2(<>f$!Bti6E= z>U;#;Y^N~T=Zj{+oX&zGzsACTE;?!QwN)iG0ef@Dgo!y7xoK$O?zdR}kAfIL7^8GT zW&8zmt>Gv;uF9*zPACL3$)lar@J_zlw7*)B%&P6~68-8zrlq4L{hmvxm90g<#}eI9 z)50iKZJ4pq_wvs==7yUZ$HFg#V&kUv?A^oPt4RO`aTHyH#njRZ<_ahfRyKdhrKP-P zRDW)ibnXuOQm$79+T4yM{!7&7c<%%0s}s544*#v7=Zw%XjsIq>wJ+grQ`-|;KKmrz z?n3vJWf)d^Ny29M6#jj`f=MKc9T}+n3(4zixTOixR(~Wj2O>O-2VpNG_0hfaWj8$0 zPu17`n=6&)rWa3~3}&@r{+23_Ot^I=Vw99$nmn>hd%9#HSt^>QxD1x!`io+K&fUO# zmN_T#O2HYTqqv zhra9Ws+G8~#rO#EayG4kLUT8BEj_`DckXbif>j|~j-~ejWZK4tAs{6?ETH`C*bdRc zIrUfA-MuMFZ)5Bfox!qo|Lm2d4tM|`3%xbu&ehtE4^iBz^XOU*TMb+(!a=msAjCrU z=Vb6z0A`u;48A%q)xt6Py{&`^`Q2olUwW-e(Yw1PpFM6@&lH|Gs+J2yNR`qj_*lc0 zfF`>uB1W2#z@3;2akDlhAY%O0K!h4(G+Zq^qA+53%oeJV2c}}2GWTZap~CF+p)X_Z zOHqMcE%SvsL_`tnWc3+AcVh>|Y{hR(^ENpwf!ohas^`nNgy`(j{g)pE=1(>mLn z+vp{&x(?u!(52qWjmj=r6eYf_*Fpo3CcLa}fk;ie`3VoI9JO@Cg67^zKru#BI8~5@d#>=yxhY+W$L~jM7GAph^DieWQo}Z&1@~z zs>0?;5X*R%GWJhCs9*C;XNg8ut~kQWVU>38LIrxGy=!Utb(ZMrMmgyA)>c+S8rh49{j2Q8M0|J9`m|o{SIO`+4U6t-!UWG_s=Ui} zNts$0YBkc~+2I%I+3wejysdP7`Rm`9=+e1Yb_nH32f(;60Et6mT%fo|%c+>Sddh zh_FXA;B167{!|`bqpsiQ$@WgKId$H%Bl$8*MeV;Pa>B>J!Bc^!!%%B~YOHa$MCWR4 z<5bIu{=eg?3@j;+GAzTw=U=HVAPc$+wmYcnGFIeuIkJZA>IPiiQsVIaTi8MD7>a|3ga@S^En}iNUj9eXk=X&f8 zLQE|jMA<;cu2D_B{Rt*(jntY)Kp?79Su_x3HIlSn`2K=5{GTtCLiQA&d{?Q^W9#U( zW(nIfm!q!ymN~A25%RwP;=^&QUX>I|y0|}Noy8m!L>xR_y^FV>Y8E3-w~`SKEI)4g z;qjLsizUM965q{OWI!D%nvo9v_dafvd+AbRjdN$CAj@#gOEtrbM~k-(3yo8S%n!ddRJ}_woBZqF?O~6N&K&GJ*ijIXoF3-OU@szyP&4@oi@&{>&5$ z*tI2o5h#e!z)VHmuEH{aDl2zV@3smzIr*bNv4>tNZ#=${oC2rZ09=C_o3y>O8NMLq zs=aoYOmn}HHbZ^Xe`)7-MwyDhE>}8M_uu_Dz zAJY$)@63UbHHZL0rhR~aSfpfuv*o&Aya|_khhxIxZRX3*lrex~xpn1>Wp*X2EK3wZ{|b1+ zNQ3X+<$8%K>HeY3lA~Iz`3>Fum8tD}Be$Evc4fEw_bmV!Nst6GzwHJdp>SwpX-gWF zXEUH3{f48MaPN`7<6LIs)@3{L_O09&iAZE(ZBMXluYJZ^#F2p}UXV&uQnX(I0;-?F#wnB5z7s|efsps@#{kQU1kXRIBOd_vw%@tC;srBAhyC5aI#QbvNmrch2GY^ zpY41|Y7A_<7JF-0p5{pUxgeDLWib z{t8J6#Auqw0X}+p)r4Nq*sKHqgw&OEpb--i6QVkD~ zYfuAxP;ap<-_I`+sm2QM0b#)>5;>=^__SAeENa-REoR zC@_0t`b4~WDR&cpm{u!tJ`)Yl4@#E22-P#y@v_3%yz1Jf8Y%&J>Q*m+!U3?Tjg#~q zAcqXi@j}#VK`s0>m9A7e(~U(56N~c_SvIyfXe^{U%D4F}%|>2`ns7y)mtVqqjK65o z3UxFV>$M+DY-2nplBa|XTc^&;wM!|gk}_sW zVQ7~@qNzoimng~eJ&A3^R~E;2o|n;%7AiwbK&Jcnl9ly_#sk9+K?|gvi_n!~re|m9 z_8k>ha)b$XTPmCZ!c4ao@vpapG__xIug#~bnMoM3sKxdmzYkfzlBbY9sW&ExAVoky zM{?tbofUYp;YL4|N6!${A)b(=bK8F=B_3h!Wa?J9SO6J`IS!@+5J-1fX(?lG_{80d zY$8+;E10o^8cdw#c%9_a4|+eV7xdXDJ;LI|gbp3g|2CAs@pr2}?$E@b{7d+!&&}1G zC+@Emw6bh0GL7$P_eQZ|P4@|R!qOtsjmft|Lio>(K&0!QQ8wU;@x??N?M8QE=$GPA zr@OzNObzxOwOq+Ip7)ilDPcz_RsV3F{ZEtdy;bi>v=M9jDx8gS(YtP%?tCr0w>f?g z&_DpysL+}tyQY0Dm*g{tQ=wxXqMX#H=epGAo^^mhxE@lJRyQrmYurg| zXxO4&G0H_QU8Cmtk}*v0HdFnJFxBv~ih2%>o&jLHO=+jzoV0*tclathWkp{cl|L60 zbA0@%{9-l2sw>Tcjy+F}Wg0mspAg-rCY}TAY@A|bLlxJ{Cm=S9(*d9X0i49j#ALnA zbpY-W0tEvclZfeD71b_>m*y&s&jlm_#dO~+LFC*7YT0M-;+F@EoTUG3Le18-g+K=} zj1?Md<9da3P+lBO>e{XjO`{)oygA#d8)VaAjRZR_^{G8$ex=(e#{#wt^+rvWLbF&g zvCrVy!q?B6{a;mQ!ZbLL9M`a(W!IBo?Zc}fXBVNNj0DKo=}{=Py+#>cy{K_c%rxH{ z`dha0W1CviFo;qrYbhYj&s(x8w2Hj@dq$@7$S@!ggHN(#S&FrSC(t?)rGe(-C9*o8 zszru{&}Rw6=*Q~)oRQE32dIhg2GxG?u)h4hU~JiABI5f@oLp)?VRVn1cS|)yb@$Fv z(X4aGSd=Y-J?Gsyj-P0pK1PNHuFoJzgZic*f_?bYxi9_}g;Q69JMOutpddkXz72?t zsSICbx3Bzl7d1I7A}P`!pbeDvg2W6Q+W!4t|x@3aCZs}eP>(|^ER`8Tn zh$PZnDb(ASauxo2JQ6!ECd8~M!T~ZO%N;6$5Uvd#o;+9WX&+4Tg}a%xh}6_j5+CB5 z_O;eVPe#bCD(BCK3X`bkWd-5`j%qpt$7u45PgwIRZQ#Ex5!X@qiR6u1YPZ)uJ#Dqi zv7;p3)Z$GD`Pl;U9VifX?JQv$z7nx;pFj@QRyo#kgw1)3JF3T1j7t~d>XsXAQ&_hm zcKmac`mo+JA`o>7SAY7We0fAjvKO2sH{018NoX#@C0avIiE9uZ7H&l(%Km0 z(}|`y5Ji>(zD} zkr$XNYfU9a9&@x$7pndpKp2sd@zK)~n6FQ|KVXy_W}7RcG>Hw|4rPj5Q_mmzWt zz{-Bcx>Or7W;R;NaX*W2kK<80I$3*rjdDw!-jwB^#Hy4%O}}l%C?#qG-tEFoN3Tq! zN2RNjkISMwF(bRlFQ!__rXHo76FYo$ml9~ou$+Nf!}*IOS{2a%Ab0SUu7#3h@&J`yWof9PWr z9OdCml`-|8`-3~v!6qc(3t{E(MuJPGsEC(A)}!+YcLn>xE7A$dTaviPhFpA%l`HF9 zcLW|=?;)ob&!OJ+3^#t2VOmt}yN@mF>NDRAqe)Oa_4`e|``F>7Jw%MN$teXseDj78 zCcmPjh-v3#+Kh6c*q-$XERk7ibp`84otZyuT0-X`n6b>3JfzPRcHW_kod!`bVDnbk zjFQy2bFqk@pl$kd?1eXwlP?gm*U}xVAhOUz_K?Y`V_RRXVW4;&?wR)L59(~wB;}*r zZ$+C+z!V}>03=@oWTo^G69X)X!NfBS&a>el7K=IWlHrSm6#^9%Pnf8`M->#E5qt1Q zX3c&amV9_L{=xOeR)>Iv=f6mbizA6m0Eq@ol523A3uNZ`FxMGcIRCY&oCC>0H6jvh z3+beoqO~VvcwlI}fyE)}khU5ude2U;`u>tn8X#-DYHzZHnpGwDc;!Lb8Kxp*gu|EI zfolL)e-d2gr5sK0kWWOTwYT3Qzi426(Q%Q)Z0nvf!Z3sk==zXc@?+_tH(#q}`P?L5 z0n=+9FIUY0+_&tiC?bh4-H+c5QwXV9=WkASCf}pweO3GnUn4OrB2kvHd^scx0}EHE zD7Mv{d|vRJu36bNe=m}V;iBWFeSVo1Vw|-JZAx#OrPf^Zxer6Db}Y{eBY*)EfWlG) zXQ-e?`@uy*mAW;}V#nW5U`6E7<)xoUZw0ly8 z=9dT(LmypI13pe({ViT-V@cyvIYMz|&=EU(S6HX1*wH(I1jOp07Q)!wn@>VoS|CRs z#uBWWn;jG6FRWichB1pq%t^vgRpKL)mQ_ZC{5xBXBVUI?8hL}z%1^AJE=CRQkyyLY zwV-x;)5jGytXyN`4_W_ryij7#>Ct~+!=BI>3!LZ6TXdz2=)(<*l6br%<_5R&NqKRS zuq0nk>&r##{UboOE$9sZ92EdAxnGeeePDQU-w%qPdB6#d1`f=dS4;=2HxE|gj(Tl~ zbOk3wk^Hbd+<;>-oALKhzshgWPjngxpoB0SkFqPH{yQLYJq&whANaM+E(>V?$l0|} z(q=_pFlCqJvEMObn#ggEmfSC5B^O*44@u2uT&l%hDZJTfd7{-K-5caERN~`LB3zNV zBSj6iPq|!qv#i{1oDU;|O%uq{Ik`SMJN$MK=w@sln#C0UF3Y(0af#m%rzevje1VEI#%1Nd=W1;LngxlI$O{hUAJRXfmF#!KR0Kn#< z2;#>b*mpg=6O*f)LFig2E_MI+YTy|caJ-|v($BvQBqj;wz}Wg;XWPDOt32^b*Cf{T z;i5P{DH2^_OOq~=03-1~%4Bro4WF*bGCC3pheM+PE}G~+y(K02X5bD^>95fYLkysK z?r5{-(v@BmYSrY80nlF#6{(i{MC*(hme-lM{4XI|Al!+~zQ!Yzq_J7l^SJig@^@*XS>W@^L5I&tJUrII3kAc2r|C9LbgpDInk^Z|&=ywT zAX8&f$9QV2K?7LZedD;YX8Cw=v`1wUQdSALYlRrVD?J0YemfzMAvw)W{+k;XwSc~o z*JwaYe{0GH&s#1GXa==cTPD;zOV8BV?oxFVN?v2nkvutlSOq(w57TV|2ZyCb(Vr!J@ud3Jq?k+y|xdW)Cl_7cT z`Q71zS^&48oG}!`wbD8<5jc{a&JYz=>F$b#H2itj{kxFllZWS0x(Tr0$OC_D%JX>j zUCwA^g!~JES$m<)##Tv!m(Xp@>7eroIJmLVd7k`@gE9hP2KMHlqO;1pF*LC)cJATn zZ%_sP$Pf|VN3lD4RrZj->}7Ns%Y(w`10W&oW0PFMN^Ycyp3p$~z=GXVFBzxnW=eu@ z;(g{r@5B~wBHpEQi&jpmp?PO;fIwYs{5`gJ-jAX_koV_N=svNj(iLjDqSD!-4)W%c zqekIgmzt3WIy44jO&5;1eH)foBH;|cd}u?J#q~5Jd(1xJ=o+?aF8?OiZ2+whCnfv| zS~l%eQWX1Vu z3h42cX!krb&ibrXzSUnCz4mxpd+I9g<0zjusg;AOSr&xli=t+!s?eS0FD;U-0TQw% z4rXU7^q^A<* z{uGJ98E$$2H{U%n2PJ!=Zv)H3>MQo2^}$kEDWkz0E!N)X=b!JgF#70H@O(JazY9~zVvX+M z*uImP6&NEu{H#+JLG!Hoe)?jE7j3d!=fE6B8|p_GWD34P#u5eIRS=qS9vuxU-WEs4*AK8sE$;F{-1vpHa>hbFpf2*b zf@R*6TQXu3f+7z*NqV~(xB30lMt9b7nBO#|T(D_x`i4G+zQ<#4E}B4C<#MM8*CI)< z?@bo=0y)8O?+Gr5I=&GRXlH_DmAX&;oLFAn-!*^1xP?`J!(q9uT&)b!>a|<`#sw;6 zDWkrQ<^>MB&c~uj+VO8`wEM>vsL1*71-Vj~JMyxhh0%5&>;%9 zUPp(osHv3ZcwLkm#x@29bMa(fUZQ7=wWWq?aH5I{A~Niy2M3q9CVa?{F%{3mkG{!! zd=azwxazpAgPQKw2>T>_m*}Le!2#f(#deYKwCCUT<06X9IGk*W!>*E$1g2w`Va4$` z6b2FK97~`FhM}CUKTjhXY*XQoJLq;>Y+6ObfHB_<^t-M1ZZ%6CbqEjO;6!}LNoLt>RBE+3hZE8kQy#Dsa}#&1~1`BG%>PS2!Imj zSzqw}q&lXXkWT3}b2Tfd^!S-HW3fOlr}7$@2_)CEHoSgzq5_#xZz^|UAj@YqtQVJC zOZs%dX!vzn!;)OSiZ~*kG0;!z`AyVd*Qq|&DE#lF0Hd*=8Jmr1WXLjdLyB+1Jif`1 zMP2q~qx@etW_m^!t02F2W(9Taw9J+T>5&}^LgG7X+L z6IVp$pyV$O3yJC77C$D5X*h^0Gfk%a-5NG$U*9QwE4oY!Z)RY| zvF2djsvx_W>PBYJ+R7V{-&Ru_nsIgoX}fWu9z(V@G-na9D8_3jpn+Ty$YaJ1^OMdl}| z6(ip$XK$&;Y17E=X!Jj+t{S2>yUE+g?BbEIN!TV7j$*DXD9WBBxd2L1`r-GxifqBk z#+%j`T#FbE-oMJQ&$1|e5n~@fRdGdt{dg8q2oqbodyG9cMYL^adt9@xmtc~=X7C~K z2X0@86%cb7gd9^KZF|l=7_QI%0K!-i6zu;QYZ6Vww z7jcqfo>j1GgO`OTdDIS$r!C7M)Nhpafhx|ye$tUP5tVDeDWM4O67P|B zTt{P1)x|__y97PW+}EXNshT6U2Ak}(*$#+_~!rQtQi&`3VedS_I?7Nah-9> zN-G;f$AYgK%qI)=pFuoCeIckUG3g=p1byrfquTzz>1^w8k|mq6+@0OIn83B|r%k)q zaKs7%f8FYy55Tf)V{sH0sCCx+2P8<)+E|AFMK z$#zqGKlQL{fMs~h>6G+3OcHbpE-N-npLelL7J}9;n&o*ks7d>X%nAv@6~W^EmnC``y~^P6ylxAjcf% zDCQZrz_X>V;LS#47D@_m>W$<#90X{de3$?5>P~rn)-IbsgI3C zp;Tn;$@v^6FOWQc<$NXJ!XU}T+J`wC2=p39THFrW?=TJ~ zk!sA91S0kGo{(4RLnlMmex5<+9o^D}Crih|e9DePW*r2tA5s0(z+CB4wu10*erz3v zI>%`JPk#dcUr6c!iH7#uGzc(@pm(JOk0h8%QN&cF{^VAN7>7E4-aCh{pt8=f-a=vd zO@iWD@8LT@&9}>mAn|m~MzG9%vc5IPB#4#>0OQ!6k3G#{nC&j*)(>&j(Z|aG;eLM9 zK`Bno;wx#%u*>UYwtwblD^+$e%?n?y!*s$3xc3WeIgAD#Rn*Fv2`2iE#sWNNj#PVo zQXyX6eVqw5nFIP)JlFT}+&3N3V9HQeAlX=DmTqopnYpSe^G-pAeavK6_P9x?$C3O~ z8XBJTghZYN+6qzkhTU67G8N_#R&)KFAAw-!XQ1U}3Z7g!-$W%D!)(8U%%Fkbe#o{? z4>RV%9|9~Lkd;-}tl9^;tn~fo#<+d#ZjMyiG1_91JGJPFa5)9?-A5erQ7pTQbw6i} z@K7PlV*Jt(8|7ZIl|XDpjM$f`xiyb`Joz+Cx{K4q;!s$Pbj9gNU2lQ$7J4opQxZJ6 zKWXk<;aadDFIuN*@klOzB%}E%QWdH>dKkMH)rKzys_JO3bPivy?eM$l`Q$36y2O7O zGm>#QCyjYHWluL{M44og2IUY~&W~}k0`ma-6E%3;JsLfS=*(!ebMMX6SSj`>>s43FvqoiDluj)Lb9zH+T>L zH0yc!DE5~YG&7_Cs}Po@P)pf)Br&NJg#6FYVXC~v=6xyX+Ll%H9x>xMZY|ZMLx;zj zF^+jhp#i@Vp2|hxj8GyYqsg051$ic+$`}SM(mydj?|MU~$X^CeeG8BX(LGDKL^;e7 zIUu)0kH^FHy6Gg85zfN>#(7tM4Is`sErKQyP0L^A+7Z(>N)u(0=PA^!0?+$%7fsDy z|616}B>;&n6M8q#>yG#kStrMv=PDeOJRhRgMtOGcFcyy_(0IWFyCu!Z&SCoW>tItu zp3Eh!|{p&BDt_Kml1mH2I6CRKTOET!q+2nx=c>abNF zmCa%)>n!zf1!g-^xvys)l+r4F?NQ}qtEfoQCoR5QBqwd!=mj5;? zL%sxtjspM!cITDS@3^^j5|l@pRv&{1ge?jt{3o zx5gzWXDGk<#Vb}jf`9t-B_>7_#d?Fz=1psr-Xu2c@Y;zQcKepAqt~-%m?&2}%O3RM z-zG^+i4jesf^HWow|?m)fGV6nRTpxC_bJ!pYJrzGZ1+((41JPff0VE=+vi9+=|JU^MyvSlQy_7^76b zh_w2cv1jvkwkK7}f4#71vP1AYPpBGFLjd&gC);6IFXB6q!2+8UpK0AqKiOlP+(^Nq zw{Z)Wx5-&~YPxP(2iqX6(8mf@*1&nn2fo7l8_-=FNl)S4%B8d&uY9n3vh6Y6-^Wb8 z;gY1VV8ZY##6rex(uflqgNGR9aaWaVb%1wd_MsjmZP2Ri-J;2XT%||G^yMV|YOxC? zuV9ytzUyoqd`)4~TY3jzAvRW*Lu?;MiA!;*=LiyzDIzl6bV2>}2{=dk zk9BWFOEq3tjUwR@zDzkq*($ac8IJ@klYIVS8mk)RF?_9LdKD~i$(in2V+_gyT*!Ja za`2|eifD7X*MC~|0wDm*3UJ>Bu(v>pWP3ZBVDS^>ybx^<$&skcbA#wKoHC;E);NED|ig!~-x-`ITOWdkvJHwKFr_Z2Bj?Xob?C zc-OqF44aSMV#<{4F)cMD!BJ>SaVL_c(+}L(tFC1|dFS*B=qAU09+owZoAtGT96GH!2KZX>*Ik&?f}Ir6yBIb0hUZ`X0g_yO&1pkgjIsL zyu*G%KYWav=+0$Pi%&50Dr`ekJwQTX577qG`_D&t0;>{5y8jDFCwHyf!~SvWv%;tM(}1@!+C-2O$jES!U6ba;=-sgU;OfxPABhQHQwt zGs`td^v&s`83oTYiqN98oSNdffZZZO?6}k&(b_jg%OM*NHCS3MD)T)Py>iX1BF`9i zPQFfs2&mm3;4%x&o%iLfe%3d%D+Co^GRVbKN3>FMH^!@ihR;)f>eu4~O3zeTt{zwb z3QkZS`V1^JXcKOkySuq6^0KqsSVO zSdQStsTEBUjAzM4a+dofATyi~x(`wL_>%zV*3DtKH4S>@_h*Yf4mQ`@X$yAs0Q77R zv@DSw1!o@G&kpYTQYw6WQE>_e_4Tj|8TfiAhF)1?X+V}J zm^6(s%Uf&$0o;<^<3Lj!@S<7uh6R8WALvSo-wkIrUVauzI?IvBM5DViK=coTU7Rt7 z=kE58586)HPdg$LgyseufWNnhQT$kDXZD}#w*vVg_UeYDC&v?4$b@Uh@})@+oi|E@Z5 zzPXKw2A;h%K@3AhaIml=IuQ3O)BD>Q9(BvvtKtbqZ2Sp7o0yeZi5eQ&1_~@HIDYrc zqQ#{9o5xf6_hJE`g{DSdoh=?14zL#8IrRc$VqRk>_WuE}pIvc^Q;8W*jOzf5lgw6? z;JV>$)}=##RYKYxgL@FPtJ*}h?-Vb=5#D6iEi9~o9G7=Y{=T*ZK;Yek^Bc>E2-#Um z)M%Z(8<7T_>hvkl(b@k=WNYwitK%z>fi|pwPxAKFdk8&fxgT;PqMtWr;o*#hv*0ug z%vZbu#?$$)ua6M^xCHD$?6V#hszFJdPDLIdfQQ_`Uoj_Ppx|KD<^_FFxE>m-Q_Zr1 z8CD4?uOPGo6k`iLOY) zzBPFDEaw@fNzjGoahR#2p=cP2^vaiPqcJFGtK)aE zxYPL-T28ZymTrv_aI41AlE5Z}^qhl+NeV1-Y7DqXOgc@qHCA?$Q*<6O3_W7&0Oj&F1tSOj+? zk)R%A6y4Y^614ZsFTEhG?oV|(Q|+(h&pZF|sM35|hPL}vh@$E%f~sXM7i|Q57NJ52 zkFT#fLR&*a2^Rvedia+lExNJ0m~?#gp-#p?L2TA7g0X^io}>xVIyLIUR1Y>|V3eA& zCIFr}VNc)59C;Ht3FV=|pHmyLb7qS=@QI4(s84$p?qULG%0o^Z(ekPag$c^J_}v zI#5wzsGE`)z^X;C_nE6ZCFv+-%^x_AWFAquV7H7y-PfS%`o)$joF<2gfVuj`$0^^N zoAs}02G#gI7{Tv3`AnyVXAlI-&b}){9!+uC%uuqbbDqI}f$lN> zK`*8R0NkN8L&pGVAO|*z%r|DeI_` zkeox>2(6s;lkx{9-WevN?@HAFY06!^Rk&ro1v7HGmgXx84t9xHlM9Os&?T^lBZw&Bo zbxPD2g5+D<$KHd1QJZ@ETyD!XD|8e?CE+02H0FbYefwnlevX#ZXK&yed3Lx)-c*B)yVA!#R^id^2SG9jVo3 z@s?gltVDW4*VgGfZ=TIU^xJMty9nrILDpe#qg)KcJ8LxqfRzi_-CR*+gQ)%HVxuIg$zZ?Ot*0L(RG+tHDoh6Nsa-2+ zkL>nUTe-619LyEeR@7|10m&~}$!rgsn8hrtdsczRy1qGsY5Wr^XHXz7#XT*fMQuIW zIAdyo{82mFoG+dB6;ii(=2w9hK#9or`dC%j zP9JSP%13U2fH-768wphdz2yB%bD+t$6bKyl{;tqC+-p%EZMg#K&5GYuN*1fNut0Q;y!mW>6Couj-rozVyUDXx zgf*#59IX87#%4w=*uowsw|TGJYmc|#PUlUmpIv_+NVvYgE5Oos{<@l`HND-4IUcuZ#|CTB!EXZ z%03kAll54L18c1hLlqf}14^f%-ps~$ zBRX{MjF6Sn9vnK(WhhC9qI`DV=ocn=Kul%um<5|?CT-ir6-{GbGN)&@Y|ppMNyo)B zc!xp{f{U^XS&$8wasPd^yM#K5uO1Ii&GNCxikpo~!IzM2Hx0f7c75h8z|Qw5}Lf7K}5aliV*&GP6a`r4<-JCRh?j zn|LSJpe$UfjFSDE0;nK%b%st+PcWxA$t;0f{eoWcW!k?`S_ zZ5()7&HaAjbM8N}Prn%x1wB~|ntZR{qcSwTxYKo=ABHrNHNgR5K2( zA!&?nq-697IqbWqU)8w;?xr4bCGX{#rS)J|)3gsY4!T$((RU{|<8o(D%!Lt>>pd7q zhEnMk?xWk*6w{8Bus+SVAMG3-`S=K=%yUfojR^-!TAXC}zA!nl^YzRYk{b+as6=a^ z9kQ1&8KFd54u8Ktlp9;-Ljq`Prcc_Yp;i_uLs?Gob!9~kU-jHO@i%i6_1Xm4hMJUX zL=1=Uj1)Vvzwj8!i{n}Mi9oe7|en)t8k!L?>4nJE`26p&_OTS=&)O8G}uXRa1v(p)&++?mZ9D{@b zM*YPDSyemeWZs^iq!g;EkOG0_+?NG1vh1WqDx6f**z`6lA| zRYZ~qp1Ww0V;P^<&pnli$tEXdnWc+ngHeU8VZstdy#L#S5a$O7Q+CKMe)Qbd zBg7aJQn*dr#-)do5}1pQ5CuY5^l*mK_J3r03m=vrP+ajE9Bic-p;7cS1{SP^z8P%Z zN~G)+wCk+#V2512bn<&$Z?WT;#iZj@Ru|yER~JM22vcSfNzBLD6Vg%jsI=I|Q?Z3a)Vb^QApDaz9|Z-BO#R_JO@?fGM8{Xe0UUwJ#Y-ZT=9 zOM!!)@$p}<#k|VcfBZI^M;UI<#2pGE`d%A0hCB_CsbbMsx-A>HZarL437)Xt=_iJ< zJU#ya04fFYqvOlC=x))i6^%Idw%lQQ@|Egqqh8@wtvK~QSa}`8_5fGC4#G>|rvRxV zl`xdcI$Om0XJKveYn1^9>k@Zjs?4W1ec7^%qzx#!_^G~h+u=TneD=I`V%rbd4&Cd8 z%K+-s*0t9w_RLqbmkJ*e{mXy0Aut)$D*zbsl@r0IPQAY~ur?I569Z4$88Vk`B{z^DeZOh$0iJz6=dm^5d@;I|7pjK`;Qk z0(t>gx|ljfdq13Z-JVS1SOEi*cR-h^pRH==l5^Mt8%iTEJqo*0ZVDf^;Q15XZ%lW9 zy@yrWuFSRw#M0dVhye1`fd{MzJwwANY8qAqaYusVLN z_BoohaK;!fizHg(&_4j~7oGUy(VQDkLA)(A0tO2^bA6xdJIjeD5;zRG3sGm(@tSUtgc$^7_c zb;4Hi-dz}Ad@KknyRK})_dW%+PmqR#s0$aLfjZ)KCq_WI%A2>tc6QsWI_kz<5WTzb z-Id!QRN*(-D`RN*121PX?YW5Vwei`S(j^Q#;Yiycs?!rjOVtu84$xit-nd!GOVl~K zCoZ5z(QDUa;z{sUp$raHzQ17&$R~Z^5Q$x7|5gC))8?tF#71FfcX|>*1?fUu{tMwG zW&FyLv_6TMdvn2??xfUlzrQ&3A);=j{kDDjdqV;}Qe?ZGSgZLdn(A;UqzJcFYx*o! zr>gQ+tbH`coNYdNsxNZ^qkEJAF7*NGJgKzC5!y_hUdT$LgM<5aeGD$Y+|To(+QGf9 z2aud$N!aa-(!HN?#Q<+@)Xi1p!rQcsb$aDUhk1U%_eNhU^T>1=u$y@0htb{TAxF|Y zJg!S++5*noozHxrT~#fGf{_`905AfiTs@{^PQ1jCpn;fI4=UwC{9+Oq8(Y=3ZZPK& zP5U`CxBPh;jHt*7&grvQ}qZT88(0TfT?PiFR<5*9*rf=u?$oxItW~ zsq?e-K$1Ebk9WD=same)`2Q9*`&CDpRJ4L(xOdJ3dd~z5VgA1u(pFC0YNVEDqAM)B zj{Z)3N7%kxmfuNX2t+bQhD~v79I=9&<$)(O;u$oT#o$hl7mQYzeji^Dz^qvx&F{O* zdk=Lx-~}!4@{p3<|FN0B8~3!lmC0V4{liB@vMRG&fu8N>oXt|`3z+X7LKCRt>O$w!-^`u}6f9dVT{knI=+9HZt$ zAN_~&>;?;LMg?f`(EVX$C0QTBdI(TDpl(O*ZF`6te0Isy*ZFQ*eItsE`Nj?j5MJc( zvmr|3O|KHZ!_!nfUol(K=QP^=25Jghugxf|wb>}8oI?PD@H_{N6^!C{mnuc`4!}bX zC?u&DZN`~_iajSffe95-J+|>HGOUlj4X>v@smE}9Cb2OI@HwQCgD%t%6*ELN34|WU z^@~2p{By#eRVlk4h-LNsp9!iy8LFB(ytmc$BgHwR`6HIz6QYlLxUqj6G7ltu3CE?4 zC~dC}FLw5+LXyznNaeG`mk3uaJ z3CIS5oG~4dSyUt|XP+S?fKICG>HNcY-VugC89uEs4y)?1>q2O*$=cGoU4|)!7J{RN zfwvh{6F!JymF-^oS&S;XZ&n|+0uPmuUG4=zRelfi8wF8Rls=*!RbH+b$Vm` zexmB;6smDX0WW>8LuA_0P` z<+SN||8PaSV8|_wAHCie!l0!TjcvmFlI7DqL!kT3KSDQLhJLpsh3vO_)^vZ$$y1|2 zN-Uz+$l5C^xn)wm7;i&nzUUq(AiP6fV({<()*t=_L;1(?2d)mRclvNzSVxnoVyXxRYnk z$AE#%|C+VTrbfbHXOw+x&%YE3Mw~W+)*6n|E;$X#@c0EBy*?u8lC9>~vbA;#6*}eB z@h|b363i|3SYm~xjkVPFX!+H~*HeM^SDr1aF7s@Z{boZmS<&4HIp>*R@E-7|&oeYB z@XQRu0tkOCU0^7bJqz&ekuHdm=46cKo%YfBTR`&2i=Km5d1rEM z!<7lr6|EezCN)lz>mPU@xD9But7)~i1RyetcHVlk6P$BGYby>~dum1mcT|gj(@%+* zsUF0WF%ViVc9M11CaW`GDFKGS{mhvt0;uh#o=_kfBJj>+A?CaeNrc)h!-DLisTXLd zH(FTcj-@cP(O69V6_0*ryhr*51v%jaF9byyF4;L`kT^P3(jS!Ytd%u%$p)=fWj$&M z3#&uIysLG09a_Ozs?cubmzm{p+PC$e#uyLRNMQ6QsmtVR=!k%|w~IH~g}1}>D6m|a zro*)5t2CLDHT~Z2FMcQ>Z@oypBS6X%rXwHArOpu;W!B6IvU>Dy5z*%Beltd*hETUnUCn`UF z0><>onl7f0N*RV5{eRf!=U-hA$up9XRPkH|7aXwcPv|*fd1uj}P1xl94EUs3gVD>A zdQS|MQ2Z@t6EB(&U_m0BtfLDW6+x0eQpi%nY1lbf4uqVkTZ` zX7IYTZ}(G9^f&3#*3a^$^iAC9I%0KNOJ4!vv9+5>W=UMwIOf?eOPW5+HAUqqiuHt0GS7fSH6X=XMmo1&vDC6e8)f%Hl_^{VC+A-36iE=X> zbgpe4r_Z}n0yb4{OAKrIgK14VB+4)!#OKY(cPRe*SxX)%a1T!!ePaQMItal)0?lj$ zI+&7j28ift_7yL8JN5#w^`7D_%Tcd3TZkB=VwnWvz6TMgfP?Md6wGN9J&nBkRD)o+y9&&;lhl zas=B2CO($n|Kj3UI4D~AO4|t0Tu6Krys1%^QX*7nuHe><&i)#I9*NAqgy3k7_xeV< z?A9V5&Wuzjy<+YV5xIrvG%VBgPW@sr8RRafKLCE{5Fg{+Z?a5iNiQdhzW<%Bbh4Br zB-BI0ZbXR)=jFsPvc`fMMr^(v}}X?YiBUtHnZWQk3LMyoo5PH89DwAOMDg467wL7&4Hj^JUrAJl^laRAlp`5P~vI!75vLW^a+(Z zbl2xIoYQ&>pLaxgDk$Zr{K?ulL&RKe7Y~@WR-7@vM15vqa9RhX-IDNrrZM-%n7Dvj zf#9gNEoA6^$W82%lS^YZ70_{l%#9(V{4FAD^!IuWzT&Auh3*Mj?e;Y549+@1A%%WJ zrYb#^*gcLnD`aB}dU9Wok57RS{mJopBrN%Qy0y z-AC6?Yq4+q>n3!SR!zR{G^5X*OV#D7=wXZfz1}%9*tyLI|CY#;54GMZ ztJebVn8_bA3LZ2mr~`QIqN=<}4z?OC=Rga$(k`Cxn}7`RgaCkE&+Ke9HB((nX>+9v z9Cf`~BrPmXKm|#39g9 zQ(?*fk-lkav>6l>utIBn)JLwU>1jq-=xolR!PD4`W{r zmBsK`S~trWenRt-T^t0dCS1W;s+~^>JToCs|1FJ-nG%Kn`+=)=HwkjXW#Cj)nD=co zJcI~IKhM2<-U6@vK}?RC$f{SjEE%aZzyP<5U3=K%*oEfF`rb#!Jyj0*QRHdeR@o(; zmXS*TZQc~2VM;oS{=&F#uh2~9RsV}?-BHxX_I(kVVP&^!1eC|`L7<5s9bw^Tf?fHV z8Aa>wN7ShYJZKE|sZPZ)lnM_M*>oti?g$L!!m=9 z`nfUSdctA1pO)7u3u`#tUcwISlmx7(weA0OdSU7%j3-mUgc(UQfOr4&M)$E0t9{tx1_k74VcxD&Se?Gl&@l?qN z8&NPfTj=DR1lY7S9?t=D*1|)oJD2iV2)vaK8fP|(!-h;_20Hab*DJ;v$PPv(lTy7^ z_rx}<_+Mvevv?CL?E6~o($Y$9XVMh}5b>IVWxtB%#AV$vLH)JUhO(7HlyLLko0<(5^I9z~xBW?hU6_PGLj+N8R=c zocves05|M`m>x&CDzuE-Y@qy)n1G?5K@B*M3Ew}aQpm#wvT?wa|1ivm{TZO)IceUZ z5|Kad66ut+sGI$lllj$iFy);Kp;y_!lUHLT^sZ)tMC(`A9>!-(n`=#fwCt6jKh}4$ z(m*!QK)XG-h1@$f(JKUc&c{ygmw_xIs!DJy#~$OfHxl3<_UL#PN*F2PRh>1Yw=8|G zodb zhRHK-IAV2@Sj!XzB}}SBdi-41IYeP>+oCLrf*v_A8fGx$$>Kg;if*nkT3AB?7@3+j z@N_+pw!9YN+`^c%TESiK-84TT`zbE2X0H6G-$FUQVv{N2P?&5Rg*hd*%|ag4yP*-yan?;`=b0}=V=HoxcUghUd_1pAHD?pO zWYiZLaZ(4WQ}(lyi>)HUPOI&Z%L#)Y;bE_)2D~t}nD+Kw&U( z26zpj)`@|OSM`PSwH8RX__=IYj5&ani;3o3u3Ttn!La-c^o{&N9|lR?wj<6P@6|*` z7W!U8+kU160huMjwM=tGQ^tm#%0{d20WV7b1)hq8A07SoVm(C8P$DCi5Iz-}9>RR; zT+@u3BG=uEKwd;4u({d}`TXGyaOQcztE;kw0rl3%JYl{*7)9JfcAP_WrPPfjWg)`6 zq&u8MerhJX9xYdwb5N94duNb3!Lp}O;z?b7C ze&lkvvj~{DJQc}2yHnlDIUFt!c)WnLlJ)9RbgM$eFq68ZpM|8sg*2{<%>-aZGkZQ~ zkb!r?OT-Z05L)k&-HYII@(eh2Dm}f$Tg9cZ`ojW)Yw1DmEpINdqP47 z(KYY??24_4AC!eu=DRxaXtnJ-mZyToe9J?&GFIdQWU2S5yBsJHZf*)94B&D@yYd=1 z#I&q-R3FGQk;djFqHqM)=A;axz+EM_(wfL--rPR!A{+mzMZLU`cgsVgmWNBn_{*8#`^wjeW{mIXyvMml^w@&q z0cW+X5L;_y?;z|5u1Rmu-8I7usrBrpYbc^{1rwo-+ceslGYac(3Xsw8K3p$1;$s0? z&tcG4M|Oga%5grzfc>>pm|i5m*ze4U;bx_t&6w78_UOo+Gn;QGuy}|3TVE3YWZXHF zQ9h>1g|g4Gf_8E1)R6ET^{@My`=fN2-i1*BJB~Oj>pBrb#{iNjB`M7#r!sQ5sNV^@ z;8G(VdRi3N0?EfpiieMdWEw(0Fa`pEYn&fWCz$z%v6Js!2 z=IKwP2#_+1El53Ve^TdCj}9<=$r^E3fn<)$I>)^lqgkp&!*Jp5RLwQGM2P7W_r7Sbn!G#r&Up;(*Sqyd6sTL%v3M}=-(ZaXE&q1 zzT`dsnlLJLIc=-jC2*Nt{}>kM*^0NR@P&$f1cV@bpv?3g{psXOCz1SM+Ad$*BOe)N zDb|diRWr!Bti5}1Kq-``u4_WyeBJZGNb#p3fYf2B3o6;dqxB)~?eltP0cdKeLa*Oh zr(Q^TS0e6e4}F~H8AcD)JVk1VALhd$NIasIpO@7EhLCbti|J+@uAe%knOx))`pjIGrm(ZUFo64?RYTS z^{^|^v~s_<=}sDT-yHXzt!ij*(;k^`JDSHlUV@>RAsl1?0|K&w?nV4 z>jX-Isv{CT-(6o!hyRjZYMJYwUx)7!O72bjc$1B`fc0BTCgZkGl@~3TtYt5a-LY~me~l_t z2A85JSmwboN7+TIUv-Nta{pVkg>dWWNlr%SoHT_o1{nilE^GCzzx!dCX zu>k)+0Khx}Xo^>J9F2Y)@73(#d0-wgRA*kmLc7?fK9y`B``F4ScS`?E`Lo343axe= z(3Bqr!JU{f=_g`zgwyKEYkG7}^Wnn~JvDO$8J2lwgYYRXGh;a72KL$FmJT1ffLPa$ z$=(Guunx;!Aye#>^vfUdoO^mP3}lPy@ub$6fN_d;h<)jSU(X!yUC{(9a_&$jq^?$e z`^yQdq)eCzQmrg(`y9bT!{-u@_PEf5=9|yULms|}jW;0b*8Axt~n1V7AUpiN=Hido8$+DzA zGM5eW_(7*Ye9#ocNl5~4#l;SOXWvt1mS<`swVNNLmzO z#+|Nf`i^_oyK8Y10k)5CcR~FhYJ>wL@aEBH>I@#AVesHaM$CH4ryDFgDTcU*coDn0($X|R72);CEQ5LH(6uqbZ^~JwoY@s=cb&=#(cOs5oG3V1-J|6L) zIH8c>J>Oe<5F)L;yxC5o=L23eq#|7f<@Lr=f8HUeMPo~@0>D>Rlc5VhQJJMi5duo5 zU84HwI=D}?bpo&vvCK+|pZewouM;3HJgE%N_5j>oY;Sh3BEWxtId=2e`^j+sGM8=?ToqM__Y6zaQ^$xopy!gnLBNoxWdom`Krju z%tPoxM{R->)dCq`vd<5nuG=F|r^>gNBW167uv}p3-4C96U?STS_u{4=HYV(H#rBlc zzSDVlXITAMffryUcrX3bkONh)Y}pfU3MPM_(6Nik48U8H1i zwGGtPNf`3u57;yGQy+k};YCr5)#SPx)Zd(L94`?>EV>mIKD)hKIv08mgWSO1KEZ54 z43E(Wr`e?^1_tV1SCF9wp3WC4^$xr!|>gvlj za|j`wH(SOYEC<=8?=#-#&PsbuCrY8L)J`i7%K_EaVs#x$sR5C>yKa#cim(1`ifz%H z;JEDGZ;u$d9ANz{cWE&=Y4LNqsB^MuDhM(Wv;>^GfixR>dn?2!jktG70JV-~#oPsEN+$K5-S z*d@igv;%lC+2JS;5p8=>Dq^kw;A z{E%N^gCO<)OYi6?YR2H!s2QImNDZer`Yke%CpF`jIot%oJXmKYYCkw z)G=~z{cfuT1y3UdKwEc_6~d$h)iMPee_Po~f_y11C#|b5ez@^`Y+c=PF>H-A<1%uY z-Mw}Ih(^;S{Wg*=7UoFdAvzxMRNfUucJ&LIBpjDcR{$qFLY3C_sNQ)tyl^bAqZDtl z@%5|A3b*l09}Yv!=4@9~cYB1Z;-FPof5Xpbus*sn!NjYs2PHcAI(`Uyy{W|X_joD} zKS`T`fJs-G5k*lid-#Z{dy!-`y7ARwz+orzJiSFRb20zr0;LQ!+J#(HqJ>HrDuRlp zpX!C&P#y*(v;qlL|KH}!brER4wElrvNMA%PV+^XW3&bk|z3}Uc zlFc+5qzhln?kE*wT7SI$j|8PKc6;+(m4|fQvWIruueYC;zLR?vSUs4xqd49Sf$)L81X%lnvP^%)G9n8@}S371DjUEISBhnx7A>?u$Nf9 zJ+M3`OEzpQ)hT&BsGuP_-WcX(T;&?C^F5rTLeAGUr;jF9NwQ5hc1B;`Gn;yTaV zmvat_KvnYiIivNFeu{XXwq5p=4Ck`-WUrEXiw6T)*+pOs1N+X-fkwKipStL)Snh3{ z%x0PsVgU`r8kgq-;QjTW(ye2$G+H?of2CM1hUg-pM+&%rFD7KOm#Ky*Ll6Le$^dsI zhVQ=(+1O`5EBNW2m)UOb`_A_9oe4On>q?DDl9$jn1zqI%gxslhjF?)+Mg z`H1`lww&kK3}EpXnQby>ZI_31wRZ|U@GMiB;+No??DoKolVBgQHuAId;+rpBq}cQq zeUpwbht`UKt7U)H8u95b+48~6IcG~dQO~n!phH<~pVWzwpuJ{F&-&cfTExjy>N6_Z zF|X+jV-2n5~rM`-5)6jr~fXQq_;~Y^6-wQJli$1(X;=1Ku8t$mJRFXIOt*4 z%dsHaHguslmu__;n&#hi#3z@YOkO)Hk3j{_an~p`_t|d(CQ;v|-UGGpwea+c;Gsg- z$^t?r5k@hNE-J?P{cpMh8s;ugX#ki8#ek2Voa@I)iZL=+pet{}I3vWba^e#(MUfD@ z0M3<>_q+OFIB?18p{-Dl{f&W4> zWX!KIOIx;B0I4j4Ef}w%2Sto+`;bVYCnlrIelER>N%` z9tH0GN(ON6hfF!OuptlDV+V1+{fN-CQbpL$jPAiq#qtNavH!Iidc!r}6-i{3BZW*gDBkp-Tdgxm!E;u2-og(LmvUNH#rCko}Jc6_`Uglbc$W>AxNs8TVv3Uei|o_ zlKM-iw#5H2kS6vKV;EaUZ~c?enE<^9=dK97th>`>m2SS@<@Dp$-T-%eT%}4vuP+S! zI>S^z4`-FD8DQXn3*YpKE3!u~G$}9j*evT__KfI8+X8GXH36;}vJCGgF0im(ns=UX zL@@RjNS%Rkp#H2uHT~!U_L1=3=?+HC8E~_YH1K-p-{^xn;EFq@>)_uQy$4Xw!Pgw$ znHA03dq7VnZFR=mPRJ(oQ&0)`4`31E(n;Nsa~4oU^WGSPyb`@Chx;u|1reY6h_l188f;t)xWq(7(48JUPA%M`lCIiJH@qKniRMB_UF^qC=-_Dqr8U3 z=DeH8wHMHEariKOWocS%9fXEC4Lbf5r>&8sLy2t@zhi)7SMo|j+|*-QjKt=cz~&xY z4(ld}UFcPv9PrAHW+Qs4$2ei%CqckaCVO)_iwd_Ew$m4n_o;9i;A0p9yuVLFXUC;* z{_&M~yg*>s`BF5llj zuA}#|?K0+1W5y}iyN8x=<6=C?6U?&$rp#aI2ehy{V^r$Y)I=RN2)>K-?G+ZO;L@Nz zU^W46LphCEaS=YHbZ0f`??Vq;{c3UDZ~PffBhKl3A`olR>>5w120*=!SCc$pNewFr z3K)3&R*!3>u#J$tgq@EHKL&D>o$8ep1)hOWJbDu`1R>lV_%`|0N!Nr3oMZ;<8)M7T zc3{LRj!w7FVW|ER0MDT%RYr-utEA>{G!0uQ>Db`k4mZWa}?Kg39UuvBef{!uR|KL>nwJM?Ky5+mT?Z09~|1@)>{ ziK=9%yt3g_0%{MeIH7A=a+(g5U#lZ%rxgU3FH_SQZK+FfAj2YzW7e zo|5XiGyqCETm^`8nK+i)KIq(bmxWAer~C!rzfvv_1-V55ikPGxyS?Wfv3WII-Ch!8Lj=zm6gi%}8p_6P1~@Sk&z)}mOAwWn7e z@*c1UAZJ%2O zF~Rr(=L!Z7RwAbdGjmV3NmYuwX?v#ob7P3QhLkEZ9{nNRtHCQ*SAZy|;w-E1{dFE= zIex|*YWSur3`4xLxA|90Hd^UbXC@$bS0udCNH`IPrQCp*X2Y_wcyY<4 zk5!BdoPy`6^7VGX&q~RW{Z=m~J{5}0?iu5iWR(63Sog)a>}RP5O2DYK76W&Tk2*RP_i2S(-iYS+NoWg(jUhSJ z&w6WecExm&fKtph5;3gtNm&*xiZlX{D=8XFm1a5|S~>wDfqgLH*&GpWyjtlZ*$^H* z)?^nRTAAFqph!sX7v%3cy|kbNOm)ak!l&86HJtB5(2PXA zXrFxz~K4_{-T$E zVc6l(pI|d-HS9v{9hXgj zO;x5;%@jWbr1p!4-4F!u2XOBct;R&Fi3mh#tki&QXm>9=VUG5VfiWw-;_wHzF4B zsBaVaKjAc&zkSI(dS@DxtXn6rHXpMIcNX>2bf zr>6eRj{|`RHMQxQXcB^|FH~HA%N<=CkPzS*8FSn_W`K#!cE@F z2A`MiyuibvsWV66P*mJ~9`lvaGotZCJmeEKg_4<^ByrRTJ%^jDNC1k3Ue`?N#?&Ex z!URJO;YbAO+L(pl=;EeMZFyH2=+IGW(n6WKvogBB4>!cMds&yXk93*?BctjQVHgZ@ zh!IxAQ1vCP*q@*KJBV5;!#>xcB7O<_OQ-SBocSAPIsC%5*k=#CcQg@&A$u})==eF< z4jMy^wKcIw?u@xKSU9;cCXfP^Dk~b)bhRpH<_AY(t7Bx!M`Dykw>Mm}jVr`rc+p4) z<>~&os5x7R`aUbE;lhWM%z z4h0=f|ESmhIb5e7T%b-8>60TC_2Tp!0Blq&vy*EX2wUi<`02Cx?x5IK)a8xlcO<4V zUmo*ezk6=IzWw98yDfWo^1>ZGi^sem{w~NcTU;G~j7QhlQ{VkfZr1#Cb@1Fj(EWvtuf=%oECHX%1YvA;Sn_L%m<-s+qA*KGrdE( z6#2)jQ079{r9X)I*nd95)C#Ul{LNBGyNqu(yEJj84d^EwD#a_D(0!yhr5OVm>K0WJ zYw-K=et6K$^tM;mi!Udv#DHn%@M*A=-1(2na@2m1DJ@r5Hz1QAs!yH4!- zXObR&_#U?vHHUV0h& zVJW6B4MFad_mn98;WH(Qz=iaS3BR(^$|95lB+Gy?k7FFk{tnu%iYglV|9hK+wfiD< zo5~M0bM?-vGxRaXjC;L|pNL|Hb?!J5rV!%$tfXhqn)5U-bYykbxcG0ewq=$$_`XSD z@+;+?1d-;NRZi&+gA1YN>L5XaTuE2utLVpGVk+H7$*(a@ZwgUaqx7>VUf2~i0!BoB z@j&p!r#QZyKLY%-ZrU}8uFC&ZI8u9dBpDn-Ix!ndFfJ%zTuyl9u{(xbbX)VScd?U- zuMexocVNBh%Q`8zUaC(rtKXe_H9+`TsSB2#r!~dK+x5+TxZjkcI;m)baYj=ky{&bV z>Z6~$FqGl+SIR3LPw_=&`6j+grPhG{YtOh1whG5t8go%s>5CNLCP(?-a9fp?utpMZ zXNgk0+JplM8!=roa=oUqa``7tvT9rt;ax7szE8)6wSenpuZ1Ej7 zB422ox~=U+qtWM1H#WmGeFpiRtr)42;^`suJ+?RnREbz!^yr-7(yF21fz?A1RoMD+ z;ILL$8U>*Sh0jS)+rUa__#&e2Vg((1M+1Y;nTq>2#r;jxy^U4&h+_bSISdH}Ywxnl ziFM(2AsGo)6$~=mS)#C?`A_8q0;)w7k*-DLzivp#9%7CAx`QrYm>!O9>O;-1=(9>NhmM8Kqrfbfd(5UcVN7K^ zb^=|e;Qokm1Z6=ql5c-9bY_WJ_4BI!T#P}7^@Y-=+x4|>!q9aP6{IzszQxY&tkGR= zahl>{vnOp0@|(r*Tn_>U(elmzsdDboDtz#u$CI_NN~9Yz*dNV0dguQ-KrT6JKYAml zWd-)Lk>$Pd9i)li`?zMVX{EhM>~Iwfi3IL9W5bg$<_3JthVFO{T2!BFHVt@Zmj|Ax z#l#;2?JZG7M#0xDCoK0XW0dl5-xV~S=lFGcu7}@{s-}qao5pA zKFDHRIA-^PY@PX^cJ)dkaqIUy~8L>JfcQZDyIz<7aME$I+kSY`0B@cr{otWyJ;+p zyL&^aa9QnXq3l(wysh*E$mPDO70rz-N77C4R`L`eb{xfqQzI4DNjLmlZrL+A`t!8v zNzXhM4h29ii2Qf(32{__mp(xJ$aNeC=#?b(Yimq=>M6HSm^(=zk?Q8iirguH*7k?VH<^w41D4WG>6!vxUe zVQFei$=IZ04`1cPs_V_(_A@eVi802U%NF?BTgTG!h-(0wqSY91EAG#WWo8l-OxGF@ z$-!=p&QKGs(e;PZ~WMS(S>(yNEAJXjB zR@QRi&l?k64T&XS>zghzR1hi<(HNKBs&G-JC&#X%6i-VAv#~xZe;UBY84cqCZ&bb1 z!jgYbJ;?>R3HeTGb<{=;BJaoQtr z)+@A9{sqlui6i-(yOhdpKDLvWB~Ov_kEZ^rg4{ufM>5>o<|;Hag2h{giENk=xLHp& z5Q|WV_SF9Qlqlr!t7s{1n=-q7%0&Onw{Jn_O9TY1&Oldj{QCk=dW*2aw{{RP+Da@g ze_@EM34USnLBCVPW+PV=L)e_@h~IXWV%5S$K2nz?B^QAi(gfNi+7A@K7qV*`&gl}wz8K7nGNeR@ zZ3gs9@V8K(oGW-ClvEBmW(eBlo|N8+>iS}mb`B46!93X<tZUf=_m89HTSz^r zB|68xcLU!~V1W=T^M=W5c=Nz+`yEUA3aHaOIRQJ1aJQ|cuvm|~)_CG1Rr+PF%B3A# zB)XtmgY`J6X9T8auvv9vxYzHaeM#TR*FMSH@*Q}c9{v%Ulck|rI^5;+J9U+)@B8? zjQ1xawfxIH+|#Ozw(z*=a62JQfBJzg+I09yy!6#ueA6tC-4*qQAZPX`Mw7y`JEj3$ z7gD;O4yJckujHcvY1NCvX!-w@m-^q+W;me%Rt2_Yi&fiKqLn(-Y9h_k%}~L(w(}j> z5R)U;48(SC-H$^jW@}x;dc)hSkisD|jT2BFO=#ON5juC3HATemCh05K+N?@F(5}{d z%D7db+cX3;JI-78_f!e?rc+^sew(ew7op^Wu8q5CKC`gjINgo}+=y>N?w4S~ZZQ7v z7G2uZugr*V>fJ!+xOf)1DrhVy(rSxh*7n9mifA8PTz1hLyI}O(4U7z!l}vzKM%`y+ zqDb;Uf>|A|#x4xxi5TU?l|KeVqSGn3{0h*SdGITTrm_-_%A@}qz(t2Cl{`Rl>lTn& zSc=fG-&C0-B($d1xTN=FcS7Q6=BJiwFY;kdshOm`1yIFJoKLTA_$VgRhk>6y_`^JK z6FXNY#eR<=+J4Q&h!7*V&`}+dJL;*u1Z`VQO#Od%if3%LrGL7@4SsdQe|Xqh_{!WI z>eKB8ope3*kmFxB>~pT@5lfGb*2ml9bBeVu`2T~Tf}#qyE+gC^mNbP`lI3-8%F`$(!C)H#=W+mxb|2zHcT z{Nj*_ox}tpHUIPzO-{^Wvbxqs65&0_lq|P53Or!h`pp($_K(*NY4RxVE`S$;Wybgn zpAw@?Ds4N+C!P(Gb%s$YFz_cp=Am@akx0H&ixC;{!G`8h2WsvDQnGE#)9A*+CY04->(zqevd@to$Q7nd*o&W{+fh`y4v*H#+<`UhWD9*%v-!`yBA;%#To}E#{D6< z1(670aqL)F%n7poBS==+!QO^A3{SED`W^@!v6PzI1jgH5saqn9iUkv^nBPNtrLtrS zIO4Jow0oNcST}1ze;#2TD2~P+l{8TN{?QvK!&i=WR*1w5#2{1%-u7$6*%M#iP=BOi z=xQiPiWzAxlHZW`gp>12b3N4UwX-U+Y%M-->)6J9_&(umwi^kVO0GVLe&ENV(SJ4V z%>>W<<1R4w!}cz=(a#c5-k5vwDXm!YDKU!xgH`9d*5l&@%}*3}Uez|-Fm!v@d%43R z%ij*JyKW=w*t>FQnZ-|9R2-=MQws~Dli?#hck=bj(XRH^y5(E`BF`FReTgEPg1N{x zwMxByZ^Uab1Ok5X=PuI^z&}}x2Uk8X(A4671cJr7W{$ol&>JXN1aJ~c!NEf{W43;y z+#!vch_trcS*@B6XZ;{o4F14sTLl)Q_12%QnwMFSY$*6hSpycuCYrt0!;Kk=QiOvj zh~!X!!X7m>IAmnec@MmHhh4nx2Vl>etYIL`Mo(Y zD>@8Wjbk~Z+|)9e?G?wy!IzAiDxK|yh4Fld!GB?7VRLJfZTt?|oUckmJr@oItGyj<9*uz=|lA*>)X5a0nM)Nt=Ijhn=ESyncPnubMh6_~8e-QsT}v64E(S7YRa+V3N!0x+k6bl0Iy0*<%NsjG8hZ`FuXMp5 zLpPXH*LbpB`Zpbr@zt`_q9nD*)I=P--3`De;r`v?TCBns+z#>U&UWF6Q?nnFs{NP(#Fwf&Mb7f8OcV$&Ym&;eOhXMGg zb+>Nlf?Mg4E_jY{T&9d z@GomHEAho{upmY2_w(XR96V7_G}X(;4kbfp1}VeUvS#<*lExf4@{XU(Oo=DaeaB|c zd#-#|e&ajFxjSXixO|)^+SX26d(6d!hQ$S9FxV>w)f!sA(OU&l`s^364zlDM)i|w+ zQSJ&!CoMQoL(YjiVg!~Oxrb~lhY-lx+q%>Z#t!r1xC|-S0$|HYwX;RqJf3#l+i75g zgLVFskWcY_iKkzg*ze}9z-bB%!~8w8k>_+5R94MoU0JzbGb@E7#ZtjhvBY~)%H$ue z+;R}5)~1;@3>tw_GXm&9;@idyqM-{9JJyI#mm3!GpJM4q|Waxq*0cF;b1( zTtyPOA*?^%4u=d0u>7VBwZu(wlz*64d}62*`8%}|hb>H9Zb{q;Mm~mgMD#QRzp=ZG zYz9W6Ht)~ce=dSlOJR&gPzQym7o(qhJho`mLAcBb@Xk@Xn0%7mPn}Ye5LR7X6;sVp z^yYRN(paNwsYyl4tno{@0NQ)*zMGmdp4`5|g!Tz(-@M}6otY!~2$Zmg{(`6(rikdN z+?#4NS@SD41<1=L=hZL$D@C+xdiRK2j>t8=OHO`KrUwlIl>M;HlRW&2v(jpc5wx-^3~4SW}JWf#0VF$X0kDY&8Dw& zN=-ZKH>2#RFH8TPy*lpZ-dv>wh(NK5WB*5eg~$ny?p2g59^AZxVqPJ2p=D7$E0g|_ zOVteu#W!~h5+t|jsH)M8%aJmV#Qj!oIu6TO->P?+OZNqFtV}4L91MXn_KCbrS8`Ur zqo#pxIxWnT>eMEjM^@RH%(Ba+OZ|x;Ou$I`y(MuUWv6^EZmOhN$>*_0{;E>-k`Z$7 zbfK9eGm@;wCznEXOt*^&p&^h1>Y`AVXi}g1FG@vMu}=)z3%`?c=@wY?%{H}l`hE+B zpL<&qV)-M+TtvAwZc;CgDD%D!iZMHQ)CKlJ8c(P7Lf~3)#@I1nm7vcl=}>-fl+q?- zH4SAp<V0fVH^6cXK7+wxIbi;m$)B&ATB(6+XlK%DGVHW^ArcI!di*Dn75AygPAo> zS(3`U51)nK5VAN~(!3Cl;wcl9b3+D1i8EUC*Ags}%kVhd3_vZ5Z99l;4DX%@&?zu} z&ThLK*alq@Ov2zaKIxUU4Ga9Kt19k*(uXxJKi7t-DDv0O38r17FX zJbd>tx+&NpXd4eq)o_JcZr*^!|F9&Fmq zE@iduNc*sU=_nv#%KWs9r=l1ji{ZFz1!b*ic4^Os90K2a(jrT__I6*M)=kw6EqTy*-*8BvrhaL4s>lznjLRTA8M;ob^( zJg5$YXnnBVmk;B4d5kqb4gwmb8?EGov`$VMI+!UqIqtK3o=!(=ln)=#egh>y8sbcR z=`{x=Kzt;8n)W>IvJm*ARFBG4-~#PPl2X*c%_@2i@jZOAM)W3w^;IpDdXBQIkYV@GSy zdcnF+h96@x8v5D~7{cwsOw~_pkQ|{NMwR*p zF_G0XYuUq~F_FwE6~4$!C1e~MMmRwTmiF+(aK8P2Ve1|YI<}@j2DDRc;}^U@0h-oB zMyv)f+hFSI&Nx^n>>f8}_hAXeuz8!A+w9CL^)ADaNex9LO2}p-htReimlchrssU5S zZNQ}_^j2cBol&PF4{)Ia^MUrzsP{-<-k?KX4%6p`Q~5LK|9mA!NhSyy+sBkF3+2Ve z(Ogkf%%`^ftN|=fo87+YrWUQ>nSF?#P(AG(_gN4Td8u8lUlh~(;v4|{bK@mS^WQ+7 zJImI#Do_CYn%RdRjr@~9Y@H8bEJMnXdLi!~ACmShx=Kk**hO7eI}C%tVzXdL%?b_* zLRWWOz>Rd4X0*&^I!s7sa9NONW2D7!`iw+?SXy)uF@3*KMkjjwAN@X*Qo1 z{3X$=?HxJ%pR=lo`b|4!h3}*_ul)=7VnpdAr&R`Fhb#LV z=eg9%1QnXArJB?I2$3A?8-vyKS9SJS{a)#wsFE@mJ{qhS^dX>dQ<4ktzk2dqHpU<> z8BR5b?n!~KWU1HM^r9>ZSWrpmE?IBpQbATlE3o2&1o0?b52tJ5lq$9(P3FL9r_RFUAo6}7lE+$8~TQIV_6=@zBsB|ATrF8$e8(El{3&IlJZozVqs%rkVkV5z5;0qj7;D{U{FTQ4 ztgZ4je9xfjw>YQ{w-#TOEG18)9=YggI}0ler=`+^Fse{Sq~Rf0$E>S(hL!4rCXL_l zuW(Oah4jEFdglMtiXJG1oPtKz*QY!VqB>239%Dz?u?|24Q5)Sk-kSdJH3@V*`|`JR zc++Ps-9Fz_Pgf2r%%9l(@{a8XJdH{aEW(!tne9AWFn z6nDIv0vOR!MBV&zI3$r@9{N5OIhQViM}FqLSP#JmOGVJ77pR6Ca+fL4qmn4}8P*)lM@Vm(sk>qN5B$$+H*O;2>> zLG?7JtYInq-bgvI?|swnD=l}${$yF09s3s$F&VZ>AkiPE4jE^3v|0wa*A08{_!9+O zsN}6@fi*_0kQ-a0+9SWytfy#kQE+J$;ks)UP%sm+Uzf;&G0k(p6-44uNwrowFypDD zR2u_6IEo|mWzQmR^-^va&^F?!WRruN+j(ZvF^*KpeUgdpGVo}MDGLQ$Ra)r?x8c)M z0}y;<>oiI9X6@sMGxM2(A>(o2fV)lQv49M4*9!h~mabGb_x53Gp=98MRSZP4M_J;{ z2TWZ$B|VCffDTb#5)^Tbe(RRwB8rZDUur6jL&fO~%v-_T4Ao;CE^sza{3|~9b!75p2<(B$qZXYObb7F`e-R4;DIWSLtyyInP{iimR4ag|U?4Mu@Bqd0wdg2kj7&8>DuO6=Yp+qY z>5f4TWCruzQq|sL{e#=+)2maQs=OhriGJTOGlgf5?1g>dxRdGex}(%d>R09S5!&Hi zmb;*FU#1h(AFHB7$v~!A;+fUTH@0%C;bU(OzWb?SR(^N3_X~C|L5LCSKpY&v%yTdF z2p$Ud64#9zJ~qvg-B9^ZVqPWo;?(}^sFi_05a0TPrnar%1{2Io@ubujQ-~?{7F+J< zCij7PEV7Mr({@pSD)b0P$Yb|lRL98iPsGwYy+m`kV!<&>Oprad#g3!rWM;{&#J(ca z|BSnfX#ca2DKqdDi+C18Y_Wk$w*V(=&4bN?-|sL29scP@WXpw~2(^l&__wQLJ@e6U zWk?@1$^5hy#&hy@?W&3N=tjrGvcd!*m%s6i@zSQ;+G0f=Y5TOOx||&yc}!aEsqMfu z)5xjuwi#1ODPN|7>qQ$`8brV8oV&_93x)!AT%EkFlC{3uiwf}opcpZm&E z{vnReePCk8`is%x>zE3^L`7cKh=^#%q@46nCE+%fNARQ7ypzfM zb22#}z=fb`1Py=DOg(3vi+efakLZJwby`&ASZTAd4F#5?s=-KzzJbVStK%C1=1>y* zPT*iepgJ7id0`-0SgJ_h@5c@qK~doZWFfo}&MFqtZWhb}|08BoqLI4$lzY4FH|87v za1PNviD|eN)TL>dQok&Tl=-q%Ue$C&Oj^_7O)JEbo~UM_D&76~eafJ?kdTv#H312) zEEsq?w%A$@J+#x1n;3a@k@j>fY`uS=+1KaY-1zedyjrujUPWwB(CmlxF9nc4(hdZ}}m)xzEU^drMpfSe7r73*&eKK&UOFSxX9A zJ@k@rF`a*k3GGvdc|1mDJgfbR-=PaBAat`Mf!~uZU467lj-RnG#M4gJGLWlaM}{BAo@+YMIe4 zs9J-)26#VOp)nu{hf0Ib9`%|3|IDzQe{l##uEVEZ*f0bm!yoo|H=F7_#=XzGOQrGv zf_4i2GZ|DBAb*tulp1^$siW}z^AsSa9*_%#YW|wELwy( zCq?kY{UN76PKOR`-Og6S>8H4eedZ(XM-+q&x*qpr?mV&r%&fTNTlK)>D>sW*(3zdy zjT>n04a4oNuSr5x3+8foQf>Nm(TNt7CztIe1ns4Cn>Lhb=}krVXE{c`o)n$)Ne;qC zQz=WEvsB%?D7IrgY-=Ug=Wg|8F!ed}{wDdmC0(Wk{XiKL0*{^;pp!mHRcWDemINHH zZVSif*)ro>8Xg_K6{ffO`OQV{Qfz#qJFXKd*^;R5GWdMa^mW0CKs5yka#^8fpRzEidO znP3+GC|rU=qMWQ1^=yWM?bud}Y-oT&mnfMSv$o#eCs);IwbmC;AR`Y1BT)IW`;|!B z$%=3^CrDcNFojqX53YmzeiWP-DY)yxOvi8J4!ZoB))c-G*OW!`M>E8uZ{@TI_K>~+ zC(O$Vr})&x&oP~QFxVj=FzLMXIVurt151s9Gt|+yY1d#HKjUw);ycUo1@B&7<4TMKp$eg6w7TfpePHj*ztI3R}5k9U5@)#hN49$%uMUoyR;70>O zcyUM<$WMloe)qB3m7LH@Ds|K4_Y{L2+xj^j1M)UiX zWRcwNnSDCbzr*8<5*8F%=x%2Puqz<7!YnvP{p`LQ2&)Ptvybk#_02_lT9kI^UI%GBr%*@q#C_?0KjAWxa0CjvxGRYVWiyY+l~@g_#e+ZZSLs0e=)kg;RA}oQkeN?9nUNDJgyo(w~oSF40632hiC8B z52Uw;G_E;}upBTW%k?Vax*Z@+C}_N;if z8-m7p&sSx>Pyqiw0KnO&j+X{Zf|%Q6j}xr?*~U!X|Gnu2iBepzXm^oh`Yo;vPUJ08 zy}B%{L5A=iFibw|7iIO%MKwqDT!Jy)ThuOCKbJK)Szpd(ehgceWhOE z1CBzccaPnE;lX{%Y?|{Bh`TWDtJ^20QpBit{GhU208|kV{tg7r`5e_pR$r#$Y5~BTycM>s6wr)=x!h}Yo8zd zffZQ7bF%Ux4AS+7uz8!uIC=}}1BCdkYb*aaLI7V8 zXR;^=8cpY(k)jIFq|)izzvazOnsY$+gD_rEej)cNz%8}x{LRI*2WFu z46mxMz+n}wJ0JCSHiR+l90o8hc_j2`M$=~IWW~SByk)&h!b}1iN1_~(28Migez(16 zc|c(dH8sTMJg(D2l7xj1|I=E3%QBZ5=*x|D-)qzOw|6 zzegxNi0Y+2mT(ip(Qx9%x9K2y%ams$Q@se-Da2rFY)73Fc46poG{Z3u<{U~_LpLRx z-2#Q#v4b1UFr-(esiBaVY@J{UfVRG&)PncA8~XL!wTz1pvVKw#)WP;K5_;0mLtPUI zvT+9O+2m6!aI&Kg`>R9gJjK$O> zG0ZiEnw~y6bqkl&XGTq4)GzCv@Rpc*oS(i)MVC)LT@TB2|MW4$QP*^GIMh1q7Nx>} zs0LIGp#;oQaI+50X#7u@5^4wkg%FAQ$u=H^S^ z*GGa{lgklxjTWJiKYMu)JaS#enqq6fo)I8+c0)DR-92-x3l+g!cvwg7g}RnQ66vkZ z_zfR1YwWVM|I?gXoI#DB&Bz!wBIKyGC54C&lpI$3`p#xoWps%W~g zw@Wg5M8sJ}W~=3JkD9gYUE%F3zx*X*uSu9bPKeQV;Cz?=MDYM5OSLzh56Yq4cycu3 z4EbeZf(=hBmML57dzVTb<#BaU5x*&D4S~U76F5M!%Y^ zD4Dj4@eNqVaww;LmSf#%7mJoYaZwI*%Ax-sxxBzH$@apz5W=rq#)ZOPNIA zjvXj5*Y9oUo=l>+tUT~?+W5k%P*?{>zOX6#{_-+Y_*ESbJE9y1l$(2=(v0+`9PQbt zSrbNj+qSE^0=T)&Li?hW_ZUE*?*Ggc?2WWh3vI)Cf}bW5B5R|IMSRyH2W!~$@2(6l z`JVgUn6bG9o(soKN4sAnTb>IL6ERT#XXOJ6?GtD;Nani=C?tU#r#$Krc7-mhp43US zbrAy=j*roN(SALK8|40qLXJ>B1Un{uV4)|U+jN|sY=L34KmAdH$Bc8XIrAsG zM*6qMMNxCr?u=H|YsXsuvOjrut)>W>_|(?pY(rcaP7xNgWo->DBG7)FJ)M!^$e<5D z4($*>Xj`So432cpFob)-E8F_1oOriKS$L}n0{M}Fsb>S!-9uC)!Wsc-7D6#!XVQyL zJ(Nf)xdIm^?vQkQ{0N)H!F$IiVaPW?6Hr`&rvaXBYC9R=gHwwYohXMcBfPz@=_9na zZMu5?mbyFtRpLdsff|{DV1dI1FBMa!tYhQ6F{1GuTebMk3`!1*7UI6*^;3A>Nm)GZ zyQp{5KDk~xJXr~$SJAkJ^q*fo7!i5g&m_v3w;8MFI71A94isH;_r01uA;3=Ed?*{d zLW@h1l_3$TF3z2Y6L=dF+SG!&PMj*U+!d+btK@2#p?&XnD*3!XV`fntby}fgw$s=U zUT*jz9WNUbRxonIS$3Z#aXt4#zy}GbSp(qK4X)z6%)2a%npkg!b%zGvd^%p}e)La7ZEJmX}j%7XK zI)S~CdD2uiXX~cWpcaY5ZR-1vaOM{L)MhZ9fHAeKys)UBQ&4nBON3zb@yKJvZxmiG zO9LbESCWE}wG)H>XjJhKxe74x-pnqX-u&XxJ}tnG{W-t{YBv`K9QyrP@}rZ1SZ4L_7=MH7|Yw)S|(Z7v1*f&vKgg%1by^u-&%>y#80&A?c!U=Amx zdn_pndP?&b`t&SGH}lt&VW7gqa*^0gRo`+=D?C|!>Dj5bYxM)yq$1rRvjNW)nqQI*NCOZ+$08E2!|H9lI-!e{F_uvP3D|i zRTg_*bHG0}rjU{cIt6GCqJz7Q7mM{%R>iv-6)DAmUvL0j2$%SA8b2}R?XBgL#L_ef zlfRHu)+Vi9IPCfAlSS?DX-(taZamOX(0uFqIH2rZr?HQzNqB^|kHd^7qHA=45j)G7 z9FhyYzHaXly)Prl4|d4eGY*7)v)=}G?q_5s{3>86ghGWKeIZ`<_LLa?MiA8;+p7h+ z;5bv3@pwN@%bcAIWd8&d_=9a*%!TLF$(RPgW#bls4j?BePg;>8x+qVsrp0U%G8(6n z@`uC!{&W>EwXC>?iM-PsnO%Q@V_fU zoXErHns0PJum6Kap(Qrq&xO&pGb)bks_QdSYb;%};u8~mw}|5PqXZ{ZWR(LG?61He zM`NRyc9)qvmZ8{5KNL|=nb`6VrLEWVUX}2K z5nk#BtS4*8i6=G({n`UikO(d^jYK+5nF|KuYb&F9aqL(&F#je6S08w4A!^tl3keg^ zZe+QEzR)X4AEKKGg*d~L5IN=F1|pt-z(z%2`z^bUSKT(N5>BSoJCPE*SdOw<8E{c$KaZIwoD@Wn$9L)TYl#(!}z@g>R%A=jy3neMXYxs3o@J^*ZY! zmWo*@$rXqwmWx~#nW56TwIDhgbQCpysl`(^3_Cq;RBUp-5chLUW9Q0avq-%ZPo1Iy zW}3|~TRCcV$IFhVdd%Wx~c_kCfu@stD$4WR=^A1#K6 zGIf(wY11*aO2`L+!vjabY1Wv=OepSaf+EQfRNb`Qc`-p7AffZ&xyl0$6|arh`!Bhx z4NiLfTne0F67Ou4$Nx1?tuJoL`nl!n5(>F|`1ry`cicrL4SCfcg;yS`GqeEnPMFPg zbcuGFhKmrQ*tl4Hr1M_=5H*RKM8=WSPQ#n+x?P}EH# zx;?IeJ`va1S$OMab#m)6zQ_xojRs$|lC4PLs6?D5aP*L|uxrAw@BqDM?%DcjNq?z> zT?_vcdG(lK337@HTR%I%mn=`|5g~V|2?;4c??KSB;@c3>NF=*d0)c1OjphtEJAi=D zTb=A{?%>tQq6D^AfSL4wTo*gfy~$|G{+d$t;2q5-(65}m*E>8|hPJ7#w*4IlXHd@1 zU8y~Ax(Kj`?}1Yg4F2_}@_4s^MeCj7ymtJpbUvjqZ`m;4%hGjE9h>w|aoh_&Z1@^6 zA3NPt_!SLmj;agZ_f+XN29Ic$`8!vm{F*f&D-XiR>VuHL7He#f4zVE1CBD8U@7O-v zIX)>uIk7W1T3-=obvWC8<|O{}w2*g6Rr;$Qk_PR5UIog5DwNDBR;`b=gMXy}tPqUh zk`u3y5)}DYfIMY53C?Lf6y279Y{erbera@8ppvXX-9E(VE%zVdz9Y{e5#QYI+O?^N z24?LnY&o46J9NcD1>^z`{g+-DK3}CP^*;C7G$CN4g|!BdKG~8IHDEe;rZfe8ID+Jr z*Ptp!a1R1q6fi9gY)R8&roXBAvZ56Yl2_b~M14+r$4VV;O zH;n&z%eDXv-tKHB9E6AUx*vON{VO6n0?T8`*!ba^5*(ItfRQX(ipS%%M^VxQwU5pW ze*qfE0c^4k1dcsTRLmV?L9fKOLXgr(1BjIE1V-a6{A$q&7dz(KvcWRD);&>K z)^VOuLCj-u1w(o-bpztTdTm}4s{oDA)M+EY-O#`HEeBPTbka4r{NnX)C(-WWrSZxh zQBW^O9h`%8WcrI@I~_OYsZcmTO^OrmceUB~qYQItliRr#a@X@l%0X`A8Wzeom9A|* zUn!j4e>upHUaEG4uvVGzliO-ZT>P{^v|~TP3?cWF2bHnlu%seQTd?UBfSZJ5LhK{? z{{2rfWY91m`5&Mr@f;-|o6t8*{Z^ohZzp&*ym}600wqhB2RS{bvJMVQbf})_9^!cE zVSs3wDszeljC;A7%X{PpkD*C&vAnQ90ydrY5*&2diijyyDrcgpL_XphLe8}}rti!j zXE>$bT>eVTk=ls_Eds5(+x7t5qp9lV8|+IBL+t(be%Qly~Xkmp~#9 zFTpueLsXBPOe?5i+Kq?}t_GFWT6Tqn|8~0I2(++yB5Hq`T^d^;eAchmX|;3x+QVvK z#?C9w>fJO)c?Cf{g?5@V^3GJ-T);=m>*nSV(p-O!V?{|P^uPRkgF-pCWE~~C)blmX z2SkDK*Q3qlX&X)0y1%6A*cI}H(8(uRs%C&Ogd2Q6p|4!4=B(l;&Co#>Otg4c7{?p|eD(Tb6q-HfU;uxno7l$u(afd?$@Y6r0}u*MNlW3-M62W~Q*+^Zv)dr=EqdIZP{w z0pC0ii`J@G(ZJkD8echeqb_cxD`)fn!MQ(J(g=G;xci9*3j`BEn9>RGoT&*;BSYl3 zeYDsC;7DGgrUdaR_cA6656_6AZD3dXo!$B5Y3GfgNx;TN*$UT*MbPwOIx!-)lIxE}$ zijPV6HpCQfMJ39I_@I>75T+l-SVjUT8C-nFzO*Gh)K>kCw|JXcNtn}5GF0A&jaFT?z9;L2moC(`WykmFa6 z-aFN3Tl$<)$jUWbzG=UC3KcE84kFA+DD_z5y~R4+2?{xTKMt7m`4&L@E3L00Yu?QV ztZZpEXC%?6VeM;kl|k95L8!Cob@nHW&vonHIYiS^;ZRTv~Mj-t^LU6Nn?8+jrh zt?lB9iUKA(_uWrY{Yc|BOsh2JRPC4}yMU$P4^rZ3qqa--(Kc)BG9>Hkn4CjJn=dm< zwhNRb4?J7PJYTE6O1`?)7>&)KGKs z_1(X!K>^K?(iWP!hCBD17I`$G%w-O*GexNYcOIO@r`e-9j&QyuWIPDGIb}$(@ z&r=noXyZ5JxheKIh5Ubql;-$3+#%J>N;3cnEU0M63H)zl#`l7jGs}W@v%23>61EI4 z?tA3D!Qh4my#>yNqxm>y;xS<$9v|l3*hMhA!X2dfRHfTsN^{@6lV*JXsIi7076PS z1x2J4>hqiIr>={)pbwWor$_zN^00ML_h%!y#l=TBM(Ozd%wec|=s0+#>W&oBXo=6S zt7&as_&oZ;93`ZtwWXhvR1h}`Y>WJwr4W8jFSzHTT#MeexPo#f)uqWTidM#d>K_c{ z9{JagUSK%PU@BPmXEn6;1kJ@MZ?`_0?nC9LsG> zsY?<*FT1TkVI6tD$|U4<^{3tYNHx{Dl8p7Hn}VO6aX><&CFbh^IHUTJhFQf7h|Aw?_7 zB;S(k<#LyR(hwFM8Cu}_v7ePjGJIAzGn?tM4b#NKwotVtiRC4PX>2oel7~aQ%N9`c~<732Uzm z0+`g~YdWFc2&QaU%ehsFeS_zR?dMToW={Lhr>zWI;uV?%M3OLm=5 zW-RsSx-tCdq3#G$a&>1dTJOUhLvKMy>Wq~ii6HoSU;wg_kX73iWOgWEu`=w z^A{1v!}VkZWI%Zg(QJCSJ@WYSX)bjN%*u$dwFLESK}r?QYTh`3X*`c-OiZaAo|vvT z8|9XCQOl98B@C}jT7ayw=Q0=uxtR{BJ{LYBpz82uR{~%Ho3WyH8#xg!13cFshN2j| zv&nlNd|w2F{Acru2HYz(gQ2_);_pFbntO#e44tdMV-+&qW64x<9F|A7*s8ox_YlGZ zSPcOar*=u7m$5M3UeMZ_;jw>Rbt#{>3R~2i3>UpJ;nuS)zA_*L0`uBuIs@3|$UR$< zMZl{Xwju3Lc9Ot$&JF0M7P;;pmh?bIdkmb4#LjENLB{Ls#L@m%7k@R7H*(F5E?_^* z&+!NpWwR8GRJBOz%+FqglR9=?qe_V*mB z8Qbg}y{*h8=+Y^B@`j?Dn&V1pS7*Vg} z6<`ydSh~YX!sejPxUxzt-GG9S#ky^pcl~X8yn5v&s}Lw^WaJ9g)^DUR=c;GZ9?&$- zAE8aI_$%yd>H+G->NBVj~myC#cXaTJ0KMhB&VPnM8h2#)H0tQ+7n@wj0oLQaaF zE*jbHpc#a1WnNpvVXry-F_a@wBOvkd4I^};Wf(MdQNRukcz4DmVq#Utw#Z2_TMW83 zFl7yv@8D*0Y}j6hfc=Ut@K_3Q&d4_RKT)emV%P{4k7kc)bDj&v!lm;K2#j{t*(QFP ze>5SFdnGu}H8wd)hDw8rH7amDrXlQ|5=zs1KI|fWHQ2V?ADTSSAr05RPTt{1%fEwQ z-;3^}T=ebXL1T2dHwAN(hs&Ca42GVvMo3MhQ??;GveYhMxZfa}{J&Bvcx&apOP5$0 z-vP`&3l1=a(L_HAy#}aYcn@VX8UWte`=x@5h@!^T;aIhu?33k(W*?OaTH|Y!*V+=Z z-15;J?C%I?8v91v{)hTYmFA|do=C*Vc=R?i?#xckYX%MxAill=>CE4SL(ZMHbCQh2 z=kw)%Q2;NcQg1GmQ;_TAG`yI(^uRg?@mWvXPpx>X-?-6)22N`US!|PO5S|rLpAt|v z@ihLksaz>dsdB^z0C!LR`@ z&!xhsjRa3tLwoS+ufqE-{4&I*c*@NU9Iyb)|M6lKsxRT1xz{D=?gVu1xpQ`NI>tUw9G0~4h*NxlUA@Ue+ zXyrzE`Cy2!`xYBLYpI)_lP{=f!ZXaDnrx+#@wOKoAPn-}g;Qt0`Iq_wm~gtv{fuEL zAB^iH@`O&5jr>U|D@F@?Ce!U47m8V{B==P2_+~p8`=HKnz@#zzSk?A6$Fi(|8SNPYJ;ibmv23h`9L2 zA|v^yl-X&15=K@ok>(1@2RBA1@nDhIW*l0gsuplD1^W0}m@}w&2!8Yz4%FI*v{tf`Jv#X3vdj;K4(S z%IavzUo0p#4t;QqM?}?K-)B-uJ`12LqjX#(*34yZqNBa`MIW8h+~;yKQE4=RP@qzAksmpzQ!fpN8t zZcBV%z-x}}@3e!u;V@mVdEM=K={U|1-Efxcz$W2todS&6-|n#^?-YlZjA~#?2`HS^ z>rPr7;O#<%e{A!OdNm)^3=5%ufbrwMe4sDPauck1`GP@P-^iO@6e%JvKh4YBT5Kez z7x&zbEa14(Bc0kwgK!6I%#Q&6e03R68M#8Z{RNC1f{DS}xKyWFd>ca&{n^8INTC5{ zYTz~dKo{223tB9)I#D94uobCwsP{0hoeQD4nJF+cu?e4y;d0n)V=+v`@;szU=tcGw z_A`DfJx_`404IH%%nJp1ni@Rxh#`p@R}jhpIS)+hgxC#rb64aB6Epc|@9_-+)b+6; z7@@Q-enT^Wu+at|!JuZUz(4rRv(P)us3?eFJnBp^*F0ylxGAB(0tND1xe;JcZ2t2*PE6;u~ zS=R1b2av18KsOEAhn;4TvBlW6+e_3C^;6DuanS7Q@kr8R1lWg7#^CT^hq=hat3x!9Y zQb?X5ZaSA-D=HIL>)-)^^=feH^Y+ky*4fGGXi>cv5wVd>^c?)3|q7f~LcZr9R&ikUtS)%wWylpPZh}Vn?-tD>|8u7O~U@c9DGf zA2dnyt32!vQ4kR@Gp;S!%yEzbuGy^;*;m`3N}db;Rld0l80g4TD->d3lVyrO{*;s^ z0`wn-JVh8}vhy_?R0S>p>WR@Pwca$l7#HnFM!+li-g_YS?I73Tf`}41X6RqDSu2go zG^7%{>DG}<3^A+&O%chPT~G24nY8pzfzZ-?$VG=Xfx^ZlpF+;3J)`;*kmY*?wtiS# z{)E+J;J2&drk;{Pu)s8WTSvo zA`t1j8oln2Y)8TL_5-W`<#seQP$&&y1^sYNO`41jN!gkzwCd$M7d^XPBQ?exBR+I& zCycr|Vip}qmkH=D)M&$X?#!#91Apv8BZqO$B+p@i4K#nPwEJyCH7=W zpvK`XCpBNmf_wzRoIzxx5O165M*u}&<74q__8b{7m&Q4STbYFZE7xv-u~}q5_3L88 zp_xFE6AV`0!oxW9wU?$K0R^pQ=?AeUYf|o#y@8SEI7GrUoH(W$3li~UlyMdUZo${W zX>~n_!4ytylk4gG?G(UH-r3}rs@$uV7M&#U3A+JW!dE4SGsc0EOzR>fnU1kn{wEMN z05o+s9cLT?%oA)y`Z!mr9r-@%o!$V~XXj|zKjOocC@7^rAGp59TPYu_z+;Wxg%DLGl5;GOaaTRbG`dNC;4B`EjmiqDa{1K@9vo&hNSUi`O{c4Jp11u1M04Cq`naxMh~m)=s2v z%c~yrhQKPinNcNnt=HQ;D|yh8 z9E$I_f|!+R?6eMO^WgyTVQoZMuDQ5IRh@7<#(@Ke^M|SG*mNOI<(>Mm`+_uw{!l58 zVT0bQXuKoYxhbfEjzJ31jAWjT&G4eda9}28kDbiv3t>2zTK@@|lG+BF{|6Q3t1i4M4-R(&K94ov)FPdjtqQ*<82y z0Fs>HoQ+y6j>by0^`M*xQ=JxCUcjb$LJNufGz?UJKTf|?QQ!4TXxn8B$!xpK2Mx@O zn<;n%5}(y590B@efY?;YLF$z}6WCR*CIHsk>D`rZvy^S!g|HD`v@AbyKPK*vqniKD zbhe7^Usx(w-UxqZ6<+TeEQkt^`qlRxs1^j%uJ`6gF1{% z(_dAjnTl_oDJ<*+UJGIzOt*|yXrR>M1ZEenC6OH0e}T&+Ok@^hcP=KHrWoc*CG;^w zDXMRaWuwB2Y~Jklzj|D6d65`i3o@!BB5fNmjt4h;`1_Y17YyQr%h!|HWDz~plW^#7 zM2^%uq@vp!3_(8EV@Ebn!jo|kqvpmMA=lp;T!{vFSYU5;YgjGdfjiC4tDO#gr!(E9 zade=Nw^w1_(xHIb@PXE#bRCsvGVTT2(X5mB=Imr_U{@iRpX}VpaQ18R!LLXk-Rl=%y6)kk*v=Vlw*_Umf*9G=u%F&eI&U29X4ZU= z1<^uvB=%d_%uF6y#`H+r&Lt43a6U_ul2u0z;RZDy>85@r=O z;U8oLM3u`b5tXtjZ1^JOeRp2J29GsRs)L5im4`HHMiXv7p}oDnSs@d@zAkELD236+`4;lfSQo@!C-4ok?Ca_Kx)^ejIWaCS_B7!c&>79{ySHmn3Q>)x5X(^% zmAv8XupHPW56~4&GkhQ3bCRGt}$Im>V_N`oz)3}12 zLA+BxEMaTzDM~eEv)>(vJV6rtiskN8pHKeEt(!JsHz9kdzMmbKH{?9Ts`{cgn{Bu# z!i5y*K@F7r^2c4-K|hKhn_oi$0KOF|=8Je9qebWo$l?Ju%!p;_w#kF)As}Vi;R9d3 z2J%&a=&*?S|Ez09t2beh2*USkEDxPUhg5mL&x?#G3*kQHhpV9E+Y?4V8$xjgri=Qf zd+0emqxp4V2*9GfrEhAbL)Kc&?L_%Nf8&=oi!$wG*ryf7lv%|v|>85+hQ3u}zuDr<_xQ^@Sr61De`d>_@q z*TrwjgT>(p2oiBnUPEDJTJOkY@qh}T0%7b|_}dN7UMn0FB0s~3z_~r}eAQ?=*?GPL z9R4_>)@bqcyUL@HYHQOE-HB~^7(m|lPs+99LrKfF4pdbYce#$ew76%pVpSFQ`PTE7 zQ!X(^N)lDkMlh6Myv;}AiAK*lL=W^fy939ctu!#j)=vrxi#|K&Yp{ir`?0vUjHhOs_mxF}$p;aDF8ldFB)nVj460ij|nhtpVVkY_}-S z28CdxB*l$L=f86LqbDQILwev$F*Z_DSl#_9_Y9It0m~eEY^jOYV=~N&84(KXQpRMW z_S!|rcaeKI8h^b|iz|&Jm}6o*p-N*jFHaeZDQ|s@}6p;wGUe z$;6Gs{Ty^pMVGzjq{Er@?=o(J8aCp6{oVb{s_H{*BR8k6wzPRy=O&N*SxeJpUQSEH zYCrZydj~uSRWFWwsk(%V$Xoj18{TYMZ)S@<_hKvqG>ySF#z7Ld&G{hHO zEhm_um#Vvs^CHGLeZ@IB)D`j;R`q#X`UUwvN#Cm_+Y}*94)e~7eaFpciLdt0ygm}E zV%;+7)HAo^d3rRZS`Sh4bG0HYgQAd=bniG6?H#BfSezx7pep@(b|MBB9_Im)?_+1c zl{)i1<2XwUJE*xmD3t z4Jeu-T@h*_uE4qB&`vaeWJ%1Ax(*_g&>51`M z%v3f7ZSAC(uy&W)g6hzX9qUq5xB|1yNH+{gL5CWID1jtW&Q^~&YKGNfd6x-%3IU9!Ijgzt8KQ_+h&mg*i* zLqBVGsu2_RR9B{@Yr@a6ET%x0*OuR(#$O0sl0t%!;76%RM~m>%#b(AhxwQvTholTL zB_QGY@EkMDNd#u@gQwYN+n$C{YZ(!!E3m{)L(a}x7#m@BYM&z~3qNmNrcQ0Al2q$M zA=)>m$|Ei==CAE0U#6Tk?qocOf@eOHP;;A#^^Hma-9W5A(wxmU#&WX1u(VDTp@9N->eeuo&VPr#~mmW)!%`n9xfZecszCTg}n9b$$OBdu$s{ zoFER&w20wyG2*yHwqaE?wrDIY-@^OyyfxgBM3mLcLrf0IFMnN_%qlDt!&$9$5r}h^ z3~Kt_AknHQ{uH#FCm?E~?K^+T=quy%y8(g>@45A|c$J||T5oNyuCZv!=53ZL-Lc+u>Aq`x zGxqDbw)v5dFm>$=K^#~)8c-V&DAeXjKpUgz*9cB)Dgm&G+;D9na7-TdB#aV z#Sk<(EeDY#Y?twrCyX!c-fa1=Xw-!3HNcOK$u?GPqzLqh2?H7?bBc8ZL9t@#_hgXr zgnXQoJaEP~d$s5JT#@YjiBFe5L@%)M(u!iW%ax)J%=O9t0`0RFPWa(k_#bESOU`5< zortCc?#&h@d2R6n3T7n&v)UvlErlJuNwfkZJ*`qEu!XcDo3Hg< z-jF6znT+-?bL_){H72%~mbd9~*Q+J|BL`%B^OBMWgtXEzHg!kzQUt`xE}DovRP_|Z z_4k=Jea3zLV-4Tg@oHx5W$-ho!-V!EYVX4O^PX#nG=MTOmMgoN@XnzAu}`xQ>8C!c z!$|dDHx@Cy9DA^~(q@ks#ztf6qmK-g=<))oGW%}|c|u)aypxFkcc7+E2jak%Z#eLL zBv6wvAwg^dA{us*GDvBZkeP<#G_Z}s2Uh*WVvjZdI;PDKM92!do2UZNQF>xJLGN-? z3i6)hSw7$JuK*TWdO=>TyUO2jLyD4-vpS6T zgzZXpqf|o?(At;x7OjmAvxv^F1|V`#TjI`tuEYSt)W+=h&V_hma5t(+PbGk62c!!2 z{~?T6t_$Aij7(*1hD>fsp@!r(GkB}%qP%CI@mXO=rDJ^q0#}LPIdOpMmo{kAn(V`V zX&9tQ{Yuhw)?GLPIIr0LVR%j|gU*tQg|Ne`+44TT7L%@~tW#Pf(4uUUS!ndj@X=)= z{_HE(2Y$i`R+Yp=D7q>TMmOvu_ej^7P@j^jLZd5TVcUk$D=PQ?EwT z_t#9ov7E(CSY6K^C}Ok7?a_inu#{RRx!{(<=fJUf`%<-xF?LHxPN3|{5_PAvG4k~| zUSAPTQaYcj4H_78`T4#9^`Aa)`(8~+i$5KpUwxDy&7G^#H_-r?3)j6`Ro8a3qz>oL z^=li8bu7krPb48{0#Cj#)eC+{KiFps6DTU_NFHD=Ijfp;a5ADSb`1RnI_vI7A&}lh z&s~hMHFYt&&*Ky)p}(gbP_AYs1c9Sa8b!l1sO|5{_fL|f|`Ulu}***$r9Tf0)L)$%$khNEBja1X3!CaPCOG z&t=0%KcVfW=4P#>p`0!g%k4%8fJPP`3b0kYm{iw-fLq;1PBz#y{Oe1JV)1UY$DG$0 z&1f=D=K-cLo`uINO3mm*p;ck&qUA%>vwl5iVp2fG2y+@)ZLyD-7DUc$6cC_kT4-mA z5YB_~OIezXn-K)xOlKxD^dU5~2J^EpQMX3|$JvO0V0Lgnc{(yjo$z~4A%7~oywxmx zCifip_WH-ISI{jN{8oVRY6VNy`_93MAkTg|ApjM%h0f! zdtEJN)(qG9I1mLY3~{|UW&r;`0Kfw$;W&ga>i88vG`uCV$eBy8_2uZu{Q->mielFY z`MoIc!_gE>`{F@6RZ<;D0^Ekr%k`(9WHXx{1zCMg)uZ7ATY4Q)>Y41=$^1r_x;-h( zKsQb_F)3>#4mL3%FZfY)Y#HMF79S2K=?ZFu5x7!g&+Yj9Pe~&v1IY0R-fBdvIL9hr zGnvOYDzxU2LjQ3_PR=N#WKtw-M&?>ogYD-YIZ{lb<8V~l>LbX_Q+I9tVWh6BKDm)P zEX_OgMR}uD!J7j#<-0Wg_hw49jFV)Ku<-Xj{(;Se=h7wbf8vwPJV){JH|^f*(CUZu zpDG!mg088iK9y6#6>;PE4LK&h5!4_Ux1+})2f2IRKP1o);b~n<#eh2GTmj>uPQCo9 zY`nwUWc|e~!NbJqV;t^FzJevGZ)>wwmTsJ7sY;PwL5D64cU-vCGU;PJr9MiCm1X=6 zzS=5v7eH!ZL-(l!s5>SQWTLTvFtUoU3!w?~kW@)5sZ!j`cdX5Ra_%c}$-6UkIIky> zHGqP91?9X<3te7uy4!?rlxY#$Hp7vTdVlF+StlkLQ1ei{B?U@!s|rc~-=?&a=_Z+F z)Avhb))5G0A~TjWvEnlNC`WmL8_nKlH#BkQ^C@NB&Zk)9By!}e_#p&ClgW^P_CZRV zp9LiOYeX(g6(G=FqcuB)nSV!3t+F~Sk;)Fh(K(^N;*SW2;OWj%aBy(Csjd1n=xAKm z3bRkY$b@oh)Dqv2TT;@a^NFR|AVoGIjD-V_cV`q4SbbS>^d-ogD`y}2*2xjQO%oH| zmV!O|?V`Lo^e}z=Lq?Cx&zozJ6if)+nq1U6{p#q}nEnakKnO}WW4eI%SU6vu!XhWR zJ-2zec>fd(FF4u6lf>@M;-1Y$ZZR6GmQoMeEu-%Kj zVP}?pqYW1Hk08P*BM0Rdd2O-@SXk`DePgJ0aGR*bi>DX9rg~+1#65|W5rRp89<`Oh zr7xf?P_LgILWu^R4X}9W`+6B2?e;|ts%smQGoeUN<|{B1`9G^HdZWW@eZ@N!D3;Eo zy_hL5S5WM>tQJU>be*EGqf%gwO*OIRzs^`?M#XUe_4w&od~BJggK;@u68DMhtJ_f> z?R3=F%-lsp4ecP6UN@(5Cs~%(+^-veUt<}9eDdpP7mg#E?TX;*Rjj1{Tmx(e;h;kZ-pS*wm~u|$w3;=nZcAchc?J&|Y{sByAPox7ZdbHGXEuoCF zDF<`wKXvDsug>x(_~ZmoYPPEq{E*+#m@;fJKKoiUD-t)Lko@Jnp>YQlSYhBJlQfJ7 zGWQKt0g~v1>co6KHD(#eb8NyxMH4SH09e=o&v#7c3w|e1@Wlo>Vfe(i%}4zzJ66-3H3lZ?sb-Ri5fzs zC<@T*;!md3Tukqb>nQ0LISoHBa!gcF!SypvG64$537Q2nwVz%N;sSeoD}kX@txy?S zklwAYL!=ZUnOW>d-thYTI${20Tkx`y;2>r97mF6fumpEpy}JE-4AP-^6x#=eAs}>e zS-9Pz@m7g==D-hnv}n$eqtUQ+8=GaW{ypTI$nYK5_*{L`&IgPt)8v=3IzmO2f7Psf zh!=@>*!Qy}h3^*TS#3 z{T+A$4`%&RF@alS>OOh)-fKGA4NprsyK8pyc;;GaPDJk-s4nskxe7XOyg*3IP_+7w z{BvCtOK)-xG9!4K$;ZRRC#z6rn&Oh_OpH&Yjvze~ zL2cRR<}3NASpu$V9eNj1t+CZp;gQ0bf)Wdg*6_I-kg&n$AgoynD9E?sn&6TH?Gb6g z!ma=*h)nA(4z}gqC3R1ICvg+ra$He>y6wz;uiagw;PqBdgD!zz6jYNh=?ZG zCV|&d_DZg|`e%r?mYK!~?u5;xBB?0j%sGRIGKu_m^|j*iEq6`EINu&|}~ z_so%bnxnCW;FTr{;WdtYIKdQcTTlGvLMz<5iujR)f~`2kfvo?ac0MCt_pnr8n4Rxi zdc@(r7P!+=XDs^Ks&1EF#vE8)gW{Vl6y&RL`8owrlrq)2GYaVjK$vn%?idfuwXXnz z`X0W`FM+3s8<0TjxI#zZJ9%8cBONY|Jq;QpOI3AwEz{5m85m&bNj(9mAs~fJ!7f(o zl`JhaVha(A;dgx0f6|-}Wah6^;%@7|cFX*8yUH(&wE2IxxEb9&ihF<$zcGumt_JF@ zA-{xssc|EJ>Gsaj!p)?l6L8OFQ$w}H7tgtT!U5}9Czh#NXDqMZer$tVZ)K*Wu)-Qq zdam<2*;;8#SyL~bGi-1MqYM0b~z;T@-fZA z_t5V8@Xgy3E!N~=8&hln8xYn%Qw@VblbmQ}i^x2Mz5?Ee^Dqsyw-+Z0M?QT$oPV~G z?Erjk-~-b{0w+VwoQXF`kCM|_kJgYKS=(nMQS9`;hW#EmgM)UdKNoIYY>F{tit&}! zE)Ud-F!l7kgXeQ?EG&){0o~c91*>Nxw=m`DSdLx7n@qk#aGiCWkMgT}-N|S#14L<+ zK_!m{%zm`Z=xInt)T&TbAfU99_9>1<*&i-yTRW)tS`69ZI#M!(mZzH6GWh4SJ%(I>ygwvQ|KIJd~x*lNuaE@u;AVk7t1XDrb)d#x=HaN3TR2*L1APkD)AtdDG(C+Rh3>e05ng}r#uj1*rW-&V zmL0)yOFsaxv(`s44V6Lp%Nb(ul{)e9Tq81?6=3NUaK|o9iBJ>k>5!r8Uh$!Wo?Yg- zgjlMG|7A7a^^SG->DOTqFQDo2W9zf|W?5=K=DZF_^S|LG%NLULzrhnch3WowCj%(J zsv0KHXM0ipwSK@EFn39xs%P$?Z9_L$**Nqd2NwF=8{KKV_bBgHpFy7``r>44bo`K| z;aa#AR#Q)}>K;E>^W!R%o*vRIRbw4nJ?}}Zvb-i27X6WYg+kA0YMTMK6ZyTUG3p)M zts-lTvq(^E=IQ1Eay4jZp9)fMUj0szO!HFdsPjUGiR0N+n77|#(lAn!*JHwl<<=nl z<9PY*UggwpS5R}_ofwcXi{KttBwA{+tr`FUk|+Y~=CIqAuNO?M^z-RW)Ys2l2Dk<{ ze2=Ifn~>9I`vZ7zckXxJMNLnOR|5_ECr+#CkcL?mbtw0!J3=wwS9vXkk>+{zX|fSX zXRLLY!>+>8V*fHK%JEUR{6wtxa78ty7F$f{xDZa0RiM{Hot}b_G4lMg`6mp+Ko9nA z_nbEx(aL#uqTBe@eVs&Gry~;#C9Zx;3-WfQ0hpkjm!IdS3+~I4D>v|z&bV8#?5-x8 zejQ~ieQ%}Ryhz&S;2)0)8KF9TZ`QR=Wc5W(UT%$FGlX(Wv8$K&gTc+FdORQ&v`$99Ah52IJbbEbn8 zi0|#a;41GB*h)wloReZ_NmJas75nt8Krc;8am1?8^(4f^m19K~$F&10J^}Yg3?9cW zl6cB^Msm+*8Qq{1!}1~W0#m-v$5b{Rr1A>MYGAadjuu(N8cg7sdzm)~O#`Ypm%0^O zXnlR8Lo%axB145`K@ zd^E_7+C{SXF%c%{ZOE9*1!toj*MyNWQ`(Uve`v5c9>KLnGX1OnyslPt))$9ZW38w$ zrasz=@w;i25}z~AHL>`%ayJ@*Dxh!WR{q14Z37a}A}OBG$1d+pFhnAk0ABAWOt{-c z6dkum2&~fcr6J`jI6}pRiGFRsWEvNprX-ihO2akV>}tdBm(a!kT}=XA4W>XP3c%;9 z0B4{4TV*yyILp-mdSEB|3%lsI+Ev{9y7C(q5`#`7Js2Z|O)N5ih|_~vbeer|@HhMw zAQ)8O8uLwikVJ00CMq({L#E=SEb<)j=vkWrG^9q-?D9*yM}p61v}Tu_8d+if@wfs- z6zid(Or~6JQaU|iZM+j8VhG>d?y&XeO$PE(iEi)`o2`YP+eiFIyL3Q44r+l-tRDzy;yz1mpe zNC=5p9p&DDyGyC-abUsaywZ@HE*V@WGzBXpt$00NTP=uFhX{2GO>@-t5b ze%ZLi+E>U(G^ptWRJ52idu zuOJ%=hct7!hawVRVFgU5L4|D4-0ThzT%iT%328Tjyp6!x%?K+EP=-ja>(q% zIG6P-s7G;dz&+S*M48tJ6=`GN>WNP!j>7#;u->%PB}*e_$^cVu;CRwN{MAw6T}e+# z_2piBlR%&zp<}{kI?cd@TZ0Sz+ftPhMXl;SMyd>I$H4xtPw-avU+uOOTHhq4IdiD!OA+cL7}6=e=j^lH+0s&|6yHmi(RpZLYxF83aG_bW~3? zUX>^w4Eh}awdyzwvs3{G_-E`s3VOEti#?~FYxzGegLH^W_3eQ|znAJSHgty#kfl5& zxRJKI+V+Mz!2*_4Oa&yN(_=-bEup+=T5y}|!!UOs9%7bWW|5jLws`}pbvt-Yc%E!> zy#_cc)us3U+=cG$DVT#X>>x7v0oyBY8@(qBH4&6^j>S%qbtu8l;Jwr6g+(8UPMR5z zRvCaBe)}@4;0i!XJcUu~rw3{owEH9eQ2BLIezckg#p7IZ;yyeyA;Wvc?f4S~t0TvK zL1cPfW$gA(Mlx+zKI+K~nd=1X3CO~v9mV$2*Z1JFaa;w00{=<(0l&_1Dy}&8FL)(E-bvCey?))va+LW{G*jRprDz`pUMc%Fnb4sm+llEx#LkL>b=r}=oOnMiC;H=0)d+;_W z@rNZPG4>FlI0S=)CQN=$t~DAxexI?fRm$ItHqTQueZeeRqhPy+y62*=E1c004wn;D z*RpB`vnrw~J6EV5bC*=oETC*7WNbsg*sgaz{C(pGa+CfFyZW3Mgz{7UYU7_#ly-m* z&D|R5&0GOWLtCRl$P_5xbNvjc(K@I+NEPVW!5yRxOpyY%u zhkq|Uv#4A&w|=6dlnNLiE!Q$=HrJtbCnY(2WBC4bZJZ*1J6m7)w$3ng@)vUgfCm(N zH1*V4Yes@v!1zUtzh4KdEx$jNF_7OY0n2ac%d}Y1-J#6+RiqGy6MW)ywb*%ztuj-O z<<;HBU^`;2OIvoG50&1eh|G)RV~b!Q%>yz<`mOm_kNv)k(-TIf%s>TR*}(Ta{ygfe zCUQpV{`_{O`RH`JWr4Xj^6UL?#mgitbNmX&?)M?w$QdLRNF#E6TvTaKaQX90pE?jD za6m1kG-{qh?*~LU%Q1Pw7d>!jKel9Ee6Cnl|1U?E?EY8WHQnI)VH3DOPY{lDkpV`> z8$G8P6&v+m8rqswOOyxdkc=(pZyq6$sVnen2d9!0HzAq)^D!SXx?cakJi53gPV4Wc z{g9KrNeT|EX^HTvg}{nGqo5hs$^91D(VWMA0(uTN$`I`)28+`9wyqa#Y>D+}L^dO# z&bjraDQ}QHR)S`c`SuEuf(t&gBv+moI8y|ka^nbdOOZ%;`kz^lWGJt{au*vgFRs=| zM$cKd%v_u(DuURWDxB_nycccq32_WtE@7yaw=Dbszs_K|8NId24Vz}Yev6GRgkJc!Y9 zksPsBX%*Q0J=p?jo{jY33;D2>9Qrps*h0)nk1omzl~wC6lijJ!@?kM8+7YK;%*B%9~FQrc(<-+2uxq zgq+K^-FqXp}#?wF`S zU8xLwkA)O$1ZU6Z3{^qGD!EFKm>aa*hQi5H@&ZI@6cc`Qc%hsXy6ZcHOEFjTHh&WI zb{nFp?#g1AJLggAQF4`C!Jw7FjbN-K5%a|sr;Rykxb^l-1L;uVEKb!eh(BWy%sT)Y zLJqKhiF}OvGhICjO4HlN13{gqrwIK(HjUC)(=vO=jmIG$T)X?L)?ak`d~V#-zKOpr z+aJkqfZikm))BlpV6Z|m3m{S{@Ch#TtLsg529nSV^l2T~4MdF}&CTQ4a?o3R%at#o ztj>%#OxN~(#5(eCxiBgW4=y&;#(`@>^a6@ksq(roL7|o88vPShJm^H2f>$+P9{g}; zYPUBKQU2AOuIeQX?4%iSYikc*p?sMQp+Cl*Nq&8Z2p&uOG-9Stm?0rK{ngY|y*dS+ z4Df$TFlS*yx(GgJ?LGPN5EKP!X8*lz6YCV-Ti-=LtFo*`Tgh4BdF7BPjyyzmUXvc- zN1oo64nEg*0C7~YsiT>P_ECD>eamxK@!tbq2(G9O(geF9P1^pwyzvaVz{FolO?j(y zW$&PMjkkX8j@x3^A6f0&*mYU^TXKj3Q{S<@mmG!lu5?IInWg|$hW~aEIH&UYxF=L1 zo-%39_Gwc)7z|eKsn~?tx2AC$#h4pNasc?z!m#);h;%^;Y#zX1%}$~#!fmxwsJr8< z{sEaPcm7wh&9>XdMA~6u==cVa4iw06lq$e-aK*x956qq!!uu}%t`1lYQ~g8WqzA#TGN|*hgI8H0Y?#?b==3uove8LMm^@V&}4|!ao^@=>C zn>{@@Fcy4w9MeqlQ#T6W%yC>5YCR)VE*rG7L;~Q|wA?6hSODF^-E{>GBOe2*CIGBXxT*S6Ye(DZ9}IKOYumP7 zccQa%;3H)OQ2aW2;j}nQ76t)H8=4&;?lOp!ie4y8lCGm!_`Nk%i5g9r0s3>yTVcpW z@S%Xo`770qyl7z2YWET6JAxHM6e?gvb0#qnNWtB?ZLCo4PlG{!XLU__NCRdTSAlXU+f%80zxi`nN2$E~wti!6OpR3KJ!Kq~8SqqpHf{q22| z`GLqfv_lGqD$-iI58Wi@H5MSY9=I!YL@@jGs$47})v|Z%`UwUwl`{%B#53YVG|Xpf zD2G%8Wi*^CJ#>ZTn6|&^_@I!a*`N6&DJc#i!Ye(sUf32V?Uv3qCw`o!Yvy;yeBLR+ z*Dw)IwP*1E5oS+T)Dvl2&-z?1BA-Se3XdntL52Yx(OQ1P{D_A0Sk`}2 zx%-d6x!1U~sfexv`l}3E@p=TP&YbE+-E*ZX$~>~kNFTtY!j8W@*8X-F2%Io0nPN+B zOz6)J@m5%6%6YT@?HM62Ht0X%d<@Iv#nVS%kaP>2R@dX3V78^>0JFJ3j(Y5yw8_c1 z4z#qr=mL@q?DnXluXt1c3_UPu)y^KSCK&};$wO^iLF4yl*F zHF&(L{1a7@Z5!H9GjLxqVk|MD#bf_G#5L*FsP7hTwT*YJt;=&)=2QcU5cG6f$Yy3# zgE)1Lz_YU!=(4y?{?*sXzle9`eN;zKB%~6x+6o)EKy?jXu;a-p&Do^_M$dDmN~kS} z0uv?vg6Zbnw)t>Azj5vk=+e;?x5__qJ^F6YjYQLmk5&A3-zesmspXN$$%B(L94F51 zH)=lKZ{Sjz)H%Q5(VT!$xBaJ4n~=QSx%I|*$y$$AK`=z`;zVC7B6P5qXM2y zn=S-H^%~`c)=)!{GeFso_gC=aeJOdS-`5)DU7irDvS@$Iy ze;#2rf3z{cYNkb`pDY^x;0k5hzJ@qUz{N316BpiiZGBmXPFjSwIa-7CgQwc4c&nEZ?_9m-k?L$Yty|_z-vu#C)kocMXouv8R{*(1w zT-3vW;a98A?fKcmd-=bZmA~cu6uI^kX1gzp$adY1$UCc%$V==yv^i|jT&IrXpouK% z$L~BwYPqIwg-Kl_#j^VRS@2s>*LcbLjfq4|Wut7o2+N7UhZxSemJ%AT$|T8oJ}ZXG zyK!i44?S)d=P*TfKZ3f5NlEJuBYQP4aFR-|DROdyJcBH%jlMTFxTju@!-GJDp&H%2 z+6tY*&tJN-?IL%KlM=7;u8yqoZFfxqS*0WL>Btq7`o>Ezl7+*Cy-gr|quR5jc`96S?AOYMPHX%9QR@Xl?nSQ56VFRYgBdzT-qt`GHOXh?8EtO4xR8i(RY}#id z^@NfJqMATA>^E~ysjQN5zeV|EAjCH;H3c69h%2soygQj!UzPmr1_ zv@oWSS-sHW=-=cKb;;;xe=g=?wnahWCiKL7}0}X4dxch!4Im@_jYF1 zDMEDk4$7=x>dAm7G^b>5{+dSS^ap_b{{@4C42D}*sdMny2!1h~F#3Jhv)R%l<_$QII-;iqed{RIfe2H$F1qBtlwoSN=n+A%~c;wx&| znM(}v4O73fix{~QfD6rISx%jIB73ZQ;zxS8nSTf%afLmL#??peCG(NT>Xs|m!B7j@ zV?Rz*`w)f8cLTAVm_V5)H%$8OHsPKcM5<2`I}osx#4$i(vw;x+VraTt!Jg8axG#I{ zAEsx~0l`;Y3C-4Aq*SF8fRqOzdiN(oVpBtFxQVOK`x$Oe}}^b zIkauxmVF&_U%fIas-rNAr9St|YBBXk(h}wfA+?Oe>!@pkk-5m{t{jJk#j8>j5&L1~ zR#oWOx2Z^R_euVAE`z5hpCB?dfvyn49imYA;{hOnO*UpSUGqN&C^Lk`6}Z8VTdG=Y z_docsv5@6ieNt>2>%9lJ+<>u;Lc}b1hkiRRssSo%rkDuduto(h3+8x_ zQppUiSf*_TTNArSO%){*DvsSJaV>196MXtPdfoJ5{~-yF^B~5YumlLz?Mb7+@sS5x zP4v7);4z+SyFe-Zx1g$k{pp4+v0#lrVOS#1{uh+u=cv4`>(MGRR1R^sMl-#{Tj*Z%I?q0-41!MQe8CPBPp;SCym#d%y? zmU~PA8PPR>yz2js_=kJNYt{MkmmU)B)yDIJH*Z}Uv&VbRR~>qUOJ9u>LE40xl6J`2 za1wxu0f|UDtgWqUcbdi8exB{)S#L^2>=YFo6K=ve~X{fviK1sDO8Am+O zO7j3yTA7}og&L_=5xw`YQ!UoEoF>aLh}(jHub<4=QG#yL+gd&`&~ci^BPT$-S@8Xz~xtF#(oiO|UyTZD?AIF>>JXAEZ?h6C`GT!y^-8SLET^Plb z6MI25o#0CA!-x|TH9$rQUnLW{PpYi-G6i_s(Ijx-UK}8o>{lE2|B9r$nWPCMoZ3{A zKCDtFGzNdSpozec#&I8cln&E~kG})B7>&KU*o00?Y&{EDUjY2z3;;IMK-_E5mY^2O zxn}dvCAbSv0_m_sPu`wehH3{iPpF6FzBudv18n*PipB*4aLseah3If)`c%ET)zzLC z@EpL-YzV=e|9il0WZLdAX23LMc8jB}Zx%ZiB$?w)riS&hB)AJ!P%3}Y3`eW7_&yGk znaue?3Pv}tE^{{+?sP4;E}D;}7QU*|Ad5gCr$L*ZGD%A_)b>{cWCAy?h?~}atesjS zJee{(Y*$H^)U|9jc*xn0kHV)n;RRw6)u0^VdI1^NJ7B&wN_oLJ=VZ;g0Tdxx5NGr?TE%r%PXYzYLMyBn4N?O`SE)0}eleML2VIG}Duc5`ELEyvn zZ(!m6kOJaB4F9C!WHJdzw7}Baz?DQ6S>mC4Ql|yhtBnUD4k*{5gx-z&zdsFptdEZ=>(# zguP-$s7KhOr)RW(nm0o5%*e!?$!68YMx^)elPR@l&7o24=HP-MTjP~MZ06Tn zO#iE7i4fw!(jFyMi~L0|EyT(9s8PAUL|ipRue$^W;;(r{qSqkGSHngM8;fN?-vp6X zToohGyft+5A2)g;9L?3^LR>&7`BVkN@UN$KpemrJgj?%>mf?E_KoR;7S!X8crc>BmkU%-2tAgrj249Fg%M|q;xFX{ zKTqpw2Y96yDIKP!kFD4F_3`<|8qpzEmD7Q9j#q>kw27PVe7! zU!`lEENmBKoPi1%`pWg{esrp0mYqz^U^q(q4yELa*YBa9U8M8%|xsDwyH!N@Up?^cfLt?l0fNIi!n5y&4*T(Fh6 zJK=_|nLGi^2RVNFeR#FrxJv)5CU?gxgswUx%hoI|!`tf!#r{D6eXXPoqH9Lkn8HI* z($o>j0X+F8jp1E)Rw$=jgHz!>3paZ`xg;ksT=*>tDmN`)cJ8uE-=le}##RXCp74bs z!`qg6Rxb8>$bIpNAKN*m+s&&f z*B)B09zA&5C@$!WTk>7Pa{0;B4FkN?VK9xPq}zL`IJY-&WYB7DAck_1P?pt$m-#(w z9~nZ9&SK28yH`fUu3)3&UQVw*9dk3P4-$KR9U*uBD`I4>}JIQ0xeqUCU&Y#KRmZ^pUQ3XU1i6$w|ZhvY}&J%yjMy91?nqnW~ZDzJcb1 zmC9|pu*(;4qimIAbQnh22^-#n36QHM%A{zn)+>n5u1!|?GgDml0Hq~n`I$4`>75hZ z9oxLm1%s|NFtJ{MVI==lB3Du=lLNhg;i^7200=&Hft$qSSYExa!;mfB6e_x@3q~Pb zL@0dg1F)a6Cj}KNd?fY#Os`REGqiC}`u-rVWn3iAGVjsoM=-j~;|I5**N5>6Zk2nD zcQcOo@hxouWB?O0TCVoUMwb4X?}@%PkyphVb&b-k<8(n*O-t`=w|0!p^=5}gNQpZJ zAS!8pcRklH5dt~1S*;}Vf4ASFp~L(lcP0C$b_=V?8^bJ&U=PA1L&E#z;Tcm)&<~bq z+d^EyY*NoK_8-NtMR=fi0!93)1F|Mm3vmX+7HG%q!^-Ra{%50mj`&3%Uz{kuwyLTi z)+!t|3nErR*6*`@-OD^I`^nWDb{>LaAh3CiP4z*geR-K| z8B-K(>OtPk_(FmnHHs(+=j&@nb+|U)NG0730KJgU3e!VuD;cJUx{YjmG+>3g^oWO% z^J|dIcM)x*5Zx_mw>*Y}$L^i&2K&qqqbb_UZs)kUF5 z+T?Z;p-3ce9xvZ~0pkC)`N>R<0jcB^E}zj%05nwr$;F0rRV5ilx8=cH!bBnNi$L*eDbog`|f25+vNcDhPm4?y_6**0+;C zO)7d&Hw}CS97G?$Xv^f3mZyv1R}-U_W*(OHQYPAZ6ch-c4}?Wnl#$m;>Ig7zXGvd9 z9b0jii}d%F-P*gfX{Zr(L`RR3Fg#eX;!AV~i|;$1j9GL}DUF`cc|o0s;TC)K_g_Vb zJK00V`Oi?FD~wwLDEtQ0E-z8s`NqhM4#ythG%A%OHzjB2Gg21zV#!Gk_xJn5TQlhu z4$e!(6FNSfq%@tXrZWQTNzS6zNnU}xVzmkS&^p;3|%wFGscP{#NNdqUS-YNaBZX$d`Hj zb)_?{j}hTgUR?1ZeBV`mE60L+SRn}SJrdc>;+-4MPlXn~seuw83kFg;G`+aNxS!*6 zcBD0}=6OSIF^!ryP>_ZVQeN+H9@ifvBZvMFs9bb~PJ5!4)L1^>S>oL;DgZ#StDN zEB%}z##<(EYbFZmBi}gmiBn8WKt3Sur+>+pzQ*4nReQ`y&GL9{E7z z-cx(N@wTHSQDBFrIYq^Q%;!yMROgG8)gr_eTPS6Nb$$P99vKc0Wmpg^Dc@8{sBwMI zR+vJv%f1c077}(Lr2egssYCh?xk8fLq!`he{TNzc`+NCC5@w+DvY;KT#Rw-tRHCx{ zP9xq_wt!T8>o49R#^*C33@2Aj*8`qnhM{9ktC-CQ%3+?H@3=uWn|z6Vh`}bi6JuR7 zX%XDbSbJR~N6JInDYdfaYs$E=OV;g!HTu!+E9kT!g;zS)*QhFULV{$pZ)90Lbb@{K zH6VnP{Hxw3O;2#Xz%G~2wWsh8rG1@Pa?qKf#mPqd`(yK~)|oec(jXXO+=1jzCrUE^ zBixb_x22b#a-VNX=%t2w6&pm8LS^7ht^7|e&sN}DItvcupM-5wEfNg6m&F?k$f`RP znMf@YFL);vgeOP5a6r*+=(3@ZKnPkh%&3?#)`G3cNi+F4L~LK#mbK_Vb}0)BD{vNM z3Ys2{UGPG-zJ{&f1JpQ>`h9s$^sBXHMurLHzsxLQE#xe-`;7pds(cGf(jU_Vdhg}4 z5XD-Bd18c{I-r~7O2PPU`8UC1whRBXQxM=RZpnr5D40W{x{(%Vf_oGQLx*)qe>!^R z*$Cp>jJ&z9*!5&b`82pGJcEJksZXF89Bid7tf!q1K|3BlEyZ>wY{g{q0!En4t$=uS z66Y9O;3)i5CD_0E;#R$VzF#z5!osmu34+LRhT<78$T<~RbN|6<4d}~@Bgq?nhoA|y zKC&JyoZFFu5S6^fMe$c(xTfSE3+>#J4X#2lfdkAXBwstJ#$qLB>f`QEI}H1YrdGct z>;f#)J3=H5{~OnZC765O!DF5=bUI5z@tI9>Ef>4`CvnJTSg{FLO|KdP$P;Vs1U1aAv_D# zE;8z4qrf}3gEJvj*0fTk0E2d#+O@SPTKtNoaR+DY(=;nlgJd+H;=*n&PH#(O?85ZBTJwJ2AKiN$0f;6tQ&GM&XDv)X9|zLthx@m*{zQusP2bm}ISS=3?)^Z{Ocr9L3&T7- zcRPe#MCmnqb|m^uC|!^$S_t@qyCDEH!2qxGB~Y4$kD;zeDP@Jcd)$9p=dL73w&y%e zK$n|R4D0qYBN0>V0KAMJ`%^}IMmg9HaK9eBTj!k)(b-jbwXlbnJiX1uA|RWp0MQwK zFy}2{hiLC{_2XPNf#AL&4^+_Kh+B67LQ4{RQD{<$!v=KsL$hDXtZ4Q7PrZu=7^8}ABf-H)RE*+ z7ixiJ0EI}fJ~}hh6rb?m@Ku!aYFBS|?g(j7fJ}T|1GvZFwG)g5ydTOHpYGAvB+wRs zL%pEa58xz9crMO7+yN)4stgcM{BajBnnw9a&Uc~DxJMS)=VW zl3hdTswPaJ&P%7%#j=-Hy#SYvZ9n$37wy8w8Y;Jr^`Pd(sA- z&oTPfX|V|q4K+Mypz)G!B3Pna?PrJBeWVyZtNHf&!tHA}b>+ms3X+K$_szGu{DgM9 z)@a6>VW@B}pzAUA@W-5n(ZH->yx1;ShZ<2ck%k@ulg`bY z(ovy=pTX6}Flsg{fgk?2a6}Ld3-d6o;UwGElZo7!joc?B8T1UXKgX`WkJ9PeJHn;D zZ^G7^r~hGjw>=cS{6D8dN=3EawiSVfSe?6xd&!Gr+oozY!_<;(iR$lK6_tn-_7-s~ zjy->Gz-J=32KNp*^kUdM^zZjkjG-N4AEn56*s_?xZ_#?od|yo1OxIVr@N*Q~cIZfO zCvbM+LCCCG3U!A05i)J)D7}HGF+KZ2VOWx9@`cb)!k7!{JGxQd|BXzbJ#kAMRFbT*q+wj|aF$7DsfTP#$ubz|DmG3U&rq!t$^c7?Hn({1jHJK|7E zE|*)@rCMyIY+^d!Ivd|ZtGZOe+E6MW_sxKU9G}A|fRk{Ujbze7(6zYH7m%+@ryaIl z%f-jZX>-{9wrl%}K)egLohQBp<_rg3mYGL%uiwQG9s?vx+7g`#v5HKx>q0e36h14E zigW};FY3Eb5m#Vkc+IZCP5=t}>td#Vgw;c-vY;%|GW|+9MdE48Gj}a$%~U4dgRvJs~Dz*&H=bWX>=o& z`wR?v_QD@zA0xOSJ${3wLKhFtztF;wose9Q%Y2&Geid+vf$Z;@a(5YxF#;8kzl?!h z0f|h>FJpu)L3?Vns1cbin7%*_{fHg8TL=HlKTA?hv;xyaHj0)&IYJw8Eia)4s!Q@b z;vYU7qf9tg1%V6W{)K2Ya?)UB)^$=Oz|jo>lOu@{92f)7Hb2>;yD@fWmhfdUp<SQE%cg4*dbi=->K+R<_qce!I_B?ayhiW?{f-3n?>4Ly#PNx0;36w|5T7*|M+ zlknMaV3pc+`o?w@II@c9gW01^tj6o6dA5OS+BWu*Ekxhi$uOH|2elL8;pF%_oP=U; zr5%MTH)zesDMmuC{C0grna$ZyOH3XHPG#HVbOO=r2fG=N8b1F+GCgV`UWohQZvHUa z&rvGXz7O1@`;5Kffr|{$7?SW|fVnlkwmY^I4lycWkBzkqVDO)iaT>&DBWA2oFQkJ# ztKvZ_O$?>CL4Zf!Jfp<0)sNJMovtiu|3~d_mLk?*&G=-|oSuiz!agy(hv%-$;=dht z2kb;#2{2OtP@jC{j!Rm``z%OO%FhOF-0>s+2kp73Hvap#7I6a+qtP}Pn+?DJ(!W%@gb!dfUMbvssf--6E2G$Bh;C*e2%hvcWFJRiFl!Tn4OTlDh!HfC{i*cep ztGWSn=J)VZh&8%Di%QHyAs&AX-=pi=QQD}Iip}Y2JOBdVh!bGWp5>6Ow~tuq=HYBw z)#53^R72R)h(`883>1LSw^_n=BX$7lN^YQO+*k3LgCilsI?wC-3+?vtBXqVFHJLi* z$HjmQx2a5d_oD>P$5yvb{^#x3?6zSqid)Y-BI{P#Ol!uHD7klj?!@>Rx$U`_UiDr) zR8k&+6!|a;Cz+FPxJdM94{rG!e|>qEDc+~aA2tXo%ZIkKrp5Nh{>LxMebNj-AAF}d zf^r&D1~SO;9w~!_{@?h=4R4GulMt3U&1$k-~SyQQJ-jKT{hgwp~ z?R*(Vrex?Y`Le;BYdxV|IKk_eR(7oqUd9`KFBO_6X$&cY-|5Agz z)s9RSVv^(+r`k(&k9w6TXY=iiiTt8PceA5Uh+xUL_!6_ImEi`$h9Amqtb=fYx~k>> zuHHDS9#`0aX8uMY>YHzP7z&SYYxpMG)t$OXUH*8yDT`c$M7a1awEh=qrLucopokZ0 zvL(R<2aDlfP`}>KWNnXH+fV1**;urawM+DY)k?S*Wni!{G@s1iDNYi ztf;?T6upEe7Pw@R&ll1>hfV^CA!_`0+lqRE)Ci=9t({wT0D-z< zZQg%ms`y}`On|;fD`ICKZST|jRTqaI9!*IKA{&L@*n$D3PRYyJ*zIXE1#o(_5TN$I z`?RSFHPi3nsd2sx(T;`tN6q1n1!Nlax=E18$9tvXE{ zTf6Oqtt|O|amDC{WzTwmzf|y}XUDtyvD;`mrHK8)L#=%O{ft?j)np_J^KkZ?4#miI z{#%Pq-F@3d%cb*2<2~dPc32A@gAq_;DhmpxM}sIJbR~M~26A9scNd%GL-T$8T+UAr ztys3B>)+=YT!=0Ug9T^ELsji_i`*r^?|il3IMXQ&^Dx@dDAe!Q zA3T*pQT{y2U$Ys3*|+q8Y<$8=48D9V1-A~k7<6V<(ygjJ zr4x?2Y9(5L4d(E(a|u`T>~EVKW3s0U^?_t0H{cq9{4fCfg#UIm>Vlf0s$HJcS6(D9 zSN}()e`Ow_;WjWNd9CccMcEo+QEj};{q#D_SQR+Y6Zk0)Q}IubgaT&f|NEN84FES% zn~e3k?x7|JggTL9qHRzF`^1!@TINKD7Phy6cQ?>0#vI{l0{lvr6!Sz%(6JK29IJX| zCj-jHO(dSZWb1|MUWU#>p@N&;mTwddURjO#r~+2kWInpYo|^vCGL(OHI@z>RIDI zSjFM_Nq=400|h9Bg=tzIq`!OZh`3O4Q#-OI%Zad8#^==Fqwa}?e9IUMW3H83Uqtc` zLkwr-!5bH=l!_e|7qh?^br3s;$b}-F$B`VIPV7n|FOt4;QZlg9%X7Kq6mgkUK2g-ZMm-xRifQf?9izZ+< zL`&N*p3txlBvOHE1(PB4ObK10F|-U9Nny>C5`(~qvH$BJs{sd3^)caFS`=)-fjL#;$6b2x*0!@siN%TS2i~E>{ljqm{WDqWxa3w^c z$tINP$dNkrWj!P1m}?2AF#cqLEfFpTGaoBIsTv7}xu4U@I=!>ofd3_uH+V30W#MCTb`FgCc7GX*zj5Oyjt?_S>jUz9+XD8-Y!`n3#gsWsWJkATfrxyu;$$ zNLZ*FDi#txZ)7-~DjZIUoK}!@Iqc*m*sVrPRd9({RnigziPlorJ9EgRr(_lkqo2oR&{=M>oE5@t$1h{KsfTM~u*iEPEYI_yry3yj{@>+@%4F z%Ks{hQku!eDX7VS!5a4Pe-h9T$|_O@k`*UzYf_e2{m6ald*;u)@6N!zzgpnoE8b41 zp)t_W0gh9>%ayAg9C8Cj-zODvo&Jg4)xD)whF~w-eC4PYtQ|f$yypib6M>1_3FE~- z{lTNlG)+kf+xQ$2K0G}AS=Ag$$CBtprmeJN=}VLy-C0-XmgTfMx~N4+(h?JJKY>*x z8|0E~+4|ud^6|WhYZGj{DXoUz=_(!qi zzsh5;;ELDyX4sD!2S;idhZO>u$ea8~h`&^$Q>;Z=KB+>)yl&WOOU>?{z-sn1l1yhu zLeM$w=plCGY7*=fm+^l{3yOdDoLGO#XYZJ?6opiY-ij73WWL1m#G5df{9z1xKpm;H z1eKA3NN%B42Y26f(}S+>FFd&fFtgws2tCl1HEgu32n5InaYNnd0`V zFHP)miN*-Y1O9t`E>OK2sSw4>o75t zefAMQ(+P4j(X@Maz6M(Qm!C@iJCPxgFk8gEnq3|6U&`=j5dG(4`?KUqukm2l-qI)(s4^DAHS z5X7hZ#L`o=A(muPt_3D5QltjIZqRmcn#AefW^@T)&p%@JbnWx z;B@WX{})zG?w1f3{=7|)t#o!$FA-DZdswkgG&wnz{dcVNz7SQGZQ|68RGKORQP|w1 zUv$9^dn9@X-niXnhMbfL&VLf_n+$f%6!&=^q{&}fK@6)!2I4BH6EOcaaK)?C(gs8; zXrYQ$9V8MT(_f^bq)=0cNjf2-@KS;}o&)hn3UYK$d_@NJ%Bi_)r|8Ub7)+K##f40f zh+De8F<)~VI1|c`fP;&O9dvLwR=eNplA0QH=JTaAo;t$&=1T~6ugAt02f@6$h2V?_ z97gGhP1!*c-S$+gPlpPJl>Vm`T!ooz$;ds_U&)=#b)K0IlF!MR1B@-4vsP49+)ue0+nv=oVvA*b(TAz9yg+B{3e+v}@-ePiYGOgiqa0tu+ zn}I`1=LpGVEm{t%!>`gfFk6%tR^ayqcrb9{z#{qDNOT_U`HMcAU_Yr+SYOwWf#3BB z6Z7FnIsU-}$^$SG8q^Ms_en-~S=d>jTtwP#fp4ltq>F%b?}v8>1` z8X8(bJQ2`Ej~MM^6R&$(r_8vG8C`x*XZ!zxu^bt`o=ZxH$(}#yzY@$qf1ZXwMF7ng zH;>XnjRxiguf{?rt^NH?sViFXa z2iUOw3$!lXpl|Z_^$h)jE7+KRK)IbMzNLRu5gm1Me>bdr5pC_mNU&v!{EckI+xk{g z&Tm^HVuWjYbP7u1gZr}y!C{#bmQ`Do;5D)>=Zj$jW-=<%k1f2|P7(j@u#~0qh4{qE zNG1y+m*aL)q5Nco|GsFgHA1VXr(zytB;Fo(82B>fQ1Z2uK^n!Y17SfNLHxA@?@V;O zv~|cBW{0ATY@;g1%J5WMov?aP1W#p%vf5-*(pwZFH6XxS#{8$Sx-t}6X5#0eq|R<7 z8*!F{*M)ZW(H$mVxSB&OdUp+MpMoK?XiFeGksnU^tQ59}MP>5u<1%oNj0`RL$qd*z ztj_bzd;eDrM; z&`a_xijO@h^)IUDnYMdF1ucRh!aXQc9;X%on90X)Oyhz;Bf1wy)+N0*x&8f=5gpI`&<*ax!H^%iOw>v{ztE*5I_(7yK4>S9CUPGqaiwd@Pc;xU8@nEZjbM^wE7H3 zae8LAb5VvzGjpZZjTBHX+%OG=TXiXrv@x^@ZlZ1s^oJOa0q?F1G)PSE`pV+gpMX;` zn5~0W906+Y%OmwKMK6q4MOGXGIwr>rVZub6*15QJB@2`RHsHbi1!nm zW`_+V(K6YyvNVvsa&o`NbQxyfn+fenSVG03`IRl)X0|&cM6i$F#=`-7?Z7cTEfhsX z^|4(7YnWq0^#sI!jac-6R#6OdRDpM>d3~I1I|0R@w7|zP@Z+f4fFM&_;$2H6cu9C4 zUuZI*@p!Ns_q4ua&dtp> z>mfQp&NPs*Iesm`_UzlRix_yxEfX*wV2@h+_)uT8?jtU%Z+6I=wW5=?O}`@@^y`hs zWltN@v}qNvy>GL2bQBM{AW>Mh8AaGVeZyE>h*-SuQ>>FrBfUCSyeXmM9|qMIYRI2I zvR@mVX+vrFE*=lM6HDg98sNa@1EE5{P@YO?Ym&Fn$}G95Nlb7WbPyl<2pdQ{uxZDy zsv_{#-#|8NDfj5@17~X&U|Zi$z|*Jsf5Cmlut)%>1>6S1g*2WS1CrFf8i}7BZnAa! z*Fjx(h{OdR26QXcJ4~;Vpsq~`;y7WzNl0=$)%U!R&jR^?j1|1cW>Jvp(*;JyJcW3B zr}wXFNoe%0zUqYCdL+}K;4)Z3ws&y<(Ri91pMZ+y0DVfr=((^KGcxh8Xu`1Y@5hq@ zF1^NBW~8)GevvWH#$S&r1YgeG;nrWgzmNTECLDSa(c73XGP1d6K`B_59D6{4rwFy$ za`L;O5g2>B&=xwR1mflyx%(FL4r)J0@;b1PARrRKxo;csvZacbNXAOQmMe*wK+4JK zS|6PA!144AQ*z0qxc!A3kz=(^%j1SS3z<0zXGp79l=%N%F1H?+m9hQJU$IdUQbX2r zLOn6eZRC9T)pI5dh!Q*I03|#X=F+{R#{G8OlStP2th~aZaJ_WPi3Zi?;~l*WGlylF z7{zn7iPsJ&+1(gfz?D<=$^l22uXQcA3yf>R_@!*VY@2Q&u~y%x%mx(e86GD{mUN>N zG_gki4|y0VK$M1Ei+G?rAjz64@YzJy&xabgn#d^b?{YI2acqc8GR-X~IVo^!4ya1||K+fO* zIqHNRqXc4@ws9I_4227u?2CNyv5xoXoc1YLIX+T=3Nbq9}*hZrznf4kt%E%QX;6Gy&i8K&bQKj_j3!qk`Y5c>{o zoK#3k$~E)$_Q>5&`i^4B#lJ3zhU^+ofE?D&)0vr?^@Z=Qge*Ywto(6k+V>=&`AORa zK{Pr;duB!=geMlPcdf2xgs~9%l>j!V;pCzUwLpS^~>)bi$Q+pV?dgNdicje<^C*O8|ZDPw*gT?D%PyB-5fD zzfqgB@>YRiwMy~?L)|+e*`a%Z6y_?KHGa2R*siwW%tm_!8l~H#X zgABZ$mXv0*i#6&d_r{kjt;)Y!6y|G?&V9{r95l-0x3b`^LMoj`Av=?c1rx*e|$cy z7dla>SaJL?jg&?4YO#~#!u$BBSA6x`&^JjHJ-B|x_Z-o4jsX0Xc>clgR9~$wO?i45v5&ff@wwO`@q9 z`9!_ga=$_AwP0+yC-eD1eQ0z~k$_8}u{?U`vP?J4@e*+(Z8xASI1f_ET^txyX+K|L zp=h^N89}G8+|ke9Z5d53X1xLoi?< zzRC9I^tBQEeUff>;He;4dIXN^76&;0)6zzasi@x$()cGO8ba3JD~!MAV7Vl)U)MVT z_7ffm4klrLmY=1(ny)Uu8Y4UjYiCdt6p&TJfF*(V->QV$p>hY9{<>J`Wo-$7T?x#p zY%S`4FF)Ofa!)yZgSU3bhYGG5^iZsL_oiNkLar4gp+)^0)n3aay@{y_A%$KsTX{lC zkcl$s3LO-+<1^cVrNw3mlRBG0im*=#4tjD3_Pd-apm4V_Hh4}t!^b2Mou|rdrD_kf=eQkRx?bT=bz#hf? zyo(UyIT1&61W!4LxJcGjCg)u3laBK8u1B4-DIFeLTT}w zg#ZZE9LxCuSfma~UI{nBaW+NlEdR!FXjIt9Ld&om2Ta)3Kwy-{1n&RQO!$F17m76o zi^C0d|BS(dtglLw#yIU1GF94CLL(WXmsTJEt9$o4Xt!u@|1Xyr`z#Z&(#5BrB#U4F zK}|vBOi}mZ60pAf9B{Ld9#l_sA_9BC!Aj0#^h%pzWUC}0Y0 z&c(XKcZS*21euP{L{4pbF(kcL18`rlFn3zs*#q|mGErnG)pUqD=N2)&!6s<0x8jFh9-?#`Y#a0-9;N?p(P>wxXdgTa9H9Qnn8siX2a6;z*QaEjV>O04zYmko#&8=~ zC*d9>TQ@S z!BJnHR`zPH$eh#i<$Cjm>aw{uRHEbvy6AFauk9n$=r^XN#v&7pnGx6`4b|^MHMqhl zh`CS%C2B=~tuj=~bOrjj$B`b*$KYkjb_!kWjVSyV$!u(5En{M5GMB4-8;NVLyNhjV z()nu1S-LB{OwuphN!O}zp3J2)L?YF{OyB*Tm{TZS6&A#0+(9(Kf6S2yF_}~HN;GTu zqW%37j3lDM#|4tl??To%gOBWd#r35~vx~hsSFa2$$U1w62N4`*xYq-hZj;EtV=2#lusdB^`h! z4dH&prvsB>0(&|~{@2GFu|)%iLGFU;M@OGG!!Pf(NKbl<+8p8}DnR|$5#{<0GWxmh z+*8u4vYmCbyNs+=q(BuHO<$Z5r{}6%|96>5E$<1WMU8KrDp1@gA@2)ahtXki1_kG; zMT%;^T+!RXl}q;jz{XroXpVg0J!f%1+C_y#A3L!C49VI#w5e$41d8Ujr>20+)*sC_ z9~kf<#kMqQkuu2Vaq81|KIA^!2Y-0t>t_1A|0;kTVLcBWxEVfcW*Lj!flpph%QuLp z?Au%cr*eak%$zueRRF!RvEpt#jTk6=c^bb|JM*Le+y6uGhG^A~rwmZ4>l(>MsiFa|mWW`M#L zm$?*Yo_KBDmg<=#yGba=2gp-H$cWz?S0uC+Z42NqwFg{#<^3LMqgM0-QdX78(X3J( z2K(o`N+8c72|_y{U?I!2!xh+?^B;iOQe+6ttY)t4eMi4o9~P_V2RfXU4!DAIpm9o+ zf$Z&e1V~s~a=bStT>3Wg0R^?t--8kqZKFdDi^S~7I5HK&My<1E;C2x^Y-T5gB_*-< z#v4G(Y!Z%nwWPPRb_Qu@is&TNZAC$!5h5QMsw}kf-XT|fYwMsG@lfu0Y~W&yEkK$N zHZiYM9dPB(l*E}(m_E!>ML(R3$|5*w4Bohyl$8g^4b5EH_X=Z?eKY=H=w=-ctw@Y2 zIpNihNq7Cslfg8|s0_0NTqP;T84S`{ieQIg#ni56XCnNjrTZ>}n9Jy+{9+DnTP2)V ziM$KI;SLFtVr5QV?4!=^%~kmu>V`hm z@UHIl^$-R zdsK8In6-A7WeNtKEpBmEiNmud{Jh*MTZm|oz{hK=zPW>stP5M9o}9l{F1l0ML%0z1 zUzJS7wSEh$xWw_^pX?eZC}4aML$9utU(i!Pu0C`R#tKm+p3CbJ1r<{a37e0_cDQ$jhv!uut zsc_HvUIxfB&Vtuj8+rn!bL%_|gd(C2cyQdA0{qmx-^U*D4c!Ddnl?TD8;NW`Gm8k- zYUGLPgjV?EvtIhl3+9Xvf!HtoROl%xZp+oG&DYuz9T>Ey!bj2ebci3Y{0&fG@i@!t zGM#3m>=Q+y(w?KSsE*1s)(N#j{lyjUSTL7FftxaQvFD=sIdh`sR7rb|R~(w=^_{c| z=qSi=n`cufuPyOWhKtefQNMAz6+h#1nIAg&sHJ3tuoAxEo-`{IX%)D(bZEC6a&W5M7xU{HaJWpW0pyz z%tK-JxzLxI{G@h-;#*Wl9)x=|Q!3at02QlcsI{=y+YyEh*bik4IE2~oQcR9Wsc#CS zjLseQiQHR4+eYkhu@Oi6lu20c>FwrqzTT-5+4x0s-57CEjE7Ft-_Bd$jilgP^&U?@ z5GxvpKt`}`p{YX-&?@2R+Yk+P*acZKz8*jsm1C(bfd#y;$8f8DK8b_N_z3FyXBTD3kBA<2C*ha+XW50`CV_W*$!ereg9%&fTn$JJm<$o3f*PX2}Q+Tf? zDFQJBPSlZXUB9QE>R{@W0VNuHEvR0eTmo1;f^UeFom;A?+Q;Wo8+E_B9o!pC3M_{0_cuoQPGa2V1%)^$JB0^p z0BiG1N{I?&fg)wUg~m_JxJ8@Wa-0x56VAZPOfg8K3#>J8U!B?K@4TPZ3xjx#A`)k& z)=}7K8k(PZ5ETxqjH|kLqWzr@MDNX+;I3>86ACLLbK?LlMl8!t3Q*3dJk`-!jx!vc z)SgyyQM}>H`_?bdZ0wjxdK*)dfl;UJIYs^ZCTr+b%WUku`D4|W9?6m}a_(G$9_bu% z(M<(bfsdo>ZRNDpB6&0o<*61cm|VXpePWaJTho_wL;-dZOt~u#e%5dA6FnVaaaMv+ zqDJWVGGr0?82msQjVlV~K{<@%uv4{KN}ms36>R7&1eN;;K2dnAr^JqXNrmmFk31Qc zYO5-oEJMgW-=W-7n|?hhynQgXzSm?vL7H->j~(S5)Cc4W_>RkUo<=)?R@5KojSfWz zGh6y#gLUwD_fD|xQUQVeaI2{BqKuX3-qGXb&aC_RD@{-1>Ir1IiV$Hu zFSivX_7ehkW4)I+cIAFg3uPVt7~O5_cX@=p_3{+(8qN0sq5t3B+OB+eipUAGJS6GP zbkB{*@kQ!b$_g1RwR^;HwSNH7JVD6a;uP4b>cEm}e}JZC_Gh3?M|jc!ku*D50Segu zEFGP4BD~Q!p+W8*KKn1|{CK7fKD}c99^A;VjvS=7;j$a5x=GE-q9}9Favve{yVJof z&AN)&Wh6FMOwwyn49dM%Kx31nE~YLkf($=*IHoE|f$d({nPtQBaUp>ATd?thz;&|z zb3+drs{xKB<+7D)5xu**BDCWZ;6=p5ubHr|gUf`#2^b^5R=5XM^_B14it%2lqoLUC zHZLRepD?A@h*K3p;V%zvP;W*0kJ!VMmCb;NSQ<= zJF@VOtqRR>G8h=`8&u9Au$)U9w)JkQA*+7~xs&dNR??qrJ1rMsswLokZtJkvC}Z|q zh`59t47+m=CG#ZRR`Gr@mNedn4Oj>TT@w}fN!4V@FwEjmUZoh<`XR;{+iqv9*((`< zrj>+5KKN=c4c}dLc`ejuUlPmo&DCR&w?Mrh^c-*D{S6Q@-J)aZT?`^ftd)OB(98@C zLAdNi=2#d%lNPsWA;(?MzF!Ln>5ph<*%njUoMD=-M3u9p-^)X@JODEfPI})81K(p7 zBY%nAn+rj;Ve3~xL~a21!SOdqAUL#JWdUNvLF~ldHolhZ*y?(HLvqqGlX9R&@+o}F zW&CX{!|u6v2)jvuZ=*<8IG}F)KQXm3(^&(oaaETL!8Zcp*ViWW@mg2LCgJLn-y753 zKydt^yW)Jm4li!s1iMa&$Rt&OT!`%*U^yWW&X9o`UXG3YJ&|W-U!wK0ESXh5dx4+= z99}86t7+fN!7|{{wSdFFXr3?AN-6z0u8>URDNg;ti8f&W!Lb0X80&> zQUc>?V+i2q2fV(v4_={@1k@7%WRVKDkd%l&WogTQ_qdZDqR}0*u2QHrj~*20m_jC< zEfe+q5GDlM@fhsoLJ!ex7&w;*EA)432WZ-o_Za%Td3(1vTY|*N<#t$T7BF=oFj#xC zCn1e16EXJY279q-(FLa&Ee+iBQD9rgU7F}i4Gzz$dyp>{i&_dg<(R#Q`Uua>X?J)* z%=3K=92QJ#3vc{!wy$*E#g}&nqkCi2b#l95aL1w|9)`LXbKsl8=Iy-elcZtIbYAx{ z2}84Q{GH`sW*Ju1i3-xZRVE|oNvjj_#}cD_(fx-#?qF<})jGgUXIp*%d}J-S*J2(& zy4GD|0Vx@DMLDZXTp!I?9<6@Ld!n8DDt=1iET}Q~V@Wq441hug5-^CPE=1i|dZO7h zcXI9bG5ts2OOe$m>}rT#Xd6RdASo4Dt*&ax!my!mkrnE;a`*aeT`-52_ZQTX3Vp2y z1f~UX%?wps@gx&90kH1{Ja@(=QQ{dmh@3t}1Q>?Yf}sVvDkm8A?lU7>qsB9ceK!6@ zJK?+G%?|&qQ~kHX^~+u%XH66SM{$BWkYN?8YY7)|7Un(x-8y8@o>B53^$*A*$63&7 zb}qPTsJwp>?7QV4NDDcJjohNw)b$($tQk{eE2*j|*j>H%>q>Nsvokdn{GAu#Q1*6l z26XEbZi^ZJA`2xbXDc4xVdri2;{V8a;$ZE6g-x`{p|uo!EqLfq*URI^V^xCN(nmTi z1o6h)ZIKCBm@Rh-jtK>6XzyfRfP4ePnW27V9==CH?-SffJG0ZYdZibrRc zH5eU;M2LOHt-69Cie9ku3A$qW0XK_xA{n!saMqe?p*Dq8=AE>wbz0#B6PgNgYSFWs zv@E4LS8AM{sqM5-O(yIRO=65O1hZ4_;UrGkM>+Qjtv@%%MHEhi`p}m}3o4&a*oGg^ z%&yrM8Bf1HlcXN3QMg%CFjl4(V(!Y!pI=9XzNwH*Wwl-gv*%ez7joC_5J8aUPn62G zFX=0|C3?}Q#F;+whNTH`k~i6vg>AgeNothQ=0!7Jn?f@?T5m4;^j=8V#NstezstnI zbmG_Ri+@(%DwaU$mGlkU%*(eNum;So2qLdh8L096z zAp+-WG=)(Xv?3E0apfXK^XrDL`R9tWNhuIf`%Cv`Dm=#$ixb`PE2#@)RL0DMf}I-K z`eUGy?cs>U0O76))5(TUbHUb=7y%7eR(x)o#VdKekew`Sy4Em?CW4L3a$0;7M%kF+ zrG~r@|L#xmm@v$!p+%_&US1g^UvAf=lixwY?@LV)k?mA(KiKD27NfavUenldN_eJt zI@QgdRVtPj=VLRTYvC1AgO{NJ?GHds!evzX|1WmEtn*ePVI53T`o9Yf zf7xW!PEI)uQT-h{3T{K(J=e^cU_ZT3ixiGcG2M$yo_c+&z5at-u8QCoOHrfZ=wQ~) zBtq*Kzr^t?)Kw}Zwdf%I$Xpw80xL8Bk_{3qAzBsZLpJQ77Al=)>JAUO5|Ll%ZRE;3 zlH*1gll41dEI7;%njnu<(pQkzkpE`IP-@AZNMvF4bcT9 zA@e`mlBno`o$4@Lm?#|wTB5SJs-^`{7l{q|M|1w`SQFFBs;-7cPHoetR$ts0!^)Tq zJrikGNN2iGohZ>x{ZNCj0&lwi_x=~6CJ9*P?0=*-4Wj` zjzM=f@@nY< z`Q7^54@ms;O0kl>oBvBR&5wA#fZ&iO0%aC)b?>EtuG#*xZqhNtWq=H3lJ1vR3CvJI6YL3fDY{Bkrvbq)?M5Y?MgHOAYQWlWLGNGherQ~XxG#^wne+6H91 z633`;rm5RILkI{nTVd#il0%5C)#g?e%i!GFo5*}%X5DVbI(ah5aJvt)?a5iEK~w+3 zv>B2jberS8*g8-`WuxfLYbh-q-P6l(&!Z=#9N#=tm$H3sP6w9{EcR-Zo2>QFvLwB4 zMNq5iJn5~n$~ze+J(|^R8`?e3|Ilurg&KUhszVpq52k?4JjnJ(Z<}W)jrcDu?-rQE z;XV@M%lL>d%*?n#0iJbfasf+l~*R+qV5tt;PhCIN_($M@7e(4Mwo3tZcOL? z;^`Tt28v&&S{4_OwfRPQkq5w1&wx-A(lf=geVFzhyrq@rjS?o27}<4#(xUKb-@Ij% z>*IciX2mm6)<<4thzPp(U%wx9HP5iSjAs1NCpAnN?2MDg493LrL8p*NamkDE-zR_s z;se)v^HHy;kwY|WXxmA+xGI1!4IL(!f0&lHV|PsN!^y`lL?fN_?LQmedoufS**<2y zs@Up4;vlskASCTc4-Pw4P44eFb5|}sqS)aNKnV^(yMfkJ$%obY4*2hQ2rS+zx9}x+ zNq}>HkHT|q>jC-a9~kQf@iE!?{J5)>OeeV;l~-~u22@=hKT_^RRqd0ppl)SoH**9Tbi|=ABEI-O`pUi7P8)LQJ-9Vbwdc!vbO%sRJJ)!kdg$bd z0H-QBk9+rq6E&|n8^UILPe9a6xQWV`&Z8?xu+h~~UN;T1sB zY39(Wfr@mjgDC*_iYzs*wWRE}my$6lOYXhD?6ZG(>sbIqweXFJFZru;UVy$Pp<`5H zB7~u!c`C;Hw#` ze~9xipoUe@q7)nku6X-4!p<=TDZPkuck)+#V=dy%0MiqsmOM2o*ynwBXF6({_;E}} zs{q-@J*>kA0P|*2+_F&E&I=(`8emHnzDb+PB2lk&fTXYQUot(Mt%b}RzX6u8h%QW8|_RYweDOW*DvmE?ItaFOkU%;vAM_Hqo8TI{i z0_Os~p({}m0X?}#jqQES@oP%?N3zS=nU!u>)*wiUa(~6myRxm-;3VECi?5QVrY@L% zP_*up=-#SZD~{K@cA;*CRQZcV(*ArR#DS;3^X|*7qR1|;m3og z8|fT%`Fz{3@d;^-ab~yTmpdA^LWw~I1f&K- zLwqI*YnYu2&_Nx>LFGJ1)a|!piT&QLxP;>keDb(nv4);XQ77uD(Guh34pGWh1#0FEUReFm8wXN~DQ^!22TQggA2GTyz7 zI9&Y8sH{mmyNgC5o@$|@^~|*L_4ks5-mQTcWY7W_TTBOGau+Q)AktvcaT~*mvwbNy zt-P*zI4Z~Tke{tux0K^USc%p|Z$c9gzy7d%60)wO`Bs+5ZdRuv5GLeKqNJGHE%MwN zeX{u6OK~1-I*R#M0HF`_-{b!> zg~)(*ZMj3naeg^RHe}5a?XVg=)np2S7k7n{cf&-#w!E=FCxne!O-3Qn$V8@db7Z~I zHfq<1Ff7`H9EuLQ9a`J!lk*u zNA?Mng~%35X1qrs=55m!$0krzWOjXFl*}GkCP?=8SZl79{hutdvAmc?yL9a;(8MS_ zruwf#j{;lCd=eQI(C(tj!ovL{jguCFZtTv0rcoL+W+O4l67qr9~kt{>nC zEr5N9EFpqBi?^-_&u8aasg~*7jLtHJubVXx|I5>jh2pF07wgDsIz$>swAVniFTyK zBK|u%XuMr_3E*kpJIHngb&!gPpGd-tQgRpL${AvQXfNodEf}`IuvoOnfFa_}TKzX5 zd*f-x`__~rtF)A$9wG2}i<#dA5iK!86gQa6+98%Ws{sE$0KjNd>%xg+2G44T(Q@a8 z6n>`wyA~?^P8CvTeZr#0>2ZHFFKpQEmmsLGJ&x$Psl{pby4}^+1H-S}WH@}7O|0Tz zW&HL+zK*U2Y5|8* zGGHULCOh9pq=ZFR3=iX}tZwRA5Y1D07*P{b3Ep@x^|eAH2Is`3op90-`V>O-cXM+8 zK$=>+N>7RI^j#%I`~P^3FC7AaQOdOE$$AuyfG`VhBDt>MdQyy-7g>CUs|vZ<;NOs`>z^jYKjRUy z;`%(ZNNyc}9+Y(7!@2J$K+_^x!(D*wl zDw8kx6q(3>6jv@tA7c6qsE(rcUI)&nJL`F0IT!==!TWWO00PdoyKK?)=#%^qdhpAq zeBte%gs77j^Fe(&jl_vrbBZvTLX>R7U>AI!nl?)mTuF&_)M#u0L-dgOmhyGDH*+ww zHr_SFS3J+f^1a z`PuwQLl|GH$@Ku}cX5SDhnuyk$?w>Ue(4?Yh#_k{oVy`DJvpkxGSk-D6$>&?jG57- z7_`c>?a_1q+v>ifT2LQ@$JF>nqenSkA=t}-avsGgB0n%7{A|0PUcS>X2O&BQ4EKQ= zr^}hI{hD%GUfG(EH-h1|Kq?gWKm8h|PMXxRAS+aT&2zo=7y_3_Z+_$2WkI?}`3oK@ zbv3fnSL-5fmCRZm!Plu~I}A&T6OHPzrm1<3hf)RnA24Qr`>S08hDi$@^AUL6kC;`} zZzSw-d83|~aJtwHE92bB4Q$R4WR=ASQlm;hUTr`{)r5FuvQ%ZOt}}3pb#1J-i~o9U zwPY7^|H7krQ8DwwGNi{W5LFvyekuX#X%CyRV*_{zhBW532zi<^^Nd3>wyKlQSU<8( zx|iOg)Xa;k&aKsgP#KIaM@nv1KVh@m0Ag)@oyj|+8Ebr#q|hcp%n-r z$yqGXJc1Cd7Hn`XxifCha$Tm))WlxNk1<01_(FkB2b5cy1kMz!0bKoCRh4#gS}Dqq z9nIg;2*-c^t^m_1S~$l*Kz-si`z`CdkT95CZs`H7Q_WKkK!*WmtZ2pZlgHco&mhmE z>+ZaDkb1LWC(!3_?W($X*m(h?%mfe>lqyqGGRli&9MQAOyMb}gexT?7Ar)Ns0$IuQ z{(lDP_NrbkEgbmUhDX};zEN5OuVMwBuSg~|g5GuP!~VLA6zYo)9M8Q!8~}K@Er0W; zrH;DCk`w+ic;vm}HJWnhha1>)4H@ziv*vsXE7Z%+{gqVX<_EReMV5t>Xxd?gc!6Gj zc6Z0MVTyI5Xs|KKv7ptD*`fThV9yTFKS9x|ol-J3iU)!CTVT8LkGnA?vmJOu6t&%X^((Kf zuKn^@m_fvW&vn6siO*wxJ|Iv10hYi@PE`$t(Md54dQ0S1pw{9ALpN4DZE|(!O%}NL zo;>{ZqHL$0&6lVW*vIm6o2Edtkz^Bxu0z-EnomPYo1|>p%7)kSH6xNFzira!jG5?v zMSFa6tihSI9SVJv*6?svWGpVl+aowEN@#qA=358emt+;81YNn$0`0aQC(0fu3=aQE zZ`ITso4)|fZlbckYLhE2N^)i{&VaLVFDJMIFDqtD%Xz16xYRb{p?)#3tuf?gPAztQd*-WtTUPO9I9n;o|z;YC!K zLRa1)k%Uz_*g2FjGsJ6+jP+5d3fGSbY{#T4mdBN_u8pHQv+`sy8soV`d7BVFyitZ8 zxEs)oiDYpY8{^G+Infj;x^B35i@>c58zuOHziIl%mO1W;%-VoW$7|6Yx&F26xZJ6C zM2(thIn*f5>_S$EjFFsnGV`v0MT|;a+*3&vDFYLn8J?j? z6$cnKLeeGin<4GFCNwJkbiMXol1Uc@J&KVUx!{$?WC=g_GJ7Yz^_IwfhO;0={}+bW zF}|t<5&~58fY^wvH6i7pvD{W$!kBhC5=whr71o0IlxCL|!7#m#ELuVLvcu1zWy9Xra%1oS=;KHj zLWQ4ba~~-yM7z$Ts`KC#v>_JctYoZ?N+6%_$9Gb7 zx*RpM-g?~|Qv`k3=L=R~iUAFRT(`m|-*Jb7sv-JOljkicGF$`J9a)nANQ)sCzIwIRRH!(Pqeb>)>e_TcD>@` zdSDFP1pv%S7kmgXT-gYQ;z0CN>3j+}K{#n*dP2+>keGJ)77I%alCjImIDhU(5!OAC zFxOdnK6%^U@qviz6)WJ$(aX%*0njRJ?6WG!c94y{!+mPV5ta*d8{JzH|AD$_uv~WY zl5%q@=)@wQfDib}P}m+$x>+Yw_>>;0rb>sVFbsXaVn-PZkVua8$~Xc2D)OE56rA!P za@zQ1BYSfh_EfPLHShe=hj%=&qA_cS10Mn_6R&$f0(|m<^Z5Fm--hV4o?}5J-tajr zR1A-SW#CGP7uV#EE=@;MSchz0VqEy@A%J9r zMiJW}=qjOH{QGBeQ~UO5da%&8>2)e)qvju2z<0)da;khTUJy08gJR$xKv2#GhvCfO zcX?X~;t|1!#VZJ7kQy-1e*S_4r2$)-Ha>Zh%t@&Nt@p)|^_ z%wV-2G`pg~DkAhK96b zSn!!ffdyVLNq8kVpuaA%RkCb0C8(hODkJj^iTOXyU72u!MkS-OP7s@5Zn6_C=q>6d z+?ZDJ3io#b&^2Ed9*#gCqINqjJN~Np#&N2>14BTw_W5jgeg@r&XR-FiYu%wzJWuj;P4lQF{}}|x zr|9J?!Uk;1gobsM5yvLh18vPL?O=E$fh@(J_e9|2ByqiMXvj&itzycQ@OdB-E0|0@ zO_za}ip9sRJ(S0OXG}d+%7B3)fNLr3rSQL!aY)XMKokeU^-wx z`|cAEmQQB5%RM_$g5pY2O|x15KvWb*fA-~y#OzKJq*fIM?s6B`kCS6x6`8OVc>{#m z-xV3r!<*1TrW`T1_jRi@tc)?Xo$Hu%#k`W!EPMExt|d2B^N}mB2A$$QNtQq^5)Nn8 zknj;8_-l=+FYzRITS9f|)t~^Epm?>Kcwb?JxG^y50V5gsxZHF^r3hzbrFeU~2cRMZ;np9xipQ%2)MWVHdsXHt4=rYm~#0exA97mHRZUVpwH*i&Fe|H|IGV z;cZ-z2eVHQt>T&EyMQdPdeqnh!kT{rj%23ez(dy6cQUiQpKXmmR9Z~N#^!+=QAUcA z`~8XUZ86HdiWPP0Q1p)u@irk8Y%iN{z;xsh$=9G`-=@D$#VooS^u)!38xVp%tNXAV zqQ>y=Qf(Fp0eMO9p!nuAt4fViWrPaZ^PRGcqFQ@Ob(1-5mtBvR4{ezrx|AHUB4YT_ z;5}F_VhMH-YuKU3k4yzkoqCh{$E88J*ew*d{19GFpv4D;2xZ~{^v=?-HN8M{DU|1h z?LB@I)i?M}M9FUNEs=IEHy}queO@Q#%J{X+;v`MOc*Uo`*HPc~w7h@GcR|THF-s|l z`g$4EGSZ`S;Y zJ7i2?N2^4KLK;n_F*}AN3$xoltc(@1VYi=vaGaCPf~DUHiF2juz_5ZReDKtE_m}U8 z#TgQbjQSkiY%LP8@ay-W!$!B;)Oh_P<8V>vIWsRp_vh+r8ZA;O?zURWKMi;D4Fi!+ z()zCsD>bD7zB0uk7*$*k<`3~{gwF)Fzn9~C8)aM&qiz>BF-Wix<)X534!%3?nEcg) z5Y_>e%*zzYk?*QH%xh0(@eik|HixbdLlfE}XIlQ-n&xC0vGa}n6NqUBXnppgClXSv z{&jnP~H6eB@lPpbT8OgvZRKC#G+y?e=-gF=w?>sv}_+q$v8$9bA>3!19Qs5!I3Mh34$poQcCrc22HNW zhv%0kwz5gq>w{h550yU;H1yH1JH_9+-99*2wi&Sd-lrL4U(6w!wM{S35p5Q;5}ys3 zl7VD^LdeWkM!pIcsf~QGuH4#2NZ?NWOkWhS6gvj=8sy#K-=-}53vpsK8Dn_jlXt5d zu+fg)6Tm>XJN~aKV_SHQReGVXDmq#+Zx`!JRJ1UW2V*?-H4)kaWi9!dgIbws5#XuS zU@q5S6-DY`@nOQLKTVUqX+df-i)Cf6gQw{<2`M8^6|?bsZ)qt<34ldZUC1Q$s{YzN*4ZB4Mn1!@w+QZkt>dxj91g+D|F7~QNtqH-by&EOyE`^D75o+GF5 z00D|tTl8suo6OolwM<#&9Cat-)$4LJqi_SLT{Y4PC6g8RVPi#^=M3up3kg5yF>WVb z9wmk?rt@WKJ3}0aX84M6HvcTcZZNkUM&z%cqWPUypO>>bSU)F9C>G_A$CN0?`&8#U zbpzrcawrY9Xs%t3{l|*i!E=gP0@o2-8w^S>P=6+_;zlP6gZyXPJb!nM(kLRbgL%;z z^Ka5@M@~}C;dm#+??rRi*I-{lBesCmV1eD+t~(T~U|Xlm)#^Llvq}IURf$VQJ~5VR zrDkoL#QaQq!hW6u5=Q>V=dScoh6M@LZ%0AZxTl^H1jZ35dZ59WA5b_?ih(>vm?do_ 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 kV9ma5<5fDZ0Raya{eE\"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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/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 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/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 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google 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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws 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=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=NUC 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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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-list=WAN 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-list=WAN 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,2222 in-interface-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +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 Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +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 +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=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +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 +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark 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=\ + "!!!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-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" 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=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" 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=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="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 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=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=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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +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 +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 +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 +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main 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 interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main disabled=yes interface=WG pool-prefix-length=64 \ + request=address use-interface-duid=yes +/system clock +set time-zone-autodetect=no 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 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 comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple 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="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260516/20260516174001-Diff-Config.rsc b/MikroMaster/history/20260516/20260516174001-Diff-Config.rsc new file mode 100644 index 0000000..e77a629 --- /dev/null +++ b/MikroMaster/history/20260516/20260516174001-Diff-Config.rsc @@ -0,0 +1,22 @@ +7c7 +< add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +--- +> add name=Bridge-LAN port-cost-mode=short protocol-mode=stp +15,16c15,16 +< -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 +--- +> -baseT-half,100M-baseT-full,1G-baseT-half,1G-baseT-full" comment=LAN-5 \ +> rx-flow-control=auto tx-flow-control=auto +2413c2413 +< add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +--- +> add bridge=Bridge-LAN interface=ether5 +2419,2420d2418 +< /interface bridge settings +< set use-ip-firewall=yes +3362,3365d3359 +< /ipv6 dhcp-client +< add add-default-route=yes custom-iana-id=0 custom-iapd-id=0 \ +< default-route-tables=main disabled=yes interface=WG pool-prefix-length=64 \ +< request=address use-interface-duid=yes -- 2.52.0