From 6eb5a11f608816cc2fcf8bee2fd9f318e08afe99 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 17:00:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 17:00:39. --- .../20260507/20260507170001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507170001-Config.rsc | 4645 +++++++++++++++++ .../20260507/20260507170001-Diff-Config.rsc | 27 + 3 files changed, 4672 insertions(+) create mode 100644 MikroMaster/20260507/20260507170001-Binary.backup create mode 100644 MikroMaster/20260507/20260507170001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507170001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507170001-Binary.backup b/MikroMaster/20260507/20260507170001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4d8a220e87e68104427f8de947c83083a33ab59b GIT binary patch literal 297773 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 z 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 z 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 RR^@TwSW)n<>xcymVD3J-7!v>h literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507170001-Config.rsc b/MikroMaster/20260507/20260507170001-Config.rsc new file mode 100644 index 0000000..6806d2d --- /dev/null +++ b/MikroMaster/20260507/20260507170001-Config.rsc @@ -0,0 +1,4645 @@ +# 2026-05-07 17:00:03 by RouterOS 7.22.1 +# 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 +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=vados 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 \"dns.google\"\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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="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 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=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 +/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" 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!!!! disabled=yes 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.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=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram 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=Twitter dst-address-list=\ + Twitter 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=YouTube dst-address-list=\ + YouTube 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=facebook dst-address-list=\ + facebook 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="VDSIna for All sites" \ + disabled=yes 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=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 +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" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 +add blackhole 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 +/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 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/20260507/20260507170001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507170001-Diff-Config.rsc new file mode 100644 index 0000000..71a5bed --- /dev/null +++ b/MikroMaster/history/20260507/20260507170001-Diff-Config.rsc @@ -0,0 +1,27 @@ +4293,4311d4292 +< add address=149.154.164.13 comment=telegra.ph list=FuckRKN +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +< add address=104.16.3.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=172.66.164.200 comment=dou.ua list=FuckRKN +< add address=104.20.28.254 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 +4401,4403c4382,4383 +< disabled=yes 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 +--- +> 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 -- 2.52.0

