From a58bd1d99f61a74707ad34c7a41fe26a4591863c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 03:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 03:00:19. --- .../20260512/20260512030002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512030002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512030002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260512/20260512030002-Binary.backup create mode 100644 MikroMaster/20260512/20260512030002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512030002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512030002-Binary.backup b/MikroMaster/20260512/20260512030002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1e82d9ba531291782d1f7fbe9fbed3bd12f5236a GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3|VC$wfu(IQ6qVd^>ir znAtnBG?*R?mD&vYZi1Jsn8j%S>jDzYeXrDh-;?DVj4p)170CDRzjd67HEOku{q`#h zbI?d+8^~Ap5Iq#tCIDX)=wLDmF|nnsZxS}aT?WDE9q$i8#@L4nH4|A$qa-v7l%co- z7!g6DvNKuI``X{Jk&phFj%1Xl|7*ZaZ%0$n6X)^GH!sc$ME}_~GN@8&+@$~LLk`N8 zS=DQAWYV2$9!XIe;D)Rre4aqzsj-4i$?;3!JBSsz1~D)D;8vBU<+ot|gOYq&qhvu@ zcX*_h3x#cR&CG>k=l`}&)kJGIAW8SZFM91IDBlmXH5F4YzA9s)l7z*rh)KMB;i@Xb z0w*-o`!g}l6)ZCmAXE*luDh$~K)_WHfpBC4du}inV76D$YPV-mP3ACmP)*-_lg*uE zJjTeiuJ!K1o>+HtE2YPD+Tq4apvR4ZZ2ppifHr5?YyAv#t?{r>>R0V=`D?im)KQBgg>EDW-P!)Zkp}5{L zllh#fUsg+k;M+);`$vdmte?9lPde$nM4JmR&aNSMTMi;#Z2#B}Ph8zqh!b-9oGLS0s>W7;WL?0*rEkqq_JoU5*R|L(AZhH8*= zC=wKPOb8aQX-#VV0mS%MGr!9~Jnn;6^+Hcl1uVBebxBxWLL~Wd(3Y(KrBSZSeDNqK z^vMA(sv+|0v+us>^MV#NL41=DOoNv~t8SW8O9gpQCj$I{`A{#zzBHR&didGpc53=f z{lxE&+q4|(N5mZ3U0??uP!Nir9b%(cdV^>y5t2*c+IR%(Q<^ zQj>@A)bysfznF37SG2SPoV0?aOBj+N67ZX?jo7?{Q)X4&-�F|Lap9Rks>4DFrAI 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

