From 88f19ceba08d1832f006ae6fcd520a2d9b4af438 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 08:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 08:20:19. --- .../20260511/20260511082002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511082002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511082002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511082002-Binary.backup create mode 100644 MikroMaster/20260511/20260511082002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511082002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511082002-Binary.backup b/MikroMaster/20260511/20260511082002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0d2a42a11cbff7d0ce06306398f004fc2b3c040d GIT binary patch literal 302647 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

XOpCriV(pIVsonE+^~ma;{Q8EkbaBQ z%b_(0WDUVoc8czF!nAccsUq?WP$k}U4uX>i==g^ohqGAF7*73e=W!VEdG62E&3OJn z9F#N9Q9W7p;|<%kQ8)BM>7ht8m`y_#zo6V>#^U|M3kI^A zSv>DkJ~uy=Qxh`c;GSD1$LCv_;{NlS*LsMPBBagxrH$SSzlfY>g3IAnZd*gQv75&e zgHru})g9OsEqXO=r~L9_?L|>aW2I{gRBxVi_*nEw1EYq%qE8=4_M0mMX#eG!JY> z-bxLr$+8__OqO3ye1%?d5JUGX#5&R&R0k^5&l0w_NatS92a|E^cnWQnMTYyXewoK? zqB8MhNz=o2+vH!NXL3F2YkZoHt-%5%GD?+G^fP#m%V{9O1ZApAHoQnmjt5~~;`$-z zuD@%%+@4S>#pi1!P(R~mbjvf<+IuY;U+i2hf=#C|DU5Oi(SCJO1t7EB)|JOX0b9GdeBWtvXF-r*!fqQE5=D z@pCC!w4s#=KBnpIne)>;`tp5JqBBy*4`_H6xJ2<4FWF6teq_M2PcQCe>4zmrpQR7D zgYbkBr^=WPNB$SYQNFuqhgj#i;*Q3Hy^f}5lvd>{-I14l<0No<&_e*c&i0N10G}Ca zsu}%`As=($kQiQv(AG#->Rl}Z8#G&8kQ+9kyj2~nJ^x+K75q9by3^rPB7xRfw6s~R zf0mHf_nONMy8vC{oM31SGtcu`ZtbQq+K={=wh?-Zkcq*V8HunFMnK#QxBVG`RT%o+ zL*Sgvj0%9DzoKQ0N`ojcjFGq2&5&2c^-&EBzMj#h%gIo=3U4xs3^ME)g>xw|9C8;! z(H6edon>7#0syd2Q?|41rL>|^nxvIr+2qgRJ5{<(1S?B5(FZb-XgMN_>>A}ax<$-< z-DbXTP&_y6f*t_h_}`z6^%+NaI;_+R{PR>W#|Vr$n5oi_;Iy?CZ`$Pn;S z9rb+?dUoz5cr}c1j47+|ypSzP0CJLkOH=?kfM#iMJBZt<3@0?v&vAB4Ew=LCP(#09 zmU%~GL`=s%@^L&_AEGZ$7!_;xQW{Ge%=1VOLw9icXbGZ7|Ma~c;dx{cru0C#Mc2yT zma929GXr+a5P=Fft;3k*y&a24d_Ke;Nx`~ud;Z59#7ho>g>D>G)O2KYGN$kA_J*6{ z;T&8+9;dTUg7fdJ2&3eOYO}2V-YG{Bu`9vtcsGuWv&wHa;F((tM^vCuj9a(ug_$i^ zN%QWuP?sgc=x(C#QEQ*=qmA-QG?1&6OY2-U^y!v4TkxhXq4+J$MJ$qA24*`v4MFBU zD&PrR?{KQ>2QaHM%@5FbSwe?u`?@TC7Q4jI;1Ax4a_?)eiy3JaG2@eq3eqC1DOG^T zg+TY(pY3p7gi}_5K*2n?5%3R?@SP9_Vvh!@WY-YvwZQ~$`K9c(4}eqh-B?s%3JtL(+SYN; zTe3rCBBtu$l-uMPs4S{aWr|qNI8$g?+x6glNrCXL(|iWfVwQs(kZ?2ZHcWM8%`7Or z2`2ppLaHI1t0KDBih7PyBuR_yMxIpnXx!o3y>FBLEuMbgM_q_RsBQCN)B-BU_olNN z3UgDF*b7;XQi9awV^!6F{13e zg~e;cmXtOiX`$eL#B$6BA?h7f3lkvx5lQ@EjB(DUS z`=kCSPCM90hfBkpRGMwX^$vc&r~BgPxhkcoH-wo;2COJAF0vU7csYjVAYPr9Ugk!> zWbU#?dZnjk4v?GPR4~&CdSyeNqXqxQX~-f5pk#Z~XPYheA_&Cz3LXqIAm>k>L4+Nw zo#m#S9W5Z^os$^p*AZ@usWw09iq971Y--T?&~JVWU8F22VL1Rw^DHEg9Q!FkYfLIi zHbByzCi97-9fCp|L5($E(YX}4isN27C$2*xT3}ekv(u(j^>Wx#Y_=Nt`DT@xj90(Q zP0r`f439}S)m#xLYC#L2Zi^FT0JP3RvG<{N@ zZa(BFz8K1Cl0Q_LS%Cgie5|bp;E*208-9}>9CIaJ2D8$tIT8RBy)Me}X|zx$1yN-! zKgOoK7KCgImSd5v1}NL~E{!T+-3^(tS3nccWa4EM z$4um)w>v_r52Ohx^lN*V1sGgR6#XqMFn?EqkkmaEtNvDv?}eD$V2^V_Gu9HU5jB8N zFBOdIjaMoH(aDFENO8 z$nosIFfHjx6++YI_oF}~6r&bys;pWcMv?KOTm(G7fls{rly+y(5OrmO2$pLy1Z*1U!x`WZO`sbqfRKa~nxD7bKl#kG4eFxU)?6La%f zjJ7k}c)v8ksc&|w5BRg<{c=d&})^VCCkWuHA^CV^N~)(3;0 ziJ9hdQeoeA8skY>nGoqxQ<9CNy!*P@l)UKx5-4?wk|i)30B`|A0`tg6Uv>wp2Jq-* z@KQ(sfo?7*a8qJdmMR~i@iN0!On0s8tdc?yqEIw3_6&i+ly=;hH&;T8DK7X#p?G8H zgZ-3x`nqfYc$G(SY-k?1z9Kc2P1&%SB7>X_LG}~;ion-i8@H#&fcagxxtLLt)7gcl z4uK7s3d;b095=i7irEn#-+G626=NRFk;|0E)S@vSflBg7J-gw{m?W>hHqF3+Uv!QQ@UZOy{ zYHD3T4Jj~?7bRAb z#x_Sp=#&AsIZ}0HxMKo_4hF)PzbnQGa+5#~fS-jxftOTNDZl!FrO^I@)1?8_fhL=) zw^IFTjCDfXE-)tI;9x$hrVG^xIgfVzFQ-6*)5IPoX{j#-H|+%Tw2(^d%sjq*F+yoP zW>r6hPq{XeqqPInJU8WC@ezb&;PCE9-`J9)S{gWB(YuoWoS~bXlMJ44A;DU$fX_Pp zVC2~5_t?yV14Gp%u(D)n8t$~>OWIRTTFRqGsV2GonMJ`3KfWgSLL>uTd z;KC!_tg9;5V8+aU8v6O6c)BHOC&VkI!Z8_XArLRNGbsgJ5M%?pV>NxM-K9f#e2gFV zlo+^*o1_|=)!V@7*}Db!0|)0#;bRfVS4B16RDKz{pIJy(db4X<(AwAqHL~v=KqYxk z6Ue6h5X)r0azS{34l0*|jG4mBWL9&aR&T5t6aU5~yWAwetorCkiIFXs!N2a17Y=Y4 zZYv>lL$AuM;kO4g~P!)Cudd8Xf6ho?uP;6E#}90am%g))p3Eoa0F!3 z@}y50sAs)}N#)THWz`nhZZ%|f{hzruXS4xBmgK}k4*%rqWe2V8yOx|j3g!CC7k31d zvYO|^L~hvmelKa%=bw?0Qe;5%tA0H-JcPyu^4PBVc3MH>Kx9<)9_0+kg5w6XZuhC8 z`$~JPXYuwFo{0B0r8_}h} zoi6UEtV<7gAUFm*r#kU5g6;UU>6E6bIMa;r#i(>>ESgGVg|-I+6(h@@;Udje%O+4w zmW+99J3n-qpjH*4*qs1i_}<|nEIhm~Nkrr6+awpy7dz~*6vF}&1BbbTE!O=7TqQqRcE=CQ;Q_sE{ z1zONa(9QehjaUj&&bD*9qem^PV8fKvfRBJw6T(+`Sao{wUfr_{$tya;1D6a;GXiFV zb-M*w@$Cm~<`26X_)TqafD7XNF@nGP6*4z?JL15)Xj=^5g^uV`>BF5t%a7s4dhBXu zdE6CUob%$Tc%PR(5@foh3*_GD4w!028_$t@2_w*4`)1$Gvk+zpbLXsa|V+!0~n z06&I<$51XVq)r|FzwLk%LT3c?`hBO*lzqe{T^0N^olgK57XhfVoXUpuCbjC+K+eLR z2|2t2^vlO$%VEC2VuXrpV6wGE=fpl45h+ZW#*v~1t&)?Lxp;# zQ-3+fY6yhJOXj^RSMO=~h&|LC7@$(e0WFHoQY9_Sc}=c|aH8p-uWw}Lr~_EF#-;W4 z=0*7@C1w^DYF=alKwxjMCP4vDpoX``oWW0<8*~mal8yKa`#Ve$dkVl-y|mMi4heH* zbX06l%R&k*XMTR9p&OJn5Rw=teTE04*m7!`86@K8778T+6Dj zsF(FV&RoF9V+PNW+~e8xEvJEfxwPoe}b0$K&sBmns`$Ku{VzxH6~N{!0ziDkt8Z5qPhfO6!A+ z0IQBx%4*;^EF<^+<=y_pGcB3fcNetD?rzEBV4`liy7JKP5naI~+_$_{`-vcJG7eNd z)x-&gC-*3t4Y?UGR_-5I!thTaygbHPxpNz(m)8K%$Fr~=I*~~D9LcX3j|NTT9hFkO zQ%8}2=AY5hYHFzwIOC-{tmjUzp%wupeU+`f#l##dI^p*)_w_B;BImBA9wosZ$hG0| zE@gjv`@WoP{fOMvd8&LP;?4L^)Du(JKFAQs+!+nZTq)uTfj0J0l0-B-`G@K2OMivnl z3h7@#XEJpnZiOkC2eojiaxh{9dpji4wtn|Mc9&Ac(StL^ukN>6<#06zU9u_xTMsgM zw8{$!eJ^M4YbLWl`!(8j;FyNOeF!d~Va zXU{nIoApjYM{^aR$8^u5_0+t0#G9%c)k@}sHI)Y^J!&FlyMS=pT>WJ^5?RAiynfxw%`Xwo?s>=MN1jxP ztE0NVym$T52#Ca{CU5TSl*jzVuvB1Wg(l+i`7zNyDE5cN1Flh42_7vOVFI&O_Ne@EWi;sdCgu z`OoXe3!k1ti9JIomB$KS$qW+%>qaf2hd;WqRzw#*Dyl^fI>w{J+DTM$K^I|w#$ISD zzu{z=BxtLPF%JF!+BL~&PCj8p=T#KNZYr^P0}$IgVC%C=?KWewuZ9kQYdhhpSR@q) zho5<{9DArA;PI3X7@92V_)U~2%axvjl`CRm6@MCkF4fVc6$+&i;$K*f5!xONK1l_v zA(^Jd@+rmEgxfBu&A0*QHIVrXRcf^YPA9p8WMhg%*NdVLRi#HDQUV9?;mtCrisck~wDmA4QSv%s zNOc6OVN?~$+^Ki!A%SeE88Th>+8C|jro$EM5Oru}w5C*!*=S<_hO%t5Yo!)R~@R65c+?^i5#sDfkeHU~1cY0WUr)}6{`zqKV^NM>5sIS6$Bu!27LsUln zDmAj2U}0FIOoVU}B+F1jNBl3etiX*OC0NGQv<83~RWAJRM$MUHjXLgvWm>neeIy;n_zuVSZ;2@^=Lae%j{%_8&ZA!8$ zlE5wEK)zk_{-p**HO|G1(^9nLhfc*VQS0m^56BYZFCu-Co`;XEwk%iT<%max22}?S$&&s8oA$6g zY@{f_{X*@tCLXRk-zGNo_eh%vCyJzS+}O{JEK&?)hQ+=4e6e(`mUEjyXaAfiH)2nl zol#b%8m^%U19yzM@Dk|kr~rkAWF-jf|7jFD9(SPSyQ7qjO!0hGb==aAkxGekSli_x zzux;cj3t36h4#loeNC6yiX>7%;@Y^&5nZEcz0PTf<@OEz5Z&2>7?h2;uWQ3pD>yz@ z@m!Y{V;XH-wg%hb>jTMD5?k~%+$kx0n9KBO+0XOfy{kVh$Au0uOZQ!79j7Sa^Gwv@ecOZhFX3mZ0)>`!;K0nFr|i>@N%3`Wj>3U- zQZ5~&Xx1+_I|A;qqfG@VGKq&pndzYYY-K5b^5*%bbh^=RjadeoLMHzF3o|U?VyJRC_o7tDh{-)Yd6iOgJNi#i#%Oi^HuYb9@_e(_h zSiel6U_+aO^ERh3^Bax^y-Kvu(26YQ7EQy-ZvoLYCe~48WlM~%wI3x5nI?c?WIDFp zq3Zbdtk^9bl7BWwo+1Wy>oa-{7bgUL%70`fK>R&ps#s5}qvY3U6eFmkNKZiXaKj-& zH@IfARnFlZ-F2rtI_-cn7zV19g`1VKTbH3u;V>HG8o{Rs;(PBkxnXbH>n7 z%M^B+Y^KNnc-$L}N$`>)-KCmTlM@ou4A`Xc(*~|WlXsj57L9J30t9R$!9MNHV9oOb zmR#h!6=qHY`%*Ul3P+@!@hlH~?@Q>x`^7UdsGFfhh|XTH-UHk1G6S8vJU;xQ@s>$S z#@eo2Sgmia0(4_RV!;;X^y#|lel*LT?o7-VkAEP2Rz_3Oc*nhH)wd{~?o}0Ry0h26 zr=<`Xm7L=nn&Yd&wHheEwc%v6Ki&p~ioQEYVgcDc_>lja6{>k^DC?mlKso+i>||)G zHCe>1!W9A#sk8xq~s3Nz9$_KP(Qe!`U{ZMK0_E7s!VIAcA6|liA*kcDD2ri%u zJ45=-un4D&&S5){qoC4cu))X&NTFNPuU>CR4bLykQY#|QQEZ`zerX9ApF$}X(g@PX zvl(jz&DVb>-p1p~!B8^9Auz@XIP`$d^C~S_gkidn{x+SNG4S{#ziXv{aebZ+n$~^G znDhZ0whf;|*9qw_=s&5S6t~|}?I7<~8k<1HzMac!fueI`Z18Sfb(|CYYOUo3WWPeU1>q`}bGd-`}&DX;dGVIHB3lfL)c4c-2^ zdR#hyU@Z{(VBG3DD(2sxoL}7Nh*TksMeUlmu!#kuGPL-R%LP3NS`xlZ>l7x>WdlC7 zJWdcn!|xSS?NUtUgc&M>xvz^9(V-A6>#9F+i`(`MTK+J;(;gX_CTVH*ipnQm4&pI` zSvU1UNi!&_)LT#r71|s_ZuUUO6w=-6{G-af66t-IaieDN0298+hw1 z;0b9{b;R&`hx+L`!1fRjxJ6eF)?~}IN?7w%ZwgqmRxG0e(E4FvN&sk4s`iF-P|Loyo?aGj3c_)mw7)V@Kl*a z&2EeBui*&*5R`Fg&D`+6u!)npP=mIb9w|nP4yA%}08%Zp=l8&Zw+M{hj>Pq-HGuT; zzzjMzFYfH4h6L>Y?B|o6rA9Rik0}=|mo_cE?R>#uRjv&BuQ2$mY;CQW=5`h-{O+eGo|V@*yLHUa<3!2RFJs`N@w&f2 z;L;i>3Zu+LCz84TNNyL(L}9JH*f>QQNl%(P=Fh;HPJQ^c8fdnnBEi&wHt;ERVTkz2 z7iBaeC2x>e4Ky6`Y2?Q2LNW9jy}HybjYugO(m=}wGzWiUALWD+Ku|#`p^dS%a=Ega;<@vSJC~0Fhj~RX?I$AR;ZM?FY`y$zr zt&(uIDTxC5Ks)5SRj^SGeVaTEex>qc%mA4WY=K%xNJU1I37znuG9vTgQVs{7r@NO9 z!~Po}Fpd}=3kS*4)2BH1l4pl}D7lQytQ9&Kh_?eM_#n|+sf(p{%MmVIOoj?{SN<$s zeGkC@Ps_N^NT~Q(y}FSLB$ zl;1_+stK)YzKOnV)E{u^Nl)I_5l1BE4pxmwdG6!ldc)zmjaNw<1yjF>pP`X1dJL;V z=>FMu^)56|ytd>F#^@O?R;BDLv|M{t=LN>itaL|vIiHuqrkyb2ddD%U4{1K(h-bs8 z=54vsUpQupZIX8p;kj`EJK&l7f;~;&5Ka4eE!EUzPX#vOfP7dL8+nyj7~CP^o9WT&zI*tlp?nP1j27 z`K_BS<(-T*TQN^0vG-oHY)@8@hD?c)l@FtQ`uIs1;W{+vv*ggMEgcr=8vn2i$K}74 zcL@y+Lx0l7l8?CWJ1xvof6Hvr$VIH=+z23l;im=srwUZbSN?lD>_ zu$oDVNVD*7wh3Elnkv%A}swiUS+`tiF;4!Jw0 zm_^sw?g8!_UOa(0VA&2q1GAtQTS(c*hL`~qs_w5ljs^>cR7n9T)KzWYRee~ABo)eO zuN!=+BI*U6b&M|Wl^+`=m6o7Z^MXNuD^k@{Ji-kR*k1N32^#L)5#(cO>qQp4>{%;;N*#& z(?#*F=<_adOY`QR51$bFDeV7DN#)3d8(6y9T;4i&SBD&)9gwC3 zO$_;}M4aV&5zpq*VcVT32z*zSAi^A@{FreH#*Gv)lIn*PQq5yHBGcy}O~fV5`7iap zs5aKUTi~R;o8)0`szO%G(8)A04|%RMAt5fY$;Y=W<(v6Xg=S_FE zQ{B9yRyZHPcpOTy7%s=d!2Ely3vt_u(R7RKeiPbjm?VG$F~3lbq;u&v5}q6$;8Mje z^c%ema6L^?mRxY`8xqvH_3ec>-BVXDZ4MM9H)N6#_=J1rymNjEIaQ)A3s!xFj1Ya>MYI#2ZR)DrlkWl2DU(BkiAtGC zH`3c3nE%26AxSCc5I-pMIFd5R_#h0oD$MqGj-?FZlTe9vo1lWFNN>rTjKvX~tsI@F zU*G+MnY6Ql0Oy#^4%BZdz=Z3UJ$VqyDyT>Bj@{Baq-H(z&0wDyW}>evZqh*`>qfyx zd#cL;}htxTY|!4+QGO8ru^N zPTt|>H$*E?aELJt3+ISz-V&%+|9a#kIiIfkp_w?;^f_tx7y`qD&E`>F12OXpVqjaF z6y^iGwWO|qM1uRJnMf0UiF|0dkslR-K|YrUA1dNk^aN%IoRHU;=4o3Uouw*ve*tXrIuq2%a zUP$PRnO`eM=U#MO_0AIpmE5;F-HV^%j6Awx(RB@T7P^mGfAHVrN)|{yyYHu3*e`LL9m`8k~- z4xD9^%(0USb(%Bv8HT7^uG&>n$$D z_MnxLUd*Jaj}2p|KO6XT4D&XPE@Kvjh$aNsc>pRJ*uC?^?dmo4z*%YIF3WTHnTS+( zY==4SR6!0L}ZVJIdT->22;=wrc+XSU9l_r!9n^uVR+UO6Nmu_!h7p{CA?Y$da z$Q)jZA0PB|VTtRdMtlUJ~_T9&zASXvuFTPf*?jrowxx|OD{6fxB_I)A12wl>>4K1;v za%c>t0tZG#y|YMC!&G7lK4!wWgyW(!Ccc$&vbY&3wdxaRL}BIcMFdnddmSA}@1zAk zN}hR4!3BnP!cVHnxg}+ z8e5!DR&*I_DX!Pi66fg*_z^GD@|@0GhWk1E;976{yNue2^q1jdKdfIBv_^qk?8qn0 zllP}6(n=v=0S~UPt=a~sd&MVi4wik7J`*$c)EX^}F;}i6$ZOv~j2|(D57RWOn_BBvF!$PpzX^`GfuH*>1lUCh^9Jwyd9j*}RbS6i7?*X1qxFD!Cvo zbr3nXa#nU0M8F1^`U?=n3P2-vU1&Nb3ma`CnNMg|-qd{08a2tv;?+qfMWX$t<=SR9 z(yv?*Koj+sE(E9O?->2Sfl~zj;p(USNunfCH}YLuXPj#lRXkbMas$vCCX>mHRC?sI z1D7|%4O{n`Wx8@A120A?(#hdO>siL91~lJ&u*|d4GKNHCl_5ip-HAjb15$h-*lbQRy-f%?K$#M#hn9GqppB{tY*`EWe5cG7JCldqy?2M(sKP&Be!TH|&9ee+IWIyzMlZX(0yD_YA? z8IY~bFqM&D$m5<`j?lBMb(rYn9V2yhdkJ_Bcx{P9gpYLM4FCKv8I~aS#ndAq){-ca zR{w$LD2(FJ5>M=uQy$L~N5hukVIv5~qO=XRnb^+fX{%81lhbu23i>@__&@MKuH68V zL;GJt=;0w_(IA(@9GudHG;lvH_SFe()k(BpPo^Qf3ax&DUXlK)0&|AKypjhbQN^;~ z9E3Up^PPQ}?dWD{QgkX&UjIM{Wkzy?t`?;3sPw`6Qvyc7R(?*AE9cM8F|02{Ls|P9 z%gZ>R6TlKV%Ws`}zxI7TFdVwJ1zJDJ$~alBCG*@1F&0=PCSN@uS)j=hX&j!1WSkBv z*Rlu!{LzuJx`a0vRbgWdpQ?a!yl%#wD%IUQlcQKJbaG2xk)?mW*0fP%0L-Kwnj$V} z#6sL{ViLjQ9$_wcrL5Fz2wk2E9t5z_w>Vi zEHwuD1+v#lRTS1ys^~Jmpza)#dJ3K=o-mTMLjw6Z`M$q1Gviy4!Vk8 zDOhiFB{Axu&Hoo(6ZC$>8%XXRc4_#5d0Ld_Q7?CaiBPPBkNLEl3iglRzX=L`VfF$l zBiHzlWLIn|nK42gizhNJ@qYz>HSiAIzX>T<*Dr$&BQtb3xzb<1{S<-mOCJi8fnxt+ z88Ulix(GGsLkpKB;1>qzrUh+duFt1v2R)n$)kLDN8XeMopZ$RRDZ(af=~WU~s6sJ1 zOQ{odh~R6sY|D89)A!66F&;bJl27pU#XN*m2tT{Hlf1r?z8>AL_wIhSvzP!2XI(SNF+G2G=osvB;(2 zN+4G^%}tXf4lw@&*cRD4?4OIkff{}*Hb!m^(0CH-ulv$%O_$Sv_YQelJ(SsSQp!C( zq46An++^d>>J19cXB%yiW@0eabsdT0#fYL2;c?iQI@GEh5m3m2gN1e{hun^dh1P3K zs$gB+xmhE4Il)-U+II+C{zW#*=klt30fS`uv5}e{WCpAk0Qu@-TI469AroVY``tuF zzP1tfODwb5xKCFh37XjmO8{h6a!2b3m3f)e=&(uxB;cg~f=`lM- zAm2Ihrc2Lb`q34S1)Z^!j)5`?eNh|Rww6!vWjhFAB?9TEkQ)KLi8qbdyD@E((h?7U z+#O1;{9cNSrV`07YE;n@AokMV)f;|_n#H}k)w9UFnfO;d^v^M3zvAC=!u~vlCadME z{wKMc>eoY*V_EMz(LFop@qaY3#oHZ|H(&Qr;x;VQ0!mGZgxd_&(CvBr&^zzNKugH_ zbFU!^pvr^R=d$$%yV|%SUm{br6ItL7Jv_j;EB2L0!xJ|3O^FhgCJ(<9m@G9D&S$jx z49thXXiKo3jI!FbQCR*u3$<-kcep>Ni3Y_qHu3Ayh=Er;BDHo{3Gqt;A%E?I%9!(; zTS=dx@U<^j=tCs7vlyM=A_(Z^?=BWNH{SvVh^RrJ_+gjF{vQ=mId^vO1*Tr@Rbn5a8XBdf1mtlC$4Vj}{)#6KAcFvx z7EsnPBU)QHecL6ZMt0*VLgwWOyYG4^Pw1xu-1m&)Pbe%)KGa3)llheG#&5)*J7Ve- z@(r0c#dp+Qd!%!m@z?Han)N@-Z!c)vQyFKhQNv*$|z3)kH)F5RKrFnHxJ9tTiZ%`}O- ztzupz6&I!yZUZ&M|#(_-~{F#hYkavHO} z#crdU%gz|Dd!8Sz5LZ8`DE{D?-+f0uv)1zpwlBBj^VE(#ZNeRdytc6AXaBNM;4m$=6pn={1q#27kvaR%|yUm%4t_wul`n)2KxYc4ULy~s=o8AM5FJ=om2#U zy|dTZIlaAlWYa7s(}W;_+~AW?4PlwafP=YDx_PsGYpPrV>qlSR#VYC0Wq{ zYH#7OK81G3dVF$2neYt*hat^Dd3cYRk3k!YF#9dG7>ihu08)wK1!pSQT#dyNoaQBQ z=g{kbOUj67A|&5*o;Jo<7EA36_bhreakNPX3tzSYtoOh@`(dgF4fs7J?%OV_mED7x zvPSbEz?Ofp{_UxCb7ggsz~J)#NxF_bLRtAg_p-PyBHrs`_!epZIOTgZ7@2eQ8hC|W zcmlJ4PvhOMvupKGC+mLLlgAYgY^Hwo)bCUACG3=li-E^1NKrUi=CFC`ax+*t!bQ4R zUxMbPpCN2iUFcGb5R7B-t3d{%F6QM8QaM^`kY%>X-|-+65iv&dC`a@X+M{qCa!;d& z^xUyV&@)rc{$a!*Xs}r(us*?~+tI3jL^70%o7gYhw@>HSbg22@a#ZyekA2WS(&W+D zr_r_37YP77Hc%J^qjB&T^0Ij@xI%BPm|sSZb*zdyDS2V%<=fBtX1Wu!r=FYZ?{y_w z{a!rDcVlRRk0+&m+Ych%6wYk)A#vmohX{+X?GcYu6N0*dlKUVbCz_)ifgUD`9ua+^ z3{mI$A2S0sPo9mvrz`L~ziY+SdCW)AdUk5o;^X!<$ya4bzgJp>FZD*|ePjfz6~Wh^ zHCq1xSM)gkJZg+cEz@Nf_T#d`bVMPr_UgmKn$+>8BDd{Mm>E7&U~-Cw=d$G0g?urc zj{6au54=y?clDyjn5BM!G&i@&A_JmDLq04Qs46a+WRoZXp z{1??wgpXI1yrn-=bW>5Ic#^7=;tvt|%#P|C+Te2@N@S5CF|vgC(Fcm<&ra#ls@izS zFH_+`<0u{2Kh44dxtX$vaI1g-%JmJ?CMR?*bw?F6gz}ttIOC?XZz53F7=_u^|4&R< z`67lM4WeDcBoW;zX1WgpIQR)_e}izfjB*2KV1iujRf;+%Pof-O4^r@!{amgXs!pkh zT_ylFdWPQx#a1^%co_GfJ6ovvY1Nc53ct4Mr9pNc%?d;H9cyZ`$*_Mb`9+d6WN*4J zxD{(S$6O4U21c^c;Glc4V8D)Wc$ZK>8`>a*f}&=H#dWVrHSFTI9H^?!qEO`o{)f`1 z?8Ugq&xw2k4*GGtGq2EQVC<-P{JH&z`;F}gwYngXn{!{)sFiLS4DYd@B?A-CzO8GI zvu$!)LKO_UH6r{7lHw=6fiuA?YRIbT)QgWRz5X6%{g>d6E&ks15UzocR}4|Q zL#{__xuDu{06l|>C*swQM@aip^@{C$uZu|us(wBmLa`f`Aw=lFz#mV-)pO{dQwL^? z^gePs(JlEpvFW%f4RKHtYn2h;!nM#+Q$lMp#}~v4yR^PM8ePN&1RDJ~r)El2IK6iC z#YksyIZUwq#%iEuO4SpZmUEh;CyM(<+PET3e}SPn*(`YRx`f(D6{;;E|JW@0&Wz|z zP;OvhbX}R);Yqj7Z1U7XQF5sB2?BQ>Q-AQdlh1GZ@ds7vfJ&wa+mZmu^#|XW&Q!asN@#NcS<{Lg+WwYZjUXDYmmFZrA3#%dM zREd39v@Be`YQ=WpJY9d#X^klJw;Hl6?o7wF!-SA8NqFe zcgORY>?sp^re27$T>r~;j*{DRnj+Q8a=!X+kwZ1sOZyTEuDpXS9{?CUeFdChsTbjT zUATh2Nw6xuP<<_UGj}CPaRNygXd#Y}A>*2cvYVDD)?;Jc(HDM>g5K)HzHdp>Be}D2C)9wE` z9Ju{I(EpnuhFC;fHG;+7le zH`h}?go1%T{q&cuPGUx4*p8Q_a=oUw&(AF7rV_bC>!XO1-FI$j5DtQLMUiJ8cHD24 z1E_f)em+47dbV+&q!-)bx>onxfO>Q){gzz8@7eLQUgT1iG*4}bxyM{kwBT(!ijrrx z!MH{?*xkMF6!Sh^1b<~vdQp}n)7m#lT~eXAa9R`;>o_PYk#I-3>tF*(SsLwR{_(Z~2!0v1!ubT^ z^FxrioI9EuQLqe9r~!|Y43+qJ-o$e}%0~@biP)Z);8fod0}m*Gd}?>v7#!)=qofq2!&Q!DnvdsB4qd1@@Eg#2^Ehd4Tl71!=#w?k4NV8gNW-0yvdPr z47UNQ9-D_{@ff8LU6Hz%D^1PtRyw_T2gX!p&&sox7sZ6Zwmn$xprdzF6=O+Fg99cZ zhYJSJc#rRg1}#FO12s@xjk}?6bH8z}3Hh*aCSs114_FtrY)^&U?t6Q%8l{zu>^ zLP@cU&KR+vC%D2S9AU=12v+8*X!$9L*eTYG<$j~_k{sjx{Gn6c{Y9qv$U=mSNYit- zg(7Ju_p=_iQ2`z6_Pk6+`rCO@CT{l2ZV?O`ea6F9p>XTh$5{c0Mknca>nv^Yd9T7Q z#YW#T=!MOoO#Fa1SD<+Bdjb{H1)SaU?F7(U;SUP?FC)+-x+v$qKyfQ>`(W*cq1Ck{ za5I8v#V?mF0*Wixo)Oh92c7-Jq$rWh`+ef!>sc7cU(T#A&I!?fm&=1WEPBovg9}>f-@i&9}p4Q6&^dX zQp;yQ1iis0I4b+arQf3jU!@QQ{qmIoq_$8>+LS>IPMb$GK&l!MA4x_H4Z4p?*3f%^ zR!&>N?nBfe94A5nqxHg1P1*sn-Ux&f-+Wj;0;dN{%9f2~r)tJO)T+F<6ICRPmwIq} zcM3=#4Kr2fDl<&$cm+o3e5_2n^b=f$7Q0z&VAA<8aIur|dwknn_-<_fePD`yl^Rxb z8-+V5cNsE0$M2^H|RMScf!1CgJ9LIJuaJ&Hu*r)cC24n+E{sl0P&-3woL5IYpZq((G^*2#KvBgxE4hX*XsGu?Cjn zqBI1>FCj~$Y;0RsMN%A7!2*1OLbArw@?3;zEqbY1j#)+(}+T|QcmpbSf8tM zNvFm6VN^5=%DR!ck^#broED+zfqxL=^W5X|W=&v<=*cg6H;JA6G*PDahPLYw|K%xG zABu567H&8e2^$@=`O_lx%1@Q^+P=Vfrx&mk-C0c?=x2jN>6UZ3^1BA1*3=??3O|6( zrnJ~qI+^(YEV_qoY$LqYBTg^rM0XPlGaw`j*;u%3;!?dg!D=onfA3+Ayyj3YraZZv zx`fHT(Xuip!V^P?FE)T-!;GQRFVRku*D@`cGV$8P6`J{}HiE>)Rm&?h^ZFJng65j4w0$fz^@Rq56n4eLo#@wF}GDLPXB_GyRIruQDFO41pOk;Vwt&fPS zXi=(95U6-0>N-h$**1&f$h~*nh5baA(@x&3Dlh2M(^UwK>iV3Yn{Pb#P3xYD6A=%y z~M?xLd zyG`S18zk@Ah_q?)mtnLHZs1LaxYPK}hy71>VhrZwG%*nA?fMEpL+kCCl8GXZ}T5X%+b_;fA4YB_{G)%VDJ?SM-4OnYfB};r&on6nGL&ecR|x zd6OHSj0_>N7OjBc@-vQngh9yj^^6}Cm!M{8ddS>A&G$PR$)~)-y26J*i5=0o%dd2q*sQa5_JJg!Vqa3S;{=43-V*g---9AQ1JR z5CbXzMb~2xJ~INxOJHH_)!CJLzQ#RhX*UGUBK_OqT0u}K(_>bt3rn(Y`3Lgl3 zQ(gh#1#2X5Zz;zIxB5EK1hAe=>8r@_e_SZrj6Lt`D)DjRY~M*vtC} zde}|JsE}EJiD*)n&F>UUeeiG<;NT#>pSGbk)rahP$wiqZb(EdW{?&x!%0JeMl!3m= zC?Hm$M2pnq3RhHns{U^9Te zxn;cv+*7pTZnOg9s{LlvYSrNbiV1<6X&Ud88gL-syF4P~o@#{tMqF#S=-+v8Ul~sM zWYWHphRIFeyQFqN;l*q;jQvcX^o-H7=W5W`BYR3_Ubxu)RH%wYJRf`%Xkf>BccPA( zX{!u5a}ZqsT|{$rnTh}=n+r-%!yv#aFJUfvx>Ht%rk&!^79-z*k!Xm?RVjqa-bw$w zLbPy%(U`)TJDH(EJ;D`P+?GNRZ&X`H+Llh994#M!w%apxO9Rh0!&>b`VbZI7l*cryX=GL51;3Mc@~`o}m%~ zBU`gZf-#&RD<1j~OC&Mnb$e}9{ftNwwPX0*8&0V5LS&*&CB#|5KaQ*5B2PeLOMA+G zQwYP(MVbARNw2;FWXx%RxK{L_OK|>@4Z#o&@c%MKD$A4I1RmuQd8gq6w|l`6fqW`n z8Lg7q&a_epf01(vWnS-R0#2S8`cn=J=DX`*bWjEgU^|%AwhMq*;E*|fnMpKWFYe>O z?yH$wnO5mDX!4ONydNa-L6k5X1fidTyvwKCO?pf|{{puf#%lXL`^YxUJ8aMep1t&! zP$LLN?m~);|I!=N|0Nc*iPXr7)3y9KZ)mEJ_+5dUjRBzzy<$mf6Ah>uMc>`%+EJ$8 zK8oy5hwsj}PnkLv0tNK^LCK3 za@R`7Ym8Fl(TmYx+l`DqW_Rm|8Jh;aBR_r-up1xoQFDFWXf;)RtBzvGOCD@F-up-$4STZoIWOz(rka zrto%!f8&-AuV0jMdr@A(|0dq>{AMi8q^?>NQiVXm#a#{~ttl&&71x(`Y;8&&GB){d zs7!bryFVZckNg3LmDBN(i;OrV|CVIv+>40y&W}`x0w_m*Am1GdRzk={$2zgsR(?}) z{^gCPtDp&UQ_e;06LdmPsMke?G2pz@! zGsJpBm>{(`$cgFOUh)=KrP!*Ob-zNEVx*5{_g%;B5u2K_zMc@??X@GCR{Cz{CsmOR zO<$@9<)4GD6B?^1H$vUTl_x4iwKY`$lFPST-IHad*M4%8*nQC2Zdk3>8Vzg-DB%Fu zm5WCKK6z}EuP|`eTEd`*9l-Y)s$T!Ji5bCo=!!zbr%aB=X2+kadB%%Mr-?HG$Xqm^IYM!}v zEzN@Sac!7(!t5KUnOz9^<}6Gi>_x|%Fz(V2N2lXUVIgV(QvzSJ^EdKfUG05_D)d|y z)1!98M1AtLydOZhZ_s-QyL_lgUy@w9eGP1Yp=p3VK9)Q1v6TF1h3T5;t}+l(>m3DT zKm*ih7B2u(=^&bY=uUc7l2Nfvk?tCTK-K7cHrq4i_CN9-fq55e1R@yOp`~3ArK!vx z+rWe}4L6Ix_Pq#&_g`V?H|3b)=Z88CaVO=)G-h>W&+k}F$?@sGCsjACRrbgskeWp~ zH%3)N%b)QUmy6M<5N^ML4vt=ZCmGHG3k)am0CNZG(fFJi^v~-udAE>AF4Zg&D}7Fs z+o*ZAG`H`$F%#zYA2GE@R>|$lmF3Ov;#Qg}B(e=1ax3g-Hk@5fznp(gnO3?M< z-(TS-8-0)oZQP9VSBg65L@}~JecZ}i3+F>Abc7yjbLMPnaJAX@zgA)eOl>uxf2|mF zT_zQ~2s&$@$t|x&QURu7P-ud*rx<7ylwwfy0kYs^|5>Y+_Ntws@K3X8sZgxKaqkJ4 zZJ)P6CftsKFuRh_tdBE}<5lRwpp|_HD>|F7hT@N|Nsn@KawTe4G$r7+=@~y_QxQcL zB^SfrW}LS7cPT#}*c?#jc0~9A3Po;?i}c8a(F7WT+D0X)-M&wy!rdB;+oC zPG`%^z0oi&QtPLu3FS1*ta22P=;x%1gAcntv5m|8aq&p|4*QOG@A9R=Eki*cX71RE zxcX{0)Nz1uaz>L9R9!~;%ZIsV`Hb2X&L-v2dz4(dKS2y>*KI5s!&4%D-~8rXmFzR> zX$3ERon5lqfhGl}cChS+g4zUR#xd!uv4%^ZzAr_VMN$h?SxC=y!len)j&?# z^Go&6YU*H&?lKJ;KEV~mk6ZuD0ratz;dsz25l#tch;qt#V>vgPgd<9$P$DqIAGtiWvI0!?s{-dw|5x+mIEDh`(x_6xB@kQwc- zc~m|(w>1<<-Q)R1SKF3jO3AeYA5xGUDN>qOIK`{H=NFLQ9b^38lP?%RsfU$y1%=eWOIVO8LMHOcvFAW)U2Q|P#)QG z>EuSP4lTmK*F0*g_2^H4UVB0t@AWOdAPmf%rjf}-DB9z0L5&zYp1@hU&yS^`!Bj#3 zL`n1nXS$2Pm=c|4G&O8W`ZW9=CZ%RXV#goXk_Th86@sn&ZxLd~vT;Wo9}>75i<)SK zWq;6(>2HM6Y7#?>vo@W8gWYOP$Emzc(Xzz~VyA|S=AFHjwjdRQxncCvGN$5(4f3pS zsB7~+qFJwVGQL>uOvNjT`^ny7nl0;SJDnWVl*+oy6}P>~Pl`G~#5$NrUP^@JyO(T5 z5+DMpyE9F~up;^yb&X&syiioYj?7HQY8(}jTDwTSFrzXkW11y%CG&(^q=5I#;VzYb8^-ivZRBmy?#lY zLXzj9U6Dc-*71cs)6VDd_PJ3<)7I@pP+Pz`{lQl4fi+$~XEc2e@@(FrQM)7IFqW|Y zJR)AJ0%MC{DHZ3d^&fT@owx)FpNuqdTjwY+E+T&|`uW`U3L*hwgxJU*pW>Z>a3@dl zgGXa?9po)UpQniI>H2k^a%BO11|hDYgH#o*_wLe%@6y*ho9|LdIIe1#x3G=>pBPzK zSZyZ#Ce27ml+7^nEY>+(`kPTPNkgA0t}yR$KI^oViluee1cIz7N<(%yP%?hA*vHMY?5};`Nhv zDNS2PIc17*C?~rzk;sWD=n3Wplsi#*vek5m?iHm;tMZXPSz%%cWH$oQTF)g+Qj=g| z2iHsa?F22JFR9KK2IZQs`Vh}gNW--rKAbf z7I972J-+u>WtWNReeCiZ{nFARkS-*sloh=~2aL-Z=5IV$W@06W$4UD?2k3}h=Ud$) zY9mfbTQMy`Ligz?Aah>5lV@IOnN};91{-|&VvRoJkoL;n47F7$j44stmJBw@ov z=X+hHC?F9$>ziM;w?Hd}Syy<`yFm71)6?c6NUcKxSKQ%*t48BZGl;oMe`4y~_%X+- zoBIiO$4O4gK@CXk>@)Di7BKf1eqzF>3kJA_-i=Dl!i;>VhYLrE~U=N?-#~?xAj#-j_O%s|3(d@gG$gj@Q5H<#={^DZiijztK^? zM#+txvu%R^dVE`*mZ1J+RiVj!L=wzcps%2p4DC$~;lA$43=r~neHwSZ{5t;Ra;e|K zf;pjw3(?s~<9L+ZJ2U?8RS+lLx8f8zgnX?@W+}}#Gv(0}Efc09KbdjZzC6!lO~8!a z>*zmX=-UVI$Aj4wF**A$8tRq(oVPtbKVVg#3}9)AKsndS?$6V7(z zGU7m>r-YmR-PZ&YCg5Yy#+OvIDl*Zc8*zHX{_r{7nVzVyJAM%d!Zm81`!T+iNax0x z*i0|qq{<^9C9)`6in3V64xo~=7n?0G`{5(*O3o8iS}yg|jT~~I;;$AokM!0ES*}1k zn6J9ddgfU#iM{D&#}&09?+)_WZ}A06F^Lp=j3X09+TaI2Qujcfg3LDuM? zPj0C5S69V-O1r{nK}(q3x)(^C(!WCD#L-@C7_$o{bkNbxVGf7Z$m+h9yo<}98Oi|@ z9wOGMp!6{eprtHim4FD}NbW}Hld?`CDsSiEgKj1gC@dhWK|iQ=2~B+AU@L>3%X*`O z8bO-M)e+Lp5{D^ArG3TI1rDe9lh;dCnH>dZS_}EX*RvOO;zP=8nFQgL%KIH|$>hh# z4S-KT_9hbNHO#)3N$r?;x|~GTo&T|U6Bnn)6rNU$>VT9Y2GW_Cu9uXk>T{`*f9j;2 zuEh!HcR1I!v+61iGKIJ8v>1BPQ12z1>1M~P{|?KgLTqE``B>@l+%ybtdC&E6@N}yB zcaDBS^k@C-{*O1AMrkYp>L=0~?1i7so?5xHV+ThISDmP7n}f_c%1j zl-h0%P}jI&)I>iW-&%Dzyzt%Oi`Z~CQs^4>Y97@b_&A&D?R;CfnGbbSn*Ev z7Z;g|#Ly8!4W@!QHQYHXsaxuCq{L#Ca}{_T@GfHuyOl|WR`(nHO-Q2nC4I}L(|Rep6WgnZBfxi?v*vh7+Y(_ zWL**t4YJNQ-(Lt)aT3F-7&~Wy9hE<>ShBy|&m>;MaPOAC21O!erSr~?Wmc*UXHD;P zcQ|a%n(&LJf@Fa|RRibY>SWT4 z7{k9%8xu(oHS8i5W#XQxjYG)#2!Oknudlya3>xWtbZ9y#tZMN8nliNpivA?j^B zUIk1Zj92>>^<@8msEa{lY<-kk;D}#y97i4i&_~al?QY$8qG~U3#*^C&-#PomgPpFm zs+JIA)XoFtD&ef+hW){I<<`!@6lf(;(|VeZH34BHIv#&+&r(_cCpX<+`~a?xv}(R2 zY(d`E*XPPvKm=|y5NIAlcStx_#8NirX{V#kYaWTh~}lo+0oqju#v^j z@TrVzE+ZsV`jYQZWu+8t3|JD>%81*``1OaE_uD!_yNsPEObyngIjMF|!%9!`7w&X? zy*+$~Ei>nliovF(i#-#fFi0N~O`6OwF=FHK^!1<-F2s3F2hvPNPk=vs1;u}J^zuK( zF-CvR+i-R%7M1*lnQ3i$3mh%Qx(%;971q_Q$WXVrrf(TRw^O>CW<;t_JfZsUbIZz(R)DH-k3*aC$BZ;!VqBazeXn zPb$OTUUzc3pVLeEs)tFUNl&M>3p)||7K1|=rZf6Ap?oM`wv-*U355m=VC{eLBzdKl zJzo(KsV-vK#MY5}Vu8P`W}UycClNx3_}BK7y#onw^-)Tv`x6<-Cl|3g z0FCfK@^&!Ng@^x}?Ph@K>u|A%EKqu!{Om8k2Uk%6?KkHS8xO1zu6xHc`3R)eFKO4>uEe39ul3aF-I^Y(X@E zjO>q~f;3|0d>cB+(*!9}OR;~1rK-pLZd${aSp!5_iytD}HmA}FU?+RKo|)TC;9B0G zwJgH#54z)wMII6$ksQp2@WU=j7#;%2){{)(@-Dh7=>o0#Y^BH6Ex)1(7Zl3ka}HG< zry)YGot0*^9Y{{>&FiJ@NRq)<4#P(AQr5K2RH#9H#{(JTcO;dc>QCk2=jqa~+KSV>;ev@!#E#AC!bWYGB z%V;-1I#UOx?%0yFdte8cT^ML~kU$M(gYJLr3+~Rb?fCzUYARL!90glrDUK@vu?BM0 zO4VSETrj{ih<#%!4d_DFgUc_QO+->?xA16cu1q!5MJBP=oxf6~0BSCE>50J#nmo>{ zD!h)w?Y5?w36`!)MP~|_*tcMlEJ`A`PB&EY1W43T0)_Ui_huV~a*Qi<^PSxBF!fR6UXR0Wsl(a^EW}=j>j+JT#LBw!GG1JfjNzooq!!Drw?+BKe1l8Q;SuraxJ{E z1=~m3RQQ8D!Je&U#`Z{vrLnid=SH&JxsuWSh7`F?#}i*yZ9H^~j+lq8e4;$5Yo+o| z4K;5Lqn)vBSP^1ZRp!fW6`(r2;ab?6dAaYCCUQ!r%@#p)g3NEMWf>^1uEei-qgj*E zSz8ZdLOGqA6!-p+*)*y(!{!AAQxSM89>{{bRn0-sZ$x>0@!}ZdmMn%1Ytg zioe)coJF36JC$GM?_aC>UzNG}QjHvp7wcC- zSQ#nJz+hA zip0Zmx-jep*4}^uC~~taiWno^H15gn_LiV(sdD6!P?m*#V&OjIL+O%k$%NR*#iCwR z%qu^Nf8W#x7xVPgVvfO4Z|Wndkjk?b%}^uY*UdWlRkr6AIJ{}%SNG$F;dc!@ie^$b zQCZ^Xanz9RNtF096s2+ZKr@#LS+@)I@u0uyU6ONM6a5Cxe48)LPE>Y^>F0912TtnL z7Ihi*FO->H9;K4u3I(}*dBC=YHRZg2Tka8pvhX26B-j$3a3kS2a_lb2Bs7kEPDN?( z6Ef~2ZzuJ*Rcc}&92Rx%5SO_mxswbn-H>tTQ1#ttCX_6q8jCh_tCA5%^A&3YBg~7L1??Z)p=L8A(mNcm z*-;{hQuX_Ka)}SFKa^ic>Kzfp0Ag&e6?+C7{-hy8blyByl>R%LlyQ7=sH~s#jgIBf zma5e$wOm0rYMVG&-&wO$9%b$ATPg)g5Rgs;_)?TnWgLBvP0G=E)9R9tS8j?_z@^8D z04p7Rc1=@2qV@djD6G{QnI(JML;63rF#CqR1H)#7wk%X+fxdHLx(@f?$j9Jo4$F zH)yE;v|2dxOz5Gtc4$WInv~O)oLn|CU{c&#M=plqkZ36^t)vc7m$PO({aaaC*%-Cjl-Cr-{iz698Lm^*l)KBj2P(U3(bZhe z!n~0cmZVfjHZzC9T@;p%NEcXz3|bsl;L{54#fG5=H%VI3RNL*a{~Je;G)l?EQ!{@` zxVMeg;!h8kWG5>On@D6?XrJAOmNn{t_#nY}h1ITyMX_ z{+=M1Xd$-CAg80$W1PrKYodaY&o}&f@I7m^yx$n(tv`BX@(@EqzB2lwMq(^4;>MRE zsuHVXIbB0MzFmK80Vg@383>_NIMMVQA=!jzr(E4;8{6pKK2Fws=~`{#Wx$O557vzP z=c0gt=6b|R&1@i@9nI6^(u}}d3X@U)W_9n^ur$~9;cIwW95$NHG({E% zbGgo)#04a~)=}c54oQ-UD(K8mindk3sk~e9y?z>lV@KItXs7wrKpar2AHS)pLutP@Z>FW*WK4#WliAJGCerI zP!^=docA<|sHG+0NjdVt7%v^SjW3v?p>8e7VdxU@1<)2bI4JfthqJjC_)fDDf~0{b)=BT(myf@s9Ir_tiut570$ z@`@*TQK1$Gvz;@G0GCQ+Q&{!EWW@K*HvU9qaP@X!>bq~NuYer@0c}P@cxizT4t$LY9^y5 z26;6xcTzu31$CQzHx1a`LIi?*+0>)>i~~ABXC59YF-Gjq<98SvbB5-%-EW^t^GfCYzG7{3|@0XcGD?D43lu!QTi z3tQKb*TG0od%d+Nd|BEmjWl1onr6&PlzjP~GEJEFgrt4c*^qlniSwg{v@rfKDwrMj zBY0S-wB^RYel^>^c#DqcnixcZVT zZIsrh{9>yq=rnrchfe<%@_ABvQ+BF|VtFD&Wka4GJN4LIU9G$_td-$u$EI zGYSnXRHqWD3B0jKGg!@b1!4b#K%A;6`yQ#?hx1-Y7-PDPe!nB!q@Y$w`Px?utb#x+ z4@T-}YW}PkeV+~w0*{WhkW6(yydjmgwRKMoAp`v}T*!`mx#REMd*u0B9ZQU0w)(eJ zFv=ZTnoX*NmbEJ-V7z5W4Cz{`Ia4fc%bqVs7)t}WrF~TeY8s&E3xf7P1;t7t^;CoL zx^T|U+wG7&ZHgw&!C9HE)<6XRo6P9j;l!JnU2Fh4C1taCX~K{xTTL5N2+RGZavsXS zm-^~QYwJ2J9_8L#-Gbb7+fcJ`aejk3x-w^ zPYpX3Rq1RFuVJH#TmU*S%o=ZB2X;yKpzSS#O1>q(fnnd2^pq-nd7JfCR1A#HV4Ux2}|kBgy^iykI9VESu~ z5)oV{SIA+TAo0kVYBgyaS|i^`kc5TnN#5O(Z=8x{5!7cn4%e!&GOCI(9Mt?+UGJXs zt;XTQ!sp5q5k+xr%@_l#6$8${+f13@8GaW_gjMIAWD%K!iU!}nE&E=yt`OT*Riw(S zE9|fP^%ysBb2nB1RFcBTWFOQ@qLV(MiFo7mf>nW*#FLQrVyn_f{=HEdb_|ly5Nm9w z&RZNahJ)^e;F*7{-%1@)va5vFipQ~@pjs2mtX=F*fhrSF{9umW;aDukI~i$_4fu-; z3%_m=ni@L`5YFPzU0n%D*V^0G#;3ej#(_F+pZN()>;IKIT<~F94fF*;unH^X1}Po# z0od?!GNyK3G50c1QY5pfYr&Q(`>s(A1n_h6yII zSqM{+4K6L)6IyUwrI*`<76LLjw6y?A)$PHhr?x*vcTtRpeuK)Wb7lP8*XzU^8-ipO z^8rx*`3sXbk#$D^KK{iMSI^&^$p0j}(Gz&%VY1vtZxm{J`!`)eL3e<;^= zLetgohS25)RL}bP2)&=T+e9HmhQ_gmFa*k%GRZPV1NfdNG+FOeeV9Ax9oB77AY;)M znKtJky`F7X5^-I^^31?>xHiV~5v!{(Tg9zVVxgmbQ_FF7lH(Cuw~&zs)*Zg{I+GxJ2}E-;4u7dlLd+_e{D7t&3gZ@-fu5(;E^^U6;MFuFLu|eX zAt!h3(>}V46~Z5>P{Mwn=}~f+@i+tU&cR9~@xJHf(GYCn9vDb72NF1@9xMEAl4dJl z`ZA#0#sjk?Q9x^_RW_o$7Wl*qBm`fX@QYMt)6*LpJ)##ts>Jh;yll z62cnBkgPW8cDx@za!J50AmfE&OgsfZ8xMF`*8)FChHmbv%q#RGP_DI{fwyW9i+ME! z3-yR*pEqDw*_(wnizME;2@+ut3U<}2SBtt<=%;B^%8+X-C;ZGnYris^K&6|R5_r$I zAAWjCXFN|B(?c^HB5Q$Gb)*7jy<*;=Gp%4f2m|H0p-U%xl)lA|z59Hv7Eyr~M7wMJL$v_>zNwDx8==ctTZ8e!vTAz=H;9W8BA_f-^! z2LHsrgVsYvX6&tq(g40b{1AQ5pt)Ek}GITO?Q|V1Jyt;+<$4q z<>xeo@_X)?Pq`Tt*(~#3=w`MPc5cR4R^$W z0km4;Q2C)VyRsq_#dcyF+YtBfjAzQ%b_DVSv+Qg%Pi!JcfgJZyR;?|BB!QN7R)pES$-^zvq>7U&U_7odysu|Q>(0-pbEOKf z!{URXB0(0qmj+}tG;KV`a>z|9!LD;KCE<8Cf47LjfFsHqi^DfCNLJ4mj(s#TbfQ&? zXy`ALS>{|Xv@w-lubE(n*FK;tT9CkjAAv}m-Q8_$*tky1me^2ol=sy)ild#Hs=c&a z?-tFJN}_9pYTY&kpVz>YY^t>*1HRCla#BO8qM-S$%)8s51&Ao|=W#Y5BQy)0XqkkN zi7N75Rl=W4X!>3H*FZmC=IM)JT6#-%4ikAjC)6chH`B9V;fVln?v<#LSUQM0UrR8B z>c2T0u#aNRe=Jjx+;OJkUO}^F;Z9WQ?S=R$)V>*zbtc06(0-(}%O&!!&{tI6rB9m+ zL8AZVx3Hnk6dyL6C8r+OaV1~Ue?j(bdI}n}b@aZ%%0`C=fK?)v5=)hg zNpgrE^-A+D22z#?#qg9Fxf-UOZn{KzpQmsZtgukd8;lIvP5Ids1Dhu}XkMxW353CT z&cVSe9AtY3-~pA_F7TTbEx!}pv&=Qa&K%~OzS$}qPi0@~KRpY1A;gN^H+b*>>b-ed z%W|#R8-R*YNtE%*Cazk8Acu?IA8$Ad%RG9f+!T1H z(baeHro$jq>9*I=EX86{fYB=^3@@Gl&b@Sd@8T8_*3hULxJZb9c-D!Fw?+v2^@)FE zCl|AyC8&wf5lvAub)X6j>u)n|-8L}~nIwgL39oY4q=U4L zi|))bjpwkayp0D^)bEwX!JD@RAJk{dFhFA}$4N$dMyMtegWOL|!i<4wc&Tp2frWgi zr?Fs{WaWh5K!nl!gHTSa9m4?Wa}n;{B4!Wi!6_o0RF)x&GbqBeGwtjeb7XQ~J(;;p zGde2}07DFZBBFVly_#cQWHXsM3A(UIYt0uKsdfNKlej;=VI2Tqt-Nv1)cJ+p!kDw2Q%E zh$|g@`Ch5OqAP;r_l_e~tf|8|T+lmsO>N&kGpwwZc9iqZ*%D2f7R^ymAjv4d+vIp0 z7K(w?8N3k%5mwTvX(m(hNDN($KKp$4uZT$Z$g=|dRBB@xBm1*Sm5or9;UEK>qciIV zff^gfry--=%yF27rP-$BRJki~YwM%0tU>kw5y6a9pw*S8@WJz7_d}^=N=)dA<~OLM zeSD2NboJERZwF;?mv9b|gDb}H)r?ZN@eicZn@4CZC$EH5H@G9JK=UJeBZK}Yg1MAO zeIq*hySkC3b7DPdax#y>POSxs0vO@5@A9s58m+$3iTBE|5-)b=7_$&EElMj3z~8zuYE`llwb-fomaWQc!Ky4-jn3=gCzAPBXJ|^NjJ66 zN`g1v#bq&=82L2;Dn4Gs1_1TBUs-bpEKcyySkzEZQ7wH;4m36aP=V1%B|pv?=r#%l ze?W9p*A{uyj1fPX2U5&St`C%0VaY^dHm0rwj${@BE{>(|Ptl*4pa5HwKxZz{j{hqD ziVXVUQn1E)@gd6FhCPws4_JSp)hOFzYNc7uN|47>;tm~{LzJY~bMpE8q(g;VdIwsA!p_3MRN>++H356@`b5@RD?Jw}IdxU;x}OzT&Rw+4 zL@s~;D)g=+AGpmJj`%f(ho@mRmGxVoHZ=ix{qDm+C0Bbex_UX=1VVvZ2uoWuN{BHl zN9683wD6G{|6xOw+f;U&KLwZck3jtFb^WhKbssJWxPU)2XGg_nABUbe__j>WQT;427QA-slidMbiozm){_dB zj1n?i#Wi-y9i2Uvafc@2xSm-sWOfxgziQ<)d@|ziJZd+1THbw5ljK?d`(_NY#?ER_ z=GS27h~cn4i!v_oCwT_@ZXm3?IcOZk>h=cClu9;`7JuDD?1@R))zVliA_WyaoVz6M zEoLn{BTb^Mvq8?VU?v-TTBO#3N+nl;qBGVJUwKrXhqtbUc^P9LnoNHT`S7$ld1M`f z{LU`Ah6P+-YlYM^y&f^gj8P?)THgFrK&B8$Dr*mHXZ!JqcX|esL;lz&Z2KRDue#bM z9glr7YZ8I*;te?%GA;a3FNV31&}tVt`u=Kon8rkD2ix2Y;$=_yL=_$R?n01}_ANz}g~)%ZYN^J7eKOP|at4F59AoZE zet<{q8Oy$91Iq;bI-jH!g{=tT_AH3Ycznb5tR@ncq2Kb)WQ}|(#mfz;J&CepmM$)w zvc}ygeeQo_)eAJmsbdU4x}_74q1(BJ{0AsnS0=m^wx1V)xbgQQiBB)Oc6QX$7(!2B z-ems29c$ZH!bx`&A|4mSk7i~Ms7(F-LB?PzZcuu|{Jt+eRw>w7Rxwnjz5`>O=h#2r zL;6Q9oO@I~k4Nz*qJ=zmN*o@2o2nu>#cBW@T*%*u)VY=6>SD)oyKt7Q#X^99U3HSq zmz>#_9nX}N&~_n27CfrV_8oN398+Accz83RENFeiDz))ys`A}8UG`{sLlowaoPD}c zWhAFVbflmGet~@59D_q9(JH_UHjA8dE_BiSE*!fhCPm)7L$k?<=VdiLTaE%(U9;-! z!yL-2p}Bme^^H2vu*}#0ltcj!%p-44kZ)^k{dOK9xeOZ=I&1VLDcqq zGNt2@Tcq=hV1sM>p;UezQkV(7cQX4bIEE2#_dXhKc*?2T^oPIF{6<2ko_6N6MIu8p-`6!O|cj9gYABU?vv zARCyN>z!#N3#KeXk$f_hW|V7%Da1(Xp$=A*xTC}ZjQIsOo%*csEjtd!@J#?eg*L-G zDsX#+6MbGtmCl_n;(t6;J{{$}Jv%)LnPXo)eDYlR`(8Os$v_6F<;t2Gxh<**B0PXj z#Y2hJu1Fy&gHvHXQIDnL9$+5z#?CbB3YM7M2{T?KWTra%fsNWlcYm8+6WR_-MSZT1 zsa`4J^~|>ng=4CW6B?DTS*QFB9u+x;R>`yPN@alTF3JJfW>VJQhUD!>NAr;j%);b+A(z`V@ka?Y;t_XV*735se^BN$zu_Dg z$gn1G$#e5iK57mQO0(1viuo~5%b#P}yc6F16X(8!^KG$do_>*PPj+&F*YBiq*>-Y) zocww07pwT3)sl_?&fZN0Jg z2DSd>>{6ZZDb$w4+gYj}wu6D)#u7Kp2@E z%bl{|yYBY-Od0Sxn5y(nSTwqx3gi##-ihxGlQucg+i@N%>F`SfASwF)&emZtnT)eU~$ivY0jFiY<9sP$PJpV$?DQEw^W)0 zq1{OT4IBVGoXO|_*j=VQXN333uWK85_{5x+K-EE9MuPT3^hXp?!SYxd`#~-$^qVf> zxk%eFujebr+ArG}p6PgbN6dicAg0@`6Fw^Se$-(PK0H?cJqKfZXy@c8#`D%2+q7#a zE}Gq1h-Xz|wwO-wg6(=0sG;kN1fB6piaX_j3A>T0(6{i0%M5Lbd8nRGQi;Qjm4-9R zTil9zbxVBC2YIX!eezL$RuhtZ%qu(|i6X!UA8Dxb;wiYR{uUf$*$ISB(mI7~$c%WE z!OtT$;|?SY#jq2+8N3DeRt?xS(mf-pjH?RW)^xG!Ar4&8 zKFnxa7i)p33F(T=DnIy+dnSi9whC8%0@>WW1 zOaMsF_F-NHMvK$*TIJkvA|9t|;EW)nI2dI59sE}lDZWZx$Z`yg6>$CZcfOr~D#G8c zw0@am4`UWKIivq!1tyxBL-TV1i2XirKwi0(1W zAV=i#1&usLgfC4y@6Ulsyb(R94q*qOYjZP@VWB`Pj~txziZ9+k4?(?Sq6cgpwuu?9i#Pq_EPia`9bK-jMfI}A~@QkD^MojJAvCe2LH|76$fdO@-bt%v$x;Sv1awepA1bA*` zV+0r>wx7USRs8L-OKCTW@gz(S`ceMElV|s9q`L|`zALGl15z*d+s3SEG`ES|e@(Y; zte`_?Snn;MEysE=-pTO`Z5}T%VN~tk>2$YERGgI$jKICS-INzL_KCFpAABQyZ&+|_ z)WZe|)`wprA9Ts@^e8<2CS8*{9v!a{`CHK6QY%nUh$gsIZ+5WF3z9QDJCMo#t8g>k zDu@PtmB9!SHF%&LIw?lf=l=?<+i9Z8+xPamK%do!K9lhAR5@b{8bRIhR~-rk`AF!l zkXw*gfkH+QdXqEh=1Gn={4cUF=9+a2J%6+`A`I4hvo z9Aqw;!dWeAkf4bqc*xEvPUQmJrlOq`9nbVsjJ2%+?X4~cyVRs8LdqYSbIgcmMg zIxZb$U?Oz(IrcAzDC~eeUPDEYx)$t*XXSuH-#bG~Ax>H0O6QtS z68=>c29~wLO0C8_mvbEoO&aRj7O%Pa0-&SnR8CFSxVd8hkIvn@3!K{y$@rfXM~|v^ zf(^am!^EZJAyuP=w~4t$8vOftp!)9U$F03C6NJgT0Z|A#U;s! zJ?G4Jn=)6W7ua;y)&IZkNee+@EeHeA$V%=mkjs!?RAt6cU8!!)OV!dYuKjaXG!J5; z;ieStr3Q@2Wvgc$c;Ij);BDRI%r-0NCWSnU^wwyS8p3Hu`ZCyqEdgQe3f}wgKahR- z9&4$_*{?$vxof_G!{E-|8yahaSh1YE@a0XumO&gWgUA^wavw}KJ01`6k)c$5Cv_nG z;+QNEGn?IN&wN&Fc$SLR_H?k4hT+23Osfubr{O2+Z7|x@@${WJ$fOTVE^6n8vcrXi zZ_sQMa0ZY@_CIq;2kV61n+aQpm!O(#=Rs4Rk?ImB1lNG8-(!S9F16SHf9sC-r{487 z@J-LWZ+i9xNs+$fenCwpACm2c8V_q3_P!BjaNW99@G-8&!Y(&Gmfg1Pb|iVma7*eQ zNvS-5&}|BwYAa19eL*SrCKJ0q2uzyZS-9*Wu7?J zQbK#7CSq=edoX+dm~<(oL(SwQB74ZMpC%_@Jm`Fny%P+mif10^Z~`zDF9Fa*;+1Rk zg!S$z`P9!3btjdN3i#%J?G~UVI148DdL9c3g_QxEH8+%fvy@!&L6j~V+`OAW0G5M1 za6jF8iB*X-JBeFlOn~_6V~VEMBrf15j-?a2t!i-uMrJ_jJNSowS6A0Ef0=h#+QvJ8 zU}w3!PL8)^6l>h_E(AqCkg$F-VhLG6Vw{*x;(Kvjukh{2$8EjEA^W!?k0H*UQD50u zF2{3yC?B4n1!^75y-27|z^yJH6dMpisPx8$eYHhjAVROF%m=16_LZHKBAZ5sbWUk=twS*A*kXJ9W?Zxk$D$3$3dvVR^0 zIKO*Bu^J{F^I-XBT4-bX>17Mo8O~1ElPgIOzPL&l_JvIq>vF^z%tr(0o$5PvTvat2 zb7r@zTS{lR7=0G=z2txSKbF`0?d|wKK2eE=Eq|GQi>;(45b&@_-!i&;_ktA@{%bud z$BxRq+~|RNiM5CzlbFFvx{r|tW0UXW-pjHPsn*q^1}?M?zG*9C{mc~;Y3!4Y6kA3c zBor>p4tQUm2tU2ZD)!JOWkAea@Jz@en({=l7>KpK5O{n`{{%=k(loBiYt zHr+(^qPF+=a85GPOfx;XOFznB%9O6sfZ>pY23qGw7836H^|)MXQUi2dt|e}_W3=25 zM#bC_6y0dnqTML~{RjL{=JtwN8|54MDR77$cTv^tVBsIOw(6`IpPnkkZlB+ikA0;4 zjY@Rsp$WM;pVRPHn_N_i@m$cNISRuDIzML$%tJI>VbpfWD5h>fGF!{I++$VZv%fPz zwFS%RYB#drtzs?d=J9-o0@wV0PWoYOr@wW|Zb<7-(2;pZ4aU&d{`Izmo#?y?il*R; z({cHl_X)S6{B^_oXoD?Zdr0IS{eO&@B+?qtf%e1!+hdxf37{?`5Iz-I3d|xR~IEsn0WV!`HAMwrLo54epR17g_R$ z@8kQv5i0LW5dCfxH&zO;gYhC+7IHO*3mei3W%mT@ZG`S!Kro40fVxIW1uzV}(UK7Z#s z&RAxG>x4ZzPOiFwV#+%;qggasCP!D9*`niJR~#_z^_lf=OoCW4I5& zbQEh|caBBj+mg_-Dluug_;@xfLfeEU6n_FE*^)grIvk;=pCRVi~f(ExN}7ds8Ah zlO9MpA=rRw&D2G>o`+l`kP2zcjGxNF;D4k3PWGT>#SRss#-ZivCz9kptZy;Iz`)V#jbN;I`aV zI}$3;7^-$;0;I|`4aOKm_=5nt4OLc2&$;=Xu z!!3L1imtJ37to=4Crsm3LKyT-l`*piZG#5b&n!w0M}mt5pRPV<_cP?R{>1!CC?dE@3iw{WxwieXYOX=*=yN-$5t+JLPS^V!X(^J zgw(KNtFHN|)tjsVl7OtNcY&oeZz=j%*}W+|W9ucNngR~mxX3gCj~~Z)-LxGjaElg4 zepkjRfwv&Re(sqRZu>3wN5?8poZ$$5GEarCGqGoN?L$_njqi41KiS3W7%`Gd$L_>T z+QNUZjo#3zf#%Eg58blFKoM#gz@*#FxA^WC22U>$^YMjao69k<8j_m^7e*AEzgU@~ zu!*@N)X;GN6<_R8-tB!7Zht=ap%ZtW?9c=C+O3&C#t#xkmxI`7i6c`!Q`Z{zmNF!b zH18AJg`-kc#6TajeSGlzvwe+X#jcxXS&242W18s7WZFu%yjAO-gTqzbMz<@GsQRac z4R`sxNAShSPz?z|J4U1R3hZ5TT^^h8KUeXEbZgk1?!`-uqpIH| zPfjk+HM;d{6agbWX``js)iwRrdwXQwE&vtOWare$yheqkUH*cptRBQdzD{VKhPvYO z|0VelH}CLP!dRoZIqVpW>eynWXO}&5VTpJzoyUBaGMr1#_ODoMQQ=aJE%6c5-Umxc zeSzo2Qrc8Gk>KI~+X=Ia05C3o&|kCbKD3v7CsBFt;dgrXBM+3a5S?cES4;wL_G+`W zmD$BmN}}(L!nqZWn>QHT(n-oXahKRHxOq_DxJ0GGInli9TAdT+@HOY(76eu%ZL7K# zvV_K$Hie0Rvj%J8ymx?=lL);YZ}vnK8p!|TCsRF$pb(v9YP}RRWlN}@0yM&b!5XmJ zrxKxNQeq&pc+k88gY7VerODUJ4}c^Mp+59p+@($b#wK@}r2O(`o8{Zwz~yz$dEkDR+}yd{094xz%5jj3sI(P z0D=Uh8+i9y;Y)+cS{7VpT@a7zEC*oP_xu{J3$&QrzFv4~eQ~%=cA7O2$ zx{;nGEUq=IcGzIiRqkCO_meN~Xs2H0VK668BruYH=9B=zfdgFHWwtYWK%J%KJMwcC zj3B5*q!da%*$JdNg$T4Ne~e_KpXA$Zudtc@zvgh-D)2tP#auI-dbPtkyFQ(1dh(~Ylt}oX(~QsU z1}H_U1mv*wXi@?TmjS#$Us6(R+C?6)>gLHr8;4m*^kuNT5cM=j#s?~MODBdV&*XhU zN+9XWJJ=}P9m}SEjcxs5f@YpPzQ%$XPncmms}D2WCB@nFpRVXzVLydV1UYkJhEX)T z*|QEc{mJL~Ys4d;l_ENLbi$ zC!eJI@}4*^7WX4Rrb#k_qVJ_Ij>~g!#KivEUB2&k+or$=QJ3#&+e4OS=%a%c3YO#i zTY_YrdOLbA%-wh_2ALCg97nvmQVfz(|(~1Ke6+?l1`%V<&-M1FLy(EcO*AUD@TG5!I9Zy91)Sr+AeX&^h&aroxa{C^w<*GH=fcr~F{PhX*kN$l@b7vC$T`&O&>4q8E8ozHIfIyWy ze$Xqn^B7s$T>@6I>R@Zq@7IAe_DPm(d0sI;mz3xc?+icv7ohOkm|aM9c?dMj0aN~WfZ!}6 zNZOaGE%B?fiVTyA6g`^nNV(0_mX{7`-$%-Q^48DV-l3NKAM|C+Ei1>+R-K%E$HgA0 zRWxi1slJB8gS9ENj8Jk7-iyRPXlGpK$l`yhk@uUe%6juVmvLLdxid%a!h=Id zQJ8p~Cj6M9i=6Q&t=|*D|B~E2I82nM_h2Ac6yRv z_G@9M3Yj6Aqy{^{D_b&dRH}J$JEDzsKk$emjS7QX>&O`uW2LxWRL_ zYU=&1_YvM==wrBUS6uK6;zt9iK--<{}chFf{X9R4%$d<}D=JTmFOlxbmSN#jcJy zu<<^dE?p_yk3Mk2L^&wuY5pGDOv=^Qs7!%MPpseSbsGCwj{eNLEfijpRj*Q(Din$8 zOMIh^E#PY+S5R86%ioj=sfiF5XhCMPCDYrsrxFTtM(D*4=NMXd{IlGVoNGo(-|*_{ zJVw24wcnjrOk+R>DHbc(_cxE7C@c0tWp%}+9Y8a3RpxxLGPJly2V6SwJVb_kPz-b_ z;yDs}D!3qmxDIyf?Bk2t6}CD%N|`~1y*h!QYMQXI-R9ea~i?HwnA0U7eL zaE4B{jhL#eLZyI^8+#{#C7CD`4)plWuiUuAy|p?r&*V>0r!RYQtWKM|Q=*lR9QL$v zwb|Y!<&Cv?EhJf0q9*6+D{eXBg{nF4=viNFXZhrM>m=2#=jNSr7Cbz$9egUBxn#Yk_3kRK&{wK9@lU5ZIHYr-ef!(jePf$t1U1 z6g@cW5cqdvgko5(rM?H9T7js4H~lA|Fh6^^jM=QalbpocX~9H}#ie=T?@1S1tx}{> z~4|MNuej-R*iLZ^^&FAezv{HzLb5HeMw&8FUlyZv82R zx+UL3u6uJ}!@R?NBbD_nv7745ayf|PsC_Q;%%e2(a9w_y>h}~HIIO)l^3_e{)v{~sTlW7bwo9OI$ zq7#g}9=iLvL)XA^c`>Zjit#2+VIZy(ohYWED?3i|HEpbn=?&KD=VB1qhU*Kr316XV=!MKl zDP~RuU69tjVn?*)8|j%@G1#O|r|i ztio79Zj?0Om3t$XyKwTQJRe#|>(wV2Hc{ugrMa+PD0_zEXVr@hb7BTfWO)&M{U^|p z^lNwS(r9rMJ=;gVfpY|tm)R%U&Zy!CN;ptZXfFMUK3bGNKbW}X@TQ#?kRzOd&oIS* z5Q5M@4FCob+!AqG>Cj@3zJBjQ*7@m*Fd>hSDvZUrgxvk`p@B0b0kI~C!& zhrF^2YJq3|dV(3kD)yR!mj^~)KyF@hudt`RZDzGT5W#uHV6f@Tf$) zU?1%c6F!VBkMHt@p|hqFA`{3z$vHoCm&nbgh2;Sti-=(HnP9Ih%H3UVv`Mui!lj!9 zWE-S>5!G#3EQo?QKO-cPnOJ+vN*A3eG0e}#b?HTY;T9G@)aGXFIjTHz+is<+HRzTZ z$!_dQC(n8SO{jwsUmmLMSKzS6*_OFydfjDiY;t(dAUnz@Y25?q{45Ko-@xhsOXmbP zuaR3`(Z1>070@HdqH{?eoGaO$Mb#FJ}V4 zh_FOUIJK^uItt6W3J9@((!?%5?7VHg49WqCuOewV!XXcHid&8^H^Y+G7PN5Z^oe&| zMv0%qk|l)Bqx0M&g+W7Wb#0{6!$f$y-*J}7{E^g4auJ=nT12O$fWsw7qh=pPh5hcj zv62kfXVJEo6;A|D`Oz@TY5wbBcZcsV9(yWIj)hSI{(t@19m4US#sMjQfaV;#ZHvqZ zzvH;NHnVm>>{xre2_In?-poLekDQ{x9st)*Xrk>a%Zqq63IO@Xu6j9Qc@-vecn0yJb@@vS(>1^49~1fL6|+SKqNlTzRe&(MV7a#!;_3%f51k)# znbfUzY#rsHwg<4dltRQ~S-|P>JpnPuof@lI8W9I4T-`}iI$H&DYsO9p?|ae-_Of=H zC`^LvJ!fR-i~2?&@u5Y}w2SN%U+F-a(e&xT%swwRg}U!>6$)>8&?Q+F?`~}1dYebF z>zDp#DZ?*TZZGQ43TP!P`1?0&Kr<8!Q{iuSj3hlbKT0LOyyG^OTcu6nl5|pQyus!LzMI32 zRu77$j#Tg8sbM&nvL>$>EL7lh3-In7KeY5K-q*@-bo0U}u6bq(J-;bXZlF!$794|!Wza2dJV#UEA*G#WE{`n30nv!O3PzOh`4G%{ zG6k~oDQDBmoiW_ZPX$rMt;tL7{GPaZtgsp%fORdcX6Y|pQlr?coaJ0~I-tG4UqkM2 zX5BSrO_3_`;w1$@U1t!Jo$Vex(LFU2Wa=Qq{rCQSG;j2TNQd&yF^jL*KozyY{I^X< z)kpW zkGp{i7Ic_9GJ-|B{RWe_P(lYmNzYP?G8uup1w_QFh+JR3|m?J+_5~R0?l&JX9aQ(iYyW?yMUW8Oj2&$;OF1oQjLzUT*cQo_e{uAfv zrYMp%3tM=)QkM0&u@@|l`>nDR;$a?1_e9o`nAX-P@%tI<+Gpp7~!)3u-Y#~UDsF~F;?C?G=++6nqG-C*+8j+((0d? zNPSq!Vc~`!r7`(3NP5i;+~JBpfj_jQu8PrE5sYPKB?1EU$qS!2p4Cj=HU*EdxM!Od zjb^&Eo*m-ZdVyml&2uCz#%NC5x)4+zwW5tBOd_jZbE>!+kwff;-gu7TMp+-$xWg8bKuE<@HF7MjizV7)i^f`}ShNk#D+Q0d>bF6_IGZxJ}k9h8^Y| zNy4K$F?Uv>N5MMPx}lsLgig zMYB>5ovW~ZCnF9$@1H+d^@nG>-9;Wkh`^H;p2u`+@f$vyQVzV#e8^uGxLF>)A#Hky zWoT0zZYX*W@q1`{_jC94zG+~Z#Icw3PKYnptw>lAvrX(deh(pB;OvAL2wK4CeEFxh zZXh$x_0RJ|Ah-O-^6zp8*THZ%)FioYV`*IRWa*-|fECx!q{qhwvu+7lSFkz*+$eqW z!_Fca!x4z&`2YTMdXvozEGLgDoWS{pMWi==v3sOl4H=f2v;~&CVH`?&f;d>F1Nny- zWGSnCVn{IC!y&1HUQ!f|-+)zbid@aL5`6K}Jvs~T4-jJCSm@1Bi5Bxv!)?xq8WYOj zok71bDb(MCt#QH6XwI*#VfUi5m*f?q*^5Y{r=uz334>?$tKp5C*=^y=^vz}v@SOQ4 zgYw#$@1h%OBGpCupi`6ja;ay{>y8-1ui1z?{wU_k_c?QfnDw@F4-5{BM#{q;z7&f^ zjLTEl$3`Hv{tUzNm#ujSyB=TujaKnITu5#k<=Q|6l6>Ht10VHmG-?^E=lqkF{xQPj&vHfzx`fyDDCf923+`p#*?-lA1QomrwJ7Y;}s%6$yo(^B6h_8$0F+ zYBV%|t9}n}k*%3Dr!`1gS6YqO%KO|%Y8w>vqk4cL$q8zp^;4PKZsh6Zz)7rp8bn2{ zf`@jtW(z-ef4fG66WgIO>5m~!F}8Fp1+uT*v*OO;Yt~U#TU!o@cK+*k42oF{Oy5tz z!0F=E?eq2{ZCiIsoe1dJUQvR03=*L_SFmM{%2zfp;PpfW>s~52x8s5i@64W^BAHn$g-KaPM!gR_sM5hN<7};9!^xxB9jTT)AxbW+xk$EfBj@ZXgr%eQka%=+^iLUoo6G*opJ59kv{^3G#j%s>$C7PVL`T z{sWBDro+x`w0xW@o$yXUl4YHN`5zjw;q3>(Fb++qp$6#VrjVez=VcK0Wg*1Jo(ojy zaoQ?}Yqy8gIyp&_TiJnY8wYRbH0?8<9CDul}P>j{o=e=l+qpA200!+UJZ zZ%(lWY);h0>nR8XYc5Jrr)ueU%mUfmyex)>mOg z{0W*p%CO*Ti{qphH&gn2A2aO1OA?bgEslJD!^@N8}9pUQ>KTpi9gVXp!9&PECNmHmE zlAeR{Zb{zveDPC;h7?aMpn31NF0{Ir+ujjQpJBXS$sc0(#oTAcsF6*r&$%6Z1Fm5) zJ;4md1t;ZM1rrQ*6gcGVWRWq3Mfm@JI$r{AHz`M(;(+!G37&)uH_0%pl}eRak_soq zL0HazbX>13j-JE~CY78jcNsvVGD}q6*aJ(?2Q&-jzd%>R=6JH&;3naf7#9`?Gv99UDG|iaB);Y$k)Wrkm?koN<%SD*l-q0qyddG%vea}E ziL-)6*^1AeWh#FU{cx8`s*p9na_3*uZ@lm?v`C2x2&(lA6}rKCey6#2W&D__XA_0y zmgTRi_AyeG$+#qIl|-E@U&+;nt2i8(d7?cX&v~%se2~~Ah6_mI&LDU%llWgQou-M5 zj6)0FzJOgxI!_rM+#c2pUi5KpR%WfvZy~duH+u}6oj=7`^@`?Y+Uk;1RGp==nl=&g z06#0QKL_Ya^%`Ci;YXk3cR;OFPNUFt?|`F^)}>5LO`;io%H2FE%gHrUd_)8i01}-GI^>q)AkPguM(<1op%X(8V`{0C0TJ1a5 zECNKAxFQxO%@U)c2T3%FLh@Ym3nN+=)$Xe#2@T4wJPT{tcKCEXn|vxjDXy77SZdoG zeVT>Nk!)1KF_m|tJB5LI*Jc1tWAtBp6efv4<`KaxCsLF}gbL(}}xGEYP2?ir47thW>Ps#M^k4~P7-PX|iM0!?wat}rc-?AmefEP@1MGp73 zzUmI@&ebih3%&jGj7*O}X%epO82`m{O5!QUU_W_5Ve z(C+@d5XzVl&WHOC=({m{eGKv z=J^o<)4;rpzy3Ra)XejHB<(LU_C@<86Vep}I)-UN(UeXp7SyN$Oig#I$(mzu?Bt=?p)X>?7ofZI1Pi7OH?l9vD~v>Wz#ecd1JdOzYvW8>eg%t)kSY8atD5%UNT&RcLcJIbzasCoPjc85>)BP zVr@Jdrrj-`Y6<{fU5s zHN3s0cIyoUoJ4GaI30UBvcsMc!>3@R`NC&$CC*SMON^X8JMh`+*lxFpPN`*RqAzA^ zVP;r(+0K~MZ|r#REi?pMd!eh?=Yj^5EPC3L#>DGBy(m^dErqrvASu=1Q{Lj;@q31u zlxQ_*Ex}$%WhtE2W)_on_Gx0-r7H4r61+KdnMA=FGnG8jt4p%^xcJkXdscj*gdG$q zy$sX}ag3KWz&@Id?eaT(BGFP$z4=`#wZF|whilW8lY<^;-D0!hy>n#xb=LBYKy7*F z!++617^GMT>}KbWhLLn{x)XX5vk0r70fZjJ6Ew_sF`iNJ{tsGCD^ul_8^xPd@^ly& z9cKRs9WszHlEGS`kv?DcRT=ieLMBkHg*U=X>;R$%tI-mO0v<$*|(EF!TIL< zUXY4G@P82)X=b6-tX|Q`8@MgGNGsg~3-x+|ZMJ={V}46aMC4LcS4i*6H#+9rDqYk@ z_IKc7G8s^a4De-wY2bPIWir@Z`LUMusEz9DH9?{G$HRPUz%h;EvTZ@v)=Yf|E50|_ zat1`{)Qdt@u+_0Lr55YMfq(Mw2(=?*>iyTkOlDn=fr^CR4Q-l!$;d)(T9&vyRHNO=z zxW7{8w&_lM%u}S)<=JZm2$}^^*OTC!zo2To;6q?XGxh2MaK7)FJHj}>-;6i)Md8LK zUT9hOhQ&8Vpf}6hbBwPSK3TfTw0(UJsc`-1^ACN;46c_7P1eG=V732U-?bz{_ z4u)pqxI;diZ5xpZGw-iX3rU)PaRRmztyGS&B5l_~%yWPA(L(d5x}ge^_;ul2T$J5e zPx_YG5D9&58B=5Q%a=OHr_`yc*bijuDm@M(^QKH!+AdW$qasdB^g+^pg1SeQ&>&>E6s+>YFQzil(A^m*QM6x3}^wlbsCQjTKB8WViGZkRgW33 z9H*61Cb;3?Q}34+UG~LnKK>F|Av6_jTF`N7TNxwvrWhtA!)c6=+<=W4JtsK^|EVMK zP1#EH5b&~`2rmN5YSqRoIppSW9?K4!1 z?9O%+OFEth?Z0WYFIaFjnzhmtc&FkJ`yRbkaa{cgLT%jzr>{L1)_A-l1AZf?7%@s& zk!`|UfJt{vW)TiZ)=G3of~M6aJ8Mx6Y<`^eQm&1j3S4cFIBaW=J3Tue!1w}y^hOK% z`z^p;-noxiwIap6;|{CsRY>jYQ95LZ+>zaEaDS3cO`J>Z{}O1xYDYHLq68u#c6d0o zj}8K`2_4<@gJYB2AjI=G+)Xn}RR*v>>x4(r6U>tj)8!f8bsLTeMZn@jd9_3`#apU&U`=OB{$JNV|+X0>sObs&X=#C628+lZV1=!?z=T z@NJlG94t4CGfh50_TZ_Koa{R}fe1M=ID$+!X|ZrWIL6eU-WF+Hj?j68ul{*3YFNO; z?gf^77@KM3yrIUSAx}LrB;Pr}Sj^So`aoI+C=j6$(tDlW8pJfKDkmMt+vt+p9N0n@s@z*i=TKoCUGgtU0BnDqwwNWi+$k?D{0 z?F3GOb5*Z%)H~eNE16cmthC$O`p%D+D^TiyhEMe*ws*X_u4NiRcIj<^g%H1UnxKea zlYY&_v4>&%3mFBTbMd_F!agg2F5y~#4(0AxBBtt$t@0Z`!9&kiP~C*!@$t@SY5oU% zx=$Ju)AyZZ(_-T=jl%4n9{_9GVT%dqi;+p#Jp=GsM5NOB<-%7Gp76R<(=-uu%6|a= zKLEf60LB1Ti@xf7KY$|ZGX*^1JTY6P)pU2A}!|Fii|<&9)-zO@y@6R3r_-@%&Tk`5;~Zi}seX z8Zx31_58xAuUdLLvPX5)85PH*SlY2&b+SJL64$8&K|kBwz)J}@>h{2%2}`>*eIGFX zIHWrBWMU$o710S`S9*u;ej@m1?B6396Z%Xd$_OAgJOQ;KnJ6m>5;m@kjl7kS3oNrPgug$l1A7LbrhA(UUVzKzi(f~s3`m0QY0s@^2mUd znrYtN0HMo$05n;8c>*VRMvE~Ped;G48|l)D8;tD;{$`ZcmM@$XMF~4(TEhN=WdgtNc?Ox<`J|XH(7Qj*>V29H@3> zP<&UMx`i(90r7UDI$IuwES+4V6pO>HMFs`5E;w&nM%0bmbN{YNy z`o^joK-}B`@gt?@SSoDu2_n#?#kdg%Lr<>N4FgUqk)A%KdU?pEaVg~5Sp_3L@qxiX z?vyJDZsg8Kqf5-7D@D^3`9HOJ%M(|N%emW(v{)OUy?BLI(i;*h2FacJeb_U_HmVrX zHY%L=uR1O=Sz1$-&ZQ^hu2-`zVS{aP42iW6Jf$A2v0r|&YTj%ciT!Pk<**NL6(2S6 z7Yv9UQHL>EfJ;vm-%at@neC*ap*Qsjq&y~6I@~loZpuB>l%4^N9^-*&4BFmHfU56+ z*ie!6XDew*gl(s@jl@r5QGRS#@7!tBZ-u6WIk2q^32LH~3g0y}Nn0(HOvD=t2uB%7 z4|ds>(AG+6X8uCkA0jV59zmpUuHR2RcsMRv130>zyN9^uPUqWm_5@Lah9i@_mU zreV@}$^P-Z9xbp5Z7nXkd@CwOH22k7syccWEoVpNNP(XgB=PTl6L`Ika!Q*V0jt9?g6?<{GHX!;u*X8M}vS@lB3iceJFHB|YynYHq~v2>XcYa5Ly+yh))M6q6yc<$|*PtDa# zv?4Xk<#>h*ggu=Lo)lj0guhad80y<^EO$8#DQN^!@iE^Z0EBPr@!4|-dr)~JdXeiY zOQAy%=ZXu3$+wQJ{9@&F7b1_Nl!DG|;-Et~QVo`jG}u<&n2dE@3+lznOy(xcIo$P> z%Hx;$qC2lYixs z=>vNS2k(D$6Rthk_`pt6FV7iu1}P*vM;r;_BnMh&GaU<#$acyGCi_gSYYWHWBl-HL z4IabD-!6kpMg#925w-Rdr}l*1*eT_>CNM!9pZz4Um*Q2rBPAfpexdb|7hyeGN3L#4 z^s>vaf&3y=hYHhuib~0AdwE)*ht_frCh7yWETNBbhOy&vg}exK-KkCigR2*Ag$Iam zz;u)$80P_!v|V<2H>rrX4oD5h92eiDYN)9L0e#^eS32}Vg61uinuw`1^2@9)-L2}= z^*Er{yBwSOzo<3|e`{_jrC+LqnIpVm2Yc-cz$Lg9be6aYv|dvFm1DgIW`c+>0@J*x zu7rzgSJwiL%>ICvw=II#6p&^OWgaNG@Jo$8Q zaI$=jwC!b-FtH{^Hg+gL?*f^WJM<#Hu0ID}vzP}hTSmNCWEM(?G$=o4+KYzVc zDEb9MmsE83bUq2 z#S3xVPREzZwv{_Je3k)4Z8>BmtRiY;Lqs!fDorD5X^Bj6(R=N5gXv$6NPG)qJ^fG; z;!%OW-Zh4hq(_^m?D>y6WNoYtbyrHIsEzhHtMIzAO%G*YXZuEBXkBoxTzu8HAp%U1 zdeUtB_IKD=i%g;b>L=9%v;>1N?Xy};o$DwSReRNKd|PNaiL!>V=v^69nl^N0AW8hs zaVQOKGp&c_rYNM`Zsj+C=I8}#=E{C2%@1&;h%cay7k1)8SO;1W>Z#55qtUCCju?QL ziWQWFuvLYqINg~)X_V&j#`(E{2`9WDO#=QscL0q@DEr~qgVS+4X2K4#DYV1^8jXH>_$#3nwtm}Bal~laD3_?# zk4i*vciUj?`v#}ktR$p+7LLh$wb3ocFyGE{AogGd3TzLSsTB%ZU!db_rsn^jcKuhazPYCAv|j+nAFfVds0!qZlER@qqX@;6L0!<7*XNhyil%Xw=i#BJ`nh<|<-|EGWm7TZ%fR!U2=uSRSGd3_!2wcHqgcJEM zDKk5jEhw?X)T(!u28&W0S_M4=o;Rl$5AK-T{wq}6k}|WLsq8@zxh$LeztuBF1Q(JJ zqD&?#|2)=I5@IW<0CA1-*%bbGIW~(sa#&!`1xuWx0O3 z9`{>zV}}XXm zID7@(@c{!D&j%YMZ6D`ni_uN`JT1J*_e1Z)g|E;);T6vHfu6Ed+#5>d8-`J0B21ZW z@OMyOL2e_N6HAf^RV*_ew&}-XsoJ@+fc{b4)u-9ah5v$&c(MBlE1&TC{ z(eOfQ60VNX%`zdWd5Y)#+ci97zZieWBVU7gX&=IcU(hU}D#9Jb?~GN&-}bnrSnogG zY9(Ug0u9WguT477K&{PF`7TRk`A6|_*QGo$k!XU}UX&LR2D}d8l%xb=R^)TMw`B_z zr5NP6RrCduhJI_Sr+1~F@QY5K^B&YCUHz*wY9VUe#R6MrBHJcc_45+Zx$*Cde1ulk zp0G2T{}3gk--wFHF(6AGBQ)%2Mp0gCb(FZgj>7id#--7a9_qRAgP7!pG0@JwO1Z;YhCE2Nrz|7Ab(TNd6wgK*pnS_M?d>?eH8u_otm{FbOj{pk3*4q|rW%p4hjU!o$ZQu`@zN8aVUgFunBA0`A8msm7DT}B>vQr@PqfqQt z(bw9wFW3`a8i6Me5t?j^?2kH5YU3r(@4}o-&q+O4@SC_4uI7;`ly}q?_T2qSgW8k~>|70tXIbsZmxqeaA!KPwMGZN>)%VR zxdzdTB_^|-K<~_$#_sB#=?q?n36=rHd6S3lod}f(1qPL72~vLXz(i)E5bJfXZo;Qm zWb%~6b|#D*rrY35_R&5VdU_Z9;6mYyC>SmccD11;?$uFf7{P$k)@(`w!p- zx;S&vp@Rs5p$T$}hbfEQ)wJkb(3dfxjmgCw^=ezRz`aZ)8Dhf zL+dl^K}V-7Ude+w;+Zi;7KD2W_l*Hg0>ucW$t%3J-Q-wVkY|CUrD}ALFz{T*kM{iE z+P~$n%$~*c2(W^iO7oCr>#)>Tg;7Y`=TB8tfTnSMF%wugcXKPL9j6TD5Y=UXtEZU* z@garw9btT_(p@Jq4ymKuL|JSlZ9^a6D)CRCMkIy>PX*7Y4Ryam~x!=&iTF$ zOuTOm1wasC&-1}0+5dsd4l2~x**|HVafcshzM{d~V`sUnmKN7mAY9wqj6b=PJ(CL3 zewoJ~6m+bA(Bsg1ne<>iK$Y5Mev-t3b;v`hAwN6pa3CvfMG!miLY7wh1nN(^j(eN7 z5@aQ;7LyW`r5o=zljWsR#PW*yJH!XHO505yomVm;A;RS_)`+68!OGwKf6MQV=bUu3 z<9xoDg}21kh6QGQ&|k0|sclj2>L}d+HyLK-CtMnX!X1IX*yT?$GD#J)+)C95UMfaA z$6BbqLIR#Rp7-|NWtA&?m@qQ?C7_Mda5^2$TdmKT!b_tmsvKWuu&_S-q%;vJUsv2r z$XoBCo>NOnI(=kgA?B_^?mb+t9Hj4(^ZwI#bzU=2WkO>jT089RCsu>!e(NhS7oimW zi@)&$$I>ukOrHnJ(Gz(Cuf07F^~OQz37v-aPD@b0WM1awjG`ijsCIP9{6BZqxho?V zhhky^SzX4UORs`N7gq*fHinFm`LE!3xf_9@;pbmLrd*A)%TPL4o$>rvv$-%&Y%hnJ zhi^o+wtd-)SQ(7o){`sok5lZa2_f3Qji*W(G$bsJSbQM~K{{+}ae6UGCfFy_2=i{; z80+Dzu6ZX6kh~Z$!Jw~Rx!?-rZ>g+zuFlH~nBz78V%EUkVVq`n2LNUWL22P*A{%JbM5DLmbb#_QY_RYh zg1-;wb|gD+4QcNY%$|E_OL2)hkVMAv8as~u)u+xH8r%b>tV~mhPYfyHMpCh#C-}K> zy%!X76P%ysN$4&wwG1+d8Zo(l0MN{(k0&?_hPfRg4lbnAq}S19DJW8xu@e~igp1Ah z00Rx+Froe17){?hrBB+4n4L&28?xBSeTHg?;1EVFZ#?jb$v~;Py1$Ik_$beEF z7L+9xOr))LQh-f1!^+hUe!Xyj%Y{hI=M!2=@#X|lP%=$8=m8w-jvH$oy^-R*>>Es# zZ%hs8*@+6#DB`phGsuk@W>L?H^e2^TFfYb-Y@#EY2Y49quje4;Fpz-r2{_;#5i|+s zw5TiPxamk4Ez)g`RK>&l{XUe)bf_BX2de4| zwgbxA9p7kx#fr2r`B?qp<{}d;1uFPYW2KRbOIDxsji-fFb7`}h4U;c=IBgH+JErQ@ zA)@(EP?9(19rtQKMNTPZK7{p(mq9x`H{sx6*J z8$rMn0!Kz#c++>b5hBMLWI`3}7a(ErPiZd(!5r91KkdUg@5AtzK$%s;m)YnM9giNt z5(2`Ug;#qcQ2sZPn8pD}Kh6G6sDVrn&z^BtOcHuGRa<7xQBJ5X%tKQL9V~ukuBv6kiZPaBDQ%;H;x>CF|>s^zfd!AX1n_ z;NWP;7)KK?qQG6xzw%-K0B|(5hvObWfH8=&gZ`*n163YY-GG#4eD_-=EkKZ&$Dkam z(-9l!rX_?)2&_ApsckZLk!x+78aXOATDm$xc^C!-FW>g2a!}rCy)OY^%4za94;W|@ zJpsj)_@v%-1pF^=dJn0G_}wnX`_T%8kG-PowBE|tXbZwwDNx&86JJ*&h?&rvg1p+xDIH*B~#XvHO#< zX_o`PcCT+H&jCIDJs*;_W~T;r-!IVVz?gvye_RLvg>&UJSfTD}n9eW-^o!*h&2^Lz zaJws~NmP;e)($l6Mwtc@4X;<^Pd{mEOhCN3z>)_FuIU6#qI&fM>F?Ghe1#LLP3XIH zyS#Bn5C|cHT6+^RBSM8%xSF&^`t5>qm<#RaEe@6%b-iSk>>yK?obzvcIJOik2Og-~ z9x5&Wb?LN*Or;2z)P?S%^nGZyk;f}EZlD(h>M6&ongS)KnV9Sjlrd8+NnxyLHy@SP zkUK&xUrM4Wk!y>BWC_NEAG0N|=C~2_xOB1KRMm$#GAF`9!tVIC#4`5j)LI}E2^@Uf zESAZ02tVw7JD$ePRtM>d^qYXBmdMg$qX(?QlrAFFdMLULXi_bLS{EXS%L;QAnjQXfGqDsxpcMG9nXc%J?(m%tcW+oIuKEG7BGQNIj!$;7!1QD0Xw(_ovX`A zK4Y4e7G(Ex&PA_y>_hS(OvO1mZ-lF5VP`|HBg1(lplQlAJjbB6Kmhg9ey&lc*y5{r z#`J85O9I7cU9O&B4$Hw9ru1>{B}DIxNg;sv0uZGS&x|wF1n;)sJ=PJ^VksA@dCVT+ zjzDf)1f|aj=h&1ZS2BQmd$~u|DC(AAdO|hmXQOIuJUSiVG?0p)`rz#kTLjZoT`w!} zg;Og)|NAPPKA9u#x89<-n=UFEh7;4oZ(BwC?ZC7EowZOiL(}BfF)!@V!4-&?LR*b% zyy~Tj0yveC=V)S?TT?EhA_SbEujnH{g&0BJ*60AOQ7KX#+F!ygGzCkWUrX-ND?6ay z{A#Tx>;C>o1%}g)GR}uxb3{BiUZbJVmnQ=yu~HjVa-z^e(H85SC<{$PNofLFmQBye z-l74IJ4H*@T^stFMMpxx?jeGF_c*OWSKewKdhI@ar_Z2ft;gn@X1}!}1Kb+CU}g>+ z2!dS9&kjlShu8~ptjjSQPBne?3r>uN+JZjOsa3UE3@Y;Eo%J$~bFJK(EEOmAEtaR! zAf1mf*sV`2it>rCT=mAAb77%?aGoNG%rp(E&df^w61%Ybl;gUXHWBE>9GtB zaWJ=N?ztL)HZ}7e zmgtQ=;Y%9kFc12ik@q$+IqwYn9V2O*ug>=_a}gS1U^bkY+m3a4r@i$~USw)3 zTVv`I1UYh#|I--C@MZSYy`_A`Z*-p^n<_k8!4vg-0O zXk$@+--3<5tCd~480;n0jCwIyf>}i~T$kD(Vr6ITeYF7Otidrar!Eh9dt&hINK2h6 zX|H~`nTvZgDs4HyjG6QK`>rC)NL(fhTI+5nKDRMZgUs!%s#=#sL{ypX@O|C(twKJA z+B9Dq(r3XQaJ}=+6BSgEBVg4=R@0 z`{qSW%KW;d%Xcsyy<6#%h|-dP`+t;9U#;uRW}! z|4O>!E(h0RZju`WB;NT}@#GkEciu7aE@GL5HLjOUD9)LjPBmLg1IRZ02$x%IZJS?^ zwt7v60o_RqyitY4r6o-Mpc@RQ_`CF3R#_Yh)B@>DUKmLD4B;5gh$CpF$7Uu4f3lH| zS{+xb%jgxrfdf%#$hX95o2aousm59R{e@dc904e5aXvI_ps#%G(krOZ*bD^CPe2`Z zN*zO&nG#@T4yAVoS*C(#;erhYSif(tDOHyO$)dGF> zQ1#3N(ONznc#TG0$mkQ{?&&zUft}hMtce^>`}l1er3Nn(hh*N!s^e3L6?j%BGEaJU z#WcwrSOuEO*3o42^)Hp2hfLZ>6uTX_j$&DN$9lppo)^d3XPtjn);3KT0aA|BXS5&- zUhRh*j^?%Oj{;k!fRJ|rIHSxoB_vvzn8G4hwL5tkfp{+HQeY?{ezd`vm>_D`KdxAq zqh$`XlAY)jX!a>*i_^PiMF1|K=^V6N-iX9D3E`DDIq!Tszp=A$fuuqm5?{cFPTnZ4 zW0nB7yG?E4#*x%A1WEz2?Dbc8LOCbSJ3p}L3%GRiut`Br&@soX%NEu)-xnXSqaG!2 z3Z@kO$42U7ojJ{1M{j0_VI!`N5vaRBMe|g-lWyX;TwQZuqdn6?PqpqJGI$%I+#}^0 z4!(<%q;vh*Kn+DPStQd2|D&Q9LH$1y>@X_1`t|#X-XQ&bxpk><+iTA|H&C}|22L{M z$r{0FupKo?gWGiCr|jGy4v%>D0FqTJzmvXFZSs}|a7E|xsQx=(dAdLL$-lw^_4cJ2 zp}5v3r)P9qQ@C4Plv#6-P6xM3bohE%ilCV@8wo3Ei!edX^q_^S9 ztPrIf_($l^s5B{J(VC9@q^p)IR0T^!<9hP2HNo-}!4BsG^V$;oM4N>zqD^w6nR9{%(lUmoD%-CMgofu{BXD`KY+~EL;ay;@hKjEFh$%GRbqpCyQ490Clp5!T z2?paqgw0G^u6*Hfj+!kf3J8J}^;ePSRX|yhO6#(frNxqgb>KUdHJmDhX>rq!5?|3Uc39S#y8rYyw=12AoA~itw%d!@Yp-yWnTVy>X+$VYu zX?Q5(;q6b>;i2aGp#S%qOM2&fi;8Kw?gN{bU}v)k;XfVTh{6vuHUmpP@uXuaks`~f zlp>77?jvm?`9G6y6TstYKVHzf;X-3Bx*GaPov=NDG}bJ%sqikR0Qmaz3_mi09{d-f z#I^i8xzDfG1VwfLjEC1aU;ftx$oX`^)^T%W>bcSrP(L7llnXWJkJ}0l_zZ9J$O$ z2;VD{UI`3Hb-W_`*HC)>Lu8^06v{I(GMp8~W&;g{qt`o$WbC>{gq{tI+pPdgn_g_5 z&;fIc<=FL>S#!O>YKMd<7X?e5XO9+#XPjB#4W$~lqm_MQx8_h4P1Q%JZcau1ZSe|V zQdG-Ni_U>XQOI#eh=^uFaA}*5)Ptf8%;O8}ECBfB7wG z#i6;~>2y<*LMa`_pdNjPKo-+3YF>#N+!EGq8W79chEgcgr3rVDJeBo{s#7ya#*zdS zYhs4`$2J{PxHJNcyM5U>Xzvy?$_E3?6XEeR6{8FCMp7bjZxGm;WyK$COJGY;tWy{G zm!=nX!c?qfTX)B);g@vKAkr@%h3bvW0%HWGXcf6cMS4-Gd?WRVEqBxIUZIBcEUo?H zCwtaxj}kL=y*LTuSScg4r}?)cln`vmZu{FnVQ(e(%mGO#Jt-WUAGMP{xuHYH{yBL+ zEob%jC#uG7GKyNeUIaE%ix2E)wqq6=3)8NP7p@_fJqUzM1XTwm9?0sB%yoi`h_8NM zmU=v}K-czeb}Z-j^9;UZEc$zTL=o|!=n5}|g<*=FK~7uiquS@sA&cJQ{T#z8q*IiJ zi1A6)_dJLa_n8x#{%)LliA5E@@4kWB7m-;<^57xWAruj|yN*CKsg4{UQPJ?tlQuEW z@t})MK~R9m#|3B)z3=T`5yE^>*N}-6;*LjFBlSm5$?RW-pkv$V=*a#&hQ#qcd#9aa z93ubM(2Hk(osX+{vvinEZSnK%Lbhvf1%F7*ur&6Ak)5ysnDjswwWL%Vas_E61w9A( zMtRJE|5`|$DRUkkKAF!XPwQ`1Spv@1s*@qFZHQ#$gGr$B%UJNUn0EC>Cl-5h3Fcak z!bF&b`>_Qe)u^o@^b%aH)s_C-SG9ij!C}Bnes533`fVl$oA9cA30lnOft%n6T))#t|OZ!0Yn4+Dr49On<}z^5(d=Kp}~d z!s$f3&Wz_=nU-!C!LeHXJ8aN?%q_2pFHe7^n(oSETEQXw28g>1%6lWtMD?XqTwaKd z3zInL)G>bYi4(@gyswv^0mWy(RM-HjR^D-8(KY%LY?WrQ@$_jc(wP1v$M3Nhfnw!c zwcwM)yB>rLsl2XX#NSI^rZk>;8?k|PfQY@XiOn0!SJdQF{(6dJ>;M8(b8PYsUnpS$ zGcpq37Eid0U)Pyw+esQ&rJo@#AeIJ~bxjARpA*d4J}~7Sh;15R2HI7x@>(-FIAGCi z0DEfdYFMD{v9qY3e<-rFyX->cC%Awo{u1m}NDI^llj$(#(D~IjI0*rej!m&(jSqC+ zczXLDh8`klR#s4eJ|%!jxFX)kqLoriyoF|2_DlPw+Av? zt${)FVJ1abG`viA^5c-7ANT8N;S3uVAMzxP>7kmpq&XRpEFWR`7q&Rm98*^Z2Bf4a zDw!+y3|anALY11iAF}+tribi}AvD0Z!CXk~|6CvQVGAFBUsv^Ix0T z{QmIC{R1r+EO2=%=#}hhBmn}yWXu3sKS~2Jt}0)qvlMlvJ~&TLO%D6=UhC-KynftETj(^(QDwmTApl3VoW zOQx<=VFWr2rT-fJ)dyQ5jMHw!RpE(vD+#>8Q?F@f)@BC}usYICW4)e$Uv>-4I2;CcMPv60UsfMh8Q;MORb1irSq3BdB?Vo)SwaX>_fuP#iW!6 zLok&g9OiLMY-&$Z{wF(!r?r9A{-D!_(s*BSu+Bz)kBoM?)awA zuI({6Uv&T$L~U?*QTeSm!>_!oiz0f~F?F>yrJcz`Xf6tz3H@re+uzMjVRBpzT0t4_ zpOf;ukGnk^~i`f1m^jneG-c)w;-|;j-uX0t-O4#iCq|l=G9Z(i% z>KL(46Uk~?Olqyyoe}b9NY=?Xa30@lMqi-uW_AvsP0%s=&~1w20lTu#UF{SX8YJWJ z)ZIA*kdDgO!#(A6*NMhQO2~dYihGoio|d?uAYOb50GX~Dq9e{FD9D3?Qp^(=v~kEn zzPM}YEv@^F#AbIzP|kLl`^O+Ug~XK^EHDW8a6g3-wEdT#3qP7zgZ7$o!YET3t(bjc z<2m;-6-H)w+gLK&%)O$n5-h{+r^6J-a98Z6>n?6;V!X!^r4tyN0-U};MfvrdC%ZQp z$vE!{C4;}cp;(!GFTKH+=bqioh-`O#opf=C!@=Ng)WG06RExBq3Bb;!WQL40tup|g z_Jj^>mWSqb*H-+4D=Nd2n-15qMP>}AIh_ca#4ViD_R;At@g6lGK*Q=4RHUonL=z`I zAb9eRn%znZ<3QX@$^=;JmZi;K)#T6pm(67Dnd%00NA{rk?;b1=`yv3RSNy+8rB3|1 zx5h5DbC-*3iOCKVxH>Bv6NA-rLf;aqJ%8`6fuB-Im_j4dsvPcbz%Pjh8}_P)!6D<& z(LV*6QfE6$$*sK=^g()hR3QwVz+c!&IbHxk6pMc43yp@UTcNgVI$5VCCX z--+fEe?soy#Kk*8(3eil$c5sdNn~MK4Vok{BZnI!;ju?f<}$Sq?J1K>>lwj@ju*Ij zCq(z++yw8S#la{|kp6?`5K|P?@hnvtqZqv2_6Ru_gVHG@!hA)ZEI*Ev7LlHdLm#n( zDN6I@#?Lp|N*ecxbcc6Cp_%tMLVquKr2M`*Upjd>U^n$Kb##XhoM)UT7Az~+K>U6l z)-;v|9lF2ptE{5a{B5kZQ-&`jU(SK{A4g{`T!Q2!U)^D_knVYuDgJYmJlX%3bQ6ev zNG+xQ;&J)18ZE_j8w6WJ;}THQn{F1CuDl^@fruAy6V^CuTN7`$Xll`gX0ewR-u)=Q zg@PX71MTzW(<2E+QT;{9x@h?M31Fnn#7<5Q3(<9#+h0JD`fcgSy-S2d;3=8|=Y)4u zV;h}XQwj6M*iH`zD69HlqxJlobGesVdfFsv-r(q6gxPxbLSOp>i)~@L{8Zg?w8J0g zh5vs$^FcPQ<{%ljxya9pKY!Y!fcO=Kg4NL)h$m-xu>Oh ztTl|*LLWeuNlW9%#_(~Q{h~~sZ)i#l`*6D9{lf}Oy_PrR0M)23K=FrMdbb@L4l9)8 z0t~GpUJyy7k&*as3f~5x+o3jv&7VW;K>35$JL8}e;(uI1YFHCqY?#UUV<_xC$~}&7 zA*oH|=N7s32>|ah3*^cGHBF6cKvwa87wY&#FmZ$yPzx(B(sA>$g@M5H;wSww&s|PYS+>9Tlg? z@$oliK{<`6u}?y+BHS9={Yh1s)-UW{D5r1UJpq+-F*(-L3W5J(pM237G>-G9oxMez zW8g)iwpy?ivs*viPeEn(;D+p$V)*qMvSP2o(H=9d&?FXBOFCOUpUd?j=y13M)0Z(P zGUW}9Iz@_umvhJO9VsY=aci;Gu5dgx`5P~UiujCDB*lzv-Yb#JXroQ_H=&*QO%bi| z=a98r?ej4hs;7E~sProBucQ=XuyOlY1>6HVmJ?ybQ7phoUen6;vc)|}m5-hvCu(CI z_dRozEgtKF6hAy3UQ?L~CESG|C(m5=AKmP8XeaNdraAjSwo+90u~o9U+?5bnsHF{T z-*agj3lX@CqT=e}GQl^l39XWYsv~i+H+(0k#||*`EI%*o!ms^TJ2se7s%c4!A2w6m zH~INKtL}3VDy*83;Q|nL;)T7|`|elR4Hpm_$|Ez7M&@V(hFjRL`_W9DLT)vN2BU^x zsxD<7hs}lH#2&ol)w=$q3$&Og_*`<}ba%9jNu&GvW$==7kBe!T+h9e|C(-YK`973L zp)7z89i&>rh>OcC&W4*OKOB-T4lu5~1Nt#~U0XNF+w3o~C<9t?RuqmK9Om3+gBp>W zq2%mDWw#nlRK3D4o18<;CADBpEd;@O9~}Yk8Y>9Xf@s~=MsGc9z27);7DABj_n!kPeV!q9K1yihg<(rlxDk&LOz;i1U4b>xnWcON8x(tCb=~C+qtZ4)?92>?~^m*>F2vh zwQ*pUmSSl^ac!ts(}}t2X=o~!OtL6EQee`KSCXR)+YL=NdBw9MS`ie@OC09`=xE#%8NxzrY7A7=8o=#Ik@3adQW}_u27>;79P3&VDm`$9--*j_@(HxQ z<;ht`7BDpaQ?RbEdw`FsVtu?G(V$2#<#5E4|5nm|``IW=z(v&p;#DhqsVDSBBuJTF ztSTdq$Vs<83%g?#d;FmF5NnAHw*n!-0xJ~3-hte^bQB>s^#G*2pchV zEyi)gH+FlXs!#|Qm_96uztIcuBIj1_tt`;zap<&Hp&{x*!(ilai+ zwKRn$ipPI+I025z`ScBwCfZd%GfDaR90^00v&UJ`@ZLGiM&A71M>zADh_t!BgS6gOBEy1Pw_^Gg4BmQ|Z>hkndo3-|dykWb4L@+Uz@FXfOt2=$_Uv!QsT`-;H>FkJ`}5OzjTqUHt3kP;p75tm zf8{nt%8cd`KXm?%sh^Z#=MJ_}Dy}(xq|+L#GxH7$C#HW5W7v3#pG{i|Lon(>p4?kA zT9vkZrdVj??eEwQv_HGM@ZK%2$g zkYkbpbx?k8^oVa1*v5sT0AJcjxXWO#o?n3k2+pl_C-M;a^E8jv70Sh2&>T&T zdtbW)rY>ND=_QQgf{3amM5hQnZOj2a#4%jR(q;|xL@+yUf*W&YS9u1?Hl%WQFdUKh zmoMf~x*lM*2}ZFfP{F)Lr`PWFv@qk}qS3f44rkBh#crB}iXPG6vW&3?cz`g|rnVwE z3;E6-HG5=FRo%{*UQ;y>snma}8SvRg0dN<-Lc_$+%FztZ{Iz~{#?GP<&w=v+PeDsO z=!W}7N@|O)-!iHX zT_I$AQLC%C=nNb9C5ztp$WNj-l}g z&(4*kQ`aFoCG_9yqtP9jKD@0CVGv>{*zu&bxc~u zh51CFkH&JYrwyFazz4$;N^BT^wAIp5Pp-KI}Mc`gn*A)*=Cmmjf?9bpHbW<{>Mf##z=#VrK#DoV1-+n;`SnO;S|~P<=r&UPdwj zHL+F&nZODNAMb+Sx%`W(G``VquOf9h$g2ojzgWKLLwk(tvt0e2z{B1`M?|Eg6 zthVoK3Y^1xlfz8p^;lq>roCeZQ6I?183;aQEyJ1}e!y(|`V1u#hSMP5a zVSp*{$3APbq@ZCtoUu)ysJyQuuOJZc(+OQ%UCC3)O3KDp{dT$rc=g!Z7qg_cek5U+ zdrh0LeYq0OJEJX z4kJ8y>YGjQDtgGqzyEC6q5_+$k}@qHol# zGIH_?km9>Du0_WS;knLr#=H6;PbKaC-$$L`4zSj!rNrSHRZ7Zd4piO&KHLLR`EA z8t(NQ9nYfteitSDQM@#Z|q%Z&<(k-z_3+OVWem)Zcy80l-ER1K4fJWKo5Al z>am~P@tHxu0>9*qu6jC$Zu8>fFq`Efg&zSkn%U~6H7?_Q0-W%Cq}NmJ#|~jxWqSS5 zJWU2ix>EHR^In(u&Mzofe$0gY0vfrTY$u(Tk&D1OtN>9a>Qn{KII+r|cG7Cu-rKP2 z^Ng08mnH2%GNEM~z6YQmSU^-53tcL@{CP1fy)`l2wLbVVgofWfO8ps%H(ZN*gx6AT zXp^-4EcDb@|M+_4cH1fXW(&I^&nQz_g0qb##9^Ben6ETO}{RD9ML7fIECTe!O$?BS4C0vmqN( zQ-XnPf!s^EHzuaq!Oo=x7D8V$fofbu-F2ZLc6fP=#R21SL*5SNjg5qO^uFLS*(^}`r~ zDbOj6k=o`^ulaoNTTnJOUao_`TF*%F#K5mV!umm?0tEJ2heoyJ1fvJSq(4vRuwZuQg&4j+`{X;~P4ZxV3Wu#3P9a~OZnWrGUL8jQf%F0%Cc$R(YUFIG_M(lPyaue5}@ zMC=mG4G2f$iu^y^`G#lw=?fbEvm4Ba!L(+N!B+%6x=im zSx-h4xrATJxI&EtA)!$d<@Ez?f5vU9;7$apK4k{*XF>7I>Sxihn^FAW2b1m zV;j2=8W@>>wOmEvZ)3>c{T0-vodW~8Wf*=eM{Ryb;HtYHbtN!(wxYYtW;j0kY^gqi zPV>|y$1)3z{EhJbr4~v^^u>BE422B2SOy5`1@wHi7Q^Da;yMojo)HrdrwP?RF8v{L z;n>c3N6Ur%v-^8~eZ2v_WZ-WWx%DKP`kjQdhiG@rB+l0f;(AN1Iq#HCm`YL#q zB?{9v0+Y+4u&X(++@(-C2xWpmjvi@!o|pMMTtA)%s`%n^V3;Y%=%Q;S`8#i}QD+ao z2kd9zS+aVDu=~Kf8zQ*>Bsfk@uSprZSviCJ1`FQYdX|d1l>E*T^m6=CO_odx(%skH)`9oSz1v&>|pF{Jy{IcG4hiPL_JO z5+Q!U%m~d3kHu^7M?=jU$;POjBe~OfEOYbM6Pp9R+${GWgIwH-Vv&Y1w_R84bgQfn zWRR;4JH>j~U_LU?Erf7_NV*DJL|WGJ5f)%r%iY@oC5J6p1twQu-`^Km{q`*^F66F; zh%d=C{;mo&gsYr=yY6DRT~xs$VJbgnl(yajjt^WEHL=i|J3*o)5;lf7?v z{XzMgl^g&CK>ELa%RrLf5+!UgXpDD{pio}YtG;WnQy~~`U zU>oLKjqc5IG;;LL=hVjk`hWiSL}n8g%>LR@{>UYiUi z4#%w*(IY5ChQXt)t!0%j5n0ag`gQ}(dVvQeU0Q`7kl@hviic$^{GfU@Wy|47({0n6 zxtu$h>1NLr8>w{5F8{O`D&s$K;9tm0V^=k%*kuJ`h@uwkA+R?dsk=g`Bt2*GP^2x$ zx`+~g(`k%^+ESQDMo>14(t$xY%v}ewA42?Nhz9S{hPIaU!?rV-`JQUx5FESQR}KG6 zxs9ONjVjPgcrs}=Voai$cd_zHPYWy>Deq-c`c4L)yx*$@Ao`GPRbj0X0gJP0N3#JY z(PrUEq3l^K;S(!RoyFNiPZdqt?*e456+jAxh8{%12}`+MB$qz7@dyg7@K1TtNl3N*pIXDO0~1c(!b^8_A$`9nnjIrxn0>U3b8=% z$N8CKg)wFlyZBYJ`MCM95NVJTP>wyIz{=>WW7M$`-G`;sZX)i2)8`#f+u@>qlVwbi zeAsU^-;cb>{ zf2kACq-bsNn|m48_;+>j+)rD0k85MLXU1v5gn;xY zQnrmrjS`vwo)J=K84#!%mBI8>_gna!~97V`bd zSco!!U!h>@xXF;7V;WmDI@kAr+cfBL-y9|Ash(oCT=i`zBe;QDXo!~3eb|^(=p}X# zrg;aDt-Gj@^rt)RFhjCs>LBeqSaS76!lg%mYz^#E&65ECz5OL%i)2Up3vFd4l`xq_ z5WGR4u+R+()CMc*t z*E~;RF9%X{dUIlsRr&H=RIU#G=#WR2gE$$l4v8Y^S3ooJW2XJ3yXQxM{>tK>4Jl0u zz|@`%{$Pm&t0PY=xm3g-+J)*x>;oO=FmcfFjwuVHZmiqSx6eq|g&M4PJ!k4rG2VDNiDPzArgVTHy!g!#pHKCFL?;4mPy*`D!I{svxo=)XPBbG~375xyZws4xiR zI@BtU6AS1J+##bFtJsNNOY9sN@BM#crw-ZjVe2|ku-_G_ z9I|r}W2WDO74XZAR(}~ed)d?cXTPhapKbjSQi12mK##xF$xrZ{yb1KOY=xUskrWXW z?Fh|=dIrN$FPAZ{?t3KadV^hAf4_T zJpu-o1eOV6`Hdf1TiY-mh$o*^H};9;hx=&Y2$_F{^H~x!%9NjE$fMG!A1r)=I*43P z&1ubmR%x{gE_}%t`mF=bgO`c{$R&_k+0@k4I-*gadY2Xz{cwiK4*3U3mmhmk7jtFo zR>XvH!{abtge~dU?JNsg+f^(om^y;DNUdOR$r8=OMo-(Aj@%lS>*x3$#>dC&12#RX za4rvfuAvDEQF)>qkTr-ILSxAM)gzskg1dcrVe)ehPyF5KWetfbD8(~0C<3(V_4W5pL^t!6uOe>f zJ@&S7MT7`VW^gcs1E%qpIc+$JMx6q{X=@;B@F{G@Ae*w%F3QOcNxvN$Epyf4#3}6# zE_s1)bjNoh2;&(gVP zocL@{g1wl?-=_nLCaMaBEH?pFAu%p&6nww6u#5tS2J9K7sg+(jlo~PHZ_N(wf9wF$ zJ4YQ?0E+1|k^Y)%TMrL*Ltl&l3VA7YA+Dm|Ml~K<`SJ1;c6|!3t756>_O@=12a4F5NuVY80?nEK1EWW0_y%1OLG z+IkrYQpMag*Ca>sp$2E3urMh6I{z5^{h0v7Sn?{QyA!4?wh+f>^d`sr&&~AI86Ic7Fg+Ho!$}}3 z+pb^f$0W;DTJbni7L?ZYItQJA4EbulwJi8Gl|ju!P)gM)rWvOd?y!K3nIw!nDE7Pt z0r|(k+>6gRm(9c;QUHWG=v(M-s&ZiPFVQw(z4Dt8kW=T)0*p^0p#E@-R^iut_Ou!W zR0b4-pT*UB3=vcnPmsaB+Jz{{BvnTryRn2tSIAp4V2-NlLXnw*TrO(zYo$`F-sBuL zuVyJvpg0U>_@DA=1m$GoV9-u`Mb4JPw&P-yv`e3)@Ng8DF1P~OSaVDbY8b8ayprz~ zFQ?;i8+&-9&PiY7#%C%(D#SMhAp6gHbNa9|60`B`?{b;{z{ZU|vU2n2r_3oZ|) zjaw7eS%vKS?%0D~bKO+jqHJ`~52*bTcg~ucR?{ABpI`BgtlI3%->%cdCz8k;6c2)h{@6EZ zyZ5Tpb)+H#4`&!r?O$zNR~H$ciGJr^?BVSRH91Ty_oSq#=<%p~y4j0?6E0hqJdi_) z)3*m;Ax>o|8%>v5(~SUEL)6xNf|*_AL7t)%L4B=9Ptdp@{FcNrM4C2kQ8JxK%C_!& zA|qo7Zs>L~EI&Qj%g-hd3iItNV#*P^GfdsDNel)L!4OC&6Cr-mctCPQdAWO+k))|x zm71JG`#>9o&UM_JZNuBM1AsOltLr|4wdUER%!Jhw(C-pxn&&Ht(5ua>@961$2T~fi z7*-`H<7jAx$ebt@Oqup75TRbMr(ZfbNoKxO1N<_uy5zItFJH72c)|@wpCfU{$B8y6 z>#6Nj+L*tXbuo0jo2r0Sv0|y?#YKYyZnpU%vIul6Wwb+WfDW(gOqIM!^<+&tJDNya z^T%#ltGT*?S;76}4HzhKANGU7xs29OAd@%kwr?7Yo>+wAjFHk6l8Q-h4 zjJoOZ*K01{ktXryTQ$16Avvy1pDx9j{&d zqG1iL>jLo&!8xV+>t}%4cEc~GHXBP!eNxW@;OIP84qKikV%-F5o6qC^{nZUm#tzIV zZg8rYgO=3(3q0UA3#+o&SytPb-Ogwpv?v+>PrQmSt(Vv~dm*+WJ%|qtw42B$OFd%? z1bLohtOAUeEu(u=kzWh^)_0lhcdKg`fx}ESRC!iW`u*_rg2$3joU$P733KMp{Oso> zgsL%)`IjwdH+1VSo(Jk*zgXYmu8qBh@NsWkomfLI8(&GWSObi71UpJ*aMv*Q(Q7Bm51iBx>7PwMFto`Bs0O$7b^!?h2k~ zgCk1GdAfJ|bnsS@14tWy%KiaQc&+9UbFgzeZIO4U{A$J^KQ39k%s1+KG4E3HW59Gd zMtGHl>uHe$1T zM$`@`kF`jTurAN6`Iu)m+H1QlH@y5$j%_mkvpGyWck){A=_T{=f;L3n%Vco1R}le=?d$d2m)_Yjd8wa;>w|ZoLw(S&=Ix|vTl$|OBN_>$^*X2#c8qnI+w{@~ zr<*%}Wp%NLWg#SBl;PRut#P5{CN!nTXxW%*K;yShJV3?AwrWxP!ypuG5#zGc(Ghk; zWW&D-7Mqx zfxuqx1MFz;YBkD+qkV^`{wNI0UcE=b`f@KssJsM~Up3G@DqJR{Wat2zF?U``Q3-E$ zg}8R0a6lwf5SuGvVE&x;6HTfQwKA#kKxhEWMQ*J7dK@)yV9%;+N(_nwq8>MOg7Afg z^DW%`oxT4@&H#DY@^`p^gEj|1C1%zIS$&Nl3`gMOB@3^bfskZ~c^r>Ambt z(pKK5Fc6;a+VsSu0N$z{H6rqLJlUBM zCYQ#lgduFOYs$w3%37R#g5cG*>U9!SOSE+VtADsNQnGb)MAL)FktQx?VOqQ*N`d`djXvwd}UF!j*eR_ihhBB zmEx`-`6jtz4a|)v+Y@xW3eQ(b8ERLm>!^s}xc4s~QLrV)DhjKY&6;BJzS3wLLbZbO z=)D5iFx{!&>LWhB8>ix@uS>g*zCf{Vt$cSxr*E0F8$crkne*W_S?QQn1b|h=AIGnq z-}6_;-b#i&R1>^B^>7>-yJMYTX_N;TdsE zhK|lVt!}Pg*dK>M;9clgGyvsXR|ihUV8;21E5*j&hdW1=B+sDgX~uDh6dMU9R>|sh zdRmn(f+qS(cOr1Sq_do01p!yLKS`(}Qs8Yi$LXx=Lwbm?8yCc_!2~P=(mytomGEaY zj%(MUC?;wa;8tJN7I|{6@Xxq(JZilI7TXS^bnYXF|8_cx;Sd@Zr=L^ zSJ$<>cdX29-*-JY#`N7@*0$eTdNPUgzSM@6-LWasJqz{v?xt!==nx}wUnGmenpx-Q z4es9z0_;2ycsJ=ikPl#RmZtN{Vq(bi!?(Is;BbIEd@-RvmRyWWK@Y~2{f~TK@MQ@u zhZFb}d^=Z?uAVh4^%*6@`4jcU%?|24Vzh+_mq-&Xn@2BRx-qJal@TbSWKA^6_$kZq zRyg#ddr$gsXgxsK+V!Lc2B9U5ddofzTpO@`{4xgA5MCYvb950L-^P~+;~t-RV(EQz zc~&oXUl|*E^Pa9a~=CW=ZPnJQ@IIACr0J;6f?G!)Zl-Qv&kRVoxB9fW(S_N| zSlXBfQGuC6fxNJ1o&l|PLvQdl^GjmRe~E{|Pbmq4|0~O18s)=NNTnz2GHv+m>l>;L z1bd-(_Rt6sCMc_#E^fl-u*|iT9Xn_XAx|N#@8(IeZ^(2%BJQUn0ePiS{AZ{f0i0so z_6!5*yh{jt$FPBG8Z9}XuU+XC%XY;wucr{E!XMcwr>FL4`hIp1;rafef#0ORS?Y4T zq?#PdOmfG^!D!~utS(CHE=1XneobBZQiG@7Y-#-;aiQXRx6rawdEf7ujWH=e>bw&< zbNJ)-`r+FSVo#=BS)MCUCZ&6x<}pIzc(QSx#}HGYJyxsU!K*bx;>G}iiTPouxAkKW!Waz4$jLf+zn|3UMV)6CG@dljTcSR z6vp_*!cb&VE9V51Lmm{I4nd{V#%%cYoA);$UdiI{hLbgDl_O6nX(OokXQ>JrJC>wr||mTWFY)Jr?nbVfD|`FL*f1 zqK^9wx0CIu9Y{7)^bNOlK02^h(;`r;)myGF_0akEW!jF#x`&gcs$(;kt(y_F=cnK( z#sDylGDXkC_)Fo*;?;E@^$Y0U&vE4zgJ@8kEN zCTVS5Fq?2KzqsP8K1@@l2i@am@8QExQgEWPa0A`RG~D=Ov@>#d*Bm!Pmi!u0TP~$b z{Iu6OUudrwE%^|-RZw*SCvL419^CSzTG9FeQ`a>82!m7LYR%I4GA56$HqW8okfnNk zX*Kjf_1#dRV0K8lsV$!VkE=<5&E)m##Y{679MR+&c8Ss5Rqub4PyjbLTRK4ZS*orL zJr#CcJ=!^E%*0DBC_G6;uP#D8?gM|a&5fWqkym<67Za^MVqcfq)xJZ)6Tk^(dg)9~ zn~@+8!C|laK8c1YRyp>FNV|TC&MHhSpSF^^@qtVHSDCHqIL`9(T-^78)J@l#<16w4 z9^;kw{H&&_Cb$Ob#0`opOTX$h)-0{LxcGxMdMsTL5MWM<+T%sx`-|dJtZ4d(7Iw@k zFcmcVj^eYi-+8w{QrWbQ&(V5dC*mL9%rJPlsX-+UVU!vrWc|Q5m=hfAA)X-+JbpUb zFlU`Eq|~y~v4APgLVNhJ4{apa{QBmzx*k$O9@9|quah;DHa!0N*rH>NqhRF)D067p z^Nwf2vr9-oLGHf8(pHTgC|OQM8P$O8A|}1U{SN$_ov8nkB&R4hS#3d6q~T!&d%NTY zkqM90J*38y4C>(>r?gk;{mhTcitDf%Xj4N3eZ#?H-6AYz1ZXjJ-9lkqB3WnBOY=Q5 zdJ4|N{2n`UfySbUViz`YvG8c-&ZA&|6bplz79(|_lF3EP(ZcTAQ`51l?=uu%a{ z)%T=yx@PwjX|+Z-R#pw{jGyK?ViKoaNeUQE{;UkmMb{Umc~Q_&by6pBhuAaI#|mLZ zbz|F`<^8ALlC;D{7_D#}ptBplzv1K0EpiZw_jk1ztgz<*B+oaAcQ8n5B z35ac8_Hy!hvFVS?Ng+hEFN+z$w<^q^Dq@=y!54JCDO31`BEeTf@^Q!;9YAA8Vz}!I z^TxQ&c+UzT%&20vssB1RHh&)(a_B||(M7Pfpa_bj`CP@6n?Ysvih zUl!@kBx~mI7vU`nw1aF_(e=ykXW66=p!ecyZCym1iW(N>F4I9f_;D4p_dB!l=wt8Zp61C-I(Cz)1lK0QC#b*VMb zT?LhT{3?|e9>tEQ2lDl%Fs`6f+l${Ryzqov_e{W``MD&x7=*;;?3*f!L=n;BoXf0n zAiErC$iN=X;3z+UTIXIE`@`_iafgRmb!Z4-pEgOuNFt1tu&|0noPUXl>duB1{hpg3 zhB49HK#t+uMs5X1hk`i7$`Axmx@rMGXogvzFHjz04jmdWN;o{JA@Vtp44qtTp+1B9 zg*M0Uvqe9t55$e_h8)P$`@9Rvfy$p0lp7skvei_EQY%=Ykaxc%Jf>)HCmK7XTWn$B`OUq@32PkwU#UCnpWItGhC;raR>?91+#$1&r&n!N;mSEDx zKC{l`P!@j;4oik`CYu7xI&d;@ArkupI}GMH@0FuPC^NG{*NRp7_B`pzyqeIuzP>MY z;GTetbz*5Jof77?d0c7z$FEZ3VQ?NiRHQ!%b!3XFd+B^DYX)r4yH8igG2K_FHr4*6 zLx%~lFH3_nepDx~f_O{h8@8g79io17q?)EtjR4Gs!gpxM7x0Wv|7> zs{w?K-AwH8U+tCb;`c@4V+qtJZ|0W|oDUgtT`yq0qV{5?VC0ooqzzgvB9vQMQSrM} zQ48mA>_t?=?d|?#xws<^!E9DS7GxVLVZ>yl%`vM-)JRvbEf=pgwfbyv(zHDH?H$oNj|a!y!r;{(W_g zHBb3Gu2N~MYV|5D?w*>*27JUNzA04)8*&^7!}qonb-07N0` zAC%7#xh!Q@npp6d4e3Dw211E^uI2viQq!bk7tL-2$zqNqx`ir`CHIuK&~r zdE`SxrKtR&k2xF@=sp!w%D=sg`4V8{3@3(D4NrMTbM?J0F~etWz-8uxcB_&XNU_+I zfi#GTpHi{J7*UMu?4P!@L%y@!4y-q&sP+3|)OiZ&QRl_56bK=|#x2Ak*aI}37Smx> zRiMah4Ue}{=Fz3t&(51R)#n^*W!|z>kal+SFHwL+(e&1hS@mKva7H6YLo7zN9=(ol ze0ue#JYFtnzch*HXBF;z*i>ZxGYoB*wE?z+juX&oq+3Y14vKtHQctx(l^R*kK+ z)H3fS@`Z!CJo5z*pCtDK6v5|wv@#x&uxQ!g=co2etzlJf)v+=3Ho$OD9gI?~jO&!B z*x$Ot+qX*%_n@Kg{in5Q`&MTzz=<^GBva&Pzh|=0wX|IZUm3Z%pt!wpWnl|4HarmO zpJ-A9!zfPT;kcwIcybfat43w%J<$X~ug6FoSpLgvjZQ4z0}pP~bj!b|N9(RsiO>`1 z>FFD4gy8}%ZORaY?Z1X2DehPACBcXyLO z-fJz&A6jKniYO`;#&pHqCyfy~al7gmwR1jqKJ^gGOVa|ud^onQ+NkDZ*d5N%2 zoQ`76R`$<;p7Wi&bCYckxqyPGaAxm!T!X`!H@UgRTXH4UVKI-k0HQViW7}_LvCnj+ zi-CJ#;`hqu9K5fSuuaBy%k;#%^>OZ=Ovn(YZ(c(69NrP7!#JlIKthp^Cf`*$p2q25 zm#SZu0WP-kc5pHRWQ8LqS|YZ#Q`%kXycBk5-+rFp_;{u&N+m|3s0pYDHCT=;^R*NF zD!`VaP5HTi=4apclx8*IOhIv2As}aZZkrfZB!X2>X9%crsBBq~eP54(>0XrfyoX^4 zUZH76>)Qs_PT1aL{haV7zxi@jhe0X6BD^dPCf@z3==IAc-)tyIEF?NIh_oywl5Or_31T&eVXDX2fyggGZroe9bdMG(+rN>WB;W!I|mXl;C{{fvmBGHUG^K;dyG zMD^)Ihps<2BMg6ui%_Yh2e^GT)-uS|4Z7G34HFrS`uIN-bc+QnK;?7rmi-au4NS<3Yi+jbQE4hXA*hAiau0bv)+%lJ4 zX?faOCR_cGwG);;Xnou=cEq>X&FqR;pKv{wWd|a0wk0tIujlgj6g?G-=~KKk?5(N= zR~~vU`j42PksZ`qDwnlxsFp^dlK3szBHv9y>uXG@9$K+MXgQNv9yssNxR_Ag7A)_9V)c-Ip2}d$r zu?a#8>A-gb?^X&n4v%sJgkAMR_IY$+ntT}rk8SwXE~wHJH&=v2#U1hP^Xpl3WydLE zTXl0|of};kbRfGjD8*y1O%K{&?tWgtt##QiGpsByJC{gAZG~cDYH)M4qx|q(ls>aO zs*N=U$zYZcbC388?zsHW`k}=kO0VxC4g@%Kyf{rU(nIhr^+s_r6oadM5!fJpLJT}z zfyWTOCmxZXAglV*;Af>9f4ceJUe$7>KCmfh+R7vX&&P5_UO9+(| z$g|bV2*22;DGs4-K43;?p&ULx^u{0SL24z*Dr&QmQ$d}SF`z;(BApy6jFDOs6wV6Z zCo3@XzBrbXG^ZjeVd6gbYHE~kLGNKV8wUl;&_z;>)4x`#+3A^~G zM4{U4l?GXZ<$Z1~TVvW)VNc!F-}HW`hkaHu3jSzi?QC~2JIw-ZT(Gh$jlWyrBeawzkGJ3UkMNy2$bx zl>vu|6Y4r_&48VR9#Otf6BJ!)clQqY1@c+fR-CH%awOCE-;d zg#PDTAw`+jzY4xQ<+F=wf)VJUGD@yAukeQ= zefE%fxbKn7woC7@tBgb&@eo3eGlOOovv^h=E0BeF_!CR}yYmdUMkpr>eTDy<64_*B zMrduCL9B|!GoGm#L*hpwik}oDgC!#1yUq6PYde~_i-FvmkfRLMp>7Tj0tNqDmqb9{qD{J%(-ig}vffzIL_)>^MNE?^5yO zOQlCU(=?`14dRSxr^6_jE3R#QgGN2?3I(m=KqsL+UVDRUU#t69D}324 z&77H96=%sU*oJk4$+N~kR&=i^_Y`Z@Tfg)aXXeFG5OW&!mia>e<1m9pO-` z^CiVg5X9#8Sf#PX$jl!$A)fGz(czs zmMp58G=u6Ik4eG?=QWufYa9n2wD*MA2m=`yKdpNyZMm7o9j`sVW?{dhw1u~4|G|g2e029&?azF3 zehWCG$~Vu7X?Y@n?MI72R4>`dH5IrWS(4)w5l5{aoZ$?tNTtOJO+KJdEf&H3DwOst z$V+I_F3aL>g7S<5$}svZqW+LS4u`~tOXn!?i1q^QE$(v@+o~ynyPL*R*&Iv)I|KYK z9K4&wf>zmTa%2{50mWY);ziYTzC`y1FbMQm6ZlhOL23L=nWgB6U<^wvO)j% z`URTB=R)J^66aS>1Twgl(Z#?B>r+D%ld}-u5u-=ka;vOnCWPQYT&-Q2rcV2Q9#~cD z+2Ec{q8kg1EAtutvUJ|9rSxH{jrZCsg7jH5d6`*U66vQyqCib3l_p#@Q!27SGwviV z_nxnP%p{nL=hQ0vsuRvKnZLSuYrKeL4t%j3Jcum^Pw|mCC!QK?)cQr)m@ACL*(3$> zti;D?k|H=(9b{n_Lfb7aAkhhQ6=~EK#JcDx19>WyUEsB)LSKhW-QHF4#|&| z?kUWbF}5r!)8AqgR(#NL{CujS!h$6Kam|y&E7wTpegTCYrA@cW<#3n}-^hP$0)c^B zNpy*_>t#(F^|wNEJ72>^vCen9Kx;lX(f4b>dC5(WeAjH> zVh##*+ZK{>xgj}%a;mQXIs@=7s5*PrKEo?`TT3;l)9$>>(zg( zFHEd6fkve)+c|&(sT(pa@2fA${x{kaX8w{$UfCZFjG$s|q*W@(09&#}5s2wy85R;L zD3NyvHwxGg!(Dv5w$~Bz__6{Nx#JFzK^_RKGk|MBnLN+EhoDpvC!9txDhv;?n~PvR z2egiOVx+~irhjHAEVqIli{W`OA%s2q zVEch5WwXouNSE7CMCvNCpWh7rZpd#xvsp<)s~7>cQ0$_!4%L_Bmb?6y1K^Zxr}rz< zvM%DcucUwdfpFv}h0sBR1Ar@I>nRg^V9B5^$d6j8sTpggi7=1f!i0Ukk1=1ovfypW zgIVMHl=cG?`KkIKyGW=DN>tJ!8e!+GdCb1hq0fPtw^wWt!I04r`1?`_ieyI9$I$Qi zDqvHdlE!U(6yT0pNX2G%QvyhJYWR)b9=~PHcinr5!6r-p!qX*hEDN$x8fr?9(&sEl z5qOk;`_b}G6)+0J?2|0lfxzgwef$t7eKwazNP6-o1a)BeCdAWMelRl|IzCkMo@1dc zQejB)?jGW2xP`Y0Pbd>C7HH4+CGw*5UJ_iJ5-?L>vB$%^c}$({NTKhWl+PMOAttXQ zN&{3a_k20X&J8;it1bnf5<_b8Ezu#MUZ%HGtls$!fLTX7{IbWAg)Y9^ezOjWANOwC zcmLz|Guy@Nb}$zS6DQo|Z8F?oUUKoYyW)}qam`}vGaD6jRb10#@+r_#-UjVZkQe#} zq8(?rE8sCruyttiPQ!B9B__)tsVJTs=aq57K=JqFTH{v)C-_+Tk$4a$xqm$&=HYoUfu@Fr3k}i zV5kdpeaxxevrYg3vzWP!e=*DgE z#F2tgokd&1{7w17GUu1^T3}1~mN{Bt64?Nk;9MAu-hJ?ghn6yu_t%@cBs~8n`O$pS z3^1-&q&H*+U(7N)6LwoTV${F@T8{hiP-p{dHx3VIw=!Ijfnvw;s=Dzb#A~vV%KJaV zQo)QQ50sBY^p`ANY3*1x_&k@I**-&& zl?9gSHtxLwYm}UR7uQlG*y7P9T)=T+Ax*F6wzXh^T?}YdR?LR@WkHvbkuN8&f_Upr zHOEiHd&MkC>CLRSV>f{*%Mc_J_%+07Ku=N#s=xA*k-ay9O8( z2g3(6{{<=wbSC*rDxz)bP6=n@UERY4Fp$5_l@V4#j!-N_Y24+sOIn^A4zY<>($}FS z#w`0t^O7MC_S`{~^Y%EKh6QB5QxG4RJT%@zzUyC?@>7ll?UkWME5|KHc;>J_KcY{$ z!L&&BYGc`YLRpZ zdAa-{d~9zn;n;h%k0Od3G?N4sr!E_x#L}fb7EM%?65pX`?~5v)I>y`hGA}7be2Thm zg4P3(?fdS422yiz-s=u6X}_SryO%#L5JTQ{-vU`H*e zgYl6DC_OmYQ@18YcYW|A7r(S1-19i@kRAc4xf-F}i1TnJH*k}zA)$4T#6lg@YC zIb7X;{Ovpkg(bQxx4ik?@Y^+h_3>T0f1pC+3OnT z07NT;C>iTq{HH|1w~PTr(CjbQUx8Ex2DXM+)*W6Bam?O0`uk$A4gxzqWqkbFZcg??w!g_Cd= zxMUDg@Q2XlU!Q(}Wr&8CmnR?UX`S_V#nPU4`p_Y*gglFDZfj7S-UWSWSWtRM2tB&e z!CXTrJ5yb8V1t6GfsC|$w|$Bf7+o^D@3ft{sN*qG5W-sGR;R$ryYkXm;YdrAY$S}% z6##fxIJL7obSve6ECd2H`sdo3wcvt|7pE1W@=u<4ikqZcAm^XMdvkzCYQdj%Goqtj zqu0}FX^ca#^lL@ug=G|}g+AiTwLrh;2B6jG{Y9L3Ts&$eBY*#g(=uJp!A>X>{}qo? zd?vaa?K&F+KyPSX*=EvGzN-AFd?o3jCdhrLHpf9n7^y(d2hIrdGnnE_jB} z+IcMTkM_fnO*^vXNd7G4HJq)+XfO_{j}UPc-h0EOTR(nI7O|lj1nPAU+2qu%ROPTe ztBK}{)9-YImmC%Wtt*k7%Q7J4%YYyaa@mSZjg<*Qv$dWuieD*@&Rbn{IhqyL8rX`x zzNR|=ou7($93InUNs!+hg}G5y)_?Kbt>t`0N@-BeHZO5ZK*Oz@lT3i~=|cVZ7)!h26*5S^9Y*lT=@!K`)t~ws zboVNuKke&fxXVZk1zYmLG6sx^R|yC@c#Z_E??P6@{OND0xzLg9B8Ku;rhoabe2U$#w+;AP|1`De58t?LHKN;+b2?o?-da{0jnFV(L7ubrjM0sA;5j6qeDaO=^n}k z)eKHBN#37}+pH(B1Q*DT-$Puo0vkfYp9AgAypb!`EpuC)^3M>=m;<`$HMH;a_olyf zv&FL--}US^QhVJzRa$VD-qI=cnPRK#;YOo4^V#vNkG=ieoTgD zDNmpVtjJI|mRAt8pF(%5M3FAC;yTb$WaCnUaYv?v$gHvSoICS6lc{K4ejs2w|2K@+ zEoQ5ZzNg(v|6n{<4C^x?z&9pYz8iO*;h&|K4uAXhFY$M^(#%X_3-9tG#D_Fk6~OZ{ z;G^G6uLf0N!$GLHV`azISWU7Xh-4HaLZN3_1s+Rjk%Hlvl7&x1hs`Rn=xbFgi%s^Z zO~02kPa(6aMm0^$yA&WD6rpj@HExEoM^69Z?<;OAjSGbSTni&!e+^SuW6?I-HhY!x zVqY(jeDa;j|G4p91%kHxqohj&7I=S+JJfI30Ti#;0vO1!K8}`c^B90*XW8f%E(wr^ zzr~PT>V%|A?jP1lT)P4x>D}my3nRHWE~1+y760#^SRyLy;?s|13Nf&AgW$e1{sbwq zx6)Awu71g7!~PUapnyyV-W%=eAfDf`wG{r_Fl`afEBN${K1kZy@zkeaWq`>g?|B<( zK(~sp<5{iEGuHFhHtOfyj1>CEZd&7lfXl(^K$6O_o;qBxp{xE261Nfs&-fb|l{w5$26^sg1{v?~#Hel zJIO~KGs0T4EwlymO3*Pf%pM(f+-mMfBy!+L-+N3TKuRoR#2IuM7F)4PE!=(_2Bib+ zT2I;TsiFO`Zrab{8}A1pV2sTyop~9$Y~18Y{9WaCLD8Zx1lKAB-U6u1Dbn=iR)jFH zym-sqMfqq(tjo4QiqTHLYATK|!+L@)gF1zpXBm;|a0|BkkZQmGIyE196+JCu|JdC1 zBb5$d{JbqB9~KMtQ!=|0mHKsf+I5)_$&>!p>i25Izg}~twwx6>lmK(6*#Te2Jo9h= zl>U+M%`(lTrHiJl*z!aWqi9aL?1E|CSo`2LF%F$E^4t^`I6+dpBmmLDf4C588~=z$ zab+ZzgQL>hmjqGU0t9G!VP%Ipwwdqk3V58taL3=`0-F)6O7ES--ID+DsBg@#?Wr#f z-~p9@eJrz0Kf)CVgzfVe@qG182gYXr$7`M+_z_ZEO=K=5$qRgAN@u=9FM#tHft{>v z6u4oR6yF>HI(0og?wfa)Gdp+4i~{S-XDq}{R}~e@ao~jQtf&;XXoc7B@}F@Znwn-q z?DdqV+n9C?zmbLUL@1?Am6DLpVN8pd-L5JV{}}Qn?GJ@b!Hre03m>Lr5y-6}!MXa+ zM^`TkNgoNr(gi>2b~I$IML6cg`~(aWoLdaC!(?)4TY8XunEOF+vXsou+1GQoRl<;g`mDXvR7ZD!= z+w%w57~`TcVU=wP`@n82n#@@q66(* z{R4kcVbRlmzH8o*Y*(O;3({A@8h)}^k#^r*gp0xJ{UD;|I0&z6V5qI%BjZ*QWB+Yu zCPPW)a#smBR7{a5yd2ncU9YKrE)y>>*)!*&QPw9ni$)3DnFCGIF;j}G6{+q%KG7`l zKdgrGkti%Y-Q6=SP3c_MFLcYQw{?_WFuQsF#+VNWY|=h)*i(LFwH+!tsc#iLrt&=; zxCSc9Y>(*$&dth?YIR%_9y4IG&GptjlIe$p!|DWu_3W7WxUlR{=5T88Iy_^9AU|hH zmLoVf4{P&1!Uu9cr{IkaH>+WXSTj$RaG={hqZJP$jzD|sc;`&ER6iPPd^O3U;3{|bphCtxg;BZr zZz^0lNsuJ|cH7zg}3ud9m{fX(Ck{`3qZUI|a z^K5e9-f^_~7BPmMC)o8+j-uCK-fFh$4LKW5{AIf%rfda1#6ym-G_>(Uo0=9xh7@J!Q63{w`hI zL%QOo5bJ=lz>*s-IxX)7iS=$2RhVZWTc?Va0d!bVZ1`+g1c@Dil9@%zViRIs({kM7 zbl?goxZ|lzmo%JOFPi}57lKnwoVVf^DOmL{nkR4d(oKW9c=sGqzzW0JliF-%w&VPy z!NL4sLrj~RmAFSMVIX|@h$#jON2*gEDqs2J&E;?KpcayE{|(+=^s{w52xI72G1?UWRF_tDFtFi_5wj+o(c;l~0)G zU6(>1NG&%%*g=HA{{A%% zqAvxlnk z^5#mFy&n7Gq_CR-pJ;ioKc;S75;n20ht0_?#O0UGR-OkvWmZ)k-QVMPDY=qb9}43g zXr3A?jRq%pvC;|@8UJ{DDu)Nz9= z!5;XBxD}{ruqaBUOXFXl&ieVin9o^Bc@uOYi#l0eYWKnaB3GqgOIQZ%Z``LDWGgLR z`IEKpHOVbEs`Tf>xeLA5n#A4%VsG*!YwE3ox-+3Dl@AFG$XtUW;KMEah|dV?dw;Gl z*!k-F)k=Tc!1eksnv+0MWB4Gp@5gguvkr<{Rt0Svzps2KMhxM1z~@E_(7RGk|0H~d z|6+c!3;ThGyrEfF9K$JqA;!hXPj=UR53;Iki`A!5>K*26|64eYCGzIqAptT z*D@_vk}anf$cxRS+(z|<-|v!)h()p(aGrMr#(&`RcX<}S4N4xciSXFvcSxdi)xIC!+htge0o_{a#gWzj;v1eyyeeb?bzA*^4b+=ziaNjVvozQVyhk9R)zU zIc9iYf61cd0>P1D-&wOFBsOregn1H7$0HMZp|t!MPOiB&TA5xn(Qjz7kanT5DwEf( z-%jCk{$B&XDziJuq(^l)at1X6<=v?`w%*=h<5-8v{@qtUfu8hR9VZlFXI#ll+)LnY zIZ;DY5z}5hj{h7LYh3yZTuKF9Oy;;dyy+7rC>Q<6Bvx8l9+m6Y1xXCYDJkgpuqOgb>X!59S7TS7?xLO z9(P9hm~2VkS7cuT?FHLoW*h;6*+non`U3R1YcYGZf~<&P7f|j=j+8}t_MhL+Ex?=3 zZa5S9s~FxHC4yM|QOTXki)p+r7zvj)6w5=IFdKB?e=&~w1sFU3!02b>K=wt#vU!(C z>Z|Z@x&9zZ!A|T~s>@6*G|lCA%+y(J48o%sV09n9t{e<>@;=*%p+o&cl{DX{?CM(9 zZQ;^hlt(OWAY`TdhG=7zxC6|}0!F9E31v}CaYBkUm4Bg zwvw5ydPvew1)BA|eM1_!hgNaS#;ey`UE??sk*~jn=!G44+rzE9vdNY9If(j+el`X% z>dqUCxc&JwMzy`IMPqT9S|LtHX-AoYk@{xgklHIQo+Yvd#`$qR3qri#$J#JtcL_iw zRKcr@8urSx!rdO3_V&37>fy2czLjila|)Ojm2&Ym#_FgOlm%c zEP9a8V)h&Ih_R5-Tw)uA}CEHMQUXr*`oomMI|NC}_~0W= z*!l2~#ug9v>cK#OZIF)1@(M_Y336stbKCmji1h)f{(W;YF>!@`>}gQGy}h3=Y>Y^r zib_~(yi<%YKn9`S!iMNrOQHtE>z8JAU^@(~!Iu*)M=NotXBcraxF8E2IIwAyKD{hO#kqOrmJAkvCZI^JY;^tLXHOVBA6}Ujb zHBHPMOb}~5SvS$-1hCfBtSn&{Fi!oF}wbaAs zg=g%PD?~)MqpOAr5=2A{7&l`cdQfNXPTyYzm&TEt7k8yDs54^#=}FOgz=Vg_oJRT* zL zFntU%fIOB!hy<+DIGWn@QpQ2CU(_jaMyB!_@5AUQ28iB9DG3SA5s+{5@Vj-!$d`%^ zvb5&L5<%}lj$+0xeMeklUhjB4DAM+~I{Lr-Ch#qC-{w;q2+a@w1s>3-lo~y}C={Cq z1xYKPq0dTgxm92&@pQZlmiNKt(}6}RHyCnQehxrifJ;HX2(te@D%u_;;MqMI8Umrh z=iR^3cZ3V^pnT$mD<{tEYu1004PP_`@ueD@YIzK}2AGyXnIL91shhfbv>%WiGJ)xI zVf3)*!lD$9a-IR2wnOs7adq;WdgwRyci$(6gq;9$ufqFh77kwjB7oXR4IP9^x9!MV ztlhO>Hb4u4zJX1`$AG>_xWn%*u0jO3)B%qy8%MsOovZB0Gz6J<8~JXPW7A6IPcS<8 zU@-f{P=sEm=uTO`#?>UUmpFa4!F7;Qi*wchJJ|+&n8QNa#l*=v@0PWH^6o5{n}7WM zNQ7(JTY#(aE;@tko~Q! z2w(C%i8fHJJX-s!z<4r&@?6eGWGh(xtAv8{CvBhg_c(>QXZ0xc)KQq%?!pcLYuOxY%?F zZyi|3&DwufG@?rWbhfXcE5zy1n;EUohuX1FM|@lOpYoD9pei))p^pmwda@vbj?Ven z0Ijz-Yq~&m^Uc!zMOPVesJS;RVcutx4J;8`tg6S4l_>d{y98y`Q5Eg;4UB?QTKwa> z(s>>tI$-Z(#{QpUgfuj{g1x z1*HLn9&*rM061D??AcQ_L;S;C zE>%FhWe_;9c)}?l8nOHDT=@=r_ z_9V?$!J`kK15=u39V^k)5Uzu-k|j^rG;bv`<(@Ot98e_eU^(*+Muj$UzG_W)q~yV; zJQ~5XCf2BMZ^9b2N-mdw?a-m=aVVhb3TToA`zC0rre8x@BoNIA)uhj^1XWj2aqUZ* zh_?4>B13tr-z(sVK*61X%!I`5-_5>-yVN1+q~UcYd?*UWt#zc?Dg9{S6sxxq{Hj2* zEj1kHWv45Ac?+vHcpdk@K&JA9yC#k5Rv^>>Ka%=AsxYRYA~!@HEMpRE*>zNBNQN3C z#M6$y!_xv2iYHJ6?lRpP8+ z!hrCm5HI#E@=A|pLE0PrD;%>U>^IS);EEB*Cmi^4Cm3(jr$Rvfu^s|+f8c*U0(4^c z0SX21ZM+aow;=4S4`^y&;F%+tz^By+dIgoXwR~j+?y=)9?70^>^-~VMY6B+qT*sl1 zag!nZ=uf_QRNw+PS?se>rdp8yLgZM-JOXfJs}xDr{!r`U>$(dVye`=wB1dsX&NmhE z8v*zHftKVNNr_W65q^W(WxAZfeH{y!p6OIr$b!KV8!tEg=ChZBBnX;7(|$g$^amfU zQDEOkFIM*@cwqT)xsx_16UB`w65)Lw64V4P&s?;nf*qc8OS_UL3^>$+7q6 z2()f?1lAbnA)WI&(Fe-hZB)RW3F%!r1tu_=*>~fub=9_S12OJ%U+m zawhR)DW?peBI>EWsYUGvWy;7`2etUi=N4XDilDQn=ztYP&hFaq#Caa64F727m~iO8 z4u${;IX>zWUg3DPLd|r~34=Oyo3b z`Kh=Ekdn?GIqQl&N}mfzDab93Ura(I;CRH{%{zEHb(LS!Q8^Uk8S^C)S%L&@S-;UC zEtoJu6x?vKX%9w68gW8BPCt)|1(;KXtjA`x%{fll2vIqv{SuvKd_D1n^S8?+-Jh4= zMZO;n7E=m3g_Ea38yYAY;wxPSUnDNDWcyCY?qaQAkj(&|{R~WRmJ0yX{;{5ou$Hs9 zn@TRpsaNtuS>lx&*m?l)B3w5`+9ba1AqoQYVtBeF!DMCpM>pDy7gA0km1AJeFB8OrD zz2v=u@0|ng-_vChQyR6J#Lzx*@1|R+aOfatYm8`ruEeK$Wb)ItY)WnVBy$j?DM8z2 zp8yfCN(OerYm;%V95Bk7TWPs{LZB&3|NHoj&tZ$TB``;k`NcIjSfov~r6Os@1hdqK zbX@JSoiOUYAvfh+R~v-am+AvRVOeRh=C)>#KtH4M*9n99eZabWZ?=SZ*|~L!l}7RU zOe^FBpN7310`cO~rRi#tG|B<0p~0}jMV-Le7No1Xg+7fJHU>MDA)k6CcX~02AFi&OVQ2~K~N*|+@ph^Rc8^x8Ppvg>t0I8VA75&L=)~XHR4fnF-{%-ES%lUeo)g`q-F}-Wm{k66}Em;U$1XqEm+-*coJ7wm>l=-dwqT&$K zZ8K5Z0}i|LqFCMad(`Kb3@m7doT)OVIyV*kO>ZP|l&U@g#D~tH4yU$p*qfiM=Z1xz z_y#tYl5tXK7d8~+dga@KEN!LAI~Ch&$C+^+&siSUy7X|;Yd8bFuY2M19gn8hceeCbI3Di##j&Jr2P?v z^oZ-s8(v5rUW{BFe6~yq$QxTlkpJ77@*gc73*-aItx!9^G4FRsJ6UY^=fuC&AUDcJ zzCJY7JI&V{buX>zuj3v2XVYkqj&al7)zD@tJ2OhS^aYXbuyJ5e($C2MG?FX;cAZew z8Klc_%n3spz+%QI83eT&Bbuo4Y~EKka*im;gkDgIM@>=Jt<7cD0Jzr7mkY{M z$4CEc+}{PB^-I?(>h_kq_!+y?VJ6Q52k9_?3dN}MIE5KQgUOWpk<;FDLSU^E+t^TRL-wbIIZFbOn4o6CrHwQ?;GuHM7O`Fk0i z(_v2V+oCM>^BxE1G^eCx-N(LCh8lcl)3u(R{j~;ZAk*#R>AVt`MLLfUlGn&py{N4H z?|m!L3URw~?(>@mq^S*1)+qaY7nZ!*TBuv0u=0&{<4myeSgQ>kNIbiN#bHTW-}7=` zB8v79&19NJ^%A(y{dFcwLqB`~CC98Mz@~D`m%<%aKISFH*kwn#bJ<(Qy|!O!g)AiJ zM^oOrNjgd7vO$-p3F-y2pvWBr^;2H7>NB~Cz{wlZ&xD9^^leKQk1x-NwUEH>ivuhA zzZQP$haVfs>=Sq24xBJkCINgY`B`o+HF^0h>jtyDEH_8c`MG605Rpn!2ac>@3G&2~ zqW%aNkZGnf#iZQO@LEO5oakZi0Ch90#?`-0x*_vdD2hZIjCIt<_Z!nitNafFslnPE)?05&tb-kB&1?T`w(Q=)=x5? z?7{F_waDXQ(vKnz3p0sOiT{E%2kCarC*14CPQ5kCL@kIC+$|4{#Wve%4DrHk<&app zM6Zhq`&l*Fl9qW3gYD*T;$6J;%X|he8SF;etIbC>|KgvVhm1@xZvl>|4@oEG`g{N&nfi99m^p5Nidm1vI6mb8?IxXMdY6HuA+oEwFWhFa4DX z42P=n(2OIK@oX8FN#B#D3tDoiQjCXR_*=kE`Wjvh#T{Ny5+gP`fO@7qG!7Ko8Yh4 zvYaAPGD$X&&EYHr8a>OFgR2;P{Dhm^d}CT19K9|yO8^CIS_tC?wDJY>G z^%cdyaybgxESIeSw~_qv4Q`MU@wDJjLY+;=+a*dU@oyq45<(Wrb@1+2M6^K~Tv5Xj zGRb~sxS>bL0Z(QY z?Wx;}4FVN)kia(&kwB>D|J0AX$`ug&_tmB85I`blH>d&63X?zmdz5&!a*u0 zd`Wt`v|J?V+YT4=&@pTGNa$2?x}=1U6}wvyBAaJVHPr+1{A1`x7V^EL_NICCs+(!r zw^xQ`yQbO4r128e-M2LT*6&O-C>;Yx3ts{PjD{^0UcC4x;DZdxPdTIS05Wb-t&Ck4 z>FiS&fNqtX)Ac*0{G4Yl4tgMoDZTv+wG|wQGcjYFM++Yal2;(U`2Lj!G+=R^Kg04y zg|IsBfr}gOS2dGFx4W-XPcf!%DmgBv+c}gi-M%RR2F9CDYaWEdUURFxKgsEu zRFOpV&IXVGL{;SMww9ahvqmZvW*$epXaDr#u+QaqNS#vxhi)0bslJz77O~7Te;qswnT{^A2S9}p@iPK z*{0hMd>KLT0ZU}K4QFoBm<|Z5`xxsTb?kb1SD(Zg5xX%MZK9;$tPKsEQ|lyupxw(G zpJn2GJ+}W1E|17MM<6s<&OQ}_LJHNLT!c(kP`Ou&+RY$yQ-OgkQ0Lpwj7#HHL9WeB zvx$(R{}kJX5jEDp$nyMy`G)Lg-UWD*S$O>8b|X-o25zu?L3>|hKm9vtTe|jkPb_=d zGSyL+G+w`cC5Bd1DrLtqa~t&uHk9yIcxUzYQH@w>g`2-hB)pp(rQQOSX+b$H_SWEb zG7=G+WPa3vx1cOaM;{qQvija=f~;eqBrEq5crGl+(tBF!Gkx4K*-|^-Sn$=d9Mh+( z^yNHX>?wH5Y*r$h0aSNR@8DO)IXZUjb?x|*ld(EscJajsFNd{dhu_qfSmA}_+GWi%%{6d7b%3gAUoXjMH1YPd?7a;zXgSWbC+EW&2G9Crb4_q7%g!twQvrC=+m%940 z$1h8JdGBM8pro0tki-C3qneUP(b1qR`*BjWz$J~~-zJ@~hypV$%l5?L*D78l29l;m z0>++2oHY-DS19(uGB43p!rv`RN}zdgIH0tg2*w1H;lQTiZS-~+c1*N^`)C|&hYbQU zytv`)C%D1-4?S6m(s#LNkRE)vE$VY%QFaZl*rax`H=H%d*&1Rh&|zcKZEb>HAoZqO z^aWAF>apSgCp>jdHMK`$U%={fdci~g#K9bTP6FzpKX*lQzfu4qEGl74)yq#Qg`2zk z?EuR!9ih|)Oa3uQAi)EOX`t@9!(EpX&GMP%B%II0$)?9?3>}aik5;szu3F%P&a1K3Ws2L!#YyCgPw%*}f%{p?~I zkY?I?1N3v3gIut;+kjjklzQAWVyS`uqb^oIzxd+{Btt*6lb>7CA@M`Gp(s$X*u-t0 z@=nX`%m&z!gZ_o*+|;?dDCyB8N1>ctV!EiX=LH5VeKFuwXU((I=gKa-!w6?JLb{}M z!6efpwg#c(ofj-2Q+`$-zx%vBz%H$ zOQsv}oeCvlfu&dQU`%Vf*ak*gYtiQCzqx}d(k~ubVwn?y)hh=0I*D)GYx-IN?jQC3 z4WJ{#Elq4&Z1guRvTCiu(b&EO&`I4+51E>JS)WK_sWfj2!^qT-_8*W=&f?#cIgyB; zV{V`<9**0=5o!`v)78i{r0$@%4kPU9BU?KsTCNKTL19-ctNbQcEAwLEXHILFnGso8+#VZ>8YK(V7V=B0e7%j!%2KnRRH>%yyChn;&F; z4jK}EeB-ss66F2&KbBMxBzA0DuZr`1$=9sNDmYmV`>1J{jo#U!sqxjCc~=9)_~Iva z#2dSZ{X0dYKpUT^d#Y)!iN}J;gAYMW7MBF$vnq3;?{LEAK5MD1s(KeSIRTyDi7v*L zPlQ@twy^ACubT(}D?8#h)#AO&ORzFF(JllU8x58bY>dh2mRf5ylY>;cbm`zG3~E`` zAdyZ>3j|4{1yxiItM+f4(^PbhG{2VjDg1nqsp5m1&;x+3+Q*3sp#fA@r5ppNW zK92dTgRa>1eaQ3M~KBaqhG8BNK z7(XNAMo<+8TVq-heR)Xk4!JDDG3|IRnr3oAu_MS@RVGoqn8%wF8%C;YhA*!<%yht> zvxyKUth>Z?ho<|;-EqE`)>R1M*WXhjJtTf6NKElr{AaP-Pe)?IgoUY0Y4>Jssdeo| zbgrctEbbH727kNB7i~SqjNjlh*YDyZs2WV_eH%R}!1h9JxW$2(4syawU}e0i zr{6meqmDKta)8+c?aoPtC~L*8Nlae*CAU?Fp5_1n4(tQilFh9g1e7iz+?!yixsb6F zi&((`g$4wFfv;i@^hcwmX_BNFO9X@x82Hn$boES%+mWxZp=fsFURmmkHzeDBaS=Dj zfRxi6`?yvx`b9td@$JgB+MF@hwkIA57fp(>`dn=9$1eS@RRqp%f<9}4`DuA^4<^9X>FYO8Re?9 zs>fRoCswyw;5d!(7|Zz!IAv+3sd9|po8D>&!j`GAP4g*0WW_|I*Y5pZFa_iG{E49Z zHHPG7hgLw;AJ=j|)!A5X_NKYZ-?(W_k*bzpV{O@+yuB1EmVuXl389W)JI=lXR@SIH zBa6qFp_+sfq4y$HanzID)lWGtluY)vG?5}ET`G<3V{4^P@!Y?x5L5pWg)JSV4T5V4 zJCpWpFYGdwUUxU-jp?7m_};wpw7WiWT&9y(!`4TNE~&f6fSQ9d83&CRF7f*8KdT0& zQ-Yk&2#}a$kmp%dC<-jF1TECgV>+6kIerI`%r720TqMLoNZn$yxa84`n!8owaWmr*AoOz}A@T~f{ z^yx241BFo!6MXFIEtSd}G1!Jhxr^=f?4F9$2$IElV_0flX$A~=J-p~&AB-Kd90WIm z*?b1DZX2Lx2V9sNy^^~d0M(&j=y{DlGe^6?j`dGpd6A* z3h$Abop7x9ASVRf$XslEMPP0Y_bGktNgb!bMEK?Q5gAYngr1v_UlV9I7&fIzEb<-P*x(p|2#f_ij3pQiI2n< zhiu!Uwx`I_EFC=-cl66}60ypd1y9`#swD=@mvB4UGZ_EtFv4<_qgN@;bx-BqR!WMA z3SR%pJ_ML{PB?Iw)YAz`;~0ljhbC(R8^+%-A3yJednoq5o}NW`F%+jdz@#Gdu&HmD zC(@d*+-6se->KCa_&)7HoFq7PjM~6fVxVZ50SqUV@qJP#LyFShUHPM>YYOYPduVyg zmRH!u*`uzxC6BX=Thv4t0O<@u1_-L*vvLYN2l4U=t2Czz-z!*vE?x-^y-h|2CaUHrV?Bcn8p z{aP1~%)YgP4=~0pRCQ^si>{H6^k7>huMMbwtCj(b+)Tpuw%%!k;qps+>dFM(KmD~{{VY?E=aB+ zg(uQV5@}-Hu^4|(>fNc1J|7P1VOZ3fp4B&9jbqAB8;c& zq7houXT(-Toror>;GbG05miGf)Mz;3k;?;KRViSvI_93IEyLYp3ikcCL(u%-{P(q$ zp>$IK;-dZzZyn^Z$+7!9g|F>(gZ!>--y%p+@LFx9!gOi%TE*&t`O=4Z3zd2Bv5$A` zj!zDXY=fzrTN%R?d;Yz8_lUTa8mnKpZQ&iRbS32THLAH&&vN!k`-yF3-$}R8IpQIR zI?dBc{&p(&J$5|dk;ow6!V8D)4By_suJTZFx#`-iFcpZS46v7&FdPFG8)W`g*R|W~n7PH8(mih)GH#j3672!Kbx&BPb(;Qz!r=CODV6;URpCm+j>O zHP9HOlae?o2a-}~Y9z0&eC1fke->%(!bz&*I0e17UQzv;oVPH)-vXL8Sv!37C)?J2mG3Gdk*8PTu_-pN?grCfvB+CZ8U03TFL#) zqMy{LgFV2-(JWVNmIWTJy}$YUZQ(7*yowN3! zlPSkyQ=slB)BUooOtCL_YY7~W|LWQfs9r`{g!#d zQ2=A*ruv`)m(m+OO&%#qeoE7MOy)8#ZK>#hed00!?*18g_Ylbe5?H{|UQI-C@2ptS zupE_2x=VjlaGAhuv2|JjTg}Q&UMQoh1g*YFGIFnS3k~6 zjbMIw6E2Ghx45`r_yCSmnd4%({MvTsLC~!ogE4GJI2xUVVYJ?==9ZLsVQ-UFE2Zra zSd&4a7`iSR_qp**kiK*S`SA68R7X4m?71(7MdD24c)>U=k)tLn5%Bwh#OOhM%5mbn z9rmery^U#mAr*W8mZ#<#t{U1pE3)+qplb4d&X>W#U6?r8*ubQH%cgUMjU0)j&5tu~ zQ7ckXtY}_Fgm+;o|3tglr4v)&b7h}yfz$!u!%hGk_G$!BJUx~MR7Cb1ZE?eYHB@`) zyQAIRmO}MVaewnItXSm{VjG@`%SGTdUCd)?<0?Ig7 z!SQEonghB;W{iZI_dzg8SjiJu0MG>Ztv)(4 zdnA~?QzzRE?-K^BW}#TqVRNAGTY;5R^)uM?{Zz|dN+M~jZvQivayjZ3@@|v3A`NAt z(eyh#ZOsnx*RR=jGQL+jSW9Jwoq?D5dm+R{_I)ieqKU3hP;U%B>O8u@6%~xJX*^ zZ8lNL&eaVsxm`I+knI_@1DHFT%2w|8{NWNrujJKp^uG}I((AYxXcX7-+e0}mp-me2D=GUE-kEVuVV1;&cGzF zY=~rhtF}%xk(%ifL(p4VZ?Y{e4;KN1kq7Ta>A&!vQ5nRGnPJOf^bMKSeOHw&Pl?Ye zv<#TnADfJ|;Niz$A%V7bquwxz4UpmJ#KijEtOKdT?k9}z;>h58Js4xHe{C7MNm`zn ze3VN}3|8CCu<`}n_pGK3oIaRvb8Yg>pMHTr89JXm-b?g_ioB{8l7KjDWIhcjWuv1Z z;|SV7jShUukp9N>w34f7&~4+aaV!g3-NpO9wQ|i=Nt_a=r?vtIgaD}kh9`*3MA_*& zbmyX;`JujQyh-p%*k0XtG(G^)iR=l+5qcD5;4_SX2VkU(tX1pB3u|;wBwdg2Yr|C3 z+~k}y!aN}?4^61>eyNw;puZ5gq82We&eNp`?zPJiO52$qr`Eq|bnptY ztYe_YkPT2kr4EPoH6C+#k-nzRW#Fh6?>|Jik{OHWhKx}HOV~1MSZO==4z|?WUXsD_ zqmkIlGAzQ2;}+bRHF@nbbpN)_c|Jo+nTZr5U#yAX{OFp2@Nx8`dI^}3Zr0FJu5@3j z4*G}z&(!kZ`29Hs;GlfNtHwXb+|L(17q7V+fm=2D_t_G1r4eR^e>!~-QqBQ7E4-9! zEb{)`9WyPCs@^yZg-S<7=KjOQR3ikupEjsNzbt@DlB&Oe#~S8 z&4nc&L$xjVrfvU?&*V+9AM${@OxWJ|q!4t-5q+@J$SUq@ON zf8z~oZt2b`n2}G+A`OSQY$duOwC((80%vM z97(!0qt+f|wojkp*s-tLcC7p)B}rU%ns$U@2~9Lg`rUrwrOuPW-hb3yJJk{>wVwxp z!YsgLe|r9Ggb&UBQWnR>?Du$^%r0dL?Ge#IstNKwcX8rtY4@&Ge5i<30%`Hr;*kz{ z*>O-!T)1A-qa7^%nC_huS4x9)tz6*XN12RzBjGla{G;Ci#7hf1?6PJt#;=qA>z-XH*28iAR!{J|O}P^c1fA zuAyHdHm*cy_8-@a;>S7~UU4L&eiFqCd*ujYIg`clCoXCYkECb4l!FXXlH~Y6 zsUvZ``C~f7Nh~y)zCt%?5bgCjPyRcauj2e#^7Yn}G44n$@Tvn#(-q0h`@;zBx!j9I zKRUl}Ut1gFb^PlniL^#cNv{^S1oJuE4^hVv&vfxi^)<83l<``y#}1i|1q9HuGg2(8 z#^pE-MoV|C^Nq#Tlo19=6B^SGok0u_9*^f@%`<9xIh?gzMF&J#X+eY6>cK;qV`H!a)Oq+1m=^w~+JK*LBgvUlL!SA0RD@ z(9lI?db1N>X_6fFhk-vcVgYyJXr<`;iEe(6^?AskyR$-<-+JU6(ynX5j!X`zyBv!6#`v zjj%-B;sv#{YpxV0#FoYRT$0gp=3wdB#ZdciNoJcaxv-+{h{2#!{;Ej(%;!9BuNvj% z9n{=#6V5>7eLCEd&utAec?MI>B94K+9x?FDu-{P@T?^K45lW{!D+l3B7%ym5&fUb6 z^XKJ)YaG-x=e27IO`pL;ij^#~gO){Y_?=V(jvpVx;bFCjy+FnANNxO5wfg8g=6k_Cg&p4`FeR7OU-ffDXUlZd`9+b_Km?@4Plsy78TJ67{F23^ z1iN?7W85#BiP(Hvio5ej$4@*0xRQx<{6rdmlC=pi;$K*0+Q z3#2!<70bjt`}DEoW@XDvcTpQ#izJJ(Z)510l3%*c7YRQ}g$fb;;-DMuGWhYJ$e0M~ zvHe+ip{F3`Ao*YI^@CYY|1M@t_n?-46q0tJPC?c3R2(TwLUwqOTDKLm<%JLi(kWZ$2;^iY7#yiWIp80j ztMbyxllXHsK-|Y>s9zuw4=LzRo|LPR)t) zLJwSKUue+7^Dqd6aw8!kjx<(?A8VNGHML;|0#wMMnw$$L(*z#@Fy9WQ?Hg-rJ7^r` zDM7deSb+_ZK8Dx-D0d+%buNIo4pj6JcRcjIaLFhkWrQ zQ*^TmGNC35bHK3bt^J)aJC5PZMEIGaBfGK?dvkX!y%rd%7gH708!^dDZF_Cf%=JxyswV;y>b9l<4@pK$G0e2=z(!Kx2c-`BgLy5N+OUc)Zd*_MfRl%9JI8m32O5T~2#Tx4zQd z_(B2$yo8k&0AID?hN!quMx$hrNyC!qY(x(I%@AxA&&03QgbfjIvzKQ#^czsY=hGnM z4scBCmOtJ{`qy+hI?;P#n`X?<&q1-V>nOl5?a zib7h82bFNX6UXij!9t8uNTMyTKlkv0ZlSc3U>5sJWZZ?$a%b+^(`0>|R6MCSx>YJn zGDdMB^}Ip`(@RCzqr*Tpg)i5*r!gu-Dd%urqr%C4NvW>3FMt*owPn;+>CYkxAUnC{ z2cIC}U7cSmTA@}1q&+eP0hUBoMd@GNVip3ps-bcqM@pyT{O~f)?_r{@V73;EqdA6z zks+1<(fsQn9`3c_Emg|`d4r=$tRO_N74r3{sY{>*HS1I0E^jj0He>K)AgzbTiI_nP znciG=OejY+v<=5xN-w&el-0NE#ZkhA3VB%WfBw$pZSURi(UTzO@pxE@RekwVWP%(G zk~*_pxylPF6IOrB{Q!>YOE1#v9x9cCFQ7WGA~f$%U91!hB%759(T`sGR^JXChBFUH zCA*7LM@%{2TJPN*szvHGV{WZ1p0(K7ulGxp7DDB$xvXScuv=vu7|=r1zuOv&xTl8v zEgLO;!|Q_uotTY|@kL1B%?u8h=Vw^^w;|EGPg{ z+{H84DtE&d0#Esf5q02Nle|kV!Cz1?kctTjKeSqL2A<-IEJd6@{sY#W@VNJvXNT#T z#Q~Jp{8=PU353^PdI8PWtkv7QWA2SmQ3a2?i9=lP>MTQ?mN-|0TI>&9oIZcfB8kLnV0cU03jH2`Sl=hHy;<4xP3{+3s z*WigmOFdA17a8V!O3S3m?0_#D9;xXJrY+^E0RKM#z)E}BYe3|`Ue-3R*|W#aTd;t< zVr)W-GhjhJ*RKBdCMz6i`FANz!h-fu$I(Dpr#eZjNjcx*M584mt#dFT#u`HmZN2%X zngNEM!xe2P7q8MWvoA`#BV+Q0ZF!QcfofL&ZW!nS)6di1Jek;01jroXP}PkgyBa2d zhFTkJY)cD_%(ebtDqg=4;l3d4J!?&+AMIBmlS9$z&r|{*fJ$ z)_Acpr*-269`P0kg$7d`8DK;-S5~85@6mT#so}6o8~~PxY{*43Dm14*v1M?7h-XI5 zdIGNLx;mH8VPnje3Xj(azRZW)%zV(WE|6z|Jf5sVebyfuNfQ%3R;PJAN(++_X1UyH zA)e>om4iZ&E7k-%AI?8HmJfY?qV1>C%<_G@_2>RwJl#%;(z(lkiv%$jbkKAUR29RM zlu9V>r9A3S1O(=NzgIx>4nfm~o9HxBHRJDcf&=ndVe_)-tByI;CHjo&JI@Ge7r@`c zq)eihZ&0oULh+!JJtu?w>g`HdZE?ynZKE5w5aZ~a9=}IGlIZj^>Ip2UK(hYpQjE_- z(8N(fKR}uE_TC9Q^kk@}58nX%0X!b9^tui&q@O$z0>ZDU$V1Ahtz_=Yn87 zZ^EOwZW@U=ZTbF$ifm$RAU2~5?X#IA8Ci z160RcoNh`{@jKyH1KC-L4$!#kH*bC3M{QTMcdnpc`d2E!pl|Y&EOp{}_N@%#_S65F zk}_9{sIX?5S*4}D%{}HDN#aCp@Byy1FVAxMPqb>B{BcxR86)H~I|Si+*|tgUNc)9*fB?*fOdQld{n%n?z zj2hnBL{`95U#EMCU#T|z91*~8wfplgHxTaf95EO&;5Qk0`O-5|Zyvq}!jq*_M+p7v z(&m?=l?O}ZMv~#0QMkk>3OSckaR2o zaN7})q|&C(p}g!961;&}*Oc|3JtCzBc#o^P!(|ZJe}raFhtb2QRK3hdWk%_Zb?z5~ zFpSX?ps!fH6+C;@2iR)HpQUTE^?O{WFcc*bIdC!TS$S6v>05YMEegsTeJ^4xoaHbp zusHtb;d2gr4O1cNm%3y$3yWsZT7@n%l6bYuupdeg&TW1n92*6^Y~!orE6&Ew?BIgi z=;da5Gj?FMlO5oBip;zpjjFJ9F37ZwZp*c9BAz-BgSX?ATc$|)O&f+On42QFkpf-t z0!kG&Yx#n~)wpC^x90EGq{?B2g-?^d5gx~OT&w60AdX0CJjfBoyfi4~M*9uAIb4HR7Wt67_IXKvT%JW*f619!1UDK`zckDApuEax!|?PRupuFh zPY6$KzC4<+hRlVNnwwKkGueu zIi*C@#CCgRRnz(M#zhh@*?%3Ioq6niict^-VoWrBRtoctyd??x3d)B<0ao!N&dEJu zK%KJ(n6}yV-?+;i#OzT4Z5je!%rnyVH0rbF)r_7=lOn^s2I+L>==dIvTo?fwGptng zqU`h=07iS})Jv5g{>=5v{930tDf@%YY}#zbGJyZyvJh2#j>24nd?zC+MP)v&^bj}Q zFb|z9opKjt_$Z@*Pf&p75abUG6y|Z$sVFu6davr`0U-_hpH^g;9gd&y_#&dFey^x< z2a9+xwG<2V)B$*PDS7f$fQ48wE9e+aS6x~w&W2o+EFd6=BDVaM3~f8Sx2fyp$;8MGJ`-nkbao}Wx_r5M_Thnp?5I|%= zvIng}KcAZVF?I<%K<3nD?I?r_FKmmRdd)P)s%0%~%QFtic~i5s)bUrv--1BX{mj`m zji^A$L6YUvrgQVoETDPj`BY+yEvbq4*1Yz7i@HYI9h*)amrZJ}^O_6It_HpDo=hs; z`k)K%(D(p_xgDGz9aXE3Ut<^60PT4df*+_&Y%-<$Efy#ej1prUnI$QN&D2J!{$M8I zl74kzripxH1A)kC-nDca;sEFBG6O60sEZPEuZGM;LX1`Kj(K?IXunOqt80Z1H%u0&KUWU zk8mY2+hO#;hws$&X3-%2V5otZBeD+)!D$CCK0_NKHnBKds2d{3N{hrgbi~Ekw@$0> zz!b2)SWHuH@ImLX)Uq$yvWiXw*tu~4Tgzh9&W|Dg5Yq;7_{7?|?=<>{n%AcVAGT%_ zuCVJ_Da?+r(wkc4G-UaRulH}U$voA!P?#arR{Fp7Fg>0o(&k;;h6Jfe^WU2hvFVdW z?p}gngAB0)9}l>ASSNxV0L6cTN&^?^Xh2`=TzNa|Yysmi>=ac{13mAFXUnMKWLCZO zTL872_2VW*sUj;nE0&yk-2Vcrx2XROGj2%f2!;yg&Xp*BIweoZ*TrjF}9$ ztKd!{iLpL9YZolHERAzaV#So=E=d&fS*iD;L~c@*ExEq9j!B{E6`FqDln=FG^?RR~ zh4U5&T`&mbmi#lo)4LpY1IVv*&4~R~%q(d77`?7TU_KQ;y4u31H9;mHHtu!`dL5Mc zN2akws+}j&;G0PRB$%2yM;#B&Np#nfDwfC|-Jb?vg6G1%Q>b`Wh8;K!!Ui(}y9*%D zhWRHG7p(sU6VL^rh>hWIy`B}FT|++-6y*j90zfy%dO7k=D8b`_Z$gBGxI}Cu6D1%i z@ZtcVQEOB*;v&twpi4WD(6`>Ah1C=T7p(E!8<*i8Rz+MWdpB|d(K6*Gc>fepQ#owlJ(v~p>e4eQgl z`q80N7~Ke7ghK7?zXYKL?D95olx z+%_MiwEXoOP4kMUM|FFXE<=bCl|sBTvACt{e%vAlG*rs7Cm$TOI^`i+SXS@z(dg4w@UG*g1{6)RGmNowQk4{<)(C&_=0FEI zl(}UW-X1DzCKc?T3(#cn!%=6TzM67yD!5p4n_)34Xf!Mzehr9lt*=%hVQXUU8LpB! zsOOwPWbyDrXjx$jM8&gIl!{(ui{Gk)h4zPg+;d$G6?_YX#R_mz3YxJ%X(of;3uAW zEi~}9$silpjlE-Lc~&wxc>3Z)WHyKwwj4AB=aL{drC~eXsk=9ixB{DKNlbty%~_gGcmF$Y3Z> z{Vm+>9F_CW_2H6V!d@vr5}x4{4*xe2R7fI|I7u~U5VX&Gfs=ZD9%JS;DJ(>enz{I? z@GG7cVodAoAS@(S7ya!Zjg|&wZ4){<+)Ul+1r$dO_fM>(N^MNlbmP@2e^%x+ki@?N zsU}HO0jKW(Jyr-p#4d(tap30&KvPbbzwE|(QOu}d2)44aBq(Ce#$~PCtzI-U&7#P4`p#yp@hRGj_=(Hy2x{@(dNO)e zE?-l31!NGjC6wo9#9^~O5_hi%%!{~@Ciyxxw_g2S#()JBl<`0o&P!4H{-Xd?n6&L% zmQq5xLK` z*C@W1tb#6vXuU`N**(U>VZ3Z|19rI*8I4qxO_cx*>_e)xr@!g z5(_Ua9bLRx->Lz&#(AxiNR_eT-+P~BCaS@>-Jkrj9-$SSasS7q=7EEQ4^nvpH<-fzEs{XEPI zau0dFI!sWxp@P9jAWu~yUt>CYW<-HKFu_b~@70k`frUf@q zQG;eGXRV?qA;>)&)O_FLXnRR?x+e+!9@IHm^cA&@g6u&aJVkLWDeln%38W925X<({ zs*NT*g;-)4jvVJ!tRqn(ePx5co$L4@Ojb9Y4>%ao7E2uwWekKAVqkx6az)3&=L2yk zF(G?MSG+#*XFmA#FT>0c&-7)@qcs6EffZBWwA`#GU^7;zUE5)s2_s6tTad$hltYxt zbg}hBnw^lw+AK8TD}A;8A+H5LHYbCHi_BwY+$0oN_eWEmrHJUEfpjaV@B(Q8DMX*3 z424v&e$f3UR7u(yCI;c8#%WiCV1%|pz07Ty>kgwKZL#Q_Z&xrUY~N8Op(M0!=b{#D z*psdI6!pwdMEoE*VyMu^UeFW9ndyuY_z;marQsa}hVCHgidfUUffDof;tM)J<*(^N zZ}TK7qYVwDymaK?rqf{o81PS_S-fh|QX%awF_OTJOR+r;Za3;@joSp#NYFp@k8DDr z_I)c#0-6ed2|3&JmVh%`&gN1~-Jz;AGSt3aJruFz_?Nn12y(7AvPu%Wno|TM-B3}? zybh@lqs~6y!i{{LX!4@Ce?ZBMQ!M$&*#A~;Q_G0&zWTPm#&%s-4%YK@Aty|`T$4Nnp>5ifR-MP@(_boTC=yP2#XTKKPEAyWbGFwGvONjt zY?7_Z=E{N4>I`zs%#3hi4dhQrCFK&J_UA~(zZjwT zs`^ZA5s=-+bsrK(ch^Ver^5=;Ks!)k3B8O5GaJ(e!W=AY>;r_H>32aGu|cg3O$fr! z(HSJll3Z1jB`^J0c2xW51qPoO&vn2uH=SD%OXv_|ZC%{?cXBw>o}|JvdN4R7S=HQl z@=g=Xb75usWyUE$8JzhiGr~7Hi?G3VNBD9uO+52+_iha4K}JyfSL=*V0N#8{LRE~1 zzVXDua_xZ;l=To;pq3k zV-!x&8Z~eJWAruI9%9Sf7=DXcgN<-1g&b*y0%>s|s9H+KauaLIY%AO4rby4OD%PJ} z3vz)U`)^c^ODuC?GY@6BUWB6Yh$ueT8L|DBKyG&n6!{e;FzxEC!~stk8V~lTot%tk zO2xxD2)0b$#D&Hm<$$(2;jONkAt3AU*R-dog@fNj&A9bZOCqtgM))mQMD6tgLg!zl zG0um514_!{zOYVGSlEU7{fU3GUYbXOs^WF+Rb$Fe?k&yrHHIoN@}rS-B4*7Fp=>yT{O&eG%hVTMnPj7F$xx&@2Q?x! zqrV@r=A~<|QoKwWs=K^MOA87K%$LiE}uxoMsNL%SX-t%Z(mlh`Zi<5;K1ELSAK@k58$qg@jcT5 z5qWQvETH!ab#m?L87@(>%Mc`VW8pFIkL-2@mEg!JYhYGL!JMRzv;tEKV$JMO#4G=~b27dIDiX&hYh<7b z5{z&MXb5cFw_r+5+J*f!?7W=`0mC)mD=$NXRFLbZ-Rsgpdym*uH7a%UrPy@8(p28G;A79Q{lv(% zsxt~Bll?<+h{zEvvz zlccRIFY2VA=ZN2;!}Nb!n>+(i&gR_Y5D|9%rny07Yr)AHxrd6UpOwAm6m3q<)NuC|X)dr(9q;>M2R9v|?KoI5kIWX}K1jJ@h;>nE zNa(1j@)ls$*S&XGl4qLznx8#OGp5_6n2hSoYWbM$URDpJHM>V-SYY5eh@ zsoM(fn3?BSWA7sFy%Gpg`OJy}L!yxMAUcC^`3{i*Wn(VzFuQe_9c{HUTS%;iB8zcM z#sv8^c|Ryz{9gLbC%r8APD!DuNQ{Yt6W)#p-R5+0*4oY%Z5J&03^W_9SsGK=Qtzr) zmW9$?OTvF1yTpl$b0AWkRMQ@z(_oHJ+-=Tl=D;FQS(8`uf%2^nxHly9z(nE$C&L|B zF~r6ffq__bW2b-!($1{rA@6*Rg_?<-0upcINsuW~luIAGC?hHV{nDL(nZ-jupWHNw zm;BngB*E`C&83CbB7g>}!sF;!1Hq!3;cih^r=$Hs$mIUY)spHS{p*isQt|ti&YJ`a zO{U(yx}zDa{=@^g5#xeCy*kzpEVrHtvf{W8M3({$t#Val2#L23#JlDCT&UO6VlqWp zdx-V_@gKi2e2<;-uwqO=@y5R6Mo@iForUlB!zViU|FX$z)`FTl(XBO@(unx$E%n8} zyr?Q6D#S=xxFIc|9JXfe#rheItgT-sUV(L#!U2-!?7AU!&b@wxE7Z zg8FU#=nqF{sGb-xQ6JuH(ZOFVMbnpW$<^|}44B|_EBn7Euu<^4@*~t6LC3l&TRz%} zojN|*3t+gRtkpBq8828Fm3G78u5q67I>JXEbZ7qK*#u>fI#?>KQD@N$@M)Bo z2Fj{T>E#-9+IM7c{Odu_3qxJFWyq>6Dk8{tRAT@{m8SfLGA`?rlD~fzwvs8Nqps>f z4gX3&hv*eUk29nf;D{iBoSNI5352&M9_+*$xmJ|dy;-{l>Xe+qevp&Xu?+CqU!~Ol zNTzc(VC}2g+FO^0t@0!1RU=$Cckm;RjLqTd(e~#^j2a;TPdokSUv-x|_-=%T#K=Ypd;rjc~}dP4MgHNbplxg?11q-$DrL1zXXXrH*@ z!uE-1QRgW~$@5-2jY#)Xk?{tym7ft8ltf?)8AY<~$ERsM1P}AM6~FORqLiy10R5&r z#FXz7CGm@6|KsoyzP<3-XhHY4dKixoRp;DW;V4LnA*@av{o;4VyLyPlUXZQ&NLv3M z{Vtqb8fIl`*Qq%BpdiYw7Q)$@Cwq979XL(H1x2Tp!G8(SyJBDQNZ(zzg+?3Xb%z?V6?kQ*} zsmCNrga#u`ISmI&{c6eAOzhQR>x9PKYuaV7kM#r*PTcA=-TI-=BuGi&03wbbYLjJInEODcPDz`*6*1v@ z;9=U{m&5dqY(HPnKmJKV8uN2?zY+qeig2Yex4JUXKMC_?EV(i<+4co zp5gM~D__UPl(jW3D$BFWw&YEJ&S*-p`97MpXXDF~{TzFwu=hwau?s#hH+=hLaE78I z!cw0-z>IkEusO^6csWF5sAU=`sZ6YP3UZ;38P;#;Hs$wNI(H%F2!pasS6VVEv5t5r z1X5NS8Z{s$(l3Z%qGxZ{#08kOhTola)tOo$S$y6%6B{=I)+)Zuh!}l@Tt#O%uH<#=^OGN24Xz0e+$7GlaD0XIkcxax9cb96Y%i{b?bM8(XjZRE+wmSo~3=QJj z{5#wH4(`U{6AWUEIEFGE!*o2o{lBr(Gz#`M+&FWf?q6=mD(j%<<*6ud2sTZ@;H~v1 zhmJ(Pn2OhJ**-2DT-9H&oR`yFf6eZt8}Ey0%m`*SJy3DJa7}F8H}$dvoz39x@ieO} zfi5~Ql{kTO^O=rzb2{twK@32 zfi?ZNR~d@Ong#lDDd0Z`{E8w@FVRD;H*|tk&RdFlq`(4x0Q@z7zS6rK2`L`?Yr0)- z%hO(XB}pcROpb$F$GW*cjf;UST)?icxN%{~{J*DJ?&-EcdJ|=wH*JqEC@pWUKtp<< zUtJEW^zN2SsnMf3z<9$K=lJ%~W4>@_;6>;yw4V{R|&*5#0gnJpS>Nak@0QP0j%$?eYi z>e~eGrouRdNqpJK7_n&wa4{=FSaFpC}ddG#WE@#5;n_`7{3{;KM; zr;Z!bk;w9=22aa`Pr;>i`+3r+YHmT`9x$^LuoU~*ls$pnH&QKyRNE70PxL)0w zE(Q`z5!+7VzzPUp$!Dm2v(JYf!M+Y#Me3k47;W{^)PYD=allzGUH4OZhmP6ma=ZVp za@Rcesft1a-@!3eYmLom#7Do%u_(&hrbAqL-6Zy; z5W9+cPYd1zOFUVC>^8L13ylxh8|?sJ_M4$WFU*mJb3Jg$o6XP~+Ys7J0_e_`x}Z2- zjrCaGQ){TIz7%_}&zGA2X`I8CHdO(U)mp=D`b@ccf7eu(6@Th%DIOybI+)_C$`WK? zSZr};Uur1~i-BLfeivnUx5~y=k{Fq0N;eVtH)c_d*uus@uc+i9z=m=iY^=uvY$5#K z2FaX$WET;vsV2_A)B76s7$Gi~cFnM=4~D#rHqNF(B1so?SsGH9zxO&@-Msx?Zl<2^w>-04<rz+?)e(!^|kOEYiWlwYmf8xB1~Oyp#pnoyoxW#D*Os3Aks+8o2G+-$~) z&L@|;1j1Mej-VYFk0jAypmwYez}BZ2!p|hD?G|RRX>*JEU))5_+eh$rtIt8wtY34A&G3EA3G;X$ILIEWXBTQ z5iI-J-T2npDIubFwc;TNH>z^&hiQyNQWZpaE$5&6sXG)socO3Tp!$d9+3h62MZgzxI|p+11mlcmmy;=x0l^upN8+uiA(IWy%oP}en}Pm) zmKIE3<}fF$djT)_mVpIF6&0mgY4fdoV`A9JZ)Kiq{U&PEddYgw97^#Pz*-Fb2C`in z$Gl<5UoBq@PV>DvU)Z1oLo?_LB%QC)ac~I>wNqL5=#D^mQ?y=$XFqiud)Cgag2B<9t!S`rNB%zUw9W>5 z`e&lQ4^YcCCm|vEQD{qqu7%8mQny0*#{O7&;Z&)}_P}3jT0Sx-K|Y6!6u2y9u&Yuw z(Zh=~osf=bI$dzk#7dP)_Un3U`r)(fB9exP_?FrZVMvb7OkV*~>A%c{L0bXkeP5cn zXzyKglSxQhP~wxmDJt`xEz|*i0iS9PXaxmzNi;+ZlpES^2xDp;NiR`*_o+>9gy0nQ z>zIA^TO#zmu7x^u{%*0~rz?5Bc>SCwZOOkZP(Wl5?dWTY_b5>D{RH3`xYgx`OT~Ct z{yh=Y8GrQ}*@JD?Y*{{e>#FruU}&^bzA{2?|4%M69Bx0ak&Bhpvx;gAi7Hw)dm39+ z=VBt?OHK0#5k4)o0~r{EsVMsEFXWanu^pWzl|Ilmj@rg?#QipLGf~^e`+?QaY9ik|0M!lCl6i8&C5iND5^d3W3?~2KC`O* zoNYmA`q$2UR4#-3;Q*3?fj? z#l`85C*?8(IqQC|dy{>$|Pn1^pb z+pFHRR6L9{q!43t(a$+>T=n;`c=ruKWy|c1%T)tJgDP8{;KA(&8toKC;0-f{v@0_N zANrvd&-kD7?1!MQnBfhXpN&XKu?zYgJZ688*y7TQ4T>5t<9jL6XF_g0~&F1mhPL5bbhW8g;;&<``~ZWeJh7G~&c{_utBnx4<=~Ggy{R zBAI{Kz~3g}Jo&6Xj%-{z_^wLud=mR{tDIJ^GdW#HGd(sirjb-FyjEF}ab^lfe`X!f zS+IRjPTVh}i?c2ryw6U{nY7P6u`8el5hw*ezHr)w#+E!$l;r6J8|ZnN;SpPkx`GM_ zx{kp>xY5@E`i$xDY>Qp$z_*v04(UQGyg80@_qjQ60L`hn_Q-!q_*5J!Rcsb>6MZc})*ct|2%E z>(kr{q^c7eslLl+EM(?y5^dWqnsilbD_R~Qc2AXUa`YV6{ZCCI%Dy$y41Q#U-iro= z>?aj+kZ*Eg)7T}^+3>_}EF(paVK3pPj;1T?BB;a0_WyS=D?0fp@-Uh43WsaMJ+68d z6uP+DRJ+K86yZ{AWb18X4sUjRT`Wwl%HFF1wC`xb&KD~wYd}(JSyKx@&o7&Ttj(aE z7n*QBsoaLUrvW7kIRcY%++0qvtQj!;gup?yt$g@X6&?ZNZ< z&wiA*KqOgr6lLcKCa*9t|Et_`U1hi9tJ$C4S^C25DL+LCOpm@OnD(t61Ntb>a~5>8mjTCg*thG*o@UPZ;}U_YC3W2!#Yur;AA;$XuQN*KoyGMy_JYFW9|N4fu_qSjKjg-LQ48j29V z?6&JQ0{}i%KSP$3$vM5s+}i8X^(`Eac=UQOEo^h}HRAOmO*ymsi4(;cYq9oE@W&41 z_~oQq5?p-~+`cA31ck_Q!!l<8J0gG)h4+MS$OPN-0Sms)Dn)w@V8nV#EnJ1EuD8@8 z{m}i|Qqx-pP=IdpntG$PV)hsg0T>{|oX@yg2SicC&vY}Br1ltCQjmZMN?~9?n1zWd z!f9M}tlWmMf1V||%@ffitBT4B-%X8zIk*S52Oo* zL8g<%iODZNC_+44*N6o-jpZX3kErZzl|I=K3(=QYcm?6`Q3+D+vM|Dn7S3;+Z8%?_r3{yFn zSl(7bqSAf+N3{F!Y7~vL%P}sjsNiw>fUyyO5u@qnLsq?*7Iw1NchbClMdj!w0NU0B z(WJ5m6Dyi>jY)bxpRO8IA|sQ7V*(q3Y*bG zSysdw1rO9nwmT%hpZRaFb7*YD=6fIN%2v^0+cy1rP6NLi!=AT=JlPKWZffT5${y1 z=T}&sx>4sX64)_(&vPV}p zXC3cQD|O1bDvg`P?f$Ybn8T?sBoVDkxzKL-Ec<=6P=y~X0|4E7(`^{5YLe(XyJMrU z<&l}|q$iS`?-00B)nXbKtqp;4LXJGl(t~Pm1(Jl?FbgjH_1cnidYfG_$eX+$ZNq^N zWeA4{VIvxWjg^+Qo>v(Tp z(}T&i_7{&QAp!+yc<`G0#8tewirXnmztj@82?Rs5VihaM;J0lE6}|I@4}Q+U4V^8! zKDfi!?IifOu*OOyVG6r8Pjh*C0*c#b#V%?e@LiQSKv<}DKnzb?HRZCo@oEeTAxyy$ z=wltRKbjm^DQre8KHm|Q-*IZj{00+I($Tw8v&Iq{XDQ9%<5#W|biHAqL*YU7HbTnT zRke#b9Rg7(O`O90B)JNKo=Yd~iEB5AOo8Se@blC)0K5G1o7?sQeo9eap!R%<|J*1$ zp&(T*5xB1?y#LN|>SK%IZ@c6S0?*bR!_+#C()iV&P5xHjwZ>Rl6`1>%GSFCJ;i?RCc=W z1T9D};;rE&00Bj<2msNBQ~V55?p1&^lV9rW7e)Q-=U|gOOy7Y@EF?Ee;3nkVu?Tic z5tY>gWftG^JYWP%v^ChaPBY(9e+q(mR}=1}L7(^m9nqz|)6*X#H1zPVq)t*16T?8G zF7Aun)03k(Rwq)zPM-d$92uc?)y}EFVd?E~`C?wHzY`e20%SX>jHd#yybApyF|8N$ ztA9Kc!pi>D&fxQ*Ds_k9oIu>z8>k1y7P}Icm$k26$4;TSj>>tZPV5csycms4>Fdxx zxF3AhZ4M|(qr~3F6fsxLI}qhhWKiP;?AtM8vls=*ZsfCaOkT%%G|wF=sEj(XVxk+ka7yn*2|rxfY{snAYSg0>ebmDndq| zd&iWkFTPuPJVW){e?kNvZav`BAOt74tRrYrnhMs#{RvdYfxEmxG1Gj~f*_|}*mhIr z#BZOQr#`%JBH*0N9p&%d0g)Wv{~(1W=^^SfhZv;4&%rqO2|4nI{MW+%N36953R#d<|@gwKkX+?bb@GaM1%4f#W-I3-{UnLkJl0ASGEd^EdmP$kEzJ z9EHles#(|Kk*-)lx&zLKx`(_C#1%)`YIa6)x-iBDo>6L3ZO$ts zSSUZp2TF5+v!msBgE25*8iE1$%Qq=M!8iCAg4^lbzSuBI2Du>18YuHX(KO50D#sxv z=QnEFQ7o0NZkO9=sjsDbOIf?5i7_hS&4+Xx%`FN(L3iIT+ht69{#N3lPn;b8A!VkL zIEv8e49h_2FXUt)8IbuAMHJ0r47IcuZ-@+=jT?$eD8qHjY8f>`yKgR#kHU9Q_cZ=Z zo;!L)o@*~zM1dX#{r<&&cYReZ&CIprkkr|11Au!^ux^g5v*pX0C(|R|NHhRhTQ%6aYaNPiag(M zC}q9$+Aw#@^M?Xfm#aaeOOhFMG}9&@6`n6WI46ysY>_>;Ch99hZ}Hh5X(20qBN(_y3J zwzvfY$_TPxx zI!YtTbsk+9OllnFr~Bkn0LKh*uc`K|vnKDppbY;huj&XmBEwvd@(RQjy9ARkTp;iN zZtt~;YEn@r5U$L&oBJKW6>NmrL8m>W%G>&I1 zxNObFuSiCZ65NaY^wV>hvGL0jS+UkIG@d`CSx7V;8^Wa3AVl@>s}yX+oscKXK|#qz z%hVZS{iN2L=%V5qS){3<*{19@+1GD2RIVlPejWC;WtJw@@%=L*yjcug~exB{`* zc*&pMZc4fZ4R@)|+mird^9cT$)gc!lLq*O$XYnMuKe+*IhmR1@(NS0{4-j&8Qr4U9V}v@~nq zgtOmv)amgdNt+<$`5N5@HDm8bp_KLvqzFnOX=RJ%=%0jo5(UDbD2y_)R%FT~DHbvW z!8@@e0jV`O=zJQ+0~899YPn2{v@+i!Dgey}hZxj!5mSLhHx;Bj*r1crkOU1eIi=W) z{Q50&i?_c+-Smuhj+6zQsv0Ntw!1q1xeJK$GE0=etV4O>hhf*5;i_b6JGePPh9R1(p(gu>82@$MC_^r1O_+*v z$1r48r*~x!;0Gt~WxIAI>G|X2?T>3Tr=84y4#S%X}~z*S*jSH|rF zvQ2_sHARm26zyiupwg=3TH-fVDt?x{t!!du;3P;muC7yt*=Ega$e{?=x73rL7ISt6 zrRwf7>z$cCvs1B_>;eJp_hM~0Et1-O*fE=@co5%P9?_>nnYN~EZG zKci!V27kBK=U9xIF85cXg<)a<=te~}ySNsB=4d5FJ zB?D@bkJw#E)C|4hw{<|}{ClC34g@dlll`Hi`B*=86Ufh#$MHJ*_ONo?-_IZzUq=25 z;CTx-ZJUf7GoQ`ECCAHD^W-_s6o=^iyeEpfDlz&KxBnw%R{Ee~IsIBNVTD46Ecxqu zx_o2?t;o}+uzC8eRJVM&iLVwR5h{fpomP2i(vo4Z&#d28MWz7lO>+HV;a-h2!D8ZquF|#arq(V-ZA? zhoW2ILGtyUQ&QVAB?re>L(b8qzeS&dg|yr}=Qa|NEQL7AfRG5jS)x{+jmvXP31A(Q z{brbUkdh~_N*1(A9V&1_*q&@-3lv+a=vNxvi~V#GI?sKBqV5;o)8{csiEWmVSd7Is zzTq7=mFnkBEo*3-Ag?m5%!NhG0DY-i$muinbgBmAfiDtHwOEopuddf-OkkBgZ;4Fw zIsePt8Tb!mgwbp2oa=bs%TRf#rOs!hWJW=#7^dSR3*Xi zW_977Rv(&?>eh!l#Ys-ERSB3DXp^$=fsJnkABeLS!-Yrp?lU;{nW4*4E&qang4lO1 z9Wl{FIGVSm{(SlsP$0VRT!@j2;{vd_pfl6^Up-~8AgMRy{R{JxST$v%qTTC+#HyXz z*(yTohO&&Zi9wjToVX-Q7ve~6oTXU1G}-Ol%6?z=OO7v>NjsAAJZ?PP5c7EK4Q+Qo z-G-;`Himx^uST$IV+`qI^Ix?pBHU&tEAG>cwx*vc-@`2r&bqe^`I1Kxmo5}@xUipE z90PB(M~xGNYS7#w z97(}A{^ds$OM5UWBy(+@onXlvM!Yih+9EOFL{fu_S>Vif8x5#_5g<_2a)8M%jtD7& z=Y}WWlaC^6`bp>p>V}9_&T@x^wu2>?$b12JA}xGDohZu8XY=+ARVlRUfK-(akn|(t zFG+CHP%_R`1)kuv=P=$!R$ceg%j#C?VF!_wi+xb*8_|~EVn~j^@3u{vQAmpxNcNX~ z*;|yNO!?)OEMjbiT&jUNiyh~f9bl%Lv#z>F;jm<6%8#zWCl1OT4`GY+UZ1!u5w<1f zt>r66k*{kxvHeF_>Z2O+lo%u9R9}Z5nlIW1DyRzI+@a zgmp8_kE3-*Y-b%d-$&cO$$obs*NYCg=mSx3xD~I!Aub3`C{c_C%{Dg=L&1=Ziw-zD z@~6u43oOq@W;Vl|F=hrAwr_$u48%gQLf6X#j7T5@$cUBF2x~I4Qo$wV4n-z2QVnzc zPQhE{s9pL~3^@Mb?~P%Dyo);g*6Di5+cux%`%piiR*w58xP!3>XkRVv0F{E~YL{=q z0d&!#Uw=POl&VWU3EvF=kG`*@7}f-%JEk;O8CP1mCJY}KaAG@eP0&-soL$N%VK^md z(T1(BWsSSV>jI@UeZVx9#DVl8>OjX})#IAQisyxn@AGm+eXcv-pCH=Viys|EH4N)H zuWu5NRYmSi?9m1S0_C468of#%8r=q&o<;49FQ^~A!tdAiz4;2h+MO0l&kY*EDjVGfWnjc1bq}Y#XH<~w-mkqe|Mgk%p^0X*(kRpGh!u6%_LDJJb=LH5i z8DLAy>OBGPhDpx>x1-%wYEK??kFt>ZF8!3se4SD^madAkmv!+$^rB^%`e(cufY`Wf z#K@vgt5Fx6X5pW&mref+mL^cx2mx_6%?LS*#_T@ZYvMR|M*DpEN5T=9R>x-QX zm@gXT45@5Qb_ONq%N&qgeKlzVP|D&XKCm*Acwpm8zv)5h>S?={VJZ@3X?FPRxSo4+ zY|rm*M@;Bc)`^FnouQ}O$X!kyeG?&pcqn6C_%8t;C<30O0RKM#z{(`=ucHU$u>LG~ z9WaU?00DkhIfY0!nW`l4K^gaIRddsVSb}-NDou&BK=i}>1zbtCAg2-Wart|=WA58* z_5>)P3b*o%*i+xODmixFVW2_L*9`*y zNJV0US*)mE*x13T`3P0*(X`8kaUxelNF7xqIv6_9SYaL9`yP6OJG%6wN&;l{dO0Wu zuN>-b4Apl6f1tzpvNgS^1CJ#iE&ock@eoj0aOgwTG>iHMzPT44mhfg|kYWH2P1DYb zb84oAAgC;kr7fN~Q($qug-lPL^9+DsC5GSqIye1%k?-&SApJ3wWGH+Z!&!9R+%@01 zl6tkn@y~4?ewFNOve%U&1tj+A0i?apFs%>GjO3maFvNN;S;L59jU?O*uhOjq6Tolo z@tLxOtgV9!t8_1M691IaF%MbLSbOdRD*MU2QteiGRPLj!;1zbWHb*A0hiM^xpw|&d z96%$xJJ1=XZnP*Hmn_0m>F_nZo&J1g+ZL^n0G>iaqOvR#f?BtlP5?{Z7)psPRkz&S zG4fHd&u7WnUaEwp)<`uAN{3(Cqe_aCJ*norf?z%2tgvbwMo_pX4Wclp95@sy0lre;Ut zbX*NF)jhnRx|BIyvfMb@ORl^oAAz%W&Gzl0c1B7~MFC3B8P1Oe29cm#$?gDe2_q7D z?TZ|6bS4#mQS$-_^qznn9GS908asvkfmlHMcda0es!Af{&B@kr>0TPTQ*lFhB0Tuz zh0`Nwv8n&qv$|5~OOvg5uA|!&D>4X-nVYSUKYr4cV26oZc z;=~Y4HFn3jj8$cK%JgUO_=(6n$Wsm_crbPM{-LhF$1>36`|+RSm|SRW9O9`ZpH6_r zq5RBe3J*!S1>M<+7kA@G4hgge^mS~MB8Euh<)*tfSsHErV%;=a>dYXPL?0PRRYoe4 zQL6?3df}j4G}* zzE0ND{*hXqAqjTQuZQdv=))K>VWhlp<&9h5mq4W-L&a{ae~t;rv-&R7Ho7Euk_g2f zQ(3+tYHTuAqS`57suI`|L||8r3`SAU#bT?ZYYRrS>KM)0G|b(QF$mR7?|gHBW_k}@ z>zP%QlxrXeGJ6y@u5F{$ZsX&KC`^PBVnHR~!E=!CDti z+vu-_F_MF3{3O%G8eK&^15n!BnM>X0%R!@&=KxPf zSAO~sx@5$Yn&AiNbPikhaR8SU`Aj^zATCS54K^)=_}47}j;CyunJNhOBUvady+8CD zYVhfI@;`k)vD1{7cq!$4JtC{L9`Qfj1S}xyTwfcArzwr?X(brr=-yzl!b}4rV}|x~ zgf8^f!mA8YEV29P*=BVsj-vLb61agAtw;M1w|t~nguSfqXPJN?!Jl#ua~j}VVXmDB zDD1qC_C|wl>i)V2`bS|}iZ)Cx%jP^?u_|@nz-DWTvzbP>T_nJ;3@#T88hRxSVIsePR3CU0p_p{SQp_U~Xcz{?LX`wrCbiNzHdo^{it=+^FSE!Ez$d8v+g^#$De2SFNl^nE1rJk@D_yoLnQl&G%1mVve4;O; z8zs@4Mj8L`&*<=u5SdEpYK z$@P!`bHs@4HEqR;SCKBXgwx{}q;&sNjD<|st)ttu!w9{X=G|>oh6Ml-ZzbpurS9@C zQ!7Dxc9_f4ku`gA(j2q&bVC!oXYRGLZLE&^0Vxlsg}AE8!4ir6BT}UB-zJI0_q8L_ zPh|jIRg|`AqzTBu}A6LZcR z6M-Xf4>j}N`qJ3|0v;urpVJ__j;O&dlBTv^r;N#wXNJMMXOb7QtdaNtM=+_7HSYRh z;Sw20rA92;ZJ14jy*#!c+hz>@tvKZVrP#sU|9UF4Iz%eaitOi5Bp6IP4EuLc##4iV z_zMU|K~M{Es>7UfHRH+Er}^aRf;|S7u+I2E$k+?3^gy4|a9cX%(xA&IOw({pT)F%O zhoa5j8+Fc5pl76#Gq39x!`Kr^*iSYk zQhKv&nQhf4Txy$Q<#^?`x~pZDnn5YWga)e8o{2NjIg+_zbKEm;V;52srXtKqaeWH5 z_M5#Ef^T5?nDHW!Uh3hFTrk?Ujc`8I2NzUy17Q|r`u&Ps!5L_Ui(D%@f#;e8R0EK0 zN2sTWv0U4}+=-M$S^Coq2} zIp-43OTQ%3j7s8hQ`%XmPigG>vBdNIldw(f?mNS0tBamEb>eS1ZePP<(*dn-K|pB4 z5hx@WPMzU$0O#TVIgY$A?GW~|KNC19{??+z!=jZ^lyL@|c# zv-k!USsnf+CR7>cr?i|2V932D2}#_mXEzZ(&O)u-m}-kWt7wnysbb8yB4bCImmbnv*l znQ8?zr;_N6g-^+38-d}e|Tt~(}F0OP$eicNV` z+m?`YkDs&80H&GPrB~5ng0l!Lfumit-^Np9Z&+ec&?Qmx8&pZ5;7=eIKtHllVi#wp z3!T10?^y6-(bL|yY;Qj>A*oZP?!HhHEV4HsJd3Vuz%3QEheOsL7FtN+WbRR4*XRn# zo;VAJ)p)aLOCL;8HYO5C zz!Rw;7#p(xaHHd51i4n44o6)51b&x9TQN(P{nu`tO|I-imuPxQ{MFGb00@ZhLr0;J zIUQrfa>8~>#Y^HTP<5diyRGqsGCn*5=Kp9O?w}BXtGWEk9Qz)pUdo20aQHLdz{wI1 zD+Xv{XhCy{>u?V{aZ*|U@Z_&b9ET*zGO`LewB>$0u03MM**+-#;+m=yZ%b9Uu4Rhy zI@QJ-vWPK!y9B+7**g9BJi~-E^&OcXWi;>)-jAltS-xQieYciO5uuJpe zp|P`*jTUzLc<4YBL91ivlcy?OI>j5!(*_W_;Wgh!Wvp0 z3~v8v{i7`DWsHpF^Dc?F-1mSp;{%`V;qF)gv1plCsrLAbw1sqAFv=@~gDb8^uO^%$ z*1N~hRDZdN#mH96Q_PJBh4UU)h6vjFr*k^b{sq;`jKti{k9p*x<4+XoQEXs$&(qtZB8)&M1Qx+RafH$ zgsS4PX}RNg9xP{-7l&0bioKz?@)SW=$Uh|r0TS*-O|Tq(RS?v^=V#qdfv8vs`DgAe z8p|T%4eIPFq0$6kSU)+WusiudwV?7jukjxAHY`4DF+|+D9$bbcyPx|=w0z&;39S9= zoWtSuq3|vp{1j3SW9-U%9t;GnW4oP9Gd)KZE6g*0rY(#X<4rm=KUsCnd$6eRe^5sd z1JsKhG6?`wN?!c5G25+%mR}Ct$bTF@-t zV>vlH02CT;k)OULSHlg+T0CE@IRZ4CNL1tA2H@LZ|avmB!3s^l!%Y z(w}CYcdj7!z~985ZF{Bm23|KI@l@n^TQBoU9P^`GZ1%LNNDpd+s|1G)&5cGAvyIf@ z>{rG(*3jwr==NG$lGN8LG#H5L$1Eo>rtagzK|rxyUF%V5w1;O6Kzm%Ef>ji`ajmVu zO#`4l>{A%f=wM3$<27FpkE9PxUq?qn3rn#5r$FjRjfhrPPVGgZBv4_$AmgaYhrOnQ~p87J&Yd}ey-D#9~C1O9gGA@usD0H zTp};QGAI-2M=c29cT0VT;vAk+64g1Im)&>fjbZcbDx}LUF21M3+vlmYbc;*0SvsEI5LEmKl49uj_#!@Ua`)){tD&>5gw4&}^^X(Se_7^?tb z*==oXY?zq5I~T|Z!>KdLqKP)56iriB<4pmnQpfVMt+Ed@3ilcf)}$*0N}+>UKP;`v-=Y}J6rQ4f#yozV(3jXf>Ew%Q9xsQV?3|A zn=Pm1{#p8(J_n+p_~MK^Y&u(}A{Gy(T%Y}Zpa;ofuE-mtjz?l{i=>AwK4fk%aS);R zL9APcn=}C@ehSBG{calMiJ{V#yxty(Cbfw^)Rw-W)|@XrgHRye8s?Ym=!asjYo7A@ z;e1itu=XmDr8q|38Eeg-D@(3M&9Q@SXVgM^lWu!ieZE-u8WF9-a1a+h^G3i^3@OXl z+=h$Ww>?K};pU9%uYZ@=B&4IN=3%MM8qecNKjs$d4LB-8{rE%njR>TX6b9KQzql!V zqXj>Y`1rOiCB8uYMx}&FUYHsE%sP>o#IL;9rdd!V1EV&JjpnsAorqFICj)KaH2{L{ zwg4)mzO>WAWhZ|m1*GDW;wrs80`CqT?!plLr`6-M>jajKmcXGR;f#<`{A+91R7zIk zRfZ}0!mayEpmZy#pDRc_B2m{}P5>mMnhqV1>b5VNTc)>RjLIdX0l4GkCm_pb!(F8# z#{-s*%Ayh}s{w*8eu_A}U!#bcLsUDt+H0w#);GKc`Vj`*fPVIX2o>r9WiyYZQ~!7U zI2J4PqZTmRn|iB=VcFHTM#A3ZU#SQmj+zWYa?i4kCZ?4b>!bF=}(W=NGbK9 zX+78C8e^BsN!QE!{hq>2q8y#6Ond0sN|P-*Va`iYWmF@pE$XjUxR{G8;zn}$0Q!kT z%dEs}RF=rUQtXZ#1FJF+gMdZTVmGP4^kmD-`NB&n0$F9qWUj*-D7c1zyJ%M87heSa z8pEk!Jo;0nTXjgxCzRX_G52vSrdmaVR5k9>M zF=Xl|LnGt}7a@L28o^uqgF^VpDhr4VP(xq;W5qkqU`#(S5|jKHNkfax8QjUt+98dk z5~Ebr?p}CTxYi;La1FF*`^=JRyg)&;=fL;I@F)6sDKH}XS+PbzFB>Ln_RC&o{*si$ zi|cpU=o?o}ZuZThxIK!m*22LMtGmA}M8GOn3cZ$89x|O62Fr-E_lr5Q*_aXVD4PdI z5Z&VzW(CD4=ssF{K@|kL$;kqx^u%e`N@6^C!@^0REM_^wJrDaUZsg-Tw!*C3z7sAMd7~Ci~hW4i8C*Kr69@;(V^yhP^!!#DMZN zvz3nJSSfw~3l{C$Xj4&@Eqp~Ao#kx|kFB4M2*V)Ov;Bn!GS-f;9r?*+{l6W>##fmG zk_derK;)1POU?;Zn@yFXh!5goH(5)Gj>0O2ChS=~(nwzaJ{KY5qC2^6tpfCdh08@) zOe~nk1sCrkvl(_@wXxMdEpZMbm04!6mWJ!l#U@Ll-U52ib8W_`aK7?PS;{uBr0i#H z@6_{(5lv0hrTC__;4z*@bU~^-xth7Lq>@#p{1>xi_LY1Z8)A%a-=Pu-7{3j<7vJQZ zP19ZB9^}n$Wc~Ypi;E!O7%QqK%fyE1mIzEGj!$IM7D;iW^@CH&b3u)$p?k_pFC~%z zrt(NSbHKb_H@R92T3jRk^f{nD*aEqQ-MS$Y-J?QMK1YWhTlQK)N{^=W>TNomdS~fa z{+@GLnu-AI6zwxhIF1R*bEls`6w&j@*FlF|0Cw0=WmGZoRKqWGKWZTcLIZk>=JPuV zw^1cUOIpvKRc*Bj#gPuwFbp7$*V*3u{#*_0>V*PoqX6Yq{YL+|HN{nwV;tEcL=21; znG2-}yK)OyYC#`W_Q;X=K& zrq3*nmtF!s0(jKYi>wO8?+4hN@D-49fq7r1cREvep{zJH&iopvu+VA&p8$Q(=B1%GUSyJ*~hU_c2 zJ1BS8-=14ZG^xpyTHs5xJ&}5v8qx?0WBC5e=?rJHlmc)n2jaTL{euPj#H>&Aqom^m zfI@SMeHNjxLIL7zSP;FMY^Lm|xW`k!l7r{i2WRNsGJe!o8rjdDev zZ^D8-6;+JWB{MKXr?PtvQ>vdvIzl~E=9mKte7$0X+3i%Xdn%hLx;^qEboR&|$RSR! zBX?ctBpWPZ(KW0`NQtvN1a;(xw#{45j5NvXJHkwQVN&IxObTE{lL0~d_&iM1{q!3| z7z^#B6(&xdlNPG#Qc{F}3x4%KKJZ|O3&@}UF9S5a^|~cFYg1hVVZjh60A>{;w;*o} zA<;J6UREr)Bmc}*NkyRHeh8iqj1>KTy3V>Z7eT2cL$Ps}elBbZpEyC!R|C zibb%qac8s4G8wD7hr=&m$2lr!!@F*rw(^N@w#yJ2oXiGnDVmxfAPi)hD=Nx;7krxr950XBhAQuPe0iA)am^{bf>v}vmF_&3 z7BM?V35(u>EJ`mjh;pyZT3$f9XwMglg_8faWh4*xf@qX59UoQQU?3>n)!7vno;J?W%s{6K@1=mP~ zG57>50Ru{^#;9s5G-_-qQSPhZzm4?ooVVVTQ{l^5WS4gn%^YXW*PDbr%2^lFP&N_| zchIdV9G=-w%bYj^kZBDC+T07Ns*c0?9P@K#M{Gx%IU~I1)YI4O={Zl=eS@=WIYJ&s zl0-G7=^<04X0CO0)K+HH#8xeBdFD?Q2u>Cu6t2<0O^htc8R$X9&(5-8f99$vYb(h3 zIzvNEQPNQAdd8uk3u#)dKsrz<4)PPAau?uygc&ag`vU7?Z<8-S=>u50kC~3y zNK_F4{m!T^Sh8B2QpIAi;>jTBIkKmzqAhtmG35Xt)#%tV3SuoP@nJhEg$RZEcB?vJ zaBZozDB8SoGwZhZKm-n&SxO?-cEv}W5&Eju)>yl_yr>Css|941m}JQlRR3iK_RypO zLu*>MDt4A7^?APQ9~AcJjpvZusm!aSCsEzvFi>jIQssei)s*yc!BAL_)V=Wjq5T6+ z&b%06&OPDw**iDcI90x*`VN ziQ`GARxIX{kMc6a@*~y^N6@E8yRHU+F+fZ7IkdtU3Wnft%3&bt=GSUtmRxoFp+30F z%hVp3YeKx#$=oi~N;}C`l*4ek1=wo0?S7qNh=AIcCYtSRr}d>VV7TQY5$EWXW^b`( zrkfzT+21N^EhJI&F@{|zGzGbnk8(IhbX$c1`>O6Aqj^YWXm)sxiEhYfepMA2uK$`n zs8Wj4@^H%|HUT1RQ&39EU8okH3x#ge8ETLv3KzKcRdNUv$RVQkNU&j=GDSxOWi7tZ zAfy-{9Ei7Uxq7L}g#`>l883pJHpWU(PIbj&|!q-CYA>B1nlX zh48=la%U(8D+*o3z3H@7N1R@d=5bM;P-xaMs}o6c7L4H0)dQ&Gin z3;u8l=xx!~@v;z)psbA?W<1o8?wMjDc3fn~IrD%uhX@Onqi+XUr zlckN81`H};8TTiGR|NtFcNL7J&EAogFGe?r^~FO{*gjK(h(_}1GfN+4RX_rNSjy22 zSE`k(WW1K+@umMQxPm$&S2!tFAmJz4vp>LLVQGhgCjbhAsRB{S33b~2rTSrS*l~U@ ztD027VRGgS$pzyvZuO^1ZIke-3j;~XnEF@t=Xr(|rNvsxS(Ap3=;x_KZvMT$UE=03 zON#BRK>yLT1vMH*&9Wg<5N^gG5I&d@hjU%=G8X0#2dmdR1}@+Xty-uI_gy#`p80ICYA|LABWU6_>hD8#<+lG!NO7OLSiwaR?{!v()tQ7|j z!|C->Vjq_Ui8teOru+-GW8kvsKaH72FKsS$*9oLt zpuP6Un>BgBY>#xQmoi|hT3DPf>z~;**U3FI8Df=45nn(E9b&mQf2i+}>e!Be*vw$3 zDmLs*qZ2ib&igu0S1jj-z$sVuv*&boP z+6V?#R>e}neF!$gnkHSq3O@w9AyzYY7KQn>w*@$f&J6U_k%zou8t7$K>}L?5zlazt zVGzhDGI!8OZuKHk{MRekD&7&>Ci?$8a|OL4i|bEQqQKJ9SCKG7!N+27*6gkauh1@+ zWtn3|y`O^kyvP;gac>~e{#EiYQxW`!mK8!Z#-XNKjFRK?mk|#uL#!=PWV?=t)<5QK zkIcY)eT&C(k*54&-Cn4LkPSO!EnP9RD-d`r$U)g;%1P$#6Sx#6;T!UepwD3JITfT_ zH$ef5&cuy%e0@ScG(~0hipU-I?(@(1qhD=6|40{L9v*oWpK&J6HTrwOfOq##s^9yT z_K7yN(CwDs`PW*vK?052z^j8SdNB>J^X=4dTa>)aFF(b2}(t4gU9wzl{D?ymNHGg6Aos zaImRvsF@TM=)PWGQ(0yTbJ3tg^caDDb<@h$*_Ss&jUON4gjC;q_Yk;^IuGztelq&L zZ_oO{H;QtO9Upf%eVaw-P*_48$CSi5;_`>gdQ29S(mO^30OBMXLHfRa$`|eveiNUD;A3Osc1bU0ZW5a?`YBu`Z?eTd0C+*$)D7{A&TMS6S*W2#zu zK2HhEkoPw$duCg~d|W3eH=hKpGTx<&dzf0oWIb%^2v1C!gBVXK4j0$_Z*{O|8-{Iw zy&C*FkU(o-FH1(!1r|4O<~pZSLaRbXkEA4^5~#CDPNG34uoG7v9P#TmmToifVKq zn;EB?3E*te)=-!m;~)NwoVL>D{%{?eSa$iLiCzEgXSQ&V5yx9EwHQ6{NB?&{?8^=8 zG}~BiI%|@i+(5t30`?@+iE@@1_4CEq(WRPvYVo2tMAC05R$HdurkVDo42#zQk%*K8$Wl(xb_sBZsy7aSzfYULYu znu4~H&U+1T3M51YCms2470B5PF{DcMr2Tu+Krs&n_KCCc$!^HlUM+l34=~d{ z6zmvr)@ROC!N)hhh-=sUk=LE?d;-|(t627w#2PF5ekpM){{nNQ(uFR4*PU>K4dkng zX&T7R7QB4ZyC{6t{HA9ce?pHE-K##FqO3`pKOe+Q(!)fvmLEk&Qu%to+u@YY;1a%- z><6)?kcAnrlk$P`+lPP#eA7@@A1>e%n~o)h1X)8pljVza)`X zyKM;2H_j|tPecbKS0==oGX?bWeroo)34W)8+*$h|KtL;!xmwNq2~!g4KzVC2Jy{V) zL|gAuR}8PAV608}UiiU$T|TpE9^loWk1$2{{nrIm4>18J8}Z4e`H`^L6uFUA*zl)z zcw+cW)<05X%8Aa0>2s`kv3!pwoFzhRD~jOYj;?dvyg!O#R?(*IjA?!JOa~O@%-U(b zv*Og55FB;Z1DQ+oioH?EGR^b#LBA*YHE?m}&N<>l_iGAL?yPy-gnFv#+qRA-$3~V} zCx%wznTJ?Mue*EkN5e$=f?xq$8`ffZG<$eegk{DPCgQI}m6Od2MvXT%9*%<;-F-G_ z@ObT-rwb2@yx*OciuA@v!x4=^DZ3_3O7;63`GoxU>j#yN)i0Lpc`WOD_%0sx}Z1gV}o$lX|$X-qTl zl4UhfVAuWlLxJriFhB2wLc$UgA7t8Zy;HCG&SCK4a-x?rOX=41UX7?+cKyOPw&dX* z9SW2X<6%dK{}?ULTF81+JE9RDNoiN1V|weV7bwxd{22Efu64renX2E?Rzs?g2Zdb^ z>G>WRxSb>T<{f5hguf zq>^ejIYP?9-th4ds-IW zxWXMblLi=@)hLJk+ESZBf+E^CC2hF`Skm_<9_Ld+^o*@&SkxQ4+@bfLzwUuq)lGSR zwNBeEKN>KkW5wHcfDEN@A=EdQbj#BNWCI4 zAoZ+*dc+gfR}-UUNXmA#zY ztDO0w8l0kErwsbk(hsDo=8M95lM5^>e3_-{Rj7s-hd>v$-rIi}zS?|Xb19e5m9FrB zc%lE3w^>r{X~f|}cQ|C?*vtRq2XqHqX!Hf@lzMjyWj7^}sgl<7DxmO5e1@yGH#NE+|Tl~BAdS`N6hL>D)>;5 z5r%{Hc9qu|y6yHx| zNR^U!kniNVUM4*a#J)=Q=azb*uR>MlRnsayDCMjg?kzSBB--*OwK#rDh;G>^oeLih ze?;y2wR82uj?ey)CathV*NRhyycC(V43qk)m=;j|Iaj`hkkh!UoRWDr>WBHPswh9n z{>c(fSr8p!+ns%#l&Y=`_aP3bFj*F)Kb{5*^FLf zL@e58H<{)@$kpT=&w9vkOwwH-NX)6O?@mc@zfRIW#Df^Xs68AQzsz4TM%sObVU#*= zot|d*M;qHSbUU|hbA=pHcz`r}RP#RFVn#f6?>Y2|q1anI>Csk64vHuS!t^`_Y_vDG zZL)j8al~k+JA0vy=EXOuBb{w13z zK!#`CrRL@uVj~ha*TFA_jxC^~9T*3O@P%ZQ)O%RvfG7;8BETsZi5wz^8B z(xb}g=7PBVNSV)0Qb;oEvMpb$Jcv{8Wj=M>tVHS4f5Yx*h+3lrfc?AKLsdf7E@4D% zrc2BODdI(yb5uvVs~fLvsM=@-z)aFrpvEr5NY#{{nKEmhqL^+o{225<%!UE?TS3H8 zVow(j6EdnMRqZzI1kZ9a=`^prZXvztY9pjh7#oisYdbtDWt4|rA7fn z8cdIu{Jd>!^uGQ?kLk|J>R;V)M}xd{_ND}~EGw(LE5Xi`(F5+YfsV)`A~xuU_h?h? zr(^cDel`>3?3UHXURVsgCukB4?c&t#rbRDfor4(fY$X-|f>rTEThIuHAT8{pld8Wr za%z@E%S`sbcsF;d%nV^%F|}Fw%th$dL}BY4gr-}mv<@rb4}(wbbBwCXMT$lKX$g*A zzQ}zYE#^Dox3!fX20xpH%}nH!=$_=wo%x~;U@Ut(3w>J!I9;;KhOpo8!;hGg&V5MDWA(1{j2{ncc&x_lNjacV;AVUdI<67(?=5cqF$rWj z_-lJaJL4}OUBPN?7*t>tFcn}sI;_7D%Wgh*hzku~mttWo{M0j8$|y8n=39$7gyw&e z0ARK`Zg-9v0F)Kndf^^48@}j<36q^@Q1p^pTijmr-)>W_$QIM2v|sAj{mp);+(S!K z8JV&+%uqqtg*aJ2wJ5JgsNkIIq)SL6uOTakk7aOkKYD<~K5^x+m==&O(|@qVF-(hT z-4RDRbi>;0=QY9@RH9@GGxLIs=0DR#;SQ2mB~dBf!6@de1Fa7dj)o-4UCc*D8W`c0 zC32g?jSr1FuNTpbIPih`O>uzD&Wb#{0G4gGXS>^xd)WJ1rM`hFXCmAR;sy9j3XsUm zhx-IMYi-`L8)2%-NR9x0Li^U;q_c%v$XYn#31AU8)Z(Ssf?w&*k-CwGzXPP* zLumwVaB1r}m7k^`EE(b}xaf;>+xwb&ug~i2i9glxi}y|VfDK$CUpDD(9@OiFhdlKWv^{=Qa4m&&W||0kj+C(Vw;??3 zO2HpWuUBID%@djOtn*PRNh!1R$~v@gi%7)EP2>y^(5U@$1q!Y32Fo}LxppKKwJJj{ zqE*nR0xL3%6e>AhCUiwo; zA~jJp* zpbJcyj{n0iMS?n3ZFUFHK)EklO^i(oy`l4d%gah9;j0A6l&$^(b~J>bOrO#3$y;S9 zLNVx{NZtiz`=E5t7=nf7q zLEobuG@H9qP2@w&B;SEQM&@Cy>m2zb${G$hat@aTXAs<QV;{ zH6M~fQ5or-{?_!vD}`@00lNUpL-!ChMEhxy`D-~vveaIu&zw8{Wlp=3Gy1zQ^=N&o zJ8`msvqUqX3>gH@iGTb=Q{t66rG#zBiVn;T!`xj-QU7PbnP;U+2}eN7DN7^g5nVcp zvkjx=uGre+J9n8Z?izD`Cp;tawv>VV6LDL<0g^%|LeGbReFB5pJdtf!Em?Y*e!I{^ZU!(RKI>x#4rxGaMX2gEK|F{t7O``Y@f>S7B^w@D3 z2Mi;=WlHj*?=yrgdxxFjeZ_RRrcy`?h&Di=RoDGffu~8Y3jO3T_q97+?2bvf^xM}m zN_Yy_iaL-oEclmw zAU#&?3y}1UK?d7?cs_kacE8>6|F#=bw{x@U@bKmBV4fvkJfiGUvWVn@s;Ac!F0FHE zY$Z%TzKq0c{R_w&GGZk7BEJq0BYYNZG8b^okeMMS|Cwv$uSbolTH)-bsnWYr^23)H zpd7!g(=(46p$lF;r0Xkj*Jt=Gs>;)!fz_SBskSnFbscX!vw#I*xj0l?pT$EP{X=SO zgj|9tbjXgWEteby73vFS3)ZJ7t|4}xznF=_H`^u7iNyD9VVfmed7g`{`3p8#@yN0k z7ez}U8){f4e(fs`0l|E2(;_7&w{Hn~BXaYBAWog?b!QEWc`fRp0*OWE3<%ug16FA9 zA{pf1Q#65V+SkpP>sC{-Yz{LB*vM3;4l(vXyB6MQtZ?W!y{Z)yUrI(&rXr!``_4o* zR2FOCt<7>78y6kt@DLRIZ7!8T^B0xx_=Kb8RutW-V?n;<4Yv7@-SMw4Y$Ic6@c6}c z(`2edIbm)qNPps?Iq1^Yx|y(ODxu}$wg@6r70ua!La#9YozK9}XPyZ^Iu;vR zWB#;Y`g23rHca!_Bomm)yn6`Xu0$zV%*04voWI|&B3$!x2Nf4!ox)5+|M!%YkKu<% z69Bm^$1@<9NGRtpPVo3_^uDXmdW-hxbTT}%vtXYOuSXQw&63{~dCv8b8SUPj!MK1s z$Q#wVR4gM^XmqH$`jESPmkX@^&X6$hsMqTo6;)RVBLn(i71Sh?3tmzX01{vm=_-yK zrP^b&^gWvMh|*?aL2XS-2f)CoZHE3By{Lew;=GAxjosT;>I*yxE}zY|;nO9%vmf^Q zruGvhg(69a+;Vt)eZn)#&m0LBE%IM(97XFqEN%9Nqow8#fBC}#z2!GjRy*OMuI};K zSAwUM8Ag}<${VQt?U?o>m0&`n`O&{p>JYr3>v#Vm`Oq3BRbT?)X|e)E_OiVfP_`?Y zwcm$zm953O;I?HDqKn*B{E_@%6{3J1WpNUdHTHmLQH@N1!&CpcC9wZtD&y)-IFlnjgF6+RAOTIq zjXlh|;t>FK=7%26c3^jS`dF7dc$a?`hkrhf`|jFWD4cOSvl6>k86{R{9$+DomRRZ6Z}&-N2ICXdqK2Wn)rIHgYIh`Z^9fYcTsNkzw>QO!opz9^ zn(u2JABTX%Ux^U$P>?+@(dtXM&ij}$NPKI%;)U_N(qTb5N7@8^14r#MnSjrs?0m<= zwVaY)z$$amHUgz>F(iaYY{{tpI@K51kb5HGy!@_wL<{xr==J{cxt>M}AXObyYzTH+aa_qLU^=McjTvJ_~&H=e6mT4_4wbBn^~wILb8Pk^5( znTJKVteiAiiZ*!bIbjL|iN}8!{aX~nK>yrWotRst6Utz%bm(8w>tJNP&HFKpx-Aj= z@N?R0+TC6vEX50(Vp3}>gsvNgJOr^P4b^mGP{3{mN6YS3c}wu?4+$5~wmKi4%7DHU zGg~RW_b2;%x+tv0h=Z`YhX9NK4J?^|6WwrfEWJoPp*c4)pzl~tiduJt%ZxMHcYEW% zRGXF;l89gj?#ZGg#*r`qI@9VyW7u7-ZRgJQ1y*L zi=0U$h{JK^PcoaZf~Xd`f4Y|oe<~VFSUH_ewN(xdxU->=R#=Pzm{Ubx;wA;m&{dP3 zr|-E2LS9{n6SuZM@PG5QM?kMZ?RMR+GXsfDPa_837Yi)A&;R8c3pU4xU>=f3KzimK zY`lp>=T)@b&GV1Kn%7^Xsp$OCK$oTe;v()3yn4^b1*aToJiJK;6zqm?J3%q6&9Yy{ zbMVACUbnwQu=+Z6-G#zr*kP>*Dcyg`50{a8*pdM@`SwbhvarRI9RuL=4P<7@mQ4^s z?@@n;OOrfh9gD8f)o9=#k3c{bY$AQP`z+)9i}*g89LgxMqN0?_kg&Fn^Adv-j z>$U!Zmv*t)A#zFtrGw?lcR;&EXpeoYun zG2Q>T#3%p+PL1(rM{LfKiW2bbF+YwZuQ<2&a<{6}OA!0-m9aZ=EO@R;1quYkvG5qI zD1vF%RFIJ#`-Rq4axkv|ArT@Z-Iq-IBKwpCv~+8X`@-B9!Z!CfAfQW0(K@yoCifp6C$}YE zZg2ju4ZVXT)jP-;zeG4T%pIY{r{pnMwyraDa|BM!cGambuUO+Djbuyc-{wZ(xiT@M z5&PV-J-&4-3q!idKR-<415j_UhSc;zGLvgB7 zxW{~OUOLG0j;iq3pUREjw`knr3x3VE90EqcN5hsb{nrN0CX?e!ezE`)SA=Z-whN9K?(Jz8&Z#z zd0)OBpwE5sN3p8n!OiX+V)OEVPfDMr&y;U5dnBlV+;!^3LmPu>S$CqgBNB{Jq)C;Y zD8j$4yGqEd2_0zGw8U*Ck4|iuI5uhze5~9W8<>cWAAnKAHH@@t@)zNMj%(_sph~P6 za40OT?Ml-lrOKZWg5Y9m?XU;EIq%&8Am@Go2`5xEiyQl5X{O1aI`gFr)mf6IJMWk8 zQcV)U+xeyr{o9P(xaHDLleUjdw{kKHO^ra>zN9L3^(blkDec*#&zsypoTruRfo}-w zb}FN;}C5Xvqg8pf1(R0P9#Rhy%N-gGR@1!Zw{OU2Fu@V zWnp1WK+>D}n~MSg;8gd+w59rrdQ}5PTLO0ZtUzNd1y8>A!)u>`lwfPajgx^sN#DyS zbt#v0Y%fYIIB*%uywO&3SQ}8hFy}&8FMb|_Z%Z=|9H9-0L$7DFMD^#ZaB{%)Cm@Gal>j$;N^I3_{!tpnY(=!un2RRHmM#!C!`Z`ka(> zK6F*73JVp0zrMKx#dB5FO2Z|7D%*Qs*)6;nJf`;LVJ7w#PXZ!r7@tmaCvc6(LKTW9{-(~%u06HXEo>A3@`jUeGaOVCnzryy>jOc%pQb}CY zM%?n}ag)jA^r}gKBaqM|Gw+Wto3LN-yy&K}gc{$Jl;RP&HnN=Ut;a|H&P6xO0z5C9 zMqz9hEdK#sH;4-*+&VXK`8og9aVzBGqyEz`{_G6jlf<-4Ng+FGd756y`aQ(Yd2M=t zf|;5i!w2&KS_=wYE9*%fsOGncFT+$7Z0AaEfpJ7J1^*}VA*G2yo|cgNlZtu++!?#& zE_Qd{aw6_iq#{6c=~+dnokIQ}#!XKL8N>-~8iD_}9CUpyr)Xo*L~P0y!0`qsr^KnB z2xd=-gZLiCtfsyK`u~Ps%Ul-80E8gf%Jqn`LqVS5@I!UnT4CoE0={s(71LtT#MOrmc0uS8iEKX&IkY5_^Sr~#k@ z9H4yWDepahPy#*rC0=Fyo}}0EcP6AWh@e4gpWR|(o_O*s zPpHJ!^;-Cfn!~IC8qwMIoY=Re)G#1LFa=qe$9P^+7s*g6XVc5FViw=}*{~S#RI}Wh z+g2pMLtqw9SpjOtV+KX;Ds}mAeBmseH-hR#D#lSP@IADe2sxjO^U7Wp_j$Co}3Gw z1t`w`KwYcD1((I)!WNK`qLA&NnnMs{YKG$!D>?=n>)>wym6exO#akja9>VaIoUV)t zi>W+&LR4$gR@}|i3Ve1uo^b=j+DqmQK^c#-#do7ssaZxvqJ?hZ#a???mKDy<4sPl1hC_5MXi_cD~Byu-k-eA91{!^5xt;Lq-*eD(9qe^+N&lWcelD)i8bLNvIiMfq{pU&F z45jP#Is{)s)vp96+Wx(J0OAzE$m+>jeRPz1WKD9T>uv*QL?@m?$z<0(g%q$edCktP zELAW>0?&9O%Ft5_U~db_HH<`iay^)y&|bnn9+UT@I3U=SPQ%W-!r5nx=k>H1m>T#n z$|pMZcrFY6z#!k_F*)i18vF;))CEPw;68DW2c@Np*M$t0FPg3!>-Srq650!%ZbWlv zC%97dt@5j1B64SkwO6uzO^IP5d*9MXHrc9a`+?o7K6n=K?l^?MCVJL*Q7i_LF`sl{ zMt*hALE{gIH_kyNxN-`8{(P?Cq5i$F?a5a>D0c7dM&(~JT*ZZ~@7^;FLm#Ca?cAHE zlk)_OnsB&ylxO;1BnycC2A%4}olaeCn&_uAYmGJi#L69tz(=pwxPy7DSF_=mnN(ab zqhD*B+K>YRYl6|Ur0SDIqrO5Mp+v2KXk77MT`cv*I?sIJiqE@r4F;SdNtf~wHH&XO zDl8uyZWv3Heh%9O^=8+S5bic*-Xs8fy39~KT9!*yP@864<3@kbwgEV-uqsbRBZ(u^w?)(mlLQX8T6;tqG$Zd%UEqc>v8MiTjTv|VC2e_ z8_&{Vy;~Fm5<=i|TP4%Y%Fxm1wT>N7VgSPw2E6&x6@9Xq!qOAYYpy1DP!8arV%+Pe zEL6j>BvNMfo)>Oiq|tORW{u@iq4(sL zY#Sy1P(wiQv%|^{Q$>*nBsiQ6Y?)(0@3|?@TUpzO;fQKVqJVw(7_q`~iOtIMtOWpK z1Kg$3k;_X?HE2Ctdi`b4%p=9-ivO1Jfe?TM8!Q-_1HP9|r{33j49x|jBhvesNh(|@ z5mAQ%G*J<;>FBMGs)rwZq|Ki1aw+qRV~ne1YsD8&3~zd^Lk-&46J+_s(Ul7gwS}6P zyh3vuheMwZXdX-aO@h>c3fI$m|7)2v-nzPy0#ii1F|_$boY--El6wm zq!dH*#Zm}{|Yxiq|XWNtfCc|-cuf9f6cpY0$Ivs%H5F@t|d+U zL-RA3WLeh4Lsf^S*HaxAgT-C_OKIyC2_mS*g!M+Fym5U0!1*ZQb%R?dvBon@ENy|C z5a`E-^ro4qIIMf&BIIc_Eu48@l>ZBx_7feKuOTEz`8BCCrpiTQBMJ;J-lmMlRZqni zX|>HSd0b*qQlk~aNwwu+Ldm?T*Zs1ztzQ|obkz#K;DDUWZWD5+^{W^+#fi%BLtLuC zG*lage>ft?|7uJli?h2cP(-uNlB^U2>vgODRG0hjQ6FtcwYv81BcB}$i744Sux8;Z z%%lC4&%zQX)WQ=tLCMyQdjrqOiRzE{1F?VKl`zrz`YapYvP-Y3+#-Ph6Q`s!jI6C<*YA+W)N4Ftk<9t&oSb$oFu5eViOT9F&z> zsHj;%NxBZ$vQwf3#nqztNEVieM~(AmL#UhZ{4AvtMoVk8eDWrT&v15>eIs#K8NQWs zzcV-aY^OD=>zlf(no!YT|1x?6HRP+z#h?D-;f9(Mh6@TMesxyBFOD&+7?E^jqQ0pg zc7&~mu+ro)+k{X|{6dHNc@^EQJPvTYsMY29TarQehtgXPob3P_(0E5?*Fi*vCV8El zW7rkT^=r{yFWOwBQF@qsTL}K7Cl_XH(Kmdr9OqH{RX&$T>8-=39qC?SJNDB&(dgHs ze8#hq@C zzu`<^lG&^{LZmVB=j+ALnNO=LcgcddOhTZ3cdFxoF2rdPAo4n$qDkNOs!OfUY9%o7 zz{{wZF82~IBv*AdkY>x^!+3sQu^5;@EhWGGnNt7BdnW>lfrlR&?(*^}N{r)TS0pJJ z76kUpu%&Y)`*Ro?dJ0tT$YGkxlCezaDR3t~vVg#rf%OJblB1ZUxzzia_i4uy7NVo{Nyhnr|wF8FvC z(6xe`9@em4dj2a5I)^qLXFL`;rXC;C39Uz=)Y5IHn|0dp1PBp;1L(C`r}D(mAenEKu<(X#_s`(};QwM0si{yLUy znj4CB(Sv!y3^i-KiS6_vgs#K~=YuyQ(nnvoe!MGZ8|FEw3x5I^B)V52)uacL4tU53 zN)XXG!?YcIwujZi*#Ug1H4T%GoEShXC8kZ~!I?I;1hR${rk!LrG*BA;Wokc2W}8af z0o!@zUiIVpg(y%jBI&H9MqVo9h4d~nD3aTq`ikkVO7CnBtx&!F$y$FRJ*R@S99wPj zE9;Zr`B|5r(py%OD4E2VHcxCW3l{S3P2`>6M)fV~*p*tog^H?)=+}pYx@{i$lo1NS z&%L1edLWO5r*R|(EJfk^Pf&IePVrg>@R{eUcgL-0vO|XH?1zuY$e8iomYe2KG405G z_r@oGnpR2s8|b7d%sPUV0#Mu2y2~a<^r*V4`Tr$2Sy!zDP569pqb^}6!(Q&@DnRAf*s(eGgEK_b zVS?Qb=twTu`Rj=~g|eSXyp@~WJ`rHm?oQvmF^~Pl?(YdQ|B2VZP5Q12?!;WJRXjt_ z%S;?iilg^zDvNl_l{e~MTXyw@*^bX2V^;>E@6u29b|!$s?u+__ueIj69k2@^KMBLs ziT~P?t(>+~|LUtI>W`hUmXSCEc>h~bk6gYRq@Kxh9uJ)|*xLa{hAy^Ok}aAyed7}z z9?TW?Wk6#v@)1nkc>f=KZr`j=>4u0d>u1)8m4>iVy;eSa1+hcyFSUDA+r!vdu5~@I zp*mb)?*nua6Syt~|6p{q`_z~6_6UcV&J{t`jERn~xTO20J4F(4Fj&rmit$FXXmQt* z_>_C~+M+v#)hr}#wSn)up0-4YBr$j;9=D0g&~(v5EIk_Udu1oroq9?coFJ!?wS^m# zwf#f_6g6gkBx5pylOgi(Y!uk#q!_oK>7@klBd%j`B6ppHiTl<4eyLYUa)XzjzMY`k zLR1!-?gQ%JZejz?va-a}_a$r8K9U5oC#I-CA}|y-Z((K!&f$PBz(RCgHlwyL-MPeK zU=HHwp7i^7nwyI)Vd`1RxGfU!0qAR|D6B7NaBeb7HYIEs{_T@DHTowpFb6W#&xssC z$s^5Sgmg(CS)i<rbGj6<|rNKU;RC2?hsLw#l<$D4=N-{U~bq#qqTLy-)Y7BhyEd}eEb zW^`Xq!>uF^y(f2ShTgh5YdDRlI^s5@Vl-psq)5rhm53CPZ0( ziH1XNhBXhM>K}1mOxg3u1rFB_ub~;xB7vxZku}gnpGJd|RtGGI9c~Sfk;6*BeH34{ z=`x_?Zml=GfM#IYM4S64*8hL7nh9uJ?8+f9KD4E1izEy8Kitk}x|->!+pxE_12r|F zldkcJdu~!n!fZhm=;WLUj0oY2T&Cq?RM*6WT-5x@&&k~}F|6h0h@3tu;Hv){dt9eB zjm{{n8vj~rml3Z?>^eh>R%hMy8kSv|p-_NsI|m=H>Z@NQ&VRN~8@%-8^z<&|n)dkU z_I3PF?U{Kh=8?$`uVAp3{1F%>%sXD)wWc)Fb?FM_scNzU7gAVzDFx-)#L1(dH(kR= zDUVR3Ee9QEVJEG%RYGxBZc#w_WQPzK**dHiPNb@J+fv%YYT5R8L&aW%%JkYi;?3+7P>*>-ag`)*zpQu@&y#_{OeLqGMAyK6Q)Sd6|NO?B* z7n?pbn#X``K`pRIedVHsc{+;Uv5R8V+P%x|RZ4@!?Oq?excXv1OzHs(?q$h*+asN{ zjI9f--+|b$?$%v}xj81j!o$VY%c8);=_wxmTA@HYv}e5^;Mkv9TF)e~JQPUGAVRo& zQ9EHQ7$)JxzLisIG_<`yH+4lovrHA^^|9AQo39Hk&1N}}MeB{BHB>sbj2Z;#`^_AG z>W%A@VOmTLmQ2>8jJmmCZ`sD9e7E99FjU0FW*}a7OS@93no3cwVfh;loIA%>tY^2> z8&@Klwb|!dpiXTwBooN9)Lu%-%w_g;Zb{<`?Kd)CJ)jFEDga>zpvaPUk#m{w>Al!e zsqHe06r6PyifY-J8?7B+wNQ7$qbhx96H=pMUijPAL`j~y!L@#l2R3-=x`;xz@A|nj zHMR{Q8T!#KbW12hb*-gfa2X_{;=pD}UWeqOPLEg(15U5Kb$wY|b~nAiZWHM-Cora% z!M}P1;v4zy1%1aw*4UI64m!OvU{l9wn6Q@j+-*G!8SsI%zlsD8yif%&`JhE?ZR_kO z8tO!y=)GUY>{XVI;|?Oi&WC*RnQkAZBGm?}_MCb*tBRSBv>|E-AApDst+35=YFD^q z4{r%^YoD8@W;zT*JxGxTZKxQ%mvTuF*)Ay$RWt^U{>|17^>G{bND~wd_J3nCV?;Ca zaa*Ld6{Mq`j`3pJO1^XKeAI9Agfhj*D3#~1uqEVR-m_9?R%-@nO#%(9fPyn+Hd{;XLdHK8<}7fjiSrZ1-Z^<-Zl)>C2JHY&t#G78PMDH zs0(jn^~8x(ij}J&@%BYR#0a?~&ZC;5@Fq2SH6csan+~3C3lfk06%cYct19&NN8C$$ z#7zeDLRX>9m1|7Vpk2sC?nMQQ3CGZPq{GOMB(ZiwT*;&{jI0eaIe1?N^mONBwRgNz zg|=OJ%i-guk9MxhWJAgKnFBpXH*n4G3BTypa1C|^^wfUm#)wJENZW(3yok-lqyNV8 zJKQYufN_8;X8J{%0nV>-K06+DKw348^vG`{73EAM+L%#=gdGIxq>h5ArvAYC^P%S0 zpuOysx9^L@`Uokp#Tn-KlsLkJSoCKt88#9zR$N$k(?op|3PFw!+6xAQsUle-FFNeA zQ`38KbT}xL)5YNrmPR2?+fgu6iP8WTk7^Y`rv(+satru@E1o;dK6_|=&(!(lca($# z7(>ePQ}~xgxhQv1ZScgGyG&)^!+bs_SGc*H7z^&)>I&W1To!3}{!l$- z5!(Z5g!EPodcY59RHGlX((G%lD|mJ3`%bSF2A}gPDJS%5N*K#biP!6|K`=Rnbk*E5 z3Pg@;EV>sRf50e-Bl&?cN|nb5c;+2lj*2;u%jyDum-w?AN%AX1&q^}y0;>-iYR%Mh zo0BMT$SYjW?;Cg_iEkJlvI+q3#?rW)k9{Hu&|e;GFE2LKs5>6^MW+61b{pDP&O@- z#N0JkQ-o$c&AOClj`7iI(IHNJT*;H zeKK$_;1}e8C0zB~ly<+x6)0Qjn6AdvK>s-!V$$?i91SfLR`C0z4!Wdx?Sjxs0Jol6 z(K@1IEb~!Ih22>A>VrK^IEs5)$=WAu5_H;yqh6tY{7RR8-<;1z;6!_X@#+J7usV#b zwH-wl5ux&d@A%r{We{)%z(@aoFpc*Uo;h)E@fEhP+VEE3|8MXgQ`$PY0^0w(xWJ&oEPpyEu;i%b!yMNtNX?5NN9yt-feRv;Nao!3B~KT z?@_+J^EX`Ua~w)KGCMCx+^2Wi!FVwUdG&5lFeM{}DvLf%UO)!qs{4&sMYy18Ogxo{ zsHM8aQ7-cnT5c@aMro5kS8B!a$*rl?pY<1G{H>Ma;Ytr`x9BK7k|i?&bNGIXuu(lyja6R4cex7X`TCO$xLw&Z?}ynp^z zy&KV&7{C^!6^3O5W2^_)>%cj8V!2v#>X)0Utrw!^Z{YfQ_Fd-&QxnUF_mnE+!PBXP`o;cv7fSYl&}se(uc)kVZo z*&R+k!r^9V%lmA;kUodS)5GnrG6d+=G$eoZY*B#ITKdKUxoTeeeiePMwocp$=P>C4 zG{$QfD%=CWnGy}VJ2P?cLH@3{jY3U7b1X|ojZ;#n0TTVdEkT`-NA zGiDY9#JyrXoy~<5ov_>Z##V-HKUAzpTTF!sGSap4bhN;{Jt(DTOCqL{^tW{xag;&^ zAHCcDt(vvt$YV5Go(N{(S6;%03Z3G+*Ss7wW2E$taE{<1)jcb>D?PW4cK{Kn@=Siv z2|QbQQ1(lw4+_D?(oqBo9+Aqq18b(K1qgXyqae36JDbV1mT!j`dl|k1(@Wn~r=BQD z3gT5b_TdJK+M%ir_iSw=PlaCJpb;q_%xOLnM1!sbL=N_BL)v6w^>nY1^i3z6O_5PB z6O8-8b5_&pJsuB5IQvdvKXG|i_z_>E#ATHVEyEQf3-49@oHYggRcc@rCbLd)rTU=? zn#RCH@DijfiIj0FBC!M)Kt^C%49M)%$=LF2D2&T^U<+bvaSzgZU0xdM&NW=bRfIl{ zEl4#vb6rq$h##68>Q(pR7halx$UQQ_$=hi6KE_8sLBPR1ar}=&47CKmobxI)y2wp5 zO+$qKsg*}ffl6xh5Z_;_Csbo$cQ;*=%2{lqC8~{C8T~o}1OZN-(yUHA?rX-vzsanf zK_RDWly`;3KB~{nTz~h37e}^`C%CfL2DtDTs}2sf1Jy3x0Ak*I#21a;t^F_4rOrxm zbAfNL3gy$63Dny%k z&iK}$?ybSiT|#2`LAwJ5+kI_vue`lx#=Jbmz}2?$WRkR10jS#){cn6@1FJt+ge1yI zoY#V8?`>!H%?UYptMu94@EfS>TDG>LzX4?vfJzZ(s$wa(Y<*wwfmlts3UmnUq%!AG>!&L|NhAcJ>JK{zx z4wREwn!W6}c)RB8tKGldw>l>->Qq;tPNQ@%3GKod1L)>)PhG7&a7-cdRS~sbj>WQ0 zY~QF$sCopa1T&l?eOO^3G>^o4i4m5Mw*Wq1F9;EkdlZ#nO(uLWpV`eAO(1uc7Nrc^ z*F;?B#h0<0^``2t6%le}g?9)*>qqtBH{pNbDU32Uk$&%rkWcNe_YuiZC>$ zk%GQn0B8DEWe7QT!#L9T6*f&s;t`*?xj%|vf`Fe{>3ssb$L51 zVr&)GX$dv2l`%}6Afe-P{h8pw^v_Deg*5|iNxkuR;#Ou5s=;;AeSjCG{`}(8iS0P* zm4`*%G_Trr^7lRPP1IxIHOMO@Ac>1Ve{6x@;o?XPgDt=*8s%M;137lNrY{?_c!~`h zT4edW*`bCM`pf}^WaI5}4Xj?LI4^5jg_hn8OBAjCpGxk%vmt0Mq@F^Y=FUK}oc!XO z`(SklVYOCQMrl+yw_52kk)2#RXmp{aM0_{+bWFSLtzkJd^YDqVN2(!!+JfC5*ByO zq~(7)WeKfB~{5QpmjUxHv`4vpiL!_RbvRD&@7nHgxYc33Il$NuU)9)?NY zUf7L!*~XI=u!U|Ux^0{*@L|@10~$M;vMr0RAiTC@J!&7qfJW_pfcH;J^3rP|w2MRS zoKE+|rOO4f#?VCnY!KbJpVEjE7L#jT_Rh)2=Z7_cxrSID0lTIyp;TmOr};+gtffO! z%4M*K3Bjm=8E$LEM|j(lR0_g-2vi4^u3(b0ec@W{a~=0p;a<0m8^1Cd*bVJ_OQhgM zkXeBMq?~S8$6ntsI)4~VUeo?q zo2_7%F}7yVvw4Pt^X>mjEI6MD?QC ztRoFupur7Uc=tz(BI8bTShgHtHS@r}uvv@Jv2pc+^@Q01!&Q9*m)bfW-tmelGLvFl7>p}{0{>3gRtkb~Hrp+JKz!Xh^^uc>ser`!S?^rS~m z%Pd|DJ3@6~++)#!`Ul+EQ7PtbLlw5Dj@H~?s<5H=&L~_=uIxst8#E%h(VwNqO%BNtifmMe+97MsdUIoRauAp{6 zGV-r-L~KZ**cDMf6lXDJh90QSf*(|JiW8L;gW&YAX%66NX-gvscQ_lI;&LpVdqR|s z+R8l@f-A!QX9qD4L;u=iXq{;KIq!Fu@7R@q4MSdZx%-7-a!<_rW56_B!0rg{-v)fM zh{7zA#ziEJCsK!(+=?g}qhoV%6dskHw&pv-V6Wfny9*qscz z)P%I`H`Baj5&0i;Hu*u=xuLBP;88pX_ok=~zd+eN&JW_=f=khd@hDFNkha)dqNo}> zBsV4nh6r?SRBI`GxN<*UqxFmxol`$stLJq|v0Ocy)LJ9RKZh!%e7_q!<2vzWi)!-Y zUSp$#;y@3VMJ>>a8#jqPit=+So2~r7UZzXiwzA;6X$nfgX)?I9T=uR(Nrno2;Lq9P zV#-;?e{l4RRnMnXM=BqGT00~Pml7*H;8{Uiw!T`17w1P`EQpb;6R~IcPL4ax=fENM zywi7CFyygL=?^>e>~8)u?fXIl_x)kSg4ky}FBD4NWhbt;d!kOJ{Ds4Ok_!z5j&IuW z*5Z6<=VZ?sRj}+;V$~rvSOj&ZHRV|kg@u#y5qMF+H~@xMJSdGIcrqeDtn5a1QyR4- z@~6o6eawk`%}3b~||Ex~j`wh?0y*uUGE zrb^~P?L+FeX!XI3NWXDGYCruw(xO7gUlI_t@V*WQm^=Es!rS5S2He@H5=y@8KLeHQ zMD+FaA5tiKdCY=MUe!TMF{OjQuVz8sWXCJhECKTbfn1Ri1@A z@bh2!c*}LzezIq&Xb<8>Zx4`%;!`1Rq)aAhzvtEfOSXsf&=r0yS#?k8B<|rmAoZ^@ z-x6(c`Q(-6fKB;{Wu_;mPy<<3L7!{3)VWOs(_-a1A!^fz>X{?nY)N~s?6l5xi3CkB z)|lDm5OQ4{+YrxnhY06!bi;%O&w>c?*0{!<3&)%we?dp5I2m!-5iu*n`+xWl8Qb;q zyP5aboN zq1RwYOb}+4caBPHz<(I3`IKc?S;vg7*0e7l=M;BsVY|AqR=4G~=u*^5sNfeG!-Xo- z!f0MP)FH(V*Sf)ExgF1-ECM3bCfOi5lzbN`aL_%%@#VHh45mg6O>>O>O1@}Shf?kz zdv-h{$W@`*lNJnSkdigIqp@j0JiMKuo28u-k>a`s6kAeiG+d3r%*HsD^=C2IOCOvd zg2rh8ALU`1A{A^0b0345K{^e}8pzEO14fNS%B!s89Y$r^7O;6ht79%%M@cZvyg8xD z0?E79ZN@D!QM|4%DDxFtcLLbx`b6y*B>?xFamOG%29pHxI`}_v$S~Bjl?f9Ymq@)r zRXJI~Cg?mOoE8Mn8u%T$x~6BYQwNLgtXxAHsnz|-CC8xSE51aPNndec08}XRnynoL z`X^L+RF;KJhx;0xg04RemU-kxfg1lux<}q8kn)B2Fkl7ifngSL!3MT1<=5&0e691%=v!)+*{uo(vqr4U3qIQty+M8MZr;Ynt&pE! z`EumzEg@qB#|jpd_4jt|@yyqbS+)l0LwnA+3yw?Y$I285SVnYh>^-czB|jRmoE_23 zD+RW)#<%&cR=6#MTowz8GR)|0KYhnfp;$Iy^y*=sQ~a150Pp%z$f9oEDg6#iqNrmN9Z_@_+I=?NSu@ zL;Ajb!J3c!E3v^_VPyVW9Fli>4;^5T^(AG3PrEGhSD~ON@t7%9yObj+bXf4{19t*K z6(EJ{IIfnh879YSY8Vq4&Vt>ks^D>HT0fm1IeHKR>4Ax(YLaGMqn4l!3XUj@wnbP& zbR1^Wo6TRy5kJMv;nZWTbk%wsg7%C}BaR#}iVrr&RFX=EO|k?r^Vmk4G0w|6)uQbu z@$tlZ9;fGWR*uT6E?*YhFlo0+1g|W8P0EpPBMwU$FzBm08dG~yXHLkpMHY0dO?Zd! z$)$c^oNzeYW~BC0OP`TNPTUVJ5tn-DJ@Val-1OFk&r`gE7Ud&G76a|dDSKd^S)p*n z?qiD7zAKFUfT9ry`%ZDNe;hU_qZXj-86}J|;CB6WC3hP+jc` z7ggpagKX9b>s`IfIRt7`tG(hgA;HPaQAC+5kUGOaim2%^NHg#n;o?L;ut{8!GGyL; zZt~8^GMN8_H~g0BMpyXrq$5T-%Qw%|$92q1bLpNOOGs599VhG7+&+jsZ@9TBs|`^`+D zG^Bq(R+*qwSB2oRvL-{pxs9VBLTtYO2RR$h3Np%Ygu+FULSoWG>X8Pq?#3il(+n$G z7p|)7Pb1G@WBnr~OAdO~2ZI%gEr=a+!QzCrYgx;NLAdL_INj40t&s&q zo`19dRrL1%&BK{28a;MkDgQqeIr@Pha%`mcs7?d4EL_~qV~Nj*gC{MSUhGXu_+QHY z$ULj}FQ?1b@%xy5*AnC%C8IAj?ge1)>(C+YEX8QR({lWBvNLFZ43(0U24J7PHyuaI z-k#A0gjPUnupz<0yUV|k@(_PmFb#%V5o>K|3;U$GXs`rmJDiABXbXxXVIn33OMu(N zJeEDVOJRPyM4qy2AM_B-a7FigctZtQLJoTA*MxlAiOx3Qot01az|y-G>Rx`(>?k6YpU#o^7=V`mq(5feq9Da! z-D~W##-f_hYqDq8KN(wCf}ji-0{qLmz;ew5d6C_*d{*(ZixAd~-TQ=0fLo3BTX-@x zB3ApH5cX=AHNt^`B;t9jnrSqdnmwAi>gg!l`>711w1Bf1E5x_oOnP?M4klk0HkZ43 zrJ!o+TfNlf9$%MQ(LVv?GJgHUoS{t(z9s%9bcPXzqh&hL#cfgJ>EAc(X{PDdxy-XL z+F}&k(2JQA+_Yun@-VR0+_SvES^p6>HH0=;WO5n#i=pwMwX*jdK$N_f30 zmP7(vpAgo~v~9+Z)mOUR*Jtu5un&zNLmuFRSIrmO zWhWJTW#-UCiafV5X;?WI?&2@?5~e`=PNb=TFK1U(Tx`tmmrB|K*{Anq-pAcAV6kn~ zxq04HG0-Qo>Yy0e5zu?N2<~}>G*6!j!X`~`JaCK763NC73s>ZD3|ro?g^1rp~s0a)~yQ$Hig3cJ!1UG47_{v<<3n- zQn{VXP2snxS1nm>`<)6uZyk(A9CcLc)E7Xtelt0dx>*s$ zp<^4{A(l4kk=PiBk!cGQq}Vp1&t zW@a@iw9{-r&T z{@h5#D_Rp^3L|#<3;@A6ojzv;S$#ZZZGLA#w+44aMFVlsW~LeWCkoumZqg>_cLBoV z5J}cgdbP2d1eC;$gr{~qpyh*crN7oE#Lh*XvV?>9d=v2|!_6G_4x=BWm*wk?$Ti(= zaa9D&?E!N#UFA5TZxD*#7&#gC)hA0k&p~8z&^dIcnf=8_y?cbiYRTZ?DnLQu^SK~_p>6g+8Nb|(DD~v}Iir2& zC;H#;YRhCv2g-hHl#M9NJMH4{LTwDb=z!RB;JH`N$s~T~0>9bp$5m_2j!B8gIRx&! zMhAHu#rKx@>uE_?qDCmQI&Z+ZxwbxVKx2%J`f$F{-Ie^_@aX5v9u|+6z`c_UL2B@K zZV!K<@40J}wq4|93~LMDVv!{vado*qm@VjBS&ApN$3oMRd-%2g;{!eL@8RwF+4yz4 z2LrGQknOS|@k*)XotrzZF{5rWqo*}mm=r$a^XSlIc3H<=btvN2$VQuB;4I4|p5bI| z$h1FZqdlODHvQ7PL<>W#dy# zw&{o+)0kJ-K)~UEu&6FNfJ$*LghR$f`FZ0@&O*-?3@U;~6x6OL8dqn7Zr5R_UqxPI z!1HBym7gvPS=Gm6MMgi{Elmw&uWb(OX)W z;czlw|HX<~3?~P8NK`7^-SgH}e#(9ZKhisQ8!;Efq!;!~{=L^)oNZ7zezu&65%Iy; z>on0KgUi21J>Ped(FjF5LjR;aKh#$xvTl(pGy-&|dVL|m&M=M$pP`RV>d)r7cK5#S zI(PJUFxc)$gC9j$mbxT$*wELIqY>TZMZyGW;I{fX%VzLA{i@m zPcV|!v{aPfo;G~Xb5t?>Zu06#yr;30=qzBtT14wbZx)3RHjg8yK-eZ5`6`S{n11{X z8;n+9>c!Yw`}SqUe!dDjh&wao4kPi~0Gv|R0>@eT@d?!?g>5M?3LuY;!z++Vef|z7 zjLvDif;|*NHLYRXuspVGQxaa0+MYrS=LT^H^n!0E%hnc1TRuGAjACsl)wPZ@Wz`vB z@56JH-{jEL#hWkRZ1a`EbBk;K+#`c(ll?j`L5lB27x$me4@7+e!qMuPm|@7uPF8{D zPV?>W_cl;7@5DwIG+3rYCWf#Gl#ry90F>S`jv3Ymq}?-3#dn!dSxbG$)lv6+2_j7G z(pDsHG-;H(?pv_RX1x6~NhXfTaar|lBt@>0uo;4077l>0MS5(<`-v=xV1J_21CY&F z5;rm5sL-wPmaQy+?-HwnSMHaK%5g#|G^Oc2FXf5WB3Bw=Y1Iu^xEx~UUpdGd<^lyw z9<6SRV2xpZfi&><{5jv|Th6=EOK3#~;gDn+_r+qj$8a7t;d%Mf+p$QVBhuG~J4!9_53*>g*na0lP;b9%>!?v2BSEkHP-=d69q>6zTi((%lu69|&zml-Zm_A0c z$IJ<;@kkf&8)gdaCbs1|bI#1lxdVclzo@hnZVIvG`9fPX%A`CI&5IT&len4#$+N;H zNymQP`bSv^rjq|3H?A~+=&zOcxR*O57r@aY;1DPI8c(YE0Yh;wM`(1CG=g}#`BhF0 zq{IOZP{F6_wD9~|n{*i>5c=L0&|!^QJ7Lk;aT(>x>X}yXYquhbnY;sh!{uyDCO*&FL}?%){@XizbTObq@n*+eEE&2TE?^{e zT-`C8U)8})H=_JBM6F$qz<{e1g3Btqk$~+G?k9v?ZJ=Z;c?AHNtY${m{X%<{ClvPL zSHXBd5D*+?yY8nYzLYUfA*rrb?AjjY;vRPwl(N~fSPN6`yFQ`^NpIO-m)naE1OXSY ztWt1C%A!C4rGL7CK}h+G;)GW~3obUl_3ryC26h8|YKD@{`g2Wv52}z8Moh}p8HKu; z0RKM#z}UuD5p!+Jc-#ZLrW5}wu{sfaSnX$NecpTOQRTirBEQPR&^Gr#%iqCivWVt( z^6dWP&O+Nwkq_5$uVt3VPhG$Mfj*sgZT+ohKa>t#*sYj_v?PW9u(dhbQ#K1;^b=&I zcH%Z;VG71}Uko7jU~i|@K%vr5-u8v7uC>T;tEYv6+kReN?T2Z?C;}FJOFrHLTu)Y> zVJF&1CgNFv177Dvya7D#`l)jdBDBvW@iE{~eS^#8cBEBYK(gg#*r*$wy|U2C5M{oD zP*HU&ZoczGSi!PG*1x#Yy$&bI{c<$m@eq(BAxO~=9%OoC2;xal2Ij4l0JgoqFw6W@ zRCPvCHnIH0sbD8XnyHh44lvP_)(1>+Q;83OhtXg|I2lVl!|oV=vV`S2tcNU{_w*NL zM^&K6q5;11UQ&lZvkkKOvGrCKNCGi{B(_Hr%eLpQ_P!a4YF*XjT5dWs^)_VosfqJa zN5v0|p&AjGH_U9L;WU@|eggnfIDy~>wA_N@V7Yc_B zosU{dp%`mAhgjnU&hHaGg zH5Kpbd477ywLrjxoa6OsaxzRgkdnuH%$Gi?YK3WOoTjAIUDnx#i3+zHTqApPMbmz< z%S>Fje5FPEa^CorzsYT(;lDw8n0PxD4iz|bEef)AD#FT ziLXeh1)=Ykd6o%3=H;0$F90C|1Td1=)&?nz5FN<6Wt?;g(U`l){drmB%bB1SHK&3t z!_c?fwM>5^;JBxe%FdNPgL2Uqff&I9C0C4+65$9heoq9=a(l!R0Ib&Qzbpn>xo5tH zFPlx*i7Q!C>A?5}%0tsVaTDu3kXK7AG|NO#L3m0(?tF}nh3w;do#cJo3bZ7E{6yRH za{nUrD^jcZVa{aYj4gc|Kxg${FN2v6qxFjPPi;52|se)cA=|xbilojzYYhqDY`g zbOp=JB3Q&|Uf%B4?c3)FS~W^768y;%8(P~pR~xvvkc;3r)P0sro_G9DLL`34uDeUP zFD5~)Ug0*xZ-SXkaj>UWh1jDxwFRmo%=framU=lA#=+s;f$NYsm35E7DlOP~;a2qd zTUAj+eQggvn^A{DTKWN*XJE(Zq5F+{v(FncU+lNJ^b}(J%!w1Ln_E;(KE*>5Y)jj0 zg6;=lv*8ak8MXMNicaV~T2nemc91?BI| z%crA%arxIcGh`7xdJ08Ox$&21*2;hF--T^ zuACJEmtZx9AmOM^He$MEOMc4Bl8Wf)>XDnmv{IPf63|!1EOyW;At)wvr-K_!3k`}R zIm)S-K^OA+a04rqftvk{kc@+eG!S%X45xS;p$gDP1I9}y3JYfUyiaNS>4nA4muqWk z-Oc%+`x^%;5|gNxt(J(Ai(0S@$pC7H-5qpxZZi^Y=6hXWU67XQ)n9m$-WK~O!6SHi zD6Q}40QpC(0ZO?J&OW+xn754GZS-A*v#^%K(H8$ z(UHT=^s?gm4-I!n1tLUDP4k&?(d~Re&D8#7JOK|#^lV{FBC+1`_J^6irv$8n>cM2A zkY(Adba3UGLL`F-VW<#cg5mZtF>;~gwhp_!_v3m6$HiKA=pGkn)Yp+vC@3DrX{^c@ zAFHg^hT7#r3m;8U&Qm2;UJbLjANchC&}NEwE%tL<^f!iqOsB-?47SpdYNcY%A-X63 zSs!|#*-M;FN%t`%fB{vb=yA#!MYPSWl`uCLYp)<}sLtKY_HE?<_O0#=Ow_${7G(V5 zakCn+6fyE7OioX8@D`sEaD(f5D?QO%+N$M(jV>O?)IwsRZk;$t4u7x)1W5_Iv*|9R zLt}inE3jWOE3B;7kzw)S`BoRKUbT!p33;o$6+K@^{v^WE4|Dp$!%Ci0OQFluzd?*_Pz_lKC7s$`Iv=NE`+-;k@IKCWdZT>;FtekBjEc2n|4vq0J}1~d3tUOs+=j{+BYj>y`hqn&49CjSq$O~;U{+H&r;1C(=Ca2rkVc!E8I`-z0$+k~ZSM2woem+J?g_EN^_;>^gyBfA{ktKREEJS(8g@>#V) zZmlj)cN876K?Bdo+UU+kKq2k5UT)ZpA-hL|Qznd-!~#IsJ&CQyr<-V$8lV+Egrco4 zO7VU5C2aK^WiXdb0@uFS+Fd6(p{pt(@vf`ylGQk~rFu%^<{fTW>vJsM$UijKdv_5o zjF#q;W$tt)KfYS5y})d5B*8a*<6_=Bjg*U3d#vmX#~7o4r`_>ODvq`|7<(H{*5K`Q zUDZjch9BHje z^B2j)G%O{JoA$-jS6Ac7Qg9AqM!)LUggS&`)8!E+^M}vkzDkQ(+9-C%X$MY@C!5iW z?;#-72_rm=4K8FD&v0`^IFQ7%BZL)VZF!P<~O#h{+s2L zk3nzTb%Bt*2#Ds(PAT6j<|%8oYa z3G3+TaQ$2=7~O(Uk5m@ciAK}@c19?n$kp|8Mh3MV%EF%DU#p~>bpjbqAFt;AL!pd~ zHPa8XcHc|q(oj38Aa>D;WOEeQ1kOK|s6BR`Tt zkgp7!{NWP^3m-lmcB0UTZGK5h%gpRcw3kbHy8fJEv*ZXeNj}6MmC)&3;B`9bWY^Ek ze+%j=;!$&*9Krwr3XV49McFeM4d0{@(k5S0+sYDSr_1DwyuauVJP9qKW%I4t^l)WW ztahyc^?-D|%oQ?*o#Nqg|L-V(&xlFz^0s5_dEFtz5vU-|8lb*OWOWZ_yc5lRj!b!U z=q#B3CYhS6XumXqMiU*Js!EQXMMVDjt{UUf~I!m<+ zFJrFyXXlKf&&bFjVYddc0cl0)F#bsajdPP=juI7{*T}Wu6dFm$oNX+1 zX;D?`qs|SuM!)?p_iDFKdEYc7PL(zmd?d^t-vV;_VR8gC<1=Oor5jW&AP?jCYm7$@ zSFT|j&);xSL6^6P3cV2b7BMY7zJO?5Xwd&-F`}bH-75OG#n4ygGG+&~ zD+$JU#U)g$X4_yU1PRMQcHNQ+49*>%?7a_uvkdIJQ=H8jASgtLnTw_Z2 zP}!o&o!auL!|q_66D@j~EAdkKzQjP7a9u53k&iec5@|T8v3*dx2mc^%F1D`Dx=sr> zx!99e^31Z0lRMN&Q_ivBYz>^(8Km0l{dRxgEfD$*HBigYJiC1=U*foZQYl#!7vT0W z9-Y2#_XtZ^@$EDFTho*$Amj7=VYZZqTkBS6LP;HQvJ5hCO{OA}} z_F`LIP5u{OaLZ56v)g$xgE;VsK_yTj?8VYscK+L|1=uxesZhjik1v7EdegLb>CB$6r$r+g3Uj?5o&Ke zCcEOoaEjFPhwqwaaCm@}??LKA`D$6igJvi2r}v@QQw*1mdlcNQ4pp5#wZ`<+CHx|1 zJ#qRJWc#BR(TI=pNJ!Z}IVlh+#B(B?DX{K3hxa?-$rN5zf@G66wXZ^Ib!3-|)zg86 zg*U1?;4X5a+)unMmoYq7CinHuS_R47$Gf5+nLG>++M7JTMJMu) z5>;3~tHS4wps#=qP5ABJGq3|Del-?xM6GzZm|VvZ-HMPYcI(8UG5EQ@7MBO2|WZZNRRo@os}B`wq8+>Ok% zxm8YzIZ{3%;^hjKQr8J~5sF({l#r4N3&GhIob5n9W%?u5fqYLe3FsGLilKZVhi5oy zpZT;6N4V~5$@EJqT`@Q79-nG`B_r4FOMp+wrWyj1lgFQjS2479QWEygpqRJtvyz3$ zl-6j(stwIguY^E8wdPmzoJ%8@li3)%-TsbV_^NkvMAtr33Q}$}hoaJv_OV4mt!qG2 zo;S?CmJLXYLs?5#@mijLi;|-`Az+4sU|{nKu^=HY^oiDn zXXOa=1jGITgTeicYDI~ZmP&oza!nd>x`JH% zRvR?Z+eUT7y5R|Mccb=CUwXy|IXj54@dsru|6AQaR##VLx!%IK`?#pty=&w8!IeDk z883j#B3jWCpFO)8;PtD>3WsJcatt7M>5zz-mI<}r>zfbmv`*sxe4YIEF&$Vd|HM@X zWse*MU?}{zg(6|C)w8{vh1JUX;|Q?|)JHFuQA~!5c%F2rIskPl?Inae;*&ST{&Q&^ z=&3+8Z^rxdv};`&RPfQQ4G?RPPMxd1{UZVnWq&bQnRf-HFrTd*K7#&d%>f`01 z2Y6#<60m1wnzvy1l?HSgV4#(kbpPMXlV%-)byuv57gA@`RKBS*2V>~JXnOa_H{>TP z&w5rQ84ljVbK~Uho@<5PEoPxhnq{5;)BCIO_fP=AeW0q>k{PmF-W_L^hA;O{@OM!a z##)uz$wD%vtm7xVX;^LyQI~~GTzVsm8pLHy9VdL-JZx^71_c4F0U$fA-k+D&-hj%d z7zmnG6zRqOi_uZDqnnr$fWymmI5kXp%{zSO{0wGb7NLI;Cwl}hL0yMuORm{gpbIo2CgBE;k9pwiD|AYt_ z^(tuGyODy;Q#U1g>;)gCGcvwOtt@;AT|r%n@R*fdbC5>7y00+unsl*P#bQFDX zBtz0wB~#es=sCy{tgIXo>mRj{AoPvw;Q!`(Ag54RHz`eYeSc?1G8XEGxd?~w{2hGI z`dHZq)4B3(#9gSRmC}37gbVWnm2&$XN13&_{_lw0|26j~m*@pf6&3vZD$mYV=RBwv zXv0b{yFp-jqNCn*K=!5$lWV(=vq-csC|BUC{+Uj4KeN-(ZhID=GE_sv5!hXR&Rt|O zw?h?*49IDnVS8@jF#)iJ-1yyn4~T9Hw2ob>YJKXPFm~i-ZQn5^)ooV@YnD@$P?TG; zAR-f(u$e`b&}@N6dw*)#x1oshczr`OY=3F{3G_YYNCl*&k6*(3w%*?3e04X84B@kW z6fEA37!7=y0%?IBqEdY2z*To4>2`GpOJWI6M{9NQu52qST8qTzI4i6RA{(zSAWr8v#BWl@}tQ;5ici=5_FBCLM@bt>D z;&$uCa!RhK;)nB1;EKCKFeTcEar4 z`S)>=DMq-3;`EI%;}~#hvM3yHqG6nDkfo6db!*lB>nnAFs?k9*J)bFGDrl}YwAv+Q zlavg5$@k4VoPl(vqUdgP6y*(+njNHPmdzGUV9p4kUIVANS)qF!lkyaKora`ab{hIT zxx@tYwuOD2W8g5j5kPlkqf1)9{mHBUlPM`W`lrTBYE_do}`rG-e zk_B`C!w=VQ%L5OIOvR}sbgba7S@j}EnjP|W(aq~S_5q7_4{Sk`_ub&JHtjwj0}ItC z94r`u3tGjCh}Cg-y8NEl$vOG4z57L9ZP59*K}SV&SF8=+I>js!?B&#i% z7)25TH3}U`+DM5z1@&^L8P=-jg20Sr?FF>5ST|XQ-#SFx6utwEG3*wRO5}DKi;FU_ zkDIj4L%xox+J&j zST|YNeEDB^yH53X9gXojfxCA1T7&Cw0F@CfOxQty$@ayuqLW+iE9T{H2=IGaiG4&C zv3=C)D~af+oI+#eji`gg*_nbFDvBa6R~oH5R^uaVx1%>DHAM;?7jAjY9df@58`+jn zAvep7I2stIs<;ZZme0TX))1Wv-SlRprML1|#W+l#oencdGJzbE1ntD{s4k4Biw>7x zEDLB@6B1UspU49WN$kPILrRY;AfD7mA4dAidCaT2evu!-guCd-6FX6CyG!`jT_yUE z=$}|V0yLR}RCf+cG%FQ4j&-o!Z8vo=e(-^CNSYQj^G4x6pTd-Ui#E?zD81>+2*W!0 zQOxC=NdzSLdA@ze0QEmaV++;@Ss)^wdh4+Vf1RX42V_0t82o^b;nvO|OT!<3o5~cL zabi`46ZRCNfTQtvB7mDWPRfT4x?BUPM?!g|xWCuJT5&~(e~TAB1>D`~ov}KWrCYqB zwnn&vA7pv+mcT9mLumkg74z4m1SF0(uwe9^uugXo+MekQ7Ga) zD?3Gk9Hl_it>UkKq{U4%!yVl}0*;}OwU+(b8=qgFA@6SaN%nYf06|NM7Jga?Zrkrk zF-#KHCJn^q$KE@d^Fg-Qr=4q!`8a7#G+&YLIfxf8_`ncB_Ojc1JI8YNF%jO)a?0Nw zAj{E}cPTDG5Bbd(^vt=Aoeh^#B&YPdQ%(Od+Od&Vt$X#=Z-P&`N0ym4kPBOxUswds z5xnC2i3%)2Cx+iWk`+oCELGxTTF!B-*Px~@K`KkB5cfQ26NA~U5>XEnKp2rVG{Dl_kp$AJu~l9$;8ns><} zDaC`FUFYXV5rNlFi-C403O(>t8GyqJhtW{*P4gI0mzqc%&lb;Ynm*x-J()j6z$Hpg zHw^qZ$0E$9 zVD+;nqu>6T`clnJStTGk@3QLIWsBck43W*F_b4b}qPF^J2S1hA*vw2Nij>%KS-4WA z$>*;g?puZ%A*k0I5FvR*^W3t4r;Y*!xJMz4dvJa9-sJ;25l4*Mpd^8=_lymi#|x-3 z@9#JW|BO;LWA51l>}=7dPSW(fRq<<8^*D-K06*c-2I0oxUQYT^aa%)_1>8x7Ezisq3OYl+>LMCv4 z+B$pl#nG@r9tJ+~#5tuN$3)e6ny7)gOSJ5u48%?6&}Gwrmq6hmJ~#QD)9gSt7F&6n z;NgzYN|Fbt zPj>lx++Nxwg})?3kX|fc_DTq=GWajxJT2=YmUwL3D~o7g0VWzpw{>2rMe-a(+|D-7 z_Q)2JKMx~-^NFREKWP5&R!|`R&W2J~aRYZ=>V~|p#px!J^qP!89gTO>g{gsP3?h~4 zpK#~(+BZ8%4p@iLYFyA^U@X%#VT2ShFf!q!^gzEmnqXgJ8A@tUc7!WLH>e^MYG=dc z!Xl%^GI6V=wz1yPrtV&X&V!YC6A_o)>(rg9E+LD5l(c%9oAKc(*AS+A8;sJXsUV%G z*x)5S`z7>o|8*}tj_zabusrCuI24FZ~hsX*{+V)I=Ng$ z;cAh1Da`0uo~C6~eGw}JBT+a((UK6-m$iO%r%0$m0{hsu6i(WKI8WYXp^qP#%Ton5 zKz`ckK8e${VoB>d@q+XQ29%!A(y!_SNZU}TwP7)^j~on(Bij9%R9p(TY7;rKS{6|5 z1y}Y8i#7Px^&*EMt1JJtvr9F@UIY&XdZF3V%T0q+)6Prf=lY>KI9D{Y-4Xt3&Xo(5 zH^+&p59cy93K=C=7k=m@8Dp^Dp|$&ggfSlb>o?d(rn{mjwY-s*1{bViu^tC`2i?ti zwperHu1AF6Eu({^GdQMIn0cvmh8NvC6r4&0Xi+|Y+#ll?q?0^V<*1Tjy1UZ^=!w=e zvw0NDgNou>la9G>209z9M1@Jh7zWZaI;fE?(KPmJs{owJxWP~iMz2MLk@W);4)wdK zD!aS3`iOLk-DC?@mfRy@iWs>R`>*$$W%>M8xYlp@waWR+aK3jG&wW1to1cBN){f;#T%}ZVx_XD&I@;2o4>4qeUa>;BS0Uel`o`9-_s>EZoB30!?%N&_v1t) zmAUBPW zA!5tK5Of{ZbyYOYSTUzNt0!@C!VW*xloB(!_X_5==<~suV@1aEr8;)NEn>}c=-itG zYk;wMC(@u!H8Ezg`+6~cboSb6`%690_3DQ-=p7;G08A;dh#T{l5v|B2|yPKNa z7r9|>u#K(P*{_B?VlLx6QCjaYNE3Cyx*}{vY5pCh zfPKs)mHF;q3p)_SHK6@X-W#|(MwoJ?l)%NsNfs*Ikup#9$~zI^4BnlaA^!o%%B-{# z`1JxlUF_1jx6Y|V>X+Q`mnw`EL^H^+yZy$G?MQ7hm|wkULdZtiWnNfK9*C0&jnmz)eXtqwWig-Fe;2H>&7Z(6+Xq zYlkXPO2zC2?yzSmBIW0-)AL$wVICev?)rZ|9w&CJaB%C~@%}@|DPCBnK$~A>5&5xc zn1#Wz+RPtsWt&pn2%`r9j|Li9;9j@qb}ilB!3^G1M(DnyKKocs@X5n9c3;$Rv!{{- zd@*G5C)O=P>kEaUj)MoEx4$Ubpw61?k=?7)6{pn;>pbd^Jrm# zIZFZHn3C!_mN=FasuV3{vjIb6NfgjntopY7TO+IMzH#N8q?W>M!m0S4Fw^DMmdks< z|K4x$K}<>F0}_3xfHgW(li%@|AFUn1LDxab=Y~j*qS=%d&|DxBw>tq_N^;(2?S$*V z_v_ntw7(fcydQk(qD;i}Y}PIQo__xtB7Uq z{bFy(ZcA8Ms$P64F%kXT=ewU9`WB=#-|Xo+LV_@8gtq5t*46-|Iy^mS!=1<~SET>i zxDIayC}GAkhMUb*R9()F9V>vRHdx=d4DlLHRTn(A`SsdT429=adz4RaR|ek+UpF*p z%;+QuEb9F?k0&XuE<8AIP^Co=s)B`(&>&C#{;rzCaTyYh!H+A`GgloL<~ZfcXrMzG zZ1XMycnfxJxvz|ARv_BcRc$SaEKL41S9Fg;XU}m) zRuH8hDziCrPWQ|}T?Lye7PZl!R=hzHk#!U@E_d)xi76~VPdPRr7bZ{78;zha6e_4T z87);4FCB8bdLsLyC#A^;ran`$VdY#U`XTkHh}SjY2eHC#l|BdC1%9TB4hl;vt*kB! z9AQX1Ie*R=9ZpzIF<4jquC~dt(mhE;#6+^e7(XBc!eiVaLZ@E144zSghsa168 z;BRKP?Y(ZnjYSI0@*PGOkFq(SIEy=i;<~1o#{X}6Ey*0Y2ern|Q|VVuU9uad|2@W` zHA6Dt<+r5$8?h7^%bMDTV4>lcgnTSD@HD+oLG$+FpP+DW&Kg1RGkbiqNZX`yVH%y@ zJC*FT4_*prj~07X(G2c>1;U|WO4wY*Y*5oB+~iKm^@u(#VWJc)v_wc;0)D|akaTU& z@!2mJIEnbGDCT`w8p-IsZB3(ftb%%s4jH#&ehhE85K9lJ+}!L0ZXp9{96|r!ZJSS8 zD_E^lkzA3Jp3Q+Wc-B7k6;}o@yEvJ6Ui(xrs|^Y-7FYsG5bZ;%=}}!vSt|fb8>SgB zd))!!egmDgHKnED1zXp%5oSy-+pcC>~ zZ}mtBEFVnlSasisKZynUOTqm*u!_*n5zxp5M`2RF(C|}d0rwI1mhZ0rn zWv{*aUDoA`7L734jPwDvXYn@Qc|WYIo49I)^3Seq-nI(Ul7hd4ueF^60BOn|O9u1~ zYA<#a(nhxq*Bk^a0RBh9Wtg@;&Xx0I^xa z_K0I|npZ2edv(|B!Tw9w^pWG94^j<((D5Yj>;I0wDBY4KDi8Q$Tt+s>TyE*qykZ*M z^ABg#NofhPTPxDJjS&K?w5%Ha?mM2Ppww@~X_%Rk16DcK` z4=p#w?J$a32l4cu*}vKQ@ihrtcnyzdvQsEK63P81^-KpGB3@VZo}NEVk&s1s9~3A; zah~%rHXTe%ZTEG#BR%VGkF13rkN=H+O| zp-L%8oHd3SrgbL0DO5S!esxcKT)+f=+w%${`oV@0Wx*S!dfv+*EvvQ5<^u9IWPYUx zj{H3rDBZA|eo0>cSFg%3zV&4)ISNt0W>D@Ul|C;jXBUG!(nzke+(t8sJs?OGon7Zow^c(2{2 zF(b_;g*j%h3ngqma zY!bx{$a9C|=wlH8i?(HyXjwnn5}ts#U-Li%#p6*%W|Q_ouTiCLTaTziR;+EICrg=- zS$v+$lqmjnMB)cmr43n2k*N?^C-3AJi6YWr*p$t`iQ$aA7!yyY!>Z*(;d5j71K_UY zGjeGNoGcJMpG((F96k@~-jjMVnYDP8+1}xJW98 zkR&@0d8kLLfR4nKjd4WV7ViI347KcEBRiwVE^Ew%8j#otf&ITb5;0@|En~+wQZu7ymz znE7`Qk^jY6zPBctQn$N&jO@2^DA^N8`X(NkO)a{VOZ`*gX8_KZStk!{U@RL-H<|Tx zl-c$I9>5AptSoL{!Isv#%CTU=8bT5(OyJ-M7(OS=EBYQe$XobPkm%N`_A^0S%NL{- zzpMe;?obb-yuFf;FtoX1K%E5heE4)kgj*&NRtBh8tIe>(wipn@c2vlpt{&r=u8qf9 zZzUkI*hwhZ5~}(l#Lf=tddA&(ef~KKSO#<@?U~HU-W){bs(&GUxzWDxe@=LX2odxO z;5A?cdG5zSN9iX_tw-%*%^?FN%eT z@z}3`+=1(MTRGCT3(eOab*P^iyF$93tRN8$fddKivfA~pO4R(^_T&inbVGfD$*sfo zdGvXf3;EuxHKd+ALAmlM9y{bJ&vGsg1T1__G$Vglah!&wBW#9m9SjiJ(MQl>yxwK+AOWHMuGey2%Cvge{UY{?*5^d9W2fuTkP}7x(W*iP< z;vOTzGW{n>=NeB%u`sr~A6$xmwE{JxGuo{!L_~ZPIEj5!uon%YDNt;64Gzdzx3x5Q zw>dA3g0WX^76aLvyz0mJROXKZDDCl=oE<7)PzNZgKbsR8BM(Im2%Zy~;@40VlKe)m zG!{S!csy}V(hG+`|6T^`xjmMJU&0a zb-eplY}-fwUr7b&vb|@g3Ew58!u(XIaX#e~4sypMdEzDBH)w90ju0CIyp-vUTpU4> ztNQKo=eiP2jaB)C<|I3nhH0nVf;8fUk2%}#Jidz0xwEe;(h=a+5@>5Dj2W7HqPfl? zbb%EsYb6Hw4RAYB=bXX#j36gQdJ*X$1H+blajgTt`(@U2bde8vD=Hix9_>eF@%Qv5 z#~bDw%iY?P*o&Xqy*RCHe#EM(=ZfaJxjB?VRdn`VSpWb-SLY9l#3ps!Vi31gaEwQS zMqSI{FGB+4HmRp<3#M<>LDs??K1+iQVbrX-&C311!1~DN>6N!+|R`HG1&Y&0kXd% zMK>V8XW~}G*BQO=z1Z{mqu0D=wr>mawrKVoLf6pF;bHQ4$@Yq+u1$AyN<;82vrsva z8CLR8LgE9xf<@0 zb0RWWbG+dcb?<)@>^_EI)y=60o3rAo=Td0XBbZP9EPz}14sZ?TSrRmyo*`=r5w%l< z;R~$QF8f89hjxVD$r4sdHJZI#Sv?p9K;$Mu>HnM`wjB3`e)R9rc*QKbrs3zJI9g`z z`Lw=(ptck_1hiqh8RxfNM72_VCHRe~6;M4P4f0%P)H%&{CA}2jW)yom{`~*39`#y* z;{}-iI$2;DLF#wfGcYW!JsE;g85T&0a$^x+^(IBJET(E#`Gq=`ATI^!dc{$_7K;7Z3%1d=pK(HfT0K1PIeRtc@x0vv z_v}W$b}Nb{1j$~RMKsFiX(z5$rNHVG__BZ)wrX?Q!Qi5rPQpw71+$9S!V;3lYz`* zx~p$n)tz+^eML;Q5Oe1V6(qRWUQ!n{VKG5N7Epj2HwC#pak|${eWRJMMIskcL1DeN zS?gbxz6Q8*(;RSgOMOvU3~;Eh;hiNpbXYx0IXr@g#tl#pDNTchC_sX8SMMRj{LS`W zWtA!A*xB{X(=_KW!JN>`Pz!L9gr=;IMR3m5J#vE4CmUBU`xqm>e7lLl3O!F4)=?6R z{z4E$5o{Rw5^Aby)jk_sXR5@V&JT@*L|vCyKqVSedmD+gNyR*}C?kV-* z#Ty~zdO126RkN~ef;-6q4Tp>zuN*UM6|EWt;S&s!vomR+2sr?Z|`uPcG#qEP!xr)8KUu^@LbyPfODH|Nn zK%~PaY^ld9`lHifHBT{pPx81jP@J1&1zme?cX=7-tu=CpD(>~gO{B83P?Y5oJ1vCb z@j^dlL&jg}jQX}TKZJ*KoJS_;d*DzG*tR#N(Kf252yx zbv{aHwmI_K+>r{@DHWKZZ{s%BTN&mN|J+sPPk=dy-6dRn zzTDW3U*92q$_!r+eYSX%ga30bJzen*oO(p+g>V^~mL?Z_iJ*bKD|T<#0f$pzd}6EC z?lGqI#+k<7=fdZ=wSd-{WgF5@ikOV27 zeZ;4FO9%-_2HA}az#gPhsBz7)?$)q3&I$=$#!JoVp@y7UPgmFgRAPC}KOB|7suNIx z7L3b@FR|c_04`i^9}c~!z(5=u$lS5cbOn`oXk1TkgXfItazFeADCu^;IfhSWVd_6l zNX3fhCRp^#4(KAwdX_B~`D$2@OuG%KhR0@6#Eu-ngWUni-63}1`fA-3N4NXhuDUph z-f~XVJU55c-~o;119JP<WDm&-=X@F7GsNS&+NUQg%r#**X`X8!Fge=#5+duWv+l{*Z2sDkmYA*+FeopCtGJ z8nj!d1FO(L$Zty{ZdkI|f*|(~hcus=Li$Tr=|^0VYM1c7;hTlwOk#BA10*O=kkk^% z6IlE8OkJQpUKG--DGXKrBHLDg;l}{(sa8jTrDX);yWtoy5C}Am`d@V_M@)UMd~_nP z;NDF|6ZXTOGowwyZt_Hqrc$jf{Gr5J=fRpin?L|t4?T;f>e2Mt;K+lN_Pr9Xi_V8x z!AlzTKt*8Wizlv6<%uB`@^;lQ`)o^624~ItDwyBwJtPeUD*x57s@x>6CQ!(6Ct`cj z_(#&DzJL(F;P(tebCQ~%M9-P_;ej$pc0G<=?QUTV1yq|#ke0l2CfZh&MBUfogim~S zK1}f5^}_o00RKM#z&V;OxvI0X;$;O%?r%T7_Yn+fVu~l*hH0f%$I&$Ah%mJg#@%3^ z=2ON2H@qmy=TDz#Cr24R1KrIMniqTsX-fkc2Vh~KmKPN4@JI1D@KZrzBvy122mJl) z*q#@y70~ECFr!M-SJn(9>a&VZ`Vb9;^&3@*LgnM`j)HW)HEDNNbCEqTpqqMYw9<1n_&G#9)|T7Xy_` zb!@kx=!8iWBlUIrD7gC%Ni?4z3mF&j4F34|zcWE2FcoO#-vnxQ)t6Usx3*&k6!&SX zM|uP)v}li45P^DeD< zvCQlOeSNiidJ}XWx!}1?vL*qUyVWVYr)^-06kIv4MTBZ64Q~;|6_teIKf&kKD-SL5 z{d?B!b@+o*av4}qkXX1Xsh=pu)c#K#i2HC`o~5d(o%Hv4znbTEx%dH4Xz2XkS;@vM_R0%Oc53DR6G^~C%zJQJIdi%=5MnWY z?E4n0GK8tNPSGn~Y;Mv_$`9tu8Tj_zFBcS_cH(@>(2TH=gUiN&k0ve@*NzOujs-Li z#d-~BihsD9jGH)SVa8`{8x#{cW}oWI(Zl<(o((xPdbW2KybFvPjK&-#)5C84s-yzB zazoLt-T4AbzB@t@Xjf{kANTwp7A6!Q5Fm&Azs$(m3ugGP?O~tsiP)MW0V?zQ%F+aS z-^H}^ql?oqPm+clJR|1;C#NsXd~w;SmyMP}=rPgzPy_qoCaxUWJ({UT=F{5c7LfweFpJV>*IH9$L1%*ZJ0;KrLXW|!c z$(_;PTP=h;ByZ{Dn^lCTKw=cvi#87&dGma^8mwst&>Ceag^w1u(n2r~e=~;VRJc%Z z4#lH(1lEHaf7#llEEPvt<9|SY65eKvC~>4>lm2*c;n{&XUS3Kfc;6KzD}9-XWzh!M zic*X(U2Mt)&OEs2w9p5miL4`xU6Tn)_+82-tkkHBu~Wx7r5BzUgur9k^rg7nD*e(IfZam%J}Pn z&v>k@1OZ)oW1LIEjqO@tuvNwZ$VW{feNs9;@ zlMs*7wcIP$I%!}gy%bA|z=y?wl*5}=BM3jdkO43c#4&&rMsfxK48>A?#uQWLlh0#v znsI`CBu5~ehwu=v*b`xDz_i_*PUVj95cTnQCIslRGuSRtm_!@>(y-AV%ny_SL(`lN zssgwqDc(gDEn~PNme<;QxwQuOU^HxdeOPl{*(R^&c)2HS=djM41V1H(laxCtuej_m8&<-m9jS3?M~o zVpQ&nwnN?sE5+}7Vm#PZ-2a6dR6^8m(uIF3N}EM4gdF(>W<|OuC2ZK5B@;aNlytWin6HFM;>GMj$Ar7QBjnn*8bOJyeWZto>TIG*m zjH3S{fo}zD01cCY4h_4UKd~`}$%R#xqP2dR-8y}DTV({_v7e_So~VZp6?xfSfbMnl z;lG&5(+$Wb^tAOQ;;peHxJf#=SN%=Xwn8WaWZ<1WPg?wDSa2k?o|_Pq^O|@yrpv`y zGeh=OS>kw;&?LNCp5>4mAw6(w-?k2oO2WKxmqeF?u9MAPK{u_2J4{bDGcoaTxOjgf zDrM1{>Z^M~gMG8ax}u`GZ!()MOvZ*h|?z3DFamT8{@u3a)LEK7lnv!5t# z{_2E_eNoRzjvt6nQ*&6&Sz%EHF)XA`j)s$aJEDZY7q`?rf*+y0%=$nFBENjt6+wB0 z5eBQPuD+}sl%a%-M!sQ{+Nv9HM&of|eB~CT9ELs9#QA0k0(?1!Vn4HzHkW%^g>i+D z!swQYb3R4i%0nQLHe&uF2|ayEIyINt+K}B`f8j5pwOC89ykcvN9xk1^yBKdmrgwl2 zc$)Xcc_r)f;hahrAl3FJFdeiVCqR^o(qpR~KLtQoFOy!a#BGO7Iy#g!vj8~D$cYz~ zZEm9RR;T27SPN1dY-JEtA>cP=|LF&0Gb#EeVG3;0HZV#r@NL_G?QsGt-XUYGkSm7u zYFi=27{S`&M=~id*$+&U!M}%{uci&yl&untUJVjR>y;Qgz?qg9o-BdP{pqml&dgsJ zj(O8-Znn@`QJ74p3ayhWI0T11460^Hb0lYAA}s@!Xve42QVtgv5XD z!c&izdQb*7mKHIPv}M_ha%yqv5@ZIXu*^JyN#ewHqQe5s5ZVwdZ^lKUgN~b}^Ts&R z92&OzOKBSEtX;^|?YCi#6y2d{8JGBpjG62xxoI)Qo>k#xCntCIyA2?|hCiOWG7`Tc z+4;Y@E^lz&TvXWt)tr*!2et~7fYs6!L4{dmKJlKe+pXn)+-nwH^=61~A$dUOVc(BO z&jb5rmrfRNO8BKvVEZ4P86}BCDy&~Q((JmN^8W5~T+qR9ah%2U9*uHbCks#qN=M(vQgOIBK8~C6ayL zp3)~Mg(KZi5V)w8Gl-oMXf-@J^6coLWooj?v_iC=ckZ>G{f*;>9c&=$jbw1_FPc5?iz&3~Dzq#_+Rom}6ppO#MRmNI}&Mz=xg`cTupbspp_?RemA2PXvz ziRw0kmeYzMPw3=ogPs5h;8P$oFe3XlUD-m_Tf*%~9oWG?bTH{^;-(;OUU}a<<6DxJ z09%fir9*NgKEaAHvCntHV+97m4K&1mw?%&Nk1`j7F@W!zsqk!;SB3{cctBMS@Rd*T zZqNX64|1ggCdJATigpOhM_zU`^3mq zN6$wT)`+*@n8uY&R*&GyZomg{+xHxGOI)#NL`}yJFzD#tas};1cXPqeGA#0emfbKj*(&p;wL`08K3D zIXU=991`voHg>7s9gfrg{I6@31&-Ju`v_HWc}OS+5$`H{(U#XiY;Jo7Woujj62+kk ziV&ldHU)(#;?7%tTZtTA%_2Z_kT=6aI;>Wa-SI89tPtmeQCMYDIVu7L_VOL0(qPU^ z*)1xtP4`_gH4W_7c{^4~W6qp~`VYNq#>TbGD&$+y5SDX{?O$dQ*0W-TYKo|tl9MG9 z?*Q7|t1RSRWJ=9$zmC3gWOfEFk$_3&B$fF<3&2Zc)4ht;a!D= zi}{7Kj}VJmN?&_rLchteAgHG$)FQXS4>4kF^srFhbekJ3Mxf7`i9w>{>DIvU#8RYj z0Zr>>8?FtnAyc5^(G`a(U38;V)_C?IMjWm0K9vGGvytz0;lg6I8t|=>MP1o)`lRbD z+7x&H9UU{ArRVIAO^jdnM|4h|uCk9PKHvh3H7Fw zC|4yegn9X zFsz;s5@Q-nFv6rI0o5UNnuU7XoxpQPe-^gr4+`gBPuM@Lt>83f^TU@BTa<1<(dBD{2COQX-aZ&W)G_OItqMcnz@q+bLQ`yJ-RFa{nzy%m$FmcB_yRvE)k#)p{jhZ zl!AK{#&)x8);4+AI&y97+EYDcLMSn|4daSA%?~P!9fd6U#}hCgClBa`%@^GH+%_e8Sisg^a_F$|272l zEBR+3bOZ7>`vqQyA_aaDDQjzoq3)ep^5sQF5z+jBT)O`5((i|Ql>=57Kapi|#}(sy z0pEJUQ7(ccALdo}&5d`4eu0?0G&gFcztI!Hm-!u9D$_0}zB+OIpn6<;}|X2N?SUau67ZvZ81n_*nfDpIT`3iA;t zPZHe}{PMq)0BJ0yt6JJ?2sh9>dWELD=i1X0jgO@eR_u5nddi28;f7cV2<=4Sy`!8Utd{CQJB`N)NJ zPMqL3_Xx0u(+!{uO$H7M7Agc1JPy1kp&T}#T68XI`{C@T40{B$Y=?v9s`OM_ToUAb7bw`h=m_2J4NeZkGL99%zymZeUNx`}b* z=}509F=d;3h~l{*KO|Tp)uaY?hLcMP`)vUL+-F!v;Eld0sxyh~W@?@8u_aLhIUyazOR}BWx0+)?lyWj z8P3I}b3PJ2C$zmPgs7pOK97QO<}xGHZ(}A;aZX8%y*=p7RGU=K1)jk4Hv^ihm6nrG zS@Rm#TBULJod8DUb8w8J&NFEnS@?8X2?%Bcbyd|P#74#B`MKg|01ffvmDdAy854En zBN#qf!^SxQPBU?3`c3v=TMr%Js{R@sp0=@*&0dLu*2J1i3PVYxoPi{S^t;hF*i=>saub5pDW3T zKWj-dOXDn!7;Afp=NG8OWgmJ^ zgY&i))Yt#aztXes>&ei62LS`dc{A+K5q1O=ti-uYiA}^ad3(ZJZ~EK0TEKwt%>nuW z_@Z?c+6ifj&Uo+7en4tSFylDdRjK69@0%*DcTK$`hyZ)M$M3JuWhu{Zut0*9Gz%Bu zKJelQa1O4zAwvSyM~z~zmItWBiyVagkY|3MfLTKj%Tw&ybXaF_z6 zZPvbbqxy-Zhc)@?(BN5}VPqwYYEM+rx*(}n|6aH(quq64+_J@y?P;VIwf+VGU5Au9 z^~&;_@X8elZnu1T0%rupS0HYdg(rfQT{PE}SaeymvvrJiLA~qh@&9Gc!;hJUCSOZr zsQ13Z$_P+y0|cOLESM+(lxumxlq=lDE$dCMf`PV^GtU=#R}cGBKzEQ+R>QoIqa*zg zmN2m{Jis2$t1Og3G$#_JuGI&v?7vlc5iJuF>u@l-NkPGfr4Vi)x1ilX75J2h1^P)_ zVbv4M9L6#%-BEA-9D#{~NKzfH8qjF)gBysrU)`+V=F(?v%9dw-C#tn=EV%GobzBNG z{Tz7lQNz#pgz%IBuUw=wVcXthKd+t7HCo5o(%I>^nbyQN4mxx1JcZ;IR%Zzo$fs-R z`qa{3DiM6~`_ZmotFZ7F2=$xemT_7G6LJJ=%p|Mc#lT_*FALvX$E#YT2jqMRs$_s{fhyPuX;(DRX$S9)rOjW6=&FF-DXmub2>ym35od4yfvse+Y^L#r`9F@-y$XiNe}L8pIp#OC6LgDJNCkR|bR{7FV6V z@=rL#yUz1uj7Y=yVNP!$NPZJcjiR@-x>0|d3X@f5^L$X1k`(<#_YtqW-4KGb>Hv6R z5ex{IZL0i__fN)K3$$?i#jz)Z(|!pS+Ft!9BOsr2)aW+A;>Gp6N`kAsMGIm^X5T@u zMm2RboI)&IIbrHFbq*>dnehb;SGB}px>JBEk>7|$N*ADb9WeP?whk{orf>R(sF}#y zuyx$Pi|q@OW&429N<9`MH?Z|~RPSxRdoh&w)tmFaeaDYxlwiFRu#dlrgNC=R$R2n% zoZ1SKG)9t%8!2whi1`WQfQE)UlB|kCH!S=4&U2MueUJUas3<{{7;{yafIR_8bq*QW zxJp{#G{Us~3}@!qI-A})GO|zmsm;9q&oDkvyC#N}zuO*?OCO;>lv{?t_o|lrh5v@M z*N{y|XMZTq{O-~Sk8~+S^gomjKU*S(NMJmEIM4sp{$i(@K8B5O=Sa4ivMh} zc)RAq$uh5hv*CsI_Zur#k&9yWuH1{OSB*6Rh?HQjFy{N9YCI@R9NCE)jVhUP&da`L zz7`CExUD9kvk}D|04ZF)T}*n64C~DMQ8;0D0W-JLT4y;f1Rw6#e1?cb`Xxap!yWty zx?Cobexd6PXhRzVD?*xa)i}oCfog!c#%@3H*%^R(*SZdshoa}#J%8<_XV|!g=LESS zl8YI-#^i=_pKMmR5kKInp@X-=q207E4iKclt9tv26?lijQm_T%-)G(Kz zeTB>YedU`%F!!sGjsrxd+0PdjB`oi3@Hh%QWyqiy9upa%umls`nC-A@;z z3*2w<%};?pGU*jYe7@YNUL(>X?NwA&JhU_!!!}7R6-_|#JBWn+B(H9T0du$(Z#Js4 zh=#*=$wHZHGXq2x?>d{#aaml@8 zmHc$Yy!cJXN5stu3(wNynbPegaH&tM+869VPEeEynEht<}(EuynDq z0VN|TedW8{tnU@lW4m>Af65UhcPZMa6J)ibC)DY+6Cf?9FS7m*7La#dz>7-mSFYZd zTaZWA9Eq-F6+?(^Zku|WE&jtCx4__qk15#y@Y%2_lB%UbSA~f9ojv(CjIt8*o9f}r zb^4Ui9@{XbO*iCuTg{hr*^#4^>7Zgf_C5zi5x6KS>|crXdZKl~LfNSnvTP3QK<$+C zc<+b!263Tc#D)iqn`+N~YbP+M1%uh4@+M2-{5GaepYI>E9Rw1ULEbo8q=r2i|K^0w z$#1lI>@N;#0^Tg&v!D3qC6N<#!=G2rR3N-Yt8 z>9{FEMRf5ekF{20U2{+RBves>+6w0YeXcET#JU|sl-XS+IylUWlMBKT#_!VrWRSQ7Idnd{Q&72pes$!9c9tZ)f}KXGTJhUcJw#K%G3_ z)4UOf#9E%EJ7F~u=j--dn7;~skU3MecMV=@BVAk!7TR&@S6smEDC9ZQxetV*a(8lO zp>ZVvO=GnjijW~g!o_kUQlFm^_dFtl==Ol%fmHcnUPkE-cVkzk@8GB740n|*`UzRh zeIobnji;JLU|(DJZ8GM`bdTt7&aDd9zL|(bG@MPsmTBBkHp4tFtj3xm zn?(Fv(9)cW<-mt_+h^(QzMxq04fdX4+LkD)x(Ts=18qD18yJWm@-CpI#QVardYikt zRITq2l%jj>IgzZ62+tTJ>`b47ED}Kj;$*kh;;o&I#BCFcpuC?znne>{CYi{Ub~jPU z`DjsK!`lhnVEm~IR@Dh89%uu`6*mLH-t@N?6$q#OY7^hYB#v`jgNrd{;KjynJ?De= zqHhbb5)J(zHmyBp!LaEyI0&p$(8S}0=su6N52o4S_d~ODPN{#)ooeRI>`Kt%8zHWd zdru_S{#N<^u22@Pj>XE2V4oga{%Sd7S(LGss>VjeYlGkM)5E8!m~tT{upgiRr^;tA z6C!^wk7l7EJVab|TkDJ&-#~<6?B&B2|GO2Z8Tzo9u&A=xL|g*-V)tE|mvZXEx@hFu z*;Ag6A427cZbUaNliyjPt*z}0V+ zwzhg`O4$Pl!sVUd#4DfH)202!y8OIR(xB(8z_vc*S`RICf%6c9ID@G!7)7bkFdMck zs!j701xS-hXnc|z#UAhrD2c_=bt8n&KfdI1pHy$f{z4*9EmXa@;MkB$Zeb@ZM4vf+ z&37Aocl~D4>vxh9srvq?5_-9of289b{MdmHV}Reu!XgP_NX15;JcfGhoVEz*qF`m2 zd+`vZ#(>JftDQQgu=}X-wSZzv&sI^V_VIGzWXi!d?1kdTGORlBVsJn~!)2o9@G1$b zfa|wxZ}sueHQmykEhy6k^X&iOxRmX9FyED(0EbXJ&B`cI?Ud-)kk#AO#1SblvZwNJ z={yT_t_!XffVvXZIGZcPQKn_J0ENw1H<#dR>3$~93@!JU;R)n{Pa-B}W?m$ExNbtk zJaH-dGxt?Frb-<-1L&oS1J-IZtmJbk+B;8yKs>Cx+_q;_Y_$&#zKM0%KlnhNT++YWV$&I z*lTDn?O?_M{kEJ7p*Xb{3CCKfIiBdOJt`Z-l(Tzqsa={Y2~^dVSRXh(Kf0aJW6D*p zRDUlU&>EQY7@etm%)q><&)=@QYO4k(`@cBIK^Ct-PF2EaS0FxREtU*5<+|;EXXfZ- zJ{(~NJgKPb3|_Ig$i0JA>{znqPTXN8XMv$IM;C4^*k6o||4KnUsh7mrO zWx)gm!;b_kZa1Ca&w6Hhd&z6dELU;`xUa5q2C(+vFo--f?z1R-GMqs#%9UbYx^j^^ zWEl0Pz=|ZDoAn5mSH)l&sW39Jd@E$PDv*h+bxJ}|1cVVT&1`xzAZKxQ>(2^lm4H?hPH=aK}wsohth-JD@k#@vo+ykSnv zSoWtNNVWkKBvPdfO@Pv3Mc@>1DX@)cwJzRrkOc4VTH*$Q-Uu=_}lnCH$ zE%5FXHKHOsrB#}UfD(rJg>6^>47y*2f ziYPy0E-U-KH#s$_#j{a*Wh@fy{9T%p_2=i;t?<9S1ighfOg8N5(^A>U`Pn*o1XDz0~JV5h^p^sjfir&uI<=)xDMzuRa74k#<|Qjv zkqj3VNyULw3Nu2Ej#=|mifSPZa@6kmI+g`r8{&S8V+hr0VgbjmiTV`)Qk0Zsj9qEO z;Q6f6<=AmRHErj42l)?7ZLir`b2bA075N)MCh!waEnq#R0w0=|{erHov{#9a_|2P$ z8O#aEEEnERVr{HdG=owYB z-OKrxa7-7}#C@cGCDR?9g^A~gG(eqkY3>bt&<&}C^Zq$oW?VZHG>j&?pf^bCg1H9_ z-e1*(7=|*t0TUONDU#W6;~n+`9B~Xa2SQhT-L_$*^!EYudDQ$Yc#$W54uUPzYV)C8 z9xhm|QIvEOKrYd8F5_?ZW`r}_M@4y{UO>%%+F$>&(NuY1IT8R{Ru6!}O;W9= zwX0}(7V%9j1Hk27%r5?hnh(97-G$Y;rdMVJSi@|Q__h2gE(3S@fMs_#fnMt+qi zACFB!fkgJ~;NySAJU2gs_80;4tH3KP12hlCWQ1ue&Ld~WyyMTL?(%$k>8i+CzeODf z^BJ7Pe~)-}L+yp+h;7iYJagLMIflOhI=9X8b4Wv6tx380jfbj2($@GMRQ=#D4$4r2 zm)3TMIS(2J!tfuP-Au0(=fmEgbJFMrotH?PPJL;d+zON(S3VXrrA!KI;Eg2(*j!4f z7?ac3%(SL*>xWn9`)-B6TqB|Rkzf}il6=2>dc8+&_p66ipB9Af;GlO zVe45L_LQi!w|uOywx!d$61X&YSR zU|p+?VNqy_i(Twv&IFBp=YJG>W9U8^npjXKH77x3d2VDUP12S??WefPB(8nPaa1(%?8?GGO z5ws9aU}g*Wm8Mzh+t&p{ya!{A8hAvVw6{0^)hP3G%}r-R!`)kY!Yo$#tKa7Jy&j=_0!o82+h21-8yK?rE`0h_rDlk+jKe*KYQz*#{Io&n1&hv< z?Y)`iFcWI{CF31l+P`bku~XYU2V6>68c0&d{Z&w69_pA~J+j51PbyL|}N zvIh=fl1TU#mVgGaJrE==Rj*oq6P17@M+38M#-tNK6Ot4%vrCAN1>&R#@WLAZ8UZZHHfj3t67{&G~iY-S-`SI+3Mw_Cor=$95y? zj+p@qU+R3=I35AJhU``P+@$Qo&5^e=h~O1RikOWT zfCjq4I7swTM@*i)wwf2mHMZtP?tp~N=^ThT=Nz0c?7r%|MOx# zPEDk&2fmR*p>VxMNF;DT@+-Homy~v-G(CHaoLTf!%ihEHSPkS}g9}D%UG!+Vha1vqLeE2&{1_xMH0gtfcN}?$bhGyORk#-ZU6`Z2oM}iV3c(+|sT-*A z+;*g6-^3x{6-o{iGjG}?1!}jjy3$4RH1+C-NqAq0tRWrK*N+wvxqTJ5Sk~2clw}FY zS#ztm1`+e)n#EKOqsu|5httctU(Zs|il}?w>6NVVf}|GazN4DXyL}UoO5zqC!d`9y zpg4+bB)8@)1uenXpvFe<#Szo*Mrk!;9BXmw!eytk%8{!n;{wJFMN=Q%$a7^kTrM*C zE7=kt8rCa0eKgCL^h~f_3T2gl&nn#?21yT|;r9zC@h4y(-~$jJ zbuF|Z6Srx5Vpcz@UB&_lKV!l&@&Lf4{v0YZRA87?e%wMi@pZ*9hG!A#QmIVJi)bM( zM^88POiY^pZ0iZ^p=Aakw%>OCLf8-F8^g0%=Lj(H)wIQhpCc@fKff6)6-}R<2X2^u zU1naeL=04VTuH56YerK`gShUS1$o%R8EM%{J|f^djy~7*dsdj~8sFfFDWi1Gs4=!1 z_cl?c4DJ}xqmF2;Wo%t4Sv6!1MX1fA=_0*C-C4Y6A0#&T2v4A+H=a03qqwI`@e@*Z zLPFKYu5@I;Q)=McfxRp4>4(B3&fPJJYl{@}&OM&>5#Np0-g}zq%6AQC!~ zD*!uW9zR1qn$Tda9QFk#gxYvW56tAP&QOjGcgZ{$-73puTp76F^BxU>`;**4gv#_d( zpw_l&5PB!iDk;vUk~U|qsu_T6gq(f!j{?Re7c0Svy00~-G9Z`3BgPm770bnv2%O#7 z2~oFy;y*){J4^)N;h(QXooT@y_sVQe{lihuHLl(W?!9LV-r0UM1TeB%uT8IjG?K(i zeL9RB&&4AF9&QcF?q4F~V$u1cT^*p)bM&e4lfQ=;Z;29M(qxpImWS`q)?CMe2Mwm% z5^7pA1i6&pC_0lwnBaVhIt_MKx#8L2^j1V;6{<=pR-h3N#N9>a5NTR%jplIG|1+|* zCQQ=;y8#wJBZ-!ua#{g#be9ZRKCzrvkOge}>CC8@8ONa_3z!spv2?gF-6APbphz16 z%x13CFA0I8Lh}#s@3W_R|I>1E2Z@;63Z=mHH5Dx8$wpEv$Cu;@GfbZWY5oZLt;?T~ zq4;-#{6MVr@%j#)XZKehd9rFjv%20c3wLX)P2*$M2pVytA8#;4UB)pqL@Kyh3|0TI z;|8~zD>pl$Y)p(c;gpb%1A@$>O*FkcTR`76AaWqa9IIh;qmTn5$wx1c%EvPhvqQ5d z4u}^j2Mwsf{}l}rzak`nau%WHP+dlp61XRm`1N-9OfECLD}gN+73l*53;H3@)Iu<~V4T<=;f0#$_6);))PRPmLu5?zM^yR<+Qs&*=Z`z=MG zwjyMdp1N?w3DgIc?RNn;%4>l6lQeQ*b351s7Ds;uk4fw7e0-C%bY9gS)MGmE0)KVD zP{zp^SV)lDv^UEWs2t;f`<8bqe}|cr*(4_N??@3OuB#!1p8Rq|cQg)A&J?7=D(w2V zA(_a!uYVWM#+)vj=>mp{Sb>CN>j=I{W%sX&OMte+hNGQ`VE<5$g?!-dtEm!;exnxw zFGLqRE58~e4b*n}@&Iq_Yt78)=sCl&0gy9k*|6G)jyg`v)-JSZbh%K54valoq=_g) z;IjTY#8(;2$gA>!fO|t8glSDNwN{Uf1bhxKI5+^&(=8Av{GuIsY&*_DP7^0TVItoI z0!7y{9GYrrhcsKr-Yyf-C?s|Q+Q00XNh7xuwH1chW{zI$t2SoL;Y!LK>3{ECq=`cgO%3N1z2B13)jL7+lfqjJxI2LAB-BgOCkTsX zOAp@=Ray#xZp_`i*ar~uz%x&zKnt>UF-v$|ae@bS5q2Cm9u+aNt;!a0Pov%kbW?@7 zrWZaRDg2PY{O9*@EGwI;+;1UqfW0@08O~Xse;Ep7ZzS-ab#W@kz z&k`(*ZquwVV2OG(;%WOs=aYMQmi1sESE0!L8=>TP>ARewV4^`m zb6_GfjmOYq+i+q16HmKRP0uc}k{q7n7N=)`icTqjoQv%cD6`U2ttPP6I^A5oRMK1O3B`hYSEl%XyyGot0Do$29)NPnU!>E zbQf9mUk50R2=d|idi`v)la1)Md@Wp<$tC#z14=z9YBnWtID)Kz1cH+QOtGrF$@Ho@WmiA)i zqY0iCE)zOMy!BF?vMnfi>z?yJFyk}TuOI;nzpnZ=&ic=$A^^`y?Oy%0Rf^weoLUaI`75rjUA0xff!&-sD8-GBxbhHYNo1D=@LEFnX81scV~k&dnj zJ;T8fx~%1p|DkUZoZ%-_fHjwu!`OUGDDWBQG_J;RyR@p?uUSYd5b<2luZ0c22IqL9ic1HE1|D{4WDn>?B1lin5FcasxXxseVR@OC=`PwIuOV6V~o^jM3=AdCspR34X z>*e(sr?m?*-pie~d;&x3UluhYd-vczh&0mP8D5s%DRe(FZ^$Z`yK`?2{;U)aVHI{Npv}AY!r+crbqBDLmZgv2KNwthA zG_d2t@fF(Oc8Bl<)Z8QzLGNDrCB~U_|$I)N)LAb@;sL*#ANFeJZNeG`7oTXMXFVi*%FZ)Hq1oOEW)Y}p^ z(nP;GkN59KPr8jcN8o4MrC%kZUSdkSPE81N&sx_>#u>^4=4iB57`D@vcv_>3LNM5F z-0Z>?(t{+&jdA!oav+$B84j|t2qgJ;FkMSyyDYBRab>M;-%`2{@iZwV@7Yi3pIY&5 zGXBMhp=mxRUR!yIWQJw11<;SZlkc`!|AV5mfRna9tL>{3*rz=ik&vEhf@?gFQ1lIb z?#a3%_4L%y?~)lx#vKOa^=|tn7YCN$=(|!Vs{=M=eGGzf01S=gcW317>M`x6JIJIp zJ4DqlMFZ?lzb10xOIhvyJFC$8J{lXFqt(8t6Z__rr#RmHuOn3|Jo ziYSfyxM_F>Mx(fC4T1_fIVcSY9PD}4nUI2m8t?4@H<7EqxPrzC8*%#b0A03I5o?ILb`_S9k4257rwfVU zk!gyV_9{lCYm&}Z`8e?r%jSS@Dqa=>Ny0!nie9#5v-ew9G^?GQE(d*`yg9xhU@XsF zm7XdS*?D9v!AZY6+r%r9J-S)a?}uz;@WqWIMVkCVlbi<6_<-z)0CTLiT%H+|wIW4@ z&-n{jgmw3m?q@K#9e!!&4V=~txN|40Wk86cOave({l-ExqzS76NAtmhE_hWfTJoWx zg+9fHGh{HAhchZem}P9zZY}y5vvGF=3=Kl4+@%=bf=N}$+?XO&*FvjtdcUVmtKTfk z;B-x`ed5$yVfUaC@0h`reAVx%f}kmdJs!`L7Sbqe$BsJr#qNJ3>VJd4@iz#Gc6RB< zYM-3Yl;=x{!>Pgq=<5!lcfA>X;a(C#&bTF!2&S z)tu!nf;?L8$OQLlh1*_Us4&sE;=g&wDp%n5zb;3n4KRRi9PWeex&r|;$o0hsu7GMS zC}Qwp1CfP;uj`;Xr-Bzr?k^dN%7El4^kc;tXq17f_WG>aNoN|kd`iRB?KYRwrtOZI zZ+dcjJZ~ZZiMo$~8m^jpBKNO2if`ga^637Uf|_MH@s9#c9A+xc8cquW4n)qLNk`46 zK}P{7gP`{n&*rP*Sh&nlnv)aZvTXj;`aPus3$3PlKn!>N$~!S484^MfTm%>=8UmbX*gHm(N^n1uxJFH&>i5uaf zSAz)}NXJAY(J$ByDP?c&25roqAL0J&3yF)h2vz6Vh1q z3b`~yi>aRs2FGzvdcKjbWl~RZBdU!E8}J4ek?jSO0kxki>L#U_1pJR7*F0HD)y?K+ zdjxJ_TdmG?{|i$A)J$pdA21b)$AgRWL2zEE@478OFQ;SD`#^RR5DMl;IUaXc)vkKO z>|jD}wmEk>Z;&kTX);(kmcs|@N7VP~xW*r#b}P*+=|`q`?S^g&c{B5u1|jhtXq66% z3b77DzdH4@B#fSXElA-*VfRM?esi3+3$1~3w5xtsWZ-E9&dH;CCRQ~VOGoU{qoNR~ znnI#S(x^eK&di)aT!y~Kh$JjMjd`4E6X-U_4)28~fxF=|Mz1wWID|O3H34c6-9lVn zQn?D^*v28E-S#MQJqDq=FzvC6;Q0)YNoWWuAIGK=FBLkHq~~ERU)Kq4gYXikE<;)A zpmr*yhnQ+({ruy`yyYC=na=`iXKbz)O(^8dH>ID)hp9`+YsP$APBn(qBN4zJy%|zH zQwGo~3R18v#N}r|1=#C1u(3IomM)RAAomx#nu^|xJp+wLftpZZ3Bw^ns{^v1J#^$7 zjvO71*NqBthW8#Y?hi#gO0DlYH#>Pur8w^oDL(n!wmAH!y$fc~Xl=}wQgt}YlDN-f zz}VdvQ_qhs_Bkj0?5Y%?6m-BVm(o?;>N+*?PmxO=fjXfXjE$_1=*>5TP&1iK+>Bu# zeyQ+lxIm#-r_XwdjVykvJ(ro|gF!^}h5#IeLd5X$IVx=gk<0634@p2y!m;5ylYrvGCN2flNqBlBio2K3zZ&|5ROUjGtQ#$^sRcPR ztZ(XmZaVXMt34k2^N%Q(g1Cv!sh(_9-w3;;;$V3agL@8q|$P4*fuL6_(IJJ&( z0#K-bt;wqeHIY7P>N)5tn*h&0!?dBL#s!U7e|cg+uFXs_yOyyEy63nIv_VvYo8M7( zpiyo!E~}`_L*MRlRRhCqn$0P$dgmTXE{j+`3j9$EP{*@Aqx&9iVErn?2^&#szngfC zRe(X+UT!CaOCb{!d4_mF7ZL3ov1_P=uW2)>dd;R_LNOhpp)Wo$mk;+|O=IWqEM<#C zYZ#I#_%)RD0OGP0olbq=6{DIC<$+xe!4b2U{v9qN*W>!g8@eE25PYyKr&V{b5ZNLn z;H1BnSo;z!uJ`zf|CP2OUhC5>xW*$ci_jEHM{jo*UeLiqF})KJiIF2{erLJYwMq9~ z3QVDJXm;7=3uaP9Z1>c+uY8_}oEE>|o(5mys}Ux|xYbextX)7_*n>9!yt!WMSJ2rPgM#BgLnHE%LZfDCK9PTv#y&-Yj;s5U;BN^^ zwM(XGp(GnG{N3xwP7H2q0RKM#z`CVlc8_Blz&KCof>kzhv@Uf_psHb$@T- zSZNCSCG>PKS2wV3#Nzuv*hEIRO~L-JPCI@k*qirJ`A=rA!DtG(z|ljE&>(Vo2bryf z7IqLnV9&%yAjJm*7V4p&O@~E&WfQ5*O388Rmkjp~eA9+uzvZ6y?}<*2#NyXk4b4hHtHFqWW z5y=4cYMkg-it>oMXBQSXMcm!wl8u#!XS$D=(SJO7M!CD+{0NFS6EHmhwmO$#bVcfd zEW>If2W5G>)b%U`iJ3Y!a^sO2Sk;63dp}GkWz2UbZ zTUr|S*DT62v5)s}IodmRKvZIM=i!jhxm)100|C0$26@HeTk^f`I!l#{o-e0{O-EXp zrz$uM>&C2)!@k(KH<fI)Gm3U9?x?3+E}@!^ClBR7wK?_}(F^4MZ#HkHcg2R&PtXT+qAP*WX@La2&JQ zSh+7wDMB7ZEW@lpaf;EC_r-+H?RW-)0_)Zsud4;&2$3$M^P~C*h~W00f3s?{`}AEg zpqX4+B)aS0cYH)yGqxYkw?B*Vn0ZoSrmW0c$XMntIyHo)PTlm|j!VstCSLW`3z^aT zwnlu}{0Y;9D;Tu5?+pJrnF;q`FEjZ$bdJn^N#?fgXh!$w6%$`#o)BbAAzs!N!h*Ig zNPq722Xz$6He7*Bq*iyEoAALciJ9M>C}Wj9+8&Ds{hMt{qgl+^Tb~OG?3j`-c|}f7 z8Fv(a%f(ZQ`g|v%gN>)iWmDrn->4v$i^P`v zcB13V&>8FXi-V04dQ`%SEKTb6h%104UVJ#ih-#*=p;`xTaH3Rsv(EA69l!3ZzQ@rGnqukWem`_f-iwir=AC0Q=KHk z)*6IYbl5_Wv60{BqOe0;)S!bjU5*1h+;gMwVbV>cQ#;4u{k50;9E%Z#F)Yt!#883;$rwUyqw@$-+B{Xj6U&W2`TV6}(PYtQ6=#fZYa=j3JyL%i z$Icd0!05r&mCiz0P7`%&G|pXh1?XVb84i_x)OAYlCu9F0waj7Aurq#@gpI;h)!LlY zEUKz}O?fm*$1o`$4Yj8})s9SYxG8g}&fL&Co&1o#uUelm5K>vaeXFv^^M{qWR^>EHJi6qAqgqBSuMA~%{ml%SmT>9VF9{ z#S9q_+`t-~n5t@Q4X-=^I^naUCVmZHBRUWHU?Y@fX6mxUf&JH=Vz6y;TKvr;a@Vuv z!kBOeU6`NpsQ0(gdcq*7?glVtKFoEO^M=q;A!eK!QIWGoc6f2U@Hrg^5*4Hh@+LWX zZHaIhm&HDfZGwgL+Uxq0WHzAxL^-(8MHSy|3t6$4U29iae`CK49!NERU%O!gr?@;7G+?yX~ zJj=TS(IWgr(lfiO{ZpD^CvkRpm0N1vx#mYpxm-wz%bjYSB$)>B*t__*?b0eJ{Xefx zWCB8-$%our-hV?P>{6VykM^RdzH0LU{fGc5DGWCiFo(mG&~(~n zo0`A+H^)@eaXCzQOtFrv`R|U62Te6gOA^r5qBz>opO5&RP57u}wMH&7x6>b@jusP* zzEc`oB>?L84i#E1B8f}8WlnbTItD=OJpr2fB7ns)vQa?Z*Ub_?e$QMjXpJ_+Z#R* zy3zxK$ie9!ib}Gh+RQP8@=0BcC$)J7lOhx4MCgb&@CN)2A~WRAViutJK4W$N**PA} zk-UKL{n{R*Jmc(=g-j@s$C~r=T*e4cjZk_jUd!q}501;KI9>q#EO(SfLr+~&mpoxd z6ogq?qgfdf1^HRMNb7?wYkf7&%E5*ec(5*wUn?)Y& zk-~dxF*qx^T|#wgOMsHlOGV095symF6>oF=;SrgSklhxc@spDk@G^ud^ECAD=xpfxliJLSCC%mgwLv$9=+}3moz67Mhw%^b}$38!Hs0YP?hBipx zHg5&Ga)~c!ThRC%c526Z&QEcoEd2*P+hzzhz~8=SYRfg< zombXNkKdPL_2R^GpzOISEzNxIMI{_=bs;VQ86Y&pW{*~J04p~MT-KCy3v}%q>Od}F zf?iL_dToJ&LlU3Kfca+!{kJ&4y8!uCS+cqQQZ@XCNT&(HugBaoXcdJA0@%q`qZw*G zecUrJJJ$ntCbxsJ*0x}Y%?;qkAUK?xs|Ok7_Wz_Q!K!@baQB3)^}#BsppH9amU#t1 zHbjd84IIHPFOz=nu_w;=0dSqwJR8^b_03}LhG*ztdbg#kh8G%{DsxA~aKPJui{sUr z1@_~~O?DP!FGj^vu`Rx1o0#piV_az0VAZ)a0grnko32^Uq-KcHbQDxs*HEdfzpE?d z;78WMll`@jpJu%)oy?Et*FVd$M+qWCkA`gW)!-hUXPjnL1ndjinCllq zII~3%)SWw6r)U652s;?E&ganoo?t+#P9#Zk|Isz`-C0>5rhPB(a@nxGXh_c5c1FH2 zXjuzq@8*ZtrW7td?$TFI#cG;?!?BsbN#a*M?qsvaxI;nY^Cm1N&p&5>FILT1U&8~$n(G@P34``d2H~DoV-F{E@ zInZWI4GZVQ!~-kORyUfK@+Wg~FwMV>3y2`;X0en@VRhQ1s34Oi+flMT1{r}DvbBQ( zUZDM2$@FGQ*O2}%JaIoJ(beRnjN(mQ^PbmURDr&Soo`h#!6d@up4P2XIFuCNg?fh; z?S(mlCzjsVa@;k?m8LmXh!$Z*OVq$SnhXtGKHSc696_Xg?9n8YS7h|62?A>=@gPgE zT`y#o;do&$9sLr5UPqRaWih*HHV1t28iOZ!F|=u^SM^Br3>0g^E~A4)gSdqW0o$PK zu?A3P1vr9sie?NF;XD&`vCkrh2q8X+yQ}9-`DqyvQC)Q&N$`C(m1rfvBiLF%G~oEp z{Y>V<=}qirV(SZ!#$XiOqzyZ96(A_Vg&{9^|1awoJM(^E{LvrpmpmBSn4;o{6|T0<{qp4bs8u!g#Oo^ zETEB#kX(7U937ExeNy>DIB1o%!i6b$MnX%ot7-;pVdscU_<3LnhmhWJYx_O!T8Obi ziH(vY`O?mqadWG~%NzO_=S1hvigF~5Z*C7xbnNdwN03aaHmAl6z4}rKQFV#&OuRhU zwGfoI#6l{Jh^D>k<8h2H2Frv#v5xL0<9jkekdo=LQ~UsHO#i_tWe07aG67Zr%-+mi ztGjyj7-D&1o36390ip{tAzYou1_cMZ4*dM(Kq#q;FQ#ax$@@jL$9N@1t$$^AvGD?1 zPI-jf{AI`E&$lP{=(~BeBO>!*8`v3|E6HKok;ZLNHyRg;hyQ>@TVr=canc=#VK&=+ zfC$uZuf>*h5yZv6a1%Vd2K}|i!27&E`+h5&^$~rCg>X56ZB*yqEm*Hb!LN0I;}ev( zsuNz|O~`{4|0|D61e49U|DlIwoK?c9{M`K-_$tC?H(>|hh%XTWKIb7u}9s1MOeB6Yz`Bw+>O(^ zlbS_9ni=rSqtj3(1DnSAE-xg+~q_al4Sj9DM&M6b*nb-5p^&H7J0Vw3d+Rpy1G96a8_Usr&o7$2r=Fu{b>xk)=;Rb!f#Tr)O?a1e%POXEJIwn z!;lmz3OIO4%UWthA##N}+hRH_eG4`&%k zl?Uij8sDv#2V48WMM71z3$c#3axdsXNl1n7okR=;q0-b%$k=BjGkh{UTVO*?rz*a} zC^P6?+as|i52})$=kGeTEtK`NIdd6uRf<(`raY`}WyRzK)j9->zpekHb6XR@>-k9VahI2nWwo}MvW)k2waZ6GqO zLx1Tp3c*iHD;>GqAW8K+ywx&r4=Z_$4A}x|zs+_5WEBZwp8TIcNZnaW!GXp^S4tU^ z@X%9(wnv$Yr?>R$rI3O+q<=%SCr?g+>#`54sF|*zF%VpOptHPK^8W2C(^XePVxNttF*;%wuYRH_Ms%eZ9O1#j^L>&Ym^=#VUhS zl)4m!mg9ly>*fjdgn|iQ)9$-G@XbK6tN_szq=_4d;z+Gi#i(XDxkg&FOxWJzJ5OrT zcqYCBCmb6KN1VF?IR3e)Y;aoc#q@SPFY9U!;^;D+hHb~sjfUG6xM23@#n_5gRk*O|IXV*7Znr=sCR4Z*a07E)aB^`ZFF1HydpMx?s}@-jE|hs$hv`38AEF3I_OC#0s3qEMg`$UZPs= zlUS8Oe?i+Fs@3K$2{O)gNN?j87O_LR+&Z%2JZLD>UhZ(o3X1?h{c=ZS)!<&~PqQ6r zOIo7B9*qCy6mHslu$r^GRwTRMZ9~e|H|+h2<@^crVES)JtDA~v-^czrfNdsA(?wNS zyr-dibp6EZ#|nO#@uz8Xa>(d#3t%^nDQh@0eua@U+xbWbDPZ0tU?dE#KM{o~fpXNT zbV20ktF@DVS^esGp`$GD#|O^ir~cXh!yMGQmi{yeo0yBnXSOT^zu?4zej(+S622_F z%A}rZ7k4m)O$>0s&f zA#2n8#h8Q_s745yi^-8*D@Jjx=< z`>2$r6#Op(bmGM=@+%b~HfLsq@=?4ti!WOI;NN~ibDu$IGXE{Cq;A(ZVjLd#AyZi9 zMpl{p`^4%X3Mts~s;e2sT+YKPaN01Bnppq=w#yDrjV+%}!4QjNu})7o#{ars z0--Ct{m3N-aean=a(k5uq;K2F6XC1k7u3vx%mdUyVOy_01kzlkx%n9?rNtKe{kBVc z8tW3j7|Dj_iCuD#%Q^V8lVN$8^)V`A)7buZ`@z85e0Ia0dxUI9?MIbi%>x|FsA~Yc zNjyQs=^z_he?DZfqp&cV z6#ma?&gL4~$!Nl#Zr=o|ZRw`Pf&1F|jKp z;V#|MlFh7a@PDtmufWOE&8Umq^ye7{qUmtU4!GV2x?jGLWe%|`2u0Wb+<=XJavo{K+&uGyH z`g2P5ifE$m5=o$BITsGh#gS#d(2Dd{7*ZjwGg12WNb&Ook|(VW*))~T<&x=fo_pqL zS>j2xwYTXiKwueYQdcgEaiZ_!ZBQNv>R_!|(Wot7Nv7ns zpAT-wRV<|WYeDLFG+6<3Za;JAEXm+2GqJ88lyhKITg$0T6&u50^=ZjKseKLxISSDm zRzUA)A@&ag$m(a~wiXZ1-T-bjIgL+0iz=Qxn*(*Wx)x|QnTuWaP_%cDfyB0;xyw$H zI7ve%0Xjy(eI45@kjAX`ugVgz53S#2eJ|7Vq(9YiTt^WF)`{6bC-!Pym3LEg+Y%~K zqZQ`y91!~|0%%*UpzP>+Hm0r!`FeZ?_sK1M@_9^(9hT7whLxOl`lB=Qq`TVr8ZTNX55w^{vdi;#(I8*xCqRQI==a<3II2%rJ4-3 z?f47MI(C~fUoKD917213Q7l}Q)MgMEA_aG8x%(X#_(o^|PdQr&l9h%M6&Oj5brtb< z>sAbQf)&K;)~@?qq{JIU=@8Ft!JM6h?J_~*G+vu;&;V1_X3>mYrs|%f~e5Goy z0FItd?@I-!|HuG*-rDJSQkQZuI0`E`C$1$lK3=o}RH=7=7gj zxObrG3NxuoUcrdn6J_c5#Imkj38OB|@=H8Qokr;?sQF*7p;d-}>qE=eq10 z3j$BA>hxD0^vu?*kQvnkV`jZiaPyC99-Pxa1%ucRxy#P1s@2?Ln4W`6aTWLS|BZq$ z`{6H@TttiB4#OOoqjFr4p*63Mp%F5qrftw6d!@}-R{8qFWb%4n-W&nl|AZD5^#;?e zj`SS4z}-hR^-A?hT8b5lwk1ls-iS|o?O}@q1yDdIO+iV8Yi*mZ-qAklo)THPU&}B) zmS%%iDydx^*)eljYkJbm?xnjikN3u!hGNyB7+8;Eu8PO@mN+K7BCN^|1qUVQ`=l3S zhoEJoV6>{`yKIn%!Mu13y)m(q+&OkZp}HGs@7HM@q2%rD2mKpAB|v4XZ>i0>|97pVqTR0yAaq zeRc@K%07xch)_o+PNir8qqvUTIn2;)Chg(<1W>TNFD-w%V1RZVhzbfq>>6(X3UuMP zJSl0Xvb8m40qTO+gWdG7I;%#Xhc0MS3J&^;RqKbPCT&7>J88OKewd!MvfYJQpJqid z5Xdw0lWmtgJ%1z(;%=6ujI6Np$aKzThIlo#_ZF**Bk~h+#q`AiAvljZ7)N_aQ;9A* zsSXv?u39gEg?dUv-#wcJ zc+w*6ZB4hOi9?hp2*;`pKC>5i1OjCGo)tS8{`NdL_bo(*XiJNXNq_xF2*hYWs`mxm-yA~Rv1$e$DNv+OI1o%I>NBb)Sz4IsEeb>6TcbVu z+$8GHpQKOFqYexFCD-Ac4_{O|2&!x0TDf9CM(_~1`w1urtx|^+UIavCqdt^}Cz_X4 zh+pU(l!kMvKb;gHR%>H2GI-{aPt{kR@3}Jan7{>>KL}a%=$wVJj>HH6D6?!~S?i$3F@H!OLHzQ`t9KDv8LeeArk*8H}i< zmB1%@qO9(x3|cDigZ$|RkA!ftbm|_vFyGNfZ23=YAtk~>X6zUOZ5a4U#t;~s84DXL z)#gtHRV2hhSuNZQDq=uYmB~(w+rSVPgR#ZB^p`U$+0T5gYY3tFG~n!6s_XqwZj98dpJIHD2G=tp4(` za~%#!V28Y`2^^;LRJLoGGg;eqn&gl~#}sg>q{qmM2rA*5+YQ8I*;NJ8oc^)f4FKb& ztED;D#K>ilg77-qx!87r80FU19FngClqaW6t!R@-`TqH~`Ta+ zQXRe?=TAg-kzs+*Pa(VTG2z9oM?ML6KkX-&3Wo09G8Be7#N|GvaTJ@=xo=pzh-y0|X$0;++R>-md zm{-VOwgTAgRuzJ0{s${D>Df1cUr#4~??AqE9ZiJsuJq5nXOhcS`>1W>MQ|^KCPE{d zI?LvtrqRp_DuU>p7resv~iPJQ_ zIQAhxYlpyAlcx6-9S7gv>6&qv7wZOThCtmOt0)HulV(q`8){@MA%CzdWA=e>eOG!e zjgs3{doH?8`>eRp4e&}5=NGzn+{?o*;&{o$+-_aRiVgSSr8B14!$?%Cv4Ui<7@jmH zXxti&KgQ*TWQ4J>C}mK7Qf1$T?h~j=1=KaWS}=MvnX63YmkDwzCGutQM49bfHn-d# zl(aA)qbe;G6B+hq7zBiS9c&_KbDh2&)(SIE%3{9L6&4jnfAf)Y&U7)eMNm`C?hYjE zhF)Ww;~ml8?|wHdsWurmj+bZ+^=&@!d(RJ#<6L4|-H}rto)aLlQl_mI>*a zD)4>gB<%0>&yJe3N3@DiW<%aS-mtcsSt#o^{`h<8T3-M6aFWx&2`%7bB8UpvIK=wN zgS^lJK)4^_k4VJyXgmKEBQ$7j!``N;wU5SUV_^~=p^6>cLn7&byshgD^3vU~%BrW_ z5iVG@-bf`Av8wPuB@Ico3JN1IC&h9}2#!n1N_3E$b2zQc7x7U9UAC?ux)5(p@gi(Y z%k6_2nXtS$)2oQ`!KQI`w%}IJ5HpXYq?7^9GW#vbSY$OPOkQzcX^*WvN0m>ep&y@+9{1# zSJ>u6i6Xx;%E3?DWJ}Rn*#gD&C|g4rLa4LX*yk%&*(H^BL~pTV$H1~5g?fg(kd~We ziKbrzblkm<;HkLaX$Y32?Z|RO$K%im7`_ku&1rt-6^TZVwEYOwDv;N#0jzNT+-(cY zVf-_-FZ`C8=#hQyL`9>MdfWPX`X`8B%T-oobQAJ^sbD|z=_0xP1!byZHQLRauDBvx z2dcSgAwX%5aa$WJ!%p3Fo(!vAY&*z6pK;bOv_L*6=8?e$YDRyL*ow+u=Di3FpHmg{{A&Mnz*JY=b7bPafs6t=2yOBchaL-4Ex7^TykE(^Hn}D zXcpE?@E(Ha>^Ai@t;4HNTm&<|gKS#LAkx?P`P+1tfT%d}fnzvTl9)^;iS;*$?(r9IWHn)VV=2cZrBC;tq; z1*s&eJtT%c_wy^KXKLAclc(QEE@h~u{&JuX&|lgR2Zaa(*1mAJlA{}CU#%%HnfBt$ z4+#ysEJC*ABH!j73+v~9E?s6u4#F3~ip25g&9#!<=%%gXEKTFt>yC}Q**J+pp+|cx z%$qEu+sdGXG4MC(|M&!B!;KdeGApeU3>^e8Dqu&PYtYJ<_C842&?eka~WC7Jd3|&)2>u* z)QJsjX7y7*^O{lF;tELR6n(a}-#=bmL6VY{+#v3vzVp~e<+)~~B|QOwo6hwm*AN%X zKd()BT{9JJ-@=8Ut1UNZUlETBGX8dQU2d1+r33MCY|q<(N^R}k=KL`zxon~hiDFIV zf3P=PBtfvCm}=|g>B&eU6cSLd=bEY(rEY&p%Stf5uwA1Rl9f-MiK`=vAB=rEx~er= zcbiP%clAbf8Gz6bg^**&H9u~xx6MM!hbZ@ipqSrae6sL|p0>NTcr}#nNN?L03%UD- zrN>7LHlgv1{>`T43|**0HLozH&-dF_LBfpdegL6Ik!XfXc|RQ1plCx_#%ltn>SRsc zeHtt2a{0ne_ea?o7nuokc1T9#zF#ty#HmN|Z6h))%LQfyLR(6j4xv?oi}Zz{EBeCh z^ajNspdI;dW&58IjI_wqy3PQS)^p#AO3maIIF2HPhKV4AyW5?;IjAXXHLLblTly~~ zU;5IlOhJI#viZ;T_zhU$iUa$f5X8gT(jX`aU5XBzEO1|!%*YhG(?C1~5voq`x6S$G z@n*#f?v3evloi8dZT;sR*iRuJcr^6Jw-2VHch#K6Akez%+ET(MQy89(C1s)~++r0# zl|?YOt+>FOqPN)#11cNYliWkCJDx_Uao3q;4W@3B-qqjxXnFT#wF9UVJy&O5dAgKz%P8AEW5Q(ZU`mV83>^9n= z4fZ50AA$5?#SWobj|ZdFUA*f_9Du7%$S`7^K65&C3Ro4Pq=w>KXvn<Ey&)Q~&S*Gn+?{$OhAWN`&BVuvs1nw8KDngt7n7WXvXeWVJcW zGx%s9P?TDu?Ft$%jaQ|ErFZ(rYt00PI=w^%)Ash0m=@Vf*}C$e711PK0ZVbxsiECY zbZ)}ro_(tQr~ssgmaPI>dj?Uu+*J}ju~Cn(t1b3NCgsi0eMv1s!A?7)|5DYj*-R?? zX8jy(Y-4=!i!j2#&655T52Q4dsd=kCTLjjO_=XZ50LtO^n=eN+&aA+5-N(qjcXzcR zO^1mh>?YJq{2V^93o<^aNBJt1ypIDO^`I);&n^z|`IvP1Lari=T9>hA14&xwnDJh| zIkV@gBTa+AydET-#OFZkY$}A5`2b+XObCsmJQLqVmH)=%l$lhzEMUC_JjK9#A2)#LXp z22xPK7@5+raY&8sZnEF~_E_rI&WC|;xmJLb7>nI+#OxrD5hi)8kH6ESFUUu$$ch8G zwqs&lg_`6GZBy1TJb&0_=9ev8d&ix)0O`!2hA^{AuJ*F}CgUWc|@H|8*@Bv@db-0R_(u|b=cHa8% z|L-OyO_J6lx5ss9-+*gg7Ss#8(QDKdP#&#P*%9g1SQ!6@8Hf{5Y6!5D8xCmwyb zadoi>xv62T_j^q-^#ICbypUZmiTa?8vw zo{i&G8ch#oQ3G*0eNForgIe6}-~urM`igqT4sDQv`I4F zKW$p8L?hzqZsS%zipS6-bWNg%J-*jvkbB+Ac#F=_Kc*T;u#dCy*e{3>s5ZCb5NDel zfKJXysp|cE#czzP|KCcV{H22d)>Z#hKEUEUOs6eLfibW7+B)l)B9$6q_G`g@bBQHj z?D_eCgU8(g;BP#G^S`TE&9qLzj+l``K^KIqKz>iqDbrII>JSBPc@7}zvmd#`#!Yub zw6B6$kn)=RUr25S9AYsZUQ%8SD*%V^P>neb;?T;h*Yxn^xx#K17oJ2`IU5S#Tv~rm zb-d(hdw=qUw7HA3{Jp7lil{V`J&D5SRln712qdn+uC@O$VZT#i};U=K;go*X*+9|^yuR4PhvEx zg)!=K4dvz{w`^WFv?!@6r^DoOpL9&72eL{S8Z!|8$xt+RjDdP1d~QY8fFGkMlS$Tn z?Nwy zIzb6RPGkj!+(ODdj(E?_ZbN@wO{DR$@R*PceO?+)+AXfImApaUUdq#QZwJMZv=*-m zI?7?SJUrev**o%EEJnN=_Wa2FCpv23#9iS7iGyjeEDs7^sCz+|vC2@u0-%BcIwuu7 z++%CE7=4xt5d<8NjU z%>!LyzK!*RcdCCPF2FCtznx0p3gBIx1lx_-a7KtBCBKe~FA60X+->eHugoQv=?n!Z zpUyf6HIN%t<(|j={uT{^RB*Zc_r9czjVPgFf3oj5L!)PhVGbj_)POt|o2`C$2_=b= z9>7U>x%*NbB>}>d^>{@LlD=-|;6U16nB?Q1d^F*q^L($B_Kt_jXH0lof7hBLw2~xi zzSlct&=<`9m)^4bec#f#*%CM)@uGO47O#()pox_xXR+Jpswmu^ zkrvE4OmMoj2blktxMZ(VP1@InG6$(^T}T11C~I1WsE|i5sdt|ln#={kp7399ssQ-M zn_>#7Z%}>g)VG}RJTqW{uSmv2UEfXRFl|1Yr)*XhIRQx41D|K z9PVq+5xjyDj7;G0KEj@R90Vemj!F#uz;;GVMDX4u$!3E~WFHk5_6h>(?4Y@_vji&D z5FDKrI!r|eD_q;Xksq)Rf!sO0V}B03qMrU^$@HC(?g@5 zc8apts>uF4U;a?mg7AqL5WVU)A)0)%GGb#)FwrE<4WM()=~{JcLPERo19Ja_Nj61Cc|~;%?9tCFpF0q~br>SdtD}N7Y0MN^2~|Tp5ysHH40-e-sOd$bBM1=BV{=D1p_2-&33VnIhcR6`f`ffs#Mwo zMq$Tt-}}DxVpUJjT*C%*T4dT{{~k{ux^Y>$pss%N6tLv+jZ91aYC3-7ilbLAmF_#{ zlP@E;3q@&MB1BuC$nz)kDJW$XxCxGP^Q{Vkx;pL3j?@_j_!p{5kvzbs;w?NsMtGj$ z>HDM2(EBEe?X|5CNaF+gqI_|r*o*F(w)Uxnk6`;pug)M132si#R;NCOH7{Xl{d%=| zqJ3bbqy|G!nK`ODyakn*?LxIlVx#jDSs5k?>$xE+K1s8%ZP*33q4OY-dgci}vUf`f zi!o58(FcZWSDV9k3buLgNf}5HN$q!UwNEw!$K&R~!=$BFe!(?QG|?2%lb+`d8Y4;< zY74#Mla-RorIT1Q0p(mie*Y6kTTStFJUbU`#84X)2xc2$K~@ECk^7l}2?fx)zQw4z z)hyPi%a_YsqpUxDvVsMU1-m(;FpuB09E#(e)$C$lQChH}zaa z(XJp&eRu}hvzh*oYWz<2MNpn3h*nI43eoGdp$g0w4=L4@7j^bV|^$7bmiC=2R2dOZ3|Qt%?j$;Kx5C@K6w2BY~?bJ(-9b^!<5Y_I>nG;~PkP7>B8RVdF0vJO2%U@HMkN^fi<#6!uD{R&^l0 zcH$)R_FYH42hgKwnt2=!)AgHpl}YwwCsz0TX+9y$fEgt#t+jz|>C4fRZ;0dGGgS=W zyT}%&I`l->#VALePw5j>(qSM!1YCU>d$m|GZKsMbzz-#2R>{R?ID~q#!>}lIQ)lYh zdwMrB{7!H?A7Px3=n9$$W6>gO>?HGiwtSz-6Xj+cU8LLbavsB@@RmO!a+lZt_lfU3 zOb-g3Yjbyzm|_9F{Tcr8BL?aH{=3f7j1Xz`sa>Vowq7+|frYgm@I^opedL}Nu`T51 zV)`}pxJr<&HcNmWH66?lZfccTgpJEBnAxa2;6^`&Q9_x|YRG-CV%sLaMh@~mdOo|G zoY=sT$&22n8gbWgg*c5@{X3+PS7usM5zCaTD$^U7QPG$A>$g-<7gPl=QTmB%Lv=te z_j9lvTS>+0gN2Gr$bDdW8X2v&P5@EIb<6IN&r-LsO+bAKgEgw zQl+2&WvB0~L&Uggd%myd)+c51-gEoA5;h>zROyzDpvVSG-S_E`JcV&n?Tq(g4bOw0m<#lX>0T z<$)^QZZrz~?OB3!zT%73Q4^m?g-2U$Pp-ZVIX`V;xV*$1bhgB3y@3QU9f3CUCRFPT z4Y4DO&;Z$g6doJTY|?%?lz?EYlzkZE^l`;vkHAXKS;33)Z+_%(#ei0_Z zt+BTd=W>|YEDsk!cL8i^AJl1BvzoK?K2*3H1$$#F#bV>LFc=0iADkV}z_HRBFqY}r zZ0d?T1QV-0tBD?ET&%r-OW-M7%-Ij*X1asSV%6L&jN{8YAO1%|LWXTs=(EXk9s8ykodu7iCICOAL}2R zT&Q{w-WyRm7=}pr$>UOFlNuvG!uwcm=AJ$?D;89RRQ(v zI(yqTD;=-kUma-A04-~FAmA?NnsUO{C0pUdD_08QInDn~yO9*iOvIz24Xre zS;zDQOW?gZjetEShC}Ie{pL8S?A9b!J9AN*D`$zTDcPV z*agT|Tv1QyL_yK^Z4ebA5m62pf5aitQzEEMESetdnBF0RKM#z*X>+k}8Lp^++);_oR%zL=S~Gur`Yy zfl9CKOhpGWlqC&QS zGMQDx8{#+;#h)$<#OcFfSd%xHnpre0`UDDt0h2trKxjXQOC+}6>zm>4I4GzQiOby!`_pGtr zAtJ25T}&A|*d%CdlYm4)-k;LUb#s6N$+Tx_4km+}yJUp%(~Mn9vzv4uT}GcL>OX+_ z>Dpg)KLSzg)^Mi{&$U*BD+n8x*NsM(XK=7JQ$;Ng>akzj0QS5@EgV zrtrbFO>!Ec=`D+T;9HZ9M3+^b_%DPMMicK*fXy*ZyX>8Cn((BJb>0LHc#kZa&X1)u zqwlD6h}d%qK7!?p82is5?DVTvJ!CF&Hk| z0uHI&^}oR*N!Jne=3v3*s6eyww`~>!Diw*`7b36c#e>UNoL($~bg`=>xEh1G_``iv zWh~oEpDh)+tXCiFn@uF(gxaZHwm-86cS;*bHsGpO`X;&QE!0qKvy#EZ=9h4%mddzh zc_NFl@D1Fsx26iIi&C~*NhNo)vEs8hjMh$1u`R^IX9RTcQY)Dd`IQHOY*Av_%uBsl zZe(-skk7g;wjhL{Y~H^Q2Msr;oOe_>lZiAiS#AKz&oLBlBNihS4rON-FdU}Zno}c; z{KSCB*jNj+iFquh_jn6qhnSiHw;)1BXUYBW!LZzxFEqzU`}B*2UT@Es+9@YUp^IrD zgW6R1yMV7n@#J~Uz3~4mT5fz=Y1&b!dWV{-{I<4{Yx+~*5>qGfOq6Mqs55;t|!C_$~?uCEby^1utNC5vkDL@T4o2}kDk_WvnDcwMCQdL1jLK+ z$4$Zg$83NGSJEG813tuS%#|v=!aPnb{L&g_b|Vzs`;<%AVDsweL8FAcI1k!OPu!kA zN)qRi`sW;EwnWB|8~R0{GI~OC zRkZP5k5X5Ld_RPbb|UgRJ;TF2a9`^pTidw|0T2_!&>gu;`eBlTZIOBZ5HrfNukv2qL z)9s9nww9j>$QgU6=#A&lO(BCr9-rfu+7Q)!X4`iPAF3F6L6Yqv-Ec+T)Ts9+G7hDIFz3k?n&67~zFvpB&l1 zv#Gf!=uW$(>;w%y0WExcve043Efj2D#ta3Z!Y*(xjhEE90!?sS1d!b9D~(TFhv{KP zYxFOpB0N&3IiL*G+4T85I*p!uJue2?(lgX--dj8TX0Za&Q6(bewo$TF-Z=tu`BS%g z`;)1<^`0YFx7o!*r`19PNl!01$|&Y@B*nZ1D?4vcEG84mxOIegs^5$lv^C2DQGz?+ zt4P%>Ws1;aLIbzul$WZybI#g>2O7&8tJ+gj`gFip2o&+s6S5U7&bx*g!Yx~Pu*a>%~1Ed+seFgF! z4SzFtd4~ou1 z&9;by*l9OfVg-sRq%V4<#ix5%`An;*f4Z$y6pr5bQ|imZm*ILegV-0B_76Rb4UT&~ zx^B-*<$wmB)(btAKys?h?JT{9=qk8hHo-z6sEt^!1mhG$zuwM2qsDZ|#}|VSx4BYk zC754}BRXT1m_!O-fn!~y-7D9A!^~XRhz++gmPC;|Wjbf2y4%i9@?*2u4qUQ%_>`T3 zwLd6lkES`a56h)@+$NA1$z$WqR;;*&cS?UxGDhUxXqQCq1_rOnuv)J(c^`cgUNZP} zM7O$;+tcl~kG`&LIH=*Q)BW7u#01_CW0|ct(y4LeEHxSF@~p)ZAJq)9dDLD-#e8@{`v{lyhrR)EcNzlay(Ek_5vfhU9er_#*@!fi7~LXKe)jOV1kQ8fU!-{Z zO$RJ@mEe-2L~AU_SFKjwa1x_>%}Th%v6&suQ)Xao1IF3rqvbKF z50@1cw*5MzE0bXaj$_E&^suv}3(xsL=^~9)!ygC>72GJqEWZEha|-C_t3io>K?lR? zGOcpj>8foXTyS6CwKu?BIAYKc&r;|=c)nP<_w^d{e%8|!;R}dl?F5 z91vf#<#N8UEd@&lyY-@)^1>;*iQ)vs-v9JlsrBSV0>zv;!0qf;$pwa~T2!=rt7EfV z-ell2Oqi+%by5k%dPDl^kg(t8{!rrX4u-aloXjxcu{PZo@Vo|zbzpOl!jX?zB|_*_ zU2~rFRohOLbhR8ahdiMYQ&Jbk2?Zyn|fthn})W zyVnSs)f!QL^$>OuRy2HK4VCxQrJH?gx1t_VZ*K$vJkRHA8pG&DhFnVwCb!`z*TXz0 zxVM8z4|Lz0yPtPw?_hn@hE%zalS8pheggJhVAq6>EkB<26@@2H7@?8jj{?sS(*dTJ zR-)iQOjPWGZcIkJzIB7P2p!GCk{dB3YZVwB`~_(^dvJA?s{>~YQg^z6ynLG~40Qp< z33fjU*5ZN?eApX%&8<&QwHL;bRsyEOJ%T#)sm&@kGpHpb?fnJ^dGbqK^uGrc&6l31R0NokqW8GuYoAv3XM(JAZ)6{#a? zmM*JkBF-v2aTgS;_h5j^_t9KG6$H*~D;gg^GwV42%el1-DyEsrTwgszd4?;-0& z+%P!?yF*>)FP>Z&J@t~VU%u2Mhz6@r$?q5OB0GnH+ z9YL$)=$h7W;w^!v(+(=KK^7 z0UEQmqs*8`cW_wdR(>Xxhsf9zM2|fg!q-dMh{)@l^L`sAJu(I@|G2_lnWs5Z`ac=S zgFQAb4p=p`TS*4 z7atEAEeL^(v#6` z*&j!7rH7zTW`sMCtb|JOhTn_z;AgAJ*s<-Vl+t(X*S%^xaO$T%rrxTbh{8qI?a`uM zZkC{yYiFn*oR3FEuY`HU0+_UqFUp2n7|)i%JzGd8{&2%Ccau@EEkvgiQtmgdHEUR- zXfhcUPe$*WXGr~7u?l4$4#Vkpm#f3x;}w?h8#_iVHzDN9;{g=h(pbyQe*dLI2U7Am(NV?_n=(n|NO$lRN z?0)_}s1RYMiW9+9{MhL9d%Wst24pa5*#2e|#ysyAIb-KB=WepuCVh9*7j~75OBSm` z8hzTrTKtuqkkEOMm!a=CltE4Kr-+;82pAq}&mT-&AiRveBrTlC$aG^KSLqM(^%fvo zl{38x4md1u`XO{JzX~r!MkPalnRh;_Q)9P`8v_u0myvStY+$?$P>+fMhG%heu2YTC zRDIe$2=WDa|G~Co^u0dU`<924t!M`qD}eu&OULRMofDCRuM#Wg;mq^B64=GP$0#1i zT#0vt-pde$XxG)eT08|xM1aSV)Tvy=)V-$^$o60+x|H}^Ax);$!V-v(Iv~d5fQ@sF z{#6|M9kk>g$2hQEJd8U#{h~~z&H{1-YupQsK7xYY`E0LHV5lmZxHpnvkI!G6Y!61BncSAn44T0AVj@On=?7rq!%X`9V`g0-FPV1VM4R6~RQwpHWM?C1WXQ-#2sm z^*D7&2_rJOX0iO$yE|7dXST|bkV9cOTd3*3fCXO8N(t=#XKGXu1J9M0hl9yoSrDw5 z3~eAL-#sA{Jt4Y*!s$a48`=kW-_SlDaR0utuF`H%5XAk$+yR8&vmhufXTgF5k3g7w zPa!45S4p_9!OJECUl63f<2~h8Q1&#nQfQtZbV3*`OBFdD*r&Cf&C&xJmucv)sVzzp z^@1GY53l~VgR6u}*%d&wf%H%Vg7Bz#PWycFWA(MQodZQLyz*E|-`D<>HgU~OC8fIj_3~rZ77huL3Q4Nu0d+hSO%b`}0 zRmdDI+|r=7_U^eq=ALq<0lM6^G0Bjle85BVUSfa3&XAO_As5>mWFT+#x!pUwlGATd z$u|{kp6R>a?$3^QN*IFP@s4Mq)w?7U-YH1+AxXoc76+ED8%cQ@%duWaJ# zFmQ-ZjSjt`x-TP**fIJIR(_$-IvV8R zvB$C=mmfOUb@A|mby<^w2z;yWE&wGhlj7{ff zArAKxSn=sd;l{m}!lpF+_gC^+!g%$k)tE9QZ`UbeG! z6?mnJCs!Rv>7f6|49;0wk;WRGYhB+I(&P9@6Tz zng({1bDrT}1Jz8f$H7;j>Aw)piN5M8&V7`x5oQm22OJ>;9(f+nBh;L@A0BnQpI<-& z2-}^MkKO%P1y|$?9llPa-m5%PGt72*vtqR-We+22giW?S3CFHRc;DF0*{U>ROm+ow zD2Vjkn{#`ppS8&E>m>Nm5IB1Ah(7CZow8f^AhSaCb)uX~#=UW)FFiR&RuEk`&<#A_ z9f9F!^57r8?8|;fZ6*eL%}r2LM+CSD4iNYXBbB=BEiDhp407p*PIr{louc44Z{gQ} zcPfYTIT8|3s&)ax?vw;&B-for^gwtJox~>;+0qER%Ysz&9XjRSsCg0$DGrD0e2Un+Tp&gb5B=ZWAj$y)P z1qh&xIOuHTOHPTG1;<}qTc)D(eXUz?o?fbulu*GFyQMeUWmNomx`;FrpRXFK`hO@) zC(Y^&H5e-@lkB%xAdAe^WzRnu^Kx}5Y8ByFkg=d~$FsYgEF8d4CTMOx8 z8Y|>;maQ)`wjCQ59uoPa`EoJ^DU5gYHN^Jg5bx-U zR)UV3ZYeV>JVB{pZ=(neiTg8JC;EJMMnH;6}*)Zposgvb7qcl+57O>8914*VV< zjvKAtYSBY7yzzI@V(1LodyU`hJ8Uw#*BjNd-~?CFtZk zJ2)VeRID;A+TQMq};Y>?>CZ4atT(SoucbzP-z|n-{ejS zY^!KP;HsKIi-LL^6Gf@*R8BD1A>H@_0gcn73p!RnjpRPkmv-|FHi zmOAkbi0E!HfjPZ4VOU_L&A^b-V z@?*VXY{R(3t;o_`He`?^EQGIgJK0QKR(L+D&DE*h5p8E7XW;%k6{*+x8EABWb=%b+ zNby5B_vD)|Y2bu4*GRB0us|Elj7GVdxPS-ow@#Z*jXYCj<79q<=j+?P37KGkzx01$ zIMZFf(O{&^=JX#|n z8VWNiYH?RKYyTeTzlAH$7Oa~~H}g)9A^p|HGckrWW`47BOlyj;UofzMgoMTcVvQZo;!Ey@+pRO|8js}_kd741=x@AuTHe#qOCXMyIr ze6T|WR#^A0zNpD33k4J}LMZ6kso09Tm^yK1*-}Sh8~z(0H8628wh19~yz3$5i{*97 z%icmZe!mZt7^DNpTg}&bEmk6ge+r0G*YIP8zo{VXAC#P*0)OawwbEyJA7|v@&gSZX zxhg5ffOEP#U-j!Cu51P={jcVqswGaYJ(jeevn30>Ak_#j)&myx{dZo)uhOJ(m3ixj zz-^1`Vqj;0(LKk^@zkKWJ9Y?!GSD$TF|>umL-bpqn5!#Z!VY_zxpsImSq_?99|O4MiT`!wMx_U*zKEKlGta z)(9C7$NlZKf{tCLn!SPW?RoXA-|};XwQ0K7;Hb=B{7A`-3hzkmcPKhC6F8}j!^py< zq-(*UREiXlQndVG9)s-Islrw^`n>FOUodoM)WwDgwyp(HnVOBK7b?pGJ z4@*H|#P%-z?gqQWcSgLi^`R9+B2RpS{8TZAi}V!kh+5_vX^mtW9wQ`Jz0{2Th>3Z& z2KBIcHYH;((R7U1B}VR(0u*jgT|gdF_0{4@f@Pcum7PNG|jU|23E+yLAotW~X5C&?8Xs`VJ%{tY`a0_?9b~DJ1XT)aCn=!eNeiN_uc_Yn@ zfWeK-eu0y;#=eOJr05)A`9_{Y{=8M$Y_h)U1Gt~u*QN$Fo=Paunn?NefWAUn`h_kRR99`yvu0;b8*!}7_4Q-$CsLC;Jk=|O3q(e#C6NA9$PeI?+R;$IN{?U4 z)@0|hpXG6Oyk55Jrmqjm~`(k&*jXH*E|g*=R32cp8r zI>`8%>pQXSy%c(41EE{>!nW~0AoBQ)mu&${n+&xc;KwtNJgShdYD3UUl`-%|G;EMD z;({99Z*0- z9A80A&pA|qLb993$^hj~qUkN|5hRF&fc+6vqOfQp#>ZaR89n$Agi`L|2k9AV-jsYl z@c|BXBnOtTcR4AGo$g^`TrXI34YeG6YOrNpg0(37zaqQikyV%G0BPB7GVnJyp*Bm& zgCwp%C(|Xum<6esLl4Zk>&C7trx5c)rVw;~aB1ug4;*NKawXaAk}}SKx{|`A-yvBV zHx^~~OyF1_;Vii86y9`Mh?9Gn*jDS5*|I2F-tv8YYF9VE{WMc7%gw5zX$gO= z6Z+0S>f_wm&;zy!-kxG4_y&Y&Gr z3Dw^3^fJZ!3S6SLr~G#F)?Rxx*=c3oE!qP*NX{oGcQ)?~hO({jKcf~_fgo1RWlZM8 zgW?n8HIychTiHQ~!mXQOnXH6WXGDSuA5J5VLX2h6aSNAPwVCYdLDCdD#rHK-rNU9Q z^h%8X$RyZZe+M$AQrA)@(d1hc!dNGd&Lyd^ZDNWfN)kBJ@iI~0QAPdO{^mS_(e;`n6Lr!?F-hibd$0gK_= z9dfi^dr)rGZMty$!r)$THD?t=HB|*^P$Bin*}jT*yrtjj=2G9t{q&U6=HT)oxmT?rGqmB{I1(p|IcoaiJUM?2r*@T_8n~1^aHI}v ze)a#pfaP4fqz5WlspQiRsV;Y*wpxK4IB|s(ps#qZv^H3UrviZdY?s)hBPkBw%e%O; zF}2{D0?OX`I=u(}`Pbs`HBD&opew^d}Rp0Oe*fI_L99PM^)92$7U`4gkf1E~y%ge(ob z2&k^NNht1vc-H<^M@&RkeeT=6+vc%uU6H~TDe_sSLbqyxvsH%CnKh#macr`SalEY95Z!NHz$nxwR36{vNVrN? z92O-Im_lC^8jg-M{1_Q247x;^yab9R6Dp1297T9QG#LUry262)<&vD#{B!fSoh`5Q z<&JQ^l1l50tv7HI%-Z*NIF_m`Au1?IIA~Uv6jIl}rs!b1Qz26Wp$$Gtec|On4ON8t zn7gpL0w#`&>m2jF-%uix7I_}5KKo9NNmC0^CVUoU_cpP8{8jW>e`McADw_SBCQ~C~ z#9+{y_t8D**u?>uzVf8o7&-pt4`^kB6RCI(UE3FQGC|$lKt|RYSNFp^S)gdlOSD>G zH=Av&M3F1!{+Qstdalya^GeTl`Af=Qbfj||2Q=5dF~5-K^v%?OaESXFm(1A$HVQtCQgzD1*t#A%OgV zkQVz{GOwKM=hP!gnAuTjv-Q1R#kKo z@59*~dI;R!upxC*>aM zW%H{jn@$u(-HyKcTjA;Q9S1R1h>VRrw3A$D?!L~3+Ci=VfaHL6-T!PNOQ6CrDBc9M zT#(vjleTX~42~8$H_kgXEN#|yVF_##Pore_$)6Ey;vBwo!(3+?PY)BQxUF@p;f$Gw z#VPnd%E359)77Wu|sD{ z(e?EtTZMHZ9$}=*t55U*ZG7=VdCZ1EV8Rv9V!FOYM7hy_C7f?mjnnSTm&LESiPq>`bgP zPU)#}NoEtXx&n*D!o4vol_KP(OCY+mo?X){Rey)Y4)1*Elv!m>6E}I5D(DqnK=#c}rR%nS<~F3A(zK+KXVQ}UoM^yd@fvxVZRmnw1wM>s6(AWJ}Uz{u5&_ZKmF65X^OLi9dna5~%os)~l(xEaeoB#k5{a4#=t zi@xGPPf^OI;XalYcSsKlSnP`(^a6UBfht`IpghtaY{g=0T^D>z_>6Fa0#D#ur>HNg zeq+i!WZXJ5f@=Ro)qg0lj}t}H3!nvM!a^M=-X+6RKDb^$ZjNoICiutAlJ`o@Q9Sx8 zpO%8V-LYiPamE>Nt|Z8^`AkUcbF+DOf?bk+yy8u3B7C8}LCI&H|9Xkrrx%LMIUyUr z#}gI-)hwM6-U+D;-CG)TcKk?WqID_oZ%xDZDpQr&%S=PQ^tA>tm7Ru~V)HF}`Lh@T z2kiMrgOx&e!7~hv|A;k`jSUggrp2Hb!W$cE{=0cB8V9+GBhonU@q`x6pcUr)H{eiz z=1=mXax+D6hA{7|=Xb&&s1G+2`fey)bC`&h0hb8QcGp#L089W&Nkxzp@9wQH;dcG1 z8y$Z9>F|->(u2lH`V}S84#)A2r!8sC;|WprpqcvAbP-5)%RbGZE-mw!zz|aIEdYXS&o8+a)SF$#o~3&)W@q=f z;Xh|)2m}$`VHTSlGWwZvNJa+exVa7g9Boyt)?0rkn7o-(&Q0mfTQy*{(eoENziKJ9 z*6&Ua6B(ke{n6*=48Ql5QP#^hQZHcyN$5vwj$>S`hU|pnV{Pigy*Cfco?<%k;4oEA z;5p30CsIcnSBwsu)7WAOzcIH1Ti-b-f?GBth`V6}q$v6f#sV{?T*ag=CtY1kaYSse z+JT{An(6mz?Rz&|{0t5j3%^iQKn(6rt8Q5B$6KAN*J>ticJFKqZ}z%;-0rey9aiNS z)Z($xmU*Dq#nv)FbKLi%{tzewWQVz+q28&3D8H6s=@j$Me*4P5V}a&iD)t?{E#khi zT%Lq*eYmygmXu8to9@!!Gb+sKas z431esh}kGNZj81)BeTTX_jo+{qU ze=%d&6_^1L3(kFzCU6wXRj@rw@oj2k^2cV~pxP{FGA~y$_Sb+9+V~Luf|3e@{zgHM zT9R!+$D)9I-{MCio$#t#WTi`9-=S2~ge|DyWvFlqv_Ua9e1SkgBgI~-@KTv5F@b8O z2cZh;&o%6Zhju6!RsGC+PhbNEJ&}m*=up=ly23cn{{pgyEfI3)^g`7Act+xK6%~H4 zbgDD(C4tOeMrZRUTQ{y8&D6$g*X#^nuDn#qekGv(bMb@aOTJc>t9z+AdtxRhu*m(% zIq``Q6$MaKUrFL)3@UIp(6-p<&Wmtx0tQl)7^8)aCfwPQhxDZb{2XteAo6C!~}W`QKR6Qo;--< zliCs2+}bZ?R$G3RRd&adR_&7Pu#0*F+`N-R7B#ZXC-@DCq5AaUXOD=4K1FQqj-n$q?W!e#gnPa{x z;CmX`uS*%uQI~IKV*S*?JjCpFO-NaP#KZ6;6PP=Jb6DDiVN$-DnFhz%&J65Iiw54xJJ1TnTWr=kTq6AzXWEeu38%C7XIOQ&( z-9f&t+Rn!ShM+J}BB=DHLK*ZpNN^A48IQ(DU-Nhyb*4H(@)!$!o4_$GTVx+4U}j$W zruJVkZ2LuhHU3<;)g5q2s5%Y994b(3>o-8IKi`xaY#8`m@(Z76obmBtR(lHj=$eL# z7_pGoA$Z(N6Tec`-5#GIFXM=m3WXc0JZQ&uR0-dS=+=#zg@sQ8AD-eH#8_ZykIjWE zSc;IZRWf%0Up%bBGNIugyQ9{yZln+@TLoo2l=SirCC>aKzpf4MB zZBOiji$^^Jgi(LA<*4lBt^pe8X_cGB`(OtzV2Qd|rVy&|e5jD})-T};5EJ}ev3BY_ zaV0n7tYRAW@gmSF|E^egyto9jT(I&KS_#o6kmdhnA?ksf--FUD!9%13u)=sc0p_;AuZc+{kL3nr zDa3MRab8oGcbVDoK#iu;_E~Tp;JH&EVUbP+lylKLh?vq^SsODO|MW->fKlTCfA$q7 zzP$TU?-=PJ%E@RZRK0z*wPAyul+3u>@@UkHQ8-l=*}Pep>_HTw%%4l2FwbkVdVSM} zdB@*ky=z^9aLOJwOQWk5FL1<)cY|>#`Y?dY^A{PITSO??T3!m`k5qK)ETJNT?DFoL zz!x^n`mMcbv+Lv2P_|pg(rt=FYE{M(c+PLx0by*~{t{XqO?-nER*?`Q6j3KPgWa_Q zCfZ%m@zA#*v<>KlikohT>FP0)1jJEkCn1<-Tx&c4?O@j9pfV06VtSpO2U80u5{0!=~yffo=Kp}ItAm;H=#el zSYN{v!Gyu0Cb31kOv&|*u;Proz6Cp(-$rCp?T38YZi^#qnJifwd8>PHClCv`F z)_QOkkE{Y!Kv)ANTH8_6&V?(He1Lk7s>-&4^{P%jx=S?y+1Shts?$w{ZX{I zJBnom|GyN?6akiET!jVglDmC~$_V6*UbbEVo!A!^JD}aSs!RY18Ohss&INAFjzmBk zDmBxaT6$u&HsefQdmvv3Vs>z2qdw%KH1`j(w(tnV>sW(t&>|r+n{JgQ3I7QfByFf) zkL))}IPmqHNA6pSxjwCO)XpSz$_>Z2h2@LEGH%I-$Ah%_{A_3~`ubRYuBNeP9i6KO zy|i_T4gPW0tu(#~*jAqnatG*X$hYWW-^1cTWK#E~^jVDhD*Gv#Uj40FkCl6 zUSl3H1)%7);Ms39-r>c+QrC(ycr*FXMUApc)^;QxmYnlIPR6Z>ZFw1IzrRnuC{|?h zVVtU3D(7+j0aqxTGbx+DpRP?vf zOF7+oCPN&a_fI-!>%~L#c|pgzS9EsH7w@ieiu8PHk@dyw4mOa3uz)MrnM`7qKs^c7@LF za@#9{k5|{XTLuF@;!Ws$dXA1Fh`FwUmD_e0p~W2%uEz$4yWC)9a5=|DU*IZT{`hg9 zZIR}6AEhws1;%oFv%W+>=CoS7-Zabz3}79JaZ_OQ5gnadT5Q9 zIiQ1Exe1A;C2W{vzcbAxP7|c?#dwk)V`2@kkwcgd zC7Yv*XILHu-Vqm&+QDRk4dOTumc3wmmKjK@8NfX8fc}yzS6_+@ZQxVBNEnY*wE-l2 zkIXAk0z_?7SB1&!IW{Zidr1lrurgFe`ig@Avk?DZq{zxh(dWt?HS7N8=*tGk+T3i4LVf3Zg%QIKii!te8Jo zq}*|uRpeG)WCco-Vpxx_S^s$;WtR;o=%L{;A)&Y;KRqh^%DjtojhW}%<5YQ__jEtpuoV(L#$Qd0gZm?0<{Z_ zL=1bJa}ZT^l5Y5}8yP^}6`rp-J8(^tKUd--x~umt;^03gKo(owMu6DsVz&JENm1E@ zTmmK#8-!UawFz05|Q|`&r5xwZW6OA=ByK|Ue(g)So zTYMOs=#7>P*1KCczpgudjbFEU$bS`864D1dO}&d<@G*~8s`}Y|&vv?+n>p$UWmyf@ z5mMjT+H!*yJBb@#*f(N4K1+`Di&Ub6C%OjUw9h6~8zxz8{dtLI!u8U|Z@f-^Sl%1p z!yzcRQ>4-B+Yfwr@#{hFM|k{LKLHp7*6CS)W2KpQjO+_DcoJvz`P3vEe2fz@>2OGN{Trx_t%`nAQuY*1dcy3mdY=?`8p(DwhKj#<3f{ z0S?AS$0)C1ZWSkaWXp1xVY{|2%zjq=NP;HsI!-(`HtES-U5A<{As0~51X4zrx((J< zA}5vrszgB#SmM&cq}11CTnr@KQ1QVB@iy&`Ye4?g#M9-9gs7>?b*e5nFFBMGI{qG2zFWpay> z!lP#7Fb1XN)}be!!_1|t!1B!8l9Yi_iUnc8H$mA=iIug(g7gnV+giQ!LaJcfzkMZ_ z@UQkzwG!Y%o`!dvwgK=$kf)sr(NyEj~yL5L2*y*LmM(ju@mPoA-4`<@+|c94wlPdsxcVA&$$vjijx&FT|( z(J-j8XlmfLZ)WRkQ|04=Mb;E%Smt`KpSNG*X6VOTo>5jbGaJI4h0GL^PZR5%EpWM7 z(n}h|sFl-Kt;C<)l5t`?N#5y)FWiUM#O@dAGCznH-bM5?I;tW~n;X$Ta}G9=?l`!{KRp$g^<`uYEK z@ohx6RwsmixDN3q3^~jJZitnfbnL)*o!_)$s}*eVc03zuli5bq_oYU`s?C)V=A+4@ zAbn@YV74npG?gPu`Zfaxtcbq8QB_{8TkRN+E!c{6v2`BA4^po|w zxx`nwQe&xMe&eW_=vcj9vG3c zpVjFrH&zjwKxuyUDfeoM+Hmv>&ozV)$BHAP2MsomTeY|br^{O$1ZvWgJa#uY!L=Ut zR@&9(h*IrQ9!H}nzs{5pQq_`1C*Fu(?iYR+wgTNPGXeZraACO|9)A>Up2?yf=W=|! z^e2!K>aFSUggcO@$D_wpN^4!$HKJft!K9i*f*CtVKizDEZ6NwS1+_MkBRhrh_xT zr|s9aP;`^n6(K>9fNWK-XZJU$pE{W%6AZRs9}tP)9iL~H;6bP`J1b?1~u% z7-Xj#what%+4iYvI`ZyphsparIm715+|L5)k=80OCPkZ9F;aY$>U}prS8!KM+MRNa zvA;0u>71lE=C*<-Kd-?yyM!)^L<7dPwWmn_eUDHF-}=m(Ef-J3lHP1O3`c1zzjAMG z!IhnCAq*5&?%`_?s-|^!Q$i3+&T}#!teMNZ*<}R?P_&YjCc??L#ssz+3M+9N-E|ND zlPa9GS@2pO0*J4juBR&v1xt09RO}i1boVhm*IrKUDZ?;OR_x zR)Y7(%Yuy3b?faEab%)Y{&?Q_T#Eh9s}_{Xie2jm&%Gu~4z!F)?!%?KAQJ=JVU!lr zy(#Iu33b4oB5sC&)yfmxFs>ySM7Rju`9(^Y2bv6FClnOuRP4#=YiOhjXkC6Xd;|Es z>(?(HJXS0ZbL<-oV=6wrp=Sn#G;x3I2|l7n95R|?#?+l&3kKCmU-kc1i1L08MrR{h zYzWc{h?{vn%bel2*Yip^Pf-BV)20F((icpwQN`5vhW)+OWqf&@l#7*{^3DA?7)s~g zA~6F?slBEe&kF>cl-&!!g0v93aRfC1*8qR>0!pV=;yQ_%CiD1GRGl~Ai5&GY{OwD+ zR~SxokOR)PoY1Lo`2notrkYav;JfJNCF>a_GIXCAP?fcV&h&#yDJDE-ZSX+aE;r%i zs^Jw1+`c9GDSWKslRP3YHAsU%cl6rW>}E0NkOi?zQlE+JPj7y8i8^&B zdXz3D*$-*;gmJ44S$Ir7LZOhhs6Nuk8wz%Pma*af)uNH09k^VGdMmHc_jhjAj|&bz zE`gydKDe>Ore&v7l_32+?xtAw1cHCXQH;3Y8`E-zg+`)K6-?z>X7*5obKt|udg=5Q9@NPu{LzRV%DBnDfyi0(Do-}mFqv= zzPr?C)mt1e^FcWK99raKQAatfV*J5tPrU#2!ThJF4JnDjdr6DD(lYCXzOKAIBEUW5 zE|FvVZCAB}`q=n|7w(a(8w5XfqDRKng^Gx&5?#F7bfyetMFch#-_;Cnyaav?IG{6_ zH83FDna-M83v$3#xwn#re9=%80?Z0G_EA0=b2->APrg)-83b-1?0=pDZUr-`?KC-b z+B7r)CKdQ3*g9fuL6qKjciu|N)1-w8-l|Ej$3l%&W!q&xXbPRbrg=f?`LNv}>&(0Y zIw_rZI_MSLw2RNdHdH;Jj6UQ*bXjITZ3Gjv6!N)v1hMXn61SKWFc#pAQvSC5RV;4c@pg= z#?EUaWds3g7Yd2oI_0_TK%>fcv{cA=2K%Bj7a7PaLp`k_zZ{q*Sc=DxASIllqafeZ zDi;TFjR@MezL}Qdjl}}3I8R}QKn#G?WKb`r)P4pmd`?G)B8&}M=wDHcX!-BbG#n#p$bs$R9PK|k6*J8!)H#z!J zd5(ArRQEEMfegvKP<00L(q>wQjBB|Th%0Q(ZSrGvt@BZVj^RzWlwLQ2e3;R93uwC; z)Dbv4)L!qfsS6rvC%$oC(jNcsN#D!pCp}mKGRaMv0ptdv83@MAO-%gnDVD(Xb$$O4 z6RpQb?Ok)K2>!Q;q(nSy;;<$i=Sg>RG{YsEPt%5spK9@W3z|8-Azz8dIu?PE(_QdS4>PkGYB zL9p){n3=70E4U_kUg6Ndo4Gm=njDDBm>NorS}I5{UQwu2SlV)dM5LddOC74P4jA?r z5I{H70F#9jNqzWmY%~xVYxfc;qF~(2G~o@t4x~)#Jucp_LP#*Dzj^N|(<~JLQq*lP z1T4U2RBcePi`>1u2#!IM_|fMc9a8WU60nXa{iWzM{dx?9_$M5dr-9@qZORY<07@_0~@boiNw{q zvNQ_7@-l=aML_TrBKYU2D}+>Zv!!z33LH4Q=vkNN5g&s$sIfGx!%Rd1uJ>a}k>K5AQRw0gGIOMDJUN2r&%LZt= zN$eoIFLeVajSI?0-ZC9v>Z+-@tyPH@u{1&N zAD_oBu=}!aGbhF{PE*o-UA7aY1rY0^K!Ip_T{Uxd2`agpjLE&M%NWFi_5&H;^6~eO zu+LFrI5b?-LhYRalB^)PmIB`8!BSh$gb9Y>9XJ+c)=hsJy(TZMGlI9e111^%RGy&_ z4W6tX4tLen`if{yLXdIOD4i>r=uUxD$mtqJrzUhJ!6`$K2C=uw>@P#IQ%+ z6~R^o4l80yGM49m4#2mclEIK-SAgU}l<^$KLoX6pvrMkQB{OY0J}UAlZm>!nGqeEKBp-=FapasZEV_ z_}Yid?K_s^s(uftmE)E*G5`|R!6{v&1(iCYm;xD;u`4idZvJ%HpfU0{C7L3@EWZ)M z*dhU>kS)*J=L>^Pk*qCcA$f2Ef|H8RIwtY6Zu$bwJk6sQb&?)>!F&tDbJabeqk1FR z$Yn#5d*+<3O_Xpo|2;$$+I8t0;5%aA6ltM_5~YDI&}U4s2w_sjKtp+5?&FU~xm{av z+43~EL~*%Dnf!j3@Z(=Wco^$|HJ-KSM^|^41n+03f$C*qz}SqEkuD1(+N&52BjY4@ zi>qeJZ5~V~oz8?pvv_8XwpByUA@-FcgGmKFZwtN;OOls_2D$PipG3_-6Xn{1C4^IC zbrwNQ~bT>x4VmhuHMg);$8NQ?2a#dzz z-_<pgL1^8HdE0Wc@T{kTvx;m1%r(n4+sS0_wYfn`-et zhM%WoL6`?W7b(WP@vcuNywMD=Dbaa?0?PJonB32xtuVsZ2S+T_g>Tv6PY9Q;yoMCi z(i_Yr*y$>#%Spwy|xUcnou zbk8DA>8m<4?3W9P;?XjUUaxkLQv_GMU}P;Wj}`>D8Bk1(=dizw zF6cgH%mb`x6!}dtt~lVo2O4msiStmd)(8-hhdTcSgOo*tLPPMZ+i=qz-FsqtIV8>_ z`|n`8^b^*%mH}c$2@7R1HN2;D!NLO z?dFiT7@Ca?n7;Y!L<|7CsdgssD7Ze%^%saXWs-DGWuU!GZNtdh+BOnvE^q9VZ&T(D zk~XA`2DF}&jxIU??ys$^fx&SeX z!^cX$w>8MXyCF0T`22Z-=ugN`4`wc}FC*;uWRi@Ie=^p;n7{?b&z2soEHn+A9?~pi zJErE4lqHwT71pU?vQgYD&_{%PbAwV+O-lmc3OXAM-G^lSZ;buCA{u}>)f70jK zpnb&XN~~?nprYGwBhR1Z= zBzyXU=d~&t;DV0n+2_eM8GktbHDw3dpG0xbS-8XJ(od#G3a-O9 zPml)#gu&0Mj8<*!h}|&iVr$&L<8184edk@_5dnmwj+=d+nPe=B<_V1FrIl?FNaH+O zpBxZp?dVm8`$`u-%PxLA`2j;~poYWfteYM37c)k)Tv&QY#c zb?!4UfAK~%PgmRNHR)Jh zQP=tY8#z{nU1I~ssPC49BPFIoh(KIVf7WoYBMm^6)2-Qu>?{ZS0~bl z18=IePnr$ToCej9=krR~cH2_0lkTL?)0|qF70+BK8a-d*p92fjm48xC&o7>g1TUBD z$m*d&%Ezp@e9e?fK6vW1zmdEg3lCp!Z)w+-Hle@rntF61*6E~^`r0VyhK@cDdm2(H z8g-~w@Lo%W5m-fjQcoam_e!(7ZY+|~jtt83&AscYbwy0|>kL|e#4h!_UAdC}Dn)Dy z<>Z?Vu*_B_W+|}3t=x|BpY z&J6!vM)T#h(Bdb_!wq+zGx7q=rIPc1_@mO7U`Hptvqfy1U7bIt%aN`f>|NNT#k&K= zP~aF;do!=S?6|#`&}B|x1YK1+3Bt8STyY9IhbbaDQ=)a^boQXN|62KK@d5H8Gfs{@ z)Ig*Q9sMW%WLo99Eop4k?Xj>4jRyGI4#0mOn{T;>Ny4-ov_A55^_!oj9{1M9bvLK{ zhERgwFLmttUeL5E^$LOz987um^RhC9k63T)b zrrT{#r^XjF@9@t<3!{pSg<5nl1k^Z6`*;ee`cHulKAqJ;9+^EWLOzJf zRJ@HZg}hQKrP_dGOlOOzcNLA}s_eB%vrtNeKtSKyHj!JZaJYcWsD%g|6Nv z?P=Y=6uzhqk3vLUnk5#*WC} z2`|-__MwG$qHws?SRH%nZH-Ken%&1K+5~Rhor=sy^rASd!p_y!XVEzf_1^4&P({m67uj83va=fXTyQ z#?DlAm%LwM@BcyCv~JM4_sT--{DfUxPfHqf1@F~>KmMw`a#3;5%w0sc1L&a&+~>R6 zEEje?crk1_V2l*O_v+{8AguZn7TYyIH3@_4OdE(ZC8&&d3kI@|M#5g^!9jQ%sd8Ps!$`Va>5>tjxZ3hdF`z--iomXeHn-t>ZwRJH|L zVIIl@1fkh!4BH0|7WHkePZOwigMo!q!slhg%OWZa=W-jZ-a$7^sTiYh^4RtSbM?Dk zZkG6$r=)DvPmx29uaqMCFiTJ7;yn?c49c|jM6+B%8O(~&J)Iue+Ef`@H*kdQ(n^(( zr*~FOYji65&w^|xKImE$T)iY#V)3JYDAenMd*$U5{Xo+5gG!C7nG}^q#xUZ4h&mL7 zi+|5ilRh$@E>ta+f2{qSgDHg@c5oKMGJ=3llDO|Q@mcIYV+A*x$jND(2zUi~oN$@d zG6Fq%QlRJ6ab?h#q+nkJ_rYY--9-8?9wONI9D*P(q>S}1)gu8<-cdZdg)g(QC8QmR z46)Y9HcHfMi!Cupn38=OMIPVW1t(NoO3jMyjz|w3X}`8Ee;U!aXP+;`YTYvZ5`N8J_T6@tfZdx!$w=`KAIv+ zyx?;8#a^OE!|etAf=dP%=TX{GS0gx*I&UL#bU3;om_=F4jx*wbgWmx0eSwAv@O&qS zbUT8UopRM%Ydrf_;+Bhcmq`YHjEJR4t6J2?*oz32t)==dD`0!p^ z=!`GDQbO;88$eV~&!YrD>yS#|aLWM@e$Z3t{%*je^(xMBEq zVV1#%P*#z4Gmhs5r%zV}5x=;ZbptIc9P9;GZ>&0Ng@>~c~X_gOnM1q~s&XSS=2Wg!J;2WD()a^*FqJ-{UfgAYlrpND&C z%c6f2g_NoaSgU7QNB(=g@lMZ&Z00a?m)rc<)Xs$%4&|VUN$6qp*)H?P2uY$}3$s08=~PuO~Gzd(XKg z+LQrZ3&JgHE@I@?5qcUVwWi^$CxV3jVo{(UZ7{tZH@9v(&k_)g8|pH??}T&_ti$YZ zIyHPU>pzq9wr*iN<%%12?!TMA<QR8+^)qWvyZ0zxem?$Dn|l%QON7nN{khlhIOOKQSFxr4 z7?2%`g1Q>A9odOfH5m+IlN*crXpM&X#jl|vwwPPtyoq|=a||5Zfzce2B@G~~(0a^yoHJI;@!M$4Xzk|P^oy093YFbP{SJDD z)+;-B);9&&d!@8{oy}kEk#3kM`n}X_l%$ZG_f- zMkl5(lB=D7$HEg0KdARRmeQC;9$SXP5^T6kXvqTrQ!EUdBK}ZeyOoDuTw15?juZ2k zP~T{=5p$wC{4{9qIps;_25_gRO~PPS+^HyS%?eC(O7xcB?}1`+reH`!u5zQ*Hc+H{ z>%}VJ7y-`=F;gT8Q3p~lh{(f#zkhV#T^YvRb+Pow?DC^bV!sDrfJt$9(j1h9v5hR11w^UUv*7I()RWVL*M9(FR2)P!+>>y>zXCqly)%17wSt7-EH21h{tfV6GEc%o}oU5mVb@!7nmBUu)Br0jO2h@={| zoc^dM7~mj+1dvL=BE3)<3`{c#t0%NFs1Xva(!MS-0#6ft3&?jfYCs4`Kz`UUK|_Wu zA_K5Fv864ko>e7&C~NfX#PS)TV>)}2yGqPrGt?DPyQhTg-E)KS%>R~9!_v*S(YH)!KwzG8a15~C{HTa6m?i+rudxSsIp*j72~pZ85|ELO74pLVgAK3 z{!zpFo=i3$ROu8^`DdC;{a^It1$)R?se>cn_)KlU8*;A9%~?4K#?Bg*5Fp^_JrZT-!Sj4eW9jj8XS{y%N=DmL`!UecW`BLrX3HZwXvS9RjO}{ zGlUWZz4+27*KpY8JFUbU1Wd6;^vZRY+eN|a?lNadbi|F`rku=!QsH7>v=Kb$#2Wrx z_e)L<c17KB7g?D5p08^-6hFk8XA<--*C4#gg~jD zC$h~Zn{Xca(Q`W?#%xu)kPl#_HKAT(3w4I5g=bSd2e zz_lxl+oHCAgp%&c55gS~^4+&C7X^ep`YnDUmH~X6a?iiIOp57!p(_9GK_B4^x!sH6 z_wn-)J|jZt6lBb?EU211`qd&`8K2KrkyNZ6}&-&-j(zOw0>Gwfz<-uuUlvRNawRr+{zz;mF(BLp3RZ07 z6Npn}*JSR*QnH(p>car;6^cVR-Hr;_n^A6_wNO()x@?5~GF??T3&MjK9wd=+&yq(- zF5*{vS!q@Ui#clIB&@S^<>UAjWcDuIS+9D#mP9bJ_ZF+;>ZGE<;vWnq{m?}F4v&cO)6)mui)!pP_C=17s?y~&f?&f*-p*{%-^^eVQ#Iw<^ zu!BC!I>GfQ(1SYvI^^1U5)$X4n#w(w9XmynwU!Sgv0RU44ZZ)r(RsKdgC>Gc z3Ef{SHXI#CyGX6ogVvsbWgAAC&s5Qhe)C<*<>6^bV^QwXx>en|#F;>b%a)AJPUQ0w zzvQ()^d7KBEJOG2S%Xm1QFsxDh)(}YsWc0bu!k6*4Z zVE2>)6&hP*N&YR!=*{|ciomjto=_vM>z(%Aa=|36BQwa5(;3IZplK+~xN2t(f&5qZ z23dq9o>HzLqx>sb?Je118G9iJ*;$aArNop8d|4(tPw?L;W8TVB`xnK)*uvH^0a56D zZtk#kul(7qS64T*{z7)Nw8ybrid>{yfycMbx?(_p4G(QeT0syJk-MAs4gY8)MjfzO zqPacLmz(i*QGdT{)?;K#Z<9((Jh!QM+_tR6?M&(sr0wG|scS=V#per?bB{AW^(l-!0xzVu8mR~Ax zqD}@VTl9_d7jsV^IF<|DHQP2!o8`!A2GebRqBDHU!pCNC5_sk}38;4|knwb#<>CAx zOC4g33XEWHvK8!q$kx$At0 zLbVEODGZ-JCfK4|`uG9asw6Ee>le<`$K%?Op<Xq1^ClIHjIeYR6lSQMsdmj>nWKbl- zBoI^wcvgwmqyvzO8N8<2)4ARZ9nl=bI+#%H(HRF%`IE{anm6nTNitS8vVC1wZ84O? z?md2!ybhN}%lWNW=Z{KE!mCp%2@Q7Ts_hVP{aG$SZBXIkJa^}1PI!dK1lp*BhdPj5 z=aBF_w$*L*TlfvE2FrjYRG^i3PAIA(PIT(*?R2Y@@-G z7G!`SMH|AyA0G{(dt-!C*mv;eL9MoWT2e?+ritWgGM{?1PzC4O_3f@(5S3{I`LYte zlycNc;&Z8xrqjW;^Q3;$Q;TDBj$h>pogQJRJg%QPnWb;iuZf^ctVMr0)V`HM6IzD?OM z5+KWyzwPRTh4T5>)2ETU90|Y!S&oka{K2Bgi&47&ZoOGqe^5;y&B<6*#<0&_F&UG1 z>%+c?;=HHDSx6c^l1KT(ldKIJG3@UFxjp8$_Lg+eJWT@M#tRnW*Ibc+1-bk!{;}lO zfCNcT8=0PK3-p#snqeEGL!#SPz8gvpc2ecVvjV8Er&9nw7to;xnb`E=o~#0`&hGY@ zm)zIP(E8wnVXJkH*N!%rZ`JrV6Cg*K2F2<-Z=brIl0(hYMkO@09oTafnfSl+T;Zpw z-ffijL8W#o*&{pn;c86GWm+8kj4vw9k_pmUo}Tf?53h2xN}){M)0Y{6@z@^-0Fc`D zUhbb!VvXt?k120U?FF2Zvua*B_@GC&wqkF5lLH%@3Dhu{^Ix z2hWqp3fWtc8XeA3Db4b|Z@!Cm+~*FMX>Prw7%bW%CNklRiR|nAHUj|s_^Nx3O^n)L zglN=R4E8Mn=>$@uQMW`@Q%fG+Hw0dbV@Pi8GEkvOKd~JPp?KN-yz(&Sa44kq7%R5zoWHiL^>dWND3bI&3+^}``8y|Lt{#}m{ zhQ*wjXI4!?R}fscd6VW*NXtnmXt-8!(hZdpHjt7nSIlNssRtT99(ZFZOMDeCnY!GZLcJ`g*B=t+6)a{DgCJ@x6| zRWZ=5hjdBP*)laSY{c5!`JbjeUUNBlb0U zf5(sLoK+@6j8)l!?nZZ*ayOG7{XV5~Eu~r%RiI<2(s%slP`6Tf@4zkl^^mynJTwHX zIGIJc&gEi(L9#7KbdvC9zN`&cBVwS+fjzm$(hLUa@z;8!5$gsVg+?S)dy?dz6a5(a zC*muV)I+meWh(T*UUo{b(QV<9MpoYbM;uXu4G@$E`L5xaDcA~>{w27k4}B(zxcR-Y zCEwNhviY}afxDP0)KnNWIi%E_nMlNykcY8Br? z##^uqqn)7QJFQ=+A5E#fId)Lomd3DC9w_t}$;YQzc$ISj!J))~S4UHorADis$8hb< zq7>ZoC^=Z1z~;Fq<}Bf8(v-Ib_Au`24l?8mZFfKZN^GJ#LqqNe-Zoo~scld_LHt2Z zgw=&g(bzj2D;WpO61ms&F0R7Qot4Bfp}Rtq%q@!D0zL5E2B zF0oC98IU6D+&^?5NSt5Uu}{VNzl`TDQ7$*Y_ymVkTjxQlZh@duAX`0U86=neXFNKu zS0%kVQMUJ+!PL5r;#q7B@5i>r$?K9yDEZw2Fy)(zPdrq8hGM;z`*j^!_ty(lJ+cb86^U8F8%F8z(#Y~q;z69C2si0Mjs|&yMFxJkiF6dcxivB%gAQp11TOLY5COn^!PtPGC`oV&RkveEKBW+x3zOD}~ z*x0+g4+exh!5o^0Qhm(n3`{FN7?^!NC$uR)QptA7Y1bdip^qhXdc$(Fm&7L~{0A>5l^|~ma~LX&SArkV%_&b9-kHG*dv7hJb$vFL6C&*seWh_Y ziSlMRI?H4}mbyff9W?k{#67?|u4MZ8RJi=)7j2Jw2EyO*_;!dE{~PJLlxsn(RIQAG zVG`c__)h#qP&GV~`+L-41QECn6&E@UUu%X?cDN9A#4AE8narkQFgun-{Si~oLFWBIvni9fY~Q3nr7?PdB5nlPzvCeBgHNB zE4Jo%a%fXQK)HY}8-#T{>i?T`jO09f#Q`gTXK8%@HS2pCE z_|~zv0*nqO)3A~f@sITtR{Ok9E;lzzXA7p==(u1QS|3Z+_uhq5UqY*-Y3VmS!cY|6 zK!~6jqgC`PwKM|Hey!71VVial$!dIaz%poFmXgV{R!;OcoIYJ`D7ai*Z@VhkP9Ckd* zx+tNR{leN<;t;lfJBE?sTgh6H`k6enKSEn}+^nh`q>s^XLS?WOL{vM|@#Q`|0tJ2j zWtKq|Q$ma6H)C&$;%-Bf>4XIBc=C{izhSpZ!8y-BZSRm!O5fA?ZhmQ1b>Z8BPnT7W zt-|o&a^Q<*NeISo@+iGeDrxYOD<)BqhR6>>_+HMwM_S_LPDZJUHDnpHS2WIfz6$$O zR5(>FfFz}|6Gy@c;IA%@VuhaX&=~kUzCWC=+qd^;&XYd4K@Uzwh_D=`OI$dQf9|c! z3uejN8s}{szUp(xJDtagNTd!&eQmcfy7?~wfqaHo43h)$7rjD_EArFqTqF44D`<;` zsi%Ll!GlWL6)bQ#4!#-P8JAOT+^LIHh0uJ-^ih*EJ%jW^x!t)+W#PXE10AFKyJE0V zPRB7KzR_SMV&5=M@bOse!*UEF({7Q@Mfmfzke1%_fw6#{2P+(U&>L#o zrbV^+7vgW5+R|YmhP3W{D#U)4^A8v!!Vo>UIfoz`aumRMK4Ak2P}@x+0SYq^-iM}O zqcaUE)x@NYgk%UaTK6D%Y>4WTkiQ2^AE>!&4aKJm;F_D~A?x_oEI6Eq^$a8AWG^ph z-6YT1C;Bt7;M52-8?;Z2VI~PH zLXd!*I+D%ppSSSec9zrG;?)0cNVKPU#0O8G58%*Yc*%9ns_Ny3@89W<`6zV(d zW_xJ}6?80|h|@hu&;K;3fvBR*`P)}KjK)oev7^~49^_H9X>I7oS48$IT>0gcB`Kd= z7`s{EmOiT0%i^1T_e{Rv-0ymCpiv!ZSD2pPXJF?D{`Zs{Lj2N%+dDV0ODK{8$|g|1 zq3}(#QU4yAT+Dbti|+7Twq8I5-;MsE|DMYgU?*Qq%X;A;{*W1a+#%g${Nbu3DWOf> z8N&h|-wcv+2oP~F%2N0_UBG9fbjDvfzE1O1_AKkNUu(*BP1L8|UPMU*GrLQ)C*%lUs-d6z23m1vk4e}CoWigcC%#Zh{HeCZX=to??+ay-^xII$Yh zaK5?9>YL2>B*$w)yg#1?5UI&Jk-z`*NOVn@KCN z2NoZDFZ!)NTcB(tKrZU8htKuIWaWm9XPTq|+|)|ch8+<59NIOiyS?UbQU-3y&bf>% zMjK%zL#(RTnSLB7;S?BYX#d|H!auV1&s;;>&vX##GO#9fdR*Jwa@mHIytVxO+hpt< zT-?ig*VzCyD?u5{RWTh%p`UmpYjk7fn$iI@i`(1tFI9J$Lg@T!-7?K3qkbTUZjt5( zGt1}U{Ivj*C{Mfa37Q(C@Y=C-3_at~!?e}EUxm$f^r%q{>`JbHqsBDe>uV+?nRKrn zG;lqi;|fY_CXFk@gEhE9<$cE~Js|meRX9NDxT25f z1HQcQfnEY89kp<#?;5uS*PZEvMQKLXBg}~~8rd6IGJgSD9`pal6UAor?iZK9+1ANA z+sY<>!vXk6FZhA)wKrm}%Pig3lJU5 z!2qYq*2Nep>+DZG`dVk`7Xd0)B0ys^`83j&8ATaM2L5i14&``EnPt~SWT-MwqW5`M zU3M5#GQAqg{$nPu`qyKoqn)Z}{4{lW0eRby2d1r`(>`(qe2}wqipG+?536cq_skD& z;nnHWR@#%%MW(xjwg;p1Vqe&OXC<<$(jD z7_yJZY|q)=M)dvoJp4)|^(9L)TmX0V)3(58>xjUIm85Ip%Xnu|968eUG7*F4#yd{T zGTB@+{WQGPLdvrw<1h&g9iq-)Hm$p^gXuhO1h$i##ECsF-$|QB=nBzh@Bw*FGviGS z-Udw7#pA4D8Eznjm1taH7Z=56(f{mLmOPC4Xr4D|w|Fu=Ir>p)< zeD2t)-P*PnO^PkKaKh~~@p$wx zvXCIy7qvHH{)W#`Og~AQQOe5Lf2z-ZVJ0O`eXeW^SnWN~%Yji4z zN2Sq)mD&J&%N8xBVcw?wk9E*{1Q0^$M);B-gNxuC(B+6lU|KO`ob3zpXOP6x= z*n`!ZE**|KmTa%rRYclGlG4RyaB+-Q56uEjc5h~CW=CtqCLz=w#aRLtupE(+ z0>O$d%BZ3%Y7pocap7E@a6DuPjrQtkl|Z~>%8(W_(b5nDbqgh}YCQM2llRii>a>mO zX>fRG{2E1DrRc%}GXwSi(y_HQ&vW48U>Rj)bl1;DdA%!t^iSubBq zmWJ*DcJ7+gdj#c%TkKpPcndMcgp?l_@GA?!TiBo;BIRtIljM6Ysp`F1ts7GGT#SN5 zxHVuy?dRhGrJ)3PPixHk7tL$~m07g%VmPARwo5<-_!sK<@o*j=xzGg`gnC^0Fm7G< zNq{mDAEaK@hO(6Jz6SG-yw4;Nq5A&PmcLzsGlb-a)_2xZw^GlYQNYtx(_Fok+lSPv z?=k{+yEz!#mOp*@>V0m<$n~8n=9bw=ayrtCqW)=FKj;J|z#CD}SjjVWH~J7C+lGoG z;4P(Gi}H`Imu}o=-GALu2(V2=w;dr@?~le4Lh{$lcW{8w_kSp5RG@bEfjiKWaBZP@4?3{28I8TUp$bD!zTg{z^u|OXf)AqZotq3Yj^f z^#v}h1i1$O*L13ni9Cslj1~b2Xf#teCMEL4JG1Z!O7b|1@ahM)_S0AodjZ9=>C+#= zKZ(f8Qi9h-geZXXuU0hzL<@P2*Q_;tg7Qh52yb$7oNh{H6oQ6d`M#YxiSub!I&^$k z%i7aD>uaM$bEcvs7@m*t;iga7x7JS`$RLo+|U;&v1;LKpeRm zqa2-DeCvDmgBvwb&kLdnc4Y}Bs!;g~* znG16%`){j4v$nw;FLpsjnhzRR%Dnt;;v`3TAE`d~iA)f)f6sxmmP>M?tLrK#wgMs~ zA=q)?ncs4%c+$3Y<7wfKO(3(8{#e?0e&@jAz3Dx6#YQkp-w2<7^DVaHM4MK~wy)rl zhcYJEjW{)n9u%Kjs02Hx$`(QvVtJ(9w|-22RJ{B9Z&~pzI&1#+zVv@S&zn(kit!fPV&cXU z6cVKwTpvtwAs+(#5(BVTvj0tr@UJkO-xLk(xV&RB5ztgI=yR@qx?z`0AA#Ti`2*o6 z4GypzV@(G(cHo2}Y42D4R9JRoQz_|kC9sh#ycUU20KI`@xsPM{neS$W`YHbx&u zbJN{Orl-<1_TJGpP#I$DY(gn36Z{+Qyt(MYSJY?4S-N+YAoe@+0#BOf1-Tm6R8*lrj|+ z8+~-ASH!z@*Q%k~J$__7weY3ieUwuQc^yHPF%;_||3=?lw{nJCDoh8nS?>Z`Hl^Ll zo=8ZA&oRCG^r0S_vqeAh)fX4_weqy4vQ7dmLGhT4_EG_hk7sva|D=6*S`S669N7A~ zWedbbdVAHImh~t}jxU8Lw2sO#8p)#xXr7q)Ae1%MxtJK9%b-^Ya?o_u>t$D@_(zVi zii1aQr*}=YR~;-ozOf^3QfNLS)>O*_<3EI?XZ!>(1&cRQXhN_L)@%M(75%0A1J{^GzNTpEJa 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 DR&{u^ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511082002-Config.rsc b/MikroMaster/20260511/20260511082002-Config.rsc new file mode 100644 index 0000000..4db59a9 --- /dev/null +++ b/MikroMaster/20260511/20260511082002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 08:20:02 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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.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=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 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/20260511/20260511082002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511082002-Diff-Config.rsc new file mode 100644 index 0000000..68ddd9d --- /dev/null +++ b/MikroMaster/history/20260511/20260511082002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0