! ziI{cNtHeGX3Z=TT9w-zrmkD+X0lS78bqaq#E#f9O#b8P}!fJN?hv}!UgLy*I5a=ve z>~WZQ$=x^i7o~yL{HT1h5h{oqsc}bBpsA$( zEGy?tb$B5w&$0>1_B^>GUUJ0-`RhZ?S>FpzU_wyB!!aL!gg~YigQlAo)8GAkj)mUE zlQ#f>Wv~U?xN?D@h4w_>ZwRUuwLDeiB#_j)5nQ!*sXgYIFoh3ITMt#@f>0pXpvtU*!te1wet3envzGW^F z;Jt?dY-b{X5Sy#=Tm=dFw6ta?%Bd>B_ak4V2O3ZeHdjNK7y}v|oMua5W+j5WO4&3& zVXE?bQ-j=zp0W+bB2*#YhmPnvVd9MT$UsKYO1kBEs{y^O;-r}uJ1p`*<*UmV>5aBL zJ)eOsY~lfbwq8)y7lbZvb7Bbcm_TPh0^9Q9f?og+@De8u!-EC-HVMtN1x!dW5vz|1 z?{v=1J567*ma73*Sf#=kZc6WbnvYTToNPa7C;G7<9 zB@WC+Tdyuyz)AnMM-Rn=Jgf&l670>Rs`>~`8ww7Pc0^82znz&#sxRLfay>8r#tFLy zFmxVa3S;w=PO%yt7}{LhIl~`DD&bo|hOR}hYl)DTvc;q-7GgXNv^<-KslOx~lAPf7 z5Sx&QK&jV%|HM$skLF}Jr3yt&DYP<@AT3{J9^l{7eU?6-b)oeZaItGEO>Wud?Cq@a zy!o3)6(?3{L%3_rmRN-my9Sg-!!;CQET}bxLf?pKXCOo!c28!kxIS14)jc}$qQ1po zq>f*)^~!rlJ;D=*6sBNjjpuhREd{mkCsQE2R)CDeFR~H^rQ$hOfr`~wSvn6IgQHdN zw}hhgcTl(P0WK{30R$o3y?-u;0Gr=kX&=*&Ac20sbZosraM(~yUhY97E29RKb#}Mt zdD2+;ziSO-Y6ydPKus7xplB$^VsYWRBYAuG|5E8*f=99FN~|h_X`^XLeDR|E1V8$j zC3yq-{Dw0(Hp{ShhPl;iNlCc|eisjFb_X~)2n)&vFXJmq z0Bg0t!QHN9QXz9NFuttf)h8nMfGrb5-1$i2h+<fE%@Xm~9)(=q;Sym}O+yu)=muOuWjZ#zl1=xw?V;%6$ULK~$ucZ2GK)&(*~>g|D{$ zCdH;kV!#_XzGnnPmy7;S&hG~estU%j4WeLdAHgX3k2C;*-urg2hfWOifEQmUZ!U8( zf;A8JsXx<3zjPZ);aO3W7eNrK1HZ|=G{qye>P(AgPkfXb3}CWdFU1Q*hHd&Op`ed8ijjUH9oL^C~o0m<&4cnYr$8 zR1C?mMU2sD(rrv|V`0b%{;w_r(syD$XvnX_T#Mxos-_UWj!lSx5%_c5CwhVOuLk3m66GmljFnt_Ijb6tr!rIhk-brWiMWADw7@_tC>>ikn0d;;v{=x%-?0IGoD! zNeidBf=4@YpKo`ruF3Is&p$+&7E!`lo`c7kA8%oS#x@btu=iE56qw7X)FvYTDw3EAf0FY^BdT%Q-#*dYBb%OPx*8G#hzj`+txfz zF)e9~)M5;?1A~cIGg@Q6#?D_N&0uj_JV+Kca`ofZM$2tO8{>Gbq&8}QHKD3L;sz;iP@oAZMx`Lc71+%9WJT2glA%&^MQXC#Hd(vOYmxFhTCv-AJ(G_= zyg#@_f}z&8g8T|!!n^Woz82@EeJQEk5ZO`%sCK7f>$dAkc=T;e!DwQtJ@w5Y{?zv( zH_~e3Yx?lMTvqhk@Qk0WwUrL=Qneh(7vuxQ^tMtb;(E+wnl|%#qVA32;l7*|s^KLy zD}X>;a5cBNYdzjE^%cD6;qsfc7E~8Qf;$(}PvRM$6dw%z-hqS#brtY*t(zxay6;i= z{3EF}116c>DNTF~RUtsj;4Nftn#o1R_7zm;^gfHWEz9o8c=!Ncy#mEc5_Gb!s6GtB zzK9Q@y_P;e7@^0yiQxttuIe*;{h>55H&-*`kFsKgV6ZT{)^F#=*7`iXL_fH)O3k;5 zRy^>9iWktwg=>kVI>ri@}2x7`cvf z8PBXyjCi>)Ata!Ki0&~Z&Z{Z#Px6~r<8tk$&t%}YppF6_;A(5Hsk~yfk^ISE(3N9^ z`qd$6!hyTuDxBJs0~{#-i;JvWfVniG@^u?7)HhV)$Ctq(uX!~SIz}0}S*^>Feustu z7!Ppvn8QEp{r;wUByO#iGM5sPBx+AL*z}=CzIx}aO4G)Fd@SdYRE0gk$_deVs54); z_jt=pVL%YW26CXtfO`WhXSi}oi_8!ZR|%1Vvtcc1+Tbdcjsnm<@l1D`d%K{`#|?53 zaM@&3{G~>;CR~lbA_&M0^`ygBu{5KYaO)i^E>pM~1Q@X5BdPs5K#CR1%17&s0he%D zrGb63({e@jt~R0q8e2{{=%>1eVo^}|&9>ao?GwL_oP(Q~m;Ape9s&(dRdIo%DzN{;XyPksiE9(9tm39_?04z?euEDU3=0VceGb6ny+o=)a=D>YP!7#4I+sm9v{ zJMeSyka{xs%*Jam+fBN?%KMJy#|5$X{KGm_Znty+UcxrHsUACMr*jIwO*mnG4SHo6 zgV>p4xpNX5`nBxzW8C;yyOj!#2D=+guk{yhJxKD9wAtfeY)i(?WS!HP1tA^>%0M@w z1K@}J^ySokZA;L};4~75`i~cS6El4_zq#hreW#UEjwe_GRNo&sTHyyagVl~hG^R7x zSh1k$k~JmWJhj+=7&r?^`>Ssla!N)vu0|r$CL~Lm%_A?HjUCL%*))XDyYdnhA+uYx zYxnzW&rWa=HFO#1QvEtINRMDwV9%}zT$5h}wV5gUg>m$A){K~?f|#h5qF@~tYk(SK z+rOI~Q%dk-BfU%~jGcZ!^*AVvbT)r&jfnhGF2%f4NrNh1)v5g`bKn^**_M@uu0Cal z4Y7DWDIg|0oYeo4T7BE-k7V>{(FDP%0JmQq&aH8TqMMSmM1H)=6*HB7X-UGz;!{Zk zol0xwb)FKwHNvCoIadJl(Tl6`p<49|jcygInAZv;*g!;_!a0v!NUSNjU%;20hoHN@ zz1Yg?So4sW0KTpR^%u%v-_$ah@Tyn?WJm={tU=ri>WJ5swM+0=s{sW6#5Yy-Xk=I0(Iz2~+|fCOzxJeAZh|HR#UR_=#lw|Iv*Y-%BjD4!|lold?wq z&toDA`smv3NWSkY=J$TAE*W_u=BtrynOUS?o4d9IGs{c1&bu|GlHq%52Re?Me6+NcjV;(|(D@rAh4px1Z~OH+cx5h2j<}n-zImkS_dt&KXA&}+JkcP4i@=&A z>ld?9{^;X2#{2AZ*kz?b^BK9sy*zZPpv414{2#QFW`z7D4hZjFzF8*{X5L ztaUfvU)IG|h5MySo6yH74{tNNgH2WYYubRMQv;O&oE%fJU!kARv&cKevymGhPYCCX z!fj(zL4X{w=pf8;m2+8A(n*}cbmgl&p0cm6iTMH6BBZ3_#W@U#tJQ0Liq3BqCC*MJ z=gpotD-Ar^^pFu|t&T&g;%n?FYIh;+z}ca>WP@Yy!Ep9cUlBfdD2y|pHoiz|+xQrXd(&dg?jvcDA45P@HVB-J+{zR-Gv{p_ zeKzWMf%VdeSF#sw7jFkKmI_Fe5ha`T2%IaV3uQlU7$VMP8@kv?=@0 zS+uVl%^^AXZkxYsO2%jckFN3egg#LUq&_LbXF`AYE9^n7nt=P}R_trw6hvER#NFAP zVqlP4nsH@mTYDKA2A0#2&4*Y<;GJ7;&*9RDpNK^dQGrIcnHGoDHE7s{o|p4}=AOsk zV5BN%bmLE{1#+XDU2DrY{7Q~}9G!^6fhmx?_2Roys4^Tfa|6&!nW?8Sewz`jq)vj* zx>y&dG_*iSfFmVKk1g4Of^T?{ujX?VMqv*sC>prFvE4}*`3YQ|w5KqBm2unNKjJAZ zYjlRC7Vj*XXXgNwCv_a^M0(%guacuVcIF*nb5JTh!nn&trqlO@+MJM;b37jD{as>4 z6+ZaiGkxs{Y2cvPkftt!zWkUYpeIO#qI04_!!WQ>_Cu6H|7Q`)!&Y&mMZEQ1MFou~ ze{7QJLCgkEg0F~9KhD8v- zkI1`oq8dJ8Q~M_F_M|kn0uXH0&?%^kZ_{KC&Ji@90!qw?X)JhK;^jjxiEd;hXcs)y z4W@X+XtQ2iO4>pF%&=J~cT>?<%{iRzyE@s4WSyapx2(TAU;xYySZ0At-F2aza362v z5{Dis(IZir@9x8aWQ(Wn8M!5FKff**Ztg%7g_8G#kC&Q|$#SW+RPI^9O@y+pTb9=}%+WFa@eg zWr(zRLWB5PC(fH5cogC9w;}JR?V%h=Y`5(SD?9dc5gZ;uw6qRH(h|bCqIp`lB(T_txN_lVm)4-E2zJ z#S}9Q@I+TR`AX)C?kbSN_rHmJK|vfU?DWF-~-P|5JRQ zJ_g|ciH{G@0ZKNi$vgCStC&!eqqLlNR~A!HO;XrwWAL5m%Q0J{$V4H?#5YxfZ*Jbg zNu27Zhr0`V$PHm%wytlUcJ6#5D7%PEYG(F~OR51&2uvCZR#;dO?e5LkMzl1SSpot8 zBVTEN^1GLWFzdG1K#q|Km!lULSGG*rp@pQhnsq>g`nBAk0}@~A{DuNMGa9KdZBdTX z7#YSn#AN3gI=mCmRY$CpP1SA}$GT#er7SE&{DHUHM{N4gyhK4$Y;sb`(o?koxr?$H zI;TJ!(8rAnZxlqyU(48iV=?ZNJHV~mJX>L39D!3)l2t@Ja(T1tZoJhZ3~9Xl0jBPE z{j%a})~|tmZR0oTo;8}t0t$Ut?ni_#&#@%p=$Lj-e*<8jS`UoGCd=wpRm`WV7Jp63 zHt|zph2*|nV9AETA6ibz^Bc9)~)HX?r6s|bRH~_`byXjrFiz9v+ z@m$-7-h~=Q9&xB+A5=XlnjE?imp5Eq!sP5A>Hr<*Ve;n{@z!3O>_p!CrIt!7JysNm zs<5bPg>E|>{%4bSZYtr>-Q7P?cJPWz%?IrSgvE_MXse}UlEKQK?{?I+!{!?w*A+%0 zs)zt7!(nG2ECxFZ@e_LXG+_H6-kUBq5-2q#{Xw7#&(U`w7h2As#>r59G2GoFEw zv#XeSh%k%dIRpeDQTP52)h3DX4AW$3ot(&IY)LZ?;!UE{UTK3)E{k&tVC#@=Dy~NR zR8=#$Ye0C~ye)R9_w^+Bz;HHTZ`fc%Lt6)J42teeQbr>F24CTVf7wpW?2xP$*N5+A z>nd1lt}6-^Rvem@nh<#9fO6!OPsznOnDA4OUfPtIxk7}DVX}<58Wo_>QyE1XRzCqa zEv8*1p1_v`9#M=qE@q+K5qgXWe-D~X%V;1=^A{=aEEBLx&sQW@^BgiRSJuAtCl2pN zE*BvORiQ#Hg{zwdUtLICqDfCK9YB;Y$ef?LFRE4TCQP;<>o{r{KSArrt<2r0xuO_* zt8)}yjb*#KNfy2LCwkr+g+Jfg-{(_O6GG08(8-(!*fuKkp0G9h-OF(yU@~>%@xD|z)WBzBN>%)E!LHU@U)8spY06F^+#5N#&Xuz}YYMfJ^Ru0gQa ztfZmHw}n6=jouHzMZDE=mdzB;UVv+$2Sva)$>gsIZU;~_BE)*bbRmB zPkCbWq1$k=u#lx75?|m$!U05lC7lG=cbyZMcb2qtVZ$Vko84dBy1RoKLul9*3^^Had4;yRkT;?ev(oh-S2K^a8QJa??S`h!AE8^;7I-s{i6dp$`wqPXb4W8?sAtD;Z%tvSfjW| z!BNAgbzm3W2|2A|n9aMNTR{y!8!h6+1oc|b>)31$yi)n!Zqsi9N;}d6CgeQ71~6tyq)blES$hW({(9qd5nfviClm;h;_0Y>*+Q>)-YsILc9G-U64VrvkiU!ygZ9pbYm6bJBgW2321 z8V5YVY1nJ!t2hQX8iy0;dnH#W(*)9SfY5*}*aUDh>+Z4Cx?LU;RB*3iAoJlY5?tw+9N91|`hxQ7P$!jt2Tb%UQfuTp#KH$@XK%#XB|akV z8J3A|V9^p#r<~p~3*kZzM~P98jIadrPaMi|P&*SAD0TsCURD2-80T|Pr+Az8o-v~B zod-oU8AQud4a{(v7C*#z)3JM;B3a}h5aW}t5w z#R}V_1oAMf1kA9lj(!**Gk@HsnI3tNIS&nq1+eweOKFN)U3El4G_jh`38mxBW-4p3 z1oG(&QCxdxN-3m87tQ6?*8xaIYfD!GZy2@_YP1L>9?<;m@cgy18UQOtQ2w=z9$-~4+SQv1jQFqFZ==g|#HSTuvV*2C!I!kf|={aT* zz-x{G-Q>{J!*~rrK<>@i?R$XX$r|C`T0%D%Q!1F9RnKfg2iS;gVRnu1i(2t+hqR)u zVmp?H$KyWm2*Bn3rV)$D_d1`YkE~F@_NBvP>y#mhO z+_%@vH9=~YR6gk^1z{+VnPo|D;MVIh97&CBIHKynzr=6Z5yDQ2eG(r zU!5uX1j7!JuM=9!$n1xAmav{IxvQB^Sa32URL_2bX?C~1K6BZ_SHdisz*;!2rXs+U z3zK>Vmif8!K!l0NHgC_Jb&Fd5YyGCpk^6=SgK&Gzwm6*2Nk7!9M0?VGmX0ZN zq4i@B{&Q#u?p&UUp;M$=T4yE!Sa@oW)pY)U!z|6Iw$S3!FMN8?06Qv~-DvZpJedzb z+j8fu;_KF!4h&b)a1B5Lr$xUvCnuQ#1yERJg{?-#G;QNl3bp#_-iNxK;2-3U#V_oYKN-#GpEO7dk-y$`eegSXz{i$n4c6QgXpiWO$tzEracU9cDpu}s0_Nf!`>TtUK!@JC)KIB=ZhHy5tr@+P6 zUL%dMbr+-Qg@!`O3AfOks_obsB4|g#d zAVXYEnDrraF#=uB4DW=StL&N?ba`ua;cqbid<7-^dY%kzJrE@6HrLY(Y!O2N;+rCa zrppX&6$RrJcnl(i#!hv9|5#)OOYY}dLkHLe;GeRzP8`w>dGnd-e7vy;)m$oCA-$|c zj`<~I40S=L(7HgLwmA*$1ZW+=rR;A+7!8Mxj_JhEX<+Wloc%tyzP)}|>Rv`S0kac+ z_$wE_63!9?JJN~(Rf|7@;j{D(eBq{NkdL6%gTI6!;b$P{!@U3iEe6ng4UvVI?|i7n za3?+yl%{ho0U45)*jK?u;IwWu&8#70ZZP1FvqrS_0=r`5h=<4Ow+>dcjMd(rdyPNuppW`}f6y0%Agl{& z=DX#tI->#L?aD618;aw8mWB^(Tr)Op~{^rkdE_ zBX0f(CvDkV!IV4~fYdovmH{WULFbxA+1g-HuR6(dLUoLUm0HY(mp(^|Wph&E_K5u( zL9;ODVg1s@657ouTQh*HfeZc#S-oP@B{yFP!xXMJ%#bBD25OZ&E$zJGUaW8Dsu*%2YnIjld&4ik z)|({mJ{kMz8F;F*jP{cceSv?lR&nq-L}Nt9+u(-g=Nhs6v>tPkt*R#a7TdP<)&DiY zc`1dZUcq2g3bLwcxg91vG+#3e?gqb;WIgrsKe{MCd7KK@7SXxY>p;x8*YrvPAID4G zXEtqt_UsbutC|{{p<$-j=65tW{aw1tVwV}4=J%w$5XjaH1Y7~?&zB5lRL^xnfBrGK zuz*C|eRjFZoKa5_clF0%S@N2V$8#8!n1xW__?F@6dQ7yAa11R7#joSHl*~x%?@*fN_AZOCQl0`0OA%Wl4-+#YY=47+Sot9ugId z$zz1!m0nGWQn(i;e5ZWzbsO%O#iLJ!@5cDbdc{rk4er*&UrUMVc{UDI^5e7nY~RY|CP-`CcZ%1~PgafTxHQB$FQyQk{jEd{KWz!*#W45q z!$9GPW*uB>9Zy-`G${psgwN?kvlKs{vOS5)>DBCGyT3{P6Ru(0M8V-X(#Sy4JMJP!v8qdIwPJJ>z%qhkG$3k=>U&B1$A zOl;G4vXsLixX+FSv+=1W^ZLm2LFq4DC99$b@77)itpS)VNXTZ=eD}zohIHaK$GXxoJND;B zgv~i%ik%K~MKWJJb`B`o5^aRp(M1e?aFdzk2P>T#Qj}fuX>v%`Ob;Bg1)diR3Bw_{ z^rRPtqt1#QvnKNDDwA)v3N-<-k!~U0nK0ow;t6ixz*iu8-_`tV_~ z=;`3fU@ZPj0x5z1zC{wXxU*ekwn{!j7kpJnBl3(5R$27X8rtgPZ14HNhYKWs-7=2} zNL1UsM(W%f7vI;y_VX37Mk0v%oaXDz)pdZN8)4H7M=5#&F6R_9480M!JZ5-jSdvz< zR$2t)eB5iI@ni=btDWEV2YMk9hg1)mzq(@$9c;KNfd4}MwoDvf?YY92TohTHis?}F zY#E&yJ2;mD5!OHK6GXD8Op_ZfgT#sO0DYSq%3@}0~X5T-MHc71**uz%LO zZDz8Ot*EQwxB|=)8r3Z7P@WV#2;br76~^*TMxpQkLNe5lkTpX=;3(ODXo$CpF(mpV zE=ic9fvqa`f`=zslCQe{9`tBC^1K>%Yueo~6`C~CMpTTPU7J|^DkF3#wKQeBIieN z<(~+rj;&ub!mr4|15s-$(f^l#t7QjOX9rI)zQ1tr&^8B5zv6K40=b84Q6%4sc?+iz zVN}r}`d>1o8$3MsGCmLkLLg+dEC#Dcvt=z4r4)<3nNbeVk$eX%Gu*vcb8FPR?J$}Kcnv%B~GzRiAVU#hW zcMDx^^tWd2y-%zfhj^_XgiVgxs*)R=y-_UZU%#~ZNp~Rfh!|nk1T1UXBXwA#OwIGa zi-Z?kv7zr5qB39m41JANGH{Kr*>)k9jOKE|ky4G$c^!(q5w!SIZ`AXHK`ivFTAG4L zIAxqHG9zNX zw9S%CG5^VRDU#H?L3@LHlMEuaF7wO3Uk6{Gn$~bxsO;cah^v$b$~A(6jvZX$pd?tHzv5{iro0b$RL-^(9fdD79)1u*H!rAI64exWN#bdUEf7)&|x8CvwVmbLeU<&o{wE zZ4ma*PB~1aKo12}WOjH+^Y{Lkh#Tpf&%Iar1>!Y}BpRFK4;&ZZ*q@7!eHwC0Tlh8C znt9VuA$z3CkN}j10zZZM84Ll*dx%;sc_rv}K>%Hrw!c?M1W%bzqnr~JDi)ooW;SNl zxsf(}Hpv5svs{(0xDZh^=Ycxl%w(I*9rAdVIFM_|pB>cP&mgFIoJaZmUT1dmH8BL* z?q`6ia)ew&7@SAR5X@QEFNVrU*@EqeC;dVLiftm<0NNn~8gGmFIDLv@w>OE*4QS4n zQrZ9dT=_c*I$cqn$R>$(435u>C^Q_HvYuX8ikE?Dwns=0?&PkXO)=Gu|KaPdCW5=E z2}Zm%f)7{7U0Xl5{dm)1)KX$Gq_FfN_GV8`UoUu^-|BfnrX_IXEkU*2f}3au7^F2$ zC0#bX8y8U|MpRHYo7T=IvZQ-Kih9-qJ^70z%y?&F6mZyuva7n;?_pd96(8MEXP1S$ z@ih=!_pNeliC`|6pX(v7-~Ovf__$Z zYuRgKc3TlLTc2{j4h6vxd1hG2$hEMqk1S&nf*j5xU?+k^KX* zzX%4`{iNlW3x_>8k5Tw!*Xxvw_gqI?w;Pwnu76Sat?rw(eL*6zkC3Mh3zNvHwkLuS z*GvN&a|Evj%Zo)GTe6EAwn)N3%PM#Txk6WG*zy2=3kQbXgk@paW4BJxC&12~-DC!2 z80y<_R8muxhdeX~xPqwJ-ap*s4JU>x{n-DGWVD6VL1MJrAX{gvrSlB)oJC-INx5<% zcc*5@Tm!vS+J#GBoh=GQd$ABZu7Cs%|aM)dPzQXgt}Np zX|zQ|jkSk`$i-cP_qoYLJyWQ0F{p}tpVA$kB2e^|9{Zz1%KatakOlQrQE?^?pUat51=zHYVV za~fSr1)eac0hWdVPV5;njP}=~{mbmo7>0Tqr>Mbjv z3}sF)kDc1avm20o|0k`(-d^+urRtliAh#lyg42@_=z>?U^LM7`Zq;7aXJeh1sLlOtwQk(k*~((@j< zdEDNb0f$tuEg-B2f8f_ntB-BNXq)REjiOHV2Bf!Lq&C(p!bJ~n^6z@=53du1GWye) ztn-Z>JbENl4&&UzQ6<2^8@q{^U1TxVSw4kq9r*h=8Nmg z8MPauvzy`GJ9iBK94~xRKs>9L9$2KP=CCWK|4OQbnoL=D{;)sk-XoMm)Rpesl{}l7 zQvR3(nSy&m@tDNq!XW`7o$w9NTkR5~Q*p&EzS<4Kvg(cqmy4K}R$@)9*M%Y-Iu66A zu>|Hy*l4^Mfcn0LPZs(Z`H1EwJbPyO7$U;4+ufZ z;6jMjJ7za~gdf9mWJq=s=s(XSq~kRumO##U?}A+L1iYZYx6s3fr*{qWd&!BiK+`bU z`DB1UbteUf#1D~d3XNLu@#oE6CNbp?eqbayQ)jE*h-b3*cx* zDzIAM#=TYpp%%q_v@SpWtHK4EUFsE++9NG5pd~U+sO3^ARSOY?3}g`xl>tvMcK4JG zb=I8V2>kWU_>&2GB6|knytyWZ4g2X0WhR(LN!3$1PmonnEmCu6+su0Kj%?3+946+K zskL}(@+qye=>~6>!^g};H+*_!^9aTY89+|cm}HjhVioaic`Ly7)QZcZy}Lr9w{*tbzS{05pvxZ{mfAz`0U4H8=WBa?)kA zsUIK-$TEeZv;B`v$3i$AviDi+|FGHTFBg*iyBlUj^J;&Ccl182vE0v0xE&4%gFR0B zc0JW!6g0AGR~9U&=mNI;^cIQ!3(0W8~=ONkSwI{=H;jc zKpT*plMKT17f0X?{rq?Xe6tCl!SS+`mnq{lL7sQ=MV4yk*&hKLtpal)qw5ngpm-7s zxmHNnUXM6ZGX~re_OZPFC2f43^GE?Q^dL+f7V}Px%|A$1ry6(UQG@euN5ovhd)RgN z!C1rrADLPo7ENu$yRZl`^y4A-ONvH|11u18Qut!^MiSK_8}R`quVH>wtGxIU6v35q zO;czVOGENNscoNe7Vt|;;DdY+(_q`p zcevrnCaT>)vk~35_aJtQ*a?`oK(Z!3R5KDE(f6rQL)EYf_xmtTLrH80nPmxBL{l}` zjI%_JbL!`jei)aUEYnI|rcY`alfCg1JvDcH3hXU3lSgb%b`}nxjeivXa>#l=J`n^j ziZ%pCqLkuwUH1C9`ha8%?#iq5!vlecmCAb$iHJy&7prcy+gjjH$p7C4#{ebfCHuDw zEmH{F&ImWWgcY4k-4W0jd&XY;PVp`wHfE645pAQYr@S0uL3eF?W z+YG*lXFwKJN@WQsTU|G{A+&b7p)#>s#HnaRxc9%DlLn1xo=Eu2z!La&obs+fz|0_U zf8^t|cOYGLC|Xp%?C`r3NMtIO*L%p|BHXq}~~lcIU*9d8jV{=ug8at9i9)93=h4JbH{fkK=trfOog5kHZHP`I+>E z`*^18s^PhKvoQY!D-Bg_ZBk|bsx0kep@8AWSj6&D(7z*9r{NH3y5LndS3X$KpZKzi zJ)-pnFPj>2>h9$0_Qa2=KOX|S!1z1cKAiAo_kRuRwPUKG!`gCz#W{y;3(b*~qI`45 z^D=f-f@(yD$IUG&nkFw#34!R3Z)Pk@4P@(`HVUwagnmA)D?qMyYVzjq+A2J)Q8MYD zhfdjuX`!XFazRAXMxrj^K-2;8mKeC4(o!6#YU&-ogwe_w1ObVaJv<)Uy=z7SeZNEi z$$hFn6fe}0Lmll(JEI5qSr}Wt=am@R7JlHyJQnRXO$n~I2eXi^XeYw(DxKa8!I_>H zjBOXr*w(?}FBh#igN<0FpQ7{Z$}X$+*M@L)^T!8cl(eEElzlaF)J?@3nPb zi42X_OqrN;TXO@7hpD6t0`7VSv~+H&!MV)(VDtcTdPntHE8d!w98Q_{wlfL*bi@wDtw@)UNQj?5%)_5S#4owbaj&(^iwmJH`)#zrh4iTo#{;i zi)35)bYFguF_JC#aL{NPprYwfY!psYq^)1n27qkhT=we`XjzUAnWqj&nUIq@S#CX@E0f@`jI96s{rTM|^J+020U;r%yHU;D^}6jP zKhSlF?kLckj5fjw-5jWvCta8T=nUrlE;0+<4alv|L%tz*@Rc^uUUfh`zJSrp(N+Ho zxkh>gPt)-!U{UKPHn~zQ_sUgrZA7hJ3A~eYcly8-Zd9T#Wc6pg++#PMUS}W(g47{e55M9!9xe% z7@_$r6Os($%U=CWid$2XyVg#_Gdd51%7aUuH1FYQB3h_sM=(~F6;yDKmUm>OV%Gkf zVNSOMa&>T#=t^ps2@=L>7yGaBK4V$unolT1W1M@)&QetL4X9=r{ZXMLH@f@xf1803 zt@W_fpNtUZe13sWQDtwCdI-^fTUTo)I6|*&nJ2Rkl^Phrw7K&mH5gkKTy>^UL83{% zHY^b=@m79$iUcnK@sBsE0QrRgRV;@M57D)`58oxip14nk;dq|AT?Zv*5>NNUo_0x7 z)b3m@Mj0lti9~Wt8>1EOS~;5IuScG&w$J}z?<YP^Kx(vx%PCfHYeC(T+`iaVtL%TK=hj?n4+px%#Qgus*sfUa zTIh?G8ZkqngRr!>Q0l{`cmfb&^fF5@EB~J=Wr#uOLC3zE8av@}Gp9IawB2z zYrPg)5eV@H0qGB14usms&ZeeR^lkk~h5y?CL!c=u`Zvu+2Jb6P--Hxq9nNy%a0T)Y>@R$T9Rbv?uL#=DJ{5VGC<5c%AT!Mz_r|b% zq)L6;H(*s$YoQH*bm0ybU4Lv2+;8j{ohF^nptU|ux;mRN9n|l>sDPW`qe2rb7AE&q znTIbg^rrM@TBhhG2OW?cBn!_(2h9AbS?*C%Y9c5P+VWs_wAlVs%ZZ(N7uo0*QBrW_bTryr(C{!zjkJPF-#6-O*UAmW4sf+| zG`IC!ul=Pybz$iJ%?$Nj(P>qu&f@Z1JE()G>v{JS z9(F-B-Hs~W9CZPO2NMa9teJ$h&sKk@#x8TkT*2Wu{Il+O~2;j(!v!O#AW9~P(b zEjDX2Ld~BIdaO?_rKx$T&rO?rWeI!WbOf9Lt|DAl86QcB+XamU7g5J9NM$>wf;+aa zF7U8~{@W=HNly3fjIXbov64nN*Hu4FhFbI6ZE6+ul>_;e9t#FrUS)rD`b@&gMBGR- zYA{v7O?ikM7WY=)D=Ev@Ha~tocR-yoP-MZ_qW}BgYZfnT8GE7K`!%0a_xGh8#<>c1 z=t4!8#xeS0Y|ky2U`ymiH2dR_xbjRl$XsN5@4YrgP55%W2SpO$3)tH}zv9g4p0y2fMN7OJ; zbcZE4>oZ|&6e$QeWFNzf5mZR_TvB{|v`u{BLke+aELRQu?E1dfB5libLq8$B0hiq4 z0j{}=Ver6IVW{<>Up>H#joTS>*G?5%19lG zeug*tB>4s?e8XczZ&C$h&v3~Sk-t`;8n$2TdFk+v_!28Zr@hG{J9pJwHhhpxvU?=) z0C#szM93>jIDlepo`2u@osepS8|j6zKN-1+LVNk1;(8r;wbk5~e~?ST)DGRFE=E~f z&fB=geB5=9fu9k9pQIuEUZz`GjBofghZ{pGzHhJiDW1QRhLLDdin4{x3*55SC>`f- zfc|Bk%8zSeaQCkDIY_)V1faa>u+!GyRk1>d4oO?UXk|-BUb>6yoG{IxPv^?$N9}zdJ zIYH-9xIaSr@;cXAErFHbZGVQ=GANJJt{pt^3e5$Ulp(JF(#wYfB`vc49c4BAAgGq_nLyNXjYH z^GFJX1u51d0~y@wML6%|=(1el`odRdE4#O`6FB?*I))Y>V~?Pbr-l@t<}2Q^(3**o z7D50OYf!L4Mjy#Oy+VBABvyoNjC6P4oNR@k`E8dgnm^-$J`7E9{3_j-xBmJDlZ8Hx zUq;{l)!~8Tm32x7hcc9tJ}w^1pCjmIi4*5c0xQZJ+p8cof|RTlSu? zY37g*?-}Z33|d~Ro^36gzkgpV=^4|~(w66dbU)M@oxHHJEh3qrUS(rP+NnN^s-B~jke|I)aB|e9|Tm+ zWOCo2bb9)**Meanp z{AT#_fx4X1DjmFa%rII<56E%5#Kn2Ko1l&q)?&tK6?jY1xzJS*?6Hu1BtmUoo12E- z&XuQ=FW_asVdISJEDhPzOm@7NL+8g;TndM#$dP9Ft?rIQRaNQql==5UN7S~dg!{QN zvod7TCE;^>TU)#_w?Ct(7S^K9nBwfzdKQ|^pa-J##C0@Xy|P;}7>Uh+I|62e@hZ#; z)ex!!*#hnazV*qr2 zUygt}3T{=xZE`cTIKp6|ti1Q8sdFoB#T_Iv|J1!gu*?K7NiMh0@pbune%i;RcdnFW zdM)79XlgR(x|wsXUxRaU{bd)qjMCBIvjg-Z#S%#^w5+zqGX_X8$P z_?~-I7la|2IPk4<>EVeHob*s65`IJ);&e5F!y@;$6Uv}ee?B(e?$h^gbIZe6a~#>} z&V-7}>-qwmAX+a(9jR#=kjZ-0_u9WA^P9}E77&u}i2C`VS2NwOP=sXEnrrEZsLOY4PvjjLT2DNNazbKC)s zAZNrxbP-e=!<)JIZ9H}F!04!eY>RI-_{r=3;1omgHc$0q-;4qbk!@t3$0Kr=h|9Tz^=Aq{-EWS)~KLuvqDz01ZwVIf|_s? z=-|dRLDx#`fJZloiIUoG&ywdFiG3^qdxx29OsT6Cp(7S0hbO(qnxeoa@vug`i+{Ys zO3v$E3%!8PlCpplh`xid5R|FeP4cHNv3~!-m?COa6cWj0=Mks;)ml(VBksw z7ODJz9SvarBqtKtBA_W_FU}=Of$||{vW5%ilev!mk@tqg#$C53-R_}Mjv~jij(Q+O z0lo{wX8jW1(z(1RH;YL+_gI5v$f~*PUWRW)YL{3zBX^5(g`FB1W)E-UjHGvA=RAJp z3ZUhiVb#Yj#U(I?bYTL_9PeGG#))1NRt$c!-M8QBU|}14|4&C*grvG8!y5|EZ)r?H zDR_rer;;a6R7Bs(fF=W|$Jc7%i$~L;A{ONZ$e89aWf;Q$8`}>nOzhsqhnhcoFXr%}t_`@V zk6iA`0<6-9^1g^#@Z#NJ$YBMJ)rNdt_Pzeb`NkzZlI|@sJr)Cx$0Tus6Q~+d9#f=I zN>;gZM7EcB#FyHILzJyBY*NXfmS#3XMhfryUXiH)|J!gs(Iv3KO}R`c$H@PkN@Ce8ifZKVXoSs@3(h!uCV> zeernz2XiQM8BgTF;^w? z@bDV0-5m0J3xll5^H=|Bptje1n+v6ZCH5Mw@QJfLy>h5@OLRAQUECda(5t*QnsqoOXO*0c#5Q#>S9_&zt@j8Cl1G&x{ZvP)_X(?~hyWO()=OE8b zUMaJhCYx8Q^nA+gi$AshLs-%BN7^CT-bZ+AUx2MD(yNT8VSGVj zqyo@TVL%|-%V{J`-Yhy9YysNI?ysO;xzZ)myJx8z^ByJxR7lqjVtt_AIou^yG|v=B zf~6s!tn|=wKN|Nd?S;kR!@D$R)Fw??coK9!Bre7LTt;@kwdTyTd_jArdaG&0 z`%DI?&i8g$spczr;#v1cd^AKXF+Cp6^W0dYIEa0wX?Ms7sBAvx@>|&((y7tY890Hu zX1C`e_SBz8Zfmvk4FS|Jk_~p5>U+{HPsYZ(Z*Bc67pT9QeU|k3{l4W|eqF#L@>`mw zqCq)opB^p4vlM7cIy`OY ze3c_iih2tc)W+yR2w4ioSbh-q=zqkjw6%G*gVxg)aeT`=5Vctl^lsqxrO(9*-Tf7P z32{F(mN`#_uuV+#TE6v~=YG3C2Iz;ey>l?Sm+NZY_(uJ_iGvE`nh*1ykxjedC!9|heEg3! zdR&zJ_@bzktHLg{ZB^v5pYDib-DACeylqhN>b=5T^V+CF&KSV}1a$yyvgB+|$pi;& zZ-2x8aEcuDos^+)0F%vSMweTr@gtQ<`&;}N8MR$^UYjb$<2}@q6Q^_Fu}o-1`wOfw znSJ&ip=<-2o&VF51h9kd1|<>LL&$)k+5B?H1|G7WXk8li3meBeEzkmAW;p_7MOPnh z!F07Ec+%_jBf)6vsd(KzMoD3@VKsiR@h7X3R5fJ|Ud?ZisF~uQB*U8&V#z08yi~h% z{Gfh*tRJ1NK|>A8XX8G~XPoQA7%F-*TCprKiDj0&0ygF8Uwc|xAH~PV!{BAC%kHYt zUA4B%tWZjQj&W@o%Z|Wmsv<(E^u58)vO7tK_1J^9LDTAGR>y`LCCA2{FbrFyr=KOZ zclHi05QZ9omVqRQFsv1A?CUq8em^_$c!s5qYFh-u{-mYT*3{u!I;zARb_b?%P$|j5G`WiNWppMu) ze-8eeJ>v)mjLrB>K8;A_j%`+D&6uT7S=_{c&Yp3TJ=02P?OiT$$4EFFt7h znsTR0t?*crCZ689*~|#X(b?iGLggjsrCycMOXCnQ?o7sH;p?^WcL6`|m*;%P+fovU z4yIKqw1uve0mDRcUO2pf<2n6@j@@NeB6R(1+M>pA-$V^IXC1m~Pu%HV>;kW|c|s`m z(0ZWdlW+eARgTX>vu0N94%IvQu_$9!0oYIMeWeSdw(07F(>|o&uFS}2AgxFOoPayh z43&wF8#XI1{K+73lgyy$2>aRm2o+ugjoa_D9?O%nbOx7a)YYO4^;mka$}Gs08{<6Z zfAw55UGKQ)jB*zHiM-;T1GiT0VzJ!Jx1i!1QBe+SBrH6o6}jMi<@=W|+HLwphfuGa zVT&RX-v$N5;sCM%0=RIAPc-}4eX?uV(gbTDVovcu)sMMPZJVgJ@4$nWDBJGI!!%ri ztWX_^1n;h-YEBAh}botrN<<|K4Ue7lrj`~w-DXo ze_cKwF2K&$$jTUkj`Ua7XB>>@hA?dbn)3&+6p&C2^di^Rt_QW`02ggsxr5f@8VWMC zYc{=K2(+M?F7Uzz`|3BPqN`?45D2F41fn1S9U|T}6gbcT>+k#i4iAt{+%AZtJwOd| z8{9)rlf&l1U5>r_BeelSKdv0ukXJoP4R*Z?Q^eVGaPK>}MTGr)K)BN!z6CGr$U7(; zJ>qM!v&wp8GBmM@>cntP0-wr2JB;CL+8bKyr|9{5A{Ujn%rl$aHQ3>~vkY&3Jj9%B zFQd3l(T+ZX3ZRbm=M|J;zF~;kDF7E@qojL}+Q2f-i{97xB(magO z>{=8?9zjLxOh|Nj2EKCZm9S^W0`>-uE1$)$Bj5#1__bQpg~A{m32SgfPzGXi)QD1C>Jy)Tmj8 z1E*kMk$>E6wkI+t6qA!cgvR)+oS0lm&NcP!Qi+^!om*xupJ$XtD6!$>m?1T9pE~77 zM^|2ZENM1RcT(TVa#6bJFHb=90$F|rXd!?HM$7DZx8Vr6seKK}>AnHFOk6P;jlo+iS4Qf8=3iNDv7G83V@Gv~ey?YW); zh=O$daKQ2T6y$1vDT~?8=<#qKMtfxHAO>1MTm3LgGRKG3@UYjokj@1PziiDYO|WA4 z5Ts5#-Qu9%rtzUqn94Yez$s0X&z^(>CUyP)yN1L6!*RF*^f4;?1ZdyGShRK7HuD;0 z;)du(wFDk{Ov;pG6b)wu$e+}|)2g_>shV%XfKm&vuB_MMJ7JV%nq&FtTOLQCb*qX` z%0uC9-m^4n)@ffPYjM^Oe{$$K@Yj2($eb~a%7}LkQdn}z>u5eY;A_7#SljC&Z>9%V zcc*2|y9NZ2xNN^0Uq>ptMtmbqcRY2eB@8X z93IsYue=zwe092RI#sb>Y)#WoPWY`*cJ)~!nWhl24b3QM=n)V*UV4xwcmuQv)R!cGMp0I^g6bf^qEAE;Pd#`bC8-Y3P;rtM3k?|%Ql+B^8QkxjwBxiU zcP5EwZ;9lVE!H2DNSqIcKVQ^Y;kSi+0py7VIR{a*1vA%x7`x?Ik8R2*GmFc_ufQ(O zCjp)Q#VUpgNVW{1z&#LqZc<)>a zB>oH($ToYMseO*zR^mcaw=?}$y28&fkR=aje(mSgDgWJT4!^oEa3)8TzSj(0mNByN zA8>6T`4a62D6MA`3DDPC<8cDm1K6c4xo8MI@&|ZBJVB(EtujAE4d$t$p9>% z1+=w4rnv2F5zLrlC`M}AZ0IiK*z)0cFGoaLK6t}W=WKw6ljATWG!?IVT!jW*lBT5XyKq6?R}fyAzEtlgYT;n@wHfYa{O^w3IC z5@VD9uoAuh3CAe=vBcR3iFz=z__IBLUKyVDRWY=Ue=)rfL}R-H$i} zwY{%yC%>!UxT~`^X(>|ZuK&0mHE<#ZF!VVygi01aj0(gD-K}sb49c|EM`b(->?xd7 z_WKtn;QPGATD#7cW=Bl`F!0ovfwD0bNgQl4g8IsvJ9Z)(jbAwDrZYcGMK5u?9*_c? z$1!iNsh$K9A>x{V@oZs^`?f8--e;sEV9CtAP{$!S>dJ%`Az8H%PFL=(x#b^{Ja@Od z@)R>Y^omTFzHB*i%Hu<=eIwrbNRsEJce;B!{XcLOsccQIEFe9kt}_`z@aE^jT5O04 zSpoHUl7l+aF%V&NIF#Q~E?#S+mSPBts$u(Q)+k$QJICt2_p_e9 z%#lp$Zo&w?7%g!!x7g(cNU7X-n0@+zr!o>1#0WyEh3wO0{XY2B+cGs!X*^QXOh@TS z*cXF2TVV{%&N1}!wEi#!x$Rq^`R)v@y;RXm88lfm$BZ4w=W&yZy3$R?*o*^hlHU{@w(j<(%JRMokBFW|oYc6FC?sqx95Jv!dg)I+lHKomiUKpeOAi=J3Gn z2N{W~GziF^;)~b)4#?*R3nac9FE)0S(_7OAE8~muWJ5OiClNmpktS}|cu7P6J32w^ z7tVB(*P3J$p2mM-=b$g0DTEN;9~5{LFy{R+&=Z%6H?f_y*n0>WEVOVSJj(f+Vn=@P zp)sSDej0fnC)fl7r{vR$J%pRe-Q2v!E;4+Jy~yL_8D+ZP*An={7V~@w9j*W&6up^p ziuiRmsORf7BcE|blH?eIT+D6W*J7l9$uEH(6+xS0p@JPoKt<>0h@3&w;2S`~yRoWe zmQ!~2jLms-9n^7;m9^}SS_y1>?4V|L+bYd&S2}U}8ytnG<#k=>9W157TDR!^$R0zE&18I^I?V zrR3n*Z{VIUwL1Y{jqtWP=fHOy(c}@N-@IYBZr)!6g0&Ph!IMCzTa&->``4Pvo@)lv zEJYYKD4KNg>1_md?&^shO)C_aoax*+WJvh3(|WDn2@(mbb@Bxc=KF= zf=m0;eEGe!sK->ta>zj$Dqc`o;%jEnt_@ulo4cjg*sgdEs-&T#8Mv}5IL?Lc2>j?P zRe6*C6co~mGPsZhm){jy?ordu+xuv|^jbGQ(zQ z{0zmUg5C`XwcW;sBOSY})Z@Upc`SqB9kI1S35klj_g`~lMbl%0YYf9a9R(5TEt8Ld zGz-0-m3k30hNHi{HrvJ)a~}himt_PCNRgjSL6&)J#6eFbN59fE?#~5Iuh?r< z!;V)Obhm#PV%yA4O`X7-u*_EtoUsWSI_mL~UI62u5}4UtW=8IT1VO03D{Ws=XHeK=lNMc>Hn!1L#d z)Jv$m+qSKE@OX6`!hOCIXf7s5+o@;x#yDdB2=+E9?8G@WPotbLBFqMF6KR9A@_{&` z-&mPMyWnKve$rysn$wW}atNRSr2WG^N7~jtAfPoId|!r$+p1Fkr9x1Yay`t_LULzF z#wYc@zPNH}(Hx`c3(=62+E(R*~kBOc}o#&ln{5+7j&nj+%`vU2h0_tbl)oY1$ zu67tg{HipbdP<2{f=&As{LtR0yfK=QY;5}- zt02coM<0fC znJQUh=>vp}q@>Dt)2qv^03Stj06q4HAb2$Zte5Yi`ZT#8M9QLnj|XPbbMyMXJ(t2Y z3%IkN7|a&-`1@##r6?ETWo#q`LQer8Q;LtlOi!*rlR`IMC*e(iK~db5tG+D>L1ZP> z&S%qqR|?=?$RdG$2z8M9w(z?-xqYgWNJd*^Z#)`;Dj)F%(2WqzoXEAzSlLzO@;SZ$ zSOarX=Mx-+0aN^#X0V;#!AG605sS1};&N+9_7}p&_%APn8`CX>>N8k7Q$|IE4i9jx z8^=O!^P>eITPH&EJ#xJELasmJFi07F!#rELVzJn)x&j(2Q()d|DDRw?`_pvO4Wp@K zVq5o?Mu0>tAxPsd@1LI!s1TP^MSzjPjNPCKL=}S7Y4BE?mLxe==>kjBa`whLpAYgJ zbfMQvv8Go9TFr~3G3d(~tOu?~`EhXv+8=Mo^wg};kwi%)9QiJa|J|4NFtv#2)%_NU z1UWBgpNXocRT8n`Fzt8{%96*(D`9-2YH^ke!8oNszJC`HX+ll1_dQHv6-5evsKKxR z@{a#kKDO^k2IN=$x?F7z22Q8%q6F?*wzPEq(b6`rU|c4rn1gSiM@|*CMAqZ%kp$IzU$mr zXEMl8r>V2;{)$xI2N>siPI7a|G~L4MImyG)U>)_XMSa>69d*1Y_t+bmzN@LRR%rk! zuXn}qb62fq&KTNQlg^hti>>6N&NR~^-(bNUtubH(x&t=$zs*4%%je%TL1~C!P>H+`af-jID@lseB_-9{kTo*nt2{Jk?Ii`DYHQjXiQ4dL!bcW@SjH>B-!; z*9@O-ctw0IoYozuM0@YR$IVE$!_v;&Rf{tbe63Tv$F->Y_g19lE4#&--9iios;SlG zhsvuwqk(1Yd#p6qdmv7Yl{rde(}>+}TC8H!4|yPg%4MP{VVFRQi@AV7Rwc^8oqayO zB_{=BNy|Sz>LGyl3IxbbX^0}q9=_4*l#x2}9cl6x8V|mSQK*0F5*CJ??fjK&dY#a; z)Xzg@_oS-IkOSkCqNZN+Zb%z@vdf&PTCi1%WBYEvymR`AppQh*TFZpSNKHZt295)D zhR#Tc)!<$mS{I`Cz-#sQz-}j#oRmWCl^UVAG)iQ>c6LGg8?8dnslf7ocSEi0KZw5y_^fXskNFQd zVjD=%%QRvghUIA+=XK%G6yxbAqNhc6c7`gb3tJpf$5gUxZB=nd!$i-nyffNius@b=j$wN%hMcb-${G((_$HTvjp1<7lw&)j5B=+yLU2x-)?YFZ6u z$4Q&PcnN^dbH3$%%jEnltSsZL7x7JEtbG3M&`X(#G&o22x*jeZPL}$cH>&RPvU-6e=23Hi5P64idmf~snSH^!_oy|Q)Tt^H3OK7i& zn{=h>!Lf*X^9MtZ+;D`GN$Iy7j9V#Sfe%_-A><#_25Tq)K;qen_`+wU8C9@>pH2E; z1Mk#aq}mqYQP!~f5|Uj3VEwyl!T3Y+2G&1*oHR{6Dhl66S)dzcX7<>-%!u!LZ=dB5 zH0{Kj4QEKy<3Tmfz93j-=MU!l=|*=)Jff;so+4-y6s>E+Tn@Jt(3%jjSSwcb`=sZL6a_wCLakXhZq%s7VeNE`~M#vG|03i&CtG)5v)9{I&+JEdGmwLhEfe0G;-EXPl(uPi@DfQaYxkUxAW?|->omZ1wW6R~C`7Z1m z?1e%9G$7u5A7*Nf>)E*B;?Q=ApbctAlJ7t6GerKgw;lNPpm{FqJCkBOeYRr`eO3mH zj%dFyBOZcEtH+s84MO_ynpXuqy%*TaT*cRj9epiraM-^PB9t7Hz2yyV!AJ>w0B2`d3a zzHB26>5;x@+3|`&w126KvXfc=$6V3r$Fs_KB=S2I!^}M3Wp<^f$eVsv0$`GG&PPO0EkPPorm(%7pnZ-Msz;cs*iF50RUKwJ1 zB|=P!Hr|)_4IVKhYI+yMk&sA!TEz3?Y*Q}?6CsF?J(J^zU>zB=(KwbDNgfsHmA7PD z7G@r!o;t(EuWo__yv>+|PQov%L)t?5d#0^iQ})AebP(qABuJvlHAg=5Vw^O$XYMI6 z%=<&+*cn)Oo4ARIrp3M-rw#uJE?z2mwgKGmo_nTraR~TJWpx^6#ho^}q|&Mm|7T3# zH>}o^sOaAuVx!o;hN;HIh8vUTds28VGg9)yzfzY7Io@GTUE7$Db-t75PinSegp1aU zZR~9CapN|2oDz;`J}bvD0|{_X4iXIHA6{=ifM*n!nva%A|ke0T9s#^v8+hg;V~ zw;a$Uupsyi*$ee=p*h~i_f!GK*wF|Dr|Z^jMEDSU>5Ft zAX(=125gtON_8Z!JtUA;-w>ENT_d#=cc(qQX`@({M#ty@i2|?mifXB1+l{G={vqg)1-Y* zu~yg6i%DeS4nW+KGc(EA3y2H1M9J%j9h%8t9!#KG@Tz*K^$9fiT%W+ZD+u^vI}*!9 z)07g0Wg&X&EScJ9M~^%!i^?J0I#@~P5Ina`9;e!=X?R3401`CmwBZ&};}^{aV>898 zCe`4j8qiPN?NYPkl77sDm6~|SWy1522qSCL?0SJ6E!6k$MCrSs8Lssf*1eX@j>gS0 z#!nqh2cH9TSh|E8*N1g_>N#@BBwjm1X-0hp05lnG-?geVEF@#g=ggeFDj?5?Sf2bb zj|IzXRzOUSH8T4YIbZ9!RU_AxHHl?P{D zi47__>?j^YCy#pTcg|frlPnVDj>Wj0aSDaa!lr<5us>+5?nR8h3u`da`8#L~UD4nE znP8%{8tnNx1}=bjm5Hp3cTY??C2{bBL7hFSqvBSUms^9{;`FSB-lCohEK9aN>d|3B znZJ&$xc~w{{l5q;P2psnNagLFwF1`|OR()lEf2Aai*?cKonD^T9GCTG{4N}OKS*!8 zpK?>Tyj&d$D_?)}8~N7S#h0R*1;Ad6j!xE6lyaJ@3I#meo9|PRF0R3w^OH{2Z;6jo z6U8You@{B9i$$4iI*X0_TxBXBaKOK+>hz*f;M8q*rkd?e% zxtO^2K7#8pbwWohWG?$M` zqGsw=>NUzw4psRI@s`Y&kVZ=1mUT-Spj>z=3qQ53E|JY0<$#@pPPZ@1p0EyjLf3c* zodvj5!@)3d>H`*hd>Ng1T#p6?c;#TeDusXBJSWI%%)bQmC?1S@HqNM&xnJ=IPFxHV zy)HjChe=JP7g#^V31;ZOyj@vulH(&~wo`e13hyHj;?Tm64sZtvTAt(4h(y;a$`Y!$ z9qNCVhEl(7plS|?l{N%LLw@h1C$;qzFIQCXr<&6>^2~wKjmKiP<(tt9@_^~f91b1Z zY=fQ~cNE54(5N4$x-GnduN=pBHif-yBh{hTvx?Y;d(q3v3Po%Nl=KgZJ@KYG(^T3CDMJgEmDaUQ$VBFcOj#dR}d4=UcD@;Kjz77X(1=5X!Lw803acT zsAgNnWBY<5jAShV%$of$DOK+$W68b&J#|Nwok8mqUah)YJ?(c}l~+zHqE`dH!Qk21ASCSL@D)DmI-f~S*{;CJFyYT7)(q3kT=%9+W&o{; zXaCN82i=_~)y^NTojYpJ*;rktwPZelus>VqMX93P@y2YDyj!H87?JuEVPjcJl?pU@4DZ zwIsn7OB-7Nu#oCXr8%=&)htLsAyhklPOZ}0MR0Uxwe723#OEw+rd?2{>2HdBZd&zi zm^_+}j-Fdd_xop)*v}UIG<8z)LJ%x8S9*~&mb?Q7f1JD$tj09cFcZsV4$ahXV!XA& z|0Wj89o={&r@n7PzHM{s0XWLOJ3If<___dSPH16IN0W=>U!9jvE*mrxEkPQ%0j@)%ckGM4Ri3;zHTEkW^< z)b=ng5GERPlhGue^fOzJmVgf22qX-nlF);EzCi%QK0Czx?U1$)7n~|$XL=;zpgebs?D=hm zr~KIH!8n}Yp2&awc?0HT+ge+bk{?Q-xT&lgOIsgIU@IU_wb4L7V>u1FA5Dx*yN#39 zoC|jgsdA2o)Wt9~09dl#oXTqE^;x(QFkx<-Cd2ENXo2Iml5Rk(JUGQ7DDo`vzoKw- zJBeD>pdvbMFLR@2Vq1av)h%7d7)AdxjqfM|H;vVG@e@}ZRAEt2Lu(`Z=IHX#M2V}J zd`6pU)C)ih!c~!0PoYbiyASE0gB2XdGH zK>Dh#8?~HS1V;xeqz?NE&$9(@0^q2}yh47=%`_Gxr8re581Kn&9*#SOCmlDwGUW>k zRdOPsKX1-SU=XuZ^P)^|>KGxc%Z=4qBhvSr}Z%g?PvX~prvv%>x%U>ug8xc*J_%eymLnDa z91>oDeEI^KBkmrOoTxz-xsHllLTJ$9dFS})^!IT;*cyZalLj~A#nLUcbMg1* zQf>{=fW?nH1PmHu-QO2~41-@}XQDqiF-zRm+m5wTw=86%$HYp=;83xOR@Kq2jHK|C zZ{4PCLgaAQYOBt&G38eiE||t){>jy1rh%^UPVqy3*C##0!s}~8+4dw^va_wyQ`|@h zj~c86z048ilZB^^VDCzoM{GX;s8JN4Wwsy?0I@)ble-}Cvx%-iseoks=U;+!#&-e3 zuo87E-T0GLi;t8LMY+S01Dun$si$-E=Q?c+cI`TAopLTptQPRM6iJZu$!Y&u;fi;j zaFU0$jUak|dNgkVq_+K@)*s_9*T`|AGzg;=**M+t=neG`02f)7*`~S*($*y$hIj&9 znd=*p_?P`lej(vq+>CcE`r^cNjt%|`2|*5}Pq)m8JNAG+)LlzkxUWWbYnb0cLB@>6 ztW%foOAgh(%JwzYeTs;wKx8PSEU#w?NM>{v5)`gCb9gYD>OY}$aB?{23$gZ>m81gi z5fiT_vjX?r?@KO*(>4241JRfB=?-_T-@zEsQF;*FBu3Y&V3A!H1c$;5wr4?CwH*Ab zHm*`%FcI>;Rejv1z1w3WXhz`jT#2M|*UPM2ye&wbu=Ad2fsw9y3B^|2>bO1q$4qvh z&ko4xufbv0bB@Ib@HqSQDZm^M7hYFO--l_rH%JJsH|4-n5!nhQ!(IYEJ-*0DWMjpG z6!f=jsQ(r8+WphH?tH~$1SYO<3q+sW5n4D-tD`soAev?x=Y#7;U)}B1q+%z=C%D~Z z0lh4VB_mA-Jtf-Vk{iO=&1N7iqMpEaz&DyexU!7sMUux{&Rc~K~E(YQ-pbLc8NAf4eNRX~_+}wD;ay2Q8V=~uFNuxs27dWTi$TnPT zIWde-=#vnh&BJ)mmYgXJ~l5TOk&3{3{~v%`|3- zY6ApFjT>Sw=R;CRr(KH9bflnfE-QOD>572Rt>}|z+X@SMfD_eAeh-=y40=@jvCW_? zB&F(Wd*Z8NCHu3y5w$ztgO4l+I}(`Sg&uKc6U7Oi%X}@MbE`gkn!LFdSW9>fuJb|? z!7^$T3CMkOq`#QJsl{XcK*zqgpFuXnext#(eL(%=-src)$jsArR{&5}4*SYJazBT7^A^Tz4=I;joGg>PS*sSJ?|CvrT3aESr?Y^NDEo#zM1Ejj4rEux*x9wx+_DywS>M&x*hBS13cT-fYN@Ri&i19XCPtxfL+l)+w1q# zbnnyb3$4g8SWcJ6h(j0oC9FoJb+Z;oLc4irl?`U-fI^Es`H|ZNmT!*GromMjM|u#4 zdLkkoiej)qyS5q@gnB4az?(aj*?7yE7BbY4};cS|5c84Esvr=m}H|w;mckUhKQz$v7 zA{~$5g+6}2L`wFJJyU$;J(pc^T&W$znk#6gjYUSHv_rbC`65+2+thm^1yW^x&Y>QW zrO<}PM@n?)B%t}!gEVUoiN!LJ?CR^U#h7K7^Ijf8cbZ4G16BZFi&Feb2H`#xmr%4H zB^z4YK?ZOmJtKZ5p14K{cA`dSjIk0%QJtu84m?`uf@8}vWn&{vi`X5Ik&Y$)uZ?r~V-Vzjfst3&nP-{rtbs*f&z$d71On#z zg#5kSzYO~F+6<%RdcLyJEJX`@V%NUw)AdOK_YpJOu@gGSoDh2w+=lksqu;j*EI#JI z{T3w%N_}Tv(=5NoD~e|1l^H>O*>y8iCdew` zq&5l^&AzV~`7#Zn<-VqvC>nT-;X!z0Y}D9a^$cN(i8zqdj;Yo4mJJ=J)jK!vl?;kb z`TU6-D{cL`5;-FcE@&lL4Lhoy6_6%RE3lMvghVfJT@~CsztTe`GUkw({G@e z?@%)6c;utA=i6NyY<0!j(yi~P_aV~|eX?eRu%xo-` zf~rcI@(O_atSEs9$7#~n7g7?w1J&^7*KKi)@k!EsB zQvi^Cgy3#XlF7rJOAkuwr2S5OuyxpShpH>JI&cC95;eCwl{Oax4aDrYD~(uw2yEoQ z3T&nHahJ&Lepx-$>zoCWBZmfD_QJ)en&BY>9TgdVkAct-gNni4jL_NVdil)?I%3wF zFjoiFXyI?1n}+k8nmvNO&m=IyeD@uL?lXdT?!l|o3d9*UzvA5rpoMc!rn#gCIL^UJ zb}|Is%bhWJQUq^rnoCIHAom$y%>F|LGrUgcZP(^Qs%GM*e+>Qb_da>~%e$#7>BZ1Y zl=~~dSTZL5yYcRSc_&G~I(QR41?+rbRMtX46)lth?NTFzATr3%f z6g3}}Afh&=*&9WoifQGps}~o;*EoXhlYRJS({`BE-crsB_8W_v`F$pElV;=_dF7I6)0k4NYcwCsg^n&ulWo1TEx}BGFuQm z6%&XzBHhl>_r%sGmzjQEL3h$tUc9YcAWc=fv@e_)sWR2}vRl=O6fB&b(Cux0{rIKi z`8%=w<(85hwY@KX3?7Af8oz7^`(D$3TEQ)6F5$ zZAVuM6FVtm&7UaiJv#eGf1-}uH+NUPrF@tQ3MbhcQ8iS8bDy}a7*;v}Gc``lhGk1% zHC=m{MY}K2Q(XK<`s(a&0_OHN_9El2FG+Ldx$t`IUvy1|McJ!r9_Cp+zmJ0NmNiod z7T#{%)brbVK>xNQfNul1YGhGZyuE&R3!R~3(ll{{H{Gr?8LQnv7L=f;qz;ocUg;FJ z&|jDn88j{9NRTA`f@%ax>1m$}l!u*em6^xsySp@3wKcTYBSm17X_g|9P^&I zZQ}lEXEjvrvyk0md%tuhuRP^&hknt)oEqG$U+Gx8f4DWmR&$kE$~~zH)=`b1LvFw* zNs)LVNF|XxCJBLdX^bKoq%lR9YxvUvb3| z7##p{e&Z&8K#ZS5R`y@<`qnJcQnTH0MGQYd5q+((@X3*zyC1_UisG)6N0Ed|RmHEvo)^f>$c)g(pg`Tcd z?4hexhlw4qBkqTrD&#i{KXdKE5V=;ov)@s&WEyh)1{xj-;U$`@7JK4)yj&M8{gK)^ zUt$Cb(yV)jb{NO$5{J1xTJhhVWwM%ZXc@W0gOiLT-)w?;Yq53x#fi(>{$u}IgRxjz z0N_(#7##JVZB{{F#xT{9SAcqrkoY~4Phd;{4BQ_o>|Mv_Yk=4zeT11O8RhMk?~KNa zIODQruPZin;B8`A``+ zMkw-%72dD}R&Xek*rRt%>Y~GZiv^BzC$>rb5$eK1Rt%PJ+0a9>-{GfyK@Ly4b~yR z*elg0wDH=b1i0n>Yb>%IqrbYTx;E;{zkb8kQ0_>>iII*`Az=J-!ej5{?(BEud+h|x zQtvgw_wnjH2|s+m2qmL1PDBgCsGyCPZSK;*X_Y|ThXcS_-xx%V!%HtX^)>i|$_rw5 z-sB0aycanGNxo9G?=F%DQH(iLp%6v@2|7Kqs?!sl+~pkr)T!IphpFobF=QbW@MTMC zw8ECa+ju&`u_hg!4h*Ku$cI2=xQCGOgZ}YJv-~{dqpf(|I55h2lwFgKel zd-5vbztzsP*12-o1GkDsuC*iH=0@^yQvejoeXzs4n_Wfb6MuAd4LGI+D_&@9RoU5_O`ilgkpu??UFhgD1_85P$38*4rRa*#r zDLHlyZ2ec&S-<1;a=`?JRs9k$0=4R=w5IypcJ+Uk_P^iV7$kP1y%{N` z8rk0g$1aN#iN$VU$0(?=ekkOiG(T2`5#)Xod2F4aJ1XB@?$^)m)0Sz+LNgdEvT@ak zjn22ZY6mZ(7ew69rb{Z~@;>@5WipH?*yAT(x{lue<pl7GDz1bJm+K3dH6qNEe3bATiS4s&i__o%udAxfw1mo<};3ce4+nOtNL!n0LK8 z%{@pfQ!F^ToU8H~>Sz~kn!9X#!S$BhEeP^r4HDnziM(ovCe#d9<@S3H$EWt?f>C2o zTmt2{3uozyPoqiUq9wj6W2YF*q#F30EQ0kMWWHU|sF1;@4*F03VX`$76Lx@axw74{ zSKUt-%wr%8EMyLPaDMU@Cu4!6b9wojxCCPg4lS9X7&8!F)*uCuHfg!(a0O0$FP&6Y z*UzoTks$-i?9K&jeJDz=W9o6{+N#i9fu)9+5BwKB)G`Nmsonnw+I*JWR>#t(UXy@P zBpfBiNs$xl36tZk#%H~%FKlhaYO1}ZBLt|)8>gG58w?_Y45e%I8S|Po)>S>%+kX9N z0xC3%j44jMP&-uBVos=JXal#cptGmH=H(VN@`ISiJ27{M5=wjd11I2xfSi;!_6*{- z1y?$FM<8YIY%@j4EbPTP(3G=`iTUUO6SwZ-JT9M|dMSx406Oh6IhpwWM(I(bhJ(A| z_DImGIQ1}INxy%M-1`AhAZkpdn{V5GQ{v>bOoXWSn|A|>AW)d2Gs`n~-pvlDd$R#N zhAbjdbjs&aNBuc-YO@_AzqAiA;IEe08XVu%Qs|4bQquQF;dG`l5A}#vwAFq^b9(+X z0pf>q;IF9VA0b-$cPs;TAA!7{5@(j+g;1#cwvKyJ#Xq0<7UL?x3bZbH zch({J7W;#CK_dZ_hVS(2)!(MLRz$%nodY8#UvavF-h=HCAP-itg8-!c2Wc8WOlYKv z|H?Wj@d4aMF1Ps-Ni9ajJAyKpb=^f#`-fS2Vp1F~^uDU;Q&W)lI`oi!>$i9qkiYAz z_!drn!V)(qnyi!npH`iI-OoJ@@zKpl#SEs#Y_XQxd;mKCfHFQXbLe-=eC&TNW?$re zL(sBfkj{qgo$cbi1oRA>rA~==VX{MPyDYo3Kv7SJP5G<<S|!7Pgs=(h(v}rc{2IH$Oz4w^5tft@(@g>ThO>8>#P8CLCsIw zLeP$O|L6Mug@%#l;J*dp7&;*P%Wg8Pjx8!wy5mVqETePBd%IojBa+@TRNcJ4aSrvS zkG$fI@nA)P2pgS}Q^faP2nhko+;sh3JW^o@Ku-|9Hulavd|G$Lx!(Bn#9pP~V5&e3 z#TGT0Lx${kIPhgY_!$`FxBhs(#Y_abak(=}Qjp>GL&% z_e_dabJ~n>=!UEn_5#0L6X_wYbsQ~T*muq%U+ICo^;uP8R9M_lYU*ewDQrAek_<%` z6~*g+{k_61`;0CTICOOXcqsP#sqs3ZL3LyJ_Gu~Y(CJ(;r>b@%9p^ndw zZGtAoH~6epa{Q;^^M>rlCF$)Od!3D`Dh$lF;!A1Ul?u-E{_PHor{uuU?r76a$L%bt z;uMZ}Mi<8D#TTh(mE3Y94CAN>%acANk_Wyccoh#;kjMh8w>fKc%ws>`Nn|Wim$1>3 z+FbugS$T)>WA2e%77PKrld)8=VLW=8iR!CyPv*h1u1%wuRjp+_p4jBp_KEPVkcH&X z+-=o2+ACm0ge~uIcr}C3N5JuciqcDV4VpDNMf&Aj#);b%EKGQJv3Ck3rYffWbW$3VVVa>Xb$WGM zTURQracu*l=7?;|gXJgx9=5lJ%9FwQTrwx#tvG(A<t zM5FdNN<)#SVtgAI@^{v=T_Fj02eXIt4HHuYhvUk@@?fT`+Y4z}Z*4qk=B2i_>hSNw&0;KlGO zPx*joM|HyA(=h5{yj8xG%e1e*VYUdDKvQ^)fng7;>CjIjhit0WlI~~1_ozVW;fds} zvOl#@XDW8An>FtKtG6Q_R&=z}PkMWt>N_7@MNEu8EKEK;-Wa16u6|ccNsWxo&ZZv} zJNH8}xX2d*O~zRw?gp5Hv*CqJY2F6Ep=IbXAx-v=j?B$GnkAy!s+ zC3i2U>y9kW*%1$3QK}fbK0s%}YETOW@pIJE@3IzK`E}I-t0tG8CE}Se6u6M*S>S4e zcQ(tufvv_o)nrDKYTMA!OP3pVL)r1m3_T|~c-OGyV;GQ&nf~4Cm5GA-CWWa9u128Y z?QLRkv{{yUrGUypE!~qOotyk~aEDQ3`(gm>#LNrMsXxB_x`%?_Pn@K<=J*S)8mFVR zI<1MI6TvGJr2s zlK?jR&^nE+A;bIx8wz8<)rDbVU2>cr5mIZzv6xX6_)&+=-(_}hkwvyFQ-S{-83F1( zTmzs$NI3PfJ>)jKMza&1&oe^30a1QX zWEf57f}_bjE9wsP&U3j=qxHsR5zyjUHNybs9DhUrc&AJ$@bY(c!{D^GayM)2>cg2# z>?Oq9R|d4)$MnpX6RxSKZHZD1jf6X+(|hvRrGXQhS(HK+!3_EW7F{_;!c+sm&2g$G z25M8WDVg8#Nf_$DLZxubaxWE2-STau(&Iz%QT z^!`L?=JMKPWKO%s_eyIsSWq0jSC8Ox6&Ajt&S zzuD<)sGN8Hq`X&2R=3UGcPM~UO^n8!M+!FUK|Zz7_OF%hbZkHPlL69dWQmOE*Hzr| zC<*3dGZLhRS=A<@Q9!Z`peJF`g)&lZa%nej$_u7Fi>gj}(NPXz_W@xO5b*7DD#Jn3 z=D^s>|K$-GxOduls%0o z+v$^iV)dHJ>IHT0%p8Z^#^3Yemk1X~ADd`iul%=MSVI|e+r9+ z1lkH@&%_$R7*yJRH4HQqoq)h6rwJn*iWps~%rHuHL4WQodHw-8R6x{{g7`q%9c51@ zq+|gw$ra*soY+ebh~6YFj3WwW);L}Htb^ZwQb9~MV;8-GFQxdEoc#>Ndm@0UN6!UO z`Ga0Tx_}KZ4R!KP90DU6gf92rcI8+jL1ddn;qTdqRswn`zaXD(3L7$T-Y>!+{29r2 z|Hp#A61`pdZw738Ub@iE9Mo)$qWxEI{i2(<52NdRA9%_{Q zArFrdGH$9u70CUe=iD-sy0Ll1s`on6Vc0ZU-JHqLY$u6_Qlk;RAlw5288-*4pa=ej znZGnqxpdcH#3cVy`kv?s2(e&$Mrw8tnYT!?w(`H!8wdfw3~bPP=1}8=W}lG}FpA+K zpTh@17lT~*a9_fygStIy1zP^4Rp3{t>TT&x#<^{u2=93;DAoeX3Dwikije}{AK?Pd z6|ROX$XwYD?904xl-#!MkQzn)K|j9$L^$nJ@AsNIY0gs8F^!_Luw?&dK3e8#iuqzx zU0bs-TIcDw7)kB!eJvhS=Yd~@*BO{L&P3!4A^QdqkH3N~{+v=llD5_U@)Suzaa-C^ zDi~d{^X`KK+~T;!%`7AVhd$D{=>x;=Y%>`-&IJICa-G;pF`ZS{&n1V*rr_K~rv9@p zES0L_900ub>gXX%6#*0TrNhtpDvTOdCVw);Lrc#>>W`{byBZXKzt|s0lv?x z-$G}?BelToNN^EVVd_UM5JbO*8$5C=p@ZBw&{o0!D(e7|v*H1N*;kj;zdQ)IgfDqJ z2*UN}7+FXq<~6^v;Zj@cnB=Vh@L6m4NOGRP?G%3bE$+c!KVGGx#ygz2^jZ-M)&{4+G@I1f(J-J}Z*SdZ{KS2h?_U^*vN}UC4@ORP z4Kb~O#=0|7#EA0Pr7JTBiOi3;$c9&Egv-M?oN~AomD4+oPj_9lKn$Gd7wXHCaW1QS ziWFRVyLxYz1EX62&}ha_?*SJ4Jv}z2co)xt6Kc-ou?C@dnZi17YNy2ZY@B&tYg?dD z4OJadgI4s4&)(dy!QHF8BalH zR%vHh0iYhEAoFD8TQPK&-_L#9R#C_v5URsBJJ=*+&FL@jTN7Gs;^wI`_* zd)O9-K2Q{V4j8E*#1mKSF|g-5r3=ingoD*o4HU3DHgRawIz{SP^k#fDB7<9Ul)lZD zSz3ou8Uc$dlr$y~)rU`%F&e&~_1YT4DPx#qHQ{pzb89SUoBd^qj3mbvtFK zWXB94;;C%%wXIy;`2CQB6)Ln^~I0}`-di0^Rokid^g`Usq`*Sd1E6B zsh?_Z6n{QyCZdpXGA6nU(XEz!T57`qQVZHvG`ibGB`~G9fOu5b6R?b? z7`y8g1DQu|&4Jxfhb(EH$e#>E4`3nfB2%8x435{XaiXN`mo z4nRcbn(3Hr)CCHl-L5N5=pPRLUhMYAbj}F0l8bXs(j|>jQ}l=&@%x6l@#Hjr^~G&{ zblT76^pfe!r%OTCOY5ghi#?fS)!7XdFCRM3dSdmO2d4WxWI(sf65LU#l7g@}kk#;v zc?TeJL{3er`J^pqZGYk1a+cGZ% z`o&ku;ZnK)TYg6~2$ZxSr!eXLNxZh#akjU0ot6pk+m=l}w;7LZ{e_6OW0nz4zrL2t z2@UZe>+3P!^PZ8rWpNLu-FS*Q4uT{^8FSt7c(K5$_DM*62zyl*V`ylh6P9R?)UJh+ z|C7R>(w)%Lj!wI-PD86!0h6U-e|VB^x3sSThmSar>fu}qUWO!S6@Cpn0u99YHvU`6_^kCKKC*2KvqPdHXznvc-e@=`2u*d2KzxoS z7`piN1=H0G#xf%NfV%Rka^7TLx)460!)+ zcxXew&1kE0@2$p0w(Xq2(9UbatI*tWma7R*SS#8+gLgl_*~80a7Tesf*^eIBp%rTH2qGjd2UIdT=0 z>fPcLi;p}$DGxXr8_EdEG}!pDHnu}5`^P)qW9^>e&em3Mm~=#IHR(*dXOnj>KY}JR zTc6ya{6?>DHsb?g26CJdBRkqU%5mHr8Q=HJn4-hRmi*k!K|gqLT>jH-gdtj^hWC)M zGNZKet}6Ht0%7x95jf-{8t2-0ay}zM4oGDNt%vtb#@LVVUBKy<>5VW`f06KSJ*{VP zCnyj+brW9|sGq9UvX0I=JmPF$@&bp#bNDS-tbvQTCM3(j+1!2QL=u!MsNFfcI{Mpk z1iahpQU2wZa6!o^013&rwMrkzIV5k7A+lMp8f;CYB=pUPxxn+RW!?#@$RFw$?*uiS zrjVj=pNPQW_?uN$1V#frL=NR+e+WQ_H0&bbjvM=a@~l&uX-wpmYMsMs-mjtIpTHtA z1Iq~4>35XY*6g8khTxu2uYc2+0dVg07tw;9&+LSjf2&a{UYi?8xRuHLbqkjGp!?Oz z^C;Y9m_=~79u5?c$EE0*W1Rb%8Er<}<-%7r{Zi~8V8(5PmP@xG)8a9XRNbG|JVIAq zWL+1-ZuHm;c+W^b-Sf~a@!_vEXdU;ag-gN}ubet%3GEVJ-6Q09upwJ|{qp~>hU~&G zO{MI;EcDsAl#Z>LU-5p)%yelu^}2Bd2mnl)15Y;vFM(%zR_I7_DZb+~YcPfyZk%GE=Y;BXL*G+&YyOqsd?f&2W?M2SUb){a@ z1%6wdP%$bazI_aPKh`nkLpA?2ci6C}023`R$rAb>Nz0Vf;FnvkFZ>O#tLek7zG&9gK`Ng zbx=}yt$B`{vT*_vUpopkJt@YgX(m@5QL)nFtyhcdsnm1PuOqw<@G4qFN2 zN;qduDi$?|KxDu>w{Cz921L+{%i(=s*FZ$mo~&-b^p7oX7VOZbC{@5By%gb4JhWE|}`X;V9 z8ZMC8s0=8KxwJmZH6Rln-I>0eoMi^pIEGcYC2|QOT^U#>a%bUV*75oTpMk$QPeKGg zXG|qsXy`Qwr17ASd}_>cI={O*G3ttgWob@({y=}y9&HKX#L5A8e{ts)HkXCKOfBLV zOe7y2BnJEEu?X`9pDfC+`Xh@ot}yW8y(7*PbjVyQ6~ZR@Q15h&UK_cA+17H>)y;H( zAwuiv7{E#+Z4U=k*#Iz)edME`>GPbzOiPQ0RrIn#NR77FX$qSMHkVvl3t)Ax?xyBa zND6ZQ=ihTn1IJVm<<4H2d%Hy)*`G?wcHXUa$2Cqcix%<361+5pty>gFOG{vI4vlze zbvNPDbC^q4iTe+9>Jv5fsHOJ9akqPRU7x_25+Elks5n1o&E~5Qbr=s0QN~u`3exLq za@Ns*4BXl6(@l!EOkJ%X8WV@53tr7^O1sDBZt$C(({JFlP!h$GhXgmUpaAB99d4II zCM|k;h%9KzCoW75p@0_31h6FQ*)D&|7Po4xvWJw|)dt3LFDoDnsvIa zytEbw$@Y{u1-MRTysw4bhWVX*3u4m}@3{6G|Mq%Q`ag8w?FN+S?`aMSy2GKEuQ4{L zOSw+2ad_0RD5jKwbC`juKD1vG>Xn)lxIK+brVO_qmDY#CR6|ZxW*jqFQo8dil#HSF zQ_^eZKzgE9Gl|y`y8J?z$H#~&W6btfr}}QtU-1h_Jto9S4@~L|G~X^LJAUzsx+g|R zGXjzZDG}G0pUeCHwLF+v%&55OleTGzg1)N71C=*lYvBYdXw=S=b4dVNTsrRnLr3ke z;OZ1v;z%KTdp^F-CY!T)5AhBl(2CgS!eWqbxa3q@f2H0^QxcG22{bz^Rs`A`IGO2h zFJ}%15lgZY1M76dg%>wNv~zxc8V_TzewOm>EPHp3F#d5mkM0l#<9A%=e3-X0B%?}n z{5!ys#3QKulI!@q?tFfts#8(Qjb6kGtaD;0%_0DgDszQ=^;vpksO2QNp;ItTo-Q!T7`%BFrGKozA;pi(DFNPUR7c@A^H_`l0~08%KJA1{6+0B?Az|Kme1p+b zwn@v>2zeYQ-N5eGf>A>#TkQaNJq)ifva+uOXOY|=pat8DbiyRnB*(f1C9lDQ)gX2! zh2(sXBueMJqy)cZ71?>BV(zT{nn>hU9Y9j4fZg7kVf&egA+?!s2|b00NdbRk8+Por z_YSwNcsnW{UKEuSw!a^x`G8_^h2+dW-@Hj(m7jMjh0j{zYXTz#cPD;z$uFz4RZlSo z!g3$7>e_SoiV=9Q`KB0mknTikE=yYoJDY-28@SK^5Y$IzGg_hihR{nYn#Zxym)!A| zq81??l?GKX^5)Icx$M=X6iiE$S|co@GkjpDVGghvw;aV1b@~j3=ScvT)gmT1FuMnF zX`+v9D!l>C!idvc*;4@t*peDayY@y!hZ;brO)Ih-MpL6MQyh009l`Cz+D*`nhkVj> zRAy=@v23Q&{_yrvg$O(XKkA~59}MU6p?zS?@J81Hs6qz#M2Up!j0$~NA`JK)rr05T z>%4(8xUZw#uy+`T7cRSpr4#IXA45@TI&HL?-b(31^&<4JA{*E!X&~V&e91DMf93J7 zH&$1ikv*B3?9tfHxa*cT;jBs@X&C@Nvm^nrRuwF5WG69Lb>nkmS4s`VJe4JKL}=o< z>&!9bV*5Xfi%HoB{buirTyD#*! zVb4peqPPco63~$Ow*fXHK{XnKK@3$-EfUtX@=*CN7WZp#T#*V~3RK#-obi8Fzeb(h z9mh(R*cgjYDI|ke=rDE1D6myjnc>G;G&im7K>++%H2v}c7f1? zuo@kPx&+E_AJfFieQH&mC_V5Gt2s>nV))B&-Zi5V^(Xj6LhaU>P7%6}Kp|yqR4D$b zw3+NL#Jp_VQr~Pp*bXm1OtTMCR~GzZpy;rF>ZY&Q5sV*gOi3Y? z4Wn-}$|ad}$py2u7JI%ZqXvCNtB~PGDcC6UO&1H5Rg@D#Pk*_nEUo)HH61RW++W9U z*w_4`-?wA3E6SW1@J)?vm-6j`t+d0vHa~ZHFH@gmD+fE5hi9AD49|~zj*HMV#U{`z z1o<~t^zELkk>jp&o(^tBceRk=&l49N$0RR?dmsQEZLV5+OvtDl;0=;N<}`Y@m+hDV zQ&6Dt19e!-V_%a+{bdmHUTQG<2MX~P&NSn=ArZ*lgp9Qmx1sWh@QwZZ2Q%npb-Cod zMM30wHQlobGsEc?#RS?#pSm6r`kCLt+aJ@N9$2!k(`uNtBrfn6Xg+vvmzs5K8FOLg zwrym4n^|HG5d7P8%6qy#>S$@Kcd*wLbySEFfcI7>!|T2ub@_tfI9$9fl^DMU{B(mD zv%XRYkSNS%GcBTqT#)7f?sTl&T{BT}(92n{r>n%7d^#Z^a4Nv|Z0Fclj>k+_LYH{; zXPGyK_e0#zZ$V1H{RJ#Efgv3UM9KxZQPCC;jdSPKdv3)1^tjtL+3 zH9rcher~}z5?1Y<1DuEl+;alII0iRfiDu2wjHe6(+>MG$}WH3nfvfAgj3Sh$1hwu8|}lFmT*=F>k%9dqNjmm1=p9% zWEir+qW0ZFUlayMQ^0%P$3|J^naFWhMGN`EGc`lfBMKBv(M}B+@k9w%Ge^jLnw}sS zh5}Q9`x+)KQg3(G7oY6SkIplN>Qf?9o#3;cA?g((d~q)e&!%}EfL=o#{E9T+#cyIH2K8&@clAK@1h!jhV4iFW&kKdW`QyalPmq@l}P4P;DZ#NvF^!=;RejVEBs#+%r zOQ9qS!Kz)H=-8c^*jK>UJ-7Fd%@kB}g}g4~3gE$ZPy-d$9_)4%yZgZZbGAJ;5wGWM zU3x@DZ)<|UjBZ8B00AKMKGAh(uWNM@0>9FR|Fh#nBx=0(k$$a}4qHQn61UlutiM=$ zZ$%3S7IJR0ULl#5uwn2*b9fGNgTKSi7lnKBIR(g`QC7NH4Sr~V%&vOA=Y=r85SO_Z zY55}ErT(?~thk(sdaZX^+J!!8w=*G?UxXn1j9!)vjU(^dUUUMrv{GYK+B+@VS=RZ_-|F(6dd-5Oy=7ER%eJ+D^gh^JCSCyEA&~D<3aO z>k_gXzllr>NZjUpf#5&NKju}Lf0o9nnmHiRTO}XuxUnx0j9XH{VfS8PG*5wP1JFL~ z1y#6@{Igt#gLgkGv6k2WkoiHz`h24d9m3-nhFTky$EF0%v4Lw3(o+%=Lm7BcU~zKvuz?^xI)3`2(IHBkw)`N-ClZq{oR zrGQ@&buUn+J4}{?Uu{8?+z`>YMp6F+f;mj`baryI+G+m$Zo1Me60g0GySUF)w+H&? z*&k<9XQSXbgkJ54BHY6VJbv z%X>qmq=mwq>}yxGwYHZrk5CQC15pR%Cbqs+AA7w2#{2`!e_B*jM4eLXrYMWwk_9v} z-)o_vM<=En2uJ*{)D#`s4HELLzO%4Bx5ed?CYx?k&G?UooeaXK5pA^lu0k1sgbc|v z*my$U4i6{DbM`d1*R8dc0JpnRx!*m8VWs`XH;97t{IS5VtS0AHjD%Ri7+(kA z3AXLNm6Rd^sBDK&s^-zD37%WSzFK63(34nU-_|KUKC&9ze7fvN*>)B*#`fClvR@?+ zW|lN<@+U)M*R~_yS&JCr8BD5Q&O>?Q!WB1hCpzSfrJ4TObh$@v&LO5H6{B>-wdfqW z6@95$8Us*kVv~@}!#!L?r!xfFZ`UlZi2Z;Le4Mz`hDWy~F(n^w{DF@J06NE-8>3XV z!KB_q>{=@C^6lKv@j6M-Tg$;pO6DF5hWT` zrmXxm664A{kVe$;JYWXfop-g27do%mMM?wmD>R5HhSt%EvRDu+2$zDm%EVHE z^tPjwYfe?ZsUUDaZx{=WqTu~!H`y%4CB$D8=pqKGyE)tu^FbC`qJxfGd8#8+yF4wd zkH^$YV&~Dy_8t3P#62VQrG@>78MCGI;S;p7iG22`mT5*l7TSbNKj!{`ejR zM3(4X&#xuR>A?!#mUF+zob5oKs4qo`kCW385sXN{F##18Q%S6r5!~#K!bQ9sU%XSus9Mqu~ zKs-UKb-8IUv=V7@@x_=C^e2yMRkZnflHm8L5N(@Ay!TZbCz9U9Z*Cy7P9RP+qF&z+4yrpjR#fm{E;(aB#53 z?=&tcxgL2iN&(Y^U@~u7ZJ@BXfbDUL(j*+$I3gEx+sKz#3nle$2fY%Z+XaW@2D%b| z+l`#2Vx94c;UfCks^Dn*f0ld6DQ$sO_ksL^K%fyqRZ^W`+`EQz68%(gawYx3-Y7C4 zrKPYR%4$IRP7ZROEV`78xRp%hY0`+YszqFa>`id#DE=?6uEGXlF4qhcp^I+$_=!iyZMe# z|Gqg^Ivv8USP@5T#>2!(EM)3Lz%!z2{Fq~T@KXc(pqT^#Kd^!rs{8tlQf2GteruGcD%E5r5W26iP8S{cx*yZC-HScx@$@`1jgT2I)hXIyVhM*O8{z;lj2)67nQ7I&ZIV>gG!yf9`gM4xYE z$DNUUJ31NdnD1D?k!yU*ZME!wsSrC0VefO)Yqo`$hPIeYJQc&4DrN0fa;;J!xaJVe zT8UhbTcCTvm9IijTA!}&#WHo%^_%XP9~X7OFsP?AY`GTJ>Kdxrl_zlZ5K% z(y8P5fn=xqu$?eO{oM>O0kBm8e2cAtW_pEdGiDV6cvvWJsgZs$VO~@i8(+(j<3(mE z%>o4kSa81AJ{&&2ktwSDoLAi8BMvs+X>sy=H;c7`dhxEB%u(F$S)xjN0nO6tCv(Ni zdQ+n-M71DsYFtG&4Fk3jBK`v z5$B*TC%F2uv>l^}0Hzeh(`+J>eKdztJ^YQvum66Td{n2km0MS0FAEo;5s|qU+0&!W z)Y2@6%pAfZc}=G4Ztbore(v<9MmX1s+>YtosjT!$E-)nMoX+NU%RHW7C~j7yh7EH#KpyKSQ4rfQXbV$AQ$Gz zj*%TTygv{EGbXdJz~7}h^|mHa4I|~l1flUOc9!~914blFu#Abd_MU!&TU3jwQa72@ zD58i^ff27Lwi-T?K@kb8%8!?uz}#ds z=t=r##|*lCWoKy*1~F^zmzI*jPD8ZbVVaP~3EYul{0wib{4!KB?@NO0_TY|NFwgfF zEp|4ct7*Colp;97xa?^hCr7!iDZ;%ZMTn)Yel1(dohg1PM;FqC(x7giF5fWnRg7-H z{L|{;o6QXr2BCx_69*8y;6phUq9mA&51U7k^t>*nqR6lJUh_;x%0RJhpCFIu z-+DqlBEKp;*L8mZm9Sf^G3%J7K;Ca66W5O z$ke?^R5G%#ki(14X;sdRXM-}L-9ncMoCW=eX1j1OKwM2$DHBgVZ|bFna8kDsdS{IX z`&lzTLn_&A?*}|dQ0Vsd_D|8irAZEnEA${)tFGN<6mBy=e9arg@dxU()qg4MWnl+0iu$Owf0R`UCAG$*6^Awc!^y@olXk6IKl{NnF$@>@NVv+Ooe5LA~I>@40Y`(C~wRfR-z5F7lI zN;Yj1bk>@<);dpmJIw5=7deFqffz`p!e z12b`3C*tw{N)Ga@N!5++&=O~E_sDKv(t7KyFV)ZXl&uS~)9BGU&jCUInq3xKNexRD>&v1QQJHvU(A2t*q(Q=)}x&U8YJt6}U1NIK@kh-z=qr-N&*LeS9ym*~X|}?K?C5M8I8D=Nn!s$Nh|tHU#f&SsqN|*=!%g zFidS-D6!~!>VeZP5ZtT#asm+2*Dy-|M#Mz`ZEZa~lI45in5sqK8qZo$FK6 z=A9r4*KUcC$CboPC4)=E9qH~0V<;1!Z$$w*@k5-!M*|O_QTQs`fk+&aCdmctE&AlM=$*rD&Hidw7*AIvui=T#4mKy ziYWI1ycq(ku9>}oCj3!UV$Q~_R(Z_oMV^KYI287YF+O5h*(yM#0?a+uwYlUm4ZpH^Xb-Xy7|$+$=saUO z&6*_3(mb5mqD_`Ic#rVn`LNBW7ispuUQk}*;zV&!=Oc#lGU+xd%>iB7uBmZBi3oxi z(EK}5j=1v1q~bq=B99T%`T22u3CWHaU*~~R33T6G#vO$UxAnh&z#tT79l?+Tl$gan zEKY_BFqU1>c#6T}bW%xfJLeBXC9TIK6ErUAn4{ zaK<5>jh-+CYPCF<1rop4C$Rg!wNVioSlQFVy*9#%0jDW-d+>)w#;3 zUMPQRQAT?L53)0dypVL4KhW9BZ(mDV2D`6damvO(v$x*$Zc4rVCg!7EJEG)^3qHj4 z*M*iahM+V3UfOlv30g!8e+A*tKJv;Y=MB-47T85LL7R&TSEBaOVF|-vnke-Eq=)Xj zEIC5GDwI!w%gl(Y)FBr zSU&?AYy7nw-PPtEI484*Js_9v#lPQjM^NrQ)P}Ueq+nW8evcPu}y_Oy-zf*K+`@}+5nal4X!6&%qc5Kxr&dC^-l_)*gUWz(P5d; zu7*vhb7pg^*TKp8RkrYDU&lJc%T0^_7wgCyNK`er(#oamHkSaDe;ufyOb=LtGcpZ< zTdGKq4#v_d3ss=8zph*?U`AN^=BEErj}&P=LV7CAIaYM40W`TK5{xU>@<$=9dz1k@ zn#=GwaBPm{$35ocw0E+|-oDxZWZ##*+u9&g;t$;I)NRQu7M?c5&l?riB$89%O%V6; zgZw6vTw#^=6}9G|=D#FNk4cP)44Y=@eAgb(*WrCdQiw%>6HKlE)jm3mz?dg*HFB82 z_d?&9f2hihiAP1zy}PK`%oS?WQjlH~m@kJioV9y*GDSLI_C4UQy3;h0jnK zKhS*jb_Vy^am1v;#|{w2D}Y16#f1Ev{MYyA$fB z$x^~1fGLc5MFN%(niK~*yA2h35oDR6!w7K`=$iJ3Y>La(k6oA!aLR&i)S~Qf{VfU> zv~nICUmsy!d1kTamR~OJX|x3^Lf_?6(SDYJA+|ShVDSu+LICIlxJe}U2b89 zA7UfUZc!+)h|&{*A;%;*v$tiN>WNsR7K5(g!tFwmgQvCtfqW61$?N*)`>~Wi6>pU_ zT8JJj67n~{lKMZwpUsTaH?T4w`Xqexp^2Gq&Q_2+(X62ns9b5p3j1x-ktbIawEKD! z;Ezn0X3JTj2KV?%n-mK`L0}&z)ey;|cUTZ5H|wd)r!2`A@VTqYk5L!yY((FEYdKmC zL5KuASLMd`HaL*Y=s!^RqtQy6al?GVn#$3ucH~OLq+wO_$`y0)<(;+0w_yxo`nnC9~7-+jjU! z_kJDNB1QTQ-;<9VB*3~TceNpiR%hC0?A-~Q_aU_4bkDKyYLZ9(Id>h($Yjv_%(p6{ zD=Xn;ffT~kIjcL>grILqz~xoWf4N??`e&kW8UG;gz2S6awGTFKC!pdJx~Y5edBxL^ z3Uq%aHAvw*8O85-iijzC_N2P1qbj-_Tcy7MqEKjmeYaSd&BR8%ck~n2VJQsH=juLs zHj1HuJ>BxaE*HRR6lVadl*?G5Z-X$zVJd=0CC+!n2)pJ^R}xcmarsl~nG<~J-DOe# z#XrJiamNAf5P%r*M?5EKd_!27z7Qb(di)tYiDKN-M$c!uE2?^I=kLI%^+U&<)91;W z6jUZNYG+z)YgNXCRwx2OWHTQM=BO z`e|E~$eaWq(5zOsM4p38B=-^fR8}0aH7yv9{(_P614ShQxQ{OAN^vRsiAID+&-Kt? zymF~XLY878wPI>|IM4Z!w7}$cLK#2Gds0$8a^B4We}D*Mf#>uUl0D4dsx##9i6ht` zER1?N1U73lG1N<%NtIO)UQ5z+i9ZTG`%&;cy_V34f^1%ZN3R60aAU8E4psg9q}8G(0+YH)CTirkj}mZ7F{KPflcyC$XM zHn1U%gZif5=0g?e&XbeZ`HUU81_r*w4CGq|%r*=OV>|(0z~`R0kN>Zi1^w zJS^p|X8E{=er?z0qK6~j1Zj)k(K zN`xaexDA+106vYRUZh$7MJ1F`;+_Z?7o>h1RbI_C1)BIY{#jw;xo8JQekAGlL?%!@ z1cl0S&LDRQ%O8Tfj9=p27i#s&!nkP07zI||^XT z?EB^5_>ufQ#PX3Ag=6;bi6Fv7UtJK-aY$P^@7UYyNJkz*nbL1wNdMo`w=WYgbVYu# zDO{v5X*lD#Mr21E?5oD(dtJ%DpnB-s(vB*eG0aGft(}z$?V>rKDu$EaLx4dfT6~Y#0qdG_5 z&vBh~w&qM;mJDgis0OfaAvI{et|GfO-)WU|4N#rcUao|Kd6LJW)QttowZpP%ggX>T zOEF9a2tEHp$r779Rl$5NPwtK~GtE&09a=B4oQ_J;xB6nE1l|%$#q0H6I(h=uqxSFc z2}r8)Qk;eSQ9dLlnJHRvjmg9$6@~nTfo}%vMeX%e07`|Yk^=9qe;d2GahgTQ#v8{y08-L-z^#2u_H+BOX&JY9yd(?--g$olr%=PLF4 z>8FP+n40Wo{-HX1%#t?Ye&L(VL{2% z<>a2Y7=>8~CppR#6M@rJcj?yWOoQSXi;iTY$UlGxD#2AVE`4GiO?D((%P!n5PfLM{ zqPdU-?cxRS`|=c^Ps-^|j|9bd54B)aOpEIcv@e0H!ca+vDR&tFx{Ati1*pxMUrCk9 zwT5qa#2|xlADD{ooL=7i6U35P3ZO(>T3yS_u%$ac-bBcUGG~a2+PlLJN@3TY4@eaw zKEqo?&CErU3$R*Foqoo*j4ypCp3w}}0MJuIVWPUC)-u&+D1?mJwl^t(LmDjvI#{nW zT6;PnO`g6s$A`jwrF?mSNg9!HOk`kC9)Y z82SdU!aPBtl3q{-G?jNn5(?M4l#O^isLumaJ+wxEbgk4##HpQm>I};k0ax#QNb-A{ zux4wex%EU!UdVia#C9gp$ax>Rc(xmxf-aAuJm5^@wciMfta}^pg?|Me-F(r>otNXk z$plK_ijJSyA2{q)QBeO{b0Ce{?h)ij8^So}=R2U$Jho5JWnH9Iz6_`REmTJ?6-PrO(!VD zz*$m8{*cBbe95v0C%>r83;%P6sxksb`3$N3w>q1OrJC@CSFoDp$BI$w51Qj)6O4Z- z=5D$2P$l_L`v)L+RE|u=eh4ripOh8 z_Q$Y)Oe?=*WK75u)Gc@_5L#=A#g9Ku z_J}84YyES)0!F$=IST6ZKC#E03J&~q;6y{lgIA*CaADN?-M{XH!Ex3P-O2mLf@nPb z@cf;ieIaS1Ei%F&$Z*=#rM7>sEvl>dP=x#ivd?B|7l9HDS0l}~^V1<-u(?v78XHuq zsD%wQvf2k1wdj7k#*wazvrCnJOmJBUQKHfQhz*c7-a>wvsnXRrS zA^C*%Fz#!(=Owyq18bLlzvD~VqSc`tqkgH+ilY3JVPKOqHqo9 zNrs2nh}6oaMyq)s3&Py>S1ipOU>p$~5YsZpvBpMPv6wThCw8*ZXZ@v65@`y3Tk&I@ zR9h+Bet}<5ksD8EC$vm_V&ZuHOqTZNvrtH4L6BGeP+sk4y`wrL5SCKW6a}JSSAt9cMne?aFTIfL4hh5TkHM6jF(*(Yx-9hDKzd9v#Sj^9~!AcTG@RjCc;Hm_9Zb=LZI{b6UKfE%aR$; z4-Vtzo?R0K+!b{{whT3Q5b~SKXTa*{Bxw;!S~<`DZJx_bbBG_E6Qj%bVMx z)>lN7wu4q|>bL6Kh=XAO(&3st#ro*?Wh)1q0FS#{*Vc@vPK*RM z)iUC|`aU?k!}~LJs+BC)zC0$U=a-guX8 z64kbVRb#U>;<#FfgV-1y;#u}_x$LJDL)Tx0LZ15bjFuL`{02tcAxXYvt88>K4~XHV zAnMt>c)X{3hZCD?3T{(QMEET@EEQ20UZDT!L7v+GqHP>nGg-#>!^>456dBY7+YNz= z>Lu5=k?Wp5`Dmv6AUe;+l&Q!&XH)7C+IDsEVfcqbP0SUvp*M5z`LkMX2@*v82)rA8 zzb7VQt$ejMM9zXNZXSfE`?$*Jtp9SYb^OSlvo_$6(Qe98fHs^DB~qv8?mPApEn8{=uGmMI z6bo9#+arw-cBBjH5>+o<0&IFRYtDY-e{t!lM4R52Ec4Zp8PKWiHW6TOZR@1yD%1zp z#{_Ayj|c$1S3DFv;Lbu*djyXiPT#k9P~&UA`JDG+4SRAE>gRgS>)eFca)sdQ#@l=f z4fDa~M~6fk_=7J=2XjNqQ|z)DS0>r#5k(P2KP|wc%}F5W7GLxLq<_x_|S~rv)Y@ zymh#4>ubXJ$;=efA$$H#Gmk5gpUPpA3tm!(`U2>n@&`R_ zLH;%b7d5>Z@Jk^V(k{Me7Fi1RTHmbJwPml@%gmHHe@>5%aC7CSS)Tv_Gb(!5rHC@c zRCCg17I2ZKI5LLk1>gP%GBH{)cww@vczU7l*yO}AEGz-(nlx;}Dd2qkG2e5CGD6e8 zsYw%hrUdG&Rf@&U(}zL6SSAS)ySVksM{2Yi@7I)Q^!@(LXC6sz4KO>@_g2(uQqkZf zSek$8+IN{w*SZIj`3{Ry)1SAYY!O8iwFS zHZ?!ZL|aW2k`S+`1h!_R88Sa8^!dd3x(xZ$l0ksLqD?Kn7~E3c$0uX>NNiPY$l zpNW(zN7$BFy;h@uq4max(|ou@u2R|bSg^^d!Y zo?!US)=MW&2ZqsC>tsgKpsk*e)R7l~4lb{?oh2-0mXa>_I6k!+OUGU;+xi2Nup_|j z{{1&EBNIP5Qo*>Q@kBJpL2*I)^56DgPcgzrmlWkK*XJpFMpYzwVtYQTn~pX+);QmR zhie+m?wh>m5Jj~BDxrE_9*seedf@4A~uH;Ru#%m+r5C4ns@H0m8|dw*#lhchVQbbUM>1^^SsxXU%l z=iD(iG4#)CqkmaYv67(d$(_4Q`+ea~t&c%CU{5Fz{->>;ejQTI9@cOzVDE;2mhy2# zZW;{484Qy0FqOG-*OsS~!#Bb0#=JQ+gtFbapqcTQSMG|zCs3^?N*h}+m*dWM4s&G! z*XT_0^>vC|umOIpEj#S7mF<3~pspmg9GoXG4_jxFbk;M2Je-- z{)_MwpUQHyTQ;2Mch_<;j}+#wP8GWRcQ5JQ8ULa_h4$Y^C8i!fgofS}>(y&FmmmH0 zWgWa)HeN({$4^UXin~8K{_E6C7S>qDLPf`sda+4>#Sq9G66K`jyKkfggT zB+TMFI4{7-FkB0nW$i#s{HK4p+~n|6*L47N^VO*^WlqvaIYhiH2XPkQ5z6|uoS_lgRfwWQMso*ykqV)+-8L}#Mk5(lo zk^<{pX}4jB5~vt3&(3n>0Gm5TTg__eXMgL&k2D3Ks6ZNB@D@U*)1GZ@dt>{{gD-Ll zxPma8y&>WX3zEKZIhv0wWJ$pDVDb=%&>5Iub9LkVXvc1LP1X;e8H-Pn8*>t+Wp423 zxx0!DLo|20TkCE@1(bF0aWK~YojxxV7)xq8?SG7&6*q=~zT%3CagX(PsP`%vTmYBh zIcX45m&G|ESI~%9JJG?6$Hj$Ni?60ujFif9J<7sVi3xwu{Fb$vzW68IEGI8+O%W?h z8Jh#v1;`-ENO%7%h{8_>V)!uyD07X$1b3Kw=>&`l?hCpN+3p zbyQ0%nE$9<=h{EWd98b+;67A84a;74)Zv%HwxT-hjO{8ZK5tD0XEZO9l1e>3mCaJD zWX|R}3UwMJ!N!O0`9snvDN{oB{Q*Spqc8e|SI%&fE!TEee%d%7+*nh!@HcrpKTI(p zi9Te-;+8A&n0QRt_EN#IV5tgoYHYN}`xE!>lE0#V`Rhr`=?w2Z>*y%`Cg`RlB&1_; zSrL;~L)3d-gf^yKa#-CS@{hpEKY&`h$C-W`rAPnT@2j0j8q>=)$!C%0cMS7S(u-9< zyCJ%~8)+qjIj^Z!oG!wjWlZxIm2!{NBn2Rbhz5o0_|^x#xUWfqiYwqyx6#k!TSLTkJA zJKpsz5|RQ;*RCdI<^HD??cTOKIAu_-+_y1;vQ3RfHK2wU_a0n~05}>=e~psscRD9L z5!zTgn3ZO?po9nR21}DVOR^`$A0)>$j1N~uVxwMQi^YD#c{a2wO~s?(asZVsI8i)WiCGHpphkNGoOWUZI^4p_2dPVEQaVBb?=j7YwoNtKuz8G~&mZW|ICw?D-cM(lEb( zws_DKTdVD4%9jI$H^Ia^r4_`fP<>uR6oY{QA>vckd>sE;N4}#+#ZGA)K!C zt>*K{Z@&fwzr{%teAx>0Dy*W=3WTh%ri9j@G>DNfIn2QvhL%5uQUZC7Vo<_a)jn{9 zsft+}n778Fk5=V!tjlZFt^qn0uORA5#+C;V&oVZ*uI8pogcx`~4;NSm!02p*S3Cto0WNASjF!8ON zTjSo-wQgr@j_{9L$bfqbuvO}k~Crz*7p!sOB&==KtJGR=~*An}uw92sNBb1ynr z&NkJnmMD@rYbYv8VbCH~I6Ys7oI zTYNxHKukKI5}tmi-!vt&tw;U^f9v(1XN7ROCb1zynqX_{zomfRzS7om00dr=ghhhM z25LS|9}9@3fFgdkmxiz7TygM+)R|PBQqxflu%9oRc8`Cg=nDS{A8JF1?ZsqWy9+Cc zHhu(Z9%8rt^w$((hfu7qP=aF-085c`yqJHaU44Ghcbm0f85!8L*-2e`u$o3*$f$gH z)MAuaxA0q}dt-sW8}Mu%w6zG-SL?_OYnG-c7W6(*l}u@66Zn!4ViTROq3;yGZ$vw( zN-fee&UQv%@X~VQqDC^z3@e@0BW@GywD|kPq=*Hr{OD=te>! zJ$c)rodgR2znfQ;5pYzfO<(r8+g{O1wA3;JmtFr%nIzrv`ulg^=6Xze zSS%fmZ>BrQj^n>}&GEkAoGBntuf*8mW4>sW3Z%RSBMol!@8+J2$3Ag4HqWfrH~o zb>750_*V+1Yl03CF4qDtNQiKoTt!>OwyB25L7<*2!TrHUE&fTbN!G&JMK85C{I_qQ ze2kt_8xV0t?M#t#4)wd=Ym5i55d;eFEBoifIP*VG8&>b6%m|*qOdO$i;RH2(k z%m*{u)PG_dEil&&9HmomPIu4SrLGpC6gh3~f{j*o>;62r$qKvy<7<*TjP zsg=T5E^}JHuQiS!WgYq6fC2C~o4iEf@pQHOB}7KY)sCd}<(hlwLvh1dnu!AT_^82S zh#@s>8Ll~7S88F;hR!90Mo9*>!mGZMrjP3sx5%|1vNM)u($6TRa)!>w& zCn}$Yo9DkWdkoCPq7?9V;v2vxQ$-G>8PcrXefXX*k!j_z-u4M}Z56=Xdm<;KXcWR9 zt<|nZCynxe&c!4!=!}6fV_|P|%<*5FW?*2xZr|f&+IWIn(y`{xLVoJKc>|r&gAUg= z;bPSa8#1KI`i0)eOuPv>d>m4A1A5pnq6OM(1qIJP_>sJ^SI>%8xIXS#V2Kt#2%*(wdt1)Xna6=Ll%2obOzG7O4dH-dm? zc~R(KAfV?UcX3#}3E9%rt%STka4oJ4m|0L)EjGQ_k1d$$rON{PcFdFay&M=JD_UwM zX&VvJyAY(Usbp2x!jSp}-jAZSVr-Ki(0FXfu^cviqR*0N8bJU1t{Bk}g+XdC?m`Vuh$Q}2sm9GqslcH5WzxXK( zNL3Nkfj*sNw`58XI3bP!$SF1=yS6HO5l#M;{})Q&Pt*n?ESj|Os;XUf+i$@&Qw+Lt4hG+ z(}|j=qPiyPSsk4a|xEK9=H%8DBq-1?q{yZbXb zoNu4%(nAiEC^0aby%)8&t-i29v7o5O;vbRqlWRYxDKpF)y7krU@E<{LMCSL<%&x|$ zxR0u8YfzgTPD}CEHD(Z;cScY`dsDXIAv(%?P{x^#5}SrQAjEqH%E^swJVdLWTKfnk#=kkLtt-jPSb)UfHqV!BR>i;Z6gc^1Z%xJ&(f2G{V51;DfX>-6BZg(WKmknPI z5T>B*vEfhM*8vE~FIC_mz2hTdMasK|$Mm>8{DtT{AnVkDI9B3rmZic+L8suG6eO#x z!I5Wk(Tr-siOeC9*8mK*6IR>h6b}Xm7URbcbL7-H!d7BFL)TaDQhHh)Q=~Jj4Gs>T zjaSA^eQRk5^@99wF=fFnO85a37`Y-(Ll*J#1Q=ZF!>zh5r)c_H7~S+U>2tZ&2clY7 zTsUX;&c*;XjZ@VL)V8;=FoQWuTZg&aA3dmO|n(9B>t#DRKXp45xve)7^3%X;}O(Nsbt> zR-@c9Y=HNr!kh0I`Dtn6l-N*GBHmUuVypJ~MS9@)S=4T8?QnpUfqZ`x@6hk8mflwJ ze?fn~_>bES0FVZ!Px5CU{P9h@K(k&eqt~Smo&ETKr_pfgkEzl9P=byo?EB(ds`P>0ifyCP2RDTjkjHx znrLS|-B;NdSlL=SV!emhX%XA6y;Lf{^j9pjN4leA~&eCec2l~d)I2nXlz$#!;`DapJy)+tVoA< z9b%?Vw||&L&(x68-`J^cR;vYGQy0$0-VC5VL8IZ>bLuvG&f0;%p_$uDM4dq_UZCq* zKX+QitH;?Ymt9*K6;?)!z>U@u5n6nxF0U1Azu)48I>_{>mGiV5opw47Cx^&&Go!UVR&3{3_)-oNIIisIw-irTH@>V_#)O)T#k|+i+YRN*Bc_QU^eD*1{J+0#6LA85 z%QRj#xoK)7>LlVOL%tVg84bIl@;;@$wW^ANV9Qhg{NoXBL5G#%RGnLMN=EfSsYN!mG$gyd{2QvKgO!3j$NsyHUKP*{9TJ$J|xDnCcoe$hb1!z5ui zL-RR)wJq=hY0Ywm4GgU4moznfnVg3>>?4-k!to0KjRmXQ^zmwEZjxHD)0Es?*G| zTivob!%NEGZRL<5(l|##5u%4N7iL@Erhb2~^sB@acf{so0ZB*wAa0;G@s=KxwD?}G z$lyW_xiNU)CQne799b;z)B=2tZ>4N8ylI^IGr7xrerB!CMNxTMS9eK%vWl}13m0jr zp?ym!r#nm5b!DEyl)h7uY>rbk&KUtgT#*yOtP823;DBckGPZweyE>T?^L%ags;1Zq zQ>$T3hBWZCe^L@_De8xO=DMTq(THqsIU0Zj%0ynuPb!s89Gz=kX$H($ICL~ENnM(> zyFU8yDf=*G3LTjpb*MN8{8&!uRrYy-CJlg9uT@+srJL39mQTuCp(^@INq^h3UA5V& zUtHoNb-}>s1Nd2tyiX+F70CYm>#*OA2L|A)0qKb48QcSDO~oNg$pi(HT@nbjQ4NsZ z)yhrSa=eIn!#(M_BQfTG_RgB!2sXAy7zf*c2?B^2)cR4$oD&wdZ^jWz3$7?h?HcFpFJ*1YT6+F8?~N+m)SreAo7>m>xf`!~DuU|T z_XAq`LV3@}mI7u;%mODtcWEICwY_+kp~ZdKwEiQ;2)W>sA|kG~I5Gg&8N}MCO_Yl) zxbKO`J$o2rt;UI@v`b4RFjjVVd=ng1aN5@0ltcrd9(Ldtja6<18-!o>d-AG!CT@aL0s=JgIs)P`$(^ZW;G z-7=1P5sm)*$O{#?NX>#sih6ib)80qq5#uks86m+=iK z2Cz4`EuF$c_CF49m{wm8a+W`XT!3qRuAhOk3N~UUXR!TnA{YXDpMZLMBRkbjOj*UvWi6y%WHj{`)>LKCnKhO~~D+NGj0(;FVQF-Hx zJYgOZ1*#P~yA-4{`hN+^jVohn!)eK^RJZMPCS02zY1c>$(QpUWi9Rgip?vb0@(-W) zUJw((64}%_V@giwg~;Uqks|Q|f4i)|`XB*e9(Qt}QsgrUY;Ww(fC<+sccp>sDEn`g z5dNBCY}g&zevDm^vZNqKo(3r=-sWBs56A)uK(}zlh2u)e3xCQNH_@0Nm{An>b9n)P zVGB{qmN!eUF#@F%kl^znf04>?CiT!u^$guoCMaR!vSprCcpa`$4pufd`tJ>J?8cSb zDE-VS@e8S9eH*)2_8t=IU<)VaMa?EJ57u#LFY<;79!lT$^>HilN}#EGoSP~&`~@QQDftcO zzC^VIE!-RPJt)OSjva6JJ4Swp;dffgRVupAp|g{1gGB1gAd(&7H}Sys5axS+;Zdsg z#6zkHdI|uTNG*&XYoZ0VPnD1kUroe*eCkbEdqNZdy|KyUrn2FWMF#kGesk)E_%GE0 zO&zQR+DeE+Vl8_yrlm+41OhAh41&HclQgvhM8t3K32_x9C}oTdv62G|pnmLR_(?DD8#J=Fw!qx6=L(UFrN5;5fnxjKryS9IPbPc?@ zD$~#e@z?x)V0>*VvfXt`wH-$WTB4>2{fyEHNh48gGdL5IcpZcFrc8ml*TxQd&eE6% zJ)Nil9_uw%X~&q?3^bnL&$8V1aJ!YL;DSa*vUt&gHa8bKmU31K{Mzgbqt>>NdRhm- zG#NH%q9lX;{*dOO#3LB}rVvt=*YtzwiuphNoAixAX~ucBkPCQV`b^6IVh5)XgaCVh zF_OAC>g|+hG(rISsr&6Am-s36K)`=DNr)Ze%5Evhoy?Id^z!6dqH4!Gb*m7tgE110 zrQj^eUyAV1%9Cu2o|A6qBC>(L(`GQ#rS~9Zv9$~TDaE;4>}62;GfzNOk-Vk#(=FbU zbC%n;%47!dKpfy8mQ6gq-O2lU8?8+lpvlfkA=<=m(d%5x+mXT#1|qe_AWa0RB6XCM zY&!+#Sw>k#k;vTK4B6Poz2C}HQKyQO#>8pyW&V@n7o@EIP9o;%rmou)S1&|m=@1|B zJha3B5eP^$im9USU1Arzk_1CcaxJI%46?rqmK||cmxAdCt~Ch>USM!Qls=c#iuV?&|=pm^zdY~9G$AXh{MaGMtr&BuoIkJQ5V1JB%+F~m2Z#sG@#}olEl92 zJ$tGKq~!gD=r>v*FsyDldhz=S-k#58M(HLMzW#&^DLyqu*Rq!$>tThLT*!D8lCe3a zIowpUdIk(UpiMr*{a~r zP~OpYue#8(9!f%`sKg!5_IX~G=ZskqIaEv6DJrlwwr@}ISax53Z}~PHf!+_%BB_(m zM*~d4+(9{snZ^9}sZSWFX>u?(|4?c41*^-#X+!-maW<`4I1i0$YJ|sr1&55B>XU;HMv5W`U>*qi-8k%H zyb{&M#e9lb#l#?`aob z{SZiL01p-hS!CkFdWRHAlYspIudUuIMj;9;mCmBkb)aoOGbMkGek-F6H37SAKX4Q^ zeYDZbhXn;Ygy)Od+zqJylyws;oMVZli);N0*)mh!2H^_=HxaMv!BC|pV$xM zU+lp-W%m?M9a%pKKInn-n*Y^FttHk%)M(gnQ2Mp&`0<#Xgj!=SC%Q)5Dx({sM^)Rm z<_HOqGNfeqhT%m#uQk?1Omq*@78()UEdHUS_?3-Mz$~)9a`z-fP<$j3bG) z#x3YNhIAL4zi4U_$Tx_!XPrqP<9++Mn`*;qCT}-xG~of$txMVK%;DB*s}zwk)4J z9~y)+N{Yi|v3n=83-@x(#_K*lu5c7<4|jH18ERDNwFj@p2QQ%CPAkjxtEEDSKo8r63u%cYcSaobK zw;!T&5X~_0ij`FjUiLGEQsLIB%A)CM&*U?Xb$(m>IW+Y+RE7g7_fY`0XX2J5wJHI< z5lzqVcY0x*~Iz*x9+H2b^P_gSk=_2clfNoh>3PFvR{v}o5k$Rx1Iqa95o5%u+ zeY*nUNEbKoH_m7antnceWNAMw!(aT2XSgr5oxxy*`JQ0ZTY;j5zgPW+NZfunsQm@0 z2m4_PF6o&*dA3J8kSWfVd8qVqez0q`2klTphc{9P0z_Ww;(`P^f^+<{v*#o!+69di zThDfOsHu8?CwRf=6q>oWzbgXnnp2!*Ts(!buXQ%gV;baS_{O???U+3caGi{H#~vnWgyVZPgN=R&?40F0Z+_cZv#P3j32QLJu%lqn{ZE% zP2kNjgn|M$qp*fpo{f`=1jYHF#5kb=gW6%`4vzqLWPo5Tp2b9|ldn*?@oVBJW#IrH zQ#CO2YEDa8v;lfnl-DTLpo-WvIZb%eSf+Oii!?b+SQiX4lZFxH(cM>uEpu2TXpCG0 zz5X*>%8o7#m^;injexH|;lf|A)I!zflBNk^MaDKXhC&+Y_C1=eh*%(TjwC+dLx(ph z^#5bd_JxxB4k|$>yPlHU59auE4^}l;JPdQF^R7(4wMN*JY*gX5Fu9;Tpp_I(e%xl) zH}3%q1n8YiDgL@{BG9yOf-@J}uRG$tQOYA!&wwy?Z zRqM{pQr0}d)zBMW^6fzC$TSw&NqdFN6Ej1JNXV7aF*M%qV0QYu*7G`oRmkmOrYA*I zLPOg7B$ri6Y&YziZ~(68{qQIkxjb2kmuUtSdODCMF;PK?f3%-q z%ijNxp^n}|mxN`kEpex*tU{GQh*WAd9DTdE$5U??L72td+Xwmvm{!dc>Q zI+D!)Ux3NsvEEW|`;iA|b=PY9vlLw}Z(9|h0B-+`nCdy!#*D=<3Cb3p7j@=`JGw)$ zU#epsrWbv6m%Q<4kckVDvvZpj6z^EWeRo$6sQ;RfE@Xs3{|R7jE!^TD$~rcDZHde&;%ysSv7|tx>_!zne!NaoCzVvBk{L{h6{tFS3G2Bs zPfw*%srV)3sY@IO8}8DB19S#mQjZ1_bvN+T;dXLoi6QYUKwfFuVeB6T+OZ>}NEgX6 z!36kB0?&XazyHJ~&pddDsX9{hPJnc1vMU-zBs5-*IqRa!!mV9C0T*ucQHxrfsa3)q z{;rlf-Upz$HC)wHe4ntDn2n`LZX^q~9(nhWX;MlL|9Pce*D?x)&qlo&eu*L}Q3vI1 zc2k|^VX#Ddc7YvAhnEZ!?~tj!py=eEO?wm>p_HmQeMQ~&@ysg z3EsE$k>*t=yA_2FX)R#DZF5`KIxbV5NJx_1zn>UMcnTGq8n`S@i>n%gIE9ekLXk!v z`v&b~BDBX+G)Zj(->VcwhDSo5i)XOOmo2pb7k9VogFc$8)7w}}r7yaMNK|@z@`bX3 z*W*E03&jLbNr2mog3!(BCU>#%m^sm`Q|ny0kdF{I9b}x$U7EW8*qej|Kph>zZ`B-9 zO)k_Bm-L>ty{4%z@w(B>b7QV3wD_oAUBRww<87*jR9{_e6<5*)qNscb1JAB@ONmcR zFY0}!$eWy`q!LFXc?g5A^iMFVcU=OZ*^a%M*G|ZF9)CBKNdYZ2Z!)HyAHF{e$OZnO zl<$kQZKE01O|^0W_Y3}=A?djXTC+OpP(S#f5$vJhzfa#UCCGpv_S2IQr)cuQc z&pY?7iS=kyz^{MCZY1CU;L`?FtWmJ%2)b- zG##*Hty{5!!6s~c!q#k~(clXi<5+?Pc$}2oF&Sj=5*wqR2_jvHMS&s$p|7e~w9l{O zEYSXEbs$RGc#H*dk9Mr0*jmW7^j zqw?I2siqQcsz6~$EUrxd*#TJPZ3Tb>$`J0TsvGhzaO6)~h~ z;yj#M%*{&XFm820F1H=SXI2#re`F~AzS@(HX1?+-QRuyMIL7aZ0w}{(&0g+(%+kaP(Z7MI}AaC`L8emd+ zd`h<%LpuFr4TeKo*ja`Yh1lE`*CuK&6@JFptwR z2IH$2?hFJY&hQHVpv|408w}7CtLyT<#jcKg8t4{h7*t|12B7;fCE-ubW8GoNyABmP z$87r#nFy$hdhsNz4sT(i8ax(M*c1``1VA$eda$h$o_Wh5$*C!8fA4VOT!Vttp%n8b zz5NAKzg*RUjwo)5z6ABiT%i+Vvc`JFJYc}Z<(%dLQ$XnVTR84tr0d&;R0LM`B)jKU zySNe&_9_Jnt{M}aKdMyI-V|iZQ%4sQ@1P-zW+p^>fsd{WalLWL4gM*XnN>mW6)|@V z2?R9j^y2aBK-v`I1c=ur7@G`22KgY5REdX5LuQ{EdwrxNVDnWQCzGD*%6x50`Jmnn zXvAQuqm!A1<5S7Yphj1;YHuoRG#&MiGz5%%Jhm?DyVdYs_AI@FbQ;2hSSUf^>>S@g zE7UD2_#kDGr+bQ^<@h!o-9K(wD9`%2AeD#vMGA_@&w;0UD_%a>MYz$+5IFF z6?_~6(Ajx)-e6v*YEXOosSTRQWtDAwr}-vX|Qk*eS9jF9$d6GktGhOo|HtgLjwr=kGI= zt`(y|t)Nt2^`T5$>V-RmhR%kqwr2y4kNm&wHlAv%nW=EN3HT!jFAHeyQuwJ=j&2Rl zEZCgX4Au?JVpYVbi>Nwe^8?11Oc+mHvPw-iiH-%hU)+w{H;9ogUnH1^)_#hf9P>Vb zP)6q#TnV)T=C^Vd)HyS=Fr=9v21fiy@Ru<}qXj5P2OJTp303BtI~iN0XtDp~T0QJW zqXv5jiV0l!9qn;k&+wK0^PO5k_-LALAK2ZOrKCAA^pdYyeRKhYl4Zc+@4YKzbziI* zsV5I;L5bjX(}xcpM?Sjg^OAyzfZC4C<^tGp7O*YG4QkI>1IFXrOv>ycv2y|()tprc zkO|K{ve5mgesvuuog2Scnw9{?HiZ9^FsAoRuEt~PCGCdFf#3#MjGoQp`ngBPGw88g#IS1y3z3xza53V2xxa4?1J!)k^ zX}(W49F78MBQq4KyC&1iv)DBS=?TrR6n553&?{-tY-_(v3sFJEBi^d%jpD%r_S*MGj-=)> zjEl)A?J-pVfDuVf4boh~{-Xy%IE|+Go0a;P&rV2;5VZ~$Xn)yMyRsnOXiqpeC zv`eZfZ)s(n2hj~f`_bqX7Mxj2!p42E#-soJQGj$&LpxAA*I>C;r+tJ7esPB z94*6$RbFIYhnUwRt4^weIRQoO#v?9H&XAUc)83W?+tqi+&-t=f%VDP8VR_;k-~Eba z2?E~n(D;|~9{wQD7Be_FkpfbKx3=(!S!&sPWU~$&q}oje0SAMmKnT4y`D|%*T!n*?e0bl3*2HQD2Vltw5}mLw zDGJ$MkHvPP7c+r<3_d^zH#JgrfU7u#3OWj;1;0QdpY6MXK8r>qphy8<@B+jscRVfc zZEy#3NtRaOd#Io%IllLh?lLw}?JUiw`YETTF3Ec@$x?&1>}@QLgRM>CIEQ5Ogeaoi zqx+e^cU9O;ou5s#lKNJUYm0!U$-{f2ykOTlAvN|Ez1onL8#0&Byb}$N=yaav@}RB6 z?i8P!&CWwUy8q($_;~~)@ES2~fblS0iuzxK;(m^)u44_K2q^!tKcvNbdc#C*s^)r~ zALL>JTRNxFDOYVWTu!5s$nt~qdIsJ8tplD35-9fCu2_@_-_LZ?ew#pDsX$gi!iRwM z@A@}ym!Q$3k==1S-oh8s>z?G;x0&>nM+>u#`&1c!_PH*#_cY~cWp$Il0Zu^zVko45 zFyeZ8rNZD!39^9d{7OUBz9vr-vZGotL0-eGVnw98ar7VTJk1?KZXL11Wl}a28dRXJ z*r^#k4tq^}%&~y5LN-n5$msioi5#g@hPq3HX0SvZ%BrKAF4ay+9Wi6179?irL|1uu zbWs3Sbbn5*&r!o(+BOSzNVyUgJ%Uw^ScUll7RnqUz1hi7zGu~GX)Mgd7N(+e#&AIk z53y(MelFlEeijiePte859x^T9vvq`5SF8JI^+*?OVW;^m6d~1ysU;_rD9tYkbY|Sl zniQfh_%wm??|}F343I72z5}G)GRa{XByG^WlyjcV zz{5Nc>@c>Pa`zUWu2Nh~E_|_$r9L@Gkj3ieAj1gTrv5NV#IsDH8@vO}?x+N~zq274 zErR_p$WWJ`ZxdF%LXdR^eF)WxK(R(B zNXf`B3T&PH)aThn+tQi2ru=wjY@_B#M2d-YRa=&J9W|Z(R-`X2s`&LS5GpNjdMC>H z|Fsb2vZ^=J$7sibL2I<}ng}#JBm$fCF8{O-5NI$~bt8u>rxY1{7jxg1&(eaeaFK?f z9WoEDgN@d5l}r_P^fh`UN~|kcVUP9XPqvs=S)gYdD1AHopt+G_e(+9Nb|D+fX=&(B zOh)S7h2+a4WE!|)6-Ms;S5YtSB||}eW*QHr=pSL#zCsY$Lb9K17wLZb!)8NOlA8(&evdBNY(iK7+>kK#TgQQi>D|p}*f~g6y#cgR<8s-*rP| z=goqQEmz+rIxKl*!Z$_sD0J4^qPIMFxJv2|Gl6^-zBZtdWj`gm@FfeBkAaod3`sB* zZFkDq#Ih%Lxrd4E`nr&|vFCdrnL%#s4+@&C?ZEh`oG6)mI{clgPs6`;44ktb`IyKM z)*Va^_pl(vt*3&20k0 z0J_Nfp(I}InV<=KRdIeee}!b%fIP1g3Eo4o??_dA*Gdh>0gTE5Z(tqYg$#aQ0`${W zQ4t?AVT1vKlONh-CHFGCZDY7V8znxP+%Z-d4~P)VX*iGE^{Bznyg(TjEaW#>;u--K zE*iN=J27%@?9M9+sLpwtZVLGkGW$v8Zq>ZnJCWGyd+&30ZALK2FU{dzy!ECe6tw{w z2C)KCM&!F(Q@V=Rd>m zqeG|JFk*W0H3GS}-Yy>O5;cyMXQ|b#q)?KYaLW;Ja z5`8#DE+;iqiOK#Loh1ebmJ*{q@NbSxHeY&H3)d^ONS0Ejr4}lIeQ=OS8%{&?(Pw?} ziRZvf>~7BXD2m+?@3@Bh%2KxMfNG36$O19I=>{$~876$bc~J2e5iNF3+KAMq0Yt8} zYFIs{M9tfS?3NqH7>!nyCUXASuA>LMz63Z%=ugKAxM75%JFf>xHoWQYrx!r-nmu~8Z!!_ZYcGw+PLF%I3lOs2n~aOc=}1dnOR zRsr~rZGMFUtWt}IRD(M22|G?%sR$`vQ!f$hAund84AyzG3Y81&s*eycT+Q|6Wt~kt zA0H=VkQbH>#!-XQy&dpM63Wz3u82(DTZTHOcN+k|W0^A9++e9f<7^)pvf|~pgpb~6 z?OJLgAEWtt;sJEU?)9>Xi1J?_8CcfTms)eE7h4VJXo?ZJvJ06bSb0TLiu3g%+24_W37 zls+wMc4T*;2f0jp{E4|V-WGL+?jqXMA1|FU9w-R~t)QF!&C;->DCnmEJV6D}AZ6dm zG&}WJV8$UHbf$HT`mu2>5x~Y^QoW_nWwBKEIqw43JZX2xgh!OYxNq!Rs`2Ejs>LN*7ZimE7N7tw&i4@ z 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