ynvEIEpaU!QsxD)92|5hk~ICIzL&t}??WD4-N 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

    NZ6#4vd|xs^P1 zJokaGD^0&$S&Gb!oNNMUtty~Fu`znX{=04h{tgv(aMTfjB=Xtek&D{1OU7bg;ELRx z@eX5Ph+~>f0RxmZSv;^_o1`Ek_j|0Id$yp0z*`LIAcCjzNBhrykzEB5$`MVQ=3}^5 zhtJXeD61{THMyg_Zi6-xTGKL`;}V7%Br=!z#CzDSI9ws#`r`U350y5Q2NiMe0WfeD z<7J>VemeE++(p)q!fM{-wE+WFi)Q_^44lu{fW1^$O)n@@d@hNt_7SfT#jQ}*|4*gRS7xyQoq)gt&xN(#VYy`87lESX@ zs)*^s8SNV~TF2Yo)u?ZSnv4~~aK}TH`=>9wIaxZ{D_3k1{Z1Kno8p6c3aqUwZY>I} zk*3HHzQZdYq_|@7=9;yky8bvJlciGv6MSR)a~D}-pV5+11wACX$Enzszl$f)2I0vc z*v}!|X+qK#AGLuDde2~pRBowPjXmJVM>c{v1gpk!M_}M^td{*z=HMDzZmiq3F>-^6~Ai@#KrggFKbi+F6hv&+uG6Ui{veQ^iGYF?AmMq4a!gnCCURSyv( zf^nbVN5{@B$`z}80674!h~i&YxBgE+-pz##v+s^9OD~~!y zNq0yRBwx?lLHE(8z~uw~=Xtw}m9LJ+`MOUsyigwU8iP83NJxQ}n^gKr5Yt@1q1%k) zy9$7)KIkdxjM?mUs;Hej-)&!vMuywkjaAh>J-M(4_~jv03eFtCsuV}^o*3NtE;G>s$`az5mE0* ziCYZfstdp^>DUa9zE#@&D|}V{8g}K38eeW_EgNX`rpL*}=6##KReLgIS*#j5*T}ADv%oYY*;%ApHb_r`P-aj2zH0l5>28xp~Xs zF8n%D-m^CK!W;!xSt;9AsT9^C1E#v$Dt6}8%+E_72|TA}868A-((=R6~&vuvEF0VJHOx36RtO%r35&vZTkn`|=jJ7EIZA zTJDgKG|g5}_UBWvv%(rQ$9}+4<3+#meuKC=2dm#*Vd}Ug(2HQJo&5kI1t@{4L?>21 z-1gJ%AQV^Vk$$byaY5nf=eyYeSdP}`Kb$A~cGVX`7QxAn2d!X4;^P0)j*dF?JttP& z-V_uH!o_-!a1*hG+j|;qy&*jqoPy;F`1G$x_yt*kNTkB#xleaK14#y!rjn$r&)K>v z=UELwDWY4*@zlvdDV_sQ#=mRy0)@+J*+-LpmfFKvN3eYCA$XF^yxqBfIW|~hW$i)72^jI1K5(lM);C_yCgv{^vQQvEN>Pjql;5iDVkXngJ?#T0_nbYZkE=z6N7@ z(|TMij%b2#lT~{D{;nPa2u4(Y%cfl-#v}?y9!}SBIsl?!iaZ@P_FdxI`X!s~QA>^} zmNYSPR0$nMI?hzkrTP4D%QG6_DQXPt(ll9COK_Je>j#i?C@aMR(X?PC;^+v_ue`Rf zlhWZ4eZZXvAXIvF^K==jWDqbk<#CunyYaO6$)R*(;@m0U*SX?r@Epu5t{72~B zKs2V7EehYNSY!M1Jfcq}7RmC{oB^ywpvBQji$@Yc3RzCENIRYM9$IaDZy*e37IPu5 z3qCH6Ca=~f!0UaPAVkrE)HF%qI_l_!XDA^!0(0x=Y%2~abX+_oR9JYfevxj*%>u~5 z*5=C^5))&9v-cjv3FEgrS^K>QGJn&jpJ9*#JJ`8Su^(f^Kp zsUN^d@LezLDz=+Hk$4uhjzqfqP$%WxW1OvrxuK@+ldrF6j~E(Bo5O zr!AGBt;7R1&QnUXmWW;!w4oJTT8|v?|0A_&C3_iS{b0)lOK_Y&hI@F52k1Jss!GHk z(%879cwuFfWZbITcua5J{F}oQG~c46k0|xN%VDDHXfk)Ovfrp=E@}BJH#d8VQ$bPs zJh_nJ=onSqNi8*Yy@a)J#K?anwMW}c>((NP~Hn zNi`|=I%iyy>W(gV&;`%awLGO&JnV+h|DC=wjQhhHkLy;gU7 zBcIsuBw+cizTy~N5L(OrLq0+Q9i!9Mo|;vfZq5@B9X@Z4ysXP>q(DfBP9PFf&2&N{ z38Xwbt`=4NjAaj;jKOH*Yo6Hz=C9fbn`72B_vY}*XW@w6mYAPbXQA@;6Y-jLzP%C< zvc}2U)w6eq?Zi&9Fv?_#i3nBw9kU{MN?dQ>`cm~^%PnI7vMZ#KI@QTw+Ow#5P!i1X zgFrI4Ndoqlb%eFH)&Sk%-XyJ}Xb`D*Tz@QB>xR;|s7hnH z-70n6%0n*s<=nmF#pTdgwFpmlsG9@Dix=KGypKskX%fhGv7X^UdEoq*>1X%M3$+_G zByL_SPf$da@}TQpTXI9o7o*A~JzrURIYzF0n{BxHE1Z{`Je)+NH?CBhT&1GyWxB;q z;?JSEr~EWRx$dkm%{8!(>QM4|M2 zYg%ZKg!&yHsclT1MUE1s?1Q`y4CipmiLHC@+9wft7f)!7Eo*4OUcO&hUd_K1qgx5u z4BTH1a`nxlAEdhO7X-l@JEeYCe<_AGr38{7azle4_>fzO5Vu<4 z1mPd0y%1LsM+Nu=R$2@jOMw`C*LI7Fod6anGNrntB=U4kYJ8WoS;0*c4?!ZNc*jW_ z2o#KWuqaS@$;2?Py{r-MV_KFH2&qbhTX2W@dM=ry^t@98P@W8va~f!pq{30@+wmCz z4Xe7H&hRdSu;4q5-sv3D>YCzHqWa=mF<_6~I8KP$W0n94>lUfBUB^(N%uy)2hdNGi z+?On|My3E1cuwHlV0!{Lrc^yYD>ROe#R)d2j?9Nf`DOo+W6ESKt+j%nyk8NT)h*a6 z6J*oT@Yt`JQ_!&M_Q5(80llLM(d04kRV0G2aDd92XVc%8Y?c{vRvXmGSh)h%BTU-8 z%+L@%h1D@7U}%wUdkoVONJPPfnuw$QwInWQkA_AKk-`zd0Rv8rN$d3NA4W$84Guze zQ1y%=snbPz#vC;c|;8%zsoaZ zcYmL|Bt`d864!+si~eCN)223{`OvHyCTC$YP}5|7(Q}2pdxrG9{;3YkXbshx1}XI#Zw#m@`o%2Q)=oy z14GFKWVA9~{7?$Qa=AMqLgIL7&uY&*PIQ7nLe`t#e(!^(45aekgeMefb@l{?%OX z;Mj6iELuYYq#p%1RR!ycdpwSu3d#{y5(Sz$nvxC-ybAV(q#*8N{y3Z4=WJQ!V0Gdf z`;Dpp?y3k8fw?jg{Aj&KDpz3Cp5bH+&f=dO6*#x`;xxjL>XoeOy%W*+syTUB*EBHD z;5Su13r>dB&jS)@$c0r|eb68@4PlaaaW_?5h%s-9EduvWfSxB1iZRms-wOtL5u;uZMVknm}!XLfHdOjaoZ$^$Q^niT7wMR@DdC|$pw1n z-hi>{+w3gKrMO_F7bFWB0GeRPYl^>Pjmp)w#@9E|u>!UXYdt&W`_xWqx6cw~(2RJ=@E^UadsAwS@^xdvhWmN@R`KC>7RZO^P&(g4KYyoST*FulculgF) z*$t<|#U(eO5a@7>Vbq!pW$uLWoCa|R&CF@cU#35@sk3%%kFUtg*=t1Jiu*QCF?MJw zpq|bw6RCTvD;}kfywuE+4MLw`#Nk%3L(qAs=|Hv@m<}DQ?xaHuA|+tn{1SV2z?5n@ zWU*ovxKwcx0nM_3Jz>x?#!A&oDPeb-kpothaEQJRaXtBNksSZ_}zokkIX_@C1afr$UG_tC{H&bP{NFk-;d&_bv z5vr+v{DyGsxSp2ifFkL_u^Bt1rIpg#+#dy2ixY)!BO}eZJISM)>rXsoInQ1ZEsVT= zITpQ;F}QvXSlf>BtNvHOSC7!~tv8aE<(`k0s}Ep$s<0rIwS1m}l^`v|qy`cP1VF>9jw=DWOddjL*-+lXV-ML2<-cfXjxaN zAB$2TxG34o)_BCm32GJHz)`%CZIFL)g zqitFJP|KPGa(55p%F&{xH@lom{tbqp*K9|DJ#kf2_A{hFX6UWq%{6E7ttpmgkouRW z^-W%b7|X6g9t?}3ZBgfGdXVvEUT`JIV&+OB-CeQCEq(C-8Zxwe!dBLbbjk}X`POo9 zzfLsm2g{U$gbtV=(%d)mDrH=b%-iEA5^;zi>tbNx3{d68YvZ%W$DxD;)nHhQB)Rq; zPO@8d)@wTE@U-S!^_VMGks1IoO*6Ar7Xhi0XHVJ(AINz$x+jdfw{G^oK7LbHr9*{b zH(q0*=~4WleVYgIaj^F77K_r#)8AUdN$KSg4cj&#Xg0V2n^&9<32RMGaK9?3)-x}l zc{Wcfd9Ld%`B=4;jc+1fyE=30o_f%>+4v}N*-!@TD5Ac5RewmxO~O`*=xI{Oqn=2Q zu@cNL_3i*Ncx|;^s&!HHChexaN;3g;h&Ug#Ai7QQI5H5@SJoLx1swL3t zUqH@3ALU+vf~lfWwU``{>k_75&`lCwjM&RJXtUS!8Fbp&H96-ucwRej(L5qFQmz_C z`9F^kSoB@pn&LW-!WtcMAc>xLB-hm^X3-FlkG69%)YFB@17Esq^=kdwkysiAjg|od ztx#bC8_Vy4j>JC~9^TFrKww8~G=d1Vdsz>y5vone?GOLbnFU=f`;ZAzO zmmyOpf|J~Q)5uS?{FQG$FuNZ|;IS2N=j&&`+x3o&=3NrcUaP_>Q!-k%)`r1xLpYt@ zwj?&96rJ_*Q2_SY(8^tvx2WlnK)bfo7?3LoT_TulQ@wh$&=jAZ0S@Ie;*u2rosvi? zazQE5fXEJR7$#znybRe_qy{A{s9N4y#;o^IJ7@-GcS^L&VB`izlY_5Nq+$?pDj2vZ z3xR=Kt4J-$tX~_)Jjt9vP=tqIE<%A}oE21-cGVCq41I5?Kd6&OLQ{X*bUub3-#M#v z9SRKA(}CuJN-gY6vA{T{SwIcf)mk!j1@BM2^K(yA4a<_#e8W!qEj@oSS(kCxy`VH?wrgW#GTZ{z3u&U6h^|bd_vBmzBg*S8joD;-#&PJT2l$LX7!yzfX zlk~@(@;?+g*W~Ra7hTaVz5<*uhVe|11ZLSRDwvi#O_*1W5TJAc|8b$B4h=WqK>f!>W`mt9FXCA9^*UTt$Z0Ja~eiKl)%{JY7f^Y=`&VF zTN(Stf_%AS_Ns%hq`qSt#Yi-B+U}Py%IweH?mTs8ovGiv3nW(g)Y3b+rUo*{+qj_+ zBsKf*-qf=wnq|>=c>u0q@7Aa~fhx}s-;K6=7>2AuRGbrSu1#!}dBCkhrf{NGyPj6Mmf6h99 zLE#NAhdV|RL|k+|s8XBZ=pjjYupVI$bci#S_s%S;Vs{)1)+^E|sb7jQ7$}SOHoTQI zrN6UGCEa4BpZh@yNb(7#Wx_Ee|MS7#fGo3Jk55Zisopim2QBs?N|-TAnCAY7>|;dN z{SDPELG{_fK?Wx^I@N0Qih6h9I|@J8qHW*9VC$z#Z!a-z5{|ra1h5BHXZgMb%m`&1 zu}MN)$9y6LVu;2eF8yHq{hzkGG{ep2Xyb>X>;I?35y>MTu)c`K~o^utg ziie$lwkbf$X}3lj^I?pkiVg#$E+u$!{BnPQ8IRGE>Iy7!P5#m$>k{^xx*8R+}_;$0_N9a*k{g43swu0zXHak_X|3-~lEqh95 zBRl7lq|=T|X`C9me9vgiU}Uh(+OD;DWQxxWDX@J+K^1_%T%s>^nnd$!6}a%8e(Z8p zx>lD2nGC+p9CA_Q=b7vQJ=>xiY-lEQUh@fY0huJmu<2Y*$QFblRl%a=LokF7y{VEo z_j7@sUkn1ZTvo6koe#&huD+g}TSU3r9@r=>-Z%qL0vC!e9YQmm&MA(aXsiWBs?p2Z{v!(fJ5z

    aU08DD%wRNck1dgjG+Tr|pN2hJ^ZU_j1cXV;UyziqEGkLh7 z|7a1lc2aQF*{3tzXUsgCIj$5gd{U+G@pGguO^aZ2(d}Hg6`|3_0XB>%=np&0vPaI{ zg4*7_N=0aVHdijw>!|WP5o$yGzYfsklWP-I0pC$FwS4FKQ}hS}o=tpat`LpY1e_%; zZK1CM@qkyZC)f0{Y{$T|G^tS6AV}?Ap$mUel`3Xt(C)x*(}ZH|A!lk5-kzxQ3TA=F zAaCqA51JSi5{xt)AtQR1W597D@(ypxu{3GeqQv91 zyY?WVT11nayB0)T*Rx0^wCcAhRdTw)7|PS;*kIx=nQf=IVwD=8^X^8o5x6nHmHl|Q zsQG>~Y=rgYN0+bjF5OldAL#|p@j9;uhvtfB!gdTGM`truy@EUsl)-eHWkqw}Q6q+> zX;~i2liYEgmlX8AJH)*`cl+oyDL8xaz3qf-l#r4=b;LP_ugM!y(`i7FcV)s{Ys!4V zB5RvJd^uXnmtl;j3wocsdzmk{ZXxU;0myriS2G$pmkU+(QYxBo83?pzvb8qA3ekTe zdZ_H=v@-l~91NVX}TD{R=!-H#8>NL0idF||l z+@YsU|I?_E=M8?K>_`n;wBxV}aaeYFO2W;X_vb3GYmiw;IG=KEg&+Xa_{qN^M4;nenflzU$!b z)FxbKeDvKX(~1Z_qJ!X)ZrC0QctG=?O1qfN;PPpY2>cF8lbc`XK(F-EpWEMA0A?<| z8jF4=>e|=#j1TlS0;U6iVA{B}1BxPSqR#VsIAm+~6FL?WlI>B43}OR+o#IStzUqcY zxhaGpfJT=&Js0KNCuU+PkOu_ck$&pCW=Xyh&BMf4blC7}pc_nl1jkkR^5-D3IHurh zAH;$9m(u=TPl?7&E=gZ)4GqcPcPS{qHXlYu*Bnm&WZoGkuHQ4-4UGaTUAXop*fAZF zh{*whYuI)jdIBIrLW13?Ld9axE56yq$}(GmQtOB7*8Vu9Z<&JI;X`*!?Y_*X|D6O6 z1FVv&S&XB}=5f#lGlX?MQpN!_VxY~mvo+v3n+e!~wP8poK4jgiC=sqc@zSa(4iyv= zM;b~91n4q2Z!ZMeJ}Dsy{b&jRqCet>JE5rLuJb&`wX0LvcKl$s<(Ec`Kd_Y%;%jp| zgLf`BC5)yjDt0x=W{Q0lCdL#yghC~x7NgnWuT$zaX6^zdm(ru|k*!`W)zN$fIgjP52@pk(QKcC(fc zblFs<+CK9rro-ukfeVNFP$ftXV$}NI*V@^p0-TFM*%aj2B_V{#4E?u*^_q9LXNPS{ z3q|?(Tm<>PF9%i5rg`>wd8Ef_NGp*G*X7h*l1PU3r**)=c>$Du4@c~AvvTyPB`MDQ z20CEfUR%~_#E2y2;Qx6eG@n1?N>V*6`tzcZFAf3HM`5f-MV|)c!bc-189kB&sdjBY zdTXMEHGNrO+n~^1Js{PSUa;AQ;`CT?vDD4rvRUA}ohd3Dw5d>PN}9jOGLq^@Z%89D&gPFVwvvT_HDHKw_u7fyR(~ToF$Y z`7$hm@t#onQ6u6iaL}$G_$Kav(sy@J1XdnJTOgl5N?@5Agls- zx^VbXMq^v(ux;M8KODy{h1O172NUFEK-05WAhXaBt?ZRLCBWg%V4vi#ErNiv7`BKD zAprkB0KiN6kYGgfF-IsZd-s-}AbTQ!ByS$GCbLXa_odtK(8FF7I<-5C`~vca^cB&n zrY7T{LAJ5{Tk>(%lZQ>&s%^hiRYA`t0X;B!uHFIf*MN!||N1G!IlT*~hO_`L5lNDq zsI(^1Hg6&%)kfA0b+-Mx)g*e=V5=Uws6ich;iePdo}V$ zOY;Qkp18Z(-$aCXI?*4B4E9Z>dYx;Nti}6#d~q3ODcUguHGOD!`re9N43uO9AxgyM zn<|gka!1A}+I(Hkcd`EKE~K>?tpxqoGRPHtl=(>h9f(wk=!J8q7dh1{ZoUzhhggYl zn`Vq0i4(U^zZFx;dH6iIwR1%km>FYDHJt+chPvAJ9W(??bEldvpdo=mnHwv%K9+sb zTI2^N6s8l3i;0ibD0iBl6QR&;m;Wx4H@~uxq2`(9Or3brvBuoh+Rol|yIMGO?BijW zPdc5^T2{-V&1v)`Cm)1D1SFhvd=}QK?*QP~tG0 z2Qt=nK}JrP1Nm!Y{MGylbFUc=@MBdRx97o`ERi&4Dw{Dv<947<6?hZ4p#r+|?g3)8 z1E}1~qy2z=L3uYkQBZCMb&}8#<h(*6x-6 z446f)%8P-@Et-!|@3XR7W5Zp6cBE8Bp?xQL%=tQRznx#M3fN&MBzqgcO+IVH8u;@=JiypMB9O~D8I6tHyNjXciAv$URhbiw_czxEhEuKka0=8@RCb26BZVMzTU+VGamE4jxyKvXAzPp48FLBY-2kc7c() zD5?7nGCHbEMD4}Eo#Frwf;KRRq(sz{8lBZ%0Yi_OW9lg;)lrz0{=mhGbDNz<;Q@*6 zEa3Z5z?j=Q5uwkiZ@jvgV`T|bu1a3R4*x4O3TOzm$U_|vTms3a){)l%aTK7yv-T_s z5|Jz9aaV3?$LVfj+}%5+iW>1VCx^{;92a@H`XWYJEof23M^w?aX!2Fzx53CT4jetU z1%;ViGzmg~KZRO1%IMgGY}eUpdI-4zz*_hHcGe|X8ws#~eDcppN3=RZ<^;SK{}-ck zusW4DG+j!Rcg93LScl%k(=bk zD1sPwrlPet&0ySdYrJvA!$1hAMB!(k#MPP(;6>rXQWd%Es<-Rye9I9K5YrFPjTQ4u zh%TquxyOG%pQgJYiV8a^iWb@o63JP=hk+0QkZ?@@a2ogtav&szj&c|w12_jAF~*+5 zOn5|`*ou;AmWLrm?gTxZ6sW?U4!K7=0)JsWACRM{HvUq-3;4^3z%;x9-%R%5%P-cu zV_MD|`C3Dm)+Eb~&nx5bL0!Jg{GV|YjdIp_{1Qd!nmWCxLZVQf>eB%^uC=!xVY6~1 zPlq<#a!>h+@e#Xqe$Gk%*C?D0`<$1#=3|Rh;`=#4b(6L(@3t}uP^)#{W@5WOugR{n zt9|?Nz<_75ZC2eB@Vdz8ym-JWC9~I?6&AIlgx}gqHuzQpuzATKUmcxIc6w#|T%Em- z3X&cYdogCT9r#(@vJxiHqZOpRf+!!b;cS^7u#hXet$G<_7Y@_~BWbmz>o8QlbAaAu z^rsVX8=Ug#ql;3}39H$p&tqHxym~mt^b3WTSo?9d!92`o15BD-QSd!?KT>9#-*7kt z(-rd3l(R)W4mkgdGROLv?TAjLj(R`Drmb;)hMN0mjI}2#I5lohv_H%TH;l+g5%UF) z?aATaDz>;Bw#dZ4b+URhf%qIA&{Ps$^EfAn$PE`h{~MXRV5S#c1^8VfuYs5ltzpG5 z)|Z}1A=IT;+CfgPvb*%3;Q0)UX{?@}Z#KvYSD_cNtsg5fcPZ%l)kSF>(CS9ImD5!4 z853yT&q#j?Ie9Zh=5;Z>Ik7*xHq3NNT zHpl_z&Nn?8u!#?4Xa9VIKki@q0-67JEmb2sp+p#NJO?9|Pr7V@lyUafO9^tYoz%*x zhK`)iN>CDnw!lr4pZb>w+#R`VU%sgZ=7C8$R%yN)Qcv$2^Vn0H-q>un@23Q~{|!)( z4&DT>U3WWFcLPjadA|p*%#&^WDib5xIDMvl&i818u)^CeNrI;X=xpy;RFUE)Wj~2i z1dYH)C=J>`4?-@U^K}{!9KNXP^_jzx(?*im7)rG5NB~dE{Z!fWss8u|+*EicS(aNl z01Y(EbJu(w&||(4>xZYmD2dMD23KLU$He$nPx+3D1Vqq+U zbsx#*9?U5`0&5%vvkkCLa>Q>f?TApcIT-y(gZUu%O%+Y==^sDv2H^9j>_Rgv zd*m0H?`a?dUE8qr2vAXre)o&TD&Eu*Tk!ohoXeuQkclug8DWt(K!OrvaI|Z>2T}k? zx?9*-1#s?PzV1ej3qd{?^`Fj>km8*@0TR*DqGy#Q;6UrW_*W ze@Upp^Pq@u#A%JhqAX(Me<<|;zOu(N_e_w2n!lvgvmj+xeV%e!$%A`^fD{KryDH;w zRGIY$31KN^=zYMc_3qhB3BOiNiKN~Pu$O|FU?nku*LkvnFs{bTkt0fiXJ<{Y`rS3AHwqqU#{#N{WS zxTjCOc9uU z_v`yX$o}kT#>FiwPrD~??Sbj}vFMo|bV8#VU?72I$`gGn2Lqi}PB^W!;4a#pEk7sx ztFD9Ti(lVzeJ(Xy$1@UEEm7oNWL0Dc?bXsH-%fk>>833N-X}g1JB0(ee>Q}13raCq z)wON1i0Yr1{;0vdqta2_G%%S5Q|#|o+M>jdFTmrB4>Us{hW%JT$Q}O{TcBMbNe__x zG4Z_%I}m%xYBU4vB?Z)-%VQ8ktL!>W^}+a{WM3OkC);I)TQR*7ndE|T{=|6O5KQ3^F#&=6Yr9M)Fed5gM!o0t1{1ITR)KsReLf0y+~_EO0?@+fwJTclyd;d z1^s12v;-=+s>fD2)vOs1qmm-KjSD=6>NcQNwaxu9kCw7E+rVo9OpN+a-aawU1@MBj zARl%n7Q(Kn=>s-O7U~bB!A2$ju6XfXmg{P?kpxS%W>5?lPoQLGE~yCe3+0gY0%r%r>It8|#hR`Gq~3GHXo zsnK~7CG1@-S?YKfEaHI9bQ2T9JCKw-4)bjI_Uy`b2Y#vT0OEuOo#F8{eF2RIsB_b} zyY=2rf<;3RvI*|`sz?aecf8PGT;ui8vtu!BD$TT|138?@tk)~RP&7^MECq&iQ_Qj;T1a(C3#BP&^T4MFfXA!lK?ybtxtQy zC#hMf{uwyG$u?6hV1z%EGqSqUOo2Y-pP`VYpapRc3Xs9OB>55+up*?uCbxVN*rb@& zPiSia!#Y{}8lC0+=;E0!1I!aZU zS~DWm9(bx~XA?hX!4mVmK9DNf!^oKWktMi#c8XCnHJS(_-pNd$ff!mQXyk+*Oo4MF zuAV{P77qJpNn^ZdQ8C(>;nQNuYzm(kq2f1#q?R9CDfC=;=qzr3khosVdbziB(SSdz zT@+VM97ubw#b}neXG|$iJ8Hk4Gr}gFvPmy6znq z6JyNwa4Gm`!pj8Mz`GO+tU_VJa1QRP5AKYbGMoIn1-~OLz4Sv%kbZ6(NRAQqZwqV} zlB;uqu0yK(EzTvOQK6NwlRBEje3IVt!8kslHxd4(rfB!iZWz+qh}%kdNk^F10Cc%& z7URUY0c`q&u_2+ZzeqTLv9?R4bj^sf_0B!%V z@{4;fH6s9lWYtoko@xij?f>M`kpuGvHR&wLVjTefN{0Q2#R3lM0>WLX?|)s$6Qsiy z&s4D>rPV2_bDh~i@&li6&va@?A%o=TFtXS{^T^nOLs)2pIA>$5_`wk`>yOE2P8Ya^ z98|gn#3@Ji*XFtLH!kj$hAde~kvM{fb?S?|AT1j!IKpyNztWOd(Nna9L^{d0$NPpc z8axu%Z9U>uU;DCqueb0aBUuh*VXIx2x#lNIWI)_~n4(1l@x9&uAAU+IM!CQ}P7^3t zZALtH*Qw#BY$0A0_LLQJU|t6TDH0_3+>a_~Q*HL6ZN|D5-Ch+Gx;0-0_qv$>S?tN1a!Us2GkB>14*vW3QW#0p$G8jB^IhBj+ta+@7 za)pG!srR80pLzu)^BBIyPnJ}P6y}#2qRc)BK56ECwqoT9wx2r@`B+d;0aMlDRz5^i z!u)Zog=RD!=3o{r3=MQ$wlgH!iZ_aru0GygNAl1JscRVS2}XhnYGh51$a^8}E^+R6 zMRmn54=eX2&fK`N)YH_&O2SDAS>W~TniSFY?cU*pR(?SExj<3R;n%)&dTi)&bzBqV z@e;ey?ML8H1&lAGOnV7<+E}O7j6` zOWcY#2lrb=J|=^)po-(~6;XnUT;q7HI6==;fa^-YBjMGI&TS4jcAb=?GTKT-MC(!Z zv5ik#-NF+P3e9cOCl_q$MZFAdpK1SVZ(}g<5$|Qz8O9vPuRKcxRt0is& z8~Al^xy8ek-6!wJY|bri<&Oc7^Huqc+>lR{aO3TmJQ06M*M2q`5PdzRir`8!wf~@< zhp{d@(TN0XoUBZb-D&wWcxaoty${rA{Dm!XAaVs>*|g#35rlE`Jbp`WL_;W&6Sx`s z{qF0}@?szg5m=h$qe4oOpR1{CvgnOUKMe+{_!N{63S->KDaWqvqhPSM90ocZ2-7=N zT{H=~5%XibyhFY0MOBFA%cVCOqmzEEXgzWRwS#YRGoToT9cX0aoJlr0rRrDy6R{>D z&o#_Kv_1{oqc8;xU!tR;1Em!g$3WqWMY=#kVun3(^REi5pinZ>__)t$O4OWLYzf!k zYqidZvhuN$E#+lIORqBOpIKM4F2ShbfW4@|*of@RMgB&cK1|x1{ZE+N_co#NqnMk} zEGfTA#OvVS1ci@n(vOW$WxlpQlvKaJ!{NkLlrBn6SyE%UKEqIDwCdCgB?Po&{k#5^ z9E;2^G%bogGdF&aZ7qXFh=FbExbm?2s1~t{sJjm&;ifE5j5gM4StrbeDe)u%d-rsA z<)RHn_V&-r-3Gz^Eh8D{?zwD~A(9+BrWt$sn^Wwe_Es_sQKPQrSD!P+No8evQTr%D zP@rNHbn!o-h73j$!ov2(nUQl+A(V$db~#dp9YcnDjw@c29+Bi~kzpSJsps__|G2DA zz=x6ciuNS=2Ts*)N<~{}B&Q}a4CY^-h;>2ZJkA!o@znY8nCfr>i+h#MQrL9I9wUw8 zED>A$!|TdUoy&Aef+)lPM=iqeW8&fmP}l2}mWL=q2mhRY@)2Us%-Mq&M}we~paVW% z`kl8!;HE;K{_5`3_kPU%vkO`5GM(|q6i)|k;RBv@-a2)pGzwT0fmy$^`sd8ljm9$! zGE_-IzY={ubiRjVFThu3P=wycT(sdg%ZlyIMw0~*e5F)V9EETM;f)S5_fi?f6NK!9yq8#vCY^(Yp(ristjV}ShW^WoHbG%NcpUJ)R;MeR%kV-;60;$74Tuib+l zhcB=N44Y6^ zy_4c;sse?VBvS5Z)4iW)yv?TwC{j*uV_ISV6snzM0sfBd#(|2q7D=kDfiCna7LlyL z)jWfz4Y6J;P40vRJ%S`&O(iKncss5g?9KyQ%**svV1>u=`{F|%xOd(1G4vLZ`qZIr z35y8<_-FP8Rkhvi+m7jJPUzyJY&je-bQ`dLnq>waAe)IU^UWnq)0jZcsO?CCM1_$W zEJU`=O!NMbMVNOInl=zYE=MQUEysbku+@odUg;Uh9tpJTy~iR$j!q+}b-K*Sas`G} z2qdq7&?LsfnFyiPWq+g;|1nj0v1dSb<60$*CV>|I>6h|XvQQ`TzbXY4-PJ(BC2uul z=VtSI3ll+m&(6obN9!nITRI_E=;-+Hns&vUU_a@>a`I!(1FPmeu9xdvU?yZJy@vTs zw04mwpghx>S&lGh09DrMOWU|7w=|PzBAND0f1Pmm0gUDbUlm;L(COahuN7T*Auhf2 zlYX6_O|eOXq#@4wORLI-yG7n=J~bU(Oyf;^dwIYCAes(rJdv_(MmW*US}|IC)~BC{ z2PR~hmm*^>4WHMZAu_LRflH3#Vt#4Eu`Ab#d2DhvE;jO7-?HIfWZUatt)?|KQ*#HRaJG z&@Ro>rGk%v8KxaWjq9l15I!&p( zV@=1A1ofr#C!TH)$PdGy_vvwRpHvHsk|#a`4TB>y5oh9R7Q}(c#r5anN_k}TWrW`P zjBuM!9Q(xhtNJBriW@3l{~G*-L0NVpy$0`YT-ZJvUd$JeO)E*VmW?Q_5bMM@*rrxr z=3V4k%_bOeFs1^Hy~b)@9c<7&!ZzOlo}qc`^nHoTb-U=Zy1dXwps3`1Q>m=mtYvmc zG}S((WE?C0K%?>wY()Mi4|^;pYldv-WV$EBhi^*Z0N?Qp$i8)V$7c!%&>Yf5Egjgr zGS$ijFqaoU_;ib5gQ4J~m>_(4Hbdt$m142}(MN7_EKmyp0Aa6?ik36hwJtFw3>Y!1 z8YEZ-%b?X%@0y+M>nm& zLim?3o{muqM=n#FH$aR`e{(6`Q&?Gk?wx#VGRm^pD46rWcrTE2XxPm=MBF|HNS2$p@*XglM(6MzI!*?yd+8z;4=w3@~x>&(QXdPZJ?S{~ynJ!A62wVa| z%mig%FZ%P`O=IpCbcuHSubM0C~y($Z~dbP{UH7ogmi1w^1!v%=JA)F6UupctTs)Y5`!KvaMdidH{|>6+puT6`u`B{ zfL(R$FQ6uDAhDX`Tjaa%cuRdrb}p6TsSF@d!aYUV;H|K;XW^XZ?T>qur91OnX-rYX zyAxt@-%12&g{}hxvrg1jjUXOZwWh z>EX#822M}oV71nS}M#(Ts zqlGxSxB!_5*}z~1rivHy&`LE9J4>pUDg8MsCIDY|)38KP2K0JHcxyYshlpe0l1n+t zqb?a<73~`YwQ4|-*M_dd)E=oHC8JHAW1&|$Ao^w{7CVb>Onj9O`G0%-=-wt89m?`* zno1G{lD0-)fz-piwCGQqq-JNNWj}tnU!O=Y=B*Wa<_6ZN9Yr{)rb z-e`L6+r*FzG4&x^q5$USSkv(WvZ&=AVx}47QB;5i_r=4vO@LkYo4jxOh1fKnZu&$= z;*N89E-pR}W&>P=M9VN5jW<&H|8CpnutZeWDPuLkimE!ks%U0@tdv}3kdXFZ@Mde# z)aKSK9+bR2Vlw}ib^Xn8-eE$FMl_E^hd9x6FVx^KCoYf}9TFsjdO$xiF{55qV{4xJ zR?=*|_yBe@7Ami4M&Wizhug zcN``%B{I6P#c0y5^9v3n6?nvfNlB2HJS|Ka0rFy`%U2e$M@_aiceQQYeq{4FfQW5K zNTV-&X!P86rUCpGYrG;hcl=9&Ga%2fV$(B7@0OEicg>ph3;v59$$0lI0R0VFm7ag3 z8|`F_-Oz?cs%5kGjj3WGkMGsHw)%dUZ50?ts?ErTfiowHzfBp5!j2~GB$O~J<8ubF zMw;}H*lyt+(1*W=BJG;r8=dYX&!p1d{DZjbU<55(9>4K*1_mf=B=lYHnZ$@0!oN)}Tla ziPfeNwDCbF$W^jfjlAEn8Ff!SYMSFZ1p~=~s^U^`9IBtckRvk+^P&t<&x44^;3X0v z)Bw~A#965}K5gLiKUzVLl8;sK1f053MtnG@YocA8HvtW=(kw;&ScF;E3H#*Hv7u5%50D?(gJaz_ z-h@`pS8vArNx;j9Rsny{2chjgDVk@GApw91H?=22PKc;TK4@KlijkG9W_A3oHr&r^ zglHY82JU(y){-&#(M>&EnfaTpP!1IS15)zuPpmOtJfgZCN`kEJ1mx7r+^7dQLi7p^ zkk})khW@`wD z#%QT8v~@M`2m4}oIOQ&6t59{iVrx1~wqzCS(pImTiPLQNF)9qhobxf@cSHd_`*Uh< zSFH<*ykdPZ#=OcCxCyPBI>Vj!A1FQo_mzB<8FNcP^scOn5tsFtl3-T!zCobwB!$k!+7zBBb7KjhzpvYq^)!rw)T5`7S>V{ zu}C5{@yliHN4bX?w|W;be+++6o%j%0+R-!VMH?52*oWAPPTRV6J~kj}lIkwXE6Wy1 zsl<}NlJI)UL3yLSP8D5*9r1LezlV!V!I3B6zb#%^8%W}834lY67h7N`<(JUcSVxg7 z<+GEy@u6d6>To-pm7W4zghhOu4@HR-7|9|YgIgHK}*Mv@Rc9r+%P;Sz(+ zw#N_dY?$Bq)6Rpk~U`bmMKvfL3Jm0jUGDuml7}Kg9%W4PNkQ; zrxiQPi}ib&oRTi0xL%C-S<&0xuv~NNTooZOz5GdGlynvUOI*+HpnI5tuM~N8;_ZZ6 zFZK|rB}Llo@D2DbTCR;>+w@{)+%nVS25eca9FZ>)lR4 zuP$*<;{PC*m5G5z^Vk)J^fYC}vL{cCi}`1{kSjLQDC!Yt0uf|J)1MfMpM;|as2m^! z*zA;tngcttMg43-O~3@E-v+-H41> zg2hLMj5ra~zY)l@>bbydVEyThVBQ13K_cp_-nCkU5;AV*-RGgz9ylX8tkzfRkeABO74^mi}Z8H-w3Ijpd;mmg;S@ z$2RU-I_--70EOHB zpleDpI0$T0*e`I@7A*#DQ(W1aCd+T^IPWyhT9gfyAgk<%E0^HE1LOSL;V;=sm&C5v z%E~0xY#z!2F8>4&rAmQ!2p>;6m|hNW&R^{o&+ohzLFeu>uE<}dv|xN;Wb1m`nA(CB z_kd{l5w1Ug(qPk%txK92R4NAXT-T~nZr@0AP7e^5N^j^AP*V>#Yo*cYm;%oTJv3oz zaoQz4LJS*9zoTil_B* z!&M0l6yg;{9;(tf@~8wF!kJLu)E7PKB&?ESU*Pkb%kR~NstL$yc+6o*|u>CpHE2(AY33Z57{T#mh#fo zKE(Tqw&IT>+Qn7_5~^<|U6xCe2XmwLG|xTC_PpfYF{-tns~!Vfj{vi_TmQ{9h^x$m zk1_8ovW8m7-3Pz7xf;aT5bSWB0*Ka&ql5asS~*u{IcnLfTIHd^dm-|?yfJtr1E%N1{wnHnvFtF!SOn!DgO8Uo%LV~>PC;fd-O6vJCGkZZKy&6^C^%0frQMhe1(+i`` zbUbqm@TrN%F_acS?4M0K6lrwZ^-Wf!!E5Utm0KGJDSP|Efg57y@oEavQozaZ6Y%0_ zEut02YVjT+id2$^>+Xzy4_OjH+yk4c_Ja7xcPy$aXDR9Wo-^^H4&(?Z-8>Ng-@6Rf zAFw@G1w;z_8C2zd1#;Uxx6|qiNotl$X(Q^9oauG+(J{c#k*}=T_D@{E-YPpHcQxKQUOSg#GZQf4$PpRIi-bK8O>B&x$xoFz%ihKsxVpUJhP%m!6WbYBr|5D z%OwWZ_7_kS%@O8y!?%46$XDUqWT^lklS-983S~LboknQaj{E!!w<#yOi-_UCh&sLG ziJJ#H9xX;N_M+W~#3m#PR)v1DKdc1@`Bci%7$kobqeR!W?5mvKgi-0gRd^&crqQp4 z6~lY0*nmjd)2i7 z|3^bnjc3KXNpGwapbdc1YTuQxQC%i$$P3;Nl9_>&>VD>`i&FvNP)zj+v@b61CrYL6 z$6S2UCg0Q=4|)Zi-rC^N{5Iq!sFU&#pGQ@gjp2+`$GP@gLNRipKV;6lNYn&jCY|LI zJ0PfQ_(D}4<5Sa7%&j*$53Qn$V8$bl7%FgA_+Cs2l_c*J)6UPQecWv9Vdz$=Q?1Ey zA{H=RZ04FHCimp`hpZdJ)V3Bb4+H7VCF1#M=xu?ijuS{av&ll!Zuh)Vf+4fM1gQ~Y z>=)Acc=4DyL&Q^HFMhk7QE8x5&6-#9MKlC$?ZFKYU?2^bt@6~-(StsZZWkE09D;Wa zp5u_AI3V%Fk(iFz)autLkS$?p>opKYm`1r5g>(nNOea%0P`Cq3;B(}31&}EB4X{`j zBL;b~lnDz>@ZuE&z~Rl8Ua&yE*D?BicwpIaj_o0yS8&$dDJe4vUr>#j9x>5lP#@vM z{5sk+N8Y|uvU!K~>k-bAFZR0a0S49g{t6S%IksPKLXUW8^@iMoJa&nxoCMwH@dYML7g6AC2lPsRz)oM zF92;q=mp3GopfZ3qoMdwAHZmrw>h`Azo{JHX+9UynC}nUo4P)Rs7~Ouc$6*8jvuLY zv6H78^6aWlsnbUr8COC^1sG7n@#C64_Dg z;7y{*gCPh7xUf^gytALGuANcM#SlXBZNX4hHt(Xgk%AT<0^h|{nzLt!RKK987G5D0 ze~a~$Cp4{p!0u$|*aGlXEU>pQUw}+|F^gsKf?O?FT;iCXp&QsQv`co(#IlaLgQ{t= z$+xpORrNYWjLP;KvbUgw5A(OMxa1DqzvX(4He!v=-O?-u1d)E5)m^6^V8ZuABf7pR)%C@-a zP|(}q#w)$@E_%-3T=MnvU=+9H%*9}B9Txs{pl3vCrwku7K+y9~^7!X~qHHv?ve;X2 ziJuyK%R(#W_~{~2MNKHlj`iDt$#9dwo&)-O)0!W;$$2GBW+2zrTAMnW3Im zi$Zc=?-&8;^Ys@5?xsstXeIf36Zj}7$RUBOg?uQCJuQ%!i`D?7 zg{xDHE1b(XMN!wm$JCY2q+TXd{!8mZO>y}EY<*e`52`J)z`7_iLTLa(DFHl;?!jP0 zVa{m-HCh6%;G8pv?mGjy&c;BQ4xN+>7 zyIgaDG(Nq{KSWLgoV!YapgbRaqOL^H@A$LIOj{L6imsb~jp_XG+iV^)22i{UD*SS< zB;z0~)_G7jxCWV!pK1NqOe@Ob&{n%!BEftBhbg?^#KVh4glKktlN?1IGQf-$;j#V5 zmc*PwmKv@-Imp~tV&5cc(3AO>E%u~UP*Q;f!_kyGX>r+n;i$Jbd3U$tlQpnu!9uV4 z$Ik%2DhHK4ZHA)!Tq;2;|4^ixd0iXIB_5Hk7~YOca?p27R#z|}hfB6(kE!(cz6ssa zJk=hg%|_QgWKT~|rHKe0I?yOiA{time$n`wi-GBf(7(F6zvqJA&IeJ^`9J6&GRNLh zy<+4!inaccJGCT;I@qV#566-rv}k3jpBFlyh$rUTE@=Vy*BZAILTZi1T+q`#qpf}3TQqnRkv3hqcku}AM5 zuY>E=BPp#UH(x{%1eUh_Ri3?k^(Sa}K`~ll()fCxGRvm;_y!K-H99Wjr)5lPXBBE1 z!~zl3K((-XaO(`VF(sx`QVrrPAkuIW37rdjk~?x7WbXADwuHFrUfSu$r}5>StAk`f zmNKoD)GmjGpS_RaxYudCKpUD)!LA0WqO!fTJ#vG#Kf!9STHcSNd==KvX~&=6B;;d{ zFPQB35fg_z_k&g8$;~aB<{}yWG*jd!K^rvIgHsgve;|ir@68Gaopp}SSdEK|0ou?L zhC;0Mv04+Z-e3-i&2wCDi2;(&w9zfHm#)pW$DlX6XT73`PWs?pD<+E4i zliw{H8Px9VTaAij0d^+z_Sq)JvyH@4BsZg8xj!ML%C=wS?rh<)^w;~6a8CChgogSD zaxM|jU!1AROU)bae5&6rKfv{vDk@IWmEEL8TVe8iZp=g2?DbKPpIC-}`0&6l&iGG# zYMQIE94m`!e01-)n{ZsKqIl2LyfGcYf?8D@V2HUJgpXCH(5n#cEpxfT0Cj0}mbE5# zkbE=zxQOglC#U0j?a8b~!?8$lPda(-K5d^0^_P$DpV>yC6jkAc#wGgH z6T&lncnxjx?d!JEH%d4BLjUgf==bJ3RqE{tw^a-ax8^-_@#E?}>)`0B0B3-9Rvd&D zkzXgLPNkGe!1V7e2wXRxCfM2F^oR>|jJsopZ#a?kD-Y9X&uR?e;A5{IUAUR%M8}RX1MIWT6-f9tjX0ezX{3M941f&-Z$CZH3 zV{dB7DLw@6tViQECDkRGsgPl{FCe18z0>(lw|)hrLcAf8r2DFmBRHwKlf*@LVgu(f z+Sv-@g0nAPgnEQyH9BXa8HJj2pVH8TjLd=2vj<75R0iD4RJ_?d+XrjSY4>GDnfE{9 zV_0*u4?AC%C?%8>AfXRlv8GgIR~qBkL7V(ChhEm3i3EmdbA9GX4V(p71qv0JwhyR* zWPs3RHeN@qZCqZK?Q@VyZf2c^vm-aQgnOH&!nOR7mZ}}bJhav;P(~p&_!^R>tLN7~ z^*UxY-^&zce#@)aG8TJ`DJx1HBx9@7cvzW!8+MHIAO-*%dR4nEdKTXRK8|P}yRq zhlLw)ru~TPlpz9~AQ02^)1W*$1jQvF-s#8%zT8p2Vdp|6%aq{h+0MtE7iIOBCY9Q+9a*g73 ze$dXe3Sapm)@Q^>@9CPe6x?)jI>fYYD6QQDj6Xcp*gzGO%YJ#4Vv15UHatnZTP_Bi zuZh9}A@(~P?)jJkSat$xd*9!R?x=(C&3#0(bQgy9H#I@xf3mUBXYzDS-2wHLwXBcD z*GlsNb5Or+M{nfo79|+sLBIgSTWs$eMl-uxfT$w-#Tqli%>6MRA3$T=x0YX-^wOSS zUk8Gqw0Wj$8vWP%()#y`T_V$hSL#P$-L7FP!8A^;${UbLcL7qIgX@;(wI9;130*K@ zpJ@i%18{)#IDjAbK&`EFbf*Ww+0ErvjB9%Lvxorz)jl)hF-~A2wdG$1_R$s^=6eSb zEs=IKQ(&>1qwz!i`B?6*3L@ZKWX@u=v&P%TYf)tSNZN8l@iUeEx*31p4R}rrTz0vv zb<+=xE7(}|aV2_(9w3>FT_Na4XWH25IxRe!!Mp&#xriNAhNZiA-nA3-!MmUn;MIAd zT(Td*f>MJi<&TVN19$k%8>E&%#Wi;#A-|CXmCD?z(W9;$!bS^K%cC$b0qEiGFDT4* zL6+U@Sv#$nXW;Onp`6$IVy}=We)29?3p;w{-XOpbkJP#Ow4=Dhy_(erTj4>X0*6?1#EgqES>^OcaRwgG};P zFEjvMuBkNf5ff7PFdTOz%FRp_BX5nJBh2f&1mk)d$kCd`X3`!&)fj0_s~W8@X&b@< z2a;_RJbv;06vWHU9~p#`&C$kg%tqF*kMv5*MWtP38et!R_EAX+3&%HT0QxAwNBOW5U%tPC($U<2*(NJ!jgmt zK!Z^q-L*!Qd=g*EV4vqh6ngjLA72QP_;T;L1n&9J@z9;M{eP<(91VaGHL!8m9y*}k9iP=E>s<%D$yavMoNa~l-4wfK zf96Gl8fBB{B0XumWP|-1Q?xohfNMDz{x(lhGy%H$PcT%Yy*FYJHfeR#QmAXX z{N$NEoFv}^n;`;Qp=dF7wJhxLpi@Xyx__d_*UqswpI6y=* zdH{Q+SHm!x7Ge*NJXWN1;K04ifIEZx55{`@%%B=k)74uzUwo2Ooe zDeF??5c>WE&ggMB=_!m@M`)YYvP*kh!`H7Rz`zCS31RYMU$? zs%Uf`23|xJf*3TVEn}yiOruJvN+`t)szppu+8mr<>9W8vMpm7~LyeKGVd?YC{IDzB zi4LlA8D*2qhBv0;7*al-B2!DZ^jB^bMT!{k@O{FtdzEf<$S=ws*qv?%=;{_@RT+^8 z*HarRd9`$7-&k5IM)xeIVbSknh}5TkV3bf7<`M>de3f9AN`3G(be*wA4rfN=Cvxvp z&&~P3jfPZy{zPS&I=%8|&LAB%^bKR5Cb8D`ip*D|56-7sfSqbPglPYO-nHS(9>E11 zEXKnXi+hFQgpI5(}np@52#uLm-mG7#*8s{IQ48eMiKpgSSCbRP}K%pvqXY%;8-1@lHBp zLgmYt{AUg|p^Yr3N3-62CGM4~!=0bqrqXNy14>x$(ve3U>yQXYAx+4k^AzG?~*053S&?bXT%`R0mOTSkD@yS7$BS` zIuY+cWn1r04icjQ`h&*y{*1m=&0eSDIItIxIs$8?q0Xkp0nOOjjhwk%zVEi56fp9` z+gbkf(1;Pa7r{X(_;AUw=tS3Lo8(X`W^BWRlcvia+jRa>IiC-dXzxR|a9iz4V@dUK zAX=BLmA+S;JoHFmCetGfF5z1(tBQuQffO!J6HrjOyb^}?+5cJHkEz#v2H{6$3>+Fh zW;y<`l#y16vj7gy5V1a>#Bf{eSURUb_!nsqiZ^A(M__d0&pNkCUr*+f$k$k@#gPsS z0Dikg_q}k6GJx5-+aVA#@)i^FLC|kGyI2$|kQ3jtb^-=e>6cvpq~gATLcKuZ=WIK5 zvJ)Lr#c3wWzUgs=Wyd7DtatI#ZBp9ryO5&#l98|NZMA>?>!dgyT6aVo?NEp!0{lp4 zz3Pb$tOjw4)PU1FR@*?H?z6-yn{}#=X5WyXr3HI>xPyL51*f+EhHw6vW7WguMcHRW zPV#wb{Z4%39kIx8GnTUz%qh%isRU(z2US7}pRao_7XAcP4{r5&1~gBEKMXveho;tJ z$VIOz0gB3NJplhd0Kn2=-+9|G52D5rx9|!E##}RiPfRBc2c0A2INTO4tZQ~I z)h7~In(INaD_4>9AV~Nyk`KM4>62Zt^LLylL~>CL45qF0^IK~Tws7%;U@*X0kmT)! zNDOa#0JOOIO&^wxn!DN;@zsGJogw-cnVZa6$bw*4+xt(^^e(l$N#?`n83#8AYuOTS z;|rVpvDzd*Wt#z&QHpl*h(a&effT`8O`GHrA29;#RbE_0iT;8tW60G)rOMeCb9CN4 ziU@2kV$ts&dikuAJrl%?7ZD-we`s%=@hTMd*vIh@dRlBuPC3wubUOH9)JjEzOJ5^o zKx=x7wxhyuunElR04%b5DI?9^%CLSoA&bDbx;HpY7WY@$XHJTrsst)a{M>ri!IUif zYi~Tw1%XRuDOfsOKkLf~$pa`A_9l>}zP}BYxQO`diivx5W@ju-pat|K-bl2Db|N5e z>Vy4N@61=seH^{O)TBLE7H6(M6?#)$m2+3iS2ak$S& zs<{H0Y8^l<&|cT;7n@RM#(U1^9?J)`ox_CM8D~f{&3A}rn4751MiEelsKkDktT@m@#mPZXkpZ8 ztE_WDORHNG%3C;xv1&y$T0z~LMD}8mmo=vO&$>X!L?p%4*|~c7QytQM^XWYFDl)H6 zroYZ7_Hnhz#L(nB+NZH1K*(=``VE4c8YV1kCa;OoRj0Q)KD*{^ae@tm^D^kJx z35hqgNcZj(pU0&G)3>t z4O1z>3BuUsoXSqU^j3@}kBZ0i zRSG`p#BB66UCw7KWzqHXBMIwfKOi}Nl&ict-Q^av&DVtUF5~Ac7WPxH`53_p8o3;X zwCqa)K1+|dPws%F^?!sGhnCI)+4rwVVXlq3Ca2W= z)&p2mi##P%DzY7O8V~wIPs&%9q}IK>mCRqSmiP8AIQ$fdNeI+Nj-FdPT=PLiPnEboj%AAHG&N|+gnBmc0NsYzYH4h>+mvFL)s0okqpiQMWc|M z)k}5n2}Q=kXwu0;iA}NYQzM;&TF%-nE87bdW3*lzBOb5Bt#Pw`?yH9R#I68LgxC=x zlo(QVDV@>>>C@QHjVu$lX?84LUjRvu&~&)00n#{Pi=F3OAIMyLfA8|J?F0MSxDLKW4;26eohFM7d`s@VIc8w2(NpWBZb6@I- ziXZPulB1eRCG1+Wo5Q(I>svy9p;%Dsl4?>d{hZ5VyfK0pOH`hJB<*i_I626Z8luYb z+E0_S)*jq}y3lz5^+&;LI^@9*g&QCLtIs^g{Yal3B7TO~=W!J(S{8_VeM^Dxk*o7S ztq9ayce$HtvnmRfloj;%S^6M^`|eJh{v4hY9P?5v*t3b?u<$gpT7=D2`^-z;g3fUG zgm~-cOU#Qy)XhhIq-_dcd8k-xOg>7`=qHv0KN}#Bd!Vm!i!yu1pRo4$IeL4yaeAEx z*ypo-dY*4@@j9jMuK1q>wyUcxA($Hl%Tt;{VJ%zs%gJNwPQOmW+52+Ic+uc`USZe^ z7<$l&9m*GXw%q9~sxp5_rmf5+y9FD-s;##0LtBC4T;n%9e4QaUX_sZ#0%l~XR&}^? z6T7l#DmMU5307Bp7Z;T&k<8nEz9JhD5Mm@cBV0Y3=D5qfzC82I)+oL|ijQ(@$XxD` znWy!`hidqE;_K{Lp@%}KvBkkE81)7Kbmz+CCri*0@LQ~X#xs4=JhgUlgIYSQF%wv4A(ZrVSCy&Nr^U9txnfvVFDkLI~7fF z8h1u64(Kiw{}cItHt#6jKiaxJA#sR$k$f+ZOf{K07}N^cSZ*iBNRceOqV-N}!$P|f z@ueUUwjDpaT&scLQ!hJ_fQenkSPcwwkWf(4i8_i!5YM5RbN;4LjHPaT7NsMm(8fma zi%EG*Q~7MTYagRq1Qog9hWV%)EqaCx4JgDAQSPB-Ua(N0^j7MfyJXgZ%Rz&M z=7_{|MH_N&`q(8^Y?JuWIeGp0Nx9`0M<9>|M<&%UaHD-;qcF(Jy5%LeJxSNJ4ZD@X z@420TIPLxil+isogA;~ZxhSVoA4w@7Koya&5!rWVUmWM(CmGRJofT;Usf@+uOAYpj z2lNqc0Vc*RTYoV~{|IE7LC6v_VG*jKsi|{y8RD0bS;vBsn93TN$T5Vkmo1_^9z->pp+vSBIV=1nQ6FQcpF}J$3^UddIn(weF9}H}c3Y zr#YOe()EtiT(Kx80P5&7=%);e?b#UzDD`WExf#-Pu~g~R4P^gT zwn@_}yk5l2>8lx|71&c~fazx^^3MGU0W0}U!Tl-^;crevTQR=Nf>Dft-eHjzkmly8h{B&lI*WW@nB#( z*j@g5B|?TjvYka~x@+@Zk;qLHIr5Y)CQMJ+oRJIi7R*(gP;H-t^6GpHt2M<+=6OxN zAi11ioQjiN?aKwBVyzT>JrT`q!7w76fpH)CFflsHBVp|J~j?ES%aIL$D@~ z$|hZQ_Cvo0R6 zlK=9=$$K3_=7? z1ogDNV@45(;TCh!&!{W!rbb$b9&?_uTj-9vX4<<(d22Su@pqKF-_l(#6vi^YWh*k+ z&6_nOAL{TP?Nl06#>^Tv6oP{yOGr6&wh1aU@>+Qjq>lg6z?!k4kdh#)ZU>Wd)Dd9W z$g!Sa0&J^)7E)YV-Y>g6v{^SxJodq|QMh0~TbTs)!AkYX1toFZwx9*oiDV6Hyx+Dn!{qx})Wch1?{c>H@jzhoGg#JxF#Z+ijW zFmw`T$+%h_(xm|)i{qG@#%ihYJkk(|WM)u}&9kE%-Dk5l0{wmo?8l`!Ae8gOBzs*z zB|8r>4#;}x(9(YoLs)%R#}$see<{l>dqN$I;PcCaak7IZNCMh2v+4>YRfa-yL^rgE zpzqp66S&rlg#}X;|ElJCUG?D!a<4hRfHt7<{!}^zQ&WgsQzyw7P!8! z{k?eLR(=DjGuy&dpqcQlUE?C-o=QRFKfcz5jQUFl!qcM0kS96#nI!BBlv^01h+Vw3 zaznkSWF_m5$3wbvzND(rn| z_SXH0hz3@|{(d56RfXt39{0&R37&nR1PRsJhT@$+$sFutxTlQNlvvArlNUub* zzfRLo4A=BFe64*Hh7O+5%|8B?<_h}Gp-YR{_RnVGK<-2uX%-n2*#*AI$(d&l>!5U zEHw_&2MD)Bk~mFqz(36(8UmW9s1(@rr(jo{ z(cuN1f;4E7Hr%Nm#1nY5cQ|`i0R;dl%w%UWYL~1Ow|PzRD3ffsfCPe9{`&bkD~B=_ zu#5r>I*1(WMQ576XHS6{$};7?m6aqG z=VhHtWpyo&Ja^9$8=Bc%t*Q!lj;0TgUgj`X({41!Aw1masnvLH)o7%*wj+=89qJI9 zNNr&cznL!iS$$fI?i!vjgma!Et10;?kRU@0M@bpf4r$!ey}jv|S-G6=<@_gH@}wevWf1yG`2>+|dlC}lAcZeE&g zZ%~LjqU%*3#amP5Fsvz(xAOKX&gvh)pqKHg-S(>a7m@nhU8=v(rQ<9#+LJ*iH-M0J z8})?%_K10BzjTdgIZ^j-7UM}1^n@7g&PM8ugc@|irU4S&cyo+t@HRj9QdeKBN(@Bb245b#JA$Q;sqN^1Y za8v$M)n;7;LpT0dm(W=O9~M@V@dVg~YNKbeeIP&IRfbO6fREamJN+crQJfey!FAMg zt!qf0DYw1By$yt1Ps*D}Rq#xwf2)geIoKi4N8Qk)IO3u*CdPM-xv#LX74~Pt#hCUj zk{5I?+Y1B2c;fdf%`ETm((>?4tU*^%{VIQfu+~67goaj3h99Iv~ zY7>y#1{wbfc@Wi;<(NCD+6Qb+UO}I8=9uzs{P|*L@Mr_rtD)MC8zP&zJ;| z2iUL}SzDQ%^*=g=XQiFm!;n2H<<+~x6eUkinc)Y+NsnryMS55`Z$Z9stU%Y|(>P-$ zvNCF!)iQSVx35_WYsb4-X$ z0hH_>B|W}-w-8XFzpWcxezsoNMpZ@Orl`?{Hiq-NeZ&s77It;k6krx^Eeu9`MjYA2 z1tOt0g9BrQSJx8M#X4iXXLBT3TPun))54Ewva3}tnkmuRzk8sVy@HOn;vzm*X)y1z z5_U7Yx|lYIW&nQ<^Ep5SB{$BSfJtbapm=nWe-(zcd(+~ma1PKR z!Z@zPZ@U-RYqLz7uD~5Pfs3XQsTi|D*g@R;SybZv+>aqBpgkwY12v)-$75|`P{QJj zk}#6vOW117P5RnV7xmKvQt{5Y;jEznT#U!w=tBSkFW`4$Cq%YHJp7xYjQli{Zg9P< zDD2W6F*}Sp!Ay*Ns;7`N27Brq?13y6h{CV!=_WBJgy)dt>{%5U3bBF%+wh5jhDc0#iczu6bz07DG4 zSC_lzLT=3s-&S>ONj)*$zHOW#{F*R%17BZ&11XX229dOo&Thsvp^VbBWUCC<3s9SL zJMmtEh-=Q#dG4;HWn@!QKEcp_P&NR_I;WX<12gRTDC*%-=C&M_nd^*mJmizWOrwiG zW=Ta)*g(9{c6bIK0#Da*u$A<5!VoE_RTV)!IX{53)4B$7wRXGlmA^Fk8HV!ByUi?6 zj3Dvy5chI4Ax7^Rt-YIp@q3WgP?}XJylLF?iuqJd4)yj7; zRi>&!xmA6P&O7ff|2F{ttDJo(N_p zYQ^R;_!?x}`?4xtvL?juIT90rw8e*84OKnvlW?mbR;A@sn_-`yN2Y4w0Z2I{k+s7Y zFuzOJzTk)@Q7Q_sQQS4BRq|!(a+WuClrcFQ;Ax9pltKZA^#Z-gQg2aHK zS!YfcUgG*)lseRhABX!0Ea-EzC|?gC{B4hiG>2ZWD~oCI3hFqY$cQ^1`4u7Y`Pj?L zJMk6L%!OFCMVWCKqZq~e_Un@TN{%Z603z|Yd>1G65+f$h0gX} zg``vHd}Uqte9x&)1MS~V>&ct;nkTp92OF|B^=;S!9^f|kE25$1vpXg}d!f=D)E zz`$xG5X-r_8hL_^T`#^elS8(;I=godvRV5clXoHE^ZXpJ;XsGDGZm-b;W-jTS|eJ) zGTFO;>EEWx3(d;$n}eh_LA*sFeVuEu^CFAFTTXOciB+={;{}f(n;)Rvt~VNU+=bws zHl+NaSBcee#8vE=sY%x=#Z}5X9r#g}8srX8WGE>Bp!E2kC7}Xy14ttxV<=NfrP7U< z2WO8Pj5VI53UgYYcI9TxG_6lxM)`kdiWYZ3UgDOd%T!HjY<4 zP1!caB3OC_>$wgrEpy2oYLi#=U2+Jq7m9VtrChLG7ra$EY&5|O4^uHC#1JW-iDb@{ z_dmHtt0WmjpGRIC=+%swEMVtVW%&dycv{6gEagMBU}#mFq)ct>bs@3nAlrzRQ7ByG zP`uU;=?jDaESn=X`8Y4Of^}6>*`VF`z>>oUsIcor?#xjcmc*n_B)76S#u6H{;G+k$ z!=+l3?S;{fnx-*=2uAO7AxZD+T^Y8wUnxyXI?!YFdiZDp&$g&um zbm@@b1$# z*7__sh_kPOJFvsy0)MWd3oR>b`cK#qtjskJ67)-AUtmAb1oKDA$Q}h#=lPA32l$T7 zDA-&#VxLp0TrrDvjA(hkQVr>0(agT$rlVYd$YZM|cN^O`!)Xs}();)?VG8dP;ap#$+(ob}=1 zR)eYKF_hB{n_?#G+aS>|fOal(ZcHBA;Y79fIv0+`s>xc8V09Uh_Q^aup0M=kL=Guc z){JutF*rf~o*yYL+QW`2p@5BN@fvafKQB-}ZgN@Du=OJ}>WfSsXZh!9#hnK;M+r#) z0n2#E-Dv_#G^csRacS3fiZY7E;9v0|6qy_3;wEWuTpIUwJMV~{@CO##*7Ea@T=^nM zV_MP|uhFOKNtPiYl>HaAZ3Rjfcwtw7j)9205H(j|N{VjILH=}k<|pg{TJPuh2^9&F(?eWGk*LGlMd1U#05atLj^(oXl&#w$T({&N9xA)H#| zi3vqa!~k5U2$x?N2p-!EK2yAzBFv^N!tn8Y3Tk$fSS zqCV9N_UW7{jfJX_YoaPKrFQ!b4BaI&E~ZsBCFfo`?xkLl%G53&d=Yt@Rx`3-H-OQn z7pG>`-XdLS!D?gJmS>l`FML|eH91piS@Y0!`~$pQ=Nfy&mhtEnBfPpo9Bi&o%Ib#w z5QzK7jF%bU1}}|<91w4hhE{<3(!Q^@J)(ms&5Yt2;s{D@s1bvhv%ZAU1UF@=e{mHl zr)PV%YEiZya6ErBAyH*kY?Ap;{=ZaS&8A7c~V|`HjKUw)Y zObXftG$5?t-weXoeE7>QHv`mc1@ZCEYWy3GVd`}#DdM~kMxW{38G3tDWF&`x3qi_x>;>{Ou`hv|n=rCEUq-`FX zaMzTCk|P56(>XAzeoC)LPlY2#u}-?&ME+3?5CiIL!?JtXxRHLcEMH4vfGjcqdw|3A zxBs}@wq!*pziRUfDyk@h=Edl`fPnR{6{Doqy)8DZQK-JjYS^QanE4P$eU8X(YnxRD znYvmVxg#ige~q&_<(x9^Uezh?+`NcmFqbzekqHwca>1C@?zkrtHZad72JVMPh->Ir zc+vk7CC;!WWZ-RV;uf5YhyAv3U98myFfL~byT(8h6cpLnMEeWcKsJrtf0Bs?zJZmd zO>O7Wg8~7(A!)X1>4rxYvfB#u_N1aKB6d^pDqE)jMk;xTtB`y?9ADQtRG4#835hoG zoFO}_v1~rc%Lwl-TP5#~wC+l6n}7{V#K+jl?BoNGDL?yHr~NKs&`TQg^^~ZOjXr=> z$K`hjM67H4aINyRb-|pwM>g|(c6X1pGtdYMTOj$P@&-ai4IqX|(%)y46`}aWKrstP z;DLvtHc+@}6O-;jk5*+PL~Cc;LJ*j-Sgt>KbdxO|WT#ilY+?OLrPc8QbgRTZx82X0 zDlF@CVjps>3t&Mo6u1HXx;glW8B|`sL=+T%z-h_BCYE!k78-hQ2+-}V zVuCB$Gc9r+fPgAVO@D7-5ao{Ij$S`yjw1CXmY`<-iQoF&&yX=CsAkqAw9vni^@uEX zc|1ss?$(ycoN>E|hHpfAbGM6+b(vuyvNvej12{_asb}oNkn5)+1>lHOk$e%nX=U2O zByHK<8AhPY&DFck^38_=3$AF}ByWjQz3XIpu^JTua z&{0~IPYC==N;APk{=zkwVIyGz(ln`ZHP3(=rEg=jENjNi`dJ6Zs8^RQ03O!3C<1&> z1%gUyTMnh30WNv2IhQOaMC@};ldSMrxZ;w!$^gb|Omx~(dEDViF>_l8cFt;P7NZ@) zH?Y61EC5V@P5hW1(A0!xSJPRo-?M@hA1fp5Y~}`uAEAu`oOAXuQ)@Z6Ud>Qw5FUKP zjN=?uA1rJ_ak2y-tNY-Z7Y6J!1(!>)r! zSV*E65o|@ave}Y!)P(}ysB4upeqi&o4=(Rm-dqt3nUB%*zp`>he5op-Jll zy>v9B2qAq?v3{Y9go0|ITlH!x^jTVx^09{G87&VlOjW?&XlomgTSa{G(LRXMn5(^R zc10#|dkFAiWsfp;M{$OrM`dRbhnx?Jl4~zGqzY%s;ZE{WB2Vz7$g59-zNib>2`wL8 z<7<1&6bwdl6y0fo6JJ6blui-jG7{%+f@EKziN#)RmZY ztMJD^uV?@$ovcwosOJl2>py4}$CPJSJrOVzerbp`hh{YTvXiNRM@_Zelrp_4tjvs{%=Fz5MU(Us5+L46q$N@ zbm~nZpt59#z+1!FYhToeXgktv^&*k+EM+3xt4M!TvmwAc-socSoUQ zd7CStO7q+xMSrpG`<{2Kq!cM>`GwM-L)f;^mahwQ{*T; zS$6x>C|f{~U%eYWlRQb!^ak$vkr-(_?Ei7mbE*=tQsAMfKKXPnWpINsQSJHx!*JIp z3qU8NK7UmJU^{q7Z&O_nt&T4qJuYbxGwvqFU(~HAm^pzmoQPlH>k5mWBe+T3Om!>O z7?hj^fi%Hm*$CegbOGyzOs~eCXKDZV8qD{tS)eUwd^PojubszGIn6dVSk(*+wivz( zo*sxo;AH4nQ(8PNfpU*NJUTQ%luyedOE#ir#REspd)B;=%*_rRVApU9n#uOIiFEqK z1v--x{a z&RhsxXC-n1jgTdQ8s>Yvv3YsOoM@{CtE1)7nDX&x(@^m;Cf)>TKrxYdq%z`<;>(Z0e~4WzHBTisQH z?NXRnqez$CRqtp6JRKc_9_Dd3Qgh)x$}Z6#cm8;%g?a|V4Vw}jHe6d6Ix_o4%FLyM zDu)LJ^2QLxpzDhvu*076V~g9T>Ba$=<`8~qYVWu-;8nnM!kIO}2hVh>oVY2d@Dbefz4Gr@#>$!j3Z4Y#X3vyV%_CNkh#3cts=~!k8e@W*zd_&Wis@ zK>K6b=}L0e%6JKUZbHXYlxJ14?ORY=nyg)q-I8^34~(;e-N86ugnOJ|-X5{jB2*#9 zPFz?-qP>>&mx!+XZZb>bj+{3Zt9r{2@FO@xUCyh^gB(_^ZzkM2$d;P7u&7u#+;k*u zND%fhq@II{8j2edpHzK=#u(KPm1}wsvP!3xx7SA07$h9eB7p|R*{5N< zq+=b#(G~Koe>tzuw|Lsy_4%qsAxGz07x^?`S`mVY&uHLW2hQt zoxI0%AaOZvX$(QcdQ()KN7Wh?Afa?Ca!n8dQF(L0V5z{}`=DwUl|DyknPS~a>A7A` za<)r%FwCm3;cCR5i2!q4X@xnwGkM)%ls*sse_i`MH95WB?&u8* zAegCJY_N>&pxU(YYa6zgbM1Xk3+}l+ZuG<)qfN<`4-?Pqr3p$j>XlxCY}L?VHysIy z-1leoC^LVnh3=-Z<~22&>%z$uM3QWpejo7y=3n7jZ7w8&cQl1YC^0nrYU&MBeqZBq z&W^t(Awv$YYgedkgBW8W%6BvGnP7%<|EKKT@1KgcAk4PH9)C^}z; zJUTO~=8RVAsrp0}r=GyNCcHr>7X7a4ea);X&{9f=h;gr(O_v;#bQ7 zX3_;ZNN)x@a5bEpQq}#R&wpR8$ixcli|xA>n8$L~WrT z_P#XJnh&o(pM&2g*0z&rQzt;Qi1OpV2;&pXQmjbqb34Pb!IbR2a^Zp)pupTKSdUpVJ5UW~uc#J~D?^?DQ#-Xa^#ivu zh^_Jg^SB@bq&>3pZAEd!F3Uslw<` zy@=D$rMe-dn^-L|B^{o}b>xd=b(F!$e*h5ZCnfjb?n~`6g#+V%w@OF~oHW5~LK-=4 zyr}S7xZ{4b1s#(Hsh>0+c)MT|ua2d)G6U0@-XQ}v0p5&TglTRHhCm{bdIU({C3-N1 zAdz`*nj9D5k?(@O8p5iZ1eB9+0q+Jg`@8fb6WfKiB>>?&)0-+|sD*|G^FT`6s%^qiWJ=%nsH6 z@Z=-3O_n1xW3|jSmikQC`eeX|UH1K`oe4=J>xr#XW6j z`Q;eIgNV$$fo4rs7Kx1tF1ACx-jlW4A*@-r>4WGWL73Oc%2C$*hv;&jF@MM0*2lEP zXfn$W_9cx1;@wwbrJ5zJ+rVG|v!U-Hy>EE|u zPxjgGcEuWzmI{UR7vu|gJc6;X=oNNr3;7da;j1`luqnsv+ag8do-xi+riOaC4-8N> z>Z<4vdI6P_!M*Xz0&sa@yr2nO3^SH9nn(u?n2iQF1#Ug}gPrj+Mmb#EthKNcvr*>t zP{?qJxZ%|cd3o#bzwueghZ8i7)8;=(QE!W{(((yDK7Pl9r^URLC5u(?UW7OgN9G|I zdvi;|LdDM1+^C}=JUzr2!RJRZok$BN73nqFtrS6iMy2<+=JW{JSqoj*Ej3bI9i6Aw z+=uv(i%|U6i8I2e^1IrDz%^t?`^*UJduQ~O%gg3(7p?48=#9Ej%DxWJq>dc8lwj5c zAAii(y~D2^;_r_68u6kF`;mdxax7Ycn~=~8BSl&p+bE==;v8vd7P;V4o=Er<1ENMt zCAezzxQ-6Prq@%5y=)Ww1kVL5@Jj8>TaiErY5la&xd~&n{*tP|kFgX5c|n$6aF`E; zTR^MlY-Kbp>~PHZGE>kP5qg`z5acjxQiU16_UKZ%!UsnfdKu1}nPb;2+J`HeoH+&u zu#vP6P4GIT-N)E0kjs*eS<5No2Q}Bq)43!;Av1B;2lpcfEAVgoo<9#z zAz;rgjJ3zP<=#%f?-R!YO4@RZnD_OM#ZIvwIg!NhHvKKVfl?qx2l3?6&a%^*&pJZ7GT=yUdgU`uCwq3A zMkDahC82ln4deBn53#5{NHq;^L>INeU!Mg6dQf_x6i#$oCUT4o z?JrR2)u8#L_F5i*4Y+`hS%AmTJw2n3{SCD(M(&=p5rssfTQJWz`*BXuP%cV+CRS}A z3ooO&#<3s_+4G|K`R>v$Zo@XG6gpbdD8yX)tRfW(0iLLUF}HLia`tWeefS=&i7-q- zleb}bU`r^@6LzxAt=V`PnzZA_iNvul<=k_=ebBfN&-dmDKK~&2DciOaWlj9)rKQ4j zABg_WX*bmvyl^_Y38m3{LXRttKE>37Si9IzJaQwYLYujwWNb)g;T%CD#m%wT@~^S6 zNSKNN4_jSc|A~S8XoXcU;be{h#cIh>>TG~D{9bF})nhx{>;AN7+Ki1OHw4(L37M3i ze*GI485w_U1hogTn4e2Xp+N_OsV>@Jx6g_wp|TYGUemtK>sRssV*G%S@crG#&!Y>D|RkV4jQ&*6}1Tq6BnkkwA#CV{yxkpow z78yoz#90rLAtcNX*cm@K+JCu8w(mlWERFv{%TSPS@?5B8wHFR92c z@|cqpbo=GZCN3ZeJB-eLKe4-5@-7;B^69WmDVtJtAhKI?slG#`X*u1l0$lNpDR9;S zV*;RtYB}Y{1t%iJl^f<~b-+GFN0xy3s`Kr5h1U(Wf+$v5K<-vhTGL%bqMziwaHVwq z#+oB=k?%}o7OqGY@)-HNv%F<$EfVeXF1g@8qK(CE2e_JorEmFy+t5Lbqv;hBW>X}I z)q)OK02)UEI=Be@%KbzhQJcQ61NkahzXecUWhGo7m>!nRhVP$-%!oTRtdK|TGwv>o zmg3gZ{JQ28*!OITBfm%}TY35+=_H1fD$e=BM`;F9IK;0s#JslVb&AOuoKG9vj?L>`q(rlu-ed|GGKr*yhr2>kP$& zo%BAhJ%4FCv}R$N!U@Kn3tH^2BiA4DPGiSXFoko&?;AW8et!MgyVl7shhL>DGFr?I zd=p2GR~z`GZM-88(k4-O!dd@mDa-Mk5VCi;3((t)w-Z?~parQ}8OO1D^-WNPihD97~23RktMS-5{73I_+v zIv$!X(kZ0k_7I~1Jn*lQZ?2Cio09SHPx>SWd ziU80G7XvnVuarqgctejAp=M^O7ufRtj7`jPm;WniKx43ci3bn4kuHVXt9`XnXm5(& z!?%z(&Bs@JUzgw_?kCdH>GftOuXC1)@w04>>MbMmyg0JFQ%d7 zX*Ash3n|+Hd>-eH=-f}BhSFgi|Ffn5yAwc0VK}MlYPvcq8~T%iMC}wcuvt4H%8lP7 zkKUVA)1KHdw{yGkuQ+-p6RZdxT#`?dR?t6(T`*~DS%I`#*@%l+f4;DASYvW1c}M{r z8Y{^*wHyfH_9ar-dWaoekk}5Cw;kSK!(@Ml-%u&Rg@3Kti2=l{NlEKVwk(_UAjN$Y z(aBnV;t_7EY2oMKrI2I2ata z>S0qb1e?8oLtwfG(cVhlRiP} z@;0JY>YMfS4{E?MN3S`>IFH%uCl4KvD}h=wU=qY9)M{=8Y^8c)a;&ZQ&`7|1ONfy* z&~jczmFL#(ZZz2U%sxtVj4*jHE{ygj?l2mDw~u0I5H_Hq`&ul$jQ2vkvmx(J4C-f5 z80QBSrAZfPSo>(vIwM-9pWcL#<2vOhV(R~k!FlsMNepJ==yYZ~pReM%wwFL-;!cM99zuX!Q)c2J!NgC zXZrg+I{~t8e()DQce#tzqbU`RC*AV%7f2pl}jkGumiv`5+ZPy~O zh-b4Z^yL_I;E6ynBlvP^T~4#6rrEAd%BK8-vM*gRvUsc*o!rqf}&790$}>#Bk* zbQE^mS@V}L2foTRv34Dcaws6>-%k4;yL=SXPxr&~QQB}*6BW-@Yt4$vpgTvnz6kX5 zK2W_z>osEwSVCUQo{eC!&uGzXtjhq#nYaDTV<{P1gqNfE0MiD4 zo|oszh$aiq44Vg}XrV2JzD40fdRpW-hvN80TL5pNObNpN{pMZ|Uc@T<4Rd2tW_Na+ zMZzQm0`bW^rMO$c0V7f-+g>5znTngm~jI%FRN4?94f=Buy z3m_`JS(x!t<`U%|a@Ol2Ra-ozTs^kAh;pUQ+e)O$=J*Vmi|1=@;#8wR7A9i2dlY00IHg8Gx5C^M6(7!0$D~Rgo~-Nc&DN%j%f6 zGXgQ<#1X&?)nR-95;T#uB|>}@ZK4*Z4M{j!`#^m=m9{PU#O|i(HQZ#K27`)* ztvxkXQbx!~&U?j#5L6~!e^(gg2|{+_9{2F(9g&7WepkiCw7^afn$y^bn}SI{h{#q~ z1Y*N1_TR7^p$8lc&u@+D@#fhS{wE8r3-!pt)P@!HRiKSD$a>{V3LEISnU0(bqCgmc zQSD=h7D@TXI*0B{(|S-AfvZZ}HqNxySbE7(`RF20$OR_^HGLgR99XF?_`i-#_A1J} z@D`_0V@A)3A^Q^>ga6058%cKrI^Z3_z@l!f_Wm935&g&R5c2ZFABwkj%CV%& z1g>MP{gmTV``a>M@2PPw6(8%)pn`l}6paEiD0vFuTMbqLBJ(asVeE9A(P}ZkvKFtI zTQd)#Tx(P=yFsm!9w0bC(S+M+vG_j#hPwD(%3+QB6!m3-DC0bp^|z!Rr<`eQJ8YM_ zgQ>Trx-keLr^rh#g-cZFFJBc|zC)gCT)R0FWlc_o6mmuP>7XH&QrRKZHAShY9x9+A zA2c#l0szYfMUM#9{mnJe{D)l_1XNI)=);FhP;w(6MQ}otkx3j`7U+*>YHTmE^(K)> z4bvp}b@k@bko)rZvT%~$T4M6viR74w<3;H!A{J(IxqAI;$2_*Nj2uqzsRZ-7~J=EBYnMl(ii7)c-f- zc+EL%HFHgP)dQ%~p8i1}kVja+zxbhl*0&d)=!C_`Sg*XTx);scfxemRT zB0GHLGlv{(&?xlzbcKj`_BaqV)h0hZ-5Uy=E*6ty=9eI)~B@ zi zW1O@+ub}k0h%YWohTaKl*0~J%wZioNM?yfF6aoH))&WOc2`{d&803V}-5% zQk2XKZaViV;=l-!2_6@{y^dEV6awB+cXs_RyDK$HPEC0l=C7%1GV6dv#_h3YC!Sh@Cf(cZUsFmV(Ac(N5JfUjvTzf z0;V3VR+N7w(ZM!^d9Y1xo-1GS-{>-SdvRJOMLybdXJ)^=wk$`HP*7cd8K|J{W&*JY zP_TzEFVuz)W6E6GQhCzeU)RFLMs_eBAkMe*R9NRtC3BVQ89^;xsSh|sD` zqP?oDSajJ}7E-0JR#Ufh-NrM^BkP`?OYsU5Y}>p6=4l5c-R|04$a-TMMQ*IPT#P7G z<0bS{nZcqHQ}QHUZN3s|+4K!Ry#CR&Mw^@ShfTDup6;`>xfGG9(>pA1=Q-~I2AOR* z2Ebkub?=tgkO_)VV8iW(>~fi{Wy0e!){m(qzRo+%F$u}?`Oh|MuTYRa*7=v1v7Vt# z@$o2wqaLW2ttZX?VsS54FOI{__62@5q&RbFIRelqLBJ93MZ7pGeeb9GYPvr{2WY|T zEIO5cEf7s;EI>S2>ICMQV_epsZ35Eqm{5P^X20ribNHbR-FqG~vpR7komH8w2mS^< zuT=(e{wL}NN|@FXJT!FvDXGVdsL>W?$ei;y{aFT7%hUd8RA-)!C(ws3b<&Jrn$#IH zr(vm-B+Jh3+ih7Nm_nNsx@JyA;M+*AhVf0->=%1q0X;+K1wYaU%5Y&)5gh~v#hKc+ zW4dqKWjh;{Y{B&uz!W{#hG?4yj@$VS2KXJ9>8yVVuQI6k9CS62B#0Nc9t5c`?0Hyd zs&xW{$LprPgnIf_JuXEzj-!CzK{04m|EA?UET4lTf@s7sFrQ<$7coWG@77_oQ3s++ zXF%!6P#pV;BB)PMBY!bfx2q%62u2=4$Db`U^aIxsf0})?Bj;bPe%mEoYFd9 zo^=B}&2tv#+x~$n!OX$gIa!2-WnmIN_Q^evJdt$`BcFq2;j~K1;DEJL!pWm|DRhL4 zW=E+<<~Z{B>Fjc9h%ROpZ`924$%LF2S;@D!_)a)icV9BYt-FcK2i+%a)U6qQb-~{D zdXq9a>DZ{Ek@Rw^z6!NvYDb}g`2Qbd7nHZ9a~DWrMkl!SGSQEU{vA!sVs&?EO3Uz@ z%8fc8i$<@qr7xZKP=Np@`dHv?XX-)});6T3sV9dc4H76ozn;IQ=|_P3%?w#96GeN? zicchiN#k=1N7s;9J*PE>ZlkgQUlxX9Iocf8$)-|`*ttqfwK&T&es7>G?6wj{vx&=| z=Piw)jnI4|UOHrvYN8iEG6lc>=~@uIP2~YehE^r$=P~NLz+eEzj5QH8#7vCT3Fxyl zRntEQq-d~FeX0vm<_d0!m6|Jl35wg%4w4*ZO1%E^i){I6YVYWJCKEp$tPgg}Vn)MH ze++|{To{s>gze;SiH1Z^P07|=uFcQoxhCUuIPP0H(#Hkd$`SF;&3WG(&$1+_P zqQT%|?Vy(x3nsr(eF(c;TpS@GVKJ__fXf4valIxgoG4)3Uw%&kj?U#}fg5U!ElV-q ztTN4Z4=FYHSFvE?H+%b46~ezvMxC4pFcfe7Q7^4oJ~Sm$>qY7|Z+A2XgLc$3{Di!3 zP_%=l{m>AOfoVv3oWIG8I+n=B(l~EJ!C2>ION=52o0g8JmZKR=r7*MWUm2#ic}j-R zZTsR~wrlUCRL5zPthFTXmwLUpeI7kGc9LIDh(P(m3M<^j8yue z!Wzi#IIcTjq$*_*pyFJdY0S!RhR-=>f5W56{mALP9syunO#uIopjRMu<2AccM-`0b z$$&(UUy7gaEYJBu?U@RE9@o%M(AWW49rA1yop9uJZQ{bfh<`GTB+Y=~_RY{?+cBZ=m!p(#Fel3yE|GFUkGBykliedPn+l^IGnztgf5l6%DuzBA_6e zjYa9h^hTsV(vV_VThjxHNDV`=5mEaG@nDd3Aq>Q$L5nYhRe$@lxdfFSa*HT8la}+| zpsMS(wyf~3gr)usCi|xpablm4i0^WX(VMZZmEe_KSBcnz*y7?g)O`fp`$PFLfS;EH z2^Tp^9&c;k*@^RmYB<8J%NES9xXhr zPSsst#XBB1g-ce};ykWuI);YQY1s(78kVGz6smlAE67V>pn2PFYlOnWDfNXt9CyL- zl2g%VVG?MofXm^|NazW9S7rs=Kz{*_$h=?c?C<-Yy5;}Fh{J0NNyFQsM=R~~zlX*5?o>hv9G&~kc- zOAPq`THmFNYlYdZy))2>u$f&nAEc2yvde`nSRRfrJLm_z*#U`$J~CB6IXKHL$+bdM zscMd~`0&k}B7k@QioFsroqB7}u$5f@V20Aqfy{O;=qVW!1^=Bb*P1M4fko@gmt+pJ zS!hC+o4Uwf5W5;mm-fw!)SUY*7^~$CJ`rLJ~l zUcr@=K@$zvP}_KLiS{3MO8q)8K2%pG+oF51BG&0B85q|xf$;zV3%Ti8Qs?1mV&2l2 zdsxwE{UQ@~YmgNH1=r+SB{hS!Fbn91)Z^C{HXM(3HcuO3$0_iC-%cTpa~#u$`qjnf zs6vV5A?dE->2FH0(RZP^*2 z<_9Yhq7;z(@Ud$q9*!KFeL2NO3DG5KQF8;NNj%xSUL|}+08=PkS2>H^nA=aX8KpF; z>}v#Bh@nCDJR4HnqsTC{WQBLB$72&zPkJt+Vk`l#tf2Tm07pTY(HlZEu)0b2gPVs; z8u%hbVc7Z?tqHqEBMti#&nSfnLEJlQODr;(a<4~tAZos+ZaoWq@mx3DYBE;jSa0{A zJpydYT+AmaL}6KYbF;2?jC>(wv7ybUn)J%lSO}*NhIRX81^2j{O*DFN0D?KIO4STBK}=G zFx!pkYZ%YlB)G*2@ZJRlGudF!*IEdXihwy@k*{UtL~X4D>{IKyBQ;=q{)^U{u~j1S zJ~pcTNBvvpF#>r>Gt5_BTHEh2g@@H4KS|qdeQTIvmj~=`0HL!&t(klo!e+y`AuO9{ zW)l;lB`AiqQ5;Z&+OZ*7_cdF%l`j^}LSV9E+KU5y9dc#&B0a9@o2Q%IAIwDkbu=J1 zQl`n#t~qhJ|39A{^z7&=FYj%$bCsTuh;)>Ih&8G7qmwnSU!PSJlQJ1?{sv$QWxqJh z!HdFeG5#3kKr4I+;XaC@`vZc118-a^N?i$cibp+zi$?NY9!?2w>qub{gT)-W#`Y`Z zWm!8UgluY>*4kjfW+Ff6hFJf7a*)7+H9-O`%G4FgH6CQEm?e4m!N3_k-?Q~I%yBK4 zEY!o}J0~#oQiTA_)(-o}!Hu?0K4`4p2+JZ)xmbkPig2)}AGUCKo#=gGgy|6u_nahE zDJl5RF3k#~8CzETBSqqwNs#=b6fEF&IGG*>SNtV|t!^*5in#n!Z+zkKdaG7pgT@x@ zZLo1*7%R~R?;%=o*o5m)M@@II7m*)fQGJuX#K;#l+7Q(l?s+aoecz7|LBEh6Pr=O; z>a7DaG!gC1Rvkpuwn;l7)ojfDE?ztw*yZ;ppmjurQ+eOCNiQ8|o?_&8iM5 zr;kcJ&lV|!GH*nJsx+BIxUUwPY?Lj%oEHJyv5FNVfc~OZ*dX#eZ=*!Dt7hzJAbS~n z)9e?ab0N9fhw_54D;dc{gJG)-{(30Aqlt_1z?p?4cwA0!yDgod)eh>2RYl>Lv-vkT z%<#Vc|4j}t_nrOEmvYY4g-Gq4%;?xJC%2jpA6Sj1^=yl{dt?J$Fe7j+1qmNJLRL;d z9Isp`RQkl>Y><(?1A!k7e%)O=&Gvwe0fx{momTE+=MUo&f|cy1+1)Zv+(^Jx-my=K z#ppt6*>^gquZgY^mu5F_o>jF4pP8k>&WTl@RAodRcDFI5GHA?qvOM!=DFZf#9LxY2 zxvv^q%CN_@_vt6{wk_;F@lCRFY13(d-~kKwcchZ+FoDr^zkw%Vb0(Zj8q+RGFn2P+ z$6nJRxOg5e2x;icHQry<%Q%c9j&BjO?TzyAPts{9VU@zxrY3gZq7x=H%m@G3(RT)Y zD@gugki-Ysdl)d^;@0J3j2OxR^dYZBU|+bnE^-I zFT#ou=IwfbItB`X+&V@7T|1 zwa^;xIfL-_n&+|c61etIHV&avlDmMKG@MpTS#*yEiS$K+w>HzcJ3hxRUztjp_oNYZ zlFpP*KV@l0d`FCd}~)Os1)puleIUnxVd}jmudhJs9`x6OHp1u#OzKM zTVfr=05iePcOU*dqdw!fMlh=*fly%6OZ_sTEx>;4lbGWo1dC=4b(u23EcJjWe+DmDX4RUFfJgVUtgFGyR90(A7q<0l zC%rS_3NcrSXHmN7&**G|WyTqje>dkH0EK9_Ab-azz#X18wy*`3ifZCV2;ZG}0^-8_ zXF~RD@@?d<1+;CRAk--Ly)bTlLJcWXRriON%bYaA^#CGNzQx#6mM14j1k zf(K?jOZw~9o$f&aN{;;wwE9-;eRGJ&14F#+?o`h}26v}cH%$*rA_#{AdC0?pSJ4-O zF|9$5gy7_LcL1ZgItUTPWy5Km=!~m;tCj;nxGA|Y8~FRC z#=~OVVQzP>g>^7ULvmC7`!^0-7S^sc1*iD+kJAXpU>W-@Q=xHGJZ6(Rw=)8j=4+Xw zvz+E3)<%? zS`D(eCp8(a;6YlX+;Mxfpw z+kO*)=pi(lM_Lo3=Mpg^6pklIK*R13N8WPc9~vaC;`OqHSBS)kNmDX*@G<+?3IoV* zFA^->@)&3;at&wO^xIAKOj8Hz0i@-OC{;Ua<*54+L%itzcLMfD&L3{hsJse}MDEKX zPt_|+9@mxKqFEOg!dxfOqE%fs(T|E4Er<{0!-ASaAQcvJ2E!Dj&?7%LA1^L{ma+zI zn&LA!Rso!aL&l?i7`Qw%pH+{|k|GNi8qZ;Z^Up&$R?Y7j34 zhFDOGnltAc{oc$eRC&JDJW*|xaJj(A#xxC&(qon0%qLKy;t5h#k_IRzrQ07z9oTT% zHUb!?(uW$wvb`e@M>1Dc_y62q3a$E|dMq&7?sc?Y6x+1E#7A&E#22}SXqO#wxV@GK zA`*w?FdyMkd8@5?dmxr(Fq|@fGRW`+VB%12ydE-~Wf~Cy(b=P4QF#f-Huen71V-5g zmR&~Pg*=DLCpM#x656XQhwOeMzANrJN$uNhY)i^r3fdeNqT4?Ot6~8gWB)bezY@>G zxRtmEqhi7Y^zF^K_{6pkHcJLiTrsOM(!n`dY6VOCtp`fE^POuJkIe-Ern0cwWqow) z8U=OSKUfp%`(?(m zD(6Zyq+e9Nb#D*x_Z4V_-FU}VN|v!KUYU_%g`5ssV&;?M$>dQ)_NUz%X8Jh~3|`qm z!#D$2-@zmIUs<^F-PwQLVHe&hq5H(c&c(J8f4Ly)`F%{0kMkq6TMPtJ`(Ne2=&pxh zyOST|+Ad%4-%Iva-R`?dVR%D*`D5Rdm?gFN04A3sTtJ4=Z*V*ImtvWLePGAGe6wW8{gxW{tT| zchIES)?`nyXNq*r*)*YF5!}v!Akqj)g@iC#6}*m^g}5YUyvb!xuh?Ef8~I9t@BZD! znC$R%^?%?AWI%5a98vCvj6SI^5&li56SX6}&R7WQ&SIR;UPk=c3h@(mh?meSQGNw1 z=a1R@rv7cK)h@ekN4^<3jN376Q<9)T_$&tk)Y0e>O}Upn2@y{d z8#YgKqhHRx=HRe~hpfyJltKv&TU!^DraB%LX|>OjQ=Lq{ zKY|^_=71`LFH+Nkxb;|rZ9a)d^EbacTz!>I!Vd%p*H=>F&tQlXJ6#3us>s%Y(+Slu zps{V5EjDx#vJcS@j@_O=_naSl{{V}ntvB{U*lI>3xHPQA9ztoTdUtEFoR$G;j~yvH z)?ut0)Apv3K>p*itA2+JLAfXUC!<#IzyBt{>rv_OW&i%=04#C^=*97ltl*gQ)iZ#k zF!d!(eYTDC2v!VmUE{AjYEkV3bs;Cv_yOOI$QUX1HXZ{sKp+5apt~#}@9u@gA!f2%Kh&F0FSz-u( ztFl7er! zUI=}sIJV#mv-q|^$&jT*fs`{Ys!UnpoJrYhVu^oh6<;}0eMP9cs^rgdv9+U5mYWT0 zYJew2)p_etxNxyo%~_ej$O-Y;JnxCFuI_6Knb2`xE=> zP=hVZ<^gm&lRR#*>}aT_haBod1@<*ipcs81xfG#)S?#%)5{3_>?&mfFzg=DZWVElN zqUp1RF*Em&Mr)JM$*FN;)>I)<*Ev_+27g6v2`{-V`fAesVa2fC$8}s_Uj%+sg25 zY}|(V?B9uBPe``YkAa&IwzYAA?(SZx`nK9fBciJ$crLyOA{M5MM+M&HCSnxz+#vN# zEsn>kJs}@Pv%~TVB+tXe8qbEH1KA*o{Aur+zRz$=&h?kJz|^D+=v9rjM)W0+cQ9kt zJY+4>+Y@j=IN>BFUJgX{dbGTjB?r)mH~_pPuM7%ohI$nw^sEL zA3$_Zgj}3I9y!)53OTCrtT|QD%A}zpz6;yLx_U}pI;vkrt1lwzmoISgTKx2&u8liw z;J>)h(rw7LIIK#VNUt*9oK>cR`!}Adnw23D?CM%!)@%B&0uF4uxr4R#q%bL|(CG4Z z&N%UfiW>5mh);u41Nc=!r{$B$hdML8=CS(X8RQB{e3sAoIg2EM_LPogOXbxS*g*nq zTjDh-R-8zO>h%jll05|)GdD5OIUPeT*bCkO=wYEU6X;?#xxp?vPfpKghdFH@vnoG9O&sDptBUZ`2pBPk3zi47k>z%9vy&9x;`B*RXy29A6tuhp8<@XBJa+gHHU zZiQHTaJp!`po*&vx&)Y-2BXA60Y_>;Nm+i=Q)dcl%d-e2jPDknDLX|$H`*i%TM#lt zO+s=}c11#Og*)c!-&T0}y`$FVX|4)uwGa`2!bZ8VKBe$WX=y!lAr2+l(brUzB0uxCCcP(zc3I~tU${qJc zlzA1I>EBJ{T3_I7FAMB3?TlSxVzlX@z(7Dx#8*DoEHHx>?xGc~j91G}=bp{IlaOB{ zf(ze!i!jr!KEUF&!_Wf z&}2>w!t)?&=rL*V<+B^?qj+`6%Xy%|{Gb*_rvc@aQxrh%8R*wLG9#-Atw4 zHW%K6SXHHd8^YbFD29`b)BXO|mKbw%CO|<2dLe1D;<1m+T4wJyo8&Yt*th$S;o0MG^!Q%b_V=9_Wn@vF5rhFE(+{usl%V<1=o{+G^;|HntHLaTQRo7I`YN;!* zhe+e4X|pFt2;`;%Qo4?uVelaPeOk7)EY2U!eD=NS(me4yxzYK6puN=4R`bjb@oUqH(dR{nrvmb4M#pM?6o>N8KU zg*&Pwa>Wjb*9dIp{BPTs`uA1BrX{P z2OM&yYXd)omW$_KRlDvY2aHRrLClXECbkhbM6g&&wnD@BCL?=9#4^KOGH9$w>$C1G z&P%|G5VLcu?F*AT(ND7jP1O{T>vkVH-i09w`h7>~Csco?B;rO!F1Yb?CYMN%p*`*z=>|BK@%a=njNm2Kr0ysjWi~kuOo|SpH@wzud+& zsKU?0ZY1{=`1A(_qR$%^h%wq|wUH-7Kh({5AF3q#3ehVW1-!XOr8Aqy!1;4ww1M?L zDYLDS8{doFvS9j%>BE08 z+5iISHy%5$=wI_}ey0jTL8Rs>F*CpeH`zs(}Y ztODR&$#H1Id^ni_X#6qrlf#_7?+5ngqPT>DEQ|C&{GglBNlOGp0U%1yLP6&eK-XG& zB@<`nF}Vs#NN7b7wVCv$Gu^c-F-_?8&85V(?ePxYbhY3IJryQl^ez(&$ar6HHX3`K zAO*WzU_&f@*GDOnBTW-%%`g5{#ekyExdVh`_WYM>C*Vw}n#x=1cL`zc?c2~NUq7&* z$W!e|rl#~}zoPqkh}x*(6U-xy@M7&+;wZoR>u*dvvZD3c25Qmh;9-C1!jjxw3D5!DEAcQz-3 zSRRR5&{z5EO7HNZii=?g#Yvx8L}%V|6NRC&14m^iafQb!wA-RM$Tu)5ANC_&9Yp-_ zSZAPymYQ73tpRt@)VZpZKFLgHI5QW<{#IkvLO0EAjMz}tyDN4|{}RQTq*2ZZd*uc@ za$imfk;O?Yb&Z<@8_|ZZ{1uEpe=)MEKjvb@x&Y0@Q|D8Kl%#Iy-B*_>o?&|4H@&R6 zyfXvO``&vXRIbSWKE4@Xh-L(MV1I4QtBxMxc-p#x3ys zUo0T}ORu||`reqX_X$AeEU9*4>1ejxML$8AVphosi1%n=m=6k1&rY>M>Opmcc z5yf#c1aCqC;*U|Yw-yu`&m25u$Ns~lQ{aMOxDHMErw(vTgRMor8g#v>Z)hb@ zQ>@E&BKB~s%X{-_lmjL>IKwu2rHM(R`OTfM+=1myjMKkxsukZ{599| zs0G4AcW+o7lI&CrfQs|UI$t$rb%N|)t2i`{Sz`{9F4BXxUtx{1C=%dw91aLpAA^_& zwqe;-NnHeLV-KB=PmHcsTiJGy^_>4@_2FSRuzzv(Wn;z_7{^qCXT!N=W-NiikByU4 zDi2hDiY$$ml(F?RVN`wy1%BGhBRGLtRR(I+A+_TmNd*D*Q1c?H*(+ptmquNu*MQ0C zBkX~}?{UG;nG2NchCW>fu5-F-bdp?BEsL?vR_rpNYXb@E~VXOau+milRK+N zvT^li1IUM0?Ot=NbQeH7NIsp>motO%5;6h&B9 zTqvb$XaDN0@mv-&4TEX8x#HGhnC(3`ATtCiK9E0pf7gCAwKnntgi?h{ED|`Vi9<$1z?-|aewLp1P+2%PsyH?76wgCx;{g$Rq1nWY9FIxQ zzEx6D(h9)ZG7d5Va~?d*(POh7JB_-Nl>ehK)zYY+=Kouw81kd9}MM>Yh=e2gc;$r~F~k zi)wKFG#Co2O2Jj-0X~OJcPTGC;s}xCR|sFha{<(KCZCg{hWX*Chy}?y$@uA!2EP~8 zVWkS8$}a1cn)jWD&Eb`QSiL6@#>xS3xjgW=nn>>o>+ze4C*LJ;#h0rgToLi8xM30t z4mIE*DMy{^QL{%v?B~bEazDi;R=EVibu~Rr$ainix6J~?f5r5KK*>KfiFg*ew1oxk zw=v6$XHI-wG{GL4tndEEv1n}bXR$B1+Dm$ddRGe)I1^P6L9 z>flf4Z3oQXC?z=4d_w3w;teqNjqjws?*_w*}qNC%fiBbb1@ZD|El>EWt=JckSCgLc_p=5ZH(& zSCc=f3dK${atnrHFZazU&RMv>9aTBeLky48uc9qT9r~w3vy_0%gtD;gmnGL6XVh^Z z$S8Y=Z37CV@6py-+F2_!!;E7ZlF=z}kwg>?6X%|DDO5@GwaIZcc~dwK($lhhUN*<7 z3NX)1=W(RQ#p)RsgPf9Eb&2=YyT{u587d?z-Yz3yPj@HKx5d7GLvQD;E8o=Z%Yf@pe(LL>^K;g@qAG zVwt%PHB#!)byyG=H|9F75So|FTR7nz6#iMWJn*F|$@kx&kONEV17RWMlN^Fx_O67q zu9-w*hP~4htt^A*QkUN-4aIIWPBb9^LdPV@`06m7&j{N6Y7>PrlywAsglWd+{-|{ z19_@dWYLB>dYA@N>W`D3vlvnKhrwDh`TA9;8d24d`;A~oWW~lE-`j$fGqXryWgxZv ziFvN6jfSRTc0~@52ymy-gClBeiJ5Gk8iI(AOlOSr>kn*fhPxv1^15Ca0$uy1k$B`N zs(lhuYfMsVUXr7cr;lOB?0h|a6Eg8PjUJo3o-J?3$G_?m)1=OFv&{$l!nlPRQy^(?xH zg1-sp2-7;qYT3@i3^w=x79DW!Cfp#noz}JRLsO7Qphr*G2hpsvAGM<NMY1NeB2EUJ_ZjthP+Lb_$?jfr)r=tE;Eqgtm^Pri?7z| z%iRS)YN%)rob0kAB+sQ6%QMNIk@b3B)1cS%oljX<6?qPj(2dccGXuu<%0I=lv)60g zDBW`onh#<_LuH0aeSw|H+j46I%8VrNt0SGr2eySX-FQ9ou7zGmzKr3pSS)(<@Ob(2 zS>*kEf@ny2OKXYOB^lM|t10mjS8U^T8%e^juG0K8Wl9iF=pjg?H;;+4AGa8*Ai^1> z*K^{xP#59XeT>7gx_XBmkc3pxs+S=GR4eKP@~^7%GOC_IBAVnr^>6w6z!Tqw4kKA{@hrd z;1y>@sZBq~$(f65&jAqzHhOe`GpR|X1NdC)IZ1Cjx~G~XyRMj7DuPidAh>~q%2%?E z2{lOv6s@*4fPAje-}DmWP-~6#)c5~TB~;LTChqsg2vGR@UJL_5Nm_0ZP4uuIfTw;U zM*pZh@d6sA)`KjOngP7SX8@CNiql9ZYh2gu%NpDNr9oPWWWtyLIQwy^Zjhs0%KAK8 z;nlp*l{8YXMC+km<8;Xp+9}8HIMFbMYj}!X{MDDtrSgqBg%kN+JBV^U^KR^WeCn!6 zim&V0MdR9%_Ovbe1&UZjO*CZsXeHR&(SS7n8Cq1efNq`#+F@8-oB}dU=c63~xCRQI z`EbsUFtLdc?IWSav(txDjy;B46g)TR(=3cwwiT}zjrFr28pBN`l+D9tuyg~&e*>#| zcGnQzTli~$?f(g-m$KCw{QNy(sj~wp=pG8&?!Uwa5q-Ee>qst`~410Ig zTOuKxdB z!%kjM;oWC%=ov_gp!FKNmBJ}+iuRSY#YE>DcqY!XKoO%0n@9)S7J&}l6bX;_y4kj=s|0Ji)5`>h}) z-k$v|PIJVSrLi|^jOMel?;OtvArL$OnahBsYwGPf2A2OVYFJ9LJ)8gos=SjHO{c?; zBrTwm87iFYQ1jn}tUmOP99VFpy!L@zw_T(mU{puJ7ecF6&I(xId^md{#stPv_M~A) zIRbs9rcSo2GkW8Q_VV@+i*qwOvYf-zWYmZh&E8!~0QMRi>Tg|(Og)Pf1y*{h0~v#8 zX1Cv6^ybIpT{`r$7HWPG1d7zJX^o^L?6_{oCqBs4?5;2HwXU~Raz}zmbfrY;F(D2C z3HDO4<=JRN4#3z!UJFDOiE|Mnnh`Qdy8nw}dUhEqohEU>8+|8}zx)htu$m=TIC>XT z?X-lRm>(Re&l!}h1fr|)=fqaD)A?R5&TU}kVsCQ8+~R4&T5DMy6q z&)lm4-JoD*3}Tiew51zbnjBhgjIQ#<@?b`TH)%V2llWcq+t>zjZREaw-)#DGBRI|IWNx+S%geEePcR#2HF4 zZKw?1Yel?qAy?Lh;-f?ub;W3m?lRLq?hLwln~&l`F{THTdSapEsA(H>cd>j0uE_w( z^^aP?9N)zsN9~WnFBB)d<_$3h2=4I61SqEvvd7n7h$2^HHSCzr3VNU0$-d#hoV&m~ z9Jo)#;?T4hlVB3wyS12aW>BUC$m2%h=iT_J#!L55g&~iS;zZM{yZF-xM7z~Sk+A8( z7M!M*gYYn6*H(W+bJ3fNdY+ESs=2L-lF!u9NejQDF%69+*}2^bRq5vrMB>Zs=zfKj zl9$N{k2p796eC4~tXk3i6Ky9?xrgk8>9~egfg`2g5YqptJ<0Wpi=fIFuPSTOyyU

    KUEMu68GFG?GT?g^hp0e00xz*#wR0RQUX06Rj{xZmnbifyt;kzu>2~ zGcIk-L%0yBevQeTZ&CzLNzE`dQd1sy-}kuqdtPO0J(oo2OKJ9hy*f&}@yC}H_7_8` z-`LDr4_>CSFWSyJ`IN%QH_HS7)?IZSau%|mqFiu2_Jm-R+2$NnV|}yr-b4ALncJ(h zWTT{vC%IKD8+JU8J4W&9l!80}bIy2nYeK85yU9aR$5~enROzHBCt34g!U^mnOC^r0 z{~QQHRISdNL@mRymWGTVM$2n)_7mxdUe^8iaGK^d?_r|_!ut>EvdT`FrKZ~r6Gc~~X*@s|b_U%VKDH z!&wOHwrG-M>(Z-5j4~ml@82XwMlrDau{_lgg}iEEX$RUUQDqphtjBy2?ebmTt+t)h zquUF9IhMukQU6N=^BF{AYxU!|gOS%TBS6DFbEj(Gow0MB1Y94hoo#9c+uQ zuuavmXh_ih5SK7roKL>BLK!&gMNc-`aTklmSUPP^eVFbJW?P;8AW*5f??sl6&)Q|y zZQIB{qMR$aWf9C$N%%7Ep3XlrS?@vw;gH7 z30Ag(&#y6l29(d3XJfVUhiG@}1+w(oD!{O$3g?wbO-lM{=shX?7uY){|JgV%jcBm$ zygbDuox`+Ka}+;!V8( z-;DKeQ^?%gj!?iPM{AJpIyaP4l`i0>c~oT7It#U9NUs?Nd=441jT^8&`y@68Umqi(p0u`ij?!T8?{Xd8QETh7xwj}WlLi4SD&rj)iy zUMPi%(}hRP!ky0b0l*b5c-D-cBPZO`#}uZJt_)EUj`!dBha_>*S&@`F}$%NBwyUy?JC=D*-yDY*q7Tn%xSK9%B zxlZotTNBUSmN@?b#23x&6BUo(=QZIFS4>vs;X&^sRAIm)*(}!^(a2)^Q;7rB)#Y-B zWZei;3V3n;aME1-Sq>NgzPE^l00nP)G?Yr2_Qwrm`|=2P^@Vve8(sUDdg|%;4Tr`d zDE5uk!u@qs0z2*QXQT!;nKD};3TX=u^#Sko1B5_)^7^eLdm;Y1)h-8ck7&l|*1%ivq!Sd^We zNa&wn3)V$xIwI~8L_tSdY92J;ju%|Gu2GRN&QJR`nL`V&mOqxBtvTDw5R-Z*fwb}~ zLk)tdi>&EAh?=*CvRB%{<3B(dbAlxf6bq%0G8JV0%j4tz6A6!X4D6#L=yI%C_hCSx zp2c1L!!e)CY^SU=%)u|?bM|K0#E7a(N=AvGHwL`l$V9^fL|C=55cX8jUh{E3i>VOc zM4eO{Xynui`+$v6dXN3f)~nY#LWWRrRe^10b$J%)Kdv^-KT4q(RW8Khls7G{iZlb` zq}~@qM*e74fNc0{FkG9ZDq|1U5@Eo)4LAZCOvU;M!olM8QPA~5tw+~bL@&Jg-QGnu z4jyr9k9xYROe<)4>dQ8#epmACKChg9UJrK+7287-Ml<|Li~p8laiZKrQWv!B*3@k^ z-k>%sw;w72107K*lqjU1 z%t;r8kK8DgM^keSPIm`sFHDDoNxr+kDV7dvNZp(r3*|0Thej|QhgpT*mCMv7J1@bd zo5Gi<>ZjuLg-L3Ry~2>+$>E#F9B@+ny!o_tocBBJqQsWri5d5pCii_QT*8wb0nK6G zqV^-Y`=t9~p7s@kAeV4fJ&tYw)kr1C-V~uM1v-e?feCu9wR?)8aCzO+ z0MN*X900xYA3imeoXlYN+|Zv1g0no_aQ@5r}4kj3n@OkBkJI2yKA zo*`xi-zlbvljU@&8{gUifuYCfnyZ>xr%f z$@)4Gl3HW??dn|2;9r?Dpiq!z?JEFx-z6=~qh7Y+A%>Nn2#(q{P_(^3DaT@Dl5hnbqpvhb~5t7 z#=r69#;4@gk1ZAwW=YQsn@Hv+_pgi5PYTCDQ`KO8A{?TNFF|iEbpi^>Ld-O3fMfX` zfIkn}K%zGd+ZhS+(|*P837A)vA8e2HY&T*1%TtKjcr8AMF2}l%EkT+#M3G9^oNm@# zX-AM}u0z>Pn4X~IHW{Q{ybI-A#Jwh;xob&_msuo8$h)kTc#IgJvt)wL=uS*MKfaG* zn`}micQkmedHw&{7Vor;(pE+zF}2!oLK}tv2NV85LF+2_G%^W|#75Lt<;qUaCY%Ev z{`3<}nk3h^AU8W0`DWQ1QZc~8YGa5&7=M}>ytZLok+DuMN- zP|8rWg)xv@^AgRo+(x%8aHFDV;s3GA#`*uqUk2~oH~)yOh&?e`q{baBxEz!zcL zkI#7T)Z{jTE^bYjvGQmyaSgYfMc{6?Ww06b^Jo*|W!a*H6zri;vLZU4IU9hamdm(8 zu;`S08vp}cp-B)9{141Fa{i>Pv+toWv;33f`f9!wPGwW2;~c!vA*y8I=7GZPJzg<) zHC|?p9%Y>ca8^R~B;AX`@Mz2zUXTG$o~ONEHnl#4hCO|8C~E zY-@&(_4w+*cy913#Rn-4I#9C{Ie8&#BVz4+B&_UkeUC^eH`aot$(?j3;s_IGt)U;| z5KM;Bi#%Xf_}!2%8ej@!@lW3#TThSr)88)48d}Hgzu3=#M`hQf4L$O#qMHO|)uh~x z9hxSI`W*gxLydl)$R`o2<154vClA;-zgn(dE>EU{h%fw8cB^PxM3OBp<6h*9oJt9b zBM`#@z)d2+BK~`Y{(V2<(m#S+Wd61Fm#0u7qBb#m9T6jZs4H>@(fW5Nkt1YC%}~4K zH*1l{&XA>@4jxp(FqL)i!30v13ZhG`01Txnmj7x=>E)kND{^(2cRC$X35qiJ0_W2OsZ|sp%+`3&pwG%%B*{otkCuMXc>9H z5d{d0*|dr>Q_@XcCZ0_n9f!n>)I?guhQHC)l?tZ0ySfo7f+Nx99mo0ZI{`LIqQ)@#u57P4Dz_nKr+WBLeU#*Z+mEBWYHvF!>Hj9(7PIW|nhYgn zaiKccSa_w#0TYCkA50gUK{y!s*z5p}@9C3w1(AE8G~mbSJAa^TTWXRoRrm)j0DH}u z$J{mE$vyQ2f0zxZl4W_&gP73H)`^Vw-^T#OKpqOI4pX z8pVFmZq+g642<8`+ia))VtOO+aLomjG&s~Es`<>{o5 zYXvQL=L?z9lIak3BrX=SPR-E{&24GHC4&2P=$M7S@^xm7T%Kx?7uVCr%vF-6IMp>^ zTs+Y+m^|G~oUsKlS=Pb4RWzB$_87%>C$XqoV3E+JpK}%Cc=8;?y)vVWag^K0Ec(&V zylEmO0VELkX0nVMtX{r4XwA{agB+IRv_1t%}W(jwM?0SL+zxKk)FPkIH0e z-NN;y;Z*vyDLA8iLd&S~rRL@jI03z4c*updfLzF85qX`CjcYu}m}qRi>*IoVA*Uh( z$80q_+9dXd;NAYdG{F)vNlR%>gBI)fe(gM)h;qvhDcMc|#*kjDIw4X)63;YUE|Pxi zRc+B_FE(Y`7K0f4)wtEj*6~REo6;=k%~R1eXW}M2S7?CRm3_+FSXa)IT)y(-YuBy4 zuo@rg`8o)p!c?^cwS6a`Kz&rvf>dAcePD)7Jc(>xn4<@@rMP;Bh-wX>xEl*ft+Wb) zS1*A71pu;6-eafjQ;y{}RW9|!;qd%IOxNAQs%~+I!T%uhkLHK~)5A~X%6hk+)lGwT zU6#M3y1@870uf593Lj+&-*`fvL$h^P{qSQbnd?(58ljX7Yk}v8Lb! zPVRDLgcZ?3pv!0tTk>ubZKVopDa7P=TAbVO?QjYogZ~U}xd*UiCzG9|`B+-L4Kfao zCHXpWKjd9upma`7mIyR1m5AXYg)#LRQ(YTA&#;ao} z9YI6O=t?U>e1|M9Y*E-{=d} zK)0_zDAq6+ag$h(M&W)zx8vxv*^Skkt>b!-%g=Pjisii>7<=8$>(9foI?P#Asr?~( zwdUQ&S^1Cz&7aWSsc1GqP>=$??u+H--RVD0Yx;^ijP0aLBhyaSe$Z^@Ao3E zla6kT%p}~|w45it)2zt$ix=DLn1}GcyK~QxG0f}tC0vJ#h29I)Gf8h=iUt_eFjzfj z4d9cDhL8N-1z$b|Ugi{6@M^4z_Xv)pg0q%d@V+piw0e){RDHU3)$&leOg2XEM zLLpq$?$~Mr5kN%OtI(OS5t`Fh9mfw>1_9XTn4Bl$wskL3?O~~k8MQPmibcWm03Mi# z>mMUZ%tqoB1#2f~6^uzdP3Q=pql*pDtAUNMRd!m-n)gSP?JWvyLGI%_S3*s3O5zX* z!YOXkTTMURPcCzYS)K;qv-RiJ-PDTxJ5U2UD&6AwWR_jHh~YuASo~Pb0LXu@&&jWf zrmIUY*EHHN^+!g6RL7UY#E^$RNG;0CSEI;rJ%LVq$sP_g##92f4<`zEq+qA?bkdMA zAhu>2IR>lQJ>l;<-*ZfvyFLO|$uUXR+l#(t9LKZ)h>8x38d$_Rncx^&4qq`KG>Ghj zf|`EP>^!gnqR9gW%PohanllZ!Ssoml1)S24-h@4a4g3)flH=WY!NA#GTGhxMQOTFl z&zbXoXUcwUXl+h^BMd)Knvo}9&aZC?^pctOo@5d+KR50uP#lFx@{ADl6|-t_^LV<8LD+HZ&AX>n!bKb+opc$Cl%OniM+FDa%AF?#5`wKlbt!h z3g)?X3MvAZMMW~_{l2|63h2#+583&u`5gRU-QqaZ@d96`xSPVK{ENi>qh@af`a+X)o! zo?wv94_x7I`}eCY`s^jJp?IcS`2K^0`vDD4#;Wr-W7AAyVMQ=nb_Y{LPtg^^bmt6} zC%XOi5mbfn-i%G6t>nk)q045D;Uck z0iDLoFe-q;#g6})?3*ONlfTXFUm&i&7wj4hGr$s5eyq-M%+w;Wmguz)CT!OE+X-Nz z{Dz_cAwbmDqjsw-+ob5CErQ3~geLHfdZPqG@}DE=AOYiG6L9n(24>tv`CQm8(x0UY zRWPZ*i+_eC19KFs^@7^S=1A&-uT(p0T`%AjcIm;n&F?ZZpClD6>Z8%$5F$gQBts|4 z7q!GUR4EgW@SKCIYup^cU7MTb{(-fRyV-{M?t(Xb?)_ARUR>Bugc$=xll+(SJHx^zhTzNRhL0Q(C|~R?%Pj6Z6$R}<2R$}zG6dw zpPj~9*vEOHjaoipigc)Wb7{hX=l>9nzhQ9gF80V+cVKoLV40}HqKB9Krb-`bX_vaO zDj%MlHf#EiG(#M#ZIeQ#Xd?IeHklnLmXoWHFNJy+Q%9-)LlxN4dXZTdez`fP(=FO7 zVp``tsxy$3Hge3^Km>;k6zT%!K^-SE3&2z2O8Grl{NL7I~^ye7|!)i~Y1&T)v)Zk|$eNy84HT*yhf&~OuzvWxazy>`ESlj!zW+r6(Jlm}d z_U{~y&zT}oSKu2RF4ZO^nS25rLOF7&g6TB<2TLu@b3TkCeMOX241ClP52&1P%*cI3eoDc;$GUr@Pb`4Qpku+vye^J18(BBcK z;%LTS+3a_m*FzeTLcf?Z9XTt#YhiK20}9eIAisuw-6eSnq^sf>OI$U@&9b zdsoYiQ~Mt~^}1nH{;+ehlAo9F>Nh&`Nm) zgM;*v&5j8Vx_0D1cH7>`L4J_4PKy!+Fe3v6lnqQj(jl5-Io0N;edytwWu~U?(@M?4 z;vlbd9Xx7M9b%F^eqKDnz|`sT4vL6+dX9Ihp-B=lFgnAJ3nO}JTDt?8|0e&EQ3R6G z^`AC9xY0Z}K2M+|-LxEdQdwd^Tz%vD7v8pQKYPAWQ^pWYfYX4IVrrepva%OTw=x9z z%~!#hRpACg7mOa~56x(=TojkWDPKVamu*o#!=q=@2*%VxIpE~9?!f(2%OBaL0cJw2 zN#Zh#v{OgDhB%*RGeoG&IH@8Hm8Hl9TJYQaIWL=zz-Ll3HF{(ucUSMy4FTB#!08NT zdtR?uw%x!4^kZn;>M@;tNzv<#m}-NQV4T^ccKc)?c(;3de``S=12pI7Z!nqX{$bb~ zO^TrSXFkg77EK-FRWvoC1q25;9e#w*LQYj4VguQq!PRDl!keVi|cPYH#13uxV(`!-XS?7 z2K}GD~@+{w4~8ARh8BuvnCHB zb4d>T*txa`^_`o|=+uX0XIlLUxiTQyS^?$`r=W%EbB4PoP|m0b%xn_HM33d#mNHdA z>hY<~k_m#2koZf!Nn&@#uuyJA((q$!DzIy~%!RjY zP{@xR3+5Iu4Co_9*Kc(y;{X3g!~BcS)TD_Q!LN0;4Z98r#}%Ocq83ey;>K1PVkiT+ zD0i!-UHeN^gD_ou3swzx+8!YKo$Xgo1BxLlV;fW6s-8Hj?k0Q7r{WohW~ipj+JqA=jvkW)tOgYURj zyG^2yzoF$K6>r1#LGC||C=@8t#4)h@eUOd=i+Oh}-l~DePfzdj$BtHCyvrVLRi!Ia zod-KEb%K)?-!q<<=Q>hP1~CpNdg$OSo%Tp$Cp<7Ns@cdFI*`1g&sxeJOk?=2oYxeq zF%annByR04Dfquj5xj*f8;v_6K?hqNu#Hc9K|B<}Ja%dfk%!6e=^Wq2wMFiy2aypZ zEg4ZS2MwhRE)-DqTgC??m7yrIoA-wlGAWhFf%$i8aT_8Sj|_-2C{xABv8o)#G0?yc{vU8U*}Wr)eVscKBt&8PI3q|L}ir`51V(=MV4Oj8+H z=0>4DeGct%^wxkX3?JNmK7Q>~X-f0J0pDQ1zAXu*TZz4S8p-w!m` zu;@ZN6A7cEtiLM8J z5=f365rT0+fu2&afFuK)aZ2%o5cUVzi7V#vq41db^Yx@FUUPY@WqNSMIFg+!*GnMk zhnpj;%&arO)5am;>Tx8dB1_tfqw`=T;IXwb{AX+={Sz9eY~y@LoPRIlELb}{+jDuR zpl>?1SBKE3z^Q=zECmac-DStsUz*1Y^~-k~N^xl2+7|8da2y#|4x z%0Cjz`&*7B%gOd(MmQD$cfr>PM-n@0|G3O(dc})U_K4B)pRt%Cv;6qSWq1#}I%7j2 z!WSR>ab4c>`T%df3o>uE4fJx|8-Mbf--Vw{cB{p~N)q{tgoW#J2?E{J`6RiT=1;z2-r=pcCVF^@gmGxxh#jW0_Fb;p&g9bB`*4pkw*QkjPH- z$}YN)ZJq^80;+q-?K-Sj^sz}&9VRihWCfqzdav~<;=#TfIw6mVSJ=)qw*pCQoHcIR zJB8p0QW&Zdn++p2skK&z_d z)XrTd$7Z}^y%a_Z@oI;Vf=!jemJ6_>i~0QgFVQq4+}A8JkKrhQ$FovFdkKZFWY}&p z_fBn=JRhMA`jcD~GV}o3D$=Al%^+krlHBF2NconmfuN6YXm}{A8v&qpuSb@|yeIld zRjQ%*`QVal`Dczqw{-t4mBRKp^cn~+>>s$(^R&eLjn*8xfs%Sw7PX36nGcg8FQ@60k|ZAXCcWuWlq1lwspOo^KFq zc(rdle&2vH5ltm|LCNE0zTD=jLQj*}kI*4&4Qr6?1?y=S_5Iyu^cQ5_$zT{qB$pZ< zmN7ky*Q>AW`z^UcB6mC$B5sbQ7k2ZtB6ZLF;)w`?}>K=O@I|II1GBJ`H6j&f}5~e%|WQ zo)<12-7O6opZ)a;TeH3k$)3ED4||idB1^RIu%0+KlTFl%HvrYa{CJg=;@bp7fL1F(+;vykI2~>sX(ZQDPsMz|X&ufDh zhn=?ty2G(3Cwl0g@K-u36QdcW!3K+Mch}miqtkS#QS1U{bJK{TZBxSBV%WSYS67*z z`AoxKl(7}@Rsj=$(%zDo z^QF9ftGvL$m797{|MUfrSI*U78JSV%@q9YheKC}-JbNf%1wz&%qD=~&u)vq&A4SBp1p~Mf6dRxCED8a z*NSZ*YZ6A|5b-YdW3$`qC2;Fbfrca`KWZ;Z06D?jU8-W@zqtPI;__jAB( zwrF3M=h-!g;%uZ|pKKFzM@yYCwGDOB_AyTPJsINUM;DZ=Io(<;ramPsn-M|JL~nA+ z3cpq%;-b2ZCv(AD7q9*7Q0MDuwM(q(Ei^VP@R9pRZ8Br$RE|NhUP?Z^ln0S{Wj9dh zmYSQd#X=wf9?aj$;y|^iM~>Gpvn%ug5W&M=sQxe4(noirK|&XfhKIe0Hr$5DKSTL= z`2P<82J{Wyon6`-HOqh7d(Z0`$RPq7iz8lKEe-40mjcgj>k*W}I_11`{F8Rr0>Z|& zQQAY4({b)@HEx{F`FJ-H?0jk*sH+l|*JN~FwHXi=wZNx^xfyso>DR^AP2$O@BWbWR z&Ce>UDI>0quKT7EE2hukJtSmWj|=4u`;z_v(q{E9NsDu@yBxwp*4A}EP$O2WnGwuU z7ZjE73CL##WovqF@$oiYaxo!?7#>d00o&eq=Q(&CyEuoj2Wsm!-3t>Twu2Qg z8%4{@?gA?@+gx`@KQfifwG2G<3p&J@;?l5LIvK%Pkwh-Kc$W!CHEa9{{`b(m{qB@WoGZ8YXO5xFYDKcXb zp~%(H`}N+t`xh5kXe5N;^D566SIQu`A46-dE z6ICu$C+|k2%;CY)Z_-$7^q9-=oNXcG zeec@(zaK3|J|znLsy^)RHNo+{Y~^=76p|A{po`;PD=+#(PmhfiGGq{HLkQRKRs{*C zmvm)tX%nVS)qn?j%1Fg{-|>_8x7&M2U4fuJUyD= zIBTw(^-{jhbY4sw9Ph}Oo@|0k#cwFBEr;_(Qi^lSxi^6uH##gyt%oF{R1|*SDXFHi zTT+U%2@*%EXhU>n0rNS@(h9k8R_Y&ky^h;(0+5Gh&Oek))m7Fjic5g2R1`RG0jBt4 zCKfqEBy_!ZDh`y(G!r1%22#Kbq;aInx~eY(6-XA#Qz!*{3N7qXkZQFG$^omCwA5(O zT9i&my!RKfY;X3Sn~EunC^)QGC|ptTE;&*b_uT|$Dd*_U6i;q3(IGl~UzDQ$W@K$F z{(Q1L%Cg9X>Kklsg97{Nh#`!;h%+gd$p#oZ>Pu88$Y^XUJQN!dNvit*iF`I#Gu}to z*9il??xV(|mTF7(Nk^|P;S$*PnT}T*5f8YQ!oyFxy7qUyW{)QOhB@BQvpwMopsH*3 zfo?Pez}3OPmIVGR3gPqR697}+SW;*}o?_UJt}>82sp*L z4{0>(e==_G{5~INRCtRltu=(S9M9mLQubpFaF@dao9#HIP0URu2?Dd!GYJ!I3Ozg_ z>vhv|uW+d}p~UJ4mHkzEG=oq0W}a<+SnuysuaO$HNYGRsGUWYEo$yjtqB z`Zn7Dd81&b6A#}t-d@ajZ*=vyT_jXjbD{}!s32=RKar3;($|F~&W@ZV>S*pe_ zCj=CUD2?tN)oJ@p$cF1T&K*Hq+ncqAHU}1TTlGr+PdHwDPMx1!w6o-?jpF&p){3x# z+Z>(xf!bc>|__N-?* zReL}jND2^Iv@xF&vD^nCJ>;fB?L2opw>DqU>1glDrSgxcoASg3hbdZ*-g@&J*=7q> zVO2#-fAw8^Moyc}#m&Y`K@%2g8%e!;JYlIfik|BloJ~PZk0xw-{kh!NlgRk#b#!;4 zR`#NI&Pc02KRv=ZH>|=PBaW_@SUGD+E>h$}Kj<1&ko zS{+BiI}B;~ls{*vlD=RZ;BXv^hk4I7bmJ>jkPB*Beos>6*; zBJzocz6YATvFeVY0MkdZrY~8dFDr9}K zJ9#7X62N2t6h2@qk<{m3N2g(r&k`ZeQAUA{jkK|~lJ;xWV_J>>`>bYa0+9vnu3|ZO zEQnA`A0m%vBQ8LQwBl-J)Hd9yu=Jz;CS-Out%|IWabAvMKkBs;aJ=9Dn4~ciiBQ^F zU*z2;9!cI4>Lsu3$G2cqMlgLyJJb7sz#@!C_w8^z@Tx z@s=BQm4`ggd{w&i)h*2Lxu*{z<_r(K4hx-ou2#I9;%H0qKQ8D{ZmnBeP+Ge)7bqv9ud;1%tM` zH8?s8dcH2pECDu<$83sw$lF38l|M-!J1tAfj*KLPlFP6^i{ zUDc@mwyfw%CP_7Jhh;Qg9>WEUYIMkj^)XtkSa(y~rCc_<1@UZ@E9x~h(UC>>w z5Pn$D5J{LAJ9rfu>B#VRdA){SPW2#|#>JUga>$Iron*Ez+oF;uK171X3U+qO{GY+i@n z7X|tVVyLxdpB43$D4AX2CnbZnK!4wy#PC67+xq2VwL{7DT_Q}g+@C@CgM~NnYiY1^ z;(64`dxFX;5cjpcGqMKa^Z^UL^Xgd9PBhNtPn!!lqBewR348}f>@7Kk^D~kC<@ivSoL&BJtBIVeC8K@%ab?nBnFCk2D3>}}jJh&z$5&M@ z8tI~}HzqWFCuLNdV;!o|oUb0-BFqN}52M(ZXw{>|&u~0vnmoBw<>HCYYC&;fop|3x zG9HYFs?+jy__;?%K925mLIAS9#BfZ`GRKLKUAcxG+->T3fQm$`p?q7*%H1Xd_f|w! zC_f|-XF?wIwaV<+ZJN_# zv3+Yn#hjKE$8`^|4Hz{F8nF~bt%aO<08ow*tGGfyjD+)mW6YAnAGfJ4=w`3>tdDGqaf`)dr-f z&4a|SFNAWj1NTiwA5WbJ#3T6abb0$51$eCi4^IfU>xPel&>TMz0~{Gx=LCK?)Jmr? zatX|bnmDwEf_v*O0$M1dy6M`z42xb>n_jPq@xt@7mAbC?^c`t-yM6iVE5_DWWq~>l zEZwPVj?aZG16dX2qHCRGW6C_*DFn()T*cSV`DfsDo*Xrg(xr>&Ezl2y2k5-p?h);^ z+R%4pnKbzxXA%morBBdSBmwiy#2J>0&)4#0e06*&%$!sMi2Jug1+U{Es<}+at)z9v z1a!ildd&^5*jP?R3uHE~Xs|oq#~R@V7mS|h&Zb0On}btn#-Xs4-TizxOW`UD#HO() zYfbc)dMiO06s_v)*#Q_a1?y3DPj`l21cVHTiPz38W!~8ySbN@9Ray~a8``Gr{!vBB zH4i!`2|m@#3wu_BQ~avWQNUU<>D+<(5OmrA?jwxHJh6`ITk9#TYS*T;F@zdC8G`k; zI09>>pUoDJ*bHmX>O<8&qheSXnS>CybC~W%2F(2{;3C_0L6$dcJ41nUhHA3MV@TSd zde?%`VMiN&L&hkywjGu6#Mr<^XZbY_>eV*rC>G~y=O}bU~4fpk@h(T<>$U`Z|R*gmjf57>}%1<+!+WTAU<8%9A z@xdi%S!dCKyEpi4Ji9+F9I&7>Y2a6&wU_Nok5nw1>S~uopf6+`8xqAFU(bqi`Cjf<@~ ztl(7-(2f`0VB+G@9hz+*L_Ix^*q!TXpaOkyfm^c?ym$B5s*2q5&a0T^P^lrA1-Y3) ziAZpH9D_}wuea($GkTX)+!*cBBAM}ryj|Q9M!~!$*J=QrnL_?;_@7wVqt%SjY;1h?g-s5PMUpVcWSq574wNbc<~lN;%XE%6 z$Zs_TpC2~8o`kX41w!0)x+y>CayX-|Y?8Y^C4r#-5sJJq$gJ_Uz@ufv5MZoH;TUt+ zT6qL30&N*Dnwv?FG1o7o61s*H2`feAlv*uP14xtkh$*5ZHvE{YSS1b_z-w1u01!gm z6t@huTEwcF&b#6voMOe@YWHM3`JOL}1wZkB`^fKj=EK)-oQA9+IojX)P^~1=SDj|z zYtiZGO*M>AE}IHUCm&P_CUMG&7YfXExm*QK-$f$V?KMAM>}5V@7cO#i{=>bQEWxUY znh+vJs9A1woTU;Y1aHL}W&+(uMwuIppBI5fAliO*Z8>LO{rbqG#kQK+2?5BXk zI#Zd=mU6H5743~v2D4hthvWjYZHm1a{_^F^Wu!ZuV3Yw=ogvlK^%oK{1!@%4i9BZF zkG(F~DF!UA1oN55xc)5x{);O#95_w*9mGdS+Mn4jM%SN3PMzXlJUQ7kP@;+~+^~YH zWikD0AodA0(vaH0(S3E|aQ_Q6!oa2EW?j0LNl6jdyXBV_G^dDrJSHub}i zYGx?__wcOb)VTAIbr9s+4>mCK`R0)=fl>AB^gERRcWm~WPBj;H?>QaH10kiE8I5Y9 ze=Y>&%CxlnLx#Dp!Cxj5pq_}W9uy;W?n@~lzjEyGx$!rerl>noz;#Gpdg-LQOtn_M z2WZ=vaVdC8iP|kO=e&`ac%p6#vxpUl;ow6d%-n~LH&TJrbhe{-o%X^I<~SGypS#0^ z{(M;&Y$&a|Xd3ZtX*k%+qi_o}H%Z9$F={-OwBO3TTjmLThJ!wxnc$SacZIg-O1quE zd*&?ymu2NO=yCYY=2neRR=+vw(?$HuW74^_8gqGGgt=ZZ%ZIRQ)5A=-QJLEVZn zTth=IS?-vEAUT6>-A+)Co5+nPI^~PDnsqM2;s;1!5|b~12td@7QW*_^;1~d>nigp& ziZ*#xVI)*4Op}BRqdG&qHiDuX#wM{oO-O`pmZGA4i0eSB0gNb#f<*4%vwK|ZI6-Tm zFI{u8a%ndcA0=}4Zb$#lfSqIfuYI@9zaL}c`(?+LBb^j$n5?=dMChhYuWC&S1-KK# zE;SS|l2zClP@C2*C9ZwBd5WsyK{f)&H~^b(Z|L&qU%sjK#*u=*0;r!#MQ{pW*u>_G z%n4IiVUI`ECc*@a2wiz4<%+t%sYS3Nns#)51TQ!x#p;^*`OI6B#g4WtLkNPn3QTNI z6*IiLpR8lBjA>k-GFKEr{iS}-SVex-SR_l+#PBrF$}asf+u?CHqi!=>H_kRqFO_i} zmqsB<7>{X+ci*2W`uUy?aB8RA46_2)2_v5pxj)VCG-Q!4Zdb4b4~GW`F<=$)72jf*w%o8cG1Nai6M6 zWL|8_JN8=N|J!2=_2NGHAHG# z>7tBJci*T3>WSGmPs-Sfx)l52Uo)-zu4Eu3Z765My*!|I9n-Vr&AQr2E7Q;Qrc73q z^}NsJ|Ki3;L)~c$f7H`2sKZD7ztD0cBNGf+J2JQ= zybh35v9Uux_WiGj7H^E@% zZ|%$FU~Y{fum8Q7X*&97+>-1VUrPee;06^u+yba$-p- z(7s3Xk;zeFtHFujHv_umOp1tkL*$uFl9ZM}p4@+Yo<9Qj>A}yi=(pJ%kI$l?nSx{< zEVyxtpzPcS+b;WbfKo)66bv_Py@pn+D8PDzU1cP5{x*5K$r-3dn%&o6Tk`67)x&`$ zDqERlA-z|U6iny*wi4{Bunv*M9b~SC+CRP52q9hkZ@aLBFUeHRDk>$)mS4SznlV5+2U?HD<;{W>;|Dvi6i7v4 zFDVX-_hhZhHi}JfPTqhm4Tfnk!fNN5qk`BJ-JejxJ9&7Q!oNDkxqW>r{Uko%PoNGC1jR5`zS{xO7IE}R_O?1LK-3r%+89ol~%v8pA+(r15t@>fW?vm9(U&Sw<40 za*KZ218S~?A<0tXxv^5aJZK$IFy0~Cscpdk-P@SOnpxO``kpB?QyrUA|z z!(K^B@Wyf(o~U*A3Cqe_Ruiz)i7y$BxFng>THhR<6FkHsc9;7dorO=BLe z1hD9yLTTHWVFAYL@k0VP=OjU>UB-V84cZno!~CzSys!R&)WOzLqJE62AV5|mzKE+V z_6U>MlY%E{e`5I|XF?cwm7*RUfC4Ni0*O;zA$`DfbaA_oYBPv+Y|ZMkwBy-qlE$VTrqFIC>i5SYH$ zo^wz^0RyJ~uf22`|8D|5@!jae(3|R5Rsb%V-8nVaZ$C%VInzO!CbKC(NASdJgR{sHJpu3l9P1#MKYmGJscC-A2V^Y_?5eOB*6|g4<=RHDn@yB z2tdlYM+=47t%)8|yOqRb&vJ)WIbmuH)KWu%TMcsT{C`J>PRuLybgOW=f_PRDMn4PS zQGe0JA7AINVT0Sb$liRWNxI7-0vTF?FHMJn)^h=jd2U|@(Q(ucwQd`Rn%JkHMLU#- z;FmZLxc7KD(o7o;^e9qyH7J)yPuRW^)+V{evezY2I5WO=>Kh65R1oEcNh#N89jU-` zAL7A%#Sksi?MWj+0}}u>izN<=BV~z`yVd$Mqg@pi6;SF3DkuQHBse*ThGEc}v_6MC z?SAB5*kqB>6#JP3IxVM=j>|mOyzZ>!>pv<%5tcqO@p4W10yY5Vt7MN_a4GOi<#d#ftJRpV)vryKT^h$E01tib*`d}0G<$Zc_ zqDRh?5z!EtW*a+3_hQWoutwwxOlq4^m;H{3lPb;EI2tKb^i)sgn)c3zEf3H3C@cZA2~+ znS4pKXuI;va?ARvX9afK-vwDUtn7vXY8`2o({}Z?`mn7syeI?b_@eLKAd=6C8C25bIC9wQ&17!M`;0lK>ce9 z6|BbTGx1ZBlgXfP<>%>`rJKVVSW>@5uL3 zQ&R=S2anjkON5c6(*yV;VHwu*BlT(v{lx)*NrR2(o>DyaZX9?d2#NWn~We#z@`yVtWpBsf*U%g9l{5-S&*YQiQ6jXa+{8U2n(< zvv)aUWqO{4mLH=QwR*vke2IZ_#s=30mFNt0=duG1Iq zQBklbaja=2A9z#93SsB6dFe)<(Uh@^a@I3^A=FVxt6(VqplhBP)8qls(KeR>0Fb zmN)1!6^nHUGi4}H7#mHOLD5wz8(~y7TSte{bqoQ)VWJg@DXH@KqTuaCubc^n$CUf2 zV1lUFT}(eMI8!(}T?MThC1zjposHl|0Z4w{XW64%JMt|pA(j7%g2u^1X`$sYWYIV9 zD;2N|gX}uHxDH1%eydMKeth9O(@IL%lJBqXK)5)+UQIH+Vl5gJ zeByIG3`qA^=NnML5#g>GXM=Cz zwMsR`$`=tbZLxRVZbGx@NX%bP#vxfUpCq}{T_SmK>r006li0&Wp?MZVlJS8>Z+i4| zr1ADrr%EyGTjXil>BzQ?tR}g_>e3dce!tt^R{!q5Hcpwx~qN3+0p`DoD{DoBP0>OA? zc%^(8&yDeF*VgK$o+T;F7Cy`sFMV6>uY3Koj}pBw$!Mhm2SZEy8Oc8&NYag&AGARH z;<}F@Utf$H^h(LY@@6}|4oyE|3X|{H8p74MEf`8_rGc15ie^ye>2)Q1EV9X=KHN;K z7Cu=wOQDxP0Cfh=@vY4+nP~yHC96nXDd6~9F@X+S zB3A;u;1f&+j)CwuR-mgKsd+*W<^N}Zyh~pC8d`&9yQ-}VXdQ|jxU#tSxY&~^f-bZq z@vJ}UsntZfc@%vVnDq=CO>-ZNt13BldZ_|h3nrZk8fo-zRpq&pk7~wWA&nNJJf4jL zRKoi;1u&LUv1U<*KEqUgC8TjMp(xg`_7(hxQGQhPAKd}|5hg&5&&Y;XYf+lf2~-F? zqEXPFDh&P5|EhyZ{IDma*K%wGEITk2)QAr8@X3Vp(hz?OnRxa38SE4@1#H?ilIKms znUvo`dIwa2;=^I+pHN3q#4u-;d1=+s zO-dwWGei0|6|pi8duK(BPj@`!hX+ERUkwMnW?%MUx7hFKL2;DJ9Z1;4*dNTUWU)+< z`4{q3(Jm|P?`T}8*x_XTRDYvX%~P%DmSz1vhim}%i@dp}oI?kT%w9CoPgGwFlm&$Z zl-i7kLO=i_+If+^S^RLp3?_H{VwD0fb;PBtjxKvWC4&1cL?g~?i-W>d^juQj;3s=Y zhxYo&8w!7n$Vi#a=%A9HjB`^akSTj=^J{cc-rY%gnltH9#7qPLC({M0wYLdjo!IbMVr?isGqX`lUDk9ZLgTci14Ki}-JgSSHpT)a<@IDdb9 zT7k_dPh$Ko{79dCpMkuW&WtWZO@efp>*jBi7Y>AzUe*U9Fj4#``E$wULWFVQ5o8Ke zH~F_J4pnII6Mv^7iFL>fS<%OTt{-h^-%Qh{)0)b!UYx5{POE~wk!4Q4^cA2?nl{%M z#g(+`L_Q0aOna^EV#u(aPt#x&JA$Gx|7x)DF}aI0L}WKvXk>cgLWuhF=_++ADcJXs z0((f1?#Xe5+^1eB2b~dvv1V1OlE#h6U~9jFM+)C3iCY-IrUj;`+8bhRDwTB9lglJT zAvn~*7<_2ohV82xc5kvp^_Wd_Zg|i1I+){P8ilbD0bimx-BjW>%Ot`TsSp@PpOpzUCPhFi>=>QrFpM=6 z3+0G+<&%LP3FZmF&~HVCk0zS4Ta3yE=K7o7w^da`6>trhM#kfK>E}o<2v#j3 zM|J_Tuy`tdDj8#sftg)5BF*ppnFP*H1}zt6b*bHZ<4nI2eo;0K zvo_yAPJ#+@>00GAP|L5WdUru$w51voMG~6l5ivUu})Akgq)K<1?OhQfPf~ts*D2cZE`A@{Q^N0Bm;6IoQ7F!a9 zA-XK59s#aBKC~sNA3hBR{EZA7h2T^$=6}ps4+!a33&1pksnzF9 z`$iVEBY35uk{+9m7E&HMRvXIe;*yYvHB+xrZeW`--RZ?Fh-(?zNKY(!8_imfGW5Lm zr7$FjhL6sH2x8%HlV=r@_r8gyeCES<7rzOXJmr_wO zHxE*#y9oQdA8zKLIa?6Nl11pSpyPNfJ7A=QSSXtmVb*Ng1=dy7e3>qSLLlG>g9YW1dq$Ru_dmClK~S=xyIGRNeDnhvBz4ef3-GhNPfo9=qDg) ztbcHyYVon5wWLz)dF^3eukvTO85@i+=6Fr6+NF7u=lfzA0- z=0}S!o@5FT02x!;KmO-6$Nv5{)@bWZlZ5vm5^ z^9MoQDNL&4%!EWO*R|e5T{smx5dV7gXr$MReqq@b- zUr+`dzf}jaod%+<^<#Xs)`goR5BZRP9(HG>IafmKA4 zucQ{M)p%k5-?t33Cpsu7gor zEtvst2cuDZx|nY&7;m0x>hrln7 z3=@MGI+m- zKmtf}5k$i*w^?4+CFy@Lq`*NeE8%xYInl|msj?)z_|)6xo_waadE`&< z(69M2L_EI?VVdw>2EZ$DP9RnrsmNYarx04yrp=xWY)(?z@Og?!^1M?-VquZ?p z@ntA$Z;G>G5X$op5URo9;Wp}5?XYqdwH}4~=6(Uaw0x!&5~zmW+FEaSsNGh42nq?4 zBMD9ra2#%{m7XaaYmd*BnJtsW?JnAy-A&lR(L6Z<))x{36ZNg^$$8|WalsLm8lj=& zpWyBFXYIBv(mqD0Lt-3Pc#P_+D=CMxVZ?(wa(ZW`WChT6uM`p07b1VMt&UBuP~POk zL{{!81X$`FG(owEPMe5>g~`VEa1PFuHAl?~4J6nh#C7;iCi7(t7$+CkJ&!Clms-;A zJ$$ueFc+gZY{+eCD*QuWxmSkpo6E39VJ#;lMv+>g*sT`W5y0ls4bg7)`7*$zdU=|B zTb|ctqw`gSmvV(Cp#lTSY85mmO3?q|sqRh1ldUl}wG8|jn_y|Pjr?g|NiIxm;x(r+ z4`k8{&gFFtzoC60T|lV3RSI4}qjr@*xzQnmgn!fHn#K3_#=z`@kc{K%zR1(Xi8pOwYm46-x$rlWIu5+KWqoZjC#EoVPy zoCs$8z-3v+A=BtHo1OL59GqlXE#=5yWSB-;e}JnJpsytt-tp?Cby>9{i`hQ$uQ@op zgSuA!^>QKvn;8Q?BfHc+B3Um4lT`gdVJwqa`2%*XVPPj_O>IRAFc3bxd&G~buRjXm zLOsI)7y|JHQ1AX<5$(u-Qo@~%4jDzc2?Ot~1HqDKwgBA{To%*m7XS;>uJ({j`sEE9 zJ4$fM2@&lhVx&EQ$;?N}Eo4QPMp+>_DkdgKA)Uu?EIU7(N;i4@z!(N=AXI_%%hmG@lEAphI^x-X#F5vifc( z;FjgI_9UHfbV<_}{IcO5OQsPeu#=Nl@k7gsQ;VdXoSBti66F>&^YQPIE&_Vj!|hS5 z5v$PAte{iEP~4iEE#s~A3YJqC?;LfMAGprivAwbzJtyFPQr>F1sNfJ{SEmAPcDW{B zBm_=7@N-1Ubf-c3771nkT;aZ2z6MbHzvtP`YM+Vf+WcWL+SUL3j(Ca@cX}LT9EPqp zkO+%$l*g17bXG}@=7JJVV2epz+R2uSBcpw_`bYGPi7D+B>kb^CbQ4+eQqK8!{8|Ve6%)+vGUB2UwS(e0@2NSkkS> zV^*5*g|YdakOd^;SXkROe1LqGg3~DzPxT$L3lWqDh30B2*pAZMXzW#B?N)4vYynrY z>w#%>V9o-TIvfBJU4~exP7R0QsgzBh=a`Dg*dhyuBZXd%Ms#R}Em+H=<3zf4Li9sz zI$H_%gKGm#t_tG!GeXscl5}<;+Q#O|!&`2f5|30-l!EI<<}2RVVLSH|4K)5M8@GTy&)K+OQWN(A6Y%KCY~JoOc)p`C!Z z$8kCNcy)DVc7L8iJVGbTzB4gCsP6WqJd$A3U=pX+KmM?H6yF0WOz9v>O&t)V8+q6v2@se;$ z0Eg3Pb8ucX48Kgd*A4*eBvVh;lLYhtU1Yiuvh<~D1MOWPPi5qCd?}ARV z5sYa4JA7!ECN1h^)4EJ|I0mf(6ClM)v$QI#Wz{$cxt_^*Q-Yup3?5nmQn36@s@ z0}72e8(U)|SWw$N8!x#GEs^at`vz}8eO*&~x3&hoiBuN4?i)5LV9fu;w`tPoiVC}vwi2o$ZDL^w&zf}fbGGyWH zv77c%@^T@RmnUekDCQi6yMduYytjD*eZ2-$yk5@_waXa7vTdj6RlY0RFE=z%tLVp1 z2JPfWAinL;fS)6%K)EC?)rVwCipByz-WN~WeczIv=bXM~3%uD%inml)m9y2&{Ie3o zr1WBa`(#YQz`-~}ogD?5JotiP7zZ4d@D;M@y<;W*czym`&Zx7=uk@HKF6bDva~s~x zkSrPHH^RUzks=L}z=y1Mdq4;%0V)iPjpRUZiMXb(67u1Q;{Y_35w)oVJ85=$(UE+ zt|02Er+kbQVBf|umYAwI%(4>yzM_aZp}&kNLteNAzI^@A<{yeIDpRsmbY=zKSEv)M zl>=g|Jd|fV{y(=jrU4Q?L<9R+j*-XWu=d4k7s`31lknNB5O%DT^*AG)NO~g3!}B!c zGJmJg2>YL!Z=oDCd4LNVh$oHX_4f$-^WK^*S~bQxWDuL#7-n_R=lBv8twoIS?}Gdv zZgL*cJ-0fX?+t!)HH<}aQj^AeAPle8IszV=4U|67wvym>n2Y`d-_pC&r{TR(U2?JO zfX0mpQB$<8keLTxn)o$1y8e%dzufA!9^9}o>{3Fu zw@sV0VDlxnZ!~PRkV@Ne)Aa8XfbQrv2pOMPueN_H?o&{@%q`+C0Ul}5?fttH^2?=x zOrv&ZN{=PNmX)$~B9WOnjzdG~HNaK|gQf>{b?1&oL4cZQ;2xO3?sv!s;jf3P)>YFF zhajSBStI8h^{JFk=)^IPFhb!#5+`;qgr2!cLLBTjFwI1yYCX4@z`o7Sc6-sLXjC`5 zZ`s|#ZLD|Utdg%YotWeP`eo>X;lt=nADv!QWd5qqg_@9hJR6*uh@=>7)3iCB6K+TV zd7>bi8%ze*fzjB9gwkVGm1tXri-56>GqqL{UXyhfCeF7M?AZSy0hvtBv{G`6Sia+a+~)?QIBT+{%a<0Fjc^uRTZt7`e&RAh756!QhHQsw(Sp9_=oks~^Sf5xm`ngyU)8v6Q%5 zbDiUG3#}ZsmJzj<>Pet|b!MnTP+KfPD$Ix8WL^gtpl^G!sD!!?4YLJAdSNQ69VAI2 zUEMnN8S2Bu6&dhlZdC(Rv4h7yFTkb8La1ohw_0?zsZ zUk`hdorg$)SBoF4i6w_xwlrAGPS#_sIl2Tgqi;j32#QgV+*B;J_4&2I9hk3~a_0l7 zoq4NhxE`|~ZoV%@stIXG4H{EprR8K0rN>z0sVQf^fG0y`LI&YTeH3BbP=($Uf_|i} z=)o749Yz-Uq#IC#qX@WD6(+`^SWs=2va{z({(>aF=++QNy=V#Epg^ZURc{Sz-7@zm z^k-&N!B-cCql0loLN+H?kN^Aq9J86M3l4AVXMv;mV4NS{hMB~bPWPDn?StyfEhsmw#=O6;It#W^%4RUTL^G%Tbbp5WG4uT&WQbvq*>*53oY~l9d9>4$Yj+vAC5xB^|*@i@_T7 zs;E-I>sQdG7SV3$r$GAz1zVDJL_O@En1^n$v8q+ncG?oX_|}Ib>dCsTf#hMq-lM8& z7RI8UVrIRs;6NhVYq{@~Lw{Owo*b6UaeU(YUyrO4h-FUVB1$N9M=m%o;HCKK<}}?3 zF%DYk=kaEs0>_Lst0fp+J9KdEw({fS*Q>nS(~(_AA=bE|Ga`jL3!`7#PiHC;hBT1K(&*B`64|Dx7^O`#x+j#ZUb+{v*U z-jhd^io=T)urXvq(GHU|XM`=ZRG*5E5_vbzfK9Rd)+Pz3#YkN+HkWCF#f$7w;D_|q zG=NW6n!bl@oaKw|4mQ}Y?0PgGPFbi#{-)YKSERLLOL#cqfD-U^_XINiUrMIZNVPL? zF)M+tYwI9`st;{|qLjpFCz023u%R4eMQer+UIXyoP? z@!+M68lp30^xR9x=|aMRzJFzoYM2rewLhP!P`D}V68;EIsCKw+JbY~q(l5y?p2};$ zEGmj(Iz41r-pNx=$$~SWir#g(quWC$8_{^70x5IY>v)`C2RezG>jdSxc_v7ETpt(b z(pcatcWbq~|Jg1ZNL2+ZZL-v##7_Ax^Qs282P~Ui_7&111}9Yg0(|>jrZ5gpXvz!f z)+eOhHjS<>RH#Q@6?xpE5>0-{wU@^@&jez!`Y+h{r{?W9O@Dd#O|sr*%31$;=viQ_ zlK+8HCaH__^pg<(^s-U@Y^2vd&onVF3dyOWVSnQ!Ul}q#Ya#Nj!VFkG48^ReMPo+B z$JRd2F)8^$D6WGr<0Zd~%M1lw2Bl*eJyu}znQB`uUFRrJv`UKZ&-)zT>WZm=zL%N_ zmw-~uctoUF;c7Srtst* zFy&SeEkNTC-R&XYxc!PIk<8WI8|0WuHbdY0EASm)JBHC8FdE1oRP)Zzv$r&N(~FeY zN%d_C(wpmiJw~1i==L&d2leCHt`;H=wec{7h@2gE*o8TvMeFeYd_qD+H4%DOuPQ{d ze`%nF^&ChElg7KlotSsw_WTk_1g;$Zf^|>xk9bJgwB<5Y#VPji1TPg^)MFub_^D;5 z$#n20LOGMd)du1pI=FvpX^ZTOD&evN(|8nRPxtL{fENj#-kwqq-aGXPE8)30pk*dl zMkT+%dI%%b(O9ZR8Ee#VJTIjkJairrnBgaQW33%u6~U~Glx|q}n+>`}DG$_u-_z0#wXbBIfqU^r z05VV4O-+Gj+3_<{6GK@(c#~Jp$A?u>5vqX`G%Jg6+Fh~_25Z7dMm+CbXk(4vF>rqB zCBrkvGFZn7z9%3t*2rjp$;BQshE<_1hE#LzDZ8(u_$K0$c)``mb)Fem(CU;HI(4#I z-hkH)jR1ttFH^s?W>Gc=n~s)u+E7gFxz`z9?=B9@kIW;Fb_zhTYZ!t46m^CWP8x<7 z&Tp9Q^c>F1DRJd~-mjXLO4|HPl7hg_iF_?DxiI#KI9}rG2$-IeUEn0sVo1LNt*Vky zokD@##hSYflK!uedkwtkvR1@pndAAD7PvVP9z3a+B?)|_AirXJ9tSbrI3v);uDF!E z+=t|w7>%G_sUJ5oy#*Wr5=D5lp@H0672I9%_o)!Dd9EwX%>D}e*P*0{A@SCLR&r?^Z)%y%%tKCUTPLf`uSyQ!m6wUZK$uQp(93kGi)uz%^<3z&)6E~Dw(Q(u)6%M%AYn>&Zc8YhR*eA2TiSk%p{sO)j25f55^Xk{_!B@IEFI*#vwaO)**uPq(pl0Mk z40IgM2BmeF2nBL7vXO;Rq1wkXOJNLU7N|k?Qj-B&>cZ0zQnCelv$~(knfA2gjlN#7Ugzi~Qt2)N~ z)dk=m-0%$+x42!*a|j_JKgNYJ{wp+X?8)W%z7T6CQXEbRU>qQ>%)Y4e zqlP61@!b1|g&|iKY3-lf>kG?rUWM-8s5S*6ld?Zt zjE$;~ggRE<1Yk;W^&=9Rt6EPeR*h=tO@s_Vk?uKnYFQjuT)24;dk>msw~tsx|66*UxgClagrH>`g7{ zEB{GzgPnHkSma_F$<-nNFWG^AW-i8HQZl>5EF?!z&rk9f!ubh}m96^#_oJhBBSxn9 z;*v&YMs=K~y&JYexdi6SUP#=aN6h7Y687ay-sl{|8%z>TS)(+U1F3J02L1;<{apCv3>pA{pky`6E^J>hgzh zk+kmmPYJ#p zR*kkBqf=TqSQPXRJ3YCDy&ZbT{VxbYtdKb$maI0pE-~ixK!dJ6b*$=hwYNmElo+!? zjc^}x>%|YUF@W-$q9j^AU(b7R))YYcBGg4#LdhDBPa;eDiD#Xn<~>Mw|3`Wy+Aez zuIPxuHU#I^=NBp7+be zX%D#G<$%L?>L@Gl6^Ri_as-ovD#`aU<`D2$HJ_>CXF!_a^|qd7^DkDM-f> za}PK%i4}?<+odozY>U@7w#Ooes`QF4i;bpT%Cg)d8t-sKC?kKWC@mF>Ss@9w~&u)injt79swLF-)Z}x2_&nS`jLLO+a?ek0+ctA5o2?UiP$Qx>14hpeV z`{2BF#;B22U@{PjriWpe(19BQ!!f9Q$^g&bd!SUJ2aA5qoxS58A%RBn_FVvOi`c!B zsijL4?aU2dK*Q-~<}#7VRpbe@>W@!AYi#RsdkG>lPrCPesxzbZg-@Kt6=2(B0p<%! z?El~k+3!kej`~vU3nLGDhj0>Y-QlE41aEJDG+0`GN-t!V+U{1{3#bqMPAXv%jOMpG zL)R5}Gd1}KxQ(T?i8m!i77%xTqE%Ks*2XlEe2GXMM9gZh*-U(x+ym2Pg42C4@F1vu z{`u^iOt7sIayYHIVsvyy@vc_z&Si0WO%JRt89?!NCfT49l$i-wuBrmNq`Sn3Zimab zsla5~G*h1e2da7+w*DagAuvW&H z@Q-MXo%E(SA)sHUGp1Nydig!pHzPyHgkp!E>d3NPg-(D2P(s)W8S@K!$g9M+Hb zlV3_qY@jNj*cf1LbBlcP7^~FaKG$Fn@F08i8Pk3nKxTfTU$dP8lQ^j8B@yi(z6Wvt z4@hR!(fm;pe;NnF-Zl=+qA|1*??OA#_h%DLZXOi|D?a{A7ilYFnQ&{}xVdD%vtSYC zBL}s-i$}>CAHT62H3`UV>sd*RM4Y_r)XRe5c;L*rietbPSa9+Cr8E(~G2yLh1er6H z9It7bS_NdL*y$E=^@A5f9O9l^cT=QEZ46tBBtT!=)HbLG_{2;~(?eIvw9Ly$u0S9Y zDll|}iv$g9`W4dl_f7+sEci<5Qrj1Ff@O8MABk^Y$O+0!M*U359Q%@nahmk}(OD%n zH!eujIansOBKYw|KJA-JrsH%6U#Lw21+Hq>O6dt^>6`NuAIz=Br1q~jT^N%u+2;z61&ard zh9x>>UDz4(OccO4q+Wb=CsoB9GmDGzC<5IiEn6^*az)q?8d>?cF~(=_sIDYfL$G`L z(-iHF5NONjEZie&S&zr@kvt6KXSopR&}dJBU<`!n_N3O>ho&jC@9{dN;woY?+q#V6 zZEC^iSeK>@xaIWMm}ZgI5;djwr#+lYh=J4&&5N|i609upT-oi0jfyO%yq(uWm}shr zS8arqHVsRDVpay>BRV4tIdU*>-ozO%+>_~7es+1-BeG4b(tYkxx5H#!ory_|a13Ou z-x=6*?@moc=Th@Ym02V$>uu>{^ZxvQqHYWeOp%+m>qncH-=5k`o4SKwtT5T}d{f)_6KQ z1tb?!7sJNq+kLkJ&9ayZHQfVYvb=WGI~_R7=GMD-aj)#wu>U!fAQJIQ-!k;o=x%+=Iy_1|E5pDWj*!T9%*KM zFlEIOybe{m__~&5Z46;948>8v%$8KOQ~0w5AAJt(;%`!#m|m=mw#$o>nx{tWx{}d0 z>8?>rdK84YpR(-po{vugw?Azn5I*2>yyo}Ur;&QnWlZgyo*bgPh^cI~05yT}rzwHR z`syiUBXK3EC41G|);fCDo_2jZdQp-=aL@~{MiA1q7soq}Nwbv@C)&9nW|cl05mSsB24Eh-<0Y9Wf|Z_mKKyfADT2&f3Oag+LtvcMU6mz z0cE;h(0VlsFGT-Y(R$qO6T5+QsYYWG%}0D2yi!ZW$(8ICM|ZoZJSfYRZd;I6zv~|56tC#{o<#y z6afdZYz}cZXy3E^mnysh$#e$_tT3e68Y_^jljcVmq($9;iQmj&UHBxqDpfMaKiYh(jN0@y!M^I1 zl(5EM`L&0Cr5&N+rK=8@2`5a}w2I`I5}S3pMM=IFal<+KiDn8sqKBD|COmALeU$b6 zgX9<%8k8I3%O;pGVP#ZV0bRkX7)g=Rz92kd@}`5tP8!*rE7|Z@{^)u1%c7*jXBxPr zxPr9>GRu*`h&=`m-$w&wpZ}azK3!R|q zpQ(VwMl2=&nhTOB@Uyma%%2t=TI2Ab@L_y>mK&N%okc6|d>SWWEJYf zteKxe^BpD-Ou@(_EsIApP7O&>*}yJ%kF?lxAX0YUxvT%>me*zLy2QuZe1u4N zKL9!t%V2Z0Z73Kug2#pr5pAgkXhSRof?`NHCT!`UCxjl@QyH%)v$>5;COop>!~tTu zn)2-3JagB_;%Hn3C zfSAm7BU%na;jXC*Gt-32HUur2J35DrZQuJmQjm&Jrgfvg(7=QXS}H`p3Tri1z(Nh3 zuP6x7-H^mouWfPnT4S@loOxQy8<9|WfDHs4b?fS%Q9j9}W8|80W7FKSWJ+qTIs_*~ z7!~dbJaMq1H>xxLVC$oTMWZ&)Mco)nC6Fn(UOhj3wSX9l<2Zz)`S{1tNfK_+dXq2e z_o@Tu?4HvA-W{({{)gIpJfM?02IDM&;*U#NyV z9Hpw)NZbbAvu|LKvJ^2PKY`PdW3+MxC#5o0{r|QPS1N`5ae!OFr1?4E2wn)TEyv$t zqfSONr3UBl_cl0C{X4+;$#6OZub3`QztsJIIR24e znr(<2?n)@W^WTMAHqY=mp9Uk~17A|()oEC`Jf&gl!-w*o?t2PcA;y@d4l@}ZQabnp zu$?HSj0zhtbN1H)RlYqZ@5Dn09E?JoNoh#Hshv=slsm>F>+nIKpe!&?Wc#ZLc1xO{ z;MKm=vT9Ri`Yt3A=-~kkzAVGtUBgM;OoZ^>-W2siO~GxL`x?)D_MjxA-ML0^P>`@2 z@(H5U-iRN>68Vb_pD%!ejz=^qQcpdc+6&u+y@gpJ6$p>hzz%tqB-wtk2GIUfF`%;l z{}LQs@;mp~MGPujg86G%h+#h9(hXuuOw-!1utu|kaxh0+5go=IExo9zEz&KAm$QQO zPoUycy(V^&u!z$iB;ED+rNOWx0Kd1GX?WVnqT`Ft_JRqg0KUtaUGMTD?N0(ptb!() zEU1JcJ1cwV?nlTxbY%H5iy#L57qsdJO$c;li0YcfUwNYqtb$RJ`3ERLzHgtGYK<)U z4mmeb;6Y$>75lU3{ay?ZzLpfvm?$P~c$AimmR(HwSC*~Thr)a&i^KOzkqF3&TjrY+ z)z96Q(KIuL-o3WN33Iey7unNwf_Ji>x9 zC?x_ry?%+=bYG`7_F+jvmm7#)h7@SPSR`cx66G)h(E<0T(^@JJ85Ewap>;3&oSVi6 z>XGB9HN3HBjKN9!%gMvr8%hL8AdCPDh0b38+u|EjcLk1wH-JEZAjTHe_0QEp8}7^ z=<%J1SfhcCT-;X;6+?VL-EDpkeAKI1(#Omq1|PmWn4%(x=b?IdPkhvZf!c-G8pMLH6jzic#^(;p?c7CalFKVoB zjzzBl0>aVh@~?{ID|4l&OOgd2VGt3wfY6%mIQj2vf5Akee8&`&>Fk~V)w~-ZSjnJ1whg;K%_cvrCiTTMI zczFs9%PmmgtR|5NK~2SGmM2Emf&n;CdiQ+bm9)p=WhUFm?C+%y2a z5$xs`Azeuze_04t0^At-%Q7t#YH6mc(x&dBL*|Vg|3V%c}Mja--JA_h3S*0=&5PcXLiCoSppBzG3$ zN(KO-Pvi%@D?9}Y*nvLu_955v% zD2$%Frg?N9fE-6k`O}W7kgF|=8odp?&NjCx=|T1d!1~F0`5c6OQhM6aw49^ud8g$% z`=F^%P z(Ryn2XlCgE*SnX$^WVnbWqLs5GKI)hc($NQn|E}GI~K71u*{17K_{>`&|3xmLpLIE zGqIizf{=-&v+53EMR~vmfhsnB(u{mP16C2C)&6!T{Wt(MDBM@RwL?60_WNaT&zDgp zJMH!Mmf-IOpuk={hNItL$*BnmN%EbqN6?~e4sbvLo{rE|FoHL-Ev+wMJ;JS)q#tt& zGi&3*`R-5;sJ)h1Md|A~ZLy|O#NEG@#)#Op{xU&5*RXc+mXvWjF!q(r|Go1~GRuK; zO=>(i3?S{RsXv1}*{2ZreEvnrmkN+zxNK4o1S2u1XP8knd5NMPGKNM+I}vl9CLDn~ z2Etm?+pd-Dki)VF6Eo_t4DYk%w7%H_vTw9xJp(#hn#v#8MMk@lQ-Hbl;CA*GJADOW zKB}fTmxF|}y!(f}M1Wz~R*F!b-?I)l3p8%|h_l!KypY$kHpzVpNsJ}hOBok+6#IC$ zs{pEzoFBKi+$2*@t3V6(48sOA9zJVD_1@PaRoN&guPbLc^W>m#7_<5s7P_E|!K-mx zsh}6kXNC^nc#CaS&`fiA+g?iL5Gx5l;yeuMPXWaM14b!LyPPb0_*$H!c5#S{^!s;d z-HPN9D*r!1K*!BYXe}E6O@T)tv;UVjtWlFDPqtlY-nDyfcIJRXmx#(8+O7umM!c$; zJ2DhlI3skdWTRz`mslHrvNAmX%LXDyP8l6=Mqi7?WT?3c&W3m|-221Q&RP^6CM}$h z#(2=IPLp(Ss?Lp+b`$p#>9Wfv-|<|~%pO6sC0SO*Y>}mK8>0Za8zqVr3{7g&Yl%8) z03E>EbhLfOcvsa~WBIeh5S-Qg4iP%ZzjULxvzLv2${aK}r_Z3UH9CB4%mzs%KGYji z(x}4dXzApJWAW$K4E&_E?dTx+RIzl+I>KKm*K}K$7jIQ${TpzDOIR5mD`Bam9CS)W z@6$7hJbnz+IecsnnWjjjvi)vsE3tk6G`$o*z;D*5orL(7gMDWG%JP9!LU)8+iezjf z^uJ*o`;nEH_puH4@j2%~djap=ioq-g0Kiz#n!(RC zZ^L#?bFv%jx^;23X335;d6@Dr7Y!V+EO|f4;@1qi9EOE}1n0H;iHs@j*o_joxY1f( zuxmVPXz)b|P->|vfTPYf^$0hk)(Iq9rnuO2(cJv3b+i&Cjl8Xy!O!m`%EKCMslD#_ zTP-XsKmg3R`gb`dEMV^NZyRhcY?CGhgSri?3wZJWRK802uUxlj>(k)nG&7gIxI5$I z1<(<)_mQ-HTnig3tNdYvKdU#vVK^)Cq7Qa7LoqR4oA~Mc^9{BoIU4>BxhL!4r|7X0 z@Y?RFM4USwr{}y0%YxT!nI%ckAMkT9&niajm5d^t|9vcsuTJ z-f)95_sum;{Dfs(2*WJ!uWEh8*JiZH2uMdH|hCg1cyV zm2>SXaM|f1w8c@F%lSqOQ)wzeOnDRaHQG>Sf9F0M2oOc4koT15e`6RfD30=dC&-%v zLRK-I)4cvO#=8<$k>IGSN0LU;7}5-PL$xYc2sf9&Q#n>ovFwR$SPb~94qi)e;0W?;(5Wyf z32v^Oc|%Hm{e5huK@I5y_U9M@9b;7N&Bq)Omi?g;#_^-^EPwZ+OZ5Be;0PY{yjj(5 ze2rdYpSvC;+Z*Fmyaoy;T9NU-A&pY$c=7auZ$(%`b3LY9Qy?fe{KsM@JKxfYWKN4A zE&Nt9vXA5|12fW8$c+s~O3}o`lwNBynm#j326ZAj9*EI>3w)U)`vGnu!UGMw@&Od~ z&|Ln>rhO-MpAB_2&8+CczPGQ_Khmm4f}cdnl#Wg_N4CY%eXQ7MCPwcG8^3-;8mNi_ z6~L|?N|HW%YmB{bAXypE7g|# zmwm(<9C}CU_XG$!VeD6A)sZ=+c)x`t&n=-~^FG;zAXjFr9!Urz-hKHrh3IkH!StYL z>y0Lu4$>!(iH>Qonz=6^)$Dr89qqB?@Z}VA3Fy_tkwb9-SLJofcs&M)35}ZhxZ}l8 zz?cl`_33idA(H9Mz=xkuZkhXryO4nQe0Xr8qln%&>*h1o8>Q;yQjOT=OC%}Eh9RLa;0h6sYN}N@jV14Hld}0aG6^7`|oE??$H6!1P&i8G3 zp>L#ic9Z-~lVA{nwzD9AK|&4_DA}|F4mjS4y9D@FhIu8rb9&A<#4aT57BFx&i^_5S zus}&o&!riYX>ij5mU_<-Ovzl+np8;(Wnr^eAi@I;#cQ#O{m+rm*nHg zoD^d*JG`kOi3sC3;o7HZAX2`O+MmGGTQ+7{*c^`}feAO3ab6YKHU z3kri}EBZMOx^~rpC7(4j2xz22X*hm!?VLDfz!qnh9RP=aMs0NU*vtad$e4`V zJ%$Mb0|8r*abQqdabdTfyY{N6<#bB7*n#NYUuZZ@ZWZ6EZ|z zNAA|kZs@b3*bI5yek75LpOdnH!T&{#m^AR8J#$a_z7S_*2sK*QG^B3T6n1 z*lARX5|KuN*A8d)cN5ZYRNWk~45V=X!Qwdl*X6mNbsp&ygG~I5Cj>O_k>5vaXR8p= zbH7I;9*wNmt_sV_tM{G!o6l@9;glYV75d; z)$391I+@uuIUWkIWtlJ4eSu;{?^81uo6A=U1ynMC4kmEE6j4VejYh{jK~q_HtH>w$ z*?%dBQ4#iNynaU`LMiy)oTF&}8>D52gi)(P6fohA$WC7XuZ^>2w~j-C!qZ8haCXyQKL|Upg+yqf zC@Y^^wAtK2xL;uEGAzjhOkSx-+mrc(Xr?aSrK)XqSj)OB$ue^SeT!QJ&>}Leaw-IehDbBFTFpm5&n6QLwr@8b$h3M<&(pANy~WTPu{18`?EZbD z?sm8XGD&)3n%Tx6KO}LN_;v>1Z~X83+_b_1HDmj+{VP1-SVgGkd#Y)0^zQ&EKBfdT z5T5Jp`>GH}nT?gzLcqFq)f2)fk%8fyoG&bWU|RB8UidqXy4FJ|mI|Q8>YaZoQ=H%) z`;IpviJOhut0GXyABF*m`)$&ZQ|lJ}YH%6nrnU6}anw6xcW*y1SmpW#UQNH;z{{$; zuHLT?A8k@l>xqk5j@&}YX&hWjLO?L1pUL2W)#Kca-9c~#Uk@JgUo9fvWFDAVD(<}8 zE8G5HKaAbEzz|V~MU1P3&-ST0cx4mqgH*PyGEhFV6%1QSR}NV1K2#Q{vtnA`ar)wJ z1(y}=D`&g% z3qe&j(Qzk+KQ(X;1tCVI$>kt3S-Q%+gK{$HmHC!V?}^l2e}CI7VeqxbJWgmjr-`W9 zWcF0??%Fihb@U7<&m1b~k}RXmaAg750hQr~VwF5ViL>0+CN<86#lBRe!WiRv&*ZM;)A6k;lL@~gYB16o8xpIkE5j|EEP`Lw7JYT#*ri(u;k7JAm2F!F+z z7rfGc0IAd? zk<2-$o)7unpgd`La$i3<-@Ati!0o!9R;pgdpT;?FD>>X;i*#Be)c%*45-Qy z^XT_0g=R90g?~`6++|;D_{lVccYt2w zod$%l!Z1{TfSb9E;90M&qWM{EO2tQclw@c`7#pI96q3eLp!x9(OH>!BU*j02o_pO9G9at! z3CP3S?9b}d{$hM0LE8>ukx_us*RY~8D| zcXJ%2%TQaIq*R*qYjeP6%1cf&?~KL5pdBnsfxb4+5}?3Dac6jNcj zFe=GU88}C9DlnwZSvSAv#5B1G>|=WuA$^C z?^L2G;pS$8d5tfw;-CQWFOIFa33M+1mf#G}+G*lcBQctFFJd7`EQf2*k&|8xyLOrf zkb^3s$Z{wzn-tMqwn6>&XW!)dyJ5P9f@LmPwW&im#5toQ%uSZX?k_lQGgb@(yJW!R z#KQBNVG>Mpb72gSnAkEBp{Yp=Ci>jaq)UpCSYXOLMCgT9Qn_f`76qX)J-tV3_Ej|e_{d* zSL0pAfi57Z)7vI0>n|JY1#8)NEm82PWvVcK$&2A5qCtzGE>?OysOhU_JyyH!p%_kL zZIR;EXLfljO=ot6Zn-4gAYMA|@fyO1yhL>$T})6qD9(a#HeIYjNhGt{0WG6iq4^Zmq>Hc3A3kmYwRna$Q1RGwjN`jD&1y?Oq@zwE$Ky zK$I`QPPoWL(ZBcbAXV4BC^FrZwYSY!i9(9EIfMzb6yUn7g5ci zc`cuzHyJF6gVGe!7O=XPCHluAlbEvkwfRDVYtoahg1N^^cOFo&+N>T&{Nd3DY=&bL;WrKR% z6kDs{gMg;64q8a_~a~ZASW)cb+;5Iv*aCWYOP{fj4bCQwC z%L@k?m9KVUo?gYktPQE+0CAI?xWDNNEzi@+)BT(rX^2jFAHADmbQ*&z?RI44DH3_HY+P&S+ipA|SkwAYwcQxO9GYH!&%n#TULM4s%G=XQwj^rAf|?`FVMnlFD)4c5Jf@Jb5%+S!7Mj+JGfI5+EPIFv$}_0(0&T z(RZYJl(4>YaV4mmhLfb#0HCvoGCW_7)g)zg>1|)EMWkD9SzLA0`wm#kS?~IlN7!b$ zv5XGq?upY6nH!~rB<5}VW8Ot9tZu7kWzHpJhTu1UD#A=MI$7KeaQ1mAFU|Fb1KDYI zL23e5Wgpb6@sCu|L4Ig?^3<(<9|AxeB=qZARD@rYsTG|<)tth;gYr<)BlR*g)ZLDX z-iIYLf=5sTJN!wgnePZb#xXMRm)4yySa$R@{)wZ$pRk{!#O8wOac%CwxE8b=I`vm2 zt4Dft*-8Zha&OF^0+3OEzD-#j!p26q!9}LsUK;9n@rg-rqg z>nBHz=ma*^gc!}PQQTN|kk)NMCf4%Slw>InBTHAU7Rq5%*nNAJ7GCOC!QKySlQUtQiIRjOoV{ooI5TJk%0(!g}sZN|fo& zsGQd(?TfJo*r_S-%g~l|3b*PwX1QoMJluX-{U5L>#mmUUrtmm8sk$V*DvD$7ds+Ti z1DP10DAELSphp+Sq**lf`kPI1!I%jt|FJGRur&v0yrm?GF{m~%V)HkVaLV_U$M_>EJ|%^GP*yPcXer3uw1q z@W2_Ql4n_-j;fwniVF_-aD1vprT4c4UIX+nfPR=@a=ymQ%D;23)onWhX>CILw(M*v z-HK^ii36^j9;RtarOB69tSpH)7$8~i+Cd^BZG9CJg$bDjZ#|X9oHO%sUVvaN=;^c6 zgk*HxlIv=PV(!L*IxYColvoTMOU6}MocM`gsQTOq*o`UW};i$6`&EF zQ+s-5Kc5TCVWcu4(XBzYY@~X9YW`9Q@=e9zIM|wpb2E*Z>AfF-R=#zRVLf%->M&%RGYwx8i0b{g&l+6?`v1|fqFB2Yf|M{ z@=dY3Fa9*=T6mzd5LG{tpAwWe*h$Iy_I7JyxD2w&kmTbXthtMDOaX6@hUXltDJ=^n zco&ywZHcSP>&lhk$QK3W+6Fw$nmzQOUs(52VlSCTs=RQ&NFkZ@G?+KsIsd5XdJ8?jg zWl11T2iQkEl~r#HY6Zr4Nr?{nGS96doqjFA>{Z4l{ZP|lShcgX2$Qi|pqrxw*e2CZ zmd$m4EBfowhi&?W=ZFd=zi51wkgY}$Qe+gC2_i=eE_1yqUqWV(*^xfHo@kyUvwdw^ zu~pX4?iRgrRt44$#9ImciCEwg=FsHowZ5LHXjsCKyD8%Kh)ve9OJh3qi`hm#2E$`H zzLFN|QI)wZ!o(cb;&Yjccb54nYb$WW76gRzrTqs4iEUI4^A4ofcP~%A?Vi+#h&MF{{1^$eQafxk%&C zK_(zRF<`rQV+bAd)fi>8ki76PBWh&ag4Pyi%~agqY3YKxlq$7*NOZpkI=Zu(PBJH2 z$IVYhQz07qs>%c0UiqY|Sq^euzC2t~uxJ-&dRRuM#WB(k)huZRK$mB4n0xQ94GV6$ zXt+oixw`GUhPQt`MlismUFgkSI+rOI&CX9|hu`FL2VDfEz6c54>wU~dQKLJV07q!c zMkaYW*rxpuks3o4ZS|QjX+-E?ytJ(&qA59F>c6!%bq0ovz{OV*Rb@0j+uz)r{;Hi< z?`ncq5;+^yAhdZ66I%^ArV(7KfbGXmHVmMsDdLN49jj|9cJ3w)GC0JG1JjQ0X_o~i zJrlQSr7@2|TH4}$DX0yO$qBxdeJIxNmDa4;tnV4#cDa!x&}I11q;ZQW)h&`8ML?!e zULUN;eZA|wzzhvNF?o^Biz_wVR6l33qhr1}(_U0$$5qW*oG@X$&xFA6u#AktnyB)$ z4IlNhroOkJ#4`(0J7HFkZ_C8!#QB)OFL2!1aG-2e&-IusON~O!u@8rLt7%|C9N_|g zYY2#Zd)*N+@HQ$likINN0hBm@-N#0^3BiKqVMLAY(1 z?5`~4$Fe=Bt#lsz?bc>SHKC~X^lH$R%}L_{Y-$sU@jW?zSr-Nh%CBBMxs{yphNal5 zEr*xO4MbhJ1>1GU{cX3AUd4YftSi1g2i}zrZEfTcFL5$`bw1l@P!cY{pa64H4%Kcb20&h%M6(s=m`RlpXA5HaGnUO@j)GPXnzn3FYBDXIA(xRkC57%{hMnj@Nxwv9HO6p7Rj^m;y8UFSBSwU8nL<}mUwukF3=1Cj|T zo?TN|9WIJM{jAIeccK6urOgG_M$@2Y1gN144(lyfHWUex71xZ@ zFR#CG;^sguvmH^TlSJ@vf)9T{uig{B9O+P(gEXTGK9`U!0QCV%+0{mn*N3Z8h*LAJs<&Z>&xMDbh+kTnQCf+ zYpk%fo9$!D6|2YZTOZSjxG{=-OgPn$tFaM6ueI-Oqr$mi{VdesSFm|u6=dKP3X7-~ zXYth_2Clh`;74GQk@Azkk1&eN^-|G1PoJb5(QwTyzX)rrqn-n{ZDrevT**GyUwM+B zXKJVjx%dAXl^U!>>7+@T|2tW+=c?FTp1TFg{@<`>SIA8=k(y<(4eTmaGg}2UEdI_i zC9?)fqqno*Y#ykC-a7+}GoJxQ2BMfgjqXJAPA^NG(KJQLJx>}{&_kK{2acC)E|=_O z@A+WhdMoHzu?MQ88ZkYnKF$~0ZgB?tG(L)!+gGxX4J zjkq-`ak?U4-}5H%0kESbAL9h%hH!@b)l9Q9yyzJ^)|{pKlOY6g zkCxLgC0=vMng%c4gHhcaAJ;9U?5y2L*vlX^Sv_H$a-i538!j5-=*=t(w5?pSclSL$l$%Frh1F=&$I14#3ww^y%;sF2jhn{_} z8EVXNDW2$(5sy+f#Fq!6(LI|T7(3YOSuTN+9!df1R--5!3|846Yu24Ki$hXED@q%A zhHfrxOYM)vP>cyPxs*;D2gx7D6kHeL-O?OE_nebD&Fw zS=27X@^}n|**!;mG6Pq*iVbePT9H(|J?hUzePR|b#=v=K2~P04026c1Ov>SfQ3xOw z*C|dKB{=`nqI$S@lXnP5&sx1SDqYFjUGRiNwp4}cEVV@;Mq6_(OyhBEqs)C>|HrdG zr$c*u)->=8s<4k&9cH7-L4<1>l%kBP*73I3V3YNu9L%=iP}}s&-z;Wa3p4J=^2sjWZ#%ndvom00jLklL&X&@jp$zk?TnQK(t-s`(&*q zn>*U2Br!lg{E9dd8ZJiFm&jKR-1c`E{7=Q8uuq&<33+$2H0t-}ff!Wea3v2jT<91S5 zX`ze8$vC_}csK3oVX{9hMT_mHm!PAYW&s2T=y+gumQnMAb(Tn8=A&nL#fSp28jn$I zp}{hNpE2UVT=mz%r2&}yam;9cXy7pu;@Coos+*a*1WcPs?~!OhF+q7b83Yw-(;!7h zp!FxzE=4X=xg5c_uMfNyQ5lb)tX;r(qE`E`L$^IM2-75rTUDf401HuJV3llND@edl ze_eTjNt`@y%AYs|A1>b)iB(f}G5ggm&KZ;}$5eNCAZ!xYZ!C~WhZ}=F`Z&>EX*Sk* zXqWb5gQA1USafCvMY|sy+zF~6`F>0lJWtU%;oKWN2AftfBlh6Kz|hI0py|F{Kqr(m z&rF(p%b|teU&urIn>Cn~3;%fCjV|VbEqGk2%XH)-ozRrlaP221S(8`T3(|M>%(&3f_*-ufJ(VL(=XllrEh z%{6GT+4A{$903DOQ{=ZR-YCEed*1w_cV5gm)fVbj-QUN?!wJ5bQy+VGz3tAvrT-72 zxJ_z9Fiq_RTDNREZQ$2su*f+Pm>CXbPeM4}T6c!0s6c14{iZ~kX~Y${+SDA|XrdQf z6#a=lAxOKNmK?`)fLSUfonBkAvpQj! z@dq#L7n>C(HEMkt_7HnZPt(9Uuo$NU|G*z;+#F?xW zff;Ed+Q70Mwe20y6In-%JC-U<)C)4r6eM*UGus1bls<6HX@*OQNRA@d9? zn^GxjNVI=AJ++WP1E}_AU%q#SW_T6<4MGsuCuHS!JB%#%-)0*t(K(II0Y#wVMTbZ%pp2&r9paj-%nD?kP8awcfWmg!cM(OMae=qzLk~ zR#%!cJhu>PwRg4w*aY!QdZiMiJx7=+Fftdd2klP*M_}0^plbZAg^z+Ur+;PfCYwpR zetp?);ubh=fngl#!DdLw#3MIIKy0FJEb;tXyl@pEQl=+DgxBdO*SKc!ynh?wDi+ll zR^RU@?jD4gjqw13KMwt~>(e$5G{~(@Jw=(wMrnPJ=s!})DjTJ>YYeR6&gZ9KQNr4l zJHwKb{r}=xJIy|iPDZSOPlnQAn6_)yp?2V({^P>=+`XqwL*hs6|9Mx6TYy9g=b-)@ zdOyI^m}9l%2P0SN0fPg>31%ZMea^vEHh-HiKs*PGn0y_D<>alc4hsFnb>4&?)KcqJ zM>yfR&XF~Nyj~*hm2v?CSQtg( zJ*%$0T$aX-(Bt(|&yX_&3t}&u0m(`FLb3B+%6_q`dc^*%HrK?70ltF%9ZX*WLmOU< zBfiuj_jLamNQs$bQ^w~lVF3mJ?!ZOpc9`sobm%@qL|O0q6F$MC22RGs8Edi;F15=r z=U0=CM#$H^AkzC}6PZ_K4z>bt{x4+dm0f0Ot~!>aAE6mfj#`Zp7{j49p@+UVpd3~n z>2F9Z=MP0hAL9u|yGx^Mt*y_7f;(}Oskdzw7kPHFbrRx(pM5g|(bzEpgUb}##`aSp zY6`i}?>u=rc0dvCG-D4v7Y$CJB~!e?vzMiFDs?`W+aNb|`mw zr4oi{jD%ua1j4GVmmsF<*lBW2@>=ty6x~MpsF8$k0jutZ+eL^s-l!x)p$)x13NMv{ zBhf@_v8%BFZ~8F`MEGNA@)i=RG&ZHF@h)@iJlHH#O`6=bfBnt&+jA;i>42Q|I=*9A6>|+Y|>de zqsghrrAyb$;PNAWP)hD=C#ndVb$AHGFLW@Vi#z?8?>^t%J6B0~MHzyYLtS5cdnbQ5 zUMv!o0ajZF{*$IlF5OhHPcCxnUg)17i$w);hTziU#jB>*xgUJ}3zkCd?i2RB-A8<)@2+v|bBd5 zAYdsBz;vpHqE(lYM90fs#!C-$K|bc-ud_&3?N(2D>t7S`o(p6qCE6e7W8u^($RuPf zBKH+Fg9|zDkssF`pKmIjS6X6SImn)DClZuN!Tgv+*K^OHzY&(Ee+q|tjzaB7+V*%l ze)`{`uuQ+DJMNZL>>?AXwh1qdx4^7i!!eX6uquRm$*g>#>z6RVKV0}0UWJxgr3^QR zfa?3arS7og;%zMY>j%1-)|Ec{tN{JI$b1LOb=VtJkcXT`vc$X>bGpJAgEq)5HA{>h zc24$v{kOm`v5sKNluT4ndwCIoy+3wXxvPLd;M9>H#5-!THUu!gFgSh9s;Y zQ(j(ClWwpY7App~y9X@XKh4~l~_Xehc{p6Vh5lp6s@@H8-?$|gE=;Zs@k zWU3DN-)42Y9ZE}mMfqDdwQEHfMyO2IY1yC*cR)ga^Wg=kt2t@rgAO;yv(T4cAaO4% zC(i!0&d~esiV*(2y42Q&S4O%gbeYLuUKHq0gFCPg-n>;-jK&cV8K8s7o)nv|;;lal zyABA??2G)r1->)_xl?o^#@cB$=>4XcYOS&ufI@rVI&^5F$YQF14jI~PhSSgi$v>ua*C6i@CK z;WgX-;=2NAhfTrmYLcZO7zS{B9p*q8uWl`lR_enh>vx6bg@1}Y+-$#4Rt|7u$VHIS ze6p;qk0`3-MEqWeS81HhB*)x};Z}0&I#W0M?#e&*CKXwN3@~qR;7L=yOKO;>DVmt# zlWbB_37AZc)X5|NHTN%xG2|-FOV2wwf=Reay4}PIaFxmOlIVavuw`ZoT3?-BSRm4_ z)Tk5DX1>PyMk>q&_@LBK66Dk*e7cT;_|`-AB@jr=5MDki@nf5vE5%)`*XI?!$|7@- zaCVL>thI+mx-SD7Og)pFXV{^5F)KM`tSqBLyfrz_5-*A2^pY(Ha`qPeu1HFEmegdP zRJ8V7)VsubSf;=>qwvV)*u~FkHz;TxZ=Sibyq)^BQj)o7dUSG@*0FtGliRvy&CfO! za>ocRH=`wB;q8(T$B^pW{XnMA{Ov~Yf)9&3x4h;vr=aY{XnpaPFS4I!UYjELha4|1 zLRc!TlC)uBKiW5j0#ET}7i0(ySe})84P{%9qSu=l)D*SIDjn zL;UQxT{m$SO-&Z}`>3w}j`5ODfp9rhWTqkG)RAE+C9lr&KeRE#G^Zx<`W}ph81LK0$*JCOb}-+hlaNQGGX|@#D4GJ zGdz3cck4&)Zgny5mlCKQ@C)+En%hc$!~wuR17Bf6CDhW}_o+`ElPUl@-=IeZmyVGq z{%UptmYKR)z(2r%<+@J()<3H}oYVXe30EL_1Xsb1ZF|U%*=6tdRi>Z_l^Mrwr2BD6wT$)I-nq%N zZTWK5pdPvgdI-nKCka_4a%yM;o2Q9!=*+BV!x8 z4D6oOX6ZQmeq1(juF6Oq>argJs#mbXrJu!wxfv{+{V)79>g2~su*yYezYq+q-Ddft zASSMKFce66DbB3SNESv1gD$dA+Z-4(-h!1bgfQ`>QeA}Y3g0R98ld8FGKT423-X?F zTTy?u&4wT)zbQ`*TK9wH{1zj2c5nZEXA7rr4*XpPC|B&sz0U#uvU@^g%{My%gC5Zk z%M#?Ax&aV@pEZ+Z4F84@^p8@KTCE{J00x(_(6-l7GMcJEof#voY`w$=7!ihkKST-3 zod0++8pGwFDMfdlEqyY<5^fjL_KgB?NBIomE^C@NcD)pjocaE=DR6c2pKXQ+ky7Kn zS;917j)~sh3dj-zLn&xNH=g9QR+A9pPc^@$p;Vz#G>%$FQlVOROBSm0 zhY0j))OcL<;m>z!vNb*jy<*dk0xwvMt0&wJfbRh#KA)QANO19=&?hZdcAj&YCMeDm zKtz;evmnD+ceI}|hH=rLe9g~p=}~OH=~0bOqtMyG5J>Mf42}BBrS+)=Tb9c_r72{X z!?@>iOb6#5crGUB*lxfuDB@ME->;+0H&H7gz%~lAoxAYVwxTkcV${gyH#_IKGsq@} z((`l3xwd$g#*cGk2{`6jJ99K#t3kBhGJp8B^yIlU| z)h0ylzPPwD_Dk#^Ay>YTL+C>(0nw@`pAj0I&W^T5eh1T9Gw_jdV6BM!1-^N3_}L~czy+l%wSpc_A@ho$(@q1BZYx7oLug~IgGJvpJi%{rAYx!WYuk+~DJG4QJqy(=i}^%l&u}YKaXTj14yRj%yE&(w zgP^XW6JcQCm`Ux)lka9w)+Po7is}@pB$Y9>ht2@0CriFh` z`e6y}*7lIvG!%dl+4LFF zTP26agbQO(RLDEphq?m$IBw&r!nnLGrRB^&X#2hF%F3KSpPlY*CS2-Fi%ZU@sEm%V2EMJ{kd&ld4l)0`9$3x}sy>bYL%xWoL=1UNCC~asC za1IvC&Jd*j&Tknc8zjd%=%D^9N5Mh&eK%<1OR#`aRf8)N`*BC~=>Gqm+QNisJtJ7wQ6u1k+n@r(Dl8{T9F=z)MLiW_&A@|K5#%_bc1d>DR3iul7Aox!6+*f;&D0BhLay9eLK+V-f2&#oK#Of_|PR`-v} z;jDHNEs=HkXRG|gT@@< z;OQ?(d*T4@XX8@h`BnQZiWb<*%bg&`@$ovhHq|41fSTyz*{++z(?5pt zG7nJU(hmPryAbw>8D3A%)a1M>$kPMp`BgD-v4wtBt>cL6ErM=7X*pi1A=AyYIjn%n zhh82USWW(mtEF!Kk(0^>8p66^V;VCpC4~f=C4Z?KkUj5J0p|>B%r=Va`Z6w@;Dlcg zMY41VAx6{JOD8%Dh0 z&i0NGq_~d+nV&S>Mb)Ow7l!uTR1a+@wI+5{O+?w&#j>veyQ_Y|SZ2@RGd+*#^rhE= zQFTbw1Wy&!;DBS~a7(W~{(EngoNE9m*teuLwgq*ispn%VY!wHYOp+D!6nkm%*1~iCRO$$5?*>tL*8Z z){W{$pcU58xu?~3({Cr#ZID{;TT;-dq9n`qNq$oDG=1BYWK#VO0tqja1(1fKY-Ii7 z=NC;A@T|B6@EWM|Bu+xgQZ#%BW!SJ-NKEm&CyKlxs6ddJU26OMuEdS*eG*VPOT7K) zK-46Ve!*}rD$jiG`dKRG2RQ5| zc$1rUmp!b^<$Few-*oYE$uFQbXz|%$nKHK_gZrIR@ zrSJ{1V_v}Jccc%ejNvuNktXeEkv!u7bz)#j=LA{k)ayR{}+;*&&Y( z%6DJmLc)2m5EaSEZVjD}c6?=ZY+9g_Y@G8Z*S-!#FRue$_xU zK@Rdu6H98;HKKYN*TQG-RtdoFf>$!EDTdmzu5Yt*>}<$hMR5s|sxZJ}as6&vwx@SA z#3OP&4H&P90hq_I4g2ScJX$xLGN(-$T(XBc^lej9pAj`okzeKO3j*WF9OcG^%e5SV z17ZdgW4`z)H+-y9)jB{a;58u{;~0gWI|0G;vTW!IViH=5=4qk1CNR(BZCfu&63L>k z&%bD%?J+`SSzo?EQ*v$Q{q0sTSb(J5xyLp;MxY-7!#*C1I6u`x`&97NB}{L>QPF|q*vuC4?EiAgfs=)+Mm%J-*P=nfI#fAa6b*`~wyDzd-;ZI8j6?)nkTEq{v zus~=#w``BXgQPAI`)@a>4Rx+J;TQb0*Oa9(wCHFc#7v+qi-OhpwpFaf{3oNv25oa; zyY-~dv~(bY0T*GNN(3Vel&$qO?x}~vK#9Ca9P2JJ88>d$YjwWiz0;lTJ7;J$DYvef z!0sp5QVw>g^9Oni?8`uZ#-z+52KO654l0J$s*sAcEcX4^*oF|8bB!^6ZC&cOpHH3Z zrMB}Q#^%n3jJ(N0{H$*<2Zi}qvc_-Lf$W|MQj=kV%MdskbNG%19q{ZY$C)%3f&l+N z0Kn>hH2g&PL?oItqsmLPv&u>#?YqY2&#Efi@WirWU+q^lN<-PTAnDo*aX~`ar%Nw=g$D}1C}spT+pSyNR5y4N zu*B1t|CTewSg_5DIS)D)cHH{Uwm&kJc29;pQ&Q<>;bdM5U0-LSMIQ@ z6Ys*wVVo_Prk|(v!Tou{M-*1m9)jb*1oxck`BjH zf2Flt;0HAd@2Rw|M*3eh^@kQH9V4miluMtJf#H;ARmJw|?#;9eS#rNkWr#=8GUmE# zk912b^k^Pez}uTbVB?D4TFY7&(LXL!FJ+Q9IG2vO@AUysnVp(faP^r>_r_NKQm43< zSSF^)3lcZB!n)ymA3d|ktC-EX1#m4;xW#h1kT6AU?#{31W=0*vEI4>>ypC;e*h1?= zc2r)?9-$2Bga|jMr4PZu=S*xFx{guJsGEeBFptYs>>g`mWP?DBR0M7&H!OD3LPESA zya0e4`tjk*RFhus^AIwHj^vQjaEU>oq1|`6op&o3UM7|^{5d5c!X4?!DWh>%3=aRi z!4Nz{790Jn$!CsJ6%9*WdaDXTgo_Z>JOD+s*o~PQ`g)#kU>0`+v(oE1GB48yp--yB z+`zm^if$vzI4_3isLlccccHCBQ|DW08#9pjn#P&o>y!Ayso$;|+pZ(V<%|5Dd!Q+S zEjiq9r^jY>Yq!qKy8Nn-GE0^vU+hzME`q+xnBQqgVdzLfiKC#k)bKrVtf+l=?l#|%YLI6*mb5Pk#6nG%tpUQ6!0`tyou@N{l&X?vep71gy2HQUc3d!W8PWb}-X!^&du zLjz$kU{l{a{7V}->Jh8<3S4CX0Z#P;dY}A(syJok0IKiQ*N&}+M5qVq%wL%p1Ke}7M7)b#ogs%10!;NBv*mMe-ZRR*$B-5a;@+GHldzRIMq z(RA2yRNr6rrDD&hXC~_cwPjp+3}8(G%oaJOIg1P4eSQ|nO_%F-gLX}~>$48op4Wp5#3a6kO5E3UmJl*{!?1e~ zxd_^6$qv`VyT+_1F@rUst%Z0m$R>zUwYF2!td&Sp9$p%u{hVpYJZpSFB|;Z zMt=G_VYRsR4q3*1tFAq!xjxiKOJr+%xWUz<9@e ziK1sT9E-71b3__Qxy6ao2RuO)RWo5=B;z0_IF)wrLbFK$~j|lwn!awxhqipgUh^YiGEYXk`HC zX0Ag!`9J}6q4@c9Hi)_(?9qOGL^iIH_VS1}R-VTQEOH-?sR4T`E z)@rjO4pkB8ZF=v3T5bt|YxClR8$HPz+>&j0J&AG0uD7&~L|k-o>db7~I~R^X_Hr=< z)Ri0_8Gr@(ye3eVj_C3qp=?Ssy%4Q60(PimRs8ai z00Pv}GXUw}b2B<{lkt)+FFzOXq<^wlibP#Gb5C91zBFR20OGLo?NJ2wKH}W3tQ?gG z#)h{54X^-(*$yLfKR8vS|Jw~D>_ZD7@c3wPXy+yf)6Pn~EMoCzf%4w^go1>ND?_7e z7?+Rs&bGTYvL}qQi8=s9zR}c2*thH{k#C#fYjEY`_f!~ z-f>D9L`41wk(@!_#G=V~RR zg$vf=v;Tr;Q96)vd^99(8Nh%GH|myt@Et#s=M^Y|WaW#t2ap?sH4F#lW&1rLs@w{? zgP(UW1~8NGz-l`z2#;J1PIKV?+#ua^%G!gBM$>D9Q{D4#X;JZ@ZsQ1bRbkVIchDT` zeuQ6l{{i8V%=kwAuVe0SevmL}{a88SYT!Z9E<@3L4_<=!(RW7{vl6#fuB{iwEP`EU zXEo>vY?J#mFp=#NaIb5!ht)!u~QTmE8BwL@iAP!)H0^y$m(pUs- zzq8Ciy)XZv;}6BA;o$O430O}_be|3u;22XNh7#Gmwr(ocF_CTashNIWh5q zz;`C*w93bt_MSWQhdnNZSnF|}^XXBX18x#vlqJt8Y$X&4S>xPI>knh`h8-O}`Ef^_ zK&F&uw>twYcw;~?3hzUYlIsl^EqFH=bl_(QU8ynrjL1s1bH*uw%Ud5IoaI1UlYB)l z{QZyp@FJmh-FhogJgj=~Dv8ZH!^^?s;1#Cf;8Mimv~=!DK1+Og~CRNLYAL|FUw%Kgq}!GDM{b%-=) z@6N0j5J4*WkZuQEPT;Y&DSN&_49!{Q_?aUbknN1xvt+6tUY7%G4mYIYb(*w9@RO&18?5yD z!Kl%34XjllNMzpfv9f@12PL(f#%#|m_EY4|OgW?0JGRAbqa8z7!J?BL<_JV^=(iFW zUNqs@&sK|YrmV?G%tOMlgH5CNFIpO>1UY~0uA-%AuEmG;Dv&bh|Cv$rocCeo+1#Y8 z)bPOpvU?fJ^SS;2)5<_Mq6|btSjDZ+xm$=tp}3fddV%0_N_0F@}J7v=%l`Th)Sj&H+NUbCeMsD1LjM^18Uq3Rg`7 z)kJ5g1)ZPVC4@UL35>y=ix`@?n=1vVYZf_Ku#jo6mLIev7i!cm?SE2LkMbyvzDUge ztOWh0j@e#XbM!CSQt4R_OeUw#*gV_DuchCE^9UNpSPTj?8O9;I0EHuEH6f>T7HRzi4PDezy`dsPz6k3#=k}S5hAtG>G>N$B8YQxeL*_P%;rD{nY7p$zQ6`*! zZzXaLvHe)1&*}2BMcrPyDuT$4!oxgFe>&LQ=@4v2j}5?CwBqpt3|`JMoeQ)OYDkT* z!{2#uBMppI?ln>+hW&XQ5!xMhndXt6Z@sg!VU>(;aDa)n@UB>zB>~BNw6P?f>cOt#f-sVt5R2MkA*+|KK@fjZ<^4N{Js@0pM8w#kg(46U zk{!J#iCI4R*3sGx27%Muf5}vX!-6Jb*QzH5?IkuuB;g?CVr>2a5{X}%GV7dd-UkM3 zgi5>?=O0JBZEB8k1)g|Ed1OJnd|@x4r)jggL8b#OW52Xq6{1#>|Brgp0{8d!>xen$ zhL6mqFa56SyY>N;Jx`9AUzd?>{1IB~N31rs)%=sF3nFU*oQ8SU3wMA37J#Lv`TKck z4BkAFz@Mw~jq+FF;2NQ5@5iKlfBoiKsX0+^I#|PBY&8NhllJCQ{*LR;s`YCkKj??4C+xHJ5&`&X+K3GVmoC9E zVj&8Vf$mu9qtcn%T*)>@{x4NP^TXnK(s$^4|9AB;YR!U z!foP}WHCII$)aR|Z{-U)FWjC!?u9}}Hq?xc&QQMV!D)Dhvuqxo0Y`^qP`lmQk!e=H zn5RWhr%RL{uIGfix)aw;>Wv5m?((yeMdk>un}3gdWXD`9O+!*4g!t`XJ<_tj5pB_q zX?Mwe^k!AK;MhJ=);}{-ImY4w*SkPEN+5Qy>#@9n! z1?`h}txP%PWXv&1u{6TgFqH%u2gU??G&wKC<71e#jS93x$8~-~Ryvc=DQx0FM%O7q z{!U+WWjrLWtb2PlUR360hf!S^+krq`?Fo#r(?Au=4etCchC~&OO&I& zth#FrroO950cpm3f&?W58}^0-^@)LOR+!?jeh#9t=}OxqfX+fa+RVJY?~AwPj23Oq=Nf7hT)-Q0n^}pfwUYIDo&8{ zF-KtL<*BRWLd6<1^xr*?SQWJHAtO%X&B&9s4SsfbejdsXVpnzLX+cQOlb&z&OQBmt zZc(3(=w@%=!uKgd25uWaMGJ!pXb(AQjajTL%Y1~;=sp*E737i4%EVq zFCP4+-i{SWc+c(R=~Cy!L;g8k=w@W0L~k;xJVvAFpe&!aWM+$lFN811lFC^+#vgHG zb^n9?Xaq1KaLGq-o8DHggOmMEw~q>eb?zUBrXbF_p*avGUR+fy!xVYpAamige@z1LR)!UouBK7?qnUj1di{N zMP8`U4~TxUeMa=XOg&)M*sA<-!CXFwfY+*jcI+=VXc&Ny<{mQvg;MwWEnAY zn*=T}#_u#@Rlu0*8W{Y6GDixWsqukYo`3~xTY_P*B^FEIp*#&WaThlkn#Jfa8B^S} zHAHB@|FUwy2@_+Xq9D&Hx&-JbRF2~A`{uf?;Uu$f(nIep&;g|ARxeG7%HW8@t%VC} zN`k_5gX#$d_~-FL)MI8EXwG8D^=@00z5i^Q?dmh#$`L3&ytn^E8cE+O;;;bY;z#d< z#d`gdymW?fCL}ZYif@@M2U56!nVQM7%33<{jq`+F;S2Jpua5j0x$T7SmaQhF5Vm#RcZH0H8*>r`-ol4ieZnDSBnkWjwA2j;zqT}Pb^11B@HXDP#XzzEy}*9kSLQWd}P+&2O&4YE(#|e{j-yOlMz}PFacJdRH?dS+V` zarNQ<@xZZplg|S+5-O0Y3SIN@Ob1Mkx7V&EOB1_D6w1t)g=3no;wniV%zM zvr$mv+&Xjm!c1~une%r?HLm_{j@f1n-0cY?3~xNYjVah6NOp+_L~5Z-qp*bSX_p!= zNX>K^xe6vOTNz z!z(*wFl{ixFq%Lf-dDgBhJRxDX1GRz-9&gGaJ%8$w4luCew$a z&KASxB#2!P3$_C3xr!}N)nRv8Y|?Sif0AL9bJxfu8DO?#)GooN`d;kgmd2EHxNidQ z5n06{hHYCf)u#gUTgi@@hG2Xpm!0FTf0O2ty=0cruJN&UbwM5prBn?LQM!-k{yb*R zSLVVw_uLEy!%PUZFX*V&F*V~c=hLEzyub)ct`^KQPea_Oa#4_S8qFU|NE;5ff==`Q z1E*I^C)y0E5@ZClKUJJLZeOkMY~LXi=ueo_7U5}o_@Odju){Rcm3Y!~fN7tyAJtWG z=Srt}K6)+$!G6K72sFTD&r?v@G)TLtbr;FwD%9(Gep-qqPxZYj_C8J~R>_=dgmk$s!`QP2i z4i?NL6G2OgbCK!Tb}#p;{(;(QJN3+8g{n{u{@z7Q{xF$bfr0>Fsibn%<|4uxy%zQs zFs`A47Pk9oFs8@)|LMu6`2a*E1@Efrz@pj)?!*d;Xs|83Hm0ZM@sHwLebUFb<@+HL<>0WQn1{Ifi@3gDH=Sf5lE8YN;7wyEGBnhAlJb};z|Zk1IAtQf4pP;N7y%RI<O~T05tn9J61D%Bn8YHzeb-W-{i}L&#jzGbiLHz@ z+rW6yxqpQmn~?{fKT`bn(v5i&i)zv71{nYwPgJ3itJmAhzpmNl;|Eb4wFB5fG`c$H z76s<=YG8c?N$FNmX&{ePA>aZ_@4^AxWk@eLuQaAz0#DJ4wAolYKRw>4dxT|qIf(k$ zHe^@$TrIYOcrt_m&mvVhB(0u8!%qOS0zTCAr{BxvV=zg>SkqLKi3aJ=A=6Q6dP(QhQ(L& zQeSn1szE}X2{Y{y$2~P=eH>H+czfXPwm+*ny@{9MXDf8s&w)3=g~uKt@e5erD=nFR zsf#oDWBPN*u~J%6C8ff`HI?|(+XY{5qmC*Cwl`+w>aKxf!vlsGwIF19JN0xRAbuqy zgIsNZbVV8dR0SR5Rw*BZ#+mM%t`*|bCM+zF3#`N_96^Y=v4#ShBA;HRHeTjJU8d_M zNyx5s*zDiyqCOyijqZ`FU+ejlWMb3@U-PpuZvm`F9)>#!^|_cSLE1swpg|$n+#=>W zMuT~T+BjM0mGe$<3*5N%jDcL|(a%ZhiBM82FXsxVMY3Xj2{8P0S;pEBjG`o}X==z! z?b@MS;5WHKCqgoQLpcu{2tAGkC3r3e#-K({daySDcr1b|M*@!ZZOJ?af2)}W)IK0{ ze_;3?!}ltUF|NR(N+{KQ23f1hK;^=&$2TCZ2New;xoU#;w2PzY07EltTT7$H$#ghr z=#pp~35%5&L`gD3q)`{BG}k*T@UxWdi2^l9VFFPip^zvnF(8nAA0_dBfK&tBII;mj zONZtxUE8YB*AA?{u-j+<(l7)u(TL^$aZ_Fr&^S$A%Ok)hdBE;N)P?1Livqd*i1$h&?*(p!w?I zr8ym4#A&UN8yG@gZqfFF;<-%yj?R=2)9?prkAQVd|-N?QL12om~hl$^Gxbo)r&$W zineSewLf*t&SD(+boIvM1q}3O?-3BA!DAu2NLYef{Gdb0n)GPM);uI}Gf-;zY6z;} z8Nj!De){Kp@gkjliy5uGxI~8^JNgJ|0zO;jVg##Hp+g0GBN@0K?^G!DhGBA!oQ5lj zcxuAMsvf2Hu?)(&-m+eqII&)Iu+lxK2DuCcEW6ZaXz;@fK3x6UmT6~G-fAC2HelR_ zOq?%AN!RsCMHK%{@J!8ega!{-2e}bF%beyI+)*qGkm?nq$lR~+wRd71N}Y~&;XiAU z$N!Y4a0`h0H9^xD?>oYJ`u*1|YA~6mI`YAi@J3H=LrbG~_Kt<;+UWUdy0jc4Avu9~ z$8lEWs`wjgFf*TKbV^BM%mAYI+3N?|eW#ox$H@1*^0@Z=ts2H9q!z64kVdWJ$U^$` zXZjwelsjXLA1W8QTe-2ER2>9T-0Cv~gaK`Y>Nylb0=pBfmi74D1lEzVNl07$s^V!hPGNvC_=CaVO&rX)xd&XkkCS4QiGw87?*LVo z+d0C3x;RBv?HhwvZAuVBhG%~ysy7AP;%=}!*Wmvs__X+^8Dv9@8p6V+ToZ1f)8aYE zEL>64qkYmZoO626#H&hUwb+D}W{ldsocsrnN0s?O7>&UB{c^knPM0pT#V1WKq=I^6}_Bl(l^0h^pGKO^cxHXY~f4lwW(iZ@<(=u{>4q$IuIdjsvsdcX`8Dg7wJ)5BaHPERTHR9gC*Bbiow)zt(J z8B6Hg}gW4!a=_OulAr3*L+sjlD>DQH03xn^l~FNmQ~v^j|tW1PT_Mu^Mz{Bb;8|!45Th;AtFKE2PH5nJUZXA z9HekNO_+D0fejor^b6t(@zVritq}9s>ZX?h7o)bnN@GZ%Oe=e-a7b!YRTf=yAnWTe zfH`ckq8Elu&aRXZnLC+38@(Lq>=vo^0^!e!IkmUonpKfPFl|gr<~nZ4RQm4esoeHk z81}cw9w7-@(@UzSFbbTvZRNC)xF^_V8(1wJLw+L#oaY-1&zcroZIbx{q+?iPwIG7+ zQr%73Ow67Yg7C#!^O-G!8h^$qL8|IJzkxn-nqF)c6NOYLa3^?Vvt zLimltslUEW*xW)2jakBMzDiLVfW7`m*vHxcet$&_1fASmiQHAdMjE{%NtV$3JfGqa z@Hv4lDc>2nHXDk*<@uV%`aMZOtv0BfTY zVbF={HI^O2$VyNl^kTzWS?ndlpC7CcbDuUa;vZ3aV_H@4pJUAwN~ojgtZ#bq+NY=C z%VJf5r-TKsojE=Q5o@2DXBewq9&lWk6phO5RFEnHXt972YuB||h;KG-!v<58yyq-lQ-B0aue;g-AS3FIcaS&1Lt_2^!# z??SF&ei0MtYz5425K)WL34{w(ydI!71o5`VT~_HYO|3(|QRHF4Z9VP#3`b(Hpjw>I z?6j-~w8A>_&7ZXg*{3IliFnH{Zmf-DMjr@lpe7}m7+^i!!5rlW(9 zQXN`EEx7w^ecbP_`H2HQB~?}`R)hsk#E~8S3F&y+2@PU|f$8@dATc-(0*K_N@qAzc zx`A0>6%!A?zo7m8Y{)o)UsGJ*uc?-g!A+%{khw`Gu#Pgde1bFXsuGVVNH{K{i74vD{r>dX!14|-@v?Xvn` zLo6g2AN~@^GiW!jn}$~+1jgX3lBwPeT&bzJ+If>TC-_7y9T#9)NR*sfCcLvigtbPz ze|-6Q3=Z|Bn0Ao}(-Xj3x?b z`?>XG#Zp^GA3MVW$2O3?I*64gVJF}Woz7pmbGOfdK45bJ3Y4JWMQLwk-LTOEh^M&K zb<#bagcceiu$hYqi2dywhUY!To;p2o1K2G(=FwQZ3edv1#m+9NhX|v%63NiOWa9Y) ztlA+!I-S+QV9uCK){7Z}jT+9+I<(A32qId0K$13iy~bKq)AOW|+*+d)P0qOtBVleR z4B=`2GX;L>uM8GH5q-sq^k@0!yo@hU!`2)p`hd>cjq}QLrj~^P-ZA6G!1bG9b9&|_ z(jOMpbupNAIo6A36qO;jeSo@E7)Hj>E~ZM-y`#x8K{&jv<|Q1L5@0Mza@oJsA|9Vr z<_e=LT*|DNw3h$^!lI4%GhK z?FizfM29i2o)2&3GuxRBiCd%pWKCrJa_;kUm_M3prLpLmd$WN!kyjWf~65 z;l!8>Zk70n{fzRr`=I2vb~hnDu!McP4Vl0A=VkzC(3vCazbfrjH!2c$QtmCL{#SyP}Mb z5=Ajbjh_gEA{eX-X8BelvI2(Z6455t!13CE097gjTjLZRK|BKh@AHs+Hy0<(lT625 zVros^4P0skYBa4D(+Fy2kIvo?H_`#7!J@v}NjZN7|FNUby0bC{3lN99gPeG%GAiy% z%=xf%I<21w=Kx}glgWzGjc%9vs}ch6sEG#yC~q6?f1?Gi=(A|!oQkDbaHCdVL7f~u zLF9zL^z@K@J;hP-2;{!$;+${K9y^BuFg;Nia$S)Wl~@i%e~_IUvTwla;8`4R2c4p# zl}ud~RRaWEr>QuObj5zAtG=@26>xS`-?geI*xQVQfB zBPOd(AP_~moh6@0LnhL0w_WE|Vfx`qSOD=>c<^4))n5ufg)TP?OJT+PH7U*}7<)Ii z;DkHV&CEti@OWRg461LYxPq?i>EB^6#2x+qKhqK%hqi!aZu76WbvS`iDP)aX;6TMm z*SVge#WW;baL%K8oLJWqj)lgOQf7kI;4j{~QvU9d*en{PEPtsHBsdRl#jtD;gkt`M zpoWX8I1os$vEsUyoh1g$Q6&$W9fU%bzz&$A`nTSw{`O=&LKc3@K{!O!D=o`2#AuY^u)uRzN0c|h9TU0Lb_q7Ea?TVDcoosaY=z`eDq;<{WqG;x^>CVEI zlk)Xt%uR!F1unwb%o8O^ew}xqmKmdANlsxg+1uLkPz(P%L*_U9y=?~^pwXZ1n~92sSzOx7%-{69d7Nuf zu*{>dv16!)S%#7?cde%1pw!Ertx+>34^j$PUI>jO2tJj^x}FjawTFp$VpCgERxD*e zwZHu`FTJ6(JVJ#s|9`cng6KJ;7V8a7YqqLod<9|iyZ#x5lP|m1;$b{r$OYSka*uZ5 zhL7rovdd+Kw7QYPCjpW(hD6DSQ+HK?e{7d{#E#liPZG?`i45qCaR2Tq76O&A+GYA4@=bUJs$h#t~m0Wa-y~5)TMNkJ{n8UlnMNOkTCwGh=oknIB z)1Jd5-P%MHRycckQX|}Z*RC@DM4F9njE&V5mGFCiO{n?)N+Q2)S`aDz*cNk+VH>vD zkAo-&&uP)ZU$Q__{7=}A|SV&gCzJm`PSVTBz`Jr(t6*S`F zJvCLd?6W+CsIpoRL9xRO*2tr#xoPoH+kF`!3DhQW(Qmzb^0<(;#5S%^$!kl#bgv!k zh8*FH(@3}!u9QYf#- zo@Z*adr8Y?*>{8rWfM;a>Cb$9|Kx*b5A45rO%dc9H(8 zA??qSHe0Anr$GOi2h;x6?w0jN)F88i@?4m{tQcXL3EmoYYPhmWV_|D`ml8&{m>&R9= z99bn`OSK-$pwXY3a-E7To1bjsGjqhDiw_qgCq~o%0LRzct_U)LChdw-8R*oRki*wv zRMSVGeu+ElO0zO*ZoxynkG>Bx!K&eX4l)MVQV|rE*UY`oh`tjKMmvL;=RU7L;tZyI zOC1eB^wN-FRoP}vYDf2a&GL#+MP7d;D6Wmjxf_%YF^L<=@6rb8?dAL|F1%nA6S*BPUOv^*Pw=7)kQOi@8=lpO+tXBNEd* ziCMiwf>bm>VIw6v5!WFEKkOkFJPtY)!eK86saJGzT%?sey2_k`lx4GuVLVz%MT<~Kj*d!scP{dv~5x5q0@n~wf9b05I0KMrqdJQ z4tO1&juK;)tgA$pJp!saK~m2W5Xk-@{OxRTrO|v>IY+QDX6N6fKjyq&ygk=JWf@zY zi>>YsJV#J1!D{thJBRsoD!jYzvQ`Bhs{?llv(`@&P!Q^6A5;P~Rs4ME2}4nI6N4)> zUIrOR0N~FFPj)qbGgUFDya8F_g-sJ*(-KniiLuQfzKaxiVTNQ&eiHZ5c}_}G#59=V zf0#dD;3aeT*n3;_Pyu$v8uRR}%aCr`$l}V+C+t{|P=tWX_de&U0B#Z$AjL0B&X?JG zt=Qt;9|PNgrjb!$kX5>YHq*U~w^cstsL6<)TMd;`X+O9aYqM|u=8O`(ihhAPQ_dvv z6#C5B47$045o(nMc8~5sKRa)h?ZTU;W^nyS00Q5MCXr+{J(~W1)f}7Pzv4yXU)G?9 zC{8fCtG!CX5Hjv83EA>$eP^c2^kb^=w_&dQkE`Z&_Ez}keoxoL82>gjd)ytpw1#ZqKPsFNw1#h5#C7Ug71g1r$`CTWzI6g-iQa;_(p+N2}9RBsGX0xya5L^S2R9E0Vr=B$x_1;k9u+qY8 zzj9SyK#8PR2j+Dn3J*)M_wGKfL@AQf1~C7-s#FXH)?dD3f6Wg`lFo?~`sR(Sw;uL( z-7I{KF(LE{R7@=Tw|`+E+(9Vz`K$?TM)>Drxj|X zW-$(zZ##e~K^|ig_#fH&W%(fwHG7PdRVIbZGzaau)OIg;j(ZLzTnpnv;SbbUU;2Y_ z%qK{SUF&d#*a`#)Xan5;EAWP%PQSCv!d%e-@A?xZ&egl~oIRmXBD(Z>sh-k|4{Rsd zePD0~1QVAgK5p}F24FDAd~v`iM`-75u=jKcI%Sy1$~?_vh~7c{vX9=?Y&lEA z`qjRpTeCkLbo$U=AAYDP*H{U-!9NO+#Eik`SIpqzH^hA*Rl3a0hzo$^kEAjd4GDi_ zW1IN#xYOKGq?vK6dO1B7acHqc+hk0-=AxxLnrVu5O-K9(H)oy{DrPP`4f%J@^S&!u zhk2BKETsv9j+y$;EH$D2z@UpvjcA++WjjAV25eLvv$U2upX{zOsQL8@cQP^Ii}~zN z)~^k*$%KkBGcEJdF5Ga5jkp8mjL)nedonlT^Dx{s95++E-WkG`f4-*_tG!?tR${QC zVKeWrF!rKf<_i}Z3uWpY-*o4g`m@oah9U|oRrT~wQ7Nj+-@1H}ulY)fa1f6_5GBW! z42F$l2EYK4b6toBwC&hjK%NO|OU1JPlvBeZt|Xv0OR72E8F8;Z;bwlJGborGBD2>u zV7O~#)5gJw_5|BQtHF-u?wy$lKl|QYj1bTj9hasth7vLS$|OOfs}?6t8fO{ACRZX9 zwH_K*wkuAzul;m0w=L0^^ILDIwT^lcHJzq+GB+-Z4=BX`6SF`BK~U@WM`1Ses>81M zmw;y4xQRpNn7tZgdF41bO5TnW8|kl&=YdO&jH$ZDFp}bfdo?JV|L{IJc2*+pB1 zF8e?lesDfHN?go{Nh;I&%yvw=+LLgT@wr*h+!eTu&uiGrhLlUBef;oewk{n~n zLfdU$mq!()TH%~!Il{CNP=tE%%#E-*MWzWD8(8o!{gF%!aP;0RNk^8iJJqDaUUG?i z9O>IroH@O46W^)LD{c>bYHP;}eKRyPhH$lsPAO*~D5^&7WT10qtDTJXmSv`uY^4>W zLn*=#=-n#*lm&Oj?6S$(hlU<)us3&V|BR@pkwd8nZ|P}dKeHHqVo(u-EkKJ7lsl~i zd`ojeClboF{b}ynY`PD~`v7jz2hS)Cf^iwT<@Xj=n@ur)znW?CVY!5CRf~X0_fMcr z4IL<=uJ5+t$>ffLSVhdnl0sIm0SQcA`Rmjf7@|2WvRC%f!Ci=hMRuaW=oKaf;Ln z3>_(cD?zx5$2LbiBr~nN>pIKA;wINA)7buAA zwp0~$d`z}P14To-5sH&n%@Aa@qMR$S;MAv)z?w`$7YA~9eVLF@)HoAg-%{d!y=3rkiYC+1*+SJ)ugfQ?Z@XwbB*U)yn3YeBmMZDr%hco)a=u^ zT+>G^IYIkV$<{YbcOpy!en*29u!A82saLwzJ_)`X+*!*-BhhhEsNod-iEn`wLN1lWRuJ)&@hN_xAKvs&% zME)b_Gt}m0MZYbTvYxCVBt*6o#=l<$osgerAk9^BpHc97%;|XH6mZbh5^{FQ)OUcUaZr7is@? z)3bj7w~aL-Rzx1Szp1lEFAFKI>_6@=$yxz319FqPUsJ@?p3T)`>VDy+GcDe&=FivBWeYw9E!cx}*{**Q$5dgDKh zz_4TsNlOoTe3s2nEsx0m+-j)`{Mhw-ve7VVl(EsM4Q0Smq!3Fk$JZy%vQV`l_ zcBRjGjhUkymp%YLPHp;e`M|ehW7LxLi^|A1dEs&WH;}HcP4vmizfjI}lam2^($cLnIYFmoVn2hYfG;k8iXybH00et?abB;$O7Cq0djt>fv;Sr< zLg?jR1`pYQO{4p5)F91@xrp!1m< z%1L%-3+(JZ zL-NbyG5X25O7f|s7Q$E#!XQ0NI+x9^J^FdHtWbN%qoI%OPX@T^`hwS#&-Ka_c{3SnS)a6(bVE z6vwi0VrttQx$93;BkpReNI7vIN#@8nd@C${N3{u6en?}Pq7Ivjh@!bS z%m-1T>4A_8)nW@NDXZ+2*p~ddZ|l6DQti_r;Icz=9dggnQ??pvPXqhmNa&f@HJZAq zOtAX9P{F*>3%r?}UavW%L^QKQZ&dvm1Igc7an~<`CK&=qBR3fQ8pg!dg>9i0 zV+sjfw*LB{@Th$Pk*v)ahNyxHc8MIEilA2+89@*MYDR;|M=p*n2p4(%1$IaLETbu5 zg)c^KrhaMo`(Z^?+faU<<{d5H)3Yd|D*T9i_onB3Nxc z{WO=j%pmlPdLZgxmkFR$SvJWw#rYc5BCUK}qE)8H{03e$F`?|r6)A^_nVD{?M#^7u z>L_L(z8lAJ2AH7we0+2}p~&9tZQP`Ldj1D={u%a(mR_)UYzkQHU}ve#dN*oS7P{rT z0Xhkg@oYWamNyGfsZe#L-=Es$^5@#FLcz~?V^@oykh||R;l|nz`-8cl=oI~(jFK57 z4&A7ZUlXO02JSK;UE{ik+^}hFE+WX6YFUXHu^414$hrKA?et>vKM{I(1Nf=<=ICqX zM6So6k$mt;h2(i@iaY`TpTprWKk$RpsKRaD0Q9)=sU)iAV@ z-h127z#q$U4%p+>ADsVVZ!O76BGJnq$v9<7UcTo@k-ftoKw=(^{GR_S_!mm6kdMsJ zJ_3fx_5lAs0KhoZC0p8Vd>QrMAE*@|#mmn2?XITC9osbBDL-IZ9k z{_6BDc02LEk7ZJ($gLF&Bv@-!KQ*K*>KO0Su31nC0crf8fEZ7e6-V^L7=I)eF|Qgg zRc!wb)Fqe&98O-TVDc06el5(*5FAA$&=ab$)P9u_i6K+rHkjf9Gm~Hc-dZ)X?tawlXjo?J0{_TgE-c6nl zwU&C{mC4W7wazh6eIn0C?y}ntd)$`+~@;s zibh8j5hh$c^#%M3+UIRVlK$xt)Mdl4N04)6y`-~>(E`9w!x&@ZOhRFDBPJKhbZgw_ zF)AQu#)%jVj4fu&1#2YI%&fTS^{JQuuM5KseJuUVXmf=YXksk1n~YOcIIoQ zAsl~XilD?L*~BJ>rj3_$YE3-53Ni|bzxeF_zt<)EWB)L3wUm9gZ_Sxu%aAS9#H-*6ggI z+It|Rqf@qOJ+=ZCPBcjj{mgfmw$o%<29RYv6X3xZ!O_kjFX(FNX^E_P*ofvDOIXSH zG^3Q}SsZxp$VIVR;(1G(J~ZRkXDnfy(J}wBk_ejQB| z%8=5UtM7yqqPs0|oX-!f-Yrr~#9+BGOAv7uwqTp~r&oXa> z89Y{6vZ9{a75IAqHSrPUEX8zzFEk4ejV^0eAL}47aSgOChW08eJiERHO=K*N3g4*T zS;M;{(Fm+^3}u*5@UO8RJZmu<&juax6n1qW4pNccf-yNQj(D!r>BHna;tJk~5~~+` zQCcB7Y^C}3MA9h)SSq*rum@40Um>-od~(dbMa-K==+jB)9J*MMDt%ff&g?uZ>S)ru zhjHWfN-lx4DO_}`GJvS`9o-o0C1E@2?oD4-zNa43k#6AVvLn*BP~QLD!iUSk7RX(Ptw9d^<>_PYD+BT%KrAgsPqeVkW!v3gd*6(; zJI-|gID}k}E*8SQ0e+JtY!(*u^=L!a3o$fMF=fwDKAc2#D`0XhB09yRha~Qq&OycL zGv3Z8w(%yLAx|+c@L!v6A%eEDKJZXlgcy$ulLo2c#5l@NOKrYQldcHygek7U9dM7yEBkEXI!1Qts>1IvH6O+PFoaRe3!Wl`PqDC0Yl zFfUO+$^$tNfe25k79>&4o|iZ(^(UMRViQN|+5u21v!2DJ)P()YYk_E0Wj24iiKFYJ zkI&VAr-tB*f}A;(Z0JSP8ewrPi&Q}1KX>`~#ykJ0yI|NpF^GQwR6mmZ3`Nc02zdQT zy#9Ah=}&k%@-LQ;Ii7>}Io7+9jih&R;j=D(Q<0cbbWl|@q8GrE`}Ue0bIOithGoSc zCdbl_sZMGZ8#I|&@(stz-Pjzm*@g~8e+-W18VUdgL3{$(vvib|+GS>>;` zs_bvZtq<7lls@dV^vv)xg+N20XFZ`0Cq%2kO5ue7fySi(Iw^6F7(^&5(uWg5lPe-^ zNmIs1dDz$h#Js`Z7(tH#bEr4t{4;zRFj_(ipAx8T>ysa99JI`KdMXDj9*A&|Ff@} zA$As5YBtjRmX6#gQHEMD_|1Qpx#T!F`J#jb5JKt5tPGl8;l;;jh_pRHLL+Ps>()ye zy+tH))kf6cLNBN+d}oavQh`whSJbV$74Arm)-kG5LtZ;7$iC7qSiZo61Cw7BXib@0 zAx5x;kshHgJX!u1-~_&ALA+{9ZtopJJYHfKCV%&!e^X_|C%0hMRdyU)oc;^URF-?G zIU25`-xwJ`vbUh>`>uuNlu!-ECg#o38hyejj#Qh5L^2l8PWt!mQCHB|(Ob?#W!6WAD0ej{ z+p&D!JqDVqmjHm)x^gZ{$p{z$#G?0i<9iQP=tFaX=d<2BP1#8zvo1+I1tY15*&}p> ztuGAwG>Pm%#sp9{>Sm(}t$?gD8H!5yK2lc-Vx1|8LxANw+2z8s6T)Ocv_ZdVM(4Yd zafg_WlBV-Vr!J4YiBgR*{nmas2hSI)S&Tsy7%eIPEYIv;;5V=~??ZOu5v#u&zi?jM zAUk(QU{)q6Bb0A3PMo~uO(?O{rJQzK=Nk+{@|UD2^00M8v@)jlroRM3g@-H%0XdQY z(mlHg%8Z=`xH*m~U!J%Zyb=hukKLM762ABl-0FPeRs1jPmis91w=Wc^IfQ`Dl36qq zPDcLU$<{aZXC8aW#&;*J^tBO*%Ibg|<~?+v>DdD!&Xukh{=^_JXH*mIW5@bEWm0!A z9wAUJ?s#G{I#A9_ngRbW!{0)NBY3esbmM5m6NCEuMDPa&?IBU-IX8_snFqaQINN+d znZuxC!#aiE9sK;bQm~K-%BZXe*bO;0@r;>enCFc|0(YE%2fe5-FTnc5sT7K0nGgAp z_lwFSwT_4&U=HK@Nk@pDoJaqn?wL>dMY%Q|f_^N!#7s@eG-gMG^JKNDCbj=jF>$mP&w?%piaYVi*meD z;ZK0KQ2hvxg)kBHF<=ASjCE`8H4?$ZmQ$S9VED|Nx7=21>pI7@V0(k)X4K+IJN;A- z32cy89pg@LtQ*HbGt9ifq+8JHnXS^~bGOp4WczUX&W`doplW>DQ%)Zno>)4TQ{m>X zg5fw8@KW~U=*a=v@!Ebd&2VP0W!)5o}e5^*>5 zhxL9;#yo0Db)HizFAUx>-Lrag4U0jSB*yK)P|rpyNAC81^$C|9bRC!%U8H8dtfhoB zW=}<`6dts5t9^Ns@`+(&&T6Tlq7vjn{N@_3z7%g#?)PXOs z{Jn-NTmGl)ve}l;2@^xTB%rx?^);08O>>?rmRU`2^((^P??o|#&+CGXgRZ$}2~ei- zbK@&VX;bmKE*V$E39dZO?Guy=K_b|D~T(6N3)fiyl80K}lFZHTqz=h+>C&_uRr0&V6f zae$RL)w9?ag81@;qRp9g7Y0+yZCF?cicWbbandlZpxy@%5bUNK+lS3aTV8};3EtDa z1Z3BqDZWPxkMirUaQmU$#P0>tYwzirg#faDXc3H9i&9oyhT~M^!GN>kcqM#q22*;uqtZ;S$}4Lqo|XWlLvAoVVu3bB91 zmTe4?t&; z_yf53Dye42d4Rnp>Q4|a0{xRdRr}GBAUt1&nc45pR{r!^?w&@n#bP=smC!+S2NO%J z*dNno8~F--g7V?dhx!Xih-XcjoWNs{MwB1FHBGb0jbZHtb+f9fqvUfgdzCvDDTSk7 zJoeBIo|nS7Oz>=ns)+IOh>&jk&023ud0*p=$@>8%E@$#n1gzno{Z2bMTiLDj9C^YW zdSF6ilv@^XhqMl8OYxj{&}FjD;^wT~0lnPGsQu;6;w9!(NWUX&Wl1l4X(+`E4z66?beitISVxPF*F;JmZ%;durXEhvL~2@TTC9~koOn%r zlM3Jv3%c-RzQFbZ8Fk%7 zNz`yPL8obXKF7*i<8O$2Lk`3b^k3KvsRz7fp1{>PdocDqj??!|X>j1tr9p_ID9Sz* zYyHHT?Pg8iMFOvXxQ9;$X z*c$tWG7f_{#)D$yXK6qx?UaBuJg-MO;&IWFLUe)mJ=tnMK(Q`fZJUKFb`v>=LYbT^ z5hVuL$*bvzi>7eQSt(l8KKt>l8X1~H#8s3k=~T<9#N+tXWe5!Wf~Ot!s=movfF5oB zR46A^rjO^h71ohZ9jVN23MDog=!A^0d`8b}Ecs`f!iIn>L4JjnOU6DcgJXq_iq;Fs z+U04QNj~OnIyBA(aU1K#Kkr04#I>8))EV6nvRY%Jsa8Int(5|(kyzJsWzoufaW*V=e zr+J?e|2jiHe*Ow)d>iC`%?zlD$D<6G91PxN-HNz(vrrLG5lkRQ9tP%?+^o$P? z;33{ImqajXdy{HRQZ=yy>ge;g3d^#)=mGq%G|#iObXd>436grG;cuz6iY4HU*?(kv z?@qPs6=@he0jKGBR~s?d+Oa8^3#7%ixA`z;;q3NdSBgM-%Ie_q8wd2n?yfC)qyPFf zU?z~HR8=82Z}+#L|CnGrhCTDy1LtJ0p=bApe%+injwoBW#IL1Qn<%t4z+Mg8g|O)l zsk?6viE!mcMCxE~4+ok=e2;xd+61qvXm^BEp4ig)mk;G-U? z=WJKY!O9ND+Li~F60MD66PS_hmVgebpt^+A?4#+??Necs-*SB)cfM|ZYp(X_ zTmj+Ca#ZiP-%69(#Lf$zh)`I@P|UO*Up5yG7F<#hTM;ReB+P>U8i1#@^@yaWFECu{ zFY#r_Crd8nX9X-lUzK6|-*zW(+ROWutD9vBm^2=?f5H%$YnWYL8~wX2L(n1&+JZTs6|g38QDc-ro)xzV2F2!9Pzq`CC>7ONz+nS&d@JuL4zZT~tiA$d;b{ zXAhOc&|FyZ`#GN%3@B|b=8c1PYXc?guVV~rOZhYu*tyPT+PF(}z`MHzr946zgX!|& zB>}Hclsp{(_lQ+I4*)CyE$~5e9W*36F!|M?xy^2_&p6Q|h5r7rJwK4(0}VsAl9#X~ zi09*BaV5i<;=Ty66}LN z%O{i4vi!9X33m#DAxU~v@Rk^2f86a1#`}!dl-En-Lt%(HnUqyls+oxcaP&9IsK$Tk zg%pY}EoewYHGGV;x908K7K-dAa{m$PQ-2AYCn{a$ztlaR0|_%fFT#!4reM*8QGIVI zCJ3Y(gBUM^MRDA|`(^eV-J|5$3>6(OOGmMjJB0uJ&Gv<$ZpSs(>-dl5z>^WOS~Z;e zrvdF75cJ*rQ76H6_0TP2fyC9KCG;;znd^+j5j`fi`h17lOC>zt?L|M($<;>mOCb!q z4_l2Bm8Mx%-yEngkX*4Vl2yCl z1Q7?D=W=qWeJD@ra;^9fn>l=Z{ZP(vM_j2G6};w7!6MD&k^SdftrIFT_5@`iAHD?0 zSe^C_-=5C<-Kcj2t#TI!sNLj^@r|ksAr4tyessCTB76FXSMm^Od5E|`#0^i-1@Q=h z;e4_U!<}jq?A_++Uk(8M1Q*TJZQ*J=n!q_{eAu1Qyl#~Gg&Xq#jNivg$0Q~P01{mALDGeh8Y_uRlcS9t{Rb9`8o50kGQ<8Jy8*CKPj2mR@4Uwh@ zCvBmZj^4A37Bu?;=Z$LP2G+kZl~gtC8R&#ZP9}gt!bF!=hvmjuH%8Aj{uZg?I)~LGlzTv+?|k}*TA@(LMYC6kIF@mRv&kJa zL*nTZjXUkF-&!2Uf{oZi7$caYCD20H7swtC9sVrFwGI%~r*Sj&1cJT;*hWv>=}cyc z1wv7HmOcDYQorh||GZB(eig7f%guQtPW_J7yg?P`RITp8FFu*i{ zFbo9I83|rf7_7Dhgr~YMIcqClPFi%4JMUp)onh_;cN^XOQI9p){u1R$)LC|@{&(Xs zyhu@Ak8C0jpj%;3YgUPipWy^915{?KP%r3oQTxz;4bP)} zydIFMi+*2@_7P>#%91A`DgRsGmFJ0q*x_;}k2tbx+!&+{4yzQOBHHv*1r6^w0HOl+ z_-*Zgd`rmrw{7&}p0AeR(4@pU`@wHbhYIhDrsf^ZsMj0pcIyb?7W3qMxwfcLds=HC z@gtS0c#7R+0^&4>uIh`Uu{?l!7^W%>Qr>>@WS4vac<5Ap zJQv6)=TY(nzHBKpvzZ@4>3{XH2LHbfq2Fb+ZFH6X>iv>Cxf*snbyThWoS26i7&1`t zrwj#$%fqW&{*gP^AjB12V2dv~R-d3?kHdC)y1X7=QbS=)4}s>ijoNX-{I@GR92%*j z0-Ir7FRPnVZC`vZrQNCqw>1(855!2v_n<{F_rr+=tcC=^ER_j8KffX{$wv4ozJH5F z1l8CrKXeUZWT#?dZcn|sGpg?Ocpz662)N&1V^Zq(Rp8HLm54LFMX%f1u*oNre@$+^ z<6AFlmKZX|A6RJBQG=hXGe@&wVeAfAzEr5i3gd&LrqlJ!|30;(G;J0h*ij^$f!t|5 z0)GijX_VreO$gL11uHWe4%f?U?(tCSyDEhD%Mtu|YP74n%ua>k#HQYU`(d zuGOAcc}pPGbl-hV6}`WC+nkPiitip=ymNq*U^q}5AH7to>oSPm+4sl?dk-aA)qBpc z=%@(^{rwg$;r*G`z7%15LfiB(>_uV89j0q{Apa?9X8^yjK?X2CVAIwxEm4xCe&Xux z;uy~n`H&-_M^DexdWhVy9lfOC zz~9#vU!c*nNGg-XCaH_rLFP&1XrY<(=4wpSpFUfBczChliI^538(--04&Z5;iiq6P zZ{AyBcc^_@*P5JZGfgQQqtR(DKyU|vqrVVudJb>~pUk=B4-)lP`VB4lh6*u%p6ozn zF*#yU2Kxj-JRiM8jS4~uF<5o8BBh5`z06Jp3u_}Htf<+ZcP&Q)r&lI%`PLB(b2431 zZGX7IL_mPF%zfAG!suO6`C)6RIV(qrG1Q!lG1l471?kQQ-j|T|!J}X(>9+?!YorA6jE%f~(*kG(1}OQwaF> zVtQH{PV?NJpiE;nZsQ}J4ZQ>%c69UuKaujiP%HiU?gV?z>S*7C@s8Zf%{e15Qs^@Sid0pjtpe}+J}pw&1BZ2%6P|{ zR$cV`;4MU|=ZWV%awu&td73!dM4Be(sG}ndvFcu0AmLZjYR@CRn>R&YN!;ytWo>DP zq72QVHW~k`9A$!TAL|w-DH7<69+gjAvLkOr9rLkI;e`?%?p95dd%fmNTAaF=VHDdK zY#$Jy@P)q*CTy>k|7Jjf$;2Z(O=lA0pjH)7$v`*Wu^gJk7zow6{G{oTh^y@r#+w%N zvFgx5CJeqf5~5a0jY&y-NhOcT8G#F2UB{ST?2!aKq(1i<8;8rs*Zl=N`>i@>%C9E) zeOpxw9%yfYlAytcQ=BrwTYQJ+wxdLip*kiqlLjcLRdtMe%)wBhe#Mckp(QHBbESoe zXL4@-4&kMmJrdx<^b~7DF-+e+Wmyf+bqVDI;F^{uz?>;r4Tbt0xD0~7>4zS9*I8v^ z<#v?lY_>4EcTlFi%IJ3p*But9E&ZBhpv9BklZx954GTuwcWYdc!KVnb81zkqbIXIy zyny;e2v|O)6a__1Xy@KLAqK@TyRY5sD>Xsri_r3kWd^siNRj_}=Jau3X*`E7kQa@o zD5v3g7i?FjBd~8%OAe&v-vuw5EUJ>U9O+Mp=v@%aVgXI-xHOQL75VF*R2h&@fQ_f3Uef}R^lWAL|nj%u`( z)Pdm40(vPL&HwT^;>mE{ZJ8zCmgo6}*Y`8Qkn*+drorK?&h!?dhxLKN{_&A>>QEKi zE80ezvDM~0w{@H61X5U!hv;@tlJg!Z90*~}m7$VQ*ORJ8D^qz~5nat;I|XNrIPH&f zhW#oj!#H&w%nZF$Lr{OZ`9hACf}$ai2rMtd+*By6a5VNs&h#w4c?}K1rsDs9dc3Xy z@3T-Q>I$Af(blF=Cg_zl3Jz*xQtd3(uRsM&wCj5+H+pGCQi*Xmi2@0)*3q9Cx=yZO-?SUWc z{^IIIGi=9RHG}e$io=T%U`u=cqJhEVWYs~dGAGltOs-k?Q|pZ*>{^IKY7l5ldJ%0Dh$@ksnC;Gxz`y+tD3 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 DiDUp} literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512030002-Config.rsc b/MikroMaster/20260512/20260512030002-Config.rsc new file mode 100644 index 0000000..93e0210 --- /dev/null +++ b/MikroMaster/20260512/20260512030002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 03:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \n#\ + \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 Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 :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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="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 comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512030002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512030002-Diff-Config.rsc new file mode 100644 index 0000000..d7a1e3d --- /dev/null +++ b/MikroMaster/history/20260512/20260512030002-Diff-Config.rsc @@ -0,0 +1,20 @@ +946c946 +< \n:global CommitId \"main/635/33f8040a\";\r\ +--- +> \n:global CommitId \"main/633/2f6d4158\";\r\ +949c949 +< r: root, in 13:30:03 11.05.2026.\";\r\ +--- +> r: root, in 14:35:03 05.05.2026.\";\r\ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0