From e66e231d4362ff4d34689423c2087bf98af088c2 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 14:20:02 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 14:20:02. --- .../20260701/20260701142001-Binary.backup | Bin 0 -> 373576 bytes MikroNUC/20260701/20260701142001-Config.rsc | 5235 +++++++++++++++++ .../20260701/20260701142001-Diff-Config.rsc | 2 + 3 files changed, 5237 insertions(+) create mode 100644 MikroNUC/20260701/20260701142001-Binary.backup create mode 100644 MikroNUC/20260701/20260701142001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701142001-Diff-Config.rsc diff --git a/MikroNUC/20260701/20260701142001-Binary.backup b/MikroNUC/20260701/20260701142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..396c65c32a22f457c69b521002873e48f264510a GIT binary patch literal 373576 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 z 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 z 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�!N+UnU_BC=m)tX5QCRG{ZLy{qQ+bwolRDRdk8||N zs^Iv?e}UrQ|t=_olfBTFcK*Xgk!Avi2-9BQ|FO( z;o@&iKd5x8wh_`+8Okp|hZ;YQZm8~o-Nz@sn2ZU2>b9#ct2hD`O?__Yw4wYkeNph{ zT|VKPxf-Jusxc6u@qgzMN3C;EtY*$Qc%B%H~sdvBmV!j&amE9&RdX4S?(zI++Ds%RG<75^01 z=(GDy7o;(ype#KBYdvlT5>%Y_5%zHp1;$a^_X?0$w$BPm5A>RWP~1%RXeTu`db zt_!j9G*H+iaFhR5T>&`2DxFy0Xf8>p02c1T5}@wN5OJf|@Gv&q74i}@kCOxJ-9G9H zruwee4#K|{BOX1E|E@3? zTiJ$Zh?}c6`iX*1|0NU`?(7Q7V4kj*=diuLBWEdLfbNKv>|-Wb=A|-t3p(VE<4FN8RB--p5P}Jf zBCFO`qJ26+Y;?FU@{ea4LG9~F?Hp`O|mExG|+2d9+hgRmWof5Mo#jHerM zmI$(HU(d_s>5JQ_=4FTT=jf-Q1=vL>gE1DWNEIwB;G?`%yqXTg*JVOzplzS}Y8Oyz zX(fp^~?3vF=Byc^`)o;f9zmyLduV|14OJjEK$L zXX1`M_`Wmb)xY0u9&_jc(Z_644Kf8}COJyZ|5q+YC1{f|m#8B{y|g^u+&pj%ja5*; zG@Mz4e|5b9=lAr(KzF>P(?DDb{~;@P-Od70MoG+y1u_!nvz4n7Dt{sf2AeFs*U(Kh z+-kl0Fw^gVi&1OhsRnC)6tE>iS>51HD%CFXN{mhqP)|6T0M;*7cvlCu*$E>n)4>g> zOK<33*35g;|3fi$BJ?p3^zlZc`37##R!}NYQU@RaFq~g=`<%+?B@=#yy#I!7Pa0*? z@%}Q17%PHU``|Zp+_#Z&7`X^g{cJe+1Q&?w3dqx7#Y|m~$zYICM@rb!I}=><{4dJI zEYV5$ONGT2h`_KqM!--1aC$Cv_z4w*y(dIdrXWoa?}I|uN0m$zE(egy){xph7mP}P zaLB;#+{AvRE@KoTXGRC-)*m+p5&nQ&cy6+q|3N>@>el=wS4(k@bW6+m@08K-kqpGB z=RVWqILF~g!Lmn)%zk6T>V%AS9q>>!uM6-bbM?S;;y~+Pwh7qgFmrVzHg7}ty9M#V zO7I={&M4emNRDvNR{MBArIG(UJ*4X=swzqHw<|HY+)0S;;UT$+6q92 zWJ0V&nAWTeYT|r2w$7xnW+NYrx==2}3#k(hXE4Av>26&7CQ#ED9NdL)Dq#@$_mRf( z)-V0G2m+7PKYXnzhr{6nO6r;g;lne9X^2ye;y@F^#Cgtt;4Y@k zjM<=AGy< zRBO+4!3FW1bfcZ%SIXr3i9X-B*Y1HY;ssEUokf8te-H7~ljcRf}#7>X1{d4esYS zZx2ZuDPr``^y)uIPX;+2&hR%_wu_X%#Z0!RrmbH{VkKHqB&TY_2nqr25GxMOXkOR) z6!Mad;vDOl#RDHgBN1!q*4)E{?~~b(ueoKcd?T@(D5{C%5iHCB^{8EhOLM8x;#YuT zB0O(e$8$%8copBf>sk=yN7&ucjN!oF=Z6fU__{=3s>@;YVa;!j>~~zw=9MDDKD~p> zTlcgFMe(gV(pp?Daqr6E+|+~fb*CF~kka2Yk<{=S5@sxWYY|vt1}yA) zcMmD8YojPfZp%skV3iAFq{IlpnqfDE z-a(D7+%UN}!TFNr*@l?vdo35-2^${qOGMkr7#G|OUV4f1j$zSGq|j`*e8M^jI%SW{ zZVo94>v(FLDE~x{xJ_)k_b?`}ix@2Q;+nY2pcWo~ay$PZ3lE2gL0g;4A|aD8;Oj@U z+~&hW!+A4Kb|ShCtWpQ36?Bpo%2IBWnd})Vi>gPq`c2D+HVz~nhFc|>dy8i!aym25 z7d~&MGIx_2>Fu0!mOIqdTyWz5)PR*5vSiES%z7rAOea<5JLFe6E+G~zelNO0JQCqV zd<%!kll}i_TTWE5s0W||+!zDIgfol~A~F957>~uNvhHIHd1XUg!<%$8TNJUwXtv)aAsppZ^?&$XWlMT7eln-L2HO#^$$P_I2wg%rwU+KE5mL&`3s87&n0>LO+ zn-dBsEjhwb+-1>qpVODnzOQxm7L-B6g&&Vqi)!ZDL)EkYgMR9+@asp95Oc%FVm8Da zYiFZ_WH07xYmU5eRyccqB2HMJvAepOgovSzfk_WNJhcH=g)Lkf?43Yao^;w;o66PL-eH^G$y4r5WO+A}5Zrip|QlA0Soq%AcLO7JyWENm)Y>L;OVlCu#_#*^YoDF2*rr7?=E(5$pX3 zwFyS(p9|^2WFK*JTW53Z_&No58J4;mj{xX9RpC_-7~QLTD$(HH8JkEYx&XYqpnBL$ z4kc=ZMKCiobx8)PM?`#6N(L4X6Vg&f7+{Hs*=j$S zK&x;G28?VA=Fa9D_|V?6R-p?hJx0B_dmP?8Fm%911332pd^`_xuEXKQ66p+{Y*Wg9 zR@S^}R$IAgp9act&p9!cr>flm=lZ(vncy>NW=L{LZp2+WBit`&%-3s{ocJsk*6xD^ zv@JEG==avyUT=zgx-jRD-dW4IIrU8>U=HYHuEUd!P*d2wUB5}KO|y7?DDEUy^bYp# zWyTp#<5 zyqfE&v)c6}`@(7O;!6Sd9rYccg>*0{4M7h8i^KiVd!Rq<~JO%xu87c`2r{ zkeOvs0xoB#TwMh!0p?RsQ$KpM7wKj&b~eS|8xOnC7j%I$1_<~e3VB~qGz*!KzzA#AAb&C$()OGuj8czXoq)=)!i)oRz2~a4senjDU6f*(#2W&Qb%uePpNEdVL(R9Z$42TX=?9MXRlHTssUIy zMVuSQ5y1n0nYiXMn_*^a!X>+_r4^K}8;S}S^SE>p3jz6IA@Ix+B?YP$T0c(^1wsp@ z_=4>!{c%qd<&2$@PU$aa5zj)Kg4?+O|33i0W%ev|q`wvq6IeTPU$r3FPOv5P-;Lai zyqqlM(w~bKWDk0ITmLE#e*vbu-QK!39(QR2K&%)qf91EzF6O)tqaC!)eOV@4lS3(S zdc5by%{ZJub^`cVL@fbuX1#j-(N6za8Dk-oTbCj}9jbe-X*0kJm+D+5F!!cobXtxb zKh0@CDdGx$3`1VwHP-7`ScjHASBrv&t^)~S1^!8G>P?D>i?+RWQW1f`P~)<^Gg)-D zlmj9o@>OrqM4X#+hqiqIEyEa@n{Gqq2=(q?H-T(S=Uib%U-$wo{JCiOyl!Z2T{sf2 z!D6Dg@eD&ZNe~;fji7?y1hTAjmLmtRgOO^LKVL)RkW{P%ni=N5a7Yb;UEe3S%r(aOJ(SgptsfaZ5WVGxXQ_D0S0E=xFEa%iu=O^h8U?cr!nN^1! z=B=8CN;>;s;S}{>FF8cvM=JZhF^AJ=&U=ae`Pi(moRLQ0lQh{`D>xq1vcHjybjEU6mYSb`-Y4BNS%LC?AN<>--l^cpAEKM zAP}t4Aa1-Vf+(bpv)1Ud8rZ6}LY*VeEU*r*bEj;{3I8p_;ms!XC$jtoFO;NDiK(Bd zrMe22Mg5|k$EpRssrJZ`t)oL)-W868%-p)|(}ks|D@AnSfV!Y04i0O92PZW2n{r}{ ztmU8Xs0pD2$;>g1Wld1NolWR0k7}s`D4lCA)h378To0_kL;K;XX72e%FKlV8!vl4Z zQ2q}&A(%pqnL(IrV4MNGXD6ti zsOkdoAlw7vTBBL`9*9Kn{Yv_Sxi05JRK;R$vF7;Ho9!HKS-cvnxNwGkTX2z`gQyN4R53;f z;}z@0OzyyUI8`{&vzF?sE~rKji&mO8z%Lu+i|#$Xy!c~CA!i?!21H=|pF|lx*SnY8 zY0l~?%BDuTp>+c5WlFKhK7@_Ipv=?d*Ga9%=b`nMm4BYHXX z5C*qX2#W1Z6A+b%ERPBCr8n<+3^EV-K;_^tf*+BXbKh0k=L<^uN}^`)P)CBWduImM zXb#>9(TvGhBF|+>0h4$4pKvg=utVz0v=?bW3oiG-sO+snhN@fVc@_2emJ5ZB)PSC} zEW1gU7O8RW5z}e7bt3lX{Qc+Q`V+Sa@sazd3gdc@Vo^6W@;vjgGr5${ksspbekmD@ z2VqcR-ov*7J3%1|)QwG20KwzzS%8~Mw1nzq_B|GdwsKTcaFRC^$|j0Zl0}^eIWY!M z(|8W{EP>I%YVknAp-S9Ftn1Gnm-i*%rp-lezF7_Eaw7LuP)f$2)e%%BBr&A5E9uM8 zlGbxHwBU7N(@bZqb^D3KKmvs#?J7hK$cj)x0C#7~i15`5?UWu@e}N+79ZCx;621=dUS3apUf2BNC=?`A9 zY*IT=1TB*pgla#YUKO~7P35id)ALOi5{D!OZg7-w#;BUL!yag%x1W}ppUnSD&XE?_ zKQwKMZjeS>gmD}i4&w~34qW6g#V0-Gy4>$Bl;156yXye{mx`h8lJ`Z^QP~lri_u<@ zyHVqXC@H0i(kM5Z<`mulJ#s>NcFfqkD(({1A*;QyPP7{M?pM|%uGwZg7xu<_#B4tP z+Bu063*A~!`l=e?XM9(O{%7~6FzY(mx;rg+zd$ZAOFI4%+rv%?#H|&R`-RH2^7O&h z!-3y$yux33LQPXJ;Frny%8<)HSTL?GX-Jb$(EK#4zCok9>hGcoMw^+gXky6A`zeZ) zUjW5?4-CaJY9Fg|Pe^U)!g4@6)VzoKHJ`Woma{y=uGofFCjeN1+AMZgiJyKcDC z_IoApZ7V}Q9Kx4z;^S!DiF;)In31?_IzX|zteNZ2hj!+OAx6MLMZVxzsQFR-h^o$^ zfYhCrf5srf6E=-0xyb_~ne~3B{T1m!T^&+fjWeOJ?RJ9V7Yj4@2dD-tp`tjCH>bl2EsFv9&cC}^sFow$3VO#CtLJZjPiLVNxZV4DmbHFjJp!;mI zEwoV`n1{7X5P3Cq=9bLIkWh0Gqk)t1Ti{;R)D;0o zkFv~CuN-J9@YdNsv~DqJl4x`f^$pQ!yaZ*D(0iQAO5~!fn1Yu&-;Sbd)UzzHYF&D`F-O-AaSufuz$5Dj|O= zHe0UD5lX693OAO{C10B;hP}8njK^^y$oerBivg?!LNOM$A?T^hnfAqhmB4)r z21LCyKT(K3i7#Nm8MYCp3PanJNd&I*D23bonm8a|s0HC&L_5n_8bRba+hhsEcrvx_ zUQ?TBa~GXwvCCVE)i4wNHmQUzLm8cFw-hSlFe8Nw-sXbN=dOy20zF-OC9E6=8^{#A zQ<6f=uovI9-D|#auUNwie8M}CEUz&G04bUnFExfi;x}Iu=Cq9(cBT1Ze#x5ut$^2> zGI_5Mz%f-PrEBI;9TF)~U6V2a(_NAHIfydopDnib~}M@>dbF5_xo#zE#H73fS>CPYjWXU1i|$u^cPZjIbK|s1?Qp z8^{$2bmO@uU^M=!uflS zAHRx2qhiONUppB7ePIj~}CY1sUFyWi_DC(EWCH;zpusoWyU0$zuIjcqPzE84uoo|$$r zN#MD%)O~xEhR9&TIc56Ya1axUE8%uKKfa1(|^( z+THhVa%krWv_Tq8?hZBq+c7e8kw+NxB}Wt%WbmJp&I$2Jh5PM3usN0Bl#OKQAwW4E zw-1UXB8)R25)t>KG3QjNPP2>Ub1*yWGPTJO1JdO9;zMQW=V|!^Ah875EhS}MnX$*q z4Q?7DlIMmCS4_*L-oOC1)939`b>0Uq(Xj^sR(e!*sONkm@KGq?S0RFH=qr4MApSrez#p?UnHm^Dg;^nzM zi2a!*nQ+Gtrewu1_W+EZa1qx(g$PVep_JQ2mVfS5@QB0?)soXC=!S!ejE@& zFFU?7f`c8r5j>3opzm`4wV$<5D;})E!-K$M4FNsyB>P{xysF&fB2@v3St#uOzwKeY zRO!YOPd6y7vFuBuzd>*9Cpd;;rq`ua3!TeuM{*VyniddZOG?Wmeg~oEYKhJcWDw3I z6xCv0!s>A2KBXz%50pa)(`7bf0&;psd=$(=|BqcOSss)%qY~iQc1ed z5j_Jb*o*)vqh)=NDtD20@2A-EzWUFVXb0x9vKPl-KnWeIIZ;|iPc7=$IBF+kH~l>UE*&q5KO9>Taacnkx~N#q1;`jXm_Hn-sz z2cF1^oAWo6yZeaxMxbwY#ni@48D(P>mBmUr+Ww6JrKxJ zt{z9dEQq>pJf?uJ%LZEw`P?Ql793V7JAhU@3z!`E@cX%K)0m}5v?kqYjnWoA#nS%6 zRDE7qi-qPQMfojV;H_r$ub z(Dz5_o&vHT$f&>4SyT1rV^!%eQ^LF8U9Vl}iMt{o$f0V^*91QNRLNt)21Jctn?HP7 zDqKQ7m8*d;w9O??6Rykegot7!OZJAC<`Bxssv4|S;>!`+Ab46{j}5h-y!Zawj2x#a z9Nb(B|Q*pS8*(A#n+#H=jq3zxR!ChAC<1$1hKG+;q_f zRROC%&Y8PNc_Mn#Bmn8r=I4<1h79$qJ$=}t!hkPK03-i_yK(Eonx3TA)Ri}Uz!b|S zMME%g@X{sM@3QEy-MMN)j6P0bl%1S^^B9jlpC0i#npn3^&>%8$o&l}oBG~fRMd_z6 zm(!8zimBCk;Q9twD4&Q)GoCq9Arn~(%5kPIV&I^~z9;{(7_vX2j&m6CZu!EH@R@Re zh+AxbFj#1&4w9{`^AxP(%9~IPWX@W88oeb)SLM>Hq7})BRgXYZ4oELpgcDYZMleqTlh4b3a60V{7 zO%2gS{f0xxjRT}rhHx;o?intuHEmw(LMbY;gsx=1wn$;URP^Hq0=v04B5pzOxN=2j z)6&$8t9Pr!BVZrUn)%j&da72e&|q@B6|w zc+*&6uM2QY5<{hak%`$`=?UzrGA zGu(N32%*~`O@k8FzAFTZCmSDRfzXEct9!|IOKz+5Z*l`m-(;v563#GhTWN`x7eAcf zKSm?a6L7F6v4lGZI{-uZ^lHZf&?sI-A(|f^0m!Q|zBgX3_JL`z&9@WbE`+VlWRSV8 ziEKGsIUku3)t>d@#`yOcuw~G&2_BALVrm)uS3hRA{{JRS+1<1oy996(;UksEyT~n< zG%BMCt?0XLlB&D+R>L=zyM#Sr_zBF!j)!r_%VpP8@{!!|a09SRKF2L{6N35w@RnVC ze-}t$0skDkWX0BNS*4+y>6Xp;Wnx>rExBet%|k=Lz2W7$LO-uM2}$HJhuM<#JN*dJK{bP&Mz6%N2xo*vHlz7S9|Z){Q2;YHH3-~@ zD1M3*tNjV}!j|2hS}w(Ei65-5im=6)cvQEFxgu;N^0PA*jw(qytC_enwn?4zgw4Q@=9_h+O@f z^$O96d+Wv1Wsj4vY)FIZq>55>|FD2XK#Vkj4Jr{gdsWc+m?f_#VzKJG6v=?CNj-q4|#YHAi!Kd{?H-lG*)O_=yePEVEMY$cp5w!w_5l#0u$ zB~dA^WtxG$h0)eIrDYobP#xDX8{Qq8iJ3`_QPO+7oQBMf-7S|ZnyS5?-ln*2Wf6w? zr#vfHuHSBqQjr{$ddxH!0B>U1C$T8(gg)WRMaK8L>xvmmC~p;!SR)nS!DosalMhx< zLw^4D`GBa$ksGxLAcEk0;n=KoK{T+M4C;1Y1CgX209klD-1eGa{fia6m3ve@)KIMu}* zdT07PrCM2Vdx~&10aC?f&D01?N)SzW$KDFgC*Lt56RsGyF@3c5M3LD1)zHqjz*4$8 zBQrM+Ik=%!C}prRSAMThoIG;hopOOA0GhdZMBDePpj2d36ftZin1gmi)pA>&5d2$f zh{$!|*CfMdO`F>22Zz#AVVRpgoUL=V;icHCz;qgb3h`~BmD2#TQ>V?92qg1;hK$ba zl23h5)s;t!c(38tQp&$Ei?d~=yFE|Wuo&Lenx}(jQ#P-BCyelfhBxt#kz6s9?~<*4 zyO|kc?OTHLIQtvY3R-tdA4-gS65dtes`^I-h+* zmu=51tDkA0tNm3)l}WqXEJe${VKE$J-jndv4=df!E(Q$(se}Bo!yOJyUsTP=yi8mtaw+?xv++FgA<<7>z>spE1Yg=< z;Jm<;Ys$#o$|Td$TNxIZI?5mvYR%!^lrGar;JNFs!_v3d682z}(#dueDvvMVDXolr zgr)Y<_va)fnHPkFAjJZ5)oxr3q#Xa5RFgHKMxTH<8nJK*3?+Xi1Bk);P;oaB_VLv9 zhhA{z&r$#HmIV%!s&~)0t^sqyGx7mrZOFZg2U|8;2z|Rhp5PT}9{8;35@y57@*URI5?;7LsVh$^T z7yUaIW4)&DmgJzP>~o$SR*%p%0KUuGHXWUqV!~fm8=}&-ytF-qSgu@RlID_D58J^V z9(5K%a&$m9BjoCM6$18en__0nY7q^Tbof|VKIu6AsUM_4ESrZ@ia#ot-)2mZj`@w} z?9mjZKJhR)Q{a_$!>fuYH~7zP;}_mGiL76GHZ1_1`}gNqR&|w}L4CxNiN37LmET(@ zKXzO^&il?4a_DrvlHEUiJeB8$ZncP7-9%9W4(kSa8ei0sC2uTr@mnmFuxJ?-ek&0Kn z7e?GrsDH~1Sx;^BSPUB2$S{^9#nCT#rgx9}q^6J6W7k*I=tgz5ISXxHWx+fqw{WZ-U@h% zZ~ehVu+MFV%k%Ax;?LVR71Y0|#>Ksf+V2P(H@+wQG&qA_^06t{+2#FTw@* zD+(dKD0Tv7uh=O+dp;(MdC#E!XDVQb6Q;`NLPBH*PFzB_u0J!t7LfI}jqr-aBUo+Q zHu?gYj9V}h=278F-GcDU+ohHNyXT{%bev)4Fa4~y3~CRVdBcwU>e1=E%_H>yiEBgj zb<}YtI;YE2L*xhJy5LsJ-8)7~*ab8$6Pe)iv*f6Np@(F-Mx75*6LqTmK~bI?NIUwgbNOP9O5SgOYgQ44)>kT1Y{wovE`URq4(=zVmt zp;;1aNOs%ASXw^t^i^0CnzMm`2i`w}jE<`FZsg9HJGM-GQAXAy;l)2~ygLoM%{xlL z3;tER#CtH6zHeP_QBU+zP`|S+n-GSu1HaB+lE)zEd7qB$kp`5dC0G z3&g?QMnh6uJk!+<>pg9yG?FlBNl&&aSPS(_SMG1>tQEK}Dlw)&f>XTsa}VgqEOlax zzhZ7OHx5&aI92Aa7X9ogPobe1e!k~CbPhYul)w*W;0?y42WM+QzAy7%btQYl{>3Ic zp(+jWQB9^=^q1%#fXB9Hg?ONxr?=nDfR@x0MlaB`=vqIKsuj=6ceRQMsoL-9$hTq7 zyT*2PO5usIH*uMEpwUaqaQHRbi~wdUWF;l%Zwm-5AD}PZ0kTqp9Cp;j$+_c0+m}uu8vi_K z@)z551ue+5!W!|TH#?+Y=83C}@aLtrqc9G=6;q+lXK%P!-DjNzIWZssqm=&Zs`QAY zcyf)XUBe_{6IkXXNVVZQ!T$jw`aNEXsQq_9ff35se*~MN>=mO^4O`pt!4B zsyIbcY2E?SEbwSD!Phk>q!!BLM-|!V-qOf-C@=8zJ$>J>Sn;ZJsmU(%8wCbW(tnua z(!!qO*^0tPbSNA&zI7k>bHm zV6v&I?p@kaHJspZsEQBxQw`54w2o~-cI-4gIVM7)$deC~s;ywD($fwTTtQX5wk@Jg zUoy)tHZfQBl6(x3`6<)4^O+F4dCgttveqPM;2E7i12a|#mfA0-$#vaQJ7e{;VNT#Z z+_?QOR7KYPB2@vsk_-(IR{?P!emi1&uy2{0jRYXI@?THvUP6QsWaSTrw6Jb+ps4j1! zEcAdK8=wl|Rl~q;iaQ&njpDIm`&NFDLwJk;Z@3rpE_z-ac4JA^-ZZ^vlyD{5Hx*4D zpm~im?IX@X=27dD0HuVI0zylHL)Gtv^kv;59g(>tc*C@JCa1OY$Jp<--yz@_?hjZJ zv_-1-6l>}Nv}CPW_eiwryIH3>?B`E44VbA|aI_(%!M5x}#3qJ>?}i}X9ELG8h!Id9 zP#floD#~Da6|(VKYl)4Ma)IE}xYgY=yn!9_n9X*5l>gI>r5?>pZfYq2^r*{bOfah3VjRv(Qo@irA`6ob?clMClG$@sdK+tp z3bdA(ZNjr_Rb)}S9o3ZqAJgjf=B8eG=M7)lFy-Rt)JtO@4sA}Kf|!`akb{Ts#o87$ zEIPQ-0O%2VtZQ^y*|-v#)57-=EaA7ak4Drf+@WGGQjB za-rfoyoh%}#Ztd898OBBbF?VuI!Vp`%1vLcdepgyI~Xnm7)!H3v3ec;A$?f%x9}CD zXBEnK_z*6xfk1KTDmluHHwhX$p|7U|4FdKv{qMu=dvIy~NzKQL!VK&UH{HYzm3f~r zQ+GlilxfavJ}I3VRfxCq{eGAs;94O#6eHt5N($KzJ{MmTI>I!pF_77MN{K^kJm`@+ z%01FkacQOjh{9=}WCY{Biop|K8*d(CTpoNz?F=U=G5cPF@QQ(jl19$fS#)nXFY=ZM zlKcwfz$2)y>|;iDbEL+Hz(Yg+&I!*%|EHD4A`?KJd#^~+o3+y(mC^Fis9e;}{}7AX zL%wz>eQ=Dy^L@7&8gvd_K_Zj3M?mOanK8=&aBG{LRHmVQ<<5RY;IBKaup@dL@h8P& zHmziOpeViFL2R+Xgf(M93p;CMd2S3eV^@mVu1x1E@Tcuql7m5OgM91c_PD9x)p9nVbm*}5JQJjuS(a) z;Gi0$e4`!Mn9y+)EzwG25!JPys?U{aOZ{qfZZJ7=K>2Ig`bnntLoZmV_WvVM3CbU z-4Q)CP3izpk z4(+NQBsQZZ18cHC_=Uop8jlgk=iS*(FIQ(dgrz{#f|TN7mbI&~h56e|!bdVj(Gy}Q z2rrfW^C2mMoEYUZuT-V9J!gG_!n0 zx(u7CU(Ons0p$COj6I*(j`0KA31IKd2jbn&U^JoQl+F_;nb5pk8?rLEDr8d}{jURh zJp&E(maMW`hkzkABhY zh62`odOZi2$M_?9Blum@2C;^g>~I3PizoQv145Ia-6RvY*mSFMwT;gQYl>b4*X3`0 zOn=u!E;D?P8}Qm-r)dZ?tQ&eB&?1Lii7#vQ)&KMwr+X|}u02xDG7%14GrzFh@+u8h z?Hqw|i`$F@ji1s7`jhV@0buv0fx|O&3#+O3G-;05j@M`R6RaCaIZv6~%(s5@vl)v1 z{W2W*COmUGGWCB+%!Q5PI&A-AsRU=>B$J52svr3#XVu|tSnk8VFp6{Lhfn0UEG5AHwb;SCvl290UjQCPM zBYnGuZd-<6{*_8K=R6)&inV<;#v|}kr%#0Wn*iCK(vCj<+dY}<={{>RkSwIrGNL$n zmqpkuUZU8+#P!{E;+3dYUMahn1#pd)$b~(lFg&~BtjGVq1XZ29D2c$a%UfRL*G>^T ztg{PCp*R{|sl~2opJL8B8+zK5IJ+#52IjRvwiHjq(1z~F6e$mr4Etr)i zAu)8iskB#tT8?rv%KRGu^jHyvXKe_*_{_!c6WHKaN zKv`8Zk4QC{qRV+S9w!jeqpwjYp0Mn&2PRaXugT6hbK4V9t?n{oap`5oWP9UK&g=R;=a|Z`#&L|&OJv263amJ3hWYMH+~pvEC@{HqzU&h9 z0jc6IM-vVwYB1B3hGlldhrCk-xoFt55@aAb9S|G->wwi&nwRzhA+7$3a>9_{>Fk;So?(M>K=- zO23tSQL-qH#Q;cf=te!qJQt*AShw&mKqXO0_)!0e&mNd1G4t2z$X#?TK=U^eUmeeH zn=Y@_BYrKz-!7QWZ=&niMtCKvwKRj%j4h_Xgmh9e<+@^n0DUO&dHd}6$C|+zfpa$? zenZ(m)U^2ofZ00Q={fOg1QRh_=nKH%(2WnvD+__$>tx?IA?_8z9i5QG#q(Apd7&vWQ)@&t>__Z^jbTx`r-elf;>a}Py<^w{76RA zh3`@Ej3^Jk4@;JL~#r+ca6FU_>dWNLjeWe!;9E@ zRV=Us_@prNKCJz7={O^RtFy3pcZt=tV>Qrnn20R^qHg2)S+8W1V_2!ZAM8F}95ME1 zhtM)5zmlxtiBkZ!!>oug#}==gwM+0ib9Y9wxT~0U`4GP_|Ho{3os+@RG%gB)#olgq)tzBo`PvH zBk9ZcT0)ZpuGVXd=s_SZ@WZnwOdPgHQ#T(OKW@hZK3KgMxVB&sL1VsK)5}stZ z(m~bQ)~8jwryoxtom-L(aJX{{B|KS*IGe)dRX2nj18azO*_OS zLi%*H`ITBB4W>9sg8D9NrjjlY?G(wmMAj9RakH(6)@n;nz@32!g;( z^fL(@zl+{1Qo}yyTnu^~W}4a*f-FYD+gC1NLX*>&0lKM!P-Ea{w||2OB^7k28}U0! z%Q2?TX{qzZGohS?T_V%2@{tk$naA?BIA$)wIZ%zkLMc)`|2fdq2;S#Uh?bT9lz*MG zWya8%yllhPObgXB*M(eF2D3!vO6P=b6D1sC299CBF(g4L-Jf4rMjb&Fh+^q4Gg)_9 zW%3)en8guihQ42)H63vSw=>HDyCqtrq+CVb6&|IJp$q_GMBJPZk!{RI1f;yVv0WOZ zm*e5uzF6I@kAjf{DA2rsvTRZrxgj=9n(tA@-e{bV-c?KIk%EzRm~F}C!2kyf z8!}nTR_%UiXRSo?Lejy7xO&J%?ClWYW!--YOM=C znIsw&^H)WwbHlkAArs|yDQK%*S_2j=t7pO+iH)xF@zo&e@b_{*r{t=aUDw(&pxhEn zWHBaL(k)v$FW@&mx-PP$wbifCrk>Jp9)tj3L-1x=R>%G~FI7NGa(F4htsZ^9RTyQQG4)gk=xs0;E)d@x8ShsJAP?7kchITn%#@BdD{t zJ5rzo-dXgSM(5S~|gPO0pneldYX?3+iM8x5&2JYx9tq&;-)8n7;$H5@- zoOAXyvPZB>b%k>yI0?gMRF?(Xxk-4ilwA=l9GJ_aNaM>SGz;YN)xrH_F>upoJcoT9 zd_Q#9a^AswkXXr9((+Njm0+z8xhZ0!wot8()0tAsyCHX953`}y-R!rvH_?a`FD{!j zR9rnL&B=xwIrF(t5D+NEfBTh8db-6HUDc+e%JBz^q_b(<*s!!Xlg{rTY_~KVHN)ia z8k!^x4i9ktMcEsvqZtO}B_DvSeHXAOn+4bV_u;T_q)}u73^YE`qYlx2NbwGDf{oIi z7#XBWA+pTRkiOO7)VOC*=gH(cp2Qj1kI~ z|01O626sdjz1L$XR~b3sHZ7KZHqTG7x>eD$Oo!=g<4Ng{se#*xA((&Xhfp;zi0HP+ z-g2kI4X@DiX}-tWVtImuT&Ob4(OK>qj|K(Du7+GnD+-vW%83FPWV%N8Vcm7`^moKU zAT1H^X(lhP0sz2E)Ris80StzOJU0* zbIE}0MA??|5Gr>4!9=3A+-1?J@8!tu=YMsIO6oCz|0Hp^hB<8gg)W9i0s#{ zk%Maut&XW9keaQtPrGiYn;3GgB?%tbEmOL@bdLT-|>zN(KLNWQ=Im2YkoNt&jPaj+u|_%}$PhrRAXdKJeN zE#Vg$xQ)^D34S~_0--}Z+x#8qPC`17XF*+4w+EBxbXszYdJucCG~mZWP7cbb>H{Q**Q2`X zOaXxoU1uIP5_0(jQeDO-Eo;-Oqn8N?VjzZHW<+`|6J*El!7jGM$f`7fr72O@fH1h} zn^2EuIT<#!?3m4dQlV)KN~B%quknzeE78dB=xPW2NBKNC*lACWWF!W1-Wq_ zWhkG#xJbS8dtcF@ zRkqt=OWNCCD{N@5o_D{ELk=?7euN};(A5~Mn zd%LXX+-#7iVNYx9YsYqF`v0DiFmC;s^}`-QDt{|`Z`4~hyES?>jP54(VAinPXj1Bl zMEP^qCl7#_`yfee463e8HjbHL=%Ms;_U~5=WNo>NA>wZfcwqNmbyt84r6EafwsQ~f zRk)7GXxnukrUCw%cfqI_KBb2VR?ZAr2|s155ztPB&A zXF(=$X^0BR<*R4vxJciGSvA*tRUB-5ZTep=D5|{OvLuXCVD7lF&@O-9QT_uzLSe%X zj!0sMC8@!ALAdt@Vs-67sLKwswBWgIP!rKSix=yX@LTYmTCE8_mw(Hp7}eqL6Q0ub zWCj2L$h&&0h-lAoLlVmIraMWw8Q2;p0D7gmN=Ox{=>`sjH6AcXLpJqPN>9G^Mo_P3 zvvC_dK-{Z)Mq=cpV&-8Z9%Q_zeG>BZR2ysZ6GxXXpy}wl54K9gOSGsAcb9)mXlIxC zyY>z1s|rcEaz*@R3|#{lygCT!-vs4<_2|y|to-e+M;Xb|M^oy)B0tfXg~_e;kj5#g z>)QIfvW+&ZA?Muz*imu_Pmy1*0VH8>c^rl?V9g^M$ze8Z$8UY>s=)Fd{r5kT1m{Yt zmB5Cpa03wq53DY*?o{aBx;X??;q>X#%2iw@)Z-!JbG6}a1J#Xg+uiL$zla{W z%|50o1PS<>O;8m1ZDxrXmCI&M-nTSokmqP!dE4LdAIYu$Tg|;>Nc#9YowbwMrabyn z2Wqj7l@@1>&w$k(p*}ky?=CGe;iIm5)=CIV?8bsg6&zAU4g|@<93$q)dPV@I^{&*# zqilAWT2$BKS5z8e@D@8GqL(3qV+`KeWBtQ0%{F09LIaw&O3AO~U{8W@O3Ac5IcHQco#NgQ$@s_BPhhq?~lM?+;S z^E166B7vt{q!r4nfD#rXBl2`3m zK!(41d3V_)Mgcaxq+(5fVi0_C6ZSj6Q*ZyZYTnX!WZ_*~EIx3WL4E{eZ!v^VYup}- z)FcRiaU*~;rYvqmG5hS#!_H$2j>{(((V^h2yyP^izl+p?Bgw1Zmnb??DDmixTh12rg;^mkN11#Wsx{)zB9^ z`@ay6n^Vyy|LdAR-Gz(3FQ_UU%hIBF=K)ib*mO6x>g;dElp+f3fk&n3|H!pKZftHT zat2kEyO&RIVFT0fZJ*(EAXO?j^y*0PqoXmZ<{o7(iNVz5wYXP-)srNPxS(vN$57Iv zr*GF+3dp&`Yme8}eRI9l6xp1rFn24lw9v2j9;48?D%ZTgPk3B2Hft!jnbUJXSny$j zX2pG%ZqEFq+9crbBB$S-^$CmO?>>PU@{JTJ5Jdxm(N`-^n!O9EaeC-{qVg}3BmUR% z_4`RBUg70W-Gduc^3O#(J_D%WTiIG4(aAjgZ1{6c{{8d#FEBL2jh6+a%9X*G?>(3H z|I@K0Onq3k<>Sd!M<4-1&R0Z<C;h}vycg}fJsdg;F^j)SAu_Tl@ zPK0j=o$dPF5Ls+Y$sE$OPIbP?laKTY3b#i6d-fEAfZbP+vH|`1SASk_!Dn*vxoifg zY+=lvmuzeb15kqrk_1dLtgO{Tp#x%mn<;t;Ck5phBL}7Y`tRGgK&0bCNk!Xpw#2Y2 z<+r&TSGI^>dSv|LoP?Qprl7Xrb^5dK+pjs>-F*5V4c}RzGa#d4v!R5rGHQx{H0PLA zDu4Jk7C9Mp0)sD#Om|b>rfxgqys5YkVRY89Cn|WT+bOs#qN6i&dxp-9i{M;gv7mO% zOF5~I&?iH{L#%rFj4En(4eYW+SYGvcz=XevGqrotRvBmN)IL+fKVIdp$sKZc8O42b zOl2&%heg!A(5HKBwkO-S3MoFUDx}N@w|dMGs3vhj>2{%4V#**I_h%cv**=ZBoz+<~4Vs-ZB(zrLz@Rw`i#|1a&RV<1E7 z9t7mMX^p<4mP^dABN_=CMCBX%U7`~X{}cOS#Fa+=p2nab($MP^#?alhmS zL7Leq9`6pS)Gj><7JhPZOClbiSDmViTUA`PoPNOvtw9{X*ri|9d+1vtmDIL?$I4XL zlchFd|GnO2#CO=JU9%Uy16*aA;GcX{cu@P;!?qiUc`1~{Ocjg{gBKUBIC&mXC@GCo zF_=Ec5!|?%P+Lf}xK@rf^}ckbCpbCvEqM`)$y}$GhA7bl0989BIY$uh>RI$)h#vY@~W$1JVr%YQF+jeL=OClg%#*sJlLwzLfM3r_Z z_<<-*;&w?4@H*O{6!6aZS>S(Dq}gwkX4)|nhoL2XVe}Q@S$alK3lIECtF`H*PfaSMs-C&0Eo#PvAt4bEt*jmmIl68oq$&iXPqAjsq5VrirOb4TBd zf!sT*?K^?uLoFf`Mn=pvwzzVCPv?dsV$2`~Q`g~*`r*Y!W{#^P#vWm?*!ks}?6K2my_*Kmr00%d0))IKT>hpDS>tiIpUpZKQTPWxw2P)t8GQOAMUG6lHl7bv-_-In;P+iQF9=#8WK)g=723E zh-uqy&+aZjZy#^Q8SOZp+?H|kM)|llH6}hL( zF^ctLN1{HETS~*8{cY~Mq9^|8h2kD)f2j#M!1VpkChA7&TITf<7)A z3~BpNxx^%L=`xuF(nqOsm}`D zhmw$wf%^Evi&HvZ0PdXuocs1W9Y-gzYfwTjI#d#@i4D$^8^@&{_VHk|K8ir>pFmcz zMl5IfpFWyA=Zg;kGpP{6)6!hOF4rQati}-hlcIJq> zn5F?VBWG8XZN_|RW4~W10gB(B5>u2Mf=aWWgoPlh*3>*a98V=<|9ngJjb+%h<78Du zz8oMaZXzHc?9V8uz%v#isOMWD)TT&b6{Ms2Oi_1`*sr|yUN5Gv|!L=US5RDP5Xq` z>}W7N_z+G*A83fAt)u`F?XszAuH(8$nq55Mmbgr-`qye& zVF51tL-HS0OzN3NvHHvZKUzNZvn4i@+vMOOGN4jd|0b&M7{lK)f%?o5(t~wSi*@?C zX@?z>&eKDf>q~6raeCrnMd$+_N}pnrJ?x27Dw-iF$$)A!;|~!YHPkr-op5x~;>G@6 zl!n}+t%B~t5sN^*1}g4o@8KS0L9PQT@Ycny+}mJi(y(L7C>f%l+7sNT8$yWS9AU>! z&hcM{Fa!%2-lE)~6{=FzKM}u~_2BDBNG|{|o~KJ))nL?V=YkXGY(H}7Z&1mEvM_$= z@HEiS*pSn|Tpw9kw};&Y2z2~+qiSrIXM1ApD`Q?2fdiejesyGk3}ZzoIdB|n2o{zp z+sgcU4(8**W5q)mhz)U`K)+m~4crvH6uwb`mqjIeAZO(>9&FbzxE=Q_IDlRPnxV$Z zHwL&DvEj96?Du4IqEGF0-DvV#gg?)r^mR7`;6w>PGD$i!@LWlJr&&R3`RF0*iRV;9 zQi78@8GXRk%ue`EB?ZTrT<&;opl|;S?uXpib^EN*J3=DHX#nr~7Zr?MX*karIUK;aebEJB;OuDm1S8|Wg5fakVaeeRLJ|WH2-}!k zhQ_L1VL!Nsb(V2$APVWSYEAQEg(QF`$@@tq(bRGKl_1zK_wOaL#_u!<){ACP!w_Bxa z6h>ytiEG=(7kX+-)`ejEfMOWLK{HrW<6L0VphqwxEUP-p;xTl`T5ll{2SOS*w(v}m z>dG4*M*1W&@{aGi)>w}~OLic0c!~}>=0c$I|DCG-2r)sb-nt}O0CZ7AZsCMmG8=?)%50$d&~E|V+NVoE&+*Pip#1W2mA#D36r z7Y<`BP4~ABAC2Fc=`Fu>T%GaKN_ZNAHa57MhtRX)hzjNLK6(4vgO8*XbK8hqx+66~ z?BSNedXDDvLu$CpN0)QAQZNCUze%Y$3@2Aje`eLCYgQu^MJ%>*;jwISdjs0GTl}uE>%LE}_xn~B%OSPZq*gv$OIL{LXKe;SPky6RCqw`&4 zjsl(Q9YSFxrzHo?u)Cq?{!SK%B`Kek%L(82awm|CP*r`3uZilVBw{SX#IxXd%_8O ztCxNT2`D^XJIy)OA5NM#a3Vct%U(8*qXdbEXwsaV?=6dM$o?3ug1AbgK7Rh_c6ufN ztnaeup~_T0{KAC}#l-S6#AH9Q*BNa7n`X`o+s2@D;L|tG<`vzj1K>sGa*C|8Ojb#3 zqu4}#RgAY@je%;epaN|O6jKD;M-fIUis+^AVw7)6dW$huF2k*Nr?guOSPaB! z3P-|=wvXMR3VHbv&0w*|Aljf@cb32K{}r#H>FgryUsQ~m&P9G+4-z_9(`^8w#OzYa zuds;FVC9shL@$iF!lbpvxC$dc=%bA5z)5As779Fny=eiAG#28pDN7+g+v?%Wl|xWw z)auz`%vxR~806F-%c7plsdb$VI=kWy`VHsTOnO@y4>Rm6vXazol`6%7W?@D6 z^{Qy%;d8>AZ9V9dcwFY>`JRf2;E63kwGF5sdX8^wxW|t3r21Odc$F=z>PTolJ!-eI zZSjOEO=BV%BS>B~5Tsmxk|P;(UqWpN2fCu+YS0qVqFb_^!lZ(SeS!f{vdRk8J!881 z4fQ~(Su=9IAE_>o%`y~#0%q6}#yyy;S&BhKskuqM$towJg?VtmS9^REYBssKD5*$g zV;GBdaW%N =<-noQHHgRPrlSwgVTl7)n@4$qlmCvO0%N`fKy{J&MIb>H+qnNC`O zR{<0%8#^Mlw`B;o)%OQ9$W59&N)~$V;PuprBpFnlcxEJ?8Lp;X(Cv}J(HXI1L|Sfh z*O6h!HA^HEevNu^pLWcxqNTro`SsApsm7OSdgauq_SKx z4$MtVid~w`Sc-`ONEMzQ5N~&7+7G9WZ^vK9e8?x45Wz!!>0|rmOW|%ORX|(yqH<39v>W#SW0;@GeNO#m=b6>E z&-+tUoWdikon7Ui_<&NgNrhs~YUs*V)drDh5V^jLio5@dTGfgZpA2b;oSm zp0LK-andY|_Ffxz9BLj_J5%6pnsF9*wf1o*0{#uwpJeW6Qii>3kKxu!3??k*2Dq;G z_q?X5h&)=~aJ3x6NhqaCRV1m4%OfxBBok5l(4;!xPGE6wwoOMUbS0eMEH~(?&RiNW zeJ14?SZQQ@p7=r`#|&v}PruZ{mzFr6gg;r&X#sFf>b`wFs` z5Ld=lX~itNLX4jz?Wy?mU^M7`TojoA???Knf-ioUw*o>EQOjd*WAF~OhWlc9L3P6V zgaAEfphQ!sQU}+?>G|-RXT;*d-!_~35@a72JSRJC3ok{D=ks`(=qOJ21(uE~k|(-m zx5@vPWu?6QAUU5hOQDfOia%vs`4 zzM)td~C5b2hOguOjqV2-%+ z8PO4~oB9NLK9f49Sm&H8n-GK4d%o9SrNJdk{9NiI>Yn`B9ENMUQJJk@PUt;^1DfWk zV>^L>R=;US@&At;hE>g!#1$=S=<+bj@Y1CitHO@4UfcRDP+brb)`23~p!!(G;mZpy z`@0_S7$}al_FLkjhEV^TuE#OKwThMFv08Du zO2yGg)WhmO?vb($mmYanVTdmn_nw@o2C58e=|?VwWnj@V@PMZo|1S_LZou=p2CXnj zE_q)|9Y_YEc(+p@)h8|^w9dIj=>Sjcl48>xxq@~3p`h~v>VuCDeZu6UideMkKrjU3 z7GvGGm#7i}^}U8|U-;OeVWa=|Y*z{dS8O+?x*^l4X$K1=83jg7AW`TO;bT!y!KKpy zv~{>^EF0PiWk2#|F5sK<`q5GGOZh}`{%3ZpQJ#1A$sX5!psC5SZ<7t__%uo?P;qP9 zU02E_Wk8rW{4XP7$o>noknDAIPxx13828nFA^wnHJ3RCz5B~L4KH4P`sF#>(QTUcJ zXmkR7#bwywCNM?DGl2M5^uoaz!O{Yv>c;Ni;IMIkH#5aH|EU%oHxf33usFIs4Tu1i$=LdC z3n|g;I9Y-qlb^3T2e%U>?<@va=! z9*K6^0I7+F7FGiys#iEotW}W&77JW z+9r{Mq!fSN!Q8b}aI4d5N-2ViN!^mseIIEDzM;sGCw!4SK}JOtmle1LfPc_yCN7ek zb=_g%dUH#nb~)y>9b^Owgvve1Q;Rfs4?Isq;O*qW1wf@d zw;MJ(>Oe^?*t9sx^M!0Rb9mI@8ZA173NOH$dd*F?lH?3#S=iMl&aLzf*`?kWnH52p zQYhXO(A5zmV!GsvGGX?q{{1k1C4bf#5yLm0C=Xm(*lo&J(_1|0K-gUM6ebY zyajd1@V5pDv!ev2!#=GeSkWI-`zlXpa(4c!7lPSr$7|S?F9pjcdr*0eXA5Y<-1Z~k z0ijR)ig^O6ZOVpcv-HLzj@50CyHJh{TKJBRaXYTns}(v!G-l(5_O^|fPf6I4?9?B+ z#dPd%r`1IxS_H2`Vc=SAkC^KN9D%A>lLpOuB0(6Bh?IlTTg{s=rqjbPUw;i6ye6=M z+E`09Hq#gwhXIB&2Y5KXG*6|-s{lh3a1R2eCXD3J;* zgon)DVqWaQbA5)gmi;;`P``5RQt=<0DDSm_-XWw^o6aT zhbYLspIdv_Ff=7>jdp7}J30w#x@A3o74$&^ckP1WA4wMf#!yB*H55eYOuk5AG*k?; z(i#m1L$lasBOw5J(;RR7TejlSA$`352zLQbaC0lWyM0^{z&|CW1w)C3F|DqWXOsBJ zG^XuTktGV6r`5D_h!BzNrKpn&`njhETt-$+9>;aqXb0{a4^a3`by0?{YYmo=DyXdX z(jITyta^;|ah!f`S7{W4JtQ#3;=3{t=;eZ`KY5wLLGnZA!<+AsFcYV95e4VT+v!qY z&X8{tV~5jiIoI$ofklb%c%I~En=Z4G-s! zt*fidgR<%6ZiXVSOg7WH2O}q6GDDoY8Q16~<_NKN)<6NZYCZt-l8CA-Fk$#p!|;bL%zAi-7y5C4jg6BG z=p#%4W!%W@#%|+Xg}G)}S~BEhc;q95yN*mU8o7QwCB*qI=O-!5iQXRzPhX zG=F9V0=1rlBkLvEuxXx)L6zxC(cuKsl3hu`)*D-D}QsYc0(Gjo%1Fmoim3uwk^fpY)Cui zVpkIcle;`haaIGje81!+O)bIMS1Nm!Fl0qobcuw-9MV_q&QY#~EIvz1fXtfN?qAQg z=O=N<(EzL`m&93>KOeD==pg`|Kff#muU8qa^1flwGDO_tN4KXUMl3U*6cBCZWI6_x!;-!k>c{D4j7)flPI zl1vjLhujP zOkXv4#;y9E5*3)Ic^4ngaJ>arlqJW$YgD*21DwN$#QzZ%iaB5?Z1XdfD8Qh-(GQ6x zb%T^g$nxLTQ7uYl!POSfZef)!)<3N)6a-#P;4?Mj_hjgl4n`RR2I}C4=hm~X`j`!7 z133{Fe=u=;2?N|yXYCCKqj%U0n_%90c{pUekdjzBTp9_rnP+9%JJw2PL&N^6Xm8eHm{SEJYU3 zbD9?@(U*MW&zr6~prKtzC=0XT|b~tc?xK@2{i8 zqxcN!F;7C3Ru;7r&++@JsT$;Jy<<`bQ8cQKw6<|>@fHnz9~25U*EHE8`%`ULqj3G_ zpe5y4z6cAadvvzFP7dB{T=_9hIouw}eCP$~{}^GV6S$%&?Abm@#gHh~F2%L@tJE{F z*x@#(#v?w%?6;O0;UN^uHy3Jd@lU4~n%E1s`74R(AH{v5jf65R_@N z+iKX69qF@Ln;lz&6nG_h^2%SpOfz_P>Ae=g?t9HvZYeXI9zJQaJZ^ECspuv%*f7Liz<2-l46q-M3wVSg%h2obKXc&WN!(6uBe)ihh1VfIjuF=;g z)h9OA>r?V#=ZtVvc}X(s?M-RRt}+KxVZIzGP7}J`f=W?nYZL#Ujpo%!=+N8gg8<`=Qkk4iN zHVU#(9BIGLH-SDC`} z-n%+Yi)RxA3TE4QTpi`H7rn?41Y`?gF$8W|LuN@IIC9|6_Qh zxr=-7BV|xwO+IQGLG>Ejjuy>wyl* zhzemL>Q4(7u^`UVms`+w`|lu_{K=pa&^b)mkeW&)6?IV zt%WBJbAj5=9JW_L#C0H6-|ck$>2z>6JECj#5h$$nMRMh~f@J1UU`4@o>B?0&R8+Z? ze2Y9Kf(}qJr=eJG0BmD6aGQD-JI01lXRQl0=!Ldhm6@(Q3HP@8x5FUGyhiQP9w_kx z`?%V+>smrG_c9kJFBnsy(;*etaW_UAoTh z)o5nkxXjg&0Sw#^QBNIX3amama7y=xv$i#lga;hoBzOXpCLgi|@vvhTkIT`XQXc z$ONy(K{q6zGVKf%Z|8R6l=FN4I#q^T;VFy~bPrRt9q1VUnqA|L8uWM41J-;!vv&>P zm$0VxUdJcJ!^}_r`b}qLlh5Q}t z!jND~H{C2!X*Mr0VuDzkY+9(!et{o3ANXo4({=XxT@VN*VDBvk_%C^ZqMLKLEq)gO zFrFm_iWZN`B{#J>6(8uz(uZ#B+K>kjFtqwK40)rK#x>K1vQoP}g_+ArcU{YFdPyaf ze9CHP7U(ca0jrO&JNj1HrMCP@|IWs8?M;Idd76;6C&0yD%G4|ySJsptdGvi{g$<*Z z^h(3`Hg;dw3(t%$F9JxZ450sZ!MQZAJ`O71#@UFz>}e<2sgW@VlP5|bT6Z2-K@;q6 zWa@{k{}Fx@xIDmkfv5R##&!WWsAb;Kj}r=3MG8vBN@(<#YFb{ft5V{nGJf|ktS;-$ z?c8dBRN4&JFs|bq_}Perk0In|i2Tv#=LvDKIG&Jxm@~|{n43dhjTq2wSyQ`S zGC|6rC_}@6zPWy;hnCCmI&;7}*Xjz?#|?+ohMGfetUv5#eFB2@KqCZa{rD97=6w3s zj<+4*E1_(@LiPhPZ~QW<21i<7G8<$0oCMt$nqc4|5ajIE4V{TKK5JF1(?^5-(2|mT zj!f=f$Kfv7zVI6#T8j&Gp~)yCEGEHqqB(YbY+lal3}}kJGe$kRDl#Z)%hCQhMvMy-6gct zmzNkRdA(JVicte&J&2nuk*68evI2%&eH6x_K07OdFi%Vw5q~Vm7WE^?3<~6l$w^65TnZAv)jFAK(UF z6F4VD!zZmdZeEyBf?)ql?cq|2mn}<+LEAQ1Df!&iod9q$D+U)sh)0%QrOdf@Fi~^9 zbK)cI!HiV?LR%fbfv!Aqv|bU{Gm}luV8$(xtJ|m2x+QbKp*f-ntNTFxN%i&H@L9Ok z85Rw>Y*0o=J$e(7rFO0#wzW-9@;-)Dquc@8YdGiZnI0JpqygqNT%ND3;p{FAWsij* z8_OZ~>1FOp6(=Qg(YMN9w`Rq{N+cGcU=$*q^URaqR2$ zLXyz!-~?KiZUk)TnaUEz*37)&m!r0`vtd5^1oOw>@Rn7fCnZs&bOCKq@r)I&zEl4@ zj9Ni)%CB%@He8M0`zO*(>*`oy)xTK0!x;4T4O%1+finVMESUyRCTH-B*oL+03tyDN zQ&6vu=E0pjmVGm;pcuY9E&?$wk@7#|G3pk#M4f}|1hW7Pj`&lW)k!nt()D8S>MNQP zsDO=3DA>c=+DOtr2N?Q8Fq3F#Q!135mb2g)3ucaXg%J^2*DqkhnW9os2+liQHupRT z-v-sj5%cC26;DzWYTHgfjhZDJd+UgIlOL6BOYC%xHO!;w%oU4~zaU zE>%~HP4iBHV^5rHuRJ7e$xTK22^F@6=w^12AL>qdG!wy!u99=1RoZ#gDWo@bvZ4ZEI znUIoD&mF&eMpXVaZn^lG(@L|TyU@va(<6I3uujX`kwIPA3Ki#0-OM@&Jaz~z_;XF7 z*wTKODmnr(?2z@Ojz%w-6_OcMlZ(XIc;ulZ@u+>pq{NfD`um z)Sv>)0*Sna)dVp3jzha=M|7%W_cOP3`N9Gz{c6Oiv3deh6&O$15!-xa$TwMZpvSPG zLh8kOEuKsBq;mn_^6z7?`}02Y#cdT*MR+ic_t3Tb8*V%*|H<6DJYFI z>W^#*egZ&6Jy*}Hmg@uK9b4Zqx}A^jTqAf-j-1|5onx9Op%Kk$_&|McuDM6PJK*i& z5p!En(+oNlA&Q3Jy$d!zZZi=XeOJ`x`BcTBsmnJ`yvdXS2FZ=eLh* zmG>ENZkQP-j!yaDIO@V(twiD{I=*<&?nLSKMs`g{v;e{u78+-m@p89UQM-V%L>j<+JkI zWQ#QK(Y~Il&R{A}UpPCB8m|9n(Y{zRtpmB!x zOpiAkGK<88`+OUvFUp;uHU@1K}LUBl0?m7e^MAB__)LjFZUQawQ$y) zvi7}An{xSl3Q@X7bZyXrqhCis-o&1}W_gELvH4?lq`DIbEV0LxAo5MYHf6Gko*51S z=og6vF%v=(OmQM_ViytOwl;~$U6~TYvA+f|=Lj_iUFJ-78rxOUrc@;mKfg?=`m|!d z2iOWL1No>m2@My#0cUp}4)h=?k|J*O2PU2Vw$i0${1G@+ zS1G^%&4Uhg998k&pa>y$`3fNZRj52t$nog|Avb6%=?>3^;$ggM4EwNC-b{=HO}&Af z%<>Ypb@DcqgAJYRlnvw;LhwIOEjbiXY_KW<4rt3FVyQNRQrd^(p!BEM<)?@iH0QpV z1iLwujIW%TbWOe}q6*8B1(Mg=_NGi}_@M+sw?5w*xI(Y(g^<<3_p?qBLz3Vx+Pv2@yG01)CEX}@Mp+c59KQZg zgamTAKNhHpt?nYW0Y8!{2-Sec=4j=kF7rmAd07IOG5ZwlbR&(|zTd8fsj<0MUuG?u zn&oN~JpIzp{HEU`0GSHsit)kV_#;e2k{1)8gJkzs1{9UHX6izsJ)dbVxzh0KPFMB> z-F0?8;L}r9m|@V_#IIRaG>#{>LivtjT(KtLSawU!vDdgEYkftFyHWL`MwSx2KRMy2 ztDy=QMrus#;YQ&}rmDcdXN{}l)37N$WStor0Jr{tU@bMc`o#`G2>1&iJfLgSLq9~6 ziLSlW+ulBLG!nQ=b;(2nhfs?%o|;fx1FasQ>}btp>FD_^l_DC?F8l0a{n!Egu66p^ z3j*jBi~@e+g18yXsAa{|BN!nL6ggx!#yR`bjeE>lOEnVPndu@T6!340($EhxCz=w1 zBR5Qulf*e?%^9W=1fMMIF^I~<+WYF=*sk5qL_1d4#pNtm!Esw&3QDs9mb$Q@4LbrR)J=Zh2~JKwklFfN;>%2GzlL} z)~$9bbDN9F*3NINfZ_eU_q-Gil$*StJxuo``avY-+Kk-q{SpJ@3Qf6TPcY*t1w|5W zY$=iG>(T@CjW)l!I3|j@?{hb4#5tyzIVTqh#jm3@NIo`J*NV+8R>QRXRiI}p9L5XdoxbX0!{1a? z?*w?^gexXOw1jsX^W0IZfs>x2OhDCg*|(SviqfTv5>^FY5^1Uhy)uPsAW>*dCZQ#0L7o{K~c+B;<#re^*Vp>C=<8 zc4MiSybj1Y&()KY2?uB}T67I8LIWm%M- zXQZmNy!~~gQ#UuZfA$S)OZ{GX!$LKb7NI7D2Mn(8RtE*ta`DFe?E4KbmI@LT-nvj~ z?0BHCKEX5A&KxS`r^ur6!@SIhtDfsod7 zo=+UxSub-}3(g@<27C^`MXhO^?@NH>)1a8D%`~I6iGDbyY`G{jto=h-eVT@y7MFAV zx2W&|v@$`(gWIx{e9@ec6q?N)Poi-QU=7Bp?E!g)!#Fnzs|h&EZmR`#*k}u=sVW#I zpz+Q0%L-g;wFt3-PgdG5_!1Z4G=C%{kw6%p<}dCea4Um~r%k6^J#C<)v&H=dUgQ%0c1uk&@*)1|fHH5@feome};)>#43Gj@%`D#4<27 zncdJ=2p@Q@h?U&N!!}3U-2w@ri#-GkY^Q>R3iSl1{IZ@MH;DZ296vpCoN*OQ=x(`F z2&W*T>LCrac`e*pgvCN($N23^`cY(pQ$xoO-pWe20^K>JVk7Dc7gMV(fn0*&k?T_{ zJ0X1d5EQHlz7~=VP5HwFwPL6Z&EJq{%{o4vuYHAWPx5$diA|YygoAx%>r^W_&lk*+ zlRrgtl)6>fnOGahAWWm^X->+cub!OIWoU%^)UlO?$)^Y2Vk52IST>&4@fR-j$=!_N z2QfN5GBzi>`}qc>k$Q!EMzzbGnW0Euin)3%F{GrzI|mfe3ZEyK%usa*wU-vCoP>{k6v_9L=A>71q&7vOYqqna z?rl#`^zYuU{Qh2M=<$^S-_R1x*C?ukwng`q7rq$piz>fc!v)+m-AeGbHjj4%&9^~- zMGRq}=E(N83OZ7q>&pwPc^&hS0#cP^ci*-IcaUQ1eRRYvZTM=(3p{eo)uyA!-ue|7 zqNTQHleHEriS0leM)1f%Mi$z)M($6cIceIpI9#7Q<1Oaawpogyg(9pE)B;Ve5Vd1E zzVKjx#H#=ZLI{-#$qaK=KpQ;dnJgNcJ8hz7DifWGyGYwy#C*L3$fH_`lxU7sTWTGt zYNc_MJ^&I7eYKUU8)zNDE={B|85#0=KlOj$iGILbD?&?w`6n17Sv?$kh5=xKiOOsF zRW5CCtvGQ941b~{Ip-(1>b0Q)l!e5!{(yHMZUfnF;M|OvZQipcr`4O{#~7~Mw1eCk zZN(QAc~LxuyBxgD{32;%cBAs-Gev~{cG`-bME@jA<@&qOBx+H10eYNS2W%3Y(qwXG zGdYeuNz#Xb7|s*GK^=H0VLatMMOGP;7TK)%*N=E8O%8fE@E?vu_^;%o37%gXNvkrj zwVKpTfF;cILuV{C=eVp~E(>b)FuPSZ)qoPE`%Y;Rv?;zt3*=as$TACUOp3(=2iJcS zE&hn^Na%&VMbh1cM7Lj@WNxNSWgO`i_%ab}Uxo1FGd$BpaN2)KgXm#UxVhGo)y`Uzz5uK^L>@CXI{}i5N6w5 zz(#9t4OK9j<`S}ZxA=qWa;SiLZ>rt`1sX1+^sG~Tl$a?H0BY&u0;b=~u|vsOlqqV8 z2xvfO$n*^GR{;0QJ5tFcRp}E55I7E7(dy?vrlI3R4#dKr7?X!6v3hu;^)kcarI~?_ zI9v^2t2L@u{34MD(5R5RFzFt21?xTth#&7-O#bB?a9c4S$8|+0w@e8U$!N)QJi2%f z49e)rZTA8Sf5kYSki6WHS_c;H`kMTV*Fe0F`@)i3evHX?lIwSe_ zVxdVS4Uoz+4lh5f4x#)Yq_9IFs>YqSm5BHRR^1{H2T0@4Z= zVyf(gdkBK%sVE;DHmp#>iLA?rlUScDFezyh&2qtNX$b{IAF%p9{7CLIalwv|7@qiL zZ9yMIBh;u3w2P8cnM5lqSg}t9v$)3=iPqbAD2R)atcSo>OJ zsOtl?${%Vxj>1?*;tJGpuJ{srV5`{5s`5u&S`gTjDnB0w*89vKFbHJk^7_NJQtjrd zJ*MwCb`Ky=N({sPtliQZlKchjA9ij}e9B+)NLghdHTUqKMC%}Wp=QM7lf%>uV4Y{? z7^Kb?2bI%jK_ZwrQ4WfiCXpj3F^5PAEpcYLB+SvV-~`GwsUtzmI4#Cya{I~69>bJA4KHn&qS{*v80-ovVstq8V+X{bXQvhb?barI}6?dOFppctGU~ zdp>0=aRrpB`Fsw?33lE8u_1G7E`T56C3CCYYOj`VZD89AB-95iv@*q?o5uCHlue@u z&17pf`NLC*|Ia5VyPH3Wk&LZEJ3wt6nLbAM9&}?z+K_|Z_10WXgT)pD1(hFB5}6U2 zVE+1=u-941j$~vgyL$>NJNDWSD!D7~H;iOCVr;>A2{pX%2;bzul&kG8MGuE3{WRQl$1;Z- zt{Wjup6++gDjFHfioR%&tQ`qA2UBe}QuF|*ZQA6uRK6)j=3#f zmQSQi9VeQQ45^c0PcKA!*|E|Y>&YbkvLBZ!;;L9-k*}T6)TcH7N(hkzCFh$Y2<>u> zHEz9+;68@1y0x%*%I~@+bc{L*8x!$QBtaf^hJc>OvDcv%bNs;)c*9*SLG|xyG}m`w zms#b;W&{s#Z=zt46l2)ykzme`n^{$B6F{pHP0#)o>7A4$ovCxn2U4rVIxEA;@Fmv0 z@)~zOcxM`)M)>Op$0`g1sMe23o>$#Hu;PW*v^_FP0Eqp_7!4DH&={#E#mnQGLRu^c zXi#VwzFUl63AwnCX92Nt8i&+)hHnzqMn7g=4!X`iDush{sFkWx@?Pc?hP_0M;AU#t zhF2@YSM9FXKrpcEOGQv4t!3@^5 z5MlnR?Jiwp$r5dpi_%2ls?H|SnqeIfbpcol0LN&i@CSt10nfFH41Ton$G z}01)lC$z-*+DljO(v`K(-ibr53;ct_^Xo9_+Pv zD9NqzG9jtvaZ$Q}e&gE~>ERB7FSfDNWC_Iies&UmTSY}VT;yxn&UD}A+b1M_v9j4T zAc;#?*23ub22+0gK9F2vSMu8;R>s*7ye14Wa^g9D&!+kS|6>#JRmE&uft&RGtppHg zg}cvd>=U%cVyk@yPsE%|WGP^u=D3nQo2=#T#f}IA()a9%ijqBIJiRT-GAt!qjHk$7 z{Stwsm2N+#&H>4TL35u8uFvpm+Zbe1d5)3%!0?8;RHx6llXpf2Datb#`OB2DMlITQ z07PxiJ0_U`+s?nG}ZsnVp)dF4;aal!{62 zzgb{=h&u%TW5@Z!w3k3u9zxO5TTVchwF9>ptIFvg1srwX>_62KFG8vN_1Oq7JSK0l z+MDXPk4w0DShVk~@xw42#Djy)?`ON&P*K(_FeNEA{X`D8&opmtd?R}wmDCmaZ{Pw} zOgsDb;;xdO({i)%0T#G0R?&59#TB>+m();7;|9vKcOa&28x zV0xDCb*leEn*=bCwT$S|ry`(#t^MW;G}deDFx0Bx%-+J6@MeXW#sH4xX#2ErwE;#kPtKIZ@o&ji zzG`9R&%EJ(bxG_E^daq=bZK0n#DBSIOM}vRP4(4We?Y2OgvM$#1P8OQ4a&mcx*Fv# zp4dkqB|J#?ZB4XSLvk*vD5^v;2fg88@=WV~*;38@mb5L$h2;M=VoG^vR$Q%>6I}`P z;eI^m$a!hpf<-3i838TfKNx*I8zf-YVcdfl=bm(Cj;F(wO$MDaTE(ifWCp2m>L8N`1J^rA#PTU-KuaTbh3=arZw z5Xmd1+-U*lGm-S#q9V&6b4*{@{spE$J91&qi? z*k8_?d>%mhgLN{gm!R`&y{+`h|K&NEbyHxtAUtu~&Bk&Eza`WF|33i0F#{HP5xixd zof4^8<^{Ckg8naW4-z(VmqrnjS~5bd+m#&HZlX<*-G+^HxA`OcJN44RlAgBh&XzH5 z@plM>LH4amt4OxXWpn3C4~C9@yffM>pQ{?>Z@4h%Mi^h(i-~qDg`DeG%OwlyK~JUP zNi287x*S&kQBd3evT4N(`E#12=WYxnh`UWYS&8cDg%qT_ zJXMnob=R9>|2I=W9`ACO>NC`SWejR9*gRLl*Yt*y(S{@QYBaTz(kr1J;bzqD!=oE$ zY{%n*>g=A6PNi@Ivrt)nlCNl=hk$Wy(Gbg#u>J>Gw~fd@kJ};xC!_H6CRY!s zW8hS`$bkuLV5w4=O)@;+8M9*@Zg*`9+04CaR->e+kE-n)r5}{TXeHpO2yaH4wi?R% zE!t!iQpQhg3kazGW#S&4WnT7ACy+#tFqwk2u@tP{_~p6x>^Y$khXKG+Va48}YK|>| zzTcM818E5=D(8LZD{+Y=upNOh^D~Fe+z`SLr*mkgp2&0T1e!-x1}7@ zRxMv37eTcRacJ`KqAbZncOaOzoNp2{75yX=i?+sC!@ih) zzpgN1YK9R?4(zM-^K2coh#P)riEfs8)#xQh@sCw3TSRj`cH`}}ui^I)`FVvN&`^h# zH)^hm<#y@r!pD@!SN=6ZL>?$mJ|06XYZ@52Upc^lw)(o>JnxkMj-SpcK-R`~*aJiU zz2IxwtW&(s<;m$WC;pWP>R}-ocGlY8{_{UC)Nt3 zs>qr2GWj{{@@lEF0v>g+C2O-1Etr-1Dcc*H2U=y%PH<146Ky*j;OV}1ED*=@!~9F- zZYw>KF8CMsmg&h6oHnMRBPGNTmIF?7X=^<8KAq_|?ZaeLEq@n?8;@zU_uiIa25s^; z1RoyzmKFM;TH%Vy-|**jHYdCe(9fI(gi(>rMbV$Devf%z6PB>%$vS zQJ&6b3EjB)qYP`8hEYKdVxrt3lOKDxXTl+Pu-(`98HItfL&gg|-5Kv_k999dp z_B@u&Au50r=a<~zKZhUM8$HyVNQ3ZRgUs0-RFEjW^ctJqSe3)_yZ4xJK;Q4$NCX1D z)+SMb`s?`B*?#IAuAYHPdHFOB-{g;Be~Lk4_{roQ=e={kK%yerdhbc!l`Ur>E#)Fm zU8f>M>iduCD~LSfvDRDaCsjSV3>T953zC0J8EHBHAHsFw{RL1Y_1{*K(TmK$Hyuxh zU*t)^{iD$ZKO^|Jx|7UaJV1wgdA$fCkSo3l7wJz}jU5PupH?84J90n*(v3(H9?o;Zoy7tx+y;%_rX=YaNj|D6bAHdGbEb=`TKCm6*A|ro(Msn9iWf<44zN> zx9Rbv&I>Tt$<&XKY_zc+&_mYtT;2~04(Wr(>3BZ#nHrCxAcV}L zfN3I*pL#^kzem)%>2O09l@R~3z|h@B;0N|6ThLkAuM>$CaB4qF#SgWQk?Z*PWjAB1 z104SIMCk^XF9TqyO7fv1J7j>Cm3Eg}dw*ydhuP4%4%vs*;L;!((SUL%>o>s(T=~e# z5Y|C{Hi_)Cqe&7VYD^!vH1?$}2pbJ9VgR2kFMe06#mHHkSsE51W=|fqvLqhWzEGOoFw3r%Y)}!yF2>GSP0EAEhNxU{E zq8OIyz?M9NGQSyDf1O{)`5w{rsO^cR6U6evGW^sKYgJh&yQNEbMHK9svy?7F-z7y` ze;1s?f`y9G-MjO7@2%T#;16bHB1dA-=YJjw0SKG)q`<7I3)y znc3vw#E{kAD0A}2N|+_+FHD0rN7^_^+FM&u(L5V(einC553Sz;VC*XittERNKFV1) z7#!TV!RO8Ybcs`VQnK4WC{4n}?@)LzF!QBhBDa`xmGT9`>y*gn+j_Jjv$c%qVw06N}Jh z`NZxPVL4;_**?s_Ujc)?9kZS@+q25IXs6L&(A^Wz1R~;fIe76;)XZEtvVXd?6RxAq zgm+`)Ev@pi60u*;7V7C(`z`|1v)3W<^HGyXEUn=5w+P8_68A#wgY`OCefp_1xqbg@ z#7}#^XSirI4OEx81g>-l)FakGppYcnj+qVetjq7tF(mGI2Iq7{IB)3xFB0HW>MtJUqd`-=~GL^20Mq-t3ceC`VbVZ zw6DRz<_?^wd5E%W@Fmbv?Bp3Dwygj&TC_gb>`dhf_Y_QBgqh!G$fAidqU!A=c6Hej zxa4%u-DvseVmfrKGKteCR#1V|PvL9V26b|}W~8ksX1Hk`Mf1V}t*{t=i^NJ`6ozP@ z|5gIg$^MwOofcvmNN+=?PxD2xG!C7N?l~%5$~tzbY$ZD4chVUTihtVFbQJn-OIDF{ zmpmK=9i;R}P}DG4mfw7bvinVWu|bIM3Ig#ap*ATTLgACy)#Gm%z!J+zByN4spJx zeq78b?}>khC?p)e!AegSnJAQlW4~HN6PU?iuF7`dQ*hX{32-(F>-H^BZSYb~zk-Vj zNvpV(z?_2zLTPrj2B}?tqOzr85j{#Z8Wzb(5C=)#H!!)r^4R$AX=8<79Mm%K)2AEkhcVXE@EQY;4TWK(hJX%9f9LVW z!E}$oR<=WnLh#K<3#tJtDl<_BW2ehlZ=b`_O8fXcN(oAEJu_YA_YcpR42e_vi1FkD z0XoSS4z`?>!wKgm){ z-$xL`rs!7E{0rrD9)!_pzReiThpOK=gP(TDr&%2XXwBK89kyKm+;?ATWO*vADLq%I zHj7liZf9lOV?ny-{%kB29iO}=>}X#mh{XIn=RDsd<|#hj6hVwz`aU_>$QIhaVMp_u z9)Thb(0~7U4-7|@I_*xEU)LOl{rEGNgxK=ZX>k*y+Yza);R4-%VZO+ig>V-Te@ICJ zniz4StHer<A@!SnO~fxBeDN)+nPnb7c%j;B5wC9Fer*U@~Wzs=YPIXD2dc@lpE z{y0OjpGspI&vcc0zz<%-Qc2eXmrM8@?8#7uDcD6GgwJF5Qih*}K3QCz>bc8SE=S<8 zg)1?Rk#Q8Q`~cXk14nE-u4)5`mXbakQ^_N(YX5E?(7QeOFA(-S-(EA$j18v1c{RTQ z-v&i|#yYde%bwW9VWLX#TsG$IH}rS?T|x9m;9t)MH5XU-L!OCx%McQmTs9#uU4mjPLj9>!$7d zE)0_Fev4uNay>9#@`KS;$3bcLvEr(A{VtjAUy!m;?;OMQAo-MH&(J~r!cRa3kTiS+ zJYSEevYKrH&)WxJ#*sHh#+8BmZn&9e`Vm#q_@4nP-8yqj8o&-nIhHNQn;}# z96NFh9GK|Cr+B)yW&_hLL^02x78fDT(35GwDt2)PFq*oz=l}t)wKv&HqyR$BaCftr zh9KA%ktyT@rSd_Ynr&`72|5VA8jfF{3V+YGtpS1p1%K(qx`CcJGp;!Jn4oc5MkV1`VFkztKIWyEG=0E1@IOnaI}$nvXHWgtBPI~pluD<#EVCT|M+!rTa4=vcL-$P)oGZ* z%KE|q_K1=nvx<61qNU}$9y*7n+HeT};s|mPT#c4?)HvW{4Fk-nwodN`;_EEM4)*}5 z;u>W18M<{UYf=cdYZ}SuJ+z^8pa=0t|Nm*^YcxA<6YYat)H+9@b57-;72iAgfMaN9hW1=Z-LAnPy90aKH2SUau`YypEu zUozZpQdC1f*Rs=jhKevlt9WOM!IMZs)U{woBX8eJ7ARK?8`EduM`*Wo-MU%qQ<9 zjwv0RY*yurXFhFF!{W7J+^wy7`bc#sQaBxPN$SS!{zvq%RVo3%?q4i5B8x-4~^jch0J8 z>wV-3A2J)Fi}7MRX1vH?l0!4WSe*#B;vKK$Z-srA=Xcr2D10-l?MNCT&~4G0ML$D! zZcDCwEQI-hk&7jkU(=oxB$ zF+1ve4$}9aR`|n?|A6{!0jEiWGU zM7Ypmf&*}9q>F`9&e-DCDW61ZMOuDDO$R^E+NOI)m;1A`2 zLWh7vJ1wu2j{b(*Y|N!|Pz}d@H;*3iGGr^~>ho76Nfu~_3 zf4zd=_+>#kP=_4}4Ths)ygZ&q8?*(-H}YBtKd@gYZBv!(jJ6@l;DoLWw?G|8oYsht z4%%vC;oS{`*JX#WU~p#~&pIv#qF}j{66|kbwdCNkN`d+?fCt1X6Ax&T+Y-tEN{r@8 zv}8;|M_V7}J1xllFEweGM^{+XAa|MMc`MH^pE<)lb+5?yH2{W4Y&we=qZX`3RKgab zpWJvSZd zRL!Z79GI}#`Hk7)Kf@>Jd(i>(Z#Y0sK`=Z4$5LXWIF#Tmoa3!!I;j3j&aZf3Z3G-5 zN-SdUwRu3>%>dGl)fJP^x`8{T7M&$uoc3gFIRCLzkkL~?npW6;UQZ7%##59 z*9mPM4SDqO!Py3ZR%@D5h7y69cBC=1F9g^(R6~EFS@xwCO}aQVxb;8V+{7AG&~4ic z#WxLq^rVW}oDY-)1d&J)BBN^<*H&3bIYP206?LZ|S&7D`G$I&X)f|^}GHgcfAkLy0 zTNH$H`ZeGE@nCyjtBuf$Jb7VZXxJL%ozE1~jkfzV5G6sd4ipj4_78YC)s{fs zW#>Gi)&~rFj2HHyb!(!3O6BW^YKQ5AGW-QWxpD^xc=L79EqL(*lw67i2u>0oXlNke z=<2~7lnBa@bujs0YBz|?M7xM1uF|DX{8k7Y%lq3@?qku0zs9)x6S2-e;G!8@jl~&5h$^vQE0;`u|Fkz)2^)oK zr`_)R3)F@S6rWsCVwff2B(|P%mBi3!ZlgVvjxzq$R(B*oUk!6gyB~(L0fZeOlWr0n zep6_xj_E0t%rm<<7?WtD$We{shX?898m+;czmHd4#ev*-4>Z|?rT$-TDO|=3!HC^1 zzI^w~oo17XjxieHz&Y4QjVBYsezyx<{A;DgWPbmXf=4VE(SKqBRQscXEJ$Jp2bSOn zckFy`Vm%eP-{Xd22|R%3?O6x7X#*NYjF2i%p5plbvN$w}b!HS~jw zDnu`&W((C|9!Gjak6RCpu4%h^G6|MdhJ|V3*hcyW%YehN%UiV-vYdCC+e zjq*0GYRG**3F2zKfyO9qTts!Z^edHbh;-sziNjZlE{XQt6u-3WNNc`xt1|ope zrKb(h7$Q4ObXf~F!Evx}9Ia-CXsvo1IWq*^!(W8ga=+-`<`8zyjD6!!oQumn!2pxX zc}y*k;90s|IW{vNzB3trJ37{n_{vH(CndYU>a&RufBp1gtM~-f{Vk0P4UQ5NLusMR zM$c4{w_TOZeer^(-C}#(#Y=mrw3O?n2Gh>rQObnNPnKxuhj*y(g*Mrj8Fl(814XtK zc>;79cm)WnMG={7HOXbS6{TN-Esv(2kk`L~`hf8AFygsCy=OGIiN`~A|LD%3%P;PK z8*S0h8ySwjaN<0~&(m7j4a;4SV5RQ&@|0=SjY-`l#c-cvs=X^Vz`G_2)3S*t8UMx? zu00!K0~_Z+=s{O4V8D7_ZHOF;&IV_woF?CC_~BYE`WK^hy2cPDW}^VerWP+vEMq$c zJJkA0$FAmDx12h>?iXIP?E=>hTL?Y9`Hqt}!US*&NoWLpRJb2vJbAZ~s-Xt615dPF z-D#;5uj2tF42dD14}&93%lLrBO6IQ8Eac7f+_}F^G>(U@pcxfjE1wg#G&4NuOTEn!oaqKYqAMtnDK8+m`I>8StKVEH-kQA8 zlw`#>i8wLBg>bh}>X{572~V6u0%@(No%ArVz;}KtT||UbnVE}~Z7%lUMxPiX+hBmU z`jb=P-P+fuFs%w`@ElKQrY_27!h&OFW!C3oNU-FHHZK{;Q-}1POPz&GD{5vn9RGO? z9XVzVua>0z1hLx_a847d=w*r9gJWXqmBOM{Elz#wtic`aozPAnaN+X9L_I(PiSm=POYRCbYs<~;bni2j|6+6_BOl$xsAEc!|kSb|4s)a&+sPS zrA(t+Uu3X%6KP4l;N`z%0Q<-Dp+MprG1n}(A>erImBolk0bTx(>~CI4%rVXYb;$pd zb)w{k=dsN2j(_~N)opQ3?O`Qa6%_J^OcYDvZ?OMTAzqXTmOMgcG*=COkT_{AghFK} zku4?(g15skqQ7mrik*r%5Gm*qYjBkGfS7SZ(57matBS8E)^J;3=XqEk{~4SXJ`YN0<7Z1NE@QrjJf z%F3?JTE^)uP$B;7gS6xa`=CU2W5&{dZ$Sk2HK22Zs0R<0VM?T@i7g zmxkHP5epPgNcb8VSw?f@Ikm601evMDuvnR!=R7BrxT^sWFz`_KZLbAga8Za!5oxND z!xIcH2=cS;181-Nn%DbX6W5&iHv=)Gk_vfIK!7C<=f#(p%Ap!AZo3V2@rPLMQBd~G zw{C`hZ>4?<{l%0#IX72DKn=|n4z-sgLAO9^f1=>Wc7BtWDbsi(Jec3FQaYTo4s$dR zhQR15oq>O_B7_varmnSi9l$qy8D+aBJ!)}$IA4Has?rG;4a)%^5BGM6%PM#Y3?6}QhVBvzy(GCIne7feKEutT~W+S@dEeQ_EUuS*z=m>629ts*VsJ?3# zxQ|)5!WTmCM9WQ<=J0pS7G-U$X(b+u240#OwEqJ6c`wgK2H2zPG3!_qE=>pz#nSI;UD#SayqzKgcky{=uoLEeMIzqnSGL-UoWs}^V$V^2WZ z(+^@w8HZha6MDjD)#uOHx!Tlhh9a&Lu<4fgfNh3x(yjHGF$%@6u2N{Nw+y#two2(j zt`2Pkl6f(Pa4k%@(ufHfyUCLIz(GuXf4D~I2lW#97DgfpoW?C+>GB%+k(@LQx>DG^ zy%9i$olFK#Y6?I;|9_5r08}fU=Nu||bzW%qpUiA2#ozPlhV6+d>t1bQ!{VZ_j)OyU zJsaJP))jRjjO?N!^k~s)^4(^LVIMTh5v;FNBO?h7pH*YSv%q(JMp59wdphkXgFKUe z{Y#^2h8KuCWBzL8^Hq5*4^$V2exW$aZ8ZB3QwTY+@z8=)YgM(&9bko-2X1=OVkXre z76ix?af%anRBkneStE{r&?3ttbbB=o*LqHd-~M7lp5*85<|pVmG*je{dP*dR*${v= zag+z4kUjV6Gn8cYJ3lw$xmQGM&5X;5-zSH-hj`kjV-d5y3l$Y@K)p7UoS=|ILNyVV7Ib?ouA*=g13Py0Am(LFO@~5m41t} z?V>2CdR_?jd?}(VbFKi0&wufH2e>p<;L*1>eVL*BA2GPhkoCRz;~G?(wkBJg{T2S4 zYzCFur;}fdltVJaPty>v6zyLmhBWpR!C1p_8iOWtvAXE3Htxs1!WO@OxKEtTT9vJ< zU+pe&NOWsbs`R27O!eab+bofV7gQd)OS(QVseR$`$6-yruol$2Ch-Id6FVX5tRH@a z+E+An4zPD9Yd8T>0QLw$H^B*up6kB7g-UFb`AbIwj&N!k6SrZifS}nw3k8w#sq-f% z3uJcDp@Y(%Waz7>BaD71&X}BfW_-+!Bpf`C#WW$CqO*((6)rMeBJ2bNU<}LR2`+H7 zg4;6%1pT%!tO}OG*TaLSwR!{TMih_W-qLI73vo%B4TOItjEY!=-dxNd9Mt&& z1_%TPq0L(|mpDu0`sXkkt z8{c=DY}vBNN(-GRH`AA19FZB1TPU+Y%%rbT+YxfVR!AfSjrWXsYW%Pf7vjpwr7Q(Kj%lBp+5?|lts;7q$g0l

zc(zj0l(m0I)u4t-@{BG5xJ=R^+#`voLeEp|YqkT1}% zg~BH(etv*Z2powlJ?&ALBB@6 zs)fgrGUf44W;KS0U}W~3NG$>uzSnPf4Ge7*>dT)x#|Qo@<-##4UTSxeYTRBB$W!?{ znhMLk=v`4@F`#Pcj_oGgGI9kzW-EX}FB^QsIW%Zy#65ZZ;Ff-6!I`c%rI0`k)DzGu zncL)y?ibe%u%umzyP!-ffG@hY)mHbaU3Pj1uB*+%xtlBoL@o;TV}?wuQpi~As>5lj zu=Fv9&gshgDTyG&rz+)!kV_Li;r2qH1A$(xyp{L&r-?f_@zS8e0ZX4GGS}xoZfrMn<%2wvf{%k5 zJJg)|e1@0zp87SnX>9J!b`=>?eh@n8HY&Jk9@opLUNjQb;`0b9Y>`S+<>GJJ$b>H4 z^JnB>Fm5!YYlPZq9NM~6>40C2(6~Y1Nwnb=DJKTJP{mc5fw{6l)K%u&F? zqwa;JkmR={k+?V_q|UM>&h+zk^%hljxaf_#Q1@xEpob^HVOB>iCl5V^bct6bIHYa} zH1b{-kf6=)U>pZd(9JB$<7ZXk)HVYeK&yK*r^z2-9GHK_ldfL1u2nkM7m&0+b|u1{hOI9sJXGY5M2-jQ!*~de4(yH@>pLYV4h6Gbw+^OCm!vUi!On zBbpON@AEf;(E-<7=9JCvVo7U zDK%_Hb}>_v{wzevP>}% zdtXuSSMRjkD1kVVU%x`v3Rx~Rgv)^jD$`XHCwcmLI8zCYka+(iY=1>X+#%tp(R)^w z69O}GM8O+-P;?Pxq02AB$Y9qFRdzB-nWJ%fg_8&kApW!vBv^*?^g0saEd2`L(U0Ob zOVitKDS|syFx4|a8NjvVm!xO(#anN@_T*NWv)>`X9)kgZ&2vju`OL4F^6!7CfHz#? zwo;RvXDD_Rfm)4Blz=E@p(?bo<^VMLF!N{wkfOgl6=wSs zQe7RCI#@xm5NjC;T1S2lskJV7kAZ_Kkl_w>>K;`^g(OSzF0oBw4D}nL{SZyiRMB;! zvc23VZ9dYkbv66)r0nD%m|9I;vNcWjQoggNPOV&?B_%iN5O5gp`&z1|O|$HjBL!Y`cA`Vp#Lb zh30;8s7?WVUfrjh^*6t;_{jvRQsJvKQbIoDsM>KPW7&XO#Qe9aRJm${^-oB2;+D)P z4IuSk(>LwPBjHc8CPmzz`XJWcu-JvKUoGqk_mf%S=$nL-Ze{L4E~=82fk2V|NhMqf zel8bq9{dE10um=Zb8QR|AO<($J-lh#ZbaB~hc%I6GWciK3bUJH_Z1-a!SDUYxnyvK zA#0wY+DD$OoRn6Y-`Qx$l zH)d>t^;76{EF4fcQ>k7_7OgWnb>D?ZjG%%0)uFYHL#-&AEtx&f)1G#3edDuDx^RlV zksjN>RQZ?&c#6@u5BS-gT2>XNx zcoALWH`%W;+q3=Zo}P9v8d6jN@4E3J+8U@Ci~(@c<;_rb!hd511+H z@ksN2a}LS!D~cQT*j_tWa<;F^$ElP#sxCj)zU}_(lP))2qQaT>2^EmEV2px1&18xc zq9DA=Y>nPwntf1sgI?!K!UEb@>D(Bh@mRZz7brx|f0(+Si{|b}V(n|d^UwU98nzG z{iH7P54=E?D3hoHxVopFY;q`G3!;UwX9&&twcfkm_(SKf%~Coj_6OtQC~L>;=$R=_ z8j>o~8}5sW0Gfialum;P#L^b3vg$)^3P|NFE9CU8!8F{MJ(!912n<#`l!2~%J{e_) zMbJ04G!7o3&U_dVs6}973fGvi?K~;_+SREeZ`XD;UfaiL2u#j(v;M^Z5mxU}iHwo9 zJIfFRz9aNKWjjHG#uJ9n4U(6ZvZ~NX7i_SUCE}0Q%sH)1U4R$t?Fko zt?8Q^I?xmC%dt+XFF-AAnL#sl;3E&txSQvQkz747`3rziRU7}LnFH(v4_LVT4f!%T z51eXa%NOtI`MbP#+PGSj>i)kSe+dPo%#%GDTc;>U+zpUgm2|+vmg&bZfVL^%6v7SX z0!?I~Sdgu#C0B;2y0=7__`1NXPXfzBz{L>a+Ve8lQ-)2J@4a+4`TTxLf3yY;3qep6(VqjZnc_VUjZtq3MZvBPq zm1zg0H8Baqmt|eWCe<9+yta$&!f(OYAKQF2>w_#fos7z;7c zFtzE`37YQ3pwGmespEDZ%sR-w2y4w)*D$Q$|7_N|SZ}N5+U?E&X4UG6(yy(4S$2&7 zq|d8ZP6)U+Z|HSj#l`0*2&EBmI-WQ}@Xb$$jc(Bj?}80}A~|vYctIe%r3=iQuIfF_ z#`j*E$m<1JHaKR2>8TaUf*)d@IXMk@IMlyIap#T?Nsah~hKdr%1i_(2s8(RhNtJBv zM%1c${#FUz8i*wdoQj?YJXc*bmTsk(A=0{WO5Zkx)$rsrYuroaPZrb;6mWCi{TwpDNBR4=hOZD&wFC1CjGrow51be?Oa-w^W9~Q{ujVp0k8#Zn z0$ma6(U<b0D;KN{jkIoX0%#a;45Y@1xS}Gk@3j z=IX%s=4KeUsY)+q)o@8$r~U;a4d736i+pXad*VV|ga&0ylpan&I$T!#oAoY?3%#;U zX7msm@UEJI%dUhu2^N~E^ulsTh5HLFW+wy^b<*j2=@gX(wq7)ey`TwpW!lDb&kqxs!l7o%ENek_%z_w`fXXrT8Z zOp^^L9#SwYOy6aBsLS(BNh_X&$l@?Y0x|{I9 z*AD$_2>jPZ=G19B^c3<#X*uk(wsQi|@j~DobMMsW#H2hf48(<>4PB<+-rSvbeaG?! zC%=-3{}W{^h-C_cAJ6c{BAYsO1e6KC7DPa>Njr_qHPlDIj(L`q6+0`rYb+^Shx_&RlAi^{%2n9N>htK8Cpo`_7vULcBrY+2bq2kust)`Fx3#-2#%H> zpA6RQ!8c7CHgbltNvgy%4-q%te65UZ!kb+1@o7iZJfd~+wL8FeAekPI|5-}#1O~eI z(N`PUOtun4Cd5vdz(*c+keu9k26>=VCwW8L&Q3Ss&x{YFt9HNFstO@}PiZ*@E*HLC z)(i^YR(vrqxe9SFD0PZ?)y^)MBoW1_x;pyfN?T=NL&WjM8lu?1e&T`xbqz}uZd*n_$x!k$ zbXW`XXy{lhym@Ja%k_-~*JLHr{`?$JZ|))X*PVh8r?1~iiruA3)n`HzF|xiCG#TUx zMi_wA_2mhF@I%W?o&v``@B#GGkmxeCdM#9gEher zuoug0wwhy#b1iRO;g`p~qATggSdm_vB+kt_{*5&ky!!gv_i3)Av;cs41!{97o{S4}eqwCS z*ft(6Puj5qGR`?!MdBVSar&{Jm?d!15G%Y9t`_r@6?tO=EK6iu;X(UVjhBaaeY4n( zv_mKLsXwm^O02JU4tp1nZN`q2${y$cP-q_xz@7jDU@3H0CledPM|rqwq2%MqwUa_7 z57{vwZht`B;{T(AA{s#L)3Nz}0~)@Vu^eKOd0s=N_8dPHO?`HdB*efJP6eeb(k!r> zT;KyEbDJhjie#)o6;wc1f}?+A*+tl$vKL*#pd5v6q?*TIzq?{nCHU>}Q-Td_ZHQZ8 zF(IOScf$QTT+~uaz&Gd;F2drQ=$q$@fBH{Uc1`S|GePzA^uW1U-Pa)p5KS|UR7U&n zxk>5n7Iz2OYaX;`Lk{tOEk?ZaCsX1kwnxdEf7f^F^Vp5A!Omqx1I&l;!poVeF)+9P zUlw@5!unW<66oW?tlZ;I-Y~&Q2&u(Ue)z8ePhPJcTOg3`?476#(*FLER%Lt_-zW5$ z7V)ADUTE+S&XukIWUG=!+W1n1g(~4XM^w}DV0XGj_-p%QJ>*k5P-;~Em?_r3&)~nM54o<9h{t(KsyrQ7Y z*qWKUnmN6I)6aR(De*c(aU|8fmA;W60!pwI&pN4kT54-sZSnGW z(nB4?@BC4sKQ?5^L|Cg|oygEUI*xcQ$Gyg98McL{$P|;cAny zVU0JcsvWm&Y!7$x!yah6#!SHTXOPH>9TklFRy}X2f@^kiYx+< zh7_IlWge(P>0~j@$}Q(TYe+ShJ+<<$SiD}2L#DXh!KIvPyipXg(HY-=$r6hz z8)x9l1cV9Wbdzb>a&4{A>4r)D-}~fnCYoSinzY7rk?S16H&8obOK+f)+;;${4wb)k z=nnfmlCD5*ddq%|a-hPu=+HaKAoMl&m_~I9E^->*J0JOP)D_AF5}ckXxX(2bq7-1$ zItWMS#a_uYTX73D>bz6es!k4kNZf7XAnxW2OI(yGp+!k$L4z_P#w$XkxT9#!R=;2v8ccFjmzoZm>!6cC%5CVO*F%8{lA1VK=%MupxrXaP*NMd2!T? z^|AIPbEGv@tEk}=SM3!QFu(ad)jrihxG?;b^kd30)Cc#=8<6~ah+w$rR}WW0o>ploaUL4D@4KrB0Z zcjZ+}m(Gd%Q0weS($oz&1>$nDknd#AOsLqkYhvWTI(i$MS6W@sb9RDl!w|2A#9_+? z-WIq2fYGX=AqPqc_VHDK0@E#^jLr+8x5@p{LoJT+$k>P~BS(={Oe zsqdWZ#Y7l5b9V`#H`{#4~v1iK-<)foY`53Zu(pl1HL1W+vf}-LkwmYYeVv;z)CCdFZS# zuwQDusZN$M*IfVh*4Y2YqX;#`og`xAuuc>$i`rT}0>NC!!oG9AvUlw!P`LX5|33i0 z)C60@WEqlA72m`FHX7QG(7<}z!BMN!ej_qCMRB*P9mGZ%w!3;IdufW=)idCVN)1}^ zGr)N)C!#r471goIsFN_3ZBQ;$yK+J42tH;|L*L;>G{uh4TTigh0sjv(sbh}q+z>x+ zhJC~KZIS$EPl}f;b}C9%jH=RGX!Dam!S23VPQcZrQl5SO1*OU@6i+wyiDg?1zzThU z@g-_iz@S%e>6IBCU7^MnlEX0=Tz6ZCf<=N=jVrv?bNsE6B=BiUi@=;=(q?b$ho63` z@{XLBCwnCDfsSEIN0y$wB};DoDt=c6YX(_!>i#=a`GyiLrU0+|mo|`Am;Y#2_qusk z$g-DfiyG=FBQrVR7gX`j*XZl#>mssJxp~-+STz!Al)WPjUno$`DYYSRrM8d%9RRGq zSa2%I@SMfqdtd5m3fU+A)Lg;u5?@reaPcWkjQ~P!PtF9q@q$%vao}yG%{3sWpDYW= z>fOpsuI5~G+nP>N2++y5tghL;2hPVk(+C{@H#jb`YXaRW)&0prJ@W_*=z#Zw2%Y|7GI z#2?Zm%XEND2_tJO$y=*@sQfD9v#BQpqpOCJg<=8OflZB{#H-BR|3_KCxC+k4z_Zz> zGIwL^u>FtQEbNI7EWYn%e9yQD%CuIyZwc$Ftj;jgR+K(0JYhhOyT~*#-GcLB+)jQK zY?)5kPx-bfbv09|yKQ_{ZtXcQUvkzPY9;jcQta4VDB*5*R*t0wUYacs1TuqrqNR-N zGe}l82}FH)Lbt9izh=PB$EYrbO8`5*kL=YGEV5K=FWOp?rDK}7=YS&cLGs8d)E!Oh zfNTt{WJGHPOA}fDqDh1#EFGy4UU)tamib!AEfVEDsj<%c^Kn`oPjk_T1QPKA6OCDZ z=_RWOaKgiN7lmu;o^&Kn19Cw#uiXou`&;b=s3T4#hZhtuiF)BII}arpmq$4d8<0mg z!Sh?L5f~ggq=!j9D(^HDc#;p|JyDZJHpojM%^ACm_~GIjq2;Wfa5cB7o9 z>p8C#mBC?|*q3?(=CC}Nl#2Cpcs)=GK9m2w<7o`IufF9WYD?*vk}aA@u=4SF!%=`$ zfaM#N%Lf47Y0UJA$p0rD3=nP6p&LgBzt~CPIUQkW)>8z>rVs3k)}wfXc+^o@m)!$+ z^Ec9&8OMi1ZU+0FIZDmq$vCqJ)=^SHNNK}_(&hZ-@opECLsoH#lg}kY$m)RkaX*h6 z`0Cq}xnNg#@4)(nG3F!FMe@V%ic;zbi%EOnNu@)yinG&iL;5^r1+4 z2o-lzx`OQL%H%sBoQ6XorRV4jQ!iwIq$OHJlWsg6CavYBHi55_u2^^bj}280`e5jw zbfR2rg@!wNKm9bCLH7dEEG6?l&*EV0N}Onk z_Qn4z!ZiTPs5HmzWmJW^ry1%Mc`EUj*-#grN5m=W-94dkR7ekay%y$fC!OV}hCZ|e zDMo}YLuxZRalT)fK_0!){#L%L+I0CQDm7F!!JOKz(zZyIF4*)_mdJ~s=<6JoXy2(f zw_{7$yLB5=5Ub6b&#EmM~3u}iZ!y+rhoTO(|yz5oEY>+_tvc`qvKgd2R4Eu~YG7dy7XTlDKup~i0SNAj@S+p(f4sAG^S;!T!&eLDA0(5e` z)lnaF2PmgP*a9;=zZhodhH{V@BTj2`L-Ug;PISDM@A{5X{??lzZQzE`c zI`1_+hBQJGmu@fA)weGQhjkRW2~(Hklj~4ob{KuU41U=@`1XSdtnkEf_X|m>E+?g%ue+oQ{QzYf`{60zJ1-FJ??oj(cgLE}G3K#`ZERbK3ZL zSCLBU60NcOTcJO4kB^10A^jd&8LKJ|`V;9-48dzN+{# z6HD}%>?p@;fK@Dr=)UyYmdjF{+)oL4*iiUH!?`NU05e@})qglPb*}Pl8w8dnxP1lF zgS#T&5qnk1Xzqk*!^#|t41t7uMn-&04&EipoDM8P`)1Z8a=X9ILA~?XYR1+5q*Dd~ zoStH;We19;19JwE-&AQB4=nC~B=-(yHGrH+H7zpKp?Z#C)`wGI09s z6EjBtOcDeHG^yxGPU0GKWx;9gO{uEWYZ=IjWmgq>iH?5d=$ko(m zSYMC9MMuDGF<2^tzzqu19|cTkVmg_*^{TG6L!tv)8zFW4;~kzZWN*5&;!`6wyZ(gI z86y!qVqvX|kaU$^zcv}XFbmg|SH4bWlF=1=E0nb8Kz~W6E?BaQib$oM;p?IFDmydd z$e8ar^N;ff_;=k(rAjL296C4ySE?#!h&Q;T4JBtI)5DoiLdkh5rMslul33Av*gjtQ zS}xm$!6$7r7dCppfA_s0AKI)g;{fh7eH%YOq9Q&B1eC0q=^I@^k(m(UlYDg~H zskOZabz^JQ?3;OMKX!=NQwjQ2p;a5!9x%i^J;E?w*6V_=a|SlchW#IDqO$(L1MDf* zidJHRyIrwv*C)6hw5iMvw!L-mFnt3pzD=DO`k{dga2o1uZ`-GL^ zmoGVWfVrSz4Wj8$)#*r?Nw$CK?Vb97H&CSh22e&&5AQ$YkISH)9Qlz{?oJtQetS~B zos-cX?NLHnB&{SF^g6=462x^kM)dw!LKPQHwEIb<{XKRiHnP1AR#d^MZL9MX^4e!v z8|!|B>epwCR?QJl!T6jUz9$vLkcSPF7|U^mQZ?4#<^2=5bI1Fb-$*$S_b2{tW9R(9 z2Zw8(+z`=rngMA!@G7Gs1)Ej;j1_G-_2sZD=>BTTr$Qh+pON=PoYC39V+9To>tlRu zxGVK(limuM;W_lIqgZ5|%a}KZ9sY$jZP*}IbI|`Zl+h9m8ead`2Xbd}Ta6vqfwrz* zGNFQPVWsAmLEEUKQ!9ityJ1Q3eqUt0b{ZVJnn}Fe(p{SxBM#|TS^Xw+va}##I=Fcl zazpmQQvNfFChr+zW_vX|wJRt5I(%>F>0R|*3&5n){x9w~B1&V**q8sEK?ly;+?@mq zV9P+9swA1BpNSwl7-WswQ%`%-p9E>`6CK(+qaFy1;u{lp`e&+6zOlWFqPJfp>hje{ z#%R_~%(8xh?RR<)9^{@0!5BH9>2MMpp&^n35OJKqwAwH<6X{j+ILFdpfBajRN7V3m zlhE~>q!F|2b&Xod+uh+EKUy0h@n`I8gdh=T%|XodwJJF`rwNW9e^ideU0ps~5CAp7 z6bhL`W&loudYDCn`FJ4y9o0MTx}~A>Fx>);5n7;XyI4~s2g>$LsM$3~8ch>MzWnZ& zqCK?Bji!&=Don?dJ!P93x@m3$-jSP$>R&CX*v&}KL8C+lsQZW=Ts_XSxkKF}Ez}GI zO1WU^`_fh=2dw@&zO)Gt3P=A?y1?TOWms`wVymM#wz`1TxTQPfyNupa$eIlJf-9c5 zmaxla3cU7M$XN_)Fz_+>8tg|X{H}GG8Zz81oxUoalVOF*bTwgq?a&lf4v7~Xr#-+N zOWoMP+NGu)P8M%Ai;0Z?FbLIeDvX9;Iz?M|4dh;yX6w+&G#8s?MAQ*N*m8)lo3y3;iCHgl6?4d*BT`23;$!Hb#X0<;pSH=L_b}Fd#j{}l%6HAzsUd4qt6XTA%B}+D{)3_r+YAX@S>6!2Q|$=mq(X z4<}-`xI}lr93(=R8jIXFbL4j(_yq;3ut9DO-ab=aObs+_u$#gXeWsHMcimUDtr{d- znF7gS&B{pjo=atRrB#+OEMGM^}a0_P`=wbI6Vun z{Yu-TE0@4!?!c85{{ufpUJ*s9)p%KjK$$!-JXLFHaUxIqFdM#w z)<)>(nzz!@62&W@5f7-v(fkfO5;URA<#YxJ2rQAlPX@tdIEP>4=U{Mu8tA1OenN># z#v^5|gaA(c{ZZ&WDJaw-4JV5f7aqG#HKf0RoV;wb!TreoYd?HseJ6tQaDvOX$A+8L z;FCmwbK z-h<_M9a#c(#c^(05G1&?i+m!=Z8;aeT%<^L>0^oS*nd--tK&WwY0kbRuDjPvCuj7n zIf&C5!*|cypXi#9+w#r0-YuYM)KMgg^hAuhkJ@V(;!(t?_Gty=gfh4Iq*YJ~@mhG@ zQmdtMooZciZr;pItrjKaW(vaRkjVtIH_IVJrAhlOlEMZddwMmex?vq~k;*duO$AZ{Lp&m*i;G2i$d$l#b;d_Z{8m1!rH> zgcF*;&CKxHX=%R zC6peAxku}_j8wX%Nqsy4>e%d3Z`t7SOhebi`ka!|WiUYj!3wZIp`91rqyOdfc57lj z{n)LVsMq>hT5LsZ4-f8Y=KAvzfs;Gs5Yv~OCZV$nDViFERE@kt84bI87u2_a?x9Q; z`Y#VcRp+Mvq2B40)}K(>sTu3#;zsaQK?NO#2_{o<9Hli^GqW`@vQ1s7*+Hj?!WW*u zbi-i-Xumzg=PxqSE=cR4vRA&Z!6^p&H}uZIDmQzf`x$0Al-+k)EzDqjUOyy*y^vLR zUNS*sgZ}?Nj8jB*KUD7x*D?$N-a8yOa9$j5cJoN8{ZxCM-*6edZ$(icALMqxrfB?g zV(GUpMO<7W16h4Q17H&*!oXf9IumsYR;p)(SQ~0fGD#K5o<4OM%ML8oaX&pRN}%%@rhQ1p1b^6x zh#gF?oQU*psDv!b$Nniyrc;}}2PrG7Q=n7vuJ90;BZ=v1DV2wOqS=PnlYPbEUeXzM z3ZpRXegTu7oc^q8nWtqY6ROa*TNlVLBp#sS(I86G4`Caw*C9w2SVeHZz@qOf8fo`{ zqg+$hjT?7&{_Imx&WunRuR`K@F;LF5c~=C>MlJZE%xWFKod^FJgAP9$Xfr5o2=1HD zQxjxLqvViFSej(dj@6{2ihq|5vq+?J{@`;Gc?o*R>!cRua+jDTSiRp%DQyp#QCYdV zwF=lZ|Idd$(0se5*&5{|O!lT=AX|7pWCb+U^KXAk0+ z>4JRE*)0n5zQGqjYW98HvcXKckB2osmx~{?Fr_RS!}px`(X6liCj_70QpH+LShGwc zO(STa!047uCH7G?5$A z_MP>DpG~+Y(4(E7Ji0jZiS|J9W%gg~aCFrF{Ng->G#KN}x*1ytb`uCTF@UJ42#v*^ z+Cip}6H6#?@cXNmzglERKx`fo=K$7H$ek8Ll={f<^ah$a9y1%9NK!>Y?x)j4RcLo} zT2QSf7!?wB!f5WAiUW(02VH4|JI3EIT!bOy;MUH3vV-T_eq#^H9z^Hr--=@>%Fc6xlq{t@sWEQH{ zmCNdkoy0nu<04la17kn!^3T04M669MlywoVY-~+KhpkXl#4d>r?PF$8b(17PCQy8K zbR8Twb|lbbo+at<=x2ZXTK~1kzbasrw%hReqEGV;en&O0d77i5RPS}>V&eET_1l4r)>V&&a8GT zwh05kz5S_Bkc0^CO1z7ephAA&#a;JR_>sN^{`s*U)5;upg%P!895t8d(?{)9R3ne)F=<>1)-PIDoc;~RbU&a0=at=fRs&7@SGO&FJknd59d z>7Leds-V%Lx=H-rq%Be&Im4q?7mPfzu&Ivg8=ThQX|8B$41&^&6V4w}92UB5Ou|!q z2qxkEye6jF9T-p)TA3@AY~|HXH|@Ae?I+VJFoHHJwU!#KLm1Ur^6=et;{MG+)W)kK z{2$`?b)rVej>`dTP-y^O^FB-esyyIVkm{AioC3R?;`gG7J&hXYK}NeKt$KdveVS_0 z-cU5m9y4Zt=rbZ#jJBK=E5!N@%)LIz`g+2$r9%|RhK%#eIj)E*l!8usx1kOCv6uh& z>Uxv(>O^&PSDM!7{YT#?Y4(_FF*ba5@84}@+x#YFqY57aES6NI`5%3tO0N2D=jJ$# z<@st$Cc&;%rUeJCd~lpyy@lp%sul!LiM0++#T_wfN*b=|@&zUplFSOsn0?*Mxm?yp ziq4i{E-MD}=Q_7D5Yo_xn*2%gBN?Qt#XXZ0DRRv! zXR!oRKC^ajST?5zlt8`Uc3MxQ!JWZ|;aI zH*?+dcf(`(6IB;3!^=@-`Uo_Quz8iK#*02$TEA154ftI1z{s#Wg^%RS;-ib(7+L|f zE4p%^5bZ01?2niE5&HWG%xJS%g6uD(n^Y*iLL>_EJ1dW%x4}4$1{9Gj+F(3rbPnFD<q54!&j)-V zX@iVd#aNZmS)L5@6}A%|{5eA1KTMoqP2~xh@G0b#&!u;(LOO%;B!3OfwJDc5Ym!~2 zzDErShryFX%+|GN1$^Mxf9PUoTxDw^LWniyWx^jWy?10Qg(xfIL2d1G2O-KeRVcFZ z7#ms%$imRA$6Zd1g^fW%3(XpiA%Kirs{eU(p&*CpCFK5{lm51ynLlV9oV@61m>Pz} z7g&VvyoQIRl{;KfEWB16%?F^hfnCZjv=@(Yqt2`t^wXP6XcZI2FSd?mf1#!3_>ozU zA2`0SA+!3yvWKwOyM=n4v$#wmqrD*B{b;ejkZ1P7UDEFn)iP?}nbD`Ax^8jbDgjpM zqdxv!@szhb!^+GOW+a#-r=yuFjaA=gU=1c3Xp0KMl*dD?mNLQ6LiZ--y;Pm|ovoM= zvZ%Z4bDHruaV%3i|3;Qq6p34B`r93xqyvs(sQKIUFR1MrS2aA)Wh;dZXi$x#oke@2 z!qg#w3C5o7ibR-%$$S@OKNE4~HwtHlm1Zm5NqJfMGif*X;#Q51{VH68{STN4RAAmi z02rHN^j=!epV4Aa8*kS&mTT2h#C(2C6?8WT#IaYR6e=dm)F+L(ZBzFwEBnk@@1}x8 zKg>pLS+4l8iRG*lq(+}nU1fP7i_G*Iy_BYw%vdc|mIh8&D4MO`?NAVtVt5O6)_xqg zR*TeK*-_<95WFFr!oTe0z7YpgmCj`_Wh9}IVVW;S%aU^aLKKeHT_1HIQ=L0DOvkiV zZjpOaDX?LJzrHKF{V?Qd*7=@s3(}&@$H?kkhHy7S(;--87i{a7rQ8aTryaDESlCKjL%Xo52PPT^P2b560!%(xN0Zc@PlhTFY|FDAvmrDO6Zabs4y* zlw|UoFx&r#6b3NIHzQkzr+6J*d-&N|Rgl3_!)HtrtoyF^m>L=+jubI;VGeAg+@QA} zC#p8LyaxVih4K+CnLH1g`rVZ=x!B~SOwCgim<(dEm7=FsI(A)o1;wu$w(jC)L`|C4 z-wddgsF1iNtdf+cw_*dGiP(-Q{m%Z6#HraN+Gx?$FvG7Jg!B*Gg78H1D3=)}J$JEZ5^U-pfGNhX|`jL-?r5_Yv*e7brrZ3dM90)(^aX+B35; zJl+Tf3F)7&jwwpm-(>-wp+k7&y|cm02#GiS{*?YJMse-s7DM?yVR2^NWe@V35F~Si zGPJ3fU6O{Fi9G5<45YGkv}D8G%unFj$JCan@6IBHT?gYCKes@j0WFLOf&q3S*wQrO z%PDNf_Q8^fWEMS!x~V8-YR6Vogh&aP=r^pTx{FTirq1xzmFtga8*D3fU!t`_MQ%JD zHFRyHLM@&dXrI~Zm`K0q74$>1OV`D@U5JC$CxDoE+%4PmRSg~VPdx{GR?$&>w!Ek~ zM+lD{I0n_UOIiz@9-dON>09=RAaMTq04Q&Dyl$|^bVEplksH$?xHt&qriI5TXb^Vs z-Z)aQBdiUEY%}8sWM0BEce^t}nP4F1QAXOmq46y7o?cF~x#S(JdG)T$5PW*C zyv^C)Tk5ZqQq{5Rnge^C5nISn*5Bzk>V9|Z3W0{u+zl<8#N0h@yg;Ktliltt$pYmX zis~Z=H#=@Terkx+$^$&0zN$$Rlr2oIjW?7rrHD}l@hLDRNkBff^bVg`jg7p#LVM%> zyQTVxKT>o&juGmIjdS9^p{(Xu%hZ1q8^4LhbmNx1Sl&|<8J3J+QFn4=f03y_ zxPU$C+xzZk8eVb7;n?&O&;#y?VjF$QOiGzBO?lDOnv;wZ(dQyd%}%xAFaenw|pTF91jbYeK&)_v&@ydxW8pru!IuJX=})+3CseNw`hDR%M8N?{YZ-zV`}OP zsWj$CWg%W`;>WQyBn(duZ<$%Ml9Or6DpqjpCePd;S2OJ?TH%?e+*hie81B$)J^t63 zKSv?P_$KbQv(UV#xZj)Y+HA7U@V`9+sLM{sB;}7wuoQZvXJ3t)f4`$fVyUpz5J?16 zE>1zK)y+}_umW?ynak*)r&?J-UU%@4rKl4Bqw#{ArZzdhp?KZ1h>sutAI|J;ZGD*I zKoQs>u)R@Wp+_#A>!mFGpZRmv>OB|oszkI#$a&qjI@77*PZV4^B?RnzoUJkl*SVeY zxAi3i*t{?nqQ$7=Csgd!c0}LmyaytPOT+5{0Eue=i_g)4^wauNC4p~N4Xdys4t2j8;O=AIHYY*;9LJSX1-Gn)X%L5 z`{dO}L8#qGGs_MJgBL+tvqGFFgtvMM+a=8w^6F|P_YzDN^;XU4bDGvN&G1Jt1SCkB za+N|x>0yardNT^8jDr#3-rT|rY)Q<^#-x(&<3!rB&YlJWw>aF^QfOim~Q6CH^{_jmATTwc;BEX#;5T?{2;%9|PlB&20h2%qJIA&C_02$r z{bXj@ngY=?+=4y}xR3Z5E~Jnv7B;|*V6!Vu(N$AJXvoza&vVhek@@#b%B!Tb}BtpU2=Ko0J++O z!4Eu7rZLc8HiqZ`OMgT6Y=XC!{46u$5lA4}a)T6?o&{G9^WV7I4_nDlv@R6RlbeCa zBB$Z2e213%n54RFk1TZkne&$>?YT2iewjNAZkpHA5ELw_R(@0e|;A?NIP7Lhmh|B|LC<}Gd z@SXAueG=%J@njQ9q^w6F_~u1{59CW5tZWJH4OsAq6{IG;qI0Eekf?~Psu) zcF-fl66nv5ejGIc9*RuVCxP`0Cwo9x&}jhfGwX#KlwNC zf?d0WQj%#(FCD`CG7+CsYS)JeB_Gpe3HK2Fl0{8` z9B+PR#OfJ+?+1K}(aqhgdtaAf>@(;z{tB(H>4}jpZzmw*jKqghg*V2X;kx(9^cV{n zZLMYkswZ+{8qhI^NJ!*}Fj%J( zm!r<~hm5#w9&)P>2xwrSI&}r@p=HGZ5)E3I)7I)N$oMwqfwaKb(gx1*A(`^T5VfrMTAO6bC$W z`3-_1{0>*4q$Fo}xCUxc$he{K#sbmgZ{KYA7lgs%n*ywLazS zTr6Bq09oq%){W#$2w3(W4*#*-0eopHKCd9`39QM|;0N(~kT!xI*mq`{Wmdgq!Pn&Q zM_dV6sy5+SU>(*T{g!=pkti6tVT~J8a0kg)X9K_kvNew9$_bVf^!fdQs z$G8QQ^8ia&Mn-_kX5!QjbRVT`Zzu4}$#L~&%Z^vjh+L$l#?N9i=kf~Iu`|Jj80;Tj4YXJ8w*fhX7SGq8)wLT8g}Eu?3`iTJQ=_bGDp+)E zvcq5K!=kljG`Rsn-XCVPQH*zL9%0^`f|4$}dr83 z*D};%Xw^2}V$543Gw=vqSV%JRBeM-^*FUyDFvKqq8hss`T;+u+NV_Af25qh9nD~EI z3?2bD?UJOf>5E!W3594*8}ttm6z6~q9%0M$C(xSjUMBUwSPlWC{SM+T%@nCi4iyZ_ z8L8UVwzQ?}7t<90un;gN*Fe%i>Rx#_1*w2Jfny;5Mj#yWemN0m^a|;M{ioP;tI!-e zXh6EHNif4Z1aJz*;1nX4C-`H>j=!r&_yvRGbjAR0`p+^B)KsT{mm|PRGwz^bZ6-?m_uU}fhG^A5vP?}>c zPy4yyHsM|qj>$RZFgY%0U6e``1|#&?Ta^TcpyzWE3$^~LF{)nJTn5O(?4-P?Dd#q{ zGah4HcLS$T=}r%pt?R&ss+{xg`IWMG@TpF+o~3Wv?9|@ zf)S=P>H54C56@+Rq4FgwqF6jZ_T=1?5hJ#PG^K+vZJ~3id5Qm)kA|X~^KXv%HH&}f z7MoyVpzpRY(_f>2y(A7bnR(c2PkP!lC3mE!u8yojLqCyYf*!Y5RLbQB7-xLYvpw$ z)>X`AQE!Fpf4P!pyCgRXI&7)^&%!DBAVIfC9yW-w{b`y@p zpY#>3>^CTfNV%cL_b>+`1n7YPRGBC7wdK;^X6M8AlU;j`)OEBm(mlnAgMefvktyCe zOHD9uCj*1u%fF^o{!-!Nu0spYFi^L$OhaZ^t_J=2@3nZ(hmk~hm{Oh0ZZSSH%!MBi zUXoLAeX8FZH?~ zsj#Qdpgg+^_~AQ`&9$S$3I6Q)D+Zudyh<3{7%;<0OVIDWzQEz|W$_Qvs z6lya+um)Xel9tVZ<4Th1~s`@eo8D)v_z5Ht-P>1~X6#$l?LegQcsvC;43nx#OmX`n_Y z3c>9QzDe6Qq5BZPpiB6KUieuBviZa6cM|mGhZ~sb`2-c={p!5(_DZQz5!ut5!VF4B zHqLMtgYysjnUyFLh3a>){Z1ChC%goeslfOqmySrEc)KQywb$sb+JgOGj_%P?;RV|_ z(R!tn@+VR}RZ>1j>_1$pDdcZb$e{^?%eSFXLFrMenDnShD^&9{WY*ky#-FbVs zxQ>Q6pI>{5^--;xvcwr$tQAJYmd6EhKQFm)aEBX-G^B znVuf8GZdXb@7T)YdYmXhM2B+GaEWk(pnA=T{I#IjHj&ftF?t>M<#$>fW|ZAZxu4%~ z@@+$}uKtaSYjQa;?O>@7ozWmDhB3tuhX|7Np@IuY%20Fs+0ld(FAwjPMsU-|RH8nk zBmv5-xb;QkFZ1`S3=c{}7Bc8bdx**=ziF+EHAo7?ePLjUW6HOE2}mLu8nK}$N{=A1K*sWn z&P&FW8RP`iId^puvj*Jo?h6ayb57!KDer49rs_x)V3(M@UBI3M9uzUKAq$`1DKfgJ zXU9j)RQ{(GOG>pWtkPkoFCvBbz0ZV|TkP@(nt)S5##FA*9A6^k&T-Q!S7(6?@v+!( z?>)({nk(#>m*ObxHHI{BY*cu@2i(-c7WLDbDZmu5qv(ktPNE@+PL}`wBNu3sTr+)O zsW_=EjO1UpXHizh6c|H_2G@#2Mw7Z=_=-;KXhB1ICzuSYP{r0z8oITvB>AXsJjX3c zv<24hi&iyZd!GXUDOMMxtza=g?N%-&J_E8g`Y?IkW6Y4cpy2>EJ6XIA@m);v?dxz0Jave`de6B@jP*MmZSRPk*1a%HB4Ms zT%5fe$Wk*6-?_}(G|%R%D5u^}^j@%35%OF0zMaJm#vO}nYejekUp;IE2oIe1ik!vbClO)wAdJC3a z7b{F2v1ab?-PNVqT~YvW5_N;U!!!{;_#JstCir`w>FP`QCRs7j&Xcwy+;K==rF*9HM@5MM(mx7|BH6_tT}8h6ZcPK zVxoGxf92TxAL?+!O?3)eDocoWa?yku>2;x>!m^M4zIO`*ELL5lbbcQ7ibn58To3z} z{{lOxAK33cw_p@N@P%^-7#!&~=b7xu;jJR_(-?y=Y4{h!;&!25xE!Kpqwc?`pCMx+ z;tE>Q3Ua-;-ZFJ_MgMf!Z!`m(m%iVVZI94_j;#)_Yg9Gp8xp&oCgIQ}=iUv)&a2J2 z0=TbUzkRqB58(AxI%TFd^0wXOi6v}ZI{fX%&u~s0{CK8|!3czJv=Z?A>8oQN^|-b~ zJsj80X?8P8*#fUlbG6e{^Z{QQz&1=D5OwjEP>blB;+iY}B6G?2(ofWVZ$Z`wh{1|x z9En{?!TGfqXSUG=N~L-aUFVWJa=@=pyP3V)QxA=?H5MKR!?*^yof$3EoF*OaJ?s>t zsf6;X?-7MHruUIwIYnq3%`OKII2bse39|1Qh_F);6N%x_8FS)CPrx6H<|P>9#%>9l z&tijno`=;CV~oyEc9}Ay6~NUHEqb_|!Q!27uLA@}1tewjTz;@ZefH(j6@h=mb zZEr9)x`#6{CkoJ=N$O`=fGB}>UR)K|3FCfKnXgdyEMxT)Bp5tWj2~NfBCBKyp<7Gk zmcRGxrR^9lY0sLIMONSGYJEUIPbTX7sRmjvT0WOWx#jefM-fauF%sTX11L7zOqK;!V!W;iV2x`qE<6ggMngscVTBA} zBJm|GVW$%MqnmY=IqQV>;*J^-v(a-Cxii+3>eZiY#~T-oyma5X=T%8LxZyCO8~2}x zN{LYjN+y6v#I)#MTFZQs>TI543SR8KV28*1;C6e~j4bKFCgK7^;jrZXk9@qPL8vnY zav8Eq@>>%=hbG7N2=yJbD7p;><>7NxY*=A62*>6>hZYMrq$Qe+o>@6F970^BOhQ0t zQofT(FK}fA0-CR2?8hALx@z1RVsr}~fUh~Q?LRi;VCo3JSTt8l$CBIM-Uwj-v-6ib z6W!?m0zm!0y~mO`+`~AbhY!X3nXx1!n4LvlYN0mYX=k$78NMTuW+A#|@iM`c|^IG=PGqStnhZ0GI zspKKyP`+X;Yh5L;!b1!L;5Qv=v8!D9^3KNYgsH0RoCck!9ueGlW0ohM4U&9ZmySf>-3 zyafnW+Q>+Qn7(SjDcFkk#$rgz)LaBVb=lUH{d>HI06eW?YTgaEx729r74Qou+;)7g zMCVRi^aITcve*TjGB5I)*LoKcQk&3RKvRREll_B1gFJ&0eXDv4TQ+aRf~0(cDP%l# z11BjTS{64l$NvkyscIjVz$4CcV+D#~yl*E;xSdV?cN#Z%RoDs>g>~}}s$OeSh$SoY z+BxaRzG4%cWuWC=qYAigNg^`CZJvv@epY^af;GqGmIg%5!V@BZ+xlUp=9hp}-TVht z`b$R4697L;beY?WHN5gU=6>MW6xBn=%lSnrnHmX7LVmE_IM;eRiL_!f<1IT+6eAmF z!9L+A1;XpKK9Bb<_`&~6r}@D-uQQE_{Ci1Gf>qTWUP{I9F&0^u>=SD40szTIx7nox z^u^QKm*iv_Iu67ZqojI!2w~p79=#8GaWJkPG5(y4vam&Cbt~G6Z?{&F^v!uNBy64G z2`t}Z1_uJ}{~Wa76qRsd0esf$ZRVMrFan$VZsyqGyfi%TLTK5(Tp~pgV~Z16m?>UQ zNN?SpC2>CH23tyavt0{QGX|{L`0BJ?nN=kEdbn{IvbNIj5 zsE;4@Ji&q;3Kz30q@MEnfF>bG{C23qYgWm-=O5^aAFdfBCu1cAqTYMYKbDg&VX7o) z+k>C#bp3ET=eLi2EP4JDn1CloyL;ArU!}l9(T=5v$FeL}D*%~ofzh&75jM(w{vz^f z4UF#v>m{9#SJL(}C&7Q(Wf#-UV&Zm6+B6&;wTW%z?+PT}s1S1brh%M896|rU zx~aL8zvy0cG&sEA<{rHcJm?5;giE=ZKR6E7g0@b#K=?0gf}vhtqfHoZZ75cF(x}Ik zYjKx>7_${WQcJhWUQ5Taj&xx~W z=>V_Y7}%WBWamwvL?E>Rp~Z(1hO44#cgxva6#}0__YiW&^Ijn^D4fQipYXmspzA*T zBg%g&QgkqNf_x=~8DW)+Nj+{&&`{o(6Yez{f5m(}c?PjBGS{M$Zay}nQYZFes@1Zw z@8;`0Lu?UO@-vY&xw)wFbOF-?@T^!O2*rS=i~5#X?Gzc8C|hESliIkj%2X19 zO>Guvm5Cx|_mQj0QWQmw+Oy`RD;3Dhg!wiES%j3%Kh+;xKN{0Rl_&z62!s*+nmX`P z`~~d|6cIKx);gznY}{X$(~W}Nz`j<|3phH8-zkG2pVOcRk zN=^NBK8heNX?_Z&WzMVri}+5C^?6kR_L<#_Y~i>$3_0j%&K8*nE@q)YNM-+v*__QV zslhk%zKX;t#>*kOdinr!=a|~|_Rf+FG{-pPt27}L_TS_R>uFS=Pv^)bL(_PpV^uYy zJ@8plp7lcEbqKmCS~-wfDDA($(tG(KbF%yWIk>6=a?gGVi6sL}Sa5@k@bnn8j{BU1&v1>KoC zbz2ihFJpLzy#a?Q)aszX;^XWhL@~grRN;l8NDx*PY#HB9%VGY&MN13J#x(mfn>5!P zpZGE?{hpLX3k5%7hql=5cA0Qh{OVs}f=|W1kY|_1!mt=^z(UU~TyDTy0?hkP7hYL5 zP?K!%61v<^zRE}M5$aIBNof<Kli?l=MtN^KjFqT3{Xq#;!-O% zyO;1=2y->=e4&q+i35Pl=vfL(U(n~(e%teajg3?SOkuQ za_y@mPUV-;-9`nz?Lp)h#e_LY6RW}ni%)mrqK-#R`8%DV`-cDEp5O5zZ$oh=K-uQ& z=}bR%I3Bl}VB#7vId;6kMnS7O7q4|$51MLnON5TZR)=4n|0G2I%Hk0g z+r-~PSj<%0$-HlV80TG6GA>=<1qx@NujP=UfXxSo*W0e(*ajq+fze_y$lWuCvl@z) zX)aBnMPNA|h>)`v-atPOdMV=~48@eeDb@pr=u*PXFag*A;_`1nyLWRQ1#p|E!aUt$ zQ}!HAp$~ZB;lHZ><<(FGeIX4An(u`qR%!|lsZuSsQA}&_F(DtB7;ERlHW;{*! z#Ahd(X*K|+Ety}OvOZ}&zab7A)j#aiLu^gk5Osvsj#7GVmF#og3GCsJx8#wQqZvR- z+az^HSuwLQmXG0nWlju7K0RFT`NaHKhI|ki#n}Au)i_}fauDTt6-lQ{k_0Q}k?0?P z0?m&0{ZQm=IP~*UXZ>PZ3m8DY6ID=9Nf3=>?J2Z~hIdT_02o6J6d#ZQC5BZB5ycfx zj&Q!&Z?5kzYN#dv8Xug&NE6(g6bpMp3}_3b;7_PPut7QO<0Y?a0+=|~t%4sssgISt z?MI6(Nf;sC)UxU3?n?d$`vKZn^MS4+{jqDMn*e%y!60ouFK3?#T92C{2>&6Hhl{y6lz zMU12Nt|d!o9HlVGSg()*)a@YC>EF1m%H!0Mg#IHFXa&^>2lHmx z5voTLM4dNd0b0|kJK?=GGH{A1eh=C-*z9PoHFh28&_F6Mj`~G$wKG6OLXuZTk=a#n zSWXC;MdJ6SIB?ccu#p35`9b8W4i@uOp_p(>_!UM&m(FCik+U?MB-XAkwq_zwqwK}& zYB>>rt|OM*wb1wO({qs=GY^D1u8ctTPEji)Dil{oW9%*{misGuWC z)_WUd(l#q^+OoK1A?K%*-IkjL*&Q*_Bgm)0qh`0_L}^$(=CO2nutRNlsUZ_ytI;Ux zAuDw3BKy;CK`sNt&xt@yk{;;YG6s$%@x?+=sz%BeExM#zFUy&9>`b}@?#c`2IbM)| ztG5ZM4EZSc^<^_{!Qiq z-+7VF*)z|%yqX1~JL*2AH(Lv2Ec0_NDYAZ2sxbbxR;*t1|BP4Nn6e_6c=jpT;e9Z( zeMc2j<$>kr&1#_KExBZ;KNEUIqRJb5iCdF1kr$4sQ}IEq-L|x}c6tQ;sglY~Ye^Bp>-W@wAoqK8JgCWv zXNOMtMfWQn>R%Vere4FZraU_(JZfdkO=E4afPXG#gK4`euL45};AnCfcS=f+RQE_| z<#wZrkq<=B@MF|-Rwe0Y4Hq_q!8|N7m~L993fD=zr&{cEEBNX7>W}N#eyDbIk`1x_jpf=#8JIuBCsoIl z0h6!;xN%{9_Vj&OlpOLQ<-Q>Mhnao-AXK_HbLg_Mb(N39YfWE*SvQ!_+@0E7K(cE1 z__6=1B}lyK!1UtE`ZPS2<80BLgrDDo4GyU41?!^)CEDk=A#wYKdSnB&>74oBY zS}Drc>{I8vY*GZd+x=^L`FAK&J*;Ufygt`>zgLdGub3i&7`-_MC|B9c#=$oyP1m(3 z+mwK)&Z5J57wZ1(#uP9kH6DYws43jtVik_9OR*9RcU>@DvqZlEXNN^KaUD2Pz6`3x zDNtg#^B+i7QQH3U9=csillS$aa4>@D)O+FOh)UCou2ZtB9kb%L-3C|Xecc3k9aEQU zwV%dj$?GcZ0w-*8606Jol$9Q0Uv8_&JsO^`b9ANk3c%;{&=n%14mqbE4z&oDNHm59 zI53c{2dr)+huAtYPbO$RZSBDlURzmB#1yEl5V>$9XsFl)RG!vrgos z71d5>12d}jC>7q(Gk*1CFvz~py(IGEHSGpKl$h~~HJ(kDHo@BT-X7cMdM90(OkD=P zml7R}0K%!z(HBsPo%f%A8;M%LbCXl~PIGto!kuYwUAmDVTq}4-(27SNJ7c40$aWmeapLv?Z zaWc~q@-xoV;d)njJcz*4FHz|%ta{&pNpr5w=g|K`&(SL34j2*^yScn%NCdm3$;WQ) zImURDC4apCK*b8Kr@N7ff&tDXgz{q|oI=-lijE!@vW#DmT?xjr8xBi_8W27m3Y*`) z2e%?`(}wr)k({LxuZUD3y4xWS*AM*aKEO39y-o`_I`ccaKQFyEo3e|xzsucRbI{$1 z>i=5mLav`e^D+tVk*=FzH>h;hLtV*-7Q7VVei8&;vM_< ziOFGWa0-Fqz&m<-C=zXGUPX9*5I1rOo&;VQ<8jHLzrzh&)`ZfUiB-`RT3 z7NTx4=`DWrktJw(?%3tTyekpR)wwb*hBnsZ5)LP<0%%T>lEkR^wd&7K=W*<=vQ zVtO3H!$MtRw9^?NQq0D9&4cP((E{hevR{yWOweP?DbC*vfq$;$aE_f=U97X@KQz7 zRxEatp3(z3Igr?Uo0g91gCAJaTvm6dUo+rG%(n6tO>;*_<6v?6JCN}<&W!>KOo7EU z{NDV5(9ZlQ60Xh`ifLzUm?W$K2^Hv-h* zp$f{e@GpX~hww>I~{<2ii#6s@UdFMuAtqDSD;2s1Toxc53HxKs~K3#Nus{# z>T!?rl7MA`=diq$ER}kOv5j@D>q*re-Gx+eEPEYtA9XY(zWjRO5w!YJ@3C47c>D#G z#lI2v+}qSVaAmPV-sxrR4QjLT4EO>~>cD;Pf>F;Lv%VW8j5nkH>5@V(feq;+B>L2h z_I)8D4L{o00)Dd%<&?t&D2kv@``P_b20dx% z^7oH*1Vh%K-d*|E8j5917-Wj?RSN_`wUaqUKPKJ-p zaPm!dC89^J=V+r9;;?q|xLj@5YTQhofG=(CtVAB!6Ra$95;stk_w%hiNu?hXQ`uN$*i~%laEfTKQKdupAT#zzvn!-a-s6?5T}zPgk|DfY zL@W6>;Q>ieQpVyH`%hA`@t3TAq zN_l0(Pne{Pvxd^b^?S#u7n{`9JgAjk&wByHj?Cod=UYS$&|&_u}`>m@mw#G zb9R#$9{o@Ew}Lo(8W=K$YFpcip?N;pl>V9CD&O<0@dE>UemHvxFYp?NXd}-@Ay@Qo z%iTtJAX%CXLo07P3Ncw}``Vm)cLiDD8{e8`Yr z!1&TY_&`OZL1t{=*R%m~+DG>>bQmZCT&QPf`q7GzI}@!!&V1 z>M~JoLdr_o7uE?fxxWhEO|R8v@2bsx znh+T{IP=qK8`kfbc#JE=nXlzo?u@kd8C7eQ#P77GnEz}JQB%pJrmgtLLEAq62&aAjVmc6ce2I@7vfi+hci5GngHhcI(tuG$gJ zujNq`HWFH0MzdCo*@UBNA_sK3E#U$-jF-VU z>kuUuy5hkoVAWDxK`~S7?4?|0qNQ6?-!lC<3DG*dW3I^>+U?2zDOSAOEV+1$t9L7b zl#5K6;aMfbdo3TWPGnc1cFmbW)vW;Rk?K*QXLCEOF3bwT=)|4){#~u`nI^JEPg-9sKfuMNw@v!W575w{m#+PSl7IEsLVmah?yMYr3mF4j*8e zQD5?fvIL>8xUq7c9cuD9>u`whF^;`Y(u=z620F8&NT1Ldv0sR=q_F?cQwsAFer)F9 zIdsyp^(Kb~2}jp9-E{<~-vYZ*96>=M8aQuNU}S-;21m+a*N^?;NV5<>5M`oh=7hiT9{v#wXDPjTwc! z>S`=Aumz@=%*sS%E_5cQ4-%`{x>6d^nmTg1Ks%^xMTFrC(lX_&(*%fC{p7^MYH0q} zD>CuXsCTpVJi>vUHfPyzCy2hUQK}0J9#*vo^PZo0r#9xr1aOk3Ub$LE_|FaSu_8BM z!#H*lT)JTKYT|BRe3BiU*Y0Iu#ewC@NKt?ZV-NQ`-kBla#&2!~B*M^0tIk5afBu-i zRs6iQL1SH&_e@(hEqd1mkCdW5Mb~vKkv7q;jI9$Qb^9j*M4POHEZc6#({r)GU3g%u zi#YJ~HnWS>CDc3C{lTcXnJn_DSlstXz?X2mel_9#NjvQ;o>?Yay|Vv*##qDLJo?2C zEzG~~A=$ZCS+bJs1~MBi>Z$a)!f~IVw@u^-J!8bs>pnCl7hJ8aSaG%7S}05kR4J>M zls9l_7(RC^MQa}|by7*!>=7he4W9gJJm3|{H6|eChRMT#7?*NpSY(xV= z@IoSh>wxVB{^x2mz@&p1-orDo+QPjV2^dEy3!;_UhA8P7+n=SA>wUc`1vj>aM-A!L zC;HC@^==juLq)V^&)>L%8wG313Eu#(*&@VyZ0)>ki*}4UWG|q@6I8m_wwOwT3&QSR z2(T~i>jm4}zv7oXM%ZP~{8Ab+ZrjsP&P*G;w9uXf6Qvr)n2pywQw-^`niM4>Pr5`l4@8tk5n&2RQ*|C4ZRI>yWSstQoO2*Qr-8_E+0p1)oW%a@W7tVs&Vnj| zDlT?3i~vjp$V&W%{l7t3or3RHgPq^W_)ORQy90s?h>lKXJQ0v{?Hrp0O4{Z+(m}S{ z5vxl%PJ#}-XTBNLG#SWf?_;NH)OjAHh#NMz&&BYkUy~<49&VSW4z(DU`DfH8SIiLL zhHx4R$Cn2UBbUWAmVcY`f%xCxS2Fn-Ad;Wi+_C`~1?b!H2eiAfIz0)*#4l`Ea|uHE zV$Ym-MxQK;FEHLf7X_F?Q?55n-2SHQvuO_+JL1F9cFt2b(dGW!;j=6;z2w!qbj=Jm z{QtWx7n1Ws**_V^A}U2-P?@!31w4s?|4iR$hq@qLTXv0w7nd8iu4?;~i2I$%&qNpq zHV+ZF7)iwcNAEsvqyntmFy;=meOj@l*alsPQHI}4Y1uK<4Hs7$bG6xqty5*K-~cBvR#K%<{}OYfvv{_%e;18&=n{Y~uF_l`^1QDVJ>T&vNCa zR0S1nM8igNhsN5_wx{?Qt4bS_L-bw?!ligh3y#7LSjDlZl_q zpSGM2P!SlUKY?IMvAl9m9nEKJXfCAKeV*Iv1*0;x5xc735}92wdcxivT_>37J79=> zo{RmsK)5_LIhkn+800WoS3s!whhG9lgX|)%_LMJ zC*jK}thM{u_6Q5Wy!!6JTML|2g;B|r!Xq7(%^&EqpIXSql(0Ko;+gJjf1{A-%Ur;3 zD}CsD2D(V0`(3QPsEu~{)XY`;hP&`U=0}L@e?m)6w;(}-6si9{f|XFF!tcF%hH1dT zk0{wFE4s>EX<@UlW7*{cU;CCsYaa~(c=w*FsQ*-JyyAQ%!1y4*=_E=9I61@e#UP{< zpDqrBmj=$@RKwhD!M`~4R>+mN%9?Ib5f}vMOA2vSUVFEOkC2Vv7(G9PtEFL7NWQFr zF`lv89lP6;9;Xh+&8oY2mTRN3KOP#Ybolc7yKGv-HMRCVqiscU+G(|Ls=X**XBy!47?<^nlUBC4eUwf%-F%x zR57^|WjP~!%Q1Dq4rcZ?qkab`4;LEJoX4j}+~etz<9K~)4TKX%RL#ExYlxV4*myGP z1+ymydMH&?2Y}TwMgG{t!rQ-9r0f{6*ioM_Rq@D8Z)Vm$pYW~CbXKD~C0u)?fL4`J zyh0KixT1v1-)!3;ti>YK7@<^Sld;InV?!7PnqA=4^62JaZ{~3BQjnr`Vg*!CFDcx4 z%XT%1j5!6xywR%(^bUa1ieXZOMTSQ4{sS0s?(iW8A}*u@#237Ma-KMxc{i)s87v7Y z%;37Hqt6e&7n`$S{!c2a*k8>f^p|m;Od&OEQ|1(YOr9dZR1{sjsCrQ&G}4rLf=2N5 zOXpmZ1;M~Qf9r{iz5!*;!x0q;je6yfQ0c6%wSG3lA>3u)7>xQtS(GS4`s6P4fvNMw zgkDmT_#o4YUc~d6H1p|e^1zWzARZ2UP&XCgV~}vOKdJk=i9w>)-iMnib9y*<*q%9( znKucl{1m{^CPU6Fl%C%ny;bjE6vl#QPOQilE|P$D?+ zHWs+USAczXVUSy*v*Pj>B)Z4+jqbqL%4361^p&+)O&(1!4r4E^;geL%rI!T^B;z~V zb>t7YuWcH#ZG5*(hH>4$vzCkAnu}y?Z#-gp6bUpBmwu_dCEOS8AF2V5vVz#`jrj1` zc$sl)=xkA&q&1y&!mmU~@ki*26&3sKMOqy8Pl=(<>8BPnKHfI8Rp|==K&E^o>-e#TDdv7pO0!6 z+D+G054Q~E8EWQdHh*yuS1^~GT+cGkF*{dlO>}IiHT-reC>>?D%r)EO0%j6bc;k;w zTtVApyU_v&m2-{#l|Vh?9dPT#_y9)d3@~B6FcrX~kaE<)eoT2~a?t!c$$X_w<$*-( zY@JRkRRnh^cMSpIJ(ey~82;WZ8DL89c32o~?3!$aER-JIAGUkE^AdF=FGppG@pZi@ z8Gh{%6qAZ3ql(sVc!{cD+)rK{ZBtAxZbW6^Ac--Oi@-vZ0R#V7Ex!$QfO)fEk-2L* zIFaX+b18gOrcU|=r!t{6xM)W0orG(FeSiunN5X;+cV!lh?7A2aSJjb?p$qwjtw%r5<1ll&AfFR86TyeFZf%eb(S*K@zVycG>ph%ehS>^QW?p=(X&>Q-fUvXZP& z{QCP|+KJJFPgI*{nHRO!v7ZWZ0+Ys)KZ=$GHwtMV7T1?!nK?GWKQJWvOMMIU^I>wc zxkvycjUPRzgV^6#bkA`aX|4jzxBz;KvBiYJ7ew7PfjdpfIH`3a4b;KQ6c*z(uepvP z+V)R)HYCP&?JRQu+kzPpccch5`DvS82GajL>774K&pNX5a}Jz3awfMy*lK}`*#wEk z6CS>3;J*S7&OsYl#R%`u$&~A|B1m@K86EhSmW)n!9>pw0{j`0cUCO;Z*G9EaB95~N z1VIpzP~O(qX!yJD#G2WwKraiSwT?j4V6X}GT4PSGvwX&28ql~`4z7iB7*sHQthHui zQpbTzB?XnV^6x$Bv!02;pWit#T~yuI8^&Rq|Jlqk_`XXPfH{95w|#GM)~}u}71}`# zR>#eq;Q>f$ifZ&FFR9l!i}9x^CoZEMl<&-n>p6nqPU5-fa#PR%xO-iEgvA6ccXPZsInQr4qSHiqI>M!}!E;BwDXb}fNPwsqiv24J_L38XU0A`0fm@EKOSOz40nk-%i7 zhFQ3|$YQYU!rw)9kV|k)CoZ$6!ROvuLVWI(CJ!5mF|&8Rkri-jFCjXq^iTZ}0j>+6%=6qcDse}^^f~dae^-Z!9JueI= z$@>>~ohv~^$Py5X`^%WKYmx?F5L-M?)bvcFE9gm?LCWQmFHj9%q`(<#!%fgDR&^NwG9pmJxpRW#(Fr4qalT*tSeBaN2O#BWmK*`EVeR)WWhIJFS;QxvvTm z5mgkP^3unTXT!Dnb8N!8lHmb$KIEyOv)6>ZI^XU`E1t%}?WFOa$^}3i-XiEB!rL>0 zyo=7@YFjpInvq%UA)U;dNdZq@lZ!J4;ziqTFQ!i^<{3Wv?}T73`WTK?gal*#+l&82EL>S9u;%di64kR_N_zb>2>8{>^Sn`VL|D6cXL`>t zx!5oX{?(g~x!N!kJd|R5tp;3=EBvFOyxzDl1wm(kO>KR{O!zZB4dl)A;;0B^#!gHk z`1hpnfcv@9(mIrsD9;jeDV~rXhM~V574poGmkJ&ri7wwOgnZ>!UB^W|D3EadP3vk1 z+ZgCOgGRk{w*qm^3v?dd!++5sHDsbdJeY0|z@z%?qAS*r=G`d(GQaD* zCx)WGI)eEW1io3A*l6?E5p5+o`L)+w@$;X|K2UpclIEsqdp8?n2iO|iKpKz|p1USG z+mdd~ZwoBKxtp5_5$)B>I8w?y-!9Bi5Xog6$ZM`w)$&y`Di=5#RfR{-h#u_T{vk0m zAZt?dJj=476d)b}qwANuMEln}8#)L1!1P@GX33+5=rNdwcH?dK@JC>ed+T*dF5Z^u z^mdB9UW!s!w?^>5ndefUoT$Q(3@duf$tVg*6#3c3IJfSv0E$84#sUq(|8v1>MW zEwkk`2<-+A_u?PLW}rRl)wns5f6_zz57t$<@)q^9G*x(o*Sh&OH~IKvOB@RlbA7Sg zCsA9!ljRzz2H9*;HAN!sId6^P%Wi;j!$jj7vjwXebdh@+t^DhxqgF(P&N0~Q%9F*2{J1FDVIcNGm9=DXnBJ%YAr}n&jL^ ztrbPeTfZv%&PCv4a0K>J5#~ltl;wRQIP&|;sZq@cl=XWB8?#Tk)95Bfx+(agq#Nj+ z9IB35Ofbu2Klrs)n{hyqP}ZoUJnuvzbviD!rD#%j8e6*Dmeg?XkmZq#TxdLmxa=sn zLoq6B!^t=cvOJ2ZjVlEY235xW(#4nDYD))OcN3?q1);DqynmpSRl%e0ZKZzxY($;9 zqq~$7Q`^zEk#(g6!T*&DG7m^;-9ua+{+Q9B0JBGW-CE|7gT-aJU!Wk=%$g?MyN!UX zeB%z4^jFlJ#bZ;Apx@}PP9d$U&#a#0tr?F+`elOz1%tcnxDDREK!}EE47~_d#z^%k=2EVig#(=g!R8Q0+2CCl2W1RMb3T1MtHqD$79GySHe~J z4n6%qZw*U(2YRTUWpTE^0TYlJecT02z~7Y4RZ+|2`y;B&`~kQOTRnTx5Nbj)d`1D< z9xT8N0P?>3SX*6?koj`JQ_VUFSR2dxbYR3coj|ZREIQGg>v*6QH4{d>tqfOspgm6T z@QuG6nONDgA6@LuEF#j>IEW0rCB9Ut7?J`D$!!W_gd&s={h>=sTm}#cv_04ICz86_ z%eZ9mANbE@`JQ85XCC0>u$|H}DTZRnL&srYidHDOae=sXksNJEF4oa@?!Q1jIQY*l z-F!snqeNTUvHjWlxzogEg4BvsKP7 zDF0MTLeyE9Y3l&4z#<^-Z8X)XM3;)r>t?0KXd#ZxT%`FeTQ2b-3*6$Iijc`K0>mq$ z;w~%?#J7H&@<690;MpnR+Chy0w8;S-p~akxSrg$W!(k+Aq8WEBY{0pykQ@VX)E;+c z7Ity-0qoCmEzA=%y5+lSCcmHb2)4<^E*Yyq=39{gSxwKQj+k3aSQ}S{{+Mh*Na%_B z$G(7HbATCMine@novreg!Bqg0B*r?7NVGFxD0U0A;OmZK!>JjIQqk%+Bl?_>(YRO9 zKkiRF(B`Db!=a`0KGR|(@Hbpip5ie69N%@d-||$2Yo+BNIES|zPdWy|xaf@8OGzgO z_6ik+-&Z#pt@{XaN*;^M;K6=FZQqRB?de(lR7!4rq99#vQ z>F{OWp7_>!IJ3)><&bb)HuwN@f^SU2A;$pG z3QY`J9PKnqYOili4mEM$O$wHV>}4g}(rTRG5Y#}z;}K(`!`q|>*@Y@ku?!^Zqx1tN z0MAiP{-6vF-?OLzFCk_I_CsNPCU;fKFjB~$^Ton9+LACN|MK)zdGDZc$wY99&r`)B z>I4J9nFdNb+&idq1VqFu=V4Yl32Z#DU@{g?hyZ2B6!D8lKf{AhDbuUV8P^|a_p$FM zzjMmZ>Zl4<(zS zT`k3tK>w~wFMd+r*1<|1of(Ilrbpl}`O4DZ*!;V=3={x!P?AVmtP2q1otjjeKsWHP z)??O{Gp>i4jKJhW26c=dTaG*Y}#C(XRf~Mc|qL0b!XrqnHB@LyyGR z&r;&D@|C7@>9QABJ2%KNelLeb`;7GoTh16a={zsP5?ValK36x*mS{(9*=vWoP1ZAG z4nEpH_6kMAZ}HJaA&FQwA_D~p(_4j&sfRkqt1~EsalXwG4b)xvY2xK`avZ19fd*k%~V6x`E33XghsE`hX$cW+Gh$1|F>63t@gnuX*bIe9_nhI4^D+^a~n z&nQLv)?!WIM>8GRu}W^|jEkXU0naqm8E#E)q9=(_;`)y7-t>n3${c^+5oVZUXCfQw zBo_5ood`=4MxR!@Ay}KOMFS(4Knk%^mmtKC(Gm1BoPG#>wcGgc5i zQRTBDml$6{_k<2_EIZ zuGl&kT+Ledse@Z_Mo~okoD^|Hqufwf22`4(agl79VIw7Fmdn1M8 zM6F#6P7d==dAF%E)w7HtO#{y!{&$jIJA$!ST`!O&9p0sRZw%c3Z4{6hnQc*9A3JU2143dapy z*6S1_rv^lvV@Bb#okrT#*1-np;H-MqukH7R-~Q(+1jA-lyUw;YtylqS)mjKpc2RZ{ zqp_Uk84Q(5!dn*Y7etifm0@(bPkkvTFl5C>_$oX9)`6(2zlI754i9_vp=4FK_5OU4 zNpBh@9+2~s%>V)N#9`A+wo1a{Z1kJMbq#_4-fcbRNDUzfFXgKx;7HCBWWS;OD+T1w zBuA|5X;QjkZ^acP-_ZhCDB{rmpP3ZJPNADUH0f3gtvVz@DU|R2>bi1;Uw|wXA6Sk(wWKBpeyv+ zk_N44JHIOzmdE$ilDE$pQw49?{Wg1ufqBN&C2gk{-!?mdHs}Zkr2DPbzO-Ot3=uU4 zmH7$Y`+oZnd_SCBVb;5fb*>uB(L36&Uc`O1;(pYy@~~@$Dm>p+VP2SZ!XZgl1V3?& zn{-i}LbPgndY+11Kd_d4*0WQKvpqZn5q%FO9oEXn0_eXyuWOgziuPhC>U?!8MM9%2c{0Z&O#q`v7q>TA5ueVCpKzSN&eGFtX< zHP4fT&BYv>bBth4*Ehdb?^kaez`lK$*vowS9RuxWP8Y_6zZ`;mNM)Rw7EBxmHQ^bR zaB5zspcWz@cuMS5<^1gh^TAHtz$wdJw1~vRBs-_A!Cc73dbob+$#v7 zdxSmZ!89>|cuuLK11IQ3e4=!3{G)FV@+`vWbNUpB>{}b)|x?;Th2@ zFhQLY#o$uPYDuEsg0NEOJri>t53`YNSpk((nJGf2Z1DjDDSZKGaCfR*hE*p9jiE%) z-;KdhKI0Fp)^O85l9ce#Mx>gJsvhoxfPZ9I0LdSyiNhVYhP+YxBEf=V(6XOx`uR z0FxT{Q1BjTzrF+@Yv%^$KB==DMZYt6wtzY2aq6{UdV{s0^v6wox)Y=qorU?1tZz_J zJ34oge&{FIye&oJ0dP!j?U z@L~$65_z10KpH<3?lOBJ>bks{?K)Gigq5L(S%QRUQ(-l~huZnxO;%3?f)n?Z%PSdR zozwbcspd>|2hC7XhKJqX6O(TB%zWc^A1ib>ieG zL@E<*>1O3mF^fs>arO1yoBCUqy?C$*ZL+oe0C`@~4qzJnJ_C`U{$9%H&MZ~1%j_Qd z^*O(S&&9HlsBGR*>Ec8(%b}Y|F=c(E-QxnXj;CUpWq&4{0o2G$fLVz+Ugq2T%=Ak; zcXJp)LNe{U8q2QK92}-LwhGwd$o+js#-8t}orCYeY*?@D-i$eV85ToM04ho?H`Sm4(Mity!QFRV1RJ6lFo=Ue z_=$@3bx^8zC~_F=mL|0e(iak(dmP35ptNjZ;(Z|U%yhbUEG(}57pybmzJLWWdXX1u z?0wvaq_xZ7Pj#3__aDzf))|C{S|*09-?Dv4mR*Oc=Q=_zpns5f54maDl$wc(OOg!C z2%0j0YALOOI6pOcbN;BTjA3VoWD6q`!a`O_kHr49()2NeEwFO~>+#1FCSedk zjzc=Nv_scu#h4{JwMty3xmj)TK5q&%_Od^eq;}s3gXbbNMvUbGv#j0@@bRza;m{|c zi#9S#u#ZhwM~BAOQk7J@4VAVfynBC(1Z~bBRcU}hpNmOrH4M$3JHhY?++_ZR=!IDr zE+@k0i5R24E;2?&${;T(VMX<7FT+Ej-E-Ev4u#;8bB=#PE!ZNZ99y_md)8AX924*(r83dWXA8WZs#5=nGaj7MWh*}%H z=lFX_mE{X?AWRIEn^f~HpTVM9!){R~i_u3t;mQdku-ZHLgzlSbh=hJ--5q!aEgOGg zAlp^~9SRaL@9yfke(Otm5^s~RjdTev+$ zFUU0Lic?~fA4&*`Fc64+2c3Huwk8u%)YV`ZZGwdyc@%emA8CM$E7q-dB?c}8OwzT; z@#tGur@I#Y^7gte=%KB6#)Oy@`2Cy2G0q3NN~w+6upmhhssy89fZ%krA4$2}!|lE6 zJi#{@kHUjXRQc`eSF!{}1KXu5zLFCM&sg%=5&MfzA!fQa(~(`O{YXNRMm1E_4sy6- zD+Mf4?W*wrcbCjAt4e1h*^#{zAYLQ92YbK{1L94P`h+s(gx%B&|a zF{Y0W8LG=LZS@xsod zje_8Gwxrf$HW0g^Jn{w(@fON# zSj-9j5eILPp{3$QTYOw7Fn{!ThyC8(>T7pxT(x84s54!^lL9)irI#W$zLlS=*Em#^ z8|VW$p=(CvDuf0+dd_>zP^ql!G+?4$2Jeim@D(-CZ`b|oN#NfKZb%G~oPl%5546U$ zvT1+i>aPbZ1Y^m1ru`CCw&ORuUKB+(e#7!ng~H+T6WpYgcOM;zFLFKnRZ3#>Z|jG? zZH$*@K*WaVtw9!9kdnEb3z$i=(9;1E3P-dJ(RHT1q#daz_=lI5)GJ`w>z>K3=C$gZ zHY(+9V&iRI-o5np*Vc}27d~d86Dy01;g7+x?Ooqx-Ada=@>*EY8B|*_=={2Mp2%6F?XbOdNFUsj)&rpN z+qst*_t_LN4edyYLw1_mw?1DSp)^s6qkY3-~a4AG%H^v z8&b+b_6DP?e{HLk&=Q=|>gNNfIi?tI>( zj08G;6nrP479m5)<_t52R{MuXcLl>y;{(+bJRZ@|mgbx~yT9lAe{}U=ekO>Z_&2Kq zIM}Pu@mPe zc|-j%_7#Egd|$=iPX@=pTh~=ckkBM+X0>N`)_ydTQ3V1A(uZ@g(pW+5%9z*X5{6*U2+{lv@f2tuYWK)HT08i$j%$;(-zURHW zyuY}9Aqo$~j@|Z`e9QBThy40~&JoFNaVbGND2K5S%5mV5j~w+o2u*891O86|s;$c5 zoSO@B=LgMh{O{ZvexHjl)l3i3jt*f-&A@{M7#(2VSo+q9iBQ+BwJWyQG$XC47Et|i4yxPMU6>|}$Y0Tx{UeR)AcA)|@0QBr?i#OTq_J^>Ma#M_eN<=q{)b}0DG?2`jjt<3A8xqCr`M1wsg4O3&4h*6pj69v?LI5g4k)!)i zQc940(d8@3&m-*!{ms)q^ngYCrQ4_WRfHCmgevD_IEU}H*|^DgD>0HPv4oy{6oYee zkny1r_5JxI?r1t=fH3!xsz295Fn+KwPy^QCu2Amx&t{qtk#SWhSy6r~^}hA)rr3KK z4y-M**dznNfK0Hxe-VO_U?}6!&UK>Cz1F}thgzO;8wlzw1@lLTpV55OZUze(8UQhNan5X&}S9=`=b3IYF}FR@s!iK_PXvaY50fJyTyl>A9jh2(vlHSEjSzV$BOG{#?Tf%CP=wg*y{C zVzhpfUrb*vcFMC?$$Mcj7Nq+kBWsp#ySj9LE^6twuNGx3(|HknjS1$qia%N~&+zrE zJk61TfRn9YSXl>U{D`PKkQ(ZtD{6D_WhFy4-^J2w#Xcg#=ywyHii+QY1{ITEFy5uf zV_%GJlKieh&#Yt>7d+W6MclrTgsD*}e2NL3;~$;;%S3csJ2E1ejWQQ_*JQH<(B%~| zE%EdIH+f@ykhj2B6KO%JUkuiMhx-+65)Cmg&K7PXiUTuUfioeqsY|oS?l>^q28o}1 z^Q#S@e4VIuTs3bdw}Kg6Iyu%3z>Lm!^q+HJop^3fOZY}x{iC(CVilf)V1;; zAw@UYC@RE0>*WLtKo5Qcklqvcw-4?ey#*(kQ>--R;ansRrNYPX<=57sqdG=`2?uDY zb0;n!shBncpyQTw!NV}n_s>tml&k;1d@9Zqsns#03A^&BGik#lIxJa1bTpYbB z%}FMVh-Ok?Bbh}|ghdH@+k+3WBS>({&BYM4@ybuVMHfSx+I;V9=#>{hS8X1m9=NAa z!xqV`4o2ayb~x!}bM@a+>Vb#Jm~*He$iLpJ68g6yRhKkx<>@}s`?*czz!U@p8uf9x z5#gT%bx%9&wR-DM*(5F@ZfwKThBYZbCUGqQ)wl|%BC~!+^!*)QJovNO^lK->333Al ztTl{yg9?*6T89NrjCt4^)oO(#d~Worym+giHR1|2wLYD%DwggWvog9yTsg3&-5eVH zQv(?*8>(37kVq?fFX$%Ep}s0}J;18sSh3ozNop3pLQ_-y>OCYD5LlS?#4LW2&u(j~ zNldT(@qWMux4fdZEm#7*=cDo>@hK;bUzs`@7}6Tne|fRm2~kBp|}$!539YI81V zB3im|x%9tW)L4vzqhk!am7%gGrhH{Lxg)tW@K`NM({kywpffe2A~aB$Us&PCLYwQf z70)bc@XIuzDRAdhu2G{EQ5<|U-`7#X^MI&!JWm`Yq-@F@SjJ&nDABTsy3Y)>=(4AY z0~KQyFto(hbLw4~odhRasuV{%V%|`!q~PV}Wl4UI6ld!J(wq6LKT}rPIeIs#*nJBJ z6Zxe~H>AmJ4Uy=u-Dt*q4yvN)OK6WC12QJJ&x*5xbw~pfWKk+rYqmHe?N!GpW&r@I zAA+xJO>XF zItx5`c?B+saa%aGPXAUJo)ccnv2|_~g;E+JA;j#TmOzN4|7F23&JYPKdPf>i8oCUJ zVsDqSLw5r_DU?UM_^MXxq-}poFLBGsFW4S8?#;;koL-IptBS=2*@j3LAt|evd9g@U z`H*n$90n;7>_EJ{gUc&uVtJ?QrzIYxERk4T2+aIAt$~3e*bqLFI%J_!Fxq;LScj28 zSl(PsX|dMZG3KT5b`DB6NvhJ}OxFMhI{d0XBbNwN*@S%&!h= zg(cIz<1mRAUH!nLezdwIG-ZHH+?mkkt*VPoFLLYJ%Bu3LKHJIychVRc*w8aUF&Xr6(gf2rtuW z)6#tE?mPpV&n%BBZsRuG<0D&t@rig@Rt4<#wiXsr?oEkgWRe*gH)`!OoDPJS(+ zu5=Q6x2CY(CIE(Xz3DwA>Uada{!<*k0M@jEMKI533a}9epd*J#-Z6<5W!Ob@haRGaEo4$#*#HW3bfMmHP2ouKw-=Ned4d0s@pn2_i(8gz)k(q&`qzB(Vm- z=G}B3QT5&FckaiCNdxV7iNpb0hWUMv^j#i3)X?l?9nnOk@N?M*fLFmkU=tydCP|Vy z*oN1S$aUX4_@{;_aY%-Sk^x}rb8dXBO)#ii{kKjokQwf_IBeA)1XFl!j;{%~Tqm&r zFGq#JNlFt&dWqSC9~EG?+TYB!xVBO(sSq%Yr9;kJij5I@&uiv`7S9V#Ij>e(RCN8h z|2kI+2PcZe3B1Ltz5F3G$8dy96IkMS9A)t)U%qy~Oz8MKI%y)8)EhaUVmEqCEza1V zw>l+C5NIMkNu&73OfSMmJ&y8&`?v zxD~vH@P~^tU>_~-yel`(PeX%j4(s)E12g-#Q8YPCGaKfu3M9BR3cbt_ZZ%0m$|R9n zn=T`DHi3d^$i=s0`XbyDDnC!{Gfm!Xod)T#m9)&EXfErO6ubAVjcYLqi>SHzShx0( zP)GOD5@-tec_sb3URkovak(Ol)x2{|(#c3&QGT3U;UgSiW>B7})Hlx*_#_gBAj?ky@6!VHIEb}fnGwSrTS@lp)3eqOb= z-~9p*;hv2VyUIqXEF1>#j4*4-E%KLn(MVnHMDh!tkg6YQ^*s`xkONLsY(z`aWfj22 za=Ia4q0jZ$(lKHl>(d&+;RPjOi0?cWZ^Dm`yC!~kYqDOEm5U@hm@Xtr&Rsgd-BgJO zwGcRT*9kj^Ki&j4aY~8*uWG*x3wj>KE&Crv#{-y9W*zc9HYJK@ScmEZ7zKmQ#`F-wL(-X-c_h|x z1mD>$yon@#)mn%eXMISygx;m2*-ZqxD4l4HT3-hvu+y)8yIadLj1G-{BWKy|7pni+>M7Np;iG_EY2xM7^uZ06osgMaIJ z;@*hEwk|x`a-q-9cR@|K3QO-5n1M>C92}6C$XQ`#k0nmO{RlwEpN^{^!B|?!a}Yxb zEeC_9|A@h+OLT(bTKHvMV(0Kbav>*Cu70@br9I)Um34P|151wl!f)`c)%U}+VGeN{ z>Nms+WImXi^QUBS5Jp1mWtSODElPO53kJh=aaG_?)M|;~7?Z*Rf^K}^oS^a$SwlfX zJl-sAwAL3dlk>j=OTBW@#uFih*2z3#ms8%*qDcn#Xp z*xe^u7Ru$6G4*cOmZ&^)ztq|rEo8EjU}7~5yc9-QSkuP&RJ0_R07X*5Tb2I-7cBp) z#uwBAwoX9AL0A>!TW7hyw-QBq*i4_Lx6|Nz2FccQSKxc&Jvp>+8O6D2>*dsn>oIov z<{qic7q4f_N7N37&fjOZ{lRXq;BF|+aZnHlJ0fd*1z=5*nyJs)ELaY?2_lq7y*6>v zW#JlYYqSC4a}}YNLC;GEPRhE2=e4;5dnn5>#BP+I48S+66n-KTdaE1t=SNS2v z$)7sa@78G6nkE?$Okf+Yn;(b%B)t9JLRa)#qD5WdsO;in>k1=@gvemy_lDgEW0O=W z!1yQeM+vRW&{VP%{H`3j4~_TtT=sslZn@t~iL}L58lMo-bl2E4CeF;oW)cGXsfWY^ z*ZkUZwy7Wttx}PM{qw12bI_zHN{$IX1psB2k??4Mhk6$*0Q(kSh68C0{;wO`PTLxG zuGHd$kJEa)flBKSUR-kEupv%;EOyQ{6Pa%HQI$qnQ^JTrfl8ahIHr-RxO*v1w2A6O zD8~qz?0KT?JPu7LCN7i$xz=bRw|DiqlqiXLzgT0p-rF^qu8@FjY*gGRq2$}#*`X(p ztLusul&aS|&B<;_kXy58Li^qfYK&F~n?3ii{DOTaAqOvOLw~(=kBGwYN*SdBV(aVW zYDiMiPa!-~_A^MWHaO5@)M^dcB3>8MWiu4?`Qsad$>(SR!xBVbbp4wvPp%Z~>!3iG z(1N3WhC;wW?e>|)a(q5gyv{Ol#mh0yCgi&_XZSl*O-0hz*^O=e5YZl?DrDy^mgr-T zzT84Q(>p|ZM&e#6^My+)^QtQS+c#Q}$U!yOf@`Hb-uQpS_FM>dBb1H-%z6w<8nRQt zZW|_HA_t?wlpg7=pzyJ9J&5=L!%^T3%Q|D$4FDtntR5V2>G*e14zBK7msAd04;jvb z`v3e7Ce+HyH^-S;)SU(S1|~B9af*pEyG&*!F0qyDz^is5RN%D1q#(d#e%f;Ey5l+Z zJ|BOR;y^K8T*h4oj74rfOzRTEb(KdX4Dw=8bc;0omq=wbou#Lf@|6CfD`s&I9EV?? zqciIzTLRtC20u=R-+mrFVt;x6bTo~UaF}N66(9zTWz_%Ss}`PFFHP{BTwx+wb^FGA z51Sb+I6l0AfaQDq6jkA$kjX2T&%Qk00HH{8JDeMxFP?Dp=@HdywXbK2(1*z>;J?R^ zwZ|7mEgV~bxt!k8bv6dZ4X33LKSKoq3$`69S%|M$LV+JsI=mLV5tJF|P2n;WpbM}a zIw@=M44mvN(qJPL5#o;yD5F7Vnx;@9MbM;CxW<)hZMobY7s2cuFhJeev#A#e7lv2N zb8rwUuO7W4a3sNf0lq1jVN075PkhNrvQh#_Uo*&q5+8E(bCb^*8~ulUcMrIwcnt<@ zlnbtRAOVT~V&2QFmCa^G!H2GzO*coiIE{E604>CDsmfH5DRkgRp^h)44ZICGe4Q9A7n2;$-GUfgq1 zfHu}H?j@LjaYVg@ow%7;XOCEOVuo>Ddl7M79=?h*5GVYvm|Vl4UmY^3j!{(Tuv}&c zXfI9%iRn4XJAH`7*HZ$QY`kk;Z&#qMQCqRl1*T&irSzabjXRnjK4t~b2hRa&veZ_) z_5!6{T%+!XuYlyH#bvSvd9W`3JDFEZhMpNTJ6Cwsa0sRVatKN0;h%qCfO0SXD4%im zoEhXsXrT8pz|RWe2}6!Le(Y(RJKtqiG34P+31 zykGmRB;5`2v1F~Z&H;IuyYnN)IfJrPP{NFR%GD(0$Z^$g)b-lko>%JG3R#niJWo(y z+hT#ls`Btw9fRetF%jFDd(_^hQhsBZebb0DJW+vsPtl!@+=UV5wwWv6$=)aQNmH=6 zCR*9US>m(ViqT@m!x|r7f8M1fh`vh^)i&={Q$xb7YBomSwp-VznKb`=Eb5&sK8x3_ znHmFO$9}+@DFDHPEP3=&7u2~dZ$ei-5IE=UFFK*6HNpsPSlhLgf4mHjTeYeV1H9#3}+W|tHxMd%aVcNTOWD?I=E;zeE{$@Ps4 zjkGHmkyBbcfh`Hl%i&#lUGBn4$t`m6i-fX1%nX0SqU$22)%5B46Px`9W|9PGnlj^) zE^9|8RVh^bnAO6*cF67rR|MS5#pA}Z@6UiFiBK6HS@ox~Cs>q1o8~vJiqlz}F)5SI zOxF}qHSdCjPU)bhC2fiKrU;I`liT1W*w<=}wM>J2v?;_uT&p>nsIDmVuu^)nI3!r- zieGYPn6{NmgM2!w#KqJ}_j)QKXy5HHsHXc%o9Q>ion^G-eHav?jd&B)1lPHR%f|?LF?d=6bl|u?n1s0$*Ty*(&!5+cMmdO=!7t`uN)} z8+PxD69lu#{>#70Jf8pyy*2J{K6~V(r*TKF;fjKK+7fqlW1!RYk;S*GTeYy28^5 zx_Fo=dy1-y5JN{w+~MRu_m5*g*d~|CBbkuS!w%sUL^090Ts4Mq8s4{RwYu-Xpjj$w5)LTy zIEQ=Kky1f^kISN0)!Ggl4{c6u92GaWl}Wcl_XVtbYco_ggqfE#e$_+`#iD{CF>T`- z;eIYLfti8U@Qk!Qrck+Z1jANt;Bek zA}ZxA`{Gkw$=Fbf=@5D|_xsKHOBckfEqy>gFmoPkxL<>bQ{lYPa^yv$$GR{%@C{~} zQY;}y%B;;fo>w$+T8AN8jcA&D!Hunfh(RWI4AQr+v_=jHxxvU_;0dhffV5ta0!X*~6GIVxqc8%hgFcT#`FI!?jIe z34_D4Q7>L2bB%#5Y9TTzGtK9B+GopSTQHGFcON}y+8MAXCd^H_L}->(227_pdxmd{ zrN7K|1?V;{q0?f!jul8(lKKBLKv*!5a||7WAiAjZJhNAvAyqJMl2UHav8uIWyu(_qd2`Jjw0s&b@B0q62;W(+0(GAgeWz z)`SSKz!UQ@9lMB#{v3vNRw#E-);YXH(hcm>x$7y8aLe)-D&m!?t)j}R&Jl#2EfOWx zv&_PQ&f%cgmud2Glq1;!N9Bt+jT{5n+A`#cJ2dQPuOfa)&I{(F zoi9<<@?#Uy%sP?AeI1wvMmWgEgnX{XSTm6`OSinV8o?Dx^`sIa8Z&Yp<V&_Q^U^wp0yPKF*cKF*U^FcCxZAAHDqdYD0YINrSqCJI!NOXaUvn*?1>B>I z@7p$TO>;`$Stx~lcN)8|e&Pnjc>S9jMB<0Q5f=5A)Irqeq3*Is3js$q&)0ek@V}|t zqcoNiD?=!oZsJ2qdZhtyW$!m%W^6saOo>JUWbOl|1|-jpuK#(koWyvwSl~0K(HqIZ zfj#B44$1ue65v9oo2=j9()O~VZhTy_1oB*O?Ih7duaF@{y#vysH`2AKsR2SOA{U&D zJjTJKJjbWA!wH(-qnPiXJ`gDtDsVEP4I(f^28f?)Ci~BE5pCsq_mgfd z8ue|U@4U?LGpBC|=D97=|GF!^+mF{FoZ7u|=tWK4huv|Y1A(+X3@|gGUS2G-n#1M7 z+jos-ru4AAl>N z1WXSPu%)J&Mg0T0pCLJA?nTJh^THgS`7{BsJ}VqwyYM^K4xdwur@-1r3%e+4J9aig zl8y9C;Un-FifWWj&)*KhQ#9%I{hk1d*MJ=i_|uXxq?V8?x<2_x)MWtcuP@s6{oU@+ zRn2Ze5wZ`k=P;syYK5NM5%f?)W9l=^BJc{2i_XrwTq|o%h`o~>G130_AFk1?fPk!d zzK>R;8+)*UGJ$@uYU{i3qsTT}-f{Jh9x+wc?l=ppU2*7xolIXx@w2Oao=a(crZdK! zlRAHQMF8@UrCvqE#7M|&{a@zydw&*)BF^^i7jmzq1M}b+t!vOGi*)!Fr?iDvkl%S{ z4USoxldK8USA_QwsOSdZB%$vTqUy3YD&=E?tGCGP1^U;Sy`w=u(lP%B2|V5?Nx_lE zCgCAqMdtZ7JRP$nRsZ@)j)8szHmE>(Ake}1KX+5jl*A;>Yqi~&1_?soT!dsY(cS~0 z_lLUjy^N3^pKmHHZYaHtXFTLE1}5Hf?i{bogXhqT*$R2v7zO`Bt&SOhJ35^ep|@B| zJ~El3G`au9RxxPP-CxteT-19vPr9Y*(BB}y9c=qR()!gqK?k%a;c7Rw-`Ps|O0M4z z*^2OijRPmm)?$i9G>!M$LLWL(Oe~yI%~6+{fMq}Wi7qQjqZ#_Ryt@ixhC?^Hrko%e z7cJL%TYk=#&oC(6e#*h!aRo_3T5px7v=;+BXz6{iE=u$P zZ3oec7?+ZNn036&UmZwZQ6c`73r=6avN5vuVqTL!gJ&z>#d0ZvNY#4^bA+mxsuApF znMnMVChbvjVq+Oq(^)u9S^m1~HhhK0|B|81R=-EH=lIKJVO_tZ-)A16(#09%Mw6S) zqjqFMwo#$v;vpz88)xnl1#y||1CoC3>(JsgX7dCzwAFMG+ER*uMIfS6UXpfbjtDRo zI*l76XgC~~7ayFP!Iq?SofnW_l1LC7GE-iN511C9G66)Irh6 zsSe9K19NQN$FIaU=y7EbBO+wD`M&fMVbOemQkf=NhPxO*33)kh`wu{K0z^JgH&dib;GW!UNB3f&E1@f}9LLIo2 zZ$n;3Vj&2U+S8pT)=$^fYv|lg1?8Rin#zZ;Qyu~KAiVF1fyjJqD%#C21Y&I**0XCn z?;~*6%A~c&7m35OOWKRqsWc^jg)hLHbA2y?P}b6&jss3>Pj&*m_%W5seRm-)4H0$@xl;?uKjlYGFOoojalYCR~&s!VsZo0>u3wCNM!qXY8Git>LNLQ^jhs=HcE2ZDG z&n@eP>Gi@|$f9qOqCtEq$7xAw#XIsI`whN%drM5}Yi8)47yzi#Y(Tn(IM8po^~$f zQxD`NL78MtqY{%1JB&wJPj@~+qXfr9-k1kJu#tP-Ix>n)&?veZ#5AcEmW_4fV`8AO z_$F2941Jrj@Hd2Ja;wz?2S{bV5pzp@`S#)j3qn13J;-$O;-kZ@_-4dBbdf6foQ2s` z8_nwZ=+rXlAuYwOD?@$9fnq(`(LabMuOHbGBfrbzMK_}Fqu-X?$5ld(wkri_>k_yf z&TuoY7sa4}kx^;kd7%>tX$QDP@F?w<0_IPX6Ab23;ua+{X&Kn--vONIQ_L`Rq9!oF zxg@o18oaSYCX;O`K6Uf_HVFLb|0@Ql0ORE76SAabFpX`FUk1gtY^%=;n@8QmhU_9!@6!%t&GCF zBJgY7;>HL8c25CJ$A!mo4=C;B@xIo{rtYsR*a%XsS87us3plZnyVG$?0Q0GgkMn zmykhlXjT?B2dBYd0Zp!NTyyWq3YV1`J zJGASHxzsZ%-bH-dvV^2s+Gxc+r<|1{CNNquY@V&KflOGdRTdKTjcRU982kFS-W~Vi zfnV?CT`T2Nh*_BUA8B0DZqBU9e9lGIyu-8F{_}!dCmaJw(yS5WQQi4B{Ep2n%Qe4r z^%pqpVNI7u>@GQ;*;CIk3mZR|_Ds+>kv{{G~@|VswW;tWzDR zntyJyZsq(?7}a{DYb`(rCR2T8!A@9@>$h&E`#Mti(Yt>~kgkZmyu_%aj->m$46)B8 z0OzfrP-2a5bZM?g*7vY~+&f4IBJv(&L^c>Y zfRR5nfS(ENG;O`riw<&)6=-q04lM@nBS&Rh`}O^p7p+Ha7Lda#neGlT)dNoswM2u@ zMLFp_(GHg|@l6^05M0HWP3)cPXL$aK5IAc87T5eRokhJnFD}*7kd8yz5>Dg`3x1@4 z=51zT_(p0T_6)g&XUjJ+jxxl*{hZ<36$3Crgi=dQ7iTGe4wNiibEgP^;TVI`*&dMG zuGW~l@v#3(-=!A>;AX}sG}oYwEv+g?cPfs7j$sE@2X%9(4*x;tsjfx zxa1?_alCvFA`U=KIfiu0IDg4!{5rJJzhH|N=Irn}w^<+1d;*Q6f81}ht&xUehqoWblgYJ!R6aA(mRw8O*zOFeNY z^-TZa#8@|F9uR(j)qh$?9@gZYx91tpZzQggc)G4mg+=Nu*|=m zvNx9a1sltQ&Ha~J&L91jMcgENO|7VB45*9>aY3Rg(%XIn20tOlw2xkl+5%|A!|q4E!Dr12CqV*TW|%%}zd= z=o9p*;cy>b(A4Q;A(cnCk$px*AJ1V&9DgvHBt>>!*RJy*NLKoTKo&t+uj{Hba|m|*;?H#c873G6bPQP8sUOz=|a zR)31#qdvsaxv+T;hnwSmUiNMA4BzdIq{s~n78En2 z{+UXHl}m_~4^W3*9agTB&$bb7irfmjv)lO$OAXIz5l@>G-SQ;JFQ#1l9FsY4pK;vI zNd;%c*{=5+%Oc)Lb(5MAj<*azob|&nfAov%HDN@I7OT*vXt-|GHvjhVhPJEt2XkJf z)Uhf-F$Qo!C590g3*58a9I|rBUTdJ0QW-P`p+%cZVo=sGjU<}M9eC@yO*|#z z$roe#yM;E0qDu<{gRJ~YN_1Hz*fdY4X&@KLjzVIJG%R5l0y*^>i*8)PoFXIC1t9l#K@Gts%gf ziE-inO(@Z0F)KFfhU^{rmvc^FP=E$5xF*4)7lmNPmi%3}H~K+Jouta_Sb0O_5gcZu&_PpH?Q4n zxWs>z-jODFX5{{942>(OQW5*?75F(l_TeNUR+H8ICekl9JEDILsqKcAELZNHxr%gQ zLjrwsP>vRqFEOQ|VIqzO(-(pN22~b1+_+_c?RDahFq3$6c#%(F*;X@SV-P!t67Kp& z>$g1+^CMO@pfKe7eD~&8S?y4lLP(ZGI@>&!>IZR}GAM{Iowt_~p7uujxM5jG=5IrU z7yYCi;!7n)jxLN}KL#3*Zcn6cj3pc)ZW5=3|NLu5JHay|&~6FPdD*7`4jxqay--T|)ei!PBKMB;?SjHx zDW0{Xfph+sORt3vZ`$53-uhA2TjR=nB(qNYnVuPm;jFq>w8>kh!}&yNS>iYK){i66 z*n?7$TCFr}@a)FEOrLpB9k__HNWBjgmaJvb+PW!YKF~pYTjo%?mqfZh7?st!p8mo` z?4%vl+)Y#u)rkwom^y5P6vFo1OI zg_i){1%>RDMx@Qp<0Q?zGwpuifyY1p?74WZ{CnFf&9;`ZbXY(uJpjH@#KFKcrH@ww z-u*lQRuEN)^SE~Y!;;?xgrG<-{nQO?HW2Jmvc5Z_3A_Rxi7~3$8>*;bMm;TH zfPss_Jq>4~Pj2*spURSaU2oCncu2f}_m0)9JUb%_j`Jg_vhwk3# zomXGj`>4=+9XH!RfMV~RbcL^TR9GN)jj;ir79lqdN(Ac?2-)eT_a0YbS#PgL(B70= zy0VUO!J!_HdnhWX%jc3v(tll4_!bPR82?49aw9A6d5OZP(|_If6x%eq^0jd&ws>$- zBSU^OP>X~a^>gZTcri3+u+ls((vF|28(3l1aDQ<2aXX@NQ3m(0yiq^!YNnhBG9jl+ z)cAhRcIiDW8H$xzozhL##v3@~Zw+6Cf?qo9zfJ(Z%qu|GiatM0oy=?;6_t2U$;m4H zzffLYK~ReX0`L|_5Z0<)g;^YAKD+u1_|-v%$3EPZm|F~I#fcP?E%iNW z=i}npvKzP4WK(IFTYO2IP_X5a5%pk}1F*1A5I4mOk71!^LvXv*xz%ea-+|;qwiZk;))wK6PvSE#FWv!P-WiYg!~Y=B zkbX{hpPm#OtChyuei}4beHKmXBe&Ur5b@Y8#~7CMGblxBwY6kg*d2Sr9064PQbFyC zc_v0gfir*BxXtJ+F+876Vx&(Z*t(Yfy6N1%fZO;34Npb0Ea)5O3|Fm(T-!8YUfvcH zSg6Ua@YVv3Ax!n;n%+IS>XBVT-rT0b2mVM*^oz+lS7*;P#hrX5PdOF9`d@m;*1r+h z0>yKn_SP&{t1d-jb7ldN4w&f0AWKYiT~uJueuv}BC}L^^B>wCs~LHAJQQq)3WD8I(4-L%8q{ zB))^E)WiOl>hOI{y88J=Q&*xMp?fJGeRwU*$Pi|`gJq0e7w)`H{eOL&8U#-C(j{!F zMf_t6)}MQ>z8?C|)bd0f%A`?Vk~y0hESYRo_N=LrDMDl+xR^f>A}rQ{i_Uf@ z`ev?~G(9u1X;Q=|Bt;R-ka1}oM9(B8lq!Xt6Ns}I6?nk96x&ZmlgWe|JK~zz$a4o< z*QzDty7}ZAWXE)g^AdEJPS4YoI+cL|Cr?6?sVlex-EB)^UX+pP(P|AH+V1k%os4>Phe#TE}zhnF1jfgO2BCr zn|t}DZ&m9nWKvg6?8?e1JJAr?l|l81_q_Ab{mwWjoKR=v!J&wm`0@Iitm|@snDuxp z>!E>ea~$PATVpvwwy55tV@*&viK&z43(pIpUn60Cunqvi(>Y+c zE%g##k2D_pNQ+&T3KXIaV^s=vyFF+WZ6PCqBI$x1+>$5Yx}QKK9Ajmf1)*udRw?)D zW&RNtrM~M_B(2qu_Hnl+OHbV6ox~)rQxETlweghsnn3fkgpv%7B3nGQDqH8)b7{zW znHgVN>WcUVZ?d?HIrPJ_H&3V?uun*7z3;zrS|{KTJm@Skk1$g2T@4q zB^1tr{8uaS1`1Lypcmm&+sqVnOX$WTf}!&P{oYX-%w__8Tkkk35C?!VM-q#M6XXD_ z3|aD-t@bF%6iNlA{mM7mifB<)28YhBX)o!ECcqx?vUQHesDgy0qcYwjGc@wT-%QjF zFlDX`Tsoe3AZGh*Gu^jnit)_P=lPT5(Yu9MKXZ3=UBQ+9#urnA-53N04r_FveAj%F zEi$APO!3xdE==cQ9~FDcJ3{(9=v2UfW#*n@@`N4c2@|8r-lPTUQL3jtkcp4@ZPc^%yE7k$gEKh|zftpWfOB7D?b>M(}{2(4Tcvc{M&V{4+ z4VZE_XaBWX2M%a2Lz2YrtRWEZQ{(dnrbl0d%uetauDb|Kk}fbb?H<3G6Hw!plJA)l z0j_xzWJam}JCWF}Y0vgMX^k*4vb_yb6iqu3Swey-q|7~m*YZsv|1fPnyL|!I()C38 zhnq12Acyp3bs~!J5$G5qQOUdLueVgB-?+$dEu~HE#MltI7l^I@}wF zh%@z4OSf2K8>jK^BexFtv3CeL7)>YaNftrHEHmVdAR{wlfi=EqMs|6!Nxuils{~Qr zVPtJv7knF6`7iRjuk!Zb1c(gp<~p^~ph($>B7ZXGbKOe{23;}TI;RZ(MUNXC`*DPS zMA(gf4aTfY!4!Z~HJ1^-&3b#JeGO(({C|+wJVjmQFQ+&@i;8){3?PqQtn4FO#u}w( z)?-~`M(ZW&J?4qx>81j;Sfour3UP@_pWNWM0~5EFA+sdIuc_U#e3umq+#X|hqyH06 zUW(jRuk0Wm(>;uu6(ZYMhdR_Du3HOgHjx{61+1Fki3{XPBVeDU9ye3nO9)5RMLR%A zP+7EE6p~t(0+0bwGE`%d?BZmeq8JJWX@LWl?Tn*ypb;^WUD~*)YUrVZ_aFtI_xMKF zV1wLF9`J!kn%LZu4OihTzdQKU0~A(222QSC138rUiB$`g*97_8BG%x=R$BX$=Y5k? zh7V98DCtnvtfT_~TFj3j2Edaf4~^Ij2s3;C7qVhMPei`rHR6A359a(=b`kt6wzkdU z{g{Y|51(?jC@FeJn6afd+vEhWrK4u? zWyU)lP7wKPY0^S0=)&;7>qY+np9kZYP28EoZs zIKn8cWkfmkSa^6?J{&~BHp4Z(^u27D#NQp}u)_}{DEU=wx~FWz-`O5Tno?ib)HBy+ zL}u4RGA>0tLy8&SWUqBKTv72-JL$D_-|_oq$$AQZVw_%8!nqn~MxWmkY8G$D@L?VR z29=Rv6ZQqwO#eZPy9UNYG)gj`dZi|-G$DV~LG!=|XeD20t*C0VHVo*hw$xu+)7n;OyI>;@&AUOp2zS zm>CEsfl{C6sO0F7K*f!^Njz;#p<}ULVA+pO^iJ~hnepjvSWF6#4Pa&9B6GYR)fkwI zwZFxv1@hA)y!_EdEP}lgY{Bq|%)Hk4C$QWVX4^#k5-^{uKVzLYY~Em0l2E@wUJZ!+ z=Eit%6$Jy0PYco4!j%srJ(gqvA@>#ff0-|ix0R&k*XFviW&YGm%K`ojLFc=eM4uOF z;F7Xk_Rh*<@Ef^90BEdv!F}lM{pEs(>EB><7btD67mWqYkiCY^IAA4U+YV0(^RyHa z-eAdZC3?v>r)uD$x5O>~ytTMT=6h}JaS!>OtV`T2zUzmhY2&lUJ>VXFFFxK{rY0ll z=abJnt?N&+N6u7+WV03`{#;2JYZq$F$Ea!vE|??qOaM7pC>i^sniFd%F`SR#PdzsJ z!ifW0$g&$W1Y!vUs9i`J%Lq)51`&H54&^{5X#+#laI%d`pUOdEnrX{5zf;Y?B{lNZ?0a# z_eQs9=qs6=>u>;RA-1!83)q;mZVfIQVfdYA`$vAUg0acgXHKK}Q&}$= z*|Q~+Lq-~BtCe)m)k!MOvv(Ko12WQDaeHWEY`<}-x!Or3V1kq1PLfKFl9G(0Lz)WX zzS?v}F67LOlqbz|e&1fg3_&&W-dO0bx6!_+Yvh!cd6L$YTC|^}I{=SpeEw69mD;dZ zAbi23lp>LP{&`S7y*-~RY0atwa#sHnWJnsi1NN;TcPFBxTNzM_h^VsT!+@u@2LQ(g zVdg1Q)N=16ejgsU&{0ed(K{bCOATY`a_L?PfAnZ+gc@CIidp>P~5zss!A-u zB(`+|rt`u02K2{vnZ(fxU_*ogpcm{hD&kY^_Y+EPRlUVDHCj?7i;o^p2I=|@-_C2Y zzTi19v#yzN4^A?_Q`79a26@p*jk>N~2|)*h^8?NGBmAQ}oC#~o!OES|ISA5t9F9>% zzpk6s^H=~zuMzt5$8{&U=BUV;PbSNCU_<%f5SYY#yU}qH}uuZK)u`_L1vy}-ZYpU#UP3x{-9_%< z5yZo)z)T<&enK%W6(%kmU>8kzGdin{A8za54T5n!{`#%Sr2EC-O5;KSa=J^6BL(|d z-aLwd(?h%eq&Z3QPkdd9uwIdYS}n@~^JQf*+hNP$A zT@msP2hL#g3Mdo#140T%KMF4d6W%{iAs^>xsyrrA$|vbFn~PWf9L)Az(Ygh7b_oA2 zwO0jc*7uy9cnvV$J2XXR*y_3tPkoPwT!Fr0ieaEuHbL<{wB1?W_Dqo$=6im!b9^yn1A3GH2@)P6k`z@x@nZ z%MI?b45QQK;yb5xH*`%f{?b-4BfE$8cV&%PO0?9ksn5wR)=94he;=7F^|7@Nrfi-UkT z&0DXY^}`i&osaQdBJv_;p@(pnO?B7}?m5e#V7~C{hq9XL|Ao^}Il|}^w>WLXq2u}g zfqckf`A>+{%u2uH-}klZ$f-b3_#tHtFlRN>F87 zdV|I_4S+Gim^Frm7r};Lg|hf3JVaQRsTQ-9S|5#32u)%2U{>a04L(+3H(+!PHr{Ux z3n+e8P%qPf^b2?nJk!}{kzyVdG@jgGe;jsq5VoqF*fC~Y9fEdzVq)_cZGe@!G`&^} zr0NY(-}{Wld`-GIe6(mUSGW&;*zBNB3Yi~HJW$)_d?f_s+(h#IQmRtl5hm%*-SYlfK&ZdA`?jt(8GVg#e6OaermR2Wmxk9G6G;M;Ef3GP(0_g zHViBzPKcjCF#R{!>cG_bzJI_)ZN?bA})qUIoeHBytwm9kG1~Kt+TD!*o&_7!PJY z$iROK14Je~=xA9b-CNI;049W*j-1|qCva@fFMZ+OoQ)=r@y9938NCYFJBNr49svXy z=)$L&6%#!&a9-3mJPdpN@VHWl83CIG+foSO*@Vv^lAix@4e+XXNjZrs!);S8LK1Zi zoUR{hZk@(oczC`oQ7O%j2}xgRU<6UgH+IP6kOC9-B=M-b&hCa=i7!~0=&=i862N^U zgByjN*Q_!44mC-$aWiGzm?HF;z~~t>jODBQT})0`Wr^>kd^n15ZgsrC4l5#wjum>Xl_fuC*pd(D`@o8igxeDE)#nwNPR)rH0hi;su#okPx zN(i|4PX_IO4#UR$RAkDrW?FgfK}C$aPXwrKp5RS|j!>+3tiv=v4$3c*Jp{&CWJS{7 zG`8}U-26_I!?7A8G0dKNMZ+>vt1=>p^LID>@Aa_HhnIcI0IrlHhO3j}EqSB}c)Spn z-0i=uG#svRoHAR$mOI_Pi4C(N#_6|mjYV!NWd{n%_m`am9vFsg04F=w?ME({@^aCm z&p1ugm#cdeJRtn6kzTiI4bo<%W^YzDkDk#o4MNgt>p_%joO>mcD4izn{@hdQ8pSYw zXt9i(^gmry!2i$uoelQRoMs|9Mw3332=HOP(;77gWVl*AHUGPVNes*M`>f)4ui}q1 z+9_7WiP>F{j}LIr#pcJbQ)~jK?YlL(xc~1oGcErMLVt@qr#+~%OtTN|u4J!CTZ-IY z|MsAc5c&VWN2g=#Cx<>EeQM^Ow4f8Co+I))y&vi{wl-2gdLolp%BmM->=1?c?pUhcrU_7Xro1Gd~Wy9%x*oyE30*==CM)f;vlQL>iegnGXyn`+1fv zR*i!8=|;-3O$mkjJjS-*eL z@^YjMGH|(hP{QS-kc>!VcI%sr&3V3>j}O?o@@y1ARc1iZw>rPHmn}n|nX3Do6c(!{ z#k#oU&FtEg&OF?^pH&fdyepO5TpJhB7#OnvgXuB?)w-!UwtZ_d3XW4AIfW&nGSNTLLFIuiMKBmg&Lq9*k-MQffpEWG)vb2?~!bA(n z3iCxuY7ty%wFnQjr^r%F@YN&EIPD*GjM|qJuI)_`j{CTEQ5@bV(v<9BRpxZ%VGu8H~*BUwk~M%S3wgcrowf5j-(3eeg_vaF0uE7TT7kOs0gN{o=M060 zFZ}H=Z=W0D)zjc_29`Uh#>B<(nOGKD^h-C*dsWEGI*bsUXe?HkmjHhki!(5pF9WVY zv=g8N>K+_6dCAItJ0Ovr0fbqo_C7{9B zS6NDMGnMdNhk_vDLH~6E`8L@?o7$JDb`{AAxdYUl?+HwvZ1<1k_?Mjr*2A3``TN40 z1rs%<&JQ_cgUGB8I5gf;sRmn<9q9U7+2l*6h3SwW&K zzTWd4!TDM%5KNQh+aAP45L+#Jp91X&@hFA~*HShTHGiP@Y6D;4S!JVIkJ9}(?T#wk zp0n7Xdb3XBHJG)JSdCMKV9D9UwD)k07MX~;N6~CX<5<^0g8T|+x5oErdd^RF527@6 z)n%>iR$*aL?tVNqN0m#=$}A%weTahTpypJf7PUT|@>l!)tX>MEteTa-c8Iiz`dV4^ z?6jnltS}m*VgG7FG6xXZR{2@Y%2B6v=)KptOvH9S1utdb(FhRlW>7UR8L~z8MePLp zlRF)s*m`_a`a8q^P;$F9!u-EV1|P=w4IANBOL3xd+IzJ?Wts-Iz&Sb3fL=iGvKb`d51jx z@)s^QWEj*M(A*;Qu~WbE4BW^gHaeQ%WwS=v{&l5go~hiqftZ+2xh#7Bm=)K1-%pb(qI#M$C0+cc4NPHeM{(u4{#MrHUrtKs?dceac^c;`aB8%UKNcw@hZ*1_*b{o! z**GG=)8$o;eLzr-ueFcCG+u2$ohuWtyG#pQ+tugGY_0(vbBEHdq4DHB`sAY$8*>V8 zjGmO>xMqz?J6Mx(1_7%uI6#$2UQcmjbs62iun$=Mq)?b3r7(|P3H&_es_=(R$-&oLH;A%?ZMEz6EHQ)HBwKU&*EL86O757T-~;I$SK8bt`5T zqoCkLNEf!m0>)(Mp4l{Uo;RA82_&2>a z55JFyn9&<^e;{wFo+fDzK^G?)^YF7m^sfctsY7YGTZkoigC*6~*uv2@cofFR%$Z98 z89tip`vb9YpO9Cc;y(zwhvVb?CN8wnUPU}*OBH}4bMVg#+9!8L+=r(}2|_D|DI zkqn7e=4auMAU`E8n!a4sjvy=>-!0mAdQ3P@SWd&=-BoM8;IGkIC4bfj}rGTu0Z8?9+WG>W0{se5tSt>d`o0_(T)0e&2 z@b}nkdCJb0Ao;)n<}?sa&uXyg2YxV9vSO_2*p5dJ3%o}*hjyV5q(@E`Iak}ZgqLF4^r zcRk*xAG_QfS8N6UR{WxEQRx?0Yf2TGDo8$zWa)Oivd~t)4ipoY$>EwTvA{LSm1%=V zzup3E`m(%4+~{eak!3Z(+?*L2KX4G`deARst7NSG*K+$}PR3##cCA4^@WWzI8`>)p zfpVax;Og0g_&CE=QB<~IUi*(kg=(xVws$3$Bb>b_BNvPZa53wcK$RcbTt??hY;8VGs;_A*(71%kC~K1j!m76HKfe7g$@Z7x%z$$4y#^)Yze2qDu2m)o;BE-xh;$F7JV@u z@&pvG2l)AV0DzW*)vDn05zhCR4Fs#R_yj^W$K4@TJc5{W5}vG<7ihk>(7=7*Q!j6T z?|fa=U2s2G`>vE&H-N4l!#7rfRf?H2n5%qQ9~)p`9mON@)hczP4IKxoISy8A7OVV- z@%Y+RPxrr0l^tlFvPiz(UECFDpeAAd8D=5XsO0k9pXtN^xc$7qxJoKUN`>hSWrE~{+eBRu z2A9fBrw|W89sD6k)yJn{3pAgN)TI3pvJ6XwgYsOQe**sq(|r`{|K-D4s1TW2co++M zv(0R9Z!g+Kob`b^iz&~7WhPChhp`Q<5r6MqK9s&|r6M3p(2pLimt!1wM`ktAX*2Tq zsg9Z8C_taF3^l0iAxC1elxUN~=>SC<5iN=u!b0!lOxD&JD|dfcZ#CV6Vf^5yt5aC& z#3t1jn(0qR6m(q%TN28Yz+W1BI577uoLuDonenZ+hNV2id)ru!30Pw(RC7@aSJDCE z(~1cQ}TO1i9R8nYezux(?_;lF5rAK36(foN9>=vK_2@;kcUvEY>By#Ct1;1Mv}Z7R+TK^-06p+6bVDuhZJqovEuCgEID^Q7kLJm7 zQSIMn_E;=|`0_WP7*zwEhlb6RWm8hlBB2Zk$Kv^qqnDecST{J$O1y+IPbhJ1&gJpW zK$ifim`R!C9;kV8jy0ipHgx26`BE;{g@A;x=%=Zjuj+;Ie0CQrkCI})Ay%ncs=-Y8 zPr2^-okPrJelNQD;etsq_p)%zWq4VZ6_@nk|X=Zwh>(e{PT>Z@q@v{+c zey%KDwI8(|!Ms(XU4K~^YXiQn;Y4YDbvzTHMx@ddkgq+YEyCQ#SopV+_#x%lAqg43 zmSKYM(fycQva^Lf1e!mD8pK;aoIE%+qT-{*8IX>Gu6N}Rwsv68y|-LQAL4xr$j=b$ z$x!m6ooW@6UY)o+EO9~=mdMZ27i2P}$h01`1)-kt0?yJ(LsoX2T9y5~cZ89HJ?MY^ zkddgef`r&wwVkc(2=?w=Xh=Y05vmMn^{8pK-0?j zaTqAf1w0t| z+`B(lD_dP%SHTAzu7Vt9d#Ts3KZUG6c~Y=wKK$Y2^>-xJ_D6a7g%p@dl zvvjUtaC%rI&>=@sPP=~@L@(dbu7>jbe$*!B+-FLS4)MS@F*?RH|0n}r@GAWw|0NLj zR{^hUvFeGx)ZOeM&HAmX5(Rjoab%huG_EB9@enpqk(f>qWB`F$Pr+i>E)4b`i`*DZ z>WZM`jH*CGtXqiM3-EDZ3H$tewS%q6KdrAQQ%j+z{LTUpg!%v5F&U8?1a+>r&HXd3 zPfta7&ah))ihOUQ!-7t|c04SdB^dk2s!ED;T+~0KbFvs{zmvlV(lB$6hCl)QCz1i< zlu2pkm|p!RZ6W$Y#cj6F{i`<=#*L{~Mr0MYh*{mu8_E4mF)7TcuqDRy!&;amznLr5 zd$-13H^Rs4|77zKkL%=CXh}bG?5a{>pfA!zL1~(?V&n<|Bto6-b(S*-rTy?6%EoOZ z_Gz1m$?DUW!Z~L7(0-H=x3QgV{8nG7>zvZiK-h#}=>Hx)ihI>x(o5QnZ==a(>-xP) z6eV&?Cu(nQ=-tjwQie%nY8rCpl&jJ7WD{fvt9oKnf@+zBX&)_B-H1TP-z}XVNL~ZxW+&b)g!e>+#pY8O7F0x zxiS_|AcR1L(ai0LNKB#<&R~v|2Bp+&Y62uTUuve>D&xe-x}KXgt?tz1uF^iGd7P0_ z{e67j34l{3Iuxj7wdNp^_-b?`xx1dVJ;*#@@ot^+Wyt3mHvcnouJZb6doJKG3%GD# z%Ik@U9%9+fpjUo>F}soDt8*bGHLqbNJE}6nl=FK4q1QmMK=_w zuRM}0iqIh??3rK8Tv<~MW)oKj?uBI`{T>PK1)o4sRT9|w#zen@Lkn!sQTWlgqSFYC zi@1nQ@3zbCHrXCqu+FYKqjL<)Zhi1x3(uoo6q#5XV=Ms`6jrg9b?azicD;+y>V4q}?E(Rzw?R73rjfgE%2&U%n_q$#o~( ztU+D7d;dyK5`aikv5{+zXz_B2E2fE5J-<^#msD#(z7B1-w`1oz#!VTq6@(DayX31M zF0(F6pLbrHOYz}wF&Pjt;tHBbF?-~(`@X-0L?c=jBgF7KIIrKAKl;;(hQut1pkmTRQocv- zPx4UfW+8=QQ1hdc=}V;Zqx+LC|I_)6g0Ap%F><%A(5tSi;B_OVFwTQk9xBW-(rv`m zYcdv_xJOe}bfo)R;AiP18z+qk#(C_tx|CK~Yh&KUu^rxvK|r{NqKVC#B*naK zNg((f!Y!@cEM&-Jxf1p9gXNPK!NXM#6!_O3Z}%?L0^{py-q5vCbq(Ib`wR2P0Hvl3 zE$d+p^r0Xmju&qV@=<(70mdJpjU4<+l5`o7tTjP(XixBt3D*h^)#8ER>pu(Ir zyz0uS@6Nnls9u;Ta9-0nuM!xvJ1v19N{W&1&qzw;CHGHr(FbrGR}M(LYE2FCZ+(=3 z6MiG2;PF*ketnR3<7C_1I1qR$F_-+tMVDLkKbZpS`507hm@H)a@3U{^A@LWFKV8I; zwcoWilq31pw>{XDr_lE~6O2(dL_Ja#mCI;x(Z@;1(#A8%)NC zY*SeSWzO6*?+mO4S*dDSQ6J7rw-JH&O@XDT=$}Ymi3kEgCp8UZim15hI$zOFifvD}KrX53+CdE?*Q`=SQ{QRU+b#GvP~7O8w4?CewQsMr z$}d&q@S=e7mYG!V^_^l%b|y5OUavGA_5?2LuAWMcx_~UmWO@%g=}*!r^@RtMa^&ug z>UwfU`CO>?=X~>p7ocThwqI@blyrf$2_poXjo()Y6}rSQ;FZ!S+5ii7XF-;mkV9kF z5_6CQ(rg=aRjS;oXhHYQjIqUT}A%&DB7IZ1=!z2ZCjJ!F3r>1%Pu{kFs0pD>})4@g-^ocsB;!$S_uFzJ(A*ZYY-l z-l>0zH#ruq7oMS3dsOx#3dJHP-iRe!#2AoRmgE2n8YI%f9h-g?~_nHx&RnzuEi7wd1bjS4l4-;Cd8Lvn_F2%5gXUZJs~ zjp^c`GIz=6$`m??AnthIr;tJuF-OnecKeb~R2FyJ54N3%XWK=8QmYbQ1xS`aWQzeJ>T1(<9v$7bLU1ST z_7Bc$3 zS$^TW1+m83sxoVMt!YbtrqhNT`HRX?MurmL&55ykllyR*^-olTAoQ0X=Q^{k8>JMT zfhW)E?T29Fxzp}gM1_N`lz;#QN%Mf8%=Jor9zZ+FfG0g60b@bU>>o;7=bS*F5L-9K z8=!g<|LO2>h5dZu%kknK?7S(?^Fd7rO5NQ%6-Uly!B#ZKNN7nl#*$;TwFPH45WxxY zA4=HTY=TJIrG0wbPeZcy!Q2ZfByo)(`9S@T)00U|hLJ%uuD{m!kc%}cXJL$4REqu) z3s$LRF=|*bv}TrJ#s35>q*JYlxn>JSvg{G3*~!6sC4~PxJo>=cvUnv)mPx-z|M$pO z**>D+J(Pz{{4HTtr>0RP33w@X%u;96G(A248)oNu!M4IeJ|eN#i(47fReYOQHGq!W zmvY6J>e}wGYX9r zWw^Dc7^y5K6TjL7jO360Lmxv?)Je{)yJBjJk=7`jtri$=SBQKO`|Av;(FPD&1MB}S zSGDTGMe9AM-8l7^IhQ#QWibZU`um3xdsejSFb&J+L*2FuE=KM$T!X~A)Ma7C02}@P z#0PEe&m~Oe^EiKFvfD^79XwKDyw3nM8O>E#%t&N?gf?mT^v( zpOXmZLMpri-aTX65}0f+N>{=`Z5t0~U-P?4L~(-b_1m3q=!7U<|EcSYzmU;x@;bB8 zq#*;E*%b9NAzYcF+&Nr};3-BNvio?N0`;7#Q3m?pdaLeeafPjhiB z)z3kT!dZy-U+|8%@i2%#HSM{B`uVmH+|GCub$~&$7SvenYdI7UQvNfug#mtIA*ktR zX8{h%XlEuwwt3WGvKOrFX~W#4woSTkSoBRQ$-ZrMN77 z8VNQP@083f$IqtcT}IBudfw;29*KcXcoOCi&oINu+@!jeXoRJUPPg83Loh>JgCe58 zq~~=lkc{>1kFbSU>`lfH5U_8co1*;rpwJjC*!*CHZyhOcazDEiTu*d`go+#Dp;p1q zuhDvS>K}e4-sRIQIq~DF4>sSG9tWj?AU5xz853KijgVy(y8MhWq8`}Fl2&6nz?(xs z9u6P|^{jGyLm%e|`p4#m>KOus4iVm3Sm-hEu#chAP3K@UNhR)gIT*uylJPW5_RXiH zehTls6fw2F%@LJYBl68!2RWw($`51|~Coad>?V_lm@@#Vu1q4#XvLhFF=vv$d?>xca&@9q;860Pq8|cz0keuQc z^-tj7K!))uo0ELPZ2OM>Ewg5p26dX{QYCFhW3@7v<)>PAe>mnNg4vw^*)-kUKWt3h7QM691zes0I)OYP-)*jYiF|TG>k@7Kkay0o(5%9s6zA6Tj+*v1)lVaG0-WyqcgRs zti%caRd~H@M!SB@fTx15-qJy5!cw^TaH%W?`Z#$0? z#ciMYJ!#6-ASXnlA?2*kG(_Ks_+e-A?vO_23#^B@Gk$AMNlreR-XV&6)k`DvI(U@D ze3)Z$-{}8y$*#wdE=Wb{7BX>j1GtIaBD0Y7JX}l0nW1VkM0Bkz(IrR9w!2&j>AUaK z5x+28pb>l6=R;)x1?~2Qt4_NJ>WnLWVtpUAFV)c9t|HHgS3CeA8xusbi*hWaF1YF? zd`Y5N%SDwX9v2}FTDs1;{J&2SQoFiMKoI|S8w^u1rMec1I0t8i=G@z{#Ag0vb`Q#6 zddgVD`+a2JS%rnGXmK^`RqLg1d6u)Yy;nf*3))3oLu+&B`J`5X2d~1AI!nc_K$@*v zRDKZ}QdD{W5@Vhjmj;tTPe~ML{3u+SBR*9vC46nR7C;|I*ns$ubu%3Lwc*!bVz(JJ zl9mCz2G@Ir(BK8`m=ds??v=;z1?`^_o&t6PgY?(B)!C42Dl&t;%1FM_ztHCBKCKs; zQVTa5TO7HOI6vz!#fWHEobMIhk^!=Dr}^}eqRLFr8_4zs9pISl|DVKf)htdNb}kG1 z2?%xMV5{q@^3ga=tuT1Js?g(CEh`2(-BhwJ;aPNkx;hwGkZ%^p0iZZ`u}QigQ^$}4 zPi-@!`n3=MemoafnR2rL^9{zYzAjd)<2Iq0gCnqf-uI{Rzdd+!myuG0=aHI{Te1KT zIvm21%EFJjn|q{RufW(QPwl#(V+zHjW^d-MQ~@HSXooFrJE`E=4!+MvT7c*EiLwtK zdv8O3l=&6VP(%M8!7$)^IO$_(xmPR+9N5Y6OBAO$Xd7yoa-ZSi$G1tMl1&yGg;DX` z3E}L7hDd*}qt*i?N3-DN8obvMe!N>Yjv+KT0EFuU zF(T65G)~sjfXSlxSnFVWaI$O+TV8cW(5s3QQ8_cz`!8rJ>XXyz>fDR@YX2#^TS{_) zMlS4KtJvm(DJ8xA)Z_{|%kMXfUK;yM=Z)==7&fxWV-^M_I>&(&rz+fqwwm=63mWA` z7qeE7bF5?;h_sAT!9kMD<6W8JnI~`AC4ovi3TYC;)M!uB^hKsYS{Fx5G^OrohdA4w zQyHSJ2T{c$itvkEV|&h_9RG8-CHHG?bikTz42rYJs3KP{DdW$C8|J0!Qr*l*6dT2J zCrE@rE=^(w8VpOtQO(xm7835fa5H}ze7Y(}Q0queIqN(C($31$5_!b!1}tW`QER2s z*G1i};t{on5wCcu;CmkYi#vgeA{9h%IODuRVN0+Bg)!fw^fBe^cxZuH7AegSoub(kjfizpdB11 zR4NFs*`SM_Lc_`St1Yfs2sespq>!+Sb1W&H7f|%?4t(9OnE|ar_SK_qq9iqi+HTsy zYqx2(-ByACMpYoO`@#u$-cw6=kzl+0nt7U??~uUFb*Ha7=d6ht(g+f`NC$Vd}soX7Fd9yhc7P?w;y`ag>tv-)f(%<)ew zQg(|@Cwqs0er$khY6>Z%ZkiPvK6c|wrUqTjPBWWq0?)tr@jDE2CriHX8Bk4ud~XNf zN)BNA8R>4*K=W`$3_WLh3uLuUj3osT`Hj{YNNi^$_&ExqVyeKqR0apGmy@`mZYi%f z9wNF^3q%BjIGSR2_HUEg8Kyls&+)@02~M3w04Lh`JO=aIPtE|!ds5SY0KlSC*3POL zKl}JLhKr;kKUrAuuvHvBEl7S6*=59*!yFcAF_7Y$ts%^pH*z!T%rbmVBLcN#qW!kw zQK4n57hpwSXMGUH{C>0_4iX;)vjvKyECE)wY*OvD=f_Iv-G<$cKes^A)m$lz$K?}k zCGoLopQ3JBTQgFswtSB(X7NRXCgUCKepxGLuy{BlrToiQC68~ioV1MsXrJ3%bW6*b2Q>{t6Xf6zeKbe8*Xm ze)A&6*hX3RQKlC7oFv^|*{d4++%qsS|X<=K|m+rpx5n*FO+yR|V1B^Xknl;U&bv^?| zW#lBARJE6_(btY7Qq&iBwAj=6QK6nVL$f4C$U<=$dAJu8Ht$m8=m3{R$K}OlK=0{Z z+^DeOO^X>Dy#yA>bPCIV?qO1-l*UgdZq4x?P!Za^g<`N;6xmltSm0jm8&NEpcw^iI zh-C z!~VjrD*_Z8hI_3Ng3!CX{9I4lCw3B)M998V9)$QpH(|+sc%?$cyfMejHerCfM-|PBti&wts~$bAx2LB`5%O80qfjc!N==U z4B$b$v-Jr2I#3M-A36O&`P7cbBTD4t409~o3p5%Q|Q3r}wh%AVGjEF4* zwQZ*$c&ftO6~08t>nIGqT_X4(bh4IpBBTJ=7H)wU7V)6YF=4FefV7^ig8r%1LtvPYEs5{MK@ zdGW9a;|=y1XjP#T@gvWzBruYh3J>;`AEn2mEV5s`|HI%>{Boj!&IPJWbico|C8{el z4WA*4TZf-AREeAlHoyG3pYw-$b7dZEn;<1vXy=cl8 z*n^L=Mc@BLV%f5!>inH{eG@7pfEeB@D6qdEka{^;m5qp2<;C2mp@MlLMM%k_Z=#Jv zS$M@_fa$wFCpG5Hkc5QmxJ~nEFBbW1p7vAMY8tuMci=Z=e*C@Ik*0mS?fH(OYV zgv{RNknP_py+Fiy5TX_29@1VI<^f8 zc2}OEEB*iLUsc__(U|I$hILA)KuBUi0V@<11os{nsKr>Ry|5ULHQ8FEy1o`vdXQKz z&y5wxGm;k}Cb&>gU;ktvNvBS1=^1+<#aD!FKVx8QBN-WGLhS2BzxdbO|9j9x1Ol9ft+8;GfH75Oh<~I5BdE>ZhDjabKp}JW5L!ih)Qp z18b@;>fo&o$h`VkznQ(~fXmwZI&j^1Es7jAV+QKNeHuI?ml(1nfJx7*Ac!z}if6cU z3bA2fvS^Zw+-0UdA6xwbH<$p z>|Ozje_TE0=DIc4{KDhq?MZNBOx|mt2hJrqz}R;*u*)2{EmbBh3^u0b2{YVO;hT8b z)8qDnpzk4KIRN;xn}Pv5~)dlAAi|*(t6j*yl+;xVl%YySp=78aLVbVytdwmZ(f`4VwGMCh=Tt+!= zograe_PxPi%!GcOFOHme8hYkrKCZF_A|>%7m$7%mGA!FisHyl*6lhj`UwrcGs7wTjL`GPNFKNY3lY)* z*ORQmV`k=z<&cX?U@%A@Btv@0*z6-a#p8!-lFm>2&xcl810ahjd#D6lWk9x2l&b5l z%O{1D5QsbmJdkGrM6%cv*FFOo=oKiZSEh+|kN13)P(H<<22~nFaIaqx+i+kn?bpFZ ze)>*MSwH0Ey0ix$EAOb^Mj?|Bh>mSwsf*{B^f;#Pij|XM>QULG?2I?*&m6}^5Gp+FexCU_?p!=6hmg-qYBtF z$hJ?vh|ZaVl3^6)N)(v-AX-opO-TyFYY+qUy4R(S4s9W{11+kBRAQ$TD#eT^J<@t= z*Ar3j;I#fFm4J(z0!;B&Q`sa1DN{QTSNcimfNt|}FM`vkM5!tJNqf!bfQWV5&MPBV zTV*86%x+qQp9T4<=e!!&TkhxZ5^0(p}Eu|>h?aJJH z^D^t#!44hsiUDmDs1K&|K^l9QP26w`xkaW{5-{a|rE|;mS+;%y&K^)k@&{%VC#l>%g~$cz)nBLojkrw#$~A?KdNJc-+@4X z-*|bhDk3dyG#a`v?Po4+HK6k@o0tg`SF#8?!J0D2_r+3T#O@C)I4+zl!(AJ>@1D>V z+DB%6(-1%nykdk=th1gi#*!&c^e$_MB{2^|+DA(W@suBWie-ZWMMxC+_pIYwjzjeq zlki*dG%y77EOA)Te(r}wyW0?(Uwjasrx-*Yv-&1e4i$J!5sbh8vbU}Y0cCGSy(d#> z<+Q5$C1Wow*(HoA2))NDH;zxyp=|y9(@j>z&nrY${YHL z8~M)xKb4Ke!WEa}0-YsNU;js!X|jlSk} z_&@ruF58n3vm>j?#`ee4DpfgsiBBL9ivaj>!tBJA`IMW$56(gK4AtA@KVG!*F1G=6 z(kTe-T~?ZqlInkJsGYMIO(6Vdu9W8IqfE@A7m5NWSeGqex;{B&R5%`#i8mJmksoA8zmze}=|lC+>>~Yxvuu7DztiL)v1by7OwmR)nC^iJ zu;%BC%G^1u`el145{N`m(is#rqn8bq7XhSg-hC~0%!`W&vK}*xII^O}h@RbB-d^bq zfC>~z(pxKco|z_dxzhg;9V4$v1+98KjmBi)>C`!w^w`KxOT?au`p^XkygyHH_|T4K z*=!2DU?9;K52or!DjydpLm8d=HEOI6%?H2T_RZe-J5~bx74-HNW~7t$T!}YNdkSB; z&0A~arC^Z8K`6Hv^y0eeGwHl??)&(<4PRGaMK>M(u#lmg!3C8m5|13M4r|_Dy>^Xt z>_qizUZ>(`DsUG>d$00gTRA~O7H%Y)w_MG^zQEUtnpFWrMf@guKp&;|i`9186 z`cS+wzu{l;dZwXG5uhm<4~+Js)9S49Ra0vx5LQ}L;C+@4kwI7Ci)^`D;0|2=VJ(S| zNSVQF#k)6Y!MGW0JVIB5KpDg(cj8=P{7+&JREJ{7FoI_FXUwF~z`=1ZF-rXRkCwUE z_)1m)y!*(sm=v%VeVp9BR|9T2j$~7#+WMLlIg>)QC+0C=N1&B$dz<KZsr2}wysaQ7$cePS6ilp$`7hh;wkhiv0eg$Sg0@9$beeyym}73Y=X*5hKDmX7 z&B2Yq*%J!~!mQFYO##8UDzm{nU)Hk|K}YNA5Q=A7l{-Fz2WIDcqCr-=4L%qkE4>I9 zNW#u|nb}byw|6Jqhw{B@g!*fJOD(Dc8%q3`z#-bG_~(^e@YA4S{5C6B1+y*S+aond zTz~n%w*TYvcWPrIs@+9_lrg&zZc!$7_YX1d&H4bDE$hnnRLb+G2Z?tOGlIcnK!)0+ zDRgWkU{d#Mg0J>2hT9{#$oW&|n>HQee*(U77r-I0Kz~nSrw6O5C&*FC`uASS2-f-f zT}nrG<%~{NzWNr&Va{Vvhl@To(Ye7bycQpRZ72LPl+hkR_C1)Y!Qf2$)Z(RwLvB1M zYQ7dU%Ut!iAh+XeLAaQ&co1vHk_zfW=CrbYe^Qp43a9uFp zxqK{-_}&4Ju2F2+kK6CE_A1XB{8$5M082le?~yK+D>H%qv>_B|mhFS_`mB~}sZjh8 zV299~0-{9*mu^W<)L|phvN{kW-}-&?Sj)|WZNBZ``F)d3Z}hpK<+%-9JjNj-wE85v z7b0z2)sky12R`C2GRq~Y(1if$>C63m<6Fo~j13%MKtBR{I#5~hDA}i6Xz0X(W;O$7 zP_2(09e5Lz<(_5mSfO0YuJC+7=hV#NVOq#l)>`Mn;_My!|BCPV9DDPcn_0x4mOG@ijjx`` zB(qnuy7`rNJT5^u@U0(?WNDA8)hZ~@c!~zi!~_T-@epa&(%vK$h_t$;0`LR3pTQ{J z@ge!{A_j2!(oq;bQ`ynez!xWY-LDK-L*93SKfQl1ZQsXn zY7bkN=qTy)QpU@c(5z!kKYucVv*t+~oFKFHldZ5sz9!P@yc!Q<}p~Ud8h|%7*dqr&x*41g`8#!+|FEA}q>XGOcI~X;RxtC#a{3GM7}JH0IFyf2vs!}t;eMmK z(W?Xxwo8RoZeOaz>5P??^8>p20I=;{57472+Ew)2*JL9|ygM6zcrrVD<9$y_M(J}} zW||xb?z$AD6&V>(viXOc^S4B}db&&nAr3&|3*%hhBgj9nX{ZNssGT{8^GMXN4SYnl zvOBs9#3v#w?)6sav@6+!JcB15UwQf52hpkY88t4Hs!QDc6n6=7!pUVgD(NxR2n?Q7 zGkh2n#$P@IUYHSdJ%BJOhqMtD)~TSaO?F{chLzT5#Y#qsv6%>>)$R$?c55zt3@h`1 zmquxP1Wqo%a@!AqZ*^5IGgkwkJEn0Ss_Wpr97Vhy;!PK>zFGcZX>8v#*BzsRI7%r) z#-c%@mnig=60b^OQV$0Tba@v1Gj#|KR{mg=ZnLa02ix!isBXxw2i+GINaS|TgumF+ zEgZ`knuD?RA^|OIsufh(uM9CT>2)N&Bui2j&Qm5K{QFjF&#eZyZj{uS zozqsXv#ed-E1sVv_XZP`rzFyW-c?`WTswiQ%;>_($e&P-Cf_~XK>t9p#0HAG zi#b8vi!ni4-h*4AIK$IA5m&ok0UMC92(0$m-v1k@VpnJ&Q&NbZoCDPa%)Lm;FNY}$ z^vScExPAwYyCCDdLE0cD-Qpy0g638{eK?!J1e7?+u;9lP3peb~<7|VW<;3ZHtl=WH zWXQL`87$BAVM>m5Fz(7qm-152pplXiDwcSwq$YbB3Z>`tpH6`~CgGnvdOnTY&cJ6{ z{c5AH4X%@H3sh;jAC$$E3{VX#I9ee8JiXJo`BVZsmU%p}YdPMdy(QLc9vWQ@eP8F( z-w1r4eeQj#rI@P(+PHEwL)3~iaT!zTo%R88W^%_n5m%BBRxz1l8Q;bi0)*q!MO^I; z4tffBpqGlvaNGk7mCJu2gV=5>%372V$G!DkaI=hy*}Rg{6XdL{`n55Pa3;O)@s1UibXj-1tD#kDjiG28uv z*3q3&l?08A2Oo;D%%?dWNqKbX(;GsXHBRg?>SOCF;OImc%WdLKh%gG_e0kV%TDn(* z*2P9yv4JJGt)SiC)86{y&D?q4jv+GOgwL;#*k}3%>fubLnzHpnaM`))GZrRfjdi<9 z7KrL56pPH{po9}=2rtLnI1g401ys7d9b)TE1CRLXHAtlv=eLQg&VdJ8OQVxE%a-Qi zfWBZ5u0NyTt8=?y#rqk;U4tppFTKm z^93N@NVP{ZP`H!xwruHlIGv&?kKN4(1Nlo>nsd9*=hl043y#=#ju4n){G{1 zK~qAHS-q#vZ(1Z_;1^+fxi4RHdWZD9Q~t#9nILLO7x0o6v)?N4R{Ez)<$1x}5oLNA z)V)6i48GYU+L*inI3{vL^I6uuSY~m~$g~VTlX#h%nD=lX%bH_i_W#i588?opFu$9o zr~z8A+DLNI#g_&couHRQhmg7`$jlkSH*X<=^Cv9-Cg9Px*b+>0;j{3J8@uT%;yg|- z&tZx)@gcQJtadhx?mM$VfFjIxdJW0Y$Qu5P1~8zPVMKKLG+P_Y?vN{zxZ#x)5<7LJ z*2@1fuTvni5U(S7JTQc)A%oXP#OMoxYr-#2YbudcN@b0Ez5>Ji{aAS$DlkXD8UZcT z|30N;6Bx~5^SV{U$2Yw6cPsR-;UmZwt;`q9<+5i_abzTZ0)d@GI-4cGmNiB6m#MG+ zSut445O+?5X45)&ba)y#YRee-*!%hjtP$;p<~z~FcS@+w#;eiea6HY=x95hi3=M1V z3RT>R@$p5ygi}-~HG}k!WpTG*RV+7|0J5d&6{x&ZUsv4$^Vc11iYi(5*Hr8tyTc`W zODZ<1*DG4z0I};Ba1LMhYFcDJP!l_FEOB9V^X0Om!s#Xmc~ZcF6Cn6l`47Hlm1owa zNDK5@Apuf}F$|gbryx6?dzLBnBdOPcbJ*7HejMnpknnjoC>SVB`ehxHGdHu#yQz%Z zqI6|Jj-bfOL-`E3#4bbR+siNPfrnrQ1^5;U0);wP;8Z8bgVzU>SRq22MS|>n?<)|N z#HfL%Rg2Hg-0X@dy0~)KbYV{N;9_zY%5*z=$i5U-&KPkK8yrex_;0*;d{Q-zFpd5MnzT40yy(ms#U)pCe#`fPZ53_ zw)MB3AY~QbmVVoq*|jf1Tml* z(70HKY6lQcn9e90eOg$s&XIoYH$#%}HT=RzQyu1M>hikr#clmGK^xfgyJV(J2JI&* zF2G<)Q_HZqW*Nrv5Jb}j1^5hclqR0~oH+PEmN~EZb-*hpzdp{U^JO_O(n;Z61CK-$ z>%L9ykd9K#qqV4{GQiY7pA@+N)Z!D`9CyMm!h+3)Yvo(^p(m{r##sA=y=6_WOhQ;n0bo4x zyPF46R@`&oTX^jC%z>d0o@8j3;7ZN^FM`24yT0#{19qSX09L1ZJ~+qeep|9N?*w<> zG^MM+Z3Pwstg2Bf-#kxH6qP4YFA3k|u(kKzeX1qwesRM6PsPt}2S!FgW115?L=uG#maQ{)r1 zApY)JYe%!Ug1OQO^xKiH~X#g-kvTRv0_eUbbCoc}I)g4oa(Ao#vx8~28r zFCUvon@oQp8(_*&a!}eQjJ_qOL-f8!2`eFmt&Tyx&A@;FzCJe8{?`!WRe{E7l4en7 zR_BUsgxmi^j%ion%Xe@WAa!UMfP`zj2JIff?dtF{qteoAz3f5)2<_f?Es78F5w?op z&M$dCNJ+As%0kn;WQw=TvZ~r{_R^wgY^1*mBWsZhe=1t5KCmo&5X&Z2) zZR|k#YoUsG!ZhYs4>=aQv|(61eL|UbG}-wVoa8ejYv=inpI5<`3y18Sb zPtM6c0Z$etS{Jm#c7AZG1Pl`&X1kg5erLFy*Tl^ZI{SS*?+XS%X*e`-$q!*}Ljhfc zX+gpO2^j&i4cQ?^IcA%SYh+ZafKiMF?AJTAIIh(jerb=}STyph)u`F}Q7%x9Z)P+3 zIr#1Pt_6(+&FNB>f<9t7s6C5V_@as~@e=cudQ8;dbz?tyEI65OkjN7BXxuMW5(GQc zXoUfbKJPF1wCU-DWNFkbR^lud2#0CGt(Q+|2?IWapUX~%;8kn0u8kME4Ha5IgV9x5 zx&v>QQZHL0P&9(}g;|(EFn-E2Vz~e57dC?NBuamc|Luh_ybZ4K^IHSU@ic?R+lG43 zsWTk31+vZjcmwOdF9)Ca*@y&$D7yElv8)LN6gCkRapN#rY=rOQNJ~vqP=lN;J!N^_ zGmHScvu*hry{nVhW}gT1iHW7V6Q6Gz@XUJWgU9o>s(ehHJWIT`z6koiQ3wz~SjbZc zcq&bK!!}F5DMC3cK2%5N5<{!Qnvmd?{Y}T8Y{_{)VgiSMznfPYL3l3#W*MCVmNAu%_%M2YWw-wPW){-y_uWRUsas0RYY)4t+ zZ9d7Gh8+5RSwC3-IzM%Gbhah_X_EjzhAb{wT8X9>m?m^@x+!fVriVk?WXrOyZvi!p z9oHI6I$mRq!lfl>R>DDo@%mONHyV~#cvR_1Ayalq_HuwNm6LAW2X=2)uCMdSqfu!e z4_azY60|VaCM8U!I&QuBF+2)7Ehy0lPqu+;L^ycV%-;**lDc@${?-!P3&8c(Lw0Sz zzstoYSP-|SMo2~J)+c&HR?`rELjeQcj z9+)?ZknjlI6OsYl;5RnX`1SgOe4NG&!yW#;qkY&=JfX%)f|tRQKWhy%=pFYyMG({J z3Pariz4s@Y#e<>gQ4$f6?cn;&zly=v)kX&G?LNw~I)<-U8Yek)BBAtLD3p;zdFQT( z60~6*Q!dOxDD_JU1CH)yC&jp5OsqHKI{28Qd4-y2Ke&nLo=Jy*p&|2Kvo}!xrbBwx zevvNc`)px7a3R2G82G9r`pT@TTc5cRBtEzJE~jg9{GcJAd`)`aM)VMcO_05o$MJyh zuRPbLTPim z2}D;Vb)m!9^N*F2JDF#6R@k;{9G*1AOWdzW&8RDTkH>mv9I6&R?caw03_Jo5P z&0B9`DPIObDO@+b1SP-<;26Yy55|z*ysR-uSgjH2NHQRtI-I!;64_&rvT{1-GMd zwJJ-#ljhmZ1cCIK`_-AdfyoCE=1FE$n2r{ufGPzMmu_Z(P>j$Xj1ocykJk5fi+i^u zey$v)&uud^X(l8ksFa<%=!2j@EMfsGrjMYsR<*Z*GY{d1-=e3!9SdcL;&^|h?$4uX zi$U1}E!+Y`O|z{bSSM>Q%&khAIad_3JjJE_4~c=y-Ls6TP?)TxnBxQ9Zd~B8@n+v00Y zFGCOZV^w^s$9{1*vxhG~oC@jrB5y63~pEpp0i}oh6--RlfO5 z2HdAL$V-$|ma%%)!Qp0Wt7`+)DU){j`D)y zvJeXJXLJbkZREg*k{K!Uv9$)gKDU%Td%k|ZAPtgN&-^2l(>RtOVsCiFinT$q>K#w_ z6M4H+x%_&W-*9%YSdDBkka+Fus_UTNf;9>qpVi+*pf4|14wC;~AT=f?_gc-%j&p6P zsXQf}3_9Z>J`8k6YH$9I(%T{{DGrcK5f_OI<3DBBu!Kjqx@u(Nb3#3TJI3{e+*u=h zf17ebB~C?W#PYmHt*3sh1;>&G35`(#>LUjdHv>&3uw843EBH)hoS%Gvl%1C( zWJPbd9@HG%=GC&zE3G&m6>#Zv;x;P9@mthTjJWRryzN|PzhsJZ)vWH~>@yRVP;r03tw^8Ab z^iB93I9_9WI0`qKNR`>&T!+VZWB!ytnP-ZYEGp$+Wx-lFNJDm-w+k~UUN6=um8Q)xVIAF3lC zT+TG^LxDjr*{cnyet)}AF|k91TY$zWEi*Plx28!TC~Q+GmgoKlMd7PqGtS&Lb4e$& zB7G`K@u~W22Jh>hF@cZFvnJk#J%>w}VZ&EtPLE&1j(e0XqsPLHt8V74ffs+4Ec zq6~yw9^5<3a7yXled)g7yJh4^+mBWOdv7$y*p?8h=q+!7ckR#Mpev;BEV+ zCZf8GQMCJ&)iO;QwSXlxTs(0G#DaghAWM}YGDsAcz7j77|2^>kN%ey#6hCa2l-C=7)$pz>^iHK?;n3f7%p@LvsxoTrOUcp!+ufo< z$+???c_Np46&IWhU(Ng8-|6ahPwx2reX9jHF?%4$5iaETRj}}>Lrl$IpsPb+tn9jz zar4hd-DZRk{v0xcpo_|^gfXnL`Rsi-ABPHx_dOwoDr2{nVbMr-@&L&!N5bVYwNktf zk3=&fEzzg-h*FSL<`HdIv1~M25f1AAm9`DFM2NoI441Pl+M$1kb1yACadrW^O7L*9 z$WCK)n61ULn)H|zNe0rDgemji-6yGCOFRQhB5gPpT1g-e5#H0I3t~=h`lVNTj6!u> zLrQ!PI2T_~!7?NqL_vr3jg*wM8jM34vL_6DigYBnKr1t8iTx1r(Y(`nvZ6g%3-JyUbWGg8d)1Wz1zhHlH#TcnxaYl+R#N~JJkN-({kb^gVG^|G|c zN}?clWy;BN^Ir9Ga^{Fp8l874mZCNdVb!ibzEvIFc=l8e$$Ea@K(-T4mw&qh@54AHnno4-x+9NgoKkO?u7ueisyl zJ))c<_S33BoN&5~l&y5ZlJb{0wjDc0y^Ohv-@@%kjSGgU;~$x`27(X#^+C?<-SCZp zwlkxIhgKS8%^h5mmgZfO2w`(B8+2P#%&>j^@LkCEZU|Y>d8783U}eL$F-Cf(cho!2 zUq^#v^OJ?;u_;xYvI!I6lYkgi7)qH_LNI(1RhbaLRCW67%>LE1S+MAi&WJw=V6y)sug|*eGz)usF zZZL>vk+Ympnhr@h;cE}xu(#_ho?*NUDs5ia zX|T$Yp~!sp7UFUCA_3a-4k9}s29MRQtS&a%J}i$|6c)n8dOY z90mTI9>kW91Px!9U?^RKDSZCSn~%f7e137gsL2iR&(uhKEIZs=e-;g{yFVcfGzqs^R`i~xO{Sihfqv`q?z=gjzDWEE|12iMq+_z*~ zJq+lNC<`|VXdxdn1Odf{ZW6&%JydQPDl{A}mH zqCw07h0D$>ZBS|2K=)_v>&;-^QQfnzCJ@_WIaICW-byu=9AeCAi7WsD`VOEW3;PkJqF@^^TIAi-&FjD#x)vBq% zE4>Kx`NCT;8>2wB2-7B1RrK!szj*+}R2Ecp$D59~mYTn6#^7mq-u;n@S{Mh150j!? zaSM+)al_4y5Z^rIeE#EsMa$u-cF)NZMLpMFk=P^_G)_Cx+S-5rUIU%5qAnOPF2{3VkwHy&~>fI|F z9H94^ZWK+pvx-W?L)O?Wg7wH)l;&BfJ`LNpmBKm6Jly#FO z#nRUp(+>WwoI|f<(SExnP4XTrvFG6N4BohX@LXqC_TB+aK~>gP-2cYMsDH|@vn|o~ zxu#Yh{Z!nnJd`Kp-tuRoAc5~zAsy;Bko2csqQaeq0?7-Ts68S-xA4=`wC7++CQ)EW zg+qd?fLX>>;?jSKeP8{!+?$JCE(Oxll?sLJv}Mv@QH0)TeLV0HnT164>=jnfSI5k{ zEQT|gdchOgZNQhVtU(M9mo2ETZr#_;EOWcwwzX{ts`;#wp@LGeblgX3tjWQC2OTuS z{pp8Zu|WW)(COp3=TKZr>R%Co5EpXIud4v&j}9*rU)NMYnPu~^pUw8pzt_W^FRp2G zGCI}9Fg!yu9St^R8OI#vXNxMQo_gcpho!)Ql35dZ=8%MnJUyZUGURT5>Lr&OlrNBp zefzrq!uUS(76*__mt904!kxtKS&A2oQ83$S1Bs&I;Zkc=VQy951)eNE%NuFhwegr} z7D8r#3g|pb=4y1ZO3wP!kPKhMgGUl<(&=(?D1t|0kq#`Cd=qQ*vPUywtWSb`b#F_$ zV(`8n8O-Xshe0geIhywbap?SgNyJjnyuo|@aixM4!W$YjVSn=|Z8I`JL1X`KK~z+s zMhll!(GA|jdq?;j8iZ0ur)pt!xdkPiQ$@tew0sYE)-KrNAK56IIFF|yGpvnSzO4n}&BFFRqE*Vls247xYT>7Uc*LN?8o=1p}fm zS8+Tiu<&Fs(L*5Uq1J$5-cN^m<>>M7ppRWrQGBxl&1 zZTP;7N64v0Om9u8)vvJHzf_fIlWoLKl#cX{emS0}oo{+%o-0#5s4cXAz)k4ctAbGO z-EpMS?-=+|9_bX6TjfjduAchE&8$7*wF)o6m+G12xgE&*5*-bhd&S;F%b#V!NgxAB%{y|;BT znZgn7QbIm+58SZ%WX$(Rz}tHru}g9{)7U_;ir|y$;l4qEuBlb5V_Z&wA=wct9e4Kr zB}3vrP^*?rT;0VzGMo>?Lg9e6ST>E*KFN9Quu&fl8G5EI)!PE_1A6rj#J_RBQ(2>B z!f-Lr8K?Fva!77`8uWrnKY6usp4+g){ALxw<$PkH_&ywt&HNqq>aWOxaYZKSgG8hV zKPS^M<#!AzZySBq?YY+r=T>&7!w@SVW{dVUyYq$Gv-TmuMBCx*KNM<)F)kAHF9{#t zomZxN+2HwjS0>KOebVpppwG}e3$ZE;*{VAX3{lVr{0=P@2y9!PiRPECS45EDRK2zl zh5*t~Q%U{miF1U?`1G*aylU^b%Q+FPd=DFo)o~-%S%jixWfX(xUw3v?7xZ)mf)T#F zWH%IqX`y45`0{%C*QLpJu7QzcY<2UN*@o>!~^PvT5pT_3#Q z14&DMqa-OP$Y+{kSHOT@pq$iOPCq8hAogAOQ=msK2fZFKoPrhAUDss>_Rdije)>Ah zUm$NV_Io4LYbm+dY4?-+4A+}GV?HM*zROI=lrBecu=HXaASSw+iPZ{NG+W_Wa2?Wl zW~Ccf(6gdMn^brRyzzP6aJ+API#-$_;4fc{-iilrK1-c@kX*=Ih)K-owPc~fIinEP znGL2nFpd2?2|aa9vNjf30*$2^{uUWp>)j!)pGq1kvY0mm<=574<$HZcbq?!(L;Dc-%!-26=G-A`t+SLn40PV>WXWFdb%>ODH5O!#Nso)_@qNC^R^w8u5uG{A-A0H zq1_Z0;Hi+COxDQwD~Wu{*q^f7>GBvr|MHUmb}EXK?*5u|jVd|GLO;1smaJ8?yC#b> z`H@u9Li<%kBXo#f<205h7^l@?<(g7=s76y&%1B(N6q!!Ks7SqNu55Ch8r+~nH~C65 zIp_g-Gm$MbvheWaT`P@q`PO}j3AeV@sMl<){rudgI4%#1RWQqWg36!E&9Uo`uotaW zBu*JcagU*Vl}3f!xmrO#XTyCtmEEyAAh3K}O~72z(T>?nu2E?~H{Te+ES$?(K{73 zo!$XH@WF}{mV!Tnr?9Tzi81^us!r-;ku)@=A;s!NUtUqdN@%46-%RT@k-{)%@=PAes_qvY8<&J({p@7EBcYq>^XY8LcJpH zNcGdIAdV2GcO;iTFq!#Zq0ykVmMV5|j*%rrFLP}8)sEs={kSA_)+jOoKD#HF( zh6W?(K-x$M9hKw`v1LY**v3dG=XA2$XO*H--4w$nZoB>ghei-?J?k9 zdg1p~M*Hi*d`7v3(bgeDjlF=MZxsBH_T%WA3x}PejZSN*SCh&~xb-Yog?TpQNke*% z1Uf&YDS|bhYm|>G9_q=dcmD6UYq(O02-pVSZF&+P@_IooHY z4-inIE*#UpOcd1-)xrsrL!W@0BTVZsFQn|^mvmO_PW{IJohOW&r8}LdDC~rT*Cx;$ z8M2Z^K8QWWVI_@nr|^#<$o(&hPFx12z;Ak}yC)++^w;u)3M)0muRAN1CDK%R(K{gb z32|G+MK43}fv@Pkm^enSPn=RGWX|a54$+|# z>7jhq*VJaKSk!ked(zgfWb$#8%M%s&C+Cz1+F=w}Q{kN-)@*S)RS2ibJODRUqY}~| zt_u|~BU5hfnW-1sS$i@=LsFCg9_;;P6k^M3dY*jw7wivF5yb$5J#f31=!2D541#By zR1h7x_yu^2%PNO4JArBcurcAiF0xl2$1c9?bm-KJ87$JuSq9EA*q(3-wzaeww+ZE_ z1)q4X9W`C`W?7P~G>UcWrrUMzQkywYHOEBP;qhr*p@)VZ;s6`UQBM_qA6rUEtxQM; z*$N1*a1v@ldVCLq8$xs4 zOXFhU#ZUP#R}+T=nf>IC5T{3<;Xvgs|7X8RNpv)BoG_dmIB$DPB!0aq%r9|e=K4sg za+x)p;nrvTRmULw(Jof07oI;!U2hRHF>6|OVn zO|FWd?Dzv>B`_IdkIsC6Z_Tys)~iraGWDd-33(y&!$4+cY;D8TJb zz#rP^nXyTq=`k`Cg_tQ*=;*kEood7{BIV*|UF=0zek}s(o;Pcgz%AcGc8h91EPJpk zB$mKUiK&Y8SMx!MzQdLLrw(fX;(eH0w1}(x$Fr32CIni9z#58=wVvTMs93s4mY8Yw zNVt z5tY_CvWqzQ!*ZV^LuF}~NqfvLOuXEc4NFRqU;%rhVv2>!o^z;{E&ea*5Mo6hKPjin zB?!%yidD7|^{TO=f+7=KaE%XVGA=C$XlDc$#t7NB+>u_l1<&p83E)&iamq%sej~t+ ze*5L%n^|j~G2|4`(uxcqXVP84Y(PiLE^(><;`Q*-qg-c0I$g&bG8mY%tb9k?%7z&Q z@=f7RBQ!RBx(oT>;LBQE-S!5)SBCP=+5_3FHU;EtP<%W%<1D6?5IStI}7(L8K>JB?-VY(JON;s6(q z8B?-(+z~w%eMp1W0zyz~S+GkSxE3EB8IWedCD9NFyn_NrtP@tc939I-7F+~wCq*@w zvayhiI4_E>Q_TkIWI)nq+Op&nULi@wxa7)OzF|=N?jAcQTdP=Ceyh2(H6`zZIh3~A z;g!#|2qp?yNFs4;JHdY{5(mfE2uFfwn(P0T>7;Yw|E|&8bHwor6EYvI_uAaAGA9uH zfMgRI2^UD%wBMmETCuHopQEQ?Ln{k>8j5F1qT-Is?U!G$0Brp^bdndiM-wL;=Lx|#Rp zKd?_sDK|@`)=mg;GF^--C!}pmSl2PO-{2eeg4+j!R~C`ET5p>tMOlDAQCnJAjEjKI z)lE?BZCE2Y%aY5^qV;HT?-~%&ZDV&@uOl7_9~g?d3u^;_40KPYhTS*>g(6%OACeadTV7#|*04q@V$ zM$f68rrA&c+7kD-_?6nz336QQg4Qk}QDuDFIAG=n&b^K>ECr)aJ~JnCit7xM9$!^aD--dY(6h2Ed8Gg*&h3HqH;M6yxxAIBogpY9=E=Fi(pWbGj?5%*Bh8NsR;l^Jkv&ec>+2EC^n#O6Y_WJ4_0L)HO%2^CE8o~>wJbul(=W9BBW-R3$ zGR|mjg%7kdobklsaWTiE{dG`gWcuoCHl7hrJV30Ot8WT`E#o$(Q+2Jtzf7l;(7`^C=Mq0Td-2OFNXjf2EC~0P~Hmn7asusKLEhnce8N6M^rdr z*@mT4=!Ke`(FBJjuAceVSB|3uyGj3B8Jk#coRzZg(G0t?#WcD$;qLe;;oo=>aDGM@ zk0!{s(u527=eNT%rY%1ArnQIOE}*4%Mq*LEXD_p(RkUH326A~Ct= z3rh@kjN&&^14@+ld?A|Nd=c@USGho!Go0$ws~6tDY5S+-l~k$O5M+Ev<`BQm>X70; zymrOvqFeFv9|0O@CTYVYi2i01SrMdKpI&HkVCA){8O#Z20j!<*rUG=hz8+xcspT3` zH6w>A5%@P+w$SfERl=J~Dy^?bj!rv%Uy_s0l{rGExbOR|ZlM??<_OnY1TBnbG^V~NwI6Th8g`P;ULoef+S{fWP&aJSa|>qTVF)JqNSs@+0H z7igA9v{N}%&}H<|JASs{ZAJm8dy5B0U2M%9>7DG9s;Cj3xmA}+4aBi)5ne^-$L8Ao0ATRowF*pdTyy#rV0%?U|W2jJxkSz}*{a zs#=`7)J(T=;6)uIfg51=>mgGjP4&Na}+J!S|H- zOoH|BEIh{*S?q-2x}5E*a%5kR{~P@fbn>UCTOs1pKnt|yonJcG-saub1Jf+=TYk~F zWiryh+MZxsq+T3s8bR93ONk%Q?&v0WYGB*>8f(664E}0*ex*wvkC z8oS>4Zmmb3Z>^pf9eH*F^hiHuWUmn5|7yld_8%|K-Mq%8Y=|c6T+$XwB9QLhB+cq& zEqIH6t>aEFuADI?{pZ8?o-4}ggDRBqrUW6Hoy+ULp|EGMthC-|eg$psoyOE3KTNBf zjn3l+FC`X+w3<=>c(((U1kOY=J}f^3(!Zv?<%YpZsY6cz38N~d;Pr!4avYj3Kk$D#>YvuQuc5@BQS3{?JMim(jvhP18jcVE?&6(Q$t0g@s3&%a zoDJf*hjBi8>5=;DOe+sCui4PM2k?)0JX7D$Hbeqj;$1%M;msNandk;l8^1?UI^ZG$ zLw5RpQ(L+$_;1FKHtezLjRW36|)mEEeMm$Zcs4N72LHI)Lz z^}`)=sw2wyiL+_%uBA#)jLK`^^VxTmRi5m6~%=NZ?w3;C6HpNuH;PjQ`O^YBJ?_2w6b53I~)dGbt zMZ76?`$86}H|+-wYQ;n!{AeVUd&0gQ9zIJls|653P6d#@kFp|r+e$~e88sqJC3XS4yM&%-c>Wy3YlI_VShW=; zz7Yw)fwfKrs&bL_;@D*2f9G{NGg4fCM#>Y2P?!ZDqJGjlRtlHU8h(wdGuxj=Oix&w zr~?vFX*2kWGqhK?3W86RB966^QdRXYr1>q#29as z6DdXUFsFEJP0tkhG-t01G;)TrEjS;B&4i+XqN*q^8R_kjC&xL(f?=L)mXD?i~ z1eMkgo960z@6l>qDJN?FS&7v~8v9R{rZg49q%}4+{d#MSN}@jq!b-0Bk;*-%%{(s7 zXerBtWK8Ndq?nQh40o)+2$>&E$?4jewBaUG<{!I_BA6K6h$Z z73UeBK6%fh#X2m+z&-Go4Q)u(7D)j|LTXmqWe~fEVh{RU)9%nzkG}aHv^4)L~aek&p;F9EgItJ!~ z6<%YgI4Lp%HFza55*S_pJkSyf@bZJr!jRbq^v3Ac=c3zkkbk@)d14>3h;T(u(*0lc z@S!e@SEeO3j*ZI6TwHlolck%aiN!K;ZSB{#4Tk}kpboEcpY4>SS6IzI37s3A|1?Z4 z;3*$p{rSm^V){YdHQzPpAuC8`94=hN8>)Y{Wa4PZjDH}6Amd$^tFhdZ=AY^|)$Ra8nTR(hVT_OSk-S>{dpak;wkt)>Y6Xn=fvcmy_ z&6hP0pt4p7H6_<^hWlgixUrdl>Gv7oHR7jx5-^BPhiGU&6$O-jvEql55BkhKI86t; z^r_C?N^VtE9rg(P4w_TGY0JyqM z?Pj$8?2%?1t~r2aM!r84^FD0o@=4rAJ5>{+0|&k^!t#}PD(lK{b-9?aMZ2}}>%avu z`@L!(u^cMdn`8H;wV@qR>wZe$QQ3)bhW64p!X!7TetEXJTiszi8Buy-far~c!h=d1 zr7_Pj38NEvW;F2C+Z=dg)uUHQ%RnP>DlE}>te1WWDb;N6a)#OkVAZhL6M@>gx{QgT z*~+Oi+wI$;snNV)6vIDzIR>P=n*I@hgbg#rT0j?8MB^(;Gfn71Jk8~g4RAh(8_RqZ z+=rlyWUW7B zn0_Q#b|cVw$yHX}mi}?YLk(mkF3Am7npYy-u0V;|IHN#JZ1hPTE`3rdamsP35Z`rK z&PjHE!?m)~8!+aILF%3a(*r?>34-5MEnY4Z`qwgwMtM~kPHBm}pMFjU$c1o9s1Klr zK2ufXcEi74i0GxvjQFq5;z;7Cug72))(__o@Px%N#YwG^EjCLcZSum)LKNTDBiHx! ziu{i=j&Q)5yD?-4H(1zSVTv|&xTqgr((6X3rL(9|=RsF4IQs~3AVEu2I>-DW8w`rG zt;y zMRcP4HpgvF7)B99?%G3>+Mr&)=U7_17BBm;lPjM%?WS;P5rfTx6)49FB-i@sLSQO| zo4D4in-VtEw!qc-l4tDgYV_k44huPdXH z2~0YvV%h?h0|!a1k2_<1m7P|E*$M z#=d{u4TeRc6J;k)2q3)Eygo}bT`{0KGR@(behx1wq=C5So&>d2TZf!Iuyfmu;?5N^ zRgs(iMjOk3i_TPri3tznYWm8TpfTm7d3s41uS5!Ef;qwZlY(NISL{fKKorT(kj1X(hXv4z0VZwEH410YMqP1}%XAbfMM^S}b@ubAC_N&BTn-|C&M|2WP6EBvV^+a=i&{Z{ zh3A(K(!LWnP`_r)q<rLco|o4^Lnc0)18~u>MkTE+%C2MiR)@-@w%~S$EDMHK|HsOTq&q4Hn-j z66y^g?Jfx{^uZJaMoW^TyY?P$F?QzVwh1m`75YZUps&qF25Yruauy{zc~HMM+1qU1 zKA-7Yp^M1{vIy-Xf$v%ZZF00q19)6}<844irBwm3C##)^IOv}^GNVLyGT}wFK(U*V zK`l-VQ#Zn}^o%?+$CMdzmS)D^3vO;Nqw1osQ*d+{;J1xkLn zkP(~@SSLDZkom!goFo4M@Hlf63}N!_+C(_Pis3cd)pTK#G! z^TG|Vbk&YvDgc744%a=vXO_KQj;N7iN%TE1}Q~P-|f9I*JCxHW}GyK7>^6x?o35@o?c~>xsIz-USXMvNbU2 zM%DT>6(O$3gS>D_Qpi)ebt)KXOleP%#ss6$RX^$hp_uSv1Rt3>o&-=yl)5HSI76JJ z)5t(Oabo=}&SpYp`vRU)KmcR%vSBHo z=L9}&KJwE3bMn<$(!n3xt6UZFm%*&eQ_!FN0{9=~R=0>uZ_xmpK~!=rN-LW2=?^C7 zcj3lVH<+X!WBijM-i8rAV-(G9uVJ03?Fnge3A^Y;KoadoYx${7<{ zUHZfQRpVA+tSb=yMHQc|Ji<5MRTPi~QCpe)5WWoOdzR~Hr!KTBlnpJL)6FRL6&u_=FKHC&N874;km^~8_JX(J{RxMYYNKpHZ(w%bkG6V8a ze4aVh{|pBb{HBVZA-o?_&p4%R%_}vTFDP*Yb(OHt+rK}aP$6veqj#^5rh^0hpAq>q zI?~=%-O9VxiS>Yv!F)1a7{MA!Nr<922L+ce{s8qnn8n$ex1+8xjQrWuYxt6s#SB?T2>M3qDD8h!^TSCvv(9x2A&zMCci+#6ddxYC)MxIl`iR(W z-;!D}+vw7kpsPEOPMn^*Svg4*pmfrRv((dw7?zGaQ7~`&eWu1mGtPWlQ6nEr@q@6S z+H%LMuRuR%%gBy61)wF@xzznZvX>uK`_Aiphoh&U6DYo}-cEEBAi+PRB!$GyJJCjI zpc089>_=Zim95`Rb!r-fsz)aHbHW3s7^ zP%VRxzUQycO0dpVw*8Lc?Gvq7!MvQ7?I&DwYNMiufOaxSa z;AalC8kgmhFTn8s?;8;+PkYa>YyuSgKY{tE?KQaY`TR4lhKBVay4?594$GjLptrco zE85{~!OKj687Mo9Ve<2ZgY}IS;sPw=?p_@$f2%XUp6Oq2ELL;ff1p{5gL%ch^VBF$ z?iL-K3RN(=aIyVL3TYl7TB#o_w>qbsayIU^`RYH5T)7KT9$_vZZ9+B0Tgx6M*7au8 zNtZJaZ@~r4vj?T!$jfT}fB7NA4N3FaNm#cs*8PkhE{#wEaAjf2@Uyket9-i|SA`#F z$v+Sr6oPY!GOns@E~`pTi_7w%SKi%CMJJp*>+#j_`gar5iG6?I$Tn$VV>xv0q|BC7 z1jgB-PQDgGjvq!v!E1a)*cD^8yuhNm%^VmGGDH#|JpBXwYV@}-(mk(O822j-L8hScc&*rf&boRVOA*g5sR;$i z?xF2UXBBvDf-%H=d)QM&dn)>ljdij&MJHOqvf%`K)%7ZWn1>I-`;-#@hzCLG2Xn?- z_FSt#B+8Nic2Z$y7>*FLpc~#Bg&S^w8^14m!Tm-C7Y#3O{pN|0Ly&5{@ZtJ)@AYZ_ zFZAk{4Prtwg?jK-fv^4GVAGO4P;;{Wti-nbm+g)teq#R35}xmyBGP;dZ*Lem&YUWUG%*i&7l)CtGe- zm;&Omm3B;8jQvhvD$Qe^J-^%6gR!w4FFAad5`8~fYoT~tHmUF6Qk%W^*hyM5b zg`-%2AesStXwheFn=XcO~zTaN$}Z|0+fR<^yyCi?|3s?fn{h~El03#>st zhh)>zo(RR)z6NDQExx9d=#5|{1n zmVp>2myp~u7Me>*)Prw$@%`{|nCDo#p+CmJOUT$eA`X4rdO|X&aJ7(hJE&qcS>$Am zL|17pm7GIsHwu@7+8b@T*H~8$B?N>zLisOGL45`~!W92N$NDfOup-YcO34vu_C4ml z*x(Io5!ff+KG1be!9l>^yf!0jgnx_HUDX*>@b!v>_sbOotdv$71Hd`4%_N)`yF~2a zzOzD$8A8FZ!8Gy^@ydA!v@oJf!)s{QzY3?l96Y&UbH~{fs?!MAp<8Y8G>VCLM8{&7 ztXkb%RF}HAwP5kdUCEvF-?Vxiu29|y9{vv;u%M02P~p99JiAdCh_H+Vj<5nVrNsg( z2v!w|P?IC7&~+mAQ@_tfbyhIc5aRjkN=rZJ$RU{Ce-PSxb|3oLG zJigMKUnH^w2c#JIbprIgkv>sGn=RlQ@uNkRaAgjPk=s+ZR-o-`7ESwy~FZ z{V-*6O|UW$b6)fuxQ?g4ao>-EOk-7x*ciEu3y2JmAY-sR2)9~mHrn>28O9D|44mBi z`X8WR5mHe!gZhkdiSi0oo{4B(lOMMAoKi0f9U{zezCi#M&u(m=1qPK zL}0-7M=&`uYUXQHW( zxwP9KE|OZG{INKRmiX2$o|BVmBk0%loi2aVVodh7+xOb8#m+-)I%Xj!C#XH^!S`F7 zxL2SxuZkO%%)Xw2VO>y+#oNAf={kR~4ac_`mtZekhmK1u-`B^sY%f-#>dLFT>W7+OA~$sSo+l}{p@Sb_NC^JT1h zm`?1{S%e$Zp#p!PZK0_@fE7_{Hgwj>tMM3Xpl}~BoW9s@wA)4{S`Yr6LI`HlG(=Z3 zu73G*mDXB|1$-goi{s#I1LfT>=X)6vTKoXGd(jR(v?}FY2B>TFc`VxVH&A&>5lk!a z`{Bayf!#zrdH>Id?3E9j<|VBK!$3c>`q>tRsp2u)V?vMXLh%lOH5YO0&S?RyRwz`? zM=P|l#_4-`iW|hR!gD}R^mmYkzOJ-H3$+|cR1-cRF{WUWRu5_i97yI1_uW&D2kwgD zSaI+R(j9sh(v3NBI+@@!0!b2T5QRD2%~0iS!*;vX7=QNmvb}Ir?Ny#tIeEK@}16Oth27!w!&~)!hR=Ebt{fb9f_&)t{&}X%P;sL z#58H5a4BRIJkW{EiFH!gaE9P#VnDOJM**4|0Hpr+km9*dlYu!67Rc<287EcSp(8`q zPL{^}#gV5*lZ?Bgi?8&26UlS)(Dy7O%Cem~by(g#yvyO=aAKV?}S ze+S<$W6hGvQX631h-u)4pWUM}iHz$`sDgMc8MF%tYrXslgr$oWSVzuD0CNc5WQN$S z#v@Jt4&6Z$;735KJqJLzYY7@lHJ=lBK2aI$IwKD9>L*fYD#m8hJ0uiA6Zr*FXU~@Xgl+M>f0xf0fqSaX*x_dj3px7pcqmDj!Jg{XAXRUy(+j~T9`Ut$9_*tR@hp&n;>fWJ(Z!s$eMe<29)2=T&1(&|a_^>3vdugdNg$)2Bg zRZz_&TI2dr%V* zqy33eA}|b>?5=&28!VSp{IzhjKdP4HQ*>SqS`LGFO9nr(uIb{Vghw_4it;j&<>L&)+)R;XXBRUatP$~4 z;%?Q7H`#>lv;)mVIdnW45%l?9d`-JrH5qd9(3vFYfbrgOub0wu&m|V7R zRIf)oHVY#RfNr6yGyH5u$8Gi)yLON4OEhLt_Vq%h9OqTsJ0tz{mZ-tiiLVnQu!Bxw z|4GyGcCtxKt6%DIQErdUfCI8hs}QhZlhydW8s6b@g@LX^-1^K><}s; zs94tf7E`S~-S8&`d+v(eM(>YA;i@3vWI2+7Xg$5zA4m-w7K`{RJyxk-5E7`vvLr+w z+?E>Iz}}AoXBcGD=)pBX;TAf|f|h681g~8H#lF=27P}j?aHtw@h_6kR4^^h-cJ-DV zE)-`zFE_-rkET>k#<4Ep$O|9JG?YK3w<6Hv??FrP7ugF)o0*}vrNmb{U|I$8b=(k- zLPQyzlVPxvxu%w`GQ<@!GQfvQVNWKTz2*FD4gK4SKR1P>*1a^#}>!Gi-<{d0Z^PQ6(H2M~$bcbpCJCs?pSc&P|tVO03z5b7S@ zp84+3=HBJf^k?pnzionZB;JXUL+Nq%L%RL{d?jdOaV*PnNeOM$HJ*O}xDG+ZXV%12 zSSP(;nd3n4Qev?NbNXTUGDO3n1EZ6uY21+Dy+h#oU$;PLJE;dR82d@}icFvC))0gKs2&>c;e;*|f? zXQlS2;49GX3mskHW_kEXeorbGXLr&RUoJUX)HF4A1{f>#ibo{XWR~XszGy|5L?XGO zdaYr8)u=+HT3%CwS`>0l;|gOUQ$js_n*cy3MdXAy6Cffa8ASg8ckTFUwkPM_6p|B( zC>J4e_y#MOF}Fp9_tM;Y%QAjV!Eqn_WuN_(xGMyxR*5zcBPQp$fRN5h)&hHlY#(E~ zd)%w41s}lCH4SVlTUe44qTV(sUd=pf1DU*e5hNm@4`(IboQ+uV1z>1M^f4erf_K>L z4s3(uMhsASi=^OO-}s}Phf80P$4LUR+<&d-LEY?=lJAYd**InS86+_{;Eyr1XwB#U z!x9=Rpj|@}{zREZ zAFBWm0t9_Pa20D?{Qbu8JGNt6VpF$;{vHNqUT)_brQDG!VHo`1L38N4sODai4Y*EXlcgXhRa4dJ>jb@zQU0(Ukhat*{6?~v zlsS2(^WAhom&`#z4yb)>MKaCB{*0Et5SN2?+vE0=(icHXC$s8xkv#4srFB6dlfA58 zvk5PN8>G#y><3EFbjw*YC;$c+y^b58Bk_lz%p^v7Sd(OzP!}!~4ahJAsu&E(P4aBE|c6FeK3XWrk+Gnr}ON*lHo0m@L%;qAu`l> z!7#_txY9%u_hiWpnF(xm^@!rmq%1TpuqF2`b{~5}Q_1<5x(YTOn8}fbX5xB20lfqn zi9ffvT)tUioV6FuS`UrEq+DLwW)hCDJ#3O3vSJg-+ELWQgBU}l-hSp=^XO0P9k{|s zniyjH1Ad-)s(t>!HUuoX+2HNrFSS~Z(||`)G!MqCJWHf9Ri#Y#+XbyX4a?=POE%^|b_%;vNAlovS*d*kW7=X$;J# zy;2d&Vlz)Uv8$C=T0sq@*e9Xhb?==$sxV9Y{D_<7RWY8mQT+8TTi1M66D) zwv;&_7ZEPr?NTr3VUZ(N4=HSFWI<;=qaA6T0Lu|yluXUkI&oV&JN#I+!TL}Y8Z*4& z^5wzXIH-$r-Q_6uCNrYm)73u<7xTSA0N&I6BxH!p@qC7xi&u1Qy<)Ad56t zcoZ5G)@1+ToGvylYPr8a+g3BXC(9>v#&54rkni*Q7ET0IS*kravZzMfo}@p!5eSdp zz?Tbe;!YgRId|AdgF9up@{>2Z+KPa&^`0MAF1KwCc(q|{Rs|kEh$X)Eo+xLS_m8tO z8z(!`RcW6Ns;nAIDn3~AXY~ey!+;(7%m-!&f~yv5V5-_2I)iLV+d#D`nyO4MzE+JO zZp-sq6WR+nVfaUQe;R-u#U3uD3uXi{dMu}5AL&8LKVL^m--J?^Re9rmO+0YavpZrW z5SlFE^MKk6N0fk$@J2P^Ur6CJF8_{Ft_&q-D!`&wRFy^JJRFYRx~Kd4h$T zl4Sf?r7MPuPBFFo9_D9SNF95BY9ur~pP7 z^6X=btf^b^vL+ic+C+zL(?&?U05tz!X77F;lSucN2ekP%4O^qL9>l*6@rt@N6zI~< zMBn#9efX(|!k5v>n(o^(9p8#YjLq2>^*CmxYRx5;VJ8m5;>g;ck2)=3(%i_j@lnjs z^dNkfBWGK34o@gDO0IE7sYwMp$FR3z)Gi=mZXj+%iy35P9`iX;*I&53*8FMQxe_jy z2&(w|k^znl^Yf^@Bvou9)VY(72K{sSRmNh9 zE?GzaKYtre&Zj09-lzRxTWZ|TU~~r3UL?=|VkY-K;R`3>Gm<|Wi(H3C|JX`mt}sOt z(TNyVUQRyX#bMvuvVrsEGo~;Kzru{rA8L9Ht(;CaEB@TE)j9aIxIs268$(>cO$(lvzy9s&h(K zoEZHmY&`I$C3$VRd^Mon_IuDfoF=9vwld4~xe?(H2b4Py4zfoMi=w7!xsV5b=|#x??)GZrxg?`XRl9<3(wmbasJDrRZH~cKu!=1378_<7 zN}R7}tU}mW=_Ciz&|K_|4s&pb=gG!aT`CJ7=%raZ3dT?FL z_c>@5F-~0HY20lU`}y=1+_O?_M?f7?*w_f_;alJ??d|gZ4-ee+Bc31zF6J7t2(8Vf z+>0y@M5S3odyI9Ud!dNl-*$)v$My(I{GaZtL6>u@I3%|#OWUY%$JWCr+Jh0DD{zvDI_(am%(dESq5T;+$%T9wP(2dAe z4r!l%k2w5u@}Dy(X-nvG(n4C(J*dUv0f0h2&1{w0h0UDzYMZQXE3YGKQhFyhAz(gu z24=zhxZEBXr37fhL|<2SU6?K+D8YX{qD+MRo68%LTuu|0rm}Lfjt;x>Rs8TZfyBQ= zEjMnI?bj-iV}#9j9MY~TXl%s5InA+&RVwdS0reL9*TL`ujndWbcmREDTa(QbP%~< z1$g;H+n-I!@3+>5j1HELbN|w3Yc|cvj%d%1E;8iTk;4T(d)J5ew4nJGXX`Q!H;MG# z33sI~{e$oQj;ptRJlwEhMb^QR1~Uhf13YhW==O95s!t*8NgnCG3TNOosNQOH^5G8A))8Fu5A7htQ^n-$s+~jLyb#eyXrdf5 zF4E4mdrJH6!r~p7SJKyMQ%`pyhJ`bfao8N{X22W*Up@u(W&ZOl4#7bv_<@gK@4?AH zSoYjcW%x#pjgbdScDXjj(=ft=zX}`pK|2}F2biry@Ktf6*wnI87n-Q56$7IYkCouI z{dsvCr85O|91iIWv(q`+$7Ff%XG(I1WY9NPHV0av5`6%eDQ&Q=TJsG~p+$f?F(k_` zURs4^Mh?UAg53$W`UzZJ#rm@}#ICRjt<*X%PkVv~jVLXxKWN&Agpeyc$>))7%1z?k zCPa4MSmoO{JxYM%yJd(_@sMocGOBXyZjWujjPum5CA=u z#sXaI!h+0Oa}N)R^13}25O;_Oe^gtdyk)YvCiEhK0`;%2Ak)rnhV?&8EtRcL!(7`; zBTMDVZbZAj$VgNhj#9&)Oc>s+XP_m4SK2qh^21y~=A zqX;Ar2*py?=YTUw8g!Y;_ykUcqwK5d3P6D!4Vjay1%;tBbfM3&_zO16a5O9{ z(~O1m6jMl%@eu-!;+94+PR3Z zY#KQAg|7o?3>;!@+tkmq3?k=8pwb(uGphYwKxAuK#R0HZiSJ(^AoPrek< zT`54SnJwp(J0XOR>bX9Vd^+LREP_soHpVJf`ML4w;~I##FT$50W282#XbAcQl4k#d z|1{Rw?o=X*z>BaBil%`q4x#iaEr%DM(+qd(emuYCFKUOk&p;7-DLp-Akk%o6_v5}? zIOAAHSk~7|Gs?K9u*_|pTsCBkS)|{E!4X(ILSm{TIM%dzY!^4|0YlRjUyTxB3Xfle zfkHLpS{mO5Gy`!F{jvVeYjNxsySe{Vt?$l2U=ma+55oPY#A zk_MA;g<<%_=eq#Q^S;G-lcp$tNHWaQyFw@qVXbt|O!EPJ%GoPVYU%bAX{O(tGW6Xb zr9H$%*2rsRCcNCB9(<|4ig9gIX-ZgOLgcdB)^}Z}>=<~`NhEvhXg`VTnADts^Iz-v zW5dsvM8A4g(O&U9MqqwjM~e%3?-bdP!_gbT5p$BcEb~mP8>Nu$-~7*q3nt3D$acKq zu}F<-9Jwp1ti$O^^}uFZu(oYrKl-ZftjANYldq^+m{wk8gS}c>kH3^Le8Bk@vyP9B zv7P!34FJ|Sh$wRNCI+gw*B+Y8u#yMgV*6nHv$;M07kF$)ZuO8&=d-Tw42fl3D}K<& z@~J_gOFi*KSW0iURbx-XJX}L|G0b)}1`v>G82#2wK4HqT{?x|GyY6TN>jK7=QwN3W zCdzV_UnllUrsr$%xzi-3JtbH_DJeJ3+c2Oi!F7-=@+_=X2AxSOYvfow7L4uNd|Yw+ zpwfa@>&H;!1OnLT6>f%si&G1-2*TxSg9V~LuaZes|FJDJ*Rp%)NoRVNyz@qRo<79T z;{vKvwtycp1XogDE(e84fNf*O`QPf$c$8>L;udUy5~q?aBro#q2J1C@Ah;R;8yQh> z8(7o5{*}0O(ig_qi!I<}a}A(bba4pu6vzi%r@ zHo1u)QM-l!-?j3Jr-##hNHT7FD7y!}aoeoZbD^3S3tP482+3Ud0wdpOLFZLs8l#4O z_R#^e4UG6h?7W>yF?uw{Jv5nn2_%6WNU-GybwL_ZVgD&^N_NSc;u|)Ov-=Y2b|!cG zuk&_kD8dR@Ehd|9ag<6Ycll93Da3p(2X zF|~p?TEt$r6 zk0i6MgRjvS{OIYslpctEcu10$zuo;%~K<%S50BIrzuEg-tv) zy?B2la$+PY(E#cmt6U9=MrvRRbI-dGYWF;N`Fp=E-N2m13+wrMQO)7`QrNwXRtK(0 zboY-v@i<+_51wCf?zA;dfjF;p*QGEOmv59bmsyBBa8^G%rc^-u3Nd)LRG57SGTqO% zm&ne}?sdWv_jx`O(GMWerLy0l0Tbgx(U&yWqAhOel*_*_9xi)FqIIu8{1E~RyR^RiFHc~kW1?$aRiDmF zPdFfY(lIN+W%&b$jZ4o5i2H>3WnOUDb3DcSI1FO-S0cWa5bQ^#G5Gd=YC!3A0aFy% zQB7R*nd5pCV*Wj#Z?-m5=qtyY+Po}}1uav^09e=_7osbWx2=i#c zH#L~4hkQ3$ol2SGX62pQDN{3MZ)_1cSJsj%9R`Kb1~(?AeE%5(4e6xv@;+kDRreQH z6j;9zc&%iE;+jZm3+4Zejm8or)dKGz3aeOz3#z)%V0PL{|WWvBRkf`GD1RA z!(p?PW}{|iT9?@AkCrRJ}72d4Ov=Aa(&6Msy9ekWuyg?y>sDqXc9MBvpcF~=aH_n@`{dQ*V4so7^M9rSSWb>o>4KAgXnC*zAB~c&QE4v7GKipmv!@yhicsF=VZRv66e^NejbNui z*t%0R9~aNwlHy~J=G4q7`uzamwrVeFIH`HN3RVI#m2V&2rfgsk4z(hU_0a z>d^ld5dvJVxA^N}!#}lK=3xj>o;-loS@dJz;Gd%H*2R2TNS{ogL}}+oGz@o@hT4mF}hWtJRb-E zQWfR%L((G3Ygt9jA8_=EGiY0RDC4XshRGNyh{lN)+l)5iju%v&_Qpo40nnY#p z_lvbeXOeHZ|Dt&KbQyWKGQRJ#>k(55?xtzv4+_Bz7K1}0j09M=UQC8EAAhHd<>!~V3R`vrX8j+~|d_>?hdC8?9tsPx;F!XT> z)s@uIi^nO_z;HoTP+7x4E1=?ai$vb0NB(#DsZ4?lbOnZrZ|YZH?!5mpEK{QRNOB`V z@$;#$`8asra7Wxjrau8vL6&Fuy3AcBZQadxCc5|NSv)(2$c=Jhci*0d`Y0VN*)|IW zLy3jF_@FwJ|CnpDrybiY5RfE*aA?bE4REiLxiKxKLZZtGn!kT7?j=hr%9nOg@E-n#Z!Y^~19W-$#*t=IhT4aw+=5A)Y z==jyzhuim{^KuF@vP0+#lv&kz#yjWg!>-(0ZT$&w(Ty;FciT@mh}I9g0I`Umxek$l z_XNbp9(gY^%A^IhHT|~eH-D3|z6V1Ue;-7=IX|M*3==GSE?u*;cC1xfF>pYu+{8k+ zlOt(Wjgsd0S2H714P;r%f=D!A_V};ZJye`7L_S*MA{IwlIA2^rd7)O>k58NO%>Bsb z)Q+}?g7zChZ|B)ZdWvZR4G?OK9>>-csQeYlQ7;G%sF(s!VI8@VL3lMEyLen`Om~D( zmG_|sEiGDcX#}+wm!%n7o8OkQgaSFmSug?nK&?oqDUiR0cdZ3Z9^;=%&ng%gNl4>h& zssFT`GQcvt-ME|CPSnqB>z^66*4U{^RXcLT%^E=B&@Gl6q6YYa-`oVHzxxl~Tv)D3tvN4WT;45p@Th7ccGEkiidk6o6tni-AGzQDQy1_E7ZS;DK(?oUce33*P|aT zQnuINHw`uEk@|&LW^G=kG{)~*yX5t}xck@0Ocy4|DEhy;xLzQrFkRa`NQZoL{yd+7 z!QVmI%=?Bt(Xq&fw)Kj=l4+EM=OGGpD|)v4d8Rq#^iLTJ*))>Vr+FgP44%7%R?^^J zInDeSO2K13hRB88phi#jXQ-r2kqWL7g$Trd^GccNx##&j zXkb-7A6W1QLnbj@M6Fgwjxt_~Aw80apiOr}FL8JUq3AEGO`~p>h;1fs zf`X4xT(Nc2{`8q4mb4;XjOj%xlE`#3Lw7+0Yp2Kg&0ZM)Ga%J-Rt16bZ97T179S&c zQB9F%A&58(?I>BIyK=4)M&TfOI^>S0-k46*VgMrBS&d-FhY*Qyn$`;~M6yIw=&+Mp zJC$KV@+@n1^K$@#TR{*n0v7tHsY6A@=$?*MR((aU(u4a6uI_?@xl#;fvP{^7QF~X) z)@_1_ZkhOzE06JTRr-bJ#>M#5;~p;e#CCy5X*E>HWw!>o!ST!K9ulD+4UBi4jqKCH zmQkkQhyPwbd=DFTZRLg!!j#`^c>X0iYoXoz!p9gMR-gJGRnF9d$3WJir ziL{|{8FtUcHsPPY&cGeAemY1E9Ub1B$dYAd2qY$!N@FB$8A&KP)XtIwmupwo=-(3)qqi94tm+aB@ZKfCI@DW6P$5eaKPQ<%}FN8L>GhurloPj1sWA zxO3UGzS844@xv$(qhoYPJto8BiD)Q!uJ zK@U-+k44bcUEX+@I>nsP=FHq=0?gFH*SARYFePL~I`cpv6 zf=7AAqVYzau{MW_V*~J3vzhUB!hIO0-YynKJS&!~HPzZRmmi&0wtpd{#RNdBw)DF( zEqu>R+`X(ZYIXiAa#H)-G8cnqJWHwAf`$Y}pYTo8+TMI4(s<>!A!W??^*V`C>n7*( zPnX(j&#N?maKF=D-K@}@kZoG3A|Qc$+A$p0;Rmg^OiU7jz8E0CoU!rZE!Wq1&O*1k zQ71F8X-K+_3Y#pPc9L>64vZ^ly8){sJ(PSQtqrLRfP4vq!Sa{XMY~*((v|Y?JknvX4=0Cfqj@$eo<6 z<76U&wGk`qM|+dph?U^5dcT$l0BTpZv0mPz!^YPlr+kSW z95=^gH>}pbhdu(PWtb?fr;l5{Z#F(` zrB4*dtGA9`(YHiImx!$UU{9c`Gn#unMwxX|9yc|fb_ZkRVuah?@g_nG#cASaG7=e8 ze(grarn22yQ4Tx0^NQzjO35xS78$g+9PKrhE|8v*8yCfFZUz3bDX`qY_?(k}32^pl z7F@DjCq+F)9XvzfQdlf8S%LOS%E^apQ~FCJ=Pl6I*|sgI&I3;QD^>XVQOJ(=!PDKR z%LPto)vZ3=q=Z6(<`balG}fi(AyR0yI*a3@MiFqP2my>!nrZV1_q){;0vE67qS)(8 zSh-4IKCU&AuRZq0=}f4Clw|^@NC0D(leoDT155V(<(9@*{AY-?%41etCSXm7YYH%c zjV!Y4dhaa&B!5m_uMsM^Ll<T@N}t-(bN z>S1{1sRULt^!_;DG?aLpM#M+1xLtJ?&3#=C<{dZCUy<&Pnk+!_OA5v6!Dd?1~{uV2QsO~OT3W|z%GO4{wH zmM(;|y446aRfCI(rg8V;h{$e7CXf67d*b`(7ljDrg7LHDW-ek&e8e*npk3aaUsYb% zmZO4g5|eiwIgS85+o|*3m&e6Cr~O~7)4fdOU9|)NTL77sjX81mX-Ff}OW&|1SwYTm zPq1>=%oNxRQ0_&17vAMjhrUhrIHWTQWNK;n%uHiI5~B5HT)|0UwT!i{28Sf#{Id7o zb~9(cyh>i)@SLe*%0W`|g0T^|R|k)SIxGA5Y6@z>IXywLth78jerP68Wx&}^opV3* z6_t*S61A(ThsZ|Y_iFHB>V;h!AMmakRO}f-F-7L?z9%6wa!qAAR3v=WP}fhF_sjD^ zPC?HBO0}~k5?w5XOfFcFSt4LZUW$}a2d0u9l4=}Win~h``3JT@OJBiGz@2g^jV%>T z=ypV%Dex0eF`w-hu>*jpMX_A9kuo=p+>y07zE^^C%f7BbpfQAg_L ziP{pf|8aNPMmnd^0gtjB(^hYf(hZ1|9XNU)FOiplO8to^CCoxyV2DYpLmFq*!j z__Tu)`Y4orkL~xE;D#y~6P8~S>S$5R=99h4Fe!?80J4|$52CEL(YX=Yf8y>RcV%Z; z&iU+dR?c@ueg$)3O&FMm2q*3$D@EXHWGE7Bi4UCv+WR3~aCQ5fPp#>-UHsRo%HMG9 z8f~^0Ye=tQt9ab|!eZnd&+3FeMT3{Mzz%o)_?3-2A)!+lFINp&`FFe-5!myQmz7r$ z17H$VSH$nROazY*CYExSY+eh2itidHmuhW8sN54Q1lry{jYeXW;{P%Jbi6Z7@fStf zDq*4&j3@6Bstrro+arz6*EMW>$5@>vx`}AEqm>zP{~`XV3X5F6h$?UX%Rl0a(jMaO zio~oq{GuFP*QHsi^-%w{Jtd?~=@Qx{`lO}T{~k6(c)6SMx=|9wW$;>#%wPGx=2S>y zEPn82Y585#RzgOAhq6L1S-UW@RezI^FfcX4nqAdakG^0=uXIJdG27~HN4{Ku>aQm# z6dE3s@paUcYB`WV@PSD&fwZ-i$2$`;T6x+DG_WwuJR1(XWLEd50>{Cr3h3!+by}ib zXH-)cB-z<8FH>*t-|I=PBz+`Rz2ZOa+daqY`t3 zyoR*b)CSw>WI(b(dipt;>emG!`>A2de?U~8#&=2<3Afr0H-c#Ojl~5-MdLH73Z7DY5M_m~S)^!#G_5f|12~eR-V+I14hb)QMEotZXh*x^ z$_J1zItu_5cZL0eRhE+oX2Flr~6v;i<94DzOB2y3#D>wm2Wvx7< z`M+x0vkL21n5s%~+=(OX)(@7oW$pMHE~$T6)}|My4Vg@|0N22x%}7rm>XIqAZgrri z0~ba1_Cg{?_71sqKiqUOn9O-56q=+f*pbhrWl-sDdVY9+*%te>TRrTHf0yof1DcY2 zuYbY4bCqv*V5I2vf{E(Fv%t1_R@#Yu1GOBtyK3tpCQ5d!AiC>|@fLqG09~?tyfDm* zj6fk+1Z;OEchw9C zzX?6X5M#2++q9nsB%Obv@DAEF&?T!un10dmUOl}>7% zP3Ei{T+yGxX!Jib)JVBVTXBBnj%$zFI9q=r#?cch>sjqn^bH2(F{a z7-oK~lQaf0&<0p5!8?fPyuZ2xLolav{pKpqMWacf|3^t9FDqQIa6xb-+-6I~IEY&o z6|ncbIhM)3*>?>`2cGl{`SCJpX^i5yJ%`VmjptXm_qdPFUOt2upa`aJszgIR9G{57 zwVxk7v31i{(WfeAFx`vA?ui#WO;yY4?h5BhYhydgNzEsEA%kCLeFHWHDh1O@wxv=jyEeGQ3D#c=D&4st8SW-!XD*64d^R{ZE%b)5 z7RBMO1U=gZUdt9MJ~sjEB)FAEMKm8vt;n}y_@bX(v+9kj#DR(t0O>RTGQx7y>q~s_ z*vk|%99~4Y15ro;&&rmp^a_8g9p6CdRP7vZ4uqz!U3P(oClMt_^?Hu>dKG3d_D9->@EiTECk39$Z-i-AG&itn+in&eHKKxH0QMu%OvUHl5CUFu}}d)4kcE+TG7S&&jBEdawF< zASQ?WPav*2(>WTd6TIs)#5TnrY^|XCcB1wWDOhg;Vc6rI!!OWllTDT5d*`nElY_?} z51=Csm>?aLr@=bCw$c7`>VB>W^Cugmg6P6u5m=)IhoWnbnI72&;A+z-hqJ}b4Qapk z#vTaCl@wArDfd)DY0XoK!>)d#0<_hD4`7FO?xursd&U z*X$(cNDO|g@!A1bm3Nsn4(J^CPB_UTD~b`)wTc;(7Hr|XP)!;QB94T?KP4J*V)Fq@ zyi^&__0TeCNkFLHK8;}$De~D)Y}kAKOQ@W$lKjR&Pth<>6aADZI>wc*PIhr!RzK_B z9Ee8qq(K{@nDt^Es*x8uoP0kpaX?qaJ4A&wRhk-{RQ1&;Yvq{R1{}xrD}+H;{8g+1 z_Lttb;JypPnFg0L%m6-VBH3a%<^@T%bn*7~zyPCMJH&-cZBi1CfK|w8u|Gi?` z3K^E6?{ZjI#Ii_=TBFU$9~QU3bittqgYOA1k+UeLicO%coO>lG=17JQMc<7H*)EZ1 z1fsh&lH=3YnP5;h&(&xiId_i+q+eJwKf_K@ewU4ouEfBONgSKwvWj<IN>H2Fjn-Q(&v|jXD*Q_LP?L0eOpAqkaXxxx!TcFeFNZ_jHKiA~+su=#J?e&LLs< zSGA_K(=XMjV6GZ&#xrs!h<@;$QwmH|Xr7p+3aJd-U(FZ&tb~|z@xeRgBW9*0NC1w{ zOdJJG9#ygogP?5RekhW%|63Lea!9rBjYxn!TU=$Oz5G%$c^!=ZSZ*^L+LANIeOwoeg(OlRZx*! z2sWz+e#E)Qu%T`LA)p{3OjwDI;08)X)sp*P=lEx2zo3?ibHulPUE@;?5R8J9BrH39 ze7}Y0PJl+gVDF;5I-B7Ci`PPlb8CRqyY~st9-}h>e5ayifteI%>4U8v<{24Fv9tD~ zvkE#TUc-V+&v{iE+aCXGnHFYX*i5jkx$qMT#HM~r)>=uQlKm<7mHIpGgcmu3tJYP? zQZy`o_T?kH5;x@AZY8<36WLSAWR)iqpe0?=verB5ms)ObzIdQFISj-FlBVo(NeUI_^~9Nj zJ0;RBKOLJaOJvP;UZz2gPZQA$192IpQjhMVdH@l^y6bDpwo({&kXfX>`Sd4tdRk;~ zRPL{9SR&6~_-8mYzU4hvmg48KzB{56WJR*p(g70a{u z;KPU9W6BhF$LsLD+5N_Z&j)Tqw%2lgR}4qDM|DNT+Q9B(E?t0&&q`a8H5Do(#oCcD zV^Ahob7)jazp=J)4QGlolupd#RqZgq^n_$C^n;SPUN9XW_UO<9g)!G(J^4@J^x~T% zO5YlW__m_Z0>d1r!j<1<*%I;87^M=nt;O(b7kfOKl?mlNJy3DBYAz0c7xN*zIFMHh+}++J2d$~3tUjNzuI3nm ze5QNx3(O)WJ3o}-5AX(x2DEX#px}v~bQ>LndFEBkR9GR*04SUszyk2wB-E2r)3m0v zzqt}{5Pm3ZiNzpxa{jMA`s3ArpF67?<&_+_i6BE4Q3@OGEzp?ecQU7nj-UbJ5!2v4 zgx0iF!a8`dWql>Qu4_NS3xI9?mJ9sFRIMBcf8MDYKuPwaO|tFY1ezFBbd#f`8h~HO zhgo(VS+DkB$Unv02!ZfwY*!`Ya@``6hO`a3M$j*yN6!d0H6|atU;;f+1hQXKKK9auuLeH)I?vZ^0FHtw$lAaXm3nE`Ja02y_dbY5ZEI& zz^W{4tTt9yCIggDJCwE%CE7YAc%`*2JgOD?mk+Q1#hPeoU*J?qTRa7Cq#3TSh2l!j z-0jiR%nUBW>xvv6(|*H9{EdpOT0#(!`9cC75L_*0G`0Xwwa;-@Q6wy>Wr7dS(nMdE@|ru zdM2yYnem}lZMxGAic1oy8TsfBXBjcSQ--W|S5p%90_NwSi`^_$7P8i&M%L3n*MbW4CkzC$A z+t1$!!QH42nHKs5BP*r~5=$KA_7?Y_GQD}mWFIs%U(=bTPcNl=j1yB>o9TS^1gw-s z%OS|w`EcvPQwIz@%Y;xIY?(&2k?JC5fpTP%O2>#K@4y~JTrr2!L2O-V$hV%J=-bs5 zw+q%}bc(Hxq-9E#GIKzIfXVHP`bw(vYU#+6S=FYe|NX4~Rf-Ow z)N7ohVf{&b-U73JFR}8P1e{F!@fZs<2EDcpF8Ndhc18I^P*$ekMmWH@#|3$067c=~ zddC+|9++OJmFypd==dZk`xc*O4|(Z{L`Y*1C%pA_fJus5fVhEK>1d&~_g>|#byHkZ zYDtM)?H9f?voZ;w8O^hW;zj4ZXg{?jpMZg07nIMS&1T4B)6s)P;mKY#p3j^lOQydE zbnHZ%WusmGIn61T4-fFj>oc3y|6a!J_zZiJ?gRccp z7mzX3KQ#oKbKf)ZgBdP+M^K^CALz z06C@xBuMv|Lk=mZp+8v1#K$j*Ey?B{;;|^|X1X=X%z_}^<|1RSf523NXyH=Ndit9t z+wlG8yV$m!!e*s?-mx*fUlU3*Cq>kWhtc@E{DvQT8;URI zS9fj4DGnxp11U4WV5566ORpI~_cHCVy71aI89_LRfRsl=)vbca81Ncea8BwP2n77q=% ztWIblT@Fol@1jC+t=pAr2P}$U@~KC^SFf5A55H!2T=IG#;TP9CWB7m^Aiz`Cg%2@C zW=XDzGNqCA#=AM8bolDEd0gaA1baiwc355E8a@udgHB|y>mT8^&tn&J9zTst&LFTN zx&_&KxUkJXBXI8IYo9slI12|~+2FMkrJRtZATXvCcxwNZHz!PfbFjCzKhx-DEBbuE z+Um8ZRgTzqc_BDQ!L};eU=pSG0X@D)n8Gnpp{S3$PlgrA4SkHX!H9;7;de-!n^BOf zSOo{*=UJRgr4`ZFIOT1^>ub1DalmYXJs7(=vegsz62rD%kF&WmgxQ&%vE*8novngu zfn7ogkf$DTXA!pMdDK3dM_S&SxxPr>w&+&ZCgOCpYbLS*4KB#SqSEZAa`>eeBCglR zYF5k=C5lmYz_3FG(<7hVTRv`LV>$wPn?OV&J%(7y=~Fj!E}cvYGLJjurEA;R^3IIf zXH_4^y!)A^I?WI-3)Fd)4)~ zOvf3w(>poG~%(Zyh&R(%j z^20XMC^CCyqJPZ4O1O{$tq{bFg^`PP&Yk8M1gbBg$N*dVr^BsNOkM>=H(&`N*##S* zsIXbtaqiR82gy8&?6zx5Jbj=M@hCbfH87*$`c8{};B;8`cfVFA#!M!Q_hKEJFayA|Eaxz3X_gFdog173k)7Nk2{vG1; z!;T%tapo_(v>gA^(%hE80N1oA#th>?*h{13AtJicqur#L92s>&miIj8dM8@)0V8)x z-HelCg9EGsnmOil3@a^2V^tes%nJxl0zqvj3@%TejJsH~{S}&MDn-Bc(-yShP6Pqx zuJ0KhACc6sIft5&T{9@vn!O~F1<|m(_32P;E-ut#!j6Q3=dOSy37)RaRBDi@B{nYOV&VG<~A>zv)c`rrF4_b z-(f z73;}+B=V!18UPf2P8;!_W;?UE<-Tz+vqebB6BaRfo`y2^L31d_W`mfPcN-L9Ii4Pt zfPvwWHcTD?y+R$V;ziR7idHHxKLMwt`y4~;#N*r0Hxer+;XK?@+~`N@r_T7*Oiq0@ z4}&;@W{(?|<)BA$P!;CY%7?0bRKa7gffY0uKaLk)8WkGApXgz97u3`m9Gy%$iGtlT5;)jGkrbEaj*+$*wk< z{HLSRfuyzu{FyXbD2O`6OWt!44&me)^hQ)Cbz`#w{TV4r2UYO7)7*H2VvV zVJQo3enUofchzY70W+1OZKa)KxRruV992`XUDE@V^cXFHnC9lUx!%QK%Lnl}dFbxc zP-Eo_H%Bb4RiKv~J=DQ!cDTMBP}=2g<7?JXKinWiT{B5!;{Z40l8ao4Lc2J$Zt{h^ zHvc3c0#)-j0{F#Rtq0r?xm!rE!BD&)O&-g(Qtjo(p}$K*MvD3T#%lCftuIH}0xle( zphs?0S&y-hU$#|_ad1ysGj!_ECrPZ$mlPTdtWz<^!^v{kq@Gj#S@Za<85O@=#< zoL0jm;TeS)fRkNtxm+j|hv1vOqsAi>X1Kr-?r?UTg1lHVz!YInrI(mLhAy@@>{7!9 z2!6NKkJN}%fKW7sS6;QY@rLUSpjnmv&(YPu_)BQdZsD0Z899J>kodmNnRO5jNLU6< z=xaHrx3B-J0Ks}h_7VS)H5m4Qs0FBbL4UnFf$B#pCqCsT-D4`!I`CGiICYUyed&T!2#}N6ZTm5Nvu>cr-luE&bLgd65Iy41hM%cy6!8Mi9WBT=pkMJ&}Cw{Tb<1 zNu3ZpR9hcT>C&x@0wa3Ay;DTqj}!|MD7>zOhHs_pkbLc#Vz#Fd#V3 z^j@4T4Zn7+`A)n0tmKzHDfBo|X1IJSdSB=lC&GULYuA$shSnP}F>DpgOyu)>H-ZLE z`mN|_VLzmlj!Bpe3OGDH<$?925lM&g+%bI8Xzw7S5%85efW^NJ50<08NAyVprgr%u zV2qgEUG^S~lHIla0V`jZ>Q|Rs{7PfQ7>*#2n@t)e-qvXdlN41+;1PO!jaZdz@@6ww zX@o&*MlMOt`YxDG!tT0rtw>}hjOw<=9G4IxiAr)Us(8R!5B&M&TcvHi{T>@#X3&~8 znr5O(AQ)ZUvT>%;b^#f55uhFCYUz$g;x+_uNyd{%8M0Bcc`zA1WB~6=VPoC)AQ#wY z3f9=P-CV_f(20-80PxI*A~h#_Yb_weQ3dG5jgjVptzB~aL<$VyArej=*0PkOkjsAw zTmk5b-`FsyTV-IsZ(*hGR9?!z$)0!us|cZhJ46AFWIes0`9XL>3>5}6 z#8_k&X(oY1cHc>x`zj085A91d+#y@HD*yXXi7e$G}sA)30>)@%Xay>oSqhwX2wdChN- z#WoBu3y8ks1MC7mhsRSRhT0`p40q*^FiT_!KkbB%VCX}>-l3vk0Ku{zoba(ckD?9LZ zm!g9E^p)ZlQV`3mT5mzwKT(LCJg>7+nA%Y8nGFnES1>%ka3@^KMS2n79DdSd$JwL0 zqcnWRmz(AS{LlxbhFlatApqq^T|=8%!yg2Ax#f7zDjc4_yXnJMah=Z-p<^VQ^2r85 zIgpOL{Jh$PDU1cAPy(u{tn&n=r(_cZ1J)4F1I?-o?xkKR&JzsjvAQO>hsUKN=?&P$ zz#KY!DhX;RwS6O*P^zIW7O)F+B{XYlnYAlgAE7(eDgOa?v`rU#bbL&QhWDU z^fsa`5pqIj2D&e_KH5aUx$wL9lsgBV!ln6sexqyw#yM*_(AmxH4>>_4*D_AaE{O*hz!8e}PPS)n)ZGT^B!u$W@iWNJn7) zJ@AtJ7cQ82b_Zv&a!CT6%g9lD9a*IXur%aQJ-$@Gsl_ER525;}?>=^{q**8WReCZw zXpYK{`74Pd)-`y=FN3wYp&dy_=+1Q9TwZT1KF1m{c}4#k+ZCquCFc~0t2_TiJU}16 zfPJruMr@LzFH2(p9>u(LpD*w5@Unhl^l>_drD1{KZ*A81hi%EV_QvNRJD39-I(llH zW{awdlpI#IZ$ql9nyJeF$Bt6 z0u&%DH3nia*)~FxPmZGGG-)sYMT;~mAyaKYYNj8-0iU|q*by- z!j$M5}_MTzRI#sPZ)&s1Ci8Ho z2%X%pbN_&&1QU!uaFf&V)BuAx!hIQpUGkewfYPpSD9+}W!1n@%`lork{2sEJ+)U5r zJoH#g#o&jT_(pJ}aHI!^wl0BsW~9q6LIw*_@kL44<9$t9zQx7GI=J)=h8hKgGMCTQ zgUTKCXfUsN+sY15?uekWK2e7;+Jdbcj_5tQ^(AgA%w_Eh0O5G0GXL2Ijag!XnL0?m zn7a9yWsGFN0R{D)GMS8b+@>C?S+B|FbsA#b8qgcJomXt?k9LL8EjmT&B?q4ffKw6l7UQ@wr)mx0MCLa zXTfw`y#Ym_QvVbWx?gPov1rq$kktfI*e~8IYBj@o)x*O#M3*j)&$W9ii@HUr`2O;p z)tw({1J)r&M}9aicYXA%oML%Y7Oh<`(MY3u>HeZ4GdyxxXhWY`6fPFIcmrKR#vJ&z z7EXBq+kL%}*W{C~GSS0!Yf=@@i90*15SmkCZhX4jvw$9d1USU~jo1Qop zJ|GM8>w~#jX6q6giyU9YTSX6#WBgu`IK+?FBj)Y7hh1tB4WTYHJ>56+QkmI&`fma- zFAx_O?Q7?oNl0Ka3>iVeziYu!J80!U{4285I3Dch&bT^WKj+dp4fBViO%ElJgcvG8 znr5>bchci_yOm+_Z^Vez<7r6nVp#ZOt*1Rfp~*Ox0{WlEJX5UmZY#1EKmZyK3VBx%jAPkzA-A-o4JI4xf1 zfKZw?09Cb4%0PA@ly2xX5V>Kv)J%1c#l`k?^VYA%AHAEq_H3m~tD8y5ZlXK>BRumy zE9Ccm<+X&H)kNjild&=4pKCL(@BpTq04SR!9Z+~ zA%CBWs64B6nUy14i?iAAE%++eMh(yMxoSnk{jM7rUMhI{Q}s7zJ;+h_0mb^^6UNjI z8bKUi3{l64ngs`R)8j1b;$lt-LqS6gj4?EujoEHdYD<236h8gYEVREHwypDrgh$o2 z$)6VMu)^HL#zo(Osz2p~Rvvyj!;jk>`9#Lmxo+AHLHRhV=z9V7q%HPQb1t|q+r zE{~9A6eYwLI4>S*4j_yq{79xcuiQ8|J}P3QkhNcE%XZ{<$pSC8plkrI&txO#w;AXh zkj%A`QZj%L-V$I3p{v)vL0IEGHhn$`HZgkP32KrpZGiF__=1Jg>L?>$$VE|qRgL=e% zE`aI+VT-n}GKeRffe4GlWihoe)1TAPk6`%=G;|IfDA~u;^QU9Bw%;BP;SoZr)3Rfw zv@X0aBmzC04k`>w9!LQ3Da&fD-~U-=la*H1 zis87~g-uDEnHJp9`mRW~&XM@r;)#b|3m&}?(Th){@T;9D7woXXIJLf*s03~4`5f`$ z{2c^1?dxaO9M4(w#qJv%7M>+F?TUINOS=!Zqmv($(A)phF?{iuM0%I|7kM4|^EdrE z#}^9hRg1;bG=a0Qjp(Q`2y<6In0ZceP&Qy>Ro}y!g$U_Jwo#H5VQ7VBaz{f6Uk^9t z13pjN!$5e9woRpJGNk1dPYJL-0!RkPmS!WoivEFR2iC#RRii(HiBdS$Dg#TWco(n=mD(&!2Ew*Nvy~E` zk)b29n_D0c8u#3hEFfsrWCYy5;5C3G;0Ox*eH2So0qGOpk_c1cbE#=c4|@r#y<_fr zM|L!l<~0ZAv7a;6b?$-hP^T6wWxNgjr>L(~DqkIgTi2OGCJAGmG<;O95v)_=`zO}f z&o*q?liX@s0#v%vbpv<-uGo1d=m3)WqZe1BZzf=;@$!&F_XYV1F!@NjomfpkqSP`7 zaQWmLN=&$7M3*mnf}CVo2Mzr}%1|fy>yGC(JW&Ygh=@vqW!55b^()Cjb#p=L0WYM~ zl9OfY51>v)HhUl`1$Nz$GLoY$j37o-13VU;jI4V~FD#N<%2H4Br1ZH%?LRCkMb0wV zeK}xfM2|!K02q`GnlF2h)`W8a!z1s^jV1h{tui4A3b&WLW-(Cf2g&zM)qE10qchBA zo>M{2JW94(w}-rUc(l*m+?j#=j3r(ZA5hL&gO#i!bQ$oequStx0!4=D|8Z-XUqvF; zIC+pW-p@LENv9zerL`EX!Rxf;Wc&qW1JWbKczfXQU@%aQH*je65OuqbU9(@4Z`bfg zStFUw2#YqJb-rp+7%Ki8EsPxaLp5U9(?|7Fw;x@M^l4{uD_PHmXV3YEhZBfgQ=Mzu zd4yh89XqM+!v>pdqt~)N9w(#ZCA(53j`0s|7j0HH6BW2V6P6e_zNk3B1`OnrcdRqV zz964hztIU_4-{LM4g?0e>-TGkP)S)gU)}$lP9VJ|ZbOGIxJ)frhGyk((Zv}+ksle?89+%igEJ(VVrcCRi%OiZLZFZbipn|f9muk34) zOnv8Y$9oA2Z@I|1cdwBMpJ1T9INmgkV8U@6yZpyoEa~G(rBdIaCo)|Az|C~meB#_fd^5q{SrZYB(>P*3e4o675iQP0 zP$V{ga3DALFr&zC7Sob5`K`uU@;K^-zgDTE2aWr}wdAHPfx_m}FJy%Oz1~;9>rA)F zog_2n1R=x~=RWux%}VEfx*qvOeAIn%@S0zzHFQrxv-d_V?Dt$3J|+2LzuaQ;Xl=us zLX_Hp4S(|m>0;#4DF`?iO{r9tazIy~IJ&}V1!MKG<~w8m3yDMoq;dMw+?1=Y5*xjoEB&`_p&Cs~#Z=&0 z6!l&~A@kD9dblDBoWQ43qo6`#cctv|18~u_Gp;VQ=0Z@WrQw2e4o8(%#mmB}kSAxcLH=^$lx+Dpqj~g? zL-aWuAfV&?PR1vf=n`tmj8KB57_Rt=)p-!va>KW13<;cr-zUAd*_IuK#UXT(oLRd^ z$rEeZAHq0G6PQeqaPnGE{bLiNP=7UVp^Z_Emvy6}8z*%jxdw&UxQL3EOlLgJd+!oI zR+So)51g@)pOYG2|Mm5`LnFJId0AnaN=HkNhiVS!E6#Ru#yKeG8smEPAF*C~3&;`%%rA4BLFP1envnLd%?3oQXQZb<2wk&)*v_3cB9W}-(UG0%e z(8XFG)>e1XH3yod}Vx#JyvD(#+aQDd~c z3Fxe_G!57dmW$a-W{@oPt}@Qd`mNRt0f!ltCQcg#0`e4&tm=*iCFh>dn}3`=2Q~I1 zoykL8s4%)l0MxM#jO#k4Ke@( z!HgXr;vks3l?XNfE2xj=de5yxQ5BI#fOcz^fai@6tA7sLq$dlhQ+NvCfc=HVe zuDSUl&_xF;#TF@vy~i@xfbXc@-t|XvP#A}=W|u>&V=|CYY|PVsNpT}WJi#WO6mXBj z5~(Tsesxd~kL8Jdp#Q4KHDmM-%(U_+CP40hk4x2|@^i7YIAe@wGYLrv-(o6PGl283 zbDQkIs1Q)NqZDhZ7=$RtN{_rJ^5Z04rb!COaZz!_-fnEnGcQ7d_q+PfhI)6-gOJ@0 zTEhH=vNGg!gQRQ~t_?pSiJj98DS0bU`sMCWhMkcQwT;YpNxmNg;BFGEQVPuaGDXUF z4fICc*UF?S|Bsl@<1G=`{=JJ>aY}n@B0-gwTav-r{Goo|Azmwd;pM`P_xObTi^S$M z1|H-#X@}X?0=tlDGlboov8r5g8FiO!t5wvni<4^8i}dC>u6)&)hZl>N(v|*g<@ppX zG1=7aUtBqM4@zJA;W8Dj%Rlkr~N)NEwMM_9}+E;(|cJ=T#x<*0}%XckrtWkoYuy7s#&L43xJxqv_lL{sS2;_xc z8KMgH7vBZYEp8#<8x*4}GF9mhY@Ru7>L_0&rXn3psPYilj!q65Odq2G@Ws6hKmp*WiNC&Gp|V*Nu}fI;Df1ILD$f{jXJPO67^{xb3$|; zUi{3v`uY3cu2K)0zsB5HyQ`m+JvIY1O)-n-0D+&6Nma8sh%B#P=nb1j~LcW6`v6 zA(F{bzxB{u6@N%(FDu1misM+IdmzrcZLKw<@`B>c3sQ*PDDhM^9FrW~rug3HWrF#q zw&rcxSno#VZnAGut%W^z)%4={y!Rh2x(gH+*KPhib>;x=&THT=Ok%|3D3n%L=gELq zKIbQ*?oeuD%*8@jk39{kdk`z6B%p%T{sLFlg-x+w6_d2%7W((X-GOjVHFQKKtVJ-D zJ+YK#z-EqGyd4g%jZ)6K1{Rl&97OhKap154aWB+gQH8y9f6mG*$;%`EIX?9`g&rXB zx4PjOf)WCPb{gu=O~FOwkn4f$P$k$F+D|oSud$f`aU7p~LWU$38II%sEd_a%&Z6xv zfwX!c&wYluPL=HkNPRT@#VIre><*&G)1eOe0`PLkz+8wW;Si+VkyNI?$_-0HU>9weh;b$J7gqUoJP}t z{59lkP%`AO8z*lO@;P@b*5N1!#ma+i8k{{D-R2`UCOQ6oUHrEXf7SXRRTP8DQawGPWJVYWgo|X0g<8aBsjXmXi+V2=mySLGD#I3P*e(#Ca>W= zTYgRUdE6FVC{4(hZAJt(WUW}LF0S-*OW=)A|1|BLeA8RNRZ3SDtvy$J?WunG^~%F4 zp%gOM@ig6*gw$}6qTIO4bLd&vkI*lSmot&X_>?&}tC_h5`>0vXpssU8p%!*#mlir$qcio7EyFZ&1@X z;&JsWGoEfXfuk_Ma_kf7k)ZdE`5}n?+K1LvU4BRT!h?E209<8PPErS4m!G+~8F*$U z7{hdcF*QZJ%2vkoqy}j6g2k9y1|dyl_za|}2RN4$)FR$;advuK1}XK2|Q#pZU<7{`snu?^J&z*cp;!sY3h>tZ%HLumr{h$NZeeG zk~Gd>0DTjq@pQqPKfl>bTi~C&Zj6HUMIPUFL zrn!ETZYu`<4PW=5EIQS2J_m6MXCN!X+5!9dhC45svR^sbuA5zcY8im1l0n80kc~`5 z2M>wKO#z#n!%nNO25J0HV^KEy`KDvC5{>FE@c%_N`hBS5s6CB(Sjzu9R zHeT_J4Ok1nhz&;su<`BzZ)EV2pWr_&C5}MrI!cW$0=x z<`FK;Z}4Z!w6}t435bmf`5q7=C)&H!!oICVTgyh05T1TnCg*_EV1~~6H#^whr$8}w z883j0V7ak$KxbB0X3Z04GH9_b?iUl@x20MLPEz%8>ygoiyd=0;JA0u3`t}{si(2ZF zVU#wdO-Z$wf?g>CHd-4oy0+icR3lG2r(PI&7-AUZv^J=5D&lxPnI`{%lNhV?|suXTxgt(Jq_KdsP3{1 z&}JDL`8u`?aa?Hp-##!9)ND#>AO3BJT9^IpF?s9(S2Ja6wNNCIO^u~)t2Vm@`GG^T zDn-#@xrR&pY~2Ba&W3VEIVLx}$BP8!;NINB0#$Zwg|@Vt9vs!9piNhd4FPc_qKrE` zUBIm0E~zOX64mdUB@U-GsL<}^Wc-M<3`XAc{R}hC9A8ZX?I$zMI388m`l%nqh^t7- z@j|&Pd^(X_|ogfA}@bUvZJaq`+|jsI$R~ zPE>7w9|I4(k-Vl2PnG(hNIL?37z-S#+|PCfIP;1PcGa$#d;)Va3v|^jabW}GVWY6FxPEQLo*nG>M9rZme#<^r${%+@PT{#s5}|h` zOnDvJN8Ig!!bfKd*U??X^|(8!UCl>*dI zOusk&RuC}*DxXIQr5cYhUEKO1R;w*BB2$zC7_xivm2pE~4uV#ab5u_ORI%KCXCC7v zi6tUlfQ3os+Lk;S>`{P=$o3}PP<|M_;@lkwP~yC*xyc;VRP&wR86yHWT>QP=`nqx7 zBHzbVePPmcDDdl3YF)_At1yB;G}{p8I~$LNN&2NkUuHMV@WCp;38Kb>9FX`E=z+f1 z(e^*Tjb%sxzuCGygXeRq%0Vmeif1^kXlH)t%f{DP+=kdX!`uFNvlr3$yS3VVdCN-i zp7u!r;QL${fR0HW!ww!+eNK*Oz_lgd7*%pQHlR-+Sly}>3t_}bWCYdJF_jR$c8M~? z-0OCJ5lz_C&%YS7&w4vjog>@dm_cc+O!{~7&ApR6d{rXOE27&K@#p0~CkD3ALjB5G zs+eIsjLru50NU;TWI%A${8O4JZvcO!9JRDHl($S(*qh^Ki)}OM#ROr}vX;q(7H6ah z4dCk=rxgt{8?M)MGA-_%hD4*A_)KDKyjklU-T~15ivjimkIT_22f4lE8}$m53+_U2 z*wJiS`Ls?54G0~1tc&cFfR0Pwxn@ZKld?SDnwHj zk)X^J-_5<;zi|NjHjhEeKW_P3+-jQjBroW9$5Pb38rC__klD^aF7tVK*9Z&Zi}w*h z;p+{l1j^iS+ahA!u!LWW&joJ=iLF^N)#+L%;@YVt03}m9^9W@${^Urv%s@cWqX2NVVUutAiSvOulgYa1>#hKP9{KJ`g zvcA~*m2>37ZbxI@jBeCx`;*FgN2>6s6LC;Tl$|9@L6Z*Hbk13)ArwKNaxjHkP;CDa zdZ4zQ{j!dV-oSv-6>K+nm}pgnG{YI5TN<>;z3q9cHrVK`$7~l>L9Iva3R}Xp8^MzR z!oM33-ekc_6GcwbrI3J~kVE*3*|nPK$>M^(w~)3Rq<9h z|8IPI6A3FAXQA%CLpem(n>A7v6%{FSbxn*ebmIh9BTIm8Pd&Krh;x4dp=PXlT z@`Q+RFF64yVC9&mA1T-$Yy+Y0{pD%lL(+* zC2hzRu-xiKhU0@C@tr;N4U&Ej4kYxA=#aFnF?MpT~)FL~pl`HdUxbftf^nCG?%3xZt{RY^ZtBh(k^f?&swW6$!R_t-k zS;jI8(fcJ_AJ|RGJmF;v?ixD@P&xRsFG}rW+$z@U;GaP3 ztkZ}q#_ughu>&Qwmd=9<_^SNA{4iOD&Oc(<(i5@xSh@2!j4w*v65Wj9&8Op-Z(>2z zM$RJsJ`5ChDD6r=?1xykhXf#o{QoGYysWn?CM_@eOg; zXsso76n!NZgQ8f9&CfeZQNObarjxdx`t)`+V}8iesVXFQyy!yuV=f$5j?okQ$9e6g6gc0O9_#6of!LjF=A0!3 z&hZuuk_Fz8{1vRslBaQTSveN;I~S3F*Es77{xz-EMPN$3;WUcw^UBJBNa9y2x6#lG zj?}WZ^r{GQH+~Ef!xPeLYP1*eGVak_aL8W&ul+M1ox?Xx6R=ga!9^FKi|O%<1Y~9yZ@MRI7 z1r?qoGfRHw2VapvzsYwe}{v}5J+C&G?WOC;F(Hh zZxi|F(PJ@-HPk^lS5VsqK8nbF2A$wxfqT@U_0S8Wv7{fa|50DOVXkUE*UG$;k7pI} zyG+af{fxI_pjzc<;9P<0ft8MQV#2813p!MuLW>C^vQ0SG=8rK@_a)NP-ahwZl#Um@ z12!IBuA0i#o8Y&cvo(nHgi(Goqrlj;`rFf^JDncZrC)AyWz*7U_W9r&*SSEoL6LD< zV}L&}3?~}~Ek~S00ta2Etu2+m2wQh;z{2%C#>;Mb0hq7)sJJFtmayBb?2a7ncKL~L zpG8HW2Qb$YI8UOe z)Mw~J^^nzztp7ROhxNd_R4u99<=LeitJfuy0|+D+tT3+gZ?@TJu3By%0uE%SCqyi0 z)vpJKSaO47d|0IJloU%r5=SK(#k-=aI*=3gy|Tu=Bw?>szmaKyNA7b)3$)_L$$D7o z=|W>z(>1_ZHP)jsedUJD_h`{bhe;9N1c5NQ(&i$s=KwR(zbgAntd=mY>{wXcS(7QW z(4YP78%LZq!KFu){`9Yr0hU<#hngAXjHQ2|a&o!|bEAO}_EWhjuR{aACE;v`Tr-*S zi&zE7SBGYWi*#DLG6;4s^7|Xk9~YtusAglr(EF*0^&-f5ssGG_Y{u8G^1$&`%4*_Z zk8Oai_$D!@#%C<;Y5W$KHfK-{*x3n}55U@jB6@H-)0K2>Dx6%MT-}99zfrN2;F2=c zz?=mo9@Q4a3dD_DK!A1soE11c>O6JTy#N^`v)1YMF}YE47wUp>v4w}G;pd@0D&uq^ zTPi!FzFi3xS*&lZ{n{(IOXmmD{PbRh!_BF^YwN!wQAE^>S*qb9v=>{y-I^gkCKqo> z`8aG5jbxHU3nRXnWTc~bh15t z&`cNTa_reJ!V+R;#(FYyeVF6m>N7ov`UO$1OdTsb2)fnezS}RV=RZ$_>1&fbKn*+n zY9Pnw6V`AGNi)&;bl)E`}>3K+|P$a&=^`rrqxL z7RqLEU0#JyZ4pG#uB^E2k($IA8~(GVJ;qO4P$omiT z>24x)pSy7h)rZ}MvBt=Y9(*nL&EC!6{h@b@K19@VktEe9&oi6X$ZWD5zxzEPO{l*S zA2_ycA?eU|YLQLH29;Vw|K@opQ$W7Aq08O&)ei7-xs!p5~5}d9EKhnpe!+EI)UdcVE;xZ zT0Spy^Nv(P#l2Z|B2%&*HpQ@&oM0T4-gH4X)e^~?4*GXkCzJv~e0srWIxozDVb&#? zc7)nX+J;fq*J)4_nEg6j6`^mhdnosLi<@=$lHL5|F{Z;Z$^@1eDVb5+(wk>@`h?sl z2|zefFIJBQiUM39g((n(z*m&gSPJa!m*F#RIz$v0#2$p~tCp^k5K1gu$ru&p* zC7VG>+M)dm1O~NDfkgsrbaq{Pw|2GQC4lfWlO&oN&qZEG36Wv%6IJ|HZXZ ztPHf}hc1U6S(G;Tk+yKz`_Xs>z$R976P^7B&ei)p`~%b?mGrr+AoZfDD~!?ejU!K{71Zu^xN1N|~UBd9z! zTdfWi6WQbhFQEnW$BvB7;MY zsXs`DAw_;>zuZzLIw)(_N^m4R(1Szq$oI5`-)C-2jChdYlh5!I9vT~QSqtA|ibCjk z1GX*~Jw<^d#1(wc1v%!iDlRxhFne!Bug15BqK5zeF?(8*l&hJSMx_8V>J>rPwIXXi zR#56FC?EVaW?n?!;tm2`*n^y;M;nb9^^{E0z8|KRQ7grYs1Uo=`uxfptpjDy|7i|4-sU>j3?&NZ4&)AU&wpJ?xCr83b&ZZJ2UYP`Ik5@ca zsIw(mq>zkEMtmINc4LI96%8@PkVsXGJI)QxJu(dlLJ>V^;gtN`Xm6 z0-My(5lK5tK=DD>*V27dfPipa6Ko&;ZC+WnsX0tg_4^4*L@>L8MH1M)F+M0w8~z3b zi>G0(#Gha6)spV2%wLvUS@Z+^A#Qy1S_?7A#iB61V2d*Lzgby)H>o6vsECK1Y_|?r z1T~MOk`bVd#EHuS8bQwPnlJ}VncZtIiSpt3Jw_UJcd1cvEOwnDF!g7bl>U|b<&g3wjwJ|z|Cyw-@x-s6ZLAYyiNyyY?gQMoolLkYvB%l+iQDz#I+^8%mw=uYQgpVz z2kx&X_hHhHP{koqS*u+k$f7eD#K6gEsXCJMbv->V3yJF>CsF4VYp@}uw3Jn1;L-5 zLW}Z}{Rv`}XD4*QMCq8Xtyd#E(QP_B^)+@3m?p7uS_jwekSUYSH275ms;$xm7^~7g z4QL2ak(fa#9PG=lBM*&o9`xHcCL~I=hLCpe!zyMG2Ur1>A7)86MAF9*h4cXr!X%-a3>1%&0BTS;@L4kFRvkG-b?1^BV3|$E~=qy&2*+ z?KsT(zf$jEU#SwRtLhGL9t|@_-6WQ!+=+>pI2*?h>|Prii`Lar#wtqdjM`S6OgZW& zK@FRQVFh=7d2^`WM^plTBt1klateoZbMQ+@x3@P-L1}qccAeg99slnMfPy~ETXKbN_uBFqrCtM)g@u||xO;jt z{B)~y2#%(Pv+C3N=Z5PoBvU2;@M(8ArkM_upEOdmSYjG2%a|NNDnM$>yra1oJ=yAl z8%N74C<(`d)XZdGTJl;N0rOvI%Z=&$GxN|E{#0R-q!7BrzL&M-&z`%f*4NJSNi3&e6ZQH*-9o|Y&9jjfY*T3*TvI@8pvjyF(F z-Pb$Kc@VmJl*Bh1`;f20zGZP5Yn_}Ui5c~Le$b0=T*COl#m7WbxC%xw7W zzp@Mg>s{_E8-1~OdC+>!@Uw42Gb?_mjj$yQtYz&9ss6-;hY6&NmD&dfMgq|&avmi$ z9d(jwP#Bi0wx(_)nElp)zvKsgre-cyUzXXCg|ORf0$eQ0b6XoMmwX~gLb?0?j(Xr* zIi>wl?BTRGFoLz52o-;TDE(26>SRMhUa6a`5j19pv1F_US&)eILOJDigP6sipaQS({hC%{!aZ#*-9uAo>&Ah^G2`8p&k?-I}g6ZBp}xzw)n8&y=wOD8ijW zbP}=Wwh9&zCtQw8I!u~g94#};yF)n_{>r?Y?hEP?5o?5`Lf5hVqYqGQJzsOLG(#qc zP$;iRl;m(W{dUw_jil{W3hEt1yw+Cg2ZgD`#CG(VYAV!Te4_V5gcCZTXBP&!j`d(G`v55?BQK`#`GkV!)c}Sp8Q7yb~#k?qzy@I?>1( zQH<9rVMoW`r^0Q6IZZsId+k{%0Eia&1iJb5-|tcZ$>79TgD-u7g8VaH(=MD+s$dt& zC(TOIwMpOL7PXQ;I#p5ug~e$$$(F&!*64S^p$hd@T+8PDbx52{Ug{F)HlWZjpK%I5 zEY#dLLY)ar;2eDW@(9d-<1TMi0qHgSW*_ZsNXN?bq4q%neZjhzyWRH+IRl9DF|KFn zIeX8)CNz{5xSx**@BDzJ5}VCv6qFE!r(cM&hRgsN;}_+BvcX{N=4@k0?h1@hxtAg# zacfDes-DM+$+IRxHSOm6KM2v9M>lQqN2dVFz&N}VANzHvoBlaUDN$)9TO?6oU%`9 z@TZqBnHyXQVbPaINCOJTWL@sAfZnYR15|Gdu7{f@tgBH16uR*iywOp?c~=yC`Kg#H z1sDajeOFZ_eqn7E+RuHa@$sB#p*TnZ%+@|o-J^!vC=Fcv$+pjd^W{N-A+3p0ch;?y z5|4#9xPVt$4O^0n+*?Sc%Y4=XexoqO-`pF?#HJz?o_N*iE-1Vrk7#!mKx~+U5H;~5 zLCz)hDr@Icot7Wwn~5ir^&P@F5+qMS1}A>{CDrG+O))h&QDyYdwwy*Gh^R z+!V7lW1l?LSsCOpsasqGlhEb2t1=Que(OWcI5f+S7=$F^v}*mGv81o7UH0 z7B&HXxOj2jUe&JPas zYGZFB&nVrHt3)SLR<;ejX0W~T!ng;weG~wYW#j#%mf5vDh5NiIS3w=GmNB@bY$Y$3 zoB_ewubhFXO*gJyxT-hZO5@gJF*ChiN z#?E^L(Qidu$#fB+qXizuwg) zA}0#O*4q=Jo3ovDeGAiAdaJW8am73W$TEYG4MKH-<6y^Nh25!V?aC1}zKv3y-&%a^ zE$=E&qWlKXaO0Z@t7Fhl(cs&IeTxmm)$Xwn=6QcCq&vF{z(>3fi!64+d?l2B9c|K> z=?^<%NjjPfy6_P=kXX>IWTVPe}|7%+lOtqD=qgH=1-KJumf#1U8KQi$wd&LJ-~+jXjoAOC$>km!wyt;g%< zbY;)plYmF(fe85JNbQ&7r*=gx`;iCvm70DS1a*S{I6&0k&oKpj8Tz#zw02H&Nq zNym{lxUg?KUQJi@F-%(0=I!he+Z!WL@~9L&r}wcT?A21Gy00%NFb?@qAxMdW%VYj^ zZnx9y&}S}g{npT#)3gIe^uu@lx1)lp=Je zE;n?Uyxx9Do-@Zdyg0l^dw7GdOU)_$SlxazPji9Gn~l5PhZ;Gl5|zi9sQkIP(HT~a z1(9GMRph`d|0GeWtKsWXiD&p#SMOS62$hGgNDvy6dG(c6Aq{B--fdkO zb5Ck!2FNpIm2kDY>v(%ryB@~~zARHc>~gUbWqjwGir*|VJ-&*ySmi2xyu!-@SYtG| zk*aBfJTThRP(BFjBm$&Y^6o7>H&LOKPEH)M0T|Q{pFWrA+;I&6(I4Rna4}#^m%LbE zq4;qR0U(Juvh7*lI4ST&ToYR4Awx>4L3|JZolU{ARPEtm(Aa!zpuK+veTFf$#hG*1 zSof3``?&&B+f!%d(=4anT?+LV2707h08>%Sk+5UXhn?iNp~NMIkJ^Wz*Y(s3i#DG{$2J4ph{-9rn$bgC<4^#an6{3oto&^>RUC41#st zA3`eSkXj=~6-ITqz-J5hZlZjLE`3VPXDa=>&}JKE zeCYe=AfF?;W`aN*9b%av0j0RI0~Y2Syu9;u`$1gy+T|M$-n*}WHUaJUwxn$rhO6r8 z1YbWQ&Bg{(wGmAoL^9lhN&ktXsR7DqaSp?uPOJr9c6B+IzkY2e7}%*M(cXs$p^Oh2 z7u#IzcZ*fl!ke3ft$2~Q;fqd9Wyc8u_kQDg%bu=NbvD;1%*%&hA2bsm$D7qE*Kd&@ zqT%T&BaC$X50e${&8fpi?4#DtM;w%@h|VoYv!pO6jk^<68qHtV1=sZi2qq`B8QnLp zz`E$ubzsIX0fFCF-a!-}Zin!Az&6?NIZ}O=q)ZA`5Y-tASRw)#fC2h`VfxOf9&^-` zJ^)fo5L+5Rg&G-;w%+nXyO)^`YX$QTu~K!j9^vMO`Vjp9?YF%>auI_b$k7up?WR@t zrD#^=kEiIJ_R79@80fbCtTF2k>^jdL9BF4EIr6-am;GD^L-v&+6M(7Hm`u*`qQ8;U z{4HS^ppSrdeDI1tfR@^8X`(aYQV9jG#!?4+zNuybQ-*+T=||qz>h+1QdbO|?or|C|`_^|oI==D-z9-CJb7 zbN5q@{aH~&7o~o0!7nAUy1)GGT0Z)jzHjaEPwQo~Q=3Pt7Q7~te~Q4+WbPR14E zUXc;!pR$*M`P<7Em~NM4r4*?!$z|BKw1Z+SWhIuc2uv->#+{K~pQQZh1Ctb(nV)zB ztZYwRlA1T`qT}#~RxJrl%UWAt5`?Q7 z!Y*)eOakU}DdKd$x*LUkbb6Z33Nyizu@%T85Y!5NK;y8tztPj~K`MPQ`jx!v>|E61 zPWEIoi#9rFYsO__fce7Q6*e)=Q|b#I^u*k|aorR!ffwul)CN|!PC`^Q*93c+9}hxz z!}NM2Q!JykdUetQCG_Zlly$|;Xq^}>a>fbdH5 z_yDd$Tqo^ZEJLith#+Yo8xZ?Q!YF`lj3R4AMGj}y(Y4abf0b7Rzh;;lJlgV{wDAhW z4&~x<+qw<2qzG2Y)*a&`xuK}Au)tDY(7=QSM3!{dt+$$Wh>ip+Fd3W4#ebV$RpXPd zz9JnRE!(*iuE}BG4otHjng5mCBTIGt)GFSWJNvaeAuZij{Vz!v8AC_tc6QqLS436I zQJa-~6yZH_kMBKaJ#0neF7E4)=~Qw9b})((HcZb+HC-DBvS-9>ayDkt02{h81_#Ke zJ6G|KZ%HOWXC+Eh!jhtb=(yW9N!N+s;kgtm|2dQXDko(BBg)_!c(J`bJ+{c@Pb$6D zRsG_`RTc!7?KMxR6+EsUKIDTC^V}sGqhIyFHZTKM(8XE2oDUO*`Z-h##k_K)O@kY8 zqz_HN)>gB!FfBLv7OYhdgn645aYhYy~F$c{O%_~+-W~Qr^ydB}hVDFALIV7WAx2feE zA@r^1$~_Pa~djl373sh`BteB zrews=Qr`Qr$RQ&~YRc4Arob9D{MR1p^%L(Gk)+NE@O8={JnjqOIy__K0O)L3!xA2E z+GY}qt`feKCt+IODmZ#WI`4rk?u{RN8OgQzShzSOS!t#>0WeFK zo4d8o^r`43+U7Ur+z!PA4wPn*iD_H^%!dU)B4AFYt;AEK&7?ohkN6v8D5XxrTig7v zu#XlxXqdU(*hNKE5ljXv7Gad}8OJ@@V=s1R>Z-UBxxh(b{q1(e%QuG6w5SG~`JGX# z-k;z3JhYLZh^>+j;lqCfKOy2eh+|s!k;8QpGL1Tmsh5Z%^S(OKu2b*U9ds~vVyu9J zEp|xzkmzO&vJWxAd0JO|5|c%I^f+BE9zIQbN5(7`LM%usoouO;MRd`51LBax2HbWe zHUKIqPk%I1BMy0mAy0-6J)F(Pu7(OD_u{vdMMVYKfC(Y(vqu1)a>%;5ORI91pAVbg z#NUzP-cOw0{aaUJEh|Amf?4zZsy3CmP@5lEw7|v{+a^hdi;l8}g;yl!F6RLcB_uHOmBo;iQQ5mPE!ae;2I{vmhW0}EBk@BMBzYWlfD zh1Pd$JL2<5j6GAz3f-95cWJi1aKkm&T;x&8Npy=0AlY45w&@0kQva|ldicZ6!FIB* z8OXhnwig?!D~AuxuP?r%$)bx1*N6J|jSU4S_+>{2wIn02AZDvnYwY)kGkgVc(npFr z0%40K=tyqmnOJ}Xr(t`|$Kby3(H3+Tun-4szfLXBMh#{MZUF-hvYl~z^P!J&g=udW zPnvynMFRqRMon;0Y55 zwwANksE@QDsDNUDEq#*5(7<49Id9CGmZH%F8WG`JWig~UgMTZa{yUU~b_Fxl4tS^n z*T~CSjIbNF=ceB>(?La@7K3FLznL_}c>^`0(uc{8TaLveK_B}%urFV(kE}VwTN)mo z)cGe_7AO6X{pR(%u60s{f*kQ=qDX(bDS8UyUWZqefi(SH=!k z!}22h$Ldx{qyRRPcSdecnprUYt#)kf0LOapy3RD^>>>YCRkaz`kQL&oQ?_qkxNkCO z<$O&0aY4FJcWf|}KR*kdY)cyrHtvkKtqrboH|1+Fi2z0BB2(&TDMDL~nowl?EqS~b z%yiU$Q60V8)b8OQ40*F|dP6iYueUwRA_)E<`t0!q*KEZfvC!U`j%7h%TnN8E@tP1N z90}qOi_3KRkKRmGs3TZGZ||1F@wW)8&lC?TRNJCCmhYQm!Z9NRiF-s1{N%-3P}3e} z9fv$dj5)oamk&&@%EOc)H7i&Qs$L$SEO<{`^Tz*8K47Go(b4w%po-e=iE0Du@V8`L zPLvNGBZK^`7u`|@G8R;NeyaZe9?ez+w611;5(Gz?;Mf%L!Aabh6L;m+)1Sbr-}%hTo3pD~+N$R^NUJ`A`$ zsxwS9&TF!D?+oy=#q_K9ZWr<6y+~zV64oQuM0BG|Z?J7<+f-pB4e=^w`Cv>)_n_Zw zSe`x8HtVUz>{C=?uzNjQJ(K)0*%lc>Ga_yYX7%G(p(+St%b0=ezF!|?Fzq1-Uvz3g z_z+Uj;Rtc#9>^P~$q>B;TA?NMu%X6)Hyc#$mCc^g{11owW2)5J3+Gi%?$`9?1ofW@ z3_#BE)+k_5)z2_X^KRz{Pp^5;xw~o%ZlN?6W@v+yv)unNfML|AJhuLXZju=yWYJ5^ zh}Q3=1kLY<6%6)&u82hZ>z~kDq3SsT7U>Uui9DKz4?bpPqSFuXz8Yvj{x0RjrNuzn zZOC86?b#>3kH0g&j`(C8s}J=qVBg3aD8+k?v>?9vZR_u_{Z&=`W| z4T%D@8qAb3$SdA!J0+?-%6tGmV;Ox}M1}NW{S)mAU7EtK{q1Z(lUW40DvZP7!35n2 zUp`kW0;jZM#D+1`HDoC-G(v~=Kgjx!u68hIXCA2^2PM#AXWHO?g2;8DdnM|n*V-YU8!x9goeG=cLe zojW*F@EDt3yrvaqNf6?lMS#a#i$s5~H>ajz$&;=Tev*%TXCqkl^O)|uiIsk#yd74u zfqgdcrph%qSKe(3cqi_`MK{uom+HGXhR{|FO?rd;VntkpLMk0bV)=@MzxO>B`G$yC zjX7aU7Qsi6y^(|Ib^z4(q7E3K|M60zD!FslMZ4$WFdO}rJaM#>=G{BZKcJlEkGn(m zhXTQ^4X81%?TW^fc&K0J?|bR-^c#zgE8_~oFdkym0IqDBP>0A&C4D3p80Uy@TTc{x zlH{U&{6u!JuabE-G>6VUh3^s*0&v}sb0`!MfxPD(Ivpw<%qdvgRaAF_04zQp25K>| z*|luw^(vLB*v^dLj*!h~fao~j;2!s8&0lsZ~aj^4rs7=YsuQu?* z6IC^4Gtj-<%1_U28+RcYtaiY&@9RY0MtjX@Dwk=((R8p@jT+xd8&h^2814&m z1UX1SZQcPUXoUjQrU+!eSHWG$QFHu<)z5vd8oqtmCgs333ND@#g=9kKs8kt=m398yqF`O;pNcB9pQ*OM#71%@n?6SkljXT;o;2!dMgnHRc-K@Q(!lJ!p| zRV;A`tQ{E+t|35tx;y86V>V!i%_|9|vOQ6X>~iYr?302!%ahp1Xb`T)LUjh>h;@Nd zHpC1v85i+X@fWM=84+IKi>yM;I`=8fj@Nj4mnqcZPp_W4`X3Gw@R59X31W6oX4qhF zGep#Ab+U$Y^i69$TN!s5_+cJEE~fbnh6L`1!VueB_>x;ghLA?0Nl-9R4UxJZ0O64I zOeXuT1eXC(ihW*$`vVYv-s`V665p7?F*Pq4%_u&NjUI`~;h#=cr?t>d>yX;-$^};y z{JS9iHSGcYI^Use{bEL)t1O$l7bx|nV^mjL6pUn#-)gI-K^YPz3||iFSRbt$aims3 z^ytFPAb9TX-Npw_VRRAvu1EzO!$i|iYo!%!ZS55YsafE>!uRw@MQb4M*MhE!Kt8&^48s$%K3cGp6EnDF=f?v zIUr({%}%^dZ$2hw>m72gpia(xE%!lyG;my(Vscopg@*ksAdQe<2K`N*%*pGL!KwxT zJxsOgPxMq)LOm4*%9}TKAV6wc{nd3hx^yu2=bnlfBwEK=?F4~tI4Nx~|v zOH;#(cz>w;w1(6i$pIWy)!ig~P306}~S|UxQTe^|nf5}P)!WjC1 z!SZwPAfyAf__RNLzZW<~A_yu-oaT~ny}Bur3b0apcSCs+u!7MfX9ctwtonC%_%#Tq z6Y_Z|%D023kXTdfzNz%|C(~+W69P2CwM1u4aey2<4;Jib*E6m%b%SJ3i!Sa*oNttT zqbuJz5M?c&1IZA*iM_HQe9znad0uLNT;*xe`v2CP*TXUmsEgi{?-}z!U52~TEJP~V z0cQ_(JK`^whMH%){&$KbBvz=a0r#Q}3(3StFCLGzqp>iK%Rh8S)dlQe*y|iniAy^h zN|L6xy6O_4_NDx+?gL>_A~Mo5!~`T)tjuOwg>^yD_PvA(6D~j->%!OGn+1jh!qNO# zhKMxOJKlLqhgm#V(76z8;iMGd8$t<7ZHhNBMl*xx1!>%%a>w7;xv7?jo;mGS^K%3>s}%uq+9aC1M0J2L`U8i5d!@5?uVtVGo5)y)ZakZA=R@$xpC zo-9WGsGh-K+J>K0!+OZHMYfN~a`P&)KcJ-&%;Ta$Y^2b9`?kgEURr1RFxrywnVf%@ zb8f9dd= z!^4F#h+ol{u3P2!9I3IA?i0%ypuDiKNPM2;SCz{_&GlL!H*!)xbR>8`-I$rH&df7D zr+TS~684s#((V-S5)!al9te|Wg>9SpE z>HTW{o%9*@`PNHU;YXwLB*1_Z;Be-@kT`AFsITp)?Hl>HJH+{I3LP)MyZ% zfsx|99X>+#%MaeT!nmh4Dl6eY(%qgiP0@8#DG*m($iN1(Y$#NHrPmtki2t)mq>Drb z4WfC64dWx+q_nTfTa%3yiTG#C*WEY`Y}@j&VTQ0rdwNTCvg_RT<>q>KXpRdKkv~b! zl}fl%L_jn7jkiYr_#N?=W?xk`LWnjB(EK=~S(eHT(0jx|ND3$}2~gskfIm`xOy>s2 z1Xcd{DYSfL44G4Z!DQBV#I&YjOR!>N)C-Jke~6jA;GklH6J@I97-H+3W^KZOcXJlP z>vgC%23bI>!ZH=K+f`f48wdAWF2|o}O4`Wp$thPCWmk@9I8TW$2wZ2)yC2n~YV$05 zMuC9Qqo#RyT86vOWA^$GN;!=R;|w(UI)7@knP~89ei8%rZBXfa$nXy55B)lO_VoKG zK8*f%sFAGa@Zn&`15V(TR`}IAyHdRvPqlwApZ?lh^lrDz(LF>dB1c!yx}kFwUpyfI zxNEjiSvVbpg=UQY<-^aQ= z^0^U!C8WE5`GN;#k+hGx*TJz6{E=Ouj!BB5K;sMtYUpPVBL4%;A7`_Q(~nR==Q5$U z<)yS*%8tVe4J2cZ<5VUDOy}};u5p0Wu~spTdsANAIA0h^wN}9^7OYImJXTl~qv+YB zKnw-HSArF-66=C-_s>K*0!olJzx=a<8GO^O7dEOIUj%3o7<)VSAYu{oNoR-5^Yl&b zn`yz*ybGA+)CN~y zsr^PML@x~_xiqBeAcb!XxAWT*aK%uQxVZ^K&5QX{b9$L!`I%Ini{A+0!2LxrvA*sC zr(EanXty029y*`FFgj4_8K@;G(u<|cd6Wn-U9aP~HJ+}1cgHKWTtwLD0 z2xKOYfB|5?qdJL>mABcQtp#w{wcl1_;;=`3JgG6RI1X>u=E==qs%PtBv$sEOC^wf9 z2u&t_Em_U=%a*nRR1Wtf_-21Wms4;g2)iHyD#KZ%M^e%;vXr|MDHarj#hBn_nZREv zGnV<0xEx<_7EogeD8sk!yRc|(^jIn$$dRKC0*K7R(1)|2?!mX^j3pT)9@dyUWJgw+D!sgCj49|~13CDo1IS4qVnEnPL&Kh1anV>U1LyGBxJ2Ojsk z){Ok1g$V&SB17?D4!DSG8mwgS^^X7RB;0X+$;#}Cw+XM+uyhRLVmgN`Y|SzH=8DIg z-v-ib4++)1!-r!;n9p<^9mKYz5bfPeS3ZBwJ@uvRxKL4l3x+Ue!-=mjKS>&SC;ARq z&0?wXwjr>W$C+U{R0TzrQ9ab!my zXY{6YjUuqO?n&UNnqw?iGIG#mv@fAzX3uRI77C314HmydojhX>QZEhrFF_`Bo6J?K zU0mxd$aIe7O;Nq$-p^eC7$~MQQe>9VHCIGsJr20r3*2fO-DN(LX0aIacVN6|5lww4eF12C?rGSrv-$- zE*`$Gla#CIVEcXF)u4qB;BN8@lOVLs@iMv5Iuny%uw@BB5GlCa?OBQ%`p7OK zsJDsZ_p%uG-VjyIntc*Kr!SH%EX8G^hiG5d)$`|fpRkC~`M6@onW=lOZ0|;Iqmqpy zcVF{PT}Jkx9?ZoSP&ic=X4@wkn~WR)AuI8Y{yY|(TZLrO*Q!irfl5!08rESnNe!g_ zMDGiTyvK@Y+L|^|P~?=gB;Hm?f1-LbHN|CrQMvjI%=LKF@9sPAsV?w88?|o1PqsB; zoLH9JW@*=uR2-*|=uM1ID+kuai}yf|PKEJ(jrHY|!L}VT7(E;r(OO_Zj<%^&VkYAx z9*>}S5aJSRB$BLEt+Rki)va+tqZ#XY_Xm~LFGQj_z*GjyO}tFQ z(bi1if!*-L$%Nz78NrEgsuA7`jTQ5KOXf^+t9j-)CDtjhPtMf1k+O8G%9dHAxw}>S z@Xa6Qs3g2~>9ma_AM<`<{3UsW1h1ZX=>cbXf~W14ex=z}Dy1BSNPWDdyYjfQ8{}*{ zZQhjL8nhJ^Btlhc_sli_Iu((CJ7>R;%pY+`mJ`3_WC-ikPf1vH`4v5=Qo=HeB&flR zts>WTfzoYcv(!FMo84_aZ+EZ8%++YjC2qJjtnB4QsM*HK77q)Xn`AvNK!2AK%Dzj% z2dC7Xc-m{ z=TdHzq-j>N*(iE!UX&9;njbsJkEuix7u?vaqNn3~B7D3`cJ*sOvtc{}1(UsuI_~(i zNVFvbC&JP#>%KQ3!JJ$5?#EMAXf+O$OU$jB+j4t@D^6(Y9nytp8mpVN;zyqMdJ_AZg&uX2o})heBsF|uV$CS#-H zwiw&35zwhhJUJzFgpr;kj`H0SCn00I?9fV!m8hU+!;Z#T)E&HodA_W;C_dFHis|U| zF04%UQA~x}A{KEX8Fvxa0y^4N!$Q{DddiwvR7heAvDcqX3FK^smjM|HD$YKSl2dIX zSxMx``rh4*>Ev0@=zGFa|7?r_?1-`oIr8MqZ7d^Gtq#Ye&zy49iV#VXfa_{-A zHL<*&c2yNGR*N>cmJFb1rw2;`&L1_G8AoXUbqx8lVL}k=HG%Ush8q}Z?LYwzIGgUP z)=#{m=r!!_Y**A#}c8JM-lNZWc>)=?&) z^z>#jfu)MuqFVztJ{A#Z7Ya>spkX8GL|m4Y(9Gn7(;>A31{)?}V>fL2`J4y1qim-Ygis3NXnw>`z#AZV=<5C~DsM&+V!Dt`vgD zwaF0JP**-a)M8Y9dC#qI@bH-&)9TP?Xr)^x&!s=HKbe5l)Z4cJ0XZ77ITgCdV78j4 z&Z_s<12oBqdtq*$Y%2y*XVJYV=l&D{o$)=!g@=4SRXk`ZcnwIYCXN zovG;J42%}ll=I@TEu>Acu&SL$&U^I09 ztUAC5)V~c0nQlWew6KpkjX1Q$^r_MB#AQ>m84)2?L-tMBVhvtri;CtS>u#85w{J&5 zIPQr%4Z_Tc^@Eu^Qfrrx5Y3=SS_;=@I#I3pI~B3Tkn*Wl|{tuo%h-!tK)> z>b(Vk1S-dH^Y3W&f(eyEUj7jfuy84pk{mW=#XAw!BdI|I#y;l!(wOF}v!geOlZIn4 zzX50+)Fh4}aqU)yN)huL<9rFMESN|2*UCr!%wP)->Me5AWI~G54Y9?WKsR$}; zub2-ztXcyQhzF{YQ7JIt0=BEp!Zo;iW_ZxHhz{(>INx|y7LT4=i6CsL#Xpxq&{k%+ z#UM1*!RbUS7OMV{Q!W}bG-5y)Ow*SF{zehr%&?QQds05%NIODKD-dRjKY)f#pl=dv zh8=SF&QRKxeKwS^(lW#Qe;$H7RP>IX;9n~lC$v%78!qm0`5jh*0vwG@pc7=A(1!5qbspWrIk zuVqf_@}rau%1}M-2uS6#?bn|YBi0_~sQeiv4WX*L6(YQ4X?O`$+6m2sYV8Sges2Wj;K7vq-zUI?H}1@Y}4-J1yJN@P#c;MTXYE{hc6&h1h) zJ;0V30UI##ukp?b)@i=1pNMJ-L20+_+MZ|sE0oII%F-YqyLyq!3m{KdAj$3k2^~Oq z&%E%Wt7L$kB`IT-PsJ7h)=kEZ;BK~rpDqSRsO7v z>Z|3vA@k2W3v&wWMR}@p+97MzSiqoOnS?FrI+QFFzoz6V?DXLv!pu z?jbX@DEBnlBh&$l=R?Wu`lJrdPHyZurB(_+uDDD3~2R+!IRr8LeLS<&Zi zl@)*tdTzJPhKk#Fq)c<0yf#wbsLv*2>qjyQ+zj1Qp}~*&UWRvcY#P&r#^cf(*QN*F zc(}Lz;wpI7$nWUu(8#O}O<(ozf6s|ZpkPKORYfHY7hxN`PPh?~`KjnszY@<}$KV2@ zHW!tu1~byoICetZv@Ob+Cv>X1^a{gSe#I~eOK^(cwn_*UxTwg3>zUwR{s~kCX5w}r zasT~cas%%#{))Qnaq0dfenM>PT#J94v*X$Ax_fg*YrR~3AOPlmV^b`jYM@)*H5I+Q z00H11x&>wP{hhHe%U7Y-7x%;T(!1Li=UM(cQDw=n9Q~;rL)JT>8u@Lg?R*4Fc zrl_)yFiNX4dxx7jriV&TY*^9YB%glS)^)Q_kykGFutJ$7`q-Vfo3LkDyL(egBy#nd zyQ)0ijVs=L&|9};xve+83%antdtrOOT-?NcbjU!X zbt;=y;6Kr>9BvZ#`Y@BOJBFn5wnD6~YSWt?GTBz~))o(>^aahv<}3K1&!z*4C??}j z@^Nci@4fz5N=JvDi@_qx9sLsje6q9BA?sYy2rdOeqz=XC*Xz!{j+G6SWUU6{qs_S} zFg)%*yGlHFL(Dm5sL2#b-jr;$kO=Qlus>4vnO~tKXy}IxLV=P1Z6l+b+(4^J5*y-j z10L>n&Pe$_@uIwfjVfMl`?66!_$A(*#}Og*Y5MPj<~qh7xl=Ypw>dG}FtC9Kc>a7H zNf_=|uoEJdDP`86;=~oGOl z)ILc>+@n;*2&d3x0xekyITt*S8!1F|?jXQ2v8R`Ol6M46msMW_$-<=`q+;d}$bVX* z0im-xM(ymG`k{cN81FZXZ~PDxg`bTa4C3EyvD|eHprzhW6p_5~S>zlOKQ6 zqJZhOz79K7_GUJ*9DhUZKo7y5KZ)Pr|JwG~MW_vCiz@B3d-4UmaQRk=0Ix6l`QJj5 z`V(O(QQ!^AM;R_sZX(k!E^of+p?0601-ArhW>O(uE1@r*Gcs6u*sblOO*^$%kKY6x=k57z?ox5frh>MIQO;?JO%X#e=$Xm2Fb@ z7Vkd8ySm9S-@y$Vc}i!#%8bT5ccN#QZ`M(6LmWG=12bG1bhLM;VZnr=zq&^YfOx9|hDu$V3PR|GH&gSr&#cE1L3@ zOnd1!jnx+`UDchlF*oYl(jaBK6g+Rkbl+C;rLh0+k52CpSoVsB8{u<6&X#e0Sh;R* z)b+5yg2ybFSU8snGs1M9sX9o8p_F{(xKh?*!#l4{U(W=_2Ht>C-cps{%`w=iw%QCJ z)~A&2o(N~sD4Qsx1Nc|JLCYpZ2LKJL`SBA2c)EXxBbALU0W8;@XbY|Oq{oZ-BM)+V zo66z!iGdBWuSlY?x{5f4=fLFc;8X3;blI%{ElV`?hH;s86Z@tMGQ@{LXZ3#W7qXg~ zm3xYxl&%zgFoS+3Dkk zJR>|2sFvgM!Un@VteuHryI1YJZc#DyY4!HbL<25;= zBn@`tpyMMcAR{S6xbU52OD=?h$EHsQ$=m}r{r9^NlR;vF&-{bLw#C*|*#DN9`XJYwhXom@9It&t z^JZgY@FR2a#4(|t9gZsA5C3&EsLp#Sq7-J*>c>a-0~wYhp~rP#t7FyHp8IqwvgW^F z85_B93`dXRabC3ZXI0MyzJh0hu?`jhPFDq3ZV6Z4NmWG$dOgvK>*?O(N#={MCKd~RDd!`zgdyxGJRacz2(+>~jI=yF$g zaBn6NmgWP|q-1dNNZWEl0j#Ql{5zjpC1Cb_VF!D&$LU_UR~Qw`YI_k--5~3$hn3wUn`)CXPBVo+n^o4_ zl;^$%_Z4L@clPmE?MAkP%b6niWwWZ#<(#jQ?Ph&hcnaW)F74cKSP=wZMR4{z_I(u; z`|LS5G1?2K(eFf4>7)swbNEMG(0gb$RiFbvoB(;)1In=ADx7q?4LZ|vp2*#t3lq1e zVl#RTCmq2JKW@}Y*{AGblJxEYWbvhy@88$L2S>c6DNGt%yvC!SgYqMo=mM?hKBAb5 zPXSu|gOZKr9J3U-q>DsSi0`XV;Ea;DLI{Y*0%I9`A#sG|=oDa&eeOvQ9HRR zETHQEH!ijzq_ytYpTNYJXrEf+MO8mPFS`uaW$AmQ%A7etJL%g5d?JCIZlE0u;=S)Alr+%PPWc_$ULwIY$XOH3`I(6s0!vFD7!oA_E#JdixFA4vIL zo080S0eC^#wSrIZd_;t^6>YY}pcuD%^9}^4O?@5CdLDkvOTDZEEjZ2=rSG;x5-A)l zq_~hUCs>w1>Y&~x1A0bCI}dzQ@|?u8$g^Vn7txtunvBI+?iU>#F}HFy^8-RAj?Qbl zB-oj_pbMt)aO+f7>J>*GXyeUj53Cb|Vo7Unn|8;m`}$$Wf!TIKem|j?f3)<6o;jN^ zLH+{qpU$EvF-336@|iPf`F}MT(OS4yTT*o*HIA+D-VcsWXj>>}X5R8kGmbqBR3Tw=@D z7-q(#NGG&5!W=SLaAKa;{G}STIFsf^@}e3Y@6)>^Au+Lkg6VQ$S3GsagbM*viC+3Z zQ3_t;#s;Pa^*;=s&@f4scn8kV6qc-6zQfkC_-e3d#1m1dfNQ<yk z{UJD))}Jhk*ptz`SrPzU6#3~dR4+2mqnusNhh$j<@0H|}xtX)zJ`owdOLswnXKj~B zbWD2FkWV+865IGal03yzJ|+c$rKoc4oEDFp8os2scYwCj+5el|Nwae61TSNb`|mK! zI8+AQ8CzU4pDQ<*jd=*td9*E9=aby4QUl&I$27^U#s^w zd45Bu^j_pR!mZz7Q!zGUG%oRo1OK?VopniDj3Yn6xSc25`a}5-gL`64net=Mtm_y& z>rae7U?Ga)%`_<2>m3B4`Vzz+(%cBR2pP9A69v zcX@vQqnRHDjWBKi%5N^h(jg&Btc;19j`!1_bdD2Ge^tJV$HXbm(N-7c);ET~OGy(h z1;|WRx`c(+%1{4_!YY3ub2t*ZqtGGPoAoOi?DP`eR^={>xGV~Wi-rq}`4ed3i$tZM zNJ7bL;#oZr3N$rKMt~Qa&4ICSJ{cFdw~{RudSy~o{f0JVL)-YY(&+bsdvcW5xF2R7 zv&O)n`4`4Y+k6HNTlX%vehGU-!Hg&5?D%~;R8)fVK$8>GWurSF%=-WOzQQAC7gMuE z9G4-kM{z2`wDyzbF6L4Z>a!YGEKedgmQB$iOW+$hs#O(`6*RnYOZIg@HmG+t&x^Nx zb+3)gvm^s9pV8~QR|FGs5*`>D&RQl3g){2rwRj$&Lmt(a%I;%}!i5T--#Y`4p2Vc4 z0m{ZvY`c=~d2{TeMHnj1j{))Y5`X;2%L0U!Jwb3*wliG4oW8k8aF852Mp@}qNjK}w{h@t#8? ze>(5=-OM&8^kC7?*5@L=)Lf%d7Coj6$5;B`_JHe|Bm!rF?WOI3A?qS@2z}&I;%ZjV zlq;)MzPg7T%LdT9c^82|tec;dTDfRxh{wY7%U&6D@`j+CWq~_2js@z)b&Q_*ns3(u z@*`tL6!_;Civ0lzNmDe~q2n!?HgA8Ij4iH93B9-Ip}>VhxO=gi1nE{D-a^HTu*1MQ zT(4<+2ypLC1;@v|?^OSKKD@1h!h__SjNEP9=fFYjq1<_CbldjL_+hzZ->s{i!@NZ{ z`u1kP08>e_84Hh)@FM?JGl!oF*lh2*nK^=fou{<2sJe^O4!27W82<*trROHmB4q>G zk9RIkt4Y;+C!I8O_m|oW-@aZ{YiWLF`G!~?R>si}2X2+nBnvkaAfCIg;hnwgLdx^=G#ECMsilg&cUsh}fH?v%-&swp&T_a+i-rY2H;zz8ra_ z0qs-hi67LS3LPO+y&>fuC?}@tJ{BLlJHbR^uru73h%EV~!iDqbNFUac{#_mx7haB< z3m=5|&?JPoGV$|q{zScUpowl)` zA$D_<-ilpXl6m$?KE8s^)P+&Ky+~SK2~N;ZQrA(VGC+Ky61mr?C@zQ~8rWtF0{aq{ z4rZQXqJDsc?|fbY87H;&+degU^Y)tX5f@hs{@t$WOysx7a`6i?;wfroA<>`7!_uf4 zzQslDuSx8rb8`E# z-)p)@I}Jabe8=gwE9K#hAa>zb4XGaf^K5!Ase$6=e`pT{2R~8NxbA8-hezG{M%$v)lqim#1g;h{7)?l2EF8jg z^v!>LW0~Q{6&0yBjL>xUzt@{!&E#Gf;yAP4N&YY>FsT@nQr3RMxs3gyR9YDN3<>w3 z&AY>R4uR-W?d|KDiN6XQR$gQ^6ud)+8$Tz@TB~U8V;|0c=o;zRln^#umX^|Q#S_{C zcou#$-HjG`-4o*JYj$a-y$R9B{yglj^VyK&hWxPXKVq+^?as|r-r(R z`q)NK-b3dsZLqCq2%8k+Sv68x%o6XRb?uG!`-8 zl+^{oPaVm2lvbMWGh)EqDc_bAdtaTYP=d!`*M3hIdxw23ICs%lrks`20STwAj0{>X z-|{Kp7p|x>ww3ukq!k5geRwHd8N{bAKc-EH!C5ZB-IG?w$MERJ+oT8(77&u=4KKpg zjYU9#W(zHLzx^Z4H)6Y8QI{qC1C!BT-&8(ea*9l2r+kT%@eIR?TEpXEdC%j1FO;|g@PxIvsfwPCQOYRrtcLM|;~ZFt^chmIsChFp za3iaUB1zE4qer?)Z4ZWF-HjhE)12D2775Rzx@1BQl?i7->~Ko}*G3ko`E^)cb;=4%so>XwVZE{zHu7_zdc>4k(nzrZOK%d01-e7)cM-fw z*Yi-fa6|BP6G*p(OnXFm8jJL$vllojoG0giANVKD%&fvIsojz~oKfoB=5OmU?`%r~ znYzSDmCUsCEH^Nc+~6w4rJ7SfMWGpbwH3_{nnjF|4T}sEArm7Ro@}dbQ35@#PSzq+ zuB_@n5-Pi1<^n?gFHwi0%gQZjfI%V>ztX&qQ(Mj3xgd8Yy>w~{tu^pjDP$od_W~`p zN4yuxAseXp4`HPPGvSg@f3fzdV-@6{SUS3!`Euv}=kJX`VELICmwZ5c`Z*VF?mPu}naI7)vB8-><|%1V z;9K>^8WeYq_3i}}QTau`pbpzSC;YuN0fAE(_%F`Fnp=S9r@0G><2f^KNv?W834q-$ zxcZkR0Ar(Funuz?T}l80gSYoz3SpQ>g5+C&2Ju{_1yth;n5%z_kLce-QScDLnZ=o`S!^yh4?TBaD{2 zHF;8;bih}*V~xWCMB&r|#0JrS`PeImt|YBU+34ieA=#k|B|#(HyhO1_e9tQ?b~gDU zk<;Kaiai~3bq#wC0J>N~tfPQC8Mdc^f|PaeKE6Uqf0)NHp9_os3Hs6^$6ca*qh>PY zd#)*}SJjjI-`3S2p@MhAt(NwTZS&V=KU6*nqR>ieqK$H$6v}C_SKXG-xOS#S9MvJh zJqkGUW9m~rNTEg^MMA2X=VDCyx=*UV8)+g%{_D(7;zgEk>kW05Cr&OhrFqDuvK%4U zK}oNPDf)3{s|NX#tNK%BGx8BOTX(=11H7Dh&mTfxGv-(mPbzU9LZItfR?tvtukA|t z7%sz!oyr*1G>5>DTs1I>7H13Gv>lcjuD29b(83w=3QtAK@E2|l4D3ZmLD)3XFth9c zY~XBq@6KJql*LbmEuH!)&zeL+xxdXg*+b9xx0n2=@_zR+avzCSxCQ@cFJ@Z?$@KE2 zq5%QcR=_oWB5Py&Qh$W?xyB472X0whY(dmj5`Mlk$|Nbk06~yuHM`I$!_fsiQgpVLmJA@<*|jkUfXWDY{4~71{A)60vj61V?sfkG5D^ zRzu;n@l44NFX7cZ8|hoU8Ct~?0XLHZa$Dw0=Fp+iD>EiDiGsX2E`5vPgQeP%%M*$F z>Q?yZz?L)__o@njVz6ojQcUa+kj7JQS4?2lgc1>%J85QXt;f7gr)H?OM=4|!-9#h3 zBw~aY5`ndzt3K6md9irM6^EYzTi=Y;gB*O<1#hz6#JSo)mBJ@s64QRQy@dYyU3P** zU)C=c;ukCoB4Tqu4=XpT_*FK5ScJiBckHS4CNv8`lxK~KMlqiN*8$W4q7Se(dl{iY zt}q$0aiIY7Fvt(no|^6>{w^$tK7W{#&H9DnF#?mu2Bu)YS!;=))7F4WihQ;VhwL1x`})&J z%*nA!u4RV|n*Q_P9PIM>y#uz_*eu;BG~5{Ozw&sz_vC>7Gd9@&;6^!gDn>&MKp%+C zA4-V&eR-Km=XPIWyXeX+CjTrcf2Rwg>mV$Cz}EZ(`mPRGo>c@Dt2shLL!-FDK}cPH zl)@%%Vxxh?ue;%E)e*ZwVcM9;6|*XH^&CKnbS&C`#UzL7vFT4N0asXv6-13{*o>j}()tGQU3BsmB`f+Y#|myG z^=RzlZnTn;?|x|cQeyHT;fbAzHF(cO(b^=8z8QJyD|RHmV{tPfd2MVBtWc{aO!zdr zWN2l!Dp@DtMYTj+{pV{3%W0u$@Z5k3l8gG*cZLQ+uShUVC=mW33nbG(S*j~lX)oTCu~%Fi5=OE ztoc8?=U=`wM*VoRt4t#e@JKbp38AKHE~Giuis)CQjlX(Vh>|h3MfF z;N5n9ZbV5Q19vcX+F=+`=oi#ib8Gau7GKgkM)S_{36)pfGkQi)u^&RvhoNlmTNks) zD_HjSNH|g<=iotany2gAm;kNEYm=`C%mPEf(`KGZ_MvJP0ocOgj=gZ&8CSPm>H<; z?`th7h+wuSbfwA@M#*j&!{UxmNebz&rYOqs6w&yN3GjNY&v5+~u+@QKeISy@`)FH= zq27$9PY#aR3#_qJ7MgYqM7f*FK{7YG^ELl)z_OdlyKNdm51ryJkVx4lVy7K{*tKfD zB_icxX@xp<5N4JB^!lflpwkJj$^rqG+tg@JE-!rz#4ZN8KALw0QXX*qo zG21A`5wQN%KfJeQUJ{JjYAGRIe< zM6mz>cwhEalP`8kaP$E|fhliI93`Oic%6rW5m=r%8xIYqBTrqUC6j>z(ck*e? z{?W{Yhu-gS(MFY&w^*H=`;a_u0^(M&bxIycl>MOmuiQW1mxuU}7fds5Z;C5h_~8gs zQq9Y`{+-_?DX7VcXGEY4rYXZ_LV23Dip3Gf$PD?0gR8gp#YRy?s_yFWN!YMbGs+R1 zd?s>wY5!Y;&$9D)S&7d(bDQ-Ie@#2k`S4@0i7K)3adOLOEL{?PUc$Hz)$5UU`-F_I z2G6>x7Wy_VJSMU2Yr(E8kY>c=u_V~%YmSuM_1oi=r<$H5p))y zYe^YbTza}{2ky`k4WcYaQ?niOj3|hQ;FcBhFCmK&m6XV=@Xx9%FxwrnbE`*QT4=fq1LL)Eiy)`liCP=7Exs)Jiw8hK>5+L&OsjMUp%^%n4!9d5S`8}b)DY*c`vbc0YP=h zd|49|{S{iogpMNEaX7+%n_iG)FB;-RQ2nB}K6KSnrroZufa?d&DM-6(BaMb2NFr3} z<#D%G=C>N1!h3$A2*N4A$HXdvuZtB|X}uAm8TbK3E1`*7q4CxQqvKX?|FDB_*d-Zn z5i~hJ=g=SX^q~w#S=}B(1VsewH%YQF^KEo=o+k(f@HLu)Hdwu@&1*F|>zJ&Y^4@3` z_KkLoZzwA-l{N)zzqft!NayWt@Xcc2~nA9aYR?q zrHNgt!*Mw@YCb$=j~R07--5>o;Qzj9Q(v+8j<|Qq>}@+wK=KrOR<`k{gQTi;>6<;T zL~rjwIX$AS^j|O$Uex2Q903H1p*a)f#!bk@KgpxYZR{H~{ahMu5%;q`Yft@|IrF28 zgT-lgb^<7@j4%38))%WpELpU{1!h;(UI6l^x7gpi&O(vroD1r0o32od$b~asg?3kH zK4w*FvqF4F*%ox33fke@Xx8867gJ&0qO62%o;t7+N`mX&{pSbShi__xQ~h49_V9kj zWb=Jm2Ic0nL*JjO#Y-yS^C7Qww_|ZRAXp;N=~NTQYrRW97njb3hnoM&cXN9`YUAal;Q`-r z9cnLeGh}69shOA?kSb4@@eLLA61hu zdwGl?s$2s0M#u(&#CAY1jLKn5h1&xay+#3gXH>nC$e7*`RCmF<$14bSp(VcYfae0? zN82uV`x`Qt0EO!37eiSZ%yJN7I4m%Msbe!vmAW(SJFr8&J4_XsAU#S~q-a5xuXww9 zdt-@8H6$1hF zJp!#ob3vK#s3szq9t*B1wq)KZrx*5}8IQ1U zV&t#RrHoS$IaWQb7l_W0jAiKXrtX{4f&uy9Iv z=(^$J*?M92lhwwl+vocYp$G)2fpZ>kp;J*=V!5w>6hMFOs&JA+;Plz8eY7c6`9*Sp zf6pG-TM*t5IBq%m%IaKi9jW+EmQFaVm7WKtgzMoRZlS=0(|}ODf|#%`Aw)rAhp%>o z@W*ct3|u$73%NZ5mG8s-Mn2Bm1(|)xb13v+RKOk0!eAU6*liA={tW$V ztd5WyeXm~T-Cji^Bwbd)c+29FMdg#cIMN&0>JiU_Y%5;)pC*?6|Jg9d736}e0Jvzt z-a-DyzjZ+h7hx%>nnkMA-vHn}jBG}u;uQY#4(s@8;76BRkihNDn}GaG6DcUwTLcj6 ztFrc{{8yCIRwY;m)1vyP9sCf>m5|#dYwZEtai?bm?pt=4(DTg~vS&CnI6lB_EKc2z zA^{F^-NQNi`==hiO38grsBABUAw8h*Ml=Pt((3*hVZZU+3<-F(4P6?!NQhL7k2zy_mjmUqBXumxa~NbN z`o(eLX8hYh^N55^-_{a*3XHBW>$$Nfv*KKu+2D78&o@64LPI2rPo-4VXo}Z}g?eQI z7r(ER&cmnMk_+}kgH33)`J;M!S#r1{eGA1>GH6PE3YzXl1cLbNF>VCe4_Jj5fOppF z-z2w5Oikx&4H=B`C*BS&gV)(b2@#B^3479@uHvs^K0DE>*_MavsMs#HvFLk{ChZM& z%HQn7QtHJBNb%X&G*|4;!AF(E!mJ5h zr}}SAof^9~3H=HM_=+mN8+Fe>qj(fB zDPC1&WAI}HdEzeYP~JAI1*!T-P1W6)V5b~~?dM5}rYkkXqguhfBYqeqM!;QE_QiZL2{?Xs0~QK;W_ z<4LQnpI{wj9%P39coE*Hl=0^T(4p9f8EM&wg#=OIdH?MHrAP~KM!MHDe7o$IlE8;t zHS8jSAzVu4J#DWO=>R`gw)~q`&cE0TKQx3ed`6z+6eCv2GPeHi?!lTH4WtX{P^K3Q zR>N?NL9J}=oWUckIG8F@TV0|WYzn(^venoVG@5Ugv4CZqE-eXN^qoap8k_4RqRCCG z)ixNm^wR+i^Lp&cZd5a?#aa5Tfj(BxnhHK+}HrZFUE?FE|6uCT|b`pQz=l} z-!@SR`b{|Q^kIkzbGCTGBhsK`s4Rd8=nzEWW*Vd9)Ch&4dD^ zp~P1e+?!f-(F2y9Hoe&rGIEyXZ2Q`dZ$4__#Zlie)>)!EHt9E;%GG+j$7OtC;OJJ}*pBj484Kz_-Z)|oI; zKOUY8`MgJ}o3yP{@6MZ)|6m+Ad;q=l;f?XaL3Hc7Y~LmSN%gXd%2LwyVU<7 z?12RYknq47I$>mvKVC#gJP|t#>*I4{<9z^5cU|YJp)N@nQwwdXu3tyxI^KAW2AH@y z)LOj<(UO7en`T5IO}NrNyS9ar?w3QBFwU^&Hg{pEHchIC*j%i^y7*xV=qv19sd?0Y zD%Y%bnKi7tEv{&j!_QS#q}esw+ou>19!o zLz>NmB&)ta2654CH7I{zl8LKtK#s|g^(%Bq2`tgY%JdrkTzdHx?7c>*A^>Y2uQP|h ziB(oo8dc%{Y7N6z3PlCv81%ee1FDNj5FWyZu8(LcVyK}A=n z-J0HkO70qoYCMq#zNzcO9Lq4=XI^yL24+W1xn+NJfu?mV(x&SOZIOGK5cE#NF1rsc zebxLMMjwY5TaiSUB8127_!zhq(*C53RtztH%0e}&V@&Gt1BZAk$7 zdM$g(MqHvEKg3;Sik0Q=PPgWtsikB5R=F-H+^P=EXZZB3l2aXPq&wt5)#H=LaV3xt zdueeM{lzFf%-tWp{e)vtiQHbQ@rDubb@T)Kn%z2`nezjCiCMvS$508O_0w2_dZj^8 z^eztC!mLC2o{uph0sP0CWJ(ME&eHe^#+e3Xv*XaeI1cBKm>LmO%Cudu&er|6sw{4* zH(w6FwCu7U1UEZn&_yA=%0-$H!(@VDQ{)C&0M>TCzZ)3S7HS-NCQ8Yp^m@9=-`r@p zPP5@r?q$MJa@!%6jy(qE|6vqQ*&Vq4ZEaG zYf1XO@_w~dZ_s7oXUg$EwJmcynHOmFi+YgX)$O1jiu*-~q{J#()rmLGsn1q*aSt^s zq19tE%zN+D{g(>;Hlvh>waqaQ!m4fz^v`9haW%q)Ur_^QdXU3G9_aTY^yQ7w_&4XP zf2vaym+SSOG|7`DFB2Pc^^H1&Vk#bMARA4O_N)IMmG4)oV=f@o05$xYWH(rZSDeZ| zqQz)#!2F2;%%X(3MzMV#&ED1nrDg9tIbnf42Mlo`-QGurzWdahJ%&AT2@`YeiMH0$ zcQ*~uT~gZ`{EAD66o@j*uMtB6|17<`C=)Ni!$Uy(Qv%E8JvPy#|5BLJt1tWGCk?jY zF^@%;%=S4xFzdk#36uy|g26fUq;EQ#tA8FO)UKb7dP%=q3HA<7MWr`+PfA_s=qHPc zorhJ%TqW*8ohl!CwFR8Cn&K@=_46W6<9JmgkZc`8;_9sMWu3%<&TWy-JGr`TH$<{O z@oH$Afau_9eolqc#xRC39465(+w@H5ATL7!UuRow1e^#>5d9Nrtn)_IW-los2S6UHFObA#i?= z^n*)|y+}MS_V#|VMV&kp9!$4^=iE#=F9x5#Qn+FQMj&|Dvg=CL2PA|3>b1Nv#?p&T z{bCM1sBt`KyTBRZJRCGxzE&}QdE2WAx~D_&6F9B&7xI}YQ`G8{>h_o0(&7Y&F%Ya~ zU`aDn-D$nta;Fq`IKa%HhtYd87Edx|-4=xLimyy!!_&P&H*cuj{Dtm3oTmU-;MDOH zj|&BJ7ZYdZUT~d=Kw!jde9L~C%xbzCJGi&!4Opi7GU;AWpDHKAVXl!C&-9lc|7Bxw zD)fMa9=&?DvXp2f?R6_nBxz-{V3fpN!)yCdVK~+A=OQlMUe-;WKTp(kX#467+87a& zrzC4uW+x;VzkDn2se$UEK{(RII9Zs>XD-3UYnRGUlOWf@;_ z=$0#=IJvN|J~g17T;8fO4);g~?E;KZ2Wf4i+Cmr~UEhcxs<{^!O2Er$sK^YqM~BCw zZZa}Yg%Gl|eC=-lshE*6N^z;En+s_1c_e_w(B>dnc(f2Vm6P|T_K?fDs38Y4Al$Bmz z>v3K(`lIdt!PohSR|Zqo?O5vs@@qpe0l*zq&3;FGIQ&}{$}#)yJG)Pt3$F-VXo|0sh^S$sEGo5RL-4;y-vhEF$dXYUhkVXXjFHP}N+ zuOp74Lu4`wJZ4bSF)iFRX;D2w7dvYOAzW*Q0l0!|ipu@3EKDhH==Fx3`fkCXg8jh zDUN$7%}!O}#b3d$gE%ndO40j_S}5RmBTr7&W8nqYTmE&AY8J2Y+x%~JTwXS_0T!Pf zko(f-q4rWa=^qJh`V=sxGQ4?j4RBdt(UPgfo2kx43CJ98_w!%TbT5n_+)n|xNBWu& z6nh09xHmuq&4)mCu_{QWV9X&?(2Li&I6B_OVw0%coo3 zT5LO-49X3RO+s6_t5)gFv_ z$73FRFvt3?oL`aGOJyFf;SO7^*xhL6a#2?5x!YsA)?XT>EIf`7lCgH9Cg4-Y6FO)M z&r;`WL?=Arq(w<799D-f=9@)56u7JlYR!MlwJ5nEuuwYIlBNV}@sIWHZC6mz2C}*?8sRDB{_(Hfi%`ZL{)ej0%DV=PG%9S^$>2%^mbjaFF?2 zx_4I!SJ&R(8lSoV^tAe`OCyz)*6fjP%=4sLqO@Gs{e{NC-e|(!u2by_MMhaELXt@l z`-ao>k7!x#zpPA^h8S*(%d!nu5vgE%f zX2;aHcNKdnDjDYYyM2YnTYZXNs`@l3-fG-r3p|^fch;*lYl^S&ys(DFS;Sv-berj! zwZ;A7*l^^2H8m7ef=I~su0{r<=&TrJoH@;62DH8eo=Se*%y}r7BED1@_(}N7GtC*u zE|5s@iZ!*V(71BG0GZ)Zu(j{XjYw~Q@M}5;vmqRYm1x2j_eu1i9N}f7JkczodcGaw z2IY`jf~Ex68ZQSya>stX&lUgJ842M~u7e;=&ejIR=K>yRW=7rh)2sv_i!ghiY!r7F zg6XNV@yf^b;*K4WMKAt)Cr0%m7Dccjk1MA68};`_WazCX)&0Vi`;n?N-I$3|XnwY9@ZAb$sferM zj4fHrF;af4oRNXKw)zGkyB%gpWQ^}QM?h#0AqFqFU`)5E3~r2-3f+&5;)8Wkx@*9( z!A#Cy<1(e&Z2`B$59OILkKWq4gBzJmq^7taq~Y@d@X>!0ZKDH<_mdtJ#Z(@jG= zFe$W1adXmQjdc(wgU0Ms)Uh6$V#t@}yHt9<<_rit?JlL)3z3p$7_A7bwu~kbvp}Rd z8ggT3&CPbVDLUuj%YjqC!MGiPe+_@2SvFNLZ_oFh54jfZ)5AE6PHky-Jum??6sNr{L!NeTRAwQcqdldxKg8)? z)=94tLCB>p9zu0XU~mzC-8ll&O^-a8t%ofZX|}uWmB4a>^5MsnE}{yyYfGv zg4bG~>~d8r61q3JH)><=o!T>Skw_@{=!Qj4sQwcyLs$`=A8~YPJ~j0_UE}b^2=Cad zRCsdcaSK7dV6uH&HH!%qwU0f}=QJz=OxCRYSWFxQ>tQ?pGd=*E*}21FWBR25g@pfDDg-Uz7sOEDYt@ zA#;ZrE`C9n3~rL1w`XQ}Hx&)ZM>6x=!a<_ffZor=sV#`8Sm$QG;2g-jLpByK?5pl0 zmoWKb6WSSHbCKA_Wkpu5g*8OxIEWlpYvOGvuU`bixS3+*5Lw$D=qrSCIz&!qCma)I z((fZU;=4Omq5p4n4|vfq|46mhQw!|AoqpH(2O9l@4HRhbEnRPFxSi{Tf?qchMDAW& zxj?uI3|D@neJYE4%&-X5D0xqox14?>VsG$|tkP&L-M^fVgx$lvsEJMcay)h;wkotF zQABh^zU!Z-jGHIq$1gbEs`c@FThazHr=?2zC`Qv-5-fh_Brxg3rKv4(`4HsZOywLc zhT@hv@JIcel42U%60V+&w3CoOwEk@oCsuU}0GAXYV!X}8(Uo2hy7+V84*r;g5JDL9 ze6cb1(dG6N0EtE>&?vO~ISzw*1m>Ubm;KToXK#E-wc4&hgezm0Kp3$a=zx<#=hU@~ zers1M-kFEt_VaK{oam4drj449^VJy)xax&DJH5K*+iDaH#Zx3b%VjHW(x1T_vAK9m z_8n-rto_1U1uc+!au@Ak)WCAJF4mZbJnMH%&d-`Taa+jb>>7&22bbP$W``j+s+-^y zb(i~pVSRZYeNuM0$I>pEGGVWe39z@UYxLre)WYyJ?OYW1F}W#X4$JvvaZmTg1};U7 zWATBAxol%{&5G#&Ev1O)`4XiljID(9>JB{(7L@4ipd;9Z z9{KU`UtM3*5RiGHT53f6ST#fIM46No^y(a&BBFTW{RZna)R308n#NfAb$9m5ROY(Q1 zBX$BU2*k&xC;!>XNct{;{HKRFLcJs?GmlEkOYZN6p^Pvs72a#b4*%!``6~}n=?~7wyL+*_pwY7}-lIsQ32V0S zR1O6}9M%kCQbTj!JUAA;tl!on5ro4Vxn0WKG$Qd@#%$rt{0s(jxGkohXlY0Ilw)5g zq|$&n@|4H48^^Or=mxQ8<(9kaC7ucxhT?>IbW01F(Z|w$C3&Y8oVtBIV3>ex{Uf0@ z)n#8Mcvz0d&xMr+*5hCo)V13bL)?hpJ1Kha@L{|Cg-CWc!*W9`wDG1skDidai(l&% zU5?+ZAnvL93fO684k+y-oxMSJYPl~(q8y{FI)#pHds^P?*D_j~@z$^)-f7b^p^cBt zjwYS8|5n7tXWf()P|vp?;j+Hoo067r#$EU8&AA!dfG$lIY=Q*5v#P&fua9^7$cnLF zGDR!V-K!!g{OCFh_N(I)@`ey`7+%6zU6X2O|Ni*_z`!mcN1w?bzwW6-vpQCjYt*s! z3GQ*&mxgr&3F(BYbC3a>rJF#LXaC-6kGrqi#Qhi4!SpMl;t}L*I6>e|B3;cML1R4G z_V;&AB59Wf7=f~t;wv&L+g51Lo7IBzzRWAFHvsII9KYWO%cTV&(QJM}jbRCs_{;p% z5ltFeiyRyEErG92nB~~_XOT<1M!|H}{gCNf8@JJ7Q01ZcP}h|2yeh5h^W1Hq%AqjC zw-J;l09}toO6vi8W>$_;(65h+6uS|bAB$HI&7iEcQQ(sLf3%KMR!;OI>}6%e3Q1Co#xxDYN59Fw9CSMnGwv)bvx0|9lgD;U z&!fkr@?qa$=6%6LrA)^AS05L+IP?4XiMw8d{|o~tl!9oLa0iATT>Vy4+)cE1m8>U# zxCMUvwBomL0^LCeud!#(SMp;prKnaV64`&8WpcK8DFD+7(C=b4n^di~SX>+wxj^^m zFxt4EGRx99j+rzy@j-du{b)}^W7}&XX^lFSNm}pJQ|Wm91(j?_;=QbmiCx(vNz3lhGYC({qY8Jjt}JAm;|zk%L8O2>Jt3v- z6$#5BJDLAZ(Q3e18q9Hpq5RhnU}V^34oQ|Zi|h59ZU)Em?jOpOX&Nl*YLR7`Rdx*$ zAaO!)sQBIm;wPuGoF!fMSpHo3<`s z_W}qquFHMAQrAr3jlp>qy0XZ3_*rGnIc69#hej{GL{KxWMz^9Vs$FrbhAjdceu<9} zvlbiZ<1IY-#A_vNh%VI#0Eg{NlfUcG>L~3xj+*|e&hr`l^+8)zd=bg~WNZ_OF)5E) z3GWbW7pd0a=_n|uh)NA|{2zcj0(HvSTMCI!ya}rRV#&wXb-(jQY#}|dskh;>6%P|C zL_Ozoi?q6EiFj$>>;L`@3KNlC3p;7_J*$>A!eaY7E-Qbja`Em_BeRDNfxE_3>e04gUU}FAfrxDq#Cg>a4m>JcF}=TqrQ9dXF&Y8NBK*kx8*rA&6vu1oJ!VtV+|+tS_)ASL`x=%`EIOEemPBFsP4 z`TOl?&6Q^L=4=o0PO5cfq{m1!@p^^^CjKFKe`+5aZ&FTqKJ0CnbF|E9AMuJdcoPd= zXdqBzgHwQX=qKEu9td%CZH958Lq7GIlnDh94)SAL#@Oi=XYG>=8QbTcg1~?pO;}?^ zHh_iQj|x8}H4g3M2@xZ#p03p$E>JVkNFCA)L&37Is7jj$n~a9_fTg_f;6kuK`%`4Q z@vc!zjf*{q^x2l~Yjj3zbY=N1s0GI4A@zgd>)-}~wqUYuIrnxWeWdj(hxWO4IOWXu zUgeYFczp{fog6{xfymgDQqkYH1mrN3ug|_@*kbRW(?1%5X3{M-)J(MlyP_XamzzUF zQPTE6(m`?}co|~C;eyNOWx!E4`lSpMj%uY`?R(5r#MO8Tw_V8BEuRl&l!A85_yOHQAA4`;-iEt5aQuOwZfOY>FH^gXa**!PJq22$`9TwR)_e*o#1~&uEk><^L|iz z46gLs(0*+%0HP;8mFW#J2jGz$KL@^P16yD``y(moxNq8MT-70JD92?jB z8v@V);WuEZYoM-~HOYC0Q$K{w* z@&Kk37S}*fbyV=2^_^9_GhPGdo?(@glPxvVbj^v%OlEIAetj6 z%Z7yY|9!wCr*V*p9;`HW<3AylS1im&3Eq!ld_d+qb&&=GWxsRWVO|+~Ni5zpqWyw~ zLm$E)Y4VB47u0N!-ajUNciUX|(-RI5aU&(+z57izhM4amQUckS#Eam8NuSt9`G5D> z<0|~YVmZ!5*f|SNO*;!5$5}`{f7&9r>oFY?&AEx1<>^wAHXeI$en=_4K8;0Qel~p zz(EMHHOwKGf@YoKZ3Sd_ zyt!ROogMn4mWHRRPUV@soXcOdR8Yt9YV_SteAEL7J%VSy-nt4a_LF8ciBYuxgLTX3 zvmy1ecZ-dDC^*jP7?E5#T?b)c5W@oufk+%pTJ2{&pu@ zCsunP>HzzFo0dooCL1BJr!!dw2Tt*m5RL3vFrdUMvk{HB`|@7-dSw_c5H6ZtMHGsG zpdzHD5!Um&NTR^Dl%&~HGQX|QPY%Ph60aVq(k)28NHiBN(ctv0u!%Ag6ylPv}N46f}1?< z(1-;BytyQYXcdv=;h8%bWyag`8hb2}isQ~hMh(in0kzE{25msdjJI^+Kgd?B>{YCo z-AujK99sgdQN6>yw-4BQu;9U@zZv)(_I!bN8Or2^7sEPQ2Aog6y6UZA%AIO1Q|Zam z+4D_Dbw7G4ll}-kpu2ei-<)VkSx?c2iOzvYL1M2+H)nQ*M^JFXv!x+f8b>jwed(vm z=DT_tA~YJb-^yS>g-7$zcX`d$IR(PjR&(iM?|1)Q;B#g$$-1G~$%*n$FX4EpZm~r= z}7(>pf* zo4!Z(qSsb3ox=-@GUMD}paE%a#4D!fA-d=uZxJ5|%~oA2rX})LJH>7jmwhGA3vl|z z0Xx9{7PvOYu5L3AQ!ds?)SfgyI5gN(5BkEMd{(HlOk@5-umliUFKq{ywtr${V&$Sb zHsX4)T567SCBi{I)~b3?{x_ZS*ReIvGXDX2OtBGJ)l?NmQ3iT6(y$4S^FN)FZB*^i z%b8#$EeZpqa_cZhm{;L6mysOZDj!u<^nF<%k7p0QKXPIr@Hl<+YKw*+$g?NxDy{Et zq#yJaba(o^Kj0?U)|pIiBYKtynmz<7*ub%6!h>-?nFfteaN)cKFDmlb{4g#w=k|e% zuNT(#0cU@8+%mqA8V}x{K27;Y7cF@JHb!?%0WZG)kCPe*e#}S5YTw}_u`rYxgwM_@ zP(1%9x#+-DncvK{&k$e|)<{SmZH^f7tytSv5*J^iLf;ukwr9-4Pqt*B#i?DiD2t;P zyV1Ap{UE1YF&^@bd8i{4*Dj1{6DCS(_rc^{LN)r+rar9^x2i>SO4sGnteIe5rcpfN z%$m3~R<{*xYa2v)e}5|eoRk{x?5P@JQ1M(*b$1l>IJn#fgn$WXYO*ZV+-#?TZXVv4 zEpXEuV<OOa6zHmoFu81T&@BO-!-N1mywATeRDW^P=`&?A4I%;6yaRCd_J12l@kd5&Q>*qIMu-yJk@pWV2Xk zVmd}KKQ#MWUBnrj+iEZJs=H34KRim|p#c>&zaNct*)=V~NXx}NX9%jrPVPVn&?!HB3J*M<<`i-Whm`c zSTseNpsdWIn9|K2I(w~mtL~Yw18*1|_n*-8Cu>NKFbsQi=#Bq7>E?066}5gX<|=48 z*`3xBKpUfwUv&$`P_~)W3T(E~tk-_k{h5pTC@r53KbXH5$c){4mq=vaCb2Ysd?G6q z!m)Y#j(TY_prf-t-G*#NeTn=P3g<=kGR7+FWW7l*7LpGd+-Ns(Fm7~T-#V0Q)~yHV zLP}>Fw!y(Bt+U^gU$&xwcD4xd?Y6RL4Ng4FNMhF;NEYXmzE?HH5=Kdb^gcPtImbgt zYi6ccfANM(yd)^C5=8q%rPZj_FKIG$M|W)lmKLub-!O&?qj5;TijV0dm8Z+RSBBSKEB&i@z|Hv82B>T4f4ek^? zofQRbLcZINEtN5s zF|sjOR?Y0Xf#I04pes$#nO1I#cd^Bh>L@Ty0lwqJ`F($p3yyJ(1JjeF4J@wDzbkD& z{CSqrRx1p;_nv+n+K)uH=ri8zPuhMVL0+6dpS`Lx5Bu`m4^fl-BYdmM+BQsOR`pMZ z!RBh9GGssAp!Ke~L}F#NS(}oLLU+(T3A|e|PH&AONt!RG&yn4Xoco(n^x*>wI%@;0 zRsG2F1XB!>N&-BA*;6k4td&ZySRqXmbN%&q%zoObI=XMq!&{cVh5dK{fVnp0#P}tEo$^ zV9zdZDmhC;Dty)5WJRFxKIk;uFIBMNHo*$+-LYP6I6Nl)CHRqD>Fh6a((U@&%Y{{? zsy>z4^WJEKbl7318IR$RvK1UtTj3YOOPbSw|Mu#9V9>*lrD~s;++J3F`gL`$YXxR0pz^Ux^G=U8FEdi zz^ZXjr-%l$@DJ?Jctw{ywuvsNwH-elv?P7As7i)heGVTTP0L6UU5iz_)v3d_g;16M zYXqg@2R;xdL{k!J&CdfTatTf11kK~b&$hZK6n;_xu*rKu!(23$(`s1m#<9e%ok=Bv z(Wb7e$XhImL9gq4yn}LrDX4Y*&zUI8FSO>8uLeC87W0ZM-gkL(xO6; zxuB)kZ_CL@D(0`&0H>bC)d9Nj^vWkGZ8M61qqnD|JF-ah42!;XNKM3KF(^1eN>1vp z5cZ5^rEn=H&=;v4%JV8AB`_1cyD*#H3^E80R>wrgcFKp zG!QkzMulm)Y@SBJU%;Ca7h_hqQc)RuSB^>zVQq0 zs;Wq|IdRfN=A`QqpOOGqDgT{M)mdXWX-Sn!Qc^f8>a5lHeQR+hXy-kgQMq|B zmO0q#aUv&5%KTN3<*}Kr@neXAf{N~J>s2shTM7n?+!b!vcj0=A8WDjhv{(dsfjnE4jLJ>2Q``KbzCdzaWy zyD&jY+!4~PySOU)nPrpWy7C_QK`&hKL~b}P8)Pg}xR^m<=U_~fQTV4)qHVK&u79qn zHxez%Kq^0^mD-TUs<%V*e;!@g|5LQ&CInB^va6Os#7MZ$ZZ<+KKt|qodX#LFLOXdo zd19zf_U@A)nS&baWV;A`rS-gw@?`dP`j1^z71`3 zJ_mv|oj{6jz6?R`)=(q0nzcie7)bIWdm?Zg5CZ*a+f~kOC8)M6MMRblrdF)!m^A9FYaN1zTiaH#dO5aN>bohg zTLQ?d@Cj|B0fEl9xujEHVP$#)D~K@l+~bGGBWV#g{YgGo^u!E>DQBSZx^14MZ$VG9 z)8F>zRCsjH#~fToEjD28*a?`ogkTxjv>Tf!F#Wc|5$(IpoG7;Zg*72I{Q=NleAWUT z>f6`5U;i`){eA4IWn=`)*sUPF@D4JWxw_(M!BjE8%JJ#)p3Wq`mYXVe3YwUFa7&z1 zWAW`4MSBB87fnz9)ooUIF;LXi=!ErQZd&Y{gX42Z0Nc^1>Ns3ZG%h@<*?~U_tB61i zXf}hP{iQt^GKW0vMa75NPAcJ43vGq*QNcw5yXdd;zY*4Idc-}EzCYV8TV2OjG=j8? zxpNS?v1g*&3w-1V8$6RIlew(i3V4mw;W-0s>z7_{ik6M=MwvJ(%2f<^(|Z}yVm$<8 z2rZ92(nY~=OZ(TV9Zq63$H`Kauln?>=K0iJ@vWBzGupp23R9K~+s(pUETUWm56$cF z=n09GJlFIXT3C_(asCMjCi}5R^ShAlpDH_$DS&jXm~fZy?7?y6jE5P|rYC|RD6*n{ zL__a#oLNtbY8vq>G=LfzA|L)`c+%y#mCAY%P^VgGKd9^MSjyx9VYi_9FG+_p2{CV^ zuaJDf$IW}-de$Wc>8p9F}yPQDuk}J*hN_VB2f)e&PyUoEf3?6G00w)oP1`0n9 za>Srj)4&hy@0BRSaCY$apCHR{NF2H3DZ4$_wGoeh$^@jook`}IRB)<{oZ@>bcS z^NAL^lF=+v(z5kUpy7C8tWG_?hAhkHxBpR`uWCUkq!uMs=pKF{my`+cjZ>!v9Kt1d@Jc+!hdBosUms>0w`>)T``=B`Pk#R zkbh~W2W9{v{+<}Q9CA>ozOgv`vdO94df97y2VL`9!D`k#*hvs!;s+OEo}(5;a8%&x zks8;$TKb(~j^f}qqhwaL4UX~^1FWyrAc0dZ$6R9d`hy@%6#rb^t84zZxi9R+P?f~f z1>GG#8`%*&j7F9iT~6+^@%}K#KDp`YO2(k}6c%9=JMPB1PUT<44M*H?8k|%JIbp6x z1IXglSfTdYGQ9x_x2O)qxB{%W{E4l|g!zId=m`TXoc8U1EqkbBX(9SLwKexW9)g6u zih`dN%Rb%)ZA`?F`M__-c5M*d^AnmInvMz7tF3yLd_0RvoZFY7cD+}1GU?QF;lw?? z-JsVy7XxxR-LuSv*A`ErLXbpwLVJC(KJtl^HHKI(AuyJK89sOnFS zeUea(P|v*Hn6~;lqbj`#c2aUu{^>9Ictob|R`15p9Z_cdD|4r3ahhwv>@K~kFEqyI zh}HhbG*g3}n@n2CpS0h(xgTf+vmkxW-xLFKMGrV88-ehkC84}Efu3rRo!-7kb;cIL zLY{o){hM@^0M z=H+wc7NVN}_y)lE_P?@kWH1>)xWZd)uE7{ljp3JPfTK~#32+6LK)1HXvo8+@aF>AF zcd3ek#g$*`Q`}D&VEhdj$~7Y8L?&Fr-zfJgrV`1Ws?{&~X~Fe-D$Y zirrpAg{LOW^5F+C`I8Lh7pbz|8FyR_ocP=@4B9D(O1;bDz{wxXQFkVSa6E@h*c?vp zG=n5E{716x4{sY`$e64;?8}~dv-)p3#y;Llhp*84;=)ps&N%K*EC=BJoDg#+^irvDZ&`b)Kb zjLCDNGl{5fNplN;8Z!Hk_8%iH{lgwN2MmVcycwy&R=9=^HiWV}RNOSKMZ&3M*mKzZ z48H<(*B{=FUnp;*{0jv`^`QWjP6KziK^^kyN9T0k>J@QpuI}_h0w-kI%tC)iGOwBI3i97$jJzc-sn4kYM%+G{t)6YZWKD^6{H7c7@ zwragdRSqx-`?B=PoMN=n>uf%oEZc`l{zS=2HYYS09u|*)OJd5c>{2nX#{wJa2c3h~ zP!?*SCcnF9m2<0=qyGPI81##eSF%_K)9E#ndfY}U+D7_z-fBEutrcGYyTnVz7P4I+ zz;U``^Et#RZ9ez>n51w@jQ3j2mtrT)KbE;K2fpfdnJ z_Ob=$Cx9uYD?}xr$>|mlIYKu`V*}gvM1dHT@_V%q{l)u@z_p573{Y$FFdMQ#JD~q- zy!1HpA-8lf=O^l~N?fH#0$*X#f0VRaV7tZgMk#>o`Qc~Gntn1zU(ADEtMc9u&b6ds z5WY1IF~{XJ_8B8!2Vbc#VjM=4HY5_HSj&zN37-EqipPwYsT3Y-L)%i{!9u>-YIpiO zCPOgCcDkI$zd5B1f-%OPf~$t6TS=`>2EE=9Sv~S}pw9R$BnC50nOnyNC-O9YKTiCj zNS&HbOpCQphCy?5a*&NN$K(}Tw9dBjGRX`#1K2`&&ffc!0Y`0&mKGnEjxr`ol=o;GfoUEl`y41(_4IZ-ld>A2-L+;Y-8nz9IU}SHFtelFV z6kEh;qcmKDgb6L*I;6A%mZjkfKb$j?-?O>~kxB8J$B$*=sk? z9h}eeZXHh1XNh28Wb+hLh-MwRqTBwMSX7k)(az#703Y|GFi0kb4OIFJ2xzkyqks=aeVYCc> zfwfk%<*NqxpIYI{2{hn_S@^d&^@ zWd;`a9$_)*oqD*c{iLF}hGSvOKGg*tk^K7*JA*2%rNwV zcNu+2J0c-@C_sQ&@FSzla-W!P({k5P&AN>2%aRP6%MO6uU+Md}+6gge=)5L>QmPm* zteko_u-$mzR{~0BR&MfsT2(48oov#}`j+NJ zdi_k>g!yuV9f}Q4f%Sy!VHb|{`};Ta=_fRfzgpL*_8BKlqL4QHXo(-8qX`8D4Zfo` zW1rh7c3b_k&r>Sf&34n++tIcLmmBgmZ^Sns{*DwwJq7DcOu`}Yee;Hd9N4pP7r_~Wm4|3JH6A6bgzG^pEVJP}TCc}JbhH|sT?lTS zMi?2I%<9X9yEI4S3rF+H-jSksxi=9>+0nK}H2Jw-jXIAwA%w8ikwEB73ycCDb4A(K zWqVEcPB);dvAoz4%B0?=LzHnG$P*LGpzfh&fsw|9$=Xib=v|YVZJWzb;{w(y>xNZ` z&Pqzg6B<}SiJnnf{~duKc4cIQSJ7o`W=QU(DkK9hEc|J{3glAMuW0r!T?57e6TyqA zK^o|ds_)p==>_j=G}G*91>b^jmQNNxuS^pEhV?QMW$fk}ihJ@xNRS<>)^clsU)BF~ zT~JA88ZR7yqf69?l84%9Pi%AUr5NHiLg6qO=lx$?182&!Zmn9{|0^*x&W-n96;MIh z0Yx+R!pY5EA&%LcGny2?waolvF)F2;AZxx(nx=^}1xr9>$L#Z4sL+eA%9}m|d@N7B zz_YvTEYz=cZvD}Q$eXWx+pvi%GzypUr>2@FSotVO<7r_{ z*$H$Uk4HZIXc>`NYSx)8;PyZnV79y3zutOt-&`|90)fi zRXa#3z$PjO5f@S0&_fSTDRArfwhR*vno2djQl zOCPSI=VHzKh?Hu0_csxxd$$@ay=%(JWOD9N+vJml4n1}xhP5pQi5HzV8r*&0G5rDi zO*ZM#G)q7Sxz*HcGcO*~KmwL6aQBBiYP9}?JzPTxvPffqWfD_T)*xito`ML;AX3Wq{_C4zNU~M!E|d?t_i6LgTt=& zMhh@GN%@4#&sHq%LwfYRASD6NKNMFRMIec%bo1b7-}T7C8j2hmm#g+cYeM#vt*OTt zkG0o&Gb_!vcA!;jawpvW$nI(EfQnVbIyiPqhbyO<1n#M-2V}L*W*2*(;tbC`r0F=} zCeL3j73s9tz6oN-F8L(=>IfB}@yC)YC&!8p5gVZ`6=H}lZfuVDX|-mf$4C9CyT&VIb_Gtjrw!&B^qpPSd|E6{@6Z@jB6~krQn!v;#X9YA-Z-$8L?&_6EoBKd*nt>QB{& zv6x+*%NoUS#X%7YUibxcMa*uJwl23m%v>hO2%htPjgj>VnL^a+XOu$)-d7O->l*nH z%$z6{yIv5BP*=C3esx^mY?z?xqzb84-U8zr<~giwr{h%fl+)gG5iE}!>gl5txYamT z$#+mgUU54^_Yg%2y+?JQKC&nXAxt4+Yr{}MME<-+_u(2+NM4nPXfq7xE&bEiE?COO z)Wj7X4`<^P?RniG5?wn3D2X9<{c~p3;EUCsxEqhr|9}&wgFekO8*7xHgQCw0ixaL+ zZZ&Iqi796a4kOhq_vpsW9BBMXVOTE~4I9UjRcmRm(8`)8j6;3w;vSvTKa`fUsanF4 zgkQv@GfKPDwaA9K_>sA$X0xQkE2L_c?HiFo|{xIU&ZY zgpx-QUH{2h!efH5qmWG;Y}ZiD!!}Ni`vOGRfJzqpaG8jTuSDwT%{WAB=H@X%uaEB=U{e?I<1`r{1H<>dWY1!!trS(%DK^H$k6rc6V;OJiCoJ z1KIL8JPV)R9!=3HC^0$yptD6;Xx}Vx@G9Jl+P^%rGLp2f7KY2%P&HnDy(KjWT{oh$03chwUUA~Pz>O|yuQ9j2 zw&P8E{t+(k4AeEd7iD&+vE_jzC?x~gEVFPa$CRA-szWRa(0PLN$z-dHG8;K`zpD*F z3-|~bCZY7F3X-K8W7s(KJ$(us{5|d!r!`VjVIhF+)3uw$SVHhXZrb96~2~V8Bwa;-@jm zhbo+%UIs3mWFf~gei7H?$sjW?lvYJIZf>oj<7-sAc_6kP!I#J16{LK6hxTQMw=^(m z>ZHiBj&bC~&>fChm=9R-W0%FyyX~`*7g^$*?YkqoJTJB(Bp*pkmhZkszn+ZCGHAX2 zz~Fg)`%E$;)k>?w3}1m9675-mFpL3y!x0OFzHI6&w)} z{{P?kTN_x!Y(obwwEB&qX6EDZoGf`*1&TmBlxplk%QCLu$D0fg3haZ z>A)gqQ8(tFrj_qfvX+K25dH=?BtBFL&SqP(*kzG^4) zk)5graP)Ft(;2^aN<+m-J5PT8@n@QoUd_;x_Y?3t zd2ECFovg|YMS&jnFp$1AJ$*cbm;(ssYie38d#N?r3@Xj_zLQU^@9z!hRtkyfOP*0pNlDJ8bz;o zQ4pEc#cF{w^%f?vkAU0yQ$J%^MM&awy?I$82mtn(Y~!HNx2b&^K7{id71o5Vw=V|8 zp7e{|yLavqX*aF=5QAvbZ`pcjyX$AE++8&?HhU=FM?=1hwYE3AUlr`N*?t*C%&*e2 zW$ds`nE+H2E+R5)b!y5lA2z)s3Qdxw{ncG5>2#eSo{+~EBbV23C8dHq(6Mm_&@f>g zidPm~L#6YDJu+Mv=yghIO1=;2Fti1hsD>N!2l;b3dOTHhpJmV8Rm3-z;LJ|&AKA!H zfe0E7XBq8%r_W;nh(WTQ8W$N4{{BP!) zbA1iZUDwum&@>VeV4B{X4b86EzGscw+~Z@;EU^lS#Z=a7feKf?s#jWP?eb(Jfe|`x z;5i_{TU3VKeYP$TjN^3F&|gmY==U{VCSpdR+J;D?$_(N6vxRum8a9dWu`sv`R)#_c zge0>CdJ8t%$qQIuR9wE8LiK|NS9RYAap8Ag+X&UnpCGywSWOSI zOe-UOX?W3Bs=jq>t(4w93hamYGE-G{DWDU#xQ+RuCjtmxxcw-dkM>+aKGC6Sc3IiH z8pYY6OMdzH%*7jgRtRl9G~ST&zJ<)t>NtTdGN!nwzy^BH`+LkPDmFDIruhx&zB(3% zqN?1FN>8aQ83nis(u2}O?~u090OSj8Yql+$YWqcB@b5djW-$TfyD&0|V)`m_l8CG% ztDWyXU#y9v^sl`rj|#81%P4wl8oc679-0H+ql%VEqG~?|$2feV=?8^=w%KE1JZ51;ko;bhmNdP>{~YQ2hAW)znW=y4D#y8* ztjz~~ZCHPLyGgX)Vlm_zl4*l+py~qh*P~fmDLwvZ>)gZMep<4u2_1?Y{1*O8mC!w0 z(H-x!7FdRuDfVk|$l`2Ip^7nmOLtf^ z-xRK;l;M|P=1;YuI^E2B3zeExEa|gxlO&dFdhku;=e!#<4dl8^~WGq^vKle84PQ# zngDm3)~zA+`ra%Qd1<^n2LsT=MfnQg3eWOUhrQ zf;UJItJnFq#PZtGd(vsL#;gEZ3x?Q%ENV~i8;+N<9|!aIyXjQtIjcQA@z6sI(}ZmL ztgG{YdwvSUR5-YSZ7Jr1)X#UJKkp+RTye1baikWYzPJfg(ldmqJ>pCf9s&Luz#al5 z`CLz~;6JID=Rxha%Uki=T^`o2d*auFVM=bZaCgI`C>-LZuJGct-0QNz6FxQ$y-{-= z+=EXGoFVtMminNb)95z1l7$dY$e)+~jlft}nlrZiM`l)F z-NEFUnWE;V2~|rR>wT7M!ri4f+Wv)`tD#jx@4_FGtVcr-?l2rO5b>n`bjCt$(f$ds z2+yQ5N7^e>?vU|qx$tYE)#?^pnq`;$K&}!k)X(8hWKc;ypQdEF`0f1YrX8m+Z4vzy z+mY!X{-t1&@=0j1h@S`#B&y7lsX9>I5S#Mfn%*O6oj~tKR{rgw!OqYjt5*E=F8-$<=YV}x)uK94ew4TAM$3jp z{Up})ACPYy^BaILz~+&9#0Fe8$M>qOp;l6_Dv{YhD>pla2`3&%62DHz% z2adGTN<`Z+Cz{BYE56D6#<(5$FMv3-RHgt`OaMi;pb$ec%j>{=L-rXX~ub{ zVDjEQIZ-SFnH!x&s!g8HeHC_9Snwl@%QZ6TbpgyIjrT*CrQS&@N)ZPZE-=eTz-%d2 z{*N&K#*?{*so37A?kYVHNn`t1HkB26Dx!@7EMR@Qtmeal)6%*g3`rwu$+Mg)#qJjq zz(W0WXdjjRsNhOTr!}9{T=+3?ulXPJrD!4@IYAH~*gYin`fzl4GV=P}t-+@;JXx3( z5XWq!R2g)UXx#BsekI_qSnEM^jzBR*Y&q+KnBurS-$IlwS0OI8^C7xsTAj*dNXBrQ z^2uR_QfPkEn|Llm^Rt844ckvQ)%*QsaPf26SBXlXla&QAHEtaL>VV`p#_Ah`m7BbY zRn5gdx~s$F;_w~c>M$hOD_i728RO9dmUD~a-rmdL`zagHf4q(p>oyj$D&QY83`39) z@$!s=QXWPSneS5G*zdI48pIA)npdg;vgUP2E2_a326h$klotkmvq^^>oz^_9w4MYq zwRUDP^#U-JUy*7JvOppKQ(<45NO-r`nbpej!n)9&f2>bZ(=qWJ^+43*wf5t{m-0xc z>7}YL8?Rk?vFFDYWjr{VB9qe_lm>p+;e@?k4HfVOismO$n6iqT`7{RrSd-nX!WF*! zES0J{`jn=IX~IRBNp`bwd&k-3>UHf&lqa+poJry+(%O<=>!gyyH{kbgnf9$LS#cJ6 zYh83-kQXT5Y&=R?rn~M)1~b$~ptA*itB8FbC}}1{8H+cHo`v+WKvQqOMbh$jSXZv~ zX9UOHZtF#RnmNfnp*}tkz%bAlFtbZ_s!9exLxfU!m$|W&V2XAJM##H2DfPrVV+|=U zBVW>^U6+NLyce@nR}|6}WqOl}O=RYI7HyT^o$gI7<@rQ2Nb@Y!Vb}`zz%&d>XJG|Q zS-AUz#OM zCnZIsegJBi1cztaiBx(}gGCs0WJC^5k}UuYyI?-oym4>`+%;p&+$5_^NGXSt{&b5t zk*t?SKk5v6D72AG1O7xR!cjq8mYS0ZyH1%bE3pMV5f%i};b!$GX>>4PSs+rjRx*wj zl%H9k7?C7KzX*>>WvQEOp?LZ%=q%JiaRi*}V6`5G^@l5nHUx6rqv+3o%^`Qifa@Ep z4jUUJ&PoX)>+9DN(d1wPJah%J(d2e5J%@U$M z2blGAcbIGc>v>^08GWn4$tvWKSMjuVXN9eVN1K4bsu-TYbAkh{huY;?7xoBpsB4E( z$2!BK7zpsRjUE#Oes0>t!_Z=6mZiZ2@Z@SQ@h=q~a9%bbaoBuyN9&%vxWHNNvs2sA zrzjoWx~KKTrAU5NSI+IjS4mk4(xkUTe%S(F0LT9ole&P09;HQ#GM+ke1{T&1ylPad z`*Ev~;`m0Vx36?`*kvtlyb!w1WYisF#tmf5y?u$_!G~`!d&4Xu3;j%s@nWxH{qg_z zv)9;JOp^)af#Um<72WlaL`l&B;30>1t?%5RpY{}^Hg!Rrv(e>1!<^@2pPwXWbg6Zu zI0j&8;F)WC1{}irhB`orL+S{h*B6#=TJC{)?BWanZU<^(%$Y5A>Lycg1AnUbyOTsx zkQ&hG-qaSh5#vxTEafI9$5=k%U-mC32{?zH?MOjFCys0_Cs|5FRtlNB?&z$om7K58 zi=cA$hY0jwj;3%dV^B#RH=$FT=}>``Z}PL>0E`^=BXApUN#43sC?ot}g7XnlZqV`} zTIr0O;Y2x zn~oU^u(o<$ydf_&dv1#|?zb0Y{}NvO0K4#`+sYl;&FX$}0W^i z^cWF7h6YJD_^{V6qQ>YF#6w_Y5QTKX>mFPBJIt78yXnNaYM;f?iRW@@3 zYLzuuodW)VqNh(@71%Zv{oe#-MESf3$+L7&zXkaya1+cUN!l;2uNxA^cgMHT8u__xbI#m-M94UwToRWzC-8hx- zErrCm9U}*8wLfH21>jJ&c!-AI2uLy<0pTdFN4~>5&bPA7vafl?EO+!|yTOlTM^E+0 zHx8j|Om$MUkd3oLKpk{8?z0f$>wV;lyRE{T$s4_952M~g+nLC{OG1&3cEsA!>AWc& zwMbpC6yCVJeBVJl2kI~J%AK6V_TKX`%g>?Gz5K4F zos;bLZ} zh*H4^1awOoNh><>PB4)svilG{;X$_hN_lkRU4)9H#o!=-9{fh;QhIy@V8TxhpT?;9 zyW8iT-{^kVwLSLXZ3%46S&kBBnTnnmvZ|A-Q^5U{-{IL;iW!=0untrMn21e=mQH7O z8%lD##$_>AnSGg)I5p_+-;(NGcqE&<)ZNh%!a7Hc>!?PD(SDv_Zb~EKdFUp!$4B|^b?;FSVsQSg`S9p zouJ@g(+e;A9`-a4^@emz?$S2KUekDnp?digHgrr4h2E8o4G1lVg2%b<0()+?UJwDz zON7pms-zJK6PCsGdK;LvHYj)(o;x5lsw396j_NROYIA;6&%RuK;A%SPFmjSm6l6u?QMsq_1L85gs|YIiWm% zMCAT0bN zC0SEIMfFrL>-HgdlZ{^QapZHXBw#!==Il)}()V{lN}{45c;h$718QB@T?Q4u(iOvL+zdvza|~dFtcNly~}P$ z_zjpvy~WLyeL;V0drpx zK_hnrJ%*mATG+Scxg@TUZ9a~RdH8PCA{BcCE>_VKayXpFn>D(E+@o|i#)nPHeC$8p z>Gw)ZN6I75A*ui@&}CtPQodF6+xPUaYMVc_I4ZYJkDipRRJWdl`xvFbVdwB7=xw$Y zu&~d*EUYd%_kJ79K7V2egaPFL2zLAMIXEiuj@t}@q_<6Wv5T%(-L+fm6M&QDHsC1R zI0w>tVp(0E8GcRkl^$?D!}FBRv_4hxFn5m!D^;D#@9EBVTDcH1#+(V|KvM2$EC)yplqQNZ?|tD%90~%}7OI2|R#bTE z9aaZdhielBy0db3Q@?e)kaTTjIcK4KG5|$p$x)el0yk(JjewpaoPjl)fqxHrjxUozbyDX%BVTz0r zYecXB)mpc6kH&fb&}wSDn$b$=BTD|rGQ1oEg)rl_0#?3C*8B}PP+4>LFa z-!lH9E=_ojAT%{A=4lkrHF_Az8pYiEb%Yh?NgGUi0?#wf>38nX{z21*a55Ihyc}`;lkOAO1{6fSOd>>GuPYm(wIk z3^FJr+dGg_jLHw7`63g1O^VDUxuCgf>O=#60FsMSvx!s^lthuE;bL4#Nio$76}y}( z($ov`CR|Fgs1nxtHANIl;FXg9mT2!!KE)ug2VbuxshoIsSX49^P-Zh&cyqQkL)tkBcY(T{%g%hZA;wXx*BJ+jPMQ%**Zb zr^Nw9pr+B^rO@y@mk_*x2F~b+XnrlUgS24PMaT|sP9cQ`j2z*StkwRDh#q~Eud%xZ zd6}pRmoL`tW%(Y%E4)iklH0m>NPbOn>fP=YEcvIyJgoI`(-d9B7N&?C#r(6(mQ9A) z3lVzMsi2QE5TybGXOJ4zq2bI?6Iyl*VMCF)*45SDrAm-jxsQV!x`w&IwKssSe=@_# zEjrf1QQ_gGc5XiZluB)?D8Fvbr9;~=p@EmodjScUgCc?7Y%id(fUZo7FPSsXWb#E( zo$R3#&or23@D0O`MpmYyVGVuUiAkBe{3f`WJSW$p2d6X2c`)_aw22{ZI`VP(gsC@E zfiuyRaa%NpzrwIf>- zpmUCgF`jbVHbu#}%NV(+9M{N8%g1Y=BN*0td-I-=^WS?y^r48ldQ3QIEpX)eYpaRs z{V#LTxhv(@5(u%}k(Z5KBq+z>4=*AnkGG|8Y>n*6ZE*%-TES9SN`?br{F*#IN12&P z@}{!In(Fm&i?TY5d9#9;+b<~8P>A6#`G{=mEGEM+3FcCQ1xL}Fmu?-NeP{v zQo7$R=w4kLPbq@K^N#(x1#`mk;1~N1C9YUu63^GqQK3nc?BzJBv|WxK&SeF`qtx<1 zqtWg)IMf7yA(VbPr^46Z(xCm%T)W*Ab=sLDFKWmzO+q6La4$}#DwH|HZ7Vyp|HVU`Xi#lD_L^lxutqd0QW z(FVRA_x|Znrxj{BzGhLDal{@)2{+U+*a*lAp}~Qf`kp*nW=RH2pgsSFsvaZmRPb@o z!Nj}-j>+n~-@b-_mP*4kE2~7qcm|HX@G;G}Y{qJ@2R56)6ilx>|J59&*swiTm^s3Z z1xy=Z+8i{t7v?Z8Gw0^f%uQ-UP@mgr7H_~&%-QC??2V@oZaET9J zJFRjdtwA2W-zvdzjY+1mE(RW}L)>K3KRuf2g&uNiu7_^}(I(*vtg#nRXSlPKmxRUy zyeN%rY=|8MokodJSSK{b!eR(w3d6Ljt+q#8%F_cZzopoc#?ooI@ef;NGRFh>Y{RB> zJmE$$-6|*+wii=^K4(}ST&VX{rtR&VhR*%Ga+C5ik1_?sslhdShiLyp2TmYlNH9nM zB9EX+>4JVAx>2sLZhO_Be zl@kmkGnQslP6^@3Zq7s2CCwA0#-%B}_sc_26C};JsDpB@$2D?1Nrz?kQWD5RbHFx@zSrl zX-=r9Dyf0&%$k9sf>1D_Q22BsRP)Me<<07rmeF$Jan8uD0Kx`C7*4_@k;}(+XMeP< z7A}td>tDL{q_WP{_=^a>@(HK4f62s_M1Zi~7uYI0<{Fu4>ym=6QFCNZ4d%XuopNQe zwu3B=(=FtwQBHYO_jHYF1&Ufxuy(Dw@4Hh35}D`)6dBD7Bj4@2f(^$ zF)6xJ^vB0Z-5tD9#j09Ykvk`H#uWG)>npEqOQekP7R2X)=RAq6U^rD1_gdyw!7Dl( zwq~FihW~TQhUtV4Ys?i;gx^hS;JWk5K!-)Yd>QDyjc~J-gA4oX|64C+a`gOg4L)hu}ctb%%&zIWZN)fH7TGTOFj()~^&+Ew`5ZeBy>SSS*T$ z(JJKpT8M8FWCCuqq93S}GiKSiK?P0DoK=t(yC0)9O@V%y{h#cZl0k(c}H9feVxy~)f>Z} zLmu!D#jxgaw(AAnsirQn-LVJf6y4VdU|%0~xV%^ZP$my2&r$ck+Gfx|0|9ADjlh5& z)pB6DdLQ^GLm2#_pM zj<#Jy;h3S5p2u1D=&;8{P|F2F{=S2{5QfJj3n$ZpG_r!_Ig9=fof=3)!>G%=LVpeK z;#CJht0Mn!AkE}@=}^ZvXG+32GrFi~t-_V%VV5exE@{oKJ(g7 zPKbl^xix*~g+28eR~}5sIJTHpVUo`Amv4j3!(zl=$!*^2_zl&ZkFsJ3Y=>z^5Efs+ zGhID-g3osOk(khi{}rHrW(uY8Pobo}S^{)N{rBwZRnbOV{9i=a%er$RkDEmLkuDH} z&_-%Gt90QPJhpX&WmglNPzTi@3eISrWUAJXHT(K>_3Br8S%&ulrRvF#q!GHvkKz$8 z$|#%n%{y#g%G(T!Et_OddmGCNtcdz$?9DJ@GQawcRX66cV_4i9rBh^n#j%A&qW!QQ zaVhhvPWJmf)~j9Dq_-5B;#DjMiZI|wob=7-BUZ@-&J@7bfO6iu3<%#l$CVxceDOGK zW(GP%$_$37p8JY-7%(fdF>c-uN5PXgh|~7J{(2oy5fXM7D+Gd241>Pxxw>rM3_JmB zoyqR_y%s_xu1GtLkj|C9_yI`H9XMP+fSUmMq8LyDdLESy%M8*HS%xg^ux?9ir;Q(ju_%e)->xO}a#btEOp+AewK zsA-zLXF}RpuVv!mYV<$bc*Et4GzemE>UK{vAc@v1*gqZ%Pg=i93OY}5z$(PiscyyJ zOfUs>+OvP;SI4hNhnaoCD$MI%+B2KMze>A|;QH9~aknjPo} z^sg?w98ituzEA%S%ky}SRaaHnZ&`HEgMhCrIY-gkSF&PI!}|v<$kdamy4@5?^!+Gb z(yF75VRJxZQ`pCkg|VB~xrkp67JC2< zV{nYu_IFy4dy`B7&a7V%G;L=`SpI-M6>v9y=n?Z^4Ev64FzDrPEHUFmArVt$TYqJT z96{y*1EX;bXRuo6fft-EGY~b>5^OrZ`Y5a3K#_f<>f<9>UEgtHb-zb82}|R3klRZ_ z#O2F9|A=?BSL_Gz{`+w(F4Xb0mViznpqB(gBn+nI|F?V{yC|5oP5m|DIRJVl{RaeI zqKm6rfCQ-Ema&q1-xQpWX_ZDyzqtg8v&dQf2qqe09g(?odL^$V3DN)$=LR?C;9(}Q zyqD$P>k(4nZe{u#AE|M~IsfII(54O&8S~CPp#cH9b9rSLMiw$=@C+?$@J~e2a?&s- z)Q#*klrT`l;z2KIJBhy0cPjnVaY*UI6vWfRW=H@Ndg%KIo9ZI}fni~pUP0sR5M4C8 zvh~mx8?kL}W?pV9LhjZ-`$0r3{PnCYdnWe61Jv&-Y?*XZHY(c2|GfvLW+^|-gFsB5 zEBYSR@3<6RV{9aS4k#Q3WdTP74qoJWsEHtI*3}G^o!JJtabqcWQ@*LeedO0mdEgLb zyMS-y5IUT<*Mkfvf*M+^BiKSV$JH?=J+Ppm>UoR+4}Flb&n1$*Vr3nf{J>BFPa^tU zg`3ccYD)n zp1nq*u($A>kfmlDyeU5w&DJli?mt2RoKTLwn6a$%&%7D{T7ok<%u83BUpuC_rPs?~ zw_LMApfIAUb9BXauWL+KAG$>Z%slsWRYBXO)6PAFOs_f9mAyCo%lglEH{rI@893{I zGu-vGUdGb)NdbT`w)TMzg3OuCa9)}l zMp}P)w(9E+KBegC-irSgU9g;qO?1!IiN%(i+4ZYjGZ5?qq-g0tmm@QlBOj%>?m+!G z)TSb%!d?#vhSV%BEctV{D5d#8+BRLqY1ub|ZSmSJPNKsZqp-YD#)E}nTkl;eGsd$3 z4zQZI$#sqN&j(Zm24f)M^_I?sEtKVf+*qc9L`R+}0fwfU>a*&H`7+uSUV^p=I!u5R z&x)z%kk(7BI5&D}w4krnYNo48+Z!V-D>_$LZNZ-zjOCKzmxHX^EBjMUi+B9lC6f1; zbhgbz7hpVCqChk*$Jm|{4YN$x$;xZb^r&Dz9){wIM6&5&{34gu&pi}8TI#uuKVZco zt}bEAa%5Spa1IO7*ieJBe3k}4BfcT)L8^B#YTh=%yPgv^=X0P<9`G86j|~y%j|5E; z5Tc^{x_QaOM4A&f!W9{0bG8-iLwjN|#)$NGiO$o_IjIh1wvuz9As*k}ztO#g8aO&P z#f9bG5JV+$!Ks?)iHnQ5QBqRtf`U0OViZ2YZfF&^G~myx#D3U-0y)j*C%TMi<#?aH z7!W*ga?xa6WA>Xk*lVMpl2ae_KQ-1AN>oYYpM7(9_V16qwD>jHZI3){Zos1{rdrrk z>e8B?yU&hqaYRT80c4g9l^9Z`=~Ya(#RDN{D2}gK_++YDN%R0w{-TIq4!RV*tTvK$HhHhG72Oq6H%{kUt>@)8O~=m>R|>9R=bubm>* zbFNSNsz(p7}aAgHo(Io9AQala|L+(Uzi1#k>z^Z$RjF^~3s;Lo8$1nUfY zvl=t4T*P4Zyac#;o`;Oc!I-WSl(4e#@XsCbINYGX6w$BokQnN!Rc!_HEah*trs$DG z_9No{?r?nJInR3RaO(*x)99F4QNWFk3+ybE_Tr61^Z4T`ts7~6%^7p}Ur8q(j8ItD z3~th$nzkQXoNHZ88cei`tD;55cZ67a_u(Ga6-c~Z)~UK)mLv#_5Pd2VAbYsMuFB!^dSfwZ<{Y?$6smyHV6S#CfYRD&Wc-)VT!%3U z-mlfh61{lkqxwOXf!`&3kH}MD1^@G&~P3>(3_WlrJKn|fCmD-}d+AvE8i<6Pw*sS^tR3``xMbJHp3aOwetLs^g|glj+g(T1;}>jO)>@7 zv>j^3C2G{d{;sJSjGvx1`SYzC{z6R0kbc+nIL(G9!d^v96yen0zv!TIs!g!HWls?6 z>p@ku?swVa61`E;}3#e4`_y&6>~28HFR==7fSM# z#>8Vof~Q&~-sspZsAs_Ou}(u0Tj*|yT$pArO`qZ$^@JxlELx5p1JYeevrjG(*azz< zb5$U96V5WTy41KPsTXy&U@B2KNSqgm)BEHg2m+_PQ*A^F@v(?aoQqhCa3ktzi>*6} zU#KLdwcY75D5!5{r?{c`Y}*{8`*Q*)nfF2E&{tC_{WU%+JZd2<_}{TBAl0B3UbP&= z>wt-<7v9y&LJC3TVo^u!-R=hofFjeEIU0c_P!O6EJZxo#=Z71AuG(K4EMu6 z4tc!e6Ol@?qXP9>307)O*3Ti-veT=UMUa%UZ&gjiP8spJoH?}H_ic4|<}xpJ#)fHg z6i7dWL;cla5gfAHR}r(p-LUNW7ZL`d@_d92XsDy`l;HF@D~yk2kmd1eN{MTT&5NpV z0MZ!WQm%0^Ok{7X=E2eTy-rC{2#q3DO?B+2D!`F6NOG{B88!bc6XQ3 zB}b3nkm&9rrhcl1P((tIuK+>#j(mtH5)JO+^$zsah^E}J1h@5d$QU}}`~QG$X9${L zhNM*t`@pjul9&5hL{A&$A)7T#rg1YN(ldlLF zw{ror8_`otUl^HVe}`u^`Ghgh?Mxvb`Hn?8E^Gw9BNPOaW3dtZQQi`b2YAH*5icQ@ zkyisg6MAv@I(zm&%`ocM49^?W5iw}P=rcHX_yOh(p{u;&f``#vf91OZQ35U7zf+&)FPlq0UNCj=A#xPCJRfM0%s0=!P5xi3OcS;p(MgDSNIbO)VzGKCrq=Pl<_bFN zO24D%xG5KJdwNMWA6G|3y$Y?X>}Wqd`88+XWZS91?)pg?7Vc8cU$J;C+4HOQJp6`4Xrblu_^deG1~ao_6QjdoVoAQwP^XSSM4q zvJjn&&z4-`KT_eeW-(scu6Yg?Xg-i_Q&Vs?5@AR-XvW>SN_6%dp}EUcqmKkyOz7L1 z$eGSx+%_vK2RVpUN(nU{?DWIVO&>Y!t^6{n*>8%9N390j=nj+9=Gjr{!6#`#jQkz1 zpbHkBH;fX`C?6&b_br{z@dvF#k&sskh4Lf{jYHv}_TgO3t0zN9yKQBIK6Szbj!Q%< z8vNX2-6o8I&C7u^eWE#I^iWWUv`+*_&{%GRNybFZ44?L0nu>o1(YERqTvzWKJ`Ef>MIu1{F#tJO| z>ufjBuzEooCmnkTGJ_L%>MkdSLFBv5y@I?sjb=j4Meh5!y_>*f zkwUA`5=nE+$%|+p8f*FvUN}M4`M3Q=pLLbS?K_sQF4R65z_Y}`FWK>0{7273^q+T< z>j##{L|%&kc~N%xys(bu2^fp>`byaDHmhmB(}ti(MrI_-Xe5AhQonQ%av@&*Sn`kO zlnOFlMGI1T@x=Q7VPYY)Et~UAT#N|v=mMP4$r+#tyce)Rf|Ze9JvAlw#%LTQqnN@G zIXYLifPx+`h(j6wIQ@*sWWUwb+D!{5Sz}G#w~@F*{DToOkooVpQb{8|PNV()RFW-} zI=GU5cNohk;U1`K;r|GZT6J#geWP!0h>p_P1KAIRD2!nh+wE#TyZgkK};)CZDi(jb5E)-NeRq`G_cGPx4f+Q_n z5|#eP1!}4PcRV|)rK)k~aj4ybx6Jy1C>uc3GWpSY$me8);KlPFAv_F;3br*ys3R~P zm32!f1AZ$dP|EbHvQGcom~i$so508U8iMC18H6T9Oj*}U#g&EU!tsoEiJIYVWBX19 z;(8dHw;pK318S`dP#(|Q=oHQDodr@WH)uPTS)LzEN>O_@eqf2=if^rud!`eRW2Oos z+((~D!Vz!8R`Oh*i(<}_SrV{V+y%A!-Mdgy_{78=(6eh zZVwj3zXj?tf3W$VaJA0eeF*6^FGvTqU~rer@FnAUD$aE=pm@CO`!DG*DIvuCeiQ(< z>w$Eh`FYxR+CJfqrh7glOQ7uOGY=`Lo#%v8pkqr?j*+gatwBi*SH;(5sh) zG%mxr!kKm;7xYJEa`X$3$Ho1OK}WQRJlh#I11;TPum`$njMde7fvr5?rzTIF!G<9XV@PtR^OSeX<5;1SRlteeZ)Yv~)gZHd!C*yr2dEjYs)(j4 ziW(JRg_;iVJXmdFto%W!6lY&K$<7qkhQ|d9as1R_u`T-+wN@R8Jgk{u*O+-!eR+Ah zc4$$N=~1G66HV(|CG7q;kyo4wc(6l>d<>Le^%PLI`hF>zde6`sQ69mBRdy|0Xfq+1 zDAft`utQ-j1?9ScKh6lQoaBHE1|E{C2&~v%SV_mz7=B7k)~;7b7FR#Y(TU9dR_m+n ztbslUHZ*NtJnlzkR7`Ah>t+M~AQhKfD5&#~KT3?mBzW?wF$4zixB^ z42rvZU^~FgbLO#ubSya-ib__tT-JyB+f*R!^ZAkc9MP={#b6XLUO2u}?zc(i5x@b54W1%YwtQ6Zk zwz)10cyyZfhJeCW>8d?;nhmfKWBdJ6;eh|Qn;1I)+~|x$*iPyN?j+PM?ipBnP$htH zkFvKiZPEq2X_}3ez2*=YZ~l?NEI!q6hDDqOTfT^oNBlSz#TC+Q=Hi@HSjb<+aDAB~w zAT`7gDto*bRSCacrlE<=XQgh+u6s)0Whh^17g+x5mosWkyO^ZmNy$ zm(5}8HpE2aU+5JY6F^L4xZ9)}{r85c&{Q=6i0p3k-+gg1N35Q@i%Qiw^uPpf%4X+R zWP{6BFXOoI&N!}Y{P$%yAWBlQ9KIs8R!D&s&pB@?;KXtq7VXuFt?DwuK6im2&|fVn zxL*r!NrXb=Yf-^hr5^_CDDrf+7c8IQOD4VpBn4XGs|6F`;9t+XW_8aOT(s5R%20iy zUj-00*)i-Q$?`1vJONhN##Cq|KU@um8!!IZX~=KU-*sdr!FeDD6izCT}6r! z;O>i?by_-Q+V6PKvsc_l=vV6ktbYX z`BioZbU18do5G-=>E``ltk0fqfaEOGOvdG5L4v)Af$VX@0p5c>8qV5CN8FQ8io0`> zwT*gFVFaw}z4ULO;)kfF7xj&|cD;VXKx56AcoD6t`z3Dgfh zCJ)guZaFEnMka5M-Bm4kbL2sn6+pB+YQvl0sA}d+IYCl2Z&F>s6v zocN03NBbYB6SzZ=yYC#2XvrMYUHhVyetN~!fN+>ZrzuZ)axdf^KwwGx7B4D$fDFn5 z8|pT^xRzBPnSg&ueSqYZ3XwJ3K}W82Cjm{1eNkYU*0Ob?scQ*E~`teg)j zUt+jSQKm!0E6s{WLVrNFYp)+NG(>C3LqLTV86ll3kr(*g29Cy;eXSEr5G$A;^Qn6J z{X5q0OKy{FXVi&z=Z*>t5>?lq5=lyC2=zBh_v`l&D!e|e#Tt1RTy=*WrKgKKw2~z4 zulo@isb`JY&|R?UxKlI+tQZx2ag2{kCV%|}sht%7RA+;ZjhF9vWNVjSUsS82x;o4% zNk1vlZwTw8w$yt*$9tRB=iH=&hou39UBQ6?IN?vz{0@vpx0E9rF=TN_l|@dOoUP=@ z+F4$;IkGG;+@&;lQ(oc;&PXIB>wiE(TvECCZ0!(~Fna}^$&!6L9&}cm>DlNiw zRmR(ta7itx$y|r7opv=$*@-@T$ycVbu7*z}O-Ttbg&O>MK(7f5sAwIDF9W>!8;Tu* zM=rCJJm#^yYdSn2Lp8?9+-!+Ux~roT~}ss#p5@{sQO&>}kzOhM!tvMXFB z_sWJ%aFlP!>6uSU_(B=L4xZKh);%A6p^cy|0fbw{fs=e<-HAvz#U#uryxrWH$Q?4$d~N48w6<_6B#H5HV8i z4lkk50?o;w@tUX4`SoX*o7r4_Wbvy^ug2;OWi&}%(t8Z*ak!v=7&500uB1EfaLVII zuQiQ>wDn0;|2qDFDfT~Hmt3K)LqoE7N$YsAw~thA++}Crl!n&}YtNKEtL>u3V(6bj zL^EnaaQh~4uzuhD#Bdx4B_aI;zpvPPa^dWZwp^wPM4n^lj}9}ma3b?5D})bA?Vk0S zJzuOMrKu(*6qSe_$Yakt@?@lhBSA<3G7sgxqmLX$=n7({<04inS3qGcv(AlcPVSIs z$ycxJwsi?^psd(c=NJ?6f3 zd3NVfplQG$nb?)qda6S|7~W;3cRd$`8Sl9fS#2Ej|Gj04vO}ozXAZWv*pI#LzNCA; zF6E|#D++Id_f3wB8_b(!aVKH#*x%4`Iii8_bZRKx5ciYWTG;<&M#y^lMnL(%4&Do7 z3l-lzX$vzbwGkJTpqg7JZm!QIdZZ776J((E2k3MF%E2%1BQi2SfY3icXX_-+jd4Ed zxv1&nF8eXyj39}~n6WyamK9b#)fyMG5{P@e*!@6W8%N1Oaaa%p)@WV9T*atdMCs#; zj#$kU^qQ_IK}c-)W8Sm*XV@owBJR=p4}}=1)?Qd-z9gZ5gKiw77z9Rn@v>3WRXcup z)u_YX_)w4f*ZchvO^i|C_#3rMBws+}sm0{|I-g9Yi}jM> z4m=sry23IRLTh3t40nHF3pSJ8#Wx$q@Fp=`h6CTj`a-aIy*fgq=iJm1xsm5_awjN* z^#nv_LtFG)JzdIV&vKDrBtRZ9I8pR%%KAcO6y3#f{qa-69RPvor8M3XHWlE6WyBSLoHBdydtL0H=ldsN}AGwydJEb)XQ3!IK zg&+XcfBJ=vKma?6rppca1K)75@ZOf`(fNZIED#zoJo&&`{!{C&o{Phu8b*=7Z;^}H zN-hjlc9;hcum_T8d;jHWS3_HV%)lRVGvbCKHLleouk-#4@~&MeQQD(ei!V!e8>uedAOdAmg#HVjTx9W-*j2)@19$vkxw%0Ml*Qe$6nXzCOR!@lt{!7+ zY-IRtMi9!kJRqezix?NOAR{hJ;QGRx(KB4jyBn*7ZClRyt6m8|Y08fOKICavS8%A> zg8Pg~o$GYTb&z~1ZC_U^6)Pt2yTD(|h=F`yQh4BZ2~A30S;6yN)0IP+TO!J^d6wqx zRD|&yj3s|EPm)^|3ldRR^6UXp+HW(`!goLD#?NAO zv%JKC3m(RUf72V@drgrhIG-&d(l{RB;1WEr(N|yrRj^jX?OQd!h%zOwuFy%75shUA z^8aII(i2r@)Cbr(6;q&q_pyE;Qi)Tk=Ma1RH4`!!@BquZZ>S&%X74K9=OG9u{$~Rb zL6+@%Lq*T3`y?5;6V8?FE-F=7v$MfJujwe2TQioD2BRQAJ!yk6gt`fwCA)R)W+<)Z zD%@XAkedV^Au<+GVsz2~w++54(I zvJta%&8q=rL^2%9Z+km^FG);ZDV?1VRgIY{jFcY$jbg+|jGI^*t4_P!!i$^#YTusO zrzcXF8QRwq>afTiHg2$L6XfcNJvJk#$^H~FEJM%EMDEK~Tm|E5lNDmXPfXl%aVQzVepf5EW(3Yshh$VphW6HoS8 zeL9qUQwB`oVYTRbHuYxbnbIpt*Wu-l=GB7jB+v_IjH@#nTC#AH#CUZ0@_p209k3vp z>uZ9vDn7vM%`zi;NEY{p?p18SV0A>*%rv*=9xP_xxlK-u$^u|00eZ6N_j@%sD+Ow@rs{Gs``ZtwNyU1l*ck$RJ{cr zDDGHyvtxIKQw_lGoy>BTF#BMFHx$r$;)@$YYfl(Z!)rxsCDNkCI}~&D6;XV-#UJU} z_|X&eO-!oUFgGpg4y&P8sJMqwd#SLOUz1Jtkqm1)Mw6QrdyXry|C*%C%}enT=G=B_ zFXDAy`CJbSMQ0JDXN)S;6$gsDLy?dEPU{Ub5td_zo~F|>#R<{-1mMm_CM=h1EQnI} z&P=;f3sGX7M5=Npl27ydz>@r(o;#?#yQ81 zuCQeWgh=Zt&Z8&xbma`!xWk@mc0;yS%E0~Vie@kv(I|~|r#+gs*cI zR`)jyk9;Dif$B^j5v4DhQhh0P2Pdr<0HJGElcf+S>?|aI64JSBW9t#rOunB#akIz( z;L6wD)9kQ;KXw21@J!ks!v_2N5Sb`$sL<#KELlZXfb?RS3YgqDl}*W_VpG!Qf|&Wy z9VVwqtl%3llZ<#-f&}Mt?NC`J=%^DL1dE_8JX%!@aCCppYVVNK-ws+Z69*Zl-C${- zN`4}i^t2DJN9g==#q(t$T8XFw8WK=d0Fw#SghRqYxCfG>6OElcfY!s+Ipl*kbqk6*MAhT zXQ}r1Exg%hgX-?Q)IPW}H)`D7N?n`CiXw|V569<%*#3VN7z{ueLYZC9Q1xICp&*H& z*Dcu{jN6nS-|Q>49Ba5TB9#pl0?aE7k|xb@8t3Q!M(iYd`Mmg{s_Ib6qEGWG86?dEV02~@&ccU03UO{{BwV{%%abLmA|IoBJDTbiT2wBQ0tNVw8w|h z&6f3>cJ%aK`uBNUUn-Svl|<(h*(*;1;Ymg1Gy5ektjKrvL-e|P&>%Pm{-Iqif0(Yp z=9Cw4A#yyviwn4!C}14+a2laQMJ}AONull4qD)XLFR@a7hgIavGM%ET7hW9Rj3joq zlip&3f?Uu7{IfSV|7*@PkSe36FO{q~rel)JyiRnza@3rPDF*1S$JV?*XksWI`d32Y zKgNHAXNOU6^}r59Wy7T|USS{Bw5SyzCUXL*Y*V1=Hx2-GJ^@p8xFDQ76(_m4-$yXa zishgrGunHmxoq{k1PAF10PC1G(FQ-foae2e3PT%uWnjf+Xr6s%UvpRZu?B6ZHIN#x zEgr`wREb#;$O=blU4Zr(t<0Xs|B}S~h5yoEn~yd<4vpMo)_`5X-N809aqbFU*>Wb5 zQXwsAI5PgF+9g7c3deE9<#w~6IOoy;84k45^5@?gX`N3}Hg(M>5fNMSF>~M>mn+@c zf*fSmxLoN}H2nbo@tVmFkpJF0asAfuqp3(Y=i%De^rs@U7Ls|JmW$7u%bJK(5oKM~i z4DA%R$W(veq-Ai_O!3IV;?=eJG_CU(!D!PJ?kJg@+*-T3md2L#e^e>=GEOHZ$NRUl zg;*@o=$x04Dfp<|fZPFHa0*?pXgK1A{xmQ&B!z56*tU`nMz61^zxGvC!H_YAm2JA3 z6&5c!8Qpo@`boldIN$~TQ1B1gf4XcOicdTn?WFr35h72&Rw72!+}dp^@+~o4ln4pTLI`VhXg6LCZ+wiWeTJn;OTZCLF5P!V@^SS19PE zQZ>Vqsf{6)jR-OeOz-Pwo*6dPqghI!sd2aP$h4Poa5GF1ZAA0+;Ep))#fLt?HSB=) zzPQJdI%2VYn<`fea+uGAPN=-cguwmd%BlbTdhSL-b4A7_uD-6#b!EBqNydiI5IV2N z@~GZBH=tvC%&gAg=0Ndcba-SJc~LDFhrt@j$J5yT`8`4g*D~- zw?jLe`fA$C`5V2yoW}2~rnX_PeFwD8vfQ1+MPhf0<*?7vJ};d;r^zZv0SisXbY66& zcIdw`S~yH}fU(7o98VsVJoZ=? zg3dQ1d!Kzhh%>89JYZb_a)|@%cbP1f7Hs#mWuIzkLYEV*F02+GLryZh|GdEW--O`E zQnl*#a_RHLAU_c_B+O!NHov10b_kbR`KzV#wBAYNOzD~tm$Rmh2}-%Bk8we=p)<%z z)(f7vgwL&Y=m&-=5bqnOp^r-EB=H!c4iE1Bq(h`9tRqz5)*5Hy))5X2)W7$igyDc; ze1U8+1*w^I13$cIgb#I=^ywO-7S{nFjHtyCb2mDa9*fysBPVCXufy zE$x#CQbK%%N(nH3FUvo* z*x_?%47-#o1qwe0a!>tYU?Vs@dpR?7ua=+eVpByd(x$zKZFh8(oFta%v7dCOVRjRx zze;oDfFH~?qqtg>c*dMKenr__1-wbAT#a}pUOHz{YczrzRonJ1dQAF%>ny#s|F zzNunsjDqz#>MvB5hNz)R30-Fdct>q+U@EE{JEYL!NxbvdfXl}1$eEw`;iaV6znwJ1*rj&ly|A|MT9iEsggM1nvpE`n30sC z0-uvhs6Q=TTLqq!i;F_yaSw`{t%Q7g5V235{-N~Gu?efRR(bx4+0fM)7?W$9*?lu@ zGHyWdIQQU)71^hChtk*tW9Z`maRA=AH^fJCYOh@2LBbM~n-ZxKSs<;cTv{v>-F}W0 z8IyY&XMCJ3C-581bdQ0U<8c7Wj!c@}Oq|XrCN}(UtVYO9rD|duuGYPVo7>6^RVDaT z2^7o!)&OT*gAzqjOc-C}yHa4JS8Qi6tUTa{yCf<;AP3`Ad)IrjRrhJty%DqvSv<{c zH-6^xfF(3Uf3X}#UY7o7CSZ&Vr`37lsBhS!iIpE;FTzEg0Pyp<^_*T|^2K=)9KAkPI9<{0<@YlRy zdq<;mi`s4k+R4PM>j;M&CRRR0JcQiu%pEpzcFGbS6zK7530S*hg+6siYffB~3> zES7ZJxO`{cUcHu}gc6Q}%j88pEzAo+ov{p-Ny{o3;yShNCk&h#6QkC`$%#yChe0P0 zweggLqS?>9>j%eCrPrO(+3?XT3DzkGDgRdaFB%ecr7WLfk|v6r+RX%f^jT`yeqWB| zxWttaR`n3|znRoPc;F_xXM21xT0kxWKyTM9*gwpKasQ{hq;9uf9d8L>rdeTckC*8x zqbiGjV`#Z;s^V+`-;S8}p!L5+D{X6-=Ut8ggWa$28l``H9}eXCbabAhYDW646kk|B zkklV{ve&Qq^7AMx!URJUK=6ji<^ticAAr8@LJ30UvSd@qTxWR6%Zpldx;E`Kw&}(~E4n_QcqqX02EU z-QNJfR=@Gh?yhkr6jpLpKgnw zkj=|m$h&Yzy|OMUCCV|d<~1)bgii=K$Fg|8jvrj#(UO+5?CX3F!GP^~5;Sr;u_-6^ zjRuTjSnT9W=~`-IDl;dliefrMd(M*w#Jl!I4{?-SsKFb9n3fN16QG?3_17X!3c{bB z&FY|kj8BQ{eRuF#9xy1zQ#Nq#P;SC-3)sORCks66FT(M=D5oZ}9DnO^l2h3RjbHs0 zzOlV+`%%RBlU(4xJX+1Z4Ouv`z#SwW^aoutG4No$Qxg$?NI0j2Ri)By2D03|I=adX zv$d6FV{sDX2RhThQ#ph6loiF*#{B0aadB|KNftsukpN>PnNd;UA98Q(r?Y$69W`gm zN6WRsS%(ZCN`08V%dnm^POP+IvDJ5D?ttHRF2 z8IMC0$;L@I*B#8!(HAdhOj{eEy>F`WSgfu+R^z&Z>5q94qI-W!-q2ahUI{y9-*MG^ zg3rF#$c!c2@+#l|FQ&3)f^%muo)w;vPocmSDFusBpY* zHPgB=$Qb7Le6$;eTvO;AiQpA{&@i0=K@}AEsx8^Msot`s^+ho2-k>M0anTB(1nF+8 zNjT}Z+UbYDNlE4ze65p@qcCN~?sH|ClIz?Ks~j4H`=w4fH3g??KBeFs>6lC$m6^?k z7~0y4RH3pz!mn2KD?+cGi2+W%YHI~0xi=@=6BaY}H_ZJ=-3*`0%P$#7SWZ4#34Ag+ zbBbZ@g;&6?S#nm>!vAo`4?FlPwrWK){i^?!p4B`PWcmjA86`zH$ge^&DX))_$TXry zZ0atMPju8|T4)6RxU2w4wXZ_TcLeJLNktZ`7W9#%P~sq3&q{Fhtzh3|@91u+@qVFEoXS-zo&{c%a)IkW+pXlBG z=0Gm{Bz9UL)x*Qmw!{hvAmVnq9AbKh$yAI9)MIMwbPSh{?UHZjfJFx|Fi!+6C$erd zKwB4G0))qi?tkQyzKHPE+6mk;0y3CV-9w(F!r?*q2s@*7b*^`VnLxwuK~{LOJJ7I5 z95-w-bx8GWi)kP|#`g`?dLfZDZw!o*p)Z77yjm@x%WLD*-O6X- z=q{V`pCP%*qT%`-QNR7C^eN0>rr1*7hKHAB2(lE77S1Sg;xqvV)z7+xg zG43U3%^_?`9LO?dnDwÎGp!i08oBE#?ilg^!_Zx4aV1BVJtBK&Xa><0)p_TtUZ zEx}E2USNC}V>=ovo^NY(T@?@wOghv&y2rKIZABfbj#z5Hfu?s?NXh zfk%q6ZKrdGw~IcU-bTew_I$c%f}FlwN5{n+$9~Cd503VsTG3B%CFyhmo=5iz)i7L< zo4=G`p%F}~SRb+}#I5jW*>9?8()sX&2r!X2yU@bbrziA0{yWPiFa?~CmTqb%;Ik{6 zy5Rxn_7e^#GAoA->*T!}GsBf8_J_9zH51W7k%;p{?n4@to|YHFao?j27Yc-`j0TD;haX5v&)WLt z%WVeK!&Hx|puz4w&xR+6vhCb2D-gFo*1lNUa1zRwJl5Kv-rHpE-;Dc`)dt{6HqdvT z?8z8l+P{HI6A_jH`3P7OSaUxyt?W&8f{*o(O7%a{y-9Ggmi^TzRgbro!zO{S(zd7? z0~>Kbu60fOhz>0FQ`$s0aN@My$HN~{-$LkXji5|lhW#B}{^>@nkn9198=B4D(}bvq z0MzYI*uxstBGZJzdqcXE9O4N`kFPZRR2*8o3qaaBx8wwEPi)LrdoOvO%!ppZ#qbhr z6Cm-;{T|-M>F`fi<9ve;t?41EPUcQW2tKjM2sB=XLiv(u!8vj^OCons$ zy1WZqZqC#67#>NGG0RDKFJprN&7VWp%#8p}u53s5dcBAx#9d@{2?7h=$&;Zz#mA~M zYzm>u<_PY~Z~4$qfA#X26`~fcXd7ei-JaQUY2JF0-1<8v3|33Vzs0jC-;baDbLQjH zd3c?*%9PmI@5|4m4q(tn_f$xdHAr<0;P= z$mX#xTG(ontap+|Lw|Z^Qn8>^5pSRpNLNZEo5@NF%cysdk?e?<*e7cX=FIYaY=2j1 zVx-B*j9c2etoe2+5`eHH!NdzDhai4y%5AE$XmPsJLWSs#F6UvJO{8Jy(8Fcqgz;90 zDcbo*MZYzo29edwYkQBCF~$&W-DQP^?>Pj*zfk`tl7gT!=!f(T@}3sp+)D^~Qvq=` zG5=d5c_lT%lf0LoViwQ@8R?wpZY0LkA+`$dr{k2;%J*L>gs?a7CXG2CP^YPz#JWvq z!LT-91S9yvA%tU=5xZcT)Q!}pKnEhLZAsQ2*C>X}7n$ia$NgEtan4*03DKt5KWkM@ zW*b-2e1=6SV@J}yuCwlPXqNO?0dv_bYTtZfqDtbtzFU~r{S+-^5CK~sby&JtvP+S1)-yE_nbkywD-Ip0Jv zJZa9*o(eU~#L$NLJdP3&zAtY?)nA;(7vptc7n$C6D}UySQuN*090sH(50}6Z>N9um z7hc|EuahA0#GKOSHOeEi4nF=w6tfO+P9=~yAvEH#>e(rBez+{`_@;B07lYXAhHi0c8K43Wa6xQEjcJy)cH;ANudZ zV%;zm$5RG>*3q0wQY;7NYB19`fZy6EuVZ0hU7MTN8h9XO@r$!iXSoo9#|12_>}d&k zoV&2^IZImzM(lJkbdo2AVi#L@K|hRsF_iF6gKszIhRzuGod*o&Trpx6HrdNNCU` z{(Ao)Qf){(AEOq>2I@y#JM~2PKrSU}4{U>E#VlrvKy-z4QuTkER`!`7b!+YKBW0)h$&DHwa*oUnO-Ai@^A@nG4A>tv@ zs6yOb?*Fe^l1qK()t$3g>(Yu`Op9f*V}AfA+u%d4-VL2B?GOPyC1aeIae6mhmXpO* z{-@582!%cRO2zASe*;7(IC0~>vVins$h=Dg^ozcc&~Sf3?4b@Q@4zwxs$1@8ly><$ zB0C0bgUb0s_2!l0dWWU4NgcP1&o9!DkXl%v?IdEZZvJ%GA}_D7F&^%@h6aML>r#uZ zp`ZuT*x|dt`;SvZB?N3l$>8KN|4J}4>P&|*%aRcMEV%b(8!S;F@}DYq5)=Mf#;N8y zj~@e+nq`c1wIM;t=zM#oC0ti$ z9~zdf%FUR132V}#QRMHOLTQHB)TXLE`XBU*01n!9I_yj?{7F&N3)aGGylpR7hAHF! zV0!0Dx!OzSH+kWI3fhC0Z$AA)?JL|7uRqBXtzbYf<`bQ{hd5(idD4>*LUfoWBYk{& zh3f7s)!U_6r*W;h-!~Cfi3MFqpbcNG>uBOxHN(+?Lu;su544Fi7bl(|(n%GY?8&x7 zpeP0hVMX$dc<@%dgr5|@rlFn%ntrG^?kOhH#=`;2ljchr7(tqi>K0}L6Y4l;`>$#% zBIV`%AW%-shH4})T~Ek}={_@>q1shWHEo4;#pfYHzR0f4lfwD1|AqNTrL8>g%e8hl z8I|O9z&ai_909S`P>(|Y8>h?*TwoCaKS=l}IsUL~Z>%5R4eq!B;< z7-=4D(%^l|&HDOc%7Stcv(~ob@;4QbT?Ir0vaYfaT)sgByY5Nx?*Ji6DkF{k@~@-p z{Nu><_b(w()gDVgE4Z4=gm|Gyk|U!pBX0;Sgz%GdzZMWxJz^A{^SM#TcbXCCW1i5^ zemyj2_CD3cNKj=zdH2VECaYo#R=>C&GBL^RW_yj#XH|!rqx7ug#PF4Y7>|zzMJS-0 z#=2ZJK`%uk*hYAz&sKn(b1{0Ye)e28*2mrGc#x>SO165rb<~s@D*~i@Bc+st3Lhs` z)`>($>2f&W`SB?+R>~5LHcNj1EHiVl*7l>wo(Y4`Kj^6%vs+JKdei^hOn(?t(_MPB z_f+|g>nED#YqZ*fY#+%0t}@33<0#IuBIomRDaMBnsp}}w=hjLbG{lg?qy)ROpb-pD zh!5ZpyE1KTG6nz^co>iB$RwsrwCf??NKs^UAp&lKn&BLR-jZi+6@&NUXBs>80$SKy zmt7+}Mk8LCFWOFM%R_5Qv)4GBi&bHiFU!A$-*=(PP8)bE&`Mo-dMV$C z8rKcMg_yJqvsDC;XU^R&ovrvw-)9j8HbBpo8Q)3Xk@b3+@)yvg)7Gv~E;P+=d;6^H zmEi0+?kP-W807sKd2EQJ5+Q96??twcW`hhl)-`1=xF6=m-5+$7(T2l@iW{Ok)%cY@ z3Sn{`O?w|;i=|D{x3l||`bd)^BH9q88P(sC!48udcTI3Wl0dRgV?$p|vo3wWH}W#3 zv>gf`qFZY*!6l0?HA7xa4X{crXa~!}ty7EIs>Myp$VC;T8Do*;+G+IL_XLjxe6ruF zK?dTk=FM6}88DeNlbT9S<=lgTz&bf3swG8dphzfP=O{lbD0vYQrFEH;uClwM6DRIxgwT(*^Bop{;pJp>43)hATDAkFP&ouk2dP$i=QmuGqR`X9r#0 z-fWa;A8oe#pWkn@6IjgmbQlR;!E|pf=xxk)w0vZ6e$*K+)mM5MQoYcAN1KWKLkvjK z>uHHy4)C?Nlo4z&LOjjQw({n%!|6uBQb z`Zg{-<1b!(ijPSV0T%zkc$K0d12HgC+Q=Ij\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\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:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \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" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=*100 +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=LAN +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +add address=192.168.100.1/24 interface=*12B network=192.168.100.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + BridgeLAN routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=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=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260701/20260701142001-Diff-Config.rsc b/MikroNUC/history/20260701/20260701142001-Diff-Config.rsc new file mode 100644 index 0000000..6904eb2 --- /dev/null +++ b/MikroNUC/history/20260701/20260701142001-Diff-Config.rsc @@ -0,0 +1,2 @@ +5161a5162 +> set telnet disabled=yes -- 2.52.0