From 3703918a4bb4476686056a8b30edba63de4c9aaf Mon Sep 17 00:00:00 2001 From: bol-van Date: Thu, 4 Mar 2021 14:30:38 +0300 Subject: [PATCH] history purge --- Makefile | 48 + binaries/aarch64/ip2net | Bin 0 -> 37304 bytes binaries/aarch64/mdig | Bin 0 -> 46300 bytes binaries/aarch64/nfqws | Bin 0 -> 78280 bytes binaries/aarch64/tpws | Bin 0 -> 81324 bytes binaries/arm/ip2net | Bin 0 -> 31972 bytes binaries/arm/mdig | Bin 0 -> 40508 bytes binaries/arm/nfqws | Bin 0 -> 71808 bytes binaries/arm/tpws | Bin 0 -> 74056 bytes binaries/mac64/ip2net | Bin 0 -> 34248 bytes binaries/mac64/mdig | Bin 0 -> 34936 bytes binaries/mac64/tpws | Bin 0 -> 110560 bytes binaries/mips32r1-lsb/ip2net | Bin 0 -> 37224 bytes binaries/mips32r1-lsb/mdig | Bin 0 -> 46836 bytes binaries/mips32r1-lsb/nfqws | Bin 0 -> 83172 bytes binaries/mips32r1-lsb/tpws | Bin 0 -> 84080 bytes binaries/mips32r1-msb/ip2net | Bin 0 -> 37300 bytes binaries/mips32r1-msb/mdig | Bin 0 -> 46760 bytes binaries/mips32r1-msb/nfqws | Bin 0 -> 82848 bytes binaries/mips32r1-msb/tpws | Bin 0 -> 83848 bytes binaries/mips64r2-msb/ip2net | Bin 0 -> 90960 bytes binaries/mips64r2-msb/mdig | Bin 0 -> 119840 bytes binaries/mips64r2-msb/nfqws | Bin 0 -> 216184 bytes binaries/mips64r2-msb/tpws | Bin 0 -> 219720 bytes binaries/ppc/ip2net | Bin 0 -> 39244 bytes binaries/ppc/mdig | Bin 0 -> 48664 bytes binaries/ppc/nfqws | Bin 0 -> 86180 bytes binaries/ppc/tpws | Bin 0 -> 88468 bytes binaries/x86/ip2net | Bin 0 -> 28948 bytes binaries/x86/mdig | Bin 0 -> 37628 bytes binaries/x86/nfqws | Bin 0 -> 74560 bytes binaries/x86/tpws | Bin 0 -> 77312 bytes binaries/x86_64/ip2net | Bin 0 -> 28584 bytes binaries/x86_64/mdig | Bin 0 -> 36544 bytes binaries/x86_64/nfqws | Bin 0 -> 72664 bytes binaries/x86_64/tpws | Bin 0 -> 75044 bytes binaries/x86_64/tpws_wsl.tgz | Bin 0 -> 77458 bytes config | 69 + docs/bsd.eng.txt | 346 ++++ docs/bsd.txt | 375 +++++ docs/bsdfw.txt | 89 ++ docs/changes.txt | 191 +++ docs/compile/build_howto_openwrt.txt | 42 + .../openwrt/package/zapret/ip2net/Makefile | 32 + .../openwrt/package/zapret/ip2net/readme.txt | 1 + .../openwrt/package/zapret/mdig/Makefile | 32 + .../openwrt/package/zapret/mdig/readme.txt | 1 + .../openwrt/package/zapret/nfqws/Makefile | 34 + .../openwrt/package/zapret/nfqws/readme.txt | 1 + .../openwrt/package/zapret/tpws/Makefile | 33 + .../openwrt/package/zapret/tpws/readme.txt | 1 + docs/https.txt | 159 ++ docs/iptables.txt | 62 + docs/readme.eng.txt | 643 ++++++++ docs/readme.txt | 1314 ++++++++++++++++ docs/wireguard/010-wg-mod.patch | 133 ++ docs/wireguard/wireguard-mod.txt | 244 +++ docs/wireguard/wireguard_iproute_openwrt.txt | 519 ++++++ files/fake/fake_http_req_example.bin | 9 + files/fake/fake_tls13_clienthello_example.bin | Bin 0 -> 517 bytes files/huawei/E8372/run-zapret-hostlist | 35 + files/huawei/E8372/run-zapret-ip | 39 + files/huawei/E8372/unfuck_nfqueue.ko | Bin 0 -> 5696 bytes files/huawei/E8372/unzapret | 9 + files/huawei/E8372/unzapret-ip | 11 + files/huawei/E8372/zapret | 15 + files/huawei/E8372/zapret-ip | 34 + init.d/macos/functions | 401 +++++ init.d/macos/zapret | 51 + init.d/macos/zapret.plist | 17 + init.d/openwrt/90-zapret | 8 + init.d/openwrt/custom | 20 + init.d/openwrt/custom-2nfqws | 44 + init.d/openwrt/custom-tpws4http-nfqws4https | 39 + init.d/openwrt/custom.default | 20 + init.d/openwrt/firewall.zapret | 11 + init.d/openwrt/functions | 425 +++++ init.d/openwrt/zapret | 100 ++ init.d/systemd/zapret-list-update.service | 13 + init.d/systemd/zapret-list-update.timer | 11 + init.d/systemd/zapret.service | 17 + init.d/sysv/custom | 24 + init.d/sysv/custom-2nfqws | 44 + init.d/sysv/custom-tpws4http-nfqws4https | 39 + init.d/sysv/functions | 532 +++++++ init.d/sysv/zapret | 50 + install_bin.sh | 75 + install_easy.sh | 1235 +++++++++++++++ ip2net/Makefile | 17 + ip2net/ip2net | 1 + ip2net/ip2net.c | 397 +++++ ip2net/qsort.c | 250 +++ ip2net/qsort.h | 6 + ipset/antifilter.helper | 19 + ipset/clear_lists.sh | 8 + ipset/create_ipset.sh | 201 +++ ipset/def.sh | 186 +++ ipset/get_antifilter_ip.sh | 14 + ipset/get_antifilter_ipsmart.sh | 14 + ipset/get_antifilter_ipsum.sh | 14 + ipset/get_config.sh | 10 + ipset/get_exclude.sh | 11 + ipset/get_reestr_combined.sh | 64 + ipset/get_reestr_hostlist.sh | 31 + ipset/get_reestr_ip.sh | 51 + ipset/get_reestr_resolve.sh | 54 + ipset/get_user.sh | 11 + ipset/zapret-hosts-user-exclude.txt | 6 + ipset/zapret-hosts-user-ipban.txt | 1 + ipset/zapret-hosts-user.txt | 1 + mdig/Makefile | 21 + mdig/mdig | 1 + mdig/mdig.c | 367 +++++ nfq/BSDmakefile | 12 + nfq/Makefile | 22 + nfq/checksum.c | 138 ++ nfq/checksum.h | 19 + nfq/darkmagic.c | 650 ++++++++ nfq/darkmagic.h | 76 + nfq/desync.c | 396 +++++ nfq/desync.h | 41 + nfq/gzip.c | 82 + nfq/gzip.h | 8 + nfq/helpers.c | 120 ++ nfq/helpers.h | 18 + nfq/hostlist.c | 112 ++ nfq/hostlist.h | 7 + nfq/nfqws | 1 + nfq/nfqws.c | 809 ++++++++++ nfq/nfqws.h | 6 + nfq/params.h | 54 + nfq/protocol.c | 132 ++ nfq/protocol.h | 11 + nfq/sec.c | 171 ++ nfq/sec.h | 20 + nfq/strpool.c | 76 + nfq/strpool.h | 19 + nfq/uthash.h | 1217 +++++++++++++++ tmp/.keep | 0 tpws/BSDmakefile | 12 + tpws/Makefile | 21 + tpws/epoll-shim/include/sys/epoll.h | 80 + tpws/epoll-shim/src/epoll.c | 305 ++++ tpws/epoll-shim/src/epoll_shim_ctx.c | 281 ++++ tpws/epoll-shim/src/epoll_shim_ctx.h | 76 + tpws/epoll-shim/src/epollfd_ctx.c | 1386 +++++++++++++++++ tpws/epoll-shim/src/epollfd_ctx.h | 108 ++ tpws/epoll-shim/src/eventfd_ctx.h | 31 + tpws/epoll-shim/src/fix.c | 19 + tpws/epoll-shim/src/fix.h | 20 + tpws/epoll-shim/src/signalfd_ctx.h | 19 + tpws/epoll-shim/src/timerfd_ctx.h | 38 + tpws/gzip.c | 82 + tpws/gzip.h | 8 + tpws/helpers.c | 146 ++ tpws/helpers.h | 23 + tpws/hostlist.c | 112 ++ tpws/hostlist.h | 7 + tpws/macos/net/pfvar.h | 47 + tpws/macos/sys/tree.h | 803 ++++++++++ tpws/params.h | 54 + tpws/protocol.c | 132 ++ tpws/protocol.h | 11 + tpws/redirect.c | 211 +++ tpws/redirect.h | 9 + tpws/sec.c | 172 ++ tpws/sec.h | 20 + tpws/socks.h | 93 ++ tpws/strpool.c | 76 + tpws/strpool.h | 19 + tpws/tamper.c | 235 +++ tpws/tamper.h | 7 + tpws/tpws | 1 + tpws/tpws.c | 878 +++++++++++ tpws/tpws.h | 9 + tpws/tpws_conn.c | 1289 +++++++++++++++ tpws/tpws_conn.h | 96 ++ tpws/uthash.h | 1217 +++++++++++++++ uninstall_easy.sh | 259 +++ 179 files changed, 22082 insertions(+) create mode 100644 Makefile create mode 100755 binaries/aarch64/ip2net create mode 100755 binaries/aarch64/mdig create mode 100755 binaries/aarch64/nfqws create mode 100755 binaries/aarch64/tpws create mode 100755 binaries/arm/ip2net create mode 100755 binaries/arm/mdig create mode 100755 binaries/arm/nfqws create mode 100755 binaries/arm/tpws create mode 100755 binaries/mac64/ip2net create mode 100755 binaries/mac64/mdig create mode 100755 binaries/mac64/tpws create mode 100755 binaries/mips32r1-lsb/ip2net create mode 100755 binaries/mips32r1-lsb/mdig create mode 100755 binaries/mips32r1-lsb/nfqws create mode 100755 binaries/mips32r1-lsb/tpws create mode 100755 binaries/mips32r1-msb/ip2net create mode 100755 binaries/mips32r1-msb/mdig create mode 100755 binaries/mips32r1-msb/nfqws create mode 100755 binaries/mips32r1-msb/tpws create mode 100755 binaries/mips64r2-msb/ip2net create mode 100755 binaries/mips64r2-msb/mdig create mode 100755 binaries/mips64r2-msb/nfqws create mode 100755 binaries/mips64r2-msb/tpws create mode 100755 binaries/ppc/ip2net create mode 100755 binaries/ppc/mdig create mode 100755 binaries/ppc/nfqws create mode 100755 binaries/ppc/tpws create mode 100755 binaries/x86/ip2net create mode 100755 binaries/x86/mdig create mode 100755 binaries/x86/nfqws create mode 100755 binaries/x86/tpws create mode 100755 binaries/x86_64/ip2net create mode 100755 binaries/x86_64/mdig create mode 100755 binaries/x86_64/nfqws create mode 100755 binaries/x86_64/tpws create mode 100644 binaries/x86_64/tpws_wsl.tgz create mode 100644 config create mode 100644 docs/bsd.eng.txt create mode 100644 docs/bsd.txt create mode 100644 docs/bsdfw.txt create mode 100644 docs/changes.txt create mode 100644 docs/compile/build_howto_openwrt.txt create mode 100644 docs/compile/openwrt/package/zapret/ip2net/Makefile create mode 100644 docs/compile/openwrt/package/zapret/ip2net/readme.txt create mode 100644 docs/compile/openwrt/package/zapret/mdig/Makefile create mode 100644 docs/compile/openwrt/package/zapret/mdig/readme.txt create mode 100644 docs/compile/openwrt/package/zapret/nfqws/Makefile create mode 100644 docs/compile/openwrt/package/zapret/nfqws/readme.txt create mode 100644 docs/compile/openwrt/package/zapret/tpws/Makefile create mode 100644 docs/compile/openwrt/package/zapret/tpws/readme.txt create mode 100644 docs/https.txt create mode 100644 docs/iptables.txt create mode 100644 docs/readme.eng.txt create mode 100644 docs/readme.txt create mode 100644 docs/wireguard/010-wg-mod.patch create mode 100644 docs/wireguard/wireguard-mod.txt create mode 100644 docs/wireguard/wireguard_iproute_openwrt.txt create mode 100644 files/fake/fake_http_req_example.bin create mode 100644 files/fake/fake_tls13_clienthello_example.bin create mode 100755 files/huawei/E8372/run-zapret-hostlist create mode 100755 files/huawei/E8372/run-zapret-ip create mode 100644 files/huawei/E8372/unfuck_nfqueue.ko create mode 100755 files/huawei/E8372/unzapret create mode 100755 files/huawei/E8372/unzapret-ip create mode 100755 files/huawei/E8372/zapret create mode 100755 files/huawei/E8372/zapret-ip create mode 100644 init.d/macos/functions create mode 100755 init.d/macos/zapret create mode 100644 init.d/macos/zapret.plist create mode 100644 init.d/openwrt/90-zapret create mode 100644 init.d/openwrt/custom create mode 100644 init.d/openwrt/custom-2nfqws create mode 100644 init.d/openwrt/custom-tpws4http-nfqws4https create mode 100644 init.d/openwrt/custom.default create mode 100644 init.d/openwrt/firewall.zapret create mode 100644 init.d/openwrt/functions create mode 100755 init.d/openwrt/zapret create mode 100644 init.d/systemd/zapret-list-update.service create mode 100644 init.d/systemd/zapret-list-update.timer create mode 100644 init.d/systemd/zapret.service create mode 100644 init.d/sysv/custom create mode 100644 init.d/sysv/custom-2nfqws create mode 100644 init.d/sysv/custom-tpws4http-nfqws4https create mode 100644 init.d/sysv/functions create mode 100755 init.d/sysv/zapret create mode 100755 install_bin.sh create mode 100755 install_easy.sh create mode 100644 ip2net/Makefile create mode 120000 ip2net/ip2net create mode 100644 ip2net/ip2net.c create mode 100644 ip2net/qsort.c create mode 100644 ip2net/qsort.h create mode 100644 ipset/antifilter.helper create mode 100755 ipset/clear_lists.sh create mode 100755 ipset/create_ipset.sh create mode 100644 ipset/def.sh create mode 100755 ipset/get_antifilter_ip.sh create mode 100755 ipset/get_antifilter_ipsmart.sh create mode 100755 ipset/get_antifilter_ipsum.sh create mode 100755 ipset/get_config.sh create mode 100755 ipset/get_exclude.sh create mode 100755 ipset/get_reestr_combined.sh create mode 100755 ipset/get_reestr_hostlist.sh create mode 100755 ipset/get_reestr_ip.sh create mode 100755 ipset/get_reestr_resolve.sh create mode 100755 ipset/get_user.sh create mode 100644 ipset/zapret-hosts-user-exclude.txt create mode 100644 ipset/zapret-hosts-user-ipban.txt create mode 100644 ipset/zapret-hosts-user.txt create mode 100644 mdig/Makefile create mode 120000 mdig/mdig create mode 100644 mdig/mdig.c create mode 100644 nfq/BSDmakefile create mode 100644 nfq/Makefile create mode 100644 nfq/checksum.c create mode 100644 nfq/checksum.h create mode 100644 nfq/darkmagic.c create mode 100644 nfq/darkmagic.h create mode 100644 nfq/desync.c create mode 100644 nfq/desync.h create mode 100644 nfq/gzip.c create mode 100644 nfq/gzip.h create mode 100644 nfq/helpers.c create mode 100644 nfq/helpers.h create mode 100644 nfq/hostlist.c create mode 100644 nfq/hostlist.h create mode 120000 nfq/nfqws create mode 100644 nfq/nfqws.c create mode 100644 nfq/nfqws.h create mode 100644 nfq/params.h create mode 100644 nfq/protocol.c create mode 100644 nfq/protocol.h create mode 100644 nfq/sec.c create mode 100644 nfq/sec.h create mode 100644 nfq/strpool.c create mode 100644 nfq/strpool.h create mode 100644 nfq/uthash.h create mode 100644 tmp/.keep create mode 100644 tpws/BSDmakefile create mode 100644 tpws/Makefile create mode 100644 tpws/epoll-shim/include/sys/epoll.h create mode 100644 tpws/epoll-shim/src/epoll.c create mode 100644 tpws/epoll-shim/src/epoll_shim_ctx.c create mode 100644 tpws/epoll-shim/src/epoll_shim_ctx.h create mode 100644 tpws/epoll-shim/src/epollfd_ctx.c create mode 100644 tpws/epoll-shim/src/epollfd_ctx.h create mode 100644 tpws/epoll-shim/src/eventfd_ctx.h create mode 100644 tpws/epoll-shim/src/fix.c create mode 100644 tpws/epoll-shim/src/fix.h create mode 100644 tpws/epoll-shim/src/signalfd_ctx.h create mode 100644 tpws/epoll-shim/src/timerfd_ctx.h create mode 100644 tpws/gzip.c create mode 100644 tpws/gzip.h create mode 100644 tpws/helpers.c create mode 100644 tpws/helpers.h create mode 100644 tpws/hostlist.c create mode 100644 tpws/hostlist.h create mode 100644 tpws/macos/net/pfvar.h create mode 100644 tpws/macos/sys/tree.h create mode 100644 tpws/params.h create mode 100644 tpws/protocol.c create mode 100644 tpws/protocol.h create mode 100644 tpws/redirect.c create mode 100644 tpws/redirect.h create mode 100644 tpws/sec.c create mode 100644 tpws/sec.h create mode 100644 tpws/socks.h create mode 100644 tpws/strpool.c create mode 100644 tpws/strpool.h create mode 100644 tpws/tamper.c create mode 100644 tpws/tamper.h create mode 120000 tpws/tpws create mode 100644 tpws/tpws.c create mode 100644 tpws/tpws.h create mode 100644 tpws/tpws_conn.c create mode 100644 tpws/tpws_conn.h create mode 100644 tpws/uthash.h create mode 100755 uninstall_easy.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..68145e0 --- /dev/null +++ b/Makefile @@ -0,0 +1,48 @@ +DIRS := nfq tpws ip2net mdig +DIRS_MAC := tpws ip2net mdig +TGT := binaries/my + +all: clean + @mkdir -p "$(TGT)"; \ + for dir in $(DIRS); do \ + find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \ + $(MAKE) -C "$$dir" || exit; \ + for exe in "$$dir/"*; do \ + if [ -f "$$exe" ] && [ -x "$$exe" ]; then \ + mv -f "$$exe" "${TGT}" ; \ + ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \ + fi \ + done \ + done + +bsd: clean + @mkdir -p "$(TGT)"; \ + for dir in $(DIRS); do \ + find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \ + $(MAKE) -C "$$dir" bsd || exit; \ + for exe in "$$dir/"*; do \ + if [ -f "$$exe" ] && [ -x "$$exe" ]; then \ + mv -f "$$exe" "${TGT}" ; \ + ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \ + fi \ + done \ + done + +mac: clean + @mkdir -p "$(TGT)"; \ + for dir in $(DIRS_MAC); do \ + find "$$dir" -type f \( -name "*.c" -o -name "*.h" -o -name "*akefile" \) -exec chmod -x {} \; ; \ + $(MAKE) -C "$$dir" mac || exit; \ + for exe in "$$dir/"*; do \ + if [ -f "$$exe" ] && [ -x "$$exe" ]; then \ + mv -f "$$exe" "${TGT}" ; \ + ln -fs "../${TGT}/$$(basename "$$exe")" "$$exe" ; \ + fi \ + done \ + done + +clean: + @[ -d "$(TGT)" ] && rm -rf "$(TGT)" ; \ + for dir in $(DIRS); do \ + $(MAKE) -C "$$dir" clean; \ + done diff --git a/binaries/aarch64/ip2net b/binaries/aarch64/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..ce09b8ffe552637de8403d26fd8b5909f51971fb GIT binary patch literal 37304 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

3;bGh9b(& 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 LMvCW4VAa0?ZoHrt literal 0 HcmV?d00001 diff --git a/binaries/aarch64/mdig b/binaries/aarch64/mdig new file mode 100755 index 0000000000000000000000000000000000000000..3a78f808791b84bd8a79297fa31abaf73a2a7010 GIT binary patch literal 46300 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 D1Yq2P8r*6))bF#bAQ=XJ?|?=mPQ2 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 k(f!rd0MXRRJpcdz literal 0 HcmV?d00001 diff --git a/binaries/aarch64/nfqws b/binaries/aarch64/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..7b2a18efb39f8988f141dc4d99990de5a970aca6 GIT binary patch literal 78280 zcmZU&Q;;w))Fe8#ZQHhO+qUhQZ*1GPZQHhOoBQ+DZrxO!boJ>@IuEJ5#9vfK3Ruke4N000L7Fu;E+|LFz$zchgV>HmL-@ZX|GF!2Al{yXbG zXVCv=oyh;N|3*oM|MvYa0{qvh000zETulDoy#HsD{~!6EcmQa6JtkEJ4MHAdSgQXt zIhX_eR}uV2jKP0!xc?|DU;zFE(O?VSh|D0x-!S%$JF7}S8767UI4Uuj~_d8cE!36DL4m#-);IN}yoQ)ygD zid*VGC4=>N9Uy>BOh5oQrT@zE%U!xmCs*p>EAF3k4jy@8JfJ);Ftdbchgy&?kp$=X zgX^fd+O@|=a%}yW7wBxeCnd9=NwS^yc7VJjF^yCpC}{Lw4pX6WM8=6IxJfQ_vZPJ{ z4jSAIaQw!04U;z94BICtpvrr<$`rJSqaA9EHax4;JB zKd8gber&NO*Or@uBf){nYEeeqFV|js+dF!+^MQ$(+I!U>HS4BzQwi{8h>F8=Tg>9G zz>$s(^5&$rE=@|wTiL8rB&2IgC#w3Lb# zBKxsQSRO>me2O3U;M*HaiHqwU_gJu(WuyuLl=B1G6F7eFKNy*XHcH~y<~DlJ3bUqd z8{q*+WwK*LT&TFlP%V`*=}|J})xBGnELx!u^cW4N>x(^ogV&UUYKxpSP7hwnZXVhF zYzbO3(g3G-+L1$Jp|GVjni;Elw27NC71#%>GFuoVwlnB3TD#-zyeifdA7n9&ZtrCh ztAT_AakoPBQm!0_47El0+)49aj-Tsm?QFrxvVuqC3lV|5$!`WE#X$^be053bnLBmb zjOdrKFv|?8?rpF1{j>1UMog>gX@@Jj*FQEo_1!WrN~W7(4B%}xwfBaJN?l^ zeW&iwL0*l;JFI|`!@uP^QcQLat>SL}Mbg`|7vd6qbtmuE5_vY^Z#R8hvFJ@1ee~d| zkcpG55I+GMCuPT(h%rn|8eM&=1vRbxq#0V43JME4 zjNMy4bZK$^c{Kf61j{zssXrWjw~AoXLEh=&LHL{NR_(=FxQYh|TQOo9V)Y6Jej*NBaR=gmFT!*A7&Sypi0)nufyD8F=k z%IeS}Dh+*dl7(Wt5YH`8UtNP!xS*J5)teaT4b0=ec$b57p*-H>Bf(W;yRrfl)Asc6lyy0g-!H-p8-a3PSGOCwZ+&$ zEHf>!Pwix_ydaC8X)6UcWtrxO0vrx5PwgqrL z4^(TYQUb^S+^egprd=7Q++gUT=zUm)V2S`0Xta#fb#7c?=JMV)!zo7M3ytwC|hMx>zeH<+OMoK9}=&rQU2w+sK*meulxnO39DPX#8?Cf zI}oTUqwSm^H!@!P6g(hTm!*CK2om<8KSi|{VuQ87=1FZHos0_3xh%Sa#$|q#o)U$q zAjEngU~>AC$uzeXR=9z-F%(Q1I)?IfeXh8vp`;5#0^nCmE*X$>+lKPHH$tZKUBToY zd2gRz-Gfy_R*)VI*+E`%b!tjfB?*OdmccM->Kmt_)?;iH$6Cm5=fw_?Ae`yHx=rTF zp}CGM9{j!f;VdAUy_%U3gEVN$`LL}e~B6#wCeJ9C%U1~;;~ufY5f{Ci8OPiJKSOTB<$z zGPhyy??}7%wooWFJjaPEm7@fPU^AweEor6p;e#p)UWBEmR#0Gu!MT0KPsmcywRJ4$ z3*BrOg;s}l8?{G}P0EOpDJcDb=m0q*Qrvyk*H{T7zRX-L>G2uGSNWtcnaU^Hv#&UaqWy88K&9aN@{f;xyxR_CIsoE4j zE~h0S8^vVD0Rk|JPV8fxfeZy}7q%;zyxx&uTpwQacC)q{EGd70P3Ty|6j`Fq?NWI5 z7+O{YJh&eomS=XBA*AYzJ}mI`OM36Dvb)xpeB4fnHuu2V?m`V&YMiuR;Or63mK4*i z?Ajq^L!X88ozWw&n#<~Y<$X+m%SG)w72%GesJPJ-Ls!D$4`C!#;$+u!2fYt^KHvU+ zmhXHb`zlUg#fh@+bQFI*%q)jDqJgt$8)Wpv`uPn~etD12mfL+_MP^dPu_e9C17!z| z%mhV3Upv{{E3#p&z}}(yj}5R%WU9YH;nEr^>Sv?3Hlr8LdbkG9R1PW09NjBtxB%J@ zP~$B{__WBZAlo{O{_QiSgK_;ZwU?IYr-?tYgwIQf;U8~n-3XerUh6BybEj2dAnh?V z_OKe?zIj~A9Ft}sJ-pI2Kcb5K*4l58+!+9l7Al-C-ZRKT(kXQYB_+)j3o(cKs%)W- zDx!r8Z+7Q)jx&#^mdA&gnKM=Uk@kX@5#Rfx363)T6^CEP@_b9=aqt*Nu^B0yCZ}9R z-uRFhL+48yt@5Bn$GR-x5eZ8txuUT7`zgcUMS$i|&@$cp>+|`_w;X=(q25aLC1Wu= zFi{Gb7+vjN@UO^+c}gmSbUS*_ZYI2yV5c3$+5wFg9ENCPjn(&6*bB!vw(U<4!WQr@ znNRlq(EI{^Gtt@ERYjhIAOpp<2z znHxQ&UwBj?>|kXL1m+xRx|5fzN7mvuAb(^m$JWrIOR(I6Byjr`ILj9?KbKdv3`nWV zvz=dn5Z4GdDed^k796;uG&`#a>W!07zyhMu)CX)N&Xqh<_#a}7EO||K)8c1P1$@SA zJUuIoPZ)oVOQ=Yu2pEj$sjaBbjKeXG$#NRQ?sjZAuL~<7yBsxvdatMqsQ)!0WmLfe zwX>agNrdT=>`Gkg>JtL8Ii`~z*Er`H^e%A25c7_>z=uHXO!>|dArDL#b1*g+{^8s_ zbu+7S=%{I{%SWI|>9TCUSN^b)C600+7&t;g*IT8A{jkooa!}_$ zZ%EU5x{8-lr2`{+Y%F5s62XvIZ#C+hi`Nnl=1{F-5JffsR$~_QHyZIEHijyuR zz!+`-RmzR}W;&-$_HfH^BHL4-Y*Wi7_L+}X{`$6=6MqVZi{q7u;vWtR#GukDKNXpT zx*YG$jFJgUTC44QTX=KkilAj;3C}rF8SgzrrN6cK9=|a8oOkM!fQF{9@zwNAle^%L zVS}y85VW&@td1I(gC?ug#{)sz=>yGw7xJL_{UXa_0KVrIq6{+a1M*H1asMJgBS-h3 zAF1#azXDl+v|XSK{yI~y8SUT1hp}w|)bO8*W}R}}k5O4Sx46TRU1nYeHwrUG8Pnaq z?gw7oPLf=%<-D{HB~*&wS7>SK5>%mWQipNW^;n1_t?x9M5wtaYnw^8>phO}JiVi_C z`GgUsb_!tDEd6wS7cE+Ywbn1NJ3^<3eL|`J&a>LB?+ltSt`SsuP)kD#d8^@GDaCdd z=^zYKn*b@TUH?!SB_Xu8p~w;1sd7lz?s1{Hw={gA|KW-9eY&aoC0nhI+1e9HXP&`Y z)QRwHfy2pZ!(=M)1`!Z&g7+fqrI`*3wT1s0z;ALM+2^_fyYoeS-oecKE6{~$jF}?0 z&9PRC=BDjHbm~<065pcjcokE8J_%?r6p@VTalwUcZX%=mY)4R*6;(xqEU$jFTs}=1 z*RpCQO4R9Yj(mPYJU-P}=VBi<>AAuFjCG!B^1t0amqCk1{7_R*-SmG7GGeI!H#|3= zlQ4HP5#GSKV42`Nv>!7g7F?wDk7PAGkR}570jgeF`Unasp2B3Qv@VQ0Xb02o1WhsD zx{JiXZKlCKv(YH8ryTY!aDV&j58MqMsonrbD+T1|d&8r2!6vYv-5u1oD7B-;Z~g;l zEmqNrj8mK@tyz|DLR^K z^i?)uN8*kA6`AK;rPJKNR;wXRY(cSTu!-;vU94|e70=^tG8M8`y1AM4Ho~@ z;RCD@HUe7CCE;R;V<9{vo6aP@T>V0fE80tn75+NPYso)jQ>a*Ok`GY!Frn0`go3M` zWto*Uo+GG8u`nBvcl-G?Mz@4@3~Xqvq1XcbRXiM0Spuby2#MBbuq1`sw+3_ ztWM$>RQpJB?7^BFZ|l+q-M4ZR#t5>@yDOL%0zto|N_VxZjcK$B9hXZ`w)JQHm%r0a z(F-Za8axC$DB=mrdi4|L(Y|mBOx7PO+pn4P=3K)S8Xp}NsgYx`$mzJfAd!|v)j=?~ zy*J3YR+_Zf@>XCuyF(nNPqczJ0}l~cNtBF%)~wp)t-sESOmCc|jnitMc$CDn^Y7Y$ zOv!gxqRkYJqt&{3)|2_rnI|)Qrr+yY-BoDcVP%mHT*bgPboSS*rR*HsZM%5#R1@({ zLwM=~J74g(*3{*g$dpk3F<9M$@PTaYtrSmr?EH9nc3BE>Icesc&%Tm+Y2c-o!nSS( z8iu!%u!qwDQCi3?TAYxYDm}%IiKmKe8#Q44q{VATzBlby!?x{E3QOnP!>99~X2tKv ztXS$7FSZmOj*lRx7Lo{VU@iW1W8@yMTi~;dVdo*#co$@AiCpk2BI=+Cp?P5Wm7 zE8cBq2n__Nzf5NZF)eF*1pmF6vTS{ZwlTo{E7T{ZI6a}V<;ikqfNCG_mI5W+RDa5q zjZzo zWW~00rp3SW)(t6(;%YqphQE*jPVeH|X~AviyU9%IJYmDx=n(KJNOsb7l5maQa4--M z)XEcWAK;@X;U43?TNRgTsc-555obuaYqX6mYS&Qc5UA*?D`Zl}+dz+wAns8`O%I4zu$YlEUqQ%t*=CuR1w`&qT%vPte6*+>1q9l z^pZYIa;YNO-(|*vRg(46ot3b0 zYmZ)(^Pwhf$@F5{idErC$-Y%1E?n!)aji(+qtrAFhg z*3NFt?^_}twLfJm&QGMjfJ&q;Ghlq-!L_mjP=?n6q4|L7n!-P6%g)rUZxM)$L9^Hx zh)!fE8_{zL5nJyLSqNAP=In&LEKVbhKbo*-t9NySElmgkf#xaF@LzU^B8 zc#R|ak6qqS;7fQ7Sz(!$1T=}h98S}0B&qTToU55TuCUOmY9e@aDi$a@ZYwb3_x?In zSy9GZ8^}@q=7u%s1lnR98OX&v#6Cq>IQ!EEplMx0%Bby3o%(D7ADqgCZZvvX- z;%4#HCEyxXxdpD^h#Ta^m?&V*FLJWKMDL%4kxm8%6#5#x?tM*1Tdrp^!>%8eSs3;=uCw#TzL>1{_xpK-aeAOZ7vPh*5hPNEy~1 zP$d;3_YR5-xWbb!>_T-fB!6!Wg{Ep$^NnmJ?^~l%!uD1acmstG9r_aZH0p}6qNH@w z!;;J{sc?b~$e|Fmo|H=})~P}-*v~Y*6AjtpFBB!+pZX&c%&s??UXWBHo#ZePk#s>A z`xyv=><4=GpIKT7P80sgVdZNjYBB+}?VZwIk|Rj7lS%>}avd7`(%=`99+BidA>2 zeZ;S-uPrl9fYxWCG*rY-)S2{!Ar5)q#hA^TE_->*mU`-%DiN#*X-Fo?l0a=7+)b$s z^wwc&Wo-c-h+01R@))=c-&U!Ap)LKS|5%f*LYwufHThVf-U$Q4rKaW|_8u=t3ey~8w zv8F%_ERFF}{fe;O(IVppF+Srhm!c1vQKv#)fIkKI^ah0+Ptv&YmSUuOlTde{V+ zgEZ=o`G;m}@TN^KeDSZ3sV`AD((Y=gUqEian6bL_v$qedL)r#A-;IuuO+283bH)0= z;-Bs|euw4EyiAbV^~*~DVIv0vLHqrB>!xd!JA3@m4FS8+A-zL)+mK_|s$R8YCx1UEVwjxU&~@EZ6pe0(B{+ zP1T#;QrU%+}ft^ns#tFAm> zPHMB;51dK*y2DYzd>?ckk)7^p<~d&{85Puwb<`DGj3~~>Ri|!v(t+eRSb5Fzir<_IA5ZZ!AdKgkQ7+gd=c0=4hti3w6z6x4-- zis>r_1z-mGfv5GAHj?fUJEMc*A_peIo`r%(wFyw=(MZnWrxA1az%g2?<^dJ@Ktk&} zO{rfV@5bR9B)LA~dq+*e)(G5Vp(78uLVZxD0Et%L`P-#d<)6bo8Ktw=?vk|_3*Cqs zQ^^sqA=_rH86L)BsBUOvg5!fED0{{Mu|KP|Xy3XwQ8$9$lj1wbrr7(P`k#v-@@9zS351YO}2mCTifyMThWYEJ)b5i1N5>ygEkv0?w58N=NS4hz_)r^#rA) zfb6}dQy9F%irsUQ1Uv3v$0|`3%?C-J6solfP=AbNDIBlGtEU?%gdN!V*ECcQ(AvSW z=s|3PsVk`=C!rXncm)s`yX+css}3i}0z)7wqOq`(mbCZas7iYG*z@(KgIpsBzX$Lp z=QDrB948kRDA4G_8S3#olnpa+$xfA>0tj-xsL56UZKc`)7Ewvn#eRPN6}HpYIakNH zrW0<7(yjJK^S(h?vInZ9eW$P+-bkWt4){QV{!k~NTq@(3JU|wUTnA&Lit^l&8Zj1z z05R+e|6P{&q|8G0#^OHXt143&zW6wA4sYr!<=0GNFc)U?GXc}Rw9OHm`cLQ*$dpZI zt8Q31!zj1O!k>azNrFDfsGhQmuuVwvCt}lI+PKBIT0j#*l3|`+^MnG(Wpm3LX;uyc zB|ussbyeOGK9XE@Sr55qAms~O!+@ejA%Z7-=bdxQ_^V)o4&z8Ib^U5jqgYlglgztT zsggrkcl7~NCkRsP36z}#ixWtFqsi`yqzWw9*)b1TFTXFPGiNJ9#uOja;Zo`D91^q8 z&UZBS9{^$jD2fTwPM)3>i`8tgnjOY6tg@EemR3`S!@tWEoWazm0VJiB?f^aib1I6G zJ5Fv4FPNacN?YSN87-65dSaIABpu-MDp?mP3!W)&c;h+TPcJ*WJEX8V8W!e_z@|Vi ztR8H@s5$ShsjyoFZx6W=8;xLyb&w2Lq}t)D)Ka7*Yf>!9?~peuL@Yz)(m zbJ7GAma}{ldDT`D>1cjbyylaCepq0&F7H))cTfRQML${`dorpdDXwKg zbLz6pOkXoHskkf^RnwX5mUIimj+gqGVDs!@*9B`;mG}jNivG%O&qc2!5qT+uvWqr^ zV6Sqw0=GVHTWM^@XhjI3qd0MTq+uBfD7FCl-sL~iu=I=L`57)brz~LLPTnPVwWK;UW&-74LQBCystcN zI`hO0(Wos~XLnf-z+22>1K=EsPZ##z1dWTZIeQ_sZ}{FjW~!C;QXCoPD5fh+$TZ1xw;>ig=rT~iKS%WhA)2< z3z}^8g|ufT5rz8H%PSIz6MU~9sB6c0cw~}|omeGwtE{&kcM%CK5rAB2+Z_LD*M-oUr9l&82E92dJJlJp0)Atyn;(d_;? zliuKfhj9OdV*Wy70XGXBwo)*9Pf{|{jH+Jr(cr_DKf$F-Hdqx(%IlIT4RKTshsUMw zAYWz_WNg7|aiV(NXMo5WiAJ~A)vEDpLKV92c}C;X$7iVRwn~OV@Pm~{zvX|lEaD~X zLw}IZ^IK-=(dxDE55_%*V*ra)@!6a)s*rRoui?o+k&{b9Sxm?v>!Y;)6{>eMokFC}=k(=eg z?cWIZXSMCC-UB3Soso5u6vH|v-pR6|V(6mwqYN`ulZ`q?#lDdUFnUlQhE*A6xqSw` zLq%blk_^EjeSYIP?Oz~OA1&MF0)YkfAB&lh@Y)p7m>(5tch{aZK* zmiJRKF!5GVoQ21HU{SIO{Jy9Y9>o`$akgT`&KmMnn?AYr98MEET%(}hB#5hmt3%J# z>ZOoeyfJD-zHW9Am-;GhT*XkltpS;z`XL&x4ynW6;A$#G{%HVYT_JC8?)R<@k8-j1 zoA(scS^a0>a&6*qMb0Vh6=&kGxylRezGgQLkIbagb zEOTE1p-gVSxZ-lAAB~osZY?x#hANxcnl<_9U9K$Ps?n^Bkf=C^FtoKm6U+3npq{sZ zLmwZ>B8EjXs}$oj%N$P%+>thk=fV4`R62+cO2dyeb^8?W&HBxwest2M#hQ6b3T*ag zu+7yX3Fjd{Qj`r$?3Ok+@Is^{OMuNE?e?mPPAiG~3z>ZEdzGZ`hPn>rmppD6p^G-1 z!1DO0gKVw~hb^_hs(>VP3KoB>!*_X(f7QdL%cOcU9ncA6J$dCUXe#6mA^_C55QeNi zq|G{QhhKsqIJ3j~{dtx;Vr)KNw}@Rs9(VxeudI}(UU%B99)+Bx0ztt^v~i6x@z|m+ zqL3+#Ig%5h_apMCuP8+F9wqZWOk@OkOEP#jB@T7cfil*c{fD1Hi2hDCz9zFOsh$__ z9qf+KcDTFBS0M303&Sl-z%-7rMP2KhAzo2?of|L_?`F&kx2bX<s-ZTWI@A#0Hhi|FQJPB& z8K89H25e0^+Yx@>)^C2Y2D`CEigg5r}pAd2PG$L1dAH2m)fZg$abvoN3fkua4P;b9NP@J*ZSX zJDgpxYIm?+2T2tz?6%%=E?Mu$l5#pYC(qCcleo|AvYMWfFM6@mFR()JRtu|+{4#up`>#v4jOhG11+V<(0g8hX&Rl3lo*#&Efq9Y!$+nwzWJLPP~|a^ z^f^m~#BKD5xc&3Yy_CII>88bU^#ja}l07tTcswc<>9WqBh_iKcaIDm`z+y_G5mexNXP2NK~eTw7(DFrisr= zWJ?&;qiXG8VN)yzh9@a?Ynx2-f*V9kG$0J&QN-O((Y>T%Z|JXVBHRLg?U*3T+6Ey> zdsKzy%9x(K+%juL*hH1Kf`X6M^xLmyOrvKoXUdZC7G-;pp-d^o1Ma7ce%lc4v+i&g z&%G%Bu!1>fTmni?mrOz8JA7BXD}R)cG@`&I8!_lHx*zQjVdGWlyv6u#`ZDG=upmwH z2r6p$g1awuHo`U-!vVU!9sX7Qg8J{tqYo~$Go4{%YDBMnx#1X>8cpQrM0q@hm>L>B zYAsv0F>8kOjRY(lawbvr|%5LK2N zvK+Nuft#vAnpLo)C$)pVis^B*!Rv)7jz2{ywd*i6G%cdimFiQ!X-dvN%4K7zGZCcT ztHo3KU*Y-@B7yau9ES&)Zvin%5~q*MK0)9gF|kE39tG1k=NciBEM$7nUb25V*~bOW zpnI=)?78EL2N}hbB+|_DLVZwbU8nfdOob}2)D3YOxO=fxz|1L<}A5z@TXVLbfL{q&I0h|?W- z&f?ShYm|OcEWc}-SL|2F0r879lQu@z8Yde~XKYIL>S6E=)KqBYFG;zD4rymtd7FL@ z^<`h=d)hr-YE7-5yL%-X9G~#nI@2!_YiQ|YK#u*DEJx)0CUV}OP0}<}7rjkuh8h%N zibeQOUK{V^<23tr2BOMBW1N_thHnzPSeBiui(y(Jf!XP!n7{k|bVFov6OP8x(3lPO zeio;evb~B-tAgp$&Cx}vU5Srnr&De4_;bxMGlaZBF_Fcye-M!NyD_EiDbAagxK+2} zTXoC1xei+TEW=RSiv~4_)Th>Q+&w-04+{tB9 ztplii=t5B9Xm4){R|9CSil$Nu zZqa1s9MDQub|B{_(n^+n=crNJtDpOO^I+m?eic7xcAaF7v~8+CPd-ytT44gWMI!9| zUpGt7T3{N`O3HamJ|H}tID_}+!5hLkm%x0eKrI?gcl(6iHbNw%gi{C}yZU z=py*(CZ5Kis51bNNGk7+ zN)$0H4aLMX$9J~+%Y0LhtY73t__{*EdW(AWJgC!BS>KZDu@ZQrcDBxj0R5?=8zVJ5 z!bkvHk#@-F4JPX`HvHWA0lL|>?)1@LAAo|Lco$5kD`n0Vs37G}M2{IF&< zX%M?Tj-i_X3K<#vj5C&md`j@(Lt2Wc-Ram^!0>oSH{kKH83$*H1*kh!7U=JSt#1%a zZFr{HN;CNSADQi<(S7NKCE8WpGV3^h{`k`*rNBNgnJji~w=|xNyeitk z=7p_y%4wx8JoB+}Op!bX-qaxki>+y5z*5H=3o10vS;i*TN7AL<0&_A15@oVOAA^%t zUEPUV?Yd11_8M7vB~z^U8$Ie|b`CIDl1@8JBGTg!x*49WA0r#-!1% zkPY=739D?$`8hy_3R$z{v#^9@?E()w^tlxp2$*#k*Cmaf6fCa?E%s8z@0Z|qr;w8uaKr4K zR`uZpnN!hgW&x||!!Z^wVpwu4J4*9~(3QT-t#XUpIGv`{n>#uWbX4t@<89-@9|dnx z4U8v6_90x2RZQjO{k^?KbPCP5(k;uB!=6O5RZ#DMAI$35=k6vnmg)qY*2VMT4S+tF z?k4CO{cetWKPo)dNOBW_AGswNgsKqg42tF zTs^iDor659o6Mquax?sA#<4#mh=51pS;z!z>@+2C- z=X?kK-^7eZqF%+^+kg>49wCBa@vues(?jtBRO0q10=l%R#PrB#$7V5WB>q0!aj|=@ z&aGE-Fxl~BA#dIV+`M~X0A8(?DYH#!^wH0@Vu}D2t6=xY+RsGQDO8{5#k8 zxokNoE^)(2@RPKv5%!*{Gmyq3UEDrp@=Ce|L7QtbXLyb2{EUFRx2Ef9%%W@%?5Ved zx#^Stszwi$iRVpmnHM}6y7oXf#p3b-lM;J0Bx2b0<|+|Z1*_-_v2225z#tC z-JNMWlpM0o=N-{)SUZfIm)e?C`_%3=ga~8JhtPXDAZT8?)k*k<`-0_-(pFVCFo--;Ln{bgoqhUF#}Dz^0m1 zkD=q_T=rCtwStrqYicYeTs+e5+{tjhhI6mJXIDt-sEpQ0t#RUfXwi|a}jbs z-W7v~Q zUeC4XY58nbl0z9$TzOy8-Je+N{&p*9g&S(k~VC4xWEK8Ej*Q{ zags7~Sj#e4MXf+=m;gxoK+l`$?1+Pm;Xz|ZHk#*5J zAvmt(qfacbc>Y2c$hLib@V;%qzwnc2lzq@Dp}RnYy%{#9O8I6_k@1RhJ^Bqu5ijUQ zY>%~_9}CxfdZ1qT^wV5U@ET>v(>_e-wHCmWRRGN%ufX{UAOXFq^NeJ_jk&efA)3)D z4w2bpGH!e6w0iB%pTU0d!lWby7ca$XMaQZz_a;$|?NKCBfhl!NiOQb7^8tho$+kP&RlRm%D`&~3v9e_wLei{WjBzadZL)>gZ z(bPF>PDN9;+&D?&r&S!zXi~e%XCtxhD_Z)+of%UfC0QT$jkDP;2+=&IoplZ+B~Olt zxj!5}7jVQc$oE0cKTp&o~kSaT@q9WE*p+Q%xJ^s zIPu?UX0d%RQFK2!$B|L7Pf8>*_vPw4?X=g0T{W=&fm7!E(v2fG2{CJ@PDkLYY>9Fh zr@`!!xiuTV<3+GzNPN=i*iUr33qm_juQuyaK0bepq5Emhr4$OyQBxq;=3Ts~R~+9m z0$@X7S_ORklA1N0|9V$sULPd@ZK1Acyx0cBK4qr^$dgF>l6)sREP#e5*i$&Wd|u@{ z_>5REmnUc(^_Y7BE~#oHF@7;`S*4PBbUk{YG4~Bp#XJdw_O;>ls|~vyf6&rnN;H!n zz^N0vY(8({kq-6`DJt#T2r`3ro0b0W$i(r6_RiF8m$R!;iW~KXo{*9&z7H~@6SmyH zOGJ@c_$YE`XI4?2!7E7Cj*>Eq)J*%~$l8LDAO<=r63_Ou+8#3e4SzF=04TT8@S6Zq zy#ae+5yN+f!p%wI(!Xh%Ecc+QV8C3re07OZLkQ2Zt_1&3YNm!deggRr5H{{UP&a%p zFD1AE=(CqyiU~^%;+nZ}t=v~2%g;d;?Bpn=R^3juCHeZCdRHU+w?)ZQTg9*~+yx*~ zaM%2)@{yVMV-MfA^yDRgY_>)euf-_Bp?Guz(l}COpb7@s%v&xo`=ggLqk$qj(e3gc46G}E!M73sHE3XKz&1-N+CN~qkw=*&>rQrF@8*5FkP6RchjYF zuIDjdhbEHw3%~ZTw%BNzJ5HFDfK%0mR>R!N0sn|!C>H^H_?gjPdzd+VZm29+U<~rnHMt>%ASSRpA zsGo|$#|vTd*iY0ru$LB5It}6C9fjZGIq6~XaF)#~Qi`2?OJrb#?##N(IUzU=s<){& z$CfkQ$(v`HG}L3RCs_ajAF5XvH4#{anBKI_el%73?>3P~Yx~zcEa>U6Fz> zPRuBRl-N}N1zJ-HgyuXxS;C#T<)Pu`zq0%rH6E8JZf!==91&rv2;Zbn3-p-Y80a#= z2sL003=^>xL?`VJ5Tvq?fF1TRAY1IVj85o$+^*$`c?LB?cA!wmfC9}&k^7A_r82oD zs43;|qRgguj#+tGrEqvrJe^`NZDb)M!hVbu&?IwReWB&6Iyzq%yHt^X{!lq${184U zE8|$h3XE~Ax5|~93R-Jw4*~s}<)2ujvaO5UO4ut|%AK0-yw6&x*weT->or#vFx2Ut zh;noQM@B`N+gmGbYA;rZAMzx4IDbP97hn)RMK`Ua8>Z@JCTSUJ3hPP3l`CM5$i+{9 zI$RrbV2CCvqIQq^iaFyc$&*324p<-HqO8N`uq-XL41!Qmh-1A#=@dl7;KeYF^kBip zUjzCkq`UBN*3bAy3-u!KMcDP@5=UvTV5Dlp8gyALwE_!=6Sa=0^-W%%Rs4Z=epD_> zTmP|PhxQVJT1Aj-8O5sLH^5&uuG)4+qkZHE$l#$#PF?3ZW+cZ^i!cmL^dmRa>G^nk z&0rzoV|V3z?oR za`kI1nkhN%F$n>{duTUeo5z+6t3;+)=zIYUDD%TshWr%pW!xbxQ%_T+d{~UMpmqkYNxHh7hD|UE*RZyHmtT1A9pEsg@y`i*kdA7z0|UzzzOAF1H+-=z`FUJW6?0Hl zgth%}R%W`r=@}Xb#}e72T?s9Q59j5WZ@7|aVkGjO{GF!Yhpn2ga94u$5EGJbUI^e= zOz(0urjLej5@P16g-e=Da7jt0duZJ~(Phn10Ql87X(|vJlQRA*E9hrN;kZ%+7@|m@ zxrl7+i4&jF^en@rGV3kfb{^oV-Y5bG^q4gyK5)5b`#|48G;AX(A5`~U>JMY!ADCeV z7MU7oc_p8}0q5B!^kA|KqOKFodFBaUSU?GVPF)xffV}h4q~K2bo_K@QCu{tL^3kbP zW_3TWfRotATnif!sYO%|Pta(1tv1DCk>nuJN^4JHJqEG_%|Ky(@!R^_>HyD+_4i1W zpKT`pGDgX%Kg3G0;nI^lZWe`y;|;|vK$zD-{MWd{2NB?l4#MX|3mJ%s!iI#_82^jxSX=1Kgn>O&IbN1%F&Ws| zAS23~6f@xdQ+5vHvNNHMm&khQWSAL1aVmN`uku~_jzqm1?43(yD=`TDYH}jS=Pqe> z5ac~08q&Mfpo;4t0Xn*Tzd3LHOqEKd<(*c!{(|%iPo(lxMWy#M^)6gd<77*uT3;!{ z$q|qOa!y_NVz#5t-s3MFx?sDa8$Bk$P-Bus8p(sF5G8zE+r7%eb(kvT2X9M8 z+e29UlLq%GslfEXNwyP#*26#juX!S~-=$kPGUwz;LjsMeZt_m@)VGs0`cb!o{{tUD z;J>#>w0^O;$0!0w-fi)#AInI}UbUjcjQX*`_77`e;8KlQ!Z`in=J2R4F7aDq)}*RQ zDhze)aeXvvY;&Sppy66s4H`jfu&_W1rOSWAEE8lj=oa*ujmw#S&n@jFx3{CB!tMF9 z{q$DQAWDh2#V?YLb<%t^c85l8)pYfblgPfsoaqowXg^UOt}r41C|fkm4sh^7L{ltB z!AokK=@zBf7bwoDZ+Ivl5xM$6`iyO%OZ4sHhYV$&wi?ts%IBV@`QROiNYiDUBB@->sEG!s$~BrO6n zhS2N1`+pqa?o+52`cLqWrv`T!ryZ_05dkte3LQs;hj{NNL$WgiJb!RD&||`1AKE{rU64!s@tUH-nBIydDf{v3#yKI9_S%rb zcp&6-*>~;uVod@Kw(@%-M-at9{p^r}40>JfES$Zl+BU-9kAFFljK3G1MJ@IOKy-P-e z3LAY<2c@;P%?{8z%AAV@@>hTsz-K41!t`|`j7xhK;(y0{Jp-gnI1NI!9iWsQ`e+6_ zm7=0#SyRbjl_Qkzd@X()qnO5}8!^I3cklNz z!A&JK3&7Bn8B_&c_2+V@E7VfpS~@pcRJ^ycf>Udl;q{D1Zpzc`6GZcZ7xiP)meQx= zBCBR{$FU52>2MdB3D%GY3=!H_T@-8)u&?Cs?6HU7t{=%KOs9l!#QO4^ohYEZ9>NF< zdZ-kR`WD(SQsnX3lclH;-6r|y`3q~@Np;$q+|=670fdpLuZ2TPgnk@_D#Msn6$Vwv z1e!Y0yZ8SOmIlV@gIMd~M5wHE)euO1i1Wi$3`9|5mu%Pyt%6yav@gA@J)7VIB>iNs zcD!}%N2e9lC7D#{kF2PX0bdIj0^1vMzJQXT?CeR%@!lp`oy#Ef$T(5eYEw9G@FK2x zV2*b8BNLI>h1k^MxOa=9J zSwymdoj#on9rVc(aWLVu?;+KG68UZDbu%$Ze+=ZF-)`$c!4^HZ`}0pH@GrRNd#)OH zQktV_=h)g{wAz(otmw3+ceK|f5!&;zB1=)$TP{&1_zY}l3ke4_s$69ID*uz;A!;)r z?EWFqg4vy;9d{pS=SlB}EIJT@LqCV~8NO%_Pr-`QnzV_dSyDxFEMi|U^K zIqsilNFw~(Z!Qo}-SAF%5xauH#Hi_D^LGU}im60?X%PJ>IELoz0W z!%aCLB8--Nx-PMR!d=JPmyxxao}`W(&t_&3NQwj7hwOZ2&f6{IrY?Lhf{VBd1w{9x z5>c1)Piw36YPP;XYt01}(tWcuV|u}xNKBYG%E?3eZq#h7INqTcj_O^zZs*vJ2qP@d!qF{X>n5AV@OY4j zsk+=@b2W9=oD3hfpHJr=5khI2=`*7IYEAn0(pIxzxePLOjPe8Dn{9dywuVTzmlg_L zmgBC$BLpj+;FygkJFk}-@?)xr3p)AWuBs~I^>~qB-2aYpHNrLhRXtk+?UkEm&(JF* zy;=iV=8zrge3lS+zt)BCG)FRkY&u9WA? zjR~TN-O2#+v>U-)u(U|Y%fd14!ZxzQY1QiRIZ__&K4_WS)q_yQXqDv4?Ms{A_b*r( zHaaI!;e7pEUiOu@bmJ9qo8z)Yrbf$x*0rP-Sf1LANwvD&We{dsF{Mt`PVL1<5u8eO z#077R;2@~}<|`^JVOB&OcX7=cU~iE=CbUpo+B}+XyBu*VK<9$3>n3MR%ZmpB;}{t2 zNz+SOBg=>{2InrYi@5Xf7^(^@>b%Tol=QaL*W6Y+>fPD$2gxx9VDoS_Vx&NvJ-zH1 ztI|tjk4|0eSDjZ-{Ymir$ayosGi+6-VF>yXN7m;gU(HR-K$ZSjD16JSf9DEI}Aw=XT#_Q=SBH?~DYQ z4OaiN;|LERsmjmYX_xV3jpdOl2Cd+@EbsC7)iecx zYZpOsp)^|X0T=G9a;Snxmi1O8&^OIBz{P)YK_t5&TX$p7+U1l$& zapZ&k3GjSpQ~~0shzAg-dtvH35GxB$y{P?JjT0n&P*j>Kux}@5V*YZ=vEH%BhzGA1PKfh3!ljX_P*fBlh*T7T}tXaEo`^TVwj;>GfFQ@JW5uJ(J zj%yP@i%ds$3KX%iMB7Lu!KV^t=3#3K)c~YI7HRd&0fEr_kENqlwgej6BgBay%`s6`sM+BSszYYb^k^$ zxBGfOwu#<0mC!e3gFpb+=61&gM8(gnNCmPT%F=D(WkSl`;yYqzmR)O0 zyO&dSxo__ZER_u|h9asQ)!%D&XPSh&Pf;!b=PuQmLzp`u`84-+NI@JR~LnctV~$#`8^%chpf- z#vTVUR7W%J%CInLzg0Eo)m_!d zbQW+v4iyNMu=R<>pJXPW&d1M1B~{6f%wMTQ3{Z${s}SD71tkOua@^}Q77Dwhy!WJQ<18nTb8B0913?guMYgwMD z9RfbBb2zu2g7C7a`uFU?O*^HZPSd26`%I^2!^t86m@Z6~TDI?+2%21Ba)$aO^-@tT zFP}*Y!fYtJpmBlaMee4$Kfz(y`f;qC|Qk0n&BA)wyordw1)8&zBFAwKRm8GJIpnXLFOfzwnz-$>{t)mhvH zG{X&%s8$%E{3p^^fQ_#qKdZ%;579NLw6zIouMDH(&5ukM!b34cp%F!LdhFU7?ii5% z^HC3i2>Rj^0v;Kfs%Q+&(;YkFQZ_wC->qZBL8xxT#46$<`{=(pRjCe++^MxXfOaKs z-kU$qwm@;Dtz&lifxfdcGDlIv1$)&)?f~)E41EcrJDE;Rde_Fei46Rsymq&qvccnz z=iUH!@!#-?tf-Rj9eO6q;#dqHKbS8Dj;KW8#S^ShoNzoJRzcooB z=ljvKrWAt0MI86ZZ#w%IXnjxlOLtd{<4v4B7aIq!7voKZoiXiEBV>f1X_l7c4g3lH ztjs3UTkR}~)};vCQIy6OdELjeEL9lqFQ?Zp)pwKQxBb|v{zNGs4Bf3Py&7`9GM!p8T<*XxcIWFb6jopm4_ z_o*}Pp|%8Mom+=~P`cAUFQ~t2s^x!V^qSX1#A?<_BqRQI1ce?a3lvl7jpF%3CAUNVhBHeaZ(o};x>dA%TBlu8=kRh#be#Ew0!6pwN&%(H_2LPqfsy0d7SRApJYGO`OsAQ_-5Wu7Z6 zSt|_)5H*1Dpvmq>I~%8uQt!I`8xtW7Kyn(!k^$dZ!XHwb9-Hzw9GqxX;X|&(gk*dc zxh}pT>#t|}-b?8jQdL$JArTUHS3@fcU8k$As@jy^%1K)x7xJv6X84-{ON}U3{!BcM zWk2Ahp(OrNz7x+vhWh}_*pTCUkv2uLSGHmE2DMdf;M2n#q3(g?gTLlKTZIo%kSAU_Xi9ENxz z(ck7PLUWca>uo_mtSQ|4cZ2IPj_9F+W$-?#NF(oIVO8bh#I-o(5uLLD-)+pX&yv$v zxZiiF14T`grEs2)b5R<|MAOd-1tz8;Hn@QBgMHT{0la}R+znz}kZvuL! zIDDq4#>urfWqOy=7oi@q+se~c(hY(MwcvPdqQ_j9u(MBY?7dIeb4^jc7T`=wth6{eZcMvH^d})?!{_pO`%s5Ag=jYH-ePn+ zw?xzFaL2hQ`HeZ|EDB0T1%NF?MC|snOgv?2yMj7IcghC?8%>|W;|;inb?JfY=Hzeo zcm|nt6(nP99vmy4WNWjFjkAkffQ(TFLLsb1(v?LPyBUzYM%8ieLd@;Bi)U=PedH;= zrumjQ;(&$uG;^&H1v;Dcu5LQ%5nw%9VrDq0g>flwFJ2BYOwm6e%8Mu?gpgV|vYBm- zf4;Eq4$sj|BK!8XoZVr-MbM}Ep0T=SC8q*RZO27U{($exx=54iW&VgM#ZIF2?AN$0Gw1Peo>) zfxYMO0UaYqVj;Kvq~)pq%}TRp zLZ%nmy8JG>Yrxj>`aP87{4Ef@Sw^%O);yj9!;}-Dmy#>_(*@}9i#-KqwXE^IPb^uFLtZGEcz?Q1Tfpa>ui5BxT43ymDl+)m zKpZdso5?YPooxJy#eulByOCqo-g2=#XWLnHd?agyH9GUu5Lj-T7ZrIAj>g7*-JkdLH{7j}*_3AUUG@UdOk?!VF&q9}`i7IsC)P zVNGV>u`4pgnF*5nxwB|%WR*5e&`jlG`wVp(ljtSi*wqyM9hqQsF$MX73QrRd zRWw6$vf_aGJ^zl8?Sp=R+^P{SYAY$3XD$Aje zNSYs#HUud7VChZYCOzB8!0~Ktjjwrq%TgWlfVb`aHlKZ~3Hqd)iwqDIr}WMv9+mGZ z#|r5-jDu92LEb&Z3^&&LVM0Cr!t`@%7y~2>uOGAC6sEvaA273w-yf*!O5aQo&AbQm z-iAACHr7uuC_|aKam=N}P`v&g@5oG46EJ7r=BaXSmEz6sm$TFG4M{fCNy`)g)uuQc zY?r-1oXMVX04w*K7DPzm*Z%s$Ut}BOgn_!b_qJU%ll2%&ZVq!-5iFFo6ayuDbcUl( zz@(B8w#8Ydx+X8bT@-4g?V}#3;sk0xq@NiV6wVX*?~sNk(juG*SDGYW8lk-Rom)<+ zO5T}z^G75RKIWO%#c&+wbkSf7N~}3p(2}-O1LBuig@RghD$+*FVJ6t z_<2KJz7hpiiQidUF*pTvJrehY%rS@8`2`1B<~=BWs!n-l^~tVo6Z{Y@3Ws+=XML37i2ffYO-hynfD zKDh}uG4u@hyTl5kn0o3JDi9@bFZc}Z4}7f2)PQHJ(CSbOW=RpHC=yVql-*@1J0Joh z)Pl9_U|l;#aWB6x-S;iXx`*;qW`k(#Ubv2y?cZ1|_8GyJyc2sob8b?%Kl;>r2SL|c(LnIVU*OeAbW|%Yv z>2c>S4YOdT%kfim(!`G7civT&?Nx4QEpRZL)p!s7ikd!6!I98?i_fqTpVk2F*`@vafF7Z5iROj| zN^pDqqX#XGuM^ro+>VT=<1Z|@Nj7qfF+&;Ctg!h}Ghf&hEoPbE0(FYUU*kAtP%IH6 zC;BE#C1N!kGp3=o>wdC?SlGU(Dvxr3?U6`cc~6vY#kdw24!;N2-p*%YR~Nxc6KZ~T zMBvR_D>|g_=j}ZU(6(d`V;ltP69r^5nGekV)n$&R>0 z4*>rsOv2|!WnR@)w1L$uFhR#&5E5L5OW_dKY6sO10WyzXp{p;1coPQ}QwQi)^Mb2v zTDcbDh<#zfff_BoeH5r*A@c{YgmF5cJnu>HRkZ_t>7q0^4fOs0#pd_y6^Y}!RU`yv zX7f^7?YZF;QS$tXSbTX!7GFwnK|8QImA!;yRl;7c#w9;tn%uJ7%g)$uTxRk-Wd1#r zL@)Syh)(c>x;Vo4n}p>(GvC|uV1ehpIYMK;2Vy(EP>t4At-29i@2YEn$TERDtJCph zipFJl6YIuIGfv$s*c)s1%J)a&=&V9nmk*!rhp;)+-SkqzLC=o#Oq_+ldQVqTJlm(< zRV`>vR%-#WZL#t#RnOQjDRthi-0rg?o%BCVKi5m4KU5BSvuF%qJ61Gq94lVSPmU?3 z*2qC1KupC;E=OYPb2zv@fj?iPRX@eq?DJ<6$BsjIu~*sskFl75!L>v-Sn$SKmSVTy zKh)0h#HY>WYYM^nJ(ieTGo=g8WU(S~E&*BTwfdIG9iD_tMB+zYZe?KhBoh6|QjMHk zPa2Jmb$@eeTBinZ=?z7(I0HOOh`LL6Og;4{a>|=zu7i<__cR7>BVBQxRg_VyxhJ1C z1#Q>9VI=fP2*z$6q&3!#*{u`{1QJ|Z8GEf#3S7fvRx#sQA{gRXYTPHwWBJ zt^$&2bPH99%zT5TPa^T_yfGIibC3Ku+3|oH(^2teD|C5Xpw6bAp8MfMe_^UPdSm$5 z%qAmM9b-SJ1j{Qh-aRENHuyQNgne#rzdO2ZekLUy4GUYIi6c~&8YZr`jEiE!^?S#4 zYlxz6=l2d%yehwO%Pj{G6JoTPl|Q`@ z)3eg9!;|OdI$?1qC^|Yi@KJUMolbuIOSptLITH*@@jp}S^Ps0I@1=(L^(ejnbj4oV_Qe%%kl_zOE*r*lF}mI{nX{SJ>bNU>QID070C+4(FOJ_DTEZSEbYQ-g zBW<(LMO!7U%84vBkE4HS9H%iR_q`FRB51#8=>+uqXGYKJM~_7fG@foSS<~m?#C7>; zGofsu1A1c0&=u`?YYQVzhmvFR9PS$U7@zT`w{*$ra5n1`#I@rRG)>9;x%pM5BV&8I zb`s+rlBhE&>B{??&t+xEv4CDQY0vo$#!SjY{Iwe_0-v zINIfIp3a46TVput&C%h)!U4ON_8j9A9#hai~6@E^4mUTT{)xJg_m#7X% zsjJ%~S^B1|exq9O z)9Yt5drD2aWDi^EVgMzJn6_#NsWlbfmtUp>Mw*RyI9uMu*-qTF4SP?v#ldt@dx&&E zRPmKvNMgK&?^2}=p%X4yyvc~ei^?lTG+tVrIH$j;PV$rN%i+QcUc@UB1IOK>U(Xl+ zv##|L;J|JOib!h(qc+CQY&e60{_JHvocmuPu_G5@5A@06;#-g>C8CJ2@$&_eIpDaR=nEFg9VZ z{y*~5$yi8j0wH2$N(KWSv?(C6_}ku28w#s*SO;g+EFa8ITyNV{>g`L>rCXq5z#nuM z>@&w|98f2@nX%n}eg5Apr;6++nG7H|xY>e6FUL|rzeD%{`vlJHGW)EbkwGx8riW`# zFsu}hjOG;jfLLVi)IY%>E_oc)YS0nBIWS$+7EY^BHy_f=DF|(=9V8C`%c|iH*39n4CIYfQ~C;0)MYj;Ygb^ z*Wk0yuQrM(fkYSH&u}r{pF0D9>1bT4Jl2U8;Uv(Kwtc}csoVA8A>ET`i0J@ej?pz6GLEq33ox0@duVgFZgnL za5u!_FoQrnw8X56>kO!WoQI~x*ivIK?d5Q%Jq{s z?$Rj%dr3MpaO6ruWbPiv)m|mqt_@6oG)vh7s5+bh4nO%P3?2sAGj(Vm8&5Z?W9>B{ zpCrR-gVUqYeFe-Y(gJl?{`!_~)$&zr0)jXd)&a>?loapMSMt;4{bfm7`C`1MW=*YY zlIq*~XU-6k?6)0HwSd~ZuB2QZ%t!F*&zouFe!kKiatv)GwCb4Dyp56wF?Fdt3G)(9 zaUn`NzTlDJ^1+>FR<&c)FtQhZ##rg8(jzROvTl1&q;^rc2i@JH=uEm&Pxt!Yw<|-d zcEQA;6oQO%Nos4kJSQ~h{XY;M&fs>(i4|9_=1m;IZz^;+Mjx%v4MivP6&>r;CISQq zAScjn-otS@HSTYRo1lC>nY(c$xKg&2SSW%9%deZDgr@VJ(RqPi^wolRr7%)61?G;L z;53Sxt8tVJ=pzJtzZCD$R*qbYN2WLR7y9aJ2SR5UluUWxmgo1K#}^KF2DCe`QhZ9b z_dh^tVKM&1Mt7YvC06rY4?f6+6cA2!o=?H-&CC!}C2;&@id!bDpvJ}rxSCgju^VY> zv#3^p6{lmP({D@2JVTh6(aMvUY6h{3O$TA7J-qzv6HKp92m-S)Ty=Sj!Vr2wrb&6i z=CGL-%&1Zou1{xDdnbK=Ns;dZK^%}lk-$aad}RFunUL+f zHjM@8-g)0*R};ri${1*d;6G#VeyPWo6dQ$-&T)P7>K>7hPWNhv}RNGmLD%cti2!KY14lapAQL=6Jfg)Gb^)cUnIkW@8##V3pkth&KiImwopF_^~+ z-->@QprzK+%J2qA{a=KRF=C04La zE*h7hvjrcWkGNq;kWWc!ZDjoG<%ZhFd0$U*hlAad+_86MTsAMkU*B$(h9@OW^AqIG z%Uc$_)o*a9bqlIUKLlFB`Hq!J9F$Dxa^@4?D-l{%qtp^}p0Q9q>IP;&beeockAjri zekz=Su?WH{IqMSB-ZE^6ZNtF7_PFo(fSgA6%&--#H}p0Nx4@HPWx6KjBTi=?C;zco z55amIP=T0531f~uvw^!f*=)N3JL7QB4EeoKu9yf}rlb2w5WKfOl1xeZ>j6T>Zh)W3 zbi2A%1+t-EoaGgoH_8!PS<>R?1z4{OqHJv&%|i>}f}*P66Tb_Rsz}{cONe2w3Lo&A znK|p^>8XCFBU~-l3_Lt$c%f$-|G#9M_dmA{TuOM0y$V(2fhz?xe!8ai zUXV-}y%T8_JzMGnweyzdR;*p=B=on7MuBqzi`LBauT5@F$XjZ0J|-8(?*vSG7=c?K zh9#w;kSGqy=TPG-jjyg+S8&GkN;au+ah}u?$2u(k z;?8jb<>n`IvEho5vh%OP=+PeLApKf`>9{_uvk+&iV9~S}qS&C-YZW1`4n!z-o_#;^ zP^WQO$of&{uLs}W(z%eB$b}rdmrC4k!OmdALOFmIHXLBqd|;R4ijUb@R|$mZ%f_c8 zSil)H=cH`kaW0NW*^Z^Gaz-k6Z_sL)zP{vLP2&GiSFaGW@d8> z(l402i-Hq^QhD2#p`7JIXY!}6m3;S=UQn6;j*v3V!szs*Mfv>_@{m_bA6*Eg z4+4Y_FYkhWjKz18@Jj89ih7N?UD$(_G$_HMa7hiUxMLzoMFUCo{}2<_Lc1^ojG^x4 zY%Cb!cIDsfz!;q3c34}_Pa#@=Mk8a_w7?gbS!VUuXU<@q`KIrNL*$kuv(y~dK#~!p z_SZq1I?vko9eL;M=m5ZXrWx5#73KsNbH_gvPX)E1gN}rPlOf+aoo+}|q!^8Oq;w6E zBy-F#{d3+o<+c|n94MNq6Mmt%DVu_5TyoDZ`N)aSx67{}Hrdm#d2d`^z%nGA4yi{y zxY}us7X~83%H(GR3@49q0tGf`ZrAA9)mSBoCZ@b~`RMWP{z~xVQlg4kZ5-2X(#}s? zJo<;09+H92$xePX7*%#vR(61wEoRrY{L=X03YYtnxtb?_9hby=3;T=z2L8be3Yrb~ zbWH)-I-$kzrpJ}6EnkseT)(oAaU5}&bh!(xlB@HRAcB1-m$!4zJ8lE<;) z@ODbLV=CFSCw2lskdI0fY5Nm>>UqQjlvWuPwR-GZ4>{j2(4xzrw+Oi=%Wouo{!o?U zhl|xstr^z4D9{Jj2|&G`!*+2ymBt$YMDfY#c7709U^o+w z>>vtcM4lJ8^qju|kXR&w;fHps7tn z;q}5L9+;_EgBNGM0x{u&owOhBQ>9MFY1G}`Y0NyfwUzqSQGv8Wx&bv&M-IfA=R6wu zLU6lbk4rHFc+1b=0=fJieF7nBp-qVgu+d+?9>e%^DDJd?Q%wft9Ja~MRNlXIr(`^} z6;X-$N@l29K{Z>5B>iF;(k$MPq+g?gSbA-lHgwaE(U48Y7A+9ru0Pjbj+Z*dUL?`+m0{ z)8iIokFXGk=<>_+NlFN-&V#})D-GcL6>^q<3L}#!XT0$1Nd0QLb80LJ?h-^iSIuG^ zB7kgl|A4M1L_bQ(gCjyh7f3q1F#oW;)#C%ze~GDWdDtfuYNNxS`H(&xk% zpeU!<#KgzeyjcCQH?e8kQxYrEG77i-V4fI_z_sxM(zr!4|2M8oZN&l@RHx_HltQHF zdY^XWhws~y{O_DGhU0swu+fl4T@pb~sAOX?^(5@o!M`iA-$)ck^zV_30XFjPdztFp zq5j5}+Or)`s?q_P&v3PU>PpfMbFPd*!uANa0nSNw8+SUEE}<}`RthB$(qeP_+cTHB z@LMMXi^Lc)a%BTBwp@~^SMs5t_qo$a$+|Jlm%46?miPx?PEbt|%Wz`!thXdpMd4}7 zogb86Dx=M3QJ{0F^xe2%ONTeL0)AhQk@xKurE?Txa-hOz87GN5K==4~R#&nU^vWrH zrkj={S5tU66z8Nb%y^+>l>X2FUPu>|vziYTyuJaz3Sa;onO8+0w&)S6YizGGN>*5b<<1^>;Uwx}vSE$Q9 zu3ww$Q*>w)6k*dm7vMDbc#s=erfzgn)hJPy*zB_E(l3+#ZMbZOhv#8apc=Q)RH`ib z6Mu^+Y5bga0<1{lPlYs(bT`JE4sh_Z1BCDbryXv?V{iuar#LDWuw*?d&GM*AuLL5X z-#etxd=%y9Sz}5k{LB-fgGZi`z1~D&%kdf%898-LRN1;vG>dVm&p{Mn%DY1&{S$Zp zl~uWYU6Ek$FtD-9Yuj5i-onqnVM49tXRsJ?wqRua5P8%1ZuTgpLDo3f^fI5i{BGS zLWjt?@^@;F%Gow(wY^S`aDIv7dM{JD$7Ee}joj%u(sF(CieXJ!D$Fci1R=keV3M*| zwLuL|)Y0KmuD|I{HwE{Zf%GrIjM&imK&;qf9Y$0!c5nzlIq&erw;TlJ)u3Erg#MCN zowa34@xrZKd~_JL&B?cRbjAldL>|GVYoI;LCAPr-)@4OKRi9xpV+i2y2y;@2%Af~b z+5Jw8dJ$URm?x>+K646pW;*JeD}bj&my`D(a}~CZ5YzhVdtC>7UlxKAQMm- z&(cfaJ(wlGKuPS7f3p>@vK);}hIxU}vg<_}BbuM4X);50Exvr95Y5pW_k?6?ZjBj` zrB8FS{gGs+bx@28A4#4x3a8e>x2*z=dBQMUC$!*ldPva!kDzZl_TSQ0;4KBLErp`+ zl~L@E+S1qItsVvCFJ-9o>oA_@#nuZ##`JbomcVPjiUZY`m4f)wFyjq0>)Ap>@#B>(LjjK*zCl07%UT!vzTnl)EnDyppt)!E9 z7Iy;~6!MpC*X3;8@HwI_hst*N*p=hS_A;7}lkCiUQ>_1by&*(tT3m#pN{w&Ks|nwF zr>@Wk*8OU&i;mM*wH(*;h^$QS33U1a{*qPSG9~>tFG`K;N4^h^REx|JsMs~cE1-Sd zv^*z0i4XeFD93>q2%(X%aQ(5h4^DfY@^vU=6A@FTPnA{zN{4u3}5Z zXMtfo+Xc{!oLu?_5H)K?RdKBH-;RsA{nwz?7nl(G07UvU2%Ww>W9?DCRJ-y=i_o-$ z-~v?kxs%5qqmf|7EweIF7z?6PBkT;~Ky>|Xv5&Ld=f3N*wg=K9@J3!sPVh9)q@}-D zK~274r1y`}XG?Qe%ADqD@bMW*4IoscY0=n8%fXdgE$A4?(h#fG7lRMG{`Ojb#XCU8 z?elrM4doqQcueP-G8BenzJcx_4Uq^hdUVxYk-gxl%zDYzZlM6?>G8mgz;ysiUIg2(^kpPp$qUzXHL2x6LsXxXRq4M!ux zVVk1A%ZT_po?|Gz{rJY?J-B$(?E>{goN6(Y+%s9zcXeK6Qa-nSS*AKvsAc5KQy!Q4 zSxbc9YBM&9jhg1m9YK|YV?y>LPGANbm)WT_fmsXy-%zuo%1k2=B@_HQKkJwP||?4Pu>md`}8pB~8*Fq%Rffa8rAxI7G*Yp`3Y^pp^Q z^p5)GYE+Z8mGZt!n?a*!h(1-|VhCuTqJbw^;i&EkF-=$N*47hR$gmh~ z?++U27LB;%@MlXxCKWC|BpZgkoGXZ)>vlNOpsa!GB!rq^2F47O>wQLdSkU+2{Jh$r zv?$Vf=X%o3YJUn^(+I3)HzCs1GTnBlWD9l1q`76M(k%gpcu2$apUeb^KlA?Wg`Z}F zQ&6_L#|+m+@o~b#!O^kO#WeF_@~~<7LcX|<4BW?%fC`1{&8|Zyx$L{#dd*|tgiWd| zk-!3CpQW{>{5MV9ofvoC?75Mz5IQpC`&I0~>sF36mIZNsm6x1|iFF_29h5&krcsk| zm(M3cK-u(bUSmZ0DMXb>!6>6j^s$NG7HirQ*ebANl@@Tcij>k!mAeDD9@zNlMiHvM z$9m>oBt3K|bER_tSoiW;mYSo>(Vd&p2Ln0j;aNC14pqRd!zj}Yi04F8uqY&pHL5G9 z@idR&0-zomp;i3naz=^7US8KH>;4|(;zsJl6UW&+oIQCr`Ls(ut~#14*-2|^itb3lgfK_{9|5i1b70Wp8aWCsRnsJW zf%D^}*}$R@#D~kQ-dt^Rh?{Q7odrZ44^ZcZGZ^APYj(-Q;AlZQU`Osdj?b_wwy&zA z3smE|4rj_cEwM|8py;oStQK7^_ZV4?1|pWf$H{Bl#_C3iDw)fog&XgSZBFjy@T{uA z3v0ZDYaNf~Uu}jYf6xhxKbo`SY>bTXU`cCQx}QWABJH&rc*fWA?ydZj(2?-t4d( zEkNh%szMxrK;6Q<-jZJfO_Cw9<~MJyZjyagqWdPX)4+YCpq@aSy%`JAk7Qrp0T+|Q zn<5Nnz(pef?mi%>luE%69lWNP8aFw=oGHqL(UZY2kKf8C$G2wj2f9}%lM)Edy{kSB z&wWao^4SstDYMn+i?R~_grl|i{aiKyY2pt^ZBucR=nVE2xsg9F;;g6eAhiW$8k4+V zn#9+hqF+_JpB4IQQrw|gd`y&ADJ)jNa?wIreIYxYnFO-3p9icFX&`&t}$|Oi3#gsy?R?b<%bcxx-C%T zIkQ<%fA1k3LI|A7;GH;YW9?hXk$kfOan!eFRO$l(t$>kjp+`2WbEa$vrNf_GuI4y9 z?$&?8GLl9G9OYB*2<(TTDoYY9wmkoExs1f^@K^7Z;eeJRcaDmCzZ5rT-cy~@yy-56WbsZSxa*r?;L_!xdxPhGQSetak znikjhoHYdStFSn$3d01>oSbbp#!|*|QmPL=@X$|^j=PYO`JG=PbemaG+9m+p9@9X) zF*Kh?hh3La8aofv_G@mDjK0zfw1N8PmNEr-Z#F35cA#UwI1o8uHx#s%24M}+Y&yf8 z(p^D+hVyQ!-$MEDeKk~R)7{9VZVYmCyZjteoI_PbE2zojXE7nhRGBdexUrH+#oRY6 zeh`o}7oUw7o>7P~_$6vA(ssQ|U_Qo=Ro0pPyQXqzy8PRd%QArEbD^E7gEVtbwVAD$ zwTx~2Cg6GAFDjx?3(UE#7J~KGk49K??LidPTrZk?YgxgVRM)+Tj^7Hsn=dLt3)R+B|u2 zH}c3kh8st0jcJ=~N3u=KX||Tl0cB$_4XwKC;`m;8gzuePwFW8!klJ86@#{v1d;z{8wUdjBb0eehe3$V=tFoTg|83LKG3 zU_ttfzHRGjv*Kt{A8$SQ6;0>v54V5VG9KCILXFMP0ESGmMxBEf>@a1q9BzRcCLi&PpHqoL!{ zy49$n`HV%ipTOSqh-kYTy^SIxqvzZ0&DRy0hBBt^<2GHnxbO*vDEuC#jM4*-euFdY z*GYJ7O)Jc11DOUwM4~LTuu?rF`EtIUP^T*#2&j8c8y!1DZfrtcacD^9xnVb18?E!U zI-ub6)~&Gn3l-$idAu010kgy#=nVgRRt!wf)%S{W6!X}9vl7Tt_N|)}_}b&g?8`BC z9{ywEfA=90ih9F+EZaY5&Jw+(_#silB-4Me1g5l}sFnH)HdohnRiriL`MbSq_P~}X zDOOlzF@u%84@c_W9!SuC)_$)fT3afgrLVdLKRoQJg!B@p9KcHgJCB3YiDEDk+B%R7 zH>b-acq$42%J7g5Hm;5^mmbjVP2~7aw53Y=i-;#>X$cZupf=JK%X*tg^}WKYO2Xvb z)dA?iV%d;>;rN&iQ~V0#`&B5T2}Vw!;xoMBU9bAKG9jB+IX{UxYljFKnMkxyV0>-b zGx191E$2Bn$MhTI|6ibUC4=dwsN`Xw0Un>5H{!WM zDQWW9kli$37PlZCB?;dG^}ta#Ee#63zB#EiU;d!T7i&VqaCZh9yb@lmkDG>zo;BwT z*qc~1gULw3$x;ZHx}Fo(k`P0@liZzj@c1?6*c8bbC!)A+mf)Xex-7taHEQO9@+5oW zKnnf!{Nyn)zpv{qEJN6V+0&i}fETL!nnd6(*uz?<&Gx}`rjg8TO zkQa9FAnZU9PKA1gN*(%WY-%;(0|2sO$`$&^^x3^U@nMp4YHUB;1X%rlid_U7TSI}; zCafvInPS|aKrtRjUV+I0k5(>Uee@i6gSYmS>$3adi;a%vXW*T$`_7ANJ3JgN-wy(8%IFGQSG+KhZn1X;TS zpa3deJ=`mCr+m&v)R|-$De<};eYTEC3e5P+oGR1r_NA)5suttF2rs)0({8jFDjQxT`@9EM=+jWR*RHwCxUeDJN)(q4;7rHh#Q zvL{~9sSyGD+`Sg!&~A;CTX!=X5e$tiDC#VXpp*b&DSq~n$ zf#D=wsJvDGoiez${8HWoX(XuQusp?Mb7X@*9^)iOV4Da{PPL?6S9wi*KM>_?3oZ=h zCuxeI0UC!}7XHc-!0Sx7E|*@N5hC8`#|24)0eqiWv9y@3rB{Db2U<62brGJT_LZem?hqXv7m_$?!euWa#y_&tTLbfszp)FABJ&Y zpS}}u%RT;UBCM&e{!} z5!+Fx4i8hK4-1!=GTs|Zwb#k6tz8DBa8xX;IKpc;HRUfc$ifIg{;A9=2RNz7JUVA6 zxmNN6{zzvQ*xkm@D%Uqs8V}Jdig`U-FqCw@?bW2n`=UPQeFc zP-MEQ92~{kdNt0;wKdqw(BDbuzZK^_)@Yv9VkS*@2d z>vRJ$dLd>%*Im00@oQ4s`e?po`6LzG<8Wnk=||IkmHTaiCpc>EI<;?mAm9L0p4MZ3 zOMJeFk*c;pJO)K(`n;ca^-NhC+sN|!kc+p^KdE{Mj^li&$G}(~R`ARBmKQ!Nu}SKC z#{J!1#}pIZMtJZKC5u%=@z;4IY0qhR?&Zfu(- z7tL1&gpMtl3j^EBUK#IoKdmZnEk&OfN^W%CPTQG?->z0jjHYj@b<3o#&?%?v-sYao+ z6%;oM;TlHox{UaQtrUAa-`EPMbAx5&i9Nh4GzkUhVzCq6;+zl-gvs2SB$9{??gi`) z$BypUWJc9`s|Xgoni%dLVzogUs4rS>mT~LAt!Il{_K*^x8t#-EzKbYBm-bVy6u%>c z(6|8~uiiWVJ)!1u(XziNy$s|#8BcmrNP$)z= z_pu$`9UyKC78Tt};SxsKjxZ9w~l0B&BlR zp_!u_3ya>aH=tiTgRJRb^vz1!eE}Chj@*FZ2adGS^|JYQKQ;!%<{sqT3ShB%H~P^x3=KrDgSgmImQwq`$_odC=XyaB^0vGz_nfpd9o7TD#}%nr zMA{ND2^FwWpdx{O2yRV@cLjU$Gs9@cF8`$Tmg*b)r!9nr^k@Fqo}Tz1AM0G8X0vOKPfy2bIY zE7wEe5&VGvtu|*}FdTeSu1HOdhQi()g+Q0~J~odbsDJt(7Wvq3$<3 zPQZ1mPOuYNxI{;fS={cLQs9Ta>G0}l38aKyJqeu5>cq$u5rhNd)9_|#i!Mi&9v`Zh}0_FFXS zu&}e^HL!O(FKk7t&i)Z@2~TIq$1cba9v0<)HH?DZZ<`W{rxHRU);z2sg-wt1c7OHUfb{T$6eh`VDVJ0z}VdMoOKll>sEgle?=v=KEiB3)Q1!1%`3u%@M317 zhJcL*r;tn3O{w9<2E$ibLJG=?!64TH&Yq#AD1oT?KNB^I0O{VyphbRC$33EqLNTWm z@ed#8lF8lUf@|h{ysR#=8U7;#z_){F^-@yW(v-mbJ3h=O@3Fwyu)Nj;ztM*Kyq2K7SP}O5Lr|PDZygnEsI~&q z&5Q_z#_mhQvr45W(~k>?{&Uy+vci%KECV;^*l=K$+X)hkB-!Hrtw{LXuj*Rf1d2w) z!26E6Du$L;5_dbFp{J=RzKn_ggEneD{3yLkla7I5 zpfIK$#p@S6Yog+cAVI|>bf=%^YUR}jzTho)rglp=mD|D$myzlB@bWlN{;8GqB0hQA zDY*?$`P*?;>iXFI9iKUx6ER4zyhrqX{W{$Wr}(kGToP|^{fC*hmLZ{bs&3J#)02Ri zRkQ^=8voBXmA3DWz9~NK7fUy zpi!x4-CuJ>mOY_2{Sh_3wA2Z=+1+qPpRzdYE(N_=Iyv(4b*E+-Zhy{HKPWkfqY-Ai zlGcMMK~N#^e@xBVlnhi|p4|FWBd159$>`jCh9rvH#AL?=Poo=xrT??y9DKzZlwIVO67!q@xr@6}` z)9#*A5oMp&*v%Xr4~pJEXBjM3ulK>Z(_QRAoLrDbh6@E<^+f^b9yI2-Dtp=N<= z+tfH;XBapo<4h`wQliVcC%o5==midkNiW&M-{BMsR;%kuz3QOr@B(-?f``Rb&C0=R z{hjE*zyWFXY}jLRk^ zF5)`Lm)2ZJ6`PTH^n7{bu~zb4_& zXoJE8XcZMOBD!u{CV{TBMiP<<>q`bh4v>eTCiwVhTzo6tk2<)Pm~$NA_u{k$_LM;>6)$1&ZpyOpZc zHDfJM${PYDXT(ebE@SxChH?%-fJHQDEINs-p8vEos{FG4x1ZV8=JulnM1(cpInZY- z9GB7G@bqjPXn*znVnmf9)WO`CS;vvmgZw&|9e<*!!|u0_tyPzCdsd~wm)ymacA_z@ z(1`AA;dmKPkC5^D@bHYf#54B+c4*aI!W=%80B%n36)>)cxs)x?C=oWkVup`F+=9eT zbYkC4AZ2)ot2HiRIA^R8yZ3|j-sFfMkg^8AE{XQ9EhpM9K;cS`w$RWND~L91q8a<} z;o>kMYI`#T!XrP0bYZVHOl{G^sQgzS#}oYDoQr-2NEX|NoEmRlW)&b7ru6uq{38{&8t|8^+|!x%B(-^>;;H)ZK^+ zP>jgZQe$QyC=LYK9#khgogp{&lry)Zi(M*25=iw?egfDOb=8r*eXga7UaHS(dOm?k z+@JT+h{JkPaO7`$+Ryq0f6ng+$CKf^<{d=YrX6t^W_Eaa66#l%*tXK}6nS>h!$*$% zgw9jMbvo0dbviPyn1dN-O77v=nFLdAy__AiQV7to{JRwWgONoPOkRq1U_g?u4?n?w z{Y>X*+0`~=&$fS&s7$_7?{QTh8AY#Lg+?xrw)L0vm7pDHR*O&PiiTqshz+yZ)bL;3 zm*ZyB=k#Z+I~;%xLi|1x75Zm_SXMmebl+5&aN0Lae8k2L^a(b$Q&vRGqAzd>V1hXe z90cY~C$f?u&P1lB*D{Ojakd%wvLwT3f5l7>N2UdG)S2OWcrm{H%tNF z{>)?1l+28WWR-(k%+x;lGGf+VVx6zmb>(F?Hc^uw{0W@bfd^%X*9&eC@x_pGt8;3p z#u9v&izrv%zM$D%ReHAsv|)Ob)QYF;HH-?43@H#C!R@HYVVSaexNXtLLkfrNGy`PD}it&Geo6f%#G5EwKuD)FrO2)tr@qS z$$DSA&;O`20)`1WPK&+U3LcZ_62?SR?)-`sklPYylSN^s`f!^{KyRNajgaiKG8V^O z;hVz*!nU`RPdBo--XkJ%wY95Y8Z_>$$>}k$RaSg@q^I^fx|^C&sdvv0aY*f1vg+oDmws*P|6^ z_c+=`F}?vZK9hf$DL#I23nblSb{JrBrqx(c6G_$5vRfg1HsA(dbB-@qjpA+$MU{XT z<^(F>>2gf`kcle!b5UlER$5v9?SI~Np+>)M&2U~~c}*uhj*vyco{!lX|75)J65LTR zyLEUk;;U?g^lJJ9GGKbg6FNUjsR+1?-t|gPKF{d5d31#k)SB#ZzrME3y!-s6!Vb}O zSwQAY4`+z`$zya;K3b{?*s_~ z@RYW@*FYwhd>6+J?z&S13S4jxCyUT^Ve5^e2*LV~s8xD?E-jk*)kEh*%(BYv+sET6 zGWQaYqgu!IR8)6U=-qn$&kP_P3THG?4skB9Md`k5m9&PnRTL&F?GyY}xFjGN>r{gs zzxP8B{j(YsIb|~9GNTKcaGX6R$;hbQh#77_j!o%l?1w2$xm*i+Zr>$-}b zvi>?REWQsqY*ci~GM66IxL_i+?GPL=>=W2toQn^4HJzGoQX)M-BQKjN#_o#Bg3FsQ zN`zGRYMi5)xBPSRP?&bA}&E=_2cMSxyk3)ssHcwGuT1wQ_9uPK;GuEB7MXG=g{RsjqkguD-AHc0}G+CJA2|z2hjP6zwLC7}VWMGUFvlecuOeC4Yw>AoG3N`^%{D%Z5 zjo1^q)O1H`M=%ByM)p4SpnzxlGq+dd&0wWUa^S)em%;E2D0XThd7az;P%jnN)u z2~}q&G2<_|LH`!y^zK{C8MqUS=;u>tlw3NgZei*!vM}mjhWK3CLnL)Ei0eUHisZS}MAv=PvoK0ZVbJjVSX?2Yb{m+GAi4^~I8k!_7zlvjbA&gZ zq1Ql9e`wjD<>fX0)PXc8%a9oHpYS6`<#$Gn4y0uLzv_`WM01L%bX5#f=R|GMcmpMB zS_&6Q^>~6Tysk8`2TG6!iDGaS9`(qzw@ndY{roPW2@K??yGEpH#>>q08V$#J!!X8( zy~_fj(|*OS>?YW53z{AG?jEQ?J=7!L*ErrRForCs-AMsa4w60HhcyJ3Nrq|QI4|P| z($EeDd0Qh&_+uh(gw>LU zHihS1nGVWVc_A9MWw!qI`T`kI`!E0r$_8RuDxc%(;V-mOS;!l5CWhr{|GYrA-)S>8 z58aW_yIr&L4i@Mn=_0z;>bAB3VmdyuCf{3jr4qOm{Nha%?6PyQBhoxb8fF`m!dl;! z@~7RcT%dUC#AFV@g98~V#rSDpIGMVaYa3pD!t?j&)jG&3rAN@B(x`GSyzj5;_H`iL zP+V9D79`Dig;~P=_NM$V zO2ff;MjzTP_XQiy17h?BN{}Qu0X}M&3%jjn&k+eK_M#AJr)(8!YqK7eEcaNcthxNa)G}U^;sEr;s_x(8eMNIYMf2pnSE9fd8S|Wxy z)6gmTb!bK|cO?$d2XtSj12d@bTHlIQJcTT=-q&~0&Km3&5hI3W{zhM#k9~#QN7+$e zb|;_kisbhKpC7Q^*tWMl0LOjiPd9pS1=ShaVr6EsB5}E@8Kp)@qlIW@de-Gi zfY4u#wyZ?>26&}dD`s3_z@_b<-fs?|^&2r4U@wM=les5d7vyB5jjuPV%fZ^LS4!0z z`(1^Q0`2%zqd~dZUlJCGvR$S>;VlXI-L&7vqgGbg+o%^uMnJB;+STwy-uYu)7=F1*Ys>?Gd zD=ZnDCmuPdbl3EYSdum4G}{Kf?{m6~(!_CMZiWSUxM!s%i6qOCRGihBBGvtu^so{f z(QoB!?AZ#$k4EYp=w!L)(Pyw;MsR%;^`N&)k=W2!Fhaa49;-8g;9_Qwie}>be#5r{ zbC3bFRR!LAsH^gc8C0GSEa-Ch=4=GzFON!`pfWM^h<|DxD!Q1cSQ80x0&zd}E5&z= zGvN@Zb&O5tav2E;)jei~h^|uQkzzK#e&pKaQt*(IRI;w{=Qz&=co94`X|Uoy^tnw6 zGo*xeaw4zBi?HJm;(DG5eR>kRAH4QBMi3x<(TIg*#!SuahmEnze-L~K-z!@Jij-&G zU8F%u?PCj**cD1iLR4c=@)%?Dompc~)LwjB`c4}>i^S?5gOT}U6a)+;=n{9a$mo9j zms`o_*S(S;6nG62H3P;67{cUyF`mO}-sgP}Mx5T;E$n)W)&1QfH$e<#NBYK(KnD1N zcu9Ww;l7cSFlt0fp|coueQAtM9rDQZ(V3P-+!Ll*0E*yRF`N&JY?TN6veL@Cxrl^a zW$^}C{fgv3>Tez|t`obR)YFYyKSTKx(3vrfqG+UJssxYfr&8@-jm1QabV-YG;bQ)EoTnSW-ozmdGb}gdOO_ z0kYsC79+H_UTM(7xpdyOsDZp)H*h`Ns`s!s-hNLQ=FSOZlf3uM z2~>ikC2;J58au zD&e@_Hw-l~+k(Z{E^y>dEHU9eq9=}&h!e0JM z7W8n#%={9;+C3QaAB{cm#+fP^kqDRpcX=U)R%5r<_{8e^0ZLOujbIKq~?P!K$>~(m0uRqq8A^3!vAI~S(o}OTxk%=D4l^nmI zmpucr66{@)+4+aG>mlBU)@ku17L~_tPOHq8HyCnSyq-ctlea5T}XV$`J1=WGJxqBK|e^BWL?gQo4L4 zI7xWnaaodUDKP!XLK$`9cvqG>N{mhyRWVwy1g&Gd_T zq_ZG>=rPpbXHyBtUgSQY(|as2@z7-pLWjUh5B;xt>}!xIVgV5D0bj}5R2RRuj8i6+ zAO*p{l1XqE*a*@7B>mIeD_}@D7Daw%(h3#xtWL-d(C;Csv^PSE-1-PBU7V zI!ttoKD^eThmN2oDZN8>t)=Z_Eu>6?TY_}s0t*X|SB(g&3S?<^P_7-ZGZ41?LYu-T z1y23x^RPQOH?~Q0=gYigyPK2r<=pqcI>Ans3o{zJG7ch!SmQX#P*I(8qvFTqE8LqU zn%;1X2UPU~*prIl5wJtx*(TFSmF}~*Vp&|j1w9OJf3SSPElF};7?R5VY1(n+T=Fwt z0l@-EeGA=t#i^!|k`lh*(>E8w{D54~}w zhl25SfE_~_vWL)Sdt3tzQoD@xYUr&#BY#ASOux`XZWyr&<&f>Li6Qd(+~0-x?k325 z9y8s)Eb1=MR^d-1KU0<6;tcjc7xU7uPy#&k|YVre2U0~ zAMIb0z($fGK9Uz2tDCk5&VJ=ZaA_~f)w6^JD$vF0v3%yW5**VHaD!$Q&XDE}^RO8q zr%w}3*Tlb!PP@o^x)A1b=P(Dp3lyjg)bysn? z8Df^}%p?o6{1zdW<%6sye~1ra178hgkrhjRL?Iom#nc=^4>tY$&Z1;ccV2pD%!iYY zy}$mGIaxK2F=e$s`2f7G!Vos@}rwjI~KCyZC2m-;}_UiJM#tbSEpkCN#YEb_gMjYa4p;H@k5LTLPp}mO^&{_ ziFja$T9*yTg;Tzhv_dH1!KITEaa?9#VwdnkY(e=Xlue;NC&RXCNslj!3tGAN(t>#X zJd~B_{;{LH%eK&dll}mN>t{9T=2UK=cYCxUW;3`?;~KZ^kKalm%J#>5bH}#EM@?%M zBu{0cGBe)6*YPHy@QujTPcnRy?y+w)(a4>H5R?@%4YAYP=6nRE-K9`MA-*D79BrQv z0-NxzGznzKrzePd@oI3wMA0LGU7k~}v8NN$!dZ31*6aJSvW0|)f)~%J5!Q&2dd9smuO=AuKhFTX(g0B2 zvUJN94^*ND@X-SL`T2Z;t5?Ki5`^ZY$;M~68#;oLLxdqXl*Vx!T*!#fi9Ism(De@Y z!bP*J5~IR!D-fM~(L;vLBo#Fm%g!}%USH5VH#zPBWR*@7=zKAtY6wV|objM?`+8Xbr-u9#Tcv*Q=_I&Qx zqB6Z)oU-3Ipz+vW;xa`S-ER0p{pBE)2mf9pU>Cknf31VBh~0|d%yj2&FN5F6>oqvV zJ*ixS_;O@MveQ{=sYIsK%GsMN8e&@;?O4`JqO zuPA#mBAOa>GmQor+g~&gCI|q-#7dU#(duWbg^IpbA(mv7QOq{qlkOH`fA5L3&nE9D z_fr7%S4xaEnhn)gfP=kGL@kHQT;$}+E@FXfxY>`#bDP({#`UY`+WFXj36DJ+WzurJ zP_x$V?UAHozfpRL7JB$31@M=bsbPqe{~FubfKu?EP+A4FrF==y1xKOrh8#MV?=xHx zMHA@A*Oye>1Ey=2P-BPB-|?Ty?Ny6U>t{7duI}8Qi0)ia^gNP152tnmlX{o6-7*u{ zl*ow(K^MYakkm(uq6wF@w`p?;4;cVi5(2Ew*;TlMPBH>f6jJ0RfE-MyFznc#)20xg z@ToEFeWdU>$9$tw_6Wyins~LQe@R@9&ol>a$Q(D(if?$4;eX+_mh+<^X`VtZAq6|zwK8t7@i za+%^OMUAgs0N3?CglmUOh)pSjjqGMR_)LP7hU`@7g?$zeNv^;}i}4I(N_a#CL!m9o z6d}OdV`16a(lE@7@{G@vh(MjB)raBQn{Ns6`*Xy$ewT$@(Fct!{!$ryWW zEV147eHtI61rPcD{Q&m!OIPc0pYflaCX(TCWB5q&FEoXDy!pn$*v1HvmN6m~H8P3j zDxp2;^xKU=aO?R7?LCyQ79O3|NV6yi4&KdIw&f$<7P)SQz>t()TPMnfJ=BK?7^9+y zhU7i{pQaka8R}59sN6$*4Y)Cf$DHbep^NQ&<2W;TXdtEZ8b$8fQvyV>>NszE_iOTY zps%$uqP)%3i?tF>B9LS296lsQart9DCH^+v?Vwx!4FbBb=ZM{bcoo;^kMR}>8q8O2 z0cfe118arp_yV!o$5FW%9Fg?Z;j@gEz)m7Wd7Q<@}5 z3_;rj&@(ZEIBm2WRS_wKramvNinUMN>mfEZNP&daI$z=I%?%K&Qq^jtDba3^6HpPS zCA?eh#dBRO&Ux{J4#^#^;~ZKjGq$q7nmPjicG=HdI&y^ zR1IU6_%Dhd(T)OFggq5W3V@-a9otyEAtYN2P@-}b6(SGZSCV+2(}(K#2L)c&z6U=; zGg;Tpi#A_-pOc^Z{w8R-7`aby;q1;FzBZ!2H_!?Wl0F%T07*oE{C@?eiLDm{`K@=*lD3 zk$+{Wl}N`V$>*D33@0!PcC~J47NXRIgURg*?#c2pi&+5p)@7zw!6ujCdLEph>2*Fqp#ZSomcZ z9M40`8Yp$@#=ljNlZMOO)raiQq~*<=!ng& zIH5(TQ;&L8x|cl1&=L19u=y~RzWrBx^F-uJgbn7ut*c9l&h0@EC-??2u5J-;@$cci z3ta}TpX>G&{}LsUFAPK5W$~hhJu7D#d9MDrQBmSXUu zr+Uv=4k`Y5O++`r=0hJ|Px$yHO?2L$>3Su_cJ~zUS%~j0(D2!Qs*;&%+^I3CPC&f` zA@eElJqZd*l{Y;ZQOON*;IDZ`x1=u8H^v16oG=`H3@pt`_@&L8WxU?6)^Gk<0!#~c zNAZU!Y-l|m@advD|MD%`q2mO+fqPQMBfBa9y}>!|BU~8KRF*!^4l}EL&!VlN0?#RI zD{!LTevWWHdJcda(nI?xdOBf>hC>1|An^%0H|W zZHlP!vTL0I%>S_`u=6FOv+-;3Y4)LCB7YYwj0$jWaKlYBCjO>0C)if;e$MLy+wabb zh^4Ln-x>9b%QR3fkT;_-dnyS-LUk{zl@5%B64XyJ&;x2#FPxNo8k(1Ueuy5dmZP9C zOf%)Xegd;x?0@Yh^7v;(iq63{su67i!dZW>=RN}V<=5waLE8j41cXBt(UG09sx8%Z z^J^{h%K#6fS?H$4t_l?IP)wHd!~|?sq?x{_H$luk6&~@b2U(KKD5}EwFGcy`B^iL6 zM;9(1r5d{3f_u|zg)=}hw%QJR9o~F(oewMYUlVhbv1$IoJ}60w@dEpHQb}jmo|e(a z@n(A+FA)To+i_jf#UeTN=6<6G@Za-}d%XKRx(FYru?5j&UavQP$0j)K81Rv!V7z3=Mn6eGI-0jiM9#YF{=0>p4|Z8ND+G!i>l1!BNi>lt zKH5v|OSzU}*{KO5fzi_%d3^~q7{rNcIaW07GrV(MPg&8PM8==YY~EDp(N@Oki7y!KudtB*Se6)y*HUUzM@ao3<)K@_IFAzbnfz2Ku)~ zJ`!k+%9x`(W!QokX{ITaqY6ta@sY*rL@)Ih1)ysv0RafbMSv?-QA+b${}AHT1Yo(E*QbpR%s4a^iLi>GY&@-V+-)Yjb4VV#lf_)A^S#MxX0LG~oT zN-2O$c6_znRiQ*(F5dn%2{dT=I8z2wUzrZ%Sjxh5pvyKRLTJ)?-at#^vC;vYrohF& zWUF$d%E-&=D39!}hSju;5Ee6jokXGgDHwUa>58xqjGvsy2nJ0bt^u!eF0e&Nqk3cj zOa7&>JqQ`%NNxQ#j+XH9YSd2^G+F5|HC_$#S;I|zzXtL{&?oOTM3WJc38+V)D-$A- zvuvXenP05P`u6ZNuh|05Dewsh{cc zBkCyLz}pHjM3`1Px_gDb7kEa^?|O26$;n&Tn!oz3#qgnsi`5ttDOQi}tE9=auA37W zV$E~0pLV(Jx`K{HICiCx@E`K6wcHl0PFX*vFw3V0*tI&*N}AAJ z1+tHMy138W3R>n+DZdSiM~&SYs~YUF=_GiCM2{uW<@vJUic_pyps^z`3Q%Dwb;z z>R*1uEEA$H#m#lLzQE;ST*};{{QqmvL}<*Ru#B)8MxxG}6w+Gm_UadTsN?yh>3Sjh z9Sa!V!F_NC9W^S%=?x=*oKFwLAcQf5*^dP-mRQ0tY0O5QfXxriWfnLVaN&r(6iTR+ zrpCn`Nwx@n1te#Ka=QeKn*Z`uz$2#-8eA; z%tF80*=gcSz`AO$(X0%(r8&1|6b3+MXLHG$w-kDpxMQaI`#FKX`^*omL54tmZq7o+ z_(V~{C;O9%x9k2X=P`R}H73k2&4<#}!r3Db#ndu~utrad2?p3zO0N1Wl)=ikBwLjG zaVc*;e?~1hLOa$1Cl+k2cTs_pdeX4LMwLphkKtUGk4E>lCYI87$*$LI`E5(c&juz0 z1+HbxP*G`qCdOI?p~xBI+!^)sG^U>X&&ZZcCYXIZpLsO}Jv}l5Bbe!No?@d#Wu*FKGiMrXEJ4gZKxA&c z2WfU~FQ1UBeIORF_9)X1>vi@%oA87ct!Tt!%8h5uwNXJLZCuL7C}ytB;})xHCst4S zvsfNmnLvyDQ<$EVil$08KI-&`=;-3P?Q>~^r*xh^{5O{toi-^p5*ZR~Rh?NJ|4Uw{ zeFYI^>^)$SAv>7R3MZR}VY9LmKYC0fLDh_`Lm8)Yq}1>a=5ETS9m+HQa7#EdOhQmp!h1=qwJ5c@lPjR3qe0)vNoE%7c65YG zH-Ld%BRSzMAmyF$7%>?r8O0c$`q$jpEL+1#`oPt5;_Pl&l(1P)n^pZk_XDQOq>qcY z5BIn`|Bei2GlJ~-ddZiRe;XW6QLe#toVV zAr>NL%jbLdF|dXRMLo{BzAiZErG z@n88d{b_nV`xbDnHG^j&YBcE{GdK0GLUSZ+<$1Q3-)ZAirsAqvZWkMc&&gqIBLUrv+EiMZ? z$h`cq8L^(gjB+eeoT`*mto0zF$-LES z*caXm`YC;I-sb?w33sq}%c9vX$Tyjmt1bR|yL%=#=U}r_>zy=fythn*qV?&bBTWM6XJxAjGuC{@=<5oHZgp*g`U$1P)a zhnfnRnYF>?8`MLl;;k{njCkSlR+QU>7TE5p@1+UO%%(`k;u&-j)IA~65)VwsXHve! zFdan}fe5<4*bHdIRa0GGal!unyxfb&0R{A|sGSoIz{??ZOVp^m%O{)d>Br~ckmO{J zr&~kVeSTGdlqI$VT|dE9Mk&s!yY&#~#5YfLE$;crSf7n#fR@UtUc2$BSPjSTQX>~? zo}{{;IkDCH0|6(ievLXgUnBf;YVE>HK1kYa#z=j3GLwq*ec`?1Awi&>94!|;-r2xG zaSS)O;RmCIXtHp}Bf@@3skK>b`nGi~ z44Y@!G~~K}Xh_iPvYw0{N5C}vkNdIpE0&Nrc%jg>A*w~2$`d>v)l-}}@i`*7WEIY$ zc%(t7TGWW5DqBxP!btN)8W}}c1u&f9iTv%=KI@L)ZCNWojcx0OCcWjmnpKU+$*PRb zXFhQJ%xd*7h0+-g=k0h^BD5n7`?6sD({4x-HE`APfW2fQuAQ1 zXqf4@hj`I!R#DiCncm??qRw7i5U2V7e5-n+%B z=D`8W_$8t;;6~RSZ=&=t+DvvhLF0H6%k^GFm}_{55$%fmym}3H(+Gpc+~4#53M>dz znaOPV0u^u9fPB{Fo%GZJLE~PD!+IWuq7!(?aaOMM4RxnDPrqfRdZ9POU4O&5~7QATV0l-a{K!E`T>ve`GNBfv5{x$ zL5yM|h=v=oz3#&6%n%^bRT*LA9&A6C*a!QA6IjtPih0Vle_>wyW$Iq!Kg>WiTaF!X(4v1IWDRr*slw>v_ z*9WG2y_S-9DxQQbV)KcQP8_Vny(|K4GeY(SD0F&F12WaI!*SWyn@HQpjlMu4$|sl8 zJrs)qVI4>Ew$S8W=#y!fpW$(a(wcMfcjq_rVH+=naWrSF*>Xx$Z&KDdm(B=q9;0C{ zr}Gx*JZ#NDaCtV%KlX;s*#t^R+?5X zF3l z;DMr@>>ps#BvOlokCc`7MYtvAyub}Hn9lzk_mwPRLEEO4_1`Mu2}Y3>{~2mJ>kN2u z6M~(VnFrWRSM_n>q#t`IWcAhg5Xary@tIIk_7GH=tsAxv6)dyqLfnGgY;8_TapOBQ zhP=rMD_Jl%+}8`qW7J_@re4cb)*cOr_a6ti#N+mK|WSm_>mUKZxP z7^E`HPXzKG;(pNTI^}b_bW$80c_Gp~$MaN)p1$XjU}6=}Q>43w!-yLpp%TsgACm79 zBbq%FP`Wf?fM!=*rOt;Pg8@tjEX-)ySxaH3L&_3P10av$b@U2@+X`TbC65%9PX zNxd_sZ87WE|G!b9ED(8O{bwWKJzPAI_<3*bX05Ah$^&xv1s{+DLAN~HM4t)L>!4Hy z%2$%s479gqE^;v3G}?d9$lB%=Y;Lk+_aJ6@{q14sl!_86`L8ec2n#0-Yn`FWTdY=x z^RJVV%GvH$IykD=fDxIS7*5MVyi@lH(RWxK(QRbldPm7%!Zy6!cV0IV8i~UHnKjb( zE*Dr(Fl5kGK5mNpu#i+}Ea(qiCIgy>U8l|-sE)n-Y#P4_9GrHDeRWkq}TRT9aiSnMMwN$iI z)tdEM6>=4m*a0rG11+879<;={u7N0tWpNxmkI0V#PyLa>YAHb}4axWUO0Ew$3Uj|G z{5KNZy0s;kBza#}%FEC(zZ6Iq3E0csv>|K#J4}u0zm;%9u7|{#93k|zRRo;E);OeE z=>xHDuhteIrYF18S+k5cKyq4Cb+x-d?ZHUp0z1_>fkCGIf=l=+)_3!=|qG3nB2%+IF5+3cFX+Joa{*(w&wiR_7} z^skDEN`YqJ5Ep?>iwD=HLK(MTRc+Ej!aR$OSPR1zAoQ8BcU&~naPnf=c^74c={qlf z&r@)4C|raBRIp%Z({X4omxn@fW0;AVM;~_m@Yk!on)4K^I$9}31?aW8NDW1kEL2E7 z^RIi1QqPv_!*!NEluhb^DrxsAxmdq_O;|=`Uo1Sb9&J}j<-DoN$WHYG)>u6vX8gQSBM91CZW<$Ux3MA_G^Mr@`1I6KIRks;F9I@)NBbS+^;#}Kh z7i51c*!E2bdai9@a%cf}G9(y!uSndx57u@U-iZWDvQ3_eB7I08;9&D3a9T;?g0#9j zsP^Q!w{+5fIW7Szbq9Nc>M5vmK~I$>sLP25?&oQsKBC0j0)MxaDjnYbcrE|4yx}Ym z1?npM>pglyxI4fk7koo}!SZ+;VQL_m(y@qv3Ycv8Usy}_KWB4r!Kzm>e>&t^_$sKd z?*JCZ(9MG4Pq(9Yx?iYzh#3_);O)%Chs?MXTO|!Iw1WUkB)7Fkh{9pX$03bc;x3Np z2nWi)lBL8?VxG9%P%44YS;uDYntQl4mE%&BoYQio;;s^mYyDA}$4tU||3bgXY!zG_ zGwW39taA$nJc!HfY<)M^WCxD&Zz3lXen%3N*k2KaUX5_jtU978zX7sK6TTS)Xn`>> zMdb@rtB5tObvuEs3BjF^Y%zQ1-d2Hl=Aa3VWr5#7N%acl=2f(N0}O*5l_{pjz6i!f zGzW~KyK0@Oi1?0}kig)~{gptzKXufSqta|-Y?4BZuveV1;d3^1wi4b%jE641i(;J> z1qe8CYrf-*lP@D$pyp)2hYg{)wR*MR{?AwabdozWX?`cSXKI@qon_DY11ENolf97) zskf|$OoL8hRoYDa_bYqNCL;$JQmkM+toBsT%{#J>PdpVZ|2gOrw?h=d%93WdvH>8@#6iq-XMX^o%#fReQ2wG9fI2Z%``o3&IH*ak%0h4F}wRE_rfvDy7P(951 z_9jnjLD08jDu@D{y3xu#>Z#uvRC4(N97-Oi8Rc7HZSGogoi2T7y;1d@8sSx~w*wPA zf7SSds9s1dB*mVh22^K5GJIlz5`D3 z%`B9giNW0wNe_hOIw@|9n_MM!so08%GSLP&0uXw}$RKFE5er3|zP6TPZx3j3@tFFB zc44@p=bpj7 z!DI4uxOby|78}RZ~6tFc>B6Gq5W?`7DeeI zS^}vd%cB1xG~8$Awz7KkVK$bv>N9B-aaazeBTD(RkbUfGlY zp!V5m5S^88&l*yz?g+Lqbb)3R}IhDOXux?zljTc=Y;dCm-*_Xfk~Yd-7h2^GvA^NE@VSH zy)2N%kcbF*_cGi*sYLKq+Z{LkQclS18d%{6mMrSsIAVVROYqAg4V>jOj5 zj_PzPw%V|k4La7=<}i*+E7t>-S_lo?`uZ<9!ffXhnQfsuMjIT^zYN{Xz%v8wbO;%F zhF|Kxfg5%F!R*K`7?t6zYlw4gKfjvW3&|aqG~L$7Wg%&v-yIZNniBDG(#$RyG6iL^ zelS`#TztKV3Xnk4G|q?9Gk29jgVx+WOEb((-ayD0cBk{YE5pY{>K4?-QBh18#HcidIfXuDkJ2Lu&@K%@#OK#Nq=0>Lx#9u z?w%t}xZtUbPQr%ZOMw1CvW^FL3i$7hmCvB3MNX`4j!m%u9sc$7K*{cvR*N4OsKELh z&O+8Zd4e%R&myV@CLMlQ%dj#>Y76x;CKu{2x;t_bJPTdT|3Wj&el>*~KD=&Z=)phV z;zBkBy#Sr9CA1q}ne~tON{Chy=?HvG09cY=#Su296bSE0x$1~QD@B17WB{=5uVldo z`%IYZirY=L`$IiT-Kyb|ox=myu6xKjfpCkF0-o3VXw|rq1GemqXoKY}G1BtGF0v=c zX`yPM3PmrDxf>tjGGvm1`@N#DRKK;RqPQFkGJH7kFpUHYD5?L-YNSVY1FgD~fBCgc z*1|Nd0@#XWfKgq+j_LXXnw6l#q@Tu-Xd(v zZE3Cws3;cWPKo$m&ufFFWPE&d3b$3O6Ron6`6y|lC5RVVxVZ}X#9IJ>a9lg~^5PI%kGwjW~H6PMr+6je{g9I^WCRzaiPGh(xo_$G8<3!22lU#03& zN$2JOR#fRv6LM%d=;wY_j}5>wC{1+jo>878Yo_&Dm>OVV*SWq@qWWqetFK7KzFT;W z^TaEQl+gC!amYR)wpi#a;{JJM-L6FE<;! zWXY#VT1MZh?WeF1n3L~nJ_q%6!U%?=Nqcn?^H|NpYjzrb*l8Hl*R8|h70|E?nX0R#U!w;e^gb zo~AZIdK;o!gdLX+sR*Q~T-}?yHXLb4>V&jU^?c?0suC`I+ccH{CGg_0vrplQT=8W?*+!8!5^umjBHj?gK`XN?pVb3bX0G2>kyiTzJ}bQP7rUCJhw%8EIxcF$t=C+Ombpfz2PlAq?iXS zPg)dpbPcI)9IB)4s`X30hEmsbWnLg>Ccr!uWt~AdiyBW;6P^E9LDfDZVy)d&y$^G3 zuEH#(OYS)=ZoxhA{;1~X4Q_Qm8FF2-U1W1H+*GbjEQF#!)V-tB9k$Z{j2gJKAqS+8p7k@ksTQrm37aht- zKbVxd-eV|A15K6A`_8Uy#frk5z^n&xwl7R^!1-7f$1~S6ReMAUh3$V56q=(%@hQ#r zCF5NON0=GPvUF2tyt%x!rhC#P+pxlvlF(#A6y6NC1--1pWwBTVre0W$xT}i?+C`d1 z*PXweNZ!LLDfzEK!pp=b@ye&rq}qEe{I@=S5C=6VUvemq%>Ip+NV;pb!7_qYT}H>? zrEl{kfo0dZS4z`KEaJFT-AbE%2MjME#J8tj#st&7q?+%{t9S}y#WV_{W5Ht2Z0*kW zJ0Up@q+TEqEB(Pk>or25aQsgHlcXA88=m?ag`o+5?hdkkk1_vt!@t#y_P;4`Ste#& zLi!?e(wmIho0=a2ZaTrBlkC!m{DcyiHS`GMM%OU?D>5M8TEl5A-k7kY%mT!tGHL`g zG&R-^Oz+!E|FNtFds3`%_G)W~d7Frb=RsuO6!qrrjQ=|*FW)wl5#{Mw6*P&uM4ePs z^++^LhUez#@;uJ-#s|=Db!&F;eOyL|6kJt>@pq*hzc$IM9yOhyReefDR0EvXf%EGj zSEe}8mMSH!N6#TCqa`P2EuEz5Mjn5YM7F1~34iFjT-m5kDQE3Pe||D-%dHs~dB0$l%1|>N zSxcap(K2KJmZ<+?z)1cj(mh3fX%-FzgvE@}@La4gcBGXu(4~;__db+<(Np3D9Kt++ zY9`l}6VQe1jQV&i_=y-_*l2nkc*RwBq%kD5UcwE|(YBEzh0AI#L8BI?A7kiej!hpk z-e`{Z{CY_<#`=@zgmfh{DbO48gkch5t>}>$&(ohEMma^`qYmGQ?5t3BwHnq|VQ=~i zY*V9yc9L7O3+20*jNQO4yYJC;qq@$y?s%IXgoovC#Q#af+H_v!4g7kgkN`9L5kZQ- zBiI#iQpGjaFE}N6vt>F4&6qm*4;1``UmJd11=)EH9BvAY*P2zlhe6fC=#FerY|kPj zND!Vt-jdPwXL3+>E^qFD_bFwDe91mhrLE>Hw#p)er0Ydr)GaIF7tZ~N-{I1&7`~y) z(S#k>yhO-IuC-<4Z|`)AW3wFD{B@|bd^+`#0pk=F*f5pm=!*TfjZDx)*xquBf+L>c z4$cIvflX<3MZpom0&n0DnLM@c{%4=jfjf|qMgLTySH|ywpWxuQ7+Wb{_di<%KLghZ zGpvKf&`{TOH06H7kZBn@K0EFWQbd7=^7?JCvM($D|Fn2OygLLjCllwXe5rVVJTwlb?=e$ zxFR4HSG^mY z!Vev{q$!DiW?)|MC6d}w7?1cl@Dm#Xjc{=C57A2sF4MR?xSGKP4yDJ7aW_Ci2m-Os zToE1u40#UEvk_dkV2f5vjy0&Tz_!(k`$hNWPY`x)hMZN?Dq?}w>6(P1A2ri1>FN5f z0M}^EH(YAOgTj@KD1he1YWJ<7p_HO){(~P4lJ0wI4-G62K(!L$m_Melczo2Hoq(}H z^+})!boP~pWCMeLy0n^Ajkm%xWh=mI8TMIZe-%oavN|obmeEC8`UhhiXtJo)Y)R5T z6@?cM(%sX8xH;?=L}GwysF%rt#&y|+K;bLpFFlxYOKp2;Fl8&D@t+=VLDRrRicsGE z=(37PmF@TmBn2mVjsYR1$KF6nx|oA|%;C!SG{iYflH=Bkxv<}Wlmw+UdFzZ-hztd@ zo0ZyqNpTTbCvJETDEi-7W5I|dE}z0pphs%nS6Ve)gV+Fo&i=1AY7l!pA%k6~y#LG% zK^@mxNlT>2I7tUY5#ag$iKRC+fe>vz`LiCX<^a(s8OyD^!jit9`*Vcl9uWDzD@5In zigB)be%WrzP(VP{I@6XHC^bNF@2$7R)-IYrco~`LrFz2xAb#?zC~%<&udGm!e=1~& zP3)9h!c+O6K{=4O@3(Wn%j{st9}6^8L#|&O*n7Rl^pei1DC6Mzxf@@9%Y^V6LZqo! z(5rk7u=!-|%iFc^?&be-QkK4fJ-f<^Q!Fj@1>z>@TfyiLO`l0LmyNnJ31j)!p|x8$ z!PnJKi#+YFN$1VJ+Z&~u5b{SSPs1WIm6W2H%C7j0qIFhfvKkdVk@A0w7ZJUo-9~o5^?KL78r4>= zI4V&_f69Vu&@v+}fZV}=SPqTmAAHVQ48K*pC9rSW| zR^qSF+iX??(#B-$wNmyMQ!Hxd~d#6HRVtq+ci&As;3-dguY06LJJ&s#_K+~!?<$8=;K9gih-rvpn1tNm9 z{F-)a`f9lGv`?Y@0{oY&PZ@>8k8QX$7B-0Ze#QBjJ^`evWUMZD8@cVh*@aobAV?8qk-5-|x{Q8c1wcazw#nMb4SdfcQ{w zLw~?Hw$SO|TtVxlbN!aELCXvRn!>%a`v9n`2nTz6k#b@hA{}YbM~{Uo$UuU-df8%^ zo;AlMXKoLtc`c0Cy%B3!_Rn%%(d+bS?sw_2 z6yXYr3i~MfV&n6155RSu33<KaCnWRd_X8AF3fkY@rD93jXg zcbGak-p^Us5w2--0E@ZugN{np0I_ex7I|8Rhat_~5H(i(fJREf6v456dU5Q{h65WO z>gx%1XKZXBZKip0Vq+AU>BFVY93vY0<#hVvu_LMX-)eZF^QXZ=jU3Z_^U*Yt(sc6Vbu65_)9S_Lm)nxO}6G?i|#3$dD98AUz%Oaov;lU1^v%pt}KlbR>OM*E&XnUTCh7e0TIb zQT$yC@~qJxmoA`Kg{s(_tiG1e8_9%@Aq`c(2MVuq;9~z-`}(~r#afqaf0?x9#3y(+ zvSJ;4a}ySI(O18$+AydT)&9q{f`S+)qp#f7>ppv(Gd%sU8Hnka0E4=A3j7j3Ft+YpemR9CUM?U=h*wlxS*qlD!p}smR z5O{NH^}I5UbTanF1%7`vl5M)V_khDaTw~U2Mt}a9(vDNp(HWdLU@V+cyMAr8W{;3p zOoV#Cy=UkN>b zYspG!kefSNYf^*i9PHH=t))S+cmQjdq-a|4t~1%DNi2Ar{@Nlk$#PGTT5?dr)E(Mw*#6X7q|~q; z=rCc6MFdS-kFD5aXhRAH#%CA?*mTugH!-66A1_@7=Os$l`-Y_8 zTFr$qh>MzMvLBZkqA)mQqCm-yvlH8JS)wHfGri&tUVyZq8Uy=)Ku3H)NPO)(#X)()pXRCs~ATXv8-YB#gNQ~+{cS5@lYl5 z_h)mZr8T1;rL7%Q4#VL#do2I>b1}%a6Z0#3QZ!$Ua+( zKW2k~C3?SrfIBy@SkU3d&7oJpovAUO^(r2Dls}PxLf!?L zXNfz^mN&%pf2&C*V3R9nFBq-b(NLD;IKKQx>eD4b-+j6%qW=D`86|epS_Pba5gr7O zS2n}Gbvx=0!?CCf3RLL|aGm~Sj5`xRea`J_deRS_*l|UfH8!)Ln8KT1ZMLK9Y_Z## zNs_!HLUn?)&fn^Vyupt5z5EG+<8$l#iaG zmI5Xi<#Oe2Gj+Ctd_b=t-Bxm72S&8|^z2%$3hF|6O-EfUj0I_Ln6O@+koXtyRcZLO zunMJJ#GtNxs)q`yeJj+RlBOTOd2S6=$|W&}$j&Yinp@TF`Sg0i#gh7cdPF@vj#^9_ zf8+L_Be^N=)Sm)Sw8_Im{snFSJHVNQzV{>!X?K)Q>`QWy=1Tz^P)d-F&gk5a5$VNA+&$A7p{m-acxyX6HOs^hvf-& z5|FVH4CtOwFz%5+ti$gbk<-@m?>@9&TSQyWiPOE?T3^4}loaay^ZXVB@Fp}J3>X@+ zrG}KP@sfg%y2w`b|BvMNaF3Swz=q( zc_IrZ`FSJcY_laseT0so^<>-}B_}xJ(c0d)OY57no6cv56}X^}PPE4GbZMaub`Gcl z-|d6ZJg67TBAl+a&45U?VhT=EaysK2IRi$KX184&q|l#%t)OBOyL@0ZOD5@W2Ai&_7+I)ybDo4GvJ_|mm;4ZSHWfwA;hQ6;ry z&OKf;2IGqJy}sdww;qgKUR(?@@xdH?Mi|MfUJ6XphF|#C`)XGvoISG?f3QFof81+! zuLLh79;>8Q65WJm=$hE*2h%;eGoMD8O{#uur6g@EOGd>|a?-tmNl7wz2C3z)=Ow$W z+Qzy3)U&l7BLUp{iN2+X<*&%>t?Ie&l1|O0!CK4h!tkzl(iH|?6=hX!^udE1S7W(DPn+hekOUfkZ#$>m(WrM&n}yS zg?NF%A=f7<%8}MVafp^GuUzux?Bi06$2I>cfVN!~;FDmVq+^@&!650oysV|;L86*lQuZaC%>C~G|zfja1-G0{vyimIR z6I1dHZ!&4lW(qKOW1F@@XlKm&k4n3uLt?Lf>-mpr9ng6B?A%Nt)z6b_oxL|?RE0&f z>(E1b0!nIbtd6k`W%P@>pDX=IWYSSJLmKWX60>stpE5UygGyhyfUrVgP7t))DF3MQ zKCURwSrA})+~4@_@iaXo(wnb4oc92J5a~5*m0|k9AV^pMK*t5ti$lL}dE&yR;erp@ zvLxbxOC(qM9k|*d&r8SsSQdaPazuI>@2$JA9z8Qcu^>61T}VYoY_n3-1OZFpz|N9A z@cEPW)q^e@z#xf6NE0Jncv7kXFVsy&H6|YoN3It(dTSs}-JCyed&gEL^?KBwtp$Rw zTw^{hO#&yQV`0)1qNq{Dxj}WJb zn6nzM;RO082T+ENabX|bxwj+y2Bv4_L_?ZCBYFXd!7uSO4}$v#ryERW=iujfTuM0z zJd;Wnm`Hm5Myy|3GhJv_{MxGRRb4^qA)DEFtmgJ?<+)4=uQN&~od@o2?{O8YLJd z`bPe}KU7yfIt7YuI;Z>mD#~bx{mCBc2w$I{I;~LHyyhR(dvMj(nmnLUf8p4i+w}h8 z^U2HY;B=LlJ;X^6lkVcwh(u|Zks9||Mb0O|c9X3FGjWhL)$7Rx;O}#;+sH;aG64s*ycYdyM?!F6H$Rv`O+*tk%4RW2mMigCFsGMo4l#%q)e?z--m zo|~IQVZ^Fg&*7rmp-jaAYRUH(;k9 zS(6Mn{cs+0R(&n50D$GX*&~zkLF5kmBjB_914tDKHg;G~xnlwv>1_rZL5bj)61Fv} ziL&5(60auS*v75`Qw~}@!-$sSN!YM^ZtVmhrD?S9hXRRdGoER>fME>SC)s?M({QU7 zm^beX$#<9=Oxec|xIyo%@h2X(wMy2e{=HmLzNWi;OjsO^?ywcpvJ+s1Ke{#O4i4fO zTUBai5NCkKxvV4u(C^@$ZM%qOhAuJT1m+bJq&tj(CfCn4WprXElJJRLXSkaL2Igyj zkf`g)Ax(?xM?wJC-+q}TtdH@13v^R71uoz<@kfQDq*E0E%FLWf+L-nO)r{wdx3O8KJ1egJsEi|7l+164KPvvQ45_#;vKh5Gt129jX5PLXgin zFbUW&e&c6ezNIT0yl-(*n}e^;T|(u}UF>SYdrsifaVnZ{6T8tY+Zp;gb1p;vTL@SE z7^v+`S*&m@hE*ZeaIalNB10mC2fQ!%%t#G5jCe_d$fdCuBn$|@R@;bb)hbC`Il5rC z&2ws$25u%C(fVgSo23ygo5l)fyv;D~)GpbyL9BL9Y|QP5jF7PpK>~S1K3e>E;aDpQ zIxpM^sj?#UT4V!CQgP(+(P_GgUnX5_1{!X&HYoSWg`sOx4A%*MD{L%}Kx-~yPR=Q| z?&t^awfoDPJLY9!ph(tm-g?a!?%LR6#e#cUOe@Wl9M)i&I4N6BO~ghJzb{7!K1EC= z%JRaAy+99Ky5-%9%ul*1tFn#M?zR-)93)5OLMk?W=oio>XFqp&8Z^=jU@CRUZ8YGP!nOjGt+6TXQ9G-|7McGU#6_W+YVj6_+@mEc#_+iBbX#6 z5{WZ_4WyNs0MY;o#G~%R2d^_Im*QwTVmCgr;2W1)2F{;N)Y{jLF(RV`@X_YlPj^F?Q!2_yXPzCkz*2I-+PTD7{5l6p zMAf3l7xJN3leMwKy0CcP6X>SDHQ!^ealD0aP>3Jg^lMbB(J{6*rHzd;>LG4wUERwR zLAD(W>17{SVXY={C9D*C&O_Fv8bV5k)GDKmpy?t5R6Rp;~(uB0 zl<&>%kZG&KhC$~^?VtD_>T4Gr@Pho7to6s4wP5SW6{D0Dc!^5Ek#YaX7jb3JpKwRA zPe|%Fw;3NOeeI-eqkR!pX5$PVa-$P=(CIfa5VA~df)_4~mu4sJJ?20VhQ&0?6U{-7 zUffDKB9Gm%1pHmr`Jfx9u5E1DVv{cIV4aqUP#1VJM|oPBX1c0UZGn?^?(6YQ4!#OP z(@;P-iiq}uRg+kn{Jko4{GXUgj6>Ys^jTy+RY*ke6PLCO>pQDMwu$$zdB{M*SzNo9ieuYX>vdJV0@#Y6Dx zMo)D0eRmf_1{IGY3T;6UlTgoSL*a~2G?WL|yt>IkC8~Xv+18J)c;LlEO+tf|sv}Z48jBOu7<}cbvrN^>yHjr>HkQA0EploBx1BCeUp|^; zHDe`l0GQAkT#~3z3Cnzwd4%w_|O4^o*{TNv)CtpN#F;w%5P5fum|f zu(R7K(5QT54qW;agB_#*O5j;o3t4Y-26`K7?R=2qGra9{|GBqKGCZIlHH+U!#QKr! zW;fLJY+J+*vWyJ1pZcCuBdh_LklE5+?}s&=^Hig7&a{XU6K#ph6WhV|DB<^pB|suy z`AF|XY}7YHz6}VN9+OnrItBFThUgqkZ!eX+C9pmR}k0I$~S;xuS4?8 z9tEgaf6B+AqB_g4YtMKiJg3`An>J5zdBjk0h?YEw^xewHn4KN;iem6V;Oafe|2K#K zF^Wjr{xqYP)EJTr&TS!NZn=eVcrU#LRq}zkH~}7-&+3J+WC+wzFNHk?dUz3!$ykcf z!N@GXH|h+qmYpW}PjX6-^-4y$MZbxNTkYcad?lsVaj?>v=$H(DeBF4ZuJ(0J8PzB} z6UYulIvjo1``33qmn%^sc^bJP5gcMtKq~=N42te7e@~PLa=tfPT0dZj&5BM+YqGiN!*>it1eFHeBki^g#&+drdwEKNDOZJo7?C)u85&xL znUmId0WY!Oe*DYbl*Zk=HWu!3tVYJ!>y(Y{oI|Q0UIYEw?E%=IxXy8xr_kJ~xLpg< zE_i0tYQ*6WYIACFIu`8z2uQGgyazk~HS_>4xB7+xs>HA;HxCD>tP~#Gl=I7GS=`C& z?NxU<6or_&(VlyzUbGXGI`4<#FY@y=2B2wMtL0X2G{m$*r_7lby?nVbn}^QTONqbk z|EVdZ^rN3y-XS3oC9Ia%a`>-j6r-3=e>?%}`ZA2Whvv;V)J*F(8qVNbiEa+MFsqJs zI4502hxY#D?cmu+p!{W*pHXXCR0H~QHqH27b22`^wIiK@l8xAhX|!^ z(KcdAfv)SpCqI~Z(px08SowqAv4%Gi%6T5uKIOHMG~}fTB`pv)sfEOlnLBt~1I;_49K{8!L8LHS+V^ziwJ#3}G**~GDKdJi}^NxNR>kW{v)6U9Ard?#g0$Nzn^He)+xrr7brSq8_po@-{i#L(+P2o7LIB^y( z@`ISFE0uQ!t{ICfOl$}8?9S)GUZSTdQ%OUExCG2~=6RX(h{XS*Uw&%(36r=`*%5|& zL3*g1T`~Z+sIE8qb+cIlJ#5i0(tJ{dQOx(v{uq66#OeY*jr-0}_NtVIQ1)h~j*g27 zb0BO_fAokDxIUJ1gJ~{!kTy;NZY~@*Mf^F-pVoAR5~NH&j8g!B#Jef0x_0SSBYPa<&>2}vOj8?{1m0^?{?nB z3wB}G1EJK=ctxzaY&HSWz)?~#pFq?8_NdPCcggaVCv&V7ikLjE_ts{0&wLkh{k;t% z@>Fr;cXFK^Ll=Iv6eI@A&H!g*E--1fI;)HH*@Fl*UECL7`63MRkGJiYFF3O;+<~`Q z!H!LZg*tlCy6??$li_YzVtW%}_J$8~T{Fb_8z!5cdi+PfGd8}-Hv?7DDG8 zzKD{nb1fmCwF^X#cA=Rj7e-=ekr~yao;k=ukn{(}77_OcT%BSxm)FU|8^(k$x5cbq@$9*;(pW`j@mJ#Yv@Aro8qsF5hFg1J~;f@4~ zf4$=+pB12O^Q4#51lSly<715~HBj+NCQ9W=o_yZ}gXJNpIH6Z$rsfWR(^@)M@%3DI zeLC4@Xy2?}O=#eg#u8k_!OWr#3^ZV)&dTg$zvtr4k&SL1jYam+vH&m9=G#$dqwQ-ppw4}yOc zXT&yOIEKw4CcFUxESmXbnT}D-P(wvpA*1d~AFygz|7wiuV(shNnE!344;Bjv4%~|o zNyK;Ba3Is;*`^M7%_a`dznapc;eS{ZU}0FYy}Ic2#!E;CV=r0$J;qUVh~dfRaX^v$ z5B8# z?~W}94H;MAz?kJSS5I8Rxs;lcGV#w&GaeMk)1(L#>*(_YNpo_)GecLw1Nnyu-eo^J z;3@Z!Ihqgz_>}+D0R7nMEt)Ucj_H$)MBk|^a){fnFm zZuOZ?45$}Q)pKveXyU1Pw$WN{{DZh9{tJ4j!rl50%%<)bui%cht);@&&9XRvht_OX zmN8M(6WY4_RQf01kxtkA2QpU8gj?exOjLyDjNuf~P!=}7gj*)rf`7!|_Ck_@@a;{1 zZj;rln)=oUfUelA<|uwd6r1+d&l0j5k64-gV|P*@r)C(k719$RX!#p3)uM@4WUtUZlh@Jdwk6i`WVxzNY^O6AG{$GeQ3L zsRnxqC*4m(;?RUe#|>SQX8da`r8KIpyeLuP+)GRpW(Rcv+zm9eEga*n*EiQ$yhBgS zk2nZ&mfF4=w!!)?R)+D1;oY0|W4bzkv|Vop>Ues8Oqeh)OW1AhGvM3_1jqhW^_ zi|7J+kgPRC;uk^ki#R8NZYJ^suaw||W}U)R&Vh~E9O`~gCnT*0A7%$5w2{{X>nm_` zTH_t9B*rEA*a>cHX~HHSzHd0a4!akiJHC9BU2k3Xc_-b(yH#m#uX=F<)Il}`4qDm=aI_yRH2%oDopxG# zIB#Jxci%$&Rwz9U?w!H}dK`8+9JWUPDnR{$_4rG!T3E84+n#W0AAGqm0+LO$n)O#; z0lc5CT4)=7N)<6B2k_~edME+gp8ZhFVnw(Sj;g+rpQT;tk$Nv)8L`6+NlS7%TKvv3 zDcme@>zir^V#%b{L60F&h|dY47+K;g3!!Pb>>!{L!2UaBajGy-u>m||$P?VOLZ7cK zo=1Wb*udF!eFa!l-?#Re8Di*?ZlsY8N$Ccuk?sybN~A-&RJxV!kOo0YN{|+mE~SxF zQs+DKi+k_?yWhw2oagMb&z`m4wcdBFy&0G@4#39$?uXZ8Q8&-jbAr> zcFPJn++i!Kt9f)~}M9Y>|bnueBFK*iULY*I##V%w4_h%!x?RaU&xXljwYyBQhAs zh9F&4ww;n2F_n(pr|mGluFD9S6-=VLT2VDG+b}^N`9u3Q*fS2(a}YW0|2wv1$)sa? z0r#2;^Pu^4TgW4HZ=Uon(hjTxrhRR$^Bix|WW^-%dSTADtFghI%3Z~__o;j)HjoPM z%W!7W4$Vmp7%C@ThL(^Q2TrlgOO7vuWV2yJ+f&?&PHL1eoL8G+!H* z%ipj)?RHZTEJh;iPxf^$dN=0VbJCo+stQAVGNl7nodOALE(1%3d<^jmr3tGrT$9s_ zg-Sj}viQem3XJTZU{*bW}9~u%P5N>mmFd8pB zgNz1F)I}7;@89hS_q>h@HR&CExP~xMd_Oc%Qjo|_-Q(7DFn3TTXk$o;b^202;b(%0 zNdNnv$a%Q!c&3Gd@8=&~7FvesmD5Dax4U*r)ggr5E(J(@=%dAuM5z!&GS_4gtouP5 z{fA2*M{>Tq0$GoWdb2j%%nD+9H7m`iR6OYf(NJz4*UY|zj2L~0ur<&PWn_0-PU)1YK_I4?KUXNJ|VO2}t2q<*U3;bRy zaqWBISn zCKHmwH;(t0**UE^)j61*EXgMcj*r$x+Vq@=hoJO#XsOJlIxbzUC#YJOth_!v_U1T> zX)pHv7(P?b+}A1hW#ED0+qWCPS7LA9QiRv_NZyAMC@uF7u&UTT+O1hf$lbB5AD*aq zUOVjZvGTwfTE5fAGXHMj=$s^etw@AAWQQ#-q%3j-kI8j>BJ1Xt%fnEbWevW<7%$(` z7zD{a7vWR0B-}cAvoud`b%xR^!>{ToS_|i__K&_|nN-u`1==Ny?HO@0y+59z)=O-S z-#?({CE#zWs~S`~5|wYi@iP;{{8H@d3GLlne6qCqnz~{SV=3Ie`k=^dny|Q{tV&kM z{80R9>->?5*VCx_ADPXJnD# zVEyA=M&AUSZ>$&{5Mmy4oAHWi%p5%nUM@_GqFuqC+I+zou%C__MP`D)TU?4U#y{BKH2&) zIaJcE68p*AVx;3b`*BQeB!^z@OU*P7+f4SrZ(_!idx0{~mpJJrIi5^KNzai+i$96) z9rwSOfrpybP4#F*qO~Jj|Lpp*x)*&s$qrx$#+PrVi$JhMWTMN4NtZVKQYz@i4z1sL zj-Y({=4wQu9eHK+nNDNA&L5Tnkj^VnKlnn1Ubf3*+J28fIAA5W%y((Y`Bj-Rp%-M@ zLoc(rzlJ-9f!N^LVOM?e>(oy)UetdqYWMQ^*6xbrNRxe4^o1NeaMl)*A!E_LQTZ5k z^?;rcy2JtV0-ra$12v5rBu7fE&dxb;83OA5f!Dc z1O=$ISmet}O{JDj+c&5Ke)t6-nujjbb|h94Iy zRp#T{Gd=mqX-70)X@)+eFLLH|RK{tM(|Bj!nA1JN#@7lR2!3`%3L|@?S|r5F4(*y6 z;*<;ox%2$Y;Q1iz@T#vGjc#*J@i%L5KbEBxUEwxKF0 zjlX=(C-li$VR!1AS)fNjM4*jkx_x1*?+-qS!vac^UDcZux1R!L{c{e{H z@~GFvESx0uEw=QoXV7Y6?n)YYgYO~6Q?z?S5-nsqFOqAEOC1dO8{|B_Wgb0KTwUff z>57kDfLa_MLevSG)%R6vc}K293Xh|{V2Ehhd&>?)PvBW0*o;5!0{zYPHsOa`{wiid zDdeZvq_*jr{G{F1dp5T8&ICjVG!_xvz{ExFC>|$l_tta`Vw}yhP%H|EdY0#m$2yee z)1$_}t}!Ayhj=F<&$gysJ2Sz?lz3b2klv7l-|sguMJ#LCz=D(5gcLNQC>T{2A%vb< zp4qP>GglgF)B5>~ITa-Jc7xPCuGOShfkN zXyc;O;2IuTc?_?p3{cbS{V_E*x#e_Ltz6RnV>GpN{vH`oi0DtX=ll*S8ro5Y?WE1C z5vDDDu-L}SH>1>%P}&Y+0MG9zVAh*wgiMd*u~yF!;(wp zz23REQEHWG!xwT!$u(0dD6WEjso^SmD!0aB#qK_|z(KdYA_!F`9Q>+qX8VA6C8+SFfj(aN z^y#@~%c*jHSNn7?xy2cU_kHqcn}A%2k4yylo}}23SY&jVaxxvyC0~x&Op?4@-Bv^% zW%DY8XG5Pd?~mDq$^yc%R)NRI^Q_s-VoTk`XARolI@t`%jXtQDk$J6grk6Y6ZKm*q zPaohtd+CX;78JfWeo|^ddz1;~0~4i%LPg>{0BprSTd%Dr4F=Eu|NX z#QJ6JXk1;p`a2CI`7U+(YNb~sr_>uSxZ_ky+|eb_+Irp@Fh1eecr(x@MeJ4+H-6zc zVBx$N7SrutFHN+;AR4rQuv4OL(g->1PNot~U;nwzV^liF>XmSU6nJOSgpx#stlvjvq&bcek!YYD9-_SkqpvSh=oGMU#;b}bCCHwlgDr8cW&)UEpP z_GQ|Ks@3GgShQoorz?~Wq!X2o+RNs?X)LEq#>UeZIxoo%Tvz=@S6y)lJACz#XT_zt z&&PWZ*Rz4Mpnb_QS*0qdS>s&-@5w_d%!fEE5C}!9xjNg(W7~qncdRLj)TKY8yJN^R zHUxChdL!1IESV(<$U?0pi_zsan}!u7f;cbk7TkGu@M<-Ip4)$9>is(rsS+4-=V#A& z{}dC9Wlcf=Yp7sf($d zxfu&D50_Z^(bBhx4FvnahzT~vD@XoW(}nLbUWt)Ejg<#zX4s+xMwKPD9o|d6 ze6~}Ck6TYz6x@RGSW;Wl;MK3z`QUGrrgvVlIw zVbzRBmS?rwSTHR`WzD}i>*UaETnnR4Gn~=JZP&}_x)o*ay7D`F^^V=`$TCLQU-x@l z)X%w>)%R;MpFjP*B^da121#%v)+MaiOeFg~laq^R?>&BE*|O+|S;_FmgEQafmK}P2 z(C+=yJjMzOIusl4Olktq~ijJJ6L-|ZopHeG^b zPvfhlptpmZMLlco&A(VQ-n8EC5^X|THv@<$Pmx!bkF0fiXgkxC@R!x_%vpscCn<(K z50Y6N-coj`8&%_?`MNXJ7WsjHs+38&95Z4T3WJWqbl^jj%EaBDN#GbXDQdwb)(pzo z3PFvlkKl_p5%23I8djGz$=KB-1zlpxp3TOJ?1=jQ+DTrXf% zTJL#Dua)r80g~H=8txL!V!73&-^SG$e!7~|#F7KXC)q#uO>Kj z4_AFb=sh@#-0m{-FWJ?t?zB@%*cEzlFAwA021&5LzXQ$Qr{8fDPoDqSbtk|M=JR@G z>J|JeV`-r9!|KW$*NW5-_r?qKq_%Rxn-eXXoalQr9Gu$*4f`f|?6n1gCyN3B^CI$+ zQMg`lWt|8ble-$9XQj_)FBj@UzoBJ)s;w=8_BZ~Lz+uUz6CwZ3MwLkwI}mOn$QRO_ z`B4k~#{lypiS?GTnV)bEH4)wdodNGCy$bOJdchbI)G>AGqkhc0<2LZ))+|z93J=ZT zxzvw@w<7cI`&p7(BM0`s&(b5B_!AJ=LjBRJzjEd_paYDb;OK zIn&~%k8Rkx&Qk5L_Ug9D9)Dp&2pSlZcUe#t?Iqr>^^-kntb4+B$-U9dk#%Mc|Ltw@ zSBq`aYahN;1ES)A&Rhus4EPH~%dmf*|01w{0fnDKzL!Yyb|q4Nt1zPxug`V zhdoyL2Clz!{!|SQ=X1MsK`W#oHMj(;vSF_k3FtSJo97Ky#Uc68jYjeA6l8KlE%DFv zJ7>tHf68IWbuD-GZ(EpXQQZ@1^%-{aywBjd)sL5yx|uL1OK23G>?fP!;`8$ppQZ$Z zPtUaY2{Wd|FiuUx6xq~-SfNt09s6k9_V=G9*9=1hX?PW5@_0r%p|4Kmr4MRXtQrEv z$rr^mroBfuy3ZE9`jRC3D`!;TlX9bJDxT~KHpvbp-Yn!oACMKIc|V!`c70l21gQLC zRlpl6v54&;uh>)(iY~kO4wiL{44BT%&b0rhKW+RKO@_)Q?u75=ZUf)?sT=j2kmDvk z@jeV>G`rq1_gy(Xs9b!xWBysz$BSeAM6rn+zuzfr&LNNMesm9kVue-Mt3$n;d&(~! zkGc#g>`s;nPcC2@@C0jh*7ztD8tA4BMNCmLq>+neUgDMGyX$7J`M@JG{^;h&#gy1rn@DGX0BaWbZDTb!0q zjv?TTs`wCu)ba_Zr3`=mZsqDCyKLjzR-Cc0w*kM;=Pmmn^_KR{P#z;MMvG7@zYl@#rxgp@UOa#7PS?{l~ocn?Dtc< zOjf;LEGCb9H1+b1?)eycu%|k0mB@u#)cqtQX<@1{SSsP${@_#^0fX1-)fOuuOSHqU zM#s*JV17rochujn9^tT$sKvBuI3Ni$uSc0aw7wF0XYcvNa!Kx8=7A0y`WF|v37nx} zjhwXUKbcwnj+V6p{CMSp7(yx1LXb`oL^9?t#!s=gXNf=m93Q8n)!#%YQf0y|b5Cn; zR>x>_zGNyO<@V3b(XGEdOf?8i!>aPzG3*#@V2m+G(|tVcQCF3Nn46qW2;8;*fqOhk zw21RrB}l7k>@wl=6!6&Cwd}tC$(XWaK^pZ=?s)L@QlmAX>w`iquSMTED z!;`zE+?)>rUrE8Jar~J!Pdf6G>EFv1`0N+u2pHV&q{vdC*Z%>{nD7$Rf6nhCDEQU4 zxI>7mnwIAuYX71+-EOeeIV_>ZC%pK+SB!EX)ct6eUhwrqTNLdg>z z=wtHikA`Jiv0O-WcK+7qQRzxc8!x|@=yzN6uy5r!vt=@>COc_X%<61I-EtKb-fOKP zU(*fSxQ|temHUhG9E9=vUPfTj8h{5I!BZRyt*M z-Iwu6*%kd!_OQsvHNq(W?n)=ow+NdZy7vH|75SGUPiQFx?+*CslBHMNFQ!asy-tJD z1f!&M8y7yY^*&qu+&7w>{~q%JpRue650~355lwhODScH(2CZYu_?3?F`Rd*X(`z)Q z7jz31+Pk}FY|_k`sR1(4gI`3Sk#A@s5(;VSeHYd^pUrQ(Nk+NRI7d&|NA_6avmS`F zey&<+TQI=svP(a6r**jLt0{Ss+VpkH*gcg=@Y67v%X0XTBWr7zN>X$F58N?u177aH z#Pm4KBSg=CA6IZ?@Y|NSnu58C3ZseB?a*6OLRG7Xr;a5|qRZLOBiKp(Bx-H)`n5<+ zHMhPUQqJ`?Xhhw5YswIO;WuoeYn?qLif(JWkYZzR?Z#Za^~7BF0`SGzH_$>4>5OKpg}C@Bsjz zf&tjjnh5N8ks)#HWEIB`oi8`7f)euAqSVu0ALZT=o}OehEv7U=_RDL8 znCjt`pPS^*D5_l%#amH5pP@YWrn^y__?9P{X7g@jisDFVB3eB=uWsAz^ln(drTy9* z0hjk}O55-8MhT70kLTQj$p$V*@v>%D=r!xVet0gVox^41=r;HZhkZj-(1iFWu_8&P z3R&=Dwg_2IC%IHwg^h9;hC`yJN?U_WBXJ!SnFHk${h~A#P_?_UCvY@r1#=5xJsI>IuE1-PwoUg_(S_8t?&5LgX1fS<3sJ8lQN^{#WKCcG_AQJCaT

stS=*&?41p{MbKULf>+83WX^JBx~ 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

k(l4g=wiq;Bw3sScFG!b^UcJf=eVq5DevDiP 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 literal 0 HcmV?d00001 diff --git a/binaries/arm/ip2net b/binaries/arm/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..0d4b02fd735c8679017ce825ae3dba2cda6599de GIT binary patch literal 31972 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 Wd^I~9`FG^!HsK(!1u;dyoc{r{Q=58?sA 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%0D* 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 O(gD)>_Pb8!pz8$=FY29emZ^JRuOhqm~W)$&l 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 ArT_o{ literal 0 HcmV?d00001 diff --git a/binaries/mac64/tpws b/binaries/mac64/tpws new file mode 100755 index 0000000000000000000000000000000000000000..30c76dc1b1739a6bd2a1c010ea00cedad88b54dd GIT binary patch literal 110560 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-lsb/ip2net b/binaries/mips32r1-lsb/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..bc85e076af27e292f30907359aabf403c59bfc2f GIT binary patch literal 37224 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-lsb/mdig b/binaries/mips32r1-lsb/mdig new file mode 100755 index 0000000000000000000000000000000000000000..93df02e218d29e4280fd4ddb2fa26826ef247dc2 GIT binary patch literal 46836 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-lsb/nfqws b/binaries/mips32r1-lsb/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..81e48357d3c8f0d4c105fae0e8d9d9adea7e40d2 GIT binary patch literal 83172 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:^vP>mLkmm%JHj2uxP}Bx9}y8BRGVm-|zB+xoPBFy*_nY z6dIISbz@1QjA$B2Es$OphS<w>E+~B1u(1%Uqm?|M2OtbhYNZ3FUjoyLN(Ljs4bi zwlE+>qOTverEL)a5o?~Oo~cmZe;u(P55|+H+FK;-b=ER2-@XnZ!f!UlJ5uwv?XJLc8`0@@l)CK~bQv7Qr3hfk&MC_~WvNNfUWwEYDgLLy^U zuyUgmja8Q{qNxw4KLlKM33%-Ae)9O@0unLXq}rW<>+FF4)#?=s|CZa7MHb}%eT5US zy8*#5y>lQl{4 zV2USj*|>UO!@$QXGXOuYYQ?qBNy~0DWTcd*rxXjaUtBWXdKl0Ddv(3ZVu*s=p(U5GymekweomD<80g6FX&F^lrP6g@sF)#=Y zddg2@65ih(v^a4zd9eziAyhiSZcA|81sHGbs~7x*PI!5znEateO8mR=Lf|eF?czqa zcBxS{jg}l$Ne0Gse`81N+=9_Wy=@ z&o=S{f;Mrzbp;oX;cN+eFP2O2WD1ye=lJHn9~wdy7$JvgM)zPM(tEx4L;YH8sJxs-6u4{I1> zhjKAeJU|x88xx(q#U|4mgb2+lkL2YN8?1(H6adbd_1!TL|J zlpP(!SJrL{NvpIELb_-Xsh+Fu&zk2etRL>2V88d547sl+EhBT74*z11!p*kNC|?=X04&|DOYII7k^NxVyoKybK}^e3KKM$x>Gr?cGHIwE<)X0E_~gWbYMS&}(6 zVS#X~hh2vV7rn~H6;dK<#W zDzx%1Of0D49AeGr!Z1S$W6OOpex^gArS++7?(b{8(MsX?&T1j+zl{qA@%&97x+WH| znNP(7ao&5=)jm(&;m7XYLLhrH9p@4i!FbuO{%R1$71)C_&~!hPe@QY!KA=!B@+( zYT|F#b5mqJFv~TBL^D@M9~o5JZtUfo3v$hAwR9r7$ZU;sPrgt*e_x#e0^WI zg(*3(7frzo9MgZFAN7W7=0RVMXNDTuc={({&A&bd*V3`$iX^^rkLW;O38EE#E88*Q z7JnHH%|&KrQ$|=@=Lk!GfMXyCjAg<@shwlKEMNXzF?s<{Ta|#f!igiFT$jBt|8iw` zUZrc}_Q;#4WRe+P3yx?RWIODWPtVI$xd8U!e+I<8QIS^EtkmgsU?mtMQ|t*02-RbK zpqaOcwLfABFSQ5P#lJQ>D&_8%jV37H8|Tu))HSXIds>Pe%X;_1M1c_EBi0N-Y#q8g zC&<8j6V2|8h%{S!Q*>X-aJXn@In`WACtGj6!gFRENqjZI@jgz~&B@n~-C$fzd6u-_ zR1PQuo|As?UFn-D1=E{0>0=%oT`3Pa^v%f1voLdm$Z9k@Go7nw^Wm>7!mpy*O)nWD za&UR_(UXM*NcGJ85oc#PS6h%o+)0y}Isu|jeh*ga+EiTs06Ow?a*%V7HDiDBncM~I zA^YFB9_)(XjS|5-uqbV4E|y4twnh&1E`+i@#-1Pveb=CS{jDMKu%F@IH$$#5+e)Ta zAY=J_d#$EcbJqk52muI~3KzUOUajbjpi^SpIbMaPl`t?+ll_!eTv)t5=)YGh7?J-M z+qKeCcHVQPD4P%5qMvKEBb$KdSO&=SR3qrh2Qy~a0B}Y1+2)qkFO?83&OfEggq1o=W!?Wb3E_$Yg7l>%&hk2!zL+Ry=T1SmlHd z*KF;Yv1k=w8}l9`-U zS(n_5tui_tt(|eAC>a+M{o+e|U}%BpbNjaBV(MaWXj&5IhkloCbR3R-P}vx=phF`8 z%=#LeqR>fRiRjrUi)$L4b(s&6$ll_n+fq$}kW`GnvhYK6^%dnU64Ln(CKPctan_gI z2(t@sG7*$8hSc4OqIWiHu|SI`H5jCYzO-q{m!OdsslpK<4KBGnpGB2PK!p7^O8G6S^&Hv;hX$x&SRG4rU zWchw|>~aId`CWS+Eh9@ZCyYhZ9aZNw`G}OpEX*)W zjGXZ^%rMYk+_;mtA%i`6QA{-TN<8rki=rc@Y*1afhtf&+7dLoj8laY*|VD7qd~YwK<8&zZTG@Me^uL|m^4y!XYip2iuFvodpPy)Qu={lyEsiu)s%NLrZux+LHHpopN3fV`^)|M_OJ7~~+ z-TFU=&H8qzF?#l43sUBsTwQ2Fv*!6 zJdJ948E@HDa9Zbr8a(WE1aM^}158#Ez9~s5s|t`XL`Ez-AttZUF8*FDVkR1a`+e7D|1Xq6%e9o z#dF8W?J57jz(gYUKk##;j8-WtC3df5@CJ*R*KMb*G`kSa#~U}hPbHM#4w!OO|&c5PV%o#l}Gjm z+Ux^K*r;E%&P?z?vJ5SZ5=b1UV=N(_E!k5hW~IvRU`$Ih={1HTnq>)Xg9I>3L!HiQ z_S75VSu(%#B6_6lIkpY}VAsz;2v@Tx7~rl3ZV(_~Jbmx;tnu--WZd(7Dvpcwfb+}Q zn9WNvwRlYWK;v;J%RC5F+x4c8Zu=rwI9kZ>nuc)he&5_A8#4a!jv&4J^RiHF6;om( zaKm~Sq!t8|d&*4B10RJIiuiHk%|BSqw z4;;eLf~(8qf(+LAPHP^K|NRq7UrTlH`A*4K7diTo@qbl`xHh@Hm9HaI`$jx`YT>G{me522n#po#J4};>U(jfvj=6sk3gh-l^VLf z%E9csEf;J84({*i%;(by&rV6e+eFnW-@b>48Q;>8IBZo1ATaI;<};U;dtUqtAvMre zGuX|5q=PZp94RpSZgXj_Bta4L@}FgzXIIRVjZdhhx_`%@mZ0SB8L%WgU(lcREY0Xb z&$`$#B!{LA9$aDW*JATC?{vPr>QL`3!gWd>gYvG<1t$*)3xMl+m{ubHmwHkg2jP94=Px>yg(Qp!Z6MQe2CHWi{y zO9H)w3rjr`n{zQk@5($EoDSAY`%%ShVle%QFkG7(`9OrF7*)WzFkQt?pcj=YX$k}p zD^a&2mk&K)_&(HgVE}Zn>FHuaW~G#ld-G<@lkI<9T!hz0Ualt8G1lXqOtRa``GnV_ z5Un*zD}9c34y&d1S>5i}cFz?~EKOudko|pZeXO zEfX^_#CA`syghqt`&Kt9yvBp{cdAxXEDSCeF^JqL6snOn&Y8yp>-m74UTm4Q1@SU4 zhf_Rc{;Gm?1)xu*smHXQHk7MZ$S1XPtWBktav_-k5%c5d14vXgme*$2Z?t(rS zg}*8DNS#5Fl1Q_QRfhi%r`2tZ(^2f|?5n=w64s z)n@qKQ_keY%LrR0<>in56YzA-J`|e-g@Zs~sGu#&@edNwF+}nGh&M^p6G&@EG`V0< zb2hf@{1&@u!TJK|YXXPuYoG*z0n8B-Ql2pewIis(UM~Z|J#bh!B|_!qKrrF%GQ!L+ z7ZGSh$uUr=N_?`j#D1VqulIe9rb{>x4LDd7Bl%H z_%7bD(OiUi#!qMshY_L!MuX3)!T;J1_iMi1O4~)+|Lhp}=9h*D9BpZH#G^b${VJ*z z1>lhS_*@c9tj=74F4d&bG@m<7rY$*dVBB$dsoGEI4(YPez?|X!GA1g-C>jzR&59~* z2v7i!wP76(FaH~pefdwPo#JZuDhJ4WYac^EzMvoV*i!RAnXuC>+=OieP9g3??IQ5H zq(nYbN}RpTVfu8-Oa3lL2&zxJtQTY!nzaWu%31Y}8MK{1p=};}7FbB8Q8BHZY}Zo- z*dx(OKhG4<5@;qXG~+wMNkZo6kc#B-?Y!}j2ugqXzl&QWZX%bFgILjQ-WweR-nZkP z@R8$kq3MeQ8bDiyqjfCdfl^u0OW?ljf*pgi64~H%bTXoUyWPu@A_ELXE1X!Tw zCDIYxE9uzv{~X-l3|Qx=8L7ygm}4x!D0>mgX5!|DZZ+~sWwgw{sWa@QX@%m>@<-_U2|Ca? zZ;I?(Sw(usxS8C`*bTE;3L&4P;xwu4McEwMoey^ATZ+TTl#zL(g}+EptH6rvMX}F} zf?i?`M~tQ#UR^MS*rB|zh|`(Va}xwkmcG+GbFAdIo8|u8>!R?+WoA=~-JI6Jn#dVYbpxjkccL54WZk zz4+}nszK5?j4hwz5TE%f50y~?^-eo|%Nd1kRJkNnRiQlEEG!zS#&a-ODAUu6Gl~NN zynQoGOw-X?3-Mb}fQBc&?$p`4;d^9tDTyqYg@Gi;lP^;%IzVtiW@Jp9Jt$UZpV1-7 z@;*$_Z?g+L-CbY>(v{+ai@T1^HVhRyL1!>v>&*y`7*9BjtApkh=G>cBSkK9r56}R+ zvX#Pv5Q_|2#Nu>hP$6l(JSs z{)D@Ag&JBog)`|05L?Tj@#MGsAn+~^Q1L=DAK}^fkY=3IdqaroLj!-U24t0P)#DnU zn5x6gyV?Jsk+(|`)$Oh*fipgo7?4|r{FV?j3@j@hN#fL~@cn>_-zxRkUWRiKa#0mg z7%qh_HVTA?Ijy1oerRTHpxVIIuYUU?KQg}kRI6JQK8QWZ)A3rX{$zclIFX)4UHsjE z@Ba55<=!k(6VMxZD5>}(chfGkCtuhnD29|5{=L69IwJ1ZbR1^A@X2 z2Zq$@F{#5!E&QrX@lw$E0Z@JW-D|-X8vM7ZWOJRVnFeg@f_|!_F6o4vkKPqoIYo7! zzzTAor9B?Hh#KsLAwgNQbili@lAZ0Tcrv`}hW+}lr>KHm9ap6+HwO98HHiFk@tAT5 z@*>MPNP?bnBUra&P_yVR{sXDf$q9FGlJ4uYalLh)-W3WbZvVeH*g-GGL7v8!Hf?nV zAJXzn$&jc3?sXzH&K+4lspRjHCdXE=w1VSt7{S~g>`G%yNN8?7%K!xS^c-tcn68#k zrcyltI+zdQirKdTzDZ0XtBO}jzuOmY{SGk+duXFMl}4FC{*B$YRh;M{k4JhfSX$Kb zJMAba5m0;JObw5HF$x>8!dvUY`TjLc%$H#@!sLUAlg1#HVboAH-U4nA|I5AzOPA{u?DsvTu2R8JUE6%Tw;i3 zBcmDl2mM8kM!ybbQMMmioNgQ}LfZpnBA6z;c!FLRWvFpwZYG>D5sHJsE0+spvbkz= zIfOzUc=@D}WJ^DbRy4e*0K3zbmJ!g}lE`TnUN)E!&Mqw3iqRj}8HQfM@6T&V5%ZM* zuWOf_x!AMEapuTvnHndAFWJD=;O^xp6Mj!%|IF#OA%}NWmr+CkZw_AgCY`5EQde}^ zIts|j6th#ai1yXoNe?xteRKVH^5&WHmLih0sW>K)(9A2u_ad zWxAPVjo~vYndhc9XrZ%Kl$Ll=6Z#_|Q#qjXBx|88#nL9r(Ehj~c!0H&7TXPic$hwM zAwQ|AgKx>6-5b~@G5lOU3eg8rkCvdFAQdGYYCtST=8FT z>TRjJ8?(d?gq~m(1=F+hG<05tbjrg;TEV54CPJ0=A2UVd>^Qng{mI(r$0bPEBiXbK zWJL|ZnZw5m5H3hL^vI&;eQGKx1g|8Asv-FJ!#mRXP5jl{l{>VBznC%xp~b!_g{^5@ zIBhHcMWpT>*EF`*K0I_F9LiuV9wW(}tHcE}>@wx;H-p8)O@~SktXhhqTB~~U zN~V$HNqc%6a3`{cob6h5sPUs0w+|%a&Y0#U#LN5F_Z9Cf%N)7lW)!hHctQx66B(P` zBNf1U_$qKt+^`H9V)#pm>Vb;_g|F1IB$MsCq|63K7b+zcMuY@aeZck$0!K`c8spj< zJdm8s&;?C><&5X=m`J`~I=I}6s7ItOiU-O8 zCAd0(S32N?Z~b51kRY{7P1au^5n~cz>&`vn<*TiP^T&EHFFmR$1C<<=sj+*AyX_nQIX7hNt`a(cCf~*BG>om#j$tUN zlv%REEFf+I`@*Y=l3gvC1jsI)Ks_ARuL`2sillnwfDu{=8qIOri2FoNNIw%%BnJB( zgJx#cLXNTS*rp_u+!ATYR>DC}*9`Zd7u7nfa-tHV;AbUSoGX_=BbZw=SWr@>-UNaW zpU62KH1e?6pYVM7`%`y4FG%7&dvZZh=pzV4B>Sh|T?{8d)59gZ_f5CYnscP6;BRx! z(IMKl;v0WyVy%4=gjtiCa#n730SxcN-NDNB1X_qSWN(KJT)G&b^L~W~hHE$aE-U>% zov2GCx#n`(zeJga0oH11TB%>RaP<#rf?K0}NBa6i@9SUV;%X#=HnlO{j@5%OkdLsX z>^@zi^H8^g{i=ss_C*lvF8`1;?%@)$S}yXuxG%e)LBW(uHW4JW?Y8v9x^Zr^d24eT z_Me9*DPS{za4vXt@LWd-3OlK27(IGt8~RkC`p3j#qW6u_qYH7(+@-T$;Tb^`wqfIp*bR2W@A2YD-?W@R*XjP z!=|!f&9Dw$S(N_`h5nbv)4(0@)r8bQrh_eZAO%>4DmSfrniLkVD^r z)aBFowBg%_E8HWe${f6Wh)~5J*_-K&&suS8#T_-r3aww2>vqmH&{sQkeyv30XB?V> z(_%@8#Wea+rwXY-G3))bjV!m?THBzFdpBg&Es?Eu(R6_cYJQP2xhTfduUCoh_8rN? zp+KPO31zMA5)4~$kNB6~RF2YW5+}@o+>5o{Foqu6fOI*6B`=y2_pqV3Hdsw-*WNS_ zf*)qrR9Gr0COp_|Ba>Qz$MA!^Opai4@W?#(?`EL=9n8 z950SU?I2G-;j%ix(vp~KbySwK+vE9$R2|On-;Rqk;-akFaVz0>`d;LuwLmWCQ$K~+ltD&6M+ox|ZMKgyh+8XeO`ck-tAN8kxICZ`APD^ga!~v< z)sG8(RwCUHOXoVc642WQ#~pAG0aytI=4WDc*05G650aMx*fK?>2FSoE|K5q!0UP(a z_fox92uJ74??>_R;kWDne6~kVV;ulEWNS{nFW)>apwE=aF$3OBZl zlFbx1@ppB`73`Jn0#mWm3ng%lnk$!+#@!EDnEBZ?Et8(puC@03P(FSTXLa1wp>5j4(nH>4*JkISI0(LmN_g09 zXvKl17{OH7G#YZ9B(~SZ*f@&VEn1XBMQNc`GohI#Xs4v!6!<^pg=YT)72rJ=+of&V>poUHv zGp)#;HT?|X5ZKwb9V*?NmH4v#twUhm$~qPsiIdIJq$u+$-B2V@1l_q!;BYxZ?`1dI zpHXV@nEvnhG&ZOHE?~%02u zn0X*0@ItpYSz1e$(obi*v*UsFa3A19*MtNj+wKOFxy+dF)4OBk?r8i3LR#W#8h#}& zHCPaZcpFX05BPpkRJw!hf6oMAqe0%_O@O;x>EtdsxR-*@zh~b3(tqs=()s|3BOl>9 zr)WVq;m_(L`GAz0a|`Ptp3t5H348;hn~Jw=y6zva7u_FVGkg`O`60e0G_p3!YNa~Bke0G)e2ejpY%OfyjNq`SwS5MAX8OF-8vD(5Kys5P z!(Za(oVYnHy&GL*9zBLn&#BBTiWAViRL?;oD_AD&}f3%WnBcQ$Gb?{Bv@ep0{ai01^nBzhjgpXNiq&_ zTIp0c>E!?J5T?))C`=t`yz7EfQY1y{cl4*oTQdJ$I7({2btUZ8#W}RfG@YVLHrqoh z(o>2UZ)VwR=}pt1WU2{YW&g4YRcd$R*M#X5Ua;Pi@C7fL*C8;^yvcSuq*6e9}K%8uS_FR)8B_WR_dgV=Ua^V2QK`;n$9N0FA6J2 zJsD*a70r8(abtTL`N(5@2@&&?#SC!1crV#_8)&WKtS@#%kf}F$01V`pRuOc*JLJ!M z5DOJ}K}dPCy#1T9G|U62b5RjI-YE08p&)mMh< zzbw5F0CIaEZ*Ya>q5!N~dGKmv=uQj9RFjOMLSq`k-_*Lln{0F%YHm0LPf~fe0 z_he1$%k(aT15g+#$NBldvq?4(Hz*R1L9so=xrh=I66ZWm*u^~05whZC_2oeQF5_vD z(sY8z!p{Q&z3SDkU|6|YzPoLbV8YzLd(TDX4@>XYg*@N!`|Zo`M`T=wGGbiY^69sa zHIg@yHwUCZV^-`im=wjMUCSmu9!*Vezy!rAOv3_=WXAg&m%OzRO`)6ts1SyEg4rst zlG(wN)3O^1R(W{ zL{T;aNb%wf>34NHL4>0HO&74cqo%XTG(WE5fmS8Ai5hsnasj-sMs_38x?r)J4PuA2 zbtiN{ufc+xEqk6mi9%G&ysdn74nU-E3PS3F+Y==A?0?5M`{;MlKsA2daS+J^uOIcs zhYE97gl(#Stv*j=R(9Iu>%B;m2 zBq6UJFM20?0izWj-jC@{@*L3%4>$}em;lcf|52i_rctWO81S&aBE7y(Ka_atUF(}! z`Ff?zoDXlqX=)8leoB0(Dn5$MKH;-ZK&JP`2!hDGets56$T7sy*gU({G+C$@>76pU zMeiC0Kmqb~5Q+Z-L`T^7c@o*_7|X7P=9RDsk7#Jl z5w~N#@=B)h{?wP=AQdwBi!IIQ$)3>fgwDf27X$FL@RBmR!wCU9Xj{MHA%GMU;&gEk zYSxwkvrT9Xs({m84zxT1fVv}NaV5z&7A~-+iX)1+ zZ*zUSKl8-FJHwW&aY^6;&pgyOcoE;hVTfKrPBn+4Kz+nt`F5_pFp9=`y}@fFiclmLPNZFVY)~g+noq}(0Y+v`qn?51wMCZXXCy1}z}o;D z^n5t2xHT}R6Wlc6%AQ{fIb6f7g!69I386ejR6YrJ-$xb*W@$( zxHj9+T~jC9PxdK_-U~#7BG;g+Cok}NR*rXxKdDMD^2hEYjm>4#?c_1)lZ+IH|W z!#!D^HO8f%f{E9otXT~fj|obzsms2-;>tS`B}*tv2r200%Me^Y`K(O~2Gkr#6~#@| zwl-xwB9%%)tioLc5sbV+sx6S!MVSFR`xk-ew0iN17}F20tBN%Km%Vgbh=ON>T+1t< z4{qf*0o~nxOh%ZeR;O*E-j}ImN5{B~0b)7F+u%ZI`pHSVGyb1d(ce(%^lo~T!;dZo zEKik@&BKh}!+RY8(AuglI&{odnnvU=;C8F#TTMuOncJ?<|CDn6HSx;pL<{Pk8SbR7 z@$<9ymbRFKdN@C5HHWp<(#rr_(Sgv}9?K;?$e>a~)uhp0jEjZHb)+fM5Smj*PkV@- zr`+SC*yYF1jPoXqaL*rnL9XLRJm<%1N%e(DG+2xHW(bF|w1?$@P55~(|CYDL;ePXY zC7hztfqfvr|Lg4QL2N-YNo|%z>LgO`-N6^#NbClu_mK>@CbIjOFv=R^Q)Rn)qx$uS zYzplMrY|B1)_7?lc}0#*E503#c&(1i&;{g?y|{0#zN|UAQYTJOjjdr3r+uO(Q1IwN z7@w3j{`IDzfj3L63Wj#--1{7&@Ev)(m}&JN67}^mkb?fX)uv|H3g1f>FTuHEV=Zg{ zfvKv@r<`Anb|yXLRxZ3S5RSwI(G0*#%#eNSA@ZLF=OgZp#{UmT{acLF65)2{94vWl zz)_b%=j^*z839Z23_3>hPt*x>p{D@Ja%@j`nB}E8R&s-p-q310P|3c} zg(l9@fV&($dFhdT=5{ACT!?7d2Z+?NWv=7}gApb|_@!y+44`;6ZkNmz}jbbRM3&kDae;;+*V7Aoyq*GlGTSNY)1Mqx1{&7f&Q%Mtq$t9vnw|fWLNRfD8=SuJ+%aY!zX=1Kzkg4XGZYoDKNS!Jgl?c0)iw!oZ9&Ck}z z7_EpZ2=)CJk+N~kypYD0^*T^ehr*m;h6R+P=rgT1Lz+Ix|4px_ZZ0z+{dk6qI@d_P z_YkUJ47WG`bnB9{HonP)hR2Z-#gopz-#)a84ke+t1k^A;P?SD->gznbzLLE1T;#zJ=)6ndlq6F0A zt5(djrnwnV^-xWqocRK|WQkwboUxqwG<7>dIz7EW(;s>s^5+3VL2~2%WjU+CggnZ% z9`2ikW5Q~6Aq{C+1E;lN@|Ynu9Fl5h!NvWV(`d%dMcIOHX21iH;J$&}O$mIo!rj?1 zn~1NR_4g`L9kk=cVqDe&0OXQ`y8g~hB$jrXvjeSzWNCqL56-D*z`|XTdDrf$``zb*1FyT*uX3(ZR*?O~QLu6j%fJ)fp zn9oJeY#XNBe`WSF5dG@fy*LvS^Ym^!OwEeYA-a{$%0soZQQsix{p;w-B5BKeao}b= z1p2~o6!b!AkILW`6Sttv&*nb;)9^nUO=Mljp5#y#NC;dMG~aF>467=4_i-tJTu3=Tofng2gpuJ zpw0*9hOb}dHawh-Hp(NQL18pf%QA7t4NByO8?_-a89-sk6jxi4eeox_EWGzx?%nr|=WRfG0fp)R#O?Co+$)fk+sOFniA3(i_wGG-#{9_uSN~#v+ zW~SOPpu%vXoc9DMA4@UmVEhB!yKL3=-@cdf?jnvYlFIJ+%@q=XhUBjduuG#TpXuTa zfLhU7*wE0|5V{o*fO<=HxG9{cZ^|HaKIlG$B~c443ty?NFHlpyd8MP~e#sVtR$=QZ zap>>{4m;TH^S`m!{v{0$jcH@d;ZAcS35i<`Q- z`kshyzs;~PwkPowXj{QJa#>9mY9%Uk;Ijd2!t+@YxxW_ntng{OmUlvKbt+$$-tVY) z@KUeu##+M$M8fNl-IACtJ{an{Mp|%KqBSHR9C=F#8-~B^zAerfFRw}TqC&HeG~umW zl~wOl@6od+l<PJkKdoafDucE54~gf6e!&406!=5t!k zPzZI$&7;Z>Ss(rYrTgDPd*{RxA+8P2K3`G% zP1sk!M+*P@nd5~qR+)1b3B-p6FyG13QEQi~cZBv_g$1*Mv)a&u^<;M(c066^IGO(m zyuoUI*29Y10?)%1)Zxlf_`%%YBoi3_tuT6TdZ94!G}JWZszOD$L73k&+0$_!Iza9O zl7_nRM5qpQ7A!OpAoUaSdqhWIqtq+H7}e?M3uuZ^gXT{&>8y$-I+t9Pl^J~8_*_3V zEny`PcqX}ubw1V75QO`?d<$R8Te6GvHro$;l`uWqel*^blyj&fO=O$27kxC7+s~)y zD4~MWJ7-vI1;p2z{bIt1?E8?$kKQ~@YHEhZ5%Of?nqt_mggTBihjWlMHBd1>XZgMg zBplgACIx_y*j9y@So)}5wr0Vgz}Uu_EV!Hz&P5d-l}0fUanr-^Jwo^k9RHFYR18zx z@Sd|tH71xVF%Qw%btD{m31$|JY&j?5dG=^EczVED8yvSpl!s$&K2-i)wJj?PVlVmZ zqld|7{PU!)owV{tYriaTX<&4<4au294L`d1{v2t`H;CTm6jt%K)rxvf&wBkk z@G!wdjhk%nDlE7bu2d6v7(uYCrUJPijd_<_B3^!|d?;jU{V#4P%?orEdVlk!?TbLa zS`XC_&l5c)@Og-P$%A=oxNV2*10(^~)tRb;a!y5*{?flJ#uJ(eT@5+Maq5<53NC#zk=a$>{W?+O0@YeXn_UIsN}^A z$tn$Y^rz0?dNM=~fY|W7n&yjp?LS2>S%A9a4%}LwoT{YW79?A<}D9b zFV#D60T^C%wXWpqapg=^eU)3rFw1rcCRyIgpJJr)lslyfSv}@MVs~Uc!+O$gk&o1W zFn7{P8*>hCk0DL@!MRtM*ePb20~ZZz4ksHTbn!oQZcT&Z`az2I&3?5l5Qh(&+YDVZ$NN3|wLnyBr+-Ej?y`fN^P zuTS?3Uiw-jMcHW#J{#9pfkN%m8XZ$xH^wE;eb&fgUbEG3wK+KxxeNU^T?rbdX}mXe zU7QXV%~$yW>Rgru6ke&Accq?zjl$+e+0*6aD*REEy#-iR+txR}*mQ4@25|$M5Rfhb zr9rx-yGuHyySoLXyGyzyL`p(RKm-ISDUtp!&OPV8_x`_g@Atht&)RD;*IZ-#M$9qB zTrB2p7u>`gZ4iHkKVBelnfa<_c$M3&ZHQUPe9jcD+?0j4t=wD~>m~1E{gYfkw{|75 zuIXxW64#wSG|k~0C$X@(CLEz!<#w{ArDqwAH*F@2{9A6R?zQ5}0HPkq0jV9N?Y%7o z9U?txe0(La{EawrX@yQsRV2{=jk8<8vo%zLy)TO|yuJU z*(HU2)-PufPSVpf%~_p zfz`Cm+Uo2xCzcCds)9Dp@1OYL*$INLq*;rbw|W*?CldoA^URN+zqOSXLkUmEA3vSG zF2hGJsY+4L*P1c1CNd!a(z!*0vVx`it~(Ty$9>~rVOwBL&7=sRt~V^DZpKYUcv!xx3t z8;vqB=I{;OXTLIhUaT1ZW>hqM=aI<@!Lzfh-y*S&6{^uT__65_&fw$4QrwwUVKW+Mp4646B#WVI0JR267f zBFp!+U|tX^XQ%&xl{A`d$ez;aH0z~*43((u#PF9KH}bDpI?otVewd-MK__zssX9p~ zsRw4F^a5CE{d$8)Vn?fO@1C9P;O3I@<40vChtwoE;-^}nGtqxi#Qiaw36;}}+tl}y zaM$q(IFra&Kh)i6pvdYYK(4#eeenXtZ{FWwMZOFM~CBONjUg`yYmUa0% zu}EU7nD6Wc;vQKQEh@p)20a(yIE35nDl!it&#j-8LK4v~SevEjD?OA51d}VW!_f&| zXuWiU%Py)hEQXH1v3sRF2fou^G`kibfSr?>X{_-3#R`8n-5{qnYIHkSmp#)J`uOi; zVuGZ!5g$YvL~`}eonxsJ6s`p|iV~zZL2uU z{=!Df#IwkES4w3zbElC{8#7`JU);o!#S1RCO$=lKrR=65Y3tfmpq>dm7M z!N>XKbBsbr?-UKDyn47|#p7EylLBX?N`E1R2s6q}S)pBO~%Y0JR8%4XH_|hbk584sBavRq;oW&S2}xFr7%r8A)Wy= zz2QeU+$>2hve|>Y(Y}=M_~U2&esC>K9Sg1MajmBs(|{-O(1MtiI_hZe8$(f##l~6t zE~+a8;)G_?i#|MyqSTLQYrg%@ON7pg7J4v^gyBJDrdlWov&xk}MMg_9P0kv&O!ClL zjeQ2ZJx`^75m{W_3BOIVUFl;V{ZYmylKiPFmD+& zJf%@$LY3LqeY!%5CI*4FP`Akqxe443YSYw zVMA37KXtPFJ>nRpI|-TIIaqtBWq7QN!DNB;#cxKI&YsS>8AMMq(zD5JeCE{$K0Sl= z#}-Qq!{;Q&&lk9S>^w*+Hu4NF5j%$ie+*$_W$|PV^SxQ5Ek6qQ+-CC;uhe(Jx{LkF z%t~zCb8)q4qxZ9d8&8Av_TXH{G(m3N0jk^?76;R6z_MDJ8HxKzmXlS+Mc&p;xgC9L z!X{IPygWLQ%?tBOT#Gu$r`OM6Y?O3|`*({P4;cIed2Ga&2K2H_`8cy%K3wQ#p5=7c zY}vF_DNC#vhGPVRUmGPBI${jW;=;3cbIUW=2ImEt5(g;Hd)6%GuErLi)4J*yl3G`8 z^63-oe)`Nx_3i_|@zL>zaW)XN+q7nX z&dQ8z|JnEN&fA-TDPFfp5mZp;zDDXG+Gy3t64h&mU zUtr{PuuisF*{;WtQ)#bVstXkJ=0yBToAS|u#sc%VB4|T39yIkjK)O~V?yjW!=f8Fl z`bG0Xf?Q*FlBo7OW#3}!7rWaRzUfpRik%OCQy+`|j8<6pPP9+o3X3zm zNn?C!-x_b`?aD`Q`TZLEARTOK+Ys@@sI%cwhJop9>JGogXKt_NvT%b`RJL}I`oAE% zR#ZJ_UYO?{$Lg1Obaxd>{2QKStMjb#XeWTCjObg^oCmM1bml{7WwR0Al+g&kv^PFc%$c7nRyYG+TQ$t=Y$AW-?8}iqVSn4Mj2mp zwYLnn5i6%{MQGJ;@v4lhZtk^Blr@bAjCAb@83w|9rtZJ1Gm6V^9u;w=VSS}YY+2rEhnnZHhP;WjW zq8hVtj_HlYu{TtJUpKowTQM%V-uM+3(I?KG&hNY-5&#oV_M8!%)~# zTY52Htx@f%FNqqAa%$BpI(p;vf$}&YH(}v(wpE0+x?t=z!R@$!c8SarQ`}*hnB-;m zH$tp}wD>iBJ^}fB?*q$+R1c^6of=h~-mAQ~{WTRGGx(Zi+h`SmNGUCu_=}ThChZ8# z$h^>JD|L+<29>-y{I5>nSLb@K{eoKf+$}4NN#nkHsu}STsR=)R)x@SGg*g88p;>LX z>_=%-qPG1oL6R}G!fs`Y-VTiOjJ?)o(oY-tWRE)Pf9KAm$&+JexoEmlvG6(P(ri`F zNN-~e>h#K0DrifS-niLH-X-a8Xe)`NucQ4IX8TePAK9N-t=M$YG}B40o5^9^bxbL} zvvy=+p)@%$f5GU)|NfzrH2-3@a>7tC!zTBzCALXq7fZ&1+Lbf?3Xv5dx{{bf*5f(_ z(NDNC*Dytu#l08D66e6ngcj&am!(B_*J>YPGF^x%`S>r#kb1#Yq%S(CFGY1Hu!(i@ zXd-Qf=XU)2QY=pV@o{YhXlZ!m))}JoJb3gO>Z*Mhd7gx09pdR08C))&JVn7lum6G@ zD(Y{`rQ;RHn3l3}_|r1&Eb1ozd8d1xXGC9;sDiK7lb>~xmeu4~ITjC!(B=)_EAFq^ zRPH~)k&a70WfClViR#K<){$uC{i)S8FfzA1eG>2Kg0QD7n|G+a*iT8`ER&yx6 zs5SL>RmKw%R(8X>BLm5MHB5)OSj5o@#iA>m(hL@e;TZNeB40O^Zy(sA!iT2ox9OK)mZ?9^ChT^M;#T4hHY)Pl zZxf(!5fBLf>0TXDf`@s1dzvoG*Ts)JY|D$LdtyAwg`=ty$cI_c@`)XK@N~?ZDE_8c z@SS@e?Lh9q<(w#f{ZGV7g)3BhrNn-9yMzV!gN7YkNqNxSocO=ikC z#2;{=g3YH=t%II?QT2v9)Gwl()9|B~bNO%@!VdRvh>U5NUbt$<{cd61oNMNS2 zHpzaNa(33Lq!f>8@!nD~dH#fi^ZC=6rVOG}IXsdbrm=3B>L@HDEBaRIUmFQJ86;8m zLcuz$n^URj7)*zN6I9 z#ms;`sprP?G==uC-D~={cDdN=vje(BTHuzfbFQe1B}%Y!UOCB9KQoo;nbJ55hB0L4 z_Q%eVW1{|&Z7`E-J1xcr`#CnN$d$+1sJxcw%s5U^MkHUpvQ1(<;?D4gR=gZz-k=`Y2(0c_ ze{3hF2NOM`w`CDVd1YbL(~qpj6Mma&oA{c(5+;MVxXC~95R@Ma)2kDK-~1YbnI)Tj z(Fl0dT3@|DHxu#&r4;%T1sZ>8W>2U`Q2d}vRpyA9(Hx^5*CX|TdUPkeQK>uyr()m;+((bi`7;F);w6soHGK5fnzqe*`GVwHT8 zk}-q?f4HAU!VfQAw2Y^{u7#zB8(JEcVPBy5%ZNf%sJc3h*a%?gnB+0c3NJlY4aC07 zSjy#-X<(&|hqfv$V&%W7IquBxWNac+A>wTKB?k%5^NVh8UaKq#Ke`Oo z-C0W#|GZxoQ@Sss-TmFtv%CEdF{$9m_G4>KSevIhk8sU11ED4s2j|y5v0qg>zfY@2A>QST#yUJTMt)0K(yi2rfyTPD z;bGJ@k|tXws3DN*DynjF$+-3!k=JwYj6Y9ClFNMTTxS3o6;En^YN`JwyU;o-?s?sX z2Qks;a^##i9c;bY(pt zGSS!9x_RNV$}>&-rj5E$%-8KORfvhZAgLUOXzkdW@V1c_aZ|192Knrvr3vNwiBdBX zURSK=MSgu@jX(uTRbl7J=cERbtx}?H!jIWdw#!s$rvq=ZS!Fl(Y3?T~ln1tA$Y&8$ z1Cw6~F!jQi^XHkG0V&Qz{IV|^Tw*_bKIutn0FWrCb z8j6xW@bRjMCA(7lY!j1NoRrNIMGNIcF&byhfA_$h@G)NjX}11oqm5~Lj6#dRr{15d z+-xu9>8(%azqM=CwTiWAkcV~Jhia$3N)VzkHn6@dw3hM~#8-X4wHw@nA>S}qea_B6g;p?R$Gx%?q9M1>I8kYInpU77ji zBfRBPaR{=-ot3ICr8kTL)k1NQQmQ0l7-8%BVG=^cXK57WR3}Oyb(8@aj83eh^WX1` zx3tTjLPH(3-km;X`oS;vfnj%`Zvf|b&i2bKv(I@Hr z=H^NgTshN~DJYKmd?>hX{DF!(%%^f;SfOUmf43`>dAPVk+JeLH+d;;dB4)g!k-^ODP4S(wMdT)o&($ z2)!{Toikp;%|F!MYtnfeEhV?lpk99X_*IKQ-V=_{WF(oMKiU{se2(OK z$I5MjG@zKEq<`=LJ1#mtL_4}>AzHVnDn`C2D223}NMxv2hiS@>;;^YUY$j_I^#Wd| z=hSt=OT4loON^3|ACIK+(O%<(NnJHz+1q7d{bTT1{kPFb*GVps&Q=K(;4!afO++q*fxkK!k&4Pig@MK5K3L=L6LF?#p(+p7 zTgl9wHdsS(UGa%3lH|bTo5aRSroHaPsrlc-fi+Fp*~qrr;3mCW4>0(@ZW4aUB90c= zt74A+^tP`MEw1(Zd_j-acD&=`*7qG;`|+`>r@JxKgm=y=vd;pKqu(a?F}`w12=F+O zE3#DM`aO|iQ%=Fe*n78vQ8g>vTxh_z*-(=(cpa{tXh;e5oj@_p>%U@hAiXGu8r;eK zNFgeAoM?S7%=PHhX}e^1*Apey(w=LKJ-UggUXO$@-~16HVl4O$nrmv<8%?s*(ac0t z^Pds#uwsw8Liof>wnDEe)tr)gmb!4%6XQ$w8?Na9xIKZ9iti;0$Ub8}@vczQ%zdpH;zD;B$CX8OSo}b55%fUCXHx3(kd>#jPpo z??25)cZ^~FhUvzMWOdN)-GTA!aKbtoJ4KT+G*s*|kTc@P=Z6^WRd&aTxF0-tDq(ZO zDP}Jv^(K!mT-SYPU0>_dm~Y1&o;1b3t7z}53sf*}#U{Y>$WNJlROy_8U{)qMy^B0=Ov%RQ=w{LWDmJ9Th9= zYDkrLkonyn*|s(W{(SnHfb4YrP^Dey%l^*CgTtgk#bG)PBEQTSf82G+_w<+177uMVmVm#3Gw2-`B4*>i&s>hBr&pT4HMyCO6WM&8Q^ zq)99<;t**jbQG1D}xFIgT1Gh#0?PGx6Ut_%~UbZb5; z_Ao{MwC5Eb72YOsQR~J0ktXf)5ozZnyHeb$Q-7*muSp2abeC)0?Q(p z@m=Va+Q%2KbzE+p9*PIMG;i3ht5w{1BK8%C_Xms;C1mv4qz!&R1Tz9mi}n$>xUUe;&yZJJLTxR zkeql?QM!=j@7S-Z2WWCe@i@*KJXjpzlSq8qy3rL+e4pCMaBS(=YRq=x2)t)4$6K41 zcQWdyZiApdWJvmfcx?5_8694?J$!|!C>>>FrTkNrkhXt=BfYkLWqXw?e_>U<-pSKy zFO$u>NA6`1>?`4+0QS`ntm9H@^HO!zJ3AhF`USr1khGagd2DX0wBQBja_a8pEWzBQV1 z|K4wEXQozfMiG^et@+*DJ5f4{MU|F2rcc&r(#V#RfLoDJ}tkeXQEuKV_}I`KP`2|giOs_SNJ83cS`u>F`b z>?a%6P_X3QSswY0te)>?6S2ZIrXeY#H1m?JbH}@kx9Opr+xZMCQ2J7>T|vbulHOGJ z?-mV}5uUt13epx7Epb+&fAy^tD3M}LIKd}26FG9rQ|lHgO610Oj}%e|cNI87x_40v zJZR~k(hU;@1aP6?OqvQa(UH6#Fp7>m7)Zvl@WLImXM1Udp{6-^Lg*vot{z=4r3g*) z$f-0mMKOA+bxS`nru7odpnZJ{@5|w$ z`(>f?eZid}UFC2fKKznt#v|_1%eT@{L8kMQ+4n5;?^-OK1=+Z_zk}^_gu@Pf=?FqE zxg)sS4>5HOHjoG!lKPpo+&#Bm#<8?pI)PeSjjNS;Gp(2Xn(6frTS}qr+)u0-zv&Op(=hU# z)0e+G(rywShBALVUj3%4m&&iqYSYm8f{ea1Q}d&iUBVJx$1;J@0E60xFOMG?>|a(# zPWjymNJ}JBE81?6m05inKbgNZeXMg;>+bz)$^hqf#!mL5r^Wm2?5am1N!1A*w!bDy z0A9iTcQ=dUB;K=W{L%Hh17(_O zNj{3~*>Y&0cZF&8;+XG7)1W1*D)sA6`C;)f64EDl{@!D11Wfov31oVP#9Tx)OI9Oq zZCZ7o6soa2`quO&jfq=-)s2t>UQA;ffqw57bmtn-)v6SSqMK=9Ve+1{Zv?}`j|Zb5SEf;2?!wy z>~jWJP6jeCeNo;G2@1Q;chx)m46Wc3IAq{}kkDvMyMmJ88xxuYJpbN#5d zch`FD+ecw&k+PN=m@Pzcojl>`n4%-hIG`wDoy3ScA#8qF{IU{J)D5^w4{Fy|?_`!T64>9n5fH>&fk5PSC9t|~d9L|Vlv;Wuh;pDr%FoTJ0yMANU8 z56^JCOEJGyekkzMuTjLC>63*Qnz=8A1>zoVh2r%1C~ z>ks{K{8S!iV=GCZljBPJ7G+zFIw)e$pur`5?zfe9D*p;S?=;ev$}C&5a;XvOJfqZL z<<6+G?_6fXGh{y49C4i!8whWL1Gjl{FSanVVujo1U}6o^B&Dd((%uVO(^Jghc`acA zWsR!VJ1l|x?UaWys3XeuZ2@GwFP?}yfPbT8p?PMCIfwWXTz*qK;#(Birx7Tz3i*8^ z-2IW&H6{1Kwv6)d=rJSxUYe?cQdCq!XU=O~>i|TkK65j1hYripPWHM|`gEg59BQum z(%AC3n0~1|`f6?!zh8Px1%aWx!?%J@WPUNu1sr^@@msj@ey=_|!%7S^R7dM;^UEXQB~8*`-_oMj zlfra6sO$s3==_EYzO2&yuvo$nUntuZIzt^n`QetX>TI9su*B55!|Yh2)DTHcFIp3Z z{bprrqv7SuTenHG;}3Przr&LKsM^OP4RRmRynAOA5&E6ylb`D}%2@4pIN}yvj^4;< zK^sa5->PD@-AtFyf~1afTl=j%#atvBiNQzyP$50kf(?`E4-}whfIrdT(MXQ~s3YQm zE^|u{02%SXB?24)NRLMas5$$FNdY7@Dn!F0Dmc}49wGyfR|5me>6wA<8UWadh6BYl zRKh&~1yDkNdshsH03mQTppYH{1m@xb2%G>AkPGQ00iXaL5=b+b0?4m{1BG!gpePOz zK!I~YA#f}Z1K1x2(vAb^#?heVAtC{tAiX@|>$}_)sH-6XYHO%Ua{(-%q=qUTK!5^eH3UF;4H6I!;tGsM01)9wP%+@{ zP85y?;y?iV?&<#3hXnQkKq}a`RtW&YRR}=vAJ?g10}uca0!M-c0z9a}a4IMO0hI-% z(!9SJ5q^6oR)_%D&|cq}5<&n`I2B(pgvv4(Le&ERR4@Rbft~@cA%ReUj0C(PKLPvz zXnTwSkUkt4fWXi10tpa+Dq1QfaJ&O}fLsv(JkSON;6V%rK$$fl0QBw-7k+mq$;AYn z0MGzof_pktd=P~3 z)(`><|B@RWlo=B|{%0;I#Q$Ztdwc2L+Y6jCG@7=cUt;~!FC{>|+|!}aH2tTo?q&EN zy&xeP{};W~{*7Kx{|0X@NE1vAP%5ZD?As_(~@ca0I2%y0q-(zM2v7{O{$s0{*kl zf*ZE~KkemcftQ=v%h@W{J+R2>VXU9L0m*I2NMWuVgfWhxQJkl z!hHwQ+Q0MvBWH-CpwR)2n4q3XK|P{?$G_*~zw(>hf8leV|EM&v5dK%b0p_>=n1BBz zztK7j{-Mi7P?y4ND4^b^XvqK={=HsN0TntXu%4g;<-7NrKjNvTF@y?c4WS|t2JyT~ zKmbg@T1^_^z9vHfjG+J!n|oiULH~#&0PyS17`zv(=adWq=$|zX6IkOE-~5?V|Ex`r zKpr#NvOu%65yszINaIjX518Y^VrfmXi+r~Js zRt4+c`Z%ywjRR}dxcj=653F;s!I?z`GX!WD`oY#_<-gX&_c8B&+{wtTwze>p`%%s?6*Ffu zCpQq$&(ViN}aIV2YScMl>K5KKn`t~Er- zz>Ee2M&I3;u+f4wD%h?>26YM2h`(gvKu|Oi=u0NN<^4URzqPU)jTgdagYWuW|X0S_3WjH}7ZDAtmP^08u_ z(M^4O!f`8hhWbVAMXh`iaZ6wjL>*4adL&c8Puk8AWz+2tc@oHLzVU&2Ehyh(is+}s3P?|=5 zFb*ZYl6;()ct(0hHu`|boIfkx^F&5ex^2{+=%Dn4);@hdL}2HH+sXXSi{p zu_l(Mn)}Fk5|ZW}RbEy(r%z1KsmThO?HB_>p(A|8k-&O)PA|VJ;y7BZvPTTc&!Y2Z zX%rd$NwxfeEuFjPm;DDY&Yo-GriX#sDmM=|(n{S{BgEo#Xg5rGei{*92e|r?BoZja z;3yEPjSrPJn`6ba5E4adjUIR6#21rue1uEGqLWyf#oKoq6<=^8NGIKx zxP~e-X`rju_3n-?XaLohV;JBjSM3j8I{m$t^*ElX^E|1&$k!o5{q4e_yB*GNO0l-i zNDL(YFQmQ|#1XOA;GSr(R_v`9*o&Eo1GQ>~fhdQgx785_LwR#fZ;I=M3%0d*br}&W zFI9YaWJ>41#SD!LqNo8y@~;S0uPZG_p^Cx9HSVZkOOpB58HE||_`gWsvBP3><=<1F|#{9TK5l zk>=f3jA@~^(Jj{mL?t>@9#L7~2R zpP$TQah5KSX64PvnUYC1`$`OaOSoOA+y0A_v8aJ+N>62_jSpc||5}KCk&$y>63sW$ zDNkOFN-hsw!s3cRObbR1VT= z<4N5;Dz807<^2}svtY%F(tsnh`=YDAJmmcrZ`UOiF(XBC1)LR6YX2Ks)M_!KkVb7f|M-R=Wt*VthLH2Adr-ITmO%d1>fRng z8B_FKc<~sEucak(Uhdh%L22^gIx(k`UcpP}hZQGFOu;%LrR^ge7HEg#Cf-&9B3I$Jp)|#euQuY0Gp@=7I2eHsetcNbpwYTYJ{Mp% zcG5@bq#&5gF8YFVM{_(Tja|NnilV&kxG(={r&>?#%W?x_K}F>|Y>LkhV6zo(r>mhE z?A4_)&gg?hi0hM*9qO^)*ZsVLI?TzRN2BI))Mkr6tMGG_-BGrEs>A8|J;k+At09`P z#Zm2w8$s^y*NQ0z$78F{b$FOBW30)boz+)dGCzp?OyBs)khjYX>MJEI7Bvd!DupLI zc$9URqwJmxAQ&Lyoc9@dZDg^~Ek_g#T_1SQE(x*@N49OK_n!GUl>R8>VD5T_qRw8W zJ%}SO97*j+)|>J`^h6;fq`G-ckM5KLJ+rFC2QPayD6HVt(VM)lI{x^FA{gi|&rXdN8{^En0 z;C(ZDGxkceee+xHi@E;2JkA*~Po0W_D>Cq51rFE-A2id%@43JTpJ|;1tqclWOTir< zhCL4gd~Z3}Jxv~Qm@7_xI5lxX1j`~gG=Q|I3#F3FKC!mj4GM2+Wh1W6_< zbV#GHa+GOYA6=i4v%JJ1B=-ycPH*zwYwcO)H&*f#Jd)RMw+MfUc+MpSB3d3PqaqvT zQy%|XRbi(?mm-{MG2l;5+9AzXJLK>uahHt}6MW&tb-T%z+cWljDt%Mc;P>vv3YUg` z!q8J!!I~+P*`i%jhDue$3_;SajPeHq4!rV9Jhu=c;+PdH3Q{kss%+l|m3}(PK^iZ3 z{=3V=lF!<-T?F7R8zS_y_=~(uL1x5f25sia4+z9oR|m6ErtEiA4X5}&U+*>TQ%n*< znTA@A8lU>n08wC>gnLY{o!7)y*-67p46DpP8GhI-A)5lfbRSBvAv+VSd;xv4M z)tfNQ9o(5646*g!1H4c6RlYeZB9wXv)rYP1<(MDzanhj=X zUrpOEDL=3KIYl96J%3uandeaus@jJPCy}LhyzcF14;up2A1k_T5TWYQy74iDy)6n< zm#i>2d86g^SpZkp|6K$_-rR3=1r>rq)8;;=IRwAw9_|ha5-2v&da)-$5^k6VsCHg> zrAm>vjHnvWCTjcL2c0k4RX@D&iLTJ+bU!=&((HZrHQppxn|y$ngnZD17YwG9U}d#`=gsG{{k`9m;fBwRb(w^|>0 zLaC>$-0kb})%@u^=7eKKIg)gFp?PPUe3SiLarv?#yONUYVy-W%Jm0p?&hQDjb$+Uy z6B$yOHpjM?#LKbh=X5pw9R`GEo67YWNob7M36{1iXfHdDlpW*8RCLq5alTq3Y-#3& z#`L*hQ3^U9-FoQsa^H5FwaZBGM*EdISaRi}DurMob%lziM(_N3@%3vos|L?@VgC1d zCm8ZF-SPW?a&8m6xfq{NQaV{d5wWqo493PT#pU+_vk^OJ-<$$=ykcNIt}@|-UM*(_ zp~633p2$d8<&xc=`R#`gDI-DSQ)v>(T4DXKZ@1>q9N)KGC_1+rbHmKMs_Ynx#px1l zk1iC6H{vxLAZ`fXurg1PP^03jD0r5+Ih)z+tlN+l%gs@Qm`U^We5(Yx`5I^qY4H=of?W6M;q%vsU$F))%R4zkX&rJfalSi%^4N z1=II!b?f$7dcpPTlva@y)Me_X&pOrvp;+YUgsbxJ3U%zD~#r4J|9Vq ztHiLG)*j}^Gi10rt~Jp%@$l1dE=Dd<#JoM;QV1?@3X;+hddY}$rYlFwltJ_9)L4ti zZR&-RrJ#7IPY-9cz|4L)o#JB0n@r7Rx?qRr1?7RI_0NxwE$}@gFkU+eHGk<$C2M~CgegAYw!MKaSCt)l<@$oEmDGkf^?PioANMU5vob%#sz z%&gTpNQc2DxoWHR_^PF)+J0{RyT;yr-rpZJnp4KpJ;(KdKMTp6xou$$43N97 z{8o-^f4tDFCM>qHJ#oZn zk@xG``oLk&H+1ZCLZMucTrsU*h#`d`qc>w4=J*v=Y-HTeBEKj>e1Q`uN{?%PRdqM2 z4CBDf2(rxe$iW)3UcslX%B;??38(TT-u%jtcgqVz{xeM6=;qBR^8-aR3X8e^CTVDT zV_zv?Gd14TJR0>(A)`Gn@b|%aMD1L}jgGuuDh4VoVnE3yg<+MLy{HF7__2P%P z3kFfqnVA!Tkl^8AX896ItB-Tx;IWR*SCIW}MDF2LhQtR62b61p0HCP=|KC~wi%?DU zzmxN;@(kJeOIfiWX%2tc0BNh-(1c7jSJ)p&WvNpqotV@ux*u=B5am1?AYK@N&oq*( z{wFG>jtz&fqG`Y8Gn50sWm+jNf0%^9az6*ghuDI`WWa9|x|o^hr@a=(1b*&vX>M=C zB%$UV?+14(q9@p%q*ZZ`(mcX@FOD3^Ik#}`ao)VR*fr2JgW7VYtga!j^hgF z(aCwEkBURM{$==?KE0@V%mJ&h;0$r3Kym#8zA>e$R20bsQoBW6)^eBuWp zV&X8$Qxqh8{=$t*0~yqcDfs@W=uv5A+(OS4Jc(%G^cGkWr62@@Z&xMlYYTY-bRi z?zjUr)eVydVdU;z>E{%=^vkpgBC))eva@Gzfo}HT?M@*}m$}c+u^_>U!qnqYl|a+O z|I+2x7R4rdk%%i0px|L^qfX>jQ3HFluc_;%h0)0Rm+ki)8>8#It6>yJUZuge6E%G% zjusuCI04+MY0x7$L^@wgle8gO+^DmJ5COY#IsDazz4|Zbf69$+HgO=s#1Ypl8Vz&F zJytRescR30=6PF=Zu_&KaYA*O+BztwADg<`T%`^GEuZ|w{6kT_4_0{UwSgd0jIW=< z$k)Ftz~YC<=XPVZB zCau|oYF6=0*Ut3n$TZwh6{Zuuj9!qlsWi`=_(){(VUU#~?T)#DZ8p@-zrbDC7G&Kjm|N>V~fs*(lo= zA2&T$wP58^rRS_wAZ4A#cdoyFMiWuz=Rl3E{7rt$w}g zRh3UqS%K}EKNbBTmPc<5kADwUS|b7FgXs;G|2#Dd9F0kkKN;9y%c;W0&Du_PWkR!J zED@J1>^TxnXU#_f@B)OtQa{968QqrfsQ;|HrY%}xb{%Jmc8{w;WBjGOu@K)hSiekO zu`=#tLgMw=7W8!5B2Nfs)|ry9N!u?1dOv<{_*u4#&l#2F_ELH-?9PN!XDWNr+z`vFiOA{l zjG~isJv_3ve4+m%7LLmne za4U=hQGm!onG4Ng2u4io1{ohSW8*JC7!+9~PFe%2XV`UY*y;j%`RQaN9U zXEP z+z*xGSdNT|Hk0uuVZGqmFu#{jQ5wm%#zQ(p<;4xVGmQa=I-O3N(bqxc4TM}oI>)0C z9*wZ#Saxha`~Zt$f1Ka!tbEfN%l6Y!oy2kj+o&AAy&=6mhT^oC2GE}Bst z0CS}v6@p-0rA}NlyOuY4kf9R$ycn}}OcEnlI`3!GyZa#d@O8TWd+7KD+9ksxNpLJpCKkG>0xnj$Ld%fwz`16@_moIU(h#zr0Cd|F zvDm83p4d*<6~HtVAo$6tVBbHVEUQ9|;6!%2ZWQwT-WAzz{NrSU<8k|q)@7wCO7*>&>upK2wh--26>)9QcT^2=9uM1XN2E+NxL-eZl4^OwQcVt{rxLolB zP+wR~7jJ2Vii91#8JUB<%_Td0%@l~ilbL|x6?AqzY1}mJtd*L}j@09t&Gf^Tp6E$^ zES1_}G+GpQw}Q?r7z$j+_lTkl3y_~Y!fwWo-1#!oC3q}9MeZ%%zc?8#i&fV*mpds= z0_7omqQk%OmPj}(!PD1g-Rj99G+vB*@XFK2i)0HIO_J z!8C(n8^p?x5xC=}K6*|S|olk%ck$etPuM0pgsvo50e=Mm`#i1!fb zeRS+G6xTYRI+9pQ(wjpbJtWI_vZM32G^iU7_|iPzn~jkKF`zosW3d&PJyWO5M>Au@ zzp{##=NI0;oyti=+E3=iZ=Yaydi^OvtI=o^h3hwRKeT4WHiv>T3RF zVjHr7Z)!?HOckv6ejn>O^i5?qEr%9D27n>HcP&Y+i*3$l*Fr9UV}yE*3Q>=0n`%NG zTP}84FCR?zV>kH$ZVBp@1Yr}wmoVA6(y~-Md;?}X%Y~Yai715RH?{HCm%q}6W@!1_ zw5ZlJF0E^aBc#4_?p=5;ToR3yyAJCn;m>tXqXXT{aXQv&PvESg`iS!;9g)pm>Z5OYwwl!Gk6|t~s6ORKvB=m)CyE*uXumQ(ss}R-1 zm|l|`O5>q$TVuQkg5l!GV1Huc#jP3$1Hntc^3JXPJhR2s32{FE2AIJ!oAs}g*^fbO zSf9^~iCSPM(WcaJft1B!zM$B-O5t(-Fdbkb8YnN!a^LyLkXUc{wl7^Ia95IYe}9Gy zIRX8q&iQ>?9FVTv30E_u!rOr&ddb?eC*}qy%yP%}31=$+4om;43G|#YQL%?9l=6_* zjSTy+quFXQ&zP= zQjikNE5T5H!{imh%Fvo2h11B;P%|C)N4&@{Se_!~PA+;Rr454_f)0ZB z(Ow>R0SoO~3ukuZqeUek;lCUZvQ=FBTbPCCM!lDdO?vNPQ_;6h^B5y1%_O9W3e!WD zJluJuW5oxjp!Qdw;hWmBn0$F97_Vv-v?h$UpP@q?r3UaAg#&8~&CxwFAp8vu+6w~y zy%wiqo}UzqIj~*%T;js=Z&6(D>8})v5s&Z<`)VnuDIeH)oK_S3sAD!DU)%=)2&NfD zH!>gV#0g7^)Es?*`-)f#VDLrZImi!&$S6R_>)Q9CECq#rV6<+-qY* zc=dHL{Z)OugSXRWdjA8aiN#E-{yz2ioqe9f!Pj^-lbI!yO^P7djRF}hf--lY3m2}$L==A10;vJC1TN8zl|pFNhnPMP+X)6U&k-aw*ZfVzo<<2 zFR^;+U^wd8#fU}1H}h53US2-#M{>?IQrwu+pl5)le6OjPIv+UBa4?cT^Jg7te%iAqF}hjzDlc{hM% zFfZw`yi*e{wdTK3rbRq{{j$&Swpfiz^hFng&G^zGm`mk-@v%-4(d<;D1{UxqyO`Q+ z2YdsJjN+$t2n8MzGbd8QBkQ3u5NRGbSO)44oG*yz9`>n%UbLMfF`)CyH1b4&9&dJ| z33p~1r9R{pI|8L-P#q0w-EQbR8~kwFAmy@L)Z0Av#3zBIT!PEyj~b$mlfh|_q8rI2 z9@$=1vuXUfS+tn1dUg;oO113a9^&m~^5zEN>UQ4~t&b-6DEA|S6Bc~Ya@#KcLgR(v zb{iUoe1QX_8McXmSN2yoKK0Z|id-A26vWWoe|xzN^m(6qNiUdW98|ZyWUX)U*{lem z@kdx5>J<6t2>}wA&+YqI0Bs;R5xY2^R0Wqj=R33RoWAxtH+>C8 zuchqv^518C5Szad`a3h3<`SBS_j>1qoWRUW5oHJsT8!KIR9tRJ_9X!NCwMKD zx?@G=Sx*SI6XLUK@AY4^Pr?-wD+Gl?80*(PG^hJlyf-1`^kpM1%OQ1I=+)%rlaq8SnF1PVxGGJN)lsi-#x%u)($OuI>>u2& zKTe4ZVqext>+v@w{per65scTt^6NDr(`c>5Fh)+R)Fn1i`FH$wsWv3=+v@m>#RAcG z6f{#OF1kpz9XfWpyM#-@(!KCsKeGuIIqgr7WIGW55Nw5 zpzVH&R>HCu7#*n2N*~qU7hgcH0(j=97SB458fwx!b}2iV*O{fv=gt^M1^IPr(=r8F zJe`zq>@FvPs=rZnDQo0jP206^ ztc3mXd68w#%^@gB**4z}*mz8P!`kzq0en>`hc=9Gc6-9$fLZBkR%$Q4EpaJJ64z0d zYV!jFdy>Ua*VOw@G_?Zgxd?MWljgp2Rs$5Yj+$K-=NQvMpAt>CQBitp-`Arj|D(}36jpw0Lw5K%C zX8aUNmgeGJwZ6dm4t-WsvmT=5+tU;vdom56(AW0zD+yM5yk9Y35CuS~azdDAxqnfq zC)4ll^klPZmS29bh=k36u{r(|3lG+-=;X)$==Db%R&Nz_Ujmz>rW{|tFA|7fQF$d6 zG@$(}P6*}M)C3yO=o+7)sx%^!{QvFSk!~F%ED9N4PzG@|vrV_uhtH+jHf;(Mm#{ z{#Fd1YitWNN4V<|s&&|e{zB*2V51`BBD1{tk8@fUBU{>c35foKG&sDoZAc_UNwo(V zZy={|e=8*eXQtfy=imni#AVuUrz^=83VF+B5N%<%LvuKi^Mw%KVOKI7PK%_aIFo6L zb$0Lb91zN4u`&m>>N~l1=i<(}kHNhKmze3TZd;$lnWD7bS)fg?;yf*Fqm2wYt>ajcI5mKX7umsa(@*Ot(w-5ZE^WCRU!-g`^tx`6FV)8 z2$rLyZpxB~wC2XzLcFagoKV%QYUYHf6`#7gVX8;mSCsHormm`Rwm^%{kUh1Xg+dhn zs~(z+eZyggi1^6AsI()sU1Y&o!q#w)57z3q1z?p#@#Fjqs4x$G?}WY#Ry0y$`0rFg zB{3M!4C6vD^-R!$0*sZ4rf~rl;f-c$*F3RXwra^BzdRK_&V?bQD!x&i{s@<#BG-sQ zD8Y#UvHcr9bA3`eT$GAD`i(8Br|zTYflb5DiN?;L806fR(i1T z>NT;MM4MI|d-Z|E()D82i^+-h*0~BgrgP=D`^MGxA1k>Ta|CzqD*#5)6G#P}U^#RW zE`_gNIG_=(6CKrFz0V>TqbeY=mhHveg&FN6-{+1|gGPn^gwKR`$z%y~c8M}05^?;r zH#yejScei<4pgTJ@=zcyVfz(ED zGF&xIsI9H;u>LT=t8D&JIE{GZ_+piF*M|aT=nmVIAk^EG9zJ!;Po~5ggd5AG%{AkJ zeah@Iu*k`QGx6TKT;Nnm83icoW2p6uHP?Y-qFf(3Kg~+Iz)Equ;~#P{7P{vmf;4+q zcNpi#gS<(~?_*SvRFoP-29kOfwzPtjq8}#Pe{D`2w$aBXyY3=2MztS-3km4&_ecf+ z(c~6P9W{}VR6A4Bs8-}!#d~c<;G1Ph?kJ`XIJ6@tV``IJo!=#)5g9~fFX^XXNE_5J z9m>{uZRp~QY>|wvv5}Lz8t`_PnA6SL8=Xf>-I%{WOdx-8xjUPY%+JTV(~>;PPI1vM z?8z5${}_rQCjM5)0l~frZ-H4F<+Vj6*V*rxJl$a8LAXYP5?q0)Uc5bkKw5=Yt0h5C zGoDJ3T6aS&y{SB0xVe_vkSi@di?Xs3$VLmFcGq5R&@E2AdmQHHOC?C6rJ0NNIsENg z?@asty?3i76La=pjqT)dI=5Gok{1#8R6Xo2m+fdT@#kvz8jOFb=WihGxH_`8&60}O zfyKI_n=E;_!4n!+Nup-sOA;3-X~78$*U+WYExHsF zZ-aXnY|Ggam&NqDrvIWr-!&g}RZL-|T-ZBYhUI9g{>F_r6l<0cunHCyd<`!H9qz8T zbiC`x5bCEc8Xk^y-fdUdwmTXJO;vJT_9=^=zLo8A6vGa-aG=Q%%p!-J9%yebxgwyV zsBk<%{OPGWsCIT1Q^?Ijrn-b*gRVQZZKaPiUXa}o8l=_dcHIfN*LG`ZD$7kaO&{$0pX@bQqTZY9}AC~ZBv9)qLl@QsBS|9ff!aLn$IzL44i;;*zW$CC5~^zsFEJRA-UrlcU@FcJNv;7@ zekK1xL*rJwBI;ZZU1u<6-H9xmblOm1E24m}@my~WE(ZWa?Wl-WMCscuMmjU-f^1PL zU(s2`>dgU1t!j~IFpKp$BhQX0^Lh%;G4`t8@kPPze9j~@+x~_C+Obgu>8qIiq70fO zU!sj?J)+bN%KI&CH)<#=Q=vVZDlDB16Z#d(VbAENL4{N~x~G;XJKb~m(gF6vJz%(9 zDB_lf8vLvN>Y23B$dS_iXd>SJlVDeqjy?{w?Cv9L1oP|)h;_0#wO|53?w6;c7`Klq z*G(}}yQ!aVrjob`90uXIYwIs_b5opY$nt^sS2$}lM=lZof<+-~@qWz}Erl9xdx}u0 z1Mnv6&^Z@)v)ALaTRsB?oTg5qw=6C$~&x==n>$q9z-+w2bnqavOQe4HF zbtrVd2}0z^V5+0^m$F#R=}&VfOEru9cUEGKfsV>)1^G0;y%-;nn>Ow&~LL9 zF8VS0tY$GTRjcwI$q6|A$)Jle_y_`SgA8Z#e#3!iQjV9lGD6G6CpCw$5?f8~sQSkG z6f&ac4}>}=<>hd6fRg0a1wo=6bO+4UUoR-`*OP)r!_)$-B|Ohg`G;{?0eQC&g?$pP z7;v<6?gZ(J0;rf>n;)Z*o?uvMok9S*N#t{W7`Ne|rtxTATU;wqV!_l54DlA6|D6_|4b z71&fR&T;T7sY*GqiXSPPQbxjLL#FDo zA+9FGe|I6$q79ZM!#&s3tM@{;2)aTBl53b}RbDoGTp6A^rjB9`)y`NNEhU95Vvsqx z`+aO9p6sFI^`@7EAexrp5asB9X2twXE3c(=wHA+gvS$&5$2ehjBX?BUHk0(Re_VJe zYVg{+wDBA;oQXacuwq4jxT&Ka27TxrQKvqx6`4~g?6#{MEVcYFGjC7Bg3lcZ2YMQ7P^Y-!cjff7prWQzGIjJ$bBWJK3 zvKq)d(fYM_&LJSgGjW5nVmRf{Lc4u=U7|0e<^hpbt@N`#n)AN8!ltJ3~lIKh1)Gk2(vlrq*?S zKzt><7IxG&KJt^J_QaAxzQNyqG6>X+B zX>w5W!GkI_#vRocI35r*EuoX}Fg`&@Y@A>)N)xo#kZWd-781Z0D6Caf^Hoe$S=fMDN+T zoC0q>>7lr)QD60yRWgYx)}6Tv+OXST_t_$Bjba5|Ak>)j`++7UWBP9#Kr+VSitP`( ze3APia(s&su7+|8!6o~yxJ$N7<%>89SGbHxrnVYJ3i3u`(j;W-Lfg&3cShvzZ#_5M zCsvfOt*i&2JgX6C7+`)X@btUaB~D(K1V{o1#nw2g$G^PmeCw3cUwn*aJHd~RBXqpj z2HfmXd_`24wJ$gX?2Q>I{@R#F(5#vue!olKIhmVkiD;`T3edIF8t1*0koYt?~@GJ*~1IVsi|2SclRAy8{O3iINs|BdQq0r$@Dn&64p@&V>9#6|{=t~S z`(Dv7Vr~#CsL(EY4CQeQDJO=K&8=v~K!7WBLBFKKANG;mixhW7*tE5N8+QnP`fj_VIe+)Y zlSuVmkWK9lPv9{gCFbD0Vp-E<5lAT7oz#lu+&~1nh{!sHwlWra)9#uW!95 ze3jK|aad7CYDR*#ge4WMx!XAm4&E|ZO|Dv#+pM+(X`ZFH+JfuJrEVJ`bg==8@_VgKlg*-#5hhCpK#5M4+k zy4mQ{F#~2#<4Yb#zXAE{S`>!(etB;mqTs_Zdxr~R!dSvS z+6h84Cpqk50fDE_`&BX%akrHWGmlL�=|Ls0F_4X_R`=w;Nok)zY|7bgeY1-8LAZ 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-msb/ip2net b/binaries/mips32r1-msb/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..0c910a2c154dc1375c022f96df53bafbfb154d59 GIT binary patch literal 37300 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

jurJyY#Wxo2 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 U@C*_O9{>R_hyVZpfB*mhfQ@NLOaK4? literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-msb/mdig b/binaries/mips32r1-msb/mdig new file mode 100755 index 0000000000000000000000000000000000000000..d92dc565c63c7cd53979f67ed82cb1f0578328a6 GIT binary patch literal 46760 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 }4-Yifa_1AH#z$IJY1OD|H8~Y_6$zdqj zhj>*>D;Tq-O^7b61J{g-PFbh6WgH{JId1rXvg|-!!1=~IqI*UqK-S`7{BanM#VO$4 zff|$O&9GjPD0FKVl4m9%joJK2gA282*N&~sAwVgMXJ~0q_+hjv*Na7|&LV%i%Nh4s zjBFZwTVxXuf!v$;7xk<`+hwB(baExbR#qwvC^qq#jZ4MC#atN}5Njg^TqPsx^$7GO zVH!3xOApG;e%8j4Dg`aLeFIDhm6SM5d(YAyouA%>BqUYUSPl*|&?!=5w)6UFWBlz^ zUTtNB9=2T5oKa!H89UXb?G%W;D8m%vbNjd$R}xvKSXR*9Qxr!H-`xV=EC$8qNzHm6 zq!T`+{B!xtuH4^Ts?jEB>clmDdKt>b=iJoyI0${JlT>KS7Y*P$osruh$kP|deLa7% zkF*EMCkK+p?r{F-w|?V4KQ|S`cPuPw>#gP)jN5_LciF&8Cj!;`6mqJF)f~bT&#u`Lp z9|o-Wr9XRVdqaziHL@+NZ?rZ^IY0bAC&`5p;q9s2XzX`efAfg-#Fh7LrJX;vU@Yj= zmB8HP5`A-gqrC=SZE{i>4I`7?X%nC!+qc`0@{p?R<4&w2wm4Y0vWSt8y93#2NM?w=+hmFUE!7fiS%^I=&qF)0q3pJt z-@Ft$ftgv0(lwf}bhs8$S4yL(K6)4Ikje#Yt89Zg^9LKD8MUlE%oGgGb6)tmN7j3p zcJYJ&N)>Er4$pn>eZr8n?%yHJo`f=E)`%$Z(yGgA+A_rWPHX&*eJ4X9P3o@P^Wq49 ziA+x=Y4@I_n15bc8}2oZKY%N(Bj7sqeBf$$r^m=@vg{7wtdDEiXzq!nkS0exL~=BX zNcR;AdB3NIDh*>DpNN)0WXY1HlCWn~@k)Mkz;^pHTbqdpu05>3xFiopC5)~K%BSd9 zol~o6(fAewAui+K>(hHzk;W?7|1jSWL6!3R@S(Q976b87CinCrP{88HPOWMp)W?UV zCq#QG)bp{DpK)x1+*$L43UT~Rqwf9Xoo}CUZKu25{2$C#QBFJ4#_uMGE?1X7NMfUB zLl%L|0BBF{W2mq_va)>jB=_ow7^F(N>s<-aC<{Lu=gey1rf+J!w~o6oSuR40SE^i1 zEr0~|SixxMG55zrdl3H}3lv(@Y!@G9@Kq09`_e5?$%n84`u#N%8i;k(`OrC-H@L@& zu4Y5hU#GI}VQ>Q#Y+o5_KGyDDWwNmUCHD*74VhY28qG4`H4uMTR<#1+`#@Xnq)LX@S1G zjT%8RfoJg8in-rZcG8P`Wp04zB$fGS6a0@VO7$hO#BM8WRSjR6Z!)DcC8=D^I_v!; z;Zul-m5y+3unUbNQ~2dRhqx zPl{1VOM=7G-ui3~sF*$9NHH1;RfN}o+!*&3*OtHXJugkLXVuuS{JCh62Zf#f_9N3i z6J&E@L%;&xx-W)sQ8CxWl%LaOe7-Tzvu@Uk3Gp9ijG>|zN1UW+-cg^mSG z37*8ws3KR#=$hg^_Q;wKPECMvzyA90rai)N75JUW3`Lt`5Z}vs_AuRzOS*MLgK=1zR*pvjI4N zjsoAwmC7ZR$s(tUE5%bjq^cqwv}eK_B*)$I`?*a*rnIUMLBU}CU!Df%VfpU1+(<%h zac2Ld4g*z1IK({ZM-mtfILJTxYuaFNFuc)8+#TZZS3H&KbJB+`&cbM+E~Hx{rb!#v zdoETut+(R7(hrC+y{G_qgkBXIO!IGb#Q*4Z$>GuAg~2jBq}1)h#3lQ~I}0;M!YD_K zoX)l=N+iqsZj7z0ERzZ}$a8!;$R;V&Izy5s_B^%8!;bJcbLm7i|7tI)<;JV-x1+@h z=oSq6OxKwTTjn9svr*Z}oqGe5iENHB)_zGh1SsG>gpdpmM!8FoUn(J0rmjA_MhpG+ zn(H~#uA7QR{GZs_=C?3v3)(n^N=k`&I_F~NdFi(*agHAgE-iU2OsZIn7A#|1$M~On zac(|~{;EhKUCv3Z`|($HL%UG_KX#CYrJ*F}I{IdUu5#MFKhNdEL)E=BOMrzFiW_Im z1ShnsgfxI1V2EIrlV3`Vp3hh#J#0E1R|lwosO1nBKuXL^_UZjA7My!(yaF#DTt9LW?|DOuzRV{MLf+PKFij{0S!s6kz3Un7b>28bm&tK^O?!h+QiesBal!Pe;)h+sb zO8Ijq72ObC!EihI4=zNXB9CtT+<~;Qx~So}ZVm2@!!>tLBKlOm}61xc}``!xY9+xE{M4v~V750xZA?>3BuJ9cz*70UEB zs>ux(W`?(31N>hU(}8GjeYP-Vo8M84o<_Z0CXYfqAcj`Bnq)GN+V$X#?WmA zxvsn{6);G=jhmGOL93!Gj~b(jg#dCj<&!CB;S#!+a8Lua-XjGi9nG9>>7=f4W6u7$KPf4C*JFNAOIqosF+IKQORbD5*? z>J6DtVaAFIkPJ+6N`9h3>s9ppAzE6@xDBV1K;gZ|pD@^a`?`P^?1{cVGPge!X;Hzq z(ZN`jf+J$QTbY?h_(daO>hIywCKxr}mj+4odYayGmhx>%VD=|uM;$a4br1keffe2Y z8tK%N`c@`bGyYD6tPIE}1Q6x5rkD`B0k+vsYMQ%`7%1`=_@fj-?xN%2mGDP3e#m=- z5O~plmL+g7TW`Z5*PnlEhmY>HnJ|@K2d-2s`r-6IEIv9EVWhwp{d~ky`sO8hPO}=k z+Cor#QPx`!UhZjKK%ndlp_ngodHmtvHJxKQ=ZL5gO9jDQXf#fp>7`T2AQpja!3bRQ zz^wsrAzNiJx{b)SMWJSEZ%Tn}(dJl~OmprB+)Pc&3yst=FpD?Dgg@o|v$hrxpn zqPNEZ%6BI@zrPe$pR&WnGx(BG#hSF<)1n+Vz1>uso_L!Qn~185 z2}^}?D*C`<+O$Jvm}#D@1(5dgp0LQiV{Ht0{1S1L(jh3lTkb`0u*zL6S5J!FqnMI& zA=ydDf-ek2t!hI7!FM!yf=>TNqxnBUH`FoWvjMh5eK@n z!`@RR#AdOST^*rbJ%-?~ktm(#>VgkT`)a^>Oq$slTs>mz{%s>M8YHOHwAYJ z-Hl}0rTD!B31zf|sae`8L1QAeuB*xEii=i$=IwS#mzdcVt1`3p}OC zcl)kMMu%thMSI|7=miS0*n?Tf04|#-4+$AgRq7eN;%svEKMh-ikOtBkuvW7qUnwhs zxCHuDr2*?A(?n72=@rP-0*Y^a^gNL+y5?hyIsRDfpS`Uf0=3iB5I9wH;U2p#uRo*k z^Qg0v&Bly2PnqdZD4=@mh_m;-FNEf21}gCsM`}`oto?MpY=f&ZVd%Q;N}rle9$X=z zXqmN>2jkZuS8$a#S5cFPp^gDbAV{F|zx7}hUDYLIl1!I8hdWYDcg8imQ@O3)ik%~y zY96k@kUrpd#;PHau^J1XL8o*}O2r;>HD&Ds2_5dBW)Sp|t7V$R(j_ITYmoxtSkd1% zcvq9`zP!G}uN84>`LkML;rwzo58(ueEIZrICMD}KwcDw6QGY#eGhO8NYjkiQPXVY9 zb#MGz>kl#>7({ETfv#L1S1uk$ngw7T9TD$(w({~f1RZ_~v`}oQeLr{v`LdWT2!a!B zb+DNJdKEHD$;T^yu3d8ZNg0s171lwvzIJqVS@*2kSUHy3w$K@2H~3n6RxfXglAPyL zd$$I*ZrphD-S$`3U?<4!Oz-SZxWSa(1Yy5ex31x^o|ybCZ5Ru{${oS6rn_A}C9gvx z;^G_RS6jWhtB*Y?2y{?Wi@g6Gtv-E%lXO-s$J?5PJ5mJEjsYQiR~)^YyO6FJf4U$u zu#}wcSCU8S^5>J}Q0KD%tpr6Dq22kK<7&bbOr@{uZ-0gR>9bU-PYNdd+EqWYC_BjYnd>8JnBi7>DmlHW=39e~hxtx6p|_!e5*eK51}DcPyV4tn=Mtd*+dQaAb-Y*=rZ z$+*IDASenMyEvREozZybFMj#AUc1BV@iDMPtPa&~pK7_F%F6fS{Uu#ST&Ji5Ix#5_ zGc(;G%{$0FeDh3W6C7jb;ni$6;SOk%211!X!OV|SW)PaPu$|%ZDn09==}k=*&HtSq z$L1S2yAbh zMIG?S@1gSsK1sx1r>0&7mq|8pK(KSg9mfo4;Gi80yi?U#5wdNH3g|pGt>?ivgIq)x zE0#XFt3X}!8kF%Lo7uP*ol3~o@HM>{XDwNAni@*(pk?!j@OCUw9f1yM#hQ{4Kxn!Dg!zK7Q}Zz$hogal{j zb+K*iHsFf5#TK}dBJ+rWpe0BVLRU~Z%k<0vP))87gfu2>y+3I@M~76s-ZTLyR`ZHz zPyfhUQ|@#JuCM>l#+zaA&5c{gO`Rv2$sf0H%Xhd>W9O?MgR;u8b`b#nNi+?O?Lmif zxIf4Kk>mqhyjeePCp}3O#~v1zdu|MmNC+#n$4#q6lW5~qRfsw(~`(xn3GU2|r)51;HO-LH%ei54@AU(ZRw%7bPp%>F!GRqs=cbXx`*KL{jesIGVxg4)p&iEsJ8r%a@s4sA}qZ5iZ{pEJJ?Mh6j*{<1k8McuxzFOC|UV za~MxB-MEe2hvU)n{l_Syg`E|{@Fd$QOLK5bjNw{pC8d5C`lD^KZ}Q#HWv{R7%#K#Ue={oBBMjI(EEEoL)9UvgquG%o}htCLeDPDUFx`Zm&_;;BaWkG*_|% z`5rjb^HRt%00l3wxejD`F^Ol`A(v50R(R=Nx`8)JXYy!$%7DbEo2U^VHXWN+CQ&+8 zmCp$mdy2iDOS3?y9}nf66C+SQ2Aa7c>EV_iX*`cb$`fF9#bK@u{|;}I=^^-H3y6m* z@CAOH;p*=Eb5F7*_t^6CittyNQ7O0bbV0U3I6iwb&IxCw8ugKJAY~f+C&icR=#{tK z+)Y9FD=j8$!=M3s^MuTGAwdi%80?>AV1B`s-Xb68h&Q5@|JH&{pzvVP{FC7i7(3}* z$xyV?G458t)SY|JgYGuhziU4(nIe?q==wr}YgMePrhEE`%HUZFJQ4sy$D;H|LszJ1 zA6;Q1b7Zl4_TCT5*B#z{S6Pm5R{^>H_5E^n)$xE zJd;=Pckmg&mjGZ3%2+k zP>~|~lR6YgY#51_jIkNNKIJR767t1nL1VQ;0JnJ|*!9=b&A;+Y=f+mSiAI&bRz09T zUmZPwNEZb3-NT_Bkxo50kGZfp91;FD@wmWW z;BYu7vgo9}x*!gudGZJ?GQ6`SqgBdCf)5=V4oaX=9D~vzj_RRv=a+z$Wc*9_)zeaf zK?DV+z+^ZyXX^#^n3=FM2(Y0eq-p9@iSHRwU;4Ah_oU$-0HF3?^mv=8GEbNR3ZSsf zx|z|y+%S&76{oW1!t+1<3@=_IVTR8*2OF)*NO@GHas+PK3WVpiMw{U2u~l!I^s?8; zre@97;&fi}8oCagcsKhEUBhawvMs8;KO_j9iVYF+RWJ<%qzyOxLo4O-eiDye03a@f z&t1bGOO5c{)hVvo0@ERgYB-n9z0MBtL%_y)_B-UCWdbXU6s2iWaEiP`J|{WMVjr7f zOO7@CP#0*`E!}NA^x&R57_c_nT@@+H(PWjpvy^u>d&F5gFP-FtbSj3tRYsk<8P}0} z`_DZN!EpnBg1MRo2)R;5N*uEScxPE}Nzp@dc*-qce+ka+ms(Z{r9Or0q}c$Cqz6ML z^Ywh{foVlO0z2h)Aq2Tjm;-hp>O4gz;qxV?@Pkq0Na|z&$HB6J-q9^Ygzb@k24X?y zy^eh#BbW7JwLi?J&Q2Ro-7r1fFyu{iRW&{nyIZ2j8K2BW`&^9f*oz9UYe+X`w%p8I z80Zr@wZ&H*8V(5Qt>5q>hyc(^>HvSc?A2PnBMNDuWZHiXUTg=f zXK}GExS+PEN=F1%W4T?2t5Ec@0;mf?w6KJsfI`HD5q608p&9pD?XZQJ>p~_Qh-Ffu3e$cr z)$v%_hPTQwWN%z{?iM`6k#8@=4FIPuB6k8|>b=N1f&Z1Y#VPc@&EBuIh(Ga7(#8RJ zZ?6cJe~mrX`3FGLQhj^#Vu*j88uzqFxdSDn9~7Oj8Pa@35BnT~nT16b1kRtkio<21 zruHx49?nPXbIfS~rPrHmo-yZJ;%<`oVZ{x+UUBS7<(xM#vj{8VK$BQxvz0O)!gk;&t$BLR zaj25mJE?Cx0Y+teE|B>4rhll7!Za~(!;?}i_3PsGfoKP11ad?2WcJ@#wo6iU!6G%1 z{6xI`bJk-Zk#jy06Y@q|9gPhUe^2^8cpv3kgssKBPsJP-PTiY6IQjXYhb^lZ{_IS1pzdJE z3Kh6UWWOrEe1Ma6_&dv8cMmn&zNa|OM1o|#8Nef=|22PhY6jD1sxTS(PSYGeh-8RL ztsYs`(D#!{EzI85kbl4?>t1TY&*yn1%})6SGdMkITfS#YLLqu;s%N0#zoM&~wN}wi zb9KWxcA8r0=hzBOjm*DNb!doHo;4{6hB~zHU|72?K$$!DTJ!F-(FtP-foXFc6dc$k zV0}3bXYup$M+49G1MkF&AkX;TVP|GmBV5kj>+hJOu^666;}Q7f*HP)nk4|kXCDwiT zP=Z=bL4=xCD+E*=mtz?0V`8MBhW~yd*S35i?$=0Fie7YV`$oRIirLc5%24zwgaTq| z=p6mUTmtezhDmr)JjbZ0w@V#jW14jP-!TATiHkm79h9p*XyHvB$R9F-fi0w zT0=I}zXce$qM974&Ps_2erKw2qUzGI(Hi53{^#r;#71(FXt-uLne8WPl<@~;QOnBU zLbhoa@!pSI7^WLLNBve~&jEf=IDY4ag-t1Oi2z2ph2XE(8Sa&R1z1#D_xG8gYe;E{ zp}SK=N>HRzLb|)88>PDuX$eUM1PSR536T&a6cJFQoB0mj`__Hq`Tji5Vb1KmX06|f zz1G?j=L8%-exzR~IFm?TF0v+JM6MVXOMOc|=81k4-D!8p;&UllJ~_21IOEe%9j;d@ zcal_lY<)i@$R8N0dhHraPy*d`PZS4QS7)o{*VDXw?PE9xV9dvNrxunOF=3@G_wkCn zvwr6IM`w)@Key$Ju`zS;Y?KwJB5H`z_4ka>+Y%{y{3t$}?bz|blghn>#{+ka4Zj-f z`az0$@t&7mR!<0Jj&hv&8TWnFz9RMP17=9)!t)gs{4oOVi*aPDItWohY)+b5nEd=2 z&DnVyM|;t6tmX-QPljB+-)NDIPNY2FnQwto^lzWje6N>q*5gkx?m_$Y)*=xPoBgg` z)84thdB{2Ruu}-#ZqcDt{q2rUo4?U4`i@0TEODL82Opy;%qm1ljhs?uvNG)lS+*~t z=E||8+JbUI@dwpzo+)UYL9txC!BpwYC6C}TxWm1x(6 z>KZ4Qkom+3L3@npu)n~srXe>k_CWD0uUyIPAFsw;5S@Z*G&l1E+U1vO<0O79HJ+3x ztUB+GG5U%3;fws)bB@7!vNWIKfCNPy1)FmcKPS%>DmYxs$palcNPDX?$?G^8+BZ6^~vNMeUI3sXL~9= zec!aWOX~bExt_1-(RWH}WeMC$3fcWm`{YHdM96n@DIB#oS+DY&D!5)>y5=*Tn7PK_lI?0PolC)&&dY=ajYa(--M#xdg8S$?bh_ zv(kG#alz)$Cr)A;;NLE~pY`y^oNMAFWo7x{xWCG-kC))d;n+j`E_8fT$^nb#t2PpA z!uTiOJ>|~`8S!kW5Jps{`tR<+Vx|e+`-W6+{gN3p-&c&(jQ(IwMfx_6mLmVH7Wq-T z^?8EI8;T_z`uvUNth{=HQh}VO@_dVTC!dLKnN%=-pGNTp9#pSMxdPLlTrGFPS;=2B z$4%;sdJ-+(p4T~#4(22xo=N}s^uGK;Qqr*?`nk5qW3E@PV!EEO#x5IT2{SC`mfz7D z3M{c)c~7Gz|N>o82v1gb|pI(B0MlSRy%@<+$Bl&`UzQW$foGI1`sK;XffCj-gk zN$i=J-=wx$9fGhB8~QUdk!^P}xf&f7Z@o01r8S%-R_-gG%N}BFf2hpeZBwFycb5aWH?h18f38H%;R_B#@0LH-Tx~vJWT7?+lswoVTs{{+qI4gNBhBe)RNJ8>R1QGxu25@c1GE<8=hz{+40ck!oPO2j58kc z$#`EdNca6}jjS5rdVwJu7U4G;p1w<9rOD@qvl4NS@|k}`6Kl6$1iRsFXK7mNn`?n= ztjeOAoFWsHr&dYT<92aVUM>};oSdVIn~G9{7a{e0RZ^_+K&q2o&9@f1lZ+?Z9D&IA zy-UYFOE;+(R5j!%`5US@4awxuVitGW9KO$8`i|3B`H;7z-FATb#bNmL%xlr6JyFk_ zY0T0PQ_v8JhzlTLLAz-$v1C`UlP1UexoGZLX^|7Hk(7R1-1tN1fKIbvn~jM0tu9qr z9f2ttqbY~7!yy_jrF;chI&%?bDWwyv#d@Q_r0JXqM~SQk&#<@MG3WCpuJc51-eUt; ze)J6HqY%c;G0!~BWY^mWd%7KtxJu7~FZtP%h0hlxM24&Lo3fR@nY}a>SFT|BG#{=c z6R=puX*v+vgbr&^^}k{(c-;IAZJW}*`l!9dPQ&1F%C83xzMne8{(?#|Y+6;)IFa0E zN?@ZY*!xi6tpu~cYz8mggnG7h868z?ojh1<&pj(EkVy<5d}Ez)oYSww8n%UtH{jon zBr;2t<@BxHUZb&o=+io$o=r>l(pg@Y&8$pdm64-aTN|q@#!#Fy`?GHtBc%_QI-+G= z^Kwd($*Xyl$4vem|FfF@an++N^*-_)f~kx%k=Hs7`(|sq?K zUyku^)Rt%;SGC`0=BRYjvC*c|ua;6&NO1Q&%G~Ub8_-z|& zxYP0L(IA#!!N|T3oIMI#H^W?>=tS)dRuF@3|@rRwM7caPrFhqr_m*roh@+r_SB)Wi$h7dol9n})H?9P=3S;2jhnEpOk|e3t1eQb(@R z5@Gtl%JcB8t4 zd{Cf;WSgj=adcFi=>@pSW6?IiYvBBK*7!7pg5A|cB4hE}BYg(uFT|S7gbQw3`GOiW zZ4~C+O>e?)N%m4}HNElw2=+P50Vld}wB%nM@6A~0YpuAP<-?D&s}OO2!U5h}8Eoq#6SsRPfguMFJSK}e{eKVQ+sE2ijE_A4Fl#W6vrfz zRxpNR5t5;J8V&PV{asYnp6@?1#6~-Rck>OLoSm{k71nxHlEE4*705Q+l;`Fx=ZBZQ zD$zJxD&Gzt_{YgnI%DgiMi(L2qER`6OZ(~NOSu@u6Wmnk`)ex}{2TnD6BG9zPY)xg%$vQ_#Kj^6*XJ1ls2QhSi`Fy5Gbj z<$)CcXEnUHiJxVEB#CYHq8}EH&nRI1P$gS58}pqRe&{c@NTovkA@rhmn@ZM8+L6z#q`&qhrS_EH_d9titJ{b>H3bh zkN9l-KN%#K@A>XKM(4~WbHqRJz2r{d(%JA8ENov;t=q$7$-TjAq!jEkZKXI&dHZ?2 zslxEr4RjAHiph#YqT)@JfhJq!Q@F5rQ~amB;FR5R)%%;a<~k&jx?YMw`7Gp-F1~|4 zcgB1t{JtH)<@T@v_T;09k|%-kMu+@j0*nG=u8Q|{_9^vLD1*`bjJP;#d;)$=Fb%Yw z&QRf46CPDxu_mv=RfI@ir_4?=h_RRk@_6(T;LgS_Y_Q2U&|Gc?A^qsx6TEF(BUW)< z1~%8z-7d*XX0fAQQaGmh{(;L;*Yd5|i1qCX4`Gr=u8BP;R;mPc&E>vcE?0Qkj-qIM?>NL1d1NLz zqne8!e|{ww8^VbwMR}^HwNt2l#gNEjLzCNrH#u8o6kmk$h;Kxgx@F&wyaYe?Y7TO6 z8T3hrGM}}3IQs+Hz{12a*gH~Tk4`n`(2%6(uIPTH3qK-rlEej|u=R~m`^WMl;Pnt~ zzS4OUjFfs2b+MsAd3k15_ypVWaF>x7uMdyP z|65sq+uapE?{_IKaXX54HzSvfN^`f4R+`i;vp3sv^qPJ63#U525;=l*a@p#?jdA#; zH#Do0($4KU`S;Byy?u(Rn3@9e*sO*E`7M&z$j~76;76{HdeWRt@!i-PmMN#a7oX@d=gNY)XddVh^`B7^~z);7TtSheCM!Wz?(!yOjo3+mA6(xnhBQL**SQ&AGX?N z;u)RcD2>W*s4`X;Z@pZ@uJXZt?=7w#Zm{>XxRTqU-l9v}ueN!kwv@@tFIFgwRS%z? z7fY<{hRzO!`-oq((SXItd&hU9IkaensKCY1Ni|uz0SGK*4U*J&!~M*8PrpGorQiJI zuB$jxS8X-xrtrQ%b^8ytE1Z$1{Gy;&R> zDm70tmF*l4Dgy?5-#GdHI(?aLXFZG zt{f%kZ6%8VZwTF-lgYHUd+Vypt)Om9IfkQ(A*^@-XBu6md^6}(ngVJDc9W&GrgPO; zRGPA!w;@ZZQ~I_}@JH5H1UVAbu47a-0bJ1o-E#J?xwFFpxcty^TVBIIrn+H!PArxH zJ^w zSOBe@xL8RHsM;!cyypD!Rwcf5D(SD8)G=%IjtaVHoeU8=26B&xb7IldN9+bVZ)N81 zTEiQe4fSK)zUd;!M@64*e$3}y)sh5I4`cb57`Ere%UH9*%g9=yey~@Fs_GM5829rL z`2``>*MkL+`B*JTmOP$D<+Qh!`F<>6{voxs=R+RupRz3<;UwQLG9hkwpO7(I8@Kyl z^H98u9|d0jM5QuJX}gPQz@=avp^J;I!X2Jn>hZ$LnVb!HL7=s=<6EIAE6V+~F>p5Z zjPt@G_~p#!T6k?#i|gb!qnq5cO~y~sK9iV`XloN$j1SUeKgaEP-6^tnOT1lnt=#z# z%kXG*sFXIq8DG)!mzD_Oz3-8%uBlsPCv2SSb8JTYYgz6W((gu{ZGUQy*qeH+ldV=) zW7E8TDYv66ht7KjZdf%M6&VOIpyU(YUu=UGqv79NfcxSnk zS9r!%X)#U$tU~fQsnXBv#WUKS#GF*a^X!WQMS_LaS!97nz?%dUd%hUU?kl2r^Rjm? zd;OctL`ZCn`DN$l!XG0geas#~$gEV%ak;;KW+ChS$l#I*+*9Sqe=F>;U?Ie>d3gDZ z*dpIba&-Ly{6%lej7HLQ2z<};>Xx|MJCZvcF zeUHGA&6@w!fBa3%TU@ZLi}Y&vHVrc@mI{Y(Q1P~VwgF34@X~GN^$oG-?-2Ot9*_@9 zef|n*LP~o5?#2lRsvJSH{?g-%=IeXBWO;dn;D z^G`{6)b+gYd3$opZ9KK;LIa;it0)nv-`S$w zt$pRX@m45Z%^wX>M~6U_zgw+pe=QIuhj#3VpVi14y9SGIo60W=-tsHJ!`XRfZl6S> zG^VMeQ-;=)@95KnKJ7VB_%%*GNb+naan|i|qvF>4f!irHRmk$we0qsvGal?MjG^3Z zS`}6X2`WTBgYA-d*~Z%byBR_Ua$$X{EMcs{_BS~jRj291al~90s@lp4L;O^5T6UC> z?eL!I3#_H2y{=I9$5r$=W^Z}8mhsab2xQp#(~n+>xX zYzhqU;bnIY-Y!s~1!0j2!R7`9Z$7BSAv&XEtl6nAWFmBPp2H``ZNPV5I= zXE+j63=OsMugqjt@66tn$y{q_oROu>pD~)$Igu)#!SI#qZ}SIaI{l>+hu5NdGhzvE ziZXt6d$bCRVj*+IuJtumxWT^W8hhVY$ZK}XI`!j;OGPWnmd<9n_kk3l1dgPs+m18U z8ugP`ES;J!wLW*1HVc2O-aI5@*Cvxq7%F|J67$A9A;n;9O#IE;K%$H>bixE*O-y7v z&;8~k1*~9wTy9a;peMm^3-77S9wE4bgJYwj&?$0yUPtVV+@C}S5kbq zY=d!Oi!Upg9$v|4sw2OooF6@$&I0d#-t_WzV`{0o=*c*fb?luwd9vW1O!Ted>UeBV z9`{jAtd^<=RnApyI?$@eehEi3jCXo2>`m!%#9|@q2*|nudV)=|CeejyVAzDbtp5a# zJDJ4UlYoGxNNk>jeRjZ#nEi!N1zeSxR3^jTcJ#`fpz>*sv3O1hbJYrQH(QmB+9^h{ zZAtl(R4`l5+Hf3Cd?Mp#fkLDD0PCG%1r^nM#RI^Cbg_PbMZkL`sArY)$bzeFS*sGbv%@lhLN15-wE~W z9%Aq*1EYH31IZK80CwePYG;7|hei(C|?Spi?K1-Tt={6q-lrK~Q zrZ2drPrY`x%A+~TKkCvZH>nPZKm*^lu*J{SW?-dIREvEi5>>f>kl-$V&*r9Jz*iYv zbB=aLjzY7vuJOg>x|XFcxM>>2O_P%MJOp9n>(G&0bkiC`O94`nTkH)@ireZKuOm3!73C%Mrsel&R=nWf9l*G=7Qf1~gz9|w%@u};v$fX(g;F}=kPTiKn8%guGXkHs6k@udrU_N?^6W;%G zzqhTFpjQujEI(@!AMe*4VdTT@bff1T&v?l0nrdxhW@oZb$i$oGyWAK`fd#oG*8LZ=H-9p(7NTb z|ELJBAJ>sp(&D zi?P^k%2xp^^_xJ_e!XeJ$gOWWXV~z4iU0d?mwpcwj`VrvHrHBOrK)S+ZdvV%j}kxn zge7WjG9_XhjrD{O*ik(ieI=ZOtqROlNt{0Y8v2xH1Tj9U!mOMW=p1fUIO)t6>!+p%P2D%VPe1*XIf7v4N&!~<)9Ai(==f0*G&ssHAR!ppN4Ww?tj4zi7Xf>$cAIBubD2k1H;Nq2I zkX`mUX?`gz`(RQvERrsgp@mBa3k5F+JVhne+CJ;4Zb2K*3r;X+FhMr>vhg4on{xW0+TLPcIA_ z;~wVbN`|oG=p^Rv_YAv5C~ll-0F^fk)$V+ZBl6Ar)t7tt#&gw_$m?EK*wUz?|0Q2I zm0Q@oxdSPqw-7R|6#t2}xs2cw>pitZ)oJ(KZ_NI65=$O?FQ`o4ppiO_vOg3r%{@qD}JO=8+*b&`U7dz_}y@m@eto*eE+J-hmgf=iWiNm!X2U3 z_xPG}DW#hL0Dww^|7`KWf0QsFXv1I7p@CpQY^6UmX+ALQ9keCGkNXQwGmvj7+piVy%Pa1*Y_LEZ@w%Pz?K2bYoIJ`sDYX{fM87{z+2M*aMsiVtTnFzWX&rOPaQyAQwxv-`DOGq zr2sAj$fU0+2M{$C00}Y?fG2`@kT3uO$RglK859b{feDU5uKE7c7(6i@04kROph_CF zMfe}{&>lK^Boqb!p>%L$IEFA3K+q!q01g0p^hg*SD3(QCG1&tUQVY}tQU-uRUx?B} z^KIw>paVSU=z&87BO(;)2ar<&Nrl$}!9TMOCM3uo2?fwdLQ%&|RoAlAKzbMONTf#+ zf^#I`aRap38vsB6P+cSe3MHt30zZ&JaF9s(@b{2zsOfz5}}qfC2J@L4v)n zZKaJw10WD}a2}*j)CXe>d@czEP=cT@0M&odhws1X1ID7X04HcBT#$1YC>PB|8c?~` z1^Q3A&=JAlzjeX-cU_0rIagav@uAYZ&0Vek${07fVS>cUuJ1_h9X0E93Y zUa}%Z}vazQu`0Qf42+9U-6c7L25x+)X-oA{a<9&{zcZ^{~>GOKgh!Q z53&ZJ%Lw|v`5usty!JoNwJ)w^|I51Uf((E)0{G`xxu*XoyJBA3l^Gw~=67CEMxh`v z|D0DKRR0|>81w%gGr0eb7o1YjU$HUQxLi@m^g{HOeDJqSyI z^Zy|q`u`~(tQLQh5BX>LSYR#1gjoC~mvsS9rd}u<#E1#bBOqXHK~nr%-o*kau5%bL z^NwJ-l`4r5^eATWjjdZsZHinQa890t}E2n33N!x+HYqM&%~TR6Dd zp0F_h@avobp(6+DEttb#gdKm>8JGzYAFPoS0Qz5Q2^N6=Tc_v$RVQ%%|DKm!{-;h% zT_FB07kU;k6zT@uA38C0qdHj4e&bgIOu*U>qm$(|10aI;0Vp_*59)`B%tE1H94_$d zXHY2EFTlXjP_SnJ`#_{3nlUmQb^aIqe)mJ5&#eBdegxh!FoNIl4+C)Yq+tXdj6z_K z0`fwU1fzaj^JB(DmjiHI0nmPMFg_svp(g)X-vH(RDhI4@5ZwQ3Z2YhK`;Ynt>2qQF z)0Xo9I~VgNfjth$^YX=C>r>&+( zXX$Ne?&)D_22%W|BpmF;p#;UC z-nig-5O`j2eGc~b%QdY4B4Gk`!14igfW$vMYf8X= zzYrjgPefgWMgo}NJ^+B_i_!zqy!7!A036nFg2fyT?kkGH{+60jCN>nz(B@#TDT`pL z1kXWRqJeu5YHQQP*K=UrMTZljPGR|UAZFAtw1bZRPdZG54FHP`MO}dO z=O6}9v1JC3<{ircSXX}U$*@NN06i5Sd;)F;i2#4{*5O#v^pA=@8S8CWI~>#>T-gZQ ze#)n<+*DG!*};Ji!(v|`2-gtMA=*XAVLR*yYcstyBVX#*+)Um(he9-L5k_VOzP<-8 z2aZ+7IV7@Jrsw&L&l(T$7phhIs?YJI3MbkKsw}jTX0#|8dVYXn3AJ( zGXb(U-*w+nl3ti#d^}lgYtk6|h|xsWR!XGzMY5-A|1z#pi^JgF-3Qznv$J{)671N7 z&r=5jd^cse22NzK@DE#4ZmrH;hOiJn(M%h(DjH*dEgOF$BTa3pSjLf23;MbEecg{j zi;w-Q>>Zp_(9VVh6ISNz##*VV=eWVWXe7~{0l)4(Ti}qzc^Eh)GM%d&(szf4SN6R& zp%*&W^7{+gUy`q%P#yba*|y#MHEkZVF<@E!>RS;}t?3ymu>6H!!juug;>R)=^v){p zR&?`n>iyCi2FGRMMq>`lBsq$tlb^DH$6ld7tt%S~ozjHp$Pjj;Zc&~kbd*3G+IYtU z3Y9noT>;FePBbNSH;*dY?i&8&UJV(9gl)F=)ZT(IxSt^xuS$aaBVLw^Y+-M5efha( zqB`7y zc9kY=NWJ7z3|+tZEHJ-!;Z-D62PDn8;*ox(Ww&D>)`JgcOe2S%KDh2uZ@QJV_{vMu zv_I5G1YS1U9}h*fNy_{2g_w?gksr@!rhBsI9O79!OmSstC$VT_@vz19w3p;T277eq zc_gt5{vGkNCutAeIZELr=qU=h_a(>5oy1Obt=2dbE_f5~XC+8z3ukY}3i<3q#|ZBl zq`N7`I{K?#R&qbK=~=fuY0>m0vVBg!qoHa4JWJr~vab3_O{!J4Qx9)i%@f|+Uld}% z8^5#cF9zjaXqxlA)!5(lb2xk^?UIBDq%BYQqVX|Q>F$GEQ)e2=B8>gC5+$$T<6#(^ zJ>y)iK;lEQ>au{cLj5h}j_S95S#d*YjMx>^DK&>secRN6z0v&p3e-9ey*IHWo;1c@ ze$&w;S!A~|GQlUffgZ@}>KTKHx?l$4V6JG2#dF{M+c*fH4!_%8agneSc?*wEyiMq>Ghek3(n|Mje{kB(K*6dY#FSXwqIE{UKae{ZVNqowh@MJ3B zW|sd!Sn=8OD6b|TJg-+6@!Evna>!I!$;x-4grwY5g@TSc#pi92J&2MNV+%mOBe%oJC}c$MfzcaY7JWu-UFpuiomW zaP->Ogl!*gOxA)&-vY&^N8cDvd_?z-|D*}LZ4JrkzBK|A?DObMCF^kXcNRR5q>})W z0V2uSF{{Wv@z^$%e)dN4$DAey;_-gQzhbL@B%-HMhHcQ*gzqvOgk;AUoI)z1QlOrW z6}gzpN~9#5=aQv;uTxXAzq&QNYr;?J6npEgK2dS>kVxe;3Cj9zcX;uITTY~LiInfn z0Y#^|f|}jkp61zQ#=AV1Q}fYkuVeJ18-0DWA6GWXJ{Dd*gy(5A@z{HiZF2O-zRh7iTuFJW7DV-y%#Vis(7x;;zw^G<_ zfP`$E>`}oFADui>T6;-FuDl_76<-JnTNS&tn~2J0j4++TY8eb+*dJ)%LLic!B{znopn>%-ZgZMFRc!J4by zT(J4`S1G?j%!krRJ(juXr$4VCXdl}8V-U{Qp{S{fb-o(O-+!SVRXR_!N&BbfnM2dg zayf46yw0d2Wg|>&g3~X$`=H;Wsp^e2UcsNt<5cj!bkACFA1B?UpC|2&d%Qd`x<$$T z?aTZ{5;Id0H~6b|sJLdT>3F9JlO=%bQgFxsErI)Ur@6QBucAac{)#u2Gt~Qz ziS8Sd;YDfIlHBCF^CA0LO{}e`{pWkjCGioxX0;uOhfcy1qhr{}7g1?;f=b?p3-cqX z$Gs+k+&`xc93wv^?mrlrNJb%vu)A;%1cGnRseQ{pxU7l{e_&8>v#x`6DYqCoeCTI< zIZ$xVE2gczO~iy~i+fTlITy;3TIo2y2s9DYnl9k`K0&=PEv*(Ju?{T~9w^{5_E*I* zs?C2_Ym=11#Dif8IA@kLN#g!fLfIx1g^N|I+fATWZnkREfZ~K_inl$4$$W z3@?bKbE66C{qVTxtUi!WyRI~g@hDmG2S!(4EKkL8!}rn)`Q_^YX>TBnIDiR+JK}Eutxp*DK9JR&yB7hcGo;R+*RDG$ymJwVQe` zqK~+F%ZTn6*u7fR?hZt|3OekpbqeeLGLbU4*47@9|MK<#*^GcGOE0guk}2EWzL(*3 zTO&$(!Fd_+o%VS1X(M)U?ErE4i$Y_3Jiii}j|kLv*bAT52m0qv;pzu}-0Q-artn7UXUO!{;6ezY=NGXR zeBr=Q;R888#k{=pvy1%l)*xM?K$*5;AwOLnBf1}JSm8-hd3m-jPb*Go(Q`vFQA70G zS?eccSuLY$6t-p6!p{Q6$%WZH(AF@&xx|~vgI}?BYJRSFFx!3#x5r+p(A^yNLJPGc z+z5R`T*tM<`$Bp(diA!4d`=XJ9%*yr7r8rckRq8qd49T>3VqPcLn@^1)~*=i)S+lUUOm3AjX+!ECqZOh*& zrwx`=gZY=NM#UCeM$PF=Fjo}cs7_w8({S<9d;`&2V|sP5?KFuM{OR?)oEMdu3_|Lw z)d`p0cj88yEe%LZiGXEw@iX090bfMdR!6uLiQFiq-vzSE+Ktv7rL4VbA6H@4WAEvB z-Hf`zh`%ki!h>V~qZu;Iuw)yY|8Bn(DxZ+_lQ!JreSd0Gg^uUpiD4<$DJDja@VK1M zd7T;AiS(WG3hkKD0zLwMQjOxh47MM&+5=9{@H5Ys9fcYzbgWLZRghR5uSqyFKcooo zdY;JpST?}bI8vug&PU9C?k`3NjH0;X-=wA(j3N zpI0Hx`+;WLxnnMG(P-4#H|Y;j{2y9Ar15Bk)1+buKPtT$=^%$G^W23+c&$h$*G#+9 z#=(k(oN0Zty*FHfxv*lN`-YsnmMOIHA&+P#!7Sds#-bJhZ(quib3B*&mI8L)8xQ_8 zG|8aBDbk`t9nGoviy7Gvqxamn?4(rimF=@WYn2kiy!XoSLaH_+!HF;@-<#k29B6i2 zdE@J)-vsBcDEDN_v>UVxFwK4@F=VnPtS>f~(Be^Ak+6AMHg8<_k+fALXvHZ~6lAU?y6xvQ4CYEvyz#&|XrDHJpfxwj&#P z?tcfUWB~vquKIr)16YP?q5qwnUv&kh@GxC;THOb~&&Bxm&F^h%j0!do2_P00b;zeTTEQ+Y$e7>TwSTw; zK~zGOFFDM^8XH9;Z`Htm6t8-qUfHnY$@8z*jSwqi3S?~nvD-rY(0Rn_h<%i1<08<7 zOOj#$DO)er*VozolndE^4+tI6mve5{u(^gbHga2WMkiQPbdUJGfG2qi2-)+QU8`&_ zbV8WGFb@ReO>0IRE)!AjT$V0@fDsJ=2p*fFv=oPa??vG>1^6=!@rjv<(ii^D(r>K2 z-nGTAyz|LDJLQYe{#d2*Q%bF+4_zOk46bF0v)`06eW`gEkzo6v1>o$<02*L_(Aljt z(ZG|Pe>@)0Fc5BSy^75mY(ol$%5dC*j&nNv$|sVjnY8UZ0HKs&hc}>wD8=-n9cQm4medMIG}bA`oK* zc}bp^k-esTnULbtSD}*m>G^`e(Wm1RtL~>UEQr-6OmPIy|J#(j9u=gqQ4bV)jg)DE zF8z!G-#He9M$%&A0OtkYc&{AUahSULeP3v~&KK8a_-OeBw`glU;IE1~i4*Pc;|F$$ zX$WU$c%5}BqGECQWfb3BQN18hwM6lMH%X~{g~}t%Z(PS!lzK;zd=emo=OPDhLQ1ey z+i8SoL!dbUlEf0)SEmppkP4&{nJGr(Uvq{|8C}i|79VH;@ts|LO{L@C4tf*Qqc~@> zYUuivUs||(y50lJ20qC&^@7c{x00hq;UD<+HvG3X=MsU-A^54*sar(+sQZX5;A%9l zV7V%p%zUDx(huO@ofP9d%nhbl3ir3eT@t zMnc0U?HPt90`BY5uw%JD502tnG=_n3Ss`;VGZZ%9Mfo;UY(=c=;Uz{b@{Ry`K7{>kw)y1d zc;1Sdx$^RZfg*sMR>8GGFb4n{(B#|}T-p$*!-F^5Y!2RocyvV6Z%E8p;xR#|jU$cb z@&=v+Z@m#wBUm<*xIjJ+>Sh1R;6Ld%i|cF3yB+=WQwS~nald};p7vhKzdA+yDXRA^ z%#WgKq>B&D$292o7cEY~sc$ah5)FI>uV}if?w}Z<>qPs*DR9K*!Loe_ehx-Qr9U9% zFAiU|D5n-&e@yx%`U7~4+l(|sQ;}DZukbcY|G=( zvw0{$EVVBXqRqAosNN8mhsQ(naTxc+x&B&P6#;D|UciS?=Td$4PTvywX^_&ptf1VG z)ey4aHfaykirCxur;}@nf68+%eYm!AHX2EopEtpqu@)5F3?aiXF(kUq@od`D=Po#x zoXLcs0cGa%mLF43O(iGoTt`by)Mh<+XowNt&bR}c_UOuReC-D4`sEJ~OhC`WICOL8 zjDuKFE~B}Vduw2s9oS(cxo_vu@o#fIMu6Ay;^Gwzte$Ra>-#gtx@WC0RF)_vTA9>4 zuew!-1OQV|Nofk&!%zmQ&m~GV7Y>%-$1l-oC zZI&RysvS$VkO_eb+!~rU46NtW0GKulh{gB6cP9*R&WK*@^l&S|uVR_ekpsx8lslze z;qD!tcu7TJuXm*oVMG)VXp$ZF)|_~J0o?!Fk`d8ua27FXZ?;e^q>~JN{nlQB-k!Ai zfg%Hl#e`iI&vHlGA4h~=2go*N{i-jaJy+?4_M>sVfhi=pk@4h*pr z;*s(gshiEuSl~M3#m2zAdLN(+O~1(+4kF`xj{6AmxI6wAN&8CfmXxX2zYL~V*iWKunvE}$g; zQ@Sk`%wjMhX?1%%HTFG{)c{eu|EMTTod(dY;i+tnlVf)6jaN~D!wg8&khiUC_HXH_ z%*vq|K|@Giy&t#7-TekOZR1=KOWkoJekSij?3s*bR^)aZ7MHnE{op{eB&*@>Xaz*e z5Yx;|{zAGtKWR`Fy!NlNEKw#D3aa|h=`=BF&LK7Vl{ak{ZVd_SS571R!LZI4;7{aK zsEsm=o1tRd`5zFzT1>zVwtuHk4C6nXQI7T^#pG(Xp=wPxFW%70%? z>BJor9O5L5_`-d@^trF@6M`0HV5IXQan&l$xpb$gmGmYxv_BZ0Uwh82A=~J)@gqk( z4pRRM4H!z(uJVi8^Z85bOr2q5G+I~ zP;NRe*hzezoyqEk8+L_lu@{HjK?Gfng`6&-)1$kO;POsJ!x1auCVP+xBm+)+|`^LWRn)r3m0o zV4Oxjn%e9&!lI#26}o@GREP2hkaa`;=n(`?ko)U02f=-lmIw+t67CkEh4(058`Wwk z4K0N8x~-aK{1fLkKA1rJ`m$?}8X%8tSP35meX=TVA{#fFnxGu7ai}pipBCt(+^h=^ z2q`H^o<^(lF0g@y|Cnn8#rZ=D*3PLg0PiLj*TBCDtLcb<ObGQjWXf@>2Xx@hTFK`X4Bd9#Yr+$z}iEP>TN1 z)bD5{XbKqkP7t08V3$=gFoS6*sAq!Jdd1r?nF;;kxrCOvH-*f1(Y`y?cWeV*2H z^6-z}LAV(F_KlD^6tOTuA~N%^E#Ynxc_Px~-`GpLQ8SD&`PIUBG@Y|O z1?A=P(>6Y5vnDR-MJp+!j6QSV%*(ZvX2mJ|sQAVV9R>u9S#rW=9OTE$;t+buNQ<#Zi*P~Ihs$o9_t8$JVCNNa z_Ysma0#n=VpJ2*b16<5q?q8GlLo~+akd91!63gB1&~0rR?O3#GT)5~ZB9d9;WPNUy z+s?-{#qKqS2tF022XcnHx4P8)CrcL;c@QSh98SQwOd~*BhrstLE|T~2dyea+SRg!u zi*q(BMed&mZJE|RxW@E^kKN}j=LcE$ON3y{+dL9$@?p3vTNa_dj;-Ez6f&m_AFjDf zTzgW0wVsxrh<(KG5v*%f9rK_ra!=q8_s0Y}0cF`Iq(5n=^h2CNF(kdG=)Tn!m0l={ z^D1(9XMHu$m*-u}ww$+ZN>b|z-0;w9?U*Q{esfM6wIYvybXhS5P2;47ze!^<4*y20 z6;;NW^fx#ZlP~7MYnf8v9t$XnvPdFb?X?;_jkz7#M#6|jd<9T+?A=h{omVUllMyA` zP`;iyR-pv1%(%>~-hOO-9qciuA~5*p?kiTT&9m3xRN?b;lcNm?xn?}=zpUrlV#)hZ zKE*hWf)7vaAnnx8#M4V8$3TcuB$%74@gF_-D2LV)>bV`Ci5-(t+F;2lhq8c@F1d4S{0alq>%Ipd4)`# z8Kl`FS=M!(o}318!t`WCrTVhT}rXe5e2Zj8;q7F0tMt6#tVfpEcxKtGfUnC zJd9rn-^i!^+~6m)>5(%#rl*bs;Gj*7R?B`Q9OB0AQGY4Abph)Is8q4p1*vEXNU3US zJqBn`crhI5$L(f2`bdYPRJSQl|?LwlB(v1A}5pyJaN!iSKYr%3G!I3A~ z0LizVmFx+FEUEZ(>!0f9;==rN!FM0Vk$p;WTu5b+wyo}YdBTg*G&9M{sCRz8KdCs> z8#hZD{wQk2M=Ps&dLJ8jA7NJ0Jgrn_u*lH_$6T&pc*|jiNyI2bn3B@rd_v)dt#_gP z6=tUK1PWuX6!^FGVR>cgZ~2&z8pm?%112l`b8VFh>?2PGP*a_h1QTwLU#6>aEQ-It zBGrCn*uf{d4Gszo+`SNv$E;EG6`C=%kEku>dOaa5(|{34GS0v%MZ1^Ux-eJ4UaW#8 zjC>+RZ?J?LIYm86h?vX?!`~)X#CC^3&z&RUMT4zxRKA8E(mWY0v=gSza4vk6=dVA? zGn}D|jC(OjA|Zn*b2P(N(L5^>8wCo3#*LR zw0mBoby)-h?yfiN)$Y+wk>u=k^XsdRxGdLT;grnPKXz}v-3BG@jd4I>pfqXxU(@al z)-!a@hGS>!IjU_h2HC*+ijfQ-#Et>*AD<@nQRc>o=15tcU<3$MhXXGC#+&hyfb38N z0P)u27x%~j6B5(S3z5ARx&;|%q_4<^BJIu4XPTXo&n)@#iwo%MAo%gROEs5bmTasf zK}q=Xx|8J6$1P4Mx?yDZ)xY&ke*bW*a9fbMa!2YU6BW(qF6`&yU!alMWRF^AvlPWX=Wq7zHuxk}RvDvKS41JdYhKB(G^H|+M9Oh>< zJuREO8L&t6wde}~tt;Tu=60^Fq!5a%oa#6CZf7-8MY|f^mrIOv`lP}`7L9F*GEVVu zJmpOg7Uy;}N@!)95OjI_rx~ZKtibZrY!B~i>yP~0*xyPX2L8rb^IYk2>!<7hMD=y? zpnE(s%RX4(ZSVeeOIZ^868ZahkM<%>nc(%VeL}x({QW{gTiOkWqCtb;cN|$1gfsvj z=pm$G)Hkr@uJSqG1SQ{y+L&q=0ii&{kw-RIy=p7bq^_iv@2EL8)104^T&K}?F&<}k zJ-qbrYm>nZz|r}unP!neWQR_<*X5>6F4gi()@gdN@r>q;1T_1(Qq0{cDmDpQnffUK z`amFH1Jt*8+VW4|g*1;2U*yd-`d5eG;cMqHis0Sq7NTV8JD~r}bx0AwBujBZMi8D{ zk86PJn#RX!x?tT2?IuNd!6kXNY-4nn_giagrRQ4sQu@8wC!r%s7`L1QKu^LQbK&mz zNA_Wi+j0FAJ;lX7TYs+m348H&WtAuO~sSZ$Kr3b<1U?9kDRxL&nr=ABc>OCCGTIQD0CwM1^Amet6KV zHOY@-K4jwk=#O5BRnQMLna9+I<&$flQOnUz6X9Ou7YlU?+EdO-v@6{pYvue;Rs&6w z<;n5lnkj%k>ou&Z=KS^kYP|H1WhsWhRRkE&Bok{*^i<#!R}adaX_& zalQ&|p|GxXdv-qKZi*$&tpCASujuRsDGG;8L+gECW3xOC%_GadMsh%=Hx%(C%4J10 zX-SJ@S1gASC|ZE!^E5-HC*?*#o&t98mproxI0>C$mWl*2*|bR$+i4L0ey2aM{4Qns z-@{yy)#H-*v;nI#6x%7{E^KC6WcfW*dgcTxty%*HwWo065kd(V|pyv zfiLC}`4Kgv$}$yAJ-tb`k!FA172By#B^I<)m_8e(W zN2Fhbk51V%!%_(2!?(yMfWbeyV8D+E9|#Kygc)7r1t{Px{_nKLIou#sjE&#>wXiVA zMyp-W;qvTg>(fr(zELpM`3zMP%6LS)!Y`LI6@drKcjSEWs%C$?Z1Q>xb`$f$C!lcK#+eOEB^~uQH5%a~& z6FB^|JEo#U`=*>lMq2x7g~-Fr?`}u8S5T{X_k@*n!c4XuR89g?D)W>N;wWni&N{}j zm>m{>X!eEu8pR@|vSGF7K0`Ty{)G8)$a<(++HF3aQm(OaF7&FVkcMy_8{)}{BOTksX7@%~o>oi**Z#5` zDc}1fxK7VePVw+VtkX!(^Y7ltAqF+`@rCda=(Cq?FIBh1c-e8q`Ic-*Zn7^kR+u}( zmF-72gpC|a8tn_>K7F^vkR%!V3UGr|EJs3fQ=R>QFBvv7C2l!HNe-my?(Q41@!#Xz zCC5py2U)qR3F!uByb&Hve6VtqV2(tG%ELh7MUNou@u}GFdb|U5D73DqkG@o(ujFIN zVjQ6a`HM@M@kAzux&{%Nyln8D6xVII)*aP%1Bxps=gFu@$VkI61>YcDiur z+ozQU3u&P*>B}qJNTaGdMR;}&@TQp#hc#Me#$u~To-HV$<#Q#$l?N?yN>L}#_eo-S zAtM{tyFD1(RY`xv3V3;{Patbcfo|yMg$@K(NEvjf#PpmTgh?j<_7Hu_!m&#+C03NE zAs{rNvswW0i*KO)i%C?xS<7JVg=nP+R$>umUG?!%vJ!!ciA46;cb!eiROAn%^6xf# zsL$}Gf3Fwt6-diMpu%wo4`k}u!i8ih3PR{!Om)~N-YRtry-}ZPA++=}nsc7y z936U%qmyhQ@9zdO?woX&V{Rj@y3ieB50jfoz@#QaE9 zgB}bH16dG;cC44-xvRy+C2B6g1sR9&N51+a_m$|_-;M|14=GqIRQm}J3~ZZ&Qie#B z@$A6d=yIe>!TV3F0cmJ;xX8ep9Cw*L!`Auc_kiy)Gc5>v zEd^{E*|#(!V4a>Dodg;E3ei-1>sMJsf58PJlQvY`}yI z8L-7m-BF&grrHGWJ+P_Ugr92aYmtO=T^*eA*RHQ!@o0tAQ7zmFHZn8(P@) zPN)-OGBce6!or}yeuGuweZ#gqmgeDN`o2`fsBWU1Vu8}`MupFpX}^mdCTkjq&>qY5 z8v~gP?B%(|9t+`WE4I;<&Ixf_d?I9{0o|8802?~WcZOPioE5sTmD1vijrgJhBs?^> z>s;O}*Q)U^7F6SN#!erfSa^`@BA=HAM?EAx+aLKCUTpbSHCsr^;8vVE^n!#DLLtOf zy&D^V`wR!4CH8Y-2-r{#uiUQQvA_6p)*BVFdYHV-KA zuxFjdeo}yvr5i>HWVDBSqNiz7_&Zcf3Zkk1G(qknZ*MeBDrVN0bZ&_N??TJH zHyYmgaHWp&#GHJP{AruKiW|}2vp+6?7VBfUE5PQ_-|aW!NS0@*uY@KF<9@RK!0U~O z_Vm74XH=piFJ{6)PM=173?qU_cf`?Fc63@{*IpSu`|E3wE@x=*jpnj4?#c-l>dSY> z&#)r5Ztaz$j%_FB z+ECOiiG?G%WqWgxXFeTsG$mPPmMh6eoS|#zH(ffg7zAcxWDA;=dCWDhxaF&SpdzAT zT$E0LWQ2_l2&e}6V2*zz7m(kyEILYe*bE>obU_jr)#Brb(B0agK`_=+R}05Wn^E{7 z!e2(egHk)^sz6Gr*ht@SWtz3+VCoA!`^0h{0Tx!yn#bFDqc;ntt{*b9&|JN-V98KX za?-y6!FkRUGhA&x10i)92#2ne3>CwLk40aVDk6o3QPAl7b*fSTaH!dh+=Kod4ga*M zH(-a108L5Lp~`jzO3eCU?1~2PfI}3D>E6;K6Ai0#1?wJINV)h_D&ii!6y#gl#Po=k zf9dS4Y9~pcQMs%Vp;@a{(No~gxz^9nvHZCqDC%~J)a&-l#y;v#t(=h?f zxb$YmVX9o_rZi!%zup*;;20y*wA@%r;@gq8H zt3TpPMNuk`75d7DE#Uhrw`^gfu=TA5wHC&9J>=x1ER(&@+G(@UuWvhMX@l?3UedNQ&@z^#`}|A{9$hZkKdoWsCX65a^xp=KJnKJ-kIwo z1IKj{Rl;Xu{-EBAOnqWxI;TzY+bJe7#TGX*aim!8s%xOgsX%8cG3;YyF-SWmg3)+>fRdDhp8Gm7JaJ~#lMI`%r37O~YO;(120 zznRLR;yKakX7*>H>>vZ(>>~xYsQ=o}ocyo@J}oFC$=JB$86QISLA_&0*HPUtU38KW zL1xuj)MARB;Yi978Z<>Y0vG93E8nD%mt1f(SsmdI`ul7nb6~BDv0*1eAFaq$&MGX~ z53ty8iiK>jV}_UQMMyFTM|4)1#^(OmsR$vkpo|E{u3PG8RxBezowbeWY??l7x`JP^X=$1=X|!l2QO91;!s~ zKhZ1X4iU_}QV?B_dTMd8!8x?F%&eKT1df>~3Cef%GtI;2Ct^q5woKcAVN1MN0-3Yy z3@V0ib*{VQgG4he^be_Y4@}xdA$biG-5m)i(TDrXW88Pmvn3{DX*hO7Lkdp^WZY;UBTi6!$T z{XM$M`k$Z5_~Vpn3!+T!NQW%ho-)Luw5pH~ZYq&$gf9@{PSRrPs9IM`xB@Z_3%l7= zB}^(XlB1K`q^Cxd+phoX8uIT%eTjG(1xZmKzTDvy1tu;pGj+j?zb@>kGkY4x^#`2* z?FUI@;Hf(LYo=up@B#CmixHBoH;cS78M{~9)6aTn-(RH#dq?fF{mJaFrb|a(RuX@g zI#^r_LEkahKgys+@GP~V_e31^&KW$?jGD~36BwQX22Ovrp0Lq&ZW+u8l>IZtqy#wbp97b^-#MuoW z(^)?kxRWrNE+aWd+)OCn%*wFZ{P(L>*AuDK) z#74!NQl6Fe070`7dPW=mao-;rrJ65*#l7F93-ia7tB*?_`e9wPoYHs4g1Eqi_eKuv z;#sXFQ3QgFMc_RY827+A=NJ>dQ;0U;4y`ZL;N{qY8eDvTb0#S=b$VahDEI+iN7vl2 zPGS3qYxLjqpcre{Wr5xg{qw*5s{)-Qp4|^81jQ-4URu2m&_9*fsy`k?LY1L6kR~+h zUhlOp!a7QTK2$9Wy;7i><_aK~lLsbz zIv+-%;XBBrcbPe&z`yOpQAng~lf$mvi0Pe2x5w53TzCVjt&Ug9`$S-DZ@dn1nhkYm z1>=B@g!y*v-Nja1DdCp%$Tm$yQldU!YaWeIND8Uiz_jg*G7!8CDxJ#?|jabD9~c;o@VkJpH4i}OsJp#du9v4dP(*3O!=&%$Rou^hOw$9PI9G_@=Q zC-}X-mv|fb{+PAp7sspnF96;I(3c3qze^pPfkY=TwB`vT1`Wx3t$Dy>lUB1zw&wuF z2(DYgu88OY;nrJK< zdMObbyK#22ekiM`V(o_y-$}pencY1omaND`)1|^^3@UzcUW|_CQG?zSVRMq=6Crfm z*V-W}4m zK;})mL>mXr3(uYjq{n0Z1Jxd@5HZX+)Bk%Pq-a(%>KBfJBgEmdS}sKKec-UrS1}y2 zN$eO;B1^_;YI@TK_wgIx1Dd6}-wn4}SmqZ@2m(r#!UdA3M>S{!`3zJNrLwUV5eR6- z^rA$OaSy%vKy>~2v7*x%wgaSe9_j1MO=J8W2%^G%aMtE$JA#2xtOwjuzaYn2vT3FI z=JGd%fLt;?g?iVLn-5rmC178@)i% zFiE>jW=nfLx$Ntpghw`NX0ld6hQw+NYv~6S`!?>Wdee!GYXZh`?7%B=5y44#79Gf< zb8qcxT3I)1$}SIs&cw7?B$UpMS(9KLUX<60v&`+bQta{fR5vI?6zw~-f48XS<`|R< z4ojO$35O%;in~+Xh|j0bS=c6;`Km;e@sd54pXNEy7vh?B?M^6fy z7D_uEFbTLH?f5Ii-Okze{87?X7dOnWK1kt4kak(Y77sQ^%{PqKgsm0z9O0vH<}@KAZ3gL7bBMO$l3VHXEwAPn$N&$*RcWd3QZ zl2ecDrHmbJ)2PTmJygK+=FfYEs;mQ2rM{<3mfmbao=S!|(iA^H=0yK(={_J=U4X!m zn55sT7)qKJ20aq@!*HBqsp5QVaS3n(7v&>H%MC7#c2^)8dRX@m%?To6-uJCv$mTtu ztnSwD0C@)S7$TzxfqGMFCgGXjXmGtt_0b-)W$Ev3xrXOe2Q7l7ux)mX1LVjBR>jw_ zd`vwEb^NjOv3@F7@NOOw%pH5CUztfo=@*r?JChkhOSl?vtvSgSJp_u0Xcb{(Mg00e zXJ2o?ML6!kDpPIeRnOttVHbvEzRZZ8lacwLFdKqLVkq)~W07YeLQ39w?!`d{#Jh$g z1n^zO>@TiUWxtnuug9)H|mNWG_wR95;p@@^?C%RT8p5^>Q$;43phWW>L9o^HPxE zy7fx|6F92z*G!eaT>aX0JJPD-o-1n0_02=;Cj*IOZH`{VqJAxOT(Aj?uoypu&k9p& z{nLE$6jFyZuO6RHTKSPC?Z7YIcQk>i0lr%GCvn-u{Ty zgacEIBQERwnTHct`iqCaC&#A%$RAKpeE|qC{GYoCB|w3-&Ke|H36ur&ehEkOzxnIvL)6_Qqf3jHvYgk3R4{vc zrM&j3n^-rGREd|=YeAc__K}nYmAj6J%FU;W zsS{^cFWKzl=rv!gCFSI*Q;y#@xUm@R;_zq?PFx0O-u;h00%dcIK^SPcc-nTwD;*9N z(Yd5mX_z@I&kp-_yzJKm`mdOdgsxjj5s;wQcWCGp1#*q&gedp$Y|GsI*mhXzL6FJq z1={;KWBxj~G0{j*bw#qG>q!AFWNnEzKA7exHyHAdMY^o!lr49l7*J6$5SYywJB~iM zcQ&EBEBpCn}%J4>3C-JYbcdNQ`tl+k)l{??XAfTIGP!bh}%FEA0e52L@D)<9isRFxVDTz4xIKMeS3uap@_sb6<@t_8XzBPC;THdZ=HNJ7bs; z^TF~qMc-r7-Xxh#Y4yN=*BODcm6V@1l}S_pm>Mi>U9$XOiVC#6RQ(l)fm7(q_;?n= zUJr4DokmOYNJKX44y#%1l6`0xWm|9oUge8MWTS-Sc?6{xlw<}9foK^@Z#Zw;=q+N?Am;)x~%FGl^FJZ$B@JT18A5A zYyBMI0KOo!lJ3gL@NQ9E(E7H`z>0aQ=|;ktr4j-L8(rak-Z3T3a8J#WHQHk$8WK(h zF!zG;?iN0)5y`%Ah9s~=M_x|i@WG4IdaH63W*C*y>wDeEjt3$b?UDs^a9DfMBQoe1 zzPrH~pIL%7#Z2aByi4{x#mOeya_y;vmFoPUg3kIjQvH`-eBABCzC9uf-*w=%s>sK* zI@Vl%4$b%Z(ZxlzAnqEATNS<=fc7k8bFZVy`q6{+y3x`A!d)$N;HLYu<*HDU*X2kH zt|tI??y%H8%n{4LM*(C3j1Oj7jifx{Jeu8UA{qAAb+!ORfO?3lJR)FBWGz@JClDp`9hMC}5$rtK{B{E_f*1!2*K)wl#%nIpFnYef4U}N

NbiAiWz04=6!T8W|kY% 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-msb/tpws b/binaries/mips32r1-msb/tpws new file mode 100755 index 0000000000000000000000000000000000000000..6e62d69bb59b1add080bfa5664270ed3ce484414 GIT binary patch literal 83848 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 L5uAPn9>M<~5CT{k literal 0 HcmV?d00001 diff --git a/binaries/mips64r2-msb/ip2net b/binaries/mips64r2-msb/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..bc032ba662d64746bdec329ddeecdfa8c7e082bb GIT binary patch literal 90960 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 literal 0 HcmV?d00001 diff --git a/binaries/mips64r2-msb/mdig b/binaries/mips64r2-msb/mdig new file mode 100755 index 0000000000000000000000000000000000000000..98f9b201d30b6cf6cf64b54a68818e017f2785f5 GIT binary patch literal 119840 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ⅆ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 literal 0 HcmV?d00001 diff --git a/binaries/mips64r2-msb/nfqws b/binaries/mips64r2-msb/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..5ca4ccc87a4932e18df3062694574238818c0754 GIT binary patch literal 216184 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 z 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 W=SN%< literal 0 HcmV?d00001 diff --git a/binaries/mips64r2-msb/tpws b/binaries/mips64r2-msb/tpws new file mode 100755 index 0000000000000000000000000000000000000000..086a9a577a8545c64cc6561319a00ec7bbb07fd1 GIT binary patch literal 219720 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 z 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

lwSl&1ED=sfY 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

Dwj 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 literal 0 HcmV?d00001 diff --git a/binaries/x86/ip2net b/binaries/x86/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..9f89b042de2b7040d5e939131ad2680aa1a36a5a GIT binary patch literal 28948 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 X&ys|wG|9iLA)YY^JnD}zAF%pA9F;PD literal 0 HcmV?d00001 diff --git a/binaries/x86/mdig b/binaries/x86/mdig new file mode 100755 index 0000000000000000000000000000000000000000..a057584fe8aa3a36e79b5614cde49d94a25dfa20 GIT binary patch literal 37628 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�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 Pw@2?V7`S;w3&7?-GDx5% literal 0 HcmV?d00001 diff --git a/binaries/x86/nfqws b/binaries/x86/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..5643f0e0ecd5c5677baa6330e1066843867daaf4 GIT binary patch literal 74560 zcmZ6wLy$1c7A)Ad{k3h|wr$(CZQHhO+qP}nJ^y|2W)^cIvMM99GR~$pRmV?6S`-iv z5E$V977ze10N{Uo9}WV7`TrIF+nE9I|8vOykMckN|CB!n1i=4*002O54+H@AKk+~Q z|M>vm5CH$7od6Kve*pczzQT#K@&C#H|Cayd|BC}yMhwKM$g2|^Bf-M_?})Sr(Ema6 zf86Ll!2JhIU;w@ZkzjMK-Q7}nqSbS6{oy%8O`NMUazOlt-zCA%ZQ8DaXymcSU=1;W4=_zFPv+ zNq~ELAb?O9Kma%isQIP(vPNJOgzM9#Wleyv6pk zoL90}zjBSaT^~q{u+(UNKLmf)QAkr8+} zoN6sk&rW~`l$opcFsp1TbwY$Q-oYwEorM(=WZu?jwv3!}ed4#*`6w5gmvE$ngM!@Y%d|J^o=}NpsgY z4o~W(ya($!%OV^{C4#l}dhh$nI+^G~-dDuoQ7H|+p9EZb#xMR(x7<|4Rt_C%S{_Nh zqgd#8Qq2l)y%vl3H#~nbz;fnX3qdu2XNp(V>=@AOegaMD$7t0x%_-LpcKt8Zu0czt zqgV@<2x8A)Ti$l>%Hq4{emda^o)Jh|mEdQh_8Aw>Zc%izqeENIoayzV<-v()PiOFX z1->a-9n(tW+@;Rwfx|mdC3z1B>enFbLR)cQ1!uP`9+pc%@4#UIRfX1N$^dqMF~*v` z#*@wxq5I^QVlO{DUKMa_s$ne%&yPI4#>Et0@2?F)N$b4$1_$@!I801=5xz;of29By zbILi?+lQjkr4$T4Ck&tml~A z$W$9R4pCcROe|Y2(q|Xe zia(#DQ_5i@R&pM%t69VoVr%mKqc~kVNRCnwSoWm9ZiNh5g>3p<7rjO3c`peJCGx`_;?<-9Mg42BBvcCn7@5YHhH(eXL85g0ij4O`b}Hf%qmp2=5Br@=rU~j~ zL4arVm4`PZat@OJPcEgC*B4z1iGT`3QX`b5id^7uxvU}Sp^Ev9v4k|U8j{yt6|btb zArmG6!~A|Sy`wr(aDWtp$G4hCErq*qL;GLEN8`}mt^&$!y|UYIGP7TR2WI{5eB|t| zyY%$Gb{b=cvJYzGcHGCXJ`pDRV_G#(`MDveJZ#z9nvgw^ zynu)zn%w*X@)Nmrmgq^=gaq!l378Xs?|MRFalx;cRLh9DtL?~-=4wna1TT!l(eHiru+gRbLZG@!D zgmhYNM)jGf=oI5lT&jobr4{UZ!rq@q#La6FPxQP@+Me2Y77Hy`P5oXzAc|#U)WnA^ zBZ3|LZbEX2a%Hw_LVpmtBOXFmher(pFB&Na$%Xbqf?22^zvdOTcrG8C!~P7j;mlFB zrw878H)kFLUpRFzY3>WiOJCYpk(2N2u}pWDp4}7;5Zr6pG2J@?<#YjDXBH=cyK|*6 zJKPE{5Wq`)IO&addd21i=`a%9of3DvRKM`c*DJL|wsGG!iM%rP>N2^>SBJIw6`N~Vzl?7HV_ zcxlbI1iD^kbbnbswxS^2tlxKLJ*Ne_D73!vQI|2+>s^fbr!8;eU~srC^i&J3Xv==K zQDF-&yn^QLMR~W)`U^FgQ>Y;uVo6DNW{;Qtt5aOa5a^KC^a3N?Zm=U==*kwL&0EOd zpds+z--XU(zmn;k(jS-DB$nZ~IwNeO^+v2mv-1YJHGn-U7x)F2Cm2$2O}GgMXqcZ= zVg}rpeE{dp#Jf?c%$_cyivd8B?W`bD#;-`Dg7>nVS|v!#-|0xz7bnfqwUoSgfP>La z=uXIC5eBHpDy~q$3gTXPw7!|;hqRjWF>N|gUlRxrAOq2MrR!54(y23qsR*WWMZVD| z-92?h6?-HV1Nx{DT^jW5mX93f;|^A1gywJ&G<41OBx;(%-{bXpCa06Nc=3#Vy04E- zgPLBss$*ZTU=A(Ksjp$m(gSc`Zve>y7gsa>Qm;(*kJrqmA0`?Mfx%sZUWKu&sz!He zS|6SsE#{&AX0pY==E=wFA!$gfhT+eaY;qJm;@8W)%4NEp931|)mhjo;0yTViH?{qw zvhg`9*{Y9KrwdC@#J`lC!#pfx>q$q!R_Hs1NUxcDwfyOVnGt08{Knkl5RmVAbJBc( z@qfwMWk+6iEO&Q{MZ4v|dey-8NZaxS!Wu(17=7nGHfwokH>FuWz5b+|kaUG?p1FSyOeDS$`O1$ z?+RFju1p4aoWe|T<(MSxZhpj7(rmV8XeU9hx4tXe`O2R~w@U^GbSqQBPlYIY3NhtU zTtG(ACHv@B6R8km{3MrvWtiu5(x}h&3Gryfnu}15>#c%v7?^@Vs4+78kbl* z5Rd-r`A#nVf)4xgV6Zmm=%4L-S7yEj>!7}O)!uHE$aBp(JrUz3f6W&wTeX?SvH#0~ zPv^-~Y#yUJ-0|q$@K9>SAUM7e()NUaV@!BS@bMk_!-tp%fN9iP$I)l8PP&M%;!WdS z(7M22{`ptF)|bw6fLp|dMa)Td46gMk#}@a|2--DBE>eKpAR+8yK#jJX&}TuOk?)T2 z%7Rg0-2o!|+&f0FZG5j43S@qw&Ts=u56ZNeH9c3&6W07ZRRoN<3=it&B$@44lz zSteb857}W6E((qifjF#Nu=z+9?4(`|NTewnrqh$(BR1c9^>D7#fu%B(;yx&{Iw{ry zxu8avJ04e?H}PGJn*)i`K^^96C!!gT9a1>y`6_4*Xd9$6=~XlXJI-rdbqND9gBX&| zj@DKvYL~^$p+{$?YqE3%Am1}3rbu&5A2RfDH=%tN#Z|aQT_kSJNiUgaRHP!gPkup# z9a@ZEqtfuhAQ+3~B(t68{k82h6!!1Fwm$Z6ee)BgTk~sL@$i0CZzKdgDLe6uPUm1l zKS<42v_BqI5q@Tqf2=^7UX2x`mEyXh@oE`y|tIz0M)4|<9EJT z?F(w_rui9-c3Z#(P~3vR4tNXDO!*>cT&z&GY4C_}CRB+Q&HC0?Z@bfwq*N&DQEePr zNd7IHuN@zt-}Oz@>vwDC!J+8%50CRa_4MdNLvLbGstQa?v=izyqj3Mzvc({WPzyvs zF*0LW8b)zPWttp{_qC$MdR|Zn-%(|u7k@@PL?K2yW~Q+CQ1lNj+A3uaZ}A*VH%{$t zNRd&(@3o~gJ+8#Uj%S$2`IE?!Gy$~@=$%J(WGM|9lN8i$8anWOX+#xiHo6-Z361Rd z5(5*$c;cVC=*(wJFnX~Dbfak7iBFY+k)3|L9cIA>X+9+TW)T9{b|cJ}#_MLSI)FmhtyN|nTCoD|>iU7I+-o;xEe1DmGSB0)ykG!^@2}4XbI{Ugc zV^-~zAb~H8%&(g0X2~~WI&~Hg{o)Ob0#)RCs)6fgt6sV(aI@{6p`GK9PIf$VrNETz2qq_nnZtG8xeo=(FxuiXX*|O^iD42dHTec`xYprki0|8x_yJ@ftaU0qr z3Fn6=Rn0~N4}yq9GvtoyQEw*?Z)RS{9|%mf$$@{`RriHV+3H_diK6)6Jo_T+ zD0&`%XO;&}HKvpl*&gFS-&3_OMhnaMkY<%|-;kNr&8)dn^yjrt4sAGqh1p@ZVUtb2 z*DiSeN2x4xp`AA$GPGopDe(Y5VngZ1OdXq%>^x}jCu27#(fA67P{}$Nw>Lgd?xeZ$R~3CH?#{pFhi~(wUiB?%Og#8s-W#) zplHBK&`Elhl~~^bvTuw~<(;vJ&5R@q_v!w|t|UiVR8!6rDTh(J>EbXtonenReKH~nD{&X@EI>YzfS5qRN!qw*~oHD$w zY^)f+c3)hMzj&DLS??Sq2g194RMj{F1N5@$Kja5ApdX~J2;xNN5XMMA zzePEIu{>gZI*Qy+fJ1tpUc`caH;0dxZECb2@xT~MQB|L30bk!x6;oXur(*Zez#<=A zup;3k&r1gquXEU1sYuvytwC-EM(~`hw%i#&GW0%fK73EpU*OY5uONoL-!V|vVd+907Sst3lZXQQ*n4!;d40yYj!D#ABBdDSJta=^0hnRRf!fT~ zM-E+O=s)iRr_)tOtsZ7Jd3cBuo+;AZF$)L9VT^R!(^ z>fy4@A;$BmBW%;FU`$7v!pgZi6|Dsa zH-f;SR9r&Sb%>^go<>944$IgXzfbMzSQ>r*Q045bz~5atsj7RczL_|`BqO^t{s@Nf zn$7~bG{E`gK3^}ECHN|+)F&aOtB$&|rEvS>jWdB)kTTDwxkFL}3j_>k&LEPHXfgp- zO66N|KIxZMHqC0db$q_G02GgeFf~`ZP{Lx{NutQJfIu*f`CEkPU#MYHs`;eWHNSq> zL+XCx+JKi;YBW2Icp?m^ly z7X;YAg~CD6F%b7|T*J<8b~p$3QwC``cjrzhD8^%h^>pNmI8r(W=Eo!Dd;c_AaF2T9 z$EJ@O%e3b7ia$*;Rs7hug#IFi&mPm3iOtPrIfh%F2!&UB|H9NJr=&w?lbuI`D91ia z1RLV=QcH2&Snj%N;PY1b{v;CDFvma#a~^#`}q2-_b|kJX-(s>Kp@;WX@bH7r00H`25nJ{dJZ=i z8Pr(Aln?2{^im&QszogYaKVtgirE+XxAaF@4oM+qG+R-ot3*PbTf;ZxGBS$ykTrXZ zYbU@q7~+;4)_ctwYb~;u!)lfiq=P&0V%C>XW@?62Eo35e!=uZH2uokA<=R!xz_!+` zuM>#5ZBI0E*E8CJot=ZT4<=(5eB$1ZoXRW?!8n9Ym=AV*5C>eP{c$2(rakpR7C5gS zfzcr20Fb3(9_2oYB`7smGlvd6AkQhB6@4Mh6SFH%*f>eEuhfFYZ4PYDU#xlFrh_4V zSOboN${kquWtb{3lZo~n%wha^?s6Qo2-{s5d=-Hj=_sBMBf8iX z8DqF*{t~5MZrNFMd7DcN>dNjrT04t-GK4u!Oz$&-?y_z*=ktHN8SV8#_@7rQ^d&e!yO+!f*OTQ$4pmn26 zsxD*{MuISJdJu~1hzU)<8CW0}FMVyVNhM$>CZ9!s=g{jXsF?c4TDXfiEPo-OhzgL)*Twh89Q5fYBf1GPiClgZbrfAD2572zum%~kKC zuT%8u|8mi8LB!@ioLX%KY#qqVwy$tkcnV8{SzP6O&MbxSH2bGSm=(zCD9>)B?#h(M z1!J3YqYY4|c=dT;_smi_4nhXDqU+A_iNcRXQX;~38M(-!1I4Bes^wQEUqX`A2D<6F zdF{dVx^V#vz$@)^niN;cah=awmgt$Jo_idyFZk%fMdktIQnTFW$_*I3=qE;bdK;|U z3FjzJ?lUpCAqjq!m7Ef-B16rBxkst{VFos&N^O3kCC!|Taq+Cv|H*;6vw4bszr_`b zM=r^BwN!(bBqd^b@Hv!K%Y*g8zx=8-4BAZ?AsZEDV=EGX~=--M+eb?}ra?DL_6ew&DvBQf<7<5J%?>vrF0 zY<=l}Lbsmt;=IxwB*9;N;==bnmjCindu*fJpf$^rJlyscOdQUo%INb%I!Q0CFBNwK zMF|W3bqIsfQIqIIO6Q2{6hjvz)L;}7T+;9A2#9k`SD4n)fVn+*`tPQUP)uw)o+_jf zU<$&KnnjR-KQ*KVa3_ol%{rEnd^uCDYLSwg6o=EdW+d)ocAL>(F{3M=XK)k}{{2&l zfoEd@l7lufTLB1LY;;}oKdNLzUTu^v=oHdN$qYs3CE^8#3(?KeNnmEK80t8VKKp_` z$R^2fuRxFPKk-qrAqNkYE~qTkJrQCS@+uQYw??WnpVt>6gW8?6bn|cH$}w|r7r4{n zNVB*$faL;;+bKbe!<^~z7|Hn+{Uzf;Dt?)_$IA}O=c<-~G^7m7PO!s0+zZgkKJ7Xn z&3_k+#o5^YQtH)rX1u}Mxgvgvm*FXOc?FxcMFcc)2i#zDk|JM^)U2_AYeO5V`*{B> z1$q^3KQf;PCMgSAoMb9eB(B!qJr|<+C*|Hs@Ou$?hR9IVsPq})UZt1az;HjYNN2t57p8DQ&d*w(EZ1Kqqu{0eEo}7iZ)+>^9j-H#-m!ghUhoqkD2WVp|SNT161aIHZJj5sb!PDHzrA_&#pf> z_ob>Z3hiM}P8=XAFfmntCeAJvyE{Z}o8@N75_%pE;G`M}f7VNkq`i6~sE+^>5>a`9 zbu(IZJ`7>&_H2IR^VD0_Q^&sEc+D@Pjm8$cc!E#+2J?pAA_IL;G0Y*8Y;Le)hpwIF z3a{(sNKz+6Gyh;ELD8Yf8LJnLcujzh&2Y}K7V#~v{aPnidB&d7!eYWW25(HbJ@b#N zD#`qYo+TPh6dvLW#$4Xyt-?PMonKT~rjZ+y(I8h_L0><9X6CDs+?>SVHZKB)^OG$$ zb<^jL<}P9}!5A8oG?gwMYGJ{5$4di{qK|gJ-xum2QZy_*=W34U_MPDe&^p7)T_veu z4n5Q4cyOs_VoObWupL!PJ@y~H;WRNbcqRaLRx!Q}c$B3ZA0i*hD!;xD=Y>QJE&sF2 zP*S!Cgx;~jt%SYk_E5eu#fYwNwzMK4qr!1L%OBuDEvgUvDiLM42_})atVHp#><_>n zJln)I!Iu6b`&r{=qT<&4PR);jMREt)2ca9y9r#Ngivb9a z^8^<@aQ#zz%e!Y%y34QsgO_7-H1G_)+8jrP5T?3*#a%-KV2;V`@-zNTqYU!0*Q5~@ z4Ns+P4slm*d+d~cT{|~}G=|=)esJ~Rhfb|WBf$_V%^^^KGWa+zL|yl`zzZ6eAmXz@ zSB+iS8N#e$@&U=jY|#2otoK&LHRMn2_8lcb1P;x6p<;W=@JP41RMd%-cilaLySkg@*SN7G8L8Oeu#&hbz2J4ZbD&dYB-d@Aj@*SLjK zE{+9M^=4X5A}rLIod%j<<1o02g-{4KTSdJtVzvIFFKmzjsmF+3N;{b_j#HmpdM6s? z8Kn#>Rbe9Sp0AxGJ|hq#E1u`p=XNVS0oky1>f-O{%*;C9E1sXYwEL-LX`Z5L^#RREnpj#?-CFYjh@$J4yF_iH(-H^qVwJ6~ z7~j?4-3*E{Afa5Z=FQ0%;Srr`Eec`_F2sanF|$l^A~wIDOMWiRwnM`@vj-Kwz4paK zQQCDYPuMM|I#R-bS**pp`b4=f=w&peoIS+EtDY;N`)Bss6iT1Eiib6@RDpN`GZ2YT zOGy!aLoucGqd$v4j+i>YA66jXkH6O6Shn5&p@kUzqs7(0-d1Esh+wK*soC{U+g^Fw z>13;9=KSd_#aEbs0`Ii5do3~x8S9X|n|F>d5Hyxxr0V50ShqqthCsjnZhAC; z`+fcr2HhEX^C0up30?OpLqw!d7CsrIM5HI2l~nZ}vNW_N$00_>U6nQH?mjd?t4qbk zb^?!+s{Uz{qtliw)U33rwM{8UZVdM;J)CZrM27vOy=ySAd;-;h1M;n}EfexcIPr!k z!m4jh>75+eV-bvgT*|gn!3i)e!TfcKby|gP!0h6Vy}WL4!_wL(bCrTBP4l%19qOY{)ERnem7GsxQ%I z*l~eTnz{k1Tm*?1MNQ_ByK{LeCY>e1Ko;1V?2#?&Gp)xzOWk~G#}1|L5C8=vEu%+W zO}qIaZrv+5U_s4H98a_17U@)1f6!}n(xBFb^h z3a4aQYN(rvy((2p)86!sR`j4<35v~|yUwDam0Oh_ac7@a(mZy=s1&kVQ*r5zT%GA| zOY8_S%AGEX-=9?%76t#km^&=Ar=trV<;CH7GAUCVLmuO9Yjw@XAXiTAl{>JvC;-9`{&|XL z{A(?oIlu5HKOUF!UZ}~1`1XUA)M57Mz{{9DycM|B{wA)gJW{>inKW(EMG!vTM5qbt zaRj!PZpg=Bwaoc&$i;l09&Usf+okMHwd~@z zCRO(8$}mgGPtM&3njp?g%_9#Is&|PMpLQm0!CRW>4YRj2Y^|L$JEisg05$2$*Pma2NQ>>x|5;i-;Y$$S96vz#=5j z;>UDW%Ng%yQ(iW&CD_{$zFo&K!}C&U;YTcfy-7H67zwjI+m9C*EWcEJ2)M`NNzn@2Q!t`E7bOX#*wf=!In?+!jhHE(SIWm!v)l zoOn9FA}svzVxPF7=ArN>@Z|rBrkZoAdXsZ=LZNY3w8hq7BH?sW1aVEhK*0S>9JC+Q zULP&gwnDcHP8F2#UBNc5Sto;PDC6zFj5k?C2zRHcF57|Q(cL<+v@MLYiQgiAl-vu|!`ip$bfH2-$NK@JLA6(lp1Bp1O8 z#OPYtMGlN+jEETgtUoSTEAIAv=&Jc@T@GZr92=CzK{VFpH-9dZz~bIH;V zv`)%R-{@jF@@^<0_$Lx)rY_?fTRuFL5tMGeYkw`NpBJfs4>lZ=ZJq$?C-bSDgIuJ? z37d8hL#OQr?C^WwQ_venNjqa@J_gt=$&=5V?p5p+-q+sh$a2EQgjRuhL>*pFw@>)v z=|Kbq$pxvCw5cqy@uJ=K9aEF_GAUhd=qaT4M088l{2?J)o58Nolz)W3`I5Nak~hDU z(mrwS*3zAnhQLLdb!bx-*S>yp zdbba55D3Mhy9+H`eJZt-W*Re^;Lr5UOcUY(hROz7#CbeAss1+Eh$U3=5OSzwBGaLV zJAQ-}r=mB7`{&}rv?8VctH*lPntLJ*^0C9^N|#CfuV2$qa9YEt#f8lB>gWKdCazuk zCqcC7$v7M%hDbkp1E?lf4X368kn|yH;&%L2Q;FFC;llU1@Oe_!*s2%S_yno#y7I4h zU7w1hy15;K9|)c1Y@H@@MeoAwWTkYu@%A?@f&M9J##2yKjq8+E-N-diciC>*5J}1Y zeC7mLUVp{^%!8|2zWU>xYAmXoQ_`R=b#JWze&QpmsjLNDEair z;(Lm&RQZ&Cak-5}5^z=ZbF2f23!Mc|c!N&@HQ^R z{)JNYOdyGrNmZ~NOA8zj5O};+CPxud2!#uJ+}WRCwA?w(Q&pBL9^w1M3{xX!U9$iI z@oyq4(?#U(sanIg;;f`Kb4FC|9#cHWm!DtW&}dbtj(5YO*qeUyKkiig>YlR|>YX2{ zq6vz`vt)d#d<2+7TH_uk+} z>KY@5@6BG>vCJeuJ1gF9GDr>sKU+X|0hYV3R!&AuOatu?L5G1cXzZB{3}Ap*$PvsE zfbgXvlzErQ7!lMUb2@iD^^3}RZkcKyUi%t?wL~NM#x()+LG`@w6XKSct1HtT4(yl) z78X|=db*;iUwfh6>tB=bSPQzBq03L}(7IDYaDi~UnKQaWpY=!nm3fqxb zYZg45DkY+~W`>;#6ejKjV8o)xT~Kzgr&1@ouXc$M4jm-Rt#Fb%ZPd!?FgM$KO~-3y z`a5GI6A#){?A<5|T`I@mEC05<%(srwBJ*PoE0%*SVU{>IH38zSce~nf=govh1aqbx z`h>T>qjV{Qt6pe$stDa#(woy8jKiJt+4f5+SuBcAyWvdM%L@a+ zfM;l&HeA~9jKZVfdJ;quGuwj9Y<0yT?02Nau#vxspIZxIdxiSJ2{Rfny zO^J(9(X8YN&Q!p;Qfavi9s-DAIHBJd_+t!&CnF{rD=F0sN;iEnK$U0w8dCi3-F&h^Xqq!4q{Y}vxHRk%RX|tAQ9jjW)M`kFT7kTbDwNh#H<9x#JGQZ6=e_&X@`RA(bipr~oKN zEt?k4l_vZvmIuIjrHLB>uw)}>vy*`efn}202@n#U#H9b6$pb z@wQ{l!f3mJAD^`lJ3`j2WEW@zR7%y;mq0_%y<0@7al_j(_y<1wRkk`{p-KRRsfwU* z<)lxrtQ<$94W0y8ffny4ZA6C-YXag(3a(ov-$k-BQ~d);S>zxV-rFq%VMqR^DfGz zt1Mi4WBJ$WRF>7kYb+A2+&`oMFi3_8KFDVys+6wSN3x@%L~%cpRnEsKQ;8`BRDaDD z3HoPB4r6`}c!#ft_ursU;1Y@^vXvXU#h1SHsd#-?EN==i6{WJ1SxxQ3hidnx7y-#m z!-GV^M6HDvPNio?)0g=C62diYp+h7wl_VzsA7ohk72X`tTI4?6c6Dsfl+z*K+nPo~ zu>>+GttY{eDASD{M$eJe6VI! zRjmAZDs*c5bBAH9GHMoJI(L(F9&%#jH!BQB2k0~va>V)Ep4Tq?X2zwaeYjlCICeg? z8;7^Cl(b#)(*%z^Onjp3rjYdWtE`7iyLNq|wu3`BMJJWIxU&Z??<1xn@CX<6 zqm_dTGh$-ZU%G6)p?XPYLoGGD#9cMjWj_%ePhJrzm_DK-rA?qg{LZruFp*0+um7*h zhKcxzTpm$#O>u+F?vq%Y52T%0DV%R)BLg03tT*!0RG*dP#!@$K$hW&>%l!E-CG>y^E{~<-z3J=D)Ah|6cXx z0Gp%C^lRi+?o)x;=-MTF3F%(>;~D6pVbIE^!!0Kf6dWf1v??02#^!wN0pE1-?T8SX zH^6|C)3|}E`p@lR!mLhUlop1~*@5O#tCEtEL+^LD0U&5RxW6(&p6&k|`670oflliX zB>U8F2~rNH9&~!Dg(vknlAsoD1UM<4;h=gRP|(&5CEk;cqEPi3g_HPG1F7|&f;)(; zjE8nOHw`&;3wS0lxqW8GW@1Xi@@BF+hrU>VL-xigfnB6kH7MmrAAy8z=~bCe*W7mk zPJ8b?rVh6^VDqa@TXDV7DaGFZi5mPkSNu@0>)uW}W~|pDk2Uz0CRfTq-DlV)MGyD8 z7rQcs*p|&+WO#=M!BcHLp#6<_BN+Y=Slbhqha76Zj<|FqLUeaefrBnEG95_Fh)OR` zu2)z;UZws`nG__OiL_D}$LlnWJ&x>$^|ObSvCH~h~H+dmPj1JS0b;kxI;OV?*paiwYhc z#BRGVw=`Qt)pmTyR1z)g?Rgk$$O;FdEcK|pouUkVKv?f!z@ehJ>C~r=Z0vn9kb=53Kb^$Kga-*=41Wr{p4I>H=oHudZgH1E1WgO9!F_2YfNb!}1g z{f&aaIsIB|wU6ucG${2om)0BF+Ar1!s_oAiDm!W-6hB>?8>7-JCHx^6UNPa+MLq(i z4{*Httc}ZABDk{Yk9PsXQ3c&maaB{x7Pd44Oow_O3FC`Za$CYtT*lpRRT=-ecvYx0 z=LJXK&^g~G03e7bcdeN+Y8IOojg~3lq+{D&yX0h^^@{_ZlHe8Ff-tDKl==z|w-NCQ zk0?^bZ%w48yM~70sbtUkCM-TZv22(TZucIV?y}2P6}CA;1^tU=U_g zy~n9QFFe^d?1+sUd!C5%I$hTev-py=Rm8aGYO7|H+0pL&u5YUkd@}=yF0_``O3I$j z=lcHovp=kQtDHn#SDT%z@hsMf0{>WY{!L%TF2IXPN-*r|Ky@8~gITli!XBL!G9hz| z`MVKn-i9c18HMbHPWg+E+ zCLqcy)}%vn57Aa<07Wq?m4^~6YkKDfrwK%9xy?to`8=1c;w&RGoYkl>NdLqkTwFCJMU9hZ@IQyXV0}gFrr42RJ9t4^P^I-6;9{}?f}iO zIHJesEgFhXSsAlU^aES98_sH9p*17Oj@Ab6Q`-~A6j}){YiI(xqzPDUS3U%+wV6Zh zT#mszk8#}1h&--J9anuBKePchI6;#@_07xf1_RnL&WZ7yTUDwnZnKatLYM;qbW}W@ z=@6OP$`5YNeaCG5VMV-Z0Sx$*0yXX3ZLv?T*EJjAZR0f#PJ5Z&91cRk;+mBm~gkCT?=(yM18jNyTd`FeRe4Kf%RU+8ZI1M~M`(u;C3k3{YC)3tT7NA=r- zYGzz81axXjXPKl+0Pxw@D@S2qmu|&g72r%vb}MZ`UMHH5HLgu;3jxXH5O;pca>q-E zFFrzdGrUAQ{A&U>V=Sh-fS3s}WS$m8PQ}+8{I-E-AYf3Y+nbuN2qt8LJ1X~OUDlm? zO(UPLqEkesh2EeNn*LBI$dTt@7qCB96K~+W!;8t$0(ZjX9Z&ZqMff7sb<`%( zA&4n0iaKh@vLj0om(WwW~pX~<3 zig+u};dcjGK2>k&)m+wKn5eB?xYV(cg?(gMEnEt0z`Y;PRKY(#{2 zuT*FU8pAUSF-u~NrQxLk<^w2d_R0px#|6XV4k^9(w=BPs^=R7igv?~38jTbfKitFaOkceD1gEJXBS{jLijEfCMMh;o?@-f+^9%)tkM zf=kcMcAqH0Oo*^Xwd5Cce4`E4%%?BSdVaYY6z_+KxFSLgI2bh+z?_M(Zg0SyvQ;dz` z%oRGhp!)-)mK#MZCYtEdoe=^tt#7Mxrp`!>-~1k~TZ{Vgbn%Jql=;!Q)z0Gt9E$C1 ziW^z{l=YhcL`p>$-lj(=2us&CljM^rY^Kui-8(l%e0nDn47CN!ptl_OG)99Wt5U|m z+Ff!UpFJHfpYaKDVBjhS7LfLh-8;qd82k!JpvI9Vyt{3$R6!krV2>y8x70=UZw=~!G5ckb0LNUW7u@kdmeKu7o_3d|%ricbr-gBWZ^*YWE{%y(+iX8jcKxVNb9zX&kN*px(3>YiD;gvcAV@fGwP60oavLKsC^vyr`Rb! zV}n|O62{M-WdOw^Qv`H=WYv2HsX27K0n4ygN$tRVDbq4P3V4@t_l4S)lnpkEB z;qCFkkC3!2LwY#X`dk$<pR{Wcf zHs+2*E5gmVP7yHhZFG+~SW*12@H^5}=RddA3`Z0&_81{0&7210>%H&?GF_e++&n?L z@>povzN*p5KIL{xwYwM2mV~gKnm@6rCmE9_T<-kCEr>VXkBKzEs{Q{5H$ce0)X%-D zRk<)7&A=~$-UjcvOcXd>1P9oi8mc$V1j9W*Y?H5j$G*&2!Y-d^F{}B6>t6K-Z-m3d zpO$(UoM|t@VSt-s6j^nBRjNvg3b(~6lnIR-r?e7fEVsBdfOG!G;i=C#n~yZ@a%L12 zeb^D>^eswZ1Q2%sj4Z?s)d)A4^doF$dJwvcMh@);k`87v}oRY{G+| zCMN@j*Y}C|99~O<3FXBO-$Z&MneZHx&2klS#7L>af|VPt{Yr6>&_kA(Vn~2ghwnF2 z<1(~)%v&k5)+ZVMBR+frWizR$+`I9k#M8m&)z#p4x zqQm*EwsaF2__C7nJ=M+WEb+d9O-W0%`lIt+RMB-59+)dSpe{$`$wDYvMvFi=sYP8! z7ceYd)rC|1Je#@oPyj{bkD*LwdUy_xz%iaKVj-S7MWR*TKr zzS_m!@FgRHk^9zrwCq1GcQZ<;)1K0kz{R=7XroI2NUKIbezs-WU$L>#Nuqr|vgZ76 zqf(sv?`6+{5z>i$6KM4A?CE}cD*u|f1($PDIHL#uCSeMVq3`3J!q!JI zB)dMPB1h68pn<8=291{tj^vzw>)Lg2S#P&FEZnS-R=|LF3w9of*(bO4)7RYqp0OnGM0_ zmyg&Q!dG?b=rD_bR{nskEz99wTPxqQXIuN`*udBj-pXru`?jN#uSOn6T9l_aeqboo zAG9A3Lf7A&EgNN_t*KV=s!DLaiK)j3u%86yzL^l5%V8s4iiWxrQsNZVWX zc`Cm>_^@}VO%8yhf|@2X^^9ZHkiwTY9h!y=qxG}78n7kQKMXoweOyji_7h=;VKDj= z4*$=_NDqnRUNc242O@Jz=l)C3t!IV^dv?>gmFEl|^;X%p^G;!7G~5m-OgkP4%B>S+ z9_lq8cR!ZB1+oEwVqH11SZWBZvn%XQms15_=jEPpGKUuk(B^NtTcJ0w9eXB~j#- zr~32dwS&_}h)?%&OgQ?UkLNP<~V$yxnodz#4+*;`Uk)>9m|+zrKv{Ki+@{lXnrjl|&C0KMwfkE1-cc@lEV z3tQ5H)x~k<^5g#i5V>5SYra2(+?xRo<+Ch;63j0D zXC9%5PZ*H#RP$Ggw3^M^B8(-|ts{!Jn&m!6%iClEc}4n|vYu?!Q1Zi@reVuQUO^FQ zIWZwtQ27VT=*2AasmCuO(1bt9*02D=m}9@kxYo{{101uE(Q_qIQu8W1BY)N}!lSSk zUgT36zq0>g3~}c^jpxA?iM$w<#xg_21|nw_w3cH#dN4@+e}O|&TI(xG+lHz?%4$W{ z#>SV?+?#8ygmiNX$B6WuO#8*C5PO6b>wqlY3onC0_lrnhJdK`5*!e8S=65BW7tS{NM^>oFq}Bidag-UQ zEAiAH4UZU$=TB$$$S{dXOI53P%M+u$A%k_o;(V!yIj}L|05InJZF;;>(!6JBLid9B zbEyXHx6iluzZTzH5%<;0%PR5RK+^^+z$caZ}yP6!E_55GV<5Z!>r`}nlMh}6qWEO6AaAYVt4y9Grurdc zIPUlo6(zdAroDeVl4byK>xF}wDKE08E>1SpMSDmDF`L%C zDAvJMcAQ2kcvyK0xXzeN&dQSJ?c`3JvP#tjnK?$*$sgIq#@SFJyxh7B zRnvRZXdB)ia_#M9kDyNtWC&0Tkb0dcAl0O%8SJNG&#nCvl%gTZ1JTe(XrF0Qh1TMV zNEI(|g87qtTF+MBbER~MmwE)U83ki!8wu#D$D9yqIK0|l1D16oIzRyCENEx_5r*~& z?Vv6(r(bRI$SF1CWI3wOI5bLQctKfaN!b`vBu#GVN7mbKXLI+Q)a}w1yoSgq9X0rZU0y zb-0&rBTm`QM_ACBB6KImkKNQs5LzOqLA9lJWDRk=RM!Mo}6>~WJd`!Lc@%g#Dn@vp*?n! zTzD&Rek#$%UX8$ig(UqQ#x;v-_orf$V%#N7m?2-i8QG7|OZZxaW*dM}b$kVDv>)rM zu%yp@TVK;u=o(pOH&+!evRo^KXxOKN(jU;s^Xr$}gJ(({nH6S-)SZNH!hZdWPi+~# zpsepoV+)PiP2rzGfz&TaJfXvQb6`A?Eoyol=&K(30xO%&i3bV=%tUghN+c(P7IZ0e z_NS|S117s?-(#CC^_;tl;n``~UXSYg4~mf7Nko`3JS@t~RO64?3i3%1w5DvyO|OG5 zgTpr7Fu_C=QV&1$q@1T3lDitn`57ppg(&ObcRsyH%XE?wA2dwTOBrus$iEGoexnlY`$r_77Au&)a+6rQ-95A2H%;34fhoO z5CgR{79j5&2iaK|`kjK_E}hgTCzbkfM7(wIJTxgCf`Zbo!JUr!josLa7D_lNRI6C zu7sAvL0@1GH?EL?YUH8bOC}6$y&3IsSDb+N7%NSm3-Qxnri~g92PgMG86zn4!l{nZ zdn+MG4BT}7uRi*BH1x9f%qiyZ286WItJ%M6ua6ls#y660uknJ=te*9r$|bwhSS z_gTAyYpXDLjYsL0YT7=<9#+n6GmuF5bAw)o1To%S4y4^8FGUoum(wJHT2v~JyKBF~ZdV>sAa%3HMx8QIT126Unhwjh5JKm566%Qj&8b5|r9e@TqV+XEc ztkuy2#P@r^8wq7c`Nk0|@Dex&U1~c#S zGjD-#bZP~e8Whc9GFukJ+=gCqL&zlEp3sZQKU%^wOp5GK`E|)}9`cl|x7BD)!Ezto z{gxmN&IycJfb4iuxSyh_Ze`^`l>OB}NI>sqb~IT$@{EWg;1_L4jLdkSmV!uXG^1Ya ziuy&73Lui3l-F;+Y67Q0&j1nx7#9zaLo`(^p*TFaSe`mtu{e=W{FHQ>QOW81D3hDB z02b_HYG^^!CyBd+c_glPL|`?4t$MQfyJQy0h90 z*E+SR?#5<0ni&|DQ*7gi38GKe`k>1(Y0izc!i-ij3>A_Fj_-6{u2x zAgAOJFHZxv@_s0mV=3tpi?JPf>;9S3lm$55ZeukiAxlz1Q$llcafu6I8~Lww%_ClD ze2KvyVKy|VM2}BTyN`+S0`}EKkEP1!lL+tSdBD_^wR%{BV;57x`|Z05f~yx}LGyQp1h9I$&yA zHI9zc0v%|a^~uz`3$m&%cQF2FdT3%uCBa3+2o|n}+BQAu%ojDS{}^`gts*r`TB(16 zF7??9h0l@-Hu`Vd*muTslY|B-Tchjxi!w6%C~jlwr_C#W96C{O6xt!OhX_7}Yne_X zMt(3h4bmlXDjZ;5-lRCAsuCIPIC9-ZMKv2uB35<7Yc~lyPuV)u&;KW!ic^Tv#R=Gr z0|-_&Yt}g>`r1UarV_8KPmwr{E!$m@*Q_(SQoh+AB%}ap8YD^Wr{cmXBqT`gin!S4 z$mUUGUG$KmShNEZw-PNCtSP_v8JyINag?lqW_q=-D8*-u94BFnOKd-QV^{+(rLYkq z?`FQuCZd}R;E6A}GUXJc)Rren#lXNwf%Da8)NYgk4JpzwMl&L88xB5xW=cER{;weECRucJU zlXkeTa!5pB`ZH>!k}du~tq`-lxVcJ9jgvR8hznT))9> zPyna8sRQ}z*`>~`u~EgaSDSDBWm}bbts|MCY8RQ^>5k15Lr&o9F?W-MCFy`Qy78AYW~|(VzQ--zU^PcIhOL~ewHXCSk5H0CBVJdLwncyZgZE1$X3CN&mj9ykx{(a{;_h=X2& zfF;#1tzh3EN3DpY@W`cbpURs0I|@|TgzhEq_{wbEqGD*_(mvWHsex%rJ#Ygh<#n;d zsteWMS6d-cf9siB>HH%SID*1<);YyNj}Yr^)fVQ5zA86nTVVx0ghd6MODX=v)OXF% zT|Q~-HbAkiCFXj2?C8WBZ9S@8B%_1yA0zjQc=%GCh3_v*nP33$a@xCVed}`^^GB2? zmSUh~w25C&(5tK>bTD1n#5*F5(LR|!LbUNjhBBNwNs2#?Fp>g>Jn&QXBOI%>&IB+y zUcXJn%zah}Bn%p@(u(LoMDHYwoM=%aG-RLsS?5ZpHmQ1e#~g>_tWJ{Hueq6ly>czm z3(03O%O-rj$JKCkOP;&8=FZ>S?>CsNc%;y#nUQ>tdl{Pki{(&mcJe8wx%G46pAdE? zYpOlN@`z5EO>Sh3 zMAj5wESjnksT1{Y^xm(MWui_V#$}X0Lkc*X5*;86#irfAmK`sf!}2S4fikGA+OJaN zKA_HfAX+ETl<0+hdfe?Z(5Nn>hLenFM4v9v(a+vC>Y?-wW8u<88AiwcLv_t1(t#M> z_4gTEAaIRNHONE@#oLHF?_B!C4XL z02lkrsMZsGIRTen*5-g-Xxz!LO^6w2YV6G3K=VZ3WGj*868W8PTDW%vBg7p(JnvbV zP=QbPWwKo|$mGSkU5^E0b>S+z_iH`9RUO^CNM*(J9I||>F@U7_upqwfQp1cPV?woa zh(#Ki2!u-HnEM4csOWaNKVuY!N7*&d@G2n+0P2$M?87 zTF$S(h&m|pR?21iq;>+9tEo#(sPAHm6UJx32;0*2c2zYb{8rc$!)5?<_wYZWjy|XU zmay764__-O*bAGgPy7+$gQ6tQ475p4`f13D#7n9syApNk~Mj>X?+qMY!{#e{*0t*6pBl%FVxqr zvb4-?y4Bj`DWG#S{jekEx6D;(2mZWGrS?D6sPY(30Q^l26d?l$_LhcKIAjhIM%!MK zwH|cxj+sSt+##PK1VJv5n6l>ullYt@t6@D-wBn>d%r1b2P z#>Ut)A2rin3+H)t;1<)mYoZ2j@*p8!;g;~4H< z9FPO7ma2>$wQd^b9zbjkZ;H+gy=82~2`c&QMpGn0zD)Z7C2gX-9+s1JUv}t9GV#~G z(#&MkKXYlk+PFeLYX=#fxgZIj3=LGa-twswfsxMXdduXej&6tT=*A-Q&zFt6P8sBs zgLx6-i?!>Jtnf0GIcBL8%bngda?afYh#}&)%VHxqfe&G-_8A$N>W`4HlK8qyI6>i; z+7(Q3y@ieNK4mu-BFPeGm=dQ{qK(~+lu{#hHON*i-Qz#1f*!AT%zv2NlTX~5e3;K; zEB=RyHi6o$ksui}Jn8_P)tP5Tn<2EpI%H78Ws2Je=X`{M$Kl1TD-!`66_s-tZNEy6 zKfCI*IPTpD=2ps=m+uebM_0tJiiIIH63Toa=RIO!0?5WY0NK>V)E{o0d{`IL+GdLl z%(zaF(o4Q=E)nsKsMfpCT0K`iw?YZS3lcKt6ZU}OZw7lj`d#zEah=v&AJG6mPO{!Wlfy``Q zzKE8j_K_#X_Xc;IXISOaXAgVZ;?~ZwYZIwIA}jYe$cbT`C{lVgen$iN##>b`zP0yM13uXxYCKkxkD!7sRS#2`@+l5cPAG5^BPm?SOOgq%z#o*tk5$V{;tol3|{vweR1kTwCS_6LFgAbCb&nx0rR0hLiN7 zC#98_G0PEtl6iylt?bKl5c825#@kV1fKIa~fZ@P|@I z#}DTS5(tnOW>uIP!4Zq}((k+zEtBfIvg7i9(#dWRNB=P8C~F+fch?3KifoM4?v*}5 zXXxUdjjVF&tLM8A*7(_MprD|KO>K}u#xJZ`TF2}P3p(C#K2*u$(xXOKm`OV}xNe2C zK8!j&a!Y-;(z!c>Z6t5yLzI99KHipk#E)d(*yhQ(Rf4Jy6WsPg>sA(HV zj$5PH%eOGBP&L+mH4bn%?iltMR)*{*oPpXNc?D@5Sa%jJ-rWX5`2qBq_vjcy6^CWM zmJ5aUwpw)*4aRlKQn#GI*7tjP=I=twO7$;(Y~`d=2MJ?jd{sU=jFa)tquq1;JP91@ zJ7XGmrv1kR+VGJymw^__W@+zc+>EqwJ4i7WDUwgvs~2zmaltlHcM(aq0i>Mq7eD!n z@$s^ay08~j4#x3zmNGWp`|I#@n3-vyLBYD}yFQmS3*gsX2u9Vt8LuOzFr66GLfR zj}KrIG+#&+UrQ59AC^$N{+W`fRdsrNzF>-|4S=6K7lM&Rpy4nR+EKM>qX!`P-?N89 zD?v(aQYR<$Bg4l($HwEWRh#H>wz+0>80PN=Ih^4{RDDytC_?sn4Yj0_04ERzZ&6!r z28X32e;xp-sBvs@H*jP)g92}Q4V+8E`XAtbV8|dzzD|jW^-ewMeByqeq ztRbqTFP6sWeBh!g;?64OFw^#-Uf z(}k!tXEaB<%`DU;20_%ry zVczo-*w0?n7uXGS3u1?K-gR7646oRkSdaGr!4%{<4pdhTRs#w-X$Mx1j6d*b=D#9_ zW}Y7!LV)bu;1og7h5!yOJPAHyHAK+09jLZ`pR!X#fWi#|kM#%(IrEKlYz?hiev0YCb_2A3Uq_VUv zEscN80V_}2l{J&ubm~=Z>w1}5ib0>x$)-1fD?G8#oNo2UF0gy?qa;0QHB4HIRIl6e zvX_OTswh(02-&=$HT1gJXM^JbW_B`cmIDU}v^$VsT!q`$0Ih+EZJE_}ltdfQxJ+U? zYqE=jahGFH1ucu`*K>dy5j6suEenTBimL#tw2RHOj${PcpEGfxf-h@68mxLg?H|RG zqIwlP#e2*)(rCQ^9a|bgTN2|@q;sEh)y+VWMm(B=`ouEty~|v9^43tn_eR2 znq0IkYs6>;U#*iPIA*u41}#^_j{b3xCv%-JeR&bk zUfTM)(W&DboA|gYEn}p4(GC<;On}%~4xusn?-8(DCh}l?g;jj~DQu+!T1Awjy)3d` zD?G~*ZAb00JZvvlB^sT-mIxF5?FFI=;N5k1d@JyEM@p=rU_!R>sFzT*rmGM^;U4ZF z?z&iFOU7%COsl3@4S{9mOJF|KTfz2MV)x!G(@jA;Tm@H%5CKsaZSbO8$CraA6wI z?Qx=f4u8wV+ak8<1$R34&FF;d^0=vM03m8RR7`%2@i(xV_q0oES)Jp{Y#@#m7Ut$F zp8FOHLt@)qdcw7_mFJryr|q^#BTjwfF*%Q@YHh3E{G2VrH#b+}Z;uLqjYN{T#ebv; z7ysV(7Y>)OF>!DX-((Za*Y!`9w{eJOfan$YU27Ks%>HrIp~vW1Y1YP06w)}K8q0cc zqfGqhj~=*Wf7JPv=2N#>++TpkD(^-1#G=}%M-e*hPax1tad>!`)P6G_?^Y}>t79<4 z^FGrLDNdDk6-X}BSFmF!BI=$zb|`h*;_4%l{7-%A_XM)ASBZec^+c&Y)MB);jkty- z+iqX2=(Y)D7$LwAEmeMi>Fzv91>Vaw>1m{0Y(pBB``EvIR($<#jcNjdc11q^iVbX6(VAJ@n`#Muqq-SqRQ zTj0YdQ%;JjBG4=7%xZtR|*LMNyqAE|IKHwZY%8`sI`Q>XA93c!7y8Vji^2P?tC zvF@IF!G;EoT-RRc$WCZApy z>lU3^8vo@UZj>`k-6nMAVvB9C^xd97sm`)djQ>7Ibi+Vnt?RZ`JD=J?pI+O#QRj>S zIp6&;Xe!;y@{TTgo>_h`+&Z;eCn!~lP zx~)0b;Z zu5`a6tmqeMbYtL7=GXVb@U30$Qoc7+-1AWhgypegGVt}s`ihNenvhpv{bp}&l&vrc zqZE;~yhu7%fYu%h1V?vw7Xv{3h{(NB02l4t?bKl+f3N2XJSk;UXW={y92sL4p;cH2 z;z)Q0P2w(5BJPz@gu%=70}yhwBeBphuyKyZisQHQ>AT`7N~%VG;|vPl;!){p=UC!w zk&0S-<^-XBAOn}2ie-VDY?HLHu{uCvEm4ZlXkuEdI^)daMAX}3Bf#Md->OdNPRQ}_ zbSh-4iW_ul{6bC(%+`#QrBrdxkaHi{%$CwbqdXP4Wm`A2#nWaQ`JOix@A{OivJzg0 zH6b9+3d8owZR4stS_F(PypkmWZFrUfIeiCKOjWKUckFSaipn{NS zSBv4*QVcTka4kw__Kq>Wd~OMz8mn0kanMn3JuQQqql>fVnD`+qbg0O7oRFPDn5=ReZu@9(+#0-fz7Am`>VC@8lZNRm?pN(B+tmh~l1FyY+EO z%Ro;O;MqYGY%bwK+)L&_Av>!+u>^#@jE>d)bZ9?7yx|4AjKK6TDfCy}#vhRKLqA4= zNj3MCp$sWC=7hBi_xggbHn%?5<0-0*NRirRf+<%X{=1gDN{rxYB1=mJ;^B_ zle^Z)Zn(M=__KixWELuqDBXxqNWBxOFmMVxHPi6=T$5vZh(n`vELC?%@ayp_LLq9g zdUEBn42H|eTfe000i;L58asbr_z*E9&+1z}YsHEHtk5Nzb8S7@Bl#Iwabb4TO21_? zPuwYtE}qWJ#>w8n+pZCQ(A4vKS`k6a0HzZp4KK#H+;|iB1IX+@p@XXiPtjgp5(?2& z!09jOZ76QcXZ0C|g-ayT`CP~la-700 z>Ft;7a9<4LLnDBH|IG9{y8(ZPsn;cFXcaHbOyNW>O2&}%<-6wV0RjX2W`@B@UDbdE z`K5?U#z< zrBl?BxT0wgIWj&gl9`F|$>f(zB^X3^7&!Jk)Y598v7Jj!#26AY0&um|&FmXD6}KAd z6tcyBq3hQWbTd+ROu*yNt&_t~xZbLCSmBLDf=sp+4ZOH})%7+{O@`C-xT*K@l|r;jy|(y=>`sQe0;Ge1bQv|>#q z^N873DV7my)gdgmz@*M5Iv*MkS>_60q$~jPA;mYUk7OUBapORXlu8q-GM<}=Kku%TsI1)HX4vt@0!>owv{0>!_3ASnC|}+a8KGk}6g7Zd&Q&aTWZ!b3M%PmQ2E5 zDW>2Ua=?drgg4ghC9s6BNV;TPp{J1og*mKCRhPnrvI#o#fyI3&Mty5F#U4jy-yw|; zTtL+@CNby|)y(WI&wo8Dc>kdkrMN7GMAllYo!#;TzVCc;owTD|uR2KX!rIgX)m&=ih-D!m5X+Iz#9kcxt&4@Sif z!Rps}EQ)4+S7iZMS{Ytw45qpLmxQ#QLAPH*oK(6mJ9VZ>SfU7X!Cc9Pw+bTg?9SgL zDJ_uzPyOLa%bm5UeOk=-cm1t>Gb~QQic5B2F|$c2d>5-gF0Cmvq@U`2S zSfy9BL$IeDij7_zsxtlXWvuR>`lm@K=C~@J@TEa(=8YyMclTG{r{SxX8?I2q6>so< z0@d8e@946}Tp-MH>fMVd6U*kse5Xr{-=Tlp!}XY@mx734Gvv=55OB?SRmqjXrH{XV zoO3vZxn>b(ndwmCnfS$HwbSE0s_UO@2NX{ClW}SGpY6ASOF}Rto`@ZcWtXM3qxoz- zQt~6lN`C!F@?rj>BeW@~8r{KF{a$r_62~4b#=tsL_3(nI&T3kyLQ?((@f{;p%J;x> ztiD8pgnep}MreMM7!mj~|97-G!a3A0y;Nnjm_PR4e%{8;792bi%MqHiAA;bV9v@rB zF_P`5$!V3GpgRLL^a@!vxZd zl?s_v*MP7CuiW>a3F{b=aYy@6L?Pd8ePjzI!!F#ywvzlMPg&$srL-(-fyXIV$ih^0 zgu>vTp+yxaCXB0M=Uno=LQW@Ts8;0^v|aE z(LL(V)wVW!vZRL;R(WhdO_EhNGHi)9b|J6!3~RTl!g1mB9%Rd6 z+o*I!=M>KoKz?J`^tYuR{<{_pk41H{bvnWaJhb1?q~s;X_Ay>iH{}L@X_N+pNqbZE zBq|0vZ55AE)#d8?z(Dhkm(f=ELRQ!FFztlZIa9VEuMVfz@*LeBqXNsUGOSMv)7*hP zAa?ldy=mSuG;0rXD4RNu{eXqqGmKDC1j~3mj`%}Wmj}e?nO##|w{`a*ilf2LfD%VU zht81wuV{PLmHLak6m{X$tCQeMkZzmHe>wX&iCwB|?#p)<_dzmp#JB@;jbZl3_+Q`! zo_-1a&}~^mGy12Qb}AbBqaZm@Ife3`QpM$v?$8a0&^;1if<`3NVe3#9LdcH}WB0|K zf7V>{`R#Po1fte zTCpO?l_of17ct}-;o$HpiaaoniSST7D$#z=rL#Fb6d;fwhQ~hS%Y|*5R&-|d(zyHo z`##US8@q*ugHBD_#xf(CRud-|U}}l9ZrX`SkM#34+u$^%ahXa1P##kI%CpkbMNiR& zJB@jfPa&oH^hy`&SSEM`9adz?dc1=~@0g3Y!o1LC305-UuDp=L; z!u#9C07Q*}=Wsr4zz_?@f36!z^R~q6EcwUL)G^bOyr0e|5Ha7&BIGEF@Is<1PZMCl za$<$ti%ZeUqy0WhLM5#yShY&-7-7=*xILQU^?q-B9l6zUK8G;4HS zrVuN|O8SaBe?oP~Y`-98V^VA@axtJo_KSvc$pWPX03SKvwt%i zXB2e85~m==c?he!o)(A$(>9zgs_XU3f5ohY@MtRI_K9sQb3xJ!oRpaV5u2DnC&6yz zQ)>zF^PiN-2-w%R^{+=!81XY@7C@Hn7uZLK(ipZk(<($S@KHORZdRl0kmD?8J^%b`ne=W=b*YLmecMUenpjI<%9Eoha8#B&4g4)^9E|lVDS$fpe%Sz`@c~iJ#wr(-V5hBny$%QWO0yB%i0&bZQW`P8)rc)G-YSs*O7o2c7By7%wANuK$wtTc zxw1ZF1CfdPlmiYKUCRgvyJ&!?j2?Q6;0eV(*HpAkJ(dDGJp0>cXT=a}#g!wk<~BLa zy@_E;Ry)v0%qk=`Z$2TjsLHe06PLl?k7jStiMiq{ef=+SKXG+pTX@D?U@UPkX#6{o zgME&^EVo)nny7CN6(s;uIINE$x_{lhgoFQl6O*57xhNI{$Gb`*dNP(;A;42ZEVe2~ zz|lI|)!u6MQi~f<@12V-2J-=A7vQ9luwY)>YsSfr|L!%X1#b*Y*fNvSF%b;p1Sc@d zX}|0<4g&jH@Rf*e+whSP>O0*=)kk>jcQ@7gHP+u**F1T&p;Rv4CI=r8-31?!n^^jn ziyJE35M=II7sMGcfR+knQQ`p&kis-pwZxroUz@w`;ymL(cAQ(@p?~H=Mj;=Y@mHM= z5DmcD>Wkq^x}no~dya8i#TTUmtJz%@7-T7VClpP+pJRt3ps(m+7J)C7ZM#>icn@@| za|b5tiNr7YBB@VyFgZ*{E~sg5QH5b2ubxP%jYAf0`t+n&U2KHq=#W?|3&@d6os;Sa zW&q~_aSIJZ!UaFm3Xoe+>LAIj6?C@cSR%Jv=g!}gE>N31QuPaXKJP`nAep}Dw8X+} zjh zUXdtm*NtnUNs?GEs!AH(2$h#rUea|A5ccj^OcSCu(h;l#4Qr?O5S1@05g9#X&P^VZ zoV89b<5q@E_vINSliS^CVoZ2?+7#Cl_GmtS><#Vm&A%agz-?N7zP?RCo?0D_l(WO4OGsPB0D8QZJ__v=*KNPTQh&m#t{dN8Zc7@VXvkE076OtvUUya|r{Q8{3kvY>F*Oc<^9J@ta^g!v>O8 z^H~RTD?9uv_GBF+lY>2mo0BIuDfR!NT`woNkb0D3Obiu7e;plav(a-qeZkVV9SLNc z5rkS=C8VDeIkRS?CsfGzFU%sa2U!#OEpMGf9DJGK3!bp6q&@AM+}`6KhHd1F6)4@X z5t_*l-iJ7e#BG=3Frl(bdq!pTLeth!tne`+d3m#zM#5kCl1(8XL(eD4#2UX4{|iN; z>?L~h6-urH^6*JzLj3iH$)S&sHny|_`37%;c*q1SNzJrphGSew!#ug*?(@wa99N>d zr-Gv$`W`=pjqsfm#=g{Ps;1`~TiNiMCxA%N{NlePO@gmat58)J?0^b|8Irz*}$>OcN-_A1%wwItVMghr#OZ zq4$SCa2pS6O@oyUHuwb$+N|zjPD9JHFZ;)Yg}2>bmI&wJZ#Ftl5J$-;%zzO~*71-^ zCNnon>@Q5k@a(*FLS`X#+x`Bder-C%Xs^?OZQn29J-0uxHonb@_ezk#e{LB;=@A+9 zQ#4dbqs?5^Yl*1=Aot2zv^nc$lpm3LqzMAQ)CzIB(v1 z9VS=3-I_%Vi=ZqYYkG^q6U7GT^s*u}iAS|%i{<>aop zl=IPi++VJQh7ND2<{AL?q2d6WXgRNtiLs@+9LA0Ly)ut*)<6FGx3)&9fJ4X+0pR@K z)!N`szaUZuo>1yF0(MU_elZ;@1*$+cDSYUuYu2)E^?1lf=VwjuQX3T$;FyIMv9wQ! zs9Go$av|fbBY0vC#^?ebZgkW6wLulSIpuniR?5LfB$fWf24hPOnlhC}^L!)QhhV|qKJ=nTkEnsyEXw>VCaRlFg) z1&cg0(8WH9EjW@==w|o47LpLp>xf1#|DwaM5dKDa*P3awBz zSipxAiUr6x_@Yj4Irvr*!y8m8W;fDY=K6t+ZjpR^%@9+Gj+NSHAWpp7RIgiA47f zIC$a+i_7+w^zB2kBcS#AiK&uO=$B6M&YObgiuHTt7*a;IZ*}wVooat^^lMX8{|V!D zS^cJmzE#Q%amwc{HVR`~@kBFI(`~`DU9Z3WA#X#ONUZsnDJ}l(=1^tRHC;wj6Nc93 z<0jL*K~&%xkH7PyxAYs+mMiX+8o4|;VOsXMby^l{^Qpw&2wEiRwXprv( zMW(F2HU(C9_p7`Es-%OE2Q1wG-7)&2o9=dnfhRY}LVy`ayri09;WIrf4A}zpZtGqX z>zwKBFLOC_6l%x0P6VQ|x0K72oPC}hw3VSVeh**&bu1wSUJc1B8qVQ!lRaI3j+r6T zBT~JtYH9gH=O5zZK-5PZnHp(ZHbG16cO(kjEyq}coH#HE*|n^0qqdcaW^ol`%Tp+P z#lw)C%WQ&AFOBv&a(d{qjc49K0ET;62F_OyVy$7Wr{XJn@#cnJ zVfK);5%_Nei&W=0d`@rwP{%vC?46*rXz$7UfCIhi<&1?|H|AbSL+bkVj@6&8huVUo z*Z$NOd{GSlw*=*S$ZzX}Jaf)43|zCCdnEc=x%t)L(G(*>9KP9>&d`cTh7^M9qATA= zv?K{GkYR=O!LvvI;&Ln0i5wrFT6-~mZE7KPV|IEQ=7p%v3;nSpk4X6d&DRHWHJ>G4 zv&J9gc%PajCJ!}_+<2=>>E^_I95T2I(g?{z)MG?Xw#kIc-UH_Q2$0XY<8_HsRmoW~ zsMbKU_^NY&+JtRinuFY=O$xz%<4gdm{n~MJ1byy z12g@)3+GU1LccA&(XUfhVinxo`OycxN%NrNFHIEOqUm!Iw5q8e*OPu8)I#>Hmo(%z z&D1kPa!%G?=20pC{S>7)W@f42)1bu~%!rvB^b-TBFEShVsxOgI7z4`XGGl6GZdg_{ z(6-g(#tVk9M+y`!C5#rIauaDgE+sZOSFXFE#lD3SXSsU{7lUqdfCPj$<5!JSKm(}k z+FLHEj}SYDZN;gLD}G7bvSP*jRCxY+mvEi!U`U9C_x=(5{bzz-!ch z7w-(Z(pt%w)Sarr0`~rfb>6U1Gfze*vCcu4b$P*{W-@~;86dp}|LCMJ%HY~nQ})-7 zozwg_k6P{gb2T&c8Rr6D4=G*|2YDo!$jsmF`oYdapIn{cY%*U;Y69{yr7W&o__NZ7 z3WIR;oHFY;H3{g8AlN}_2vwb#+$d8EnD-MEZs(MGbtiOZa$T#`f~5TIl~eir;tO|Q z1!xHRxj^a?9hxvw!fIF-xx|@R(#+jEAaXYzxG$WvTwQ#GB83a6@Sb3u;z0jm?q@+u zF5o-l{s8VSV0id8`w*3;I#E-)18Xqz5_vyPDFb}I6(3+pBg@mDnlghc6_kiES})TQ zC9=Bu!zTZBR<{Y{=5fLQY^SFdZ*(uc-C&xVIGM=Su%^c`r^lTtEn!=X)Jx*F0f4no zHC8eIG@F;-o=9z2jD3i5SuEbYWf14k`b4nC--;h`3TK7Gq!tQ06 zNkEiwgDfJfeDPYGRE_dUm6H~xJ(`4S=wRTE=6p&D>V9vBH z%Ar*p4=M#aROTn(IKRfiBKP&1mhr(x1B+fWQp`i@1P9{cd*%ISLw9O3uEudIlDey@ zA-Vd=dy|u-EbQydHkVC9Ll$<>+_;U~?BRh`s{uv>bsdlIQHJ~I~ z^bNFLA9{e*kE<(U*Vb!_CR=|z&7=g}olfE3l%3uQSv?0_50Q+ZHK4q+OjP-#qAn9x4J7u@4k2= zf@*%m5T~WMK0=2jU{WiWp3NsNgwqw2oMohB>??1(vw5zkgcxEfa%MJZGo^?ES$|Q= z7BRu*Q#I(g1sQ`dY;hJ(uc8i|48EXH%wZLX3Sp`r9&Wn-#Nua7F-aGbYEZZ z3Q@Yt8^i37e6qK=7B0}@jgxA{x#^rP+#;jTcA<=7ns$nevoyDDon^SX{YMO-*%Z_Qx`EAc!3p2GY-GrJazdH`_)b9&$Z%6x zOQVL3NPT*|-(|1(bB$5%nB^;Oh>qO=<(!9-&{$kFpioUT+&mpBq_(Y1`#}Bee6AQe zUroE>aeblm&?#~vj6fx@)+7s;%ueg;PyCHcR3R=9Ad0&FDNz`tHK{S)#x6-Zot^k3 zomVZzPa%q?DMc69@7WVa94PPr?!|yx>@RD~R(E0oc74R45(cQ`Ia0Ra2+@A410duz z->_CAjf}1$U>lJ2;2Y1E*tb3~50erg#mGz)RB>Pt{4)Itv%YyH3Eeg)k_XtbLQRhi z$3O9>jrr>y3K{OM$_sh{@nwuKL#{a&)b+wZDo3qjsgDh(7w;n{&>1XnznrmxV}ecs zVX-frk=>U1~FPZn2@hwXr^K1Ch#YX$}yZo*5q4g-7RYFAgD(8{CBhcO9tA z^vZK7CqYrpaxRx$o>%o3f6o8+njFAWW##HiMhL|MeHIMF|9Vuxj>~|Z#h>?@vE&_M za=I@w<8duX+5`d&uHCfPf6(;Ms;w3#Rz| zYzrg|XPBzUUt3n3b??|(r>%74Ip>MG$~3e05i7t4GEjnS4z%3?Oh#ByniyA$D~OAg zQeM8I&EeMmTq9A>O|q3rA^%3$il<38{bv%`gdD&IaYhmp9^g_I@Q!&{KZm!Nyn6)9 zzk;fh->`9w?#FlNErQ$=Sl;`I49~yHf8tmQ zMHS}FERYIfFq&SoC+r}vLmhNQ_N3S!kt!AuykpjuHt%xtR8J3wL&Ij zprL`CIo(TwU(2=Y8S=9%a4zUihbY3id!kd7dzxg-JyLZ+QdbjbVlDafUb$GV4oCjb zPPy#v4|xV->6hA2xEOc%PJ&CzQZ?FL4@GTcIjuDGr6vtT=V3%^npztW8|;y93Mcg7 zRmg6$PG!}>XSJ}e+=PjG2#k87!~~eeDnzF+n&uG-t;l}#(*PWb<|H7sW?fI2hgjLZ zmOKU!{3DbyO6+kp4S2FXslfXN6Q{>+%0`NCNU@9NO;&!@#I)$whOp@1LLmevczziq z%UPwlGM$3U`&&Rvb8dK4f^pgWKcCVvzF(}_PYCPFH!_bK`h=m07%g4_;Q*HgVC^w979j}8 z2oZm>`&C6<+ZcH2TpwyLne^|8a@jt43g$vrbW0e|o{7Q(HUH`hQ<%9lSM2afV94B) z1mM*~(nu#x1&O2R7bb`bkHl_0v0!>3W|}LQRFz6%?-b^pGaAZQq?zV!?sZPlD_syi zi-J{|b8tFo%q4rHGW0OBUSNa92GX?BF#VU+_I<8#_!)xOoZzxiNcQG0wnXT|15+Tj zX9fL8LrD*N!9M9rQ!SG5Pjy11IBy%id^rv?K^YJQ3#Z$ceXozkdEPp&dmBKHV6C%- zhlYQw-eJI4LsH#*qtt7GF0({R5Xy}bEo7AFMm$oWeGwveO-^;ACEN88*6qaD>X7@X zMQ1?M&4%pFZBl)uB<)+f_&pGtTq1)D81N9ijBajU+xX2G%@WDCEhyuy_czo=W5gYg zEAss!ctAR_aiVFzv0eQrcyYwJIv|j#zml2AsTL64#dNQmwL50TrzPksAN{L0A@+Jn zs}>}+F#Fw(^ukO|ZdFD=U9!y4LbwG_%y;md28YO&0?#$@RaMg>=&yAP_QM>$i}MeX zI-vL!E}33%fAm*^5fSP@=_EHizq_Z=3O512^b!Cz1vd%KvC=lg8&kOkFQ}Jkt;Nt(i)1OrWF@qI)2paan+!f$wea*OQM* zPby^ps$dt*9R1#Wep9}%QDj7_(K)ZmBBkHfg222x0oE3IyG(LQFM&>J+6&v#N9$EU z2j3T6Ub>wtgwU9&T%=&id{Xn=uE$neUxa(W^ANuamsu5}O12D1Z7%B{`L8eI)5`dH zw9~s5nyUyjm%^s2cJZQ$FzD4rF6f%+*Q;7_GO`S%xb5#M{HQQLCAGy^_`v3&Algm+ zp0cvQ&5nR{p#L@!aHXtw;UgP`O!Pf82~M@=P#KW|j}~eP@;^2?)ve*}_j1udx_W!v z&QN>3uoF`0>GSBJr-DLG=;jhu)`x|X$C|rJm7EeY+n)t5shaNPr-2()VWsMF1l;p2 znajGR01N5ZA;a(9vrYq(YW4y%H$L6U3zeHYuR>N9!@2T!d2lH4Ey^>zl0CuI_F>q+ zM;opYDh~E;6dX(S#EBx0L&qtYN5*?ldl-A~mFXTdfULY)iYjJuh?5vCb%SVft;&&6 zU_(z1%z$uX=y6DH2|K7+Zq&js1L*pQ+_7%A4H90d!dYRG`HGxCiXydiryTkE9}4#2 zX0vPQjU(p0iifvM(^N)`*F%K8z&{CuL!H^Xds_Rozu5+!Btr7WL!=W5I<9mv>B=FM zrE&_UvC1bXt-{VWy1N(-+Xi)&5EMr$Vlq$<$V0)rUrV1pIuX(jsX&S{JjlY;_5)*d z>msPe)B7yx){V+4`SgfYZ@CNH?9`#Fwua~b=W>NNYbq|kNHFm%LfDHfh7*b@zQuZggvpa30 ze58`|ViY#lZ^D zm8f*@M)v}LWfDq|A{p3zsi2;8(5I!6U3T=N*ogtdv zCX&uS0n^MH0rwea2F-*h7MxMlnnt5=fgP`_AXJ5A35=#5U@pCk$gY@E&gN40hzr@t z`?8~To-u)n86oSb-ySV*<=c&AOyeb89OhZNN$G=rrv*9OjuVw5ij1>{k4RD7v zn1aAS(^0ytjI+$7ISQ`v1w}TGfAEZKF06EoT*V9X_tBn6%qDmQLS?RmNf2TY4AiL^h`u_&)Vp4lCskx>|jUo7K2vbnMXE()5 zAMYIIUEeKfu8g2bc@G8HtDc7|5a@+rIKF-W)S?pHIoL1=ER5=c0+m&%9K2uv z5LiOv(Nnx)UIL)iO0T0LREkTuu2GO%yP)-D20LJ6C$tad2agH2QvUOBrYuqdLph%* z@a9d321kcM1L~Pyj<1YaOLiS*a&AZ_EF?+#DYr#OQ4KQXHr+2mx$tokY-qi4SV;iF zl$0{*D18LCIC6p4MJT-rq1q4+mnw-QnYgbp&K{2zr>_T+x;$gIqfLzlx}KRRiBm}y zz%+I;VRH?kARIs@_+@K_!>%f7V)Tc?FbZi4Ta#Z+au*3@jN;-U;TGPyUJ2z&-I~V# z=Byy&)I|9XGV?$m7X)i0dFGLXSQo!dL^Sj;Mmp!Qm6a|AX1+EE_)aC z-hls~NtfPdTpa_Vi|#n)Kb>V{nb?t)K@Bl6eNjAKwyPT&yy}^i*UEEg_Xi-3u{MzI7oi3OBhybl4aF^k{J+wGsB>J??K7PntPWtA;7* zie0@h-)PqHn>h_uBSF%A#8D7jVn=?`BeY*dd4Eo%)k5YBQ$7vjg5IhM8G$RP^z=0C zE%9jP@rGRXoh^||KUrS^m?Zc~t3fC~G&qG+g+cd&h!y}N%8U?YUzkDdt-2lIXeR(y zOYFTP*Ht^()&y^QVLDs22U?Wc%|sJOGw6RdLdv}CtwGdZ(9X=7CK;_r3sXverhY7? z$p;wfpv?H@s|**o@8Exxl*p!ZAzSzL?UA5ZKMk+)@cajhbWiYE?+=g>cJyrvU~#F{ zg55hM_nLeLeH=Tp_u15;ta)3JObM@;?2&W?4samm0(8W{Hp*k4gB+2_6UphR-BuTR z_Y2y}53N1`dIXInrtDcyt@R8dh=dxVQqv2-jc}_UPG-TkEUzj#qs?pH5+>aMyb)bc2WiKy zMo54fqQMO`N)UodlAEqobSemu@qeT6%6Axvso(rYuYN&B`Syj^bi0~F_yaOaH4{Is zV_@eTvCA-lXM7+}1bp9Sjiz8Dxk zEmcB_O?U_8CuaYMCSTeY^Uk(J6Nj%I-;oWMWv?L~REL# z@Co1GKhu!BKAZo)%)di3Fvu-q#(j~0L7Zn zmavD5!Xp&w=bU0K3Yc=mUS`}EBDa{<#=}9m%}{8Y1a)Zu3(W)Bxkdc)~6_>nRP&g)3o4Y?aRdjIt-)DfwU{rkF?4 zkm65sB{;+WqBuLjZR81kKzTPjnLwLKO!nPh#fpQtHhos-SMr^y@h0=;`9r)&tLE}S zH(s1ik|s><^8mNV=rr^M;{Y9?6k7I{FQBES^X_|?mXq*Pn_kZro&qNgHK$}iriC=fqeLOnP!6Ec%olmX(FFoW^h7!csPhVJxf8W4801Q z+bG-W&AP3*YG1J6FBP8>-x!rPIWn4Ig4fu!GVPRFbOl-tJb53i%-D%{4s`9Ulo&CI zgZ5xSmRXwTGeMHDP36Y7;IV(5=#i5sfCikV>lr3hHzn+Pvj{_ zjU0`Nf79`=ji8ZXoSG#&@v3I8hX2Y^YvW=P~y#c z4)5lkzxSZRLK?7%9`tWgFLi>$f!o9bQ@=X_1)tvzY4Q4hsV1b3-<3&nQ;4}u)YIHU zx>VZV`$(pA;qR?n63O62@V^gAzyi$({VP96qed)(_$>&^n0&vf0hI8XXbeuyjm~-~ zEEt}y_FmOL`#Wi(O#I;f%=1g@*{1x3#lX6XdPNV{70xx8A}}z=pd^PP!3E|CF>*#J zuB|a8&@CUDCc7YpKNNP61=75iSvgs@fLXZ4Z^){Z#4C~*Ly63_^rdvdv2YZt-d zAlRTHb2ffS@PMnrQ>0K6k3Hy+pbqPAN_XcJ#zhjBp1W~9+ucFB>aKaSoVPW8k`CT$T(%hh|I~`@{gb}-{;Hj3| z!G)4$yGRCN@-x9itujK!5Cu6yL$X1?OUBn}rk@Hh%J_Wu$_!c~XhvHsB1 zFjy8$r&Y60j@-2);OIp$(PPg13i(A$8<1-xvKZ@BFQ3Up!I9JujGMod&LC#~4~h*X z;^L&!5gd|4&P3G*DDLu#-d@tDyP%Yqv-48}ah#c4q^ltD4qF3K^TiBJj043V z;tDXm#zG|s1B9t$GO!}8?W;X%F^^vGBW35K)Lm5Dd6PE>$UojJN2#Fnb2-01hjL9& zm>(pV$Y!It-Nmd>DA)bmBFx5^qF9O6o2h;_FL5gRd{-SCZch5iub$PV{pz?;>&!kV z^p}$p5eRr2pxN#mi)!D4h7T!tRESNuk2VjhEg%gF6U3ZT%=bQ5F*rvp9@F3lZ?MqXT8#rd43%85@?5`Dp?zJQ`)F(26Ts3iQ#K|XXFw+A;5aXB58ZhFF4UDDL7A90Y!_`|Ch(3DAs@E}x)@d~GN zM{C_XD=smm+BH^-JP}X46t>cX_g=+`Mx$-l*s_x`_3T52bT3LGuD9B29F&uXHqwQn zoirMJKVWYSQ|J2@7h`+Co#FqgMYtbXC^hNVXAPv>g^La2{Z^pcge!Kt)fR23-~i@u?7t}&$VN6^9hu`q_dfgF z>_31xSZsO#PKWEM50reZ{bM~&?(`1#6H&^q7Ip=r%616%E9oL~U+-{dS?Uq&{_zHL zb-?i6YsJ-7(;8OO1*kn0kKl!N-KnECTo0bdX^_U!48vA_qZQfk4zUq`gi?0FmgwYL zZvc0l$~Y6e+7L&=y6W4+h}sQ`(h_2tZdV+3l@#U;tco zNidX4v6Ks3W1fMI$u4s|FDkcboN}K}Aoen5{547=mRDjt>5f`-Y9Sj=IGHZ3DR;+` zDyu}Lfw?n%-}lwY5vmjR=O_uL_~#^_^SjkC{Ij7DaOzFuitM+gP4$@_^;<7leVi~Ue%oIjDw`X1R7TVp6v zelca-F7P%Hpy+#c$zl~XC5E>hygeQx$af2+kp(7(xi2a>vMx#Lsp-qQoHjL%!SNM` zPe$@j&dgAaA%zX3e9-^_=3-!o0$d64;s2ffu5thBH%Ex#^=t2Rtm|c{Dr?>+%}AKAld|!e7b#A63|!=Pz7tDiu-@0D2S06{Bi*Ea zER!@9Kmkl%Yi{d5Z}$^z6X3IGs;%xYb(=i9u zxxEz~r*G+9+z_r7+qStx)5aJkV(?3!+b~}3&o_r+%@T_FoA{gKIZ=WbK`sx(<*UgZ zEw}02yyh${vi=Y?3oVHzgUT|)J$6k?MS<9U-y;*K`(Q8q1`T1Euy#B&Ux}Y87>T{h zJef_(DjF?{E4h}^!S;b>%s!zP9mS@mg@S8fY65F##kr{oRvrro5xi zdrKk&#UD;=m19ivU)PAZK=A7PhAp*&{C(fj;koE z6qY#dY>14sR3ZJSHjhl+FoqQUWL=gAeTlt5R|84SdIh%(qh&(8zA)o|eqcCqYi0Us z%3Acr`=VDXLmnIClVtf$bBk{3`VP|FFr>0MG$odP%aRGJM zDo%k?3iOrOCt?36WM74}l851G_hl*?S7n*E&lk4lt5sFw#f}eE>wd8ZL6f8Xlw>M| zQSO9VW`xnH&VM^QHKT|G0@Ek%;|F^A0M5Rkio*Sh)n6(%+?wbCZnEzsHdYVpzjHov zdjXuFC|t8pviSZwB#JXO=+_J*KO~xunVm!{M7`Nx`o$&_4fO5tC;V)}Dq7&Nw|-`| z&IG*Ax)0dn7Zm5_oVYEsEu4*;$bUJ7>x;iC-NpZs=rudhL`8R%H4yl_^ZXAhll zk%!~VP17?Jm9o<#2K0a_IwR^pq-CsB1ADA_;%^+Bo>pZy7#S_C{BI5{f&@xLn2f@R z1eRY${MF=Bby6qwU=mK1H@@BY_gZf_OQEa`nMX1!P%R9LO?171vbsLdh%(4pA!e zXgAC&8z4gw{AJIa^)r5&w57JQRV!<1#(Qxz=#a^not5YNOonTF4!(BAbR_-oQw1*=9Jg>>r&f*>I&RI3`VBn*^0oha_U%#x z49CRt;R;~8(UOH(o=mi0h0-fMdviBqz)CqLuJH26r~4XN69?yyLdG*#$EBK}a}3rE+k$ z{bLN75#Ncb;7W--DF+Es-CxY*3llD*9U?B3Xr#q#MJ;$FX zFlKu6%si7vfED}Kr8&2q7JQH;{kgsq0^iAIL0E;OncZuD%htR9FF+8McV4n?EwiL! zm0|-9{L$a3MsxwbO+qa_BLi6U1yKdnkZy*5DU&gHYFlmI_R4qM{2T{n*vO4sob=Em z1h7zDIp=N{zr=t5`%p--0IS~;`4S(uJ;RfQEx;PB@~)(+v$R5e(=SH8a>Pti9#`!%!*xmN<#Iu!nQ+i>_&C{&nX_ z_&@v zoHSH4;+Sn_ks@?pI9VUB;E;ptyZ~2y!&jsh^rIWrj$Jo&d38r)kX2sx@fIF2$nX+1 z$ah^#cMrBTnBv`YLVR`o6GZsZPm(CSBiOCn?`^!Ow=S&OWPD?yx zajPaw?#}w-?^tFkpJDMJ6YnTPBVY~h`}$j=#O;d%GD?4-XOyF$gW3Es%1jiFZ4 zqhsN#a&P;eq5IZ2Y1FmSIy`c9^~I4S5+zP&egBQr0$LFtv9p#a;6lN*wADm_5QtmH zX9oBHtTW99FZaM5Yzxpmqx*2h1vHYgdXOTdFvsjdc)@z5Q& z70SP|l@o4oP!*6XEWXAt0&sjOzM8wvnAo;qa>%-1A93_i-6H(1NG{P^K2q1mS>e9z zw>-R{g;qXDgPdj9l>ooR$_{lVF|iXrvJw^Z!cALka!9)tDU^}~YwGq`)l0;tRUX5n zj?bAR+fdYbk?ecI+@^hN{PkpaDZbhv%e4f|eXDFHs+W!!89o(6ijs&-(Fv4bbpUr5 zW6P4KpDO19=>ymOMZ!%jD`{Br6b~QD2i@wT5mn%jm^^!ji2?>QFVO1A=S%~dkQS$g?RLCcrrx$ltZ{F~R$(ah z-&wX6D-8GuEvc6k%Oxt2qM}S#&{~OEkX<5liYPY#*YFtvXiV}rPK(p8krJbwQ<4fGNyvGN8sKlZcm`DS+YQ1GuaEczlMP~TwFjq$ zM1xIY+9I;Q&x-IRt(!*WB{Jg_1tPh@@D7GJ+)EvZ1>%2#Ww2ceTIpJ|*U!1DmOe#L z&C<;^C1-``Aazm5yz(Cbr!vZ9cJ`HBWzZ^!)cBSrq*pK^4Q>P}9&EomrP*=@SO1h&Cis{m2i^&%*%r;|nK_cv%bC24?c=y% z2V)R{d$rNf$*sQ@qYCO()~k8RM$-ScBROrdYdJb^Ye7oQ zcea}I@YuPg3Dvx4MM>xKhaf;OI49ZhF*_9<6OrPu^fAGtj;+`*1ynm`7kUalI;7bOQC&Vu3yI2t%vo9L5w`De@d?C4cHEZfLk(XDd_6+N?xkuRPEh zt}A|@Ijn$L4xBjQlhS{J!<0czAB8e~hvMryQ~o=&lJ;o3E&FRf=mu8Y-MhtlQi@2? z(G5$~&f8Om?G0ME5Fw^;13n$wFh=U@lX<*d){$LizpE+pcmJ&9+ws!pa$0a}kTD2@ zHr+PX*noE&Fhdeh+*YW@&W?7qT8&Yi6daw9yqP$9BxUIH6O;D6|1ZZ06=JC-;U=iP z<6XS~C@UCx|Eo7X_+w1Ax(tw*zGX*IPdk zQlO_lR+PwF*W*5Y3lb-5O35O9*4d>tUqp`LX1IW&Iihry$ItzK;J;`uHz9p_GO1o7 ziJgAY^l5{#6mGAru>S*Lfz-t1_5H!YbAa6%G5z~-rkVUw)!Dl>UW0F}4VhS4|6s=%FrAEK($I;98df{Ylf!8@yU2|8ZwrK34p>Vy3^`TYMqMDP73%2(~t_H($bm$4r#L<&8P@UuXBSNhe?G;!53)) zW4~677*3CsF^jEPqy@Y^ppnTmXJi{6csCnSQ1VIKi_V%SY6K27$VY}7qwx;*u&6e| zfqRzaEZxYYuY;zAnD(beLgmuxf|lxFHM|X z@yetczZev2UK;E8aNqjm2wYPd5iT~EX1~)4DN&4LG1OuVH<3AFR=?kaM7Qw9jOsc{(r5OQew5+62}BZQUPJkas&&H z4Wp6aE~2zKa|*jIu^3`~sX;f#>o9)8;xhIc&lKN1hy7o@C7K3$eZ;z0+*EdnM>HvtC~QWa!voy^-1$5$Vy& ziIiByh;XS}^x?J4oe=<*o#A9w@1u(@f>Ei<2?ia{AfrhhNGqU@>O|UZ4Uz;h94r7w z;DJS}I{N8x2ruCT-BQWH#FaEHDUFxZ(8a7L#lZ0~w{P?bB_t3r`|y2A@v0h|fKFrV zY>&_Ni^jjsyox~gicBh^bdb_$M^P6s+q)5dd-0D%50$;Mmqv6A*$CIW&v53m!0)cY zd}5QQH29E_#9`&t%=Zx{;(BiRN!lXc%|Y5N;PH2m4+#6!K?E8!h^O;a30%{4Z{xAr zaMd{F8p=hoFA-r{EGum}g+}nHJ7NN?{7^#0O_~Gg6d1GheJ;2v9ROs!o2lq^Q?Fh6 z8bK#?EHEA2j+`|xJ0lc6ZxmA>uSn)Qe27Iz-+r%ts%QGsp@iMcRrJ3ta}RlMmqM^j zbKS?JGu{B#i@`upmFg4j)8+59KNzrUz;no5P4i?4T$IaH&Rh5Y_u-Q?6_B-z`#uX& znuTSGg;KA_YWT@74SxdQUOzMwt*kCn3UXO8{U%B=C)|82O|KDYz&H_AUuNzvF}$*T zq00-O1m_$_j|eO(y+Iehe)eo}cUgA6rn^XJ8f+;^1VP;cZCV`&h}=Im=-HE~hPcTD zIy=r0md8FUSW@6Jy>6-5tJKz~oMQN}2t~@u5k1}ddBg?Xgb||wr25!zUwn&=`t=?2 z2ByWr4IdP0YV-r=jVIT(waM@I!&0#ngMvAdQuxt1D6)02#aJ=Mba3A;AABpnqM2`% zqn98?x8Lm*jl^h%5m;haCEHQ9DwgR#Py7J(c^VTH`rJhg{A&E66)*pRmOvvV_&^pb z_I$EyG2}=@I)9M^`Q) z@ksx~Fxk+zivkl{br@l)*m&j_M9SI>aB0#Iac%(ZN&BzIc$!OM>*w)l88Fp1UEi0S zGcZ@sVI3g}LKKezvlWI&0Gj>2TYvgbUtbuuVd+|GL%UNOhAmt==u8z%QRg0C>+}x$ z-^RgMAGo??@7rUy2#|4ZjW)*i?xG)gv986=&jS>}t+s~hAZ+y(byQR3^a(aYlt?yb z+h4?bL!|r3f)I{iu#5;w8incTKPfLAf#7>TBKyAc^C9f|(y zG648WH+eYa9zqXc-O7|rDnN@yFfOEXK1(~~JwEu4Xu9PZN)Ki_@TLzA)cFIR_kp$< zgdHWP@TzVMdpEq$vJV1Q4FBd+Hr0J`hc%d}(p+pgrxv~44y>qNq(iiC4Vu6p;RbtG zF0c|P(z1JC36rt%VJXjYr*3t`#r?w)=DuH^==no3lXT1OPp#}-X z+m{xG!9;&2xX?AS68OeOU*@c`vWf+3mX3%wb2yE9$*q6 zv^`|vo!8|Oy`B%Z8yi>gpTO&-0S^cr*Rg^+OFR^BHz#&>{`mz(Y*@!@E+PNPrFTra z6YeokH|3(h$`Il#m&)^lP@d?1Z7l3Vmbci7Og`TM2`afge%EZJ)+4_iB;SrUBJw8& zR~Wv5zG838J%IIfQQY3q-}NnEjFCj}|8rd+rawtleb-7ieSn>OI%CDsKC%iF7@7A6 zq)uxq& zqEHjHMT(oiA&)QMgwpV##AMBk=tQ>`f5RQnglF_>^_qgb0$fvK1-1lErEZ?xwKm+*R=XGV1TZ ziu$58>;Qhdw|t{cYBc#d{b4sK1AqD_36JZ$p^EiL9^|$6l0p)2Xk7VI6WUYKN>JDJ zroKRq$3#ozEu&{ka0@uyY>^EV6^$YTfJGI_qeMaRk_6=D#`{>>=1$_QObO3>0Pw9I;lL75H`gpEJF>7Lu@O%2h)9)GA;$SU${jgy1 z3zj~Nb;0d`9)%1>173@FRT+zU-fI7lcuRR?O;LaM2$V(Lf#S6lHCa*!C^0bNYrjV3 zl(6uniUT7{`}Vw$Hui4eY}HHXrTgu~EXC&c^hST)^#-Oo;5IhaE^ox&ilSZ7ij=8^H?mnLE!7!!_ zTdCeKlAw8Y2-oi>1W(YlyW^T)z?m|C!19};ADqleQIb!>z5Jio6URkQr11D^G!s}W zbx2U?``z|1NUy}#ChzAu@^1+1s6f{k+JEE7o^I9eu^1XDc(Qbk z83LixHK$itZk!A>6ZejW!d$>jPOJVAp!#J>+e-Z#1D6ySmPhw4$@fio&^bfS#Cts+ zw;N+{o-IfHBxtTM#>5r`Of@sh6~mlzE%N76FL@eXk0itIF7wlfi|#?2l2|2Y{mP99 z2{{De^NjlIw%J3m=#kJ!bCsF-ko^&kJRL}fgDB(};#23X_iwQ{v)hY1Ab*l#21!@> z=X#d||KyJen&y7+MPzH<6&XP~NetyzAz-Zauxl&bs%kRa;Ry@d!Hm6T3AM<0*Bl?R z1PeUDe86fb1M;j)#IdGynRq`A{R`euff}V>cdr?~#hsoD2`_sQ`?mwpBbnG~_wz9h zS%`zaC85`5J@>Vu8SU*>3-wrvTSSh-Ie&(MXcpkOM?6yd3-hd?V~%u39)~&XcdKF8 zUcRCENa79rt|WuzebOi71tz-76;yQ1zG__Prz)Vx-@>6mUhZXDMP z(O8K@QCCBj^}@r5sjc@{gQcUqF|$utA``YrcN)};uhK9hMCk71r1O2B6DI`mYvdhr zCXcvs!w41NX9Z-y#5bENuAc_Oc%z!krS?*y@0{*Dv!8`?Fb(>hp@cbx;QKHJSk(XQ z(me=DM6e}fcrZa-`PfgPur|>s?`Yujkco<@T@jwuDRJqMwdeGC5`i#bux&`AQ;p|D z+*>6MsJX*Q>gwQ$_0*CQ>)W}89cUKdqyy#@wHs(44e)?7)`vkl$ceuYZ2Sn8XZ749 zu%U9s8>4NnXIr9Rd=c?}As;xx1zf+ba$HilRlWk{9BF-nOK;Zr(mIP~KiEfNy`5kD zsQnu82+oSe-c1r|wuX(P&;VN3Muuzew&zho*4Yz@FP~3|P2#(E!m?+O(xM}IVQ)rHLE}n@9?Y}yQ#Bd#qAqu!e}gVP*n-= zNDIy+Gd5MsG}fl(SLX*X-@42zwoN=bxAl-jma{b{h9+d}GZz*~OVFw=Za1usoOT8Y z?)%##KYiaYA7akS+@mqT*_Ms^z%xbBXxFq&5424Ib92Amw_Dq3Ld27Kw$(-lWlsWp zxPJ{(a_j8RJpSJoc6Cy5RV; z+t_0rh1C8UadiAulNx zZ+uW?L3sFbvz0kNQ;_?ud^5hd90S(4D`=r2krV~okI$x9G_erx@24AJOv;7=+1PkR zQ%B~Cb-N#DIRv<-^X*hQc0I3WqXwmp0J*><$BqDm7a8`9wS}9$0=I2(sKf%vDjaTw zc02Vo8^O&jjLc9dSwVUxHfGyI z@=uvI#A)2sPT8q{nC0jF9%dmpdA0LOJhmVlIvsrW28HZM_&{Cxe>7F9FrluGFCKn?Un~Y~H8CRs zlPWkwe8>b_n^pw^Wy*%U!0Zl_$5m&vq-hSU(Glzl#_xDFH--Sabmpm%!fHmODJK$H zFR&CbF+eO^8Kabym>RLpq*Mj|q)<-_)M{y}&{*fULPPMJ21|C}=-qqa(lU_ScL%g@NS+v6JN~Gg}?DqRCDWTjiRvw1ryJFh(A~W{3G( z8wn_2w2p0?hbN<7N;8`CT=70r7&YruxC<4gja~J_Cn)~ERI~LH-fdEq$=;T5`&Dk~ zj1P|Vwr58`$PDj&)Uavc&LC{7f?5}rP4kCZepjh-1i9!Y1RB*n;fLc@hp8&>28Xgl zZpH?)s6~}}9wcB;VlzMH8{=wqNpJxX+60;IPLk<;LJwU?0=)nf1RSZy2n^AhvL?`Sja*S;g#`PlTf>q6U>3GgI zxL`5?Xh_^bl6n=X*mk1ovX@LMwaaZMbLcf#dW$b>ukQ89?ArF4XFLxqDTAW#qg zp~vOQrDHbj>O)u2uxtR5hi@bai^3_}J7Obgg;%ng{FJ+7&_YsI9(30OB3f~Oti*eg zR?Yc;*}t6QhMdwgTbU6`5t4N+FoKzw3=7y;5^&5QV*hV4o}BE8)^XC_vT6YDf;fc} z^pt5Z&}f77W4=Lkeo8i4rT9fKGGf9ykJJlB(p_eU>jGgGJPUYs(P9_zFb`NtVlts!PblSH#4M7blpxp)QzVezqnZCZL_3a6EYn%N$_zx3Ao9=4s!kA~}-Y z;eXIfXxswDI4MOc%PHCi)X$ZL80`k#=PqN|N(chuy%{x}(VF>E`$k1WE-}4__%WA- z=Ng&Qb_Op2K2bu*JyEt#2@bWPlI%VlEu!L=42z z2}r-#&wj-Df9q@o>eXFe$*nd15m+iD5l(LTHi>im-BI^bge8n7R4k{%J}uO7%r63poyVT+v$4l^iEC^ONQJI9}c?&?GH=j(PY z{Sv~u13$+Cm6#2NQgykECKvbX0?jpTuDA(%zS}9SG6|iC1=(8#YimZo6P#p5(WsNH z>(9l$nCX#IjCff3y*rG5GB#c+$RejxnLISn&OlCNQ3~D;gAlE|G^U``w2I!%J{r#q zKCw8$wbxf!k%dq?wgp@MQIzKcww9#KS!${xyvj%~LSN^I#n*9Bv^~jXhh3F~9)eqe z@2t1V%7%0PAe!>YtnJ9ovx%@UJNuAC=`F8DZf$3;z$Wq_XNPtNi>-!{lxl>&5#l}? zyI>@WNnD0!#EL%R9Q7=l932Tjg%ib7NP}2T)UO*~L%pLmgSeksjY8FW++sXO5z%=C zE+(+ZaRT^QeK+%eXLm4U=eP9zIRrWdd<@|lvSBnpqcWsO zqH>kz8;R`~uMFEgFvCyG;FZ^R#w@2ij|DG*OVFiUOtrrbY`gI zjrj$?7-I;u10$3_ns7&*%7#COla*g{#`2g3SEX?1O8^5-}Id6B%Q}yL>A`(kE;F&O5|gc-eUyRCSL4HcGv(=fjGSwk3<%AG<<2H+=(1egHgUW-e3DI~bGxZv1H9bDLlC#;>sKlGJXbiZQ2A!IDEkweto?e?Ux3%O zxO@oyw&W}DUaPjfHKW=Ow?EP=DEc#Od1z`Phd?}ucl5J#OQ& zdGT_O%m(mLqg$^_OS0q7*!A7i+3LqL# z>b8Ajb$1Y_Ds@B$pini1be~gmiCkk1hP0e9sS#|7>&pU%?xY)83#`D8AcMJ&>|}b= zp3QN`fHp!qg+R6RJVV_jWa`b*Ib?DQ`Ts?A*go%dJUIdk8&4gHaqrVR6`pE+xCvE4zo+ z-}+mP=(~Nxuq}yBdASU^#yA`o;)Ls5(bFuL*IgZa?rSt)kD12!1SLb^@v5%G(NHdk zqPvQ^zOL_TWo7g5S4*q6La`2yuD%M9$1?xGxC6mv)5Dws5?SWotXJRa0qa0c+|a?w zllw8xCkwTx$`92x zVVHDD!`we)3ZQb=AZOj-KENkat_Z$sm|!;BX9Jk$D(}E72LHM*DtrP>yD56``z@(X z6$WV}xbSyzy9viFf{8`7u^lEV5#!ar%IBnjs4_nZ*^=g|RR|VaKo8SLZ2_q@nn( zcfcbN!QJ{oRi0N4aYppvL$OVt!UpwbAH4rYC<4ISQPcY6ABAi&0M}HJRmJhck;vaw zq0|(#MW3r*omse(c7z{rkDOd1Edl#}KgyxK>1#(EyTnnoh5{Sik3(IsAK`xDv_}Xj zU+#A+cLL3A2%naKjkoCn9C!+=jJ54t{RSPDp0e@GSu)`UHG#L{=eugace_hgp~=ms z7G=K>!gl(HB5L~?fiv3!7Z<#^-MDFA!sN_6yHLYXZCLew2=xiwa+Qb!23eB9#*mzcJ3# zvRg9Ph<6|GF6jKG%gejus)r5xWlXX5`tA5>&gQr-T8N2K!3-S|2>eJ#0h$EGmk_jgB`K6B>XrBB1478yXv{mx4 zy!)e7sk^@Iq!7!VXUg*fbbo#C%wJ13KiiKsWWgUU#C$iGH3WL2GqO9+n=!Lf48Rh7 z_DV^1ZuGT5hON1^Dz7a>7@kjcGEyU;mRiSs(bY1CIM0LFxvMX(`>CkUqZT;2S}`05 z?bpSgzBT@s$0uZ0!lU%q%Dp*G*{=Te_G-~5tIU@ptTI$T$~$o;?b4TVC1U7ZR+;Um zVQlF^uN{y;3foB6o|vAjYt*T1TKkj=jcnV6kJ4|Wi8};?;?U*~+e8-G%+yri@m~l* z`R+7==FIkZ*u<;$pi+)a>8p-c{k3)j%Ge5n|x-ep;O(>_e6m)WOl-?0u*VF~5G0C@BUC zFedCCFUr*|t;Rk0@?I&6Fl=@gqmpFD-?}Re80vMWMnX%7aU{A%x%2Nth-Yh%e z<)kd`t6htQG3T#CfN*db6{0BhBR3pF)wX-srgsVw4rohW59cKYxNBWG$~%nJ*J2Hp zvoVr*U1lB)6FR|eIJA{H?ysA^;h^ejmKQ%ho26HMQ~JdU7SGi3A-niOU^uVc!SqE+ z2KG*ikq=2qyo5=&?-7%N?@~%{2MYl2$Dypex3k(80EGyx+fb#|Lrt;8X|I51Ukx4Z zj1v-6@=S*1)vTSJv1!<8oxaFJGH@mS1o*#u&NP1krz3Q(fr=!s}inZdrjU zDGi9-uGPbw#@ywGWBJxvN20HY0UyXU9_KQZ?!r(9RD+HKKn?4(mf~5q)eh9qsrcQI z3M_qp&?GfCi%sQTmDo5n`7S1BDa>W)o;P`%yhiDvU?QpME&09q#U8>`%e6Sv*0W+B zDjB<2)_g}nTiJr5#M1#rBehbSAkNL7h?m=NQ=k_1TP&!~N#$*L4fMhFVtE~4P}f%< zD@z-O*Tkq$hKejua`1Y)EB{oAn%Uw{V6eh<0y?KuU%=eKk`=k@Gmr4n$UM^~3g|(k zk2;55QWoFn8-*_I%vbEQ#d?Sd3msRfkcjm)(0I;tr-|#k<&5L zMo_=m3ryHp53815Ckb1@{CwOHE?TJ*iWZJa3H}=uVQe27d)Bg&yWjZq6EW<2K2A>I z3?0*bJ-SwzG%4@fk-j5^yqog6j-1>Bjv^4ICQ-pOCspzZL)jhpV8&%^03qp1hN*bc z$Tcm+Td!Fx|0UYl0xrLs@IXdBaGvpZmn{t^<9YKJCb=_|K!%_V zMxLdx^6o%nqZ{nVO?nYu8@io{CH1hWAy0qle<6l%ctm76wlL$lmj`nn8{m8Bto#!C zHiin10#9ple%PlVZ$FVugi%xzl5n+tdU#H4X&%+DNR}PQv{i3&M4PFY$5>O#&lCG8uD+4Z zV$=iAUob7qrpmMtuGn({RLBesDR|PucZlY_K}Kg+W8lWNYS+-hLeDEzNBxT&GJ*5- z#5wOlNMgz&DEx1tu(It`%?|hB{-DtITa-Eyz3bSvj8i6YvU^2O>eY92-;csN_VS(c zvg?#UfEQ_%<~(Kp%wbXnM7mUBDf*6Iay1fi-amU4?A)gF={?m?(pAovkhDJOFgYud z++IHNrc`8kCa%b*cT&+X9M|^&B?2sV{4gptf6X|1tgz0&D(`5h31pUCEi cf~tfSit=2z#6D=3EzoVaOG2 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%0DtRcUG<#?6SmbXUs@x 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 literal 0 HcmV?d00001 diff --git a/binaries/x86_64/ip2net b/binaries/x86_64/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..0ddba99884f2a74a370d6632c9d6f693cb2a6388 GIT binary patch literal 28584 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 literal 0 HcmV?d00001 diff --git a/binaries/x86_64/mdig b/binaries/x86_64/mdig new file mode 100755 index 0000000000000000000000000000000000000000..510cb3c8c4271a62c9edad1fcc61db32f5cdc1d7 GIT binary patch literal 36544 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 literal 0 HcmV?d00001 diff --git a/binaries/x86_64/nfqws b/binaries/x86_64/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..1d3983da7caaa3ec978fcc1388e5a36a16d3cb3a GIT binary patch literal 72664 zcmZ^}V~j9B*DN^ZGq!Epwr$(CZQHhO+qP}nGy8tHo4Y@@lhc)|Q=R(R$?5hJkro94 z1O)g$3kZN0;J;Wqc))*4{Qsx%e<42rI{+}i|8)M#3-*8Y0RC71e-ZwFn&K>k|Lem4 zZ~U)wp#Q7<5BUEt`yW)r{4WOp!2dx20Q~>v3MbCS|KGg-mj8dZ|BVMQhKIgTkyj_E zMub8AFLOQ`(0>>He_{;&!(snZn7{yh2_nJfJQ1avk<&?svK!#bQmu()@D#BGMsOs6 zXZBv0&=c;kY(EuW4pmkCydz3npT_~mtVc(rWuCc#3qLoYW-6|cT`sjGGq(4zJ(<7e zun120GEI14nH_~sd@*ouMTvN$)<1YKVTG!{CFTM5zEQyb04M5Zcz zklo_cWXKIa&RMpX6!d1ZgGh0+DdEhDcF^ck=pn~YTQJ+25{(=1rGyKk>Ff7?q=}T#Kj2sIfRvMar zjvSS%5OZzP9wZc!M{IlTc}$>?o5Z*2Fv`eD%+c)jEK!{Zdb6>M6jqm_lZ}+DJ#p{4 z_@|AVj_hf2_g2?aYS+xCXtWw%4zJGQ6ds7To|O?87pe?mo$oYYI>+-{pi%~vjDdF=O|lODZ#BA>5&%kJN0bFvdmA2d-h7dOeL z+=;3`Q5UNws$@VFMZRt>tagIR)vmI8ALfM~zOTs+A+j;m>hl1g9Vm1ns;ofj4&TEb z^L-Lq#Vi>7Vx(c@&*WeBⓈ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 =JVwDhM{3#ww8k^*>oGH}k1{O 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 VklW6`!C}@G6at(8v}S?T{{gs3R#5-| literal 0 HcmV?d00001 diff --git a/binaries/x86_64/tpws b/binaries/x86_64/tpws new file mode 100755 index 0000000000000000000000000000000000000000..c04d412afdc7d99c895f2f0d1c5cf3faea79e1c2 GIT binary patch literal 75044 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

yC&QJ^;zCtIN!}M=or1yhel-7lBAYk(rFr`& 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¬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 literal 0 HcmV?d00001 diff --git a/binaries/x86_64/tpws_wsl.tgz b/binaries/x86_64/tpws_wsl.tgz new file mode 100644 index 0000000000000000000000000000000000000000..407b567c52bd4cad82e95529a43dda5c36f302d6 GIT binary patch literal 77458 zcmV(#K;*w4iwFQ|S2th+1KfKHcvDrj|2b(wL!q7^pjA;)3nXG2WOno`CsQ7ojVTBs54g{AWhmrTfj%DqC6BT4>)NA z3WZW0ZT`QtcTQ+!9{2y<@BaV)@Amu1IeYK5*IIi$)?RDxgKzGF3gN%`FCTy7#*L#V z{q=s{>KrrnmVCi^Yrb>r566xfJJu=WJM+gn#|rj*;s3&)zry$MJiA?(_slcCe*nhE z|L6TZSK^&)62)}eBuo&f^;=spYtt|NRSh)JBh^#o{bh$&nN!u z^uy-$!M}h+{q%gK*K=+Lhn@=Xp7ZWG;&^ZhMh6J`vNd6 zN&{rK91(?R!CP)&{TKt2-p_1SpU%p zpbE!iweDvF^r`O&La?CUT4Gw3JUiv^o`sLfu5ac)Am@Ff1eXYc&!PvD$)v0v*TVqA zOhqjb{KMqnwq&sA#mu z36t%=$m-6Sv)!}Yv+K&7G4;G|2LgQvelY#q3!GG^7G%xmkUCJ$5FtReQpw_H0VD(1rF6?>OOtZ#9QnvmED|5<>`;2Uyh?u5@-9HbF=_b;1~4dW7U=15 z6jvun-q9BOBLZ8d$1zeLSSVsJL|BMH2d$SzY;kZW@byS*GRuRVCMnbm8hFc+!jIw2 z9e~88P&UlCBy>;;-Ge?wTWa;H$MlA=BJmI|LSJZ)6mG*aeAM619eB>#ErkYPj#t%7 z)h_p1a49HYM+4Dvk1DjgrDsa4(tu(sA=97y1Po~(Ibr|u|`=1J!Z>xf-RH z`(_G)M;pEsnkWe$TzZ>Zn=+(CT7CBbB{Cz1mnk-{dN!)R?iQwED2ILqO?9LH@~N87 z;emE$iy~})lieM-9V|USV$z-&6h10d5~I%MY7;pV{pgv;Va}aNwN46cwtzqBcubD) zg{~*Ay=u4I5OTB#{7=dYVT?bUX#V!Gq`H-?vwEN^zzm(S`jF!@g4T;;)S+*4i$VvV zAWEUx7DAiU2SbM87>U#0->p5E6W$|LuCkI!pNqld$d>p5-W6#9GjhVs(h3SLSnGoW zU?)R}2GnOT4B0$p(}!;(vcm!yW!aaI-l6DMyaKS=JUitom=aGW#1K_y*%~x!}J{ z15<8S$q=dX=b!^KKx=l6RM`mPJld?C2)Emb70ezGjEO4X<3$J-Rm_fkzW}fPR}A~j z97Fc&e_n=(KnoPM;clz^Z*L)yKoWcyKVqo=q4Z*x=Et6p!j>}BaKmyoksjm zGX0Rl6=kHnWL=g(wr@oUg!KoB!KD2n-GeC969^nYRK`${L%_a>(ADA)Dza@FO=vd!2| zNX<8a<@gKdp=M&h#?ka;3>*>-vc3X?9U^dabSKPt|X3Rz16!kZK~8Pr=9U zKc6yDSZ0)%fq7c>o3?WE{Cx)C)>F5;VVSXmu)PE3dPV$mm}@HPRZ2iqy?KROh(8YA zjD;T=%@>|YzL|vqwJv_>9Gf)={6`-GH%=I`UJ8y9S#H;ZgQUt|3aL;8RqHoQ5PNS2 zojTtRHv6{!A8!TqH-CRCINoC`7`vW2^w{{GTftAjG-GQ;;w;2xtuid@0632S7S=}Y z`6m;X%Sbu$F3S;0oCo7I03%B)aIZBJho*FDcjO3LgA}^fL`lntT$qqH-am{%J3CVF z1DPcnpnFAv(FR`&U~TL`{OW(ao2NK$(~w1=f$^la4+XSe4G?+gK-`$Zu$*CFCa1r= zHP!hb?Oef4q8zL<%g=A79p2*_US%I9NH2dy69yj~hCHcxspL@)M_pAc7yP%g5bByG zPz+zsk2#ZSgPMWOlcEf=Or$^E-4xFvWI3rdT}?8`WAZzk;$VwFY{i=a>y2=QksJ!w zTMc2bBSp_ir}4*E72=+hrTlMTd~AO1ECrx4uz)E7+mjio*h^*x^M%cZ`2>MKe2WmDe}^pX1x z=gKj48iX=1Kwfrb8vZcBe|HY>k6zn&9rU`#e|?~62j0Z1V!;+uFlLtCv-}Zl`88Rs zmAALbky$oduxPIxAaZ0C<%vr#N7X?Dt-oOeUjfo;Po-Oken1OdbUam2Y?4ABfvDkd z$fc_rIE$a1AYVP=RyXUb5^xsUzg{7SFPcwuyxLpbZ&$o80?>76{_WL;nt}hC9{9Il z9L)4U{nl}Y8kp|^W6)GiqF(6lkP{Khbne{BbN z1A!kQ@OJ>7_$<1E-hV^yb=uefXlh0C@vDD$1^1)96ymSxqBO;eNKpWE`hwF;ebTbU z7z`HuitJ3P%tr%(Df$FApLG~jrH9wvHtBR_W7*4weZY7!7^9A)gfx%^c>Hjh;*wNh9lmw}}t z{6hrr|M+^Lm{$O+7ufcE5@U#@IkM(QsFy<987#7b#KY-)kv3Pd zty^HkRE0c4z_Oa*QP0U@8+gb&>Fi*|vU;B*U;kqTg?CY{U2rE7oqU>{S08ScRlnf( zqbG+pss|~J!F(-4&O0dw&po%`1Lb+7b0(tTucQ*}(7y|;@yhxO4EPAJ_t!ss5xv+A z@h*pxKAZm1+k(Ja4H>Cqj3lTw^-RWGXBG@3SuK2#yfCq6eG-3(cY#Nr{YSp27Az>S zhu0_5%HXP4(Ro-{j=tm=+jp)e8{9_&`W*D2gw0X)nWR*NhsBP|WOY}MeSU9(K#9Xk)OCW=6lCrJnlD8@U#CN^2IG^guHW9hTNK zMMrQHBYU7Iruk-LK2Hsgf5dGimiPtqF^w34x}ZH$jaC2i23B@YXN4)5%@jFOVTB5~ zzGZD{jvQ|GjgZ!4l?Tt7d=v1S<hYSiC5QMR{whK&Oxp_%+ktQX?1hr23nU_%YGlDUe_H~|LY!Y z@G3Msu6u3%O6}f3uCf#?x#_d8-;46+Mb3LjVp(}mrQKn6-D&peoKGn{1fB7_@ngte zyTj_$Cfa1}3h$W7R@u2#>D%O6XMi82cy0%{fuAI{$WU_PhgDSFp>~>-(@TkRWUf^& z-@p}VmEmsd+lbc8kvN9*VzJY6L@nCypEG>U6`==Oo#$0#X{4K^%@A)#DKi%rfaK`GiZ1+z|DK`H}ZHn17 zc@WL0B6vfeSC$9QnSA4%F+8(;nZ%HX`mbQ^$7$5x3O%2gOK9)5`kn&XwEqws&A*w? z_s0O)K#*hyUuxNPb2;^GY3dxmHrec&Vy32Hr&F-m&9KR&v@z3da^G6Ush0gbFwkmM z9Jje9n=j!%Q&!JWq3s*wWW~9!e|+>h43It0__LXqsgGt)&~6**oi>+hS&>HG6^9-)h#ddqHJ0=ya{=aE)pg+2JC`Rmgu zy*Gkcgu_bHsawBmEt~G6Gc7A&;PTR^z6PNQtm7iKau#pXyDhfZ0+DFkF37ae`Lgv3 zs7-K`owAL^D9*hIJNml^nN9L@xX|rbCJV@Q`q!ujLouBH43)wysSP?m`UvKfI6F3q z4sa61UYpiGMO|yPAo2}+!+wSqnWBk04rl|Z0*kzm?C$P9)12EhJb*u6T&=BXwY?L7 zLL^VE94RxYHAoM43pH|ZPlnfZKw9<&=1bL!9r>l|k>Wrydx7L^mZjfy%^Sn@2zk6J z&@ry)UOpx1b)A<&my2vmxSfHw5OBqAY{TBX{m9&q8|Wtn^1{+YfWdk(UYw*t?mnt- zeGWV2v=h!GlX$w-dR^Z~DLhW#CIXyx6l@dGM#zB+VO|0Y)P9U_xPXq&-izy_#Z9ykUtJQG7Gb%WgiKAQKjmI__ICZo4WfVhU1qL z242BZdtVMMt*GErk@N`L5LCBeEwnY=bb!Wbm)X4+`dAICKn_AC)_W`U2z)+pefNnd zRNqY|)&^Us#|$As=eii$jv_b08ud_M+hi-Z#R(>yjhf(~0g_l$Yq_(qE9%qA3gpen8xi|hCjQgIr zsGq$uxSMtbW~iGqi}!N6zgc<>Ql0g0021ShRI(%bHec>}ot>-uAFdvqD#JdyMr6BE zUm0~5JlOvy#0aaA($uB!pB~I4aYK4qI5n*~HO;pr1-Xqu`o1JAEas&UrQ>Ih@B_W^ zW%3KZYd<@gE6|2GK~Ya3AZ;wRJz~UNqIvlcN&s3Gpwg}dHPXt%SF&@^T$}>}!EBoC z|AH@|H{IUs^sYA)wS(9waULas?~q|*Gf27W1;&@UO)sb85Q%37ob2uflp1h=T?~+qiRCG2m+robBs7gg5C$@-t-dTA9{Ts}Fexc2#v zOsw||=VJ1xdJp$Z$q&Lw?8kht8~;&{_~2#Q6{Z%Vl%PRVfLu`<8V;h$Ahc0%$gRP zyXIS~r*9)Q=_$X434LW(+kydr8s&}1qh%)ZPb+Bu<@)RqD?^A?MX237!uYtf#i9y)OOI+XiZdUTX z0wNlm{~N$AHI+zfMk~SNW`LRXH-HuizSnhbeiIAE&@@!c6kTI)^!4|uRAdf}KZG%6 z)bZ(fjm#ZI0)*UHxqut?Uc$Su*$`fz zwD7Kk>@vI&pG{OElbP(UW&CgfUTRNXv0Yj-UjG274B>h6I!Jh*IFtIH-s7SxM}BeH z{0*>JQ{p;aS$SMO$7Q|(Z(i#iky)e6sE;!g^{e^6r0NJ*#^?_)lrt`%p@XyepTrlY z?Uk^0nWbgr=m{+9BS_&{c*E38C3w`LUyrGn)>i5|ExkAqBOu%t!e=s;Lbp&)qy+wQ z49?X?7d9jBirhHHs~$4;Q^UXLUP3>Ldxqr%{*7OsRBygj;JQj6@Eh>FD;*Lq&F2vv z<;auPG87oXWB1fg&<=i;~P%!ukYl=?NFvrUJO*5btZ?7-F*Mv@dd<(2|#IMC_T)+ z8OAaLC2?+JDCM3gZM{+cE`{<1Liv=#mR@dUE`3S!j3xBg_r+-3b4z(3kX~mnLhD4@ zGd+BC;l1!$uQvRNI#EbubN=AVu7uC!jFDPtf}@hz@)31+_1oYWUgV4cNOyzVXe}92 zC30O?!v8UwpJwc|UF2VBT*{OocY`_o*vmx2mlfSk_$B}!X(64y)b*|h3(_=Rv0q|4 zYk|tyjMIYw8p$;V97Xhl^AeTL5ej<88#>>Msa?#UFNQ)Iul^LXH+(;e zj?l=iWYXkU->@Rge~^cljD76n6co7dxn1ZMBKFpMDPq6-<`N*zU$iOW77}l#+ayx` z_n-0_y#n%jKz|jOs5LV>S0!~{$D3YA`VPGFTa9A8@gVd=yz!ggTNuy!l`jbbU}vG< znIx&j@4+kIXK5h3E1Bd|7tz}&5@hQhBc?r$zO+2azYA&nWB3)^4H7{*e!X5mG|BZS z@!kiTWjnb4nYO1woZ-)uKlI2Qx}wFz#2z}y)o*?!Ro$0}?6e)1Rl3C{@_VbzifVR9 zp+XGRTXw{A34gtIg&eH^r}h7I6JmqpIaw?;$iclC-n?Vs4z)cpIq4grL>5~_Qn;S3 z17afb^`yGHX1_(;Dt<1zI_Y?-L~tVx7M7|{Ir7~&`zTd2+=V?V?H8&ST;j*-!9uWrK@Pd*h(+&I1+Im9SsUc=Xc+Tq zURo*OJ+#wEA-WC$aVs$5v#)73cSFgI#B1bk(G$5(NGjSA$Z)&+^SB4QlU|% zV~y3d?Y-Th@vlp7{9HOYi!vfcjyL+A8= zs08b5iffO*N}vBS5kJUXQVqrVgd+Yr?b%fXYWJwn zmfDXtBePeP?Ft>|P)%+Im7Ed?sZgP_G3w7L$!%1y#EC(VXce*DlTt?##`T3Vikxe1KFVT#?#QiB&$3aL@lOn1YSf^UZo zc$4hRH^HkuhHoH-lDPL=;Q1Y-`XdsJ-%7#(BG>{|J8kjrXg`rrxDhyg{6<$a|Naui zi?K4N@-`Jau)PlWz?JRTYy+c%!#cD<#g1xupv9Usx- z+!$O={G0JG@jB(Nsd$+9sCVGo+9U8)rvl&NaF4+EO!#8pO9azV&&eoLJ#gvyC_4+1 z`Twxcm-P_^7UJA$1CJkAnpZvHJW9txVvl^c265<~q5LIbAnS!aX&8neMKee(Zpc3Uaf2-0o;ym+?x2t zx#kr5TRpBt1^$DwwkY3A|MjCoS438fY&Q-mti9ugQC(bmF6BHLe=ym@ez0tu1DDC# zP;iWI?OC9llan5&?g*c*jY8P;OP zXc@a&A1rIdR)E^@gu!@CRz5nFI!9^~$!M;hRLG6S#EmB3Hy;%3sq19fPLOhV3mLRK zC-|gIq~u%+lKmX@4V2Y{tUaC6^PYRA(qMMbi*eq8t7l>v7>Q#P-L82#z5?37;$^+= zgRF@#gTGB51^k><7}RxW7&sHp;~E`Hxg#f0ebJP-+_g;3H01OuZeq!(nq>7fOlw`A zRDHA_r|*>g({;joP$W$lrw#t;*<69&He}$-%fWJ<9-XQYAQfQ4nh19WN6Qsn$NeLN zadeokyGMPpV_F$Bi`r49V67GXWp^&1MZQQMVlBnyQe5xfCTllrcoSC?6`}4-d+MYf1gsZ1*gAK@D(7IR!{2_IM-JStpt~Wa|m!6d&!nU z^ZL+B79x-Ts`z7QK%X?B02hu~z7hD%_T_T@)W~@!ye=@cwL+4EXP3_3Rete&a54YL zJclH?C{qN-*}pskjy3d^gtydt`WFjJB?vY81g~$WfN7~3)4Xa|aVY7#iu9mYEg<1+ z7IDBTRWA`R;7@pP|HV)h72)A*29gpoh+6&agLKg8?-ySRnbLgco76af~;9Wv0en-UtE==KD2TGUZfcb&zFvKl(MxC+Nm;G3s?7po8J? zKvT-JPLV7!X3=Jd49uH%Kvr|&{fxQ;b_mV3Y4qLZ$IQH6InC(h0wP|XJ||^57=Ira z4pP+8EENC){S_xn7(~uXw{S}2Mzfq(OW$)pY7t3yc2W)4fNDgpnsb1sW1aYM!p-XA z`wx*ZNTC%1mQr*zAx=swR&j4Lp^0e$!&aHgrM^$Vb-MogVVdlFRI_}0ia1(2m=^R6 zH`O<`k#HI@02^F)ifoYCA3*eB`hUFl6trLg@tb;npM@n@Do&7`C~5@tjL;Sz zt~v)lLcf*enVse5Nif`wL{2nwceq-a?Dx_%*$CY!>~S zb$bQ-?zd>?NoGNn*FpglZ|yJhcuRiz(iUj84+hA0P26|am_%W1c9y^#*i`POJ=Oz| zXpn5-O$Zv%;ej?D9pXu{lBqzcFT)7yxLqhKcv++*D5GQ09{0ss=+hLCtxPP5wQPjpl*oztL7H0XciJ#A4 z-&;wm(Ud|*(W2o)c+ximimS(mS7yzSL?${}qN2%qR|Ii&6=4FnND`QgX7(6@uAm|+ zDuRjvib6nO5F`Ot0YQ;Z^c4}@bBuBk2oOW~o~P=}1@Zgd-}^^0=X7^fU%I-wx~jU) z$ABadz2b+ovJIK6frYc{d&WIZO%#GU(O0ALW0m)SEgW(YI4>q&UaAis)N!z<$$;pN zN-k$dkPu#1aZw<$K03pUFGgKlGgkfY7USE$x{}IrMcQL^6YafHhL!_6XqB@!^rHCC z=aAzEaDTf3(|a2xp3xqIr^^+lg+$;`N)8?Uwb zUt_z(&xQ9|CXrO&zp}@2RXTS!r?k_fQeJx`;I_#h#(rj^^s(GEu2+2$=Y#$Bv$Cee zGVXl8Lf+@Z{YAa~F`U*0+|Z;M02eoLXVdLPp{9`f!=AzX`N!v7Iyk(Wxc~r@fF&!~WTx@YiWn`S+NLqD`NA&I8m0t@l9z ze%m=8vmPJo`En=Qa2+!v?o#~N{}lWUZlA*aN#M#Aj%6>>^m8TsHccmY?Yj>n$UAPE z_sYF1?ELG~2ypOwl=PYHumr!CY7XGXzCa+6z2$qsx1K+Cr=<4141CrVJH>CtJpJE-GfmFDjmlt!{|!ajncQvyT#9)T%@Hw|iV5+R&HxMz0IQ8{xA)avfYq*ky{yT~cOE>`{&E&th0 zuK(l8A7=S8obu1b%KvwY&Oggvaa{QWEN{1#rS< zM`KyT<9h{@**6`v_$M}Q$EyTBuzuPt3W%-SbF?8+?;d2k>;Y0m9`G;Sp1?nEJMr%^ zPQ;Hx3g?OOFHoic>Lp*O?Yx3W-|+&nOm)bQfgV@Td5y}=yMI!tu`f?T06k%*1+8Ye>LC>%)S?)Sn<&2rFnY66soQoTc3|j_cO9$e~~nrziVc($f%0 z$fGLo^KV5Gc}H%6eT0|ry2=iX?nO)%k##Yjf@hmqdziV&6Q=#hBqCV|e=tOG%?DJ{6m7ah);Xcaajw5p9=nZCNIt&~4!RCyg>;1L2l?7^Ft4DrZ4!DwH zLPzVA`&?>#5%p^}t~Zr`59?#LT7Mezvc(Do6Awtq{%(ZJk&CR-L!ddt_!*4frkAEz zgZR$cf=@N=7(V5<{?Rv7{UZ~H*X2_6&DkQXPZYgke&&GG;3NLf_!3t+f683tqwq7* zRerxe^g#`Q%kRR|OnEBxn;~|iAwM(KZ~kkg%VFQ22&GPucPBZL;y15G7o@yPQbL-M z?Vq^1UY>4GckX9ajW=Au{m}dFG2J7-7E{nJ_~i9zW~uzHEai;bB&mKNtN*7{ebDER z)X1}w6fv~wNr|c_X$Fjsk_dx#y8TO%ToxIe-n24lJ|m^+_GJk>AZ}Ik@GKhJv)|xe zo<*gZp6b;|gb%2?5oc7jq<9v6Mw40u9;F{{?{pH}Mnh}U@~WH7vFV<|jUn&<`G%X? zkleHiPxSEHvVf<)hdCRaZjMjm-NZE9r%4s}!@EU5COvUrGJ*Qqo}NWF^zec9Lf$Dv zRC#XA4ZUivRcF_Nn*82zXJNKq(E38#4aWGHg(dUH_Y@Pc5F0TyEeGGo>o@jNPxx|l z6kQNx%qr+NsJAD44pL+HH_aR3%~VgOV;lQ0 z4zwq60eC*?z0z4Dk^L*q8sZZFXe<|Ti01J`jvYUY0($Rjpadf@^q$;~6`czrJD^8c ztMLSHS?FT$IM3u+qC4LoFw1dI`)siP?^BCwA2_#+kqT+IaUvXieQ!KaVQ>gsOW?t9 zZkeq2;>a+KK`146Sb?XdWaaH#ggD$}mpMz-YYiRdELC>1sh4A?A^ozgN4BA@6{lOC z+mizyzWc6YM_VZq0^P3a0q3${F&W1rf4Qu*QIcU{1ZLxCaIlEJ`zcEJ4 ziI_u=D$nAp$fNigJJMNa&D3yTBe9bpn$GH_u5>nVMH(~r-=>-OBU5g|{x+@%tvPV!x9}gTh)fW0MnxAYbY7GGZNdnfNaHq`ZHOK&lbc|`Ac|dI zaZK*#A@FQgn!PkVQC%YvrD>}l6+h`tA@BPv@2R^N1(IOe{|-!@!XUWJM1?ua;6Sq% zAFh_LO4Z8@Zq^;paP4sU{Z5w+;%lc}p8leC`AsM8P)a>1fdZ_Cjr0_3w7LehjDpq+TrMm(O&*^7o}u+8kAZcj)*tzZp@s6fipI`o#s{(rM(qQ0 zf0gt@_)LXQ9uMoQ7ZiR9;cq4U6-n@y0bY)|Q>fTMlOrr~?gD!MsNbHGUe5G(Ot02- z%YO^wfR6T5ci{SdoB7|&OJLr*m-d zy@vcyQho*V-(q)OV5K9HvW7D2NoG|MsyHdj&#W;Ceoi+W@jc9NI8m^3)wnF<1HDrc z8rLl)DEBKkX}l?b)zz5SjcXfD8VJpIi7#?sfIC1>`alt!}CgwLKUtsYEbK_$_q^wGFFh z)#Zg!SwfCEUV33&D#6ToJ|@AeZmJEnJrryVwLM(kUdW^A17YJ$?;Y=-bW_4LiGvcV zECG9*hLU(J!=tH>Bk@=zk5O*@cpIf}vi)-`&8!Uc5c^@KCwz4(J%NPJH>Je+ya0>? z{^~J!^evHHMFaAFDc&V*1k&$)pkckwHBewyRQK#EPcRmL>HlE)bPrpUS)$ zmYVQJfC2>j5^h&|7FmVW&A6pEw3nLSm{T22k^8z0`8|x9{GLmVu59@f^1+Ra-bDP^ zje(3i@!%~d?8GO({kuEyzMGw$_-*6&cH(whg!SYhQ+H$8h|TfYaWznP3JX;&sll!i zy>+&Pk!8dx!B{h>M?uZKJ*}50c_(iV)Q{w2q-TGTqmel{77|$FIgmI;v2whOfKM`| zHhHr5=(>^#;H*~S9gm#Vpgh()vpQVgIIBkC8S8v-KTEte%eDQ%$@lLNl>pTu3?LF^ z0y%p~M4TiT9{Xxh?uVOn8eEu$;LS2Ok07&ZeOLS8WPHAe-WIfbNsE6guZ*92qP${1 zD@6&l?ZvBo$I&?7L3&~U5T6yi3DNv;jeWH0i|~SmFEwNmejxAw zxlfPDU9O3XX$d()YDt#gBYS1#c7^=6ndBSH?MS;`#c7exa1-g5NSo})*1$LQ?iguh zic6l;`TUXWT{jX`#=YY2|HG!-vplvbcik*hzQgrDZptme7|c(b1ZJ{Qrwp^m@VYPl z&OX@X8QsSM$71{7L$6E5LqCeNwL-^Nck7p9r9fn8b`e-?@8naqM1=UjZF!#P8SI%ANb z`5D4%O1%`W;SW5(#g|-8Z4l0Z^mRU(ZrA%c(C5L3`07Roo>}|eQ){G~+LHWkDRG8( z#E~-?s)D>+V!kl`-5jh%Gf4k$rk)u{Fa9U-n6gQ_}V%*#nliQ=BVh+Kgzb1nV zFnPipz4EE{4>b|#!|C&-4>d1h&f(Hq3{Tm+ z=$;>Tf&$aAp3g;iF0LI`R$Ti&=Qie_HXxT9VJGXtvV`Mn5fmu!5Geny=(m~<2CMkB zRM&#PF<;VTO+4m0VNLvIMLhKsdTX~TJrqTX)9p9u3UBsUSpywX_qYye>ug%0Y|DCu zD716S4AhT_rWF~@nS|7fWSeao)8CdEzlE`2h0v-yk47J3?zV}q@ zdmA0z@VEh0+Zd|3-%k%=aYAQu` zmau4a?;EnNGeFQbum{(#gC}AyWtOZ^p z73W*0qZT^y7nnHIy-C!#&tRAjr~5&Ab3uBH&QXJfi%Lc~l@vvOLX=5=_Yoz2V?-Y3 zXUKjvb>1q0t@aim`u(Aep@X<5WnGoCCglCs$2?tKLvM;50r33j0v-f`9m5j5JmeiM z`4>mOX8Htl&54H*s_cfzT?~dGlN-Lo&>e)DdQ#nQV!61Yw~>JkkhM<|d@GgR&H7k4 z>`0)|(I?3dAmIf6Bu5@O>y%$Clu~|yP)YgOF$yW~0)QBOO#M*WC3@GT0(GG(U(Z$L z>*;ajD{c$n*@0Sx=>yll6mw_YG&8X*s>%37=x9u5B%UGO?u^t1I5T4djy zd|t5XuaWPP@RJ9u&}4-b+1ATQHq)_`;MciQsLr|yn=Pm}FXSCAg)#%kJG?;hEiQcap-LV(72X%jDgwHLGT$qowvjNh5@1G@j<`_pF#bqOS-C9Lg;=)^G zP=;sH5=p#D?Ewbkh{$r>*2n=;zUi4fo*6$BozV1ZR&DGq3S9*Tau++g#vqqvFqZ1; zM3TCKH=Qh2TV$4|_g+UfPTy{$!FtkUO%F>=nC77-%uX_AA;>B^0ls-*$vtxj9BG z%~0#mrD8za-?{zlJ1ts%O#O=rkp#1;9d~ zj}jl}y(rY$zT%XsWde_By>Q!yt_5v4iQM-XI?fu+tZzTcamBlgVR*rC8a##$ z+Sw=!=#3oh2LbJ9k$BHx!r{1HVI?K}NyK}{^SV9OeTQ7=e}NpR`T&xVb)!+8y#CL# z|1EO-#vWt8gn2}3QW~_`?&S9L7kzg>MYMzd%a_iPHVt5#z5=9<0lF#l+3iu5PiJ}V zuxD6jU9IXPQf0JG8&E&p*;ii#cHc5x9cKU+cUFJx6VePCJxW%j3En*%UM9Mn0LmrS zn2)*9I7R7x+e=zHd36rugrj(&wh1f*OWPl6EVE9X#vyqS`O1y&O;uhNVOc9!NE+(s zgX+evJ4}UYVd7&?0Z+kR4%8TAki1C|1B~D~GEo+0gEVc;k-mNX9LD8yNyGF@L6`vf z3xeLQM2;u!1p{DpoGTivCvrbGR-0n(&d$Z?>IdT`*ihNkm-R}3X=P@2!k!e(oGhF3%$h+o4;YlM>k6U$0 zY$>|9K9k*VQCMR^%l)-1;TREtoqRdkX+59Mqb2V))JWIR=Kjx;{?R@B6#IpD%0KxFPo>ekPJ)r&phEVLLUF6 zwb*R}W)%%&ksGqj^yo<0o6S+_G!O2W=7=}<04j#l9tcf~by@<%pA0e|AmXl@Ot^G$ zFHy=>vKCUdrv5AxeD6Un<2g~8sdVH2PaVfF+tWha{{U6x&0YXIK*YaJ@09yP-VqAE z)umKU2$bCX-=OmL2ep?&eeotgo808qsX&)?Or>11myxJ`T$%OWlWdnK>adr|G@v&v z;R=vGF;dd1c18U^_tY+wsoS+en(&O%gfwkJ37b%jgP5Wn88CjdZWhe%uZUr$u2<|i za{3xbkLGXo^MViP+j@;7YLgzyNRQL_dd4v#2m%2&>W@e#71Kmnl+cc6pw8&)%o<9N z2zQ@eq@E#s6>(?rva~Ny*2){BG+2EFQaM>&5VDL$Lk!YV#3}++&ywk|UYV9)ZrJ~q zvj?^1Ztx?2WbOW04b^GF($^~9sd`=5&ofUe|L+PXyN-@_qYM0X_sW<`AQ&$GQrRmEDCLu={=>U{)>3sR*YuhY>G zuGN&uxKxPt&+`06MD?S1$Tu@*bLhJH8rmCDGl>Rr#9eW$$2YGN7H| zEreHDBa~EDxKIv*?2z>PH|N3g2(;}<$gW?BU9$_{|IPQ0`L32aA^N=^C=CW!q6Mlu zu3R4Fmk{mJJXKh?=1Fr9^s@YNYnzw+H!ZkIfr3Cwm1RQTM~GpYk$Ro#u{rB+z$;jM zAU;IC5919weM>50oZ61++8bZWarJl4ucwcnf$gaP zyYc&*@N0J30VPx+IC9+^Y02@dLu)z~_1^>i4R5WYy>Rv!1OR`3j3Xx76P})?k)K8X zQvEQyLA@T>cfB03oR9r5l>Oio_3%kb*Oo^z$o4RA6`Yt-w8TjM#1kGZ=dq%*k2>J! z5ASIFUz}N!Ri;k}j3WE`&yH%_l_DK9fEL%)0=WjdS>Y8`Sno{)^cQ23$t&jFBq|D0 zp+TXsQ)=qHvNT!+g|#&WRo$WRzB1lmeka!aP>&-opvBa!#?nO5I+6kwmKHRv@5x|@ zpZf%t>RFc$Ohl}}C__Vc@c*Tsdum|P5Qkp|12OwvzC`a+pOq#$;Ofx^Y(ZgpuHy6g zVZx$yc9%r_ka&Xw+F(oxjq(e@`RqcmZ!uU8IWw@i;=lWb` zIj3M;odgDkUX;S&C#VcogyvP*o^ZX}g$MX&&q>8YLsw7u&yoU3{xuP}cC&NSn?#co zehNt;?=AIQl%1n1xW0yA$m8~;Ao<}AvcRodvC9lqJDsp6dy#grfF_&`F)isgc(Naj z`8OOQ!qv4%+LtsQ=zw_NaLbd$5d1IoA(=&*@hs{)3ib`yv2hLDP10PpST@R=+*-PA zrn<0<0t%K2_i(eR%Y+K8z1x_J24;F{UODMF!%nGJ`6d~vnXcvzwd&kStBy-eA1`lE z)5pbl;pKB0)N4j(!Kcp<(|IHxV)zbe*aeH#R^EqZ^nN(wBy8qi)+XD``@}3i%dd2n z#|BaI@w-B`|00!2yFzOAIfZ%ZE@-;5pU-gtJp&iaWeRHYX9d1 zjzC(%zA_20(NbjxKRw~1UwHC)+k4U?W%Hkr08X9EzH+z22Ut(H3*zT)tgJu;`_pAe zshW_9 zHw=u`^iQS7A3tILTax;3X5Ic=4o2x#{O9F{4J3@qGM{idP8u)%na@hMPGT1+FqCe2|lfm#I>a!Y*N!3y2vP~2naJob`4+}B&( za)tk%_w)+C!`>IXB`rPM1WK4(dKmoQQ<&kITa;hCDu7vk6u?a}z^w}SJvtQUrKQ5c zuJfBhl?{2EiJJJPw8$N|Y{rr!opHgAGf|b8i7Bx;a>r=8j03`sZ^b!Q_d97V(vI8p z)~21X>tVx_xh}#WOBKwENFMswwP@l;^=i4rZ2#kMvV0Np_Ft&GMlMiP&!Yr@T|?K zY9>y-G1H*^tvJ++=RzM6PHw{O0F+Il6xW5TM4~A_Gvw|4uJjEPmCKJ7iYLHNHLhd~ z?SBu$(HoSh4rt+i)AWwW>AmpcU{arhS88}xX<@6MR$``L1w5X`=iE9!2ccVEQv=9> zlq8P-;4_-I8HfFN;(gOGf&Ev*srv|Pd;~SRFn{B?@Inz?xV_ggbjKaYV&Day^`q6C z-=WC2$Kf?;?>OsJBzOID}sg}%;eEitH4>xzayX;u3ZzVc#o!PgJzs4qD{gIgC<(_IKq1_EA zP%jp*PGjyn!LV$-98$|_%X&;538j$iyOQ!6*qAk+;14VK75ANBh_~(rcoV--hRVIa zO0f(UJ3n5mgamzMNLzC!(Ot}m5;}d_)KDdxd?fY z2C|TEztGZINC9c|!Q^+qBSVI~eUKv&Kx6*WB8>@+II+$1CME3J?E0}!ozAXWgVsIK z$|2+`dn<(31xEzWmBiB}j^|02TGsJgVy2AIIm+OEL+8GeCrZ0fGii1e6GB27=^}37mlm#)67~ij5^$v{IOp zfC5Q6iR5IQ%B{B5TkmbZx9zRH^;TOgh8H0(kQWdPAR0sztV+ zsI|Y}^Zh^1&qp%n?6ddUFMI8^*Is+Q@GX5(ucF2FJNqkIc$`qwQBJu1v#vb>bOtve zZ=@&e)Gip_#dSG?9eB`Q4t_~LRelj#`;4Q`meo^ymn_A%NooxOl+CJ2h{+vMBXzdq zX4Wd!aIH2Zx4c;ykgFb&()YU5Bbqs*Ib5SPsbW3!PjTH3A90UllJLOyjBJ8<`I#(} zlH;G73H1eT3(E=)wW&E-+5{vc!Ws|4R{rcS$v<>DoS)6SWRA><%J$GN*k4ah7T88P z7m-hfyVP1pL&+g$`u>Z5Xv}dDP;I(@zDxg-en4`*D~Yq-g}WRwENCX9ck+4Jl$*Zm z;vc-DTpLmHoMovTs9H!o2oE11g&SwusfNax z2}rQJ#PE_2h;8s#a~{pE)b>Z@H}gJ$O9^(pKF=5)w3V41Q_fgl2Fi z5G#wzX7g|?4oxM^b0ceS0GpuJ!)1N~-D+~7?(r99u8l=F*UqEbP)Yq-s=aEJe7kMF zp4&<+zE8wJPM5DMw#bT*HPdKMkZCU%E=|LE#OuJhH$QxzOg<-N*1rTN>yT7@gBa;S zU4|37kJ_<_8=|Ket$C*#DSF%>65i8=^;Fos{233vODn~S-_gTvE8pe5jAx#|$Ve+g z<;EJ{pEx03AFJ8fJhjRIeEB)PAVr2^3;INeyS3|jV?n=jg{EVEwyuKbm4M2bE<)EN z456$KAx{;EOJT5%hYL!BBY=+i5Fm!<%UCCwjM6sl!y+|kbWA-!VR=Ma&Pmj3>ZW=q zxaKMk`CMvAac0HYwS(buRG;Ws3mMQIzN?Os@h<u{I|h5F7(Qfl%=q`YIrE^{|{%DJ!7ANaiAq;&&Gp99##D-@?HLdg)WfXtcdqo z4$=Stp+6_Gj7Eza{{|>>V7lp60S7GWMp@_zw^0E!E*yGn2(4HLM&%X*xK@`-Gd&j{ z+~M64j$UC`#l zAZ`n`kR>JJ)X24G?Bh&fGv1HhnxoG7MIOzBUo|2;SjHl91$9X92GL z-WhbANf#%zXRZF6Ov(3!RSo%0ioRMqg+B0I64kkxMMF^PCIZxigyIX%rd8*dfR%k_ zGE)~1wNWS4oaDk_#*MTpt_suxRI+pguAb0)1cSCsM`db`o!Jr|*NcwGxaRg7*EU($ zt&eMV=~cTLQdcB_RYSKscbmZIqA~w_i-0ZqE@ObGuL&~7qZY@8HbFIuTTjNVp3srw zuzGLGu6!cZgYMaRwCODmt0skqy)gL5P5NMCEbc_}c%HPe+`9YzdF#d$9l_>;x@*XH z=yH2U&Iq%2CfAvTws5svCAErbv&GGa)qDpqgD^tPPvmC(OGB}sw*i@v2H+-0+HnlP+K1E< zb;S~vZmP>uP&#h4#MMvx=hYuh)vMQrMmi%#_!7;=jX}elXc&5A<@nxMtV<+kquPLN zyAuw*5lYaz8VYBV)J`(G1dL`cj4$qGU$JTapQccdx%37oy!|wlF8d}4jn2*@t9m}Y z7OTd?+`+{^@PJ* zI)6!axYh1H82X!p@21z< zhkE7W+w&ncGlRqUBk3iYPYu7mI7*75f>IPubP8_<%2HEy~L33e@zIrHub~(?<48 zqDh%3lgueky){?eV5c3777-ehgyaOA$x~1)A3W;9Py^Z(Y59wzdRq=?w2>nJ1Ygib z$J}QN1`zZFlXohZU3{N6gEe2fd?#b&LuW&O?=tB2v;qILtLCC3YA_eqidSjea+oq7 zzy@TYSh0D&E=b72P2McSv-SONIg(p3F?d`lSI4m*dH%3Q zNd*zHg#HoFNZ=wEv_Unb_S@DtPZ&pZ^rg2GG!q7vDDnT4j;TTM?ZZT)15*=LlD*+hLaQ6Gq2##!!zSUys3S`Opq5<2}}MB|;98gUl>U?qTLHBx$e zoN*zGMWEJR`~zIjr6UKZiknoR@gX#=(-`($asPDK2SzYV4WZdKAXvQbO7izV{nt={@D@)eL!He*=UAEeSt~?`7vF-Q?bj`7js@h zg7#-QaNUDZ=)SHY#UlbTm71ygkpecVoHHWp$8x|&=bDUgW6qjbZkT@)|GY^#JOO_a zdl~j2kul2?$XT;>DDOIXAj-^^I(T+JxB*>m>$s-Nv#852l=G322TR&=iKHf5uhL(k z#s4N{c9ARSUkb=Nca85oT&^!(e(3Yg58;$L=nf?K#Lbf6a<&!eLoMPDloHmuqn*Wuu??uYu*jnPN9RR0{!j+7$upa|ll!!^1Gq&GC*HXjH z29{hx9Z!L~#0IOrX^fVRP9NjkK$*qzFD{aE*KIEm!341300yU`&;v2B2sjkii#3EQ zj85#mtsfR4KR*)k;Q1xv8I-r7F!=R={&#BxOo+p!)Zx9Z=mjJ>p!6w%~e3oADH0{VePB!iV{ee1mJmU zkRU>SBe6c6G&YnQNPIWD@;pL!NP&dG2+r_4u2vrua@8Y}a52|;sAvq=^<%E9CKqvD zP}c#}o zhCq*0ar0VCz~_?MRdfT__z)4vFa%92`&D>a7QWW@R1Fs2{;9d6u3hm45~czo^vMaD zOASeCOM0y|HmHyNCFxL5!u(Jb#@M$?!sXtvzij4?<)UNJv2XLBQ*TubUgrNP#=cwF zMjZnz%mBKChGQ7IAZ@^h$k<=$sLS?_#1_;%N-%N2pbgOjZCpF)ZSBXthm^TA6myrV z^B+U5Zw&KF^Z)ZWdMS6}Db79`~7 znZE-q4f)VE2pw@u0Y|agmfqr@pGC_0dz?8-#928@v;l_8%{t6vlw-(fHn@W9swwfz zFMzog<#4UDN%iX2D@DwCNf2CJ-wh+8H;x%Om|&NQpd2G0zBIl?XP zAy4PdoD_eGw_0>L7}tIr=&Dy^(h4(?_sXmVe-1Tad&f{30u7jzO%na zVZQ=*=RC3GY9#bO7`MnVH6H+pDQEjT2e26AL$kZ_$ATB8!6fB2*!OQEzzQ8!)0|!2 zT*$Ac6TISS(}~Cw#S*QzdM8H489`oMf_80MFK@8q!zV5hApRfGEz4PUtpWx3~h#9uA z5}N>ICQ~v9HHkkg>n7SKy7miAW!>1B0H&;)SY?GyESco5(t=-C+-K9c>Oj9-~Vtt25fhg)Fj zlu0tvJ_1uUxCmZa*a6Yu`N2nZ2syfNJsT(6@hA%0Ztso$RW3+h)6dJ6Rr19@_~*F% ztFmzwAPW~||0)@uF8+aH#tiiTAX~l9)K47BqEPiPw=w)V)v%R5DqgzzfB`vpeZoIX zwKr}$o$R%?(*CbI0dWsyFD7`@<6xi!jg>TkzPhuJ$&R##1GoFyY;Zy)MeoXg{E2z4F7 zySSuS@c}aWO6(>Iv5#>_hm?5O1jUNa{uN)qKFp_XJP15Nqv;t}Cbhmc{XABXujVYo zClcph51N>di+`k4dJ+@l+K^oiBSgjAeC?PV*!G-pHJ%V*&DkWD?&vs7l#wI&7?Pld zn4W9*2tP7;EI)Gi_=6Qu#T?2_a0``&dw{~=d^DeuJgSmr?9$pG=^e(n80j6189U(U z6Ve@b8#z1yN)nA$+0%S{Rp2bb_w+&&xzDoox!FJzehicm^JxIe<&lpMvXP@f>p_di z3$OntK*tSzE&`jV|ci>O+|s zk)bjW5hEM=w0BhurNzrw+gM7wr;fCX30>-s>w z*AYco!2Bg=mK)*f8Bp(_GIBu~ZRTWyiU99rJvlUkHvhd#w4oUX%X&QY8t4BvVw}d` zyF?c1WK;}La{x;A?V-9y=%i(ne!{HeQG*BZ+HN!F)zzZ+8cvsasgOhDmSv6B9DSFC zVvBMg5TF4^4<{Cv~rH&Mrx#j)TG0rb0#x-wTLg| zP(r|}A+)(qwD4g8RyH?UbnBXS$wp{>cq_PKs2jY5Q~&S5Cdqp0LZr$_egnzxMw0RVsy2k&pua(XUPTjMO4NJLSSN|I z8(q#82@w%0YY&~GKE3El{qM5w1?X7OUi)(t|}Txyu7;1k0;HBlK+4L&;e;X zwGkK7hd!RHcU7#ag$C=I+PlVTxO%O|73(YB5H+RZAi%&+nk*cpct%YU*GGcS zK-Tl<7q8UJ84Lstjft-}n6q7#tAu5ZGj+zkk~l2DN&FR7pQMue8H=xpH;6vW z2(BzW{@BRfCxoi^&G!g3{s&S#bg!=hdFZkeNa3HertAzY01$f6m|XuNmz;jl?O(N= zkh?}kds-#`53=(7KZL^goO~I>)WUQ>&;RsF^&&F8i|^ToJ^`q8;k|fo$NNI;1%bI? zD&7{}PlbYL_PZ|OI3B-}13wigt;^RvsCcY|W1fINNr5?bH;mJ8&ck7+&LJQAL>7*_ zh4XYl(nj5G@r-Sj15 z@lg7S=)DuCKh5Plvw8@sNvk~ICg~%%=g-_isPc&9+aGqNpOFrocB$t(54grQ3;QdN z0B)pp3k50`ZQUnE>pqhO%`F_E)&=h4;q$oy40DnH8ki=O({yqImtc@ZZ+yWmkzuAbvcKc3MnRV61> zCfh-6CFfoR?5ZoZOG}61jZt^ejo$@}0dWwzkgvyFG`ea8=(`2xi5A~EOXb3=RS))5 zF6^m#FkHDXtR15hA{k3mjX>tgB(I&&;6qAq3n*i*l*1vm-eG{*Rp|gi2oG@CmCLVY zS3NG^w?_^+P02~UN6z=+pFAutaZ{=W{S?W1^-)HqX@6wd3Y&sN4n%Mf*FF$(Snj=vci zj)JA1q`$t>YTnuADlb4;4-|vnv_%O!R7o;{GqAZOlZ|5V{@_A)vKN2>)oLX&|bjS)EWAR z0}t$Rsf7)X#L80Q4$sr=#>*h=@5!B)@Y5jIe(8{F&pE`mAw}tsg-#TZ(?85O=tdYE zs1{VWQwgCvPiTTh5f%3ibt8hYJRKjffw}{wgG`u!GT6@wct<8tf7iduWg#kr!@NU| ztA$Nmy<6=U7-GnT58XnS_Jv#)jY%0g|P(Bly<MJnXAqVBo30*^B%&aCa}Pw`0T4}11`uyBVCPPuJMG4fLzk7r&;i(KUwLC zKiPl+`cn)&@z>aBK6^A@Tr^*NG~a+|zJzGLfzf<}qWMHUAN}>!Izlpg=4pZ?%8Hn! z@`{>vj<_p);1&>W%HwSM1|~7)VC)!kj6v&##XKLU1Sca9*7ld~17Yttqr`NiN~ND0*^n?q&nDMiH7jqy+)|Gv z-s;I{?@#PJLj@D9^3D%E0ox3`z?q2IFno9s4;U&7)SJQ$RrA7fcu&Tq+Akq8Y?dZx zRcaqe_j>{f!{*~iVM9r`+KvhJq}Rx#Tlp+``jsYUsyIA#W2Kw`8Io$xB+c}{^0Fy` zjkDTkPEP(ee4o4!LBy_1eq{^kT+f{R%HPOnMN&T!H`l8tsEoh7jEaDO&YW!hH^72E zPFR|pZJ!KvL6n(XzC|xm2dJ%TW8ZqXP%;Yb(hDt2nEXl^6+(UgYCVqsH}xd;uLm`7 zO~}`$s{ZvPflEsH7wSSKR2M*@o-0)N8+}qi)h<&R47-2(7QNJonUk|nUCrd}dKKHt zD0gTUoA|c?0q!0wnD~}kt;LFL!(L*;9-h(6M|Ok8Sc+!&t%IJK#w8JM5vV4q zHsp}}+pCQh=1k7ol*_2Hy_9OpnY_J{s?+`fP^iT030R*+Emr{CI~J%|3&Ae&SyPC~ z%IE>2p=TYFv)+)Mdz7Hs)!DKb;vzT#r$<`cxg3xXwnMhi6IYn5*6VK%8*hOJcB){^ zM-<~&ky0Omj5-{6;J1;awny}&`g$zhZWxDq^tGGMYxX+xQ)AhCK+46xkfu&T9W7h1 z=3x1)7!6xp3BLQu!#{Lxe3!=+$8m^kb-~9eV8$F8q6?JsftDqmwgP0QloW<;`;=c{ zsEy~};aN$P;g>9l$OIxdaT)lBkkva@6pS_D=L!7KDx5{W%VV-`Q!Z#BZe3w;<-e0m zXnSgqt>nQ0Q#GX~-Ntu~GKyX|@oPC-WI$~e#u%*}Iet08uy57v?Pc`<8Q<91e&pg` zBBFNuCYkYD9m@hQ*bwXyZEUo(^L8{<>TtEjq#&TD+Ai84uUad7C5P)VA{OP-M%$(h zV@-zpFB(@!eYTZ?qY5s75gbS=J+HQhhZ2R=zSL!WazO)*c!9@otbycHJp`E_>kj*G zC&HFb?(N>jw2|cP6pQ5!lU(*TSZqHA{%o9Xk6Yua&p0S<{#ngw$)p~@n8iZs>FiRz z*!jB?5@~M_tU^j70wHvUo3$@xe^FZKG4y*=FAV=1#Ak>8fx3)V8x1asmwg%xi^D^; zvy0*L^v4j^l18qt2SMu(l12VfI&n@SQ*{UX%?}&b*?fWyp>={neu$6m6`e z4*^{PxQ(At$*fc}5Y4Kr?`+l9mi5G74JwaFTL{z+dI8ba;oOb}5CvE3_}x3aqGnAz z;II!x%xz=i8It2p;yevp8P~IBG-CtreGE(+C>L~aTTu%AV7+==G1SjzZ?5^c!pi0m zQs5UnqZz|3nWobpC51=N@98sm{YQ?+t>6$w>>E7vsnG`N6t?(dk7Gt{E51#3 ziPfBl$>sDLd0ltY$bE!nC_^g_Dq{6vS|xhzNDNkR5jg*8Fz!~|>K?h^AVv#dszXuG z4{<&)6$MB5Gq{kCD7&=9P784aAaX^Zzsit2as`YG)j=+gGuE!vS-qdSb z2tWpQdQvmDq#!#UfQC?4=sV1q7!O{vDF|XF_-h{c>i=N(go56{?O268quh6IwBhid ziH1jd70y+gtA`54$I!+eoh*ks(Vjl*th9-LR;GoH;{$PMc4U(~Pp^zeh|r$U1iK!1 z2G?aHLD?Hk2~4gQ)kkhk$R3A8P`Vfop!Nm_1(hY zYgJUGZQR2kt6N1A|5r-%rt_F*>}Rs`P_YFJJnV!nKZG1mWpy4|oy)|MjumK0!|MQm zkrx>zsiF4(q?Ro^ZA~ZwK}EU-+P(|VP=2%koALHnyrI_D@x#Srp`LXSNBsv<3WM9L zbVu2;emzo;Bcn|YzbBKCfCU2wtPP_Z#R>Re5jSs4{#-IKDklReW|;705Wd73U$6<) zLp0`)owJja>!5i7YYD#7I|N>PtnCNfmf3Xcf(r8;`tQsnq}hoh_qFvvHZM?s7TK2& zD*#rky!FJFVfwE`4#;6d7cROHV}SjSCuev@#lF3B@#QH#N5b9KvnJV)ypj z%GZ#SVMPFf8&M1|696^1(E?y2!#>lO~CRY%d@d{6~bx1+D4{xB9WX;%HK^kQzaO-plH#Q66Vd8O!6R zehGtAIlVFH?a^%%pFmFCe{2F?d7W$j1yt^1F2kO$nKnRpZRgP5bLlYh<<)4d$GFz> z1e0q7$|I{X(xo2;VvWkeJ^d`DTUw4-XmfiBYi@O{?vs-WDA zS40%9e^rL5GFjes*;UFro! zQfJu)(P4CZCVnx?8OY9)kPgg6m3W*JNKA7JyX3NNQ>ochB+40eP#4iJc|>%PPGMXa zPSW%#{jOq+pD2rB=dprALpZyw=fSZg)VIpw@0(U7R^f?(L%E?{j$Jy67IJq081TYe<}x#~iP_hw-D7zZE*l(wx_=Bqx(Mg}}M z%|Gcqg~4`cv+;;rGe_;9ofryQ&Zi(BoY^ir+lwX=6B4lA0}AO5eg9vG#lA2llnAhppV>TtW#kAg zrRY}Kcg~DDm?RFyCkswW|4o!n3h&Y!NQjLl_;w9;lWe^5B!tkif7E>oF%@Gk@;y8A z;r5-IXq@Jvf zA$u&OMYWnmc7Ehdlzmw(CbD|aord9Tpnbl$KX&6}hc=)x1x@V?nhBm-AL7#?c7=fM zU*YpEo})^qK1W@i0LgTA(U=gOdIi9-d9*W%!GA4nBKHKcCXmA|qM~J4sbLZ5o1&Aj z|G*N}QO!Gui{OH~J=Dy&WKES-O}0^Xc^oYox3f|A+w~4rLe@DtS@NWRNqjsg!Qbu1 zih2rS(KH5uQS+n+L0Y;(t*suS2UU?VD%;H7GAw#AL5w;e#IF7 z7RF@8UJI!<4CDrALGlNq-Db3XO?z(rwe1Mjl;jkTQE4lOmyEaMBIFbYu=w>tT5ouHC?i}oJj38=Q-=@E2p&wz2 zZ+iZ{H99 z)qSFu-aXNKW9fR+LV@sFpB*vIO1$MY#(E1q$Mh+^c?>Q5Y|XQDE+bb}fG ztiyHcb=8#XdG;ewin1mJ5jMSeKng0gJ&8v~WqmUdpkqBXmX)FF*AAp3*j30}w;7qA z04&5`b)t;h@7Zkv!ohX8(5l*QA}}wxh5e;j0+h_cb&WQWYU769fnrs;(eP=$;P_Xs za*Ux*A&SE0=`Q$+nvh^L0l4ut2dv&;lZ0JbEQmR|u_BCe0))~MdGbzHZGZd8SQCb5 zD(u^*H{F98v9t^JdSIHn1Z3Y0XI;U+Vc{}!9IC{hyn;_>maZFTnyRdy6Yz`^N}W@c zfe0qP5P;}EZIa75-3LhPZdPsc4d~TV@x|-$P5%*B@i(IiFRIXf0|@Xcl!~m16*_x2 z$pr&*kj-sbu+N0cVa&e)TD@aD(n0OppTtkUy}3W-$@EP(At&S0wg(J+dYv8^i~jLs zK*I(UbMpuwfW2O&k9_4t#8Jjmgu@{XHbl_ph9%Pv3b9STF& z>E40anOBvO=pF=k+No^#ufNenYMxTKfh`N%P@wr6qUVBKcN@EQie}TZ1nv{u1!O{I zQ?Gk64_z1bm1a(da-8x5obQ22sj*WLT0^y^J%KY{ns0gzGLg>#U>*#U71sTtyV@PE z0a*~?urN6Gas(f#HdYX}9bbVk+z*HMD2u3e2mV-KD^Fi`;fpf0x1Jij108APx3N2+ zgC45zuX=^0eJW(^3`l`ovugXhhcFJy9D5$qW|!(fJ_kUOO`caZL-*n*JU5HEu14E@ zRKy~}8Srz=b=)ZjHkb>8$qKvCdIV|c&z2Wa4J|gjBp$-motYR|G50*00PR*Xnzv0s zR*vuE2M#f-_ZHG~onNeX`>z|0k1%rnAWR|ySNb_fg%3G9*Qex>>wNMav3?Nb5PQ2k zYT{lQqB__Nh~Y-Fcf=6()u;fZpd%uo`%WQK zwIeFfICRz!ba)D|+g`}cI9LrUceEH1Fc!fm*t*T6LD^2CQIu|H<_r&A9Dx8wNnc5V zsbm;&B@}+sKRNgY8C|!+hHr6wJ#!lBlvHM=;l1ds-Pxu{bk4%y>+AF|Q@$=(Y_gWr z2C*=hs9`KgDcqs=Jc-3H7{BV|Xv0UIB}q(w!eW;?Yl(mG4k`?`oT0<|Fd})QW#Tyb zSWo70um^(0`5XM5DE1;5we%U=j#>xKsOn*LZ?4*yr|w4#{$Gaa)OOfYa44?;N$1(H z5L+&8r}$tUMvIhT@X-d__fIB44)GNV_%5eF#@+Q`pCihTzQ7rSn%mnV-Pr+-S}c+( z8d4Y>7Ht_dOnU$lu8vx>uI~%xSKa4L4_euqtS$!k_)(B%I^~-)?I}21JtEpxFxdLw z9nWyW!zvJc8*7`;Gi|SnENSAXcUW8k{e=~AtSO^XG9U& zja-W&5WfNN7IukPtOFb!0T@bxxQe+paI8`NVchXlvbrv|4<7e4p3LV`*B~{cnWkzG zW|0-M#qvpJooUQ=`BQxR!v2L;e}0004c5}G8uGzcAtHnCay&Z-5jP5W3K2{V4f8wS0-K4adiF>+y2%VC37f6BGljymbiJrTa!UO@!)yu zc3-y{H(wbw_=SgNoLSWQ@4M9btuA%$$LeYb5f{_(r5y@ODfsR3PV{xhEB7vIw8Wcc zif^xbYZ4@}HnLI7F-vssAqSqZbL4c0Q?${@XO8Ck0QvCQN_lne(+}>YFz8*4etsRNRXth9E;Zp=Hr^Ye zM;XvhVm(|lHcK|E7#Zq>{mYe7fJelGNyvgR(K7gadBuLNjW5N+zP7l&8 zwfJnTfU^EvvxpdZ%P9U$IbC5C$1j7K{NfO9W+>I-O~c<Wwt2Y_J)zyqhhDdMmCT7j9n`+@+B23%h04Dl0Pqza|NEs z2C{jU!S&W)#4(+#&UFFt;u;@zdoVdiI&Y%#P;7h%Bt=jv<{ z()x2980v2u*#u)`X;i&W>mxcXbjlb}vHb7)lNAS7JW+$>KpuL*rnpc*RU88pWuD7K^`0IC=$}z|d)4J;wwL59QdRGaVgdfWZT` zHI-rn_20alH~Ui7|vYiq`GHqpCAl7I`N7|VUVgvRW}PAy;M#jr%5zsV&kdYM?RvJ28g>wE!WFPxzl8lZ0tc#m1GQ?c6-OW^ z+D2^P=d@vvr|Tj>))zqRg8w5~q7vturpg!Dcnmk?osf_{h_dF|6+m!uPJB zD0Y!}5M=Dvnl;$;!e)dm499!#4#k=|o{@#RD{daN^)k*_bep7pnGbxKixZm*pRvQM zcaW7v+oA`>pM8m5hCarhtqHWn#s?++{%p?=sf)-C1}mxQZ$k@C@B zp`J`?VMUQ4$2 zQr1-Ouv{`%!0tb@$~7f1SN$3)B0+5o9T^gL#9~0_1hTLzJXi?l9QErz%vHZs>$Mi& zW%CB76qqfzpr=`I(UsoK;Xmb<(m!f&Sreza3mU@|I}9~ihY{uq`#BxrwiPCCtZ^_Jf5aO+gBA%=>8lM#FjE1QnqhXu` z-Q*jR6)_w@H>Cto?9_GyvpXp6$QmFQ)Vc!qv`D^7amB+|9E{g3nk<0@Q(Kf1`XS&t z+}+|LH*`|qmJ~xz3o8&!H)*Z%U$tkHaaY|L9rTn0hAYn(Kpwe#$$kTnR(jbR1 z3QH`wXX>#k720OPc62`b<46y&_lGK2{y9~NE8QSWRek}5B40D&uav@r$VleAr8m&p_}Mf8hoJkb1TdjpsR{KOsQwz@?76CHOp0HoeYc+E1K8N zqN*w`(yi(=t~H29V9=PXTg8fx@$9>5E3rdWxAHx_gm-gjc6O@cnkUNwYNBw!X`aT=Ilf(e|jCRQ%k7g#XF4E;N|08@<`AP}8a16kI>VE1y4&`e04 ze#Tk1p?aCr=*rb4OWK#q{E1dbQ7RW$g=Mh(lqwUf0BB}wxleKp1 zP3fgl?;J=am2_W;6|o!1$W<9t3K5AiytHH>V%(LM41$hYX^E(p@g@UA^&pPx$S`ZN zYV?D1z*S?bhck`wvy+&_=BbT3J9`+E|EO`w^IeLUVPcn0+PI~(HAOsF(&Z%>A20dM zuSft{K&HPED1qX(s4(Z&#extY=vuSnl4~yYT|aIvr_A?dgnx{K*nYlWU?CIx+j>LP z4dN*dceqB0XVc428$L_m?zi!1=XeS(8qnO2HxMv}$cV~DrCSYfU@z|bF?ONF06J53 zy=6f4{!h4GR|cZy;ePJ{96wm15%8c#n93v~AYgdDb`aTLwDoH=;=wf!IkgQp`n|6? zKw0#xwV%gredtIwP-VAAz>fV9RL8U)M+s0VYIW%eeLJKviD zF3ZA}u!!@o+1RMmIM=8xeF;wF#EoO`wrtvrcrTmp&~=%y6GCrq2|EN&au@89suoN% z-7tSJ4x5QnU$jvHZydz`IEN)_O^c#8MD_ETse(MFF!<`Dgy~K4^s7iIqCGqlcH8=e z@&}uE6?o5xo2Lb4AIcJnZ6GAtd5D15bQA{v@D$hlMMh2OG%_@XZX%2u^Z>bZe+zw> zKHGD7s-0~dK%IQuw~5cc&PsVU@8iCnWbf_a{bI#$*jEmi-WU10q&p0)_HeRnnFd7| zLSz;F_BHA^E!xe1Lzbc|uE`kRC!@~P?Jo>|`WQ-pVSj@roFlX2wCqv$AQr7aY|7|O zd|xt3zluMu>pzGx2ea~$vQo+;)O4ImxfA`^l>Iv^aUog(sh3~jr)PnAUtGHspYD(tm4ZOv< z$KQCX0!P~pDV~wLc$v0{`Ct(Lh#rRO@I~6r=tR(A&q*}V>U4~d6#oEsb^YoFc~cq&Y(%iX{N;&5|EEU z-4X$$w)6wlkZUh#$Q?kD`vrqo_kjs`fZ88s!_47A=+DUL;$X_m*|q*$KMRQ!UaQ_o z7~;XH9>-ffM|1iV&ne~j0df%jkZljG@wBZbL648P7bnv(gJ}mQC4}3NFQ>|SH_#{{ z>sG}AwFWotO1^*sc)6~xwA!9iy6*1qt%|*&oWa4qC>$oz8NZEj<4dex9{p~ffFCa< z9Rb($X!R@rY%twgdN+m?;h=&2F=`!SB_nKucCNHL#oIyDLceMfcbI^9DU3m2Jg-|l2>o9{BBDooVz7vioP@nkgFti&5lt}i)H>ORsD^0Mei{d_>Q=B`>D(%3Z z?82b$OUkaSCQk9iNJthmXBwJQjrXN4$fbj6Xe$)^98=|?N~}~y0xk#05xeHW@&=C8 zo+0;qRpp5Up}Qm zwVC=;{g-UaEnO0b;Z7l&7ViMxC2)|q)f%nQt#hWYJH|UX^b9Z&ZyCPs!QKg>CkZc! zv_EDhfoH6teS#BAs=4wWOXxu)zZ0W-WGC#%!)ZN5DqT+$KEuH26b_=y^y`LundsLL z0ZA#HYEs-XOyy{+v6|_uI9RQN>d4iYWfGVaIyt49V+5{|me;IU#2>i zHD;R!n?r~237U&mWUHtX^o7d%JB{?^`*c=llhBV9s%BP*5w|7L&?v+ND@zN5u6@K1 zZHw|l-ah=$pTQ5ImizD;T7o~c#-GoOa5lV+s|)%vH%Q{e^I4MP!e=NhZ5)0pSc;v&ac4qOzNmR;T>dr()pqPlc#p#pS+q=l@1f zd>(D?HpJ$u`DTP%JUhb(iHJ8nxKsm^iWe|!Xx13ahFC7+BgWm2g%%lmyFT^|KrgqK z%Pqc-CsHg=G@>{p7-hY^WhbF5CN{(>(|%^a+(RiYrIN6%3)wXr?|xvAfwz6HZCYt1 z{Bjwu1VZs^SAxzfOQf=`e!Vr3<<06|l7glHH`U#^9%rV!|3M-}=b0aSP)86%mq*b^ zlp{Mm!nF&oikIPakYJ%u3zbUjl)99HHQWNk9Z`gbJxn1 zSXmDd7)ZVe12Q{UlAR7Vc!jk^2wMXC`B@`#Y?eIrq+1Qb`-2`mv{9`O{%?=&g-c1^ zI;>BQ5Xe7ARK%y{}l1K-}+9$Shz#MtpAIiKM~BanoL73bDbCOXW}y$?R(Tf&_(TycCC|vM@ii z;SQE9{Ya8tM~A6dfz;2apCE4!=nUaRXf9yUyDA?`y#Y~q#tD!_+z%QukWZp5rRx$A z12416lbC`I1)dhln-LfC(yd+`RJyewxoQtL`!3xrZd^$wl5#k`j-2BbG*>Q2NYQqH zAt!`$06*lHGQy;%QwfN!O0N~>hgHPH(`LjAi)nyv;OT(hK-~Dk?EspUg3Ws@?03*A zGIY$;cbh4FE=O-GVBC`X?>EM5vziPY>rWR3M{tE?rCi~uBrMBD7TeJ9o3ZwAwN22~C~x}8n6IWiG5Zyq#uC8vOp<38G8i?&>6_)S|! zdPLbCzUM}v$1eV5r#>~OFg3Z4FI!4&%k}?cVI*!XHC%GeS|C3AE1vUpqr1%Rz?9L- z?SP%k{EL+Vd+0B!mVM(>>XwWcP4YgvXUS? z?*(ucp3)-4a4A0e3PWQC4ynYP5myd5OLAyQnBx2IFx%}W^~+`IYcw8!aC4lY6`Jn5 z8n56yzo`M6Rpz5gmXVo6hsYO3Cwa8h`ii4##(>>o04}wg?jf!}&Q=1+^xU(U8IpCx zko@C*UF^HXqO*&e7;g{lXb;l0Q6auYa{BR%7T`9Svw$(;vo6*~?I|dy4PL+}SM?RP zbVV&=!2)|Im$Cw39Wd1Fv!Yc`G`S z-NHE!bS28ig~^xldXrh1rr-XqPc(4i=ntrd^>&@bZsGl}@dwn=TufzSF6F|H9@vDA z1h4Z+$(Qx2$@>JP2~HfJOTIwTQV$6`DQ*l_?gAR}%4n>;^fQ(PwAl<`ugK!_OL=(& zpQf;p>TVCVlkqe%)6iwnM}g6eq$E1GO)CB?0&M&mJT!NUw8|HHD>yu9p4yhHUfN>H zrqN(+ih{&fS&stxqCs$_VC%H~Xyr7tQVofL8&I+F-5SiU%FNEZTWPDx7BXiEN-IR< zJoC^Otl%hHLL=$AR?yvZ6_k`tiO_|BhjTt2*4gg0NtbC94 zoQOBNRdsryVZ17Wf;;r3d~rSvKqy(zG43&sfz)pQlvEGqyPUTDX7xm#+U`=f(<=(C zxnxA<$rmekVDG}VyP*~mEEkz-xiI=!B_qM!WT8!Vto?!~QWL1JvL}!l)LwG0xSAYU z-B>#~k;9=7yk}s6&0;pGnko++1YjC1=+bh8cwD&rBQz|`u4yw(-amT^9!t%VQB5{R zUOf?p(05KjqQIAxc`H6m#=zI|gv{f*sNFT>5#UKf>BRx@sc&7`6^v^ODhS z-(Zr;t6B#dfeY6$Y?7yjV4g4^D3FZ4Vdx?53R=5y0r4Q;e0`6+iiEs&@)ACKsm*lF ze$ZuRF%I882oVGR*$cgvh8Sk-y9~zOv4uYGJQkGL{<9mTPmeUED6q<}C7vD)W{!Tc zrI(|ZxgVW%%-ENYz!#9vbCIjsnst#V`rSrk$}Yaj<;nT2tn=>Eqz-GULz%)>4GD>K z4;QbbL^5Msc9`^|$N)Wmb?6lU!-d3t?W0I8J-TKW(~#kFbO)L@u{g6lHO!-JF!yl~ z=s=ZQ=+hcgh)QMWF?8=#oF8I*XD0c&UYS1Yi!l4q`*u+*TH6 z*Qq&6q7Y*l;yF(*#JD~X+tD8jIYN6{?w8ATgL zQF+RD)l6HWg~s`L58(WB@fi+okS^n(HN=1t&%RrcteuicybRP~;j#eCdG=|p{^ws` zrQ62PIsCA9)X%Q=X>JTPcN{nO25zo0ikjNfcfu#|g#Q)Aw6XmQPT+!}*;LTm81f^F z2N?)m=tLOp37-ega!+_fgR}UgDf%8n30=V3!{_sOOi###M8@QQU@20IzaTGQD;Dq} zgjQq!LrBbnOj7KYeoOpX{vW32I08ub;t&Atf9C|G_Z|UW%6s@ zYL&c;OpCtt{&P~_`%lhAR0g@=!=eC_gj=qQ$W29!66v~B8LLz;wQ{E}rrIs4DzEZ8 z-XYd%m=fPvZvtoKEz$IuF2vd_bvo#6;bbQB-~*wFuGsBV=2ubILg z5nvkA#mA{?xz{NIz6@BM=q~8uM84~$i0b&V$Q6xthoJP&j2p{=?}zKQ-Y;XSU|reyy!aZzUi~+T^YV(GO%XnU5q-`IQD*WE4~2c&G^A21L_!dJhG)4hOt}Q z@n=U3{uBm(7_rWz$zrfLW>!-!Pr!rx?UbLglAq?=)?S-g&&s(tzn--N&FGg^H#XbP z#%5PZHG)}qH~SYSRAT?guvqi3I2C&_Bdc9x%CdG6i}SN=x*jk2^j5Zk^rumv(2S#y z9w548Bur@NQv!@b(GJ?r8eHbEiL%M+H25L`?VqWWzn4kQ0+A-?f)*lR{&A*3$DR)J z3c_a$owy@D@Y5Ff1}RQhQA4x=t_E9xAUTfGsZ+&@d7O8qz;r^~VUOfxy^fl|f_Tb1 zKe03ud2gV+{i{vF$sz_7fwYKLshnCqT_OOUibB?AtWZAJ3r`4e!M4?0m^q ztZTZ(cJ%T89GD#jMx@?27I;%VvE-MYiC^8j5PlzQgOQ}0$HdZ8ZE!3+^&kWc%9jQ& zP!+@&eE*)bTQZcRMaK+JV z@x{jAFT$+n6+E{wXsfpV}?y@vrlN_SJ(J zvS{m*E?<-0!|9yFM=7Q$^?`X{A7&KWedki3K2U7hU z0u2o4L6^6rav$GHj5v5|ce(SOixvrE}+O=O1Lm7VzC+3FWMSpX&9Iqi4TNqy7^OV1Q55|>C6DplTNCh z+RChQ&YCs%fkH7|Vq&CQk2Kc&=u$QX*u`Q!Yj3o~@fQk~vSO+3v^>nXkduw9gSxX# zc+AIR?j?RqVi7JH*()t#I_@u76FiTCQU5mFlut3Viww8*%$0_~D#E2WN~FLG!cwx- zfe<1RSF?I3mHcI$oPGd?^)N3gStIK%Rd8Rm)f@#I09ceMNg$QzNxln?xS`q<*-ts0 zwX1J|sq{i}t|hcUcXKIPJ>QO&JG_asc=2SfGE0@N31JPwq}`+h5^)g16~gSt9;qpG zBWmIu2uBU(bGfe@X_z2=iz^KN95ak9fsA~8KwkfN-)DkyJJ|SmB8hXCQ`k8>8iY8s z_pan$2A%NoW zS%R5OgNG9I{}H|a$f+$rvf<6oj_sP#s5^BXfAtXUjQ*eT81o2xSQuRUG>t$*Zs4gfT%&u` z&&21q&^h{rD*O%149B%VSFF-UZ^m%Ef)bcavEnFAc>}h$(EGeuKSRjl;PZ-{-VLS3 zNVNM#uU8(QL+)(d1&68Mm`dD8%i^p$mTO`+#u-YAY|Iv9wa`&{JpSZWglQQl^9g_E z$$!&WZ?G~~Jl6k$j=tWI5j=sl z!`SBih8%!A$fg&Vl88~+&V?aEGit}3@BuVcKeAz&O?)#9^=ZRM?{U&-*scrNJZp&E zYu~yVkkK->dpn_1nj8N?Wq2oCbEhP3{cPy!A=ePq)0FcZugM}qWZj^|_e$2GXk|Ew zq|KxiY2`I+Ey-@9bk9(DlD&6{=_KAr_oOZr(-)+!6w_Z}5to?$hty5{`x{jeJmD?vy1X(+XutVHp!)D0_PdIepbTJtRpa4tCOt|-i^pF}2XW0FC56VA zIk=IXG|GsOB>Oi~nz4ob zx`jKqiGPeYkQI#Z&v@{nd@d5Y`XwNGtlkI2vAP*R3A_v@%W&Q0Y*DNjmwINd`6Kwo zNT=7vH}Vt1G18O+?c(2_H=Z#uRb4zATvX5>TPQ!b5XbK4seSOcsBY1_u$7w^X$a6- z88e@?Hw9wA8hwUboc(QtW_sxaA8s<5)~iHHv%|X=7{RAg5W@!;k^<76MmqC1<3+~# z7mMh@sN0Tk8}Dwf6)|OQfpX{rrQ7^e6V~sVVH8(rD6Z-zhM^*y8}^Q+g?WZl>Yqtt zP$1clPeW#*APx7(6SNV1R;esIcNf!wcBg-#?Tb3_VnHMCxJ+<}#vcNuxxicR*Ln9zQOjb z9nL;nXxAJ;yC!X!hytMHz+u2D9-0$cf<9`YeF{cDntfp3>^dL!8ZQWbd}&oA&J)Bc zEC>rdT4cED+vyld2l!kJUv&~57u9o0=m-)v_4BO;=PnyRCCYvGYdAJ%f`a209oG3Y zQfnjH!xbJRT~%6ryS+0=<-_Y_cCcznKUXiDwi*LR3hh(%3p6yE-ctB21#f(Wzqfxu zPMc~J)CI0z0~wj;=tZi~|3ND@kuEAR8A{lYUD>8E&_3V_gCv4m6ai+G{ym}h!f)=c zxL*AK4^dWom@b1QPWuF}{m8TZo85`(w|?op5(K3NpRxYMNl{rhr>Z^LKG_k+R(2svi|zKl4YgtGpHe6rsZN~C;q ztnmKNemp6!gY(X@_RoCGbaX~NC-`baIOb}{2M2vPnnoYgt}XEf4V5+FS zTi+3z!oD0nP_U@FN!ajc7rZO57gob$;#=$`q_Q>>ZHICwz*h;#(8eEgsZsV)KX z_JhF%d`VdzF?Fy;FAnx)M@=1~$72?isJo%Qb%->5MqSf~OeBzC0vFAo(8*XiNx<-> z9H#26)XGuOpTgke#YAu(krsN#9(^sf6ls!fbV_=rrZbZ1NZZlvoUUc!giG=D2do-{ z-G8fqkBI4B9fMy<{AD9}13nL@X<{D`7JR+7&UK6M()8fNC991pA+p~#92vI`WtecV zlKat#;4_Yjnr+u3rFsnhAg$F!Eg;hbDe#nq@6mU#JKzweD-5P1c(dVZFO5IC3qA~9 z#b(An8$m@wi_O;#08Qsg@XKgXYt2!VS-9xPxuX+OPlWI?>1ngq8V0G!RnJJiJt>l} z`%$stUI2kZJhHR!p@VV0%Y$+Q#pdD}to?e#mVFX<(i(0e4|efKCq9bTVwA_2FeG z@i3rpC8hhZDr%R3)Gk5WJb~rHk(wh<;AKf_3Vt7^8}k%b)xT$dA(=jcK9m%9QFb=D zDwB>*tZbu>9jQUnm2pR(NS$;dbgWhU_c}56LtN;`RU9p`4KY5eU&`<&^^_my!0!c^fo%1!ZeU>qeHi2&v&QqgCuN_8%*!a zz>*uy__*Gh6G)ygGcaLt6g7I$!j=As8VV*}>5md01kb?QJepk%=>>@TOJ(hJG6QBL*ayM-ZwzMyPR~TfltS zgFGpv?v4Ul{rt{}Fe8!k88&U3}>>HFUhwEu6mC+pQa#QK zt4H~#!i>NQ9Z3Ypa|x%_Raev=*VqQ}^(m>^aUYm+@}05U3Nc!&q~1v*MmR$&ei@7} zKzqKX$d-uf=yC4ZV4VleH=*h8LWn}1lpjR1(Lk_r(1Ti?>hWWpz?)e$ZD=@VxofYO zX9rS0b=Ix2V}BwquU}y-0a-l)d5JuZ8eI|6(oVDn}ujAG;^Lg(`*)Jv6?W zsAj}5LD0E_a9^$K7}-qOX5D)Pb9yg#UV>;IxnBy`L7l72ioFHB@Zp@p^-zdP3OMVgF2)ug4cd@;;%m@&Hf{{)%aE0 z4|F+OibVv6McE@kw-drQ&2hxGh%(uawH~o8z!OPwhA^cgGG{;1e58&3wbrJ8$hZ`v zSXHNXkIQGP|As5* zR#HYYk8^Ysd0=Zb+=#ccY8gZ=zCD<%^K!vaxwZ@Q)r2{Qmty!2bQd7PQWFT;R_>c9 z*Fo4Pi}PBEPB2Gb8?<0E#oXuCk@am!dY$tl@i_scBH&6AD5kv{L^u#q@v9EwyDPoP zhaCzQ0QJfU$+=5>{xGzNz}|0o+65njLK})`PvO`Rp<&od)J9jv=lXWyhrb^v1@RZd zIZn8_#Ev#Mm?mj(>v082kTUj@Y{5tTVeFfm#dE{nNpJ|B4#XMxCAA+gayXlF^8H z&MQTCBftRNh)mMXbKMbn0Ag?kt5LYO`-%L$Pq$yjXMl~v&dr}tA8p@GW(UE{-P7U* zZ4ItMw(;OALi2$pM*oIzzo?T#sDFjX5=BeUzHGvdY<*vyjBioYNVyg@Xk$%B4nNfI zoXM#OB$Q`OCEY&o!u@so*59FPY$N^KU75lj^jh7zS4|OynlDLHXd!U4i8K;{&5bW7#zi3bNSyIZX%_x$8_z{!MOB%DWYi* zIuK(F0_!b1ym#>)>5rq6?GQG~LG^UJeZYa!;xPV-WcqV2*ee`z)qCtN|Ly1k*NBU@ zwPU5S_Xyvl&g0s3bb!bYE;+9&Lp6w%^HHNQLD1DB$6S~|bol=m9X9uN`1aB@mQ;jx z2F{|x9`3NUvHXSp9Yr7If>#D}ALnr&jd*J;J;X8vJ)+uhR z=+QNNXni2vgzXUaqf>oBNq$M({FY-WP7r}vVR$Vow!z>=+er>5^HIpxb3INAXV=UN z&BPlX#^~D91!vVMtY|$6j%=-Bnl+7NKT9F2Bdaas=V0Ynmel;E!8zwJQVE<3 zi)#(@|2%bPUE+@HunTh7!LG_0at&coVtt>TK=N)}I(|NIHB2Kvr-P&v$lmGex=Y-6 zlZB){yEEyGOWsm8rUTr}aO&AEP2y=@ipfh-lR|@$uD|234YRM1DUy&~1)DSk#togL z6GQKovhB@>xQhb*k)edH>*Wj->vsLoFXXhL)wU*9Cud)XcwoU;Poy;WpT?#LN7G3o6gly=7fdV4lmXF2mP77rm5k6RG*P$Gm=0KV zt4r;AhpOdoEHbzmZ!k-RffzXJpf=p)$0O&_2I#roxd|^aABPS5*kJ2f7O-pay}5B} z8UPl9T-JZA`)u|`W{{?TX|&Dai*?w)?Bxf=iUNQ~`^C)%iBA(+NU1%Uxv{*~P?lf} zi~)sfVV)7YJwvK2Pi3!q;2YO_0!wcR5i1T!@{9T{fET~iNC(mRrQ|v`M%sQGH+2Wm zYLc~!?u)oX9Yy`(gE9NHb3DB$`M!gX4IWW7Q4FXUn7im)7= zn)qxxNu;1*PfP1lL6>fLh_!%Li$}kesG(%_BLsy_KZ7|GH*Ti{VYjxU&tQ`0^{_W} zIsHRk@`vS8FS&5DQ-VoAtrHe5!uTeeM0ErV211V@KQ}lsN}7me;ozagXu$pgmW_Go zpMeYF9ZM2D$FOU`5?y?bB2fA9EVR0u?QD=F=C!+E(U2uR7mIJaWr51oKTIzU$xMe@qP-NBCfuW+dZ)Pg`P(_DwLTFXQHY{)-yKFex^iO#S2g*AjY}ct1?k?e@iCk$+3jQ&KOz^*| z940b`g2t*u9;ABDFaTfHOD69Zp<6JJ-E zS5m(~tcRg!H0*@1lAOniCq;6>;``d(ojF79txxBQdAK%y44s_b3Ht9>Oz1?Dfl9l9 zO8IlxJWm!50qKhW8a1Hv1UCVK_7dA=oBD8F#IzCTWtpJcW`EPlfrY>Nm1!qm1cJdZ zOc=k#YLVK)z7dkhv<*iRXd^nz;$UL<5T!$9Uc(Vg@6dx>kla6_KGhMuT*o#b3*4QC$)F271v;R#9@7F#hNA*?}1!1gdqas0+XoK&e zVu#v-TohBRT}6_{p+bUS8SI=5w+W02eRYh00?V&OfrX3$`Xw{s~(Q)9|>g6y+zRpSTYWFa>zn6r$z?8rcDy<_UwBQYgdd z*ULV_-qizp)wm)~DGwt{AitBK9!88@ZwumkQC<)P-Y~**?V z#EL&6#i(O30AM2+r`!Q!vhS&E`L&g4H-1lvJ7-Y8?=v~;yw^us=Cx9*NTBuz&I+Nq z_`^`fLoW#4>8aHMMlp0AEG?RQixMZpFFzKMw#0XClCOsj3G4ZgKs!XR@ha_o4aj5B zrpbI#gOrZ>Z16-F*c#0Ky$)5-hVfTU=IEmVay>60UfJy^EZ|Uq$o$lWz=jrIIIeh5 z?uu|c_@CUsy1QDmPtcSnF{_Ex1?BpT8u-+aBX+6~sA1`<_=@~hfV^A?+`F@s7}PBE z0=s@V_3-b2?_kQ8qmY$WmEuM|GrjfTO`C>qPtcn{6-4JA{KAxWv%U>h7*W1s5zALvI2|7BV~~R*k%pFA^d_`@>FX*`X3)0sfNwu; zwgkSVO41?0GW`LQ9&!uw_$c)fNk2kt#xeTi8dK;U6Rln0VXqx)7lL3d9@1p99=(yl zGE5iQfsadKTEtMZCMtv95KzRG-Ui09f>3E_)UCXwwGK~T#xEQW6egl z#d4Yh){JQayA|tpLvIT0_7Fl$ z=O&}SOLVu5$f$m){Svi-uz98Lsq*3eReIwwMmd$PyTck3gUA!r)b9Z>3IMRIUn*T^ zeZZs~j1CRz2POSyL<9Z1Y|@vhSaGMIM{Z6N%h%G7o{Zc}Xto^$PbN>O2f4=JWY*aS zq`83P*CG8)hqO|Or(WCKYK*p&9Y(8lMD^TYMYVeR7Pd*Q2N0I z8vU4*q0*7jnnOA^8t2QScWW`nTIn|O+h`zxu!c#}0b@jRwG|x@mX#?9cy-XGK>&0- z9B24u`C%X&W^K0z@t}!%etRUpF1aZumYq8=m~05k@umYA&COP9dFrj2?tu(Lz(ZS3 z=F7AW;&K|X2I#+tY-1X}aNd~>)=U%oWi`-vEVb}8OklM68u7G-yl*bPM%u-p0*HNF z*q43u<0~7iY@;r_y*}(-D(pH;hk%tgwin zJ2C}@cy9;|^msXah27)CKlLnx_ABg^XBg#S1wuH;?9GONm<@oA7D4~aO}ribNyFMU zOk>C<8tr2ZMGgfX3lW>w;wD=nByuPy;4g$vd~o2y!Ir7IM7NA~{1O}^P%MVVYUz99 zCAwSxJ-&xwWb}uKr4CB1q+E6|p{!a|1WBV*9yybd#_kY?FEtqcFK@ia{za*6^&vB+ zdlOpPg}mG{%4_Flpmutu+GSy)gu-YBs(#U^+N0_b*jbRB^{}wU5iiM(rHA zT+ABp9gsC~i@-}(0~1eQ%y5%jgZzf(OgtOiHKw;{8oXMWJ6r30Ju`|1BT%mI9ITOI z8N(=krl0-|rx3h{+O}kK!&?w-^H2~;p12xZ@p3kGI0G0$`5D4&yAC22ASrSuLkRYT z&=!GkhH@cRZO;zDA(X?g^}GU<}H|VVJdY-ibImaQpA} zh_evq;u8)@a<4;Iga@YayM%WS(9Bm4Y`m;|>PbJVZT?m*oY|vvA40;nSm<}^4gUb@ zIQx3zId`6*n*@syTnv*+s0S~IzN-QquM;-RW&bl2t3J$3D}u$M!` ze*mf4FkN+*U)D^Sqb~V0Exb>=6RDhEPd|!W5!o`vSuSF?+a>?7G(xADSY#@HJ77 zr-EKlm|?#cIRlACj5YSQ^I|GFAoGk*t;06UPMk^xfZf$ia$L>+Bd%3?M8L zPGGE(i9`zC`!H6CQQ1Xi@EMY?XQM1kzqwgr^|){h-qo=w0+oUTkvC*F zWbl(fPzT~UbSJGq94Dbd( zH1@*302DC&LtQ;GfIkR_GlSzu?E?-nbz?m{i&>`gwh-h{tIqaSAsK2`47anD6&>l8 z)FJxbj)af%wOJ@qhH|rd1fD6l?G%~WS8omuMGx4W6I)^j6DW|yPXjsZ^iX~YZU=Tv zT9wM~oz+$pAp@>v9RRU=lY;+&@=!9RXm7zLpY8)h1PhKXpr4i(0 zZgX%U$B6J?WZc3R?({Et-=Z1;36)_Ospc~Ps@FIkH9q(-`JF32W717o(t~(q4y$Au zcQ}ey&|XIy2;X`U%O&P^as4jXhYBZxNtYuMx9B*y0?+gWcXmgHhR4>2tCrZHhD02v z&>9y;3Fx?M5|0j3X6b%oXoQfQ{+{04bysvKlNd_y$0*OIYW|AsdPxZGsGJXJf(J&O z!CVwuxX5F9j3l&|Ljw(*OaU)H(s)h-eh$*tJR#UO99{2=NLygkVr)p}4(rfUYDR4$jbSuFgh=U|i1-m|o4ukma=g=yK$1bF7IeQ>0i*UFCrh>KvLYN1@6b%Io}HeDz)17ZGB+6efxT0-V?Cinp>4PEH^We zVYc?dBpXUxA!#~Hm;r9<4-+aF5XDIX6bP_)hrl16z!3m?90GY9gO6XhiDO^Th*5u> z^vc}uxf2FJk5hAtGmoKn;d(Y|2$H#bI!oWdkJh1K;?GD+d?sRdrGzQCTnvKCVRgRi zKlu5_fBfydc>{Td-HLgU`gr>gVf#s~4xhdsh70kOZTJEp%K+K2G-aMd_Q-b7`vfr{nH^n~+M z`Wbin`_O$UqWBlF`e!rF%qhxj#8aV*U_>8L_aK~#5O+Y_oZq8FQgYr?gskg5fdr2I|x1lL+E`bM5C2 z6lCaEYfmM`bt6M>1w#OTm;pbo8yU5b^MLLM0##VF`vKpo-064tskK(IS=?@9{wY!ejCOtzaUx*gZha16Bgfm6?by9t}>In z<_tL1FFPH^8=LoyK#XQQlZVNlikmIa(D*UhybMUzQ6HL}%?j!+Kl?p=K- zhkq#4tgus?<<5h0#wB@d3nEhsOh69EaZR3zCae;$q1s`eqLU5A|BRZnEKSVz_? zWOKYIY}k;&3vyN}E(nwx`Kd5CLlZTJQD>Ln#IRo(05;O*XH+Mh6$%;2);cJCA{Hjsds7`<5hNr(Zk(dEsw zsxzA;TnguoJ%B}tcU*nf$-cN5bhE(V~q?m?_AS;of{lg`FG-KE-wjSAZbFyxt z(`^|w28FH~lu-k+QGjSLCS5^QxdmeBsdgog2CFl>5=QGaAk*13U&i2!h3zUV$GNVw zc_C?Ss2Wt>tbC08+KBAR{n<6=Vt70Ad%tRvp;*Jx*eW~noRonFd=k-Pd~@yOnE*%h zjI$9AUN*Lo6u831c-)GimI7k3D`ao{_kub(DCE#qt|Hvi7t-TkNu%SHVQZ{@>WhVD43yi>=IM5ex{&?E6@f8x_`qh|A1NJxO~ ze?qvj4&#lHM%njMFsXH`Z-W2?9MP_9?_`;UH9%DvVj%q1l-GI(UlQv{hD>{d1lV@O+jk?7`R}na5$g1JB|x51VE3P04n>15T|(S#h)WT$^E6T@ z$QOyKKjP;HAg1Qf&v;&KMloeF?L6T|Y&>yI;^uq8^suLt!hVy}^JUOXD5sqoS;WmE zk@Y>=N#rx5GsUIPSP)$r!Lv{ZPQ|g$#I=i?C&%qUR)ioi*Pc$Iji;RfdWjj!)8WMJ zp}plyX^F+;%_w~ag25a7!~GVNv4~9~=N^gNp%P|Jd+pQr_Q$E`I4`DP>~zrnOGTb=Y8Fyi>BdC#J}N`a+3apeBE~!r6Oqz{@sj! zx8dJi^re>mG}E60^ydiemYt2FF1w->{5hZu(0le5j|v9%V0t&aSF$*V4B-#R!iU-k zzir-^DI786SG302c(D{#*~7_avRGag5fWD%TpLqXN5_dk6=hLdkV(W{dU1Dvlv}F%R52%s0mhyQKRwgdBZf%O2^ctHy>IWRW`6I=SH%y*rlLDJqF*)!v z6T=3Wzr}*=t2IhJVp;oRA!eD(iYe`YKb;!jy-})0HHLC8wG*A}g_@!n;y4Tt+g;}Ml zp!pr{*LM2rk9D>xBXenK2O&!|Dh?5OX%lT)Tco6&Ey93Lcaab+bP?@91EMjXKfya) zpy>WhEZC&NZRE!T0o1BVJ+e5d*XW<5?*4p_I!s;T!7dujaud|W`*?X0ZJn*k5ZYV^ z%3Em2=m0N|jjuO?b?3|KCxyZEr;r$UCV?~_{Ar-IxGKc^1bWAvMOM_y70VC&HrK}~ z9B>Cz>u;m(q8Fz%RXI(RD&rtf;kxUQMqGRujZP_C0SxBp*|~Hyysm9zP@X_R0^i*H ziLWiEw;oL~g|GVvf2n3TaYizK--rkJ9sG&m)hnOJP#0-mMK88cywUmCJF#gljk{L+ z013K>D%SaE)Frc@ND{VtN`006Rz-!nDaeo(byM}$TjB7|$IxQjoiaUv6MQ7Gqc+3; z@()QNa=PP-6!ue>j>hZqpZ^r7@e>n};8E|m`caC$;isFe zerzQK=)XGj8?_xmBrTMHNB?!RwGo1Yc0=#J0g4>_q zaQDpNXN1``9tos2peSaaqIOfPSqn!GWOr-T`B7(RrBpWJhAsFc%@ZCl9qd|98!0H>L*&=>6ugykxi#6~kLkCH-v$QfFTKbv?QS4O*& ziS{gtB_D6|{j(FnPdR6UJ{2dgy9=GIJ`x#W!!cyZbzn}W zky6B+op8(9Qb_&_wOb@LJ5g%P=7Wm6ARBmGiy-FW+xZS*kEG^1NUh4P=G!$EX51$S zo=S=iEnQI;bfA0F^zC@-9lBGtzE0YZ34<6qiENuta0VZV@4q7w591CczR_0jSqjrX zP|D2ek9h1!CozzK_Tjc4nuv?xG(=fsnX@PGl%3tW8SDLS00I%7!9Nqz=qFGf z8zfrOc~l--Pr~9GNi%8udR#f(=YSe2I=8+{_A4MX>%n~?Fgu(n0F(uV-IyGY`g;yr zM|T1R_K2W|J#hQ)Ny0sK8t@Msr0!K`4{<**AvPoIYm5TJlE1{JFsCd|1`x^3Q8)g*S&m*dXtX^XG5Gg@Mm~M zhDVSA?V=2&l!ASg^9@|ZKi941AKL=@39Jf3a!8joW83Kg!e``n<5TeffO6r1<_x8# z>!9w&&(0cDkKuFNCU7lhKEWqnTbDfjcbw3GeEX4BG+N?)#0~T&U%YH^3rqRvI-O6$ zkKdlF9Q;7|Y9S9F>5fA6t%o_nolTft`0Ktv_chh@B0pa9aJuW?f_J$Ee?JX?}20}?i_z!SD_2ey}iJxai8A{mnVWbg$iMPMRq@G-*+QU>M!lr~}R zFS&`d$eqXF>?hdA6O`Jnd*bYfc${CJVv5ks1unYxb>S)B*ELBQ&vk$Ic-KHl(+D8k z;_JFqS^7QsHzm^G669Ou@V@WKT+j=ApR|*IZMdM#I2-YGf!|5=3-n;g4L_dMXIb1x z>>IV|I=+4WJ!9#FR0GgrIc!Zuz_Tkj#g{nIAU|MP?YgJEx3-Su$$Uu0uftzkDv0)Mx~1&d0O+t5iDrbSv~j>V@r?e-fUS%!3_kfNThH~Xq}D+f=g7IxZ^3<%DGCm=BgF@5E{M0lPVa*FVABP0 za6;-aYiejca>&jJsgQC)WEEF(BT2AEmn2Z&IkoQ485m7FXy-gJA@w7a4dv+&7i=-> z_UoW@FF}^JJ`n=#rPK%_P)8^J7Bi)#P)1)(Dd*ULX#NezadhGf_@?JOQbRD0H-|cH z?EH#mXgFrWUNUF}W+&d5CG88$4HGYX0w3BU&f84^K#l^fOP-PulB?u#{EefYDuayH z0_y((R01}VlG4v05h{1bn?IWJ%Nnq}p`YP%Ag^;p^HmEv>$^0%#BTKXdMe;M7tbX+ zP$J;d5=mp`$BYRPq;bgBEiSu_2v=ayz1lsYfW3?$$d zwiVt35nQHwrs{caDLfGDhV%k#q3FD-3I}lmVD<%!N>baDlQjXQfvGRwl9SZ<0x_yJe~3v4bZ(p zAYF@5UE7ypAI1?RTy~1eIQO6xN4z6^>$Wc?8?lp`6|eE(W*wyV7qli2-irp5eL@M6 z^J67BFemIO0N?Yzp2@%Nxur7);E#%bkgce$7nf2H5H>X&1XCp6y7Hxi#b-$k&bX1^ zN-fK%2_#z7T5bpczwf;sbL`Kmcoie*T=(MARRf9#L4?XW5{I`~m|$C!I6yVzTg|?n zRE)RyTbL^yR$BuJ`vg8r9r{cX_DhGZhWF9YbsEBM&h(=Rl6raUm(n3k5)P@|n1#c+ z6-Q^OOUjpG2wE`_@I7VpGF&r`dtU>DvI99n_j1H5LGLdH2%80Ax7wtg4CEU_>GQm} zRL~9_Ifv-6){zVV)hi=8l;fxL$}@(5S&hIBq64i1fBo-tU<%jyG10zmO9cOGm3MLj z8?ui#!#E&Ob;oV=Wqu^wpQ&JsLd5FIw* zKj0n*9O$Z{^gh^1lp_oU9QsEmGB_W>F&HEV@R#n)Mk#U~o&F`2-TeyN+Vv@Elt5vb z{=pqzB9}~o1CxCGOF16G-=)WEk(N(@w9!Y-y+cq9-AH;gMS`mXQXt0?87UTIV>D&tf(7qwQdMix|yO9vfN%jQiDWHZfriQlkSGaX}`xyTKQ7fEo`q92odJgYM z%8YFB-^iBT7qAk^cjh{q-`7Ni%ac9wFslRaFI5UtXJ+J8^j#^ zAx+hkZwYtEA#@^V%Y`ss@=kKaY&^*iZ3o8AY}`~J)H zeut_5{yiwNf4j)nq;6TZcL4h;mjbz+WJuJ4O(?~?2d`x6=g@6nuPS$D)ZoKJ43tol zj`Z(?s_0NN&WbxKehY%6yBl%VDR*MKiuK<7edX`a%hMGq_AzA({#v|)>DfDgo{R1w zC(?8H+Y+-Pn}BmFq0cj5O_R9I=gQxQ_#(j_BW-BetPH@KBf4 z2!`}M4D5da6uH(vK{oV|5DYX9AQ0X>qHq}X9low~@1MVA$i;Fq@D<~X@dD)=9|f z4!;*^qPCZsLQf%byRO#ynp1qCM}3!U;>Hh+j`OtSogM z>})pEULyMAaAq5embgsV8IYMqP2e5-2viay+31qn=o^}FmA!lMIf6SsnT-5?7&%pp zV`Bl#t1`3KQgM=*mj-psI~=XQN*X>q05T{u+kV{(#*`k6h4V)We>a`8=y#ZS6P=h7SW?|aikkY#pnd~R2KyKE zo(#yXla@jmjFUnA`fT|6T|g&;wJ-KN892bhFBR}&dlg)Xa27*$G<599s$oZJ!n?5v zhIjy>T>{4XsFrZ76&YGtd(8x?|j7Ic?O~_uJq3#tBN=F?382p7unFFY|r20bZ!T5#*|D%3;r%# zvoj`TckC9FA>rNEE*E5$RrCq_@5jx2WNEEC4#$G*&5ibb-tz}3xQcjgeq;nuxt;#e zME*FQH`EzX>41xDK*)OtTC^}%Jx^i6Srxr^dkyVF@Np)knG|O)1W^%X{&u%I5TAlQ z7B@bFS-=*|3a4Ko6tNrko8`-d?_B1S48rTR^6f`p7VoMDeLX4OeSukrK|*LdolL(y z5gE{Ksq@%B0hO+Uk~(*x{W$!?#tuya*?i6Pz0Ejl;j(HwZ#HX`pMFpNcl7*nK|^Wv zqvs`)C_Z~TI@`PEa(O!n^O|$edZX2a(^V)FANnsgO3^-r*hVbxAo3;U>JBF2@q!A( z&81WWSl3lI_g`p6c?wE~`M)>1W4;7Tix(?i*JWC>Aft&ZzN_r&OE14XqWCt5p!)PJ z@Wibx{rmSG!#rl@{%N)DoiFSEjnDy!8?VPFkMpXyk=C-j;xI|H)LPPcbM6s0{wE~{ zCYZl-{Hpa}Ee8Dmk+wUi$>^?~51UVMXVke>hIAA~)U&W(VYMNEH2{j6>&Wfe zvmY8x$n4_J-o>L)fqdvQ`8%rEuE$Ui^ePZ{l$+Y{)8uGVCsR{z#ewh(0wsJqm}cGn z*8sCESN*&f1JE!GbP=TXFr52*C6oj9kj@?)_)Wlw+rM+f-(i>o44AL?L#fsI;^t=~ z&uQNY;v)vpWYR$(i1z4vz&Cd^2s*{7)&=fgL%BZKA4TCian)_$`<3C8TY+)ar_ld& zhxZ!?fQiUZGzjz`sYcSsJcv=%b9ou(^3u;~30N~E$}4{l`^~omk$@uu7AdQ5*O($s z?>I*0^K3lmfS&D!0k}kwRhBtJsp8lC3;VW>dWp-#W{rSMnhKOa-tXh~8`fVx;-2RW zXHNv5$o@CE5TeSkts}T(c>RBqO6n?cva_cItgn|GE4)c?G)VWE71Na~()Uo%MBxRL z0IuB|hBAz$QVK6dN3OfNH-)qi{0Vik@6uSW$hyM&nX1&7wa=l(RcGg$aJtg#)hmaP z2-hyYcj@L5GdL&3CBFTGOj$UP2gT$`E`OZlyClFnr2kPnl*>HhA9ZL0kz`h4+0aL5 zLH;>+LQ~QsG(!T7!!Rin&lczw;Y!$hkxfQBG>0yvJi;kBH;M746+7^2 z^^U_|8{(Io(Z(UhIGjyAFouu*7nT0LxK#yt=WK18^>~!ka(a3N1oi=2Mkx-HEG1Hq;lz-+#FJnVO(=E7^sU z3f@na`5?&j7Q*ofTVQyEbMWpDn*#Lr2QUv+;2$s-eQDG3mr4GFhoJ+w404!~j%+gq z&!2By2JuS?sZ1yM^GVZ(L|@uTf4**+<)7kUh-nPb`zCvQ*_{-+Kg?L0)(2%XYFJZ@ z%zi$=63$cW@}S>Dro^I+uHCnWzcg$xu(!h24hx)&5?`B3DmDXg=O;0zNiGZVqw~EY8n|hf<{5kLBOL!U>`fqRlCbUAmJ}1+ zgc4OCMP1#;573Gyjz+ik+zj#U+PHQy z#2YQE4T=a8Uk{$kE>i*^rYsv5E&&3VO5<9%&=7{D=t>QU&W};raC=~*fMo{WbYL^w-b|-NaNo5Xeh}Db?t;hc zNCJNm@2S(AWnnW)s9o!Cqf);?DO`2#%wvJs^rSsSkJv1oHd~91*ru>j}d&JhJ|UJQeQCKcUCU z+>E36^^Trh*MF5pYP#_!XL~FEE(Rd`>3Cnr=HKPigBl3%0sY&A?Q+*6mG`8zX1V}flO^uX;-bd zaW@gb0TOH(fYZdL)ntKA?m>BIZ97)m*7Dv76DL4(+$`T}0N+KAA zXPJ{}0j@!fc`!i3!L?Kc8;Ub9%v$$ZR&DWPN-S64T|6hSU|hG``9bl$Spq$q&Z zbcfvm)XZhJT6L@a19~W3GwsO3NIQ}iJFDST>@~FJ>%D34RN_uQ3z5l;l4Q0yW)s;n z&;cM{Jii8znGLQ9X&l1Dfp12vpJU6yaI8V=gZND}#w?bTTk>c#99tcn@jgHRD<+{O z@qF+sr@uRLU@WmhfW82o{jTecDbDSq$Qs0#E=k2I<{h(is>wT}3Y%S4k1_zigMDo^ zS*6oSm=EuvMV!UCt^dp@e1Y?V`^pfGuoP$ zN8@IzEo6HC?lI^R>ORcZa<@*E$QYfvlftI={pN2W&0pui zaJX-f=P}P4K5iOyZ4b5~&r^fIQl1IY)_pb{W+U_)-2Pk>p9b>iFs^HnPGari{5{Mm z)^dS#KPJM*-W|`QQJwX4B=sU>M50*HCh*NIPc@)GYEi4Zy|2-Ahx4`!z#G26(DCB` zD5L!@y+04Ivpf!x!ZA`RYAS~*?d10&l~5y%)sI~&2|4KrJ$oNDMO@h^2+Hl3p!}7@ zUK@4cW_h;mgb}cm_-!`A)4P!3Lednv{`~@rDH{~}Q|KDFz!QCpp`nPY@2hpLxVpIR zxC^kos0>rRLXFS`rwc;6(BvuTVl7mUGjo-V_Qnx#i3er5Jl#0P3Fi&^cQup!t)wp;)?DYZS*1+ZDN z3PxTyFAIBQHP7x+a~MZDKAkL;PNUL&Q;f^m97nAntFhcrBBn-SM;=op3dNj zAj_reV(I-Oyi@$m**xKoG*Qd685u`4+csinjTTQ-(MB*|q+;i9L7t=Dn-P0Dn-%y* zp=F6q*%3MfjBw#P6$s%2ShosAwjC-|*>J_y&uw+XN4yG_Un5-0QycVk@GjkNUEE<3 zcqw2VtkJzypJ0z=j0d+j>w3nS;hHUjkOF*2z_Lb$qy$4{9eGiN7JLeO5`ZptBMOCU zkSU*_P-+_GbKr?DTxXD5?o6pMhR=K*dNg;qHQGmXsWI0?rJx#PHyJAKFO)?B$5&1v zV(9ugv@#nJ!V4L7TBv|?`4Sm%LJAE{uqxgH8XUWYy1s=c*={(+Qg4$@5dq9x!Ci=R#Ub~2ldQgZh=_&f~hyc z8de|o=O@qU2sw+7`IbsvH42`VQxsdzzxouBM@O5mr2(1)04 zE@%g7FncF!Bi*%M;CSM8?(&}XFQ_nydsO@-YppLp;HMLBMT?TF`2aL1<0vp;P5=0L zdVuaVU{6CUu&YpTF@(F&P5TeAVFs%Xv5??yq3EH&Jz;}xc2N}Wf@T==#I(zC)_nxS zH~qP7bV9t-H+|=8^e|CoS%<|KH9Jf~xG-C27?vT8woS;(K#4pC6gv~QXikT}q7sh- z@y|-4K;RuX$q&2|e@%h>dk=3>-a#21IN!5#3x&Mc9OQk>U2w%PL>U;-QiRE1@bkO% ziJ1mr1IkX({euLa;muDrDz{K-rs~rb>F1yx+)P24;#Z^stNoG8K#Wjmf!S@){KQ?{ z>@XPKVq54<%$BawK0m8p1oKU3yvQvv0=%kMBSCQ;92ECY^?J)-wvd!XvxdSE+Pbsd z%Jv?)5e9&7H?e*=0J%&H;xd-&j`0zHWQ!ueuwBA!{3VHKN(g%|y9JmD?o#fDAh<5i1Qub&6l*D1Fzu!^)ppIJIm*Dc(9P7)f6{RkUIa zyDCMV1`dQ5CP%1B3P5pOwQ2`dICKHk#nK@?SG*n!9XOS_1*l}iJZ~+Q=u!Um@aIZ= z-yrEg`=c>bvYt+{2Hryg!lMI5a~pM1pQFij`Y^?19ECH@RpKw}cdUtUGsE?7UQ6lT zQXVo+6^zuFvb_}Io!soL@?M`+tk}!;W&^M$WQFV95$ zZ{EC}XS`E9fj`j;Ss6eJOZ?k}RI+!Y8?`q#acJepbTwj%wWEAa;x1t^60+~4(tVa-9xlM*1pRtvXCg919S2E_ae5QdAaKp}_zO8o zfE?i4M-t=_q*KYdec4QpR`kK$NTJ5Cm7Cnm`X$1=8&MkEr3L&=i1p^oITy`BA;Tt z6qS#w9kCHyg`&P&J&%Jm>>Fj}28v<-ZAkC6OAV#GHazMSQ0+qa26Hg{sE;r-MV*}{ zTV^lCZwi_3Pat3s9ENBi%yLp2Kzsuqvk4zh_r=G5IrQgr2&ewV(4Vg%>;Hq$pX-r5 z68dujo{i9-eS_=*-E{j0j^drEN7TjYm=F!A`=6Hy$Zqz9NM7V`0Iri#l;LX_Ukih~ z?udrD_!G|dy=ITZo7XS7NN113*vn)! zKP`s0XWey5AICrAi3yyB{Nl6ms2_RFkiGM^u8fhZd-QxWWG51e2hnH9*<=geG%LSR zPPZSo?ta!#n<5!3Kc@v0b763-o+Ot48C6pfOZLgYgHH~0g5bzO76P)G!zN%4SOJP2 z4aXk|!v6yb4cy-W=4c+we**^&IS7Q#7+)KL>m&Fy_zErE4TByIpHXSO1(G=QbOH%C z9Ad?*=o@)pfx%dVHH|~5l7`p+c9d)&%WtZfPF0}8}Smi0M zE*UM;Z4#^CQKQo0b->`A%hYSfsnsh>?>2c?fP?OJq~xxSv_r$7-VIME!`p*UL)fM?7Hl#teEV|ECJ0UMHNTNZ|}#mLGeHx-Z-1RHjk(oNBj-U)hUp8vE7e26!%!mx(T@z zqxe!TJ~vWa4RnYM*8#QXhEq`$g z*~qCqJIz?G)&Ci_0(4-W*|ZSf*t&4%jrbPaRI8iioS$rLDX^u1mU6W{!V-r*XUqb+fi@9 zCDH)zC~@;pSUdT8HWW`n31mltE+_m<`^Z0;P%!;S;8%o9aTm%?5gI8Vo%L4jRN0w2 z8tLxa#f>WjuFyZ_mn03>Ea*nnP_?r*JhJAD1#UKk4}E7Gad1=6g)==3&eqc-RzFWJ zi+pvZzU~>~#-ReI4qX+;!r0Y71$;I~K7WNm_+Vj=!jUEx-O$_mhq%8c>Mw?X`g|lr zM=o?!IfA=dE8J8RwfLt6e$8F!HoCF{A_{5-^@!LLiixM*_Z5{_M(by|0qcg3dxZgWi%mnZ3BUd_wcoo{mv31d2=JK3HR;}9u1P%>^PQ)pn4G|;mQPP_2{pGFshgaw=g=^mafjk70G767kuu4IZ9?^>zdE5)8~!oA@V=M)UfKr6-WRt3=%R z7E<8`gQ0}Tg<)9_=}s4qQqTL^X4GDSvR$dKxu$ZqP)!VJrO48vz|T!7;V>@E;QG4A zjv^nT2yWwQFD3Yz+bZML+TOw^XH?EKSF@Ubb7|!qL0f>*CN7O@(&9UfiiU7S?Ul1F z)mE-ZJr8IoO{MM;=q)DlX4b&bB;49(T(B-9y{L~0G`HA|cw=AVqz?vx-M^7|#!IJd z@~@~KD-2$FgWb}8?BKo5LkjD}16Dc8VOn3>jp$P zv&ib=AHmm5A;gG?H~kP2P&7s!9PKA%-E=%H8UoG43B6k`c*pf}V2K`2E{*r)S&%}r zq(DXVEnk;dv_ppV2R`{@js1ZV|BMYX7IcJ7DAO;=ftAn`*}wW1kQ*u=Xnx(E_5#8? z{@Ad>A;CN;KL$VFrW0!URx$>MW;*pKg8N?g{73|g%i#GS-uvJ4wDseNI5T=Tc0eXYkS<7VG;sl;hJH_*JtZW%?DLH@DIunIsO{2EPT4S_k@btk|n#E^dMw zo3q5ou;w7=^&XJ}^R4aS985Ge#_>F7JAP3?qV*-)NJf|g+=X`v_}JrOt0EH%K6i&M z8q7vMsdM*b5|aM`qQ_fMOieQkunjEn53e}5Ar*Iu-2%*hlmY(PXcBHx5nCa>Ho7Mt z!RD&(;Qx6Gp}_!S2k-0ilJ2LrmFiR{iEd~SH@u!4ZU4w!w%*RsN#l7F)n$e1Y4yXx z;171P;O}!>0NB9+lhhjYetcqTM8HnYnAQ#ETCk*hD@gW*lTJLk^VS{K2vP_%< z{lpvV>sn79?0T=b_|TcFHeh+-S_>--vyBm8;UDuEWFHTUJ3z`Mudg8}dh$^w*a9|J zcUM6U+8U98PFcND$9i&r(?vdKaH^lbtyKIW0VGc|tbAb)k_H3Aso}s5?d-C1U;_(B8`^N<@SHkw;KYD`z=l`v^=mepM-2x!4n|e|K3=_7 z_3FJ>)%_pQ+TY{eliuUUQP=gmGJ1Xf@_h8wd3h$dEI6#_Th(^UYIg;oVEs}@+$F4_MkL1JPhabTZNo&%Zl~fdQire(-~wc zv&B7l3(ng@ky@l`GZK#@)$&Lap;ILTQ2>;w4;FQz4yxRbo)52KH@X;IVe?{mcpRG1 z#r5gv{0iZ(5qvy68(t4X=V)|(K0HFu_2uCaLc(us{S2-~@#ymO`RV!LS$rI12_xb3 zV*ff`MX)NLMA4|wQ*A^FQaK+w9yRSlV$EC?KG5iVz7Ltm^UxPkqA}ntf-#7%=f{b6 zHn~wACUVe4o5?XcA5Q<%uKO8rOqEBJ5t-^kw3`<;*>(4B_eK>)rMrp9<5V~whfb6% zyh;`}hp{bc_YXVKp``sW9G$^fP0;f)sy$X!oq`UX@ zt`FqFBJoIL4ft6QT~vdS0Gi;&e~*P1FiykFLu&1fgH+!rn0cSqT;RMYYM*C&q%Fs( zA{85>dT`|}vgN5r!tgyDf{jskz7XJYkth%ouZr3x#&^lt$Us!EHC6O`rSFhV+6<#c zBHRkirONC)Q1BQ$aSsbTnh7&S`p;->K7+wC_^g{$|H9)cedBUMN@%S_AI9Zmq6+ZV zg3Cmj2Kp97p=6mT83>vcTf>GU<$|_HVvP@mI=DW&f}>O`<6o#Wwb6^$7eQR2^qlr} zurg7>w^a}njfD(K7amNRja3nRqU?9eXlJL?65Na|7-O^x&p+)4NB>!ecrtMp#xskD ziB6SUJjJ%i!(_!?XR1SXMdwPbj5Jee9*wn;I~Y5vo}P$AJzeVWSN&9*o75&EtsZZM z_5ok!%a84cB^D`EW=&MOU~e!ZV%?)!ZS3q+8tZDP}?a%GakePydryckEN(RcMTCAwToR5g-n zTuvi0Yo|!&!5jF&8Ho=?u+%F;HBXGgQ0XFLgL2NM^Puldm?jfOPQ`t65Y&5C(Lfep zoyZr$1O*FaJOsV(?it>=^=+ZO0@ke);miY0paffb@&#H$=(1^X&*X~E43FG1a-d1mpG3T$~w_kI!&QaSnNQ(@)(bey7P;89DcB~v)DF+ zgZa}KJI~%7%=fF_k0@z|)QnpI$UhulmNpW)U2VK7a9Lsuavc`NJ8y8%MnC)LN7br% z3x1|xq6_CK!B^{OC$L~>i`xHSQTq>zYBuqpidXL_cm+w-BiI5666Cb(MFH(dF*tB4 zdG=9YMG$f|!=XwzKcb+rsLWT`8)i;KD6o;!tY#x92*HPQ2#nT9w<@u*jAaMWNuqLG z@btd5ax_tmB%C}0VYhbRbI8in>pWF7vkpX|z?C_MS*%)>NM^8bl}FI5&gYz=jk+Z$ zs)t;I1N<8-4f>EG)~MyEP4k)K8RUoL8}Zy2f?21{*d>FHqI*{ak+mh zz@UgGK9L-$9qkyB@HUHjc6! zK?etvT%R$VgJ~Py#MQNkH5|*qwX(#La!z>&(IP${g`)lNYq0sE%(bPTT8xL7om7Hw z2V0ts9>Qy!2CCpFoiL*#b2y_74lwsN+?6JEnyavQri$qqeXhyy!b7Tr^RV^i^CbyC zc)Y*;2ySPpQ1E834|x1a@}*e!D1e_LcoFXiOar&m>cY|Wq;l;r;1rxfM{*XEATr|y zOj7HV!!9p4Qj)WI43VrJQqx{Ygh^Bbwg!avD$70Z*48Ghih*iHsH@+SvYf>R2l$ub z6_PA69ByXBAZh7Th`acAK}Tnb!di4>J$FQ<G|_Mil`GsOL5-3BBA_&B(y>^1xN~8)+nw= zRe`Z4tfDK&RiW%alvNl@tG&`LYX()d@($S>Y;J>lg%F_%oy2xBamwRL6B2|E9hK;b zrV`Ngpe+)-xKR#6dZMHXF3Z_;8SGz6lO|DRrDY$oyXns6eSkH5?(KK&QE7ZS__rdlSnN6 zKka>5xgsl2Ctfc17IdNiARQN-M2nkZu7Ci`3`~nfX&s7c(X!04`}%Of<~Tm`G|XJd z(jb|>YaN~Xtkku-^1Wn~A^lPnTO0AbNa7lp_a<$VL~vZQr^ zWUSdycT{A0;P6mMO*IN#_}apa$lucY+MOV^X4;8Pd0bIUOH84(9okz4hkPGhZi7}w z!Wio-2+v9@EuoP1IaM3&b&&a1;rUY+D)B+&C!c&mq!)$4Y+cPV-NaA@+I3Z#kDd8G zUU%U1#56zcrQhO>(57F|NvI&&(WO9YZ+qa2dosj=Hc6p`Q)KVY}fe*^xz z4f3PEdq4m88UGOfA8o*Y!ua2N0RMEu_&?r&|H%gY?9w{N)JeohXr56_@aN5Htc*p4w>c?ILrLj?g{-I3vWjw_Zm^wmqN z9;l))wk{pQTN^kz8-2wujwl^s$Ce%&=L2V4$XS_J96^+fMViK9A%CkYxAE$OifNY1 zSCy1JN8ucQ{>9no=p}6N`7^GLta$IpzlSa^AHjMS%=6V4tc7C>`1&FA_`ZP@T9wZ? z3lB(V{ax$0oZJ|Dn<_b_E1MpS3$hj}&KPHP>9JCVD>~T}YAUy3@=*IpYH#CQ=zWBCacKF0{%PJ-7`s`c}4VT=$x&^x7 z_^j(b15}lIEqj|cVwrMIOcmVDbc(A0SMgVer`IvROAjyFdr-gmEAtQF7Y0hB?sEEe zVA)B@m!s$hxI(FlOY-$cyhmojF{J$z^Ok8Aj9rR}aYdVjZK&FD68n%U6X;63gTZ!{ z?N&Hc7}tg17zzv7khI5N-P$M}n>NS8^sA$@zP4bMaW@jnD&Z>KlMkf(llRdvk)w&i zsJ~`TJHs!-3nie}KHa@Pd&At|JPAmY2Q{59W=En8R~Bj!czreGI|D4Ym2u zILL2XoXGehAJv;%jRD-|BzjU*?GY3W+lUO%SqevS`q(I!?lg4ac5(S zO+?vs+hiGip%XVo#r1V=zm~}vEdZK}WT}d%q`x}(f#*Z#8|A71YNQc%j`QZN z7io+Y5Jm=mq}y+LR&$I*i7ky^lka(GB60(Ckq#php9Tk)ayPSbn>WC^N@=x3I{Na9 z*C%TbSLer!sD@n7qE-xJGKOI}a-&o(Qax9JkH=o8#8LBJp#t(6bHMkam@40_ef0qj zBW>yN9+T^X5W8xwW|GL!0p*>ksjGdrzgWzEGgPwBWRWaLPQ(vXI>hv0n-)xt^vF?z`b!fGO~!EaSzDYVo&Tn_*I_3-MN zWv*jGu&J1E7N=op48t+zVeHaoVw)*@pcbg2Z9i&N=w#nSuE|ALcoT}V+WJ&yXL*L1 zg`K)MuyAc|e= z?)u~S#$n!!bNl8u@BMf4=FQHV|IF=W@4u7op4{n8j>_4dKY5Pl51i}yGoTy4*qsVP z=Xri^KIdT60?t8Xq335|Ei^9j{9!N)1}ygco=ZG`*;3D64U?98{u)@n!t)2M^!#;D z)8_ddR?!DBW-ccSN8B38T4Pc+A=TEz6V^(VHKB~Hmrm9c;x;HbYXWK8MQW_cCv8kR zS`)3btx~W;e}Mj0`m2QgT*5|#{&2=N3H^<68xs11Xu!_-GW4t=epBK@h)gq_fzN+Ob= z9u8ZhpC(7)GT00K1N|ZDLm(}gXdC_AsZWI+xc)x<71Srd7U+k`A-D*3M}I|sl=>K` zLEkFr$PnstU;ugn_mia_1>2!tCYQriupjz&`h(O5Lz4MZnBSGU1$uG)9p<;A9txYI z? z>eFFIu7AY*4%8>XmgvXHVYmeLK(C`eMtvM?hQ5>e&D7_?F6br9ucjUY+oNA2w}(lv zKl*RC|AQdG{ZDlJKLzTz{fz3_2`vu|3^X<`g*tj3D6Hc+wFe@Y=eH5 z9D~bYZ}d-Y|A#_G;?aQFxc}3j57%e9{htWk(2tTWTnvNIU%UMu3!TunyZxUF1JR4z z{zpR(^ef~FxEcnd|8)Bw0x9l)y4(MF=*{)_-2R)PEBZll5GFzcdbQjC(NK-P+3o*q z=#QS~_CFH3qhBPqgDYWQ^sjFJheLLg{htASxjxJ7e;90qev%x4OJPs+cW(d3Lud5e zZvW@QuIQz1|6`#i`VDdixCRbDdnNooP5J*`<^L7R|JN!1f2REZjPn1FCH((^^8X{s z|7(^1Z&UtXsQf=w`Tvg+{(o2b{{iLyFO~mqQvUy3`Tqsw|MeyO|FQD_6UzVJD*xZ5 z{QrgW|Le;C|CI3mbmjjk%KvT3|2HWA&r$w=PWk`m68`^C`TsHH|8JE4?@<016bQqN zAoHv+pNR?nu8Y)3y);RyOcP^TjR}~b37N2onsO62Ig>ZFreGS2^Hn5VBweIjq+MiO z#AUF|6mhe|Oph|ZjC-%(eiL+LrCK^mSLrUjrN1=D5NVe2GEt_;bZL`-k>bIVE1%-| zI$+}u+42oz$4%g;O2c_OuV24DJ$lvF_011%Y8jcY=Rv9^FJt(r1D{}v&tFX~6L>#~ z2f@)BK1@sT<%;4{tvl<)hR?IEuAI zenl%Js+=J4FKw*2k38$E%22@S0Esh84z-%)N{2s$E)B{@-(QV zX(m!;b$mXVHj<}m*#K;du0aF9O+T}wJDz(9HcD^GRtK1cHgD0P?eR~>rq29cnhmri zjxl=^MlpA>$Wxsa2(PGp_|cy}?^J6S*3&d3m#3$`z`-^@clsCEAU!uhf6FDP`}l)U z-*>}H?AJ`kIBp#!@Q)yfJf#N}#4AW_?e&Si)@h@C(#P+}$xDx1=57x0Ps}*$4}bWm zK~vOaq1(pVQoo3LP&$ar`g8JKb$4IovL#vv`}vPrUUC8f!IDh$kF{6m^u>%Jw=`@U%Y*=wPkHt(Tq zN`ivC?TNB{edmdOj&%vavcNH)=E5b9LC`+k4ckXkmcvr2>no_eV)}K?PxXAc*3ktcQTY|dG4__hxFI+Ds} zxrm0hAhl*ws{E6dk~~#A7VHrBC=TdnhWnhuoNomqBSo>zCKL4}u^e`{Hy3Knol5&+-bx-$U11#b)0p4+tcf43&;()z z7*jALg-x;*CR+%~)9gk=m=Q0a3=an?LGAQ1QJYG{O6A65IGwSQapHKE*V6~!>im8P z-qjVgEQLg#%o#$*3P7-L?-b&5zKaw-lQpR=_dwy>%NABPep0qp6fpG9-nHFR?+LE1 zzY9%_FAN}p{f|Pz2?))r448`SMIeATP)AC53t}=?3vlfTwGUa-@J29qw^Uji$eQmS zWl5!6#sQxHBNd9Zq{o9I>G<8F4!11@Ho)SGGWgP^Z=3n+Wn z))o;Yu6V*QJvk4Qn`MKg(uME?y(0$;f3o`zwq2<32hz)t2s+W;s4(8z*-02ADj_c- zFcqSs@ER(wUyeBPUWP44p9l6kdg)MZ7Zb8r7YkFx&kdAoxgU{KsumO~|56O=!5HB} zWGyi9gMwM#FA+P6vI+X1AIf`iC(=;8(M$pIP!cG8MMaonlVo?RF5T=-2;DnUlYw?W z-dg_IK|VT;&Z3O#Q1E`s-5&@>47nHEBwPgKkN$X z291V<$ykF$?xP`mZ@`jDvr;Su!YtTkJ53DkIh>F-Y)5<{+RdDGWHP#5mXjIdxwM^C z5`a*VF4c&jYrauos3fdKBEEh!3mFZTblp=^F0=Ru^y(|)++*>0VuZcKUX+j3CdOs>d#Nf!Gb zFiq>jS8zCW(k^mP%zDB6F8aVG2TXlDCN%&*m6{H|)0%rZYo+xpg@)t$vxRo6Bzv0% zWtkz>adwYZAi}zM08l=_UV&TH+fZmJvOKrcjFjmknN^~slG-*;>fbC%r~HP~k2>WU z%e1xy(&J1A_ zB;@fgFdX>2_Rj$AvM0HDzy&<|rY^i8#fnmcz~f887xTD*7&D(}e-$~3368z+iHstfv6;{0X<@gRq&ARa%jbDh-OS7y(TF-wV z6v{L4=Z`fRN`3dhik4Pz`Nv8)Ik{KMvLagw=PuMosGOy@sG7JRDu?nITwqFtfo)VQgf!%=L(`IF6{JuRV{e)kw%BV{{<>Kqq+h`9Tmek%+kW2Nl3}N7L_$ z&XzxSOcmTvB+%36gQ|z^r&aecYMJ-sxKritY*J4D9im|@0GXtOD?B7cK+pFFR5^-5?zpcO6N^c zg=@#IN%KusbA2kEgqfFWn{tD7 ztX;;o|CiPJlA6-K0N?+uA__a^!80$d)3s;rBhEMLP~S2x)OV*^b3gH#ZwqEkVx=~9 zOjyiL25f4f=H~ATdO8(4O4uA|l&+jE6g&vs`*{6J=i|A`@?PH?+z%cp1`mD*sZ6Vb+;Lh8MI@iGoYNzN4J(@K3H8`E}Ut74506cNONDsc6W- ztQ`v$cY@7hvbnc=pOhPoi+3Id-lh~@QEik@?-tK3#Kov6NthnBM9V_iUSu)_cUR0R z^qo$>b~3DxZ+I@PIl5bv5-=2gTA^G4^r=cj4(reekZ`+-|JTsrrgWnVTo&^ZDWItpP!5#qHTQsN@`EtwNh#ZT`=No z=wVcs6esgZovEIF8bkHHniVmk$~+sC&AzLs=kq)tlWeG-wdRzqZ0~MduL;=Wo2#&r zX&Krm`!o0AIHgI=#8>RKJzI#Jullx_5I5-+0dyPMZ1oP{NJlR`*qKXZt}uG>kYO7T}- zy~wpWR#SV`Y_E7oUnvj{b$x~sUAR1`2El(YPZhekY{)MA6w?}>HUIt8j?29x=T&p8 zfy2f*t~jKzhr!tU!L*(syf#_~8Z+Ul_&KO9B|LiK@7J#232A4ZnxcgznbTWOBP(uE z{rgYVf>0k^ipb4Zd(f=0$M`otUWq91LU52ETd9n4QJ+L|=#;@ldhkW_=FykyPdR`& z%S|{mj(Zlfc=f-^?+hEoL;K_Y@L)*9%e6c?92&O7-shbDGt~ z+LH@OI}p(KOy}m`)(evTV(BmFHtr5xdgmMZ;2QhV@GXup(-HoJqf#Cs;tH|i;Cd|< zIo;Yf@sYG|bZHX#{pOs@qnQc*p%26Q&WbdRkG6Cc-7i$z*ba(^=(&0(@ort0{7_5I ztERS6feUO+1@}3VxqJ9%wKcq}3hKepNlt#2LZ3XOKQ#D&^}}bN&snEKxv(R$B*wU) zN@z_&3ReU1Y+=Vz=}Oa>Rs^8$odC=JGz#sUZ{9uvUd${nZ=&hkR$Eql7KA`rGr zDWnHH!CPZ;6V7rQ$(6Gv$y)k2j+^;uTcFF)yPDP`+_-9!*535%usJyzJ}W&ZG6gn& zHX6P4Z_Lu$s@B6vmuNd!Ok#OB)~c~+F;@!JpUk0_40i>NPB8!7@LvtM97H>;^i4LI za&Mv-bAZFN*rk8G=drv$%OBlm!x?%_i4FR`omWt>k54wy(T{juHaMZK*=Gzm=&@Aj zM&Ac1)B3R06s%k?wW8j+PG3x|p8siMn~Pp&3$k*p2_u`|QP;rUu*mnYW+eaDxarlm zBd98lX+@E+8Bxr4PhR1dUV8ETfdK|l0kDcC&=7An@Z>EI3qk1#prB@5Alo>JyLd!~ zb<@wEi+sEbcXW;Q_U)HILPCQOTtAP;B*RliRp$k#qF}zW76bdubHN$yjD4}j_8aci z8RHWZ#VbX_*=U_fa+meo=AGeI-;FYoqpu;6Yu2n5a%+-bb*hR-(h|aMu><9Za-VZ& ze6H}FbI=URV3_!~NA`QvJtO&G&YTY(!QJs&gbeVZa$0#!+2zHL>qdlp&jwcc9=&c3a zrnN&c8pM;;wzf^FuPx+MySi)*h5F*M77B#(8LN z?qPDP`2k}k^*fW+|B-0TMf)}p_A57yR{rSr%SJx9HQfdrpIQI<(D#(dfc=xPOFoiEKL_ z<*~7{P`0u~`T3cSQJCtk^>%e7yf-!}{2h!KxDXz47Z7lGWiuuhYpRbgX`u$*UGfy$t}-3 zm7Y83GQa}7N!2t9I)JC47VN&Zw7S|C4pHNwfEW6+a4@oc(4YMP zPIW;Xp;$BQ+KP%NHW zxTsY=a88AEmt4BA?|2~=FjD=^=kRhKYQP9{t2-P$L zyv$X~LhL3<#>a<3Q_uLpTJPOJtzcnD8chUjEyD*v-&c|ZzcFBunr+6i2;(rCc4-9o z^A|+B;aO(4XcvR&$RL-$+@a-;69A;uMyd3QH=1-rf(k?BD7+Kx9Kk#pDt|6BT9_vQTe}plnB(U?85ZwW$6B>g|z*Wr6(x z;=nvLKD{be*rFj_p7$*-)#Qv05}+w!*mVH}O7OMDUPs&G*&QMeIxXS- zPoL^^pT){E-ReN)Z{LgL&it@vkvz24gi+z}SA&suljaN7Vm1fpyN{{h9Qc6L7&txk z)aBgPJ7-&0vbb4Y}{2{lE+h3lz?16tV%M-Tq9Q{(_`_V}?NHj{Q|0I*_) ztDpRvBR#s7(^@nEbjr3#U|27cKQCc|&w;T3JhSh`J(+FCQvl}SburbKQY;RUUg|SF z`wk@|<1Vc%sm}ZH%$mn*@egxk34h|Y@RiLkr*^R?LN$tIf?<|fBG+K2PakW@i#BCM ziA610=~$V}U(LKo)$4naq0771Y-s%Vnn7Yb@3l_dJNj%k-Vir2C+#;+g0D<{hFliM zvuZka#B1b?*IgP#{L&I)omD{mczzzAS+2y;JXQqX>yw9DS<2y*9?LGjk~^ocC882h ze?hf{epdO=-Q7AiYKX=1qoCyzRv|gdI&r5~d zTB|-3+j#J3{Pj(A%1lJetp@8S{M@3^L-2Evu@6fkuFGUcap1l_?)iFzB&k&gqK%V+ zbq?r32hUd##6)BO>d!qt%{y%VTRKB`5Na;;b0G`hWG9H;OJ z`t6djk$_X!b@OGF8)?s^?Kk{v9JJVc9UqYl?lw*U?e;pK-O+vDY7>2W(Y75u4qLps za!=N7&e>-z(WxY<#`SmBWf$dt>~6s~VfQQ50~fAH#?J4CHZIl-{rw(RN?X2G=koKI zhWOFsdub_(pOc|zq4Rf1R^ZROg1c+(Opg`y#iiA?rvTC+T#>A}0>nm=UI0`X=(3ji&s>QqMIR`t| zC*NohuI`g9+Ky9)DWGYC?^o%e+oZX=!nE1#b0ag_w|-C&e3KJ+AI2DCvSA!t`;-DN z;TXmZYK<<31dJ%0aqV_H7VLWSQmJQ31>GxdWKMRxJMcN@+P_buaql{XR&x5Ssw%!_ zb{Br>d)(8RqjM_v?LlM_mKdz?3dMQqwPveD{?_o5^pqRD)k_{ZgqJoNLUDV_ zT}8S#wu+;V-oI$8^BlrrNQW*ZwniBwz3Mz%OaS#HzoU@H|It`ue5wi2E~d zsXEQw^%odVxUExz+vdHftVygE6CF*P0h6=yb0{q*Pr?cu{Mc?qHd$(pZDiJUxM@cqW+J(B=5we;aT1J`k_o~7)tAc;jbmZ#5+!? z??!8r{CllpLko!)Kk>~W*=CxM5Z;#UeOx6|btRSR>) zyOmU8a4kos5^PY}XhCM?iwd)q-Pfm`^yMoIoiwGNH>4Epj-C!53i$Z7LZCecu)y`% zJ>Cr$GO{cs*2u&+Ia`X%T^lC}L{V`E%O0j<}=KDt}ge`R4thLWloj$!E ztKoU`rvt(e_huB+yZ;H|Cl;A1@Ld%mjjJOMH z1!K=`_iN&o?%vmR($p=_1Y*u=1ugR@e&QzTmIbyMEtGH`CVmn#S5~juzHMndj+8v7`Afs|Zl>JCzDIsQ0SBP1tgVCf(`03R5JZF< zXea&Pc7Exg@=4?4L?MCRg@-Q$Y2Q>nwpZv#2${r|hRaX(_&jotVikNaL^%E$*7w@6 zWJ8W2o@;tkc@=+C$Za6p>Mz&eMvCW*v0}Q{9&}}2J<=AMEpypUv1aOb{zOOJe$OiJ z&7x-#>mYcMr9a@>YuomCCCGH{i&t0F)Q)Ww?VDc}tk4gixrPc~UJym$A!>s{spcQp z4VQ1WVxG!=pU(=v=dyFkeAW4A!@&THjN>{tX5eAmlQ#Gst&Ja=h=J+^eO7dh4o|7; z`ucamS$ZOPp{Ryu>$J?$t%}H}r~3V=A5fs$W^$1WE4t_E8~kysg2<~M5FCUzL&`QN z(MPo0U@DY+F_?bwnJk|Yv$3KF^AR)n5MIlHY`0GX2AUq2SA3=7W( zFn}=Ti>YYr1X5KN;Ex* zJrCoxE770*Fv4jCt7M{2_nlMD5A`@uKj!^DJOBa$59?pMje2Qv<)wm1Vmi$!nBzoj zp)--s+IU|w1*e?XkS_7|P$CQ14L5ykDz7<_^9J|C>60SFrf&D`r6pIR-h4=`;xPAw z;qv+(I*oxTtnIY~EQ!0kdi*1FLIeUq|M8D{$=%U6#mgP0#yz$lkVG_UNj$hW%&!kU zf?U;U+lI6re9OUey2F=rmewa9*2^_E{l_o{ElC))@Zfl>NIP3Dm}RSk zZ*hWERv;e`+Y7XOsqYKBH<5p~9_!PY7<*oM4s$BGn{!Oug>`3DwiyMtEwR^LGrC^Q zmMT!wUR;wL)~4Bo*+j5gtU@ohskx5GDMpYGH8h&}QLRv$sZ82r)jW6Hyv**WWJgU?_Za1F*_2q-SD+)A}6N@zu^{(&l2X)BbrDv?sPs;Hz zXeIhU`N!JrZ+6Ga?y=XSsVe1TfBWtJzL{?x^Ucg!;^y%p_R=VRl8C*ce_$Xt7xlSA zqeuARsXNVK=M>*DtehywT8;|-H@WU*%PZ#zqEyydQxfqhi{~$?8yx!F@X`IMKTx`$ zd|_3nA{bk_C>oY&_0rlE6X(vZTC;Y`3okacv~_Ijd1cq`J+JQV?c3Lnv)~RM`s{0m zadgzF)32Yg{j1BCuUNUVwszI3y1E!-HDnEBEo2>+dM*uI;#?Xr-fXov$j&Lu@k1XQ zRno{G`J6CMOSD&5r~MEtNA@2&IEp34!6T*ytcYWW@8xB#9c%Quy!c$h+(jA_?xXzU z1IPR0=9y=1zL*H5#)cq(D&{3LmWZn0<|M=KpUwBEOY_JR5);e{;+QtJ){T(( zXl|Iqak!;NE397|HeebYAnP|g-;lt+^@N|mNrrIN-$*0jzY)e0UpE^G+q+l+*zv8S z^vDR#hV36D$Mz3co`?61jGWBPm1ev#Ydn@?C-+%~vi+8xZ|Qf#nyK%EEd2n5&qTu*zaFRFjfbx^i+eWGV=qDM{i)F;N)CdSmn7{Qz)?b$TRYFTu`5NROwYgH9V zV2iPX?^h$=%wjA5hg@&Td!O;vu>XJb?x#$bsQzEe^KQ?T8cW}=e!BMGFH(;`aDTt3 zvh-U#eRY9+|EO`lFRl5{?f(t;8?JWizi|GeIbGqI&X&ab4bNM}R-&*66lM<~56|fm>hL^|*|9u`Buq`ul-oU} z#PPhqzJ*J;5mzCJIG#%ZA8yDQ;YM7AWWM9M%)W&|TSi<}1gOH@Tio_ADK6!X=SB7{ zT+WTS3Q2|Id7*s^S8yY@BLK#Gp_>S~28?fuy*8A!*L6#cH#KvDzf1i6Tgx<4f1B&? za(#vC@8`YWTgm6an!@iMn%fKO_lu|V)bRiG={|n`;_WS>-^_czmgnc4kJpbj|3|Ki zx6_@TAKyQ4_(1$P&Lkndy(e-wNTi?r!PSf3yR+?=Y;DiJ+|#?E;W@S!v2#sNnG-2| z<8qbp=Z-bRAu^By9!Qvmb%b1=6i9Qjl#GAv5(<6fH@N6;xZ_c*t-!J5^9O>VFehZCWF9Szl+DN2Y{jBzWmR>};w4Mj zcWH6^CqS(3ex3IpAB8@NxMe(le2(!45d$OvKEMwIfFKY8!hj4YKnXAppg<`Q0m^{+ zzyhEgSO`=Ai-0Il2~+{qKn<`MSOP2sQ1p)wBiBVh0(^iU2mnDK1cU(@P=FEu<^P&O zmjc*Mej<>P>mnclK2q{KYkiEL*mo>`Y;-6-G}51o^S^QJMOiq#g9u|0p}Hg(x_}C7 z1y=*yT&x@4z&lCO$XCQ9jh>fMRGs!EX>7`$qKV0XMmJ3achGB}7o?;h(@iZjq0v~9 zsz{7XNgC2n(RFZf7>F*_ja~xLXk=20@!jkeH;MnfsSL+=5;31pD|=fqWh zt6jckm!G12;+Ijl_C(Y3rd?AuMf7K!2#Z zkr7;VZ>I@y(5`&DLR6T$k*0Z>Zk!{KH1{hWHj|{UTif;+(p*8BXB=Do6u94lt95Xf z!Tk%|yAJNE0Die{taflW!Tl6mlVdZ!5AFfDjf}vk9i}0SDg1$ttk8`V=Z9p}OX-Bw z8uxM$^@shO;cr7P z9+hdVg{s=)pgBupX$O(He&g0{l40$KKebLb#&}#j;V%V$**t$4CFS-<;0q#Qyz2P4 zdc~MC#+${zqot|*mcloQvbMrkPfRynB#?eK?z>QoRn8!6XJGpjD@XJysMRj0i*_CN z>`_fI`|~P%4X@UXxAT0ZJu1D8c8z)YLY?i{@%gahtkI2tBc7t*Zh;dymjc#-y9w@n z-d9s>4otEpO!&Gn0lz4l-K&}Y+ZFL=cyF=Z?TK9j9EYE-b$lIo$(kR{VyihnnEfK` z7hvDX=cQ%eX4|i_`oi8}+p|)IHcqy>2|~u4kInvz>NHl>$}MbM@kLCFIA- z*`OOqYfdzug@yIC3O)sX#=T~3r|PIZ?bAy3DV{N>;9?m5X5jB_;;Ng*>efat`^5du zPHab`iElyKlzq82l@2@4c%M^r+n;pP*rS24vp^*X5VIzb{1*B zM~n7t2OXEh6P}G|SISxZ!&hIsZZz=mJw!w1oV)^l4E$!!GwvF=8F2Lu?p~0^fo`mH za1X$J0B#xQqENHoE+Ow8#_gn$y)^VHjaX}TG=%*Fwnxxbd)nOXX|dbWP4CLm(O}_K zrVki|pECj7SYN1rG)KIQ*GhK;`lZ@ddI7jpo2Hj*w=?#azCs@utlw^-jMxsGyTkXj zlQd-Ve*)hHego%^@cx_y|2H4sN6{x6p(0^IMD)`;?!6^t?=4yEEz>lXa_l55Uk3Ts zp^P{A9_Na$?ecXRP2E7^TQtQPR)qk4RV~W*(lEvXfpcB*R z$7U^V-^tMCiNK_P$~P^Y7Z1p0=W4F`&gu}85q~eEuO!zxn5E6qTY}>QC;@Y~jQaNI zh9o?>#-(XuFWVOWEr0;*U2kX{MHHXgy(>ARn`@e42o)A=C7QZ9|Cn4wA=kT0woPi! zez8Iu>*eytEe-41r7g}z)gy|(IuV!-F^ntpt7Xe>NuaPNAXfH! z+O`;1zC~^Q0kx?^igrG3YVXGf9Sv7?OB{dg0FsAJ16j!hHsg@dUA63-CpM;l9jH>w z_Q%uT-1&g}aDEZKUC&!~iumpLRe9}aH*2m3Fu zpQ@MtO(FkFi$&_t)BgO=&5Ln(x^>pFf2viNli`0Rr;<*eQs7+#FX0)JAz+^ZD+cWC z%08O$ly_F(`zL&#Xlob`v)X(_&9?=GS3DcgFQTrEZ&>yYIY$}N^vcRE<+ks4`1QbV zf6z1A16R+uv?ETB!}mN1#$-bX5jNBd}0x4t()>% z&tiFB){;V7n_45WnfHp>{;%hSQw9u?2JQEz7=5 z)LVp&$LUVk&cbHM{hFkH@%$e?=ixIb_z2WZ+%^H*kFaeOwn=f`nuYB$Y=5gY@}G=n zE|}`iYVcGLdHVOL@AQIYAB>`4){Qyp!_k16Xx(qZ<-(F>0})sfm-m+BvqBb^v%ofb zu)Vk}0BiP~M@zt72Nvg$@SVlw#U;vTDPK4Ptm&L(GZh6a9(2O2wLo&TlYOnY#bfJE z#$Jk^QeRfo?FuH4FIV8M?*5OmGB2A z77oJ;|0JmUZN+LxGmY&!D(jIx(!6|AgXgf`$4?SJNsiwglNkvg|7IUwnM;%Ayru^C zzlAV`$~y6N;!jM;{<@F9#mArfBTbs~`&wmxe|x%#uTuHBmI7&o`dgph=1024 is dangerous. If tpws is not running any unprivileged process can +listen to that port and intercept traffic. + + +dvtws quick start. + +For all traffic: +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +/opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 + +Process only table zapret with the exception of table nozapret : +ipfw delete 100 +ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 +ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted not sockarg xmit em0 +/opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 + +Reinjection loop avoidance. +FreeBSD artificially ignores sockarg for ipv6 in the kernel. +This limitation is coming from the ipv6 early age. Code is still in "testing" state. 10-20 years. Everybody forgot about it. +dvtws sends ipv6 forged frames using another divert socket (HACK). they can be filtered out using 'diverted'. +ipv4 frames are filtered using 'sockarg'. + +PF in FreeBSD: +The setup is similar to OpenBSD, but there are important nuances. +1) Don't forget to build special PF-enabled version of tpws : make CFLAGS=-DUSE_PF +2) It's not possible to redirect to ::1. Need to redirect to the link-local address of the incoming interface. +Look for fe80:... address in ifconfig and use it for redirection target. +3) pf.conf syntax is a bit different from OpenBSD. +4) How to set maximum table size : sysctl net.pf.request_maxcount=2000000 +5) The word 'divert-packet' is absent in the pfctl binary, divert-packet rules are not working. +'divert-to' is not the same thing. Looks like its not possible to use dvtws with PF in FreeBSD. +/etc/pf.conf +----------- +rdr pass on em1 inet6 proto tcp to port {80,443} -> fe80::31c:29ff:dee2:1c4d port 988 +rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988 +----------- +/opt/zapret/tpws/tpws --port=988 --bind-addr=127.0.0.1 --bind-iface6=em1 --bind-linklocal=force + +Its not clear how to do rdr-to outgoing traffic. I could not make route-to scheme work. + + +OpenBSD +------- + +In OpenBSD default tpws bind is ipv6 only. to bind to ipv4 specify --bind-addr=0.0.0.0 +Use --bind-addr=0.0.0.0 --bind-addr=:: to achieve the same default bind as in others OSes. + +tpws for forwarded traffic only : + +/etc/pf.conf +------------ +pass in quick on em1 inet proto tcp to port {80,443} rdr-to 127.0.0.1 port 988 +pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 +------------ +pfctl -f /etc/pf.conf +tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + +Its not clear how to do rdr-to outgoing traffic. I could not make route-to scheme work. +rdr-to support is done using /dev/pf, that's why transparent mode requires root. + +dvtws for all traffic: + +/etc/pf.conf +------------ +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 +------------ +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + +dwtws only for table zapret with the exception of table nozapret : + +/etc/pf.conf +------------ +table file "/opt/zapret/ipset/zapret-ip.txt" +table file "/opt/zapret/ipset/zapret-ip-user.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude.txt" +pass out quick on em0 inet proto tcp to port {80,443} +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +table file "/opt/zapret/ipset/zapret-ip6.txt" +table file "/opt/zapret/ipset/zapret-ip-user6.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude6.txt" +pass out quick on em0 inet6 proto tcp to port {80,443} +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 +------------ +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + + +dvtws in OpenBSD sends all fakes through a divert socket because raw sockets have critical artificial limitations. +Looks like pf automatically prevent reinsertion of diverted frames. Loop problem does not exist. + +Sadly PF auto applies return rule to divert-packet. +Not only outgoing packets go through dvtws but also incoming. +This adds great unneeded overhead that will be the most noticable on http/https downloads. +I could not figure out how to disable this feature. +Thats why you are encouraged to use table filters with your personal blocked site lists. + +OpenBSD forcibly recomputes tcp checksum after divert. Thats why most likely +dpi-desync-fooling=badsum will not work. dvtws will warn if you specify this parameter. + +ipset scripts do not reload PF by default. To enable reload specify command in /opt/zapret/config : +LISTS_RELOAD="pfctl -f /etc/pf.conf" +Newer pfctl versions can reload tables only : pfctl -Tl -f /etc/pf.conf +But OpenBSD 6.8 pfctl is old enough and does not support that. Newer FreeBSD do. +Don't forget to disable gzip compression : +GZIP_LISTS=0 +If some list files do not exist and have references in pf.conf it leads to error. +You need to exclude those tables from pf.conf and referencing them rules. +After configuration is done you can put ipset script : + crontab -e + write the line : 0 12 */2 * * /opt/zapret/ipset/get_config.sh + + +MacOS +----- + +Initially, the kernel of this OS was based on BSD. That's why it is still BSD but a lot was modified by Apple. +As usual a mass commercial project priorities differ from their free counterparts. +Apple guys do what they want. +What everyone have updated long ago they keep old like a mammoth. But who cares ? + +MacOS used to have ipfw but it was removed later and replaced by PF. +It looks like divert sockets are internally replaced with raw. Its possible to request a divert socket +but it behaves exactly as raw socket with all its BSD inherited + apple specific bugs and feature. +The fact is that divert-packet in /etc/pf.conf does not work. pfctl binary does not contain the word 'divert'. +dvtws does compile but is useless. + +After some efforts tpws works. Apple has removed some important stuff from their newer SDKs (DIOCNATLOOK) making +them undocumented and unsupported. With important definitions copied from an older SDK it was possible to make +transparent mode working again. But this is not guaranteed to work in the future versions. +Another MacOS unique feature is root requirement while polling /dev/pf. +By default tpws drops root. Its necessary to specify --user=root to stay with root. +In other aspects PF behaves very similar to FreeBSD and shares the same pf.conf syntax. + +In MacOS redirection works both for passthrough and outgoing traffic. Outgoing redirection requires route-to rule. +Because tpws is forced to run as root to avoid loop its necessary to exempt root from the redirection. +That's why DPI bypass will not work for local requests from root. + +If you do ipv6 routing you have to get rid of "secured" ipv6 address assignment. +"secured" addresses are designed to be permanent and not related to the MAC address. +And they really are. Except for link-locals. +If you just reboot the system link-locals will not change. But next day they will change. Not necessary to wait so long. +Just change the system time to tomorrow and reboot. Link-locals will change. (at least they change in vmware guest) +Looks like its a kernel bug. Link locals should not change. Its useless and can be harmful. Cant use LL as a gateway. +The easiest solution is to disable "secured" addresses. +Outgoing connections prefer randomly generated temporary addressesas like in other systems. +Put the string "net.inet6.send.opmode=0" to /etc/sysctl.conf. If not present - create it. +Then reboot the system. +If you dont like this solution you can assign an additional static ipv6 address from fd00::/8 range with /128 prefix +to your LAN interface and use it as the gateway address. + +tpws transparent mode only for outgoing connections. en0 - WAN. + +/etc/pf.conf +------------ +rdr pass on lo0 inet proto tcp from !127.0.0.0/8 to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on lo0 inet6 proto tcp from !::1 to any port {80,443} -> fe80::1 port 988 +pass out route-to (lo0 127.0.0.1) inet proto tcp from any to any port {80,443} user { >root } +pass out route-to (lo0 fe80::1) inet6 proto tcp from any to any port {80,443} user { >root } +------------ +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=en0 --bind-linklocal=force + + +tpws transparent mode for both passthrough and outgoing connections. en0 - WAN, en1 - WAN. + +ifconfig en1 | grep fe80 + inet6 fe80::bbbb:bbbb:bbbb:bbbb%en1 prefixlen 64 scopeid 0x8 +/etc/pf.conf +------------ +rdr pass on en1 inet proto tcp from any to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on en1 inet6 proto tcp from any to any port {80,443} -> fe80::bbbb:bbbb:bbbb:bbbb port 988 +rdr pass on lo0 inet proto tcp from !127.0.0.0/8 to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on lo0 inet6 proto tcp from !::1 to any port {80,443} -> fe80::1 port 988 +pass out route-to (lo0 127.0.0.1) inet proto tcp from any to any port {80,443} user { >root } +pass out route-to (lo0 fe80::1) inet6 proto tcp from any to any port {80,443} user { >root } +------------ +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=en0 --bind-linklocal=force --bind-iface6=en1 --bind-linklocal=force + + +Build from source : make -C /opt/zapret mac + +ipset/*.sh scripts work. + + +MacOS easy install +------------------ + +install_easy.sh supports MacOS + +Shipped precompiled binaries are built for 64-bit MacOS with -mmacosx-version-min=10.8 option. +They should run on all supported MacOS versions. +If no - its easy to build your own. Running 'make' automatically installs developer tools. + +!! Internet sharing is not supported !! +Routing is supported but only manually configured through PF. +If you enable internet sharing tpws stops functioning. When you disable internet sharing you may lose web site access. +To fix : pfctl -f /etc/pf.conf +If you need internet sharing use tpws socks mode. + +launchd is used for autostart (/Library/LaunchDaemons/zapret.plist) +Control script : /opt/zapret/init.d/macos/zapret +The following commands fork with both tpws and firewall (if INIT_APPLY_FW=1 in config) +/opt/zapret/init.d/macos/zapret start +/opt/zapret/init.d/macos/zapret stop +/opt/zapret/init.d/macos/zapret restart +Work with tpws only : +/opt/zapret/init.d/macos/zapret start-daemons +/opt/zapret/init.d/macos/zapret stop-daemons +/opt/zapret/init.d/macos/zapret restart-daemons +Work with PF only : +/opt/zapret/init.d/macos/zapret start-fw +/opt/zapret/init.d/macos/zapret stop-fw +/opt/zapret/init.d/macos/zapret restart-fw +Reloading PF tables : +/opt/zapret/init.d/macos/zapret reload-fw-tables + +Installer configures LISTS_RELOAD in the config so ipset/*.sh scripts automatically reload PF tables. +Installer creates cron job for ipset/get_config.sh, as in OpenWRT. + +start-fw script automatically patches /etc/pf.conf inserting there "zapret" anchors. +Auto patching requires pf.conf with apple anchors preserved. +If your pf.conf is highly customized and patching fails you will see the warning. Do not ignore it. +In that case you need to manually insert "zapret" anchors to your pf.conf (keeping the right rule type ordering) : +rdr-anchor "zapret" +anchor "zapret" +unistall_easy.sh unpatches pf.conf + +start-fw creates 3 anchor files in /etc/pf.anchors : zapret,zapret-v4,zapret-v6. +Last 2 are referenced by anchor "zapret". +Tables nozapret,nozapret6 belong to anchor "zapret". +Tables zapret,zapret-user belong to anchor "zapret-v4". +Tables zapret6,zapret6-user belong to anchor "zapret-v6". +If an ip version is disabled then corresponding anchor is empty and is not referenced from the anchor "zapret". +Tables are only created for existing list files in the ipset directory. diff --git a/docs/bsd.txt b/docs/bsd.txt new file mode 100644 index 0000000..7140341 --- /dev/null +++ b/docs/bsd.txt @@ -0,0 +1,375 @@ +Поддерживаемые версии +--------------------- + +FreeBSD 11.x+ , OpenBSD 6.x+, частично MacOS Sierra+ + +На более старых может собираться, может не собираться, может работать или не работать. +На FreeBSD 10 собирается и работает dvtws. С tpws есть проблемы из-за слишком старой версии компилятора clang. +Вероятно, будет работать, если обновить компилятор. +На pfSense если и можно завести, то это не просто. Собранные на FreeBSD с той же версией ядра бинарики не работают. +Статические бинарики тоже. Модуль ipdivert отсутствует. + + +Особенности BSD систем +---------------------- + +В BSD нет nfqueue. Похожий механизм - divert sockets. +Из каталога "nfq" под BSD собирается dvtws вместо nfqws. +Он разделяет с nfqws большую часть кода и почти совпадает по параметрам командной строки. + +FreeBSD содержит 2 фаервола : IPFilter (ipfw) и Packet Filter (PF). OpenBSD содержит только PF. + +Под FreeBSD tpws и dvtws собираются через "make", под OpenBSD - "make bsd", под MacOS - "make mac". +FreeBSD make распознает BSDmakefile , OpenBSD и MacOS - нет. Поэтому там используется отдельный target в Makefile. +Сборка всех исходников : make -C /opt/zapret +Сборка всех исходников с поддержкой PF : make -C /opt/zapret CFLAGS=-DUSE_PF +В FreeBSD поддержку PF нужно включать только, если вы его используете. Иначе это нежелательно ! +В OpenBSD и MacOS PF при сборке включается автоматически. + +divert сокет - внутренний тип сокета ядра BSD. Он не привязывается ни к какому сетевому адресу, не участвует +в обмене данными через сеть и идентифицируется по номеру порта 1..65535. Аналогия с номером очереди NFQUEUE. +На divert сокеты заворачивается трафик посредством правил ipfw или PF. +Если в фаерволе есть правило divert, но на divert порту никто не слушает, то пакеты дропаются. +Это поведение аналогично правилам NFQUEUE без параметра --queue-bypass. +На FreeBSD divert сокеты могут быть только ipv4, хотя на них принимаются и ipv4, и ipv6 фреймы. +На OpenBSD divert сокеты создаются отдельно для ipv4 и ipv6 и работают только с одной версией ip каждый. +На MacOS похоже, что divert сокеты из ядра вырезаны. См подробнее раздел про MacOS. +Отсылка в divert сокет работает аналогично отсылке через raw socket на linux. Передается полностью IP фрейм, начиная +с ip загловка . Эти особенности учитываются в dvtws. + +Скрипты ipset/*.sh при наличии ipfw работают с ipfw lookup tables. +Это прямой аналог ipset. lookup tables не разделены на v4 и v6. Они могут содержать v4 и v6 адреса и подсети одновременно. +Если ipfw отсутствует, то действие зависит от переменной LISTS_RELOAD в config. +Если она задана, то выполняется команда из LISTS_RELOAD. В противном случае не делается ничего. +Если LISTS_RELOAD=-, то заполнение таблиц отключается даже при наличии ipfw. + +PF может загружать ip таблицы из файла. Чтобы использовать эту возможность следует отключить сжатие gzip для листов +через параметр файла config "GZIP_LISTS=0". + +BSD не содержит системного вызова splice. tpws работает через переброску данных в user mode в оба конца. +Это медленнее, но не критически. +Управление асинхронными сокетами в tpws основано на linux-specific механизме epoll. +В BSD для его эмуляции используется epoll-shim - прослойка для эмуляции epoll на базе kqueue. + +Некоторые функции dvtws пришлось реализовывать через хаки. +В BSD много ограничений, особенностей и багов при работе с низкоуровневой сетью, в особенности в области ipv6. +Казалось бы столько лет прошло, а в коде все еще сидят ограничители 15-20 летней давности. +Прямая отсылка ipv6 фреймов с измененным source address и вовсе невозможна через raw sockets. +OpenBSD не дает отсылать через raw sockets tcp фреймы. +Там, где функции нельзя было реализовать напрямую, либо их реализация привела бы к залезанию в низкоуровневые дебри, +используются те же divert сокеты. Оказывается через них можно скармливать ядру любые пакеты, обходя ограничения +raw sockets. Не знаю насколько это легально, но пока это работает. Однако, имейте в виду. Что-то может сломаться. + +mdig и ip2net полностью работоспособны в BSD. В них нет ничего системо-зависимого. + +FreeBSD +------- + +divert сокеты требуют специального модуля ядра ipdivert. +Поместите следующие строки в /boot/loader.conf (создать, если отсутствует) : +----------- +ipdivert_load="YES" +net.inet.ip.fw.default_to_accept=1 +----------- +В /etc/rc.conf : +----------- +firewall_enable="YES" +firewall_script="/etc/rc.firewall.my" +----------- +/etc/rc.firewall.my : +----------- +ipfw -q -f flush +----------- +В /etc/rc.firewall.my можно дописывать правила ipfw, чтобы они восстанавливались после перезагрузки. +Оттуда же можно запускать и демоны zapret, добавив в параметры "--daemon". Например так : +----------- +pkill ^dvtws$ +/opt/zapret/nfq/dvtws --port=989 --daemon --dpi-desync=split2 +----------- +Для перезапуска фаервола и демонов достаточно будет сделать : /etc/rc.d/ipfw restart + + +Краткая инструкция по запуску tpws в прозрачном режиме. +Предполагается, что интерфейс LAN называется em1, WAN - em0. + +Для всего трафика : +ipfw delete 100 +ipfw add 100 fwd 127.0.0.1,988 tcp from me to any 80,443 proto ip4 xmit em0 not uid daemon +ipfw add 100 fwd ::1,988 tcp from me to any 80,443 proto ip6 xmit em0 not uid daemon +ipfw add 100 fwd 127.0.0.1,988 tcp from any to any 80,443 proto ip4 recv em1 +ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 +/opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + +Для трафика только на таблицу zapret, за исключением таблицы nozapret : +ipfw delete 100 +ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 +ipfw add 100 fwd 127.0.0.1,988 tcp from me to table\(zapret\) 80,443 proto ip4 xmit em0 not uid daemon +ipfw add 100 fwd ::1,988 tcp from me to table\(zapret\) 80,443 proto ip6 xmit em0 not uid daemon +ipfw add 100 allow tcp from any to table\(nozapret\) 80,443 recv em1 +ipfw add 100 fwd 127.0.0.1,988 tcp from any to any 80,443 proto ip4 recv em1 +ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 +/opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + +Таблицы zapret, nozapret, ipban создаются скриптами из ipset по аналогии с Linux. +Обновление скриптов можно забить в cron под root : + crontab -e + Создать строчку "0 12 */2 * * /opt/zapret/ipset/get_config.sh" + +При использовании ipfw tpws не требует повышенных привилегий для реализации прозрачного режима. +Однако, без рута невозможен бинд на порты <1024 и смена UID/GID. Без смены UID будет рекурсия, +поэтому правила ipfw нужно создавать с учетом UID, под которым работает tpws. +Переадресация на порты >=1024 может создать угрозу перехвата трафика непривилегированным +процессом, если вдруг tpws не запущен. + + +Краткая инструкция по запуску dvtws. + +Для всего трафика : +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +/opt/zapret/nfq/dvtws --port=989 ---dpi-desync=split2 + +Для трафика только на таблицу zapret, за исключением таблицы nozapret : +ipfw delete 100 +ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 +ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted not sockarg xmit em0 +/opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 + +Недопущение зацикливания - повторного вхождения фейк пакетов на обработку. +FreeBSD игнорирует sockarg в ipv6. +Это искусственное ограничение в коде ядра, которое тянется уже лет 10-20. +Кто-то в свое время посчитал код сырым, и до сих пор никто не удосужился поправить. +dvtws в FreeBSD отсылает ipv4 фреймы через raw socket. Такие пакеты не 'diverted'. Они отсекаются по 'sockarg'. +Для отсылки ipv6 фейков используется divert socket, потому что ipv6 raw сокеты в BSD не дают самому +формировать IP заголовок и подменять source address. Фейки в ipv6 'diverted'. Они отсекаются по 'diverted'. +В linux nfqws для недопущения зацикливания используется fwmark. + + +PF в FreeBSD: +Настройка аналогична OpenBSD, но есть важные нюансы. +1) Не забыть собрать специальную версию под PF : make CFLAGS=-DUSE_PF +2) Нельзя сделать ipv6 rdr на ::1. Нужно делать на link-local адрес входящего интерфейса. +Смотрите через ifconfig адрес fe80:... и добавляете в правило +3) Синтаксис pf.conf немного отличается. Более новая версия PF. +4) Лимит на количество элементов таблиц задается так : sysctl net.pf.request_maxcount=2000000 +5) Слово 'divert-packet' отсутствует в бинарике pfctl, правила divert-packet выдают ошибку. +'divert-to' - это не то. Не похоже, что в FreeBSD можно завести dvtws через PF. +/etc/pf.conf +----------- +rdr pass on em1 inet6 proto tcp to port {80,443} -> fe80::31c:29ff:dee2:1c4d port 988 +rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988 +----------- +/opt/zapret/tpws/tpws --port=988 --bind-addr=127.0.0.1 --bind-iface6=em1 --bind-linklocal=force + +В PF непонятно как делать rdr-to с той же системы, где работает proxy. Вариант с route-to у меня не заработал. + + +OpenBSD +------- + +В tpws бинд по умолчанию только на ipv6. для бинда на ipv4 указать "--bind-addr=0.0.0.0" +Используйте --bind-addr=0.0.0.0 --bind-addr=:: для достижения того же результата, как в других ОС по умолчанию. +(лучше все же так не делать, а сажать на определенные внутренние адреса или интерфейсы) + +tpws для проходящего трафика : + +/etc/pf.conf +------------ +pass in quick on em1 inet proto tcp to port {80,443} rdr-to 127.0.0.1 port 988 +pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 +------------ +pfctl -f /etc/pf.conf +tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + +В PF непонятно как делать rdr-to с той же системы, где работает proxy. Вариант с route-to у меня не заработал. +Поддержка rdr-to реализована через /dev/pf, поэтому прозрачный режим требует root. + +dvtws для всего трафика : + +/etc/pf.conf +------------ +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 +------------ +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + +dvtws для трафика только на таблицу zapret, за исключением таблицы nozapret : + +/etc/pf.conf +------------ +set limit table-entries 2000000 +table file "/opt/zapret/ipset/zapret-ip.txt" +table file "/opt/zapret/ipset/zapret-ip-user.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude.txt" +pass out quick on em0 inet proto tcp to port {80,443} +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +table file "/opt/zapret/ipset/zapret-ip6.txt" +table file "/opt/zapret/ipset/zapret-ip-user6.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude6.txt" +pass out quick on em0 inet6 proto tcp to port {80,443} +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 +------------ +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + + +В OpenBSD dvtws все фейки отсылает через divert socket, поскольку эта возможность через raw sockets заблокирована. +Видимо pf автоматически предотвращает повторный заворот diverted фреймов, поэтому проблемы зацикливания нет. + +К сожалению, в PF присутствует "удобная" функция, которая автоматически применяет к правилу divert-packet +обратный трафик. Через divert пойдет все соединение, а не только исходящие пакеты. +Это добавит огромный ненужный overhead по процессингу входящих пакетов в dvtws, который будет наиболее заметен +на скачивании по http/https. Мне не удалось понять как этого избежать. +Поэтому использование фильтр-таблиц крайне рекомендовано ! + +OpenBSD принудительно пересчитывает tcp checksum после divert, поэтому скорее всего +dpi-desync-fooling=badsum у вас не заработает. При использовании этого параметра +dvtws предупредит о возможной проблеме. + +Скрипты из ipset не перезагружают таблицы в PF по умолчанию. +Чтобы они это делали, добавьте параметр в /opt/zapret/config : +LISTS_RELOAD="pfctl -f /etc/pf.conf" +Более новые версии pfctl понимают команду перезагрузить только таблицы : pfctl -Tl -f /etc/pf.conf +Но это не относится к OpenBSD 6.8. В новых FreeBSD есть. +Не забудьте выключить сжатие gzip : +GZIP_LISTS=0 +Если в вашей конфигурации какого-то файла листа нет, то его необходимо исключить из правил PF. +Если вдруг листа нет, и он задан в pf.conf, будет ошибка перезагрузки фаервола. +После настройки обновление листов можно поместить в cron : + crontab -e + дописать строчку : 0 12 */2 * * /opt/zapret/ipset/get_config.sh + +Если будете пользоваться скриптом ipset/get_combined.sh, установите GNU grep : pkg_add ggrep. +Родной древний как мамонт, безумно медленный с опцией -f. + + +MacOS +----- + +Иначально ядро этой ОС "darwin" основывалось на BSD, потому в ней много похожего на другие версии BSD. +Однако, как и в других массовых коммерческих проектах, приоритеты смещаются в сторону от оригинала. +Яблочники что хотят, то и творят. Меняют, убирают, оставляют какие-то безумно старые версии API и утилит. +То, что уже давно везде обновили, может быть еще древним как мамонт в самой последней версии MacOS. +Но кого это волнует ? + +Раньше был ipfw, потом его убрали, заменили на PF. +Есть сомнения, что divert сокеты в ядре остались. Попытка создать divert socket не выдает ошибок, +но полученный сокет ведет себя точно так же, как raw, со всеми его унаследованными косяками + еще яблочно специфическими. +В PF divert-packet не работает. Простой grep бинарика pfctl показывает, что там нет слова "divert", +а в других версиях BSD оно есть. dvtws собирается, но совершенно бесполезен. + +tpws удалось адаптировать, он работоспособен. Получение адреса назначения для прозрачного прокси в PF (DIOCNATLOOK) +убрали из заголовков в новых SDK, сделав фактически недокументированным. +В tpws перенесены некоторые определения из более старых версий яблочных SDK. С ними удалось завести прозрачный режим. +Однако, что будет в следующих версиях угадать сложно. Гарантий нет. +Еще одной особенностью PF в MacOS является проверка на рута в момент обращения к /dev/pf, чего нет в остальных BSD. +tpws по умолчанию сбрасывает рутовые привилегии. Необходимо явно указать параметр --user=root. +В остальном PF себя ведет похоже на FreeBSD. Синтаксис pf.conf тот же. + +На MacOS работает редирект как с проходящего трафика, так и с локальной системы через route-to. +Поскольку tpws вынужден работать под root, для исключения рекурсии приходится пускать исходящий от root трафик напрямую. +Отсюда имеем недостаток : обход DPI для рута работать не будет. + +Если вы пользуетесь MaсOS в качестве ipv6 роутера, то нужно будет решить вопрос с регулярно изменяемым link-local адресом. +С некоторых версий MacOS использует по умолчанию постоянные "secured" ipv6 адреса вместо генерируемых на базе MAC адреса. +Все замечательно, но есть одна проблема. Постоянными остаются только global scope адреса. +Link locals периодически меняются. Смена завязана на системное время. Перезагрузки адрес не меняют, +Но если перевести время на день вперед и перезагрузиться - link local станет другим. (по крайней мере в vmware это так) +Информации по вопросу крайне мало, но тянет на баг. Не должен меняться link local. Скрывать link local не имеет смысла, +а динамический link local нельзя использовать в качестве адреса шлюза. +Проще всего отказаться от "secured" адресов. +Поместите строчку "net.inet6.send.opmode=0" в /etc/sysctl.conf. Затем перезагрузите систему. +Все равно для исходящих соединений будут использоваться temporary адреса, как и в других системах. +Или вам идея не по вкусу, можно прописать дополнительный статический ipv6 из диапазона fd00::/8 - +выберите любой с длиной префикса 128. Это можно сделать в системных настройках, создав дополнительный адаптер на базе +того же сетевого интерфейса, отключить в нем ipv4 и вписать статический ipv6. Он добавится к автоматически настраеваемым. + +Настройка tpws на macos в прозрачном режиме только для исходящих запросов, где en0 - WAN : + +/etc/pf.conf +------------ +rdr pass on lo0 inet proto tcp from !127.0.0.0/8 to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on lo0 inet6 proto tcp from !::1 to any port {80,443} -> fe80::1 port 988 +pass out route-to (lo0 127.0.0.1) inet proto tcp from any to any port {80,443} user { >root } +pass out route-to (lo0 fe80::1) inet6 proto tcp from any to any port {80,443} user { >root } +------------ +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=en0 --bind-linklocal=force + + +Настройка tpws на macos роутере в прозрачном режиме, где en0 - WAN, en1 - LAN. + +ifconfig en1 | grep fe80 + inet6 fe80::bbbb:bbbb:bbbb:bbbb%en1 prefixlen 64 scopeid 0x8 +/etc/pf.conf +------------ +rdr pass on en1 inet proto tcp from any to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on en1 inet6 proto tcp from any to any port {80,443} -> fe80::bbbb:bbbb:bbbb:bbbb port 988 +rdr pass on lo0 inet proto tcp from !127.0.0.0/8 to any port {80,443} -> 127.0.0.1 port 988 +rdr pass on lo0 inet6 proto tcp from !::1 to any port {80,443} -> fe80::1 port 988 +pass out route-to (lo0 127.0.0.1) inet proto tcp from any to any port {80,443} user { >root } +pass out route-to (lo0 fe80::1) inet6 proto tcp from any to any port {80,443} user { >root } +------------ +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=en0 --bind-linklocal=force --bind-iface6=en1 --bind-linklocal=force + + +Сборка : make -C /opt/zapret mac + +Скрипты получения листов ipset/*.sh работают. +Если будете пользоваться ipset/get_combined.sh, нужно установить gnu grep через brew. +Имеющийся очень старый и безумно медленный с оцией -f. + + +MacOS простая установка +----------------------- + +В MacOS поддерживается install_easy.sh + +В комплекте идут бинарики, собраные под 64-bit с опцией -mmacosx-version-min=10.8. +Они должны работать на всех поддерживаемых версиях macos. +Если вдруг не работают - можно собрать свои. Developer tools ставятся автоматом при запуске make. + +!! Internet sharing средствами системы НЕ ПОДДЕРЖИВАЕТСЯ !! +Поддерживается только роутер, настроенный своими силами через PF. +Если вы вдруг включили шаринг, а потом выключили, то доступ к сайтам может пропасть совсем. +Лечение : pfctl -f /etc/pf.conf +Если вам нужен шаринг интернета, лучше отказаться от прозрачного режима и использовать socks. + +Для автостарта используется launchd (/Library/LaunchDaemons/zapret.plist) +Управляющий скрипт : /opt/zapret/init.d/macos/zapret +Следующие команды работают с tpws и фаерволом одновременно (если INIT_APPLY_FW=1 в config) +/opt/zapret/init.d/macos/zapret start +/opt/zapret/init.d/macos/zapret stop +/opt/zapret/init.d/macos/zapret restart +Работа только с tpws : +/opt/zapret/init.d/macos/zapret start-daemons +/opt/zapret/init.d/macos/zapret stop-daemons +/opt/zapret/init.d/macos/zapret restart-daemons +Работа только с PF : +/opt/zapret/init.d/macos/zapret start-fw +/opt/zapret/init.d/macos/zapret stop-fw +/opt/zapret/init.d/macos/zapret restart-fw +Перезагрузка всех IP таблиц из файлов : +/opt/zapret/init.d/macos/zapret reload-fw-tables + +Инсталятор настраивает LISTS_RELOAD в config, так что скрипты ipset/*.sh автоматически перезагружают IP таблицы в PF. +Автоматически создается cron job на ipset/get_config.sh, по аналогии с openwrt. + +При start-fw скрипт автоматически модицифирует /etc/pf.conf, вставляя туда anchors "zapret". +Модификация расчитана на pf.conf, в котором сохранены дефолтные anchors от apple. +Если у вас измененный pf.conf и модификация не удалась, об этом будет предупреждение. Не игнорируйте его. +В этом случае вам нужно вставить в свой pf.conf (в соответствии с порядком типов правил) : +rdr-anchor "zapret" +anchor "zapret" +При деинсталяции через uninstall_easy.sh модификации pf.conf убираются. + +start-fw создает 3 файла anchors в /etc/pf.anchors : zapret,zapret-v4,zapret-v6. +Последние 2 подключаются из anchor "zapret". +Таблицы nozapret,nozapret6 принадлежат anchor "zapret". +Таблицы zapret,zapret-user - в anchor "zapret-v4". +Таблицы zapret6,zapret6-user - в anchor "zapret-v6". +Если какая-то версия протокола отключена - соответствующий anchor пустой и не упоминается в anchor "zapret". +Таблицы и правила создаются только на те листы, которые фактически есть в директории ipset. diff --git a/docs/bsdfw.txt b/docs/bsdfw.txt new file mode 100644 index 0000000..39c21dc --- /dev/null +++ b/docs/bsdfw.txt @@ -0,0 +1,89 @@ +WAN=em0 LAN=em1 + +FreeBSD IPFW : + +ipfw delete 100 +ipfw add 100 fwd 127.0.0.1,988 tcp from me to any 80,443 proto ip4 xmit em0 not uid daemon +ipfw add 100 fwd ::1,988 tcp from me to any 80,443 proto ip6 xmit em0 not uid daemon +ipfw add 100 fwd 127.0.0.1,988 tcp from any to any 80,443 proto ip4 recv em1 +ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 + +ipfw delete 100 +ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 +ipfw add 100 fwd 127.0.0.1,988 tcp from me to table\(zapret\) 80,443 proto ip4 xmit em0 not uid daemon +ipfw add 100 fwd ::1,988 tcp from me to table\(zapret\) 80,443 proto ip6 xmit em0 not uid daemon +ipfw add 100 allow tcp from any to table\(nozapret\) 80,443 recv em1 +ipfw add 100 fwd 127.0.0.1,988 tcp from any to any 80,443 proto ip4 recv em1 +ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 + +/opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + + +; Loop avoidance. +; FreeBSD artificially ignores sockarg for ipv6 in the kernel. +; This limitation is coming from the ipv6 early age. Code is still in "testing" state. 10-20 years. Everybody forgot about it. +; dvtws sends ipv6 forged frames using another divert socket (HACK). they can be filtered out using 'diverted'. + + +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 + +ipfw delete 100 +ipfw add 100 allow tcp from me to table\(nozapret\) 80,443 +ipfw add 100 divert 989 tcp from any to table\(zapret\) 80,443 out not diverted not sockarg xmit em0 + +/opt/zapret/nfq/dvtws --port=989 --debug --dpi-desync=split + + +sample ipfw NAT setup : + +WAN=em0 +LAN=em1 +ipfw -q flush +ipfw -q nat 1 config if $WAN unreg_only reset +ipfw -q add 10 allow ip from any to any via $LAN +ipfw -q add 20 allow ip from any to any via lo0 +ipfw -q add 300 nat 1 ip4 from any to any in recv $WAN +ipfw -q add 301 check-state +ipfw -q add 350 skipto 390 tcp from any to any out xmit $WAN setup keep-state +ipfw -q add 350 skipto 390 udp from any to any out xmit $WAN keep-state +ipfw -q add 360 allow all from any to me in recv $WAN +ipfw -q add 390 nat 1 ip4 from any to any out xmit $WAN +ipfw -q add 10000 allow ip from any to any + +Forwarding : +sysctl net.inet.ip.forwarding=1 +sysctl net.inet6.ip6.forwarding=1 + + +OpenBSD PF : + +; dont know how to rdr-to from local system. doesn't seem to work. only works for routed traffic. + +/etc/pf.conf +pass in quick on em1 inet proto tcp to port {80,443} rdr-to 127.0.0.1 port 988 +pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 +pfctl -f /etc/pf.conf +/opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 + +; dvtws works both for routed and local + +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + +; dvtws with table limitations : to zapret,zapret6 but not to nozapret,nozapret6 +; reload tables : pfctl -f /etc/pf.conf +set limit table-entries 2000000 +table file "/opt/zapret/ipset/zapret-ip.txt" +table file "/opt/zapret/ipset/zapret-ip-user.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude.txt" +pass out quick on em0 inet proto tcp to port {80,443} +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 +table file "/opt/zapret/ipset/zapret-ip6.txt" +table file "/opt/zapret/ipset/zapret-ip-user6.txt" +table file "/opt/zapret/ipset/zapret-ip-exclude6.txt" +pass out quick on em0 inet6 proto tcp to port {80,443} +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 diff --git a/docs/changes.txt b/docs/changes.txt new file mode 100644 index 0000000..3b4d211 --- /dev/null +++ b/docs/changes.txt @@ -0,0 +1,191 @@ +v1 + +Initial release + +v2 + +nfqws : command line options change. now using standard getopt. +nfqws : added options for window size changing and "Host:" case change +ISP support : tested on mns.ru and beeline (corbina) +init scripts : rewritten init scripts for simple choise of ISP +create_ipset : now using 'ipset restore', it works much faster +readme : updated. now using UTF-8 charset. + +v3 + +tpws : added transparent proxy (supports TPROXY and DNAT). + can help when ISP tracks whole HTTP session, not only the beginning +ipset : added zapret-hosts-user.txt which contain user defined host names to be resolved + and added to zapret ip list +ISP support : dom.ru support via TPROXY/DNAT +ISP support : successfully tested sknt.ru on 'domru' configuration + other configs will probably also work, but cannot test +compile : openwrt compile howto + +v4 + +tpws : added ability to insert extra space after http method : "GET /" => "GET /" +ISP support : TKT support + +v5 + +nfqws : ipv6 support in nfqws + +v6 + +ipset : added "get_antizapret.sh" + +v7 + +tpws : added ability to insert "." after Host: name + +v8 + +openwrt init : removed hotplug.d/firewall because of race conditions. now only use /etc/firewall.user + +v9 + +ipban : added ipban ipset. place domains banned by ip to zapret-hosts-user-ipban.txt + these IPs must be soxified for both http and https +ISP support : tiera support +ISP support : added DNS filtering to ubuntu and debian scripts + +v10 + +tpws : added split-pos option. split every message at specified position + +v11 + +ipset : scripts optimizations + +v12 + +nfqws : fix wrong tcp checksum calculation if packet length is odd and platform is big-endian + +v13 + +added binaries + +v14 + +change get_antizapret script to work with https://github.com/zapret-info/z-i/raw/master/dump.csv +filter out 192.168.*, 127.*, 10.* from blocked ips + +v15 + +added --hostspell option to nfqws and tpws +ISP support : beeline now catches "host" but other spellings still work +openwrt/LEDE : changed init script to work with procd +tpws, nfqws : minor cosmetic fixes + +v16 + +tpws: split-http-req=method : split inside method name, not after +ISP support : mns.ru changed split pos to 3 (got redirect page with HEAD req : curl -I ej.ru) + +v17 + +ISP support : athome moved from nfqws to tpws because of instability and http request hangs +tpws : added options unixeol,methodeol,hosttab + +v18 + +tpws,nfqws : added hostnospace option + +v19 + +tpws : added hostlist option + +v20 + +added ip2net. ip2net groups ips from iplist into subnets and reduces ipset size twice + +v21 + +added mdig. get_reestr.sh is *real* again + +v22 + +total review of init script logic +dropped support of older debian 7 and ubuntu 12/14 systems +install_bin.sh : auto binaries preparation +docs: readme review. some new topics added, others deleted +docs: VPN setup with policy based routing using wireguard +docs: wireguard modding guide + +v23 + +major init system rewrite +openwrt : separate firewall include /etc/firewall.zapret +install_easy.sh : easy setup on openwrt, debian, ubuntu, centos, fedora, opensuse + +v24 + +separate config from init scripts +gzip support in ipset/*.sh and tpws + +v25 + +init : move to native systemd units +use links to units, init scripts and firewall includes, no more copying + +v26 + +ipv6 support +tpws : advanced bind options + +v27 + +tpws : major connection code rewrite. originally it was derived from not top quality example , with many bugs and potential problems. +next generation connection code uses nonblocking sockets. now its in EXPERIMENTAL state. + +v28 + +tpws : added socks5 support +ipset : major RKN getlist rewrite. added antifilter.network support + +v29 + +nfqws : DPI desync attack +ip exclude system + +v30 + +nfqws : DPI desync attack modes : fake,rst + +v31 + +nfqws : DPI desync attack modes : disorder,disorder2,split,split2. +nfqws : DPI desync fooling mode : badseq. multiple modes supported + +v32 + +tpws : multiple binds +init scripts : run only one instance of tpws in any case + +v33 + +openwrt : flow offloading support +config : MODE refactoring + +v34 + +nfqws : dpi-desync 2 mode combos +nfqws : dpi-desync without parameter no more supported. previously it meant "fake" +nfqws : custom fake http request and tls client hello + +v35 + +limited FreeBSD and OpenBSD support + +v36 + +full FreeBSD and OpenBSD support + +v37 + +limited MacOS support + +v38 + +MacOS easy install diff --git a/docs/compile/build_howto_openwrt.txt b/docs/compile/build_howto_openwrt.txt new file mode 100644 index 0000000..46a65d8 --- /dev/null +++ b/docs/compile/build_howto_openwrt.txt @@ -0,0 +1,42 @@ +How to compile native programs for use in openwrt +------------------------------------------------- + +1) + + cd ~ + + + git clone git://git.openwrt.org/15.05/openwrt.git + + git clone git://git.openwrt.org/14.07/openwrt.git + + git clone git://git.openwrt.org/openwrt.git + + cd openwrt + +2) ./scripts/feeds update -a + ./scripts/feeds install -a + +3) #add zapret packages to build root + #copy package descriptions + copy compile/openwrt/* to ~/openwrt + #copy source code of tpws + copy tpws to ~/openwrt/package/zapret/tpws + #copy source code of nfq + copy nfq to ~/openwrt/package/zapret/nfq + #copy source code of ip2net + copy ip2net to ~/openwrt/package/zapret/ip2net + +4) make menuconfig + #select your target architecture + #select packages Network/Zapret/* as "M" + +5) make toolchain/compile + +6) make package/tpws/compile + make package/nfqws/compile + make package/ip2net/compile + make package/mdig/compile + +7) find bin -name tpws*.ipk + #take your tpws*.ipk , nfqws*.ipk , ip2net*.ipk, mdig*.ipk from there diff --git a/docs/compile/openwrt/package/zapret/ip2net/Makefile b/docs/compile/openwrt/package/zapret/ip2net/Makefile new file mode 100644 index 0000000..4564675 --- /dev/null +++ b/docs/compile/openwrt/package/zapret/ip2net/Makefile @@ -0,0 +1,32 @@ +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=ip2net +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/ip2net + SECTION:=net + CATEGORY:=Network + TITLE:=ip2net + SUBMENU:=Zapret +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./ip2net/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) +endef + +define Package/ip2net/install + $(INSTALL_DIR) $(1)/opt/zapret/ip2net + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip2net $(1)/opt/zapret/ip2net +endef + +$(eval $(call BuildPackage,ip2net)) + diff --git a/docs/compile/openwrt/package/zapret/ip2net/readme.txt b/docs/compile/openwrt/package/zapret/ip2net/readme.txt new file mode 100644 index 0000000..abf7acd --- /dev/null +++ b/docs/compile/openwrt/package/zapret/ip2net/readme.txt @@ -0,0 +1 @@ +Copy "ip2net" folder here ! diff --git a/docs/compile/openwrt/package/zapret/mdig/Makefile b/docs/compile/openwrt/package/zapret/mdig/Makefile new file mode 100644 index 0000000..55d55d2 --- /dev/null +++ b/docs/compile/openwrt/package/zapret/mdig/Makefile @@ -0,0 +1,32 @@ +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=mdig +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/mdig + SECTION:=net + CATEGORY:=Network + TITLE:=mdig + SUBMENU:=Zapret +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./mdig/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) +endef + +define Package/mdig/install + $(INSTALL_DIR) $(1)/opt/zapret/mdig + $(INSTALL_BIN) $(PKG_BUILD_DIR)/mdig $(1)/opt/zapret/mdig +endef + +$(eval $(call BuildPackage,mdig)) + diff --git a/docs/compile/openwrt/package/zapret/mdig/readme.txt b/docs/compile/openwrt/package/zapret/mdig/readme.txt new file mode 100644 index 0000000..14e5c14 --- /dev/null +++ b/docs/compile/openwrt/package/zapret/mdig/readme.txt @@ -0,0 +1 @@ +Copy "mdig" folder here ! diff --git a/docs/compile/openwrt/package/zapret/nfqws/Makefile b/docs/compile/openwrt/package/zapret/nfqws/Makefile new file mode 100644 index 0000000..48b562f --- /dev/null +++ b/docs/compile/openwrt/package/zapret/nfqws/Makefile @@ -0,0 +1,34 @@ +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=nfqws +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/nfqws + SECTION:=net + CATEGORY:=Network + TITLE:=nfqws + SUBMENU:=Zapret + DEPENDS:=+libnetfilter-queue +libcap +zlib +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./nfq/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) +endef + +define Package/nfqws/install + $(INSTALL_DIR) $(1)/opt/zapret/nfq + $(INSTALL_BIN) $(PKG_BUILD_DIR)/nfqws $(1)/opt/zapret/nfq +endef + +$(eval $(call BuildPackage,nfqws)) + + diff --git a/docs/compile/openwrt/package/zapret/nfqws/readme.txt b/docs/compile/openwrt/package/zapret/nfqws/readme.txt new file mode 100644 index 0000000..daf8b84 --- /dev/null +++ b/docs/compile/openwrt/package/zapret/nfqws/readme.txt @@ -0,0 +1 @@ +Copy "nfq" folder here ! diff --git a/docs/compile/openwrt/package/zapret/tpws/Makefile b/docs/compile/openwrt/package/zapret/tpws/Makefile new file mode 100644 index 0000000..3f8dfc7 --- /dev/null +++ b/docs/compile/openwrt/package/zapret/tpws/Makefile @@ -0,0 +1,33 @@ +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=tpws +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/tpws + SECTION:=net + CATEGORY:=Network + TITLE:=tpws + SUBMENU:=Zapret + DEPENDS:=+zlib +libcap +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./tpws/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) +endef + +define Package/tpws/install + $(INSTALL_DIR) $(1)/opt/zapret/tpws + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tpws $(1)/opt/zapret/tpws +endef + +$(eval $(call BuildPackage,tpws)) + diff --git a/docs/compile/openwrt/package/zapret/tpws/readme.txt b/docs/compile/openwrt/package/zapret/tpws/readme.txt new file mode 100644 index 0000000..18fa3ed --- /dev/null +++ b/docs/compile/openwrt/package/zapret/tpws/readme.txt @@ -0,0 +1 @@ +Copy "tpws" folder here ! diff --git a/docs/https.txt b/docs/https.txt new file mode 100644 index 0000000..53a280d --- /dev/null +++ b/docs/https.txt @@ -0,0 +1,159 @@ +Расскажу как я решал вопрос с блокировкой https на роутере. +На тех провайдерах, что мне доступны, все, кроме одного либо банили https по IP (вообще нет конекта), либо захватывали TLS сессию и она намертво зависала - пакеты больше не приходили. На домру удалось выяснить, что DPI цепляется к SNI (Server Name Indication) в TLS, но сплит TLS запроса не помог. Я пришел к выводу, что https самым разумным будет прозрачно заворачивать в socks. +Tor поддерживает "из коробки" режим transparent proxy. Это можно использовать в теории, но практически - только на роутерах с 128 мб памяти и выше. Таких роутеров не так много. В основном объем памяти 32 или 64 мб. И тор еще и тормозной. +Другой вариант напрашивается, если у вас есть доступ к какой-нибудь unix системе с SSH, где сайты не блокируются. Например, у вас есть VPS вне России. Именно так и поступил. +Понятийно требуются следующие шаги : +1) Выделять IP, на которые надо проксировать трафик. У нас уже имеется ipset "zapret", технология создания которого отработана. +2) Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks. +3) Установить transparent соксификатор. Redsocks прекрасно подошел на эту роль. +4) Завернуть через iptables трафик с порта назначения 443 и на ip адреса из ipset 'zapret' на соксификатор +Буду рассматривать систему на базе openwrt, где уже установлена система обхода dpi "zapret". +По крайней мере нужно иметь заполненный ipset 'zapret', устанавливать tpws или nfqws не обязательно. +Более того, если они на вашей системе не срабатывают, то можно соксифицировать не только https, но и http. + +* Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks + +Т.к. дефолтный dropbear клиент не поддерживает создание socks, то для начала придется заменить dropbear ssh client на openssh : пакеты openssh-client и openssh-client-utils. +Устанавливать их нужно с опцией opkg --force-overwrite, поскольку они перепишут ssh клиент от dropbear. +После установки пакетов расслабим неоправданно жестокие права : chmod 755 /etc/ssh. +Следует создать пользователя, под которым будем крутить ssh client. Допустим, это будет 'proxy'. +Сначала установить пакет shadow-useradd. +------------------ +useradd -d /home/proxy proxy +mkdir -p /home/proxy +chown proxy:proxy /home/proxy +------------------ +Openssh ловит разные глюки, если у него нет доступа к /dev/tty. +Добавим в /etc/rc.local строчку : "chmod 666 /dev/tty" +Сгенерируем для него ключ RSA для доступа к ssh серверу. +------------------ +su proxy +cd +mkdir -m 700 .ssh +cd .ssh +ssh-keygen +ls +exit +------------------ +Должны получиться файлы id_rsa и id_rsa.pub. +Строчку из id_rsa.pub следует добавить на ssh сервер в файл $HOME/.ssh/authorized_keys. +Более подробно о доступе к ssh через авторизацию по ключам : https://beget.com/ru/articles/ssh_by_key +Предположим, ваш ssh сервер - vps.mydomain.com, пользователь называется 'proxy'. +Проверить подключение можно так : ssh -N -D 1098 -l proxy vps.mydomain.com. +Сделайте это под пользователем "proxy", поскольку при первом подключении ssh спросит о правильности hostkey. +Соединение может отвалиться в любой момент, поэтому нужно зациклить запуск ssh. +Для этого лучший вариант - использовать procd - упрощенная замена systemd на openwrt версий BB и выше. +--- /etc/init.d/socks_vps --- +#!/bin/sh /etc/rc.common +START=50 +STOP=50 +USE_PROCD=1 +USERNAME=proxy +COMMAND="ssh -N -D 1098 -l proxy vps.mydomain.com" +start_service() { + procd_open_instance + procd_set_param user $USERNAME + procd_set_param respawn 10 10 0 + procd_set_param command $COMMAND + procd_close_instance +} +----------------------------- +Этому файлу нужно дать права : chmod +x /etc/init.d/socks_vps +Запуск : /etc/init.d/socks_vps start +Останов : /etc/init.d/socks_vps stop +Включить автозагрузку : /etc/init.d/socks_vps enable +Проверка : curl -4 --socks5 127.0.0.1:1098 https://rutracker.org + +* Организовать прозрачную соксификацию + +Установить пакет redsocks. +Конфиг : +-- /etc/redsocks.conf : --- +base { + log_debug = off; + log_info = on; + log = "syslog:local7"; + daemon = on; + user = nobody; + group = nogroup; + redirector = iptables; +} +redsocks { + local_ip = 127.0.0.1; + local_port = 1099; + ip = 127.0.0.1; + port = 1098; + type = socks5; +} +--------------------------- +После чего перезапускаем : /etc/init.d/redsocks restart +Смотрим появился ли листенер : netstat -tnlp | grep 1099 +Автостарт redsocks при таком конфиге не работает, потому что на момент запуска сеть не инициализирована, и у нас даже нет 127.0.0.1. +Вместо штатного автостарта будем вешаться на события поднятия интерфейса. Разберем это позже. +Пока что отключим автостарт : /etc/init.d/redsocks disable + +* Завертывание соединений через iptables + +Будем завертывать любые tcp соединения на ip из ipset "ipban" и https на ip из ipset "zapret". + +--- /etc/firewall.user ----- +SOXIFIER_PORT=1099 + +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan_all wan_iface +for ext_iface in $wan_iface; do + network_get_device ext_device $ext_iface + ipt OUTPUT -t nat -o $ext_device -p tcp --dport 443 -m set --match-set zapret dst -j REDIRECT --to-port $SOXIFIER_PORT + ipt OUTPUT -t nat -o $ext_device -p tcp -m set --match-set ipban dst -j REDIRECT --to-port $SOXIFIER_PORT +done + +network_get_device DEVICE lan +sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 +ipt prerouting_lan_rule -t nat -p tcp --dport 443 -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$SOXIFIER_PORT +ipt prerouting_lan_rule -t nat -p tcp -m set --match-set ipban dst -j DNAT --to 127.0.0.1:$SOXIFIER_PORT +---------------------------- + +Внести параметр "reload" в указанное место : +--- /etc/config/firewall --- +config include + option path '/etc/firewall.user' + option reload '1' +---------------------------- + +Перезапуск : /etc/init.d/firewall restart +Все, теперь можно проверять : +/etc/init.d/redsocks stop +curl -4 https://rutracker.org +# должно обломаться с надписью "Connection refused". если не обламывается - значит ip адрес rutracker.org не в ipset, +# либо не сработали правила фаервола. например, из-за не установленных модулей ipt +/etc/init.d/redsocks start +curl -4 https://rutracker.org +# должно выдать страницу + +* Автозапуск redsocks + +Я сделал для себя небольшой скриптик, вешающийся на события поднятия и опускания интерфейсов. + +--- /etc/hotplug.d/iface/99-exec-on-updown --- +#!/bin/sh +if [ "$ACTION" = ifup ]; then +cmd=$(uci get network.$INTERFACE.exec_on_up) +[ -n "$cmd" ] && $cmd +fi +if [ "$ACTION" = ifdown ]; then +cmd=$(uci get network.$INTERFACE.exec_on_down) +[ -n "$cmd" ] && $cmd +fi +---------------------------------------------- + +Теперь можно в описания интерфейсов внести в соответствующий раздел : +--- /etc/config/nework --- +config interface 'wan' + ........ + option exec_on_up '/etc/init.d/redsocks start' +-------------------------- +reboot. Заходим снова, смотрим, что есть redsocks, есть ssh, опять проверяем curl -4 https://rutracker.org. +Пробуем зайти на https://rutracker.org с компа внутри локалки. diff --git a/docs/iptables.txt b/docs/iptables.txt new file mode 100644 index 0000000..51b806c --- /dev/null +++ b/docs/iptables.txt @@ -0,0 +1,62 @@ +For window size changing : + +iptables -t mangle -I PREROUTING -p tcp --sport 80 --tcp-flags SYN,ACK SYN,ACK -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I PREROUTING -p tcp --sport 80 --tcp-flags SYN,ACK SYN,ACK -m set --match-set zapret src -j NFQUEUE --queue-num 200 --queue-bypass + +For outgoing data manipulation ("Host:" case changing) : + +iptables -t mangle -I POSTROUTING -p tcp --dport 80 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -p tcp --dport 80 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -p tcp --dport 80 -m set --match-set zapret dst -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:5 -j NFQUEUE --queue-num 200 --queue-bypass + +For dpi desync attack : + +iptables -t mangle -I POSTROUTING -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + + +For TPROXY : + +sysctl -w net.ipv4.ip_forward=1 +iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE + +ip -f inet rule add fwmark 1 lookup 100 +ip -f inet route add local default dev lo table 100 +# prevent loop +iptables -t filter -I INPUT -p tcp --dport 988 -j REJECT +iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j MARK --set-mark 1 +iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 988 + +iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -m set --match-set zapret dst -j MARK --set-mark 1 +iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -m mark --mark 0x1/0x1 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 988 + +For DNAT : + +# run tpws as user "tpws". its required to avoid loops. +sysctl -w net.ipv4.conf.eth1.route_localnet=1 +iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.127:988 +iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.127:988 + + +Reset all iptable rules : + +iptables -F +iptables -X +iptables -t nat -F +iptables -t nat -X +iptables -t mangle -F +iptables -t mangle -X +iptables -t raw -F +iptables -t raw -X + +Reset iptable policies : + +iptables -P INPUT ACCEPT +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT +iptables -t mangle -P POSTROUTING ACCEPT +iptables -t mangle -P PREROUTING ACCEPT +iptables -t mangle -P INPUT ACCEPT +iptables -t mangle -P FORWARD ACCEPT +iptables -t mangle -P OUTPUT ACCEPT +iptables -t raw -P PREROUTING ACCEPT +iptables -t raw -P OUTPUT ACCEPT diff --git a/docs/readme.eng.txt b/docs/readme.eng.txt new file mode 100644 index 0000000..ef310b0 --- /dev/null +++ b/docs/readme.eng.txt @@ -0,0 +1,643 @@ +What is it for +-------------- + +Bypass the blocking of http/https web sites on DPI without the use of third-party servers. + +The project is mainly aimed at the Russian audience to fight russian regulator named "Roskomnadzor". +Some features of the project are russian reality specific (such as getting list of sites +blocked by Roskomnadzor), but most others are common. + +(EXPERIMENTAL) FreeBSD and OpenBSD are also supported. +(EXPERIMENTAL, PARTIAL) MacOS limited support. +see docs/bsd.eng.txt + +How it works +------------ + +In the simplest case you are dealing with passive DPI. Passive DPI can read passthrough traffic, +inject its own packets, but cannot drop packets. +If the request is prohibited the passive DPI will inject its own RST packet and optionally http redirect packet. +If fake packets from DPI are only sent to client, you can use iptables commands to drop them if you can write +correct filter rules. This requires manual in-deep traffic analysis and tuning for specific ISP. +This is how we bypass the consequences of a ban trigger. + +If the passive DPI sends an RST packet also to the server, there is nothing you can do about it. +Your task is to prevent ban trigger from firing up. Iptables alone will not work. +This project is aimed at preventing the ban rather than eliminating its consequences. + +To do that send what DPI does not expect and what breaks its algorithm of recognizing requests and blocking them. + +Some DPIs cannot recognize the http request if it is divided into TCP segments. +For example, a request of the form "GET / HTTP / 1.1 \ r \ nHost: kinozal.tv ......" +we send in 2 parts: first go "GET", then "/ HTTP / 1.1 \ r \ nHost: kinozal.tv .....". +Other DPIs stumble when the "Host:" header is written in another case: for example, "host:". +Sometimes work adding extra space after the method: "GET /" => "GET /" +or adding a dot at the end of the host name: "Host: kinozal.tv." + +There is also more advanced magic for bypassing DPI at the packet level. + + +How to put this into practice in the linux system +------------------------------------------------- + +In short, the options can be classified according to the following scheme: + +1) Passive DPI not sending RST to the server. ISP tuned iptables commands can help. +This option is out of the scope of the project. If you do not allow ban trigger to fire, then you won’t have to +deal with its consequences. +2) Modification of the TCP connection at the stream level. Implemented through a proxy or transparent proxy. +3) Modification of TCP connection at the packet level. Implemented through the NFQUEUE handler and raw sockets. + +For options 2 and 3, tpws and nfqws programs are implemented, respectively. +You need to run them with the necessary parameters and redirect certain traffic with iptables. + +To redirect a TCP connection to a transparent proxy, the following commands are used: + +forwarded fraffic : +iptables -t nat -I PREROUTING -i -p tcp --dport 80 -j DNAT --to 127.0.0.127:988 +outgoing traffic : +iptables -t nat -I OUTPUT -o -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.127:988 + +DNAT on localhost works in the OUTPUT chain, but does not work in the PREROUTING chain without enabling the route_localnet parameter: + +sysctl -w net.ipv4.conf..route_localnet=1 + +You can use "-j REDIRECT --to-port 988" instead of DNAT, but in this case the transparent proxy process +should listen on the ip address of the incoming interface or on all addresses. Listen all - not good +in terms of security. Listening one (local) is possible, but automated scripts will have to recognize it, +then dynamically enter it into the command. In any case, additional efforts are required. +Using route_localnet can also introduce some security risks. You make available from internal_interface everything +bound to 127.0.0.0/8. Services are usually bound to 127.0.0.1. Its possible to deny input to 127.0.0.1 from all interfaces except lo +or bind tpws to any other IP from 127.0.0.0/8 range, for example to 127.0.0.127, and allow incomings only to that IP : + +iptables -A INPUT ! -i lo -d 127.0.0.127 -j ACCEPT +iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j DROP + +Owner filter is necessary to prevent recursive redirection of connections from tpws itself. +tpws must be started under OS user "tpws". + + +NFQUEUE redirection of the outgoing traffic and forwarded traffic going towards the external interface, +can be done with the following commands: + +iptables -t mangle -I POSTROUTING -o -p tcp --dport 80 -j NFQUEUE --queue-num 200 --queue-bypass + +In order not to touch the traffic to unblocked addresses, you can take a list of blocked hosts, resolve it +into IP addresses and put them to ipset 'zapret', then add a filter to the command: + +iptables -t mangle -I POSTROUTING -o -p tcp --dport 80 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass + +Some DPIs catch only the first http request, ignoring subsequent requests in a keep-alive session. +Then we can reduce CPU load, refusing to process unnecessary packets. + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 80 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass + +Mark filter does not allow nfqws-generated packets to enter the queue again. +Its necessary to use this filter when also using "connbytes 2:4". Without it packet ordering can be changed breaking the whole idea. + + +ip6tables +--------- + +ip6tables work almost exactly the same way as ipv4, but there are a number of important nuances. +In DNAT, you should take the address --to in square brackets. For example : + + ip6tables -t nat -I OUTPUT -o -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to [::1]:988 + +The route_localnet parameter does not exist for ipv6. +DNAT to localhost (:: 1) is possible only in the OUTPUT chain. +In the PREROUTING DNAT chain, it is possible to any global address or to the link local address of the same interface +the packet came from. +NFQUEUE works without changes. + +When it will not work +---------------------- + +* If DNS server returns false responses. ISP can return false IP addresses or not return anything +when blocked domains are queried. If this is the case change DNS to public ones, such as 8.8.8.8 or 1.1.1.1. +Sometimes ISP hijacks queries to any DNS server. Dnscrypt or dns-over-tls help. +* If blocking is done by IP. +* If a connection passes through a filter capable of reconstructing a TCP connection, and which +follows all standards. For example, we are routed to squid. Connection goes through the full OS tcpip stack, +fragmentation disappears immediately as a means of circumvention. Squid is correct, it will find everything +as it should, it is useless to deceive him. +BUT. Only small providers can afford using squid, since it is very resource intensive. +Large companies usually use DPI, which is designed for much greater bandwidth. + +nfqws +----- + +This program is a packet modifier and a NFQUEUE queue handler. +For BSD systems there is dvtws. Its built from the same source and has almost the same parameters (see bsd.eng.txt). +nfqws takes the following parameters: + + --debug=0|1 ; 1=print debug info + --qnum= + --wsize= ; set window size. 0 = do not modify (obsolete !) + --hostcase ; change Host: => host: + --hostspell=HoSt ; exact spelling of the "Host" header. must be 4 chars. default is "host" + --hostnospace ; remove space after Host: and add it to User-Agent: to preserve packet size + --domcase ; mix domain case after Host: like this : TeSt.cOm + --daemon ; daemonize + --pidfile= ; write pid to file + --user= ; drop root privs + --uid=uid[:gid] ; drop root privs + --dpi-desync[=][,] ; try to desync dpi state. modes : fake rst rstack disorder disorder2 split split2 + --dpi-desync-fwmark= ; override fwmark for desync packet. default = 0x40000000 + --dpi-desync-ttl= ; set ttl for desync packet + --dpi-desync-fooling=none|md5sig|ts|badseq|badsum ; can take multiple comma separated values + --dpi-desync-retrans=0|1 ; (fake,rst,rstack only) 0(default)=reinject original data packet after fake 1=drop original data packet to force its retransmission + --dpi-desync-repeats= ; send every desync packet N times + --dpi-desync-skip-nosni=0|1 ; 1(default)=do not apply desync to requests without hostname in the SNI + --dpi-desync-split-pos=<1..1500> ; (for split* and disorder* only) split TCP packet at specified position + --dpi-desync-any-protocol=0|1 ; 0(default)=desync only http and tls 1=desync any nonempty data packet + --dpi-desync-fake-http= ; file containing fake http request. replacement for built-in + --dpi-desync-fake-tls= ; file containing fake TLS ClientHello (for https). replacement for built-in + --hostlist= ; apply fooling only to the listed hosts (one host per line, subdomains auto apply) + +The manipulation parameters can be combined in any way. + +WARNING. --wsize parameter is now not used anymore in scripts. TCP split can be achieved using DPI desync attack. + +DPI DESYNC ATTACK +After completion of the tcp 3-way handshake, the first data packet from the client goes. +It usually has "GET / ..." or TLS ClientHello. We drop this packet, replacing with something else. +It can be a fake version with another harmless but valid http or https request (fake), tcp reset packet (rst,rstack), +split into 2 segments original packet with fake segment in the middle (disorder). +In articles these attack have names "TCB desynchronization" and "TCB teardown". +Fake packet must reach DPI, but do not reach the destination server. +The following means are available: set a low TTL, send a packet with bad checksum, +add tcp option "MD5 signature". All of them have their own disadvantages : + +* md5sig does not work on all servers +* badsum doesn't work if your device is behind NAT which does not pass invalid packets. + Linux NAT by default does not pass them without special setting "sysctl -w net.netfilter.nf_conntrack_checksum=0" + Openwrt sets it from the box, other routers in most cases dont, and its not always possible to change it. + If nfqws is on the router, its not neccessary to switch of "net.netfilter.nf_conntrack_checksum". + Fake packet doesn't go through FORWARD chain, it goes through OUTPUT. But if your router is behind another NAT, for example ISP NAT, + and that NAT does not pass invalid packets, you cant do anything. +* badseq packets will be dropped by server, but DPI also can ignore them +* TTL looks like the best option, but it requires special tuning for earch ISP. If DPI is further than local ISP websites + you can cut access to them. Manual IP exclude list is required. Its possible to use md5sig with ttl. + This way you cant hurt anything, but good chances it will help to open local ISP websites. + If automatic solution cannot be found then use zapret-hosts-user-exclude.txt. + +--dpi-desync-fooling takes multiple comma separated values. + +For fake,rst,rstack modes original packet can be sent after the fake one or just dropped. +If its dropped OS will perform first retransmission after 0.2 sec, then the delay increases exponentially. +Delay can help to make sure fake and original packets are properly ordered and processed on DPI. +When dpi-desync-retrans=1 its mandatory to use connbytes in iptables rule. Otherwise loop happens. + +Disorder mode splits original packet and sends packets in the following order : +1. 2nd segment +2. fake 1st segment, data filled with zeroes +3. 1st segment +4. fake 1st segment, data filled with zeroes (2nd copy) +Original packet is always dropped. --dpi-desync-split-pos sets split position (default 3). +If position is higher than packet length, pos=1 is used. +This sequence is designed to make reconstruction of critical message as difficult as possible. +Fake segments may not be required to bypass some DPIs, but can potentially help if more sophisticated reconstruction +algorithms are used. +Mode 'disorder2' disables sending of fake segments. + +Split mode is very similar to disorder but without segment reordering : +1. fake 1st segment, data filled with zeroes +2. 1st segment +3. fake 1st segment, data filled with zeroes (2nd copy) +4. 2nd segment +Mode 'split2' disables sending of fake segments. It can be used as a faster alternative to --wsize. + +In disorder2 and split2 modes no fake packets are sent, so ttl and fooling options are not required. + +There are DPIs that analyze responses from the server, particularly the certificate from the ServerHello +that contain domain name(s). The ClientHello delivery confirmation is an ACK packet from the server +with ACK sequence number corresponding to the length of the ClientHello+1. +In the disorder variant, a selective acknowledgement (SACK) usually arrives first, then a full ACK. +If, instead of ACK or SACK, there is an RST packet with minimal delay, DPI cuts you off at the request stage. +If the RST is after a full ACK after a delay of about ping to the server, then probably DPI acts +on the server response. The DPI may be satisfied with good ClientHello and stop monitoring the TCP session +without checking ServerHello. Then you were lucky. 'fake' option could work. +If it does not stop monitoring and persistently checks the ServerHello, also performing reconstruction of TCP segments, +doing something about it is hardly possible without the help of the server. +The best solution is to enable TLS 1.3 support on the server. TLS 1.3 sends the server certificate in encrypted form. +This is recommendation to all admins of blocked sites. Enable TLS 1.3. You will give more opportunities to overcome DPI. + +Hosts are extracted from plain http request Host: header and SNI of ClientHelllo TLS message. +Subdomains are applied automatically. gzip lists are supported. + +iptables for performing the attack on the first packet : + +iptables -t mangle -I POSTROUTING -o -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + +This is good if DPI does not track all requests in http keep-alive session. +If it does, then pass all outgoing packets for http and only first data packet for https : + +iptables -t mangle -I POSTROUTING -o -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -o -p tcp --dport 80 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + +mark is needed to keep away generated packets from NFQUEUE. nfqws sets fwmark when it sends generated packets. +nfqws can internally filter marked packets. but when connbytes filter is used without mark filter +packet ordering can be changed breaking the whole idea of desync attack. + +DESYNC COMBOS +dpi-desync parameter can take 2 comma separated arguments. +1st phase mode can be fake,rst,rstack, 2nd phase mode - disorder,disorder2,split,split2. +Can be useful for ISPs with more than one DPI. + +VIRTUAL MACHINES +Most of nfqws packet magic does not work from VMs powered by virtualbox and vmware when network is NATed. +Hypervisor forcibly changes ttl and does not forward fake packets. +Set up bridge networking. + + +tpws +----- + +tpws is transparent proxy. + + --debug=0|1|2 ; 0(default)=silent 1=verbose 2=debug + --bind-addr=|; for v6 link locals append %interface_name : fe80::1%br-lan + --bind-iface4= ; bind to the first ipv4 addr of interface + --bind-iface6= ; bind to the first ipv6 addr of interface + --bind-linklocal=prefer|force ; prefer or force ipv6 link local + --bind-wait-ifup= ; wait for interface to appear and up + --bind-wait-ip= ; after ifup wait for ip address to appear up to N seconds + --bind-wait-ip-linklocal= ; accept only link locals first N seconds then any + --bind-wait-only ; wait for bind conditions satisfaction then exit. return code 0 if success. + --port= ; port number to listen on + --socks ; implement socks4/5 proxy instead of transparent proxy + --local-rcvbuf= ; SO_RCVBUF for local legs + --local-sndbuf= ; SO_SNDBUF for local legs + --remote-rcvbuf= ; SO_RCVBUF for remote legs + --remote-sndbuf= ; SO_SNDBUF for remote legs + --skip-nodelay ; do not set TCP_NODELAY for outgoing connections. incompatible with split. + --no-resolve ; disable socks5 remote dns + --maxconn= ; max number of local legs + --maxfiles= ; max file descriptors (setrlimit). min requirement is (X*connections+16), where X=6 in tcp proxy mode, X=4 in tampering mode. + ; its worth to make a reserve with 1.5 multiplier. by default maxfiles is (X*connections)*1.5+16 + --max-orphan-time= ; if local leg sends something and closes and remote leg is still connecting then cancel connection attempt after N seconds + + --hostlist= ; only act on host in the list (one host per line, subdomains auto apply, gzip lists supported) + --split-http-req=method|host ; split http request at specified logical position. + --split-pos= ; split at specified pos. split-http-req takes precedence over split-pos for http reqs. + --split-any-protocol ; split not only http and https + --hostcase ; change Host: => host: + --hostspell ; exact spelling of "Host" header. must be 4 chars. default is "host" + --hostdot ; add "." after Host: name + --hosttab ; add tab after Host: name + --hostnospace ; remove space after Host: + --hostpad= ; add dummy padding headers before Host: + --domcase ; mix domain case after Host: like this : TeSt.cOm + --methodspace ; add extra space after method + --methodeol ; add end-of-line before method + --unixeol ; replace 0D0A to 0A + --daemon ; daemonize + --pidfile= ; write pid to file + --user= ; drop root privs + --uid=uid[:gid] ; drop root privs + +The manipulation parameters can be combined in any way. + +split-http-req takes precedence over split-pos for http reqs. +split-pos works by default only on http and TLS ClientHello. use --split-any-protocol to act on any packet + +tpws can bind to multiple interfaces and IP addresses (up to 32). +Port number is always the same. +Parameters --bind-iface* и --bind-addr create new bind. +Other parameters --bind-* are related to the last bind. +To bind to all ipv4 specify --bind-addr "0.0.0.0", all ipv6 - "::". --bind-addr="" - mean bind to all ipv4 and ipv6. +If no binds are specified default bind to all ipv4 and ipv6 addresses is created. +The --bind-wait* parameters can help in situations where you need to get IP from the interface, but it is not there yet, it is not raised +or not configured. +In different systems, ifup events are caught in different ways and do not guarantee that the interface has already received an IP address of a certain type. +In the general case, there is no single mechanism to hang oneself on an event of the type "link local address appeared on the X interface." + +in socks proxy mode no additional system privileges are required +connection to local IPs of the system where tpws runs are prohibited +tpws supports remote dns resolving (curl : --socks5-hostname firefox : socks_remote_dns=true) , but does it in blocking mode. +tpws uses async sockets for all activity but resolving can break this model. +if tpws serves many clients it can cause trouble. also DoS attack is possible against tpws. +if remote resolving causes trouble configure clients to use local name resolution and use +--no-resolve option on tpws side. + +Ways to get a list of blocked IP +-------------------------------- + +1) Enter the blocked domains to ipset/zapret-hosts-user.txt and run ipset/get_user.sh +At the output, you get ipset/zapret-ip-user.txt with IP addresses. + +2) ipset/get_reestr_*.sh. Russian specific + +3) ipset/get_antifilter_*.sh. Russian specific + +4) ipset/get_config.sh. This script calls what is written into the GETLIST variable from the config file. +If the variable is not defined, then only lists for ipsets nozapret/nozapret6 are resolved. + +So, if you're not russian, the only way for you is to manually add blocked domains. +Or write your own ipset/get_iran_blocklist.sh , if you know where to download this one. + +On routers, it is not recommended to call these scripts more than once in 2 days to minimize flash memory writes. + +ipset/create_ipset.sh executes forced ipset update. +With "no-update" parameter create_ipset.sh creates ipset but populate it only if it was actually created. +It's useful when multiple subsequent calls are possible to avoid wasting of cpu time redoing the same job. +Ipset loading is resource consuming. Its a good idea to call create_ipset without "no-update" parameter +only once a several days. Use it with "no-update" option in other cases. + +ipset scripts automatically call ip2net utility. +ip2net helps to reduce ip list size by combining IPs to subnets. Also it cuts invalid IPs from the list. +Stored lists are already processed by ip2net. They are error free and ready for loading. + +create_ipset.sh supports loading ip lists from gzip files. First it looks for the filename with the ".gz" extension, +such as "zapret-ip.txt.gz", if not found it falls back to the original name "zapret-ip.txt". +So your own get_iran_blockslist.sh can use "zz" function to produce gz. Study how other russian get_XXX.sh work. +Gzipping helps saving a lot of precious flash space on embedded systems. +User lists are not gzipped because they are not expected to be very large. + +You can add a list of domains to ipset/zapret-hosts-user-ipban.txt. Their ip addresses will be placed +in a separate ipset "ipban". It can be used to route connections to transparent proxy "redsocks" or VPN. + +IPV6: if ipv6 is enabled, then additional txt's are created with the same name, but with a "6" at the end before the extension. +zapret-ip.txt => zapret-ip6.txt +The ipsets zapret6 and ipban6 are created. + +IP EXCLUSION SYSTEM. All scripts resolve zapret-hosts-user-exclude.txt file, creating zapret-ip-exclude.txt and zapret-ip-exclude6.txt. +They are the source for ipsets nozapret/nozapret6. All rules created by init scripts are created with these ipsets in mind. +The IPs placed in them are not involved in the process. +zapret-hosts-user-exclude.txt can contain domains, ipv4 and ipv6 addresses or subnets. + +FreeBSD. ipset/*.sh scripts also work in FreeBSD. Instead of ipset they create ipfw lookup tables with the same names as in Linux. +ipfw tables can store both ipv4 and ipv6 addresses and subnets. There's no 4 and 6 separation. + +LISTS_RELOAD config parameter defines a custom lists reloading command. +Its useful on BSD systems with PF. +LISTS_RELOAD=- disables reloading ip list backend. + + +Domain name filtering +--------------------- + +An alternative to ipset is to use tpws or nfqws with a list of domains. Only one list is supported. + +Enter the blocked domains to ipset/zapret-hosts-users.txt. Remove ipset/zapret-hosts.txt.gz. +Then the init script will run tpws with the zapret-hosts-users.txt list. + +Other option ( Roskomnadzor list - get_hostlist.sh ) is russian specific. +You can write your own replacement for get_hostlist.sh. + +When filtering by domain name, daemons should run without filtering by ipset. +When using large regulator lists estimate the amount of RAM on the router ! + + +Choosing parameters +------------------- + +The file /opt/zapret/config is used by various components of the system and contains basic settings. +It needs to be viewed and edited if necessary. + + +Main mode : +tpws - use tpws +tpws - use nfqws +filter - only fill ipset or load hostlist +custom - use custom script for running daemons and establishing firewall rules + +MODE=tpws + +Enable http fooling : + +MODE_HTTP=1 + +Apply fooling to keep alive http sessions. Only applicable to nfqws. Tpws always fool keepalives. +Not enabling this can save CPU time. + +MODE_HTTP_KEEPALIVE=0 + +Enable https fooling : + +MODE_HTTPS=1 + +Host filtering mode : +none - apply fooling to all hosts +ipset - limit fooling to hosts from ipset zapret/zapret6 +hostlist - limit fooling to hosts from hostlist + +MODE_FILTER=none + +Its possible to change manipulation options used by tpws : + +TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3" + +nfqws options for DPI desync attack: + +DESYNC_MARK=0x40000000 +NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum --dpi-desync-fwmark=$DESYNC_MARK" + +flow offloading control (openwrt only) +donttouch : disable system flow offloading setting if selected mode is incompatible with it, dont touch it otherwise and dont configure selective flow offloading +none : always disable system flow offloading setting and dont configure selective flow offloading +software : always disable system flow offloading setting and configure selective software flow offloading +hardware : always disable system flow offloading setting and configure selective hardware flow offloading + +FLOWOFFLOAD=donttouch + +The GETLIST parameter tells the install_easy.sh installer which script to call +to update the list of blocked ip or hosts. +Its called via get_config.sh from scheduled tasks (crontab or systemd timer). +Put here the name of the script that you will use to update the lists. +If not, then the parameter should be commented out. + +You can individually disable ipv4 or ipv6. If the parameter is commented out or not equal to "1", +use of the protocol is permitted. +#DISABLE_IPV4=1 +DISABLE_IPV6=1 + +The number of threads for mdig multithreaded DNS resolver (1..100). +The more of them, the faster, but will your DNS server be offended by hammering ? +MDIG_THREADS=30 + +temp directory. Used by ipset/*.sh scripts for large lists processing. +/tmp by default. Can be reassigned if /tmp is tmpfs and RAM is low. +TMPDIR=/opt/zapret/tmp + +ipset options : + +IPSET_OPT="hashsize 262144 maxelem 2097152" + +Kernel automatically increases hashsize if ipset is too large for the current hashsize. +This procedure requires internal reallocation and may require additional memory. +On low RAM systems it can cause errors. +Do not use too high hashsize. This way you waste your RAM. And dont use too low hashsize to avoid reallocs. + +ip2net options. separate for ipv4 and ipv6. +IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4" +IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5" + +Enable gzip compression for large lists. Used by ipset/*.sh scripts. +GZIP_LISTS=1 + +Command to reload ip/host lists after update. +Comment or leave empty for auto backend selection : ipset or ipfw if present. +On BSD systems with PF no auto reloading happens. You must provide your own command. +Newer FreeBSD versions support table only reloading : pfctl -Tl -f /etc/pf.conf +Set to "-" to disable reload. +LISTS_RELOAD="pfctl -f /etc/pf.conf" + +The following settings are not relevant for openwrt : + +If your system works as a router, then you need to enter the names of the internal and external interfaces: +IFACE_LAN = eth0 +IFACE_WAN = eth1 +IMPORTANT: configuring routing, masquerade, etc. not a zapret task. +Only modes that intercept transit traffic are enabled. + +The INIT_APPLY_FW=1 parameter enables the init script to independently apply iptables rules. +With other values or if the parameter is commented out, the rules will not be applied. +This is useful if you have a firewall management system, in the settings of which you should tie the rules. + + +Screwing to the firewall control system or your launch system +------------------------------------------------------------- + +If you use some kind of firewall management system, then it may conflict with an existing startup script. +When re-applying the rules, it could break the iptables settings from the zapret. +In this case, the rules for iptables should be screwed to your firewall separately from running tpws or nfqws. + +The following calls allow you to apply or remove iptables rules separately: + + /opt/zapret/init.d/sysv/zapret start-fw + /opt/zapret/init.d/sysv/zapret stop-fw + +And you can start or stop the demons separately from the firewall: + + /opt/zapret/init.d/sysv/zapret start-daemons + /opt/zapret/init.d/sysv/zapret stop-daemons + + +Simple install to desktop linux system +-------------------------------------- + +Simple install works on most modern linux distributions with systemd, OpenWRT and MacOS. +Run install_easy.sh and answer its questions. + +Simple install to openwrt +------------------------- + +install_easy.sh works on openwrt but there're additional challenges. +They are mainly about possibly low flash free space. +Simple install will not work if it has no space to install itself and required packages from the repo. + +Another challenge would be to bring zapret to the router. You can download zip from github and use it. +Do not repack zip contents in Windows, because this way you break chmod and links. +Install openssh-sftp-server and unzip to openwrt and use sftp to transfer the file. + +The best way to start is to put zapret dir to /tmp and run /tmp/zapret/install_easy.sh from there. +After installation remove /tmp/zapret to free RAM. + +The absolute minimum for openwrt is 64/8 system, 64/16 is comfortable, 128/extroot is recommended. + + +Android +------- + +Its not possible to use nfqws and tpws in transparent proxy mode without root privileges. +Without root tpws can run in --socks mode. + +I have no NFQUEUE presence statistics in stock android kernels, but its present on my MTK device. +If NFQUEUE is present nfqws works. + +There's no ipset support unless you run custom kernel. In common case task of bringing up ipset +on android is ranging from "not easy" to "almost impossible", unless you find working kernel +image for your device. + +Android does not use /etc/passwd, tpws --user won't work. There's replacement. +Use numeric uids in --uid option. +Its recommended to use gid 3003 (AID_INET), otherwise tpws will not have inet access. +Example : --uid 1:3003 +In iptables use : "! --uid-owner 1" instead of "! --uid-owner tpws". + +Write your own shell script with iptables and tpws, run it using your root manager. +Autorun scripts are here : +magisk : /data/adb/service.d +supersu : /system/su.d + +I haven't checked whether android can kill iptable rules at its own will during wifi connection/disconnection, +mobile data on/off, ... + +How to run tpws on root-less android. +You can't write to /system, /data, can't run from sd card. +Selinux prevents running executables in /data/local/tmp from apps. +Use adb and adb shell. +mkdir /data/local/tmp/zapret +adb push tpws /data/local/tmp/zapret +chmod 755 /data/local/tmp/zapret /data/local/tmp/zapret/tpws +chcon u:object_r:system_file:s0 /data/local/tmp/zapret/tpws +Now its possible to run /data/local/tmp/zapret/tpws from any app such as tasker. + + +FreeBSD, OpenBSD, MacOS +----------------------- + +see docs/bsd.eng.txt + + +Windows (WSL) +------------- + +Using WSL (Windows subsystem for Linux) it's possible to run tpws in socks mode under rather new builds of +windows 10 and windows server. +Its not required to install any linux distributions as suggested in most articles. +tpws is static binary. It doesn't need a distribution. + +Install WSL : dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all +Copy binaries/x86_64/tpws_wsl.tgz to the target system. +Run : wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz +Run tpws : wsl --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 +Configure socks as 127.0.0.1:1080 in a browser or another program. + +Cleanup : wsl --unregister tpws + +Tested in windows 10 build 19041 (20.04). + +NOTICE. There is native windows solution GoodByeDPI. It works on packet level like nfqws. + + +Other devices +------------- + +Author's goal does not include easy supporting as much devices as possibles. +Please do not ask for easy supporting firmwares. It requires a lot of work and owning lots of devices. Its counterproductive. +As a devices owner its easier for you and should not be too hard if firmware is open. +Most closed stock firmwares are not designed for custom usage and sometimes actively prevent it. +In the latter case you have to hack into it and reverse engineer. Its not easy. +Binaries are universal. They can run on almost all firmwares. +You will need : + * root shell access. true sh shell, not microtik-like console + * startup hook + * r/w partition to store binaries and startup script with executable permission (+x) + * tpws can be run almost anywhere but nfqws require kernel support for NFQUEUE. Its missing in most firmwares. + * too old 2.6 kernels are unsupported and can cause errors +If binaries crash with segfault (rare but happens on some kernels) try to unpack upx like this : upx -d tpws. +First manually debug your scenario. Run iptables + daemon and check if its what you want. +Write your own script with iptables magic and run required daemon from there. Put it to startup. +Dont ask me how to do it. Its different for all firmwares and requires studying. +Find manual or reverse engineer yourself. +Check for race conditions. Firmware can clear or modify iptables after your startup script. +If this is the case then run another script in background and add some delay there. + + +Https blocking bypass +---------------------- + +SOMETIMES (but not often) a tls handshake split trick works. +Try MODE=..._https +May be you're lucky. + +MORE OFTEN DPI desync attack work, but it may require some manual tuning. + +OTHERWISE you have to redirect traffic through a third-party host. +It is proposed to use transparent redirect through socks5 using iptables + redsocks, or iptables + iproute + vpn. +Redsocks variant is described in https.txt. +iproute + wireguard - in wireguard_iproute_openwrt.txt. +(they are russian) diff --git a/docs/readme.txt b/docs/readme.txt new file mode 100644 index 0000000..beb16da --- /dev/null +++ b/docs/readme.txt @@ -0,0 +1,1314 @@ +zapret v.38 + +English +------- + +For english version refer to docs/readme.eng.txt + +Для чего это надо +----------------- + +Автономно, без задействования сторонних серверов, обойти блокировки веб сайтов http и https на DPI. +Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под openwrt, +но так же поддерживается и большинство классических дистрибутивов linux. +В некоторых случаях возможна самостоятельная прикрутка решения к различным прошивкам. + +Так же поддерживаются в экспериментальном режиме системы FreeBSD и OpenBSD. +Есть частичная поддержка MacOS. См docs/bsd.txt + +Как это работает +---------------- + +В самом простейшем случае вы имеете дело с пассивным DPI. Пассивный DPI может читать трафик +из потока, может инжектить свои пакеты, но не может блокировать проходящие пакеты. +Если запрос "плохой", пассивный DPI инжектит пакет RST, опционально дополняя его пакетом http redirect. +Если фейк пакет инжектится только для клиента, в этом случае можно обойтись командами iptables +для дропа RST и/или редиректа на заглушку по определенным условиям, которые нужно подбирать +для каждого провайдера индивидуально. Так мы обходим последствия срабатывания триггера запрета. +Если пассивный DPI направляет пакет RST в том числе и серверу, то вы ничего с этим не сможете сделать. +Ваша задача - не допустить срабатывания триггера запрета. Одними iptables уже не обойдетесь. +Этот проект нацелен именно на предотвращение срабатывания запрета, а не ликвидацию его последствий. + +Активный DPI ставится в разрез провода и может дропать пакеты по любым критериям, +в том числе распознавать TCP потоки и блокировать любые пакеты, принадлежащие потоку. + +Как не допустить срабатывания триггера запрета ? Послать то, на что DPI не расчитывает +и что ломает ему алгоритм распознавания запросов и их блокировки. + +Некоторые DPI не могут распознать http запрос, если он разделен на TCP сегменты. +Например, запрос вида "GET / HTTP/1.1\r\nHost: kinozal.tv......" +мы посылаем 2 частями : сначала идет "GET ", затем "/ HTTP/1.1\r\nHost: kinozal.tv.....". +Другие DPI спотыкаются, когда заголовок "Host:" пишется в другом регистре : например, "host:". +Кое-где работает добавление дополнительного пробела после метода : "GET /" => "GET /" +или добавление точки в конце имени хоста : "Host: kinozal.tv." + +Существует и более продвинутая магия, направленная на преодоление DPI на пакетном уровне. + +Подробнее про DPI : + https://habr.com/ru/post/335436 + https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf + +Как это реализовать на практике в системе linux +----------------------------------------------- + +Если кратко, то варианты можно классифицировать по следующей схеме : + +1) Пассивный DPI, не отправляющий RST серверу. Помогут индивидуально настраиваемые под провайдера команды iptables. +На rutracker в разделе "обход блокировок - другие способы" по этому вопросу существует отдельная тема. +В данном проекте не рассматривается. Если вы не допустите срабатывание триггера запрета, то и не придется +бороться с его последствиями. +2) Модификация TCP соединения на уровне потока. Реализуется через proxy или transparent proxy. +3) Модификация TCP соединения на уровне пакетов. Реализуется через обработчик очереди NFQUEUE и raw сокеты. + +Для вариантов 2 и 3 реализованы программы tpws и nfqws соответственно. +Чтобы они работали, необходимо их запустить с нужными параметрами и перенаправить на них определенный трафик +средствами iptables. + + +Для перенаправления tcp соединения на transparent proxy используются команды следующего вида : + +проходящий трафик : +iptables -t nat -I PREROUTING -i <внутренний_интерфейс> -p tcp --dport 80 -j DNAT --to 127.0.0.127:988 +исходящий трафик : +iptables -t nat -I OUTPUT -o <внешний_интерфейс> -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.127:988 + +DNAT на localhost работает в цепочке OUTPUT, но не работает в цепочке PREROUTING без включения параметра route_localnet : + +sysctl -w net.ipv4.conf.<внутренний_интерфейс>.route_localnet=1 + +Можно использовать "-j REDIRECT --to-port 988" вместо DNAT , однако в этом случае процесс transparent proxy +должен слушать на ip адресе входящего интерфейса или на всех адресах. Слушать на всех - не есть хорошо +с точки зрения безопасности. Слушать на одном (локальном) можно, но в случае автоматизированного +скрипта придется его узнавать, потом динамически вписывать в команду. В любом случае требуются дополнительные усилия. +Использование route_localnet тоже имеет потенциальные проблемы с безопасностью. Вы делаете доступным все, что висит +на 127.0.0.0/8 для локальной подсети <внутренний_интерфейс>. Службы обычно привязываются к 127.0.0.1, поэтому можно +средствами iptables запретить входящие на 127.0.0.1 не с интерфейса lo, либо повесить tpws на любой другой IP из +из 127.0.0.0/8, например на 127.0.0.127, и разрешить входящие не с lo только на этот IP. + +iptables -A INPUT ! -i lo -d 127.0.0.127 -j ACCEPT +iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j DROP + +Фильтр по owner необходим для исключения рекурсивного перенаправления соединений от самого tpws. +tpws запускается под пользователем "tpws", для него задается исключающее правило. + +tpws может использоваться в режиме socks proxy. В этом случае iptables не нужны, а нужно прописать socks +в настройки программы (например, броузера), с которой будем обходить блокировки. +transparent proxy отличается от socks именно тем, что в варианте transparent настраивать клиентские программы не нужно. + + +Для перенаправления на очередь NFQUEUE исходящего и проходящего в сторону внешнего интерфейса трафика используются +команды следующего вида : + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 80 -j NFQUEUE --queue-num 200 --queue-bypass + + +Чтобы не трогать трафик на незаблокированные адреса, можно взять список заблокированных хостов, заресолвить его +в IP адреса и загнать в ipset zapret, затем добавить фильтр в команду : + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 80 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass + +DPI может ловить только первый http запрос, игнорируя последующие запросы в keep-alive сессии. +Тогда можем уменьшить нагрузку на проц, отказавшись от процессинга ненужных пакетов. + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 80 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass + +Фильтр по mark нужен для отсечения от очереди пакетов, сгенерированных внутри nfqws. +Если применяется фильтр по connbytes 2:4, то обязательно добавлять в iptables и фильтр по mark. Иначе возможно +перепутывания порядка следования пакетов, что приведет к неработоспособности метода. + + +Если ваше устройство поддерживает аппаратное ускорение (flow offloading, hardware nat, hardware acceleration), то iptables могут не работать. +При включенном offloading пакет не проходит по обычному пути netfilter. +Необходимо или его отключить, или выборочно им управлять. + +В новых ядрах (и в более старых, openwrt портировал изменение на 4.14) присутствует software flow offloading (SFO). +Пакеты, проходящие через SFO, так же проходят мимо большей части механизмов iptables. +При включенном SFO работает DNAT/REDIRECT (tpws). Эти соединения исключаются из offloading. +Однако, остальные соединения идут через SFO, потому NFQUEUE будет срабатывать только до помещения +соединения в flowtable. Практически это означает, что nfqws будет работать на window size changing, +но не будут работать опции по модификации содержимого пакетов. +Offload включается через специальный target в iptables "FLOWOFFLOAD". Не обязательно пропускать весь трафик через offload. +Можно исключить из offload соединения, которые должны попасть на tpws или nfqws. +openwrt не предусматривает выборочного управления offload. +Поэтому скрипты zapret поддерживают свою систему выборочного управления offload в openwrt. + + +Особенности применения ip6tables +-------------------------------- + +ip6tables работают почти точно так же, как и ipv4, но есть ряд важных нюансов. +В DNAT следует брать адрес --to в квадратные скобки. Например : + + ip6tables -t nat -I OUTPUT -o <внешний_интерфейс> -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to [::1]:988 + +Параметра route_localnet не существует для ipv6. +DNAT на localhost (::1) возможен только в цепочке OUTPUT. +В цепочке PREROUTING DNAT возможен на любой global address или на link local address того же интерфейса, +откуда пришел пакет. +NFQUEUE работает без изменений. + + +Когда это работать не будет +--------------------------- + +* Если подменяется DNS. С этой проблемой легко справиться. +* Если блокировка осуществляется по IP. +* Если соединение проходит через фильтр, способный реконструировать TCP соединение, и который +следует всем стандартам. Например, нас заворачивают на squid. Соединение идет через полноценный стек tcpip +операционной системы, фрагментация отпадает сразу как средство обхода. Squid правильный, он все найдет +как надо, обманывать его бесполезно. +НО. Заворачивать на squid могут позволить себе лишь небольшие провайдеры, поскольку это очень ресурсоемко. +Большие компании обычно используют DPI, который расчитан на гораздо большую пропускную способность. +Может применяться комбинированный подход, когда на DPI заворачивают только IP из "плохого" списка, +и дальше уже DPI решает пропускать или нет. Так можно снизить нагрузку на DPI в десятки, если не сотни раз, +а следовательно не покупать очень дорогие решения, обойдясь чем-то существенно более дешевым. +Мелкие провайдеры могут покупать услугу фильтрации у вышестоящих, чтобы самим не морочиться, и +они уже будут применять DPI. + + +nfqws +----- + +Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. +Для BSD систем существует адаптированный вариант - dvtws, собираемый из тех же исходников (см. bsd.txt). + + --debug=0|1 ; 1=выводить отладочные сообщения + --daemon ; демонизировать прогу + --pidfile= ; сохранить PID в файл + --user= ; менять uid процесса + --uid=uid[:gid] ; менять uid процесса + --qnum=200 ; номер очереди + --wsize=4 ; менять tcp window size на указанный размер (устарело !) + --hostcase ; менять регистр заголовка "Host:" по умолчанию на "host:". + --hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета + --hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase + --domcase ; домен после Host: сделать таким : TeSt.cOm + --dpi-desync[=][, ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000 + --dpi-desync-ttl= ; установить ttl для десинхронизирующих пакетов + --dpi-desync-fooling=none|md5sig|ts|badseq|badsum ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера + --dpi-desync-retrans=0|1 ; (только для fake,rst,rstack) 0(default)=отправлять оригинал следом за фейком 1=дропать оригинал, заставляя ОС выполнять ретрансмиссию через 0.2 сек + --dpi-desync-repeats= ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) + --dpi-desync-skip-nosni=0|1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI + --dpi-desync-split-pos=<1..1500> ; (только для split*, disorder*) разбивать пакет на указанной позиции + --dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных + --dpi-desync-fake-http= ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному w3.org + --dpi-desync-fake-tls= ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному w3.org + --hostlist= ; применять дурение только к хостам из листа + +Параметры манипуляции могут сочетаться в любых комбинациях. + +ЗАМЕЧАНИЕ. Параметр --wsize считается устаревшим и более не поддерживается в скриптах. +Функции сплита выполняются в рамках атаки десинхронизации. Это быстрее и избавляет от целого ряда недостатков wsize. + +АТАКА ДЕСИНХРОНИЗАЦИИ DPI +Суть ее в следующем. После выполнения tcp 3-way handshake идет первый пакет с данными от клиента. +Там обычно "GET / ..." или TLS ClientHello. Мы дропаем этот пакет, заменяя чем-то другим. +Это может быть поддельная версия с безобидным, но валидным запросом http или https (вариант fake), +пакет сброса соединения (варианты rst, rstack), разбитый на части оригинальный пакет с перепутанным +порядком следования сегментов + обрамление первого сегмента фейками (disorder), +то же самое без перепутывания порядка сегментов (split). +В литературе такие атаки еще называют TCB desynchronization и TCB teardown. +Надо, чтобы фейковые пакеты дошли до DPI, но не дошли до сервера. +На вооружении есть следующие возможности : установить низкий TTL, посылать пакет с инвалидной чексуммой, +добавлять tcp option "MD5 signature", испортить sequence numbers. Все они не лишены недостатков. + +* md5sig работает не на всех серверах. Пакеты с md5 обычно отбрасывают только linux. +* badsum не сработает, если ваше устройство за NAT, который не пропускает пакеты с инвалидной суммой. + Linux NAT по умолчанию их не пропускает без особой настройки "sysctl -w net.netfilter.nf_conntrack_checksum=0". + В openwrt она сделана из коробки, в других роутерах как правило нет, и не всегда это можно изменить. + Если nfqws работает на роутере, то не обязательно выключать nf_conntrack_checksum. Фейковый пакет не проходит FORWARD, он идет через OUTPUT. + Но если роутер за другим NAT, например провайдерским, и он не пропускает invalid packets, вы ничего не сможете с этим сделать. +* пакеты с badseq будут наверняка отброшены принимающим узлом, но так же и DPI, если он ориентируется на sequence numbers +* TTL казалось бы - лучший вариант, но он требует индивидуальной настройки под каждого провайдера. Если DPI находится дальше локальных + сайтов провайдера, то вы можете отрезать себе доступ к ним. Необходим ip exclude list, заполняемый вручную. + Вместе с ttl можно применять md5sig. Это ничего не испортит, зато дает неплохой шанс работы сайтов, до которых "плохой" пакет дойдет по TTL. + Если не удается найти автоматическое решение, воспользуйтесь файлом zapret-hosts-user-exclude.txt. + КАКИМ СТОИТ ВЫБИРАТЬ TTL : найдите минимальное значение, при котором обход еще работает. Это и будет номер хопа вашего DPI. + +Режимы дурения могут сочетаться в любых комбинациях. --dpi-desync-fooling берет множество значений через запятую. + +Для режимов fake, rst, rstack после фейка отправляем оригинальный пакет. Можно его отправить сразу следом за фейком, а можно его просто дропнуть. +Если его дропнуть, ОС выполнит ретрансмиссию. Первая ретрансмиссия случается через 0.2 сек, потом задержка увеличивается экспоненциально. +Задержка может дать надежную гарантию, что пакеты пойдут именно в нужном порядке и будут именно в нем обработаны на DPI. +По умолчанию используется первый вариант, т.к. он быстрее. +При использовании dpi-desync-retrans=1 обязательно вставлять ограничитель connbytes в iptables, иначе получим зацикливание. + +Режим disorder делит оригинальный пакет на 2 части и отправляет следующую комбинацию в указанном порядке : +1. 2-я часть пакета +2. поддельная 1-я часть пакета, поле данных заполнено нулями +3. 1-я часть пакета +4. поддельная 1-я часть пакета, поле данных заполнено нулями. отсылка 2-й раз. +Оригинальный пакет дропается всегда. Параметр --dpi-desync-split-pos позволяет указать байтовую позицию, на которой +происходит разбивка. По умолчанию - 3. Если позиция больше длины пакета, позиция выбирается 1. +Этой последовательностью для DPI максимально усложняется задача реконструкции начального сообщения, +по которому принимается решение о блокировке. Некоторым DPI хватит и tcp сегментов в неправильном порядке, +поддельные части сделаны для дополнительной надежности и более сложных алгоритмов реконструкции. +Режим disorder2 отключает отправку поддельных частей. + +Режим split очень похож на disorder, только нет изменения порядка следования сегментов : +1. поддельная 1-я часть пакета, поле данных заполнено нулями +2. 1-я часть пакета +3. поддельная 1-я часть пакета, поле данных заполнено нулями. отсылка 2-й раз. +4. 2-я часть пакета +Режим split2 отключает отправку поддельных частей. +Он может быть использован как более быстрая альтернатива --wsize. + +disorder2 и split2 не предполагают отсылку фейк пакетов, поэтому опции ttl и fooling неактуальны. + +Есть DPI, которые анализируют ответы от сервера, в частности сертификат из ServerHello, где прописаны домены. +Подтверждением доставки ClientHello является ACK пакет от сервера с номером ACK sequence, соответствующим длине ClientHello+1. +В варианте disorder обычно приходит сперва частичное подтверждение (SACK), потом полный ACK. +Если вместо ACK или SACK идет RST пакет с минимальной задержкой, то DPI вас отсекает еще на этапе вашего запроса. +Если RST идет после полного ACK спустя задержку, равную примерно пингу до сервера, +тогда вероятно DPI реагирует на ответ сервера. +DPI может отстать от потока, если ClientHello его удовлетворил и не проверять ServerHello. +Тогда вам повезло. Вариант fake может сработать. +Если же он не отстает и упорно проверяет ServerHello, еще и выполняя реконструкцию сегментов TCP, +то сделать с этим что-либо вряд ли возможно без помощи со стороны сервера. +Лучшее решение - включить на сервере поддержку TLS 1.3. В нем сертификат сервера передается в зашифрованном виде. +Это рекомендация ко всем админам блокируемых сайтов. Включайте TLS 1.3. Так вы дадите больше возможностей преодолеть DPI. + +Хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. +Субдомены учитываются автоматически. Поддерживаются листы gzip. + +iptables для задействования атаки на первый пакет данных : + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + +Этот вариант применяем, когда DPI не следит за всеми запросами http внутри keep-alive сессии. +Если следит, направляем только первый пакет от https и все пакеты от http : + +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -o <внешний_интерфейс> -p tcp --dport 80 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + +mark нужен, чтобы сгенерированный поддельный пакет не попал опять к нам на обработку. nfqws выставляет fwmark при его отсылке. +хотя nfqws способен самостоятельно различать помеченные пакеты, фильтр в iptables по mark нужен при использовании connbytes, +чтобы не допустить изменения порядка следования пакетов. Процессинг очереди - процесс отложенный. +Если ядро имеет пакеты на отсылку вне очереди - оно их отправляет незамедлительно. +Изменение правильного порядка следования пакетов при десинхронизации ломает всю идею. +При отсутствии ограничения на connbytes, атака будет работать и без фильтра по mark. +Но лучше его все же оставить для увеличения скорости. + +Почему --connbytes 2:4 : 2 - иногда данные идут в 3-м пакете 3-way handshake. 3 - стандартная ситуация. 4 - для надежности. на случай, если выполнялась одна ретрансмиссия + +КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ +В параметре dpi-desync можно указать 2 режима через запятую. +Режим 1-й фазы может быть fake,rst,rstack. Режим 2-й фазы может быть disorder,disorder2,split,split2. +Может быть полезно, когда у провайдера стоит не один DPI. + +ВИРТУАЛЬНЫЕ МАШИНЫ +Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws. +Принудительно заменяется ttl, не проходят фейк пакеты. Необходимо настроить сеть в режиме bridge. + + +tpws +----- + +tpws - это transparent proxy. + --debug=0|1|2 ; Количество буковок в output : 0(default)=тихо, 1=подробно, 2=отладка + --daemon ; демонизировать прогу + --pidfile= ; сохранить PID в файл + --user= ; менять uid процесса + --uid=uid[:gid] ; менять uid процесса + --bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес + ; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan + --bind-linklocal=prefer|force ; если prefer, то найти link local от iface6. если не найдено - использовать первый адрес любого типа. + ; если force и link local не найден - выход по ошибке. + --bind-iface4= ; слушать на первом ipv4 интерфейса iface + --bind-iface6= ; слушать на первом ipv6 интерфейса iface + --bind-wait-ifup= ; ждать до N секунд появления и поднятия интерфейса + --bind-wait-ip= ; ждать до N секунд получения IP адреса (если задан --bind-wait-ifup - время идет после поднятия интерфейса) + --bind-wait-ip-linklocal= ; (только если заданы --bind-wait-ip и --bind-linklocal=prefer) согласиться на global address после N секунд + --bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0. + --socks ; вместо прозрачного прокси реализовать socks4/5 proxy + --no-resolve ; запретить ресолвинг имен через socks5 + --port= ; на каком порту слушать + --maxconn= ; максимальное количество соединений от клиентов к прокси + --maxfiles= ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга. + ; стоит сделать запас с коэффициентом как минимум 1.5. по умолчанию maxfiles (X*connections)*1.5+16 + --max-orphan-time=; если вы запускаете через tpws торрент-клиент с множеством раздач, он пытается установить очень много исходящих соединений, + ; большая часть из которых отваливается по таймату (юзера сидят за NAT, firewall, ...) + ; установление соединения в linux может длиться очень долго. локальный конец отвалился, перед этим послав блок данных, + ; tpws ждет подключения удаленного конца, чтобы отослать ему этот блок, и зависает надолго. + ; настройка позволяет сбрасывать такие подключения через N секунд, теряя блок данных. по умолчанию 5 сек. 0 означает отключить функцию + ; эта функция не действует на успешно подключенные ранее соединения + + --local-rcvbuf= ; SO_RCVBUF для соединений client-proxy + --local-sndbuf= ; SO_SNDBUF для соединений client-proxy + --remote-rcvbuf= ; SO_RCVBUF для соединений proxy-target + --remote-sndbuf= ; SO_SNDBUF для соединений proxy-target + --skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split. + + --split-http-req=method|host ; способ разделения http запросов на сегменты : около метода (GET,POST) или около заголовка Host + --split-pos= ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http. + --split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello + --hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:". + --hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase + --hostdot ; добавление точки после имени хоста : "Host: kinozal.tv." + --hosttab ; добавление табуляции после имени хоста : "Host: kinozal.tv\t" + --hostnospace ; убрать пробел после "Host:" + --hostpad= ; добавить паддинг-хедеров общей длиной перед Host: + --domcase ; домен после Host: сделать таким : TeSt.cOm + --methodspace ; добавить пробел после метода : "GET /" => "GET /" + --methodeol ; добавить перевод строки перед методом : "GET /" => "\r\nGET /" + --unixeol ; конвертировать 0D0A в 0A и использовать везде 0A + --hostlist= ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются. + ; в файле должен быть хост на каждой строке. + ; список читается 1 раз при старте и хранится в памяти в виде иерархической структуры для быстрого поиска. + ; для списка РКН может потребоваться система с 128 Mb памяти ! + ; расчитывайте требование RAM для процесса как 3-5 кратный размер файла списка. + ; по сигналу HUP список будет перечитан при следующем принятом соединении + ; список может быть запакован в gzip. формат автоматически распознается и разжимается + ; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. + +Параметры манипуляции могут сочетаться в любых комбинациях. + +В случае http запроса split-http-req имеет преимущество над split-pos. +split-pos по умолчанию работает только на http и TLS ClientHello. +Чтобы он работал на любых пакетах, укажите --split-any-protocol. + +На прикладном уровне в общем случае нет гарантированного средства заставить ядро выплюнуть +блок данных, порезанным в определенном месте. ОС держит буфер отсылки (SNDBUF) у каждого сокета. +Если у сокета включена опция TCP_NODELAY и буфер пуст, то каждый send приводит к отсылке +отдельного ip пакета или группы пакетов, если блок не вмещается в один ip пакет. +Однако, если в момент send уже имеется неотосланный буфер, то ОС присоединит данные к нему, +никакой отсылки отдельным пакетом не будет. Но в этом случае и так нет никакой гарантии, +что какой-то блок сообщения пойдет в начале пакета, на что собственно и заточены DPI. +Разбиение будет производится согласно MSS, который зависит от MTU исходящего интерфейса. +Таким образом DPI, смотрящие в начало поля данных TCP пакета, будут поломаны в любом случае. +Протокол http относится к запрос-ответным протоколам. Новое сообщение посылается только тогда, +когда сервер получил запрос и полностью вернул ответ. Значит запрос фактически был не только отослан, +но и принят другой стороной, а следовательно буфер отсылки пуст, и следующие 2 send приведут +к отсылке сегментов данных разными ip пакетами. +Резюме : tpws гарантирует сплит только за счет раздельных вызовов send, что на практике +вполне достаточно для протоколов http(s). + +tpws может биндаться на множество интерфейсов и IP адресов (до 32 шт). +Порт всегда только один. +Параметры --bind-iface* и --bind-addr создают новый бинд. +Остальные паремтры --bind-* относятся к последнему бинду. +Для бинда на все ipv4 укажите --bind-addr "0.0.0.0", на все ipv6 - "::". --bind-addr="" - биндаемся на все ipv4 и ipv6. +Если не указано ни одного бинда, то создается бинд по умолчанию на все адреса всех интерфейсов. +Параметры --bind-wait* могут помочь в ситуациях, когда нужно взять IP с интерфейса, но его еще нет, он не поднят +или не сконфигурирован. +В разных системах события ifup ловятся по-разному и не гарантируют, что интерфейс уже получил IP адрес определенного типа. +В общем случае не существует единого механизма повеситься на событие типа "на интерфейсе X появился link local address". + +Параметры rcvbuf и sndbuf позволяют установить setsockopt SO_RCVBUF SO_SNDBUF для локального и удаленного соединения. + +Если не указан ни один из параметров модификации содержимого, tpws работает в режиме "tcp proxy mode". +Он отличается тем, что в оба конца применяется splice для переброски данных из одного сокета в другой +без копирования в память процесса. Практически - это то же самое, но может быть чуть побыстрее. +TCP проксирование может быть полезно для обхода блокировок, когда DPI спотыкается на экзотических +хедерах IP или TCP. Вы вряд ли сможете поправить хедеры, исходящие от айфончиков и гаджетиков, +но на linux сможете влиять на них в какой-то степени через sysctl. +Когда соединение проходит через tpws, фактически прокси-сервер сам устанавливает подключение к удаленному +узлу от своего имени, и на это распространяются настройки системы, на которой работает прокси. +tpws можно использовать на мобильном устройстве, раздающем интернет на тарифе сотового оператора, +где раздача запрещена, в socks режиме даже без рута. Соединения от tpws неотличимы от соединений +с самого раздающего устройства. Отличить можно только по содержанию (типа обновлений windows). +Заодно можно и обойти блокировки. 2 зайца одним выстрелом. +Более подробную информацию по вопросу обхода ограничений операторов гуглите на 4pda.ru. + +Режим "--socks" не требует повышенных привилегий (кроме бинда на привилегированные порты 1..1023). +Поддерживаются версии socks 4 и 5 без авторизации. Версия протокола распознается автоматически. +Подключения к IP того же устройства, на котором работает tpws, включая localhost, запрещены. +socks5 позволяет удаленно ресолвить хосты (curl : --socks5-hostname firefox : socks_remote_dns=true). +tpws поддерживает эту возможность, однако используется блокирующий ресолвинг. Пока система +ресолвит хост (это может занять секунды), вся активность останавливается. +tpws полностью работает на асинхронных сокетах, но ресолвинг может попортить эту модель. +С ним возможны атаки DoS на tpws. Если tpws обслуживает множество клиентов, то из-за частого +ресолвинга качество обслуживания может существенно ухудшиться. +Если удаленный ресолвинг создает проблемы, настройте клиенты на локальный ресолвинг, включите опцию +--no-resolve на стороне tpws. + +Параметр --hostpad= добавляет паддинг-хедеров перед Host: на указанное количество байтов. +Если размер слишком большой, то идет разбивка на разные хедеры по 2K. +Общий буфер приема http запроса - 64K, больший паддинг не поддерживается, да и http сервера +такое уже не принимают. +Полезно против DPI, выполняющих реассемблинг TCP с ограниченным буфером. +Если техника работает, то после некоторого количества bytes http запрос начнет проходить до сайта. +Если при этом критический размер padding около MTU, значит скорее всего DPI не выполняет реассемблинг пакетов, и лучше будет использовать обычные опции --split-… +Если все же реассемблинг выполняется, то критический размер будет около размера буфера DPI. Он может быть 4K или 8K, возможны и другие значения. + +--skip-nodelay может быть полезен, чтобы привести MTU к MTU системы, на которой работает tpws. +Это может быть полезно для скрытия факта использования VPN. Пониженный MTU - 1 из способов обнаружения +подозрительного подключения. С tcp proxy ваши соединения неотличимы от тех, что сделал бы сам шлюз. + + +Способы получения списка заблокированных IP +------------------------------------------- + +1) Внесите заблокированные домены в ipset/zapret-hosts-user.txt и запустите ipset/get_user.sh +На выходе получите ipset/zapret-ip-user.txt с IP адресами. + +Cкрипты с названием get_reestr_* оперируют дампом реестра заблокированных сайтов : + +2) ipset/get_reestr_resolve.sh получает список доменов от rublacklist и дальше их ресолвит в ip адреса +в файл ipset/zapret-ip.txt.gz. В этом списке есть готовые IP адреса, но судя во всему они там в точности в том виде, +что вносит в реестр РосКомПозор. Адреса могут меняться, позор не успевает их обновлять, а провайдеры редко +банят по IP : вместо этого они банят http запросы с "нехорошим" заголовком "Host:" вне зависимости +от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени. +Используется мультипоточный ресолвер mdig (собственная разработка). +Реестр РКН уже настолько огромен, что однопоточный ресолв займет вечность, а многопоточный хоть и тоже много времени, +но хотя бы оно конечно. +На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе + +3) ipset/get_reestr_ip.txt +взять все IP адреса из реестра и загнать в ipset zapret/zapret6 +На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе + +4) ipset/get_reestr_combined.sh. для провайдеров, которые блокируют по IP https, а остальное по DPI. +IP https и IP без домена заносятся в ipset ipban, остальные в ipset zapret. +На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе + +Cкрипты с названием get_antifilter_* оперируют списками адресов и масок подсетей с сайтов antifilter.network и antifilter.download : + +5) ipset/get_antifilter_ip.sh. получает лист https://antifilter.network/download/ip.lst. + +7) ipset/get_antifilter_ipsmart.sh. получает лист https://antifilter.network/download/ipsmart.lst. +это умная суммаризация отдельных адресов из ip.lst по маскам от /32 до /22 +количество префиксов измеряется всего лишь десятками тысяч, потому это лучшее решение для роутера с 64 Mb RAM + +7) ipset/get_antifilter_ipsum.sh. получает лист https://antifilter.network/download/ipsum.lst. +это суммаризация отдельных адресов из ip.lst по маске /24 +количество префиксов измеряется всего лишь десятками тысяч, потому можно использовать на роутерах с 64 Mb RAM + +Все варианты рассмотренных скриптов автоматически создают и заполняют ipset. +Варианты 2-7 дополнительно вызывают вариант 1. + +8) ipset/get_config.sh. этот скрипт вызывает то, что прописано в переменной GETLIST из файла config +Если переменная не определена, то ресолвятся лишь листы для ipset nozapret/nozapret6. + +Листы РКН все время изменяются. Возникают новые тенденции. Требования к RAM могут меняться. +Поэтому необходима нечастая, но все же регулярная ревизия что же вообще у вас происходит на роутере. +Или вы можете узнать о проблеме лишь когда у вас начнет постоянно пропадать wifi, и вам придется +его перезагружать каждые 2 часа (метод кувалды). + +Листы zapret-ip.txt и zapret-ipban.txt сохраняются в сжатом виде в файлы .gz. +Это позволяет снизить их размер во много раз и сэкономить место на роутере. +Отключить сжатие листов можно параметром конфига GZIP_LISTS=0. + +На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет +либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку. +В обоих случаях слишком частая запись может убить флэшку, но если это произойдет с внутренней +флэш памятью, то вы просто убьете роутер. + +Принудительное обновление ipset выполняет скрипт ipset/create_ipset.sh. +Если передан параметр "no-update", скрипт не обновляет ipset, а только создает его при его отсутствии и заполняет. +Это полезно, когда могут случиться несколько последовательных вызовов скрипта. Нет смысла несколько раз перезаполнять +ipset, это длительная операция на больших листах. Листы можно обновлять раз в несколько суток, и только тогда +вызывать create_ipset без параметра "no-update". Во всех остальных случаях стоит применять "no-update". + +Список РКН уже достиг внушительных размеров в сотни тысяч IP адресов. Поэтому для оптимизации ipset +применяется утилита ip2net. Она берет список отдельных IP адресов и пытается интеллектуально создать из него подсети для сокращения +количества адресов. ip2net отсекает неправильные записи в листах, гарантируя осутствие ошибок при их загрузке. +ip2net написан на языке C, поскольку операция ресурсоемкая. Иные способы роутер может не потянуть. + +Можно внести список доменов в ipset/zapret-hosts-user-ipban.txt. Их ip адреса будут помещены +в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех +соединений на прозрачный proxy "redsocks" или на VPN. + +IPV6 : если включен ipv6, то дополнительно создаются листы с таким же именем, но с "6" на конце перед расширением. +zapret-ip.txt => zapret-ip6.txt +Создаются ipset-ы zapret6 и ipban6. +Листы с antifilter не содержат список ipv6 адресов. + +СИСТЕМА ИСКЛЮЧЕНИЯ IP. Все скрипты ресолвят файл zapret-hosts-user-exclude.txt, создавая zapret-ip-exclude.txt и zapret-ip-exclude6.txt. +Они загоняются в ipset-ы nozapret и nozapret6. Все правила, создаваемые init скриптами, создаются с учетом этих ipset. +Помещенные в них IP не участвуют в процессе. +zapret-hosts-user-exclude.txt может содержать домены, ipv4 и ipv6 адреса или подсети. + +FreeBSD. Скрипты ipset/*.sh работают так же на FreeBSD. Вместо ipset они создают lookup таблицы ipfw с аналогичными именами. +ipfw таблицы в отличие от ipset могут содержать как ipv4, так и ipv6 адреса и подсети в одной таблице, поэтому разделения нет. + +Параметр конфига LISTS_RELOAD задает произвольную команду для перезагрузки листов. +Это особенно полезно на BSD системах с PF. +LISTS_RELOAD=- отключает перезагрузку листов. + + +ip2net +------ + +Утилита ip2net предназначена для преобразования ipv4 или ipv6 списка ip в список подсетей +с целью сокращения размера списка. Входные данные берутся из stdin, выходные выдаются в stdout. + + -4 ; лист - ipv4 (по умолчанию) + -6 ; лист - ipv6 + --prefix-length=min[-max] ; диапазон рассматриваемых длин префиксов. например : 22-30 (ipv4), 56-64 (ipv6) + --v4-threshold=mul/div ; ipv4 : включать подсети, в которых заполнено по крайней мере mul/div адресов. например : 3/4 + --v6-threshold=N ; ipv6 : минимальное количество ip для создания подсети + +В списке могут присутствовать записи вида ip/prefix и ip1-ip2. Такие записи выкидываются в stdout без изменений. +Они принимаются командой ipset. ipset умеет для листов hash:net из ip1-ip2 делать оптимальное покрытие ip/prefix. +ipfw из FreeBSD понимает ip/prefix, но не понимает ip1-ip2. +ip2net фильтрует входные данные, выкидывая неправильные IP адреса. + +Выбирается подсеть, в которой присутствует указанный минимум адресов. +Для ipv4 минимум задается как процент от размера подсети (mul/div. например, 3/4), для ipv6 минимум задается напрямую. + +Размер подсети выбирается следующим алгоритмом : +Сначала в указанном диапазоне длин префиксов ищутся подсети, в которых количество адресов - максимально. +Если таких сетей найдено несколько, берется наименьшая сеть (префикс больше). +Например, заданы параметры v6_threshold=2 prefix_length=32-64, имеются следующие ipv6 : +1234:5678:aaaa::5 +1234:5678:aaaa::6 +1234:5678:aaac::5 +Результат будет : +1234:5678:aaa8::/45 +Эти адреса так же входят в подсеть /32. Однако, нет смысла проходиться ковровой бомбардировкой, +когда те же самые адреса вполне влезают в /45 и их ровно столько же. +Если изменить v6_threshold=4, то результат будет : +1234:5678:aaaa::5 +1234:5678:aaaa::6 +1234:5678:aaac::5 +То есть ip не объединятся в подсеть, потому что их слишком мало. +Если изменить prefix_length=56-64, результат будет : +1234:5678:aaaa::/64 +1234:5678:aaac::5 + +Требуемое процессорное время для вычислений сильно зависит от ширины диапазона длин префиксов, размера искомых подсетей и длины листа. +Если ip2net думает слишком долго, не используйте слишком большие подсети и уменьшите диапазон длин префиксов. +Учтите, что арифметика mul/div - целочисленная. При превышении разрядной сетки 32 bit результат непредсказуем. +Не надо делать такое : 5000000/10000000. 1/2 - гораздо лучше. + + +Фильтрация по именам доменов +---------------------------- + +Альтернативой ipset является использование tpws или nfqws со списком доменов. +Может быть только один hostlist. + +Поддерживаются 2 варианта : +1) Внесите домены для дурения в ipset/zapret-hosts-users.txt. Удалите ipset/zapret-hosts.txt.gz. +Тогда init скрипт будет запускать tpws с листом zapret-hosts-users.txt. + +2) Список доменов РКН может быть получен скриптом ipset/get_reestr_hostlist.sh - кладется в ipset/zapret-hosts.txt.gz. +Этот скрипт автоматически добавляет к списку РКН домены из zapret-hosts-user.txt. +init скрипт будет запускать tpws с листом zapret-hosts.txt.gz. + +При фильтрации по именам доменов демон должен запускаться без фильтрации по ipset. +tpws и nfqws решают нужно ли применять дурение в зависимости от поля Host: в http запросе или SNI в TLS ClientHello. +При использовании больших списков, в том числе списка РКН, оцените объем RAM на роутере ! +Если после запуска демона RAM под завязку или случаются oom, значит нужно отказаться от таких больших списков. + + +Проверка провайдера +------------------- + +Перед настройкой нужно провести исследование какую бяку устроил вам ваш провайдер. + +Нужно выяснить не подменяет ли он DNS и какой метод обхода DPI работает. +В этом вам поможет скрипт https://github.com/ValdikSS/blockcheck. + +Если DNS подменяется, но провайдер не перехватывает обращения к сторонним DNS, поменяйте DNS на публичный. +Например : 8.8.8.8, 8.8.4.4, 1.1.1.1, 1.0.0.1, 9.9.9.9 +Если DNS подменяется и провайдер перехватывает обращения к сторонним DNS, настройте dnscrypt. + +Если blockcheck не определил рабочие методы обхода, попробуйте атаку десинхронизации с различными параметрами. + +Проанализируйте какие методы дурения DPI работают, в соответствии с ними настройте /opt/zapret/config. + + +Выбор параметров +---------------- + +Файл /opt/zapret/config используется различными компонентами системы и содержит основные настройки. +Его нужно просмотреть и при необходимости отредактировать. + + +Основной режим : +tpws - использовать tpws +tpws - использовать nfqws +filter - только заполнить ipset или загрузить hostlist +custom - нужно самому запрограммировать запуск демонов в init скрипте и правила iptables + +MODE=tpws + +Применять ли дурение к HTTP : + +MODE_HTTP=1 + +Применять ли дурение к последовательным http запросам в одном tcp соединении (http keeaplive). +Относится только к nfqws. Выключение данной функции способно сэкономить загрузку процессора. +tpws всегда работает с http keepalive + +MODE_HTTP_KEEPALIVE=0 + +Применять ли дурение к HTTPS : + +MODE_HTTPS=1 + +Режим фильтрации хостов : +none - применять дурение ко всем хостам +ipset - ограничить дурение ipset-ом zapret/zapret6 +hostlist - ограничить дурение списком хостов из файла + +MODE_FILTER=none + +Опции tpws : + +TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3" + +Опции nfqws для атаки десинхронизации DPI : + +DESYNC_MARK=0x40000000 +NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum --dpi-desync-fwmark=$DESYNC_MARK" + +Настройка системы управления выборочным traffic offload (только openwrt) +donttouch : выборочное управление отключено, используется системная настройка, простой инсталятор выключает системную настройку, если она не совместима с выбранным режимом +none : выборочное управление отключено, простой инсталятор выключает системную настройку +software : выборочное управление включено в режиме software, простой инсталятор выключает системную настройку +hardware : выборочное управление включено в режиме hardware, простой инсталятор выключает системную настройку + +FLOWOFFLOAD=donttouch + +Параметр GETLIST указывает инсталятору install_easy.sh какой скрипт дергать +для обновления списка заблокированных ip или хостов. +Он же вызывается через get_config.sh из запланированных заданий (crontab или systemd timer). +Поместите сюда название скрипта, который будете использовать для обновления листов. +Если не нужно, то параметр следует закомментировать. + +Можно индивидуально отключить ipv4 или ipv6. Если параметр закомментирован или не равен "1", +использование протокола разрешено. +#DISABLE_IPV4=1 +DISABLE_IPV6=1 + +Количество потоков для многопоточного DNS ресолвера mdig (1..100). +Чем их больше, тем быстрее, но не обидится ли на долбежку ваш DNS сервер ? +MDIG_THREADS=30 + +Место для хранения временных файлов. При скачивании огромных реестров в /tmp места может не хватить. +Если файловая система на нормальном носителе (не встроенная память роутера), то можно +указать место на флэшке или диске. +TMPDIR=/opt/zapret/tmp + +Опции для создания ipset-ов +IPSET_OPT="hashsize 262144 maxelem 2097152" +ПРО РУГАНЬ в dmesg по поводу нехватки памяти. +Может так случиться, что памяти в системе достаточно, но при попытке заполнить огромный ipset +ядро начинает громко ругаться, ipset заполняется не полностью. +Вероятная причина в том, что превышается hashsize, заданный при создании ipset (create_ipset.sh). +Происходит переаллокация списка, не находится непрерывных фрагментов памяти нужной длины. +Это лечится увеличением hashsize. Но чем больше hashsize, тем больше занимает ipset в памяти. +Задавать слишком большой hashsize для недостаточно больших списков нецелесообразно. + +Опции для вызова ip2net. Отдельно для листов ipv4 и ipv6. +IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4" +IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5" + +Включить или выключить сжатие больших листов в скриптах ipset/*.sh. По умолчанию включено. +GZIP_LISTS=1 + +Команда для перезагрузки ip таблиц фаервола. +Если не указано или пустое, выбирается автоматически ipset или ipfw при их наличии. +На BSD системах с PF нет автоматической загрузки. Там нужно указать команду явно : pfctl -f /etc/pf.conf +На более новых pfctl (есть в новых FreeBSD, нет в OpenBSD 6.8) можно дать команду загрузки только таблиц : pfctl -Tl -f /etc/pf.conf +"-" означает отключение загрузки листов даже при наличии поддерживаемого backend. +#LISTS_RELOAD="pfctl -f /etc/pf.conf" +#LISTS_RELOAD=- + + +Следующие настройки не актуальны для openwrt : + +Если ваша система работает как роутер, то нужно вписать названия внутреннего и внешнего интерфейсов : +IFACE_LAN=eth0 +IFACE_WAN=eth1 +ВАЖНО : настройка маршрутизации , маскарада и т.д. не входит в задачу zapret. +Включаются только режимы, обеспечивающие перехват транзитного трафика. + +Параметр INIT_APPLY_FW=1 разрешает init скрипту самостоятельно применять правила iptables. +При иных значениях или если параметр закомментирован, правила применены не будут. +Это полезно, если у вас есть система управления фаерволом, в настройки которой и следует прикрутить правила. + +Прикручивание к системе управления фаерволом или своей системе запуска +---------------------------------------------------------------------- + +Если вы используете какую-то систему управления фаерволом, то она может вступать в конфликт +с имеющимся скриптом запуска. При повторном применении правил она могла бы поломать настройки iptables от zapret. +В этом случае правила для iptables должны быть прикручены к вашему фаерволу отдельно от запуска tpws или nfqws. + +Следующие вызовы позволяют применить или убрать правила iptables отдельно : + + /opt/zapret/init.d/sysv/zapret start-fw + /opt/zapret/init.d/sysv/zapret stop-fw + +А так можно запустить или остановить демоны отдельно от фаервола : + + /opt/zapret/init.d/sysv/zapret start-daemons + /opt/zapret/init.d/sysv/zapret stop-daemons + +Вариант custom +-------------- + +custom код вынесен в отдельный shell include +/opt/zapret/init.d/sysv/custom +или +/opt/zapret/init.d/openwrt/custom + +Нужно свой код вписать в функции : +zapret_custom_daemons +zapret_custom_firewall + +В файле custom пишите ваш код, пользуясь хелперами из "functions" или "zapret". +Смотрите как там сделано добавление iptables или запуск демонов. +Используя хелпер функции, вы избавитесь от необходимости учитывать все возможные случаи +типа наличия/отсутствия ipv6, является ли система роутером, имена интерфейсов, ... +Хелперы это учитывают , вам нужно сосредоточиться лишь на фильтрах iptables и +параметрах демонов. + +Код для openwrt и sysv немного отличается. В sysv нужно обрабатывать и запуск, и остановку. +Запуск это или остановка передается в параметре $1 (0 или 1). +В openwrt за остановку демонов отвечает procd, а firewall вычищается при "fw3 restart", +потому нет необходимости реализовывать логику останова. + +При апгрейде нужно сохранить лишь custom, другие файлы править не надо. + +Готовый custom скрипт custom-tpws4http-nfqws4https позволяет применить дурение +tpws к http и nfqws к https. При этом поддерживаются установки из config. +Его можно использовать как стартовую точку для написания своих скриптов. + +Пример ручной установки на debian-подобную систему +-------------------------------------------------- + +На debian основано большое количество дистрибутивов linux, включая ubuntu. +Здесь рассматриваются прежде всего Debian 8+ и Ubuntu 16+. +Но с большой вероятностью может сработать и на производных от них. +Главное условие - наличие systemd, apt и нескольких стандартных пакетов в репозитории. + +Установить пакеты : + apt-get update + apt-get install ipset curl dnsutils git + +Скопировать директорию zapret в /opt или скачать через git : + cd /opt + git clone --depth 1 https://github.com/bol-van/zapret + +Запустить автоинсталятор бинариков. Он сам определит рабочую архитектуру и настроит все бинарики. + /opt/zapret/install_bin.sh +АЛЬТЕРНАТИВА : make -C /opt/zapret. Получите динамические бинарики под вашу ось. +Для сборки требуются dev пакеты : zlib1g-dev libcap-dev libnetfilter-queue-dev + +Настроить параметры согласно разделу "Выбор параметров". + +Создать ссылку на service unit в systemd : + ln -fs /opt/zapret/init.d/systemd/zapret.service /lib/systemd/system + +Удалить старые листы, если они были созданы ранее : + /opt/zapret/ipset/clear_lists.sh +По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены. +Выполнить скрипт обновления листа : + /opt/zapret/ipset/get_config.sh +Настроить таймер systemd для обновления листа : + ln -fs /opt/zapret/init.d/systemd/zapret-list-update.service /lib/systemd/system + ln -fs /opt/zapret/init.d/systemd/zapret-list-update.timer /lib/systemd/system + +Принять изменения в systemd : + systemctl daemon-reload + +Включить автозапуск службы : + systemctl enable zapret + +Включить таймер обновления листа : + systemctl enable zapret-list-update.timer + +Запустить службу : + systemctl start zapret + +Шпаргалка по управлению службой и таймером : + +enable auto start : systemctl enable zapret +disable auto start : systemctl disable zapret +start : sytemctl start zapret +stop : systemctl stop zapret +status, output messages : systemctl status zapret +timer info : systemctl list-timer +delete service : systemctl disable zapret ; rm /lib/systemd/system/zapret.service +delete timer : systemctl disable zapret-list-update.timer ; rm /lib/systemd/system/zapret-list-update.* + +Centos 7+, Fedora +----------------- + +Centos с 7 версии и более-менее новые федоры построены на systemd. +В качестве пакетного менеджера используется yum. + +Установить пакеты : + yum install -y curl ipset dnsutils git + +Далее все аналогично debian. + +OpenSUSE +-------- + +Новые OpenSUSE основаны на systemd и менеджере пакетов zypper. + +Установить пакеты : + zypper --non-interactive install curl ipset + +Далее все аналогично debian, кроме расположения systemd. +В opensuse он находится не в /lib/systemd, а в /usr/lib/systemd. +Правильные команды будут : + + ln -fs /opt/zapret/init.d/systemd/zapret.service /usr/lib/systemd/system + ln -fs /opt/zapret/init.d/systemd/zapret-list-update.service /usr/lib/systemd/system + ln -fs /opt/zapret/init.d/systemd/zapret-list-update.timer /usr/lib/systemd/system + +Arch linux +---------- + +Построен на базе systemd. + +Установить пакеты : + pacman -Syy + pacman --noconfirm -S ipset curl + +Далее все аналогично debian. + +Gentoo +------ + +Эта система использует OpenRC - улучшенную версию sysvinit. +Установка пакетов производится командой : emerge +Пакеты собираются из исходников. + +Требуются все те же ipset, curl, git для скачивания с github. +git и curl по умолчанию могут присутствовать, ipset отсутствует. + + emerge ipset + +Настроить параметры согласно разделу "Выбор параметров". + +Запустить автоинсталятор бинариков. Он сам определит рабочую архитектуру и настроит все бинарики. + /opt/zapret/install_bin.sh +АЛЬТЕРНАТИВА : make -C /opt/zapret. Получите динамические бинарики под вашу ось. + +Удалить старые листы, если они были созданы ранее : + /opt/zapret/ipset/clear_lists.sh +По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены. +Выполнить скрипт обновления листа : + /opt/zapret/ipset/get_config.sh +Зашедулить обновление листа : + crontab -e + Создать строчку "0 12 */2 * * /opt/zapret/ipset/get_config.sh" + +Подключить init скрипт : + + ln -fs /opt/zapret/init.d/sysv/zapret /etc/init.d + rc-update add zapret + +Запустить службу : + + rc-service zapret start + +Шпаргалка по управлению службой : + +enable auto start : rc-update add zapret +disable auto start : rc-update del zapret +start : rc-service zapret start +stop : rc-service zapret stop + + +Простая установка +----------------- + +install_easy.sh автоматизирует описанные выше ручные варианты процедур установки. +Он поддерживает OpenWRT, linux системы на базе systemd и MacOS. + +Для более гибкой настройки перед запуском инсталятора следует выполнить раздел "Выбор параметров". + +Если система на базе systemd, но используется не поддерживаемый инсталятором менеджер пакетов +или названия пакетов не соответствуют прописанным в инсталятор, пакеты нужно установить вручную. +Требуется : ipset curl + +ВАЖНО : Хоть инсталятор и спрашивает является ли система роутером, +настройка маршрутизации , маскарада и т.д. не входит в задачу zapret. +Роутер вдруг сам волшебно не поднимется. Предполагается, что роутер вы уже настроили сами. + +В комплекте идут статические бинарики для большинства архитектур. Какой-то из них подойдет +с вероятностью 99%. Но если у вас экзотическая система, инсталятор попробует собрать бинарики сам +через make. Для этого нужны gcc, make и необходимые -dev пакеты. Можно форсировать режим +компиляции следующим вызовом : + + install_easy.sh make + +Для MacOS готовые бинарики не поставляются, поэтому всегда выбирается вариант установки через make. +Запуск make на чистой системе вызывает автоматическую установку developer tools. В них есть все необходимое. + +Деинсталяция выполняется через uninstall_easy.sh + + +Ручная установка на openwrt/LEDE +-------------------------------- + +Установить дополнительные пакеты : +opkg update +opkg install iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra ipset curl +(ipv6) opkg install ip6tables-mod-nat +(опционально) opkg install gzip +(опционально) opkg install grep +(опционально) opkg install coreutils-sort + +ЭКОНОМИЯ МЕСТА : + +gzip от busybox в разы медленней полноценного варианта. gzip используется скриптами получения листов. +sort от busybox медленней полноценного варианта и жрет намного болше памяти. sort используется скриптами получения листов. +grep от busybox катастрофически медленный с опцией -f. она применяется в get_reestr_combined.sh. если вы не собираетесь +пользоваться этим скриптом, gnu grep можно не устанавливать +iptables-mod-nfqueue можно выкинуть, если не будем пользоваться nfqws +curl можно выкинуть, если для получения ip листа будет использоваться только get_user.sh + +Самая главная трудность - скомпилировать программы на C. Это можно сделать на linux x64 при помощи SDK, который +можно скачать с официального сайта openwrt или LEDE. Но процесс кросс компиляции - это всегда сложности. +Недостаточно запустить make как на традиционной linux системе. +Поэтому в binaries имеются готовые статические бинарики для всех самых распространенных архитектур. +Статическая сборка означает, что бинарик не зависит от типа libc (glibc, uclibc или musl) и наличия установленных so. +Его можно использовать сразу. Лишь бы подходил тип CPU. У ARM и MIPS есть несколько версий. +Скорее всего найдется рабочий вариант. Если нет - вам придется собирать самостоятельно. +Для всех поддерживаемых архитектур бинарики запакованы upx. На текущий момент все, кроме mips64. + +Скопировать директорию "zapret" в /opt на роутер. + +Если места достаточно, самый простой способ : + opkg update + opkg install git-http + mkdir /opt + cd /opt + git clone --depth 1 https://github.com/bol-van/zapret + +Если места немного : + opkg update + opkg install openssh-sftp-server unzip + ifconfig br-lan +Скачать на комп с github zip архив кнопкой "Clone or download"->Download ZIP +Скопировать средствами sftp zip архив на роутер в /tmp. + mkdir /opt + cd /opt + unzip /tmp/zapret-master.zip + mv zapret-master zapret + rm /tmp/zapret-master.zip + +Если места совсем мало : + cd /tmp + nc -l -p 1111 >zapret.tar.gz +На linux системе скачать и распаковать zapret. Оставить необходимый минимум файлов. +Запаковать в архив zapret.tar.gz. + md5sum zapret.tar.gz + nc 1111 /{tpws,nfqws,ip2net,mdig} + +После успешной установки можно удалить zapret из tmp для освобождения RAM : + rm -r /tmp/zapret + +Для более гибкой настройки перед запуском инсталятора следует выполнить раздел "Выбор параметров". + + +Android +------- + +Без рута забудьте про nfqws и tpws в режиме transparent proxy. tpws будет работать только в режиме --socks. + +Статистики наличия NFQUEUE в стоковых ядрах android у меня нет, но на первом попавшемся устройстве на базе MTK он есть. +Если NFQUEUE есть, то nfqws проверен - он работает. + +В стоковых ядрах нет поддержки ipset. В общем случае сложность задачи по поднятию ipset варьируется от +"не просто" до "почти невозможно". Если только вы не найдете готовое собранное ядро под ваш девайс. + +tpws будет работать в любом случае, он не требует чего-либо особенного. +В android нет /etc/passwd, потому опция --user не будет работать. Вместо нее можно +пользоваться числовыми user id и опцией --uid. +Рекомендую использовать gid 3003 (AID_INET). Иначе можете получить permission denied на создание сокета. +Например : --uid 1:3003 +В iptables укажите : "! --uid-owner 1" вместо "! --uid-owner tpws". +Напишите шелл скрипт с iptables и tpws, запускайте его средствами вашего рут менеджера. +Скрипты автозапуска лежат тут : +magisk : /data/adb/service.d +supersu : /system/su.d + +Я не проверял не прибивают ли новые андроиды iptables по своей прихоти в процессе работы +или при подключении/отключении wifi, mobile data, ... + +Ответ на вопрос куда поместить tpws на android без рута, чтобы потом его запускать из приложений. +Файл заливаем через adb shell в /data/local/tmp/, лучше всего в субфолдер. +mkdir /data/local/tmp/zapret +adb push tpws /data/local/tmp/zapret +chmod 755 /data/local/tmp/zapret /data/local/tmp/zapret/tpws +chcon u:object_r:system_file:s0 /data/local/tmp/zapret/tpws + +Мобильные модемы и роутеры huawei +--------------------------------- + +Устройства типа E3372, E8372, E5770 разделяют общую идеологию построения системы. +Имеются 2 вычислительных ядра. Одно ядро выполняет vxworks, другое - linux. +На 4pda имеются модицифированные прошивки с telnet и adb. Их и нужно использовать. + +Дальнейшие утверждения проверены на E8372. На других может быть аналогично или похоже. +Присутствуют дополнительные аппаратные блоки для offload-а сетевых функций. +Не весь трафик идет через linux. Исходящий трафик с самого модема проходит +цепочку OUTPUT нормально, на FORWARD =>wan часть пакетов выпадает из tcpdump. + +tpws работает обычным образом. + +nfqueue поломан. можно собрать фиксящий модуль https://github.com/im-0/unfuck-nfqueue-on-e3372h, +используя исходники с huawei open source. Исходники содержат тулчейн и полусобирающееся, +неактуальное ядро. Конфиг можно взять с рабочего модема из /proc/config.gz. +С помощью этих исходников умельцы могут собрать модуль unfuck_nfqueue.ko. +После его применения NFQUEUE и nfqws для arm работают нормально. + +Чтобы избежать проблемы с offload-ом при использвании nfqws, следует комбинировать tpws в режиме tcp proxy и nfqws. +Правила NFQUEUE пишутся для цепочки OUTPUT. +connbytes придется опускать, поскольку модуля в ядре нет. Но это не смертельно. + +Скрипт автозапуска - /system/etc/autorun.sh. Создайте свой скрипт настройки zapret, +запускайте из конца autorun.sh через "&". Скрипт должен в начале делать sleep 5, чтобы дождаться +поднятия сети и iptables от huawei. + +ПРЕДУПРЕЖДЕНИЕ. +На этом модеме происходят хаотические сбросы соединений tcp по непонятным причинам. +Выглядит это так, если запускать curl с самого модема : + curl www.ru + curl: (7) Failed to connect to www.ru port 80: Host is unreachable +Возникает ошибка сокета EHOSTUNREACH (errno -113). То же самое видно в tpws. +В броузере не подгружаются части веб страниц, картинки, стили. +В tcpdump на внешнем интерфейсе eth_x виден только единственный и безответный SYN пакет, без сообщений ICMP. +ОС каким-то образом узнает о невозможности установить TCP соединение и выдает ошибку. +Если выполнять подключение с клиента, то SYN пропадают, соединение не устанавливается. +ОС клиента проводит ретрансмиссию, и с какого-то раза подключение удается. +Поэтому без tcp проксирования в этой ситуации сайты тупят, но загружаются, а с проксированием +подключение выполняется, но вскоре сбрасывается без каких-либо данных, и броузеры не пытаются установить +его заново. Поэтому качество броузинга с tpws может быть хуже, но дело не в tpws. +Частота сбросов заметно возрастает, если запущен торент клиент, имеется много tcp соединений. +Однако, причина не в переполнении таблицы conntrack. Увеличение лимитов и очистка conntrack не помогают. +Предположительно эта особенность связана с обработкой пакетов сброса соединения в hardware offload. +Точного ответа на вопрос у меня нет. Если вы знаете - поделитесь, пожалуйста. +Чтобы не ухудшать качество броузинга, можно фильтровать заворот на tpws по ip фильтру. +Поддержка ipset отсутствует. Значит, все, что можно сделать - создать индивидуальные правила +на небольшое количество хостов. + +Некоторые наброски скриптов присутствуют в files/huawei. Не готовое решение ! Смотрите, изучайте, приспосабливайте. +Здесь можно скачать готовые полезные статические бинарики для arm, включая curl : https://github.com/bol-van/bins + + +FreeBSD, OpenBSD, MacOS +----------------------- + +Описано в docs/bsd.txt + + +Windows (WSL) +------------- + +tpws в режиме socks можно запускать и под более-менее современными билдами windows 10 и windows server +с установленным WSL. Совсем не обязательно устанавливать дистрибутив убунту, как вам напишут почти в каждой +статье про WSL, которую вы найдете в сети. tpws - статический бинарик, ему дистрибутив не нужен. + +Установить WSL : dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all +Скопировать на целевую систему binaries/x86_64/tpws_wsl.tgz. +Выполнить : wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz +Запустить : wsl --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения> +Прописать socks 127.0.0.1:1080 в броузер или другую программу. + +Удаление : wsl --unregister tpws + +Проверено на windows 10 build 19041 (20.04). + +ЗАМЕЧАНИЕ. Под Windows существует нативное решение GoodByeDPI, выполняющее дурение на пакетном уровне (по типу nfqws). + + +Другие прошивки +--------------- + +Для статических бинариков не имеет значения на чем они запущены : PC, android, приставка, роутер, любой другой девайс. +Подойдет любая прошивка, дистрибутив linux. Статические бинарики запустятся на всем. +Им нужно только ядро с необходимыми опциями сборки или модулями. +Но кроме бинариков в проекте используются еще и скрипты, в которых задействуются некоторые +стандартные программы. + +ЗАМЕЧАНИЕ. Как показала практика, на некоторых ядрах бинарики с upx падают в segfault. +Если это ваш случай, скачайте upx и распакуйте бинарики. Распаковать можно на любой системе и любой архитектуре. + +Основные причины почему нельзя просто так взять и установить эту систему на что угодно : + * отсутствие доступа к девайсу через shell + * отсутствие рута + * отсутствие раздела r/w для записи и энергонезависимого хранения файлов + * отсутствие возможности поставить что-то в автозапуск + * отсутствие cron + * недостаток модулей ядра или опций его сборки + * недостаток модулей iptables (/usr/lib/iptables/lib*.so) + * недостаток стандартных программ (типа ipset, curl) или их кастрированность (облегченная замена) + * кастрированный или нестандартный шелл sh + +Если в вашей прошивке есть все необходимое, то вы можете адаптировать zapret под ваш девайс в той или иной степени. +Может быть у вас не получится поднять все части системы, однако вы можете хотя бы попытаться +поднять tpws и завернуть на него через -j REDIRECT весь трафик на порт 80. +Если вам есть куда записать tpws, есть возможность выполнять команды при старте, то как минимум +это вы сделать сможете. Скорее всего поддержка REDIRECT в ядре есть. Она точно есть на любом роутере, +на других устройствах под вопросом. NFQUEUE, ipset на большинстве прошивок отсутствуют из-за ненужности. + +Пересобрать ядро или модули для него будет скорее всего достаточно трудно. +Для этого вам необходимо будет по крайней мере получить исходники вашей прошивки. +User mode компоненты могут быть привнесены относительно безболезненно, если есть место куда их записать. +Специально для девайсов, имеющих область r/w, существует проект entware. +Некоторые прошивки даже имеют возможность его облегченной установки через веб интерфейс. +entware содержит репозиторий user-mode компонент, которые устанавливаются в /opt. +С их помощью можно компенсировать недостаток ПО основной прошивки, за исключением ядра. + +Подробное описание настроек для других прошивок выходит за рамки данного проекта. + +Openwrt является одной из немногих относительно полноценных linux систем для embedded devices. +Она характеризуется следующими вещами, которые и послужили основой выбора именно этой прошивки : + * полный root доступ к девайсу через shell. на заводских прошивках чаще всего отсутствует, на многих альтернативных есть + * корень r/w. это практически уникальная особенность openwrt. заводские и большинство альтернативных прошивок + построены на базе squashfs root (r/o), а конфигурация хранится в специально отформатированной области + встроенной памяти, называемой nvram. не имеющие r/w корня системы сильно кастрированы. они не имеют + возможности доустановки ПО из репозитория без специальных вывертов и заточены в основном + на чуть более продвинутого, чем обычно, пользователя и управление имеющимся функционалом через веб интерфейс, + но функционал фиксированно ограничен. альтернативные прошивки как правило могут монтировать r/w раздел + в какую-то область файловой системы, заводские обычно могут монтировать лишь флэшки, подключенные к USB, + и не факт, что есть поддержка unix файловых системы. может быть поддержка только fat и ntfs. + * возможность выноса корневой файловой системы на внешний носитель (extroot) или создания на нем оверлея (overlay) + * наличие менеджера пакетов opkg и репозитория софта + * в репозитории есть все модули ядра, их можно доустановить через opkg. ядро пересобирать не нужно. + * в репозитории есть все модули iptables, их можно доустановить через opkg + * в репозитории есть огромное количество стандартных программ и дополнительного софта + * наличие SDK, позволяющего собрать недостающее + + +Обход блокировки https +---------------------- + +ИНОГДА (но нечасто) работает трюк со сплитом tls handshake на 2 части. +Это можно сделать все теми же средствами. nfqws --dpi-desync=split2 или tpws --split-pos. +У tpws --split-pos - единственный параметр, который работает на не-HTTP трафике, все остальное работать не будет. + +ЧАЩЕ на https работает атака DPI desync, но у нее есть свои нюансы настройки. + +Если ничего не работает, приходится перенаправлять трафик через сторонний хост. +Предлагается использовать прозрачный редирект через socks5 посредством iptables+redsocks, либо iptables+iproute+vpn. +Настройка варианта с redsocks на openwrt описана в https.txt. +Настройка варианта с iproute+wireguard - в wireguard_iproute_openwrt.txt. + + +Почему стоит вложиться в покупку VPS +------------------------------------ + +VPS - это виртуальный сервер. Существует огромное множество датацентров, предлагающих данную услугу. +На VPS могут выполняться какие угодно задачи. От простого веб сайта до навороченной системы собственной разработки. +Можно использовать VPS и для поднятия собственного vpn или прокси. +Сама широта возможных способов применения , распространенность услуги сводят к минимуму возможности +регуляторов по бану сервисов такого типа. Да, если введут белые списки, то решение загнется, но это будет уже другая +реальность, в которой придется изобретать иные решения. +Пока этого не сделали, никто не будет банить хостинги просто потому , что они предоставляют хостинг услуги. +Вы как индивидуум скорее всего никому не нужны. Подумайте чем вы отличаетесь от известного VPN провайдера. +VPN провайдер предоставляет _простую_ и _доступную_ услугу по обходу блокировок для масс. +Этот факт делает его первоочередной целью блокировки. РКН направит уведомление, после отказа сотрудничать +заблокирует VPN. Предоплаченная сумма пропадет. +У регуляторов нет и никогда не будет ресурсов для тотальной проверки каждого сервера в сети. +Возможен китайский расклад, при котором DPI выявляет vpn протоколы и динамически банит IP серверов, +предоставляющих нелицензированный VPN. Но имея знания, голову, вы всегда можете обфусцировать +vpn трафик или применить другие типы VPN, более устойчивые к анализу на DPI или просто менее широкоизвестные, +а следовательно с меньшей вероятностью обнаруживамые регулятором. +У вас есть свобода делать на вашем VPS все что вы захотите, адаптируясь к новым условиям. +Да, это потребует знаний. Вам выбирать учиться и держать ситуацию под контролем, когда вам ничего запретить +не могут, или покориться системе. + +VPS можно прибрести в множестве мест. Существуют специализированные на поиске предложений VPS порталы. +Например, вот этот : https://vps.today/ +Для персонального VPN сервера обычно достаточно самой минимальной конфигурации, но с безлимитным трафиком или +с большим лимитом по трафику (терабайты). Важен и тип VPS. Openvz подойдет для openvpn, но +вы не поднимете на нем wireguard, ipsec, то есть все, что требует kernel mode. +Для kernel mode требуется тип виртуализации, предполагающий запуск полноценного экземпляра ОС linux +вместе с ядром. Подойдут kvm, xen, hyper-v, vmware. + +По цене можно найти предложения, которые будут дешевле готовой VPN услуги, но при этом вы сам хозяин в своей лавке +и не рискуете попасть под бан регулятора, разве что "заодно" под ковровую бомбардировку с баном миллионов IP. +Кроме того, если вам совсем все кажется сложным, прочитанное вызывает ступор, и вы точно знаете, что ничего +из описанного сделать не сможете, то вы сможете хотя бы использовать динамическое перенаправление портов ssh +для получения шифрованного socks proxy и прописать его в броузер. Знания linux не нужны совсем. +Это вариант наименее напряжный для чайников, хотя и не самый удобный в использовании. diff --git a/docs/wireguard/010-wg-mod.patch b/docs/wireguard/010-wg-mod.patch new file mode 100644 index 0000000..1577da6 --- /dev/null +++ b/docs/wireguard/010-wg-mod.patch @@ -0,0 +1,133 @@ +Index: WireGuard-0.0.20190123/src/cookie.c +=================================================================== +--- WireGuard-0.0.20190123.orig/src/cookie.c ++++ WireGuard-0.0.20190123/src/cookie.c +@@ -193,6 +193,8 @@ void wg_cookie_message_create(struct mes + xchacha20poly1305_encrypt(dst->encrypted_cookie, cookie, COOKIE_LEN, + macs->mac1, COOKIE_LEN, dst->nonce, + checker->cookie_encryption_key); ++ // MOD : randomize trash ++ dst->header.trash = gen_trash(); + } + + void wg_cookie_message_consume(struct message_handshake_cookie *src, +Index: WireGuard-0.0.20190123/src/messages.h +=================================================================== +--- WireGuard-0.0.20190123.orig/src/messages.h ++++ WireGuard-0.0.20190123/src/messages.h +@@ -53,23 +53,41 @@ enum limits { + MAX_QUEUED_PACKETS = 1024 /* TODO: replace this with DQL */ + }; + ++/* + enum message_type { +- MESSAGE_INVALID = 0, +- MESSAGE_HANDSHAKE_INITIATION = 1, +- MESSAGE_HANDSHAKE_RESPONSE = 2, +- MESSAGE_HANDSHAKE_COOKIE = 3, +- MESSAGE_DATA = 4 ++ MESSAGE_INVALID = 0, ++ MESSAGE_HANDSHAKE_INITIATION = 1, ++ MESSAGE_HANDSHAKE_RESPONSE = 2, ++ MESSAGE_HANDSHAKE_COOKIE = 3, ++ MESSAGE_DATA = 4 + }; ++*/ ++ ++// MOD : message type ++enum message_type { ++ MESSAGE_INVALID = 0xE319CCD0, ++ MESSAGE_HANDSHAKE_INITIATION = 0x48ADE198, ++ MESSAGE_HANDSHAKE_RESPONSE = 0xFCA6A8F3, ++ MESSAGE_HANDSHAKE_COOKIE = 0x64A3BB18, ++ MESSAGE_DATA = 0x391820AA ++}; ++ ++// MOD : generate fast trash without true RNG ++__le32 gen_trash(void); + + struct message_header { +- /* The actual layout of this that we want is: +- * u8 type +- * u8 reserved_zero[3] +- * +- * But it turns out that by encoding this as little endian, +- * we achieve the same thing, and it makes checking faster. +- */ +- __le32 type; ++ /* The actual layout of this that we want is: ++ * u8 type ++ * u8 reserved_zero[3] ++ * ++ * But it turns out that by encoding this as little endian, ++ * we achieve the same thing, and it makes checking faster. ++ */ ++ ++ // MOD : trash field to change message size and add 4 byte offset to all fields ++ __le32 trash; ++ ++ __le32 type; + }; + + struct message_macs { +Index: WireGuard-0.0.20190123/src/noise.c +=================================================================== +--- WireGuard-0.0.20190123.orig/src/noise.c ++++ WireGuard-0.0.20190123/src/noise.c +@@ -17,6 +17,24 @@ + #include + #include + ++ ++// MOD : trash generator ++__le32 gtrash = 0; ++__le32 gen_trash(void) ++{ ++ if (gtrash) ++ gtrash = gtrash*1103515243 + 12345; ++ else ++ // first value is true random ++ get_random_bytes_wait(>rash, sizeof(gtrash)); ++ return gtrash; ++} ++ + /* This implements Noise_IKpsk2: + * + * <- s +@@ -515,6 +533,10 @@ wg_noise_handshake_create_initiation(str + &handshake->entry); + + handshake->state = HANDSHAKE_CREATED_INITIATION; ++ ++ // MOD : randomize trash ++ dst->header.trash = gen_trash(); ++ + ret = true; + + out: +@@ -655,6 +677,10 @@ bool wg_noise_handshake_create_response( + &handshake->entry); + + handshake->state = HANDSHAKE_CREATED_RESPONSE; ++ ++ // MOD : randomize trash ++ dst->header.trash = gen_trash(); ++ + ret = true; + + out: +Index: WireGuard-0.0.20190123/src/send.c +=================================================================== +--- WireGuard-0.0.20190123.orig/src/send.c ++++ WireGuard-0.0.20190123/src/send.c +@@ -200,6 +200,10 @@ static bool encrypt_packet(struct sk_buf + header->header.type = cpu_to_le32(MESSAGE_DATA); + header->key_idx = keypair->remote_index; + header->counter = cpu_to_le64(PACKET_CB(skb)->nonce); ++ ++ // MOD : randomize trash ++ header->header.trash = gen_trash(); ++ + pskb_put(skb, trailer, trailer_len); + + /* Now we can encrypt the scattergather segments */ diff --git a/docs/wireguard/wireguard-mod.txt b/docs/wireguard/wireguard-mod.txt new file mode 100644 index 0000000..5cb7e3f --- /dev/null +++ b/docs/wireguard/wireguard-mod.txt @@ -0,0 +1,244 @@ +Посвящено возможной блокировке в РФ VPN протоколов через DPI. +Предпосылками являются последние законодательные акты и во всю сочащиеся "секретные" записки. +В РФ разрабатываются и готовятся к применению более продвинутые решения по блокировке трафика. +Вполне вероятно будут резать стандартные VPN протоколы. Нам надо быть к этому готовыми. + +Один из возможных и перспективных путей решения данного вопроса - кустомная модификация +исходников VPN с целью незначительного изменения протокола, ломающего стандартные модули обнаружения в DPI. +Это относительно сложно, доступно только для гиков. +Никто не будет разрабатывать специальные модули обнаружения в DPI, если только кто-то не сделает простое и +удобное решение для всех, и его станут широко применять. Но это маловероятно, и даже если и так, +то всегда можно модифицировать протокол чуток по другому. Делать моды для DPI несравненно дольше +и дороже, чем клепать на коленке изменения протокола для wireguard. + + +ЗАМЕЧЕНИЕ : альтернативой модификации конечного софта для VPN является использование "навесных" +обфускаторов. см : https://github.com/bol-van/ipobfs + + +Рассмотрю что нам надо пропатчить в wireguard. Модифицированный wireguard проверен на виртуалках +с десктопным linux, он работает, сообщения в wireshark действительно не вписываются в стандартный +протокол и не опознаются. + +Wireguard протокол очень простой. Все сообщения описаны в messages.h +Поставим себе целью сделать 2 простые модификации : +1) Добавим в начало всех сообщений немного мусора, чтобы изменить размер сообщений и смещения полей +2) Изменим коды типов сообщений +Этого может быть вполне достаточно для обмана DPI + +--messages.h-------------------------- +/* +enum message_type { + MESSAGE_INVALID = 0, + MESSAGE_HANDSHAKE_INITIATION = 1, + MESSAGE_HANDSHAKE_RESPONSE = 2, + MESSAGE_HANDSHAKE_COOKIE = 3, + MESSAGE_DATA = 4 +}; +*/ + +// MOD : message type +enum message_type { + MESSAGE_INVALID = 0xE319CCD0, + MESSAGE_HANDSHAKE_INITIATION = 0x48ADE198, + MESSAGE_HANDSHAKE_RESPONSE = 0xFCA6A8F3, + MESSAGE_HANDSHAKE_COOKIE = 0x64A3BB18, + MESSAGE_DATA = 0x391820AA +}; + +// MOD : generate fast trash without true RNG +__le32 gen_trash(void); + +struct message_header { + /* The actual layout of this that we want is: + * u8 type + * u8 reserved_zero[3] + * + * But it turns out that by encoding this as little endian, + * we achieve the same thing, and it makes checking faster. + */ + + // MOD : trash field to change message size and add 4 byte offset to all fields + __le32 trash; + + __le32 type; +}; +-------------------------------------- + +Напишем функцию для генерации trash. Функция должна быть быстрая, важно не замедлить скорость. +Мы не расчитываем, что нас будут специально ловить, иначе бы пришлось делать полноценный обфускатор. +Задача лишь сломать стандартный модуль обнаружения протокола wireguard. Потому истинная рандомность +trash не важна. +Но все же немного "трэша" не повредит. Гонки между тредами так же пофигистичны. Это же трэш. + +--noise.c----------------------------- +// MOD : trash generator +__le32 gtrash = 0; +__le32 gen_trash(void) +{ + if (gtrash) + gtrash = gtrash*1103515243 + 12345; + else + // first value is true random + get_random_bytes_wait(>rash, sizeof(gtrash)); + return gtrash; +} +-------------------------------------- + +Теперь осталось найти все места, где создаются сообщения и внести туда заполнение поля trash. +Сообщений всего 4. Их можно найти по присваиванию полю type одного из значений enum message_type. + +2 места в noise.c в функциях wg_noise_handshake_create_initiation и wg_noise_handshake_create_response, +1 место в cookie.c в функции wg_cookie_message_create +Дописываем в конец инициализации структуры сообщения : + +-------------------------------------- + // MOD : randomize trash + dst->header.trash = gen_trash(); +-------------------------------------- + +и 1 место в send.c в функции encrypt_packet + +-------------------------------------- + // MOD : randomize trash + header->header.trash = gen_trash(); +-------------------------------------- + + +Вот и весь патчинг. Полный patch (версия wireguard 0.0.20190123) лежит в 010-wg-mod.patch. +Патчинг кода - самое простое. Для десктопного linux дальше все просто. +Пересобираем через make, устанавливаем через make install, перегружаем +модуль wireguard, перезапускаем интерфейсы, и все готово. + +Настоящий геморой начнется когда вы это попытаетесь засунуть на роутер под openwrt. +Одна из больших проблем linux - отсутствие совместимости драйверов на уровне бинариков. +Поэтому собирать необходимо в точности под вашу версию ядра и в точности под его .config. +Вам придется либо полностью самостоятельно собирать всю прошивку, либо найти SDK в точности +от вашей версии прошивки для вашей архитектуры и собрать модуль с помощью этого SDK. +Последний вариант более легкий. +Для сборки вам понадобится система на linux x86_64. Ее можно установить в виртуалке. +Теоретически можно пользоваться WSL из win10, но на практике там очень медленное I/O, +по крайней мере на старых версиях win10. Безумно медленное. Будете собирать вечность. +Может в новых win10 что-то и улучшили, но я бы сразу расчитывал на полноценный linux. + +Находим здесь вашу версию : https://downloads.openwrt.org/ +Скачиваем файл openwrt-sdk-*.tar.xz или lede-sdk-*.tar.xz +Например : https://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/generic/openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64.tar.xz +Если ваша версия непонятна или стара, то проще будет найти последнюю прошивку и перешить роутер. +Распаковываем SDK. Следующими командами можно собрать оригинальный вариант wireguard : + +# scripts/feeds update -a +# scripts/feeds install -a +# make defconfig +# make -j 4 package/wireguard/compile + +Сборка будет довольно долгой. Ведь придется подтащить ядро, собрать его, собрать зависимости. +"-j 4" означает использовать 4 потока. Впишите вместо 4 количество доступных cpu cores. + +Получим следующие файлы : + +openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/bin/targets/ar71xx/generic/packages/kmod-wireguard_4.9.152+0.0.20190123-1_mips_24kc.ipk +openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/bin/packages/mips_24kc/base/wireguard-tools_0.0.20190123-1_mips_24kc.ipk + +Но это будет оригинальный wireguard. Нам нужен патченый. +Установим quilt и mc для нормального редактора вместо vim : + +# sudo apt-get update +# sudo apt-get install quilt mc + +# make package/wireguard/clean +# make package/wireguard/prepare V=s QUILT=1 + + +Сорцы приготовлены для сборки в : + openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/WireGuard-0.0.20190123/src + +# cd build_dir/target-mips_24kc_musl/linux-ar71xx_generic/WireGuard-0.0.20190123/src +# quilt push -a +# quilt new 010-wg-mod.patch +# export EDITOR=mcedit + +Далее будет открываться редактор mcedit, в который нужно вносить изменения в каждый файл : + +# quilt edit messages.h +# quilt edit cookie.c +# quilt edit noise.c +# quilt edit send.c +# quilt diff +# quilt refresh + +Получили файл патча в : +openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/WireGuard-0.0.20190123/patches/010-wg-mod.patch + +Выходим в корень SDK. + +# make package/wireguard/compile V=99 + +Если не было ошибок, то получили измененные ipk. +Патч можно зафиксировать в описании пакета : + +# make package/wireguard/update + +Получим : +openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/feeds/base/package/network/services/wireguard/patches/010-wg-mod.patch +При последующей очистке и пересборке он будет автоматом применяться. + + +АЛЬТЕРНАТИВА : можно не возиться с quilt. +сделайте +# make package/wireguard/clean +# make package/wireguard/prepare +и напрямую модифицируйте или копируйте файлы в + openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/WireGuard-0.0.20190123/src +затем +# make package/wireguard/compile + +Если нужно поменять версию wireguard, то идите в +openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64/feeds/base/package/network/services/wireguard/Makefile +поменяйте там версию в PKG_VERSION на последнюю из : https://git.zx2c4.com/WireGuard +скачайте tar.xz с этой версией , вычислите его sha256sum, впишите в PKG_HASH + +1 раз где-нибудь пропатчите файлы последней версии wireguard в текстовом редакторе, скопируйте в build_dir, +сделайте версию для openwrt. эти же файлы скопируйте на ваш сервер с десктопным linux, сделайте там make / make install + +Но имейте в виду, что build_dir - локация для временных файлов. +make clean оттуда все снесет, включая ваши модификации. Модифицированные файлы лучше сохранить отдельно, +чтобы потом было легко скопировать обратно. + +Полученные ipk копируем на роутер в /tmp, устанавливаем через +# cd /tmp +# rm -r /tmp/opkg-lists +# opkg install *.ipk +Если требует зависимостей, то +# opkg update +# opkg install .... <зависимости> +# rm -r /tmp/opkg-lists +# opkg install *.ipk + +В /tmp/opkg-lists opkg хранит кэш списка пакетов. Если попытаться установить файл ipk, и такой же пакет +найдется в репозитории, opkg будет устанавливать из репозитория. А нам это не надо. + +# rmmod wireguard +# kmodloader +# dmesg | tail +должны увидеть что-то вроде : +[8985.415490] wireguard: WireGuard 0.0.20190123 loaded. See www.wireguard.com for information. +[8985.424178] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. +значит модуль загрузился + +Могут понадобиться ключи opkg --force-reinstall, --force-depends. +--force-depends поможет при несоответствии hash версии ядра. То есть версия x.x.x та же самая, но hash конфигурации разный. +При несоответствии x.x.x вы что-то делаете не так, работать это не будет. +Например : 4.14.56-1-b1186491495127cc6ff81d29c00a91fc, 4.14.56-1-3f8a21a63974cfb7ee67e41f2d4b805d +Это свидетельствует о несоответствии .config ядра при сборке прошивки и в SDK. +Если несоответствие легкое, то может все прокатить, но при более серьезной разнице в .config модуль может не загрузиться +или вызвать стабильные или хаотические падения ядра и перезагрузки (включая вариант беcконечной перезагрузки - bootloop). +Так что перед --force-depends убедитесь, что знаете как лечится такая ситуация, и не стоит это делать при отсутствии физического +доступа к девайсу. + +Когда поднимите линк, и вдруг ничего не будет работать, то посмотрите в wireshark udp пакеты +на порт endpoint. Они не должны начинаться с 0,1,2,3,4. В первых 4 байтах должен быть рандом, +в следующих 4 байтах - значения из измененного enum message_type. Если пакет все еще начинается с 0..4, +значит модуль wireguard оригинальный, что-то не собралось, не скопировалось, не перезапустилось. +В противном случае должен подняться линк, пинги ходить. Значит вы победили, поздравляю. +Регулятору будет намного сложнее поймать ваш VPN. diff --git a/docs/wireguard/wireguard_iproute_openwrt.txt b/docs/wireguard/wireguard_iproute_openwrt.txt new file mode 100644 index 0000000..9e7aa5a --- /dev/null +++ b/docs/wireguard/wireguard_iproute_openwrt.txt @@ -0,0 +1,519 @@ +Есть возможность поднять свой VPN сервер ? Не хотим использовать redsocks ? +Хотим завертывать на VPN только часть трафика ? +Например, из ipset zapret только порт tcp:443, из ipban - весь трафик, не только tcp ? +Да, с VPN такое возможно. +Опишу понятийно как настраивается policy based routing в openwrt на примере wireguard. +Вместо wireguard можно использовать openvpn или любой другой. Но wireguard прекрасен сразу несколькими вещами. +Главная из которых - в разы большая скорость, даже немного превышающая ipsec. +Ведь openvpn основан на tun, а tun - всегда в разы медленнее решения в kernel mode, +и если для PC оно может быть не так актуально, для soho роутеров - более чем. +Wireguard может дать 50 mbps там, где openvpn еле тащит 10. +Но есть и дополнительное требование. Wireguard работает в ядре, значит ядро должно +быть под вашим контролем. vps на базе openvz не подойдет ! Нужен xen, kvm, +любой другой вариант, где загружается ваше собственное ядро, а не используется +общее, разделяемое на множество vps. В openvz вам никто не даст лезть в ядро. + +Если вдруг окажется, что основные VPN протоколы блокируется DPI, включая wireguard, +то стоит смотреть в сторону либо обфускации трафика до состояния нераспознаваемого +мусора, либо маскировки под TLS (лучше на порт 443). Скорость, конечно, вы потеряете, но это +та самая ситуация, которая описывается словами "медленно или никак". +Маскированные под TLS протоколы DPI может распознать двумя действиями : +пассивно через анализ статистических характеристик пакетов (время, размер, периодичность, ..) +или активно через подключение к вашему серверу от себя и попытку поговорить с сервером по +известным протоколам (называется active probing). Если вы подключаетесь к серверу +с фиксированных IP, то активный пробинг можно надежно заблокировать через ограничение +диапазонов IP адресов, с которых можно подключаться к серверу. В ином случае можно использовать +технику "port knocking". +Перспективным направлением так же считаю легкую собственную модификацию исходников +существующих VPN с целью незначительного изменения протокола, которая ломает стандартные +модули обнаружения в DPI. В wireguard можно добавить в начало пакета handshake лишнее поле, +заполненное случайным мусором. Разумеется, в таком случае требуется держать измененную версию +как на сервере, так и на клиенте. Если затея срабатывает, то вы получаете максимальную +скорость, при этом полностью нагибая регулятора. +Полезная инфа по теме : https://habr.com/ru/post/415977/ + +Понятийно необходимо выполнить следующие шаги : +1) Поднять vpn сервер. +2) Настроить vpn клиент. Результат этого шага - получение поднятого интерфейса vpn. +Будь то wireguard, openvpn или любой другой тип vpn. +3) Создать такую схему маршрутизации, при которой пакеты, помечаемые особым mark, +попадают на vpn, а остальные идут обычным способом. +4) Создать правила, выставляющие mark для всего трафика, который необходимо рулить на vpn. +Критерии могут быть любые, ограниченные лишь возможностями iptables и вашим воображением. + +Будем считать наш vpn сервер находится на ip 91.15.68.202. +Вешать его будем на udp порт 12345. На этот же порт будем вешать и клиентов. +Сервер работает под debian 9. Клиент работает под openwrt. +Для vpn отведем подсеть 192.168.254.0/24. + +--- Поднятие сервера --- + +На сервере должны быть установлены заголовки ядра (linux-headers-...) и компилятор gcc. +Качаем последний tar.xz с wireguard отсюда : https://git.zx2c4.com/WireGuard/ + +# tar xf WireGuard*.tar.xz +# cd WireGuard-*/src +# make +# strip --strip-debug wireguard.ko +# sudo make install + +wireguard основан на понятии криптороутинга. Каждый пир (сервер - тоже пир) +имеет пару открытый/закрытый ключ. Закрытый ключ остается у пира, +открытый прописывается у его партнера. Каждый пир авторизует другого +по знанию приватного ключа, соответствующего прописанному у него публичному ключу. +Протокол построен таким образом, что на все неправильные udp пакеты не следует ответа. +Не знаешь приватный ключ ? Не смог послать правильный запрос ? Долбись сколько влезет, +я тебе ничего не отвечу. Это защищает от активного пробинга со стороны DPI и просто +экономит ресурсы. +Значит первым делом нужно создать 2 пары ключей : для сервера и для клиента. +wg genkey генерит приватный ключ, wg pubkey получает из него публичный ключ. + +# wg genkey +oAUkmhoREtFQ5D5yZmeHEgYaSWCcLYlKe2jBP7EAGV0= +# echo oAUkmhoREtFQ5D5yZmeHEgYaSWCcLYlKe2jBP7EAGV0= | wg pubkey +bCdDaPYSTBZVO1HTmKD+Tztuf3PbOWGDWfz7Lb1E6C4= +# wg genkey +OKXX0TSlyjJmGt3/yHlHxi0AqjJ0vh+Msne3qEHk0VM= +# echo OKXX0TSlyjJmGt3/yHlHxi0AqjJ0vh+Msne3qEHk0VM= | wg pubkey +EELdA2XzjcKxtriOCPBXMOgxlkgpbRdIyjtc3aIpkxg= + +Пишем конфиг +--/etc/wireguard/wgvps.conf------------------- +[Interface] +PrivateKey = OKXX0TSlyjJmGt3/yHlHxi0AqjJ0vh+Msne3qEHk0VM= +ListenPort = 12345 + +[Peer] +#Endpoint = +PublicKey = bCdDaPYSTBZVO1HTmKD+Tztuf3PbOWGDWfz7Lb1E6C4= +AllowedIPs = 192.168.254.3 +PersistentKeepalive=20 +---------------------------------------------- + +Wireguard - минималистичный vpn. В нем нет никаких средств для автоконфигурации ip. +Все придется прописывать руками. +В wgvps.conf должны быть перечислены все пиры с их публичными ключами, +а так же прописаны допустимые для них ip адреса. +Назначим нашему клиенту 192.168.254.3. Сервер будет иметь ip 192.168.254.1. +Endpoint должен быть прописан хотя бы на одном пире. +Если endpoint настроен для пира, то wireguard будет периодически пытаться к нему подключиться. +В схеме клиент/сервер у сервера можно не прописывать endpoint-ы пиров, что позволит +менять ip и быть за nat. Endpoint пира настраивается динамически после успешной фазы +проверки ключа. + +Включаем маршрутизцию : +# echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf +# sysctl -p + +Интерфейс конфигурится стандартно для дебианоподобных систем : + +--/etc/network/interfaces.d/wgvps------------- +auto wgvps +iface wgvps inet static + address 192.168.254.1 + netmask 255.255.255.0 + pre-up ip link add $IFACE type wireguard + pre-up wg setconf $IFACE /etc/wireguard/$IFACE.conf + post-up iptables -t nat -A POSTROUTING -o eth0 -s 192.168.254.0/24 -j MASQUERADE + post-up iptables -A FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu + post-down iptables -D FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu + post-down iptables -t nat -D POSTROUTING -o eth0 -s 192.168.254.0/24 -j MASQUERADE + post-down ip link del $IFACE +---------------------------------------------- + +Поднятие через ifup wgvps, опускание через ifdown wgvps. +При поднятии интерфейса заодно настраивается nat. eth0 здесь означает интерфейс vpn сервера с инетовским ip адресом. +Если у вас какая-то система управления фаерволом, то надо настройку nat прикручивать туда. +Пример написан для простейшего случая, когда никаких ограничений нет, таблицы iptables пустые. +Чтобы посмотреть текущие настройки wireguard, запустите 'wg' без параметров. + + +--- Поднятие клиента --- + +# opkg update +# opkg install wireguard + +Добавляем записи в конфиги. + +--/etc/config/network-------------------------- +config interface 'wgvps' + option proto 'wireguard' + option auto '1' + option private_key 'oAUkmhoREtFQ5D5yZmeHEgYaSWCcLYlKe2jBP7EAGV0=' + option listen_port '12345' + option metric '9' + option mtu '1420' + +config wireguard_wgvps + option public_key 'EELdA2XzjcKxtriOCPBXMOgxlkgpbRdIyjtc3aIpkxg= + list allowed_ips '0.0.0.0/0' + option endpoint_host '91.15.68.202' + option endpoint_port '12345' + option route_allowed_ips '0' + option persistent_keepalive '20' + +config interface 'wgvps_ip' + option proto 'static' + option ifname '@wgvps' + list ipaddr '192.168.254.3/24' + +config route + option interface 'wgvps' + option target '0.0.0.0/0' + option table '100' + +config rule + option mark '0x800/0x800' + option priority '100' + option lookup '100' +------------------------------------------------ + +--/etc/config/firewall-------------------------- +config zone + option name 'tunvps' + option output 'ACCEPT' + option input 'REJECT' + option masq '1' + option mtu_fix '1' + option forward 'REJECT' + option network 'wgvps wgvps_ip' + +config forwarding + option dest 'tunvps' + option src 'lan' + +config rule + option name 'Allow-ICMP-tunvps' + option src 'tunvps' + option proto 'icmp' + option target 'ACCEPT' + +config rule + option target 'ACCEPT' + option src 'wan' + option proto 'udp' + option family 'ipv4' + option src_port '12345' + option src_ip '91.15.68.202' + option name 'WG-VPS' +------------------------------------------------ + +Что тут было сделано : +*) Настроен интерфейс wireguard. Указан собственный приватный ключ. +*) Настроен пир-партнер с указанием его публичнго ключа и endpoint (ip:port нашего сервера) + такая настройка заставит периодически долбиться на сервер по указанному ip + route_allowed_ip '0' запрещает автоматическое создание маршрута + allowed_ips '0.0.0.0/0' разрешает пакеты с любым адресом источника. + ведь мы собираемся подключаться к любым ip в инете + persistent_keepalive '20' помогает исключить дропание mapping на nat-е, если мы сидим за ним, + да и вообще полезная вещь, чтобы не было подвисших пиров +*) Статическая конфигурация ip интерфейса wgvps. +*) Маршрут default route на wgvps в отдельной таблице маршрутизации с номером 100. Аналог команды ip route add .. table 100 +*) Правило использовать таблицу 100 при выставлении в mark бита 0x800. Аналог команды ip rule. +*) Отдельная зона фаервола для VPN - 'tunvps'. В принципе ее можно не создавать, можете приписать интерфейс к зоне wan. + Но в случае с отдельной зоной можно настроить особые правила на подключения с vpn сервера в сторону клиента. +*) Разрешение форвардинга между локалкой за роутером и wgvps. +*) Разрешение принимать icmp от vpn сервера, включая пинги. ICMP жизненно важны для правильного функционирования ip сети ! +*) И обязательно проткнуть дырку в фаерволе, чтобы принимать пакеты wireguard со стороны инетовского ip vpn сервера. + +# fw3 restart +# ifup wgvps +# ifconfig wgvps +# ping 192.168.254.1 + +Если все хорошо, должны ходить пинги. +С сервера не помешает : +# ping 192.168.254.3 + + +--- Маркировка трафика --- + +Завернем на vpn все из ipset zapret на tcp:443 и все из ipban. +OUTPUT относится к исходящим с роутера пакетам, PREROUTING - ко всем остальным. +Если с самого роутера ничего заруливать не надо, можно опустить все до команд с PREROUTING. + +--/etc/firewall.user---------------------------- +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan_all wan_iface +for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt OUTPUT -t mangle -o $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 +done + +network_get_device DEVICE lan +ipt PREROUTING -t mangle -i $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 +------------------------------------------------ + +# fw3 restart + + +--- По поводу двойного NAT --- + +В описанной конфигурации nat выполняется дважды : на роутере-клиенте происходит замена адреса источника из LAN +на 192.168.254.3 и на сервере замена 192.168.254.3 на внешний адрес сервера в инете. +Зачем так делать ? Исключительно для простоты настройки. Но если вы готовы чуток еще поднапрячься и не хотите двойного nat, +то можете вписать в /etc/config/firewall "masq '0'", на сервер дописать маршрут до вашей подсети lan. +Чтобы не делать это для каждого клиента, можно отвести под всех клиентов диапазон 192.168.0.0-192.168.127.255 +и прописать его одним маршрутом. + +--/etc/network/interfaces.d/wgvps------------- + post-up ip route add dev $IFACE 192.168.0.0/17 + post-down ip route del dev $IFACE 192.168.0.0/17 +---------------------------------------------- + +Так же необходимо указать wireguard дополнительные разрешенные ip для peer : + +--/etc/wireguard/wgvps.conf------------------- +[Peer] +PublicKey = bCdDaPYSTBZVO1HTmKD+Tztuf3PbOWGDWfz7Lb1E6C4= +AllowedIPs = 192.168.254.3, 192.168.2.0/24 +---------------------------------------------- + +Всем клиентам придется назначать различные диапазоны адресов в lan и индивидуально прописывать AllowedIPs +для каждого peer. + +# ifdown wgvps ; ifup wgvps + +На клиенте разрешим форвард icmp, чтобы работал пинг и корректно определялось mtu. + +--/etc/config/firewall-------------------------- +config rule + option name 'Allow-ICMP-tunvps' + option src 'tunvps' + option dest 'lan' + option proto 'icmp' + option target 'ACCEPT' +------------------------------------------------ + +Существуют еще два неочевидных нюанса. + +Первый из них касается пакетов с самого роутера (цепочка OUTPUT). +Адрес источника выбирается по особому алгоритму, если программа явно его не задала, еще до этапа iptables. +Он берется с интерфейса, куда бы пошел пакет при нормальном раскладе. +Обратная маршрутизация с VPN станет невозможной, да и wireguard такие пакеты порежет, поскольку они не вписываются в AllowedIPs. +Никаким мистическим образом автоматом source address не поменяется. +В прошлом варианте настройки проблема решалось через маскарад. Сейчас же маскарада нет. +Потому все же придется его делать в случае, когда пакет изначально направился бы через wan, +а мы его завертываем на VPN. Помечаем такие пакеты марком 0x1000. +Если вам не актуальны исходящие с самого роутера, то можно ничего не менять. + +Другой нюанс связан с обработкой проброшенных на vps портов, соединения по которым приходят как входящие с интерфейса wgvps. +Представьте себе, что вы пробросили порт 2222. Кто-то подключается с адреса 1.2.3.4. Вам приходит пакет SYN 1.2.3.4:51723=>192.168.2.2:2222. +По правилам маршрутизации он пойдет в локалку. 192.168.2.2 его обработает, ответит пакетом ACK 192.168.2.2:2222=>1.2.3.4:51723. +Этот пакет придет на роутер. И куда он дальше пойдет ? Если он не занесен в ipban, то согласно правилам машрутизации +он пойдет по WAN интерфейсу, а не по исходному wgvps. +Чтобы решить эту проблему, необходимо воспользоваться CONNMARK. Существуют 2 отдельных марка : fwmark и connmark. +connmark относится к соединению, fwmark - к пакету. Трэкингом соединений занимается conntrack. +Посмотреть его таблицу можно командой "conntrack -L". Там же найдете connmark : mark=xxxx. +Как только видим приходящий с wgvps пакет с новым соединением, отмечаем его connmark как 0x800/0x800. +При этом fwmark не меняется, иначе бы пакет тут же бы завернулся обратно на wgvps согласно ip rule. +Если к нам приходит пакет с какого-то другого интерфейса, то восстанавливаем его connmark в fwmark по маске 0x800. +И теперь он подпадает под правило ip rule, заворачиваясь на wgvps, что и требовалось. + +--/etc/firewall.user---------------------------- +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan_all wan_iface +for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt OUTPUT -t mangle -o $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -j MARK --set-mark 0x1000/0x1000 +done + +network_get_device DEVICE lan +ipt PREROUTING -t mangle -i $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 + +# do masquerade for OUTPUT to ensure correct outgoing address +ipt postrouting_tunvps_rule -t nat -m mark --mark 0x1000/0x1000 -j MASQUERADE + +# incoming from wgvps +network_get_device DEVICE wgvps +ipt PREROUTING -t mangle ! -i $DEVICE -j CONNMARK --restore-mark --nfmask 0x800 --ctmask 0x800 +ipt PREROUTING -t mangle -i $DEVICE -m conntrack --ctstate NEW -j CONNMARK --set-xmark 0x800/0x800 +------------------------------------------------ + + +# fw3 restart + +Сейчас уже можно с vpn сервера пингануть ip адрес внутри локалки клиента. Пинги должны ходить. + +Отсутствие двойного NAT значительно облегчает проброс портов с внешнего IP vpn сервера в локалку какого-либо клиента. +Для этого надо выполнить 2 действия : добавить разрешение в фаервол на клиенте и сделать dnat на сервере. +Пример форварда портов 5001 и 5201 на 192.168.2.2 : + +--/etc/config/firewall-------------------------- +config rule + option target 'ACCEPT' + option src 'tunvps' + option dest 'lan' + option proto 'tcp udp' + option dest_port '5001 5201' + option dest_ip '192.168.2.2' + option name 'IPERF' +------------------------------------------------ + +# fw3 restart + +--/etc/network/interfaces.d/wgvps------------- + post-up iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 + post-up iptables -t nat -A POSTROUTING -o $IFACE -d 192.168.2.2 -p tcp -m multiport --dports 5001,5201 -j MASQUERADE + post-up iptables -t nat -A PREROUTING -i eth0 -p udp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 + post-up iptables -t nat -A POSTROUTING -o $IFACE -d 192.168.2.2 -p udp -m multiport --dports 5001,5201 -j MASQUERADE + post-down iptables -t nat -D PREROUTING -i eth0 -p tcp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 + post-down iptables -t nat -D POSTROUTING -o $IFACE -d 192.168.2.2 -p tcp -m multiport --dports 5001,5201 -j MASQUERADE + post-down iptables -t nat -D PREROUTING -i eth0 -p udp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 + post-down iptables -t nat -D POSTROUTING -o $IFACE -d 192.168.2.2 -p udp -m multiport --dports 5001,5201 -j MASQUERADE +---------------------------------------------- + +# ifdown wgvps ; ifup wgvps + +Пример приведен для iperf и iperf3, чтобы показать как пробрасывать несколько портов tcp+udp с минимальным количеством команд. +Проброс tcp и udp порта так же необходим для полноценной работы bittorrent клиента, чтобы работали входящие. + +--- Как мне отправлять на vpn весь трафик с bittorrent ? --- + +Можно поступить так : посмотрите порт в настройках torrent клиента, убедитесь, что не поставлено "случайный порт", +добавьте на роутер правило маркировки по порту источника. +Но мне предпочтительно иное решение. На windows есть замечательная возможность +прописать правило установки поля качества обслуживания в заголовках ip пакетов в зависимости от процесса-источника. +Для windows 7/2008R2 необходимо будет установить ключик реестра и перезагрузить комп : +# reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\QoS /v "Do not use NLA" /t REG_SZ /d "1" +Редактировать политику можно в : gpedit.msc -> Computer Configuration -> Windows Settings -> Policy-based QoS +На win 10 ключик реестра больше не работает, правила qos в gpedit применяются только для профиля домена. +Необходимо пользоваться командой powershell New-NetQosPolicy. Гуглите хелп по ней. Пример : +# powershell New-NetQosPolicy -Name "torrent" -AppPathNameMatchCondition "qbittorrent.exe" -DSCPAction 1 +Однозначно требуется проверка в wireshark или netmon успешности установки поля dscp. Если там по-прежнему 0x00, +значит что-то не сработало. 0x04 означает DSCP=1 (dscp находится в старших 6 битах). + +На роутере в фаер прописываем правило : + +--/etc/config/firewall-------------------------- +config rule + option target 'MARK' + option src 'lan' + option proto 'all' + option extra '-m dscp --dscp 1' + option name 'route-dscp-1' + option set_mark '0x0800/0x0800' +------------------------------------------------ + +# fw3 restart + +Теперь все с полем dscp "1" идет на vpn. Клиент сам решает какой трафик ему нужно забрасывать +на vpn, перенастраивать роутер не нужно. +На linux клиенте проще всего будет выставлять dscp в iptables по номеру порта источника : + +--/etc/rc.local--------------------------------- +iptables -A OUTPUT -t mangle -p tcp --sport 23444 -j DSCP --set-dscp 1 +iptables -A OUTPUT -t mangle -p udp --sport 23444 -j DSCP --set-dscp 1 +------------------------------------------------ + +можно привязываться к pid процесса, но тогда нужно перенастраивать iptables при каждом перезапуске +торент клиента, это требует рута, и все становится очень неудобно. + + +--- Автоматизация проброса портов через miniupnd --- + +Да, его тоже можно использовать на vps. Только как всегда есть нюансы. + +miniupnpd поддерживает 3 протокола IGD : upnp,nat-pmp и pcp. +upnp и pcp работают через мультикаст, который не пройдет через wgvps. +nat-pmp работает через посылку специальных сообщений на udp:5351 на default gateway. +Обычно их обслуживает miniupnpd на роутере. При создании lease miniupnpd добавляет +правила для проброса портов в цепочку iptables MINIUPNPD, при потери lease - убирает. + +udp:5351 можно перенаправить на vpn сервер через DNAT, чтобы их обрабатывал miniupnpd там. +Но вы должны иметь однозначный критерий перенаправления. +Если вы решили завернуть на vpn все, то проблем нет. Пробрасываем udp:5351 безусловно. +Если у вас идет перенаправление только с торрент, то необходимо к условию перенаправления +добавить условия, выделяющие torrent трафик из прочего. Или по dscp, или по sport. +Чтобы запросы от остальных программ обрабатывались miniupnpd на роутере. +Если какая-то программа создаст lease не там, где нужно, то входящий трафик до нее не дойдет. + +На роутере стоит запретить протокол upnp, чтобы торрент клиент не удовлетворился запросом, +обслуженным по upnp на роутере, и пытался использовать nat-pmp. + +--/etc/config/upnp-------------------------- +config upnpd 'config' + ..... + option enable_upnp '0' +------------------------------------------------ + +/etc/init.d/miniupnpd restart + +Делаем проброс порта на роутере. +Для простоты изложения будем считать, что на vpn у нас завернут весь трафик. +Если это не так, то следует добавить фильтр в "config redirect". +Заодно выделяем диапазон портов для торрент клиентов. +Порт в торент клиенте следует прописать какой-то из этого диапазона. + +------------------------------------------------ +config redirect + option enabled '1' + option target 'DNAT' + option src 'lan' + option dest 'tunvps' + option proto 'udp' + option src_dport '5351' + option dest_ip '192.168.254.1' + option dest_port '5351' + option name 'NAT-PMP' + option reflection '0' +config rule + option enabled '1' + option target 'ACCEPT' + option src 'tunvps' + option dest 'lan' + option name 'tunvps-torrent' + option dest_port '28000-28009' +------------------------------------------------ + +fw3 reload + + +На сервере : + +apt install miniupnpd + +--- /etc/miniupnpd/miniupnpd.conf -------- +enable_natpmp=yes +enable_upnp=no +lease_file=/var/log/upnp.leases +system_uptime=yes +clean_ruleset_threshold=10 +clean_ruleset_interval=600 +force_igd_desc_v1=no +listening_ip=192.168.254.1/16 +ext_ifname=eth0 +------------------------------------------ + +systemctl restart miniupnpd + +listening_ip прописан именно таким образом, чтобы обозначить диапазон разрешенных IP. +С других IP он не будет обрабатывать запросы на редирект. +В ext_ifname впишите название inet интерфейса на сервере. + +Запускаем торрент клиент. Попутно смотрим в tcpdump весь путь udp:5351 до сервера и обратно. +Смотрим syslog сервера на ругань от miniupnpd. +Если все ок, то можем проверить редиректы : iptables -t nat -nL MINIUPNPD +С какого-нибудь другого хоста (не vpn сервер, не ваше подключение) можно попробовать telnet-нуться на проброшенный порт. +Должно установиться соединение. Или качайте торент и смотрите в пирах флаг "I" (incoming). +Если "I" есть и по ним идет закачка, значит все в порядке. + +ОСОБЕННОСТЬ НОВЫХ DEBIAN : по умолчанию используются iptables-nft. miniupnpd работает с iptables-legacy. +ЛЕЧЕНИЕ : update-alternatives --set iptables /usr/sbin/iptables-legacy + + +--- А если не заработало ? --- + +Мануал пишется не как копипастная инструкция, а как помощь уже соображающему. +В руки вам ifconfig, ip, iptables, tcpdump, ping. В умелых руках творят чудеса. diff --git a/files/fake/fake_http_req_example.bin b/files/fake/fake_http_req_example.bin new file mode 100644 index 0000000..ce1d420 --- /dev/null +++ b/files/fake/fake_http_req_example.bin @@ -0,0 +1,9 @@ +GET / HTTP/1.1 +Host: www.iana.org +Connection: keep-alive +Upgrade-Insecure-Requests: 1 +User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4300.0 Safari/537.36 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 +Accept-Encoding: gzip, deflate +Accept-Language: en-US,en;q=0.9,ru;q=0.8 + diff --git a/files/fake/fake_tls13_clienthello_example.bin b/files/fake/fake_tls13_clienthello_example.bin new file mode 100644 index 0000000000000000000000000000000000000000..e641d731d161fb0ba957f374615d1ff823cb8948 GIT binary patch literal 517 zcmWe*W@KVuWMKTm%$(1?tu;a;@+xmmg=M`qx9j3Uf6r?s;>RMF%62k7ERt22tFu}y zVtMoa?RVleRtYXo4v{>4>g5-u134_r3_wS6G4KGfEQ2_M9D^i-gmDQ_sQ?2X0}oS%5l2QzNrAqh zo*{!6P*fa<4Z#K(FzB%`vof"$i" + [ -s "$i" ] && exec "$EXEDIR/zapret-ip" "$i" +} diff --git a/files/huawei/E8372/unfuck_nfqueue.ko b/files/huawei/E8372/unfuck_nfqueue.ko new file mode 100644 index 0000000000000000000000000000000000000000..c24ce5eb3d855ebbcbcac2d453e2db63a3ac53a1 GIT binary patch literal 5696 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 literal 0 HcmV?d00001 diff --git a/files/huawei/E8372/unzapret b/files/huawei/E8372/unzapret new file mode 100755 index 0000000..f040dfc --- /dev/null +++ b/files/huawei/E8372/unzapret @@ -0,0 +1,9 @@ +#!/system/bin/busybox sh + +rule="PREROUTING -t nat -i br0 ! -d 192.168.0.0/16 -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 1" +iptables -C $rule 2>/dev/null && iptables -D $rule +killall tpws + +rule="OUTPUT -t mangle -o wan0 -p tcp -m multiport --dports 80,443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass" +iptables -C $rule 2>/dev/null && iptables -D $rule +killall nfqws diff --git a/files/huawei/E8372/unzapret-ip b/files/huawei/E8372/unzapret-ip new file mode 100755 index 0000000..ccb7425 --- /dev/null +++ b/files/huawei/E8372/unzapret-ip @@ -0,0 +1,11 @@ +#!/system/bin/busybox sh + +rule="PREROUTING -t nat -i br0 -p tcp -m multiport --dports 80,443 -j tpws" +iptables -C $rule 2>/dev/null && iptables -D $rule +iptables -F tpws -t nat +iptables -X tpws -t nat +killall tpws + +rule="OUTPUT -t mangle -o wan0 -p tcp -m multiport --dports 80,443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass" +iptables -C $rule 2>/dev/null && iptables -D $rule +killall nfqws diff --git a/files/huawei/E8372/zapret b/files/huawei/E8372/zapret new file mode 100755 index 0000000..f19eed3 --- /dev/null +++ b/files/huawei/E8372/zapret @@ -0,0 +1,15 @@ +#!/system/bin/busybox sh + +# $1 - additional parameters for nfqws + +insmod /online/modules/unfuck_nfqueue.ko 2>/dev/null + +rule="PREROUTING -t nat -i br0 ! -d 192.168.0.0/16 -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 1" +iptables -C $rule 2>/dev/null || iptables -I $rule + +tpws --uid 1:3003 --port=1 --daemon + +rule="OUTPUT -t mangle -o wan0 -p tcp -m multiport --dports 80,443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass" +iptables -C $rule 2>/dev/null || iptables -I $rule + +nfqws --uid 2 --qnum=200 --dpi-desync=disorder --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig --daemon $1 diff --git a/files/huawei/E8372/zapret-ip b/files/huawei/E8372/zapret-ip new file mode 100755 index 0000000..9e70fac --- /dev/null +++ b/files/huawei/E8372/zapret-ip @@ -0,0 +1,34 @@ +#!/system/bin/busybox sh + +# $1 - ip list file. create individual rules for tpws redirection. ipset is not available + +[ -z "$1" ] && { + echo need iplist file as parameter + exit 1 +} + +insmod /online/modules/unfuck_nfqueue.ko 2>/dev/null + +tpws --maxconn=1024 --uid 1:3003 --port=1 --daemon + + +REDIR="-j REDIRECT --to-port 1" + +iptables -F tpws -t nat +iptables -X tpws -t nat +iptables -N tpws -t nat +iptables -A tpws -t nat -d 192.168.0.0/16 -j RETURN + +while read ip; do + echo redirecting $ip + iptables -A tpws -t nat -d $ip -p tcp $REDIR +done <"$1" + + +rule="PREROUTING -t nat -i br0 -p tcp -m multiport --dports 80,443 -j tpws" +iptables -C $rule 2>/dev/null || iptables -I $rule + +nfqws --uid 2 --qnum=200 --dpi-desync=disorder --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig --daemon + +rule="OUTPUT -t mangle -o wan0 -p tcp -m multiport --dports 80,443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass" +iptables -C $rule 2>/dev/null || iptables -I $rule diff --git a/init.d/macos/functions b/init.d/macos/functions new file mode 100644 index 0000000..4d033c9 --- /dev/null +++ b/init.d/macos/functions @@ -0,0 +1,401 @@ +[ -n "$ZAPRET_BASE" ] || ZAPRET_BASE=/opt/zapret + +IPSET_DIR=$ZAPRET_BASE/ipset +. "$IPSET_DIR/def.sh" + +HOSTLIST="$ZHOSTLIST.gz" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZHOSTLIST" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZUSERLIST" + +PIDDIR=/var/run +TPPORT=988 +TPWS_WAIT="--bind-wait-ip=60" +TPWS="$ZAPRET_BASE/tpws/tpws" + +PF_MAIN="/etc/pf.conf" +PF_ANCHOR_DIR=/etc/pf.anchors +PF_ANCHOR_ZAPRET="$PF_ANCHOR_DIR/zapret" +PF_ANCHOR_ZAPRET_V4="$PF_ANCHOR_DIR/zapret-v4" +PF_ANCHOR_ZAPRET_V6="$PF_ANCHOR_DIR/zapret-v6" + +[ -n "$IFACE_WAN" ] && OWAN=" on $IFACE_WAN" + +on_off_function() +{ + # $1 : function name on + # $2 : function name off + # $3 : 0 - off, 1 - on + local F="$1" + [ "$3" = "1" ] || F="$2" + shift + shift + shift + "$F" "$@" +} + +run_daemon() +{ + # $1 - daemon number : 1,2,3,... + # $2 - daemon + # $3 - daemon args + # use $PIDDIR/$DAEMONBASE$1.pid as pidfile + local DAEMONBASE="$(basename $2)" + local PIDFILE="$PIDDIR/$DAEMONBASE$1.pid" + local ARGS="--daemon --pidfile=$PIDFILE $3" + [ -f "$PIDFILE" ] && pgrep -qF "$PIDFILE" && { + echo Already running $1: $2 + return 0 + } + echo "Starting daemon $1: $2 $ARGS" + "$2" $ARGS +} +stop_daemon() +{ + # $1 - daemon number : 1,2,3,... + # $2 - daemon + # use $PIDDIR/$DAEMONBASE$1.pid as pidfile + + local PID + local DAEMONBASE="$(basename $2)" + local PIDFILE="$PIDDIR/$DAEMONBASE$1.pid" + [ -f "$PIDFILE" ] && read PID <"$PIDFILE" + [ -n "$PID" ] && { + echo "Stopping daemon $1: $2 (PID=$PID)" + kill $PID + rm -f "$PIDFILE" + } + return 0 +} +do_daemon() +{ + # $1 - 1 - run, 0 - stop + on_off_function run_daemon stop_daemon "$@" +} + +filter_apply_hostlist_target() +{ + # $1 - var name of tpws or nfqws params + [ "$MODE_FILTER" = "hostlist" ] && eval $1="\"\$$1 --hostlist=$HOSTLIST\"" +} +tpws_apply_binds() +{ + local o + [ "$DISABLE_IPV4" = "1" ] || o="--bind-addr=127.0.0.1" + [ "$DISABLE_IPV6" = "1" ] || { + for i in lo0 $IFACE_LAN; do + o="$o --bind-iface6=$i --bind-linklocal=force $TPWS_WAIT" + done + } + eval $1="\"\$$1 $o\"" +} + +wait_interface_ll() +{ + echo waiting for an ipv6 link local address on $1 ... + "$TPWS" --bind-wait-only --bind-iface6=$1 --bind-linklocal=force $TPWS_WAIT +} +wait_lan_ll() +{ + [ "$DISABLE_IPV6" != "1" ] && [ -n "$IFACE_LAN" ] && { + wait_interface_ll $IFACE_LAN >&2 || { + echo "wait interface failed" + return 1 + } + } + return 0 +} +get_ipv6_linklocal() +{ + ifconfig $1 | sed -nEe 's/^.*inet6 (fe80:[a-f0-9:]+).*/\1/p' +} + + +pf_anchor_root_reload() +{ + echo reloading PF root anchor + pfctl -qf "$PF_MAIN" +} + +pf_anchor_root() +{ + local patch + [ -f "$PF_MAIN" ] && { + grep -q '^rdr-anchor "zapret"$' "$PF_MAIN" || { + echo patching rdr-anchor in $PF_MAIN + patch=1 + sed -i '' -e '/^rdr-anchor "com\.apple\/\*"$/i \ +rdr-anchor "zapret" +' $PF_MAIN + } + grep -q '^anchor "zapret"$' "$PF_MAIN" || { + echo patching anchor in $PF_MAIN + patch=1 + sed -i '' -e '/^anchor "com\.apple\/\*"$/i \ +anchor "zapret" +' $PF_MAIN + } + grep -q "^set limit table-entries" "$PF_MAIN" || { + echo patching table-entries limit + patch=1 + sed -i '' -e '/^scrub-anchor "com\.apple\/\*"$/i \ +set limit table-entries 5000000 +' $PF_MAIN + } + + grep -q '^anchor "zapret"$' "$PF_MAIN" && + grep -q '^rdr-anchor "zapret"$' "$PF_MAIN" && + grep -q '^set limit table-entries' "$PF_MAIN" && { + if [ -n "$patch" ]; then + echo successfully patched $PF_MAIN + pf_anchor_root_reload + else + echo successfully checked zapret anchors in $PF_MAIN + fi + return 0 + } + } + echo ---------------------------------- + echo Automatic $PF_MAIN patching failed. You must apply root anchors manually in your PF config. + echo rdr-anchor \"zapret\" + echo anchor \"zapret\" + echo ---------------------------------- + return 1 +} +pf_anchor_root_del() +{ + sed -i '' -e '/^anchor "zapret"$/d' -e '/^rdr-anchor "zapret"$/d' -e '/^set limit table-entries/d' "$PF_MAIN" +} + +pf_anchor_zapret() +{ + [ "$DISABLE_IPV4" = "1" ] || { + if [ -f "$ZIPLIST_EXCLUDE" ]; then + echo "table persist file \"$ZIPLIST_EXCLUDE\"" + else + echo "table persist" + fi + } + [ "$DISABLE_IPV4" = "1" ] || { + if [ -f "$ZIPLIST_EXCLUDE6" ]; then + echo "table persist file \"$ZIPLIST_EXCLUDE6\"" + else + echo "table persist" + fi + } + echo + [ "$DISABLE_IPV4" = "1" ] || echo "rdr-anchor \"/zapret-v4\" inet to !" + [ "$DISABLE_IPV6" = "1" ] || echo "rdr-anchor \"/zapret-v6\" inet6 to !" + [ "$DISABLE_IPV4" = "1" ] || echo "anchor \"/zapret-v4\" inet to !" + [ "$DISABLE_IPV6" = "1" ] || echo "anchor \"/zapret-v6\" inet6 to !" +} +pf_anchor_zapret_tables() +{ + # $1 - variable to receive applied table names + # $2/$3 $4/$5 ... table_name/table_file + local tblv=$1 + local _tbl + + shift + [ "$MODE_FILTER" = "ipset" ] && + { + while [ -n "$1" ] && [ -n "$2" ] ; do + [ -f "$2" ] && { + echo "table <$1> file \"$2\"" + _tbl="$_tbl<$1> " + } + shift + shift + done + } + [ -n "$_tbl" ] || _tbl="any" + + eval $tblv="\"\$_tbl\"" +} +pf_anchor_port_target() +{ + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + echo "{80,443}" + elif [ "$MODE_HTTPS" = "1" ]; then + echo "443" + elif [ "$MODE_HTTP" = "1" ]; then + echo "80" + fi +} +pf_anchor_zapret_v4() +{ + local tbl port + + [ "$DISABLE_IPV4" = "1" ] || { + [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ] && return + pf_anchor_zapret_tables tbl zapret-user "$ZIPLIST_USER" zapret "$ZIPLIST" + port=$(pf_anchor_port_target) + for t in $tbl; do + [ -n "$IFACE_LAN" ] && echo "rdr on $IFACE_LAN inet proto tcp from any to $t port $port -> 127.0.0.1 port $TPPORT" + done + echo "rdr on lo0 inet proto tcp from !127.0.0.0/8 to any port $port -> 127.0.0.1 port $TPPORT" + for t in $tbl; do + echo "pass out$OWAN route-to (lo0 127.0.0.1) inet proto tcp from !127.0.0.0/8 to $t port $port user { >root }" + done + } +} +pf_anchor_zapret_v6() +{ + local tbl port LL_LAN + + [ "$DISABLE_IPV6" = "1" ] || { + [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ] && return + + # LAN link local is only for router + [ -n "$IFACE_LAN" ] && LL_LAN=$(get_ipv6_linklocal $IFACE_LAN) + + pf_anchor_zapret_tables tbl zapret6-user "$ZIPLIST_USER6" zapret6 "$ZIPLIST6" + port=$(pf_anchor_port_target) + for t in $tbl; do + [ -n "$LL_LAN" ] && echo "rdr on $IFACE_LAN inet6 proto tcp from any to $t port $port -> $LL_LAN port $TPPORT" + done + echo "rdr on lo0 inet6 proto tcp from !::1 to any port $port -> fe80::1 port $TPPORT" + for t in $tbl; do + echo "pass out$OWAN route-to (lo0 fe80::1) inet6 proto tcp from !::1 to $t port $port user { >root }" + done + } +} +pf_anchors_create() +{ + wait_lan_ll + pf_anchor_zapret >"$PF_ANCHOR_ZAPRET" + pf_anchor_zapret_v4 >"$PF_ANCHOR_ZAPRET_V4" + pf_anchor_zapret_v6 >"$PF_ANCHOR_ZAPRET_V6" +} +pf_anchors_del() +{ + rm -f "$PF_ANCHOR_ZAPRET" "$PF_ANCHOR_ZAPRET_V4" "$PF_ANCHOR_ZAPRET_V6" +} +pf_anchors_load() +{ + echo loading zapret anchor from "$PF_ANCHOR_ZAPRET" + pfctl -qa zapret -f "$PF_ANCHOR_ZAPRET" || { + echo error loading zapret anchor + return 1 + } + if [ "$DISABLE_IPV4" = "1" ]; then + echo clearing zapret-v4 anchor + pfctl -qa zapret-v4 -F all 2>/dev/null + else + echo loading zapret-v4 anchor from "$PF_ANCHOR_ZAPRET_V4" + pfctl -qa zapret-v4 -f "$PF_ANCHOR_ZAPRET_V4" || { + echo error loading zapret-v4 anchor + return 1 + } + fi + if [ "$DISABLE_IPV6" = "1" ]; then + echo clearing zapret-v6 anchor + pfctl -qa zapret-v6 -F all 2>/dev/null + else + echo loading zapret-v6 anchor from "$PF_ANCHOR_ZAPRET_V6" + pfctl -qa zapret-v6 -f "$PF_ANCHOR_ZAPRET_V6" || { + echo error loading zapret-v6 anchor + return 1 + } + fi + echo successfully loaded PF anchors + return 0 +} +pf_anchors_clear() +{ + echo clearing zapret anchors + pfctl -qa zapret-v4 -F all 2>/dev/null + pfctl -qa zapret-v6 -F all 2>/dev/null + pfctl -qa zapret -F all 2>/dev/null +} +pf_enable() +{ + echo enabling PF + pfctl -qe +} +pf_table_reload() +{ + echo reloading zapret tables + [ "$DISABLE_IPV4" = "1" ] || pfctl -qTl -a zapret-v4 -f "$PF_ANCHOR_ZAPRET_V4" + [ "$DISABLE_IPV6" = "1" ] || pfctl -qTl -a zapret-v6 -f "$PF_ANCHOR_ZAPRET_V6" + pfctl -qTl -a zapret -f "$PF_ANCHOR_ZAPRET" +} +zapret_do_firewall() +{ + # $1 - 1 - add, 0 - del + + case "${MODE}" in + tpws) + if [ "$1" = "1" ] ; then + pf_anchor_root || return 1 + pf_anchors_create + pf_anchors_load || return 1 + pf_enable + else + pf_anchors_clear + fi + ;; + filter) + ;; + *) + echo "unsupported MODE=$MODE" + return 1 + ;; + esac + return 0 +} +zapret_apply_firewall() +{ + zapret_do_firewall 1 "$@" +} +zapret_unapply_firewall() +{ + zapret_do_firewall 0 "$@" +} +zapret_restart_firewall() +{ + zapret_unapply_firewall "$@" + zapret_apply_firewall "$@" +} + + + +zapret_do_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt + + case "${MODE}" in + tpws) + [ "$1" = "1" ] && [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && { + echo "both ipv4 and ipv6 are disabled. nothing to do" + return 0 + } + # MacOS requires root. kernel hardcoded requirement for /dev/pf ioctls + opt="--user=root --port=$TPPORT" + filter_apply_hostlist_target opt + tpws_apply_binds opt + opt="$opt $TPWS_OPT" + do_daemon $1 1 "$TPWS" "$opt" + ;; + filter) + ;; + *) + echo "unsupported MODE=$MODE" + return 1 + ;; + esac +} +zapret_run_daemons() +{ + zapret_do_daemons 1 "$@" +} +zapret_stop_daemons() +{ + zapret_do_daemons 0 "$@" +} +zapret_restart_daemons() +{ + zapret_stop_daemons "$@" + zapret_run_daemons "$@" +} diff --git a/init.d/macos/zapret b/init.d/macos/zapret new file mode 100755 index 0000000..c563926 --- /dev/null +++ b/init.d/macos/zapret @@ -0,0 +1,51 @@ +#!/bin/sh + +EXEDIR="$(dirname "$0")" +ZAPRET_BASE="$EXEDIR/../.." +ZAPRET_BASE="$(cd "$ZAPRET_BASE"; pwd)" + +. "$EXEDIR/functions" + +case "$1" in + start) + zapret_run_daemons + [ "$INIT_APPLY_FW" != "1" ] || zapret_apply_firewall + ;; + stop) + [ "$INIT_APPLY_FW" != "1" ] || zapret_unapply_firewall + zapret_stop_daemons + ;; + restart) + "$0" stop + "$0" start + ;; + + start-fw) + zapret_apply_firewall + ;; + stop-fw) + zapret_unapply_firewall + ;; + restart-fw) + zapret_restart_firewall + ;; + reload-fw-tables) + pf_table_reload + ;; + + start-daemons) + zapret_run_daemons + ;; + stop-daemons) + zapret_stop_daemons + ;; + restart-daemons) + zapret_restart_daemons + ;; + + *) + N="$SCRIPT/$NAME" + echo "Usage: $N {start|stop|start-fw|stop-fw|restart-fw|reload-fw-tables|start-daemons|stop-daemons|restart-daemons}" >&2 + exit 1 + ;; +esac diff --git a/init.d/macos/zapret.plist b/init.d/macos/zapret.plist new file mode 100644 index 0000000..747d69b --- /dev/null +++ b/init.d/macos/zapret.plist @@ -0,0 +1,17 @@ + + + + + Label + zapret + LaunchOnlyOnce + + ProgramArguments + + /opt/zapret/init.d/macos/zapret + start + + RunAtLoad + + + diff --git a/init.d/openwrt/90-zapret b/init.d/openwrt/90-zapret new file mode 100644 index 0000000..a2d6324 --- /dev/null +++ b/init.d/openwrt/90-zapret @@ -0,0 +1,8 @@ +#!/bin/sh + +ZAPRET=/etc/init.d/zapret +[ -x "$ZAPRET" ] && [ "$INTERFACE" = "lan" ] && { + [ "$ACTION" = "ifup" ] && { + $ZAPRET enabled && $ZAPRET restart + } +} diff --git a/init.d/openwrt/custom b/init.d/openwrt/custom new file mode 100644 index 0000000..2136b74 --- /dev/null +++ b/init.d/openwrt/custom @@ -0,0 +1,20 @@ +# this script contain your special code to launch daemons and configure firewall +# use helpers from "functions" file and "zapret" init script +# in case of upgrade keep this file only, do not modify others + +zapret_custom_daemons() +{ + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Start daemon\(s\) + echo Study how other sections work + + run_daemon 1 /bin/sleep 20 +} +zapret_custom_firewall() +{ + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Configure iptables for required actions + echo Study how other sections work +} diff --git a/init.d/openwrt/custom-2nfqws b/init.d/openwrt/custom-2nfqws new file mode 100644 index 0000000..b875c7b --- /dev/null +++ b/init.d/openwrt/custom-2nfqws @@ -0,0 +1,44 @@ +# this custom script demonstrates how to use 2 copies of nfqws +# it preserves config settings : MODE_HTTP, MODE_HTTP_KEEPALIVE, MODE_HTTPS, MODE_FILTER, NFQWS_OPT_DESYNC +# NFQWS_OPT_DESYNC - parameters for http +# NFQWS_OPT_DESYNC2 - parameters for https. you should add this variable to config file, its absent there + +QNUM2=$(($QNUM+1)) + +zapret_custom_daemons() +{ + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="$NFQWS_OPT_BASE $NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + run_daemon 1 $NFQWS "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="$NFQWS_OPT_BASE $NFQWS_OPT_DESYNC2 --qnum=$QNUM2" + filter_apply_hostlist_target opt + run_daemon 2 $NFQWS "$opt" + } +} +zapret_custom_firewall() +{ + local f4 f6 + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="--dport 80" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f4="$f4 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM2 + } +} diff --git a/init.d/openwrt/custom-tpws4http-nfqws4https b/init.d/openwrt/custom-tpws4http-nfqws4https new file mode 100644 index 0000000..8526840 --- /dev/null +++ b/init.d/openwrt/custom-tpws4http-nfqws4https @@ -0,0 +1,39 @@ +# this custom script demonstrates how to apply tpws to http and nfqws to https +# it preserves config settings : MODE_HTTP, MODE_HTTPS, MODE_FILTER, TPWS_OPT, NFQWS_OPT_DESYNC + +zapret_custom_daemons() +{ + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="$TPWS_OPT" + filter_apply_hostlist_target opt + run_tpws 1 "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="$NFQWS_OPT_BASE $NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + run_daemon 2 $NFQWS "$opt" + } +} +zapret_custom_firewall() +{ + local f4 f6 + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="--dport 80" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + } +} diff --git a/init.d/openwrt/custom.default b/init.d/openwrt/custom.default new file mode 100644 index 0000000..2136b74 --- /dev/null +++ b/init.d/openwrt/custom.default @@ -0,0 +1,20 @@ +# this script contain your special code to launch daemons and configure firewall +# use helpers from "functions" file and "zapret" init script +# in case of upgrade keep this file only, do not modify others + +zapret_custom_daemons() +{ + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Start daemon\(s\) + echo Study how other sections work + + run_daemon 1 /bin/sleep 20 +} +zapret_custom_firewall() +{ + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Configure iptables for required actions + echo Study how other sections work +} diff --git a/init.d/openwrt/firewall.zapret b/init.d/openwrt/firewall.zapret new file mode 100644 index 0000000..a09d74d --- /dev/null +++ b/init.d/openwrt/firewall.zapret @@ -0,0 +1,11 @@ +SCRIPT=$(readlink /etc/init.d/zapret) +if [ -n "$SCRIPT" ]; then + EXEDIR=$(dirname "$SCRIPT") + ZAPRET_BASE=$(readlink -f "$EXEDIR/../..") +else + ZAPRET_BASE=/opt/zapret +fi + +. "$ZAPRET_BASE/init.d/openwrt/functions" + +zapret_apply_firewall diff --git a/init.d/openwrt/functions b/init.d/openwrt/functions new file mode 100644 index 0000000..a7b3d0d --- /dev/null +++ b/init.d/openwrt/functions @@ -0,0 +1,425 @@ +. /lib/functions/network.sh + +[ -n "$ZAPRET_BASE" ] || ZAPRET_BASE=/opt/zapret +. "$ZAPRET_BASE/config" + +QNUM=200 +TPPORT=988 +TPWS_USER=daemon +TPWS_LOCALHOST4=127.0.0.127 +[ -n "$DESYNC_MARK" ] || DESYNC_MARK=0x40000000 + +# max wait time for the link local ipv6 on the LAN interface +LINKLOCAL_WAIT_SEC=5 + +IPSET_CR="$ZAPRET_BASE/ipset/create_ipset.sh" + +CUSTOM_SCRIPT="$ZAPRET_BASE/init.d/openwrt/custom" +[ -f "$CUSTOM_SCRIPT" ] && . "$CUSTOM_SCRIPT" + +IPSET_EXCLUDE="-m set ! --match-set nozapret" +IPSET_EXCLUDE6="-m set ! --match-set nozapret6" + +exists() +{ + which "$1" >/dev/null 2>/dev/null +} +existf() +{ + type "$1" >/dev/null 2>/dev/null +} + + +# can be multiple ipv6 outgoing interfaces +# uplink from isp, tunnelbroker, vpn, ... +# want them all. who knows what's the real one that blocks sites +# dont want any manual configuration - want to do it automatically +# standard network_find_wan[6] return only the first +# we use low level function from network.sh to avoid this limitation +# it can change theoretically and stop working + +network_find_wan_all() +{ + __network_ifstatus "$1" "" "[@.route[@.target='0.0.0.0' && !@.table]].interface" "" 10 2>/dev/null && return + network_find_wan $1 +} +network_find_wan6_all() +{ + __network_ifstatus "$1" "" "[@.route[@.target='::' && !@.table]].interface" "" 10 2>/dev/null && return + network_find_wan6 $1 +} + +ipt() +{ + iptables -C "$@" 2>/dev/null || iptables -I "$@" +} +ipt_del() +{ + iptables -C "$@" 2>/dev/null && iptables -D "$@" +} +ipt6() +{ + ip6tables -C "$@" 2>/dev/null || ip6tables -I "$@" +} +ipt6_del() +{ + ip6tables -C "$@" 2>/dev/null && ip6tables -D "$@" +} + +# there's no route_localnet for ipv6 +# the best we can is to route to link local of the incoming interface +# OUTPUT - can DNAT to ::1 +# PREROUTING - can't DNAT to ::1. can DNAT to link local of -i interface or to any global addr +# not a good idea to expose tpws to the world (bind to ::) + +get_ipv6_linklocal() +{ + # $1 - interface name. if empty - any interface + if exists ip ; then + local dev + [ -n "$1" ] && dev="dev $1" + ip addr show $dev | sed -e 's/^.*inet6 \([^ ]*\)\/[0-9]* scope link.*$/\1/;t;d' | head -n 1 + else + ifconfig $1 | sed -re 's/^.*inet6 addr: ([^ ]*)\/[0-9]* Scope:Link.*$/\1/;t;d' | head -n 1 + fi +} +get_ipv6_global() +{ + # $1 - interface name. if empty - any interface + if exists ip ; then + local dev + [ -n "$1" ] && dev="dev $1" + ip addr show $dev | sed -e 's/^.*inet6 \([^ ]*\)\/[0-9]* scope global.*$/\1/;t;d' | head -n 1 + else + ifconfig $1 | sed -re 's/^.*inet6 addr: ([^ ]*)\/[0-9]* Scope:Global.*$/\1/;t;d' | head -n 1 + fi +} + +dnat6_target() +{ + # get target ip address for DNAT. prefer link locals + # tpws should be as inaccessible from outside as possible + # link local address can appear not immediately after ifup + + # DNAT6_TARGET=- means attempt was made but address was not found (to avoid multiple re-attempts) + + [ -n "$DNAT6_TARGET" ] || { + # no reason to query if its down + network_is_up lan || return + + local DEVICE + network_get_device DEVICE lan + + local ct=0 + while + DNAT6_TARGET=$(get_ipv6_linklocal $DEVICE) + [ -n "$DNAT6_TARGET" ] && break + [ "$ct" -ge "$LINKLOCAL_WAIT_SEC" ] && break + echo waiting for the link local for another $(($LINKLOCAL_WAIT_SEC - $ct)) seconds ... + ct=$(($ct+1)) + sleep 1 + do :; done + + [ -n "$DNAT6_TARGET" ] || { + echo no link local. getting global + DNAT6_TARGET=$(get_ipv6_global $DEVICE) + [ -n "$DNAT6_TARGET" ] || { + echo could not get any address + DNAT6_TARGET=- + } + } + } +} + + +fw_nfqws_pre4() +{ + # $1 - filter ipv4 + # $2 - queue number + + local DEVICE wan_iface + + [ "$DISABLE_IPV4" = "1" ] || { + network_find_wan_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt PREROUTING -t mangle -i $DEVICE -p tcp $1 $IPSET_EXCLUDE src -j NFQUEUE --queue-num $2 --queue-bypass + done + } +} +fw_nfqws_pre6() +{ + # $1 - filter ipv6 + # $2 - queue number + + local DEVICE wan_iface + + [ "$DISABLE_IPV6" = "1" ] || { + network_find_wan6_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt6 PREROUTING -t mangle -i $DEVICE -p tcp $1 $IPSET_EXCLUDE6 src -j NFQUEUE --queue-num $2 --queue-bypass + done + } +} +fw_nfqws_pre() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - queue number + + fw_nfqws_pre4 "$1" $3 + fw_nfqws_pre6 "$2" $3 +} +fw_nfqws_post4() +{ + # $1 - filter ipv4 + # $2 - queue number + + local DEVICE wan_iface + + [ "$DISABLE_IPV4" = "1" ] || { + network_find_wan_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt POSTROUTING -t mangle -o $DEVICE -p tcp $1 $IPSET_EXCLUDE dst -j NFQUEUE --queue-num $2 --queue-bypass + done + } +} +fw_nfqws_post6() +{ + # $1 - filter ipv6 + # $2 - queue number + + local DEVICE wan_iface + + [ "$DISABLE_IPV6" = "1" ] || { + network_find_wan6_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt6 POSTROUTING -t mangle -o $DEVICE -p tcp $1 $IPSET_EXCLUDE6 dst -j NFQUEUE --queue-num $2 --queue-bypass + done + } +} +fw_nfqws_post() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - queue number + + fw_nfqws_post4 "$1" $3 + fw_nfqws_post6 "$2" $3 +} + + +IPT_OWNER="-m owner ! --uid-owner $TPWS_USER" +fw_tpws4() +{ + # $1 - filter ipv6 + # $2 - tpws port + + local DEVICE wan_iface + + [ "$DISABLE_IPV4" = "1" ] || { + network_find_wan_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt OUTPUT -t nat -o $DEVICE $IPT_OWNER -p tcp $1 $IPSET_EXCLUDE dst -j DNAT --to $TPWS_LOCALHOST4:$2 + done + ipt prerouting_lan_rule -t nat -p tcp $1 $IPSET_EXCLUDE dst -j DNAT --to $TPWS_LOCALHOST4:$2 + network_get_device DEVICE lan + [ -n "$DEVICE" ] && { + # allow localnet route only to special tpws IP + iptables -N input_lan_rule_zapret 2>/dev/null + ipt input_lan_rule_zapret -d 127.0.0.0/8 -j DROP + ipt input_lan_rule_zapret -d $TPWS_LOCALHOST4 -j RETURN + ipt input_lan_rule -j input_lan_rule_zapret + sysctl -qw net.ipv4.conf.$DEVICE.route_localnet=1 + } + } +} +fw_tpws6() +{ + # $1 - filter ipv6 + # $2 - tpws port + + local DEVICE wan_iface + + [ "$DISABLE_IPV6" = "1" ] || { + network_find_wan6_all wan_iface + for ext_iface in $wan_iface; do + network_get_device DEVICE $ext_iface + ipt6 OUTPUT -t nat -o $DEVICE $IPT_OWNER -p tcp $1 $IPSET_EXCLUDE6 dst -j DNAT --to [::1]:$2 + done + network_get_device DEVICE lan + dnat6_target + [ "$DNAT6_TARGET" != "-" ] && ipt6 PREROUTING -t nat -i $DEVICE -p tcp $1 $IPSET_EXCLUDE6 dst -j DNAT --to [$DNAT6_TARGET]:$2 + } +} +fw_tpws() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - tpws port + + fw_tpws4 "$1" $3 + fw_tpws6 "$2" $3 +} + +filter_apply_port_target() +{ + # $1 - var name of iptables filter + local f + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + f="-m multiport --dports 80,443" + elif [ "$MODE_HTTPS" = "1" ]; then + f="--dport 443" + elif [ "$MODE_HTTP" = "1" ]; then + f="--dport 80" + else + echo WARNING !!! HTTP and HTTPS are both disabled + fi + eval $1="\"\$$1 $f\"" +} +filter_apply_ipset_target() +{ + # $1 - var name of ipv4 iptables filter + # $2 - var name of ipv6 iptables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 -m set --match-set zapret dst\"" + eval $2="\"\$$2 -m set --match-set zapret6 dst\"" + fi +} + + +create_ipset() +{ + echo "Creating ipset" + "$IPSET_CR" "$@" +} + + +is_flow_offload_avail() +{ + # $1 = '' for ipv4, '6' for ipv6 + grep -q FLOWOFFLOAD /proc/net/ip$1_tables_targets +} +list_nfqws_rules() +{ + # $1 = '' for ipv4, '6' for ipv6 + ip$1tables -S POSTROUTING -t mangle | grep "NFQUEUE --queue-num $QNUM --queue-bypass" | sed -re 's/^-A POSTROUTING (.*) -j NFQUEUE.*$/\1/' -e "s/-m mark ! --mark $DESYNC_MARK\/$DESYNC_MARK//" +} +reverse_nfqws_rule() +{ + sed -e 's/-o /-i /' -e 's/--dport /--sport /' -e 's/--dports /--sports /' -e 's/ dst$/ src/' -e 's/ dst / src /' +} +apply_flow_offloading_enable_rule() +{ + # $1 = '' for ipv4, '6' for ipv6 + local i off='-j FLOWOFFLOAD' + [ "$FLOWOFFLOAD" = "hardware" ] && off="$off --hw" + i="forwarding_rule_zapret -m comment --comment zapret_traffic_offloading_enable -m conntrack --ctstate RELATED,ESTABLISHED $off" + echo enabling ipv${1:-4} flow offloading : $i + ip$1tables -A $i +} +apply_flow_offloading_exempt_rule() +{ + # $1 = '' for ipv4, '6' for ipv6 + local i v + v=$1 + shift + i="forwarding_rule_zapret $@ -m comment --comment zapret_traffic_offloading_exemption -j RETURN" + echo applying ipv${v:-4} flow offloading exemption : $i + ip${v}tables -A $i +} +flow_offloading_exempt_v() +{ + # $1 = '' for ipv4, '6' for ipv6 + + is_flow_offload_avail $1 || return 0 + + ipt$1_del forwarding_rule -j forwarding_rule_zapret + ip$1tables -F forwarding_rule_zapret 2>/dev/null + ip$1tables -X forwarding_rule_zapret 2>/dev/null + + [ "$FLOWOFFLOAD" = 'software' -o "$FLOWOFFLOAD" = 'hardware' ] && { + ip$1tables -N forwarding_rule_zapret + + list_nfqws_rules $1 | + while read rule; do + apply_flow_offloading_exempt_rule "$1" $rule + done + + list_nfqws_rules $1 | grep -v "connbytes" | reverse_nfqws_rule | + while read rule; do + apply_flow_offloading_exempt_rule "$1" $rule + done + + apply_flow_offloading_enable_rule $1 + + ipt$1 forwarding_rule -j forwarding_rule_zapret + } + + return 0 +} +flow_offloading_exempt() +{ + [ "$DISABLE_IPV4" = "1" ] || flow_offloading_exempt_v + [ "$DISABLE_IPV6" = "1" ] || flow_offloading_exempt_v 6 +} + + +zapret_apply_firewall() +{ + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + local f4 f6 + + # always create ipsets. ip_exclude ipset is required + create_ipset no-update + + case "${MODE}" in + tpws) + if [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ]; then + echo both http and https are disabled. not applying redirection. + else + filter_apply_port_target f4 + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws "$f4" "$f6" $TPPORT + fi + ;; + + nfqws) + if [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ]; then + echo both http and https are disabled. not applying redirection. + else + if [ "$MODE_HTTP_KEEPALIVE" = "1" ]; then + if [ "$MODE_HTTP" = "1" ]; then + f4="--dport 80" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + fi + if [ "$MODE_HTTPS" = "1" ]; then + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + fi + else + filter_apply_port_target f4 + f4="$f4 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + fi + fi + ;; + custom) + existf zapret_custom_firewall && zapret_custom_firewall + ;; + esac + + flow_offloading_exempt +} diff --git a/init.d/openwrt/zapret b/init.d/openwrt/zapret new file mode 100755 index 0000000..805a776 --- /dev/null +++ b/init.d/openwrt/zapret @@ -0,0 +1,100 @@ +#!/bin/sh /etc/rc.common + +USE_PROCD=1 +# after network +START=21 + + +SCRIPT=$(readlink /etc/init.d/zapret) +if [ -n "$SCRIPT" ]; then + EXEDIR=$(dirname "$SCRIPT") + ZAPRET_BASE=$(readlink -f "$EXEDIR/../..") +else + ZAPRET_BASE=/opt/zapret +fi +. "$ZAPRET_BASE/init.d/openwrt/functions" + + +# !!!!! in openwrt firewall rules are configured separately + +PIDDIR=/var/run + +QNUM=200 +NFQWS_USER=daemon +NFQWS="$ZAPRET_BASE/nfq/nfqws" +NFQWS_OPT_BASE="--qnum=$QNUM --user=$NFQWS_USER" + +TPWS_USER=daemon +TPPORT=988 +TPWS="$ZAPRET_BASE/tpws/tpws" +TPWS_LOCALHOST4=127.0.0.127 +HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts.txt.gz" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts.txt" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts-user.txt" +TPWS_OPT_BASE="--user=$TPWS_USER --port=$TPPORT" +TPWS_OPT_BASE4="--bind-addr=$TPWS_LOCALHOST4" +TPWS_OPT_BASE6="--bind-addr=::1" +# first wait for lan to ifup, then wait for bind-wait-ip-linklocal seconds for link local address and bind-wait-ip for any ipv6 as the worst case +TPWS_OPT_BASE6_PRE="--bind-linklocal=prefer --bind-wait-ifup=30 --bind-wait-ip=30 --bind-wait-ip-linklocal=3" + +run_daemon() +{ + # $1 - daemon string id or number. can use 1,2,3,... + # $2 - daemon + # $3 - daemon args + # use $PIDDIR/$DAEMONBASE$1.pid as pidfile + local DAEMONBASE=$(basename $2) + echo "Starting daemon $1: $2 $3" + procd_open_instance + procd_set_param command $2 $3 + procd_set_param pidfile $PIDDIR/$DAEMONBASE$1.pid + procd_close_instance +} + +run_tpws() +{ + [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && return 0 + + local OPT="$TPWS_OPT_BASE" + local DEVICE + + [ "$DISABLE_IPV4" = "1" ] || OPT="$OPT $TPWS_OPT_BASE4" + [ "$DISABLE_IPV6" = "1" ] || { + OPT="$OPT $TPWS_OPT_BASE6" + network_get_device DEVICE lan + [ -n "$DEVICE" ] && OPT="$OPT --bind-iface6=$DEVICE $TPWS_OPT_BASE6_PRE" + } + run_daemon $1 $TPWS "$OPT $2" +} +stop_tpws() +{ + stop_daemon $1 $TPWS +} + + +filter_apply_hostlist_target() +{ + # $1 - var name of tpws or nfqws params + [ "$MODE_FILTER" = "hostlist" ] && eval $1="\"\$$1 --hostlist=$HOSTLIST\"" +} + + +start_service() { + local opt + + case "${MODE}" in + tpws) + opt="$TPWS_OPT" + filter_apply_hostlist_target opt + run_tpws 1 "$opt" + ;; + nfqws) + opt="$NFQWS_OPT_BASE $NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + run_daemon 1 $NFQWS "$opt" + ;; + custom) + existf zapret_custom_daemons && zapret_custom_daemons $1 + ;; + esac +} diff --git a/init.d/systemd/zapret-list-update.service b/init.d/systemd/zapret-list-update.service new file mode 100644 index 0000000..eeee1b0 --- /dev/null +++ b/init.d/systemd/zapret-list-update.service @@ -0,0 +1,13 @@ +[Unit] +Description=zapret ip/host list update + +[Service] +Restart=no +IgnoreSIGPIPE=no +KillMode=control-group +GuessMainPID=no +RemainAfterExit=no +ExecStart=/opt/zapret/ipset/get_config.sh + +[Install] +WantedBy=multi-user.target diff --git a/init.d/systemd/zapret-list-update.timer b/init.d/systemd/zapret-list-update.timer new file mode 100644 index 0000000..29379bd --- /dev/null +++ b/init.d/systemd/zapret-list-update.timer @@ -0,0 +1,11 @@ +[Unit] +Description=zapret ip/host list update timer + +[Timer] +OnCalendar=*-*-2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 00:00:00 +RandomizedDelaySec=86400 +Persistent=true +Unit=zapret-list-update.service + +[Install] +WantedBy=timers.target diff --git a/init.d/systemd/zapret.service b/init.d/systemd/zapret.service new file mode 100644 index 0000000..9d3bf41 --- /dev/null +++ b/init.d/systemd/zapret.service @@ -0,0 +1,17 @@ +[Unit] +After=network-online.target +Wants=network-online.target + +[Service] +Type=forking +Restart=no +TimeoutSec=30sec +IgnoreSIGPIPE=no +KillMode=none +GuessMainPID=no +RemainAfterExit=no +ExecStart=/opt/zapret/init.d/sysv/zapret start +ExecStop=/opt/zapret/init.d/sysv/zapret stop + +[Install] +WantedBy=multi-user.target diff --git a/init.d/sysv/custom b/init.d/sysv/custom new file mode 100644 index 0000000..ed6183b --- /dev/null +++ b/init.d/sysv/custom @@ -0,0 +1,24 @@ +# this script contain your special code to launch daemons and configure firewall +# use helpers from "functions" file +# in case of upgrade keep this file only, do not modify others + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Start daemon\(s\) + echo Study how other sections work + + do_daemon $1 1 /bin/sleep 20 +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Configure iptables for required actions + echo Study how other sections work +} diff --git a/init.d/sysv/custom-2nfqws b/init.d/sysv/custom-2nfqws new file mode 100644 index 0000000..2f942a4 --- /dev/null +++ b/init.d/sysv/custom-2nfqws @@ -0,0 +1,44 @@ +# this custom script demonstrates how to use 2 copies of nfqws +# it preserves config settings : MODE_HTTP, MODE_HTTP_KEEPALIVE, MODE_HTTPS, MODE_FILTER, NFQWS_OPT_DESYNC +# NFQWS_OPT_DESYNC - parameters for http +# NFQWS_OPT_DESYNC2 - parameters for https. you should add this variable to config file, its absent there + +QNUM2=$(($QNUM+1)) + +zapret_custom_daemons() +{ + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="$NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + do_nfqws $1 1 "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="$NFQWS_OPT_DESYNC2 --qnum=$QNUM2" + filter_apply_hostlist_target opt + do_nfqws $1 2 "$opt" + } +} +zapret_custom_firewall() +{ + local f4 f6 + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="--dport 80" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f4="$f4 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM2 + } +} diff --git a/init.d/sysv/custom-tpws4http-nfqws4https b/init.d/sysv/custom-tpws4http-nfqws4https new file mode 100644 index 0000000..411b8fe --- /dev/null +++ b/init.d/sysv/custom-tpws4http-nfqws4https @@ -0,0 +1,39 @@ +# this custom script demonstrates how to apply tpws to http and nfqws to https +# it preserves config settings : MODE_HTTP, MODE_HTTPS, MODE_FILTER, TPWS_OPT, NFQWS_OPT_DESYNC + +zapret_custom_daemons() +{ + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="$TPWS_OPT" + filter_apply_hostlist_target opt + do_tpws $1 1 "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="$NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + do_nfqws $1 2 "$opt" + } +} +zapret_custom_firewall() +{ + local f4 f6 + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="--dport 80" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws $1 "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + } +} diff --git a/init.d/sysv/functions b/init.d/sysv/functions new file mode 100644 index 0000000..1c5535a --- /dev/null +++ b/init.d/sysv/functions @@ -0,0 +1,532 @@ +# init script functions library for desktop linux systems + +[ -n "$ZAPRET_BASE" ] || ZAPRET_BASE=/opt/zapret +# SHOULD EDIT config +. "$ZAPRET_BASE/config" + +PIDDIR=/var/run + +IPSET_CR="$ZAPRET_BASE/ipset/create_ipset.sh" + +WS_USER=tpws + +QNUM=200 +NFQWS="$ZAPRET_BASE/nfq/nfqws" +NFQWS_OPT_BASE="--qnum=$QNUM --user=$WS_USER" + +TPPORT=988 +TPWS="$ZAPRET_BASE/tpws/tpws" +TPWS_LOCALHOST4=127.0.0.127 +HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts.txt.gz" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts.txt" +[ -f "$HOSTLIST" ] || HOSTLIST="$ZAPRET_BASE/ipset/zapret-hosts-user.txt" + +TPWS_OPT_BASE="--user=$WS_USER --port=$TPPORT" +TPWS_OPT_BASE4="--bind-addr=$TPWS_LOCALHOST4" +TPWS_OPT_BASE6="--bind-addr=::1" +# first wait for lan to ifup, then wait for bind-wait-ip-linklocal seconds for link local address and bind-wait-ip for any ipv6 as the worst case +TPWS_OPT_BASE6_PRE="--bind-linklocal=prefer --bind-wait-ifup=30 --bind-wait-ip=30 --bind-wait-ip-linklocal=3" + +[ -n "$IFACE_WAN" ] && IPT_OWAN="-o $IFACE_WAN" +[ -n "$IFACE_WAN" ] && IPT_IWAN="-i $IFACE_WAN" +[ -n "$IFACE_LAN" ] && IPT_ILAN="-i $IFACE_LAN" + +[ -n "$DESYNC_MARK" ] || DESYNC_MARK=0x40000000 + +# max wait time for the link local ipv6 on the LAN interface +LINKLOCAL_WAIT_SEC=5 + +CUSTOM_SCRIPT="$ZAPRET_BASE/init.d/sysv/custom" +[ -f "$CUSTOM_SCRIPT" ] && . "$CUSTOM_SCRIPT" + +IPSET_EXCLUDE="-m set ! --match-set nozapret" +IPSET_EXCLUDE6="-m set ! --match-set nozapret6" + +exists() +{ + which "$1" >/dev/null 2>/dev/null +} +existf() +{ + type "$1" >/dev/null 2>/dev/null +} + +on_off_function() +{ + # $1 : function name on + # $2 : function name off + # $3 : 0 - off, 1 - on + local F="$1" + [ "$3" = "1" ] || F="$2" + shift + shift + shift + "$F" "$@" +} + + +ipt() +{ + iptables -C "$@" 2>/dev/null || iptables -I "$@" +} +ipt_del() +{ + iptables -C "$@" 2>/dev/null && iptables -D "$@" +} +ipt_add_del() +{ + on_off_function ipt ipt_del "$@" +} +ipt6() +{ + ip6tables -C "$@" 2>/dev/null || ip6tables -I "$@" +} +ipt6_del() +{ + ip6tables -C "$@" 2>/dev/null && ip6tables -D "$@" +} +ipt6_add_del() +{ + on_off_function ipt6 ipt6_del "$@" +} + +# there's no route_localnet for ipv6 +# the best we can is to route to link local of the incoming interface +# OUTPUT - can DNAT to ::1 +# PREROUTING - can't DNAT to ::1. can DNAT to link local of -i interface or to any global addr +# not a good idea to expose tpws to the world (bind to ::) + +get_ipv6_linklocal() +{ + # $1 - interface name. if empty - any interface + local dev + [ -n "$1" ] && dev="dev $1" + ip addr show $dev | sed -e 's/^.*inet6 \([^ ]*\)\/[0-9]* scope link.*$/\1/;t;d' | head -n 1 +} +get_ipv6_global() +{ + # $1 - interface name. if empty - any interface + local dev + [ -n "$1" ] && dev="dev $1" + ip addr show $dev | sed -e 's/^.*inet6 \([^ ]*\)\/[0-9]* scope global.*$/\1/;t;d' | head -n 1 +} + +iface_is_up() +{ + # $1 - interface name + [ -f /sys/class/net/$1/operstate ] || return + local state + read state /dev/null || { + # allow localnet route only to special tpws IP + iptables -N input_lan_rule_zapret 2>/dev/null + iptables -F input_lan_rule_zapret + iptables -A input_lan_rule_zapret -d $TPWS_LOCALHOST4 -j RETURN + iptables -A input_lan_rule_zapret -d 127.0.0.0/8 -j DROP + iptables -I INPUT -i $IFACE_LAN -j input_lan_rule_zapret + } + sysctl -qw net.ipv4.conf.$IFACE_LAN.route_localnet=1 + } +} +unprepare_tpws_fw4() +{ + [ -n "$IFACE_LAN" ] && { + iptables -C INPUT -i $IFACE_LAN -j input_lan_rule_zapret 2>/dev/null && { + sysctl -qw net.ipv4.conf.$IFACE_LAN.route_localnet=0 + iptables -D INPUT -i $IFACE_LAN -j input_lan_rule_zapret + iptables -F input_lan_rule_zapret + iptables -X input_lan_rule_zapret + } + } +} +unprepare_tpws_fw() +{ + unprepare_tpws_fw4 +} + + +print_op() +{ + if [ "$1" = "1" ]; then + echo "Adding ip$4tables rule for $3 : $2" + else + echo "Deleting ip$4tables rule for $3 : $2" + fi +} + +fw_tpws4() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - tpws port + [ "$DISABLE_IPV4" = "1" ] || { + [ "$1" = 1 ] && prepare_tpws_fw4 + print_op $1 "$2" "tpws" + [ -n "$IFACE_LAN" ] && { + ipt_add_del $1 PREROUTING -t nat $IPT_ILAN -p tcp $2 $IPSET_EXCLUDE dst -j DNAT --to $TPWS_LOCALHOST4:$3 + } + ipt_add_del $1 OUTPUT -t nat $IPT_OWAN -m owner ! --uid-owner $WS_USER -p tcp $2 $IPSET_EXCLUDE dst -j DNAT --to $TPWS_LOCALHOST4:$3 + } +} +fw_tpws6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - tpws port + [ "$DISABLE_IPV6" = "1" ] || { + print_op $1 "$2" "tpws" 6 + [ -n "$IFACE_LAN" ] && { + dnat6_target + [ "$DNAT6_TARGET" != "-" ] && ipt6_add_del $1 PREROUTING -t nat $IPT_ILAN -p tcp $2 $IPSET_EXCLUDE6 dst -j DNAT --to [$DNAT6_TARGET]:$3 + } + ipt6_add_del $1 OUTPUT -t nat $IPT_OWAN -m owner ! --uid-owner $WS_USER -p tcp $2 $IPSET_EXCLUDE6 dst -j DNAT --to [::1]:$3 + } +} +fw_tpws() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - iptable filter for ipv6 + # $4 - tpws port + fw_tpws4 $1 "$2" $4 + fw_tpws6 $1 "$3" $4 +} + + +fw_nfqws_pre4() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - queue number + [ "$DISABLE_IPV4" = "1" ] || { + print_op $1 "$2" "nfqws prerouting" + ipt_add_del $1 PREROUTING -t mangle $IPT_IWAN -p tcp $2 $IPSET_EXCLUDE src -j NFQUEUE --queue-num $3 --queue-bypass + } +} +fw_nfqws_pre6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - queue number + [ "$DISABLE_IPV6" = "1" ] || { + print_op $1 "$2" "nfqws prerouting" 6 + ipt6_add_del $1 PREROUTING -t mangle $IPT_IWAN -p tcp $2 $IPSET_EXCLUDE6 src -j NFQUEUE --queue-num $3 --queue-bypass + } +} +fw_nfqws_pre() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - iptable filter for ipv6 + # $4 - queue number + fw_nfqws_pre4 $1 "$2" $4 + fw_nfqws_pre6 $1 "$3" $4 +} +fw_nfqws_post4() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - queue number + [ "$DISABLE_IPV4" = "1" ] || { + print_op $1 "$2" "nfqws postrouting" + ipt_add_del $1 POSTROUTING -t mangle $IPT_OWAN -p tcp $2 $IPSET_EXCLUDE dst -j NFQUEUE --queue-num $3 --queue-bypass + } +} +fw_nfqws_post6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - queue number + [ "$DISABLE_IPV6" = "1" ] || { + print_op $1 "$2" "nfqws postrouting" 6 + ipt6_add_del $1 POSTROUTING -t mangle $IPT_OWAN -p tcp $2 $IPSET_EXCLUDE6 dst -j NFQUEUE --queue-num $3 --queue-bypass + } +} +fw_nfqws_post() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - iptable filter for ipv6 + # $4 - queue number + fw_nfqws_post4 $1 "$2" $4 + fw_nfqws_post6 $1 "$3" $4 +} + + +run_daemon() +{ + # $1 - daemon number : 1,2,3,... + # $2 - daemon + # $3 - daemon args + # use $PIDDIR/$DAEMONBASE$1.pid as pidfile + + local DAEMONBASE=$(basename $2) + local PIDFILE=$PIDDIR/$DAEMONBASE$1.pid + echo "Starting daemon $1: $2 $3" + if exists start-stop-daemon ; then + start-stop-daemon --start --pidfile "$PIDFILE" --background --make-pidfile --exec "$2" -- $3 + else + if [ -f "$PIDFILE" ] && pgrep -F "$PIDFILE" "$DAEMONBASE" >/dev/null; then + echo already running + else + "$2" $3 >/dev/null 2>/dev/null & + PID=$! + if [ -n "$PID" ]; then + echo $PID >$PIDFILE + else + echo could not start daemon $1 : $2 $3 + false + fi + fi + fi +} +stop_daemon() +{ + # $1 - daemon number : 1,2,3,... + # $2 - daemon + # use $PIDDIR/$DAEMONBASE$1.pid as pidfile + local DAEMONBASE=$(basename $2) + local PIDFILE=$PIDDIR/$DAEMONBASE$1.pid + echo "Stopping daemon $1: $2" + if exists start-stop-daemon ; then + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "$2" + else + if [ -f "$PIDFILE" ]; then + read PID <"$PIDFILE" + kill $PID + rm -f "$PIDFILE" + else + echo no pidfile : $PIDFILE + fi + fi +} +do_daemon() +{ + # $1 - 1 - run, 0 - stop + on_off_function run_daemon stop_daemon "$@" +} + + +prepare_user() +{ + # $WS_USER is required to prevent redirection of the traffic originating from TPWS itself + # otherwise infinite loop will occur + # also its good idea not to run tpws as root + id -u $WS_USER >/dev/null 2>/dev/null || useradd --no-create-home --system --shell /bin/false $WS_USER +} +do_tpws() +{ + # $1 : 1 - run, 0 - stop + # $2 : daemon number + # $3 : daemon args + + [ "$1" = "1" ] && prepare_user + + [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && return 0 + + local OPT="$TPWS_OPT_BASE" + + [ "$DISABLE_IPV4" = "1" ] || OPT="$OPT $TPWS_OPT_BASE4" + [ "$DISABLE_IPV6" = "1" ] || { + OPT="$OPT $TPWS_OPT_BASE6" + [ -n "$IFACE_LAN" ] && OPT="$OPT --bind-iface6=$IFACE_LAN $TPWS_OPT_BASE6_PRE" + } + + do_daemon $1 $2 $TPWS "$OPT $3" +} +do_nfqws() +{ + # $1 : 1 - run, 0 - stop + # $2 : daemon number + # $3 : daemon args + + [ "$1" = "1" ] && prepare_user + do_daemon $1 $2 $NFQWS "$NFQWS_OPT_BASE $3" +} + + +filter_apply_port_target() +{ + # $1 - var name of iptables filter + local f + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + f="-m multiport --dports 80,443" + elif [ "$MODE_HTTPS" = "1" ]; then + f="--dport 443" + elif [ "$MODE_HTTP" = "1" ]; then + f="--dport 80" + else + echo WARNING !!! HTTP and HTTPS are both disabled + fi + eval $1="\"\$$1 $f\"" +} +filter_apply_ipset_target() +{ + # $1 - var name of ipv4 iptables filter + # $2 - var name of ipv6 iptables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 -m set --match-set zapret dst\"" + eval $2="\"\$$2 -m set --match-set zapret6 dst\"" + fi +} +filter_apply_hostlist_target() +{ + # $1 - var name of tpws or nfqws params + [ "$MODE_FILTER" = "hostlist" ] && eval $1="\"\$$1 --hostlist=$HOSTLIST\"" +} + + +create_ipset() +{ + echo "Creating ipset" + "$IPSET_CR" "$@" +} + + + +zapret_do_firewall() +{ + # $1 - 1 - add, 0 - del + + local first_packet_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 2:4" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + local f4 f6 + + # always create ipsets. ip_exclude ipset is required + [ "$1" != "1" ] || create_ipset no-update + + case "${MODE}" in + tpws) + if [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ]; then + echo both http and https are disabled. not applying redirection. + else + filter_apply_port_target f4 + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws $1 "$f4" "$f6" $TPPORT + fi + ;; + + nfqws) + if [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ]; then + echo both http and https are disabled. not applying redirection. + else + if [ "$MODE_HTTP_KEEPALIVE" = "1" ]; then + if [ "$MODE_HTTP" = "1" ]; then + f4="--dport 80" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + fi + if [ "$MODE_HTTPS" = "1" ]; then + f4="--dport 443 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + fi + else + filter_apply_port_target f4 + f4="$f4 $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + fi + fi + ;; + custom) + existf zapret_custom_firewall && zapret_custom_firewall $1 + ;; + esac + [ "$1" = 0 ] && unprepare_tpws_fw +} +zapret_apply_firewall() +{ + zapret_do_firewall 1 "$@" +} +zapret_unapply_firewall() +{ + zapret_do_firewall 0 "$@" +} + +zapret_do_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt + + case "${MODE}" in + tpws) + opt="$TPWS_OPT" + filter_apply_hostlist_target opt + do_tpws $1 1 "$opt" + ;; + nfqws) + opt="$NFQWS_OPT_DESYNC" + filter_apply_hostlist_target opt + do_nfqws $1 1 "$opt" + ;; + custom) + existf zapret_custom_daemons && zapret_custom_daemons $1 + ;; + esac +} + +zapret_run_daemons() +{ + zapret_do_daemons 1 "$@" +} +zapret_stop_daemons() +{ + zapret_do_daemons 0 "$@" +} diff --git a/init.d/sysv/zapret b/init.d/sysv/zapret new file mode 100755 index 0000000..0691bba --- /dev/null +++ b/init.d/sysv/zapret @@ -0,0 +1,50 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: zapret +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +SCRIPT=$(readlink -f "$0") +EXEDIR=$(dirname "$SCRIPT") +ZAPRET_BASE=$(readlink -f "$EXEDIR/../..") +. "$EXEDIR/functions" + +NAME=zapret +DESC=anti-zapret + +case "$1" in + start) + zapret_run_daemons + [ "$INIT_APPLY_FW" != "1" ] || zapret_apply_firewall + ;; + + stop) + zapret_stop_daemons + [ "$INIT_APPLY_FW" != "1" ] || zapret_unapply_firewall + ;; + + start-fw) + zapret_apply_firewall + ;; + stop-fw) + zapret_unapply_firewall + ;; + + start-daemons) + zapret_run_daemons + ;; + stop-daemons) + zapret_stop_daemons + ;; + + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|start-fw|stop-fw|start-daemons|stop-daemons}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/install_bin.sh b/install_bin.sh new file mode 100755 index 0000000..60d5951 --- /dev/null +++ b/install_bin.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +BINS=binaries +BINDIR="$EXEDIR/$BINS" + +check_dir() +{ + local exe=$BINDIR/$1/ip2net + if [ -f "$exe" ]; then + if [ -x "$exe" ]; then + echo 0.0.0.0 | "$exe" 1>/dev/null 2>/dev/null + else + echo "$exe is not executable. set proper chmod." + return 1 + fi + else + echo "$exe is absent" + return 2 + fi +} + +# link or copy executables. uncomment either ln or cp, comment other +ccp() +{ + local F=$(basename $1) + [ -d "$EXEDIR/$2" ] || mkdir "$EXEDIR/$2" + [ -f "$EXEDIR/$2/$F" ] && rm -f "$EXEDIR/$2/$F" + ln -fs "../$BINS/$1" "$EXEDIR/$2" && echo linking : "../$BINS/$1" =\> "$EXEDIR/$2" + #cp -f "$BINDIR/$1" "$EXEDIR/$2" && echo copying : "$BINDIR/$1" =\> "$EXEDIR/$2" +} + +UNAME=$(uname) +if [ "$UNAME" = "Linux" ]; then + ARCHLIST="my x86_64 x86 aarch64 arm mips64r2-msb mips32r1-lsb mips32r1-msb ppc" +elif [ "$UNAME" = "Darwin" ]; then + ARCHLIST="my mac64" +else + ARCHLIST="my" +fi + +if [ "$1" = "getarch" ]; then + for arch in $ARCHLIST + do + [ -d "$BINDIR/$arch" ] || continue + if check_dir $arch; then + echo $arch + exit 0 + fi + done +else + for arch in $ARCHLIST + do + [ -d "$BINDIR/$arch" ] || continue + if check_dir $arch; then + echo $arch is OK + echo installing binaries ... + ccp $arch/ip2net ip2net + ccp $arch/mdig mdig + if [ "$(uname)" = "Linux" ]; then + ccp $arch/nfqws nfq + else + ccp $arch/dvtws nfq + fi + ccp $arch/tpws tpws + exit 0 + else + echo $arch is NOT OK + fi + done + echo no compatible binaries found +fi + +exit 1 diff --git a/install_easy.sh b/install_easy.sh new file mode 100755 index 0000000..8323669 --- /dev/null +++ b/install_easy.sh @@ -0,0 +1,1235 @@ +#!/bin/sh + +# automated script for easy installing zapret + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +IPSET_DIR="$EXEDIR/ipset" +ZAPRET_CONFIG="$EXEDIR/config" +ZAPRET_BASE="$EXEDIR" + +. "$ZAPRET_CONFIG" + +# install target +ZAPRET_TARGET=/opt/zapret + +GET_LIST="$IPSET_DIR/get_config.sh" +GET_LIST_PREFIX=/ipset/get_ +INIT_SCRIPT=/etc/init.d/zapret + +DNSCHECK_DNS="8.8.8.8 1.1.1.1 77.88.8.8" +DNSCHECK_DOM="pornhub.com putinhuylo.com rutracker.org nnmclub.to kinozal.tv" +DNSCHECK_DIG1=/tmp/dig1.txt +DNSCHECK_DIG2=/tmp/dig2.txt +DNSCHECK_DIGS=/tmp/digs.txt + +SYSTEMD_SYSTEM_DIR=/lib/systemd/system +[ -d "$SYSTEMD_SYSTEM_DIR" ] || SYSTEMD_SYSTEM_DIR=/usr/lib/systemd/system + +ECHON="echo -n" + +exists() +{ + which $1 >/dev/null 2>/dev/null +} +whichq() +{ + which $1 2>/dev/null +} + +MD5=md5sum +exists $MD5 || MD5=md5 + +contains() +{ + # check if substring $2 contains in $1 + [ "${1#*$2}" != "$1" ] +} + +exitp() +{ + local A + + echo + echo press enter to continue + read A + exit $1 +} + +require_root() +{ + [ $(id -u) -ne "0" ] && { + echo root is required + exists sudo && exec sudo "$0" + exists su && exec su -c "$0" + echo su or sudo not found + exitp 2 + } +} + +sedi() +{ + # MacOS doesnt support -i without parameter. busybox doesnt support -i with parameter. + # its not possible to put "sed -i ''" to a variable and then use it + if [ "$SYSTEM" = "macos" ]; then + sed -i '' "$@" + else + sed -i "$@" + fi +} + +read_yes_no() +{ + # $1 - default (Y/N) + local A + read A + [ -z "$A" ] || ([ "$A" != "Y" ] && [ "$A" != "y" ] && [ "$A" != "N" ] && [ "$A" != "n" ]) && A=$1 + [ "$A" = "Y" ] || [ "$A" = "y" ] || [ "$A" = "1" ] +} +ask_yes_no() +{ + # $1 - default (Y/N or 0/1) + # $2 - text + local DEFAULT=$1 + [ "$1" = "1" ] && DEFAULT=Y + [ "$1" = "0" ] && DEFAULT=N + [ -z "$DEFAULT" ] && DEFAULT=N + $ECHON "$2 (default : $DEFAULT) (Y/N) ? " + read_yes_no $DEFAULT +} +ask_yes_no_var() +{ + # $1 - variable name for answer : 0/1 + # $2 - text + local DEFAULT + eval DEFAULT="\$$1" + if ask_yes_no "$DEFAULT" "$2"; then + eval $1=1 + else + eval $1=0 + fi +} + +on_off_function() +{ + # $1 : function name on + # $2 : function name off + # $3 : 0 - off, 1 - on + local F="$1" + [ "$3" = "1" ] || F="$2" + shift + shift + shift + "$F" "$@" +} + +get_dir_inode() +{ + local dir="$1" + [ -L "$dir" ] && dir=$(readlink "$dir") + ls -id "$dir" | awk '{print $1}' +} + +random() +{ + # $1 - min, $2 - max + local r rs + if [ -c /dev/urandom ]; then + read rs /dev/null) + [ -z "$M" ] && M="$M_DEFAULT" + echo selected : $M + eval $1="$M" + + [ "$M" != "$M_OLD" ] +} +write_config_var() +{ + # $1 - mode var + local M + eval M="\$$1" + + if grep -q "^$1=\|^#$1=" "$ZAPRET_CONFIG"; then + # replace / => \/ + #M=${M//\//\\\/} + M=$(echo $M | sed 's/\//\\\//g') + if [ -n "$M" ]; then + if contains "$M" " "; then + sedi -Ee "s/^#?$1=.*$/$1=\"$M\"/" "$ZAPRET_CONFIG" + else + sedi -Ee "s/^#?$1=.*$/$1=$M/" "$ZAPRET_CONFIG" + fi + else + # write with comment at the beginning + sedi -Ee "s/^#?$1=.*$/#$1=/" "$ZAPRET_CONFIG" + fi + else + # var does not exist in config. add it + if [ -n "$M" ]; then + echo "$1=$M" >>"$ZAPRET_CONFIG" + else + echo "#$1=$M" >>"$ZAPRET_CONFIG" + fi + fi +} + +select_mode_mode() +{ + local MODES="tpws nfqws filter custom" + [ "$SYSTEM" = "macos" ] && MODES="tpws filter" + echo + echo select MODE : + ask_list MODE "$MODES" tpws && write_config_var MODE + case $MODE in + tpws) + echo + echo tpws options : $TPWS_OPT + echo to change : edit TPWS_OPT in $ZAPRET_CONFIG + ;; + nfqws) + echo + echo nfqws options : $NFQWS_OPT_DESYNC + echo to change : edit NFQWS_OPT_DESYNC in $ZAPRET_CONFIG + ;; + esac +} +select_mode_http() +{ + [ "$MODE" != "filter" ] && { + echo + ask_yes_no_var MODE_HTTP "enable http support" + write_config_var MODE_HTTP + } +} +select_mode_keepalive() +{ + [ "$MODE" = "nfqws" ] && [ "$MODE_HTTP" = "1" ] && { + echo + echo enable keep alive support only if DPI checks every outgoing packet for http signature + echo dont enable otherwise because it consumes more cpu resources + ask_yes_no_var MODE_HTTP_KEEPALIVE "enable http keep alive support" + write_config_var MODE_HTTP_KEEPALIVE + } +} +select_mode_https() +{ + [ "$MODE" != "filter" ] && { + echo + ask_yes_no_var MODE_HTTPS "enable https support" + write_config_var MODE_HTTPS + } +} +select_mode_filter() +{ + echo + echo select filtering : + ask_list MODE_FILTER "none ipset hostlist" none && write_config_var MODE_FILTER +} +select_mode() +{ + select_mode_mode + select_mode_http + select_mode_keepalive + select_mode_https + select_mode_filter +} + +select_getlist() +{ + if [ "$MODE_FILTER" = "ipset" -o "$MODE_FILTER" = "hostlist" ]; then + local D=N + [ -n "$GETLIST" ] && D=Y + echo + if ask_yes_no $D "do you want to auto download ip/host list"; then + if [ "$MODE_FILTER" = "hostlist" ] ; then + local GL_OLD=$GETLIST + GETLIST="get_reestr_hostlist.sh" + [ "$GL_OLD" != "$GET_LIST" ] && write_config_var GETLIST + else + GETLISTS="get_user.sh get_antifilter_ip.sh get_antifilter_ipsmart.sh get_antifilter_ipsum.sh get_reestr_ip.sh get_reestr_combined.sh get_reestr_resolve.sh" + GETLIST_DEF="get_antifilter_ipsmart.sh" + ask_list GETLIST "$GETLISTS" "$GETLIST_DEF" && write_config_var GETLIST + fi + return + fi + fi + GETLIST="" + write_config_var GETLIST +} +select_ipv6() +{ + local T=N + + [ "$DISABLE_IPV6" != '1' ] && T=Y + local old6=$DISABLE_IPV6 + echo + if ask_yes_no $T "enable ipv6 support"; then + DISABLE_IPV6=0 + else + DISABLE_IPV6=1 + fi + [ "$old6" != "$DISABLE_IPV6" ] && write_config_var DISABLE_IPV6 +} + +ask_config() +{ + select_mode + select_getlist +} + +ask_iface() +{ + # $1 - var to ask + # $2 - additional name () + + local ifs i0 + [ -n "$2" ] && i0="$2 " + case $SYSTEM in + macos) + ifs="$(ifconfig -l)" + ;; + *) + ifs="$(ls /sys/class/net)" + ;; + esac + ask_list $1 "$i0$ifs" && write_config_var $1 +} + +ask_config_offload() +{ + is_flow_offload_avail && { + echo + echo flow offloading can greatly increase speed on slow devices and high speed links \(usually 150+ mbits\) + echo unfortuantely its not compatible with most nfqws options. nfqws traffic must be exempted from flow offloading. + echo donttouch = disable system flow offloading setting if nfqws mode was selected, dont touch it otherwise and dont configure selective flow offloading + echo none = always disable system flow offloading setting and dont configure selective flow offloading + echo software = always disable system flow offloading setting and configure selective software flow offloading + echo hardware = always disable system flow offloading setting and configure selective hardware flow offloading + echo select flow offloading : + ask_list FLOWOFFLOAD "donttouch none software hardware" donttouch && write_config_var FLOWOFFLOAD + } +} + +get_free_space_mb() +{ + df -m $PWD | awk '/[0-9]%/{print $(NF-2)}' +} +get_ram_kb() +{ + grep MemTotal /proc/meminfo | awk '{print $2}' +} +get_ram_mb() +{ + local R=$(get_ram_kb) + echo $(($R/1024)) +} + +ask_config_tmpdir() +{ + # ask tmpdir change for low ram systems with enough free disk space + [ -n "$GETLIST" ] && [ $(get_free_space_mb "$EXEDIR/tmp") -ge 128 ] && [ $(get_ram_mb) -le 400 ] && { + echo + echo /tmp in openwrt is tmpfs. on low RAM systems there may be not enough RAM to store downloaded files + echo default tmpfs has size of 50% RAM + echo "RAM : $(get_ram_mb) Mb" + echo "DISK : $(get_free_space_mb) Mb" + echo select temp file location + [ -z "$TMPDIR" ] && TMPDIR=/tmp + ask_list TMPDIR "/tmp $EXEDIR/tmp" && { + [ "$TMPDIR" = "/tmp" ] && TMPDIR= + write_config_var TMPDIR + } + } +} + +select_router_iface() +{ + # $1 - ask iface function name + + local T=N + [ -n "$IFACE_LAN" ] && T=Y + local old_lan=$IFACE_LAN + local old_wan=$IFACE_WAN + + echo + if [ "$SYSTEM" = "macos" ]; then + echo "WARNING ! OS feature \"internet sharing\" is not supported." + echo "Only manually configured PF router is supported." + else + echo "WARNING ! This installer will not configure routing, NAT, ... for you. Its your responsibility." + fi + if ask_yes_no $T "is this system a router"; then + echo LAN interface : + ask_iface IFACE_LAN + echo WAN interface : + [ -n "$IFACE_WAN" ] || IFACE_WAN="ANY" + ask_iface IFACE_WAN "ANY" + [ "$IFACE_WAN" = "ANY" ] && { + # any = not defined + IFACE_WAN= + write_config_var IFACE_WAN + } + else + [ -n "$old_lan" ] && { + IFACE_LAN="" + write_config_var IFACE_LAN + } + [ -n "$old_wan" ] && { + IFACE_WAN="" + write_config_var IFACE_WAN + } + fi +} +ask_config_desktop() +{ + select_router_iface +} + +copy_all() +{ + cp -R "$1" "$2" + [ -d "$2/tmp" ] || mkdir "$2/tmp" +} +copy_openwrt() +{ + local ARCH=$(get_bin_arch) + local BINDIR="$1/binaries/$ARCH" + + [ -d "$2" ] || mkdir -p "$2" + + mkdir "$2/tpws" "$2/nfq" "$2/ip2net" "$2/mdig" "$2/binaries" "$2/binaries/$ARCH" "$2/init.d" "$2/tmp" + cp -R "$1/ipset" "$2" + cp -R "$1/init.d/openwrt" "$2/init.d" + cp "$1/config" "$1/install_easy.sh" "$1/uninstall_easy.sh" "$1/install_bin.sh" "$2" + cp "$BINDIR/tpws" "$BINDIR/nfqws" "$BINDIR/ip2net" "$BINDIR/mdig" "$2/binaries/$ARCH" +} + +_backup_settings() +{ + local i=0 + for f in "$@"; do + [ -f "$ZAPRET_TARGET/$f" ] && cp -f "$ZAPRET_TARGET/$f" "/tmp/zapret-bkp-$i" + i=$(($i+1)) + done +} +_restore_settings() +{ + local i=0 + for f in "$@"; do + [ -f "/tmp/zapret-bkp-$i" ] && mv -f "/tmp/zapret-bkp-$i" "$ZAPRET_TARGET/$f" || rm -f "/tmp/zapret-bkp-$i" + i=$(($i+1)) + done +} +backup_restore_settings() +{ + # $1 - 1 - backup, 0 - restore + local mode=$1 + on_off_function _backup_settings _restore_settings $mode "config" "init.d/sysv/custom" "init.d/openwrt/custom" "ipset/zapret-hosts-user.txt" "ipset/zapret-hosts-user-exclude.txt" "ipset/zapret-hosts-user-ipban.txt" +} + +check_location() +{ + # $1 - copy function + + echo \* checking location + + # use inodes in case something is linked + [ -d "$ZAPRET_TARGET" ] && [ $(get_dir_inode "$EXEDIR") = $(get_dir_inode "$ZAPRET_TARGET") ] || { + echo + echo easy install is supported only from default location : $ZAPRET_TARGET + echo currently its run from $EXEDIR + if ask_yes_no N "do you want the installer to copy it for you"; then + local keep=N + if [ -d "$ZAPRET_TARGET" ]; then + echo + echo installer found existing $ZAPRET_TARGET + echo directory needs to be replaced. config and custom scripts can be kept or replaced with clean version + if ask_yes_no N "do you want to delete all files there and copy this version"; then + echo + ask_yes_no Y "keep config, custom scripts and user lists" && keep=Y + [ "$keep" = "Y" ] && backup_restore_settings 1 + rm -r "$ZAPRET_TARGET" + else + echo refused to overwrite $ZAPRET_TARGET. exiting + exitp 3 + fi + fi + local B=$(dirname "$ZAPRET_TARGET") + [ -d "$B" ] || mkdir -p "$B" + $1 "$EXEDIR" "$ZAPRET_TARGET" + [ "$keep" = "Y" ] && backup_restore_settings 0 + echo relaunching itself from $ZAPRET_TARGET + exec $ZAPRET_TARGET/$(basename $0) + else + echo copying aborted. exiting + exitp 3 + fi + } + echo running from $EXEDIR +} + + +check_prerequisites_linux() +{ + echo \* checking prerequisites + + if exists ipset && exists curl ; then + echo everything is present + else + echo \* installing prerequisites + + APTGET=$(whichq apt-get) + YUM=$(whichq yum) + PACMAN=$(whichq pacman) + ZYPPER=$(whichq zypper) + EOPKG=$(whichq eopkg) + if [ -x "$APTGET" ] ; then + "$APTGET" update + "$APTGET" install -y --no-install-recommends ipset curl dnsutils || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$YUM" ] ; then + "$YUM" -y install curl ipset || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$PACMAN" ] ; then + "$PACMAN" -Syy + "$PACMAN" --noconfirm -S ipset curl || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$ZYPPER" ] ; then + "$ZYPPER" --non-interactive install ipset curl || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$EOPKG" ] ; then + "$EOPKG" -y install ipset curl || { + echo could not install prerequisites + exitp 6 + } + else + echo supported package manager not found + echo you must manually install : ipset curl + exitp 5 + fi + fi +} + + +service_install_systemd() +{ + echo \* installing zapret service + + rm -f "$INIT_SCRIPT" + ln -fs "$EXEDIR/init.d/systemd/zapret.service" "$SYSTEMD_SYSTEM_DIR" + "$SYSTEMCTL" daemon-reload + "$SYSTEMCTL" enable zapret || { + echo could not enable systemd service + exitp 20 + } +} + +service_stop_systemd() +{ + echo \* stopping zapret service + + "$SYSTEMCTL" daemon-reload + "$SYSTEMCTL" disable zapret + "$SYSTEMCTL" stop zapret +} + +service_start_systemd() +{ + echo \* starting zapret service + + "$SYSTEMCTL" start zapret || { + echo could not start zapret service + exitp 30 + } +} + +timer_install_systemd() +{ + echo \* installing zapret-list-update timer + + "$SYSTEMCTL" disable zapret-list-update.timer + "$SYSTEMCTL" stop zapret-list-update.timer + ln -fs "$EXEDIR/init.d/systemd/zapret-list-update.service" "$SYSTEMD_SYSTEM_DIR" + ln -fs "$EXEDIR/init.d/systemd/zapret-list-update.timer" "$SYSTEMD_SYSTEM_DIR" + "$SYSTEMCTL" daemon-reload + "$SYSTEMCTL" enable zapret-list-update.timer || { + echo could not enable zapret-list-update.timer + exitp 20 + } + "$SYSTEMCTL" start zapret-list-update.timer || { + echo could not start zapret-list-update.timer + exitp 30 + } +} + +download_list() +{ + [ -x "$GET_LIST" ] && { + echo \* downloading blocked ip/host list + + # can be txt or txt.gz + "$IPSET_DIR/clear_lists.sh" + "$GET_LIST" || { + echo could not download ip list + exitp 25 + } + } +} + +end_with_newline() +{ + local c=$(tail -c 1) + [ "$c" = "" ] +} + +crontab_del_quiet() +{ + exists crontab || return + + CRONTMP=/tmp/cron.tmp + crontab -l >$CRONTMP 2>/dev/null + if grep -q "$GET_LIST_PREFIX" $CRONTMP; then + grep -v "$GET_LIST_PREFIX" $CRONTMP >$CRONTMP.2 + crontab $CRONTMP.2 + rm -f $CRONTMP.2 + fi + rm -f $CRONTMP +} + +crontab_add() +{ + # $1 - hour min + # $2 - hour max + [ -x "$GET_LIST" ] && { + echo \* adding crontab entry + + CRONTMP=/tmp/cron.tmp + crontab -l >$CRONTMP 2>/dev/null + if grep -q "$GET_LIST_PREFIX" $CRONTMP; then + echo some entries already exist in crontab. check if this is corrent : + grep "$GET_LIST_PREFIX" $CRONTMP + else + end_with_newline <"$CRONTMP" || echo >>"$CRONTMP" + echo "$(random 0 59) $(random $1 $2) */2 * * $GET_LIST" >>$CRONTMP + crontab $CRONTMP + fi + + rm -f $CRONTMP + } +} +cron_ensure_running() +{ + # if no crontabs present in /etc/cron openwrt init script does not launch crond. this is default + [ "$SYSTEM" = "openwrt" ] && { + /etc/init.d/cron enable + /etc/init.d/cron start + } +} + + +pingtest() +{ + ping -c 1 -W 1 $1 >/dev/null +} +find_working_public_dns() +{ + for dns in $DNSCHECK_DNS; do + pingtest $dns && nslookup w3.org $dns >/dev/null 2>/dev/null && { + PUBDNS=$dns + return 0 + } + done + return 1 +} +check_dns_spoof() +{ + # $1 - domain + # $2 - public DNS + echo $1 | "$EXEDIR/mdig/mdig" --family=4 >"$DNSCHECK_DIG1" + nslookup $1 $2 | sed -n '/Name:/,$p' | grep ^Address | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' >"$DNSCHECK_DIG2" + # check whether system resolver returns anything other than public DNS + grep -qvFf "$DNSCHECK_DIG2" "$DNSCHECK_DIG1" +} +check_dns_cleanup() +{ + rm -f "$DNSCHECK_DIG1" "$DNSCHECK_DIG2" "$DNSCHECK_DIGS" 2>/dev/null +} +check_dns() +{ + local C1 C2 + + echo \* checking DNS + + [ -f "$DNSCHECK_DIGS" ] && rm -f "$DNSCHECK_DIGS" + if find_working_public_dns ; then + echo comparing system resolver to public DNS : $PUBDNS + for dom in $DNSCHECK_DOM; do + if check_dns_spoof $dom $PUBDNS ; then + echo $dom : MISMATCH + echo -- system resolver : + cat "$DNSCHECK_DIG1" + echo -- $PUBDNS : + cat "$DNSCHECK_DIG2" + check_dns_cleanup + echo -- POSSIBLE DNS HIJACK DETECTED. ZAPRET WILL NOT HELP YOU IN CASE DNS IS SPOOFED !!! + echo -- DNS CHANGE OR DNSCRYPT MAY BE REQUIRED + return 1 + else + echo $dom : OK + cat "$DNSCHECK_DIG1" >>"$DNSCHECK_DIGS" + fi + done + else + echo no working public DNS was found. looks like public DNS blocked. + for dom in $DNSCHECK_DOM; do echo $dom; done | "$EXEDIR/mdig/mdig" --family=4 >"$DNSCHECK_DIGS" + fi + + echo checking resolved IP uniqueness for : $DNSCHECK_DOM + echo censor\'s DNS can return equal result for multiple blocked domains. + C1=$(wc -l <"$DNSCHECK_DIGS") + C2=$(sort -u "$DNSCHECK_DIGS" | wc -l) + [ "$C1" = "$C2" ] || + { + echo system dns resolver has returned equal IPs for some domains checked above \($C1 total, $C2 unique\) + echo non-unique IPs : + sort "$DNSCHECK_DIGS" | uniq -d + echo -- POSSIBLE DNS HIJACK DETECTED. ZAPRET WILL NOT HELP YOU IN CASE DNS IS SPOOFED !!! + echo -- DNSCRYPT MAY BE REQUIRED + check_dns_cleanup + return 1 + } + echo all resolved IPs are unique + echo -- DNS looks good + echo -- NOTE this check is Russia targeted. In your country other domains can be blocked. + check_dns_cleanup + return 0 +} + +install_systemd() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret" + + check_bins + require_root + check_location copy_all + check_prerequisites_linux + service_stop_systemd + install_binaries + check_dns + select_ipv6 + ask_config_desktop + ask_config + service_install_systemd + download_list + # in case its left from old version of zapret + crontab_del_quiet + # now we use systemd timers + timer_install_systemd + service_start_systemd +} + + + + +check_kmod() +{ + [ -f "/lib/modules/$(uname -r)/$1.ko" ] +} +check_package_exists_openwrt() +{ + [ -n "$(opkg list $1)" ] +} +check_package_openwrt() +{ + [ -n "$(opkg list-installed $1)" ] +} +check_packages_openwrt() +{ + for pkg in $@; do + check_package_openwrt $pkg || return + done +} + +is_linked_to_busybox() +{ + local F P + F=/usr/bin/$1 + P="$(readlink $F)" + if [ -z "$P" ] && [ -x $F ] && [ ! -L $F ]; then return 1; fi + [ "${P%busybox*}" != "$P" ] && return + F=/bin/$1 + P="$(readlink $F)" + if [ -z "$P" ] && [ -x $F ] && [ ! -L $F ]; then return 1; fi + [ "${P%busybox*}" != "$P" ] +} + +check_prerequisites_openwrt() +{ + echo \* checking prerequisites + + local PKGS="iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra ipset curl" + [ "$DISABLE_IPV6" != "1" ] && PKGS="$PKGS ip6tables-mod-nat" + local UPD=0 + + if check_packages_openwrt $PKGS ; then + echo everything is present + else + echo \* installing prerequisites + + opkg update + UPD=1 + opkg install $PKGS || { + echo could not install prerequisites + exitp 6 + } + fi + + is_linked_to_busybox gzip && { + echo + echo your system uses default busybox gzip. its several times slower than GNU gzip. + echo ip/host list scripts will run much faster with GNU gzip + echo installer can install GNU gzip but it requires about 100 Kb space + if ask_yes_no N "do you want to install GNU gzip"; then + [ "$UPD" = "0" ] && { + opkg update + UPD=1 + } + opkg install --force-overwrite gzip + fi + } + is_linked_to_busybox sort && { + echo + echo your system uses default busybox sort. its much slower and consumes much more RAM than GNU sort + echo ip/host list scripts will run much faster with GNU sort + echo installer can install GNU sort but it requires about 100 Kb space + if ask_yes_no N "do you want to install GNU sort"; then + [ "$UPD" = "0" ] && { + opkg update + UPD=1 + } + opkg install --force-overwrite coreutils-sort + fi + } + is_linked_to_busybox grep && { + echo + echo your system uses default busybox grep. its damn infinite slow with -f option + echo get_combined.sh will be severely impacted + echo installer can install GNU grep but it requires about 0.5 Mb space + if ask_yes_no N "do you want to install GNU grep"; then + [ "$UPD" = "0" ] && { + opkg update + UPD=1 + } + opkg install --force-overwrite grep + + # someone reported device partially fail if /bin/grep is absent + # grep package deletes /bin/grep + [ -f /bin/grep ] || ln -s busybox /bin/grep + fi + } +} + +openwrt_fw_section_find() +{ + # $1 - fw include postfix + # echoes section number + + i=0 + while true + do + path=$(uci -q get firewall.@include[$i].path) + [ -n "$path" ] || break + [ "$path" = "$OPENWRT_FW_INCLUDE$1" ] && { + echo $i + return 0 + } + i=$(($i+1)) + done + return 1 +} +openwrt_fw_section_del() +{ + # $1 - fw include postfix + + local id=$(openwrt_fw_section_find $1) + [ -n "$id" ] && { + uci delete firewall.@include[$id] && uci commit firewall + rm -f "$OPENWRT_FW_INCLUDE$1" + } +} +openwrt_fw_section_add() +{ + openwrt_fw_section_find || + { + uci add firewall include >/dev/null || return + echo -1 + } +} +openwrt_fw_section_configure() +{ + local id=$(openwrt_fw_section_add $1) + [ -z "$id" ] || + ! uci set firewall.@include[$id].path="$OPENWRT_FW_INCLUDE" || + ! uci set firewall.@include[$id].reload="1" || + ! uci commit firewall && + { + echo could not add firewall include + exitp 50 + } +} + +install_openwrt_firewall() +{ + echo \* installing firewall script $1 + + [ -n "MODE" ] || { + echo should specify MODE in $ZAPRET_CONFIG + exitp 7 + } + + echo "linking : $FW_SCRIPT_SRC => $OPENWRT_FW_INCLUDE" + ln -fs "$FW_SCRIPT_SRC" "$OPENWRT_FW_INCLUDE" + + openwrt_fw_section_configure $1 +} + + +restart_openwrt_firewall() +{ + echo \* restarting firewall + + fw3 -q restart || { + echo could not restart firewall + exitp 30 + } +} + +remove_openwrt_firewall() +{ + echo \* removing firewall script + + openwrt_fw_section_del + # from old zapret versions. now we use single include + openwrt_fw_section_del 6 + + # free some RAM + "$IPSET_DIR/create_ipset.sh" clear +} + +install_openwrt_iface_hook() +{ + echo \* installing ifup hook + + ln -fs "$OPENWRT_IFACE_HOOK" /etc/hotplug.d/iface +} + +is_flow_offload_avail() +{ + # $1 = '' for ipv4, '6' for ipv6 + grep -q FLOWOFFLOAD /proc/net/ip$1_tables_targets +} + +deoffload_openwrt_firewall() +{ + echo \* checking flow offloading + + is_flow_offload_avail || { + echo unavailable + return + } + + local fo=$(uci -q get firewall.@defaults[0].flow_offloading) + + if [ "$fo" = "1" ] ; then + local mod=0 + $ECHON "system wide flow offloading detected. " + case $FLOWOFFLOAD in + donttouch) + if [ "$MODE" = "nfqws" ]; then + echo its incompatible with nfqws tcp data tampering. disabling + uci set firewall.@defaults[0].flow_offloading=0 + mod=1 + else + if [ "$MODE" = "custom" ] ; then + echo custom mode selected !!! only you can decide whether flow offloading is compatible + else + echo its compatible with selected options. not disabling + fi + fi + ;; + *) + echo zapret will disable system wide offloading setting and add selective rules if required + uci set firewall.@defaults[0].flow_offloading=0 + mod=1 + esac + [ "$mod" = "1" ] && uci commit firewall + else + echo system wide software flow offloading disabled. ok + fi + +} + +install_sysv_init() +{ + # $1 - "0"=disable + echo \* installing init script + + [ -x "$INIT_SCRIPT" ] && { + "$INIT_SCRIPT" stop + "$INIT_SCRIPT" disable + } + ln -fs "$INIT_SCRIPT_SRC" "$INIT_SCRIPT" + [ "$1" != "0" ] && "$INIT_SCRIPT" enable +} + +service_start_sysv() +{ + echo \* starting zapret service + + "$INIT_SCRIPT" start || { + echo could not start zapret service + exitp 30 + } +} + + + +install_openwrt() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/openwrt/zapret" + FW_SCRIPT_SRC="$EXEDIR/init.d/openwrt/firewall.zapret" + OPENWRT_FW_INCLUDE=/etc/firewall.zapret + OPENWRT_IFACE_HOOK="$EXEDIR/init.d/openwrt/90-zapret" + + check_bins + require_root + check_location copy_openwrt + install_binaries + check_dns + select_ipv6 + check_prerequisites_openwrt + ask_config + ask_config_tmpdir + ask_config_offload + install_sysv_init + # can be previous firewall preventing access + remove_openwrt_firewall + restart_openwrt_firewall + download_list + crontab_del_quiet + # router system : works 24/7. night is the best time + crontab_add 0 6 + cron_ensure_running + service_start_sysv + install_openwrt_iface_hook + install_openwrt_firewall + deoffload_openwrt_firewall + restart_openwrt_firewall +} + + + +remove_macos_firewall() +{ + echo \* removing zapret PF hooks + + pf_anchors_clear + pf_anchor_root_del + pf_anchor_root_reload +} +service_install_macos() +{ + echo \* installing zapret service + + ln -fs /opt/zapret/init.d/macos/zapret.plist /Library/LaunchDaemons +} +service_start_macos() +{ + echo \* starting zapret service + + ln -fs /opt/zapret/init.d/macos/zapret.plist /Library/LaunchDaemons + "$INIT_SCRIPT_SRC" start +} +macos_fw_reload_trigger_clear() +{ + LISTS_RELOAD= + write_config_var LISTS_RELOAD +} +macos_fw_reload_trigger_set() +{ + LISTS_RELOAD="$INIT_SCRIPT_SRC reload-fw-tables" + write_config_var LISTS_RELOAD +} + +install_macos() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/macos/zapret" + + # compile before root + check_bins + require_root + check_location copy_all + install_binaries + check_dns + select_ipv6 + ask_config_desktop + ask_config + service_install_macos + remove_macos_firewall + macos_fw_reload_trigger_clear + # gzip lists are incompatible with PF + GZIP_LISTS=0 write_config_var GZIP_LISTS + download_list + macos_fw_reload_trigger_set + crontab_del_quiet + # desktop system. more likely up at daytime + crontab_add 10 22 + service_start_macos +} + + +# build binaries, do not use precompiled +[ "$1" = "make" ] && FORCE_BUILD=1 + +check_system + +[ "$SYSTEM" = "macos" ] && . "$EXEDIR/init.d/macos/functions" + +case $SYSTEM in + systemd) + install_systemd + ;; + openwrt) + install_openwrt + ;; + macos) + install_macos + ;; +esac + + +exitp 0 diff --git a/ip2net/Makefile b/ip2net/Makefile new file mode 100644 index 0000000..782954e --- /dev/null +++ b/ip2net/Makefile @@ -0,0 +1,17 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -s -O3 +CFLAGS_BSD = -Wno-address-of-packed-member -Wno-logical-op-parentheses -Wno-switch +LIBS = +SRC_FILES = *.c + +all: ip2net +mac: bsd + +ip2net: $(SRC_FILES) + $(CC) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o ip2net $(SRC_FILES) $(LDFLAGS) $(LIBS) + +clean: + rm -f ip2net *.o diff --git a/ip2net/ip2net b/ip2net/ip2net new file mode 120000 index 0000000..315335f --- /dev/null +++ b/ip2net/ip2net @@ -0,0 +1 @@ +../binaries/x86_64/ip2net \ No newline at end of file diff --git a/ip2net/ip2net.c b/ip2net/ip2net.c new file mode 100644 index 0000000..b24ec78 --- /dev/null +++ b/ip2net/ip2net.c @@ -0,0 +1,397 @@ +// group ipv4/ipv6 list from stdout into subnets +// each line must contain either ip or ip/bitcount +// valid ip/bitcount and ip1-ip2 are passed through without modification +// ips are groupped into subnets + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "qsort.h" + +#define ALLOC_STEP 16384 + +// minimum subnet fill percent is PCTMULT/PCTDIV (for example 3/4) +#define DEFAULT_PCTMULT 3 +#define DEFAULT_PCTDIV 4 +// subnet search range in "zero bit count" +// means search start from /(32-ZCT_MAX) to /(32-ZCT_MIN) +#define DEFAULT_V4_ZCT_MAX 10 // /22 +#define DEFAULT_V4_ZCT_MIN 2 // /30 +#define DEFAULT_V6_ZCT_MAX 72 // /56 +#define DEFAULT_V6_ZCT_MIN 64 // /64 +// must be no less than N ipv6 in subnet +#define DEFAULT_V6_THRESHOLD 5 + +static int ucmp(const void * a, const void * b, void *arg) +{ + if (*(uint32_t*)a < *(uint32_t*)b) + return -1; + else if (*(uint32_t*)a > *(uint32_t*)b) + return 1; + else + return 0; +} +static uint32_t mask_from_bitcount(uint32_t zct) +{ + return ~((1 << zct) - 1); +} +// make presorted array unique. return number of unique items. +// 1,1,2,3,3,0,0,0 (ct=8) => 1,2,3,0 (ct=4) +static uint32_t unique(uint32_t *pu, uint32_t ct) +{ + uint32_t i, j, u; + for (i = j = 0; j < ct; i++) + { + u = pu[j++]; + for (; j < ct && pu[j] == u; j++); + pu[i] = u; + } + return i; +} + + + +static int cmp6(const void * a, const void * b, void *arg) +{ + for (uint8_t i = 0; i < sizeof(((struct in6_addr *)0)->s6_addr); i++) + { + if (((struct in6_addr *)a)->s6_addr[i] < ((struct in6_addr *)b)->s6_addr[i]) + return -1; + else if (((struct in6_addr *)a)->s6_addr[i] > ((struct in6_addr *)b)->s6_addr[i]) + return 1; + } + return 0; +} +// make presorted array unique. return number of unique items. +static uint32_t unique6(struct in6_addr *pu, uint32_t ct) +{ + uint32_t i, j, k; + for (i = j = 0; j < ct; i++) + { + for (k = j++; j < ct && !memcmp(pu + j, pu + k, sizeof(struct in6_addr)); j++); + pu[i] = pu[k]; + } + return i; +} +static void mask_from_bitcount6(uint32_t zct, struct in6_addr *a) +{ + if (zct >= 128) + memset(a->s6_addr,0x00,16); + else + { + int32_t n = (127 - zct) >> 3; + memset(a->s6_addr,0xFF,n); + memset(a->s6_addr+n,0x00,16-n); + a->s6_addr[n] = ~((1 << (zct & 7)) - 1); + } +} +// result = a & b +static void ip6_and(const struct in6_addr *a, const struct in6_addr *b, struct in6_addr *result) +{ + ((uint64_t*)result->s6_addr)[0] = ((uint64_t*)a->s6_addr)[0] & ((uint64_t*)b->s6_addr)[0]; + ((uint64_t*)result->s6_addr)[1] = ((uint64_t*)a->s6_addr)[1] & ((uint64_t*)b->s6_addr)[1]; +} + +static void rtrim(char *s) +{ + if (s) + for (char *p = s + strlen(s) - 1; p >= s && (*p == '\n' || *p == '\r'); p--) *p = '\0'; +} + + +static struct params_s +{ + bool ipv6; + uint32_t pctmult, pctdiv; // for v4 + uint32_t zct_min, zct_max; // for v4 and v6 + uint32_t v6_threshold; // for v6 +} params; + + +static void exithelp() +{ + printf( + " -4\t\t\t\t; ipv4 list (default)\n" + " -6\t\t\t\t; ipv6 list\n" + " --prefix-length=min[-max]\t; consider prefix lengths from 'min' to 'max'. examples : 22-30 (ipv4), 56-64 (ipv6)\n" + " --v4-threshold=mul/div\t\t; ipv4 only : include subnets with more than mul/div ips. example : 3/4\n" + " --v6-threshold=N\t\t; ipv6 only : include subnets with more than N v6 ips. example : 5\n" + ); + exit(1); +} + +static void parse_params(int argc, char *argv[]) +{ + int option_index = 0; + int v, i; + uint32_t plen1=-1, plen2=-1; + + memset(¶ms, 0, sizeof(params)); + params.pctmult = DEFAULT_PCTMULT; + params.pctdiv = DEFAULT_PCTDIV; + params.v6_threshold = DEFAULT_V6_THRESHOLD; + + const struct option long_options[] = { + { "help",no_argument,0,0 },// optidx=0 + { "h",no_argument,0,0 },// optidx=1 + { "4",no_argument,0,0 },// optidx=2 + { "6",no_argument,0,0 },// optidx=3 + { "prefix-length",required_argument,0,0 },// optidx=4 + { "v4-threshold",required_argument,0,0 },// optidx=5 + { "v6-threshold",required_argument,0,0 },// optidx=6 + { NULL,0,NULL,0 } + }; + while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) + { + if (v) exithelp(); + switch (option_index) + { + case 0: + case 1: + exithelp(); + break; + case 2: + params.ipv6 = false; + break; + case 3: + params.ipv6 = true; + break; + case 4: + i = sscanf(optarg,"%u-%u",&plen1,&plen2); + if (i == 1) plen2 = plen1; + if (!i || plen2=params.pctdiv) + { + fprintf(stderr, "invalid parameter for v4-threshold : %s\n", optarg); + exit(1); + } + break; + case 6: + i = sscanf(optarg, "%u", ¶ms.v6_threshold); + if (i != 1 || params.v6_threshold<1) + { + fprintf(stderr, "invalid parameter for v6-threshold : %s\n", optarg); + exit(1); + } + break; + } + } + if (plen1 != -1 && (!params.ipv6 && (plen1>31 || plen2>31) || params.ipv6 && (plen1>127 || plen2>127))) + { + fprintf(stderr, "invalid parameter for prefix-length\n"); + exit(1); + } + params.zct_min = params.ipv6 ? plen2==-1 ? DEFAULT_V6_ZCT_MIN : 128-plen2 : plen2==-1 ? DEFAULT_V4_ZCT_MIN : 32-plen2; + params.zct_max = params.ipv6 ? plen1==-1 ? DEFAULT_V6_ZCT_MAX : 128-plen1 : plen1==-1 ? DEFAULT_V4_ZCT_MAX : 32-plen1; +} + + +int main(int argc, char **argv) +{ + char str[256],d; + uint32_t ipct = 0, iplist_size = 0, pos = 0, p, zct, ip_ct, pos_end; + + parse_params(argc, argv); + + if (params.ipv6) // ipv6 + { + char *s; + struct in6_addr a, *iplist = NULL, *iplist_new; + + while (fgets(str, sizeof(str), stdin)) + { + rtrim(str); + d = 0; + if ((s = strchr(str, '/')) || (s = strchr(str, '-'))) + { + d = *s; + *s = '\0'; + } + if (inet_pton(AF_INET6, str, &a)) + { + if (d=='/') + { + // we have subnet ip6/y + // output it as is + *s = d; + if (sscanf(s + 1, "%u", &zct) && zct!=128) + { + if (zct<128) printf("%s\n", str); + continue; + } + } + else if (d=='-') + { + *s = d; + if (inet_pton(AF_INET6, s+1, &a)) printf("%s\n", str); + continue; + } + if (ipct >= iplist_size) + { + iplist_size += ALLOC_STEP; + iplist_new = (struct in6_addr*)(iplist ? realloc(iplist, sizeof(*iplist)*iplist_size) : malloc(sizeof(*iplist)*iplist_size)); + if (!iplist_new) + { + free(iplist); + fprintf(stderr, "out of memory\n"); + return 100; + } + iplist = iplist_new; + } + iplist[ipct++] = a; + } + } + gnu_quicksort(iplist, ipct, sizeof(*iplist), cmp6, NULL); + ipct = unique6(iplist, ipct); + + /* + for(uint32_t i=0;i= params.zct_min; zct--) + { + mask_from_bitcount6(zct, &mask); + ip6_and(iplist + pos, &mask, &ip_start); + for (p = pos + 1, ip_ct = 1; p < ipct; p++, ip_ct++) + { + ip6_and(iplist + p, &mask, &ip); + if (memcmp(&ip_start, &ip, sizeof(ip))) + break; + } + if (ip_ct == 1) break; + if (ip_ct >= params.v6_threshold) + { + // network found. but is there smaller network with the same ip_ct ? dont do carpet bombing if possible, use smaller subnets + if (!ip_ct_best || ip_ct == ip_ct_best) + { + ip_ct_best = ip_ct; + zct_best = zct; + pos_end = p; + } + else + break; + } + } + if (!zct_best) ip_start = iplist[pos], pos_end = pos + 1; // network not found, use single ip + inet_ntop(AF_INET6, &ip_start, str, sizeof(str)); + printf(zct_best ? "%s/%u\n" : "%s\n", str, 128 - zct_best); + + pos = pos_end; + } + + free(iplist); + } + else // ipv4 + { + uint32_t u1,u2,u3,u4, u11,u22,u33,u44, ip; + uint32_t *iplist = NULL, *iplist_new, i; + + while (fgets(str, sizeof(str), stdin)) + { + if ((i = sscanf(str, "%u.%u.%u.%u-%u.%u.%u.%u", &u1, &u2, &u3, &u4, &u11, &u22, &u33, &u44)) >= 8 && + !(u1 & 0xFFFFFF00) && !(u2 & 0xFFFFFF00) && !(u3 & 0xFFFFFF00) && !(u4 & 0xFFFFFF00) && + !(u11 & 0xFFFFFF00) && !(u22 & 0xFFFFFF00) && !(u33 & 0xFFFFFF00) && !(u44 & 0xFFFFFF00)) + { + printf("%u.%u.%u.%u-%u.%u.%u.%u\n", u1, u2, u3, u4, u11, u22, u33, u44); + } + else + if ((i = sscanf(str, "%u.%u.%u.%u/%u", &u1, &u2, &u3, &u4, &zct)) >= 4 && + !(u1 & 0xFFFFFF00) && !(u2 & 0xFFFFFF00) && !(u3 & 0xFFFFFF00) && !(u4 & 0xFFFFFF00)) + { + if (i == 5 && zct != 32) + { + // we have subnet x.x.x.x/y + // output it as is if valid, ignore otherwise + if (zct < 32) + printf("%u.%u.%u.%u/%u\n", u1, u2, u3, u4, zct); + } + else + { + ip = u1 << 24 | u2 << 16 | u3 << 8 | u4; + if (ipct >= iplist_size) + { + iplist_size += ALLOC_STEP; + iplist_new = (uint32_t*)(iplist ? realloc(iplist, sizeof(*iplist)*iplist_size) : malloc(sizeof(*iplist)*iplist_size)); + if (!iplist_new) + { + free(iplist); + fprintf(stderr, "out of memory\n"); + return 100; + } + iplist = iplist_new; + } + iplist[ipct++] = ip; + } + } + } + + gnu_quicksort(iplist, ipct, sizeof(*iplist), ucmp, NULL); + ipct = unique(iplist, ipct); + + while (pos < ipct) + { + uint32_t mask, ip_start, ip_end, subnet_ct; + uint32_t ip_ct_best = 0, zct_best = 0; + + // find smallest network with maximum ip coverage with no less than mul/div percent addresses + for (zct = params.zct_max; zct >= params.zct_min; zct--) + { + mask = mask_from_bitcount(zct); + ip_start = iplist[pos] & mask; + subnet_ct = ~mask + 1; + if (iplist[pos] > (ip_start + subnet_ct*(params.pctdiv - params.pctmult) / params.pctdiv)) + continue; // ip is higher than (1-PCT). definitely coverage is not enough. skip searching + ip_end = ip_start | ~mask; + for (p=pos+1, ip_ct=1; p < ipct && iplist[p] <= ip_end; p++) ip_ct++; // count ips within subnet range + if (ip_ct == 1) break; + if (ip_ct >= (subnet_ct*params.pctmult / params.pctdiv)) + { + // network found. but is there smaller network with the same ip_ct ? dont do carpet bombing if possible, use smaller subnets + if (!ip_ct_best || ip_ct == ip_ct_best) + { + ip_ct_best = ip_ct; + zct_best = zct; + pos_end = p; + } + else + break; + } + } + if (!zct_best) ip_start = iplist[pos], pos_end = pos + 1; // network not found, use single ip + + u1 = ip_start >> 24; + u2 = (ip_start >> 16) & 0xFF; + u3 = (ip_start >> 8) & 0xFF; + u4 = ip_start & 0xFF; + printf(zct_best ? "%u.%u.%u.%u/%u\n" : "%u.%u.%u.%u\n", u1, u2, u3, u4, 32 - zct_best); + + pos = pos_end; + } + + free(iplist); + } + + return 0; +} diff --git a/ip2net/qsort.c b/ip2net/qsort.c new file mode 100644 index 0000000..2ee1185 --- /dev/null +++ b/ip2net/qsort.c @@ -0,0 +1,250 @@ +/* Copyright (C) 1991-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Douglas C. Schmidt (schmidt@ics.uci.edu). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* If you consider tuning this algorithm, you should consult first: + Engineering a sort function; Jon Bentley and M. Douglas McIlroy; + Software - Practice and Experience; Vol. 23 (11), 1249-1265, 1993. */ + +//#include +#include +#include +//#include +#include "qsort.h" + +/* Byte-wise swap two items of size SIZE. */ +#define SWAP(a, b, size) \ + do \ + { \ + size_t __size = (size); \ + char *__a = (a), *__b = (b); \ + do \ + { \ + char __tmp = *__a; \ + *__a++ = *__b; \ + *__b++ = __tmp; \ + } while (--__size > 0); \ + } while (0) + +/* Discontinue quicksort algorithm when partition gets below this size. + This particular magic number was chosen to work best on a Sun 4/260. */ +#define MAX_THRESH 4 + +/* Stack node declarations used to store unfulfilled partition obligations. */ +typedef struct + { + char *lo; + char *hi; + } stack_node; + +/* The next 4 #defines implement a very fast in-line stack abstraction. */ +/* The stack needs log (total_elements) entries (we could even subtract + log(MAX_THRESH)). Since total_elements has type size_t, we get as + upper bound for log (total_elements): + bits per byte (CHAR_BIT) * sizeof(size_t). */ +#define STACK_SIZE (CHAR_BIT * sizeof(size_t)) +#define PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (high)), ++top)) +#define POP(low, high) ((void) (--top, (low = top->lo), (high = top->hi))) +#define STACK_NOT_EMPTY (stack < top) + + +/* Order size using quicksort. This implementation incorporates + four optimizations discussed in Sedgewick: + + 1. Non-recursive, using an explicit stack of pointer that store the + next array partition to sort. To save time, this maximum amount + of space required to store an array of SIZE_MAX is allocated on the + stack. Assuming a 32-bit (64 bit) integer for size_t, this needs + only 32 * sizeof(stack_node) == 256 bytes (for 64 bit: 1024 bytes). + Pretty cheap, actually. + + 2. Chose the pivot element using a median-of-three decision tree. + This reduces the probability of selecting a bad pivot value and + eliminates certain extraneous comparisons. + + 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving + insertion sort to order the MAX_THRESH items within each partition. + This is a big win, since insertion sort is faster for small, mostly + sorted array segments. + + 4. The larger of the two sub-partitions is always pushed onto the + stack first, with the algorithm then concentrating on the + smaller partition. This *guarantees* no more than log (total_elems) + stack size is needed (actually O(1) in this case)! */ + +void +gnu_quicksort (void *const pbase, size_t total_elems, size_t size, + __gnu_compar_d_fn_t cmp, void *arg) +{ + char *base_ptr = (char *) pbase; + + const size_t max_thresh = MAX_THRESH * size; + + if (total_elems == 0) + /* Avoid lossage with unsigned arithmetic below. */ + return; + + if (total_elems > MAX_THRESH) + { + char *lo = base_ptr; + char *hi = &lo[size * (total_elems - 1)]; + stack_node stack[STACK_SIZE]; + stack_node *top = stack; + + PUSH (NULL, NULL); + + while (STACK_NOT_EMPTY) + { + char *left_ptr; + char *right_ptr; + + /* Select median value from among LO, MID, and HI. Rearrange + LO and HI so the three values are sorted. This lowers the + probability of picking a pathological pivot value and + skips a comparison for both the LEFT_PTR and RIGHT_PTR in + the while loops. */ + + char *mid = lo + size * ((hi - lo) / size >> 1); + + if ((*cmp) ((void *) mid, (void *) lo, arg) < 0) + SWAP (mid, lo, size); + if ((*cmp) ((void *) hi, (void *) mid, arg) < 0) + SWAP (mid, hi, size); + else + goto jump_over; + if ((*cmp) ((void *) mid, (void *) lo, arg) < 0) + SWAP (mid, lo, size); + jump_over:; + + left_ptr = lo + size; + right_ptr = hi - size; + + /* Here's the famous ``collapse the walls'' section of quicksort. + Gotta like those tight inner loops! They are the main reason + that this algorithm runs much faster than others. */ + do + { + while ((*cmp) ((void *) left_ptr, (void *) mid, arg) < 0) + left_ptr += size; + + while ((*cmp) ((void *) mid, (void *) right_ptr, arg) < 0) + right_ptr -= size; + + if (left_ptr < right_ptr) + { + SWAP (left_ptr, right_ptr, size); + if (mid == left_ptr) + mid = right_ptr; + else if (mid == right_ptr) + mid = left_ptr; + left_ptr += size; + right_ptr -= size; + } + else if (left_ptr == right_ptr) + { + left_ptr += size; + right_ptr -= size; + break; + } + } + while (left_ptr <= right_ptr); + + /* Set up pointers for next iteration. First determine whether + left and right partitions are below the threshold size. If so, + ignore one or both. Otherwise, push the larger partition's + bounds on the stack and continue sorting the smaller one. */ + + if ((size_t) (right_ptr - lo) <= max_thresh) + { + if ((size_t) (hi - left_ptr) <= max_thresh) + /* Ignore both small partitions. */ + POP (lo, hi); + else + /* Ignore small left partition. */ + lo = left_ptr; + } + else if ((size_t) (hi - left_ptr) <= max_thresh) + /* Ignore small right partition. */ + hi = right_ptr; + else if ((right_ptr - lo) > (hi - left_ptr)) + { + /* Push larger left partition indices. */ + PUSH (lo, right_ptr); + lo = left_ptr; + } + else + { + /* Push larger right partition indices. */ + PUSH (left_ptr, hi); + hi = right_ptr; + } + } + } + + /* Once the BASE_PTR array is partially sorted by quicksort the rest + is completely sorted using insertion sort, since this is efficient + for partitions below MAX_THRESH size. BASE_PTR points to the beginning + of the array to sort, and END_PTR points at the very last element in + the array (*not* one beyond it!). */ + +#define min(x, y) ((x) < (y) ? (x) : (y)) + + { + char *const end_ptr = &base_ptr[size * (total_elems - 1)]; + char *tmp_ptr = base_ptr; + char *thresh = min(end_ptr, base_ptr + max_thresh); + char *run_ptr; + + /* Find smallest element in first threshold and place it at the + array's beginning. This is the smallest array element, + and the operation speeds up insertion sort's inner loop. */ + + for (run_ptr = tmp_ptr + size; run_ptr <= thresh; run_ptr += size) + if ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0) + tmp_ptr = run_ptr; + + if (tmp_ptr != base_ptr) + SWAP (tmp_ptr, base_ptr, size); + + /* Insertion sort, running from left-hand-side up to right-hand-side. */ + + run_ptr = base_ptr + size; + while ((run_ptr += size) <= end_ptr) + { + tmp_ptr = run_ptr - size; + while ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0) + tmp_ptr -= size; + + tmp_ptr += size; + if (tmp_ptr != run_ptr) + { + char *trav; + + trav = run_ptr + size; + while (--trav >= run_ptr) + { + char c = *trav; + char *hi, *lo; + + for (hi = lo = trav; (lo -= size) >= tmp_ptr; hi = lo) + *hi = *lo; + *hi = c; + } + } + } + } +} diff --git a/ip2net/qsort.h b/ip2net/qsort.h new file mode 100644 index 0000000..f537ab7 --- /dev/null +++ b/ip2net/qsort.h @@ -0,0 +1,6 @@ +#pragma once + +// GNU qsort is 2x faster than musl + +typedef int (*__gnu_compar_d_fn_t) (const void *, const void *, void *); +void gnu_quicksort (void *const pbase, size_t total_elems, size_t size, __gnu_compar_d_fn_t cmp, void *arg); diff --git a/ipset/antifilter.helper b/ipset/antifilter.helper new file mode 100644 index 0000000..aec3cae --- /dev/null +++ b/ipset/antifilter.helper @@ -0,0 +1,19 @@ +get_antifilter() +{ + # $1 - list url + # $2 - target file + local ZIPLISTTMP="$TMPDIR/zapret-ip.txt" + + [ "$DISABLE_IPV4" != "1" ] && { + curl --fail --max-time 150 --connect-timeout 20 --max-filesize 41943040 -k -L "$1" | cut_local >"$ZIPLISTTMP" && + { + dlsize=$(LANG=C wc -c "$ZIPLISTTMP" | xargs | cut -f 1 -d ' ') + if [ $dlsize -lt 204800 ]; then + echo list file is too small. can be bad. + exit 2 + fi + ip2net4 <"$ZIPLISTTMP" | zz "$2" + rm -f "$ZIPLISTTMP" + } + } +} diff --git a/ipset/clear_lists.sh b/ipset/clear_lists.sh new file mode 100755 index 0000000..80c1531 --- /dev/null +++ b/ipset/clear_lists.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +rm -f "$ZIPLIST"* "$ZIPLIST6"* "$ZIPLIST_USER" "$ZIPLIST_USER6" "$ZIPLIST_IPBAN"* "$ZIPLIST_IPBAN6"* "$ZIPLIST_USER_IPBAN" "$ZIPLIST_USER_IPBAN6" "$ZIPLIST_EXCLUDE" "$ZIPLIST_EXCLUDE6" "$ZHOSTLIST"* diff --git a/ipset/create_ipset.sh b/ipset/create_ipset.sh new file mode 100755 index 0000000..83701d6 --- /dev/null +++ b/ipset/create_ipset.sh @@ -0,0 +1,201 @@ +#!/bin/sh + +# create ipset or ipfw table from resolved ip's +# $1=no-update - do not update ipset, only create if its absent + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +IPSET_CMD="$TMPDIR/ipset_cmd.txt" +IPSET_SAVERAM_CHUNK_SIZE=20000 +IPSET_SAVERAM_MIN_FILESIZE=131072 + + +while [ -n "$1" ]; do + [ "$1" = "no-update" ] && NO_UPDATE=1 + [ "$1" = "clear" ] && DO_CLEAR=1 + shift +done + + +file_extract_lines() +{ + # $1 - filename + # $2 - from line (starting with 0) + # $3 - line count + # awk "{ err=1 } NR < $(($2+1)) { next } { print; err=0 } NR == $(($2+$3)) { exit err } END {exit err}" "$1" + awk "NR < $(($2+1)) { next } { print } NR == $(($2+$3)) { exit }" "$1" +} +ipset_restore_chunked() +{ + # $1 - filename + # $2 - chunk size + local pos lines + [ -f "$1" ] || return + lines=$(wc -l <"$1") + pos=$lines + while [ "$pos" -gt "0" ]; do + pos=$((pos-$2)) + [ "$pos" -lt "0" ] && pos=0 + file_extract_lines "$1" $pos $2 | ipset -! restore + sed -i "$(($pos+1)),$ d" "$1" + done +} + + +ipset_get_script() +{ + # $1 - filename + # $2 - ipset name + zzcat "$1" | sort -u | sed -nEe "s/^.+$/add $2 &/p" +} + +ipset_restore() +{ + # $1 - filename + # $2 - ipset name + # $3 - "6" = ipv6 + zzexist "$1" || return + local fsize=$(zzsize "$1") + local svram=0 + # do not saveram small files. file can also be gzipped + [ "$SAVERAM" = "1" ] && [ "$fsize" -ge "$IPSET_SAVERAM_MIN_FILESIZE" ] && svram=1 + + local T="Adding to ipset $2 ($IPSTYPE" + [ "$svram" = "1" ] && T="$T, saveram" + T="$T) : $f" + echo $T + + if [ "$svram" = "1" ]; then + ipset_get_script "$1" "$2" >"$IPSET_CMD" + ipset_restore_chunked "$IPSET_CMD" $IPSET_SAVERAM_CHUNK_SIZE + rm -f "$IPSET_CMD" + else + ipset_get_script "$1" "$2" | ipset -! restore + fi +} + +create_ipset() +{ + if [ "$1" -eq "6" ]; then + FAMILY=inet6 + else + FAMILY=inet + fi + ipset create $2 $3 $4 family $FAMILY 2>/dev/null || { + [ "$NO_UPDATE" = "1" ] && return + } + ipset flush $2 + [ "$DO_CLEAR" = "1" ] || { + for f in "$5" "$6" ; do + ipset_restore "$f" "$2" $1 + done + } + return 0 +} + + +add_ipfw_table() +{ + # $1 - table name + sed -nEe "s/^.+$/table $1 add &/p" | ipfw -q /dev/stdin +} +populate_ipfw_table() +{ + # $1 - table name + # $2 - ip list file + zzexist "$2" || return + zzcat "$2" | sort -u | add_ipfw_table $1 +} +create_ipfw_table() +{ + # $1 - table name + # $2 - table options + # $3,$4, ... - ip list files. can be v4,v6 or mixed + + local name=$1 + ipfw table "$name" create $2 2>/dev/null || { + [ "$NO_UPDATE" = "1" ] && return + } + ipfw -q table $1 flush + shift + shift + [ "$DO_CLEAR" = "1" ] || { + while [ -n "$1" ]; do + populate_ipfw_table $name "$1" + shift + done + } +} + +print_reloading_backend() +{ + # $1 - backend name + local s="reloading $1 backend" + if [ "$NO_UPDATE" = 1 ]; then + s="$s (no-update)" + else + s="$s (forced-update)" + fi + echo $s +} + + +oom_adjust_high + +if [ -n "$LISTS_RELOAD" ] ; then + if [ "$LISTS_RELOAD" = "-" ] ; then + echo not reloading ip list backend + true + else + echo executing custom ip list reload command : $LISTS_RELOAD + $LISTS_RELOAD + fi +elif exists ipset; then + # ipset seem to buffer the whole script to memory + # on low RAM system this can cause oom errors + # in SAVERAM mode we feed script lines in portions starting from the end, while truncating source file to free /tmp space + # only /tmp is considered tmpfs. other locations mean tmpdir was redirected to a disk + SAVERAM=0 + [ "$TMPDIR" = "/tmp" ] && { + RAMSIZE=$($GREP MemTotal /proc/meminfo | awk '{print $2}') + [ "$RAMSIZE" -lt "110000" ] && SAVERAM=1 + } + print_reloading_backend ipset + [ "$DISABLE_IPV4" != "1" ] && { + create_ipset 4 $ZIPSET hash:net "$IPSET_OPT" "$ZIPLIST" "$ZIPLIST_USER" + create_ipset 4 $ZIPSET_IPBAN hash:net "$IPSET_OPT" "$ZIPLIST_IPBAN" "$ZIPLIST_USER_IPBAN" + create_ipset 4 $ZIPSET_EXCLUDE hash:net "$IPSET_OPT_EXCLUDE" "$ZIPLIST_EXCLUDE" + } + [ "$DISABLE_IPV6" != "1" ] && { + create_ipset 6 $ZIPSET6 hash:net "$IPSET_OPT" "$ZIPLIST6" "$ZIPLIST_USER6" + create_ipset 6 $ZIPSET_IPBAN6 hash:net "$IPSET_OPT" "$ZIPLIST_IPBAN6" "$ZIPLIST_USER_IPBAN6" + create_ipset 6 $ZIPSET_EXCLUDE6 hash:net "$IPSET_OPT_EXCLUDE" "$ZIPLIST_EXCLUDE6" + } + true +elif exists ipfw; then + print_reloading_backend "ipfw table" + if [ "$DISABLE_IPV4" != "1" ] && [ "$DISABLE_IPV6" != "1" ]; then + create_ipfw_table $ZIPSET "$IPFW_TABLE_OPT" "$ZIPLIST" "$ZIPLIST_USER" "$ZIPLIST6" "$ZIPLIST_USER6" + create_ipfw_table $ZIPSET_IPBAN "$IPFW_TABLE_OPT" "$ZIPLIST_IPBAN" "$ZIPLIST_USER_IPBAN" "$ZIPLIST_IPBAN6" "$ZIPLIST_USER_IPBAN6" + create_ipfw_table $ZIPSET_EXCLUDE "$IPFW_TABLE_OPT_EXCLUDE" "$ZIPLIST_EXCLUDE" "$ZIPLIST_EXCLUDE6" + elif [ "$DISABLE_IPV4" != "1" ]; then + create_ipfw_table $ZIPSET "$IPFW_TABLE_OPT" "$ZIPLIST" "$ZIPLIST_USER" + create_ipfw_table $ZIPSET_IPBAN "$IPFW_TABLE_OPT" "$ZIPLIST_IPBAN" "$ZIPLIST_USER_IPBAN" + create_ipfw_table $ZIPSET_EXCLUDE "$IPFW_TABLE_OPT_EXCLUDE" "$ZIPLIST_EXCLUDE" + elif [ "$DISABLE_IPV6" != "1" ]; then + create_ipfw_table $ZIPSET "$IPFW_TABLE_OPT" "$ZIPLIST6" "$ZIPLIST_USER6" + create_ipfw_table $ZIPSET_IPBAN "$IPFW_TABLE_OPT" "$ZIPLIST_IPBAN6" "$ZIPLIST_USER_IPBAN6" + create_ipfw_table $ZIPSET_EXCLUDE "$IPFW_TABLE_OPT_EXCLUDE" "$ZIPLIST_EXCLUDE6" + else + create_ipfw_table $ZIPSET "$IPFW_TABLE_OPT" + create_ipfw_table $ZIPSET_IPBAN "$IPFW_TABLE_OPT" + create_ipfw_table $ZIPSET_EXCLUDE "$IPFW_TABLE_OPT_EXCLUDE" + fi + true +else + echo no supported ip list backend found + true +fi diff --git a/ipset/def.sh b/ipset/def.sh new file mode 100644 index 0000000..a9240f6 --- /dev/null +++ b/ipset/def.sh @@ -0,0 +1,186 @@ +. "$IPSET_DIR/../config" + +[ -z "$TMPDIR" ] && TMPDIR=/tmp +[ -z "$GZIP_LISTS" ] && GZIP_LISTS=1 + +[ -z "$IPSET_OPT" ] && IPSET_OPT="hashsize 262144 maxelem 2097152" +[ -z "$IPSET_OPT_EXCLUDE" ] && IPSET_OPT_EXCLUDE="hashsize 1024 maxelem 65536" + +[ -z "$IPFW_TABLE_OPT" ] && IPFW_TABLE_OPT="algo addr:radix" +[ -z "$IPFW_TABLE_OPT_EXCLUDE" ] && IPFW_TABLE_OPT_EXCLUDE="algo addr:radix" + + +ZIPSET=zapret +ZIPSET6=zapret6 +ZIPSET_EXCLUDE=nozapret +ZIPSET_EXCLUDE6=nozapret6 +ZIPLIST="$IPSET_DIR/zapret-ip.txt" +ZIPLIST6="$IPSET_DIR/zapret-ip6.txt" +ZIPLIST_EXCLUDE="$IPSET_DIR/zapret-ip-exclude.txt" +ZIPLIST_EXCLUDE6="$IPSET_DIR/zapret-ip-exclude6.txt" +ZIPLIST_USER="$IPSET_DIR/zapret-ip-user.txt" +ZIPLIST_USER6="$IPSET_DIR/zapret-ip-user6.txt" +ZUSERLIST="$IPSET_DIR/zapret-hosts-user.txt" +ZHOSTLIST="$IPSET_DIR/zapret-hosts.txt" + +ZIPSET_IPBAN=ipban +ZIPSET_IPBAN6=ipban6 +ZIPLIST_IPBAN="$IPSET_DIR/zapret-ip-ipban.txt" +ZIPLIST_IPBAN6="$IPSET_DIR/zapret-ip-ipban6.txt" +ZIPLIST_USER_IPBAN="$IPSET_DIR/zapret-ip-user-ipban.txt" +ZIPLIST_USER_IPBAN6="$IPSET_DIR/zapret-ip-user-ipban6.txt" +ZUSERLIST_IPBAN="$IPSET_DIR/zapret-hosts-user-ipban.txt" +ZUSERLIST_EXCLUDE="$IPSET_DIR/zapret-hosts-user-exclude.txt" + + +IP2NET="$IPSET_DIR/../ip2net/ip2net" +MDIG="$IPSET_DIR/../mdig/mdig" +[ -z "$MDIG_THREADS" ] && MDIG_THREADS=30 + + +exists() +{ + which "$1" >/dev/null 2>/dev/null +} + +# BSD grep is damn slow with -f option. prefer GNU grep (ggrep) if present +# MacoS in cron does not include /usr/local/bin to PATH +if [ -x /usr/local/bin/ggrep ] ; then + GREP=/usr/local/bin/ggrep +elif exists ggrep; then + GREP=$(which ggrep) +else + GREP=$(which grep) +fi + +grep_supports_b() +{ + # \b does not work with BSD grep + $GREP --version 2>&1 | $GREP -qE "BusyBox|GNU" +} +get_ip_regex() +{ + REG_IPV4='((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(/([0-9]|[12][0-9]|3[012]))?' + REG_IPV6='[0-9a-fA-F]{1,4}:([0-9a-fA-F]{1,4}|:)+(/([0-9][0-9]?|1[01][0-9]|12[0-8]))?' + # good but too slow + # REG_IPV6='([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,7}:(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}(/[0-9]+)?|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}(/[0-9]+)?|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})(/[0-9]+)?|:((:[0-9a-fA-F]{1,4}){1,7}|:)(/([0-9][0-9]?|1[01][0-9]|12[0-8]))?' + grep_supports_b && { + REG_IPV4="\b$REG_IPV4\b" + REG_IPV6="\b$REG_IPV6\b" + } +} + + +ip2net4() +{ + if [ -x "$IP2NET" ]; then + "$IP2NET" -4 $IP2NET_OPT4 + else + sort -u + fi +} +ip2net6() +{ + if [ -x "$IP2NET" ]; then + "$IP2NET" -6 $IP2NET_OPT6 + else + sort -u + fi +} + +zzexist() +{ + [ -f "$1.gz" ] || [ -f "$1" ] +} +zzcat() +{ + if [ -f "$1.gz" ]; then + gunzip -c "$1.gz" + else + cat "$1" + fi +} +zz() +{ + if [ "$GZIP_LISTS" = "1" ]; then + gzip -c >"$1.gz" + rm -f "$1" + else + cat >"$1" + rm -f "$1.gz" + fi +} +zzsize() +{ + local f="$1" + [ -f "$1.gz" ] && f="$1.gz" + wc -c <"$f" | xargs +} + +digger() +{ + # $1 - hostlist + # $2 - family (4|6) + >&2 echo digging $(wc -l <"$1" | xargs) ipv$2 domains : "$1" + + if [ -x "$MDIG" ]; then + zzcat "$1" | "$MDIG" --family=$2 --threads=$MDIG_THREADS --stats=1000 + else + local A=A + [ "$2" = "6" ] && A=AAAA + zzcat "$1" | dig $A +short +time=8 +tries=2 -f - | $GREP -E '^[^;].*[^\.]$' + fi +} + +cut_local() +{ + $GREP -vE '^192\.168\.|^127\.|^10\.' +} +cut_local6() +{ + $GREP -vE '^::|^fc..:|^fd..:' +} + +oom_adjust_high() +{ + [ -f /proc/$$/oom_score_adj ] && { + echo setting high oom kill priority + echo -n 100 >/proc/$$/oom_score_adj + } +} + +getexclude() +{ + oom_adjust_high + + [ -f "$ZUSERLIST_EXCLUDE" ] && { + [ "$DISABLE_IPV4" != "1" ] && digger "$ZUSERLIST_EXCLUDE" 4 | sort -u > "$ZIPLIST_EXCLUDE" + [ "$DISABLE_IPV6" != "1" ] && digger "$ZUSERLIST_EXCLUDE" 6 | sort -u > "$ZIPLIST_EXCLUDE6" + } +} + +getuser() +{ + getexclude + [ -f "$ZUSERLIST" ] && { + [ "$DISABLE_IPV4" != "1" ] && digger "$ZUSERLIST" 4 | cut_local | sort -u > "$ZIPLIST_USER" + [ "$DISABLE_IPV6" != "1" ] && digger "$ZUSERLIST" 6 | cut_local6 | sort -u > "$ZIPLIST_USER6" + } + [ -f "$ZUSERLIST_IPBAN" ] && { + [ "$DISABLE_IPV4" != "1" ] && digger "$ZUSERLIST_IPBAN" 4 | cut_local | sort -u > "$ZIPLIST_USER_IPBAN" + [ "$DISABLE_IPV6" != "1" ] && digger "$ZUSERLIST_IPBAN" 6 | cut_local6 | sort -u > "$ZIPLIST_USER_IPBAN6" + } +} + +hup_zapret_daemons() +{ + echo forcing zapret daemons to reload their hostlist + if exists killall; then + kcmd=killall + killall -HUP tpws nfqws dvtws 2>/dev/null + elif exists pkill; then + pkill -HUP ^tpws$ ^nfqws$ ^dvtws$ + else + echo no mass killer available ! cant HUP zapret daemons + fi +} diff --git a/ipset/get_antifilter_ip.sh b/ipset/get_antifilter_ip.sh new file mode 100755 index 0000000..1628890 --- /dev/null +++ b/ipset/get_antifilter_ip.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getuser + +. "$IPSET_DIR/antifilter.helper" + +get_antifilter https://antifilter.network/download/ip.lst "$ZIPLIST" + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_antifilter_ipsmart.sh b/ipset/get_antifilter_ipsmart.sh new file mode 100755 index 0000000..b71298f --- /dev/null +++ b/ipset/get_antifilter_ipsmart.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getuser + +. "$IPSET_DIR/antifilter.helper" + +get_antifilter https://antifilter.network/download/ipsmart.lst "$ZIPLIST" + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_antifilter_ipsum.sh b/ipset/get_antifilter_ipsum.sh new file mode 100755 index 0000000..3fc2673 --- /dev/null +++ b/ipset/get_antifilter_ipsum.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getuser + +. "$IPSET_DIR/antifilter.helper" + +get_antifilter https://antifilter.network/download/ipsum.lst "$ZIPLIST" + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_config.sh b/ipset/get_config.sh new file mode 100755 index 0000000..9d73133 --- /dev/null +++ b/ipset/get_config.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# run script specified in config + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/../config" + +[ -z "$GETLIST" ] && GETLIST=get_exclude.sh +[ -x "$IPSET_DIR/$GETLIST" ] && exec "$IPSET_DIR/$GETLIST" diff --git a/ipset/get_exclude.sh b/ipset/get_exclude.sh new file mode 100755 index 0000000..ab5dd38 --- /dev/null +++ b/ipset/get_exclude.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# resolve user host list + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getexclude + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_combined.sh b/ipset/get_reestr_combined.sh new file mode 100755 index 0000000..675d37d --- /dev/null +++ b/ipset/get_reestr_combined.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +ZREESTR="$TMPDIR/reestr.txt" +#ZURL_REESTR=https://reestr.rublacklist.net/api/current +ZURL_REESTR=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +getuser + +dig_reestr() +{ + # $1 - grep ipmask + # $2 - iplist + # $3 - ipban list + # $4 - ip version : 4,6 + + local DOMMASK='^.*;[^ ;:/]+\.[^ ;:/]+;' + local TMP="$TMPDIR/tmp.txt" + + echo processing reestr lists $2 $3 + + # find entries with https or without domain name - they should be banned by IP + # 2971-18 is TELEGRAM. lots of proxy IPs banned, list grows very large + (nice -n 5 $GREP -avE "$DOMMASK" "$ZREESTR" ; $GREP -a "https://" "$ZREESTR") | + nice -n 5 $GREP -oE "$1" | cut_local | sort -u >$TMP + + ip2net$4 <"$TMP" | zz "$3" + + # other IPs go to regular zapret list + tail -n +2 "$ZREESTR" | nice -n 5 $GREP -oE "$1" | cut_local | nice -n 5 $GREP -xvFf "$TMP" | ip2net$4 | zz "$2" + + rm -f "$TMP" +} + + +curl -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL_REESTR" -o "$ZREESTR" || +{ + echo reestr list download failed + exit 2 +} +dlsize=$(LANG=C wc -c "$ZREESTR" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 1048576; then + echo reestr ip list is too small. can be bad. + exit 2 +fi +#sed -i 's/\\n/\r\n/g' $ZREESTR + +get_ip_regex + +[ "$DISABLE_IPV4" != "1" ] && { + dig_reestr "$REG_IPV4" "$ZIPLIST" "$ZIPLIST_IPBAN" 4 +} + +[ "$DISABLE_IPV6" != "1" ] && { + dig_reestr "$REG_IPV6" "$ZIPLIST6" "$ZIPLIST_IPBAN6" 6 +} + +rm -f "$ZREESTR" + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_hostlist.sh b/ipset/get_reestr_hostlist.sh new file mode 100755 index 0000000..d204d27 --- /dev/null +++ b/ipset/get_reestr_hostlist.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +# useful in case ipban set is used in custom scripts +getuser +"$IPSET_DIR/create_ipset.sh" + +ZREESTR="$TMPDIR/zapret.txt" +#ZURL=https://reestr.rublacklist.net/api/current +ZURL=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +curl -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL" >"$ZREESTR" || +{ + echo reestr list download failed + exit 2 +} +dlsize=$(LANG=C wc -c "$ZREESTR" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 204800; then + echo list file is too small. can be bad. + exit 2 +fi +(LANG=C cut -s -f2 -d';' "$ZREESTR" | LANG=C sed -Ee 's/^\*\.(.+)$/\1/' -ne 's/^[a-z0-9A-Z._-]+$/&/p' | awk '{ print tolower($0) }' ; cat "$ZUSERLIST" ) | sort -u | zz "$ZHOSTLIST" +rm -f "$ZREESTR" + +hup_zapret_daemons + +exit 0 diff --git a/ipset/get_reestr_ip.sh b/ipset/get_reestr_ip.sh new file mode 100755 index 0000000..0eeec80 --- /dev/null +++ b/ipset/get_reestr_ip.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +ZREESTR="$TMPDIR/reestr.txt" +#ZURL_REESTR=https://reestr.rublacklist.net/api/current +ZURL_REESTR=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +getuser + +dig_reestr() +{ + # $1 - grep ipmask + # $2 - iplist + # $3 - ip version : 4,6 + + echo processing reestr list $2 + + tail -n +2 "$ZREESTR" | nice -n 5 $GREP -oE "$1" | cut_local | ip2net$3 | zz "$2" +} + + +# assume all https banned by ip +curl -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL_REESTR" -o "$ZREESTR" || +{ + echo reestr list download failed + exit 2 +} +dlsize=$(LANG=C wc -c "$ZREESTR" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 1048576; then + echo reestr ip list is too small. can be bad. + exit 2 +fi +#sed -i 's/\\n/\r\n/g' $ZREESTR + +get_ip_regex + +[ "$DISABLE_IPV4" != "1" ] && { + dig_reestr "$REG_IPV4" "$ZIPLIST" 4 +} + +[ "$DISABLE_IPV6" != "1" ] && { + dig_reestr "$REG_IPV6" "$ZIPLIST6" 6 +} + +rm -f "$ZREESTR" + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_resolve.sh b/ipset/get_reestr_resolve.sh new file mode 100755 index 0000000..c6913ad --- /dev/null +++ b/ipset/get_reestr_resolve.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +ZREESTR="$TMPDIR/zapret.txt" +ZDIG="$TMPDIR/zapret-dig.txt" +ZIPLISTTMP="$TMPDIR/zapret-ip.txt" +#ZURL=https://reestr.rublacklist.net/api/current +ZURL=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +getuser + +# both disabled +[ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && exit 0 + +curl -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL" >"$ZREESTR" || +{ + echo reestr list download failed + exit 2 +} + +dlsize=$(LANG=C wc -c "$ZREESTR" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 204800; then + echo list file is too small. can be bad. + exit 2 +fi + +echo preparing dig list .. +LANG=C cut -f2 -d ';' "$ZREESTR" | LANG=C sed -Ee 's/^\*\.(.+)$/\1/' -ne 's/^[a-z0-9A-Z._-]+$/&/p' >"$ZDIG" +rm -f "$ZREESTR" + +echo digging started. this can take long ... + +[ "$DISABLE_IPV4" != "1" ] && { + digger "$ZDIG" 4 | cut_local >"$ZIPLISTTMP" || { + rm -f "$ZDIG" + exit 1 + } + ip2net4 <"$ZIPLISTTMP" | zz "$ZIPLIST" + rm -f "$ZIPLISTTMP" +} +[ "$DISABLE_IPV6" != "1" ] && { + digger "$ZDIG" 6 | cut_local6 >"$ZIPLISTTMP" || { + rm -f "$ZDIG" + exit 1 + } + ip2net6 <"$ZIPLISTTMP" | zz "$ZIPLIST6" + rm -f "$ZIPLISTTMP" +} +rm -f "$ZDIG" +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_user.sh b/ipset/get_user.sh new file mode 100755 index 0000000..2d98981 --- /dev/null +++ b/ipset/get_user.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# resolve user host list + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getuser + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/zapret-hosts-user-exclude.txt b/ipset/zapret-hosts-user-exclude.txt new file mode 100644 index 0000000..999ccdd --- /dev/null +++ b/ipset/zapret-hosts-user-exclude.txt @@ -0,0 +1,6 @@ +10.0.0.0/8 +172.16.0.0/12 +192.168.0.0/16 +169.254.0.0/16 +fc00::/7 +fe80::/10 diff --git a/ipset/zapret-hosts-user-ipban.txt b/ipset/zapret-hosts-user-ipban.txt new file mode 100644 index 0000000..6073d92 --- /dev/null +++ b/ipset/zapret-hosts-user-ipban.txt @@ -0,0 +1 @@ +pornhub.com diff --git a/ipset/zapret-hosts-user.txt b/ipset/zapret-hosts-user.txt new file mode 100644 index 0000000..ce093c1 --- /dev/null +++ b/ipset/zapret-hosts-user.txt @@ -0,0 +1 @@ +st.kinozal.tv diff --git a/mdig/Makefile b/mdig/Makefile new file mode 100644 index 0000000..83b93bb --- /dev/null +++ b/mdig/Makefile @@ -0,0 +1,21 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member -Wno-logical-op-parentheses -Wno-switch +CFLAGS_MAC = -mmacosx-version-min=10.8 +STRIP = -s +LIBS = -lpthread +SRC_FILES = *.c + +all: mdig + +mdig: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) $(CFLAGS_BSD) -o mdig $(SRC_FILES) $(LDFLAGS) $(LIBS) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) $(CFLAGS_MAC) -o mdig $(SRC_FILES) $(LDFLAGS) $(LIBS) + +clean: + rm -f mdig *.o diff --git a/mdig/mdig b/mdig/mdig new file mode 120000 index 0000000..276b0e8 --- /dev/null +++ b/mdig/mdig @@ -0,0 +1 @@ +../binaries/x86_64/mdig \ No newline at end of file diff --git a/mdig/mdig.c b/mdig/mdig.c new file mode 100644 index 0000000..f91cb9b --- /dev/null +++ b/mdig/mdig.c @@ -0,0 +1,367 @@ +// multi thread dns resolver +// domain list stdout +// errors, verbose >stderr +// transparent for valid ip or ip/subnet of allowed address family + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RESOLVER_EAGAIN_ATTEMPTS 2 + +static void trimstr(char *s) +{ + char *p; + for (p = s + strlen(s) - 1; p >= s && (*p == '\n' || *p == '\r'); p--) *p = '\0'; +} + +static const char* eai_str(int r) +{ + switch (r) + { + case EAI_NONAME: + return "EAI_NONAME"; + case EAI_AGAIN: + return "EAI_AGAIN"; +#ifdef EAI_ADDRFAMILY + case EAI_ADDRFAMILY: + return "EAI_ADDRFAMILY"; +#endif +#ifdef EAI_NODATA + case EAI_NODATA: + return "EAI_NODATA"; +#endif + case EAI_BADFLAGS: + return "EAI_BADFLAGS"; + case EAI_FAIL: + return "EAI_FAIL"; + case EAI_MEMORY: + return "EAI_MEMORY"; + case EAI_FAMILY: + return "EAI_FAMILY"; + case EAI_SERVICE: + return "EAI_SERVICE"; + case EAI_SOCKTYPE: + return "EAI_SOCKTYPE"; + case EAI_SYSTEM: + return "EAI_SYSTEM"; + default: + return "UNKNOWN"; + } +} + +bool dom_valid(char *dom) +{ + if (!dom || *dom=='.') return false; + for (; *dom; dom++) + if (*dom < 0x20 || *dom>0x7F || !(*dom == '.' || *dom == '-' || *dom == '_' || *dom >= '0' && *dom <= '9' || *dom >= 'a' && *dom <= 'z' || *dom >= 'A' && *dom <= 'Z')) + return false; + return true; +} +void invalid_domain_beautify(char *dom) +{ + for (int i = 0; *dom && i < 64; i++, dom++) + if (*dom < 0x20 || *dom>0x7F) *dom = '?'; + if (*dom) *dom = 0; +} + +#define FAMILY4 1 +#define FAMILY6 2 +static struct +{ + char verbose; + char family; + int threads; + time_t start_time; + pthread_mutex_t flock; + pthread_mutex_t slock; // stats lock + int stats_every, stats_ct, stats_ct_ok; // stats +} glob; + +// get next domain. return 0 if failure +static char interlocked_get_dom(char *dom, size_t size) +{ + char *s; + pthread_mutex_lock(&glob.flock); + s = fgets(dom, size, stdin); + pthread_mutex_unlock(&glob.flock); + if (!s) return 0; + trimstr(s); + return 1; +} +static void interlocked_fprintf(FILE *stream, const char * format, ...) +{ + va_list args; + va_start(args, format); + pthread_mutex_lock(&glob.flock); + vfprintf(stream, format, args); + pthread_mutex_unlock(&glob.flock); + va_end(args); +} + +#define ELOG(format, ...) interlocked_fprintf(stderr, "[%d] " format "\n", tid, ##__VA_ARGS__) +#define VLOG(format, ...) {if (glob.verbose) ELOG(format, ##__VA_ARGS__);} + +static void print_addrinfo(struct addrinfo *ai) +{ + char str[64]; + while (ai) + { + switch (ai->ai_family) + { + case AF_INET: + if (inet_ntop(ai->ai_family, &((struct sockaddr_in*)ai->ai_addr)->sin_addr, str, sizeof(str))) + interlocked_fprintf(stdout, "%s\n", str); + break; + case AF_INET6: + if (inet_ntop(ai->ai_family, &((struct sockaddr_in6*)ai->ai_addr)->sin6_addr, str, sizeof(str))) + interlocked_fprintf(stdout, "%s\n", str); + break; + } + ai = ai->ai_next; + } +} + +static void stat_print(int ct, int ct_ok) +{ + if (glob.stats_every > 0) + { + time_t tm = time(NULL)-glob.start_time; + interlocked_fprintf(stderr, "mdig stats : %02u:%02u:%02u : domains=%d success=%d error=%d\n", tm/3600, (tm/60)%60, tm%60, ct, ct_ok, ct - ct_ok); + } +} + +static void stat_plus(char is_ok) +{ + int ct, ct_ok; + if (glob.stats_every > 0) + { + pthread_mutex_lock(&glob.slock); + ct = ++glob.stats_ct; + ct_ok = glob.stats_ct_ok += !!is_ok; + pthread_mutex_unlock(&glob.slock); + + if (!(ct % glob.stats_every)) stat_print(ct, ct_ok); + } +} + +static uint16_t GetAddrFamily(const char *saddr) +{ + struct in_addr a4; + struct in6_addr a6; + + if (inet_pton(AF_INET, saddr, &a4)) + return AF_INET; + else if (inet_pton(AF_INET6, saddr, &a6)) + return AF_INET6; + return 0; +} + +static void *t_resolver(void *arg) +{ + int tid = (int)(size_t)arg; + int i, r; + char dom[256], is_ok; + struct addrinfo hints; + struct addrinfo *result; + + VLOG("started"); + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = (glob.family == FAMILY4) ? AF_INET : (glob.family == FAMILY6) ? AF_INET6 : AF_UNSPEC; + hints.ai_socktype = SOCK_DGRAM; + + while (interlocked_get_dom(dom, sizeof(dom))) + { + if (*dom) + { + is_ok = 0; + uint16_t family; + char *s_mask, s_ip[sizeof(dom)]; + + strncpy(s_ip, dom, sizeof(s_ip)); + s_mask = strchr(s_ip, '/'); + if (s_mask) *s_mask++ = 0; + family = GetAddrFamily(s_ip); + if (family) + { + if (family == AF_INET && (glob.family & FAMILY4) || family == AF_INET6 && (glob.family & FAMILY6)) + { + unsigned int mask; + bool mask_needed = false; + if (s_mask) + { + if (sscanf(s_mask, "%u", &mask)) + { + switch (family) + { + case AF_INET: is_ok = mask <= 32; mask_needed = mask < 32; break; + case AF_INET6: is_ok = mask <= 128; mask_needed = mask < 128; break; + } + } + } + else + is_ok = 1; + if (is_ok) + interlocked_fprintf(stdout, mask_needed ? "%s/%u\n" : "%s\n", s_ip, mask); + else + VLOG("bad ip/subnet %s", dom); + } + else + VLOG("wrong address family %s", s_ip); + } + else if (dom_valid(dom)) + { + VLOG("resolving %s", dom); + for (i = 0; i < RESOLVER_EAGAIN_ATTEMPTS; i++) + { + if ((r = getaddrinfo(dom, NULL, &hints, &result))) + { + VLOG("failed to resolve %s : result %d (%s)", dom, r, eai_str(r)); + if (r == EAI_AGAIN) continue; // temporary failure. should retry + } + else + { + print_addrinfo(result); + freeaddrinfo(result); + is_ok = 1; + } + break; + } + } + else + { + invalid_domain_beautify(dom); + VLOG("invalid domain : %s", dom); + } + } + stat_plus(is_ok); + } + VLOG("ended"); + return NULL; +} + +static int run_threads() +{ + int i, thread; + pthread_t *t; + + glob.stats_ct = glob.stats_ct_ok = 0; + time(&glob.start_time); + if (pthread_mutex_init(&glob.flock, NULL) != 0) + { + fprintf(stderr, "mutex init failed\n"); + return 10; + } + if (pthread_mutex_init(&glob.slock, NULL) != 0) + { + fprintf(stderr, "mutex init failed\n"); + pthread_mutex_destroy(&glob.flock); + return 10; + } + t = (pthread_t*)malloc(sizeof(pthread_t)*glob.threads); + if (!t) + { + fprintf(stderr, "out of memory\n"); + pthread_mutex_destroy(&glob.slock); + pthread_mutex_destroy(&glob.flock); + return 11; + } + for (thread = 0; thread < glob.threads; thread++) + { + if (pthread_create(t + thread, NULL, t_resolver, (void*)(size_t)thread)) + { + interlocked_fprintf(stderr, "failed to create thread #%d\n", thread); + break; + } + } + for (i = 0; i < thread; i++) + { + pthread_join(t[i], NULL); + } + free(t); + stat_print(glob.stats_ct, glob.stats_ct_ok); + pthread_mutex_destroy(&glob.slock); + pthread_mutex_destroy(&glob.flock); + return thread ? 0 : 12; +} + +static void exithelp() +{ + printf( + " --threads=\n" + " --family=<4|6|46>\t; ipv4, ipv6, ipv4+ipv6\n" + " --verbose\t\t; print query progress to stderr\n" + " --stats=N\t\t; print resolve stats to stderr every N domains\n" + ); + exit(1); +} +int main(int argc, char **argv) +{ + int v, option_index = 0; + + static const struct option long_options[] = { + {"threads",required_argument,0,0}, // optidx=0 + {"family",required_argument,0,0}, // optidx=1 + {"verbose",no_argument,0,0}, // optidx=2 + {"stats",required_argument,0,0}, // optidx=3 + {"help",no_argument,0,0}, // optidx=4 + {NULL,0,NULL,0} + }; + + memset(&glob, 0, sizeof(glob)); + glob.family = FAMILY4; + glob.threads = 1; + while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) + { + if (v) exithelp(); + switch (option_index) + { + case 0: /* threads */ + glob.threads = optarg ? atoi(optarg) : 0; + if (glob.threads <= 0 || glob.threads > 100) + { + fprintf(stderr, "thread number must be within 1..100\n"); + return 1; + } + break; + case 1: /* family */ + if (!strcmp(optarg, "4")) + glob.family = FAMILY4; + else if (!strcmp(optarg, "6")) + glob.family = FAMILY6; + else if (!strcmp(optarg, "46")) + glob.family = FAMILY4 | FAMILY6; + else + { + fprintf(stderr, "ip family must be 4,6 or 46\n"); + return 1;; + } + break; + case 2: /* verbose */ + glob.verbose = '\1'; + break; + glob.threads = optarg ? atoi(optarg) : 0; + case 3: /* stats */ + glob.stats_every = optarg ? atoi(optarg) : 0; + break; + case 4: /* help */ + exithelp(); + break; + } + } + return run_threads(); +} diff --git a/nfq/BSDmakefile b/nfq/BSDmakefile new file mode 100644 index 0000000..219154f --- /dev/null +++ b/nfq/BSDmakefile @@ -0,0 +1,12 @@ +CC ?= cc +CFLAGS += -std=gnu99 -s -O3 -Wno-address-of-packed-member -Wno-logical-op-parentheses -Wno-switch +LIBS = -lz +SRC_FILES = *.c + +all: dvtws + +dvtws: $(SRC_FILES) + $(CC) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +clean: + rm -f dvtws *.o diff --git a/nfq/Makefile b/nfq/Makefile new file mode 100644 index 0000000..e5f382b --- /dev/null +++ b/nfq/Makefile @@ -0,0 +1,22 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member -Wno-logical-op-parentheses -Wno-switch +CFLAGS_MAC = -mmacosx-version-min=10.8 +STRIP = -s +LIBS = -lnetfilter_queue -lnfnetlink -lz +LIBS_BSD = -lz +SRC_FILES = *.c + +all: nfqws + +nfqws: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) $(CFLAGS_BSD) -o dvtws $(SRC_FILES) $(LDFLAGS) $(LIBS_BSD) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) $(CFLAGS_MAC) -o dvtws $(SRC_FILES) $(LDFLAGS) $(LIBS_BSD) + +clean: + rm -f nfqws dvtws *.o diff --git a/nfq/checksum.c b/nfq/checksum.c new file mode 100644 index 0000000..e29b521 --- /dev/null +++ b/nfq/checksum.c @@ -0,0 +1,138 @@ +#define _GNU_SOURCE +#include "checksum.h" +#include + +//#define htonll(x) ((1==htonl(1)) ? (x) : ((uint64_t)htonl((x) & 0xFFFFFFFF) << 32) | htonl((x) >> 32)) +//#define ntohll(x) ((1==ntohl(1)) ? (x) : ((uint64_t)ntohl((x) & 0xFFFFFFFF) << 32) | ntohl((x) >> 32)) + +static uint16_t from64to16(uint64_t x) +{ + uint32_t u = (uint32_t)(uint16_t)x + (uint16_t)(x>>16) + (uint16_t)(x>>32) + (uint16_t)(x>>48); + return (uint16_t)u + (uint16_t)(u>>16); +} + +static uint16_t do_csum(const uint8_t * buff, size_t len) +{ + uint8_t odd; + size_t count; + uint64_t result,w,carry=0; + uint16_t u16; + + if (len <= 0) return 0; + odd = (uint8_t)(1 & (size_t)buff); + if (odd) + { + // any endian compatible + u16 = 0; + *((uint8_t*)&u16+1) = *buff; + result = u16; + len--; + buff++; + } + else + result = 0; + count = len >> 1; /* nr of 16-bit words.. */ + if (count) + { + if (2 & (size_t) buff) + { + result += *(uint16_t *) buff; + count--; + len -= 2; + buff += 2; + } + count >>= 1; /* nr of 32-bit words.. */ + if (count) + { + if (4 & (size_t) buff) + { + result += *(uint32_t *) buff; + count--; + len -= 4; + buff += 4; + } + count >>= 1; /* nr of 64-bit words.. */ + if (count) + { + do + { + w = *(uint64_t *) buff; + count--; + buff += 8; + result += carry; + result += w; + carry = (w > result); + } while (count); + result += carry; + result = (result & 0xffffffff) + (result >> 32); + } + if (len & 4) + { + result += *(uint32_t *) buff; + buff += 4; + } + } + if (len & 2) + { + result += *(uint16_t *) buff; + buff += 2; + } + } + if (len & 1) + { + // any endian compatible + u16 = 0; + *(uint8_t*)&u16 = *buff; + result += u16; + } + u16 = from64to16(result); + if (odd) u16 = ((u16 >> 8) & 0xff) | ((u16 & 0xff) << 8); + return u16; +} + +uint16_t csum_partial(const void *buff, size_t len) +{ + return do_csum(buff,len); +} + +uint16_t csum_tcpudp_magic(uint32_t saddr, uint32_t daddr, size_t len, uint8_t proto, uint16_t sum) +{ + return ~from64to16((uint64_t)saddr + daddr + sum + htonl(len+proto)); +} + +uint16_t ip4_compute_csum(const void *buff, size_t len) +{ + return ~from64to16(do_csum(buff,len)); +} +void ip4_fix_checksum(struct ip *ip) +{ + ip->ip_sum = 0; + ip->ip_sum = ip4_compute_csum(ip, ip->ip_hl<<2); +} + +uint16_t csum_ipv6_magic(const void *saddr, const void *daddr, size_t len, uint8_t proto, uint16_t sum) +{ + uint64_t a = (uint64_t)sum + htonl(len+proto) + + *(uint32_t*)saddr + *((uint32_t*)saddr+1) + *((uint32_t*)saddr+2) + *((uint32_t*)saddr+3) + + *(uint32_t*)daddr + *((uint32_t*)daddr+1) + *((uint32_t*)daddr+2) + *((uint32_t*)daddr+3); + return ~from64to16(a); +} + + +void tcp4_fix_checksum(struct tcphdr *tcp,size_t len, const struct in_addr *src_addr, const struct in_addr *dest_addr) +{ + tcp->th_sum = 0; + tcp->th_sum = csum_tcpudp_magic(src_addr->s_addr,dest_addr->s_addr,len,IPPROTO_TCP,csum_partial(tcp, len)); +} +void tcp6_fix_checksum(struct tcphdr *tcp,size_t len, const struct in6_addr *src_addr, const struct in6_addr *dest_addr) +{ + tcp->th_sum = 0; + tcp->th_sum = csum_ipv6_magic(src_addr,dest_addr,len,IPPROTO_TCP,csum_partial(tcp, len)); +} +void tcp_fix_checksum(struct tcphdr *tcp,size_t len,const struct ip *ip,const struct ip6_hdr *ip6hdr) +{ + if (ip) + tcp4_fix_checksum(tcp, len, &ip->ip_src, &ip->ip_dst); + else if (ip6hdr) + tcp6_fix_checksum(tcp, len, &ip6hdr->ip6_src, &ip6hdr->ip6_dst); +} diff --git a/nfq/checksum.h b/nfq/checksum.h new file mode 100644 index 0000000..6776739 --- /dev/null +++ b/nfq/checksum.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +uint16_t csum_partial(const void *buff, size_t len); +uint16_t csum_tcpudp_magic(uint32_t saddr, uint32_t daddr, size_t len, uint8_t proto, uint16_t sum); +uint16_t csum_ipv6_magic(const void *saddr, const void *daddr, size_t len, uint8_t proto, uint16_t sum); +uint16_t ip4_compute_csum(const void *buff, size_t len); +void ip4_fix_checksum(struct ip *ip); + +void tcp4_fix_checksum(struct tcphdr *tcp,size_t len, const struct in_addr *src_addr, const struct in_addr *dest_addr); +void tcp6_fix_checksum(struct tcphdr *tcp,size_t len, const struct in6_addr *src_addr, const struct in6_addr *dest_addr); +void tcp_fix_checksum(struct tcphdr *tcp,size_t len,const struct ip *ip,const struct ip6_hdr *ip6hdr); diff --git a/nfq/darkmagic.c b/nfq/darkmagic.c new file mode 100644 index 0000000..2a1170f --- /dev/null +++ b/nfq/darkmagic.c @@ -0,0 +1,650 @@ +#define _GNU_SOURCE + +#include "darkmagic.h" +#include +#include +#include +#include +#include +#include +#include + +#include "helpers.h" + + +uint32_t net32_add(uint32_t netorder_value, uint32_t cpuorder_increment) +{ + return htonl(ntohl(netorder_value)+cpuorder_increment); +} + +uint8_t *tcp_find_option(struct tcphdr *tcp, uint8_t kind) +{ + uint8_t *t = (uint8_t*)(tcp+1); + uint8_t *end = (uint8_t*)tcp + (tcp->th_off<<2); + while(t=end || t[1]<2 || (t+t[1])>end) + return NULL; + if (*t==kind) + return t; + t+=t[1]; + break; + } + } + return NULL; +} +uint32_t *tcp_find_timestamps(struct tcphdr *tcp) +{ + uint8_t *t = tcp_find_option(tcp,8); + return (t && t[1]==10) ? (uint32_t*)(t+2) : NULL; +} + +static void fill_tcphdr(struct tcphdr *tcp, uint8_t tcp_flags, uint32_t seq, uint32_t ack_seq, uint8_t fooling, uint16_t nsport, uint16_t ndport, uint16_t nwsize, uint32_t *timestamps) +{ + char *tcpopt = (char*)(tcp+1); + uint8_t t=0; + + memset(tcp,0,sizeof(*tcp)); + tcp->th_sport = nsport; + tcp->th_dport = ndport; + if (fooling & TCP_FOOL_BADSEQ) + { + tcp->th_seq = net32_add(seq,0x80000000); + tcp->th_ack = net32_add(ack_seq,0x80000000); + } + else + { + tcp->th_seq = seq; + tcp->th_ack = ack_seq; + } + tcp->th_off = 5; + *((uint8_t*)tcp+13)= tcp_flags; + tcp->th_win = nwsize; + if (fooling & TCP_FOOL_MD5SIG) + { + tcpopt[0] = 19; // kind + tcpopt[1] = 18; // len + *(uint32_t*)(tcpopt+2)=random(); + *(uint32_t*)(tcpopt+6)=random(); + *(uint32_t*)(tcpopt+10)=random(); + *(uint32_t*)(tcpopt+14)=random(); + t=18; + } + if (timestamps || (fooling & TCP_FOOL_TS)) + { + tcpopt[t] = 8; // kind + tcpopt[t+1] = 10; // len + // forge only TSecr if orig timestamp is present + *(uint32_t*)(tcpopt+t+2) = timestamps ? timestamps[0] : -1; + *(uint32_t*)(tcpopt+t+6) = (timestamps && !(fooling & TCP_FOOL_TS)) ? timestamps[1] : -1; + t+=10; + } + while (t&3) tcpopt[t++]=1; // noop + tcp->th_off += t>>2; +} +static uint16_t tcpopt_len(uint8_t fooling, uint32_t *timestamps) +{ + uint16_t t=0; + if (fooling & TCP_FOOL_MD5SIG) t=18; + if ((fooling & TCP_FOOL_TS) || timestamps) t+=10; + return (t+3)&~3; +} + +static int rawsend_sock4=-1, rawsend_sock6=-1; +static void rawsend_clean_sock(int *sock) +{ + if (sock && *sock!=-1) + { + close(*sock); + *sock=-1; + } +} +void rawsend_cleanup() +{ + rawsend_clean_sock(&rawsend_sock4); + rawsend_clean_sock(&rawsend_sock6); +} +static int *rawsend_family_sock(sa_family_t family) +{ + switch(family) + { + case AF_INET: return &rawsend_sock4; + case AF_INET6: return &rawsend_sock6; + default: return NULL; + } +} + +#ifdef BSD +static int rawsend_socket_divert(sa_family_t family) +{ + // HACK HACK HACK HACK HACK HACK HACK HACK + // FreeBSD doesnt allow IP_HDRINCL for IPV6 + // OpenBSD doesnt allow rawsending tcp frames + // we either have to go to the link layer (its hard, possible problems arise, compat testing, ...) or use some HACKING + // from my point of view disabling direct ability to send ip frames is not security. its SHIT + + int fd = socket(family, SOCK_RAW, IPPROTO_DIVERT); + if (!set_socket_buffers(fd,4096,RAW_SNDBUF)) + { + close(fd); + return -1; + } + return fd; +} +static int rawsend_sendto_divert(sa_family_t family, int sock, const void *buf, size_t len) +{ + struct sockaddr_storage sa; + socklen_t slen; + + memset(&sa,0,sizeof(sa)); + sa.ss_family = family; + switch(family) + { + case AF_INET: + slen = sizeof(struct sockaddr_in); + break; + case AF_INET6: + slen = sizeof(struct sockaddr_in6); + break; + default: + return -1; + } + return sendto(sock, buf, len, 0, (struct sockaddr*)&sa, slen); +} +#endif + +static int rawsend_socket_raw(int domain, int proto) +{ + int fd = socket(domain, SOCK_RAW, proto); + if (fd!=-1) + { + #ifdef __linux__ + int s=RAW_SNDBUF/2; + int r=2048; + #else + int s=RAW_SNDBUF; + int r=4096; + #endif + if (!set_socket_buffers(fd,r,s)) + { + close(fd); + return -1; + } + } + return fd; +} + +static int rawsend_socket(sa_family_t family,uint32_t fwmark) +{ + int yes=1; + int *sock = rawsend_family_sock(family); + if (!sock) return -1; + + if (*sock==-1) + { + int yes=1,pri=6; + //printf("rawsend_socket: family %d",family); + +#ifdef __FreeBSD__ + // IPPROTO_RAW with ipv6 in FreeBSD always returns EACCES on sendto. + // must use IPPROTO_TCP for ipv6. IPPROTO_RAW works for ipv4 + // divert sockets are always v4 but accept both v4 and v6 + *sock = (family==AF_INET) ? rawsend_socket_raw(family, IPPROTO_TCP) : rawsend_socket_divert(AF_INET); +#elif defined(__OpenBSD__) || defined (__APPLE__) + // OpenBSD does not allow sending TCP frames through raw sockets + // I dont know about macos. They have dropped ipfw in recent versions and their PF does not support divert-packet + *sock = rawsend_socket_divert(family); +#else + *sock = rawsend_socket_raw(family, IPPROTO_RAW); +#endif + if (*sock==-1) + { + perror("rawsend: socket()"); + return -1; + } +#ifdef BSD +#if !(defined(__OpenBSD__) || defined (__APPLE__)) + // HDRINCL not supported for ipv6 in any BSD + if (family==AF_INET && setsockopt(*sock,IPPROTO_IP,IP_HDRINCL,&yes,sizeof(yes)) == -1) + { + perror("rawsend: setsockopt(IP_HDRINCL)"); + goto exiterr; + } +#endif +#ifdef SO_USER_COOKIE + if (setsockopt(*sock, SOL_SOCKET, SO_USER_COOKIE, &fwmark, sizeof(fwmark)) == -1) + { + perror("rawsend: setsockopt(SO_MARK)"); + goto exiterr; + } +#endif +#endif +#ifdef __linux__ + if (setsockopt(*sock, SOL_SOCKET, SO_MARK, &fwmark, sizeof(fwmark)) == -1) + { + perror("rawsend: setsockopt(SO_MARK)"); + goto exiterr; + } + if (setsockopt(*sock, SOL_SOCKET, SO_PRIORITY, &pri, sizeof(pri)) == -1) + { + perror("rawsend: setsockopt(SO_PRIORITY)"); + goto exiterr; + } +#endif + } + return *sock; +exiterr: + rawsend_clean_sock(sock); + return -1; +} +bool rawsend_preinit(uint32_t fwmark) +{ + return rawsend_socket(AF_INET,fwmark)!=-1 && rawsend_socket(AF_INET6,fwmark)!=-1; +} +bool rawsend(const struct sockaddr* dst,uint32_t fwmark,const void *data,size_t len) +{ + int sock=rawsend_socket(dst->sa_family,fwmark); + if (sock==-1) return false; + int salen = dst->sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6); + struct sockaddr_storage dst2; + memcpy(&dst2,dst,salen); + if (dst->sa_family==AF_INET6) + ((struct sockaddr_in6 *)&dst2)->sin6_port = 0; // or will be EINVAL in linux +#ifdef BSD +/* + // this works only for local connections and not working for transit : cant spoof source addr + if (len>=sizeof(struct ip6_hdr)) + { + // BSD ipv6 raw socks are limited. cannot pass the whole packet with ip6 header. + struct sockaddr_storage sa_src; + int v; + extract_endpoints(NULL,(struct ip6_hdr *)data,NULL, &sa_src, NULL); + v = ((struct ip6_hdr *)data)->ip6_ctlun.ip6_un1.ip6_un1_hlim; + if (setsockopt(sock, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &v, sizeof(v)) == -1) + perror("rawsend: setsockopt(IPV6_HOPLIMIT)"); + // the only way to control source address is bind. make it equal to ip6_hdr + if (bind(sock, (struct sockaddr*)&sa_src, salen) < 0) + perror("rawsend bind: "); + //printf("BSD v6 RAWSEND "); print_sockaddr((struct sockaddr*)&sa_src); printf(" -> "); print_sockaddr((struct sockaddr*)&dst2); printf("\n"); + proto_skip_ipv6((uint8_t**)&data, &len, NULL); + } +*/ + +#if !(defined(__OpenBSD__) || defined (__APPLE__)) + // OpenBSD doesnt allow rawsending tcp frames. always use divert socket + if (dst->sa_family==AF_INET6) +#endif + { + ssize_t bytes = rawsend_sendto_divert(dst->sa_family,sock,data,len); + if (bytes==-1) + { + perror("rawsend: sendto_divert"); + return false; + } + return true; + } +#endif + +#if defined(__FreeBSD__) && __FreeBSD__<=10 + // old FreeBSD requires some fields in the host byte order + if (dst->sa_family==AF_INET && len>=sizeof(struct ip)) + { + ((struct ip*)data)->ip_len = htons(((struct ip*)data)->ip_len); + ((struct ip*)data)->ip_off = htons(((struct ip*)data)->ip_off); + } +#endif + // normal raw socket sendto + ssize_t bytes = sendto(sock, data, len, 0, (struct sockaddr*)&dst2, salen); +#if defined(__FreeBSD) && __FreeBSD__<=10 + // restore byte order + if (dst->sa_family==AF_INET && len>=sizeof(struct ip)) + { + ((struct ip*)data)->ip_len = htons(((struct ip*)data)->ip_len); + ((struct ip*)data)->ip_off = htons(((struct ip*)data)->ip_off); + } +#endif + if (bytes==-1) + { + perror("rawsend: sendto"); + return false; + } + return true; +} +bool prepare_tcp_segment4( + const struct sockaddr_in *src, const struct sockaddr_in *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + uint16_t tcpoptlen = tcpopt_len(fooling,timestamps); + uint16_t pktlen = sizeof(struct ip) + sizeof(struct tcphdr) + tcpoptlen + len; + if (pktlen>*buflen) + { + fprintf(stderr,"prepare_tcp_segment : packet len cannot exceed %zu\n",*buflen); + return false; + } + + struct ip *ip = (struct ip*) buf; + struct tcphdr *tcp = (struct tcphdr*) (ip+1); + + ip->ip_off = 0; + ip->ip_v = 4; + ip->ip_hl = 5; + ip->ip_len = htons(pktlen); + ip->ip_id = 0; + ip->ip_ttl = ttl; + ip->ip_p = IPPROTO_TCP; + ip->ip_src = src->sin_addr; + ip->ip_dst = dst->sin_addr; + + fill_tcphdr(tcp,tcp_flags,seq,ack_seq,fooling,src->sin_port,dst->sin_port,wsize,timestamps); + + memcpy((char*)tcp+sizeof(struct tcphdr)+tcpoptlen,data,len); + tcp4_fix_checksum(tcp,sizeof(struct tcphdr)+tcpoptlen+len,&ip->ip_src,&ip->ip_dst); + if (fooling & TCP_FOOL_BADSUM) tcp->th_sum^=0xBEAF; + + *buflen = pktlen; + return true; +} + + +bool prepare_tcp_segment6( + const struct sockaddr_in6 *src, const struct sockaddr_in6 *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + uint16_t tcpoptlen = tcpopt_len(fooling,timestamps); + uint16_t payloadlen = sizeof(struct tcphdr) + tcpoptlen + len; + uint16_t pktlen = sizeof(struct ip6_hdr) + payloadlen; + if (pktlen>*buflen) + { + fprintf(stderr,"prepare_tcp_segment : packet len cannot exceed %zu\n",*buflen); + return false; + } + + struct ip6_hdr *ip6 = (struct ip6_hdr*) buf; + struct tcphdr *tcp = (struct tcphdr*) (ip6+1); + + ip6->ip6_ctlun.ip6_un1.ip6_un1_flow = htonl(0x60000000); + ip6->ip6_ctlun.ip6_un1.ip6_un1_plen = htons(payloadlen); + ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt = IPPROTO_TCP; + ip6->ip6_ctlun.ip6_un1.ip6_un1_hlim = ttl; + ip6->ip6_src = src->sin6_addr; + ip6->ip6_dst = dst->sin6_addr; + + fill_tcphdr(tcp,tcp_flags,seq,ack_seq,fooling,src->sin6_port,dst->sin6_port,wsize,timestamps); + + memcpy((char*)tcp+sizeof(struct tcphdr)+tcpoptlen,data,len); + tcp6_fix_checksum(tcp,sizeof(struct tcphdr)+tcpoptlen+len,&ip6->ip6_src,&ip6->ip6_dst); + if (fooling & TCP_FOOL_BADSUM) tcp->th_sum^=0xBEAF; + + *buflen = pktlen; + return true; +} + +bool prepare_tcp_segment( + const struct sockaddr *src, const struct sockaddr *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + return (src->sa_family==AF_INET && dst->sa_family==AF_INET) ? + prepare_tcp_segment4((struct sockaddr_in *)src,(struct sockaddr_in *)dst,tcp_flags,seq,ack_seq,wsize,timestamps,ttl,fooling,data,len,buf,buflen) : + (src->sa_family==AF_INET6 && dst->sa_family==AF_INET6) ? + prepare_tcp_segment6((struct sockaddr_in6 *)src,(struct sockaddr_in6 *)dst,tcp_flags,seq,ack_seq,wsize,timestamps,ttl,fooling,data,len,buf,buflen) : + false; +} + + +void extract_endpoints(const struct ip *ip,const struct ip6_hdr *ip6hdr,const struct tcphdr *tcphdr, struct sockaddr_storage *src, struct sockaddr_storage *dst) +{ + if (ip) + { + struct sockaddr_in *si; + + if (dst) + { + si = (struct sockaddr_in*)dst; + si->sin_family = AF_INET; + si->sin_port = tcphdr ? tcphdr->th_dport : 0; + si->sin_addr = ip->ip_dst; + } + + if (src) + { + si = (struct sockaddr_in*)src; + si->sin_family = AF_INET; + si->sin_port = tcphdr ? tcphdr->th_sport : 0; + si->sin_addr = ip->ip_src; + } + } + else if (ip6hdr) + { + struct sockaddr_in6 *si; + + if (dst) + { + si = (struct sockaddr_in6*)dst; + si->sin6_family = AF_INET6; + si->sin6_port = tcphdr ? tcphdr->th_dport : 0; + si->sin6_addr = ip6hdr->ip6_dst; + si->sin6_flowinfo = 0; + si->sin6_scope_id = 0; + } + + if (src) + { + si = (struct sockaddr_in6*)src; + si->sin6_family = AF_INET6; + si->sin6_port = tcphdr ? tcphdr->th_sport : 0; + si->sin6_addr = ip6hdr->ip6_src; + si->sin6_flowinfo = 0; + si->sin6_scope_id = 0; + } + } +} + +static const char *proto_name(uint8_t proto) +{ + switch(proto) + { + case IPPROTO_TCP: + return "tcp"; + case IPPROTO_UDP: + return "udp"; + case IPPROTO_ICMP: + return "icmp"; + case IPPROTO_IGMP: + return "igmp"; + case IPPROTO_ESP: + return "esp"; + case IPPROTO_AH: + return "ah"; + case IPPROTO_IPV6: + return "6in4"; +#ifdef IPPROTO_SCTP + case IPPROTO_SCTP: + return "sctp"; +#endif + default: + return NULL; + } +} +static void str_proto_name(char *s, size_t s_len, uint8_t proto) +{ + const char *name = proto_name(proto); + if (name) + snprintf(s,s_len,"%s",name); + else + snprintf(s,s_len,"%u",proto); +} + +static void str_srcdst_ip(char *s, size_t s_len, const void *saddr,const void *daddr) +{ + char s_ip[16],d_ip[16]; + *s_ip=*d_ip=0; + inet_ntop(AF_INET, saddr, s_ip, sizeof(s_ip)); + inet_ntop(AF_INET, daddr, d_ip, sizeof(d_ip)); + snprintf(s,s_len,"%s => %s",s_ip,d_ip); +} +static void str_ip(char *s, size_t s_len, const struct ip *ip) +{ + char ss[64],s_proto[16]; + str_srcdst_ip(ss,sizeof(ss),&ip->ip_src,&ip->ip_dst); + str_proto_name(s_proto,sizeof(s_proto),ip->ip_p); + snprintf(s,s_len,"%s proto=%s",ss,s_proto); +} +void print_ip(const struct ip *ip) +{ + char s[64]; + str_ip(s,sizeof(s),ip); + printf("%s",s); +} +static void str_srcdst_ip6(char *s, size_t s_len, const void *saddr,const void *daddr) +{ + char s_ip[40],d_ip[40]; + *s_ip=*d_ip=0; + inet_ntop(AF_INET6, saddr, s_ip, sizeof(s_ip)); + inet_ntop(AF_INET6, daddr, d_ip, sizeof(d_ip)); + snprintf(s,s_len,"%s => %s",s_ip,d_ip); +} +static void str_ip6hdr(char *s, size_t s_len, const struct ip6_hdr *ip6hdr, uint8_t proto) +{ + char ss[128],s_proto[16]; + str_srcdst_ip6(ss,sizeof(ss),&ip6hdr->ip6_src,&ip6hdr->ip6_dst); + str_proto_name(s_proto,sizeof(s_proto),proto); + snprintf(s,s_len,"%s proto=%s",ss,s_proto); +} +void print_ip6hdr(const struct ip6_hdr *ip6hdr, uint8_t proto) +{ + char s[128]; + str_ip6hdr(s,sizeof(s),ip6hdr,proto); + printf("%s",s); +} + +static void str_tcphdr(char *s, size_t s_len, const struct tcphdr *tcphdr) +{ + char flags[7],*f=flags; + if (tcphdr->th_flags & TH_SYN) *f++='S'; + if (tcphdr->th_flags & TH_ACK) *f++='A'; + if (tcphdr->th_flags & TH_RST) *f++='R'; + if (tcphdr->th_flags & TH_FIN) *f++='F'; + if (tcphdr->th_flags & TH_PUSH) *f++='P'; + if (tcphdr->th_flags & TH_URG) *f++='U'; + *f=0; + snprintf(s,s_len,"sport=%u dport=%u flags=%s seq=%u ack_seq=%u",htons(tcphdr->th_sport),htons(tcphdr->th_dport),flags,htonl(tcphdr->th_seq),htonl(tcphdr->th_ack)); +} +void print_tcphdr(const struct tcphdr *tcphdr) +{ + char s[80]; + str_tcphdr(s,sizeof(s),tcphdr); + printf("%s",s); +} + + + + +bool proto_check_ipv4(uint8_t *data, size_t len) +{ + return len >= 20 && (data[0] & 0xF0) == 0x40 && + len >= ((data[0] & 0x0F) << 2); +} +// move to transport protocol +void proto_skip_ipv4(uint8_t **data, size_t *len) +{ + size_t l; + + l = (**data & 0x0F) << 2; + *data += l; + *len -= l; +} +bool proto_check_tcp(uint8_t *data, size_t len) +{ + return len >= 20 && len >= ((data[12] & 0xF0) >> 2); +} +void proto_skip_tcp(uint8_t **data, size_t *len) +{ + size_t l; + l = ((*data)[12] & 0xF0) >> 2; + *data += l; + *len -= l; +} + +bool proto_check_ipv6(uint8_t *data, size_t len) +{ + return len >= 40 && (data[0] & 0xF0) == 0x60 && + (len - 40) >= htons(*(uint16_t*)(data + 4)); // payload length +} +// move to transport protocol +// proto_type = 0 => error +void proto_skip_ipv6(uint8_t **data, size_t *len, uint8_t *proto_type) +{ + size_t hdrlen; + uint8_t HeaderType; + + if (proto_type) *proto_type = 0; // put error in advance + + HeaderType = (*data)[6]; // NextHeader field + *data += 40; *len -= 40; // skip ipv6 base header + while (*len > 0) // need at least one byte for NextHeader field + { + switch (HeaderType) + { + case 0: // Hop-by-Hop Options + case 43: // routing + case 51: // authentication + case 60: // Destination Options + case 135: // mobility + case 139: // Host Identity Protocol Version v2 + case 140: // Shim6 + if (*len < 2) return; // error + hdrlen = 8 + ((*data)[1] << 3); + break; + case 44: // fragment. length fixed to 8, hdrlen field defined as reserved + hdrlen = 8; + break; + case 59: // no next header + return; // error + default: + // we found some meaningful payload. it can be tcp, udp, icmp or some another exotic shit + if (proto_type) *proto_type = HeaderType; + return; + } + if (*len < hdrlen) return; // error + HeaderType = **data; + // advance to the next header location + *len -= hdrlen; + *data += hdrlen; + } + // we have garbage +} + +bool tcp_synack_segment(const struct tcphdr *tcphdr) +{ + /* check for set bits in TCP hdr */ + return ((tcphdr->th_flags & (TH_URG|TH_ACK|TH_PUSH|TH_RST|TH_SYN|TH_FIN)) == (TH_ACK|TH_SYN)); +} diff --git a/nfq/darkmagic.h b/nfq/darkmagic.h new file mode 100644 index 0000000..2a39b93 --- /dev/null +++ b/nfq/darkmagic.h @@ -0,0 +1,76 @@ +#pragma once + +#include "checksum.h" + +#include +#include +#include +#include +#include +#include +#include + +// returns netorder value +uint32_t net32_add(uint32_t netorder_value, uint32_t cpuorder_increment); + +#define TCP_FOOL_NONE 0 +#define TCP_FOOL_MD5SIG 1 +#define TCP_FOOL_BADSUM 2 +#define TCP_FOOL_TS 4 +#define TCP_FOOL_BADSEQ 8 + +// seq and wsize have network byte order +bool prepare_tcp_segment4( + const struct sockaddr_in *src, const struct sockaddr_in *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); +bool prepare_tcp_segment6( + const struct sockaddr_in6 *src, const struct sockaddr_in6 *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); +bool prepare_tcp_segment( + const struct sockaddr *src, const struct sockaddr *dst, + uint8_t tcp_flags, + uint32_t seq, uint32_t ack_seq, + uint16_t wsize, + uint32_t *timestamps, + uint8_t ttl, + uint8_t fooling, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); + +void extract_endpoints(const struct ip *ip,const struct ip6_hdr *ip6hdr,const struct tcphdr *tcphdr, struct sockaddr_storage *src, struct sockaddr_storage *dst); +uint8_t *tcp_find_option(struct tcphdr *tcp, uint8_t kind); +uint32_t *tcp_find_timestamps(struct tcphdr *tcp); + +// auto creates internal socket and uses it for subsequent calls +bool rawsend(const struct sockaddr* dst,uint32_t fwmark,const void *data,size_t len); +// should pre-do it if dropping privileges. otherwise its not necessary +bool rawsend_preinit(uint32_t fwmark); +// cleans up socket autocreated by rawsend +void rawsend_cleanup(); + +void print_ip(const struct ip *ip); +void print_ip6hdr(const struct ip6_hdr *ip6hdr, uint8_t proto); +void print_tcphdr(const struct tcphdr *tcphdr); + + +bool proto_check_ipv4(uint8_t *data, size_t len); +void proto_skip_ipv4(uint8_t **data, size_t *len); +bool proto_check_tcp(uint8_t *data, size_t len); +void proto_skip_tcp(uint8_t **data, size_t *len); +bool proto_check_ipv6(uint8_t *data, size_t len); +void proto_skip_ipv6(uint8_t **data, size_t *len, uint8_t *proto_type); +bool tcp_synack_segment(const struct tcphdr *tcphdr); diff --git a/nfq/desync.c b/nfq/desync.c new file mode 100644 index 0000000..d6c6f59 --- /dev/null +++ b/nfq/desync.c @@ -0,0 +1,396 @@ +#define _GNU_SOURCE + +#include "desync.h" +#include "protocol.h" +#include "params.h" +#include "helpers.h" +#include "hostlist.h" + +#include + + +const char *fake_http_request_default = "GET / HTTP/1.1\r\nHost: www.w3.org\r\n" + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0\r\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" + "Accept-Encoding: gzip, deflate\r\n\r\n"; +const uint8_t fake_tls_clienthello_default[517] = { + 0x16, 0x03, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0xfc, 0x03, 0x03, 0x9a, 0x8f, 0xa7, 0x6a, 0x5d, + 0x57, 0xf3, 0x62, 0x19, 0xbe, 0x46, 0x82, 0x45, 0xe2, 0x59, 0x5c, 0xb4, 0x48, 0x31, 0x12, 0x15, + 0x14, 0x79, 0x2c, 0xaa, 0xcd, 0xea, 0xda, 0xf0, 0xe1, 0xfd, 0xbb, 0x20, 0xf4, 0x83, 0x2a, 0x94, + 0xf1, 0x48, 0x3b, 0x9d, 0xb6, 0x74, 0xba, 0x3c, 0x81, 0x63, 0xbc, 0x18, 0xcc, 0x14, 0x45, 0x57, + 0x6c, 0x80, 0xf9, 0x25, 0xcf, 0x9c, 0x86, 0x60, 0x50, 0x31, 0x2e, 0xe9, 0x00, 0x22, 0x13, 0x01, + 0x13, 0x03, 0x13, 0x02, 0xc0, 0x2b, 0xc0, 0x2f, 0xcc, 0xa9, 0xcc, 0xa8, 0xc0, 0x2c, 0xc0, 0x30, + 0xc0, 0x0a, 0xc0, 0x09, 0xc0, 0x13, 0xc0, 0x14, 0x00, 0x33, 0x00, 0x39, 0x00, 0x2f, 0x00, 0x35, + 0x01, 0x00, 0x01, 0x91, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x00, 0x0a, 0x77, 0x77, 0x77, + 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x00, 0x17, 0x00, 0x00, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x01, 0x00, + 0x01, 0x01, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0e, + 0x00, 0x0c, 0x02, 0x68, 0x32, 0x08, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x31, 0x2e, 0x31, 0x00, 0x05, + 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x1d, 0x00, + 0x20, 0xb0, 0xe4, 0xda, 0x34, 0xb4, 0x29, 0x8d, 0xd3, 0x5c, 0x70, 0xd3, 0xbe, 0xe8, 0xa7, 0x2a, + 0x6b, 0xe4, 0x11, 0x19, 0x8b, 0x18, 0x9d, 0x83, 0x9a, 0x49, 0x7c, 0x83, 0x7f, 0xa9, 0x03, 0x8c, + 0x3c, 0x00, 0x17, 0x00, 0x41, 0x04, 0x4c, 0x04, 0xa4, 0x71, 0x4c, 0x49, 0x75, 0x55, 0xd1, 0x18, + 0x1e, 0x22, 0x62, 0x19, 0x53, 0x00, 0xde, 0x74, 0x2f, 0xb3, 0xde, 0x13, 0x54, 0xe6, 0x78, 0x07, + 0x94, 0x55, 0x0e, 0xb2, 0x6c, 0xb0, 0x03, 0xee, 0x79, 0xa9, 0x96, 0x1e, 0x0e, 0x98, 0x17, 0x78, + 0x24, 0x44, 0x0c, 0x88, 0x80, 0x06, 0x8b, 0xd4, 0x80, 0xbf, 0x67, 0x7c, 0x37, 0x6a, 0x5b, 0x46, + 0x4c, 0xa7, 0x98, 0x6f, 0xb9, 0x22, 0x00, 0x2b, 0x00, 0x09, 0x08, 0x03, 0x04, 0x03, 0x03, 0x03, + 0x02, 0x03, 0x01, 0x00, 0x0d, 0x00, 0x18, 0x00, 0x16, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x08, + 0x04, 0x08, 0x05, 0x08, 0x06, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x03, 0x02, 0x01, 0x00, + 0x2d, 0x00, 0x02, 0x01, 0x01, 0x00, 0x1c, 0x00, 0x02, 0x40, 0x01, 0x00, 0x15, 0x00, 0x96, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#define PKT_MAXDUMP 32 + +static uint8_t zeropkt[DPI_DESYNC_MAX_FAKE_LEN]; + +void desync_init() +{ + memset(zeropkt, 0, sizeof(zeropkt)); +} + + +bool desync_valid_first_stage(enum dpi_desync_mode mode) +{ + return mode==DESYNC_FAKE || mode==DESYNC_RST || mode==DESYNC_RSTACK; +} +bool desync_valid_second_stage(enum dpi_desync_mode mode) +{ + return mode==DESYNC_NONE || mode==DESYNC_DISORDER || mode==DESYNC_DISORDER2 || mode==DESYNC_SPLIT || mode==DESYNC_SPLIT2; +} +enum dpi_desync_mode desync_mode_from_string(const char *s) +{ + if (!s) + return DESYNC_NONE; + else if (!strcmp(s,"fake")) + return DESYNC_FAKE; + else if (!strcmp(s,"rst")) + return DESYNC_RST; + else if (!strcmp(s,"rstack")) + return DESYNC_RSTACK; + else if (!strcmp(s,"disorder")) + return DESYNC_DISORDER; + else if (!strcmp(s,"disorder2")) + return DESYNC_DISORDER2; + else if (!strcmp(s,"split")) + return DESYNC_SPLIT; + else if (!strcmp(s,"split2")) + return DESYNC_SPLIT2; + return DESYNC_INVALID; +} + + +// auto creates internal socket and uses it for subsequent calls +static bool rawsend_rep(const struct sockaddr* dst,uint32_t fwmark,const void *data,size_t len) +{ + for (int i=0;ith_flags & TH_SYN) && len_payload) + { + struct sockaddr_storage src, dst; + const uint8_t *fake; + size_t fake_size; + char host[256]; + bool bHaveHost=false; + bool bIsHttp; + uint8_t *p, *phost; + + if ((bIsHttp = IsHttp(data_payload,len_payload))) + { + DLOG("packet contains HTTP request\n") + fake = params.fake_http; + fake_size = params.fake_http_size; + if (params.hostlist || params.debug) bHaveHost=HttpExtractHost(data_payload,len_payload,host,sizeof(host)); + if (params.hostlist && !bHaveHost) + { + DLOG("not applying tampering to HTTP without Host:\n") + return res; + } + } + else if (IsTLSClientHello(data_payload,len_payload)) + { + DLOG("packet contains TLS ClientHello\n") + fake = params.fake_tls; + fake_size = params.fake_tls_size; + if (params.hostlist || params.desync_skip_nosni || params.debug) + { + bHaveHost=TLSHelloExtractHost(data_payload,len_payload,host,sizeof(host)); + if (params.desync_skip_nosni && !bHaveHost) + { + DLOG("not applying tampering to TLS ClientHello without hostname in the SNI\n") + return res; + } + } + } + else + { + if (!params.desync_any_proto) return res; + DLOG("applying tampering to unknown protocol\n") + fake = zeropkt; + fake_size = 256; + } + + if (bHaveHost) + { + DLOG("hostname: %s\n",host) + if (params.hostlist && !SearchHostList(params.hostlist,host,params.debug)) + { + DLOG("not applying tampering to this request\n") + return res; + } + } + + if (bIsHttp && (params.hostcase || params.hostnospace || params.domcase) && (phost = (uint8_t*)memmem(data_payload, len_payload, "\r\nHost: ", 8))) + { + if (params.hostcase) + { + DLOG("modifying Host: => %c%c%c%c:\n", params.hostspell[0], params.hostspell[1], params.hostspell[2], params.hostspell[3]) + memcpy(phost + 2, params.hostspell, 4); + res=modify; + } + if (params.domcase) + { + DLOG("mixing domain case\n"); + for (p = phost+7; p < (data_payload + len_payload) && *p != '\r' && *p != '\n'; p++) + *p = (((size_t)p) & 1) ? tolower(*p) : toupper(*p); + res=modify; + } + uint8_t *pua; + if (params.hostnospace && + (pua = (uint8_t*)memmem(data_payload, len_payload, "\r\nUser-Agent: ", 14)) && + (pua = (uint8_t*)memmem(pua + 1, len_payload - (pua - data_payload) - 1, "\r\n", 2))) + { + DLOG("removing space after Host: and adding it to User-Agent:\n") + if (pua > phost) + { + memmove(phost + 7, phost + 8, pua - phost - 8); + phost[pua - phost - 1] = ' '; + } + else + { + memmove(pua + 1, pua, phost - pua + 7); + *pua = ' '; + } + res=modify; + } + } + + if (params.desync_mode==DESYNC_NONE) return res; + + extract_endpoints(ip, ip6hdr, tcphdr, &src, &dst); + if (params.debug) + { + printf("dpi desync src="); + print_sockaddr((struct sockaddr *)&src); + printf(" dst="); + print_sockaddr((struct sockaddr *)&dst); + printf("\n"); + } + + uint8_t newdata[DPI_DESYNC_MAX_FAKE_LEN+100]; + size_t newlen; + uint8_t ttl_orig = ip ? ip->ip_ttl : ip6hdr->ip6_ctlun.ip6_un1.ip6_un1_hlim; + uint8_t ttl_fake = params.desync_ttl ? params.desync_ttl : ttl_orig; + uint8_t flags_orig = *((uint8_t*)tcphdr+13); + uint32_t *timestamps = tcp_find_timestamps(tcphdr); + enum dpi_desync_mode desync_mode = params.desync_mode; + bool b; + + newlen = sizeof(newdata); + b = false; + switch(desync_mode) + { + case DESYNC_FAKE: + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_fake,params.desync_tcp_fooling_mode, + fake, fake_size, newdata, &newlen)) + { + return res; + } + DLOG("sending fake request : "); + hexdump_limited_dlog(fake,fake_size,PKT_MAXDUMP); DLOG("\n") + b = true; + break; + case DESYNC_RST: + case DESYNC_RSTACK: + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, TH_RST | (desync_mode==DESYNC_RSTACK ? TH_ACK:0), tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_fake,params.desync_tcp_fooling_mode, + NULL, 0, newdata, &newlen)) + { + return res; + } + DLOG("sending fake RST/RSTACK\n"); + b = true; + break; + } + + if (b) + { + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, newdata, newlen)) + return res; + if (params.desync_mode2==DESYNC_NONE) + { + if (params.desync_retrans) + { + DLOG("dropping original packet to force retransmission. len=%zu len_payload=%zu\n", len_pkt, len_payload) + } + else + { + DLOG("reinjecting original packet. len=%zu len_payload=%zu\n", len_pkt, len_payload) + #ifdef __FreeBSD__ + // FreeBSD tend to pass ipv6 frames with wrong checksum + if (res==modify || ip6hdr) + #else + // if original packet was tampered earlier it needs checksum fixed + if (res==modify) + #endif + tcp_fix_checksum(tcphdr,len_tcp,ip,ip6hdr); + if (!rawsend((struct sockaddr *)&dst, params.desync_fwmark, data_pkt, len_pkt)) + return res; + } + return drop; + } + desync_mode = params.desync_mode2; + } + + newlen = sizeof(newdata); + switch(desync_mode) + { + case DESYNC_DISORDER: + case DESYNC_DISORDER2: + { + size_t split_pos=len_payload>params.desync_split_pos ? params.desync_split_pos : 1; + uint8_t fakeseg[DPI_DESYNC_MAX_FAKE_LEN+100]; + size_t fakeseg_len; + + if (split_posth_seq,split_pos), tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_orig,TCP_FOOL_NONE, + data_payload+split_pos, len_payload-split_pos, newdata, &newlen)) + return res; + DLOG("sending 2nd out-of-order tcp segment %zu-%zu len=%zu : ",split_pos,len_payload-1, len_payload-split_pos) + hexdump_limited_dlog(data_payload+split_pos,len_payload-split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, newdata, newlen)) + return res; + } + + + if (desync_mode==DESYNC_DISORDER) + { + fakeseg_len = sizeof(fakeseg); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_fake,params.desync_tcp_fooling_mode, + zeropkt, split_pos, fakeseg, &fakeseg_len)) + return res; + DLOG("sending fake(1) 1st out-of-order tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(zeropkt,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, fakeseg, fakeseg_len)) + return res; + } + + + newlen = sizeof(newdata); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_orig,TCP_FOOL_NONE, + data_payload, split_pos, newdata, &newlen)) + return res; + DLOG("sending 1st out-of-order tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(data_payload,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, newdata, newlen)) + return res; + + if (desync_mode==DESYNC_DISORDER) + { + DLOG("sending fake(2) 1st out-of-order tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(zeropkt,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, fakeseg, fakeseg_len)) + return res; + } + + return drop; + } + break; + case DESYNC_SPLIT: + case DESYNC_SPLIT2: + { + size_t split_pos=len_payload>params.desync_split_pos ? params.desync_split_pos : 1; + uint8_t fakeseg[DPI_DESYNC_MAX_FAKE_LEN+100]; + size_t fakeseg_len; + + if (desync_mode==DESYNC_SPLIT) + { + fakeseg_len = sizeof(fakeseg); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_fake,params.desync_tcp_fooling_mode, + zeropkt, split_pos, fakeseg, &fakeseg_len)) + return res; + DLOG("sending fake(1) 1st tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(zeropkt,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, fakeseg, fakeseg_len)) + return res; + } + + newlen = sizeof(newdata); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_orig,TCP_FOOL_NONE, + data_payload, split_pos, newdata, &newlen)) + return res; + DLOG("sending 1st tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(data_payload,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, newdata, newlen)) + return res; + + if (desync_mode==DESYNC_SPLIT) + { + DLOG("sending fake(2) 1st tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos) + hexdump_limited_dlog(zeropkt,split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, fakeseg, fakeseg_len)) + return res; + } + + if (split_posth_seq,split_pos), tcphdr->th_ack, tcphdr->th_win, timestamps, + ttl_orig,TCP_FOOL_NONE, + data_payload+split_pos, len_payload-split_pos, newdata, &newlen)) + return res; + DLOG("sending 2nd tcp segment %zu-%zu len=%zu : ",split_pos,len_payload-1, len_payload-split_pos) + hexdump_limited_dlog(data_payload+split_pos,len_payload-split_pos,PKT_MAXDUMP); DLOG("\n") + if (!rawsend_rep((struct sockaddr *)&dst, params.desync_fwmark, newdata, newlen)) + return res; + } + + return drop; + } + break; + } + + return res; + } + + return res; +} diff --git a/nfq/desync.h b/nfq/desync.h new file mode 100644 index 0000000..912739a --- /dev/null +++ b/nfq/desync.h @@ -0,0 +1,41 @@ +#pragma once + +#include "darkmagic.h" +#include "nfqws.h" + +#include +#include +#include +#include +#include +#include + +#ifdef __linux__ +#define DPI_DESYNC_FWMARK_DEFAULT 0x40000000 +#else +#define DPI_DESYNC_FWMARK_DEFAULT 512 +#endif + +#define DPI_DESYNC_MAX_FAKE_LEN 1500 + +enum dpi_desync_mode { + DESYNC_NONE=0, + DESYNC_INVALID, + DESYNC_FAKE, + DESYNC_RST, + DESYNC_RSTACK, + DESYNC_DISORDER, + DESYNC_DISORDER2, + DESYNC_SPLIT, + DESYNC_SPLIT2 +}; + +extern const char *fake_http_request_default; +extern const uint8_t fake_tls_clienthello_default[517]; + +enum dpi_desync_mode desync_mode_from_string(const char *s); +bool desync_valid_first_stage(enum dpi_desync_mode mode); +bool desync_valid_second_stage(enum dpi_desync_mode mode); + +void desync_init(); +packet_process_result dpi_desync_packet(uint8_t *data_pkt, size_t len_pkt, struct ip *ip, struct ip6_hdr *ip6hdr, struct tcphdr *tcphdr, size_t len_tcp, uint8_t *data_payload, size_t len_payload); diff --git a/nfq/gzip.c b/nfq/gzip.c new file mode 100644 index 0000000..cb46670 --- /dev/null +++ b/nfq/gzip.c @@ -0,0 +1,82 @@ +#include "gzip.h" +#include +#include +#include + +#define ZCHUNK 16384 +#define BUFMIN 128 +#define BUFCHUNK (1024*128) + +int z_readfile(FILE *F, char **buf, size_t *size) +{ + z_stream zs; + int r; + unsigned char in[ZCHUNK]; + size_t bufsize; + void *newbuf; + + memset(&zs, 0, sizeof(zs)); + + *buf = NULL; + bufsize = *size = 0; + + r = inflateInit2(&zs, 47); + if (r != Z_OK) return r; + + do + { + zs.avail_in = fread(in, 1, sizeof(in), F); + if (ferror(F)) + { + r = Z_ERRNO; + goto zerr; + } + if (!zs.avail_in) break; + zs.next_in = in; + do + { + if ((bufsize - *size) < BUFMIN) + { + bufsize += BUFCHUNK; + newbuf = *buf ? realloc(*buf, bufsize) : malloc(bufsize); + if (!newbuf) + { + r = Z_MEM_ERROR; + goto zerr; + } + *buf = newbuf; + } + zs.avail_out = bufsize - *size; + zs.next_out = (unsigned char*)(*buf + *size); + r = inflate(&zs, Z_NO_FLUSH); + if (r != Z_OK && r != Z_STREAM_END) goto zerr; + *size = bufsize - zs.avail_out; + } while (r == Z_OK && zs.avail_in); + } while (r == Z_OK); + + if (*size < bufsize) + { + // free extra space + if ((newbuf = realloc(*buf, *size))) *buf = newbuf; + } + + inflateEnd(&zs); + return Z_OK; + +zerr: + inflateEnd(&zs); + if (*buf) + { + free(*buf); + *buf = NULL; + } + return r; +} + +bool is_gzip(FILE* F) +{ + unsigned char magic[2]; + bool b = !fseek(F, 0, SEEK_SET) && fread(magic, 1, 2, F) == 2 && magic[0] == 0x1F && magic[1] == 0x8B; + fseek(F, 0, SEEK_SET); + return b; +} diff --git a/nfq/gzip.h b/nfq/gzip.h new file mode 100644 index 0000000..15e30d2 --- /dev/null +++ b/nfq/gzip.h @@ -0,0 +1,8 @@ +#pragma once + +#include +#include +#include + +int z_readfile(FILE *F,char **buf,size_t *size); +bool is_gzip(FILE* F); diff --git a/nfq/helpers.c b/nfq/helpers.c new file mode 100644 index 0000000..b2443cc --- /dev/null +++ b/nfq/helpers.c @@ -0,0 +1,120 @@ +#define _GNU_SOURCE + +#include "helpers.h" +#include +#include +#include +#include + +void hexdump_limited_dlog(const uint8_t *data, size_t size, size_t limit) +{ + size_t k; + bool bcut=false; + if (size>limit) + { + size=limit; + bcut = true; + } + if (!size) return; + for (k=0;k=0x20 && data[k]<=0x7F ? (char)data[k] : '.'); + if (bcut) DLOG(" ..."); +} + +char *strncasestr(const char *s,const char *find, size_t slen) +{ + char c, sc; + size_t len; + + if ((c = *find++) != '\0') + { + len = strlen(find); + do + { + do + { + if (slen-- < 1 || (sc = *s++) == '\0') return NULL; + } while (toupper(c) != toupper(sc)); + if (len > slen) return NULL; + } while (strncasecmp(s, find, len) != 0); + s--; + } + return (char *)s; +} + +bool load_file(const char *filename,void *buffer,size_t *buffer_size) +{ + FILE *F; + + F = fopen(filename,"rb"); + if (!F) return false; + + *buffer_size = fread(buffer,1,*buffer_size,F); + if (ferror(F)) + { + fclose(F); + return false; + } + + fclose(F); + return true; +} +bool load_file_nonempty(const char *filename,void *buffer,size_t *buffer_size) +{ + bool b = load_file(filename,buffer,buffer_size); + return b && *buffer_size; +} + + + +void print_sockaddr(const struct sockaddr *sa) +{ + char str[64]; + switch (sa->sa_family) + { + case AF_INET: + if (inet_ntop(sa->sa_family, &((struct sockaddr_in*)sa)->sin_addr, str, sizeof(str))) + printf("%s:%d", str, ntohs(((struct sockaddr_in*)sa)->sin_port)); + break; + case AF_INET6: + if (inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, str, sizeof(str))) + printf("[%s]:%d", str, ntohs(((struct sockaddr_in6*)sa)->sin6_port)); + break; + default: + printf("UNKNOWN_FAMILY_%d", sa->sa_family); + } +} + +void dbgprint_socket_buffers(int fd) +{ + if (params.debug) + { + int v; + socklen_t sz; + sz=sizeof(int); + if (!getsockopt(fd,SOL_SOCKET,SO_RCVBUF,&v,&sz)) + DLOG("fd=%d SO_RCVBUF=%d\n",fd,v) + sz=sizeof(int); + if (!getsockopt(fd,SOL_SOCKET,SO_SNDBUF,&v,&sz)) + DLOG("fd=%d SO_SNDBUF=%d\n",fd,v) + } +} +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf) +{ + DLOG("set_socket_buffers fd=%d rcvbuf=%d sndbuf=%d\n",fd,rcvbuf,sndbuf) + if (rcvbuf && setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(int)) <0) + { + perror("setsockopt (SO_RCVBUF): "); + close(fd); + return false; + } + if (sndbuf && setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(int)) <0) + { + perror("setsockopt (SO_SNDBUF): "); + close(fd); + return false; + } + dbgprint_socket_buffers(fd); + return true; +} diff --git a/nfq/helpers.h b/nfq/helpers.h new file mode 100644 index 0000000..fac7c24 --- /dev/null +++ b/nfq/helpers.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "params.h" + +void hexdump_limited_dlog(const uint8_t *data, size_t size, size_t limit); +char *strncasestr(const char *s,const char *find, size_t slen); +bool load_file(const char *filename,void *buffer,size_t *buffer_size); +bool load_file_nonempty(const char *filename,void *buffer,size_t *buffer_size); + +void print_sockaddr(const struct sockaddr *sa); +void dbgprint_socket_buffers(int fd); +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf); diff --git a/nfq/hostlist.c b/nfq/hostlist.c new file mode 100644 index 0000000..b4136d2 --- /dev/null +++ b/nfq/hostlist.c @@ -0,0 +1,112 @@ +#include +#include "hostlist.h" +#include "gzip.h" + + +static bool addpool(strpool **hostlist, char **s, char *end) +{ + char *p; + + // advance until eol lowering all chars + for (p = *s; p +#include "strpool.h" + +bool LoadHostList(strpool **hostlist, char *filename); +bool SearchHostList(strpool *hostlist, const char *host,bool debug); diff --git a/nfq/nfqws b/nfq/nfqws new file mode 120000 index 0000000..2c1b593 --- /dev/null +++ b/nfq/nfqws @@ -0,0 +1 @@ +../binaries/x86_64/nfqws \ No newline at end of file diff --git a/nfq/nfqws.c b/nfq/nfqws.c new file mode 100644 index 0000000..9564303 --- /dev/null +++ b/nfq/nfqws.c @@ -0,0 +1,809 @@ +#define _GNU_SOURCE + +#include "nfqws.h" +#include "sec.h" +#include "desync.h" +#include "helpers.h" +#include "checksum.h" +#include "params.h" +#include "protocol.h" +#include "hostlist.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __linux__ +#include +#define NF_DROP 0 +#define NF_ACCEPT 1 +#endif + +#ifndef IPPROTO_DIVERT +#define IPPROTO_DIVERT 258 +#endif + + +struct params_s params; + + +static bool bHup = false; +static void onhup(int sig) +{ + printf("HUP received !\n"); + if (params.hostlist) + printf("Will reload hostlist on next request\n"); + bHup = true; +} +// should be called in normal execution +static void dohup() +{ + if (bHup) + { + if (params.hostlist) + { + if (!LoadHostList(¶ms.hostlist, params.hostfile)) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + } + bHup = false; + } +} + + + +static void tcp_rewrite_winsize(struct tcphdr *tcp, uint16_t winsize) +{ + uint16_t winsize_old; + winsize_old = htons(tcp->th_win); // << scale_factor; + tcp->th_win = htons(winsize); + DLOG("Window size change %u => %u\n", winsize_old, winsize) +} + +// data/len points to data payload +static bool modify_tcp_packet(uint8_t *data, size_t len, struct tcphdr *tcphdr) +{ + if (tcp_synack_segment(tcphdr) && params.wsize) + { + tcp_rewrite_winsize(tcphdr, (uint16_t)params.wsize); + return true; + } + return false; +} + + + +#ifdef __linux__ +static packet_process_result processPacketData(uint8_t *data_pkt, size_t len_pkt, uint32_t *mark) +#else +static packet_process_result processPacketData(uint8_t *data_pkt, size_t len_pkt) +#endif +{ + struct ip *ip = NULL; + struct ip6_hdr *ip6hdr = NULL; + struct tcphdr *tcphdr = NULL; + size_t len = len_pkt, len_tcp; + uint8_t *data = data_pkt; + packet_process_result res = pass, res2; + uint8_t proto; + +#ifdef __linux__ + if (*mark & params.desync_fwmark) + { + DLOG("ignoring generated packet\n") + return res; + } +#endif + + if (proto_check_ipv4(data, len)) + { + ip = (struct ip *) data; + proto = ip->ip_p; + proto_skip_ipv4(&data, &len); + if (params.debug) + { + printf("IP4: "); + print_ip(ip); + } + } + else if (proto_check_ipv6(data, len)) + { + ip6hdr = (struct ip6_hdr *) data; + proto_skip_ipv6(&data, &len, &proto); + if (params.debug) + { + printf("IP6: "); + print_ip6hdr(ip6hdr, proto); + } + } + else + { + // not ipv6 and not ipv4 + return res; + } + + if (proto==IPPROTO_TCP && proto_check_tcp(data, len)) + { + tcphdr = (struct tcphdr *) data; + len_tcp = len; + proto_skip_tcp(&data, &len); + + if (params.debug) + { + printf(" "); + print_tcphdr(tcphdr); + printf("\n"); + } + + if (len) { DLOG("TCP: ") hexdump_limited_dlog(data, len, 32); DLOG("\n") } + + if (modify_tcp_packet(data, len, tcphdr)) + res = modify; + + res2 = dpi_desync_packet(data_pkt, len_pkt, ip, ip6hdr, tcphdr, len_tcp, data, len); + res = (res2==pass && res==modify) ? modify : res2; + // in my FreeBSD divert tests only ipv4 packets were reinjected with correct checksum + // ipv6 packets were with incorrect checksum +#ifdef __FreeBSD__ + // FreeBSD tend to pass ipv6 frames with wrong checksum + if (res==modify || ip6hdr) +#else + if (res==modify) +#endif + tcp_fix_checksum(tcphdr,len_tcp,ip,ip6hdr); + } + else + { + if (params.debug) printf("\n"); + } + + return res; +} + + +#ifdef __linux__ +static int nfq_cb(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, + struct nfq_data *nfa, void *cookie) +{ + int id; + size_t len; + struct nfqnl_msg_packet_hdr *ph; + uint8_t *data; + + ph = nfq_get_msg_packet_hdr(nfa); + id = ph ? ntohl(ph->packet_id) : 0; + + uint32_t mark = nfq_get_nfmark(nfa); + len = nfq_get_payload(nfa, &data); + DLOG("packet: id=%d len=%zu\n", id, len) + if (len >= 0) + { + switch (processPacketData(data, len, &mark)) + { + case modify: + DLOG("packet: id=%d pass modified\n", id); + return nfq_set_verdict2(qh, id, NF_ACCEPT, mark, len, data); + case drop: + DLOG("packet: id=%d drop\n", id); + return nfq_set_verdict2(qh, id, NF_DROP, mark, 0, NULL); + } + } + DLOG("packet: id=%d pass unmodified\n", id); + return nfq_set_verdict2(qh, id, NF_ACCEPT, mark, 0, NULL); +} +static int nfq_main() +{ + struct nfq_handle *h = NULL; + struct nfq_q_handle *qh = NULL; + int fd,rv; + uint8_t buf[16384] __attribute__((aligned)); + + printf("opening library handle\n"); + h = nfq_open(); + if (!h) { + perror("nfq_open() :"); + goto exiterr; + } + + printf("unbinding existing nf_queue handler for AF_INET (if any)\n"); + if (nfq_unbind_pf(h, AF_INET) < 0) { + perror("nfq_unbind_pf() :"); + goto exiterr; + } + + printf("binding nfnetlink_queue as nf_queue handler for AF_INET\n"); + if (nfq_bind_pf(h, AF_INET) < 0) { + perror("nfq_bind_pf() :"); + goto exiterr; + } + + printf("binding this socket to queue '%u'\n", params.qnum); + qh = nfq_create_queue(h, params.qnum, &nfq_cb, ¶ms); + if (!qh) { + perror("nfq_create_queue() :"); + goto exiterr; + } + + printf("setting copy_packet mode\n"); + if (nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff) < 0) { + perror("can't set packet_copy mode :"); + goto exiterr; + } + if (nfq_set_queue_maxlen(qh, Q_MAXLEN) < 0) { + perror("can't set queue maxlen : "); + goto exiterr; + } + // accept packets if they cant be handled + if (nfq_set_queue_flags(qh, NFQA_CFG_F_FAIL_OPEN , NFQA_CFG_F_FAIL_OPEN)) + { + fprintf(stderr, "can't set queue flags. its OK on linux <3.6\n"); + // dot not fail. not supported on old linuxes <3.6 + } + + if (params.droproot && !droproot(params.uid, params.gid)) + goto exiterr; + print_id(); + + signal(SIGHUP, onhup); + + desync_init(); + + fd = nfq_fd(h); + + // increase socket buffer size. on slow systems reloading hostlist can take a while. + // if too many unhandled packets are received its possible to get "no buffer space available" error + if (!set_socket_buffers(fd,Q_RCVBUF/2,Q_SNDBUF/2)) + goto exiterr; + do + { + while ((rv = recv(fd, buf, sizeof(buf), 0)) && rv >= 0) + { + dohup(); + int r = nfq_handle_packet(h, buf, rv); + if (r) fprintf(stderr, "nfq_handle_packet error %d\n", r); + } + fprintf(stderr, "recv: errno %d\n",errno); + perror("recv"); + // do not fail on ENOBUFS + } while(errno==ENOBUFS); + + printf("unbinding from queue 0\n"); + nfq_destroy_queue(qh); + +#ifdef INSANE + /* normally, applications SHOULD NOT issue this command, since + * it detaches other programs/sockets from AF_INET, too ! */ + printf("unbinding from AF_INET\n"); + nfq_unbind_pf(h, AF_INET); +#endif + + printf("closing library handle\n"); + nfq_close(h); + return 0; + +exiterr: + if (qh) nfq_destroy_queue(qh); + if (h) nfq_close(h); + return 1; +} + +#elif defined(BSD) + +static int dvt_main() +{ + uint8_t buf[16384] __attribute__((aligned)); + struct sockaddr_storage sa_from; + int fd[2] = {-1,-1}; // 4,6 + int i,r,res=1,fdct=1,fdmax; + unsigned int id=0; + socklen_t socklen; + ssize_t rd,wr; + packet_process_result ppr; + fd_set fdset; + + { + struct sockaddr_in bp4; + bp4.sin_family = AF_INET; + bp4.sin_port = htons(params.port); + bp4.sin_addr.s_addr = INADDR_ANY; + + printf("creating divert4 socket\n"); + fd[0] = socket(AF_INET, SOCK_RAW, IPPROTO_DIVERT); + if (fd[0] == -1) { + perror("socket (DIVERT4): "); + goto exiterr; + } + printf("binding divert4 socket\n"); + if (bind(fd[0], (struct sockaddr*)&bp4, sizeof(bp4)) < 0) + { + perror("bind (DIVERT4): "); + goto exiterr; + } + if (!set_socket_buffers(fd[0],Q_RCVBUF,Q_SNDBUF)) + goto exiterr; + } + + +#ifdef __OpenBSD__ + { + // in OpenBSD must use separate divert sockets for ipv4 and ipv6 + struct sockaddr_in6 bp6; + memset(&bp6,0,sizeof(bp6)); + bp6.sin6_family = AF_INET6; + bp6.sin6_port = htons(params.port); + + printf("creating divert6 socket\n"); + fd[1] = socket(AF_INET6, SOCK_RAW, IPPROTO_DIVERT); + if (fd[1] == -1) { + perror("socket (DIVERT6): "); + goto exiterr; + } + printf("binding divert6 socket\n"); + if (bind(fd[1], (struct sockaddr*)&bp6, sizeof(bp6)) < 0) + { + perror("bind (DIVERT6): "); + goto exiterr; + } + fdct++; + if (!set_socket_buffers(fd[1],Q_RCVBUF,Q_SNDBUF)) + goto exiterr; + } +#endif + fdmax = (fd[0]>fd[1] ? fd[0] : fd[1]) + 1; + + printf("initializing raw sockets with sockarg 0x%08X (%u)\n", params.desync_fwmark, params.desync_fwmark); + if (!rawsend_preinit(params.desync_fwmark)) + goto exiterr; + + if (params.droproot && !droproot(params.uid, params.gid)) + goto exiterr; + print_id(); + + signal(SIGHUP, onhup); + + desync_init(); + + for(;;) + { + FD_ZERO(&fdset); + for(i=0;i0) + { + DLOG("packet: id=%u len=%zd\n", id, rd) + ppr = processPacketData(buf, rd); + switch (ppr) + { + case pass: + case modify: + DLOG(ppr==pass ? "packet: id=%u reinject unmodified\n" : "packet: id=%u reinject modified\n", id); + wr = sendto(fd[i], buf, rd, 0, (struct sockaddr*)&sa_from, socklen); + if (wr<0) + perror("reinject sendto: "); + else if (wr!=rd) + fprintf(stderr,"reinject sendto: not all data was reinjected. received %zd, sent %zd\n", rd, wr); + break; + default: + DLOG("packet: id=%u drop\n", id); + } + id++; + } + else + { + DLOG("unexpected zero size recvfrom\n") + } + } + } + } + + res=0; +exiterr: + if (fd[0]!=-1) close(fd[0]); + if (fd[1]!=-1) close(fd[1]); + return res; +} + +#endif + + + +static void exithelp() +{ + printf( + " --debug=0|1\n" +#ifdef __linux__ + " --qnum=\n" +#elif defined(BSD) + " --port=\t\t\t\t; divert port\n" +#endif + " --daemon\t\t\t\t; daemonize\n" + " --pidfile=\t\t\t; write pid to file\n" + " --user=\t\t\t; drop root privs\n" + " --uid=uid[:gid]\t\t\t; drop root privs\n" + " --wsize=\t\t\t; set window size. 0 = do not modify. OBSOLETE !\n" + " --hostcase\t\t\t\t; change Host: => host:\n" + " --hostspell\t\t\t\t; exact spelling of \"Host\" header. must be 4 chars. default is \"host\"\n" + " --hostnospace\t\t\t\t; remove space after Host: and add it to User-Agent: to preserve packet size\n" + " --domcase\t\t\t\t; mix domain case : Host: TeSt.cOm\n" + " --dpi-desync=[,]\t\t; try to desync dpi state. modes : fake rst rstack disorder disorder2 split split2\n" +#ifdef __linux__ + " --dpi-desync-fwmark=\t; override fwmark for desync packet. default = 0x%08X (%u)\n" +#elif defined(SO_USER_COOKIE) + " --dpi-desync-sockarg=\t; override sockarg (SO_USER_COOKIE) for desync packet. default = 0x%08X (%u)\n" +#endif + " --dpi-desync-ttl=\t\t\t; set ttl for desync packet\n" + " --dpi-desync-fooling=[,]\t; can use multiple comma separated values. modes : none md5sig ts badseq badsum\n" +#ifdef __linux__ + " --dpi-desync-retrans=0|1\t\t; 0(default)=reinject original data packet after fake 1=drop original data packet to force its retransmission\n" +#endif + " --dpi-desync-repeats=\t\t; send every desync packet N times\n" + " --dpi-desync-skip-nosni=0|1\t\t; 1(default)=do not act on ClientHello without SNI (ESNI ?)\n" + " --dpi-desync-split-pos=<1..%u>\t; (for disorder only) split TCP packet at specified position\n" + " --dpi-desync-any-protocol=0|1\t\t; 0(default)=desync only http and tls 1=desync any nonempty data packet\n" + " --dpi-desync-fake-http=\t; file containing fake http request\n" + " --dpi-desync-fake-tls=\t; file containing fake TLS ClientHello (for https)\n" + " --hostlist=\t\t\t; apply dpi desync only to the listed hosts (one host per line, subdomains auto apply)\n", +#if defined(__linux__) || defined(SO_USER_COOKIE) + DPI_DESYNC_FWMARK_DEFAULT,DPI_DESYNC_FWMARK_DEFAULT, +#endif + DPI_DESYNC_MAX_FAKE_LEN + ); + exit(1); +} + +static void cleanup_params() +{ + if (params.hostlist) + { + StrPoolDestroy(¶ms.hostlist); + params.hostlist = NULL; + } +} +static void exithelp_clean() +{ + cleanup_params(); + exithelp(); +} +static void exit_clean(int code) +{ + cleanup_params(); + exit(code); +} + +int main(int argc, char **argv) +{ + int result, v; + int option_index = 0; + bool daemon = false; + char pidfile[256]; + + srandom(time(NULL)); + + memset(¶ms, 0, sizeof(params)); + memcpy(params.hostspell, "host", 4); // default hostspell + *pidfile = 0; + + params.desync_fwmark = DPI_DESYNC_FWMARK_DEFAULT; + params.desync_skip_nosni = true; + params.desync_split_pos = 3; + params.desync_repeats = 1; + params.fake_tls_size = sizeof(fake_tls_clienthello_default); + memcpy(params.fake_tls,fake_tls_clienthello_default,params.fake_tls_size); + params.fake_http_size = strlen(fake_http_request_default); + memcpy(params.fake_http,fake_http_request_default,params.fake_http_size); + if (can_drop_root()) // are we root ? + { + params.uid = params.gid = 0x7FFFFFFF; // default uid:gid + params.droproot = true; + } + + const struct option long_options[] = { + {"debug",optional_argument,0,0}, // optidx=0 +#ifdef __linux__ + {"qnum",required_argument,0,0}, // optidx=1 +#elif defined(BSD) + {"port",required_argument,0,0}, // optidx=1 +#else + {"disabled_argument_1",no_argument,0,0},// optidx=1 +#endif + {"daemon",no_argument,0,0}, // optidx=2 + {"pidfile",required_argument,0,0}, // optidx=3 + {"user",required_argument,0,0 }, // optidx=4 + {"uid",required_argument,0,0 }, // optidx=5 + {"wsize",required_argument,0,0}, // optidx=6 + {"hostcase",no_argument,0,0}, // optidx=7 + {"hostspell",required_argument,0,0}, // optidx=8 + {"hostnospace",no_argument,0,0}, // optidx=9 + {"domcase",no_argument,0,0 }, // optidx=10 + {"dpi-desync",required_argument,0,0}, // optidx=11 +#ifdef __linux__ + {"dpi-desync-fwmark",required_argument,0,0}, // optidx=12 +#elif defined(SO_USER_COOKIE) + {"dpi-desync-sockarg",required_argument,0,0}, // optidx=12 +#else + {"disabled_argument_2",no_argument,0,0}, // optidx=12 +#endif + {"dpi-desync-ttl",required_argument,0,0}, // optidx=13 + {"dpi-desync-fooling",required_argument,0,0}, // optidx=14 + {"dpi-desync-retrans",optional_argument,0,0}, // optidx=15 + {"dpi-desync-repeats",required_argument,0,0}, // optidx=16 + {"dpi-desync-skip-nosni",optional_argument,0,0},// optidx=17 + {"dpi-desync-split-pos",required_argument,0,0},// optidx=18 + {"dpi-desync-any-protocol",optional_argument,0,0},// optidx=19 + {"dpi-desync-fake-http",required_argument,0,0},// optidx=20 + {"dpi-desync-fake-tls",required_argument,0,0},// optidx=21 + {"hostlist",required_argument,0,0}, // optidx=22 + {NULL,0,NULL,0} + }; + if (argc < 2) exithelp(); + while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) + { + if (v) exithelp(); + switch (option_index) + { + case 0: /* debug */ + params.debug = !optarg || atoi(optarg); + break; + case 1: /* qnum or port */ +#ifdef __linux__ + params.qnum = atoi(optarg); + if (params.qnum < 0 || params.qnum>65535) + { + fprintf(stderr, "bad qnum\n"); + exit_clean(1); + } +#elif defined(BSD) + { + int i = atoi(optarg); + if (i <= 0 || i > 65535) + { + fprintf(stderr, "bad port number\n"); + exit_clean(1); + } + params.port = (uint16_t)i; + } +#endif + break; + case 2: /* daemon */ + daemon = true; + break; + case 3: /* pidfile */ + strncpy(pidfile, optarg, sizeof(pidfile)); + pidfile[sizeof(pidfile) - 1] = '\0'; + break; + case 4: /* user */ + { + struct passwd *pwd = getpwnam(optarg); + if (!pwd) + { + fprintf(stderr, "non-existent username supplied\n"); + exit_clean(1); + } + params.uid = pwd->pw_uid; + params.gid = pwd->pw_gid; + params.droproot = true; + break; + } + case 5: /* uid */ + params.gid = 0x7FFFFFFF; // default gid. drop gid=0 + params.droproot = true; + if (!sscanf(optarg, "%u:%u", ¶ms.uid, ¶ms.gid)) + { + fprintf(stderr, "--uid should be : uid[:gid]\n"); + exit_clean(1); + } + break; + case 6: /* wsize */ + params.wsize = atoi(optarg); + if (params.wsize < 0 || params.wsize>65535) + { + fprintf(stderr, "bad wsize\n"); + exit_clean(1); + } + break; + case 7: /* hostcase */ + params.hostcase = true; + break; + case 8: /* hostspell */ + if (strlen(optarg) != 4) + { + fprintf(stderr, "hostspell must be exactly 4 chars long\n"); + exit_clean(1); + } + params.hostcase = true; + memcpy(params.hostspell, optarg, 4); + break; + case 9: /* hostnospace */ + params.hostnospace = true; + break; + case 10: /* domcase */ + params.domcase = true; + break; + case 11: /* dpi-desync */ + { + char *mode2; + mode2 = optarg ? strchr(optarg,',') : NULL; + if (mode2) *mode2++=0; + + params.desync_mode = desync_mode_from_string(optarg); + params.desync_mode2 = desync_mode_from_string(mode2); + if (params.desync_mode==DESYNC_NONE || params.desync_mode==DESYNC_INVALID || params.desync_mode2==DESYNC_INVALID) + { + fprintf(stderr, "invalid dpi-desync mode\n"); + exit_clean(1); + } + if (params.desync_mode2 && !(desync_valid_first_stage(params.desync_mode) && desync_valid_second_stage(params.desync_mode2))) + { + fprintf(stderr, "invalid desync combo : %s+%s\n", optarg,mode2); + exit_clean(1); + } + } + break; + case 12: /* dpi-desync-fwmark/dpi-desync-sockarg */ +#if defined(__linux__) || defined(SO_USER_COOKIE) + params.desync_fwmark = 0; + if (!sscanf(optarg, "0x%X", ¶ms.desync_fwmark)) sscanf(optarg, "%u", ¶ms.desync_fwmark); + if (!params.desync_fwmark) + { + fprintf(stderr, "fwmark/sockarg should be decimal or 0xHEX and should not be zero\n"); + exit_clean(1); + } +#else + fprintf(stderr, "fmwark/sockarg not supported in this OS\n"); + exit_clean(1); +#endif + break; + case 13: /* dpi-desync-ttl */ + params.desync_ttl = (uint8_t)atoi(optarg); + break; + case 14: /* dpi-desync-fooling */ + { + char *e,*p = optarg; + while (p) + { + e = strchr(p,','); + if (e) *e++=0; + if (!strcmp(p,"md5sig")) + params.desync_tcp_fooling_mode |= TCP_FOOL_MD5SIG; + else if (!strcmp(p,"ts")) + params.desync_tcp_fooling_mode |= TCP_FOOL_TS; + else if (!strcmp(p,"badsum")) + { + #ifdef __OpenBSD__ + printf("\nWARNING !!! OpenBSD may forcibly recompute tcp checksums !!! In this case badsum fooling will not work.\nYou should check tcp checksum correctness in tcpdump manually before using badsum.\n\n"); + #endif + params.desync_tcp_fooling_mode |= TCP_FOOL_BADSUM; + } + else if (!strcmp(p,"badseq")) + params.desync_tcp_fooling_mode |= TCP_FOOL_BADSEQ; + else if (strcmp(p,"none")) + { + fprintf(stderr, "dpi-desync-fooling allowed values : none,md5sig,ts,badseq,badsum\n"); + exit_clean(1); + } + p = e; + } + } + break; + case 15: /* dpi-desync-retrans */ +#ifdef __linux__ + params.desync_retrans = !optarg || atoi(optarg); +#else + fprintf(stderr, "dpi-desync-retrans is only supported in linux\n"); + exit_clean(1); +#endif + break; + case 16: /* dpi-desync-repeats */ + params.desync_repeats = atoi(optarg); + if (params.desync_repeats<=0 || params.desync_repeats>20) + { + fprintf(stderr, "dpi-desync-repeats must be within 1..20\n"); + exit_clean(1); + } + break; + case 17: /* dpi-desync-skip-nosni */ + params.desync_skip_nosni = !optarg || atoi(optarg); + break; + case 18: /* dpi-desync-split-pos */ + params.desync_split_pos = atoi(optarg); + if (params.desync_split_pos<1 || params.desync_split_pos>DPI_DESYNC_MAX_FAKE_LEN) + { + fprintf(stderr, "dpi-desync-split-pos must be within 1..%u range\n",DPI_DESYNC_MAX_FAKE_LEN); + exit_clean(1); + } + break; + case 19: /* dpi-desync-any-protocol */ + params.desync_any_proto = !optarg || atoi(optarg); + break; + case 20: /* dpi-desync-fake-http */ + params.fake_http_size = sizeof(params.fake_http); + if (!load_file_nonempty(optarg,params.fake_http,¶ms.fake_http_size)) + { + fprintf(stderr, "could not read %s\n",optarg); + exit_clean(1); + } + break; + case 21: /* dpi-desync-fake-tls */ + params.fake_tls_size = sizeof(params.fake_tls); + if (!load_file_nonempty(optarg,params.fake_tls,¶ms.fake_tls_size)) + { + fprintf(stderr, "could not read %s\n",optarg); + exit_clean(1); + } + break; + case 22: /* hostlist */ + if (!LoadHostList(¶ms.hostlist, optarg)) + exit_clean(1); + strncpy(params.hostfile,optarg,sizeof(params.hostfile)); + params.hostfile[sizeof(params.hostfile)-1]='\0'; + break; + } + } +#ifdef BSD + if (!params.port) + { + fprintf(stderr, "Need port number\n"); + exit_clean(1); + } +#endif + + if (daemon) daemonize(); + + if (*pidfile && !writepid(pidfile)) + { + fprintf(stderr, "could not write pidfile\n"); + goto exiterr; + } + +#ifdef __linux__ + result = nfq_main(); +#elif defined(BSD) + result = dvt_main(); +#else + #error unsupported OS +#endif +ex: + rawsend_cleanup(); + cleanup_params(); + return result; +exiterr: + result = 1; + goto ex; +} diff --git a/nfq/nfqws.h b/nfq/nfqws.h new file mode 100644 index 0000000..216bb9e --- /dev/null +++ b/nfq/nfqws.h @@ -0,0 +1,6 @@ +#pragma once + +typedef enum +{ + pass = 0, modify, drop +} packet_process_result; diff --git a/nfq/params.h b/nfq/params.h new file mode 100644 index 0000000..688c5ac --- /dev/null +++ b/nfq/params.h @@ -0,0 +1,54 @@ +#pragma once + +#include "params.h" +#include "strpool.h" +#include "desync.h" + +#include +#include +#include +#include +#include + +#if defined(__OpenBSD__) || defined (__APPLE__) +// divert-packet also diverts return traffic. sockets will experience high load +#define Q_RCVBUF (256*1024) // in bytes +#define Q_SNDBUF (256*1024) // in bytes +#define RAW_SNDBUF (64*1024) // in bytes +#else +#define Q_RCVBUF (128*1024) // in bytes +#define Q_SNDBUF (64*1024) // in bytes +#define RAW_SNDBUF (64*1024) // in bytes +#endif + +#define Q_MAXLEN 1024 // in packets + +struct params_s +{ + bool debug; + int wsize; +#ifdef __linux__ + int qnum; +#elif defined(BSD) + uint16_t port; // divert port +#endif + bool hostcase, hostnospace, domcase; + char hostspell[4]; + enum dpi_desync_mode desync_mode,desync_mode2; + bool desync_retrans,desync_skip_nosni,desync_any_proto; + int desync_repeats,desync_split_pos; + uint8_t desync_ttl; + uint8_t desync_tcp_fooling_mode; + uint32_t desync_fwmark; // unused in BSD + char hostfile[256]; + strpool *hostlist; + uint8_t fake_http[1460],fake_tls[1460]; + size_t fake_http_size,fake_tls_size; + bool droproot; + uid_t uid; + gid_t gid; +}; + +extern struct params_s params; + +#define DLOG(format, ...) {if (params.debug) printf(format, ##__VA_ARGS__);} diff --git a/nfq/protocol.c b/nfq/protocol.c new file mode 100644 index 0000000..b5b1404 --- /dev/null +++ b/nfq/protocol.c @@ -0,0 +1,132 @@ +#define _GNU_SOURCE + +#include "protocol.h" +#include "helpers.h" +#include +#include +#include +#include + +const char *http_methods[] = { "GET /","POST /","HEAD /","OPTIONS /","PUT /","DELETE /","CONNECT /","TRACE /",NULL }; +bool IsHttp(const uint8_t *data, size_t len) +{ + const char **method; + size_t method_len; + for (method = http_methods; *method; method++) + { + method_len = strlen(*method); + if (method_len <= len && !memcmp(data, *method, method_len)) + return true; + } + return false; +} +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host) +{ + const uint8_t *p, *s, *e=data+len; + + p = (uint8_t*)strncasestr((char*)data, "\nHost:", len); + if (!p) return false; + p+=6; + while(pp) + { + size_t slen = s-p; + if (host && len_host) + { + if (slen>=len_host) slen=len_host-1; + for(size_t i=0;i=6 && data[0]==0x16 && data[1]==0x03 && data[2]==0x01 && data[5]==0x01 && (ntohs(*(uint16_t*)(data+3))+5)<=len; +} +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext) +{ + // +0 + // u8 ContentType: Handshake + // u16 Version: TLS1.0 + // u16 Length + // +5 + // u8 HandshakeType: ClientHello + // u24 Length + // u16 Version + // c[32] random + // u8 SessionIDLength + // + // u16 CipherSuitesLength + // + // u8 CompressionMethodsLength + // + // u16 ExtensionsLength + + size_t l,ll; + + l = 1+2+2+1+3+2+32; + // SessionIDLength + if (len<(l+1)) return false; + ll = data[6]<<16 | data[7]<<8 | data[8]; // HandshakeProtocol length + if (len<(ll+9)) return false; + l += data[l]+1; + // CipherSuitesLength + if (len<(l+2)) return false; + l += ntohs(*(uint16_t*)(data+l))+2; + // CompressionMethodsLength + if (len<(l+1)) return false; + l += data[l]+1; + // ExtensionsLength + if (len<(l+2)) return false; + + data+=l; len-=l; + l=ntohs(*(uint16_t*)data); + data+=2; len-=2; + if (l=4) + { + uint16_t etype=*(uint16_t*)data; + size_t elen=ntohs(*(uint16_t*)(data+2)); + data+=4; l-=4; + if (l=len_host) slen=len_host-1; + for(size_t i=0;i +#include +#include + +bool IsHttp(const uint8_t *data, size_t len); +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); +bool IsTLSClientHello(const uint8_t *data, size_t len); +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext); +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); diff --git a/nfq/sec.c b/nfq/sec.c new file mode 100644 index 0000000..6733b92 --- /dev/null +++ b/nfq/sec.c @@ -0,0 +1,171 @@ +#define _GNU_SOURCE + +#include +#include +#include "sec.h" +#include +#include +#include + +#ifdef __linux__ +#include + +bool checkpcap(uint64_t caps) +{ + if (!caps) return true; // no special caps reqd + + struct __user_cap_header_struct ch = {_LINUX_CAPABILITY_VERSION_3, getpid()}; + struct __user_cap_data_struct cd[2]; + uint32_t c0 = (uint32_t)caps; + uint32_t c1 = (uint32_t)(caps>>32); + + return !capget(&ch,cd) && (cd[0].effective & c0)==c0 && (cd[1].effective & c1)==c1; +} +bool setpcap(uint64_t caps) +{ + struct __user_cap_header_struct ch = {_LINUX_CAPABILITY_VERSION_3, getpid()}; + struct __user_cap_data_struct cd[2]; + + cd[0].effective = cd[0].permitted = (uint32_t)caps; + cd[0].inheritable = 0; + cd[1].effective = cd[1].permitted = (uint32_t)(caps>>32); + cd[1].inheritable = 0; + + return !capset(&ch,cd); +} +int getmaxcap() +{ + int maxcap = CAP_LAST_CAP; + FILE *F = fopen("/proc/sys/kernel/cap_last_cap", "r"); + if (F) + { + int n = fscanf(F, "%d", &maxcap); + fclose(F); + } + return maxcap; + +} +bool dropcaps() +{ + uint64_t caps = (1< +#include + +#ifdef __linux__ + +#include + +bool checkpcap(uint64_t caps); +bool setpcap(uint64_t caps); +int getmaxcap(); +bool dropcaps(); +#endif + +bool can_drop_root(); +bool droproot(uid_t uid, gid_t gid); +void print_id(); +void daemonize(); +bool writepid(const char *filename); diff --git a/nfq/strpool.c b/nfq/strpool.c new file mode 100644 index 0000000..6649763 --- /dev/null +++ b/nfq/strpool.c @@ -0,0 +1,76 @@ +#define _GNU_SOURCE +#include "strpool.h" +#include +#include + +#undef uthash_nonfatal_oom +#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) + +static bool oom = false; +static void ut_oom_recover(strpool *elem) +{ + oom = true; +} + +// for zero terminated strings +bool StrPoolAddStr(strpool **pp, const char *s) +{ + strpool *elem; + if (!(elem = (strpool*)malloc(sizeof(strpool)))) + return false; + if (!(elem->str = strdup(s))) + { + free(elem); + return false; + } + oom = false; + HASH_ADD_KEYPTR(hh, *pp, elem->str, strlen(elem->str), elem); + if (oom) + { + free(elem->str); + free(elem); + return false; + } + return true; +} +// for not zero terminated strings +bool StrPoolAddStrLen(strpool **pp, const char *s, size_t slen) +{ + strpool *elem; + if (!(elem = (strpool*)malloc(sizeof(strpool)))) + return false; + if (!(elem->str = malloc(slen + 1))) + { + free(elem); + return false; + } + memcpy(elem->str, s, slen); + elem->str[slen] = 0; + oom = false; + HASH_ADD_KEYPTR(hh, *pp, elem->str, strlen(elem->str), elem); + if (oom) + { + free(elem->str); + free(elem); + return false; + } + return true; +} + +bool StrPoolCheckStr(strpool *p, const char *s) +{ + strpool *elem; + HASH_FIND_STR(p, s, elem); + return elem != NULL; +} + +void StrPoolDestroy(strpool **p) +{ + strpool *elem, *tmp; + HASH_ITER(hh, *p, elem, tmp) { + free(elem->str); + HASH_DEL(*p, elem); + free(elem); + } + *p = NULL; +} diff --git a/nfq/strpool.h b/nfq/strpool.h new file mode 100644 index 0000000..5932ba3 --- /dev/null +++ b/nfq/strpool.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +//#define HASH_BLOOM 20 +#define HASH_NONFATAL_OOM 1 +#define HASH_FUNCTION HASH_BER +#include "uthash.h" + +typedef struct strpool { + char *str; /* key */ + UT_hash_handle hh; /* makes this structure hashable */ +} strpool; + +void StrPoolDestroy(strpool **p); +bool StrPoolAddStr(strpool **pp,const char *s); +bool StrPoolAddStrLen(strpool **pp,const char *s,size_t slen); +bool StrPoolCheckStr(strpool *p,const char *s); diff --git a/nfq/uthash.h b/nfq/uthash.h new file mode 100644 index 0000000..f34c1f9 --- /dev/null +++ b/nfq/uthash.h @@ -0,0 +1,1217 @@ +/* +Copyright (c) 2003-2018, Troy D. Hanson http://troydhanson.github.com/uthash/ +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef UTHASH_H +#define UTHASH_H + +#define UTHASH_VERSION 2.0.2 + +#include /* memcmp, memset, strlen */ +#include /* ptrdiff_t */ +#include /* exit */ + +/* These macros use decltype or the earlier __typeof GNU extension. + As decltype is only available in newer compilers (VS2010 or gcc 4.3+ + when compiling c++ source) this code uses whatever method is needed + or, for VS2008 where neither is available, uses casting workarounds. */ +#if !defined(DECLTYPE) && !defined(NO_DECLTYPE) +#if defined(_MSC_VER) /* MS compiler */ +#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ +#define DECLTYPE(x) (decltype(x)) +#else /* VS2008 or older (or VS2010 in C mode) */ +#define NO_DECLTYPE +#endif +#elif defined(__BORLANDC__) || defined(__ICCARM__) || defined(__LCC__) || defined(__WATCOMC__) +#define NO_DECLTYPE +#else /* GNU, Sun and other compilers */ +#define DECLTYPE(x) (__typeof(x)) +#endif +#endif + +#ifdef NO_DECLTYPE +#define DECLTYPE(x) +#define DECLTYPE_ASSIGN(dst,src) \ +do { \ + char **_da_dst = (char**)(&(dst)); \ + *_da_dst = (char*)(src); \ +} while (0) +#else +#define DECLTYPE_ASSIGN(dst,src) \ +do { \ + (dst) = DECLTYPE(dst)(src); \ +} while (0) +#endif + +/* a number of the hash function use uint32_t which isn't defined on Pre VS2010 */ +#if defined(_WIN32) +#if defined(_MSC_VER) && _MSC_VER >= 1600 +#include +#elif defined(__WATCOMC__) || defined(__MINGW32__) || defined(__CYGWIN__) +#include +#else +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#endif +#elif defined(__GNUC__) && !defined(__VXWORKS__) +#include +#else +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#endif + +#ifndef uthash_malloc +#define uthash_malloc(sz) malloc(sz) /* malloc fcn */ +#endif +#ifndef uthash_free +#define uthash_free(ptr,sz) free(ptr) /* free fcn */ +#endif +#ifndef uthash_bzero +#define uthash_bzero(a,n) memset(a,'\0',n) +#endif +#ifndef uthash_memcmp +#define uthash_memcmp(a,b,n) memcmp(a,b,n) +#endif +#ifndef uthash_strlen +#define uthash_strlen(s) strlen(s) +#endif + +#ifndef uthash_noexpand_fyi +#define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */ +#endif +#ifndef uthash_expand_fyi +#define uthash_expand_fyi(tbl) /* can be defined to log expands */ +#endif + +#ifndef HASH_NONFATAL_OOM +#define HASH_NONFATAL_OOM 0 +#endif + +#if HASH_NONFATAL_OOM +/* malloc failures can be recovered from */ + +#ifndef uthash_nonfatal_oom +#define uthash_nonfatal_oom(obj) do {} while (0) /* non-fatal OOM error */ +#endif + +#define HASH_RECORD_OOM(oomed) do { (oomed) = 1; } while (0) +#define IF_HASH_NONFATAL_OOM(x) x + +#else +/* malloc failures result in lost memory, hash tables are unusable */ + +#ifndef uthash_fatal +#define uthash_fatal(msg) exit(-1) /* fatal OOM error */ +#endif + +#define HASH_RECORD_OOM(oomed) uthash_fatal("out of memory") +#define IF_HASH_NONFATAL_OOM(x) + +#endif + +/* initial number of buckets */ +#define HASH_INITIAL_NUM_BUCKETS 32U /* initial number of buckets */ +#define HASH_INITIAL_NUM_BUCKETS_LOG2 5U /* lg2 of initial number of buckets */ +#define HASH_BKT_CAPACITY_THRESH 10U /* expand when bucket count reaches */ + +/* calculate the element whose hash handle address is hhp */ +#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho))) +/* calculate the hash handle from element address elp */ +#define HH_FROM_ELMT(tbl,elp) ((UT_hash_handle *)(((char*)(elp)) + ((tbl)->hho))) + +#define HASH_ROLLBACK_BKT(hh, head, itemptrhh) \ +do { \ + struct UT_hash_handle *_hd_hh_item = (itemptrhh); \ + unsigned _hd_bkt; \ + HASH_TO_BKT(_hd_hh_item->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ + (head)->hh.tbl->buckets[_hd_bkt].count++; \ + _hd_hh_item->hh_next = NULL; \ + _hd_hh_item->hh_prev = NULL; \ +} while (0) + +#define HASH_VALUE(keyptr,keylen,hashv) \ +do { \ + HASH_FCN(keyptr, keylen, hashv); \ +} while (0) + +#define HASH_FIND_BYHASHVALUE(hh,head,keyptr,keylen,hashval,out) \ +do { \ + (out) = NULL; \ + if (head) { \ + unsigned _hf_bkt; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _hf_bkt); \ + if (HASH_BLOOM_TEST((head)->hh.tbl, hashval) != 0) { \ + HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], keyptr, keylen, hashval, out); \ + } \ + } \ +} while (0) + +#define HASH_FIND(hh,head,keyptr,keylen,out) \ +do { \ + unsigned _hf_hashv; \ + HASH_VALUE(keyptr, keylen, _hf_hashv); \ + HASH_FIND_BYHASHVALUE(hh, head, keyptr, keylen, _hf_hashv, out); \ +} while (0) + +#ifdef HASH_BLOOM +#define HASH_BLOOM_BITLEN (1UL << HASH_BLOOM) +#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8UL) + (((HASH_BLOOM_BITLEN%8UL)!=0UL) ? 1UL : 0UL) +#define HASH_BLOOM_MAKE(tbl,oomed) \ +do { \ + (tbl)->bloom_nbits = HASH_BLOOM; \ + (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \ + if (!(tbl)->bloom_bv) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ + (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \ + } \ +} while (0) + +#define HASH_BLOOM_FREE(tbl) \ +do { \ + uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ +} while (0) + +#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8U] |= (1U << ((idx)%8U))) +#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8U] & (1U << ((idx)%8U))) + +#define HASH_BLOOM_ADD(tbl,hashv) \ + HASH_BLOOM_BITSET((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) + +#define HASH_BLOOM_TEST(tbl,hashv) \ + HASH_BLOOM_BITTEST((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) + +#else +#define HASH_BLOOM_MAKE(tbl,oomed) +#define HASH_BLOOM_FREE(tbl) +#define HASH_BLOOM_ADD(tbl,hashv) +#define HASH_BLOOM_TEST(tbl,hashv) (1) +#define HASH_BLOOM_BYTELEN 0U +#endif + +#define HASH_MAKE_TABLE(hh,head,oomed) \ +do { \ + (head)->hh.tbl = (UT_hash_table*)uthash_malloc(sizeof(UT_hash_table)); \ + if (!(head)->hh.tbl) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head)->hh.tbl->tail = &((head)->hh); \ + (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \ + (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \ + (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \ + (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \ + HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ + (head)->hh.tbl->signature = HASH_SIGNATURE; \ + if (!(head)->hh.tbl->buckets) { \ + HASH_RECORD_OOM(oomed); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + } else { \ + uthash_bzero((head)->hh.tbl->buckets, \ + HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ + HASH_BLOOM_MAKE((head)->hh.tbl, oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (oomed) { \ + uthash_free((head)->hh.tbl->buckets, \ + HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + } \ + ) \ + } \ + } \ +} while (0) + +#define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \ +do { \ + (replaced) = NULL; \ + HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ + if (replaced) { \ + HASH_DELETE(hh, head, replaced); \ + } \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \ +} while (0) + +#define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \ +do { \ + (replaced) = NULL; \ + HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ + if (replaced) { \ + HASH_DELETE(hh, head, replaced); \ + } \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \ +} while (0) + +#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \ +do { \ + unsigned _hr_hashv; \ + HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ + HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \ +} while (0) + +#define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \ +do { \ + unsigned _hr_hashv; \ + HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ + HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \ +} while (0) + +#define HASH_APPEND_LIST(hh, head, add) \ +do { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \ + (head)->hh.tbl->tail->next = (add); \ + (head)->hh.tbl->tail = &((add)->hh); \ +} while (0) + +#define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ +do { \ + do { \ + if (cmpfcn(DECLTYPE(head)(_hs_iter), add) > 0) { \ + break; \ + } \ + } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ +} while (0) + +#ifdef NO_DECLTYPE +#undef HASH_AKBI_INNER_LOOP +#define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ +do { \ + char *_hs_saved_head = (char*)(head); \ + do { \ + DECLTYPE_ASSIGN(head, _hs_iter); \ + if (cmpfcn(head, add) > 0) { \ + DECLTYPE_ASSIGN(head, _hs_saved_head); \ + break; \ + } \ + DECLTYPE_ASSIGN(head, _hs_saved_head); \ + } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ +} while (0) +#endif + +#if HASH_NONFATAL_OOM + +#define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ +do { \ + if (!(oomed)) { \ + unsigned _ha_bkt; \ + (head)->hh.tbl->num_items++; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ + HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ + if (oomed) { \ + HASH_ROLLBACK_BKT(hh, head, &(add)->hh); \ + HASH_DELETE_HH(hh, head, &(add)->hh); \ + (add)->hh.tbl = NULL; \ + uthash_nonfatal_oom(add); \ + } else { \ + HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ + HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ + } \ + } else { \ + (add)->hh.tbl = NULL; \ + uthash_nonfatal_oom(add); \ + } \ +} while (0) + +#else + +#define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ +do { \ + unsigned _ha_bkt; \ + (head)->hh.tbl->num_items++; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ + HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ + HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ + HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ +} while (0) + +#endif + + +#define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \ +do { \ + IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ + (add)->hh.hashv = (hashval); \ + (add)->hh.key = (char*) (keyptr); \ + (add)->hh.keylen = (unsigned) (keylen_in); \ + if (!(head)) { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = NULL; \ + HASH_MAKE_TABLE(hh, add, _ha_oomed); \ + IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ + (head) = (add); \ + IF_HASH_NONFATAL_OOM( } ) \ + } else { \ + void *_hs_iter = (head); \ + (add)->hh.tbl = (head)->hh.tbl; \ + HASH_AKBI_INNER_LOOP(hh, head, add, cmpfcn); \ + if (_hs_iter) { \ + (add)->hh.next = _hs_iter; \ + if (((add)->hh.prev = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev)) { \ + HH_FROM_ELMT((head)->hh.tbl, (add)->hh.prev)->next = (add); \ + } else { \ + (head) = (add); \ + } \ + HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev = (add); \ + } else { \ + HASH_APPEND_LIST(hh, head, add); \ + } \ + } \ + HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ + HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE_INORDER"); \ +} while (0) + +#define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \ +do { \ + unsigned _hs_hashv; \ + HASH_VALUE(keyptr, keylen_in, _hs_hashv); \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \ +} while (0) + +#define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn) + +#define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \ + HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn) + +#define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \ +do { \ + IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ + (add)->hh.hashv = (hashval); \ + (add)->hh.key = (char*) (keyptr); \ + (add)->hh.keylen = (unsigned) (keylen_in); \ + if (!(head)) { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = NULL; \ + HASH_MAKE_TABLE(hh, add, _ha_oomed); \ + IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ + (head) = (add); \ + IF_HASH_NONFATAL_OOM( } ) \ + } else { \ + (add)->hh.tbl = (head)->hh.tbl; \ + HASH_APPEND_LIST(hh, head, add); \ + } \ + HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ + HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE"); \ +} while (0) + +#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \ +do { \ + unsigned _ha_hashv; \ + HASH_VALUE(keyptr, keylen_in, _ha_hashv); \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \ +} while (0) + +#define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add) + +#define HASH_ADD(hh,head,fieldname,keylen_in,add) \ + HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add) + +#define HASH_TO_BKT(hashv,num_bkts,bkt) \ +do { \ + bkt = ((hashv) & ((num_bkts) - 1U)); \ +} while (0) + +/* delete "delptr" from the hash table. + * "the usual" patch-up process for the app-order doubly-linked-list. + * The use of _hd_hh_del below deserves special explanation. + * These used to be expressed using (delptr) but that led to a bug + * if someone used the same symbol for the head and deletee, like + * HASH_DELETE(hh,users,users); + * We want that to work, but by changing the head (users) below + * we were forfeiting our ability to further refer to the deletee (users) + * in the patch-up process. Solution: use scratch space to + * copy the deletee pointer, then the latter references are via that + * scratch pointer rather than through the repointed (users) symbol. + */ +#define HASH_DELETE(hh,head,delptr) \ + HASH_DELETE_HH(hh, head, &(delptr)->hh) + +#define HASH_DELETE_HH(hh,head,delptrhh) \ +do { \ + struct UT_hash_handle *_hd_hh_del = (delptrhh); \ + if ((_hd_hh_del->prev == NULL) && (_hd_hh_del->next == NULL)) { \ + HASH_BLOOM_FREE((head)->hh.tbl); \ + uthash_free((head)->hh.tbl->buckets, \ + (head)->hh.tbl->num_buckets * sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head) = NULL; \ + } else { \ + unsigned _hd_bkt; \ + if (_hd_hh_del == (head)->hh.tbl->tail) { \ + (head)->hh.tbl->tail = HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev); \ + } \ + if (_hd_hh_del->prev != NULL) { \ + HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev)->next = _hd_hh_del->next; \ + } else { \ + DECLTYPE_ASSIGN(head, _hd_hh_del->next); \ + } \ + if (_hd_hh_del->next != NULL) { \ + HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->next)->prev = _hd_hh_del->prev; \ + } \ + HASH_TO_BKT(_hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ + HASH_DEL_IN_BKT((head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \ + (head)->hh.tbl->num_items--; \ + } \ + HASH_FSCK(hh, head, "HASH_DELETE_HH"); \ +} while (0) + +/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */ +#define HASH_FIND_STR(head,findstr,out) \ +do { \ + unsigned _uthash_hfstr_keylen = (unsigned)uthash_strlen(findstr); \ + HASH_FIND(hh, head, findstr, _uthash_hfstr_keylen, out); \ +} while (0) +#define HASH_ADD_STR(head,strfield,add) \ +do { \ + unsigned _uthash_hastr_keylen = (unsigned)uthash_strlen((add)->strfield); \ + HASH_ADD(hh, head, strfield[0], _uthash_hastr_keylen, add); \ +} while (0) +#define HASH_REPLACE_STR(head,strfield,add,replaced) \ +do { \ + unsigned _uthash_hrstr_keylen = (unsigned)uthash_strlen((add)->strfield); \ + HASH_REPLACE(hh, head, strfield[0], _uthash_hrstr_keylen, add, replaced); \ +} while (0) +#define HASH_FIND_INT(head,findint,out) \ + HASH_FIND(hh,head,findint,sizeof(int),out) +#define HASH_ADD_INT(head,intfield,add) \ + HASH_ADD(hh,head,intfield,sizeof(int),add) +#define HASH_REPLACE_INT(head,intfield,add,replaced) \ + HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced) +#define HASH_FIND_PTR(head,findptr,out) \ + HASH_FIND(hh,head,findptr,sizeof(void *),out) +#define HASH_ADD_PTR(head,ptrfield,add) \ + HASH_ADD(hh,head,ptrfield,sizeof(void *),add) +#define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \ + HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced) +#define HASH_DEL(head,delptr) \ + HASH_DELETE(hh,head,delptr) + +/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined. + * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined. + */ +#ifdef HASH_DEBUG +#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0) +#define HASH_FSCK(hh,head,where) \ +do { \ + struct UT_hash_handle *_thh; \ + if (head) { \ + unsigned _bkt_i; \ + unsigned _count = 0; \ + char *_prev; \ + for (_bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; ++_bkt_i) { \ + unsigned _bkt_count = 0; \ + _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \ + _prev = NULL; \ + while (_thh) { \ + if (_prev != (char*)(_thh->hh_prev)) { \ + HASH_OOPS("%s: invalid hh_prev %p, actual %p\n", \ + (where), (void*)_thh->hh_prev, (void*)_prev); \ + } \ + _bkt_count++; \ + _prev = (char*)(_thh); \ + _thh = _thh->hh_next; \ + } \ + _count += _bkt_count; \ + if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \ + HASH_OOPS("%s: invalid bucket count %u, actual %u\n", \ + (where), (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \ + } \ + } \ + if (_count != (head)->hh.tbl->num_items) { \ + HASH_OOPS("%s: invalid hh item count %u, actual %u\n", \ + (where), (head)->hh.tbl->num_items, _count); \ + } \ + _count = 0; \ + _prev = NULL; \ + _thh = &(head)->hh; \ + while (_thh) { \ + _count++; \ + if (_prev != (char*)_thh->prev) { \ + HASH_OOPS("%s: invalid prev %p, actual %p\n", \ + (where), (void*)_thh->prev, (void*)_prev); \ + } \ + _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \ + _thh = (_thh->next ? HH_FROM_ELMT((head)->hh.tbl, _thh->next) : NULL); \ + } \ + if (_count != (head)->hh.tbl->num_items) { \ + HASH_OOPS("%s: invalid app item count %u, actual %u\n", \ + (where), (head)->hh.tbl->num_items, _count); \ + } \ + } \ +} while (0) +#else +#define HASH_FSCK(hh,head,where) +#endif + +/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to + * the descriptor to which this macro is defined for tuning the hash function. + * The app can #include to get the prototype for write(2). */ +#ifdef HASH_EMIT_KEYS +#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \ +do { \ + unsigned _klen = fieldlen; \ + write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \ + write(HASH_EMIT_KEYS, keyptr, (unsigned long)fieldlen); \ +} while (0) +#else +#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) +#endif + +/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */ +#ifdef HASH_FUNCTION +#define HASH_FCN HASH_FUNCTION +#else +#define HASH_FCN HASH_JEN +#endif + +/* The Bernstein hash function, used in Perl prior to v5.6. Note (x<<5+x)=x*33. */ +#define HASH_BER(key,keylen,hashv) \ +do { \ + unsigned _hb_keylen = (unsigned)keylen; \ + const unsigned char *_hb_key = (const unsigned char*)(key); \ + (hashv) = 0; \ + while (_hb_keylen-- != 0U) { \ + (hashv) = (((hashv) << 5) + (hashv)) + *_hb_key++; \ + } \ +} while (0) + + +/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at + * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */ +#define HASH_SAX(key,keylen,hashv) \ +do { \ + unsigned _sx_i; \ + const unsigned char *_hs_key = (const unsigned char*)(key); \ + hashv = 0; \ + for (_sx_i=0; _sx_i < keylen; _sx_i++) { \ + hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \ + } \ +} while (0) +/* FNV-1a variation */ +#define HASH_FNV(key,keylen,hashv) \ +do { \ + unsigned _fn_i; \ + const unsigned char *_hf_key = (const unsigned char*)(key); \ + (hashv) = 2166136261U; \ + for (_fn_i=0; _fn_i < keylen; _fn_i++) { \ + hashv = hashv ^ _hf_key[_fn_i]; \ + hashv = hashv * 16777619U; \ + } \ +} while (0) + +#define HASH_OAT(key,keylen,hashv) \ +do { \ + unsigned _ho_i; \ + const unsigned char *_ho_key=(const unsigned char*)(key); \ + hashv = 0; \ + for(_ho_i=0; _ho_i < keylen; _ho_i++) { \ + hashv += _ho_key[_ho_i]; \ + hashv += (hashv << 10); \ + hashv ^= (hashv >> 6); \ + } \ + hashv += (hashv << 3); \ + hashv ^= (hashv >> 11); \ + hashv += (hashv << 15); \ +} while (0) + +#define HASH_JEN_MIX(a,b,c) \ +do { \ + a -= b; a -= c; a ^= ( c >> 13 ); \ + b -= c; b -= a; b ^= ( a << 8 ); \ + c -= a; c -= b; c ^= ( b >> 13 ); \ + a -= b; a -= c; a ^= ( c >> 12 ); \ + b -= c; b -= a; b ^= ( a << 16 ); \ + c -= a; c -= b; c ^= ( b >> 5 ); \ + a -= b; a -= c; a ^= ( c >> 3 ); \ + b -= c; b -= a; b ^= ( a << 10 ); \ + c -= a; c -= b; c ^= ( b >> 15 ); \ +} while (0) + +#define HASH_JEN(key,keylen,hashv) \ +do { \ + unsigned _hj_i,_hj_j,_hj_k; \ + unsigned const char *_hj_key=(unsigned const char*)(key); \ + hashv = 0xfeedbeefu; \ + _hj_i = _hj_j = 0x9e3779b9u; \ + _hj_k = (unsigned)(keylen); \ + while (_hj_k >= 12U) { \ + _hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \ + + ( (unsigned)_hj_key[2] << 16 ) \ + + ( (unsigned)_hj_key[3] << 24 ) ); \ + _hj_j += (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 ) \ + + ( (unsigned)_hj_key[6] << 16 ) \ + + ( (unsigned)_hj_key[7] << 24 ) ); \ + hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 ) \ + + ( (unsigned)_hj_key[10] << 16 ) \ + + ( (unsigned)_hj_key[11] << 24 ) ); \ + \ + HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ + \ + _hj_key += 12; \ + _hj_k -= 12U; \ + } \ + hashv += (unsigned)(keylen); \ + switch ( _hj_k ) { \ + case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); /* FALLTHROUGH */ \ + case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); /* FALLTHROUGH */ \ + case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); /* FALLTHROUGH */ \ + case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); /* FALLTHROUGH */ \ + case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); /* FALLTHROUGH */ \ + case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); /* FALLTHROUGH */ \ + case 5: _hj_j += _hj_key[4]; /* FALLTHROUGH */ \ + case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); /* FALLTHROUGH */ \ + case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); /* FALLTHROUGH */ \ + case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); /* FALLTHROUGH */ \ + case 1: _hj_i += _hj_key[0]; \ + } \ + HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ +} while (0) + +/* The Paul Hsieh hash function */ +#undef get16bits +#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ + || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) +#define get16bits(d) (*((const uint16_t *) (d))) +#endif + +#if !defined (get16bits) +#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \ + +(uint32_t)(((const uint8_t *)(d))[0]) ) +#endif +#define HASH_SFH(key,keylen,hashv) \ +do { \ + unsigned const char *_sfh_key=(unsigned const char*)(key); \ + uint32_t _sfh_tmp, _sfh_len = (uint32_t)keylen; \ + \ + unsigned _sfh_rem = _sfh_len & 3U; \ + _sfh_len >>= 2; \ + hashv = 0xcafebabeu; \ + \ + /* Main loop */ \ + for (;_sfh_len > 0U; _sfh_len--) { \ + hashv += get16bits (_sfh_key); \ + _sfh_tmp = ((uint32_t)(get16bits (_sfh_key+2)) << 11) ^ hashv; \ + hashv = (hashv << 16) ^ _sfh_tmp; \ + _sfh_key += 2U*sizeof (uint16_t); \ + hashv += hashv >> 11; \ + } \ + \ + /* Handle end cases */ \ + switch (_sfh_rem) { \ + case 3: hashv += get16bits (_sfh_key); \ + hashv ^= hashv << 16; \ + hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)]) << 18; \ + hashv += hashv >> 11; \ + break; \ + case 2: hashv += get16bits (_sfh_key); \ + hashv ^= hashv << 11; \ + hashv += hashv >> 17; \ + break; \ + case 1: hashv += *_sfh_key; \ + hashv ^= hashv << 10; \ + hashv += hashv >> 1; \ + } \ + \ + /* Force "avalanching" of final 127 bits */ \ + hashv ^= hashv << 3; \ + hashv += hashv >> 5; \ + hashv ^= hashv << 4; \ + hashv += hashv >> 17; \ + hashv ^= hashv << 25; \ + hashv += hashv >> 6; \ +} while (0) + +#ifdef HASH_USING_NO_STRICT_ALIASING +/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads. + * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error. + * MurmurHash uses the faster approach only on CPU's where we know it's safe. + * + * Note the preprocessor built-in defines can be emitted using: + * + * gcc -m64 -dM -E - < /dev/null (on gcc) + * cc -## a.c (where a.c is a simple test file) (Sun Studio) + */ +#if (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86)) +#define MUR_GETBLOCK(p,i) p[i] +#else /* non intel */ +#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 3UL) == 0UL) +#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 3UL) == 1UL) +#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 3UL) == 2UL) +#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 3UL) == 3UL) +#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL)) +#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__)) +#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24)) +#define MUR_TWO_TWO(p) ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16)) +#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >> 8)) +#else /* assume little endian non-intel */ +#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24)) +#define MUR_TWO_TWO(p) ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16)) +#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) << 8)) +#endif +#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) : \ + (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \ + (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) : \ + MUR_ONE_THREE(p)))) +#endif +#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) +#define MUR_FMIX(_h) \ +do { \ + _h ^= _h >> 16; \ + _h *= 0x85ebca6bu; \ + _h ^= _h >> 13; \ + _h *= 0xc2b2ae35u; \ + _h ^= _h >> 16; \ +} while (0) + +#define HASH_MUR(key,keylen,hashv) \ +do { \ + const uint8_t *_mur_data = (const uint8_t*)(key); \ + const int _mur_nblocks = (int)(keylen) / 4; \ + uint32_t _mur_h1 = 0xf88D5353u; \ + uint32_t _mur_c1 = 0xcc9e2d51u; \ + uint32_t _mur_c2 = 0x1b873593u; \ + uint32_t _mur_k1 = 0; \ + const uint8_t *_mur_tail; \ + const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+(_mur_nblocks*4)); \ + int _mur_i; \ + for (_mur_i = -_mur_nblocks; _mur_i != 0; _mur_i++) { \ + _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i); \ + _mur_k1 *= _mur_c1; \ + _mur_k1 = MUR_ROTL32(_mur_k1,15); \ + _mur_k1 *= _mur_c2; \ + \ + _mur_h1 ^= _mur_k1; \ + _mur_h1 = MUR_ROTL32(_mur_h1,13); \ + _mur_h1 = (_mur_h1*5U) + 0xe6546b64u; \ + } \ + _mur_tail = (const uint8_t*)(_mur_data + (_mur_nblocks*4)); \ + _mur_k1=0; \ + switch ((keylen) & 3U) { \ + case 0: break; \ + case 3: _mur_k1 ^= (uint32_t)_mur_tail[2] << 16; /* FALLTHROUGH */ \ + case 2: _mur_k1 ^= (uint32_t)_mur_tail[1] << 8; /* FALLTHROUGH */ \ + case 1: _mur_k1 ^= (uint32_t)_mur_tail[0]; \ + _mur_k1 *= _mur_c1; \ + _mur_k1 = MUR_ROTL32(_mur_k1,15); \ + _mur_k1 *= _mur_c2; \ + _mur_h1 ^= _mur_k1; \ + } \ + _mur_h1 ^= (uint32_t)(keylen); \ + MUR_FMIX(_mur_h1); \ + hashv = _mur_h1; \ +} while (0) +#endif /* HASH_USING_NO_STRICT_ALIASING */ + +/* iterate over items in a known bucket to find desired item */ +#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,hashval,out) \ +do { \ + if ((head).hh_head != NULL) { \ + DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (head).hh_head)); \ + } else { \ + (out) = NULL; \ + } \ + while ((out) != NULL) { \ + if ((out)->hh.hashv == (hashval) && (out)->hh.keylen == (keylen_in)) { \ + if (uthash_memcmp((out)->hh.key, keyptr, keylen_in) == 0) { \ + break; \ + } \ + } \ + if ((out)->hh.hh_next != NULL) { \ + DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (out)->hh.hh_next)); \ + } else { \ + (out) = NULL; \ + } \ + } \ +} while (0) + +/* add an item to a bucket */ +#define HASH_ADD_TO_BKT(head,hh,addhh,oomed) \ +do { \ + UT_hash_bucket *_ha_head = &(head); \ + _ha_head->count++; \ + (addhh)->hh_next = _ha_head->hh_head; \ + (addhh)->hh_prev = NULL; \ + if (_ha_head->hh_head != NULL) { \ + _ha_head->hh_head->hh_prev = (addhh); \ + } \ + _ha_head->hh_head = (addhh); \ + if ((_ha_head->count >= ((_ha_head->expand_mult + 1U) * HASH_BKT_CAPACITY_THRESH)) \ + && !(addhh)->tbl->noexpand) { \ + HASH_EXPAND_BUCKETS(addhh,(addhh)->tbl, oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (oomed) { \ + HASH_DEL_IN_BKT(head,addhh); \ + } \ + ) \ + } \ +} while (0) + +/* remove an item from a given bucket */ +#define HASH_DEL_IN_BKT(head,delhh) \ +do { \ + UT_hash_bucket *_hd_head = &(head); \ + _hd_head->count--; \ + if (_hd_head->hh_head == (delhh)) { \ + _hd_head->hh_head = (delhh)->hh_next; \ + } \ + if ((delhh)->hh_prev) { \ + (delhh)->hh_prev->hh_next = (delhh)->hh_next; \ + } \ + if ((delhh)->hh_next) { \ + (delhh)->hh_next->hh_prev = (delhh)->hh_prev; \ + } \ +} while (0) + +/* Bucket expansion has the effect of doubling the number of buckets + * and redistributing the items into the new buckets. Ideally the + * items will distribute more or less evenly into the new buckets + * (the extent to which this is true is a measure of the quality of + * the hash function as it applies to the key domain). + * + * With the items distributed into more buckets, the chain length + * (item count) in each bucket is reduced. Thus by expanding buckets + * the hash keeps a bound on the chain length. This bounded chain + * length is the essence of how a hash provides constant time lookup. + * + * The calculation of tbl->ideal_chain_maxlen below deserves some + * explanation. First, keep in mind that we're calculating the ideal + * maximum chain length based on the *new* (doubled) bucket count. + * In fractions this is just n/b (n=number of items,b=new num buckets). + * Since the ideal chain length is an integer, we want to calculate + * ceil(n/b). We don't depend on floating point arithmetic in this + * hash, so to calculate ceil(n/b) with integers we could write + * + * ceil(n/b) = (n/b) + ((n%b)?1:0) + * + * and in fact a previous version of this hash did just that. + * But now we have improved things a bit by recognizing that b is + * always a power of two. We keep its base 2 log handy (call it lb), + * so now we can write this with a bit shift and logical AND: + * + * ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0) + * + */ +#define HASH_EXPAND_BUCKETS(hh,tbl,oomed) \ +do { \ + unsigned _he_bkt; \ + unsigned _he_bkt_i; \ + struct UT_hash_handle *_he_thh, *_he_hh_nxt; \ + UT_hash_bucket *_he_new_buckets, *_he_newbkt; \ + _he_new_buckets = (UT_hash_bucket*)uthash_malloc( \ + 2UL * (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + if (!_he_new_buckets) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero(_he_new_buckets, \ + 2UL * (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + (tbl)->ideal_chain_maxlen = \ + ((tbl)->num_items >> ((tbl)->log2_num_buckets+1U)) + \ + ((((tbl)->num_items & (((tbl)->num_buckets*2U)-1U)) != 0U) ? 1U : 0U); \ + (tbl)->nonideal_items = 0; \ + for (_he_bkt_i = 0; _he_bkt_i < (tbl)->num_buckets; _he_bkt_i++) { \ + _he_thh = (tbl)->buckets[ _he_bkt_i ].hh_head; \ + while (_he_thh != NULL) { \ + _he_hh_nxt = _he_thh->hh_next; \ + HASH_TO_BKT(_he_thh->hashv, (tbl)->num_buckets * 2U, _he_bkt); \ + _he_newbkt = &(_he_new_buckets[_he_bkt]); \ + if (++(_he_newbkt->count) > (tbl)->ideal_chain_maxlen) { \ + (tbl)->nonideal_items++; \ + _he_newbkt->expand_mult = _he_newbkt->count / (tbl)->ideal_chain_maxlen; \ + } \ + _he_thh->hh_prev = NULL; \ + _he_thh->hh_next = _he_newbkt->hh_head; \ + if (_he_newbkt->hh_head != NULL) { \ + _he_newbkt->hh_head->hh_prev = _he_thh; \ + } \ + _he_newbkt->hh_head = _he_thh; \ + _he_thh = _he_hh_nxt; \ + } \ + } \ + uthash_free((tbl)->buckets, (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + (tbl)->num_buckets *= 2U; \ + (tbl)->log2_num_buckets++; \ + (tbl)->buckets = _he_new_buckets; \ + (tbl)->ineff_expands = ((tbl)->nonideal_items > ((tbl)->num_items >> 1)) ? \ + ((tbl)->ineff_expands+1U) : 0U; \ + if ((tbl)->ineff_expands > 1U) { \ + (tbl)->noexpand = 1; \ + uthash_noexpand_fyi(tbl); \ + } \ + uthash_expand_fyi(tbl); \ + } \ +} while (0) + + +/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */ +/* Note that HASH_SORT assumes the hash handle name to be hh. + * HASH_SRT was added to allow the hash handle name to be passed in. */ +#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn) +#define HASH_SRT(hh,head,cmpfcn) \ +do { \ + unsigned _hs_i; \ + unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \ + struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \ + if (head != NULL) { \ + _hs_insize = 1; \ + _hs_looping = 1; \ + _hs_list = &((head)->hh); \ + while (_hs_looping != 0U) { \ + _hs_p = _hs_list; \ + _hs_list = NULL; \ + _hs_tail = NULL; \ + _hs_nmerges = 0; \ + while (_hs_p != NULL) { \ + _hs_nmerges++; \ + _hs_q = _hs_p; \ + _hs_psize = 0; \ + for (_hs_i = 0; _hs_i < _hs_insize; ++_hs_i) { \ + _hs_psize++; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + if (_hs_q == NULL) { \ + break; \ + } \ + } \ + _hs_qsize = _hs_insize; \ + while ((_hs_psize != 0U) || ((_hs_qsize != 0U) && (_hs_q != NULL))) { \ + if (_hs_psize == 0U) { \ + _hs_e = _hs_q; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + _hs_qsize--; \ + } else if ((_hs_qsize == 0U) || (_hs_q == NULL)) { \ + _hs_e = _hs_p; \ + if (_hs_p != NULL) { \ + _hs_p = ((_hs_p->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ + } \ + _hs_psize--; \ + } else if ((cmpfcn( \ + DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_p)), \ + DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_q)) \ + )) <= 0) { \ + _hs_e = _hs_p; \ + if (_hs_p != NULL) { \ + _hs_p = ((_hs_p->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ + } \ + _hs_psize--; \ + } else { \ + _hs_e = _hs_q; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + _hs_qsize--; \ + } \ + if ( _hs_tail != NULL ) { \ + _hs_tail->next = ((_hs_e != NULL) ? \ + ELMT_FROM_HH((head)->hh.tbl, _hs_e) : NULL); \ + } else { \ + _hs_list = _hs_e; \ + } \ + if (_hs_e != NULL) { \ + _hs_e->prev = ((_hs_tail != NULL) ? \ + ELMT_FROM_HH((head)->hh.tbl, _hs_tail) : NULL); \ + } \ + _hs_tail = _hs_e; \ + } \ + _hs_p = _hs_q; \ + } \ + if (_hs_tail != NULL) { \ + _hs_tail->next = NULL; \ + } \ + if (_hs_nmerges <= 1U) { \ + _hs_looping = 0; \ + (head)->hh.tbl->tail = _hs_tail; \ + DECLTYPE_ASSIGN(head, ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \ + } \ + _hs_insize *= 2U; \ + } \ + HASH_FSCK(hh, head, "HASH_SRT"); \ + } \ +} while (0) + +/* This function selects items from one hash into another hash. + * The end result is that the selected items have dual presence + * in both hashes. There is no copy of the items made; rather + * they are added into the new hash through a secondary hash + * hash handle that must be present in the structure. */ +#define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \ +do { \ + unsigned _src_bkt, _dst_bkt; \ + void *_last_elt = NULL, *_elt; \ + UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \ + ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \ + if ((src) != NULL) { \ + for (_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \ + for (_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \ + _src_hh != NULL; \ + _src_hh = _src_hh->hh_next) { \ + _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \ + if (cond(_elt)) { \ + IF_HASH_NONFATAL_OOM( int _hs_oomed = 0; ) \ + _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho); \ + _dst_hh->key = _src_hh->key; \ + _dst_hh->keylen = _src_hh->keylen; \ + _dst_hh->hashv = _src_hh->hashv; \ + _dst_hh->prev = _last_elt; \ + _dst_hh->next = NULL; \ + if (_last_elt_hh != NULL) { \ + _last_elt_hh->next = _elt; \ + } \ + if ((dst) == NULL) { \ + DECLTYPE_ASSIGN(dst, _elt); \ + HASH_MAKE_TABLE(hh_dst, dst, _hs_oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (_hs_oomed) { \ + uthash_nonfatal_oom(_elt); \ + (dst) = NULL; \ + continue; \ + } \ + ) \ + } else { \ + _dst_hh->tbl = (dst)->hh_dst.tbl; \ + } \ + HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \ + HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt], hh_dst, _dst_hh, _hs_oomed); \ + (dst)->hh_dst.tbl->num_items++; \ + IF_HASH_NONFATAL_OOM( \ + if (_hs_oomed) { \ + HASH_ROLLBACK_BKT(hh_dst, dst, _dst_hh); \ + HASH_DELETE_HH(hh_dst, dst, _dst_hh); \ + _dst_hh->tbl = NULL; \ + uthash_nonfatal_oom(_elt); \ + continue; \ + } \ + ) \ + HASH_BLOOM_ADD(_dst_hh->tbl, _dst_hh->hashv); \ + _last_elt = _elt; \ + _last_elt_hh = _dst_hh; \ + } \ + } \ + } \ + } \ + HASH_FSCK(hh_dst, dst, "HASH_SELECT"); \ +} while (0) + +#define HASH_CLEAR(hh,head) \ +do { \ + if ((head) != NULL) { \ + HASH_BLOOM_FREE((head)->hh.tbl); \ + uthash_free((head)->hh.tbl->buckets, \ + (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head) = NULL; \ + } \ +} while (0) + +#define HASH_OVERHEAD(hh,head) \ + (((head) != NULL) ? ( \ + (size_t)(((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \ + ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \ + sizeof(UT_hash_table) + \ + (HASH_BLOOM_BYTELEN))) : 0U) + +#ifdef NO_DECLTYPE +#define HASH_ITER(hh,head,el,tmp) \ +for(((el)=(head)), ((*(char**)(&(tmp)))=(char*)((head!=NULL)?(head)->hh.next:NULL)); \ + (el) != NULL; ((el)=(tmp)), ((*(char**)(&(tmp)))=(char*)((tmp!=NULL)?(tmp)->hh.next:NULL))) +#else +#define HASH_ITER(hh,head,el,tmp) \ +for(((el)=(head)), ((tmp)=DECLTYPE(el)((head!=NULL)?(head)->hh.next:NULL)); \ + (el) != NULL; ((el)=(tmp)), ((tmp)=DECLTYPE(el)((tmp!=NULL)?(tmp)->hh.next:NULL))) +#endif + +/* obtain a count of items in the hash */ +#define HASH_COUNT(head) HASH_CNT(hh,head) +#define HASH_CNT(hh,head) ((head != NULL)?((head)->hh.tbl->num_items):0U) + +typedef struct UT_hash_bucket { + struct UT_hash_handle *hh_head; + unsigned count; + + /* expand_mult is normally set to 0. In this situation, the max chain length + * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If + * the bucket's chain exceeds this length, bucket expansion is triggered). + * However, setting expand_mult to a non-zero value delays bucket expansion + * (that would be triggered by additions to this particular bucket) + * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH. + * (The multiplier is simply expand_mult+1). The whole idea of this + * multiplier is to reduce bucket expansions, since they are expensive, in + * situations where we know that a particular bucket tends to be overused. + * It is better to let its chain length grow to a longer yet-still-bounded + * value, than to do an O(n) bucket expansion too often. + */ + unsigned expand_mult; + +} UT_hash_bucket; + +/* random signature used only to find hash tables in external analysis */ +#define HASH_SIGNATURE 0xa0111fe1u +#define HASH_BLOOM_SIGNATURE 0xb12220f2u + +typedef struct UT_hash_table { + UT_hash_bucket *buckets; + unsigned num_buckets, log2_num_buckets; + unsigned num_items; + struct UT_hash_handle *tail; /* tail hh in app order, for fast append */ + ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */ + + /* in an ideal situation (all buckets used equally), no bucket would have + * more than ceil(#items/#buckets) items. that's the ideal chain length. */ + unsigned ideal_chain_maxlen; + + /* nonideal_items is the number of items in the hash whose chain position + * exceeds the ideal chain maxlen. these items pay the penalty for an uneven + * hash distribution; reaching them in a chain traversal takes >ideal steps */ + unsigned nonideal_items; + + /* ineffective expands occur when a bucket doubling was performed, but + * afterward, more than half the items in the hash had nonideal chain + * positions. If this happens on two consecutive expansions we inhibit any + * further expansion, as it's not helping; this happens when the hash + * function isn't a good fit for the key domain. When expansion is inhibited + * the hash will still work, albeit no longer in constant time. */ + unsigned ineff_expands, noexpand; + + uint32_t signature; /* used only to find hash tables in external analysis */ +#ifdef HASH_BLOOM + uint32_t bloom_sig; /* used only to test bloom exists in external analysis */ + uint8_t *bloom_bv; + uint8_t bloom_nbits; +#endif + +} UT_hash_table; + +typedef struct UT_hash_handle { + struct UT_hash_table *tbl; + void *prev; /* prev element in app order */ + void *next; /* next element in app order */ + struct UT_hash_handle *hh_prev; /* previous hh in bucket order */ + struct UT_hash_handle *hh_next; /* next hh in bucket order */ + void *key; /* ptr to enclosing struct's key */ + unsigned keylen; /* enclosing struct's key len */ + unsigned hashv; /* result of hash-fcn(key) */ +} UT_hash_handle; + +#endif /* UTHASH_H */ diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000..e69de29 diff --git a/tpws/BSDmakefile b/tpws/BSDmakefile new file mode 100644 index 0000000..cc108cb --- /dev/null +++ b/tpws/BSDmakefile @@ -0,0 +1,12 @@ +CC ?= cc +CFLAGS += -std=gnu99 -s -O3 -Wno-logical-op-parentheses +LIBS = -lz +SRC_FILES = *.c + +all: tpws + +tpws: $(SRC_FILES) + $(CC) $(CFLAGS) -Iepoll-shim/include -o $@ $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + +clean: + rm -f tpws *.o diff --git a/tpws/Makefile b/tpws/Makefile new file mode 100644 index 0000000..b3cf3c8 --- /dev/null +++ b/tpws/Makefile @@ -0,0 +1,21 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member -Wno-logical-op-parentheses -Wno-switch +CFLAGS_MAC = -mmacosx-version-min=10.8 +STRIP = -s +LIBS = -lz +SRC_FILES = *.c + +all: tpws + +tpws: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) $(STRIP) $(CFLAGS) $(CFLAGS_BSD) -Iepoll-shim/include -o tpws $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) $(CFLAGS_MAC) -Iepoll-shim/include -Imacos -o tpws $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + +clean: + rm -f tpws *.o diff --git a/tpws/epoll-shim/include/sys/epoll.h b/tpws/epoll-shim/include/sys/epoll.h new file mode 100644 index 0000000..f96c0f1 --- /dev/null +++ b/tpws/epoll-shim/include/sys/epoll.h @@ -0,0 +1,80 @@ +#ifndef SHIM_SYS_EPOLL_H +#define SHIM_SYS_EPOLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#if defined(__NetBSD__) +#include +#elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__APPLE__) +#include +#endif + +#define EPOLL_CLOEXEC O_CLOEXEC +#define EPOLL_NONBLOCK O_NONBLOCK + +enum EPOLL_EVENTS { __EPOLL_DUMMY }; +#define EPOLLIN 0x001 +#define EPOLLPRI 0x002 +#define EPOLLOUT 0x004 +#define EPOLLRDNORM 0x040 +#define EPOLLNVAL 0x020 +#define EPOLLRDBAND 0x080 +#define EPOLLWRNORM 0x100 +#define EPOLLWRBAND 0x200 +#define EPOLLMSG 0x400 +#define EPOLLERR 0x008 +#define EPOLLHUP 0x010 +#define EPOLLRDHUP 0x2000 +#define EPOLLEXCLUSIVE (1U<<28) +#define EPOLLWAKEUP (1U<<29) +#define EPOLLONESHOT (1U<<30) +#define EPOLLET (1U<<31) + +#define EPOLL_CTL_ADD 1 +#define EPOLL_CTL_DEL 2 +#define EPOLL_CTL_MOD 3 + +typedef union epoll_data { + void *ptr; + int fd; + uint32_t u32; + uint64_t u64; +} epoll_data_t; + +struct epoll_event { + uint32_t events; + epoll_data_t data; +} +#ifdef __x86_64__ +__attribute__ ((__packed__)) +#endif +; + + +int epoll_create(int); +int epoll_create1(int); +int epoll_ctl(int, int, int, struct epoll_event *); +int epoll_wait(int, struct epoll_event *, int, int); +int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *); + + +#ifndef SHIM_SYS_SHIM_HELPERS +#define SHIM_SYS_SHIM_HELPERS +#include /* IWYU pragma: keep */ + +extern int epoll_shim_close(int); +#define close epoll_shim_close +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* sys/epoll.h */ diff --git a/tpws/epoll-shim/src/epoll.c b/tpws/epoll-shim/src/epoll.c new file mode 100644 index 0000000..7b11653 --- /dev/null +++ b/tpws/epoll-shim/src/epoll.c @@ -0,0 +1,305 @@ +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "epoll_shim_ctx.h" + +#ifdef __NetBSD__ +#define ppoll pollts +#endif + +// TODO(jan): Remove this once the definition is exposed in in +// all supported FreeBSD versions. +#ifndef timespecsub +#define timespecsub(tsp, usp, vsp) \ + do { \ + (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ + (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ + if ((vsp)->tv_nsec < 0) { \ + (vsp)->tv_sec--; \ + (vsp)->tv_nsec += 1000000000L; \ + } \ + } while (0) +#endif + +static errno_t +epollfd_close(FDContextMapNode *node) +{ + return epollfd_ctx_terminate(&node->ctx.epollfd); +} + +static FDContextVTable const epollfd_vtable = { + .read_fun = fd_context_default_read, + .write_fun = fd_context_default_write, + .close_fun = epollfd_close, +}; + +static FDContextMapNode * +epoll_create_impl(errno_t *ec) +{ + FDContextMapNode *node; + + node = epoll_shim_ctx_create_node(&epoll_shim_ctx, ec); + if (!node) { + return NULL; + } + + node->flags = 0; + + if ((*ec = epollfd_ctx_init(&node->ctx.epollfd, /**/ + node->fd)) != 0) { + goto fail; + } + + node->vtable = &epollfd_vtable; + return node; + +fail: + epoll_shim_ctx_remove_node_explicit(&epoll_shim_ctx, node); + (void)fd_context_map_node_destroy(node); + return NULL; +} + +static int +epoll_create_common(void) +{ + FDContextMapNode *node; + errno_t ec; + + node = epoll_create_impl(&ec); + if (!node) { + errno = ec; + return -1; + } + + return node->fd; +} + +int +epoll_create(int size) +{ + if (size <= 0) { + errno = EINVAL; + return -1; + } + + return epoll_create_common(); +} + +int +epoll_create1(int flags) +{ + if (flags & ~EPOLL_CLOEXEC) { + errno = EINVAL; + return -1; + } + + return epoll_create_common(); +} + +static errno_t +epoll_ctl_impl(int fd, int op, int fd2, struct epoll_event *ev) +{ + if (!ev && op != EPOLL_CTL_DEL) { + return EFAULT; + } + + FDContextMapNode *node = epoll_shim_ctx_find_node(&epoll_shim_ctx, fd); + if (!node || node->vtable != &epollfd_vtable) { + struct stat sb; + return (fd < 0 || fstat(fd, &sb) < 0) ? EBADF : EINVAL; + } + + return epollfd_ctx_ctl(&node->ctx.epollfd, op, fd2, ev); +} + +int +epoll_ctl(int fd, int op, int fd2, struct epoll_event *ev) +{ + errno_t ec = epoll_ctl_impl(fd, op, fd2, ev); + if (ec != 0) { + errno = ec; + return -1; + } + + return 0; +} + +static bool +is_no_wait_deadline(struct timespec const *deadline) +{ + return (deadline && deadline->tv_sec == 0 && deadline->tv_nsec == 0); +} + +static errno_t +epollfd_ctx_wait_or_block(EpollFDCtx *epollfd, struct epoll_event *ev, int cnt, + int *actual_cnt, struct timespec const *deadline, sigset_t const *sigs) +{ + errno_t ec; + + for (;;) { + if ((ec = epollfd_ctx_wait(epollfd, /**/ + ev, cnt, actual_cnt)) != 0) { + return ec; + } + + if (*actual_cnt || is_no_wait_deadline(deadline)) { + return 0; + } + + struct timespec timeout; + + if (deadline) { + struct timespec current_time; + + if (clock_gettime(CLOCK_MONOTONIC, /**/ + ¤t_time) < 0) { + return errno; + } + + timespecsub(deadline, ¤t_time, &timeout); + if (timeout.tv_sec < 0 || + is_no_wait_deadline(&timeout)) { + return 0; + } + } + + (void)pthread_mutex_lock(&epollfd->mutex); + + nfds_t nfds = (nfds_t)(1 + epollfd->poll_fds_size); + + size_t size; + if (__builtin_mul_overflow(nfds, sizeof(struct pollfd), + &size)) { + ec = ENOMEM; + (void)pthread_mutex_unlock(&epollfd->mutex); + return ec; + } + + struct pollfd *pfds = malloc(size); + if (!pfds) { + ec = errno; + (void)pthread_mutex_unlock(&epollfd->mutex); + return ec; + } + + epollfd_ctx_fill_pollfds(epollfd, pfds); + + (void)pthread_mutex_lock(&epollfd->nr_polling_threads_mutex); + ++epollfd->nr_polling_threads; + (void)pthread_mutex_unlock(&epollfd->nr_polling_threads_mutex); + + (void)pthread_mutex_unlock(&epollfd->mutex); + + /* + * This surfaced a race condition when + * registering/unregistering poll-only fds. The tests should + * still succeed if this is enabled. + */ +#if 0 + usleep(500000); +#endif + + int n = ppoll(pfds, nfds, deadline ? &timeout : NULL, sigs); + if (n < 0) { + ec = errno; + } + + free(pfds); + + (void)pthread_mutex_lock(&epollfd->nr_polling_threads_mutex); + --epollfd->nr_polling_threads; + if (epollfd->nr_polling_threads == 0) { + (void)pthread_cond_signal( + &epollfd->nr_polling_threads_cond); + } + (void)pthread_mutex_unlock(&epollfd->nr_polling_threads_mutex); + + if (n < 0) { + return ec; + } + } +} + +static errno_t +timeout_to_deadline(struct timespec *deadline, int to) +{ + assert(to >= 0); + + if (to == 0) { + *deadline = (struct timespec){0, 0}; + } else if (to > 0) { + if (clock_gettime(CLOCK_MONOTONIC, deadline) < 0) { + return errno; + } + + if (__builtin_add_overflow(deadline->tv_sec, to / 1000 + 1, + &deadline->tv_sec)) { + return EINVAL; + } + deadline->tv_sec -= 1; + + deadline->tv_nsec += (to % 1000) * 1000000L; + if (deadline->tv_nsec >= 1000000000) { + deadline->tv_nsec -= 1000000000; + deadline->tv_sec += 1; + } + } + + return 0; +} + +static errno_t +epoll_pwait_impl(int fd, struct epoll_event *ev, int cnt, int to, + sigset_t const *sigs, int *actual_cnt) +{ + if (cnt < 1 || cnt > (int)(INT_MAX / sizeof(struct epoll_event))) { + return EINVAL; + } + + FDContextMapNode *node = epoll_shim_ctx_find_node(&epoll_shim_ctx, fd); + if (!node || node->vtable != &epollfd_vtable) { + struct stat sb; + return (fd < 0 || fstat(fd, &sb) < 0) ? EBADF : EINVAL; + } + + struct timespec deadline; + errno_t ec; + if (to >= 0 && (ec = timeout_to_deadline(&deadline, to)) != 0) { + return ec; + } + + return epollfd_ctx_wait_or_block(&node->ctx.epollfd, ev, cnt, + actual_cnt, (to >= 0) ? &deadline : NULL, sigs); +} + +int +epoll_pwait(int fd, struct epoll_event *ev, int cnt, int to, + sigset_t const *sigs) +{ + int actual_cnt; + + errno_t ec = epoll_pwait_impl(fd, ev, cnt, to, sigs, &actual_cnt); + if (ec != 0) { + errno = ec; + return -1; + } + + return actual_cnt; +} + +int +epoll_wait(int fd, struct epoll_event *ev, int cnt, int to) +{ + return epoll_pwait(fd, ev, cnt, to, NULL); +} diff --git a/tpws/epoll-shim/src/epoll_shim_ctx.c b/tpws/epoll-shim/src/epoll_shim_ctx.c new file mode 100644 index 0000000..ac89f5f --- /dev/null +++ b/tpws/epoll-shim/src/epoll_shim_ctx.c @@ -0,0 +1,281 @@ +#include "epoll_shim_ctx.h" + +#include + +#include +#include +#include +#include + +static void +fd_context_map_node_init(FDContextMapNode *node, int kq) +{ + node->fd = kq; + node->vtable = NULL; +} + +static FDContextMapNode * +fd_context_map_node_create(int kq, errno_t *ec) +{ + FDContextMapNode *node; + + node = malloc(sizeof(FDContextMapNode)); + if (!node) { + *ec = errno; + return NULL; + } + + fd_context_map_node_init(node, kq); + return node; +} + +static errno_t +fd_context_map_node_terminate(FDContextMapNode *node, bool close_fd) +{ + errno_t ec = node->vtable ? node->vtable->close_fun(node) : 0; + + if (close_fd && close(node->fd) < 0) { + ec = ec ? ec : errno; + } + + return ec; +} + +errno_t +fd_context_map_node_destroy(FDContextMapNode *node) +{ + errno_t ec = fd_context_map_node_terminate(node, true); + free(node); + return ec; +} + +/**/ + +errno_t +fd_context_default_read(FDContextMapNode *node, /**/ + void *buf, size_t nbytes, size_t *bytes_transferred) +{ + (void)node; + (void)buf; + (void)nbytes; + (void)bytes_transferred; + + return EINVAL; +} + +errno_t +fd_context_default_write(FDContextMapNode *node, /**/ + void const *buf, size_t nbytes, size_t *bytes_transferred) +{ + (void)node; + (void)buf; + (void)nbytes; + (void)bytes_transferred; + + return EINVAL; +} + +/**/ + +static int +fd_context_map_node_cmp(FDContextMapNode *e1, FDContextMapNode *e2) +{ + return (e1->fd < e2->fd) ? -1 : (e1->fd > e2->fd); +} + +RB_PROTOTYPE_STATIC(fd_context_map_, fd_context_map_node_, entry, + fd_context_map_node_cmp); +RB_GENERATE_STATIC(fd_context_map_, fd_context_map_node_, entry, + fd_context_map_node_cmp); + +EpollShimCtx epoll_shim_ctx = { + .fd_context_map = RB_INITIALIZER(&fd_context_map), + .mutex = PTHREAD_MUTEX_INITIALIZER, +}; + +static FDContextMapNode * +epoll_shim_ctx_create_node_impl(EpollShimCtx *epoll_shim_ctx, int kq, + errno_t *ec) +{ + FDContextMapNode *node; + + { + FDContextMapNode find; + find.fd = kq; + + node = RB_FIND(fd_context_map_, /**/ + &epoll_shim_ctx->fd_context_map, &find); + } + + if (node) { + /* + * If we get here, someone must have already closed the old fd + * with a normal 'close()' call, i.e. not with our + * 'epoll_shim_close()' wrapper. The fd inside the node + * refers now to the new kq we are currently creating. We + * must not close it, but we must clean up the old context + * object! + */ + (void)fd_context_map_node_terminate(node, false); + fd_context_map_node_init(node, kq); + } else { + node = fd_context_map_node_create(kq, ec); + if (!node) { + return NULL; + } + + void *colliding_node = RB_INSERT(fd_context_map_, + &epoll_shim_ctx->fd_context_map, node); + (void)colliding_node; + assert(colliding_node == NULL); + } + + return node; +} + +FDContextMapNode * +epoll_shim_ctx_create_node(EpollShimCtx *epoll_shim_ctx, errno_t *ec) +{ + FDContextMapNode *node; + + int kq = kqueue(); + if (kq < 0) { + *ec = errno; + return NULL; + } + + (void)pthread_mutex_lock(&epoll_shim_ctx->mutex); + node = epoll_shim_ctx_create_node_impl(epoll_shim_ctx, kq, ec); + (void)pthread_mutex_unlock(&epoll_shim_ctx->mutex); + + if (!node) { + close(kq); + } + + return node; +} + +static FDContextMapNode * +epoll_shim_ctx_find_node_impl(EpollShimCtx *epoll_shim_ctx, int fd) +{ + FDContextMapNode *node; + + FDContextMapNode find; + find.fd = fd; + + node = RB_FIND(fd_context_map_, /**/ + &epoll_shim_ctx->fd_context_map, &find); + + return node; +} + +FDContextMapNode * +epoll_shim_ctx_find_node(EpollShimCtx *epoll_shim_ctx, int fd) +{ + FDContextMapNode *node; + + (void)pthread_mutex_lock(&epoll_shim_ctx->mutex); + node = epoll_shim_ctx_find_node_impl(epoll_shim_ctx, fd); + (void)pthread_mutex_unlock(&epoll_shim_ctx->mutex); + + return node; +} + +FDContextMapNode * +epoll_shim_ctx_remove_node(EpollShimCtx *epoll_shim_ctx, int fd) +{ + FDContextMapNode *node; + + (void)pthread_mutex_lock(&epoll_shim_ctx->mutex); + node = epoll_shim_ctx_find_node_impl(epoll_shim_ctx, fd); + if (node) { + RB_REMOVE(fd_context_map_, /**/ + &epoll_shim_ctx->fd_context_map, node); + } + (void)pthread_mutex_unlock(&epoll_shim_ctx->mutex); + + return node; +} + +void +epoll_shim_ctx_remove_node_explicit(EpollShimCtx *epoll_shim_ctx, + FDContextMapNode *node) +{ + (void)pthread_mutex_lock(&epoll_shim_ctx->mutex); + RB_REMOVE(fd_context_map_, /**/ + &epoll_shim_ctx->fd_context_map, node); + (void)pthread_mutex_unlock(&epoll_shim_ctx->mutex); +} + +/**/ + +int +epoll_shim_close(int fd) +{ + FDContextMapNode *node; + + node = epoll_shim_ctx_remove_node(&epoll_shim_ctx, fd); + if (!node) { + return close(fd); + } + + errno_t ec = fd_context_map_node_destroy(node); + if (ec != 0) { + errno = ec; + return -1; + } + + return 0; +} + +ssize_t +epoll_shim_read(int fd, void *buf, size_t nbytes) +{ + FDContextMapNode *node; + + node = epoll_shim_ctx_find_node(&epoll_shim_ctx, fd); + if (!node) { + return read(fd, buf, nbytes); + } + + if (nbytes > SSIZE_MAX) { + errno = EINVAL; + return -1; + } + + size_t bytes_transferred; + errno_t ec = node->vtable->read_fun(node, /**/ + buf, nbytes, &bytes_transferred); + if (ec != 0) { + errno = ec; + return -1; + } + + return (ssize_t)bytes_transferred; +} + +ssize_t +epoll_shim_write(int fd, void const *buf, size_t nbytes) +{ + FDContextMapNode *node; + + node = epoll_shim_ctx_find_node(&epoll_shim_ctx, fd); + if (!node) { + return write(fd, buf, nbytes); + } + + if (nbytes > SSIZE_MAX) { + errno = EINVAL; + return -1; + } + + size_t bytes_transferred; + errno_t ec = node->vtable->write_fun(node, /**/ + buf, nbytes, &bytes_transferred); + if (ec != 0) { + errno = ec; + return -1; + } + + return (ssize_t)bytes_transferred; +} diff --git a/tpws/epoll-shim/src/epoll_shim_ctx.h b/tpws/epoll-shim/src/epoll_shim_ctx.h new file mode 100644 index 0000000..01ae19a --- /dev/null +++ b/tpws/epoll-shim/src/epoll_shim_ctx.h @@ -0,0 +1,76 @@ +#ifndef EPOLL_SHIM_CTX_H_ +#define EPOLL_SHIM_CTX_H_ + +#include "fix.h" + +#include + +#include + +#include "epollfd_ctx.h" +#include "eventfd_ctx.h" +#include "signalfd_ctx.h" +#include "timerfd_ctx.h" + +struct fd_context_map_node_; +typedef struct fd_context_map_node_ FDContextMapNode; + +typedef errno_t (*fd_context_read_fun)(FDContextMapNode *node, /**/ + void *buf, size_t nbytes, size_t *bytes_transferred); +typedef errno_t (*fd_context_write_fun)(FDContextMapNode *node, /**/ + const void *buf, size_t nbytes, size_t *bytes_transferred); +typedef errno_t (*fd_context_close_fun)(FDContextMapNode *node); + +typedef struct { + fd_context_read_fun read_fun; + fd_context_write_fun write_fun; + fd_context_close_fun close_fun; +} FDContextVTable; + +errno_t fd_context_default_read(FDContextMapNode *node, /**/ + void *buf, size_t nbytes, size_t *bytes_transferred); +errno_t fd_context_default_write(FDContextMapNode *node, /**/ + void const *buf, size_t nbytes, size_t *bytes_transferred); + +struct fd_context_map_node_ { + RB_ENTRY(fd_context_map_node_) entry; + int fd; + int flags; + union { + EpollFDCtx epollfd; + EventFDCtx eventfd; + TimerFDCtx timerfd; + SignalFDCtx signalfd; + } ctx; + FDContextVTable const *vtable; +}; + +errno_t fd_context_map_node_destroy(FDContextMapNode *node); + +/**/ + +typedef RB_HEAD(fd_context_map_, fd_context_map_node_) FDContextMap; + +typedef struct { + FDContextMap fd_context_map; + pthread_mutex_t mutex; +} EpollShimCtx; + +extern EpollShimCtx epoll_shim_ctx; + +FDContextMapNode *epoll_shim_ctx_create_node(EpollShimCtx *epoll_shim_ctx, + errno_t *ec); +FDContextMapNode *epoll_shim_ctx_find_node(EpollShimCtx *epoll_shim_ctx, + int fd); +FDContextMapNode *epoll_shim_ctx_remove_node(EpollShimCtx *epoll_shim_ctx, + int fd); +void epoll_shim_ctx_remove_node_explicit(EpollShimCtx *epoll_shim_ctx, + FDContextMapNode *node); + +/**/ + +int epoll_shim_close(int fd); +ssize_t epoll_shim_read(int fd, void *buf, size_t nbytes); +ssize_t epoll_shim_write(int fd, void const *buf, size_t nbytes); + +#endif diff --git a/tpws/epoll-shim/src/epollfd_ctx.c b/tpws/epoll-shim/src/epollfd_ctx.c new file mode 100644 index 0000000..baf3dc2 --- /dev/null +++ b/tpws/epoll-shim/src/epollfd_ctx.c @@ -0,0 +1,1386 @@ +#include "epollfd_ctx.h" + +#include + +#if defined(__FreeBSD__) +#include +#endif +#include +#include +#include +#include +#include + +#if defined(__DragonFly__) +/* For TAILQ_FOREACH_SAFE. */ +#include +#endif + +#include +#include +#include +#include + +#include +#include +#include + +static RegisteredFDsNode * +registered_fds_node_create(int fd) +{ + RegisteredFDsNode *node; + + node = malloc(sizeof(*node)); + if (!node) { + return NULL; + } + + *node = (RegisteredFDsNode){.fd = fd, .self_pipe = {-1, -1}}; + + return node; +} + +static void +registered_fds_node_destroy(RegisteredFDsNode *node) +{ + if (node->self_pipe[0] >= 0 && node->self_pipe[1] >= 0) { + (void)close(node->self_pipe[0]); + (void)close(node->self_pipe[1]); + } + + free(node); +} + +typedef struct { + int evfilt_read; + int evfilt_write; + int evfilt_except; +} NeededFilters; + +static NeededFilters +get_needed_filters(RegisteredFDsNode *fd2_node) +{ + NeededFilters needed_filters; + + needed_filters.evfilt_except = 0; + + if (fd2_node->node_type == NODE_TYPE_FIFO) { + if (fd2_node->node_data.fifo.readable && + fd2_node->node_data.fifo.writable) { + needed_filters.evfilt_read = !!( + fd2_node->events & EPOLLIN); + needed_filters.evfilt_write = !!( + fd2_node->events & EPOLLOUT); + + if (fd2_node->events == 0) { + needed_filters.evfilt_read = + fd2_node->eof_state ? 1 : EV_CLEAR; + } + + } else if (fd2_node->node_data.fifo.readable) { + needed_filters.evfilt_read = !!( + fd2_node->events & EPOLLIN); + needed_filters.evfilt_write = 0; + + if (needed_filters.evfilt_read == 0) { + needed_filters.evfilt_read = + fd2_node->eof_state ? 1 : EV_CLEAR; + } + } else if (fd2_node->node_data.fifo.writable) { + needed_filters.evfilt_read = 0; + needed_filters.evfilt_write = !!( + fd2_node->events & EPOLLOUT); + + if (needed_filters.evfilt_write == 0) { + needed_filters.evfilt_write = + fd2_node->eof_state ? 1 : EV_CLEAR; + } + } else { + __builtin_unreachable(); + } + + goto out; + } + + if (fd2_node->node_type == NODE_TYPE_KQUEUE) { + needed_filters.evfilt_read = !!(fd2_node->events & EPOLLIN); + needed_filters.evfilt_write = 0; + + assert(fd2_node->eof_state == 0); + + if (needed_filters.evfilt_read == 0) { + needed_filters.evfilt_read = EV_CLEAR; + } + + goto out; + } + + if (fd2_node->node_type == NODE_TYPE_SOCKET) { + needed_filters.evfilt_read = !!(fd2_node->events & EPOLLIN); + + if (needed_filters.evfilt_read == 0 && + (fd2_node->events & EPOLLRDHUP)) { + needed_filters.evfilt_read = (fd2_node->eof_state & + EOF_STATE_READ_EOF) + ? 1 + : EV_CLEAR; + } + +#ifdef EVFILT_EXCEPT + needed_filters.evfilt_except = !!(fd2_node->events & EPOLLPRI); +#else + if (needed_filters.evfilt_read == 0 && + (fd2_node->events & EPOLLPRI)) { + needed_filters.evfilt_read = fd2_node->pollpri_active + ? 1 + : EV_CLEAR; + } +#endif + + needed_filters.evfilt_write = !!(fd2_node->events & EPOLLOUT); + + /* Let's use EVFILT_READ to drive the POLLHUP. */ + if (fd2_node->eof_state == + (EOF_STATE_READ_EOF | EOF_STATE_WRITE_EOF)) { + if (needed_filters.evfilt_read != 1 && + needed_filters.evfilt_write != 1) { + needed_filters.evfilt_read = 1; + } + + if (needed_filters.evfilt_read) { + needed_filters.evfilt_write = 0; + } else { + needed_filters.evfilt_read = 0; + } + } + + /* We need something to detect POLLHUP. */ + if (fd2_node->eof_state == 0 && + needed_filters.evfilt_read == 0 && + needed_filters.evfilt_write == 0) { + needed_filters.evfilt_read = EV_CLEAR; + } + + if (fd2_node->eof_state == EOF_STATE_READ_EOF) { + if (needed_filters.evfilt_write == 0) { + needed_filters.evfilt_write = EV_CLEAR; + } + } + + if (fd2_node->eof_state == EOF_STATE_WRITE_EOF) { + if (needed_filters.evfilt_read == 0) { + needed_filters.evfilt_read = EV_CLEAR; + } + } + + goto out; + } + + needed_filters.evfilt_read = !!(fd2_node->events & EPOLLIN); + needed_filters.evfilt_write = !!(fd2_node->events & EPOLLOUT); + + if (fd2_node->events == 0) { + needed_filters.evfilt_read = fd2_node->eof_state ? 1 + : EV_CLEAR; + } + +out: + if (fd2_node->is_edge_triggered) { + if (needed_filters.evfilt_read) { + needed_filters.evfilt_read = EV_CLEAR; + } + if (needed_filters.evfilt_write) { + needed_filters.evfilt_write = EV_CLEAR; + } + if (needed_filters.evfilt_except) { + needed_filters.evfilt_except = EV_CLEAR; + } + } + + assert(needed_filters.evfilt_read || needed_filters.evfilt_write); + assert(needed_filters.evfilt_read == 0 || + needed_filters.evfilt_read == 1 || + needed_filters.evfilt_read == EV_CLEAR); + assert(needed_filters.evfilt_write == 0 || + needed_filters.evfilt_write == 1 || + needed_filters.evfilt_write == EV_CLEAR); + assert(needed_filters.evfilt_except == 0 || + needed_filters.evfilt_except == 1 || + needed_filters.evfilt_except == EV_CLEAR); + + return needed_filters; +} + +static void +registered_fds_node_update_flags_from_epoll_event(RegisteredFDsNode *fd2_node, + struct epoll_event *ev) +{ + fd2_node->events = ev->events & + (EPOLLIN | EPOLLPRI | EPOLLRDHUP | EPOLLOUT); + fd2_node->data = ev->data; + fd2_node->is_edge_triggered = ev->events & EPOLLET; + fd2_node->is_oneshot = ev->events & EPOLLONESHOT; + + if (fd2_node->is_oneshot) { + fd2_node->is_edge_triggered = true; + } +} + +static errno_t +registered_fds_node_add_self_trigger(RegisteredFDsNode *fd2_node, + EpollFDCtx *epollfd) +{ + struct kevent kevs[1]; + +#ifdef EVFILT_USER + EV_SET(&kevs[0], (uintptr_t)fd2_node, EVFILT_USER, /**/ + EV_ADD | EV_CLEAR, 0, 0, fd2_node); +#else + if (fd2_node->self_pipe[0] < 0 && fd2_node->self_pipe[1] < 0) { + if (pipe2(fd2_node->self_pipe, O_NONBLOCK | O_CLOEXEC) < 0) { + errno_t ec = errno; + fd2_node->self_pipe[0] = fd2_node->self_pipe[1] = -1; + return ec; + } + + assert(fd2_node->self_pipe[0] >= 0); + assert(fd2_node->self_pipe[1] >= 0); + } + + EV_SET(&kevs[0], fd2_node->self_pipe[0], EVFILT_READ, /**/ + EV_ADD | EV_CLEAR, 0, 0, fd2_node); +#endif + + if (kevent(epollfd->kq, kevs, 1, NULL, 0, NULL) < 0) { + return errno; + } + + return 0; +} + +static void +registered_fds_node_trigger_self(RegisteredFDsNode *fd2_node, + EpollFDCtx *epollfd) +{ +#ifdef EVFILT_USER + struct kevent kevs[1]; + EV_SET(&kevs[0], (uintptr_t)fd2_node, EVFILT_USER, /**/ + 0, NOTE_TRIGGER, 0, fd2_node); + (void)kevent(epollfd->kq, kevs, 1, NULL, 0, NULL); +#else + (void)epollfd; + assert(fd2_node->self_pipe[1] >= 0); + + char c = 0; + (void)write(fd2_node->self_pipe[1], &c, 1); +#endif +} + +static void +registered_fds_node_feed_event(RegisteredFDsNode *fd2_node, + EpollFDCtx *epollfd, struct kevent const *kev) +{ + int revents = 0; + + if (fd2_node->node_type == NODE_TYPE_POLL) { + assert(fd2_node->revents == 0); + +#ifdef EVFILT_USER + assert(kev->filter == EVFILT_USER); +#else + char c[32]; + while (read(fd2_node->self_pipe[0], c, sizeof(c)) >= 0) { + } +#endif + + struct pollfd pfd = { + .fd = fd2_node->fd, + .events = (short)fd2_node->events, + }; + + revents = poll(&pfd, 1, 0) < 0 ? EPOLLERR : pfd.revents; + + fd2_node->revents = revents & POLLNVAL ? 0 : (uint32_t)revents; + assert(!(fd2_node->revents & + ~(uint32_t)(POLLIN | POLLOUT | POLLERR | POLLHUP))); + return; + } + + if (fd2_node->node_type == NODE_TYPE_FIFO && +#ifdef EVFILT_USER + kev->filter == EVFILT_USER +#else + (fd2_node->self_pipe[0] >= 0 && + kev->ident == (uintptr_t)fd2_node->self_pipe[0]) +#endif + ) { + assert(fd2_node->revents == 0); + + assert(!fd2_node->has_evfilt_read); + assert(!fd2_node->has_evfilt_write); + assert(!fd2_node->has_evfilt_except); + + NeededFilters needed_filters = get_needed_filters(fd2_node); + assert(needed_filters.evfilt_write); + + struct kevent nkev[1]; + EV_SET(&nkev[0], fd2_node->fd, EVFILT_WRITE, + EV_ADD | (needed_filters.evfilt_write & EV_CLEAR) | + EV_RECEIPT, + 0, 0, fd2_node); + + if (kevent(epollfd->kq, nkev, 1, nkev, 1, NULL) != 1 || + nkev[0].data != 0) { + revents = EPOLLERR | EPOLLOUT; + + if (!fd2_node->is_edge_triggered) { + registered_fds_node_trigger_self(fd2_node, + epollfd); + } + + goto out; + } else { + fd2_node->has_evfilt_write = true; + return; + } + } + +#ifdef EVFILT_EXCEPT + assert(kev->filter == EVFILT_READ || kev->filter == EVFILT_WRITE || + kev->filter == EVFILT_EXCEPT); +#else + assert(kev->filter == EVFILT_READ || kev->filter == EVFILT_WRITE); +#endif + assert((int)kev->ident == fd2_node->fd); + + if (kev->filter == EVFILT_READ) { + revents |= EPOLLIN; +#ifndef EVFILT_EXCEPT + if (fd2_node->events & EPOLLPRI) { + struct pollfd pfd = { + .fd = fd2_node->fd, + .events = POLLPRI, + }; + + if ((poll(&pfd, 1, 0) == 1) && + (pfd.revents & POLLPRI)) { + revents |= EPOLLPRI; + fd2_node->pollpri_active = true; + } else { + fd2_node->pollpri_active = false; + } + } +#endif + } else if (kev->filter == EVFILT_WRITE) { + revents |= EPOLLOUT; + } +#ifdef EVFILT_EXCEPT + else if (kev->filter == EVFILT_EXCEPT) { + assert((kev->fflags & NOTE_OOB) != 0); + + revents |= EPOLLPRI; + goto out; + } +#endif + + if (fd2_node->node_type == NODE_TYPE_SOCKET) { + if (kev->filter == EVFILT_READ) { + if (kev->flags & EV_EOF) { + fd2_node->eof_state |= EOF_STATE_READ_EOF; + } else { + fd2_node->eof_state &= ~EOF_STATE_READ_EOF; + } + } else if (kev->filter == EVFILT_WRITE) { + if (kev->flags & EV_EOF) { + fd2_node->eof_state |= EOF_STATE_WRITE_EOF; + } else { + fd2_node->eof_state &= ~EOF_STATE_WRITE_EOF; + } + } + } else { + if (kev->filter == EVFILT_READ) { + if (kev->flags & EV_EOF) { + fd2_node->eof_state = EOF_STATE_READ_EOF | + EOF_STATE_WRITE_EOF; + } else { + fd2_node->eof_state = 0; + } + } else if (kev->filter == EVFILT_WRITE) { + if (kev->flags & EV_EOF) { + fd2_node->eof_state = EOF_STATE_READ_EOF | + EOF_STATE_WRITE_EOF; + } else { + fd2_node->eof_state = 0; + } + } + } + + if (kev->flags & EV_ERROR) { + revents |= EPOLLERR; + } + + if (kev->flags & EV_EOF) { + if (kev->fflags) { + revents |= EPOLLERR; + } + } + + if (fd2_node->eof_state) { + int epoll_event; + + if (fd2_node->node_type == NODE_TYPE_FIFO) { + if (kev->filter == EVFILT_READ) { + epoll_event = EPOLLHUP; + if (kev->data == 0) { + revents &= ~EPOLLIN; + } + } else if (kev->filter == EVFILT_WRITE) { + if (fd2_node->has_evfilt_read) { + assert( + fd2_node->node_data.fifo.readable); + assert( + fd2_node->node_data.fifo.writable); + + /* + * Any non-zero revents must have come + * from the EVFILT_READ filter. It + * could either be "POLLIN", + * "POLLIN | POLLHUP" or "POLLHUP", so + * we know if there is data to read. + * But we also know that the FIFO is + * done, so set POLLHUP because it + * would be set anyway. + * + * If revents is zero, not setting it + * will simply ignore this EVFILT_WRITE + * and wait for the next EVFILT_READ + * (which will be EOF). + */ + + if (fd2_node->revents != 0) { + fd2_node->revents |= POLLHUP; + } + return; + } + + epoll_event = EPOLLERR; + if (kev->data < PIPE_BUF) { + revents &= ~EPOLLOUT; + } + } else { + __builtin_unreachable(); + } + } else if (fd2_node->node_type == NODE_TYPE_SOCKET) { + epoll_event = 0; + + if (fd2_node->eof_state & EOF_STATE_READ_EOF) { + epoll_event |= EPOLLIN | EPOLLRDHUP; + } + + if (fd2_node->eof_state & EOF_STATE_WRITE_EOF) { + epoll_event |= EPOLLOUT; + } + + if (fd2_node->eof_state == + (EOF_STATE_READ_EOF | EOF_STATE_WRITE_EOF)) { + epoll_event |= EPOLLHUP; + } + } else { + epoll_event = EPOLLHUP; + } + + revents |= epoll_event; + } + +out: + fd2_node->revents |= (uint32_t)revents; + fd2_node->revents &= (fd2_node->events | EPOLLHUP | EPOLLERR); + + if (fd2_node->revents && (uintptr_t)fd2_node->fd == kev->ident) { + if (kev->filter == EVFILT_READ) { + fd2_node->got_evfilt_read = true; + } else if (kev->filter == EVFILT_WRITE) { + fd2_node->got_evfilt_write = true; + } +#ifdef EVFILT_EXCEPT + else if (kev->filter == EVFILT_EXCEPT) { + fd2_node->got_evfilt_except = true; + } +#endif + } +} + +static void +registered_fds_node_register_for_completion(int *kq, + RegisteredFDsNode *fd2_node) +{ + struct kevent kev[3]; + int n = 0; + + if (fd2_node->has_evfilt_read && !fd2_node->got_evfilt_read) { + EV_SET(&kev[n++], fd2_node->fd, EVFILT_READ, + EV_ADD | EV_ONESHOT | EV_RECEIPT, 0, 0, fd2_node); + } + if (fd2_node->has_evfilt_write && !fd2_node->got_evfilt_write) { + EV_SET(&kev[n++], fd2_node->fd, EVFILT_WRITE, + EV_ADD | EV_ONESHOT | EV_RECEIPT, 0, 0, fd2_node); + } + if (fd2_node->has_evfilt_except && !fd2_node->got_evfilt_except) { +#ifdef EVFILT_EXCEPT + EV_SET(&kev[n++], fd2_node->fd, EVFILT_EXCEPT, + EV_ADD | EV_ONESHOT | EV_RECEIPT, NOTE_OOB, 0, fd2_node); +#else + assert(0); +#endif + } + + if (n == 0) { + return; + } + + if (*kq < 0) { + *kq = kqueue(); + } + + if (*kq >= 0) { + (void)kevent(*kq, kev, n, kev, n, NULL); + } +} + +static void +registered_fds_node_complete(int kq) +{ + if (kq < 0) { + return; + } + + struct kevent kevs[32]; + int n; + + while ((n = kevent(kq, /**/ + NULL, 0, kevs, 32, &(struct timespec){0, 0})) > 0) { + for (int i = 0; i < n; ++i) { + RegisteredFDsNode *fd2_node = + (RegisteredFDsNode *)kevs[i].udata; + + registered_fds_node_feed_event(fd2_node, NULL, + &kevs[i]); + } + } + + (void)close(kq); +} + +static int +fd_cmp(RegisteredFDsNode *e1, RegisteredFDsNode *e2) +{ + return (e1->fd < e2->fd) ? -1 : (e1->fd > e2->fd); +} + +RB_PROTOTYPE_STATIC(registered_fds_set_, registered_fds_node_, entry, fd_cmp); +RB_GENERATE_STATIC(registered_fds_set_, registered_fds_node_, entry, fd_cmp); + +errno_t +epollfd_ctx_init(EpollFDCtx *epollfd, int kq) +{ + errno_t ec; + + *epollfd = (EpollFDCtx){ + .kq = kq, + .registered_fds = RB_INITIALIZER(®istered_fds), + .self_pipe = {-1, -1}, + }; + + TAILQ_INIT(&epollfd->poll_fds); + + if ((ec = pthread_mutex_init(&epollfd->mutex, NULL)) != 0) { + return ec; + } + + if ((ec = pthread_mutex_init(&epollfd->nr_polling_threads_mutex, + NULL)) != 0) { + pthread_mutex_destroy(&epollfd->mutex); + return ec; + } + + if ((ec = pthread_cond_init(&epollfd->nr_polling_threads_cond, + NULL)) != 0) { + pthread_mutex_destroy(&epollfd->nr_polling_threads_mutex); + pthread_mutex_destroy(&epollfd->mutex); + return ec; + } + + return 0; +} + +errno_t +epollfd_ctx_terminate(EpollFDCtx *epollfd) +{ + errno_t ec = 0; + errno_t ec_local; + + ec_local = pthread_cond_destroy(&epollfd->nr_polling_threads_cond); + ec = ec ? ec : ec_local; + ec_local = pthread_mutex_destroy(&epollfd->nr_polling_threads_mutex); + ec = ec ? ec : ec_local; + ec_local = pthread_mutex_destroy(&epollfd->mutex); + ec = ec ? ec : ec_local; + + RegisteredFDsNode *np; + RegisteredFDsNode *np_temp; + RB_FOREACH_SAFE(np, registered_fds_set_, &epollfd->registered_fds, + np_temp) + { + RB_REMOVE(registered_fds_set_, &epollfd->registered_fds, np); + registered_fds_node_destroy(np); + } + + free(epollfd->kevs); + free(epollfd->pfds); + if (epollfd->self_pipe[0] >= 0 && epollfd->self_pipe[1] >= 0) { + (void)close(epollfd->self_pipe[0]); + (void)close(epollfd->self_pipe[1]); + } + + return ec; +} + +static errno_t +epollfd_ctx_make_kevs_space(EpollFDCtx *epollfd, size_t cnt) +{ + assert(cnt > 0); + + if (cnt <= epollfd->kevs_length) { + return 0; + } + + size_t size; + if (__builtin_mul_overflow(cnt, sizeof(struct kevent), &size)) { + return ENOMEM; + } + + struct kevent *new_kevs = realloc(epollfd->kevs, size); + if (!new_kevs) { + return errno; + } + + epollfd->kevs = new_kevs; + epollfd->kevs_length = cnt; + + return 0; +} + +static errno_t +epollfd_ctx_make_pfds_space(EpollFDCtx *epollfd) +{ + size_t cnt = 1 + epollfd->poll_fds_size; + + if (cnt <= epollfd->pfds_length) { + return 0; + } + + size_t size; + if (__builtin_mul_overflow(cnt, sizeof(struct pollfd), &size)) { + return ENOMEM; + } + + struct pollfd *new_pfds = realloc(epollfd->pfds, size); + if (!new_pfds) { + return errno; + } + + epollfd->pfds = new_pfds; + epollfd->pfds_length = cnt; + + return 0; +} + +static errno_t +epollfd_ctx__add_self_trigger(EpollFDCtx *epollfd) +{ + struct kevent kevs[1]; + +#ifdef EVFILT_USER + EV_SET(&kevs[0], 0, EVFILT_USER, EV_ADD | EV_CLEAR, 0, 0, 0); +#else + if (epollfd->self_pipe[0] < 0 && epollfd->self_pipe[1] < 0) { + if (pipe2(epollfd->self_pipe, O_NONBLOCK | O_CLOEXEC) < 0) { + errno_t ec = errno; + epollfd->self_pipe[0] = epollfd->self_pipe[1] = -1; + return ec; + } + + assert(epollfd->self_pipe[0] >= 0); + assert(epollfd->self_pipe[1] >= 0); + } + + EV_SET(&kevs[0], epollfd->self_pipe[0], EVFILT_READ, /**/ + EV_ADD | EV_CLEAR, 0, 0, 0); +#endif + + if (kevent(epollfd->kq, kevs, 1, NULL, 0, NULL) < 0) { + return errno; + } + + return 0; +} + +static void +epollfd_ctx__trigger_self(EpollFDCtx *epollfd) +{ +#ifdef EVFILT_USER + struct kevent kevs[1]; + EV_SET(&kevs[0], 0, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0); + (void)kevent(epollfd->kq, kevs, 1, NULL, 0, NULL); +#else + assert(epollfd->self_pipe[0] >= 0); + assert(epollfd->self_pipe[1] >= 0); + + char c = 0; + (void)write(epollfd->self_pipe[1], &c, 1); +#endif +} + +static void +epollfd_ctx__trigger_repoll(EpollFDCtx *epollfd) +{ + (void)pthread_mutex_lock(&epollfd->nr_polling_threads_mutex); + unsigned long nr_polling_threads = epollfd->nr_polling_threads; + (void)pthread_mutex_unlock(&epollfd->nr_polling_threads_mutex); + + if (nr_polling_threads == 0) { + return; + } + + epollfd_ctx__trigger_self(epollfd); + + (void)pthread_mutex_lock(&epollfd->nr_polling_threads_mutex); + while (epollfd->nr_polling_threads != 0) { + pthread_cond_wait(&epollfd->nr_polling_threads_cond, + &epollfd->nr_polling_threads_mutex); + } + (void)pthread_mutex_unlock(&epollfd->nr_polling_threads_mutex); + +#ifndef EVFILT_USER + char c[32]; + while (read(epollfd->self_pipe[0], c, sizeof(c)) >= 0) { + } +#endif +} + +static void +epollfd_ctx__remove_node_from_kq(EpollFDCtx *epollfd, + RegisteredFDsNode *fd2_node) +{ + if (fd2_node->is_on_pollfd_list) { + TAILQ_REMOVE(&epollfd->poll_fds, fd2_node, pollfd_list_entry); + fd2_node->is_on_pollfd_list = false; + assert(epollfd->poll_fds_size != 0); + --epollfd->poll_fds_size; + + epollfd_ctx__trigger_repoll(epollfd); + } + + if (fd2_node->self_pipe[0] >= 0) { + struct kevent kevs[1]; + EV_SET(&kevs[0], fd2_node->self_pipe[0], EVFILT_READ, /**/ + EV_DELETE, 0, 0, 0); + (void)kevent(epollfd->kq, kevs, 1, NULL, 0, NULL); + + char c[32]; + while (read(fd2_node->self_pipe[0], c, sizeof(c)) >= 0) { + } + } + + if (fd2_node->node_type == NODE_TYPE_POLL) { +#ifdef EVFILT_USER + struct kevent kevs[1]; + EV_SET(&kevs[0], (uintptr_t)fd2_node, EVFILT_USER, /**/ + EV_DELETE, 0, 0, 0); + (void)kevent(epollfd->kq, kevs, 1, NULL, 0, NULL); +#endif + } else { + struct kevent kevs[3]; + int fd2 = fd2_node->fd; + + EV_SET(&kevs[0], fd2, EVFILT_READ, /**/ + EV_DELETE | EV_RECEIPT, 0, 0, 0); + EV_SET(&kevs[1], fd2, EVFILT_WRITE, /**/ + EV_DELETE | EV_RECEIPT, 0, 0, 0); +#ifdef EVFILT_USER + EV_SET(&kevs[2], (uintptr_t)fd2_node, EVFILT_USER, /**/ + EV_DELETE | EV_RECEIPT, 0, 0, 0); +#endif + (void)kevent(epollfd->kq, kevs, 3, kevs, 3, NULL); + + fd2_node->has_evfilt_read = false; + fd2_node->has_evfilt_write = false; + fd2_node->has_evfilt_except = false; + } +} + +static errno_t +epollfd_ctx__register_events(EpollFDCtx *epollfd, RegisteredFDsNode *fd2_node) +{ + errno_t ec = 0; + + /* Only sockets support EPOLLRDHUP and EPOLLPRI. */ + if (fd2_node->node_type != NODE_TYPE_SOCKET) { + fd2_node->events &= ~(uint32_t)EPOLLRDHUP; + fd2_node->events &= ~(uint32_t)EPOLLPRI; + } + + int const fd2 = fd2_node->fd; + struct kevent kev[4] = { + {.data = 0}, + {.data = 0}, + {.data = 0}, + {.data = 0}, + }; + + assert(fd2 >= 0); + + int evfilt_read_index = -1; + int evfilt_write_index = -1; + + if (fd2_node->node_type != NODE_TYPE_POLL) { + if (fd2_node->is_registered) { + epollfd_ctx__remove_node_from_kq(epollfd, fd2_node); + } + + int n = 0; + + assert(!fd2_node->has_evfilt_read); + assert(!fd2_node->has_evfilt_write); + assert(!fd2_node->has_evfilt_except); + + NeededFilters needed_filters = get_needed_filters(fd2_node); + + if (needed_filters.evfilt_read) { + fd2_node->has_evfilt_read = true; + evfilt_read_index = n; + EV_SET(&kev[n++], fd2, EVFILT_READ, + EV_ADD | (needed_filters.evfilt_read & EV_CLEAR), + 0, 0, fd2_node); + } + if (needed_filters.evfilt_write) { + fd2_node->has_evfilt_write = true; + evfilt_write_index = n; + EV_SET(&kev[n++], fd2, EVFILT_WRITE, + EV_ADD | (needed_filters.evfilt_write & EV_CLEAR), + 0, 0, fd2_node); + } + + assert(n != 0); + + if (needed_filters.evfilt_except) { +#ifdef EVFILT_EXCEPT + fd2_node->has_evfilt_except = true; + EV_SET(&kev[n++], fd2, EVFILT_EXCEPT, + EV_ADD | (needed_filters.evfilt_except & EV_CLEAR), + NOTE_OOB, 0, fd2_node); +#else + assert(0); +#endif + } + + for (int i = 0; i < n; ++i) { + kev[i].flags |= EV_RECEIPT; + } + + int ret = kevent(epollfd->kq, kev, n, kev, n, NULL); + if (ret < 0) { + ec = errno; + goto out; + } + + assert(ret == n); + + for (int i = 0; i < n; ++i) { + assert((kev[i].flags & EV_ERROR) != 0); + } + } + + /* Check for fds that only support poll. */ + if (((fd2_node->node_type == NODE_TYPE_OTHER && + kev[0].data == ENODEV) || + fd2_node->node_type == NODE_TYPE_POLL)) { + + assert((fd2_node->events & /**/ + ~(uint32_t)(EPOLLIN | EPOLLOUT)) == 0); + assert(fd2_node->is_registered || + fd2_node->node_type == NODE_TYPE_OTHER); + + fd2_node->has_evfilt_read = false; + fd2_node->has_evfilt_write = false; + fd2_node->has_evfilt_except = false; + + fd2_node->node_type = NODE_TYPE_POLL; + + if ((ec = registered_fds_node_add_self_trigger(fd2_node, + epollfd)) != 0) { + goto out; + } + + if (!fd2_node->is_on_pollfd_list) { + if ((ec = /**/ + epollfd_ctx__add_self_trigger(epollfd)) != 0) { + goto out; + } + + TAILQ_INSERT_TAIL(&epollfd->poll_fds, fd2_node, + pollfd_list_entry); + fd2_node->is_on_pollfd_list = true; + ++epollfd->poll_fds_size; + } + + /* This is outside the above if because poll ".events" might + * have changed which needs a retriggering. */ + epollfd_ctx__trigger_repoll(epollfd); + + goto out; + } + + for (int i = 0; i < 4; ++i) { + if (kev[i].data != 0) { + if ((kev[i].data == EPIPE +#ifdef __NetBSD__ + || kev[i].data == EBADF +#endif + ) && + i == evfilt_write_index && + fd2_node->node_type == NODE_TYPE_FIFO) { + + fd2_node->eof_state = EOF_STATE_READ_EOF | + EOF_STATE_WRITE_EOF; + fd2_node->has_evfilt_write = false; + + if (evfilt_read_index < 0) { + if ((ec = registered_fds_node_add_self_trigger( + fd2_node, epollfd)) != 0) { + goto out; + } + + registered_fds_node_trigger_self( + fd2_node, epollfd); + } + } else { + ec = (int)kev[i].data; + goto out; + } + } + } + + ec = 0; + +out: + return ec; +} + +static void +epollfd_ctx_remove_node(EpollFDCtx *epollfd, RegisteredFDsNode *fd2_node) +{ + epollfd_ctx__remove_node_from_kq(epollfd, fd2_node); + + RB_REMOVE(registered_fds_set_, &epollfd->registered_fds, fd2_node); + assert(epollfd->registered_fds_size > 0); + --epollfd->registered_fds_size; + + registered_fds_node_destroy(fd2_node); +} + +#if defined(__FreeBSD__) +static void +modify_fifo_rights_from_capabilities(RegisteredFDsNode *fd2_node) +{ + assert(fd2_node->node_data.fifo.readable); + assert(fd2_node->node_data.fifo.writable); + + cap_rights_t rights; + memset(&rights, 0, sizeof(rights)); + + if (cap_rights_get(fd2_node->fd, &rights) == 0) { + cap_rights_t test_rights; + + cap_rights_init(&test_rights, CAP_READ); + bool has_read_rights = cap_rights_contains(&rights, + &test_rights); + + cap_rights_init(&test_rights, CAP_WRITE); + bool has_write_rights = cap_rights_contains(&rights, + &test_rights); + + if (has_read_rights != has_write_rights) { + fd2_node->node_data.fifo.readable = has_read_rights; + fd2_node->node_data.fifo.writable = has_write_rights; + } + } +} +#endif + +static errno_t +epollfd_ctx_add_node(EpollFDCtx *epollfd, int fd2, struct epoll_event *ev, + struct stat const *statbuf) +{ + RegisteredFDsNode *fd2_node = registered_fds_node_create(fd2); + if (!fd2_node) { + return ENOMEM; + } + + if (S_ISFIFO(statbuf->st_mode)) { + int tmp; + + if (ioctl(fd2_node->fd, FIONREAD, &tmp) < 0 && + errno == ENOTTY) { +#ifdef __FreeBSD__ + /* + * On FreeBSD we need to distinguish between kqueues + * and native eventfds. + */ + if (ioctl(fd2_node->fd, FIONBIO, &tmp) < 0 && + errno == ENOTTY) { + fd2_node->node_type = NODE_TYPE_KQUEUE; + } else { + fd2_node->node_type = NODE_TYPE_OTHER; + } +#else + fd2_node->node_type = NODE_TYPE_KQUEUE; +#endif + } else { + fd2_node->node_type = NODE_TYPE_FIFO; + + int fl = fcntl(fd2, F_GETFL, 0); + if (fl < 0) { + errno_t ec = errno; + registered_fds_node_destroy(fd2_node); + return ec; + } + + fl &= O_ACCMODE; + + if (fl == O_RDWR) { + fd2_node->node_data.fifo.readable = true; + fd2_node->node_data.fifo.writable = true; +#if defined(__FreeBSD__) + modify_fifo_rights_from_capabilities(fd2_node); +#endif + } else if (fl == O_WRONLY) { + fd2_node->node_data.fifo.writable = true; + } else if (fl == O_RDONLY) { + fd2_node->node_data.fifo.readable = true; + } else { + registered_fds_node_destroy(fd2_node); + return EINVAL; + } + } + } else if (S_ISSOCK(statbuf->st_mode)) { + fd2_node->node_type = NODE_TYPE_SOCKET; + } else { + /* May also be NODE_TYPE_POLL, + will be checked when registering. */ + fd2_node->node_type = NODE_TYPE_OTHER; + } + + registered_fds_node_update_flags_from_epoll_event(fd2_node, ev); + + void *colliding_node = RB_INSERT(registered_fds_set_, + &epollfd->registered_fds, fd2_node); + (void)colliding_node; + assert(colliding_node == NULL); + ++epollfd->registered_fds_size; + + errno_t ec = epollfd_ctx__register_events(epollfd, fd2_node); + if (ec != 0) { + epollfd_ctx_remove_node(epollfd, fd2_node); + return ec; + } + + fd2_node->is_registered = true; + + return 0; +} + +static errno_t +epollfd_ctx_modify_node(EpollFDCtx *epollfd, RegisteredFDsNode *fd2_node, + struct epoll_event *ev) +{ + registered_fds_node_update_flags_from_epoll_event(fd2_node, ev); + + assert(fd2_node->is_registered); + + errno_t ec = epollfd_ctx__register_events(epollfd, fd2_node); + if (ec != 0) { + epollfd_ctx_remove_node(epollfd, fd2_node); + return ec; + } + + return 0; +} + +static errno_t +epollfd_ctx_ctl_impl(EpollFDCtx *epollfd, int op, int fd2, + struct epoll_event *ev) +{ + assert(op == EPOLL_CTL_DEL || ev != NULL); + + if (epollfd->kq == fd2) { + return EINVAL; + } + + if (op != EPOLL_CTL_DEL && + ((ev->events & + ~(uint32_t)(EPOLLIN | EPOLLOUT | EPOLLRDHUP | /**/ + EPOLLPRI | /* unsupported by FreeBSD's kqueue! */ + EPOLLHUP | EPOLLERR | /**/ + EPOLLET | EPOLLONESHOT)))) { + return EINVAL; + } + + RegisteredFDsNode *fd2_node; + { + RegisteredFDsNode find; + find.fd = fd2; + + fd2_node = RB_FIND(registered_fds_set_, /**/ + &epollfd->registered_fds, &find); + } + + struct stat statbuf; + if (fstat(fd2, &statbuf) < 0) { + errno_t ec = errno; + + /* If the fstat fails for any reason we must clear + * internal state to avoid EEXIST errors in future + * calls to epoll_ctl. */ + if (fd2_node) { + epollfd_ctx_remove_node(epollfd, fd2_node); + } + + return ec; + } + + errno_t ec; + + if (op == EPOLL_CTL_ADD) { + ec = fd2_node + ? EEXIST + : epollfd_ctx_add_node(epollfd, fd2, ev, &statbuf); + } else if (op == EPOLL_CTL_DEL) { + ec = !fd2_node + ? ENOENT + : (epollfd_ctx_remove_node(epollfd, fd2_node), 0); + } else if (op == EPOLL_CTL_MOD) { + ec = !fd2_node + ? ENOENT + : epollfd_ctx_modify_node(epollfd, fd2_node, ev); + } else { + ec = EINVAL; + } + + return ec; +} + +void +epollfd_ctx_fill_pollfds(EpollFDCtx *epollfd, struct pollfd *pfds) +{ + pfds[0] = (struct pollfd){.fd = epollfd->kq, .events = POLLIN}; + + RegisteredFDsNode *poll_node; + size_t i = 1; + TAILQ_FOREACH(poll_node, &epollfd->poll_fds, pollfd_list_entry) + { + pfds[i++] = (struct pollfd){ + .fd = poll_node->fd, + .events = poll_node->node_type == NODE_TYPE_POLL + ? (short)poll_node->events + : POLLPRI, + }; + } +} + +errno_t +epollfd_ctx_ctl(EpollFDCtx *epollfd, int op, int fd2, struct epoll_event *ev) +{ + errno_t ec; + + (void)pthread_mutex_lock(&epollfd->mutex); + ec = epollfd_ctx_ctl_impl(epollfd, op, fd2, ev); + (void)pthread_mutex_unlock(&epollfd->mutex); + + return ec; +} + +static errno_t +epollfd_ctx_wait_impl(EpollFDCtx *epollfd, struct epoll_event *ev, int cnt, + int *actual_cnt) +{ + errno_t ec; + + assert(cnt >= 1); + + ec = epollfd_ctx_make_pfds_space(epollfd); + if (ec != 0) { + return ec; + } + + epollfd_ctx_fill_pollfds(epollfd, epollfd->pfds); + + int n = poll(epollfd->pfds, (nfds_t)(1 + epollfd->poll_fds_size), 0); + if (n < 0) { + return errno; + } + if (n == 0) { + *actual_cnt = 0; + return 0; + } + + { + RegisteredFDsNode *poll_node, *tmp_poll_node; + size_t i = 1; + TAILQ_FOREACH_SAFE(poll_node, &epollfd->poll_fds, + pollfd_list_entry, tmp_poll_node) + { + struct pollfd *pfd = &epollfd->pfds[i++]; + + if (pfd->revents & POLLNVAL) { + epollfd_ctx_remove_node(epollfd, poll_node); + } else if (pfd->revents) { + registered_fds_node_trigger_self(poll_node, + epollfd); + } + } + } + +again:; + + /* + * Each registered fd can produce a maximum of 3 kevents. If + * the provided space in 'ev' is large enough to hold results + * for all registered fds, provide enough space for the kevent + * call as well. Add some wiggle room for the 'poll only fd' + * notification mechanism. + */ + if ((size_t)cnt >= epollfd->registered_fds_size) { + if (__builtin_add_overflow(cnt, 1, &cnt)) { + return ENOMEM; + } + if (__builtin_mul_overflow(cnt, 3, &cnt)) { + return ENOMEM; + } + } + + ec = epollfd_ctx_make_kevs_space(epollfd, (size_t)cnt); + if (ec != 0) { + return ec; + } + + struct kevent *kevs = epollfd->kevs; + assert(kevs != NULL); + + n = kevent(epollfd->kq, NULL, 0, kevs, cnt, &(struct timespec){0, 0}); + if (n < 0) { + return errno; + } + + int j = 0; + + for (int i = 0; i < n; ++i) { + RegisteredFDsNode *fd2_node = + (RegisteredFDsNode *)kevs[i].udata; + + if (!fd2_node) { +#ifdef EVFILT_USER + assert(kevs[i].filter == EVFILT_USER); +#else + assert(kevs[i].filter == EVFILT_READ); +#endif + assert(kevs[i].udata == 0); + continue; + } + + uint32_t old_revents = fd2_node->revents; + NeededFilters old_needed_filters = get_needed_filters( + fd2_node); + + registered_fds_node_feed_event(fd2_node, epollfd, &kevs[i]); + + if (fd2_node->node_type != NODE_TYPE_POLL && + !(fd2_node->is_edge_triggered && + fd2_node->eof_state == + (EOF_STATE_READ_EOF | EOF_STATE_WRITE_EOF) && + fd2_node->node_type != NODE_TYPE_FIFO)) { + + NeededFilters needed_filters = get_needed_filters( + fd2_node); + + if (old_needed_filters.evfilt_read != + needed_filters.evfilt_read || + old_needed_filters.evfilt_write != + needed_filters.evfilt_write) { + + if (epollfd_ctx__register_events(epollfd, + fd2_node) != 0) { + epollfd_ctx__remove_node_from_kq( + epollfd, fd2_node); + } + } + } + + if (fd2_node->revents && !old_revents) { + ev[j++].data.ptr = fd2_node; + } + } + + { + int completion_kq = -1; + + for (int i = 0; i < j; ++i) { + RegisteredFDsNode *fd2_node = + (RegisteredFDsNode *)ev[i].data.ptr; + + if (n == cnt || fd2_node->is_edge_triggered) { + registered_fds_node_register_for_completion( + &completion_kq, fd2_node); + } + } + + registered_fds_node_complete(completion_kq); + } + + for (int i = 0; i < j; ++i) { + RegisteredFDsNode *fd2_node = + (RegisteredFDsNode *)ev[i].data.ptr; + + ev[i].events = fd2_node->revents; + ev[i].data = fd2_node->data; + + fd2_node->revents = 0; + fd2_node->got_evfilt_read = false; + fd2_node->got_evfilt_write = false; + fd2_node->got_evfilt_except = false; + + if (fd2_node->is_oneshot) { + epollfd_ctx__remove_node_from_kq(epollfd, fd2_node); + } + } + + if (n && j == 0) { + goto again; + } + + *actual_cnt = j; + return 0; +} + +errno_t +epollfd_ctx_wait(EpollFDCtx *epollfd, struct epoll_event *ev, int cnt, + int *actual_cnt) +{ + errno_t ec; + + (void)pthread_mutex_lock(&epollfd->mutex); + ec = epollfd_ctx_wait_impl(epollfd, ev, cnt, actual_cnt); + (void)pthread_mutex_unlock(&epollfd->mutex); + + return ec; +} diff --git a/tpws/epoll-shim/src/epollfd_ctx.h b/tpws/epoll-shim/src/epollfd_ctx.h new file mode 100644 index 0000000..1af7195 --- /dev/null +++ b/tpws/epoll-shim/src/epollfd_ctx.h @@ -0,0 +1,108 @@ +#ifndef EPOLLFD_CTX_H_ +#define EPOLLFD_CTX_H_ + +#include "fix.h" + +#define SHIM_SYS_SHIM_HELPERS +#include + +#include +#include + +#include +#include +#include + +#include +#include + +struct registered_fds_node_; +typedef struct registered_fds_node_ RegisteredFDsNode; + +typedef enum { + EOF_STATE_READ_EOF = 0x01, + EOF_STATE_WRITE_EOF = 0x02, +} EOFState; + +typedef enum { + NODE_TYPE_FIFO = 1, + NODE_TYPE_SOCKET = 2, + NODE_TYPE_KQUEUE = 3, + NODE_TYPE_OTHER = 4, + NODE_TYPE_POLL = 5, +} NodeType; + +struct registered_fds_node_ { + RB_ENTRY(registered_fds_node_) entry; + TAILQ_ENTRY(registered_fds_node_) pollfd_list_entry; + + int fd; + epoll_data_t data; + + bool is_registered; + + bool has_evfilt_read; + bool has_evfilt_write; + bool has_evfilt_except; + + bool got_evfilt_read; + bool got_evfilt_write; + bool got_evfilt_except; + + NodeType node_type; + union { + struct { + bool readable; + bool writable; + } fifo; + } node_data; + int eof_state; + bool pollpri_active; + + uint16_t events; + uint32_t revents; + + bool is_edge_triggered; + bool is_oneshot; + + bool is_on_pollfd_list; + int self_pipe[2]; +}; + +typedef TAILQ_HEAD(pollfds_list_, registered_fds_node_) PollFDList; +typedef RB_HEAD(registered_fds_set_, registered_fds_node_) RegisteredFDsSet; + +typedef struct { + int kq; // non owning + pthread_mutex_t mutex; + + PollFDList poll_fds; + size_t poll_fds_size; + + RegisteredFDsSet registered_fds; + size_t registered_fds_size; + + struct kevent *kevs; + size_t kevs_length; + + struct pollfd *pfds; + size_t pfds_length; + + pthread_mutex_t nr_polling_threads_mutex; + pthread_cond_t nr_polling_threads_cond; + unsigned long nr_polling_threads; + + int self_pipe[2]; +} EpollFDCtx; + +errno_t epollfd_ctx_init(EpollFDCtx *epollfd, int kq); +errno_t epollfd_ctx_terminate(EpollFDCtx *epollfd); + +void epollfd_ctx_fill_pollfds(EpollFDCtx *epollfd, struct pollfd *pfds); + +errno_t epollfd_ctx_ctl(EpollFDCtx *epollfd, int op, int fd2, + struct epoll_event *ev); +errno_t epollfd_ctx_wait(EpollFDCtx *epollfd, struct epoll_event *ev, int cnt, + int *actual_cnt); + +#endif diff --git a/tpws/epoll-shim/src/eventfd_ctx.h b/tpws/epoll-shim/src/eventfd_ctx.h new file mode 100644 index 0000000..3e5bb55 --- /dev/null +++ b/tpws/epoll-shim/src/eventfd_ctx.h @@ -0,0 +1,31 @@ +#ifndef EVENTFD_CTX_H_ +#define EVENTFD_CTX_H_ + +#include "fix.h" + +#include +#include +#include + +#include + +#define EVENTFD_CTX_FLAG_SEMAPHORE (1 << 0) + +typedef struct { + int kq_; // non owning + int flags_; + pthread_mutex_t mutex_; + + bool is_signalled_; + int self_pipe_[2]; // only used if EVFILT_USER is not available + uint_least64_t counter_; +} EventFDCtx; + +errno_t eventfd_ctx_init(EventFDCtx *eventfd, int kq, unsigned int counter, + int flags); +errno_t eventfd_ctx_terminate(EventFDCtx *eventfd); + +errno_t eventfd_ctx_write(EventFDCtx *eventfd, uint64_t value); +errno_t eventfd_ctx_read(EventFDCtx *eventfd, uint64_t *value); + +#endif diff --git a/tpws/epoll-shim/src/fix.c b/tpws/epoll-shim/src/fix.c new file mode 100644 index 0000000..6fbd3f5 --- /dev/null +++ b/tpws/epoll-shim/src/fix.c @@ -0,0 +1,19 @@ +#include "fix.h" + +#ifdef __APPLE__ + +#include + +int ppoll(struct pollfd *fds, nfds_t nfds,const struct timespec *tmo_p, const sigset_t *sigmask) +{ + // macos does not implement ppoll + // this is a hacky ppoll shim. only for tpws which does not require sigmask + if (sigmask) + { + errno = EINVAL; + return -1; + } + return poll(fds,nfds,tmo_p ? tmo_p->tv_sec*1000 + tmo_p->tv_nsec/1000000 : -1); +} + +#endif diff --git a/tpws/epoll-shim/src/fix.h b/tpws/epoll-shim/src/fix.h new file mode 100644 index 0000000..ebefc14 --- /dev/null +++ b/tpws/epoll-shim/src/fix.h @@ -0,0 +1,20 @@ +#pragma once + +#ifndef _ERRNO_T_DEFINED +#define _ERRNO_T_DEFINED +typedef int errno_t; +#endif + +#ifdef __APPLE__ + +#include +#include +#include + +struct itimerspec { + struct timespec it_interval; + struct timespec it_value; +}; +int ppoll(struct pollfd *fds, nfds_t nfds,const struct timespec *tmo_p, const sigset_t *sigmask); + +#endif diff --git a/tpws/epoll-shim/src/signalfd_ctx.h b/tpws/epoll-shim/src/signalfd_ctx.h new file mode 100644 index 0000000..8623f63 --- /dev/null +++ b/tpws/epoll-shim/src/signalfd_ctx.h @@ -0,0 +1,19 @@ +#ifndef SIGNALFD_CTX_H_ +#define SIGNALFD_CTX_H_ + +#include "fix.h" + +#include +#include +#include + +typedef struct { + int kq; // non owning +} SignalFDCtx; + +errno_t signalfd_ctx_init(SignalFDCtx *signalfd, int kq, const sigset_t *sigs); +errno_t signalfd_ctx_terminate(SignalFDCtx *signalfd); + +errno_t signalfd_ctx_read(SignalFDCtx *signalfd, uint32_t *ident); + +#endif diff --git a/tpws/epoll-shim/src/timerfd_ctx.h b/tpws/epoll-shim/src/timerfd_ctx.h new file mode 100644 index 0000000..8b41507 --- /dev/null +++ b/tpws/epoll-shim/src/timerfd_ctx.h @@ -0,0 +1,38 @@ +#ifndef TIMERFD_CTX_H_ +#define TIMERFD_CTX_H_ + +#include "fix.h" + +#include +#include +#include +#include + +#include +#include + +typedef struct { + int kq; // non owning + int flags; + pthread_mutex_t mutex; + + int clockid; + /* + * Next expiration time, absolute (clock given by clockid). + * If it_interval is != 0, it is a periodic timer. + * If it_value is == 0, the timer is disarmed. + */ + struct itimerspec current_itimerspec; + uint64_t nr_expirations; +} TimerFDCtx; + +errno_t timerfd_ctx_init(TimerFDCtx *timerfd, int kq, int clockid); +errno_t timerfd_ctx_terminate(TimerFDCtx *timerfd); + +errno_t timerfd_ctx_settime(TimerFDCtx *timerfd, int flags, + struct itimerspec const *new, struct itimerspec *old); +errno_t timerfd_ctx_gettime(TimerFDCtx *timerfd, struct itimerspec *cur); + +errno_t timerfd_ctx_read(TimerFDCtx *timerfd, uint64_t *value); + +#endif diff --git a/tpws/gzip.c b/tpws/gzip.c new file mode 100644 index 0000000..cb46670 --- /dev/null +++ b/tpws/gzip.c @@ -0,0 +1,82 @@ +#include "gzip.h" +#include +#include +#include + +#define ZCHUNK 16384 +#define BUFMIN 128 +#define BUFCHUNK (1024*128) + +int z_readfile(FILE *F, char **buf, size_t *size) +{ + z_stream zs; + int r; + unsigned char in[ZCHUNK]; + size_t bufsize; + void *newbuf; + + memset(&zs, 0, sizeof(zs)); + + *buf = NULL; + bufsize = *size = 0; + + r = inflateInit2(&zs, 47); + if (r != Z_OK) return r; + + do + { + zs.avail_in = fread(in, 1, sizeof(in), F); + if (ferror(F)) + { + r = Z_ERRNO; + goto zerr; + } + if (!zs.avail_in) break; + zs.next_in = in; + do + { + if ((bufsize - *size) < BUFMIN) + { + bufsize += BUFCHUNK; + newbuf = *buf ? realloc(*buf, bufsize) : malloc(bufsize); + if (!newbuf) + { + r = Z_MEM_ERROR; + goto zerr; + } + *buf = newbuf; + } + zs.avail_out = bufsize - *size; + zs.next_out = (unsigned char*)(*buf + *size); + r = inflate(&zs, Z_NO_FLUSH); + if (r != Z_OK && r != Z_STREAM_END) goto zerr; + *size = bufsize - zs.avail_out; + } while (r == Z_OK && zs.avail_in); + } while (r == Z_OK); + + if (*size < bufsize) + { + // free extra space + if ((newbuf = realloc(*buf, *size))) *buf = newbuf; + } + + inflateEnd(&zs); + return Z_OK; + +zerr: + inflateEnd(&zs); + if (*buf) + { + free(*buf); + *buf = NULL; + } + return r; +} + +bool is_gzip(FILE* F) +{ + unsigned char magic[2]; + bool b = !fseek(F, 0, SEEK_SET) && fread(magic, 1, 2, F) == 2 && magic[0] == 0x1F && magic[1] == 0x8B; + fseek(F, 0, SEEK_SET); + return b; +} diff --git a/tpws/gzip.h b/tpws/gzip.h new file mode 100644 index 0000000..15e30d2 --- /dev/null +++ b/tpws/gzip.h @@ -0,0 +1,8 @@ +#pragma once + +#include +#include +#include + +int z_readfile(FILE *F,char **buf,size_t *size); +bool is_gzip(FILE* F); diff --git a/tpws/helpers.c b/tpws/helpers.c new file mode 100644 index 0000000..29427da --- /dev/null +++ b/tpws/helpers.c @@ -0,0 +1,146 @@ +#define _GNU_SOURCE + +#include "helpers.h" +#include +#include +#include +#include +#include +#include +#include + +char *strncasestr(const char *s,const char *find, size_t slen) +{ + char c, sc; + size_t len; + + if ((c = *find++) != '\0') + { + len = strlen(find); + do + { + do + { + if (slen-- < 1 || (sc = *s++) == '\0') return NULL; + } while (toupper(c) != toupper(sc)); + if (len > slen) return NULL; + } while (strncasecmp(s, find, len) != 0); + s--; + } + return (char *)s; +} + +void print_sockaddr(const struct sockaddr *sa) +{ + char str[64]; + switch (sa->sa_family) + { + case AF_INET: + if (inet_ntop(sa->sa_family, &((struct sockaddr_in*)sa)->sin_addr, str, sizeof(str))) + printf("%s:%d", str, ntohs(((struct sockaddr_in*)sa)->sin_port)); + break; + case AF_INET6: + if (inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, str, sizeof(str))) + printf("%s:%d", str, ntohs(((struct sockaddr_in6*)sa)->sin6_port)); + break; + default: + printf("UNKNOWN_FAMILY_%d", sa->sa_family); + } +} + + +// -1 = error, 0 = not local, 1 = local +bool check_local_ip(const struct sockaddr *saddr) +{ + struct ifaddrs *addrs,*a; + + if (getifaddrs(&addrs)<0) return false; + a = addrs; + + bool bres=false; + while (a) + { + if (a->ifa_addr && sacmp(a->ifa_addr,saddr)) + { + bres=true; + break; + } + a = a->ifa_next; + } + + freeifaddrs(addrs); + return bres; +} +void print_addrinfo(const struct addrinfo *ai) +{ + char str[64]; + while (ai) + { + switch (ai->ai_family) + { + case AF_INET: + if (inet_ntop(ai->ai_family, &((struct sockaddr_in*)ai->ai_addr)->sin_addr, str, sizeof(str))) + printf("%s\n", str); + break; + case AF_INET6: + if (inet_ntop(ai->ai_family, &((struct sockaddr_in6*)ai->ai_addr)->sin6_addr, str, sizeof(str))) + printf( "%s\n", str); + break; + } + ai = ai->ai_next; + } +} + + + +bool saismapped(const struct sockaddr_in6 *sa) +{ + // ::ffff:1.2.3.4 + return !memcmp(sa->sin6_addr.s6_addr,"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff",12); +} +bool samappedcmp(const struct sockaddr_in *sa1,const struct sockaddr_in6 *sa2) +{ + return saismapped(sa2) && !memcmp(sa2->sin6_addr.s6_addr+12,&sa1->sin_addr.s_addr,4); +} +bool sacmp(const struct sockaddr *sa1,const struct sockaddr *sa2) +{ + return sa1->sa_family==AF_INET && sa2->sa_family==AF_INET && !memcmp(&((struct sockaddr_in*)sa1)->sin_addr,&((struct sockaddr_in*)sa2)->sin_addr,sizeof(struct in_addr)) || + sa1->sa_family==AF_INET6 && sa2->sa_family==AF_INET6 && !memcmp(&((struct sockaddr_in6*)sa1)->sin6_addr,&((struct sockaddr_in6*)sa2)->sin6_addr,sizeof(struct in6_addr)) || + sa1->sa_family==AF_INET && sa2->sa_family==AF_INET6 && samappedcmp((struct sockaddr_in*)sa1,(struct sockaddr_in6*)sa2) || + sa1->sa_family==AF_INET6 && sa2->sa_family==AF_INET && samappedcmp((struct sockaddr_in*)sa2,(struct sockaddr_in6*)sa1); +} +uint16_t saport(const struct sockaddr *sa) +{ + return htons(sa->sa_family==AF_INET ? ((struct sockaddr_in*)sa)->sin_port : + sa->sa_family==AF_INET6 ? ((struct sockaddr_in6*)sa)->sin6_port : 0); +} +bool saconvmapped(struct sockaddr_storage *a) +{ + if ((a->ss_family == AF_INET6) && saismapped((struct sockaddr_in6*)a)) + { + uint32_t ip4 = *(uint32_t*)(((struct sockaddr_in6*)a)->sin6_addr.s6_addr+12); + uint16_t port = ((struct sockaddr_in6*)a)->sin6_port; + a->ss_family = AF_INET; + ((struct sockaddr_in*)a)->sin_addr.s_addr = ip4; + ((struct sockaddr_in*)a)->sin_port = port; + return true; + } + return false; +} + + + +int set_keepalive(int fd) +{ + int yes=1; + return setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(int))!=-1; +} +int get_so_error(int fd) +{ + // getsockopt(SO_ERROR) clears error + int errn; + socklen_t optlen = sizeof(errn); + if(getsockopt(fd, SOL_SOCKET, SO_ERROR, &errn, &optlen) == -1) + errn=errno; + return errn; +} diff --git a/tpws/helpers.h b/tpws/helpers.h new file mode 100644 index 0000000..25079e0 --- /dev/null +++ b/tpws/helpers.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include +#include +#include + +char *strncasestr(const char *s,const char *find, size_t slen); + +void print_sockaddr(const struct sockaddr *sa); +void print_addrinfo(const struct addrinfo *ai); +bool check_local_ip(const struct sockaddr *saddr); + +bool saismapped(const struct sockaddr_in6 *sa); +bool samappedcmp(const struct sockaddr_in *sa1,const struct sockaddr_in6 *sa2); +bool sacmp(const struct sockaddr *sa1,const struct sockaddr *sa2); +uint16_t saport(const struct sockaddr *sa); +// true = was converted +bool saconvmapped(struct sockaddr_storage *a); + +int set_keepalive(int fd); +int get_so_error(int fd); diff --git a/tpws/hostlist.c b/tpws/hostlist.c new file mode 100644 index 0000000..87116e2 --- /dev/null +++ b/tpws/hostlist.c @@ -0,0 +1,112 @@ +#include +#include "hostlist.h" +#include "gzip.h" +#include "params.h" + +static bool addpool(strpool **hostlist, char **s, char *end) +{ + char *p; + + // advance until eol lowering all chars + for (p = *s; p +#include "strpool.h" + +bool LoadHostList(strpool **hostlist, char *filename); +bool SearchHostList(strpool *hostlist, const char *host, bool debug); diff --git a/tpws/macos/net/pfvar.h b/tpws/macos/net/pfvar.h new file mode 100644 index 0000000..e6f6b6e --- /dev/null +++ b/tpws/macos/net/pfvar.h @@ -0,0 +1,47 @@ +#pragma once + +#include +#include + +// taken from an older apple SDK +// some fields are different from BSDs + +#define DIOCNATLOOK _IOWR('D', 23, struct pfioc_natlook) + +enum { PF_INOUT, PF_IN, PF_OUT, PF_FWD }; + +struct pf_addr { + union { + struct in_addr v4; + struct in6_addr v6; + u_int8_t addr8[16]; + u_int16_t addr16[8]; + u_int32_t addr32[4]; + } pfa; /* 128-bit address */ +#define v4 pfa.v4 +#define v6 pfa.v6 +#define addr8 pfa.addr8 +#define addr16 pfa.addr16 +#define addr32 pfa.addr32 +}; + +union pf_state_xport { + u_int16_t port; + u_int16_t call_id; + u_int32_t spi; +}; + +struct pfioc_natlook { + struct pf_addr saddr; + struct pf_addr daddr; + struct pf_addr rsaddr; + struct pf_addr rdaddr; + union pf_state_xport sxport; + union pf_state_xport dxport; + union pf_state_xport rsxport; + union pf_state_xport rdxport; + sa_family_t af; + u_int8_t proto; + u_int8_t proto_variant; + u_int8_t direction; +}; diff --git a/tpws/macos/sys/tree.h b/tpws/macos/sys/tree.h new file mode 100644 index 0000000..697fddf --- /dev/null +++ b/tpws/macos/sys/tree.h @@ -0,0 +1,803 @@ +/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ +/* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ +/* $FreeBSD: releng/12.2/sys/sys/tree.h 326256 2017-11-27 15:01:59Z pfg $ */ + +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright 2002 Niels Provos + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_TREE_H_ +#define _SYS_TREE_H_ + +#include + +/* + * This file defines data structures for different types of trees: + * splay trees and red-black trees. + * + * A splay tree is a self-organizing data structure. Every operation + * on the tree causes a splay to happen. The splay moves the requested + * node to the root of the tree and partly rebalances it. + * + * This has the benefit that request locality causes faster lookups as + * the requested nodes move to the top of the tree. On the other hand, + * every lookup causes memory writes. + * + * The Balance Theorem bounds the total access time for m operations + * and n inserts on an initially empty tree as O((m + n)lg n). The + * amortized cost for a sequence of m accesses to a splay tree is O(lg n); + * + * A red-black tree is a binary search tree with the node color as an + * extra attribute. It fulfills a set of conditions: + * - every search path from the root to a leaf consists of the + * same number of black nodes, + * - each red node (except for the root) has a black parent, + * - each leaf node is black. + * + * Every operation on a red-black tree is bounded as O(lg n). + * The maximum height of a red-black tree is 2lg (n+1). + */ + +#define SPLAY_HEAD(name, type) \ +struct name { \ + struct type *sph_root; /* root of the tree */ \ +} + +#define SPLAY_INITIALIZER(root) \ + { NULL } + +#define SPLAY_INIT(root) do { \ + (root)->sph_root = NULL; \ +} while (/*CONSTCOND*/ 0) + +#define SPLAY_ENTRY(type) \ +struct { \ + struct type *spe_left; /* left element */ \ + struct type *spe_right; /* right element */ \ +} + +#define SPLAY_LEFT(elm, field) (elm)->field.spe_left +#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right +#define SPLAY_ROOT(head) (head)->sph_root +#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) + +/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ +#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ + SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ + SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ + (head)->sph_root = tmp; \ +} while (/*CONSTCOND*/ 0) + +#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ + SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ + SPLAY_LEFT(tmp, field) = (head)->sph_root; \ + (head)->sph_root = tmp; \ +} while (/*CONSTCOND*/ 0) + +#define SPLAY_LINKLEFT(head, tmp, field) do { \ + SPLAY_LEFT(tmp, field) = (head)->sph_root; \ + tmp = (head)->sph_root; \ + (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ +} while (/*CONSTCOND*/ 0) + +#define SPLAY_LINKRIGHT(head, tmp, field) do { \ + SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ + tmp = (head)->sph_root; \ + (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ +} while (/*CONSTCOND*/ 0) + +#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ + SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ + SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\ + SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ + SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ +} while (/*CONSTCOND*/ 0) + +/* Generates prototypes and inline functions */ + +#define SPLAY_PROTOTYPE(name, type, field, cmp) \ +void name##_SPLAY(struct name *, struct type *); \ +void name##_SPLAY_MINMAX(struct name *, int); \ +struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ +struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ + \ +/* Finds the node with the same key as elm */ \ +static __inline struct type * \ +name##_SPLAY_FIND(struct name *head, struct type *elm) \ +{ \ + if (SPLAY_EMPTY(head)) \ + return(NULL); \ + name##_SPLAY(head, elm); \ + if ((cmp)(elm, (head)->sph_root) == 0) \ + return (head->sph_root); \ + return (NULL); \ +} \ + \ +static __inline struct type * \ +name##_SPLAY_NEXT(struct name *head, struct type *elm) \ +{ \ + name##_SPLAY(head, elm); \ + if (SPLAY_RIGHT(elm, field) != NULL) { \ + elm = SPLAY_RIGHT(elm, field); \ + while (SPLAY_LEFT(elm, field) != NULL) { \ + elm = SPLAY_LEFT(elm, field); \ + } \ + } else \ + elm = NULL; \ + return (elm); \ +} \ + \ +static __inline struct type * \ +name##_SPLAY_MIN_MAX(struct name *head, int val) \ +{ \ + name##_SPLAY_MINMAX(head, val); \ + return (SPLAY_ROOT(head)); \ +} + +/* Main splay operation. + * Moves node close to the key of elm to top + */ +#define SPLAY_GENERATE(name, type, field, cmp) \ +struct type * \ +name##_SPLAY_INSERT(struct name *head, struct type *elm) \ +{ \ + if (SPLAY_EMPTY(head)) { \ + SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ + } else { \ + int __comp; \ + name##_SPLAY(head, elm); \ + __comp = (cmp)(elm, (head)->sph_root); \ + if(__comp < 0) { \ + SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\ + SPLAY_RIGHT(elm, field) = (head)->sph_root; \ + SPLAY_LEFT((head)->sph_root, field) = NULL; \ + } else if (__comp > 0) { \ + SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\ + SPLAY_LEFT(elm, field) = (head)->sph_root; \ + SPLAY_RIGHT((head)->sph_root, field) = NULL; \ + } else \ + return ((head)->sph_root); \ + } \ + (head)->sph_root = (elm); \ + return (NULL); \ +} \ + \ +struct type * \ +name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ +{ \ + struct type *__tmp; \ + if (SPLAY_EMPTY(head)) \ + return (NULL); \ + name##_SPLAY(head, elm); \ + if ((cmp)(elm, (head)->sph_root) == 0) { \ + if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ + (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\ + } else { \ + __tmp = SPLAY_RIGHT((head)->sph_root, field); \ + (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\ + name##_SPLAY(head, elm); \ + SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ + } \ + return (elm); \ + } \ + return (NULL); \ +} \ + \ +void \ +name##_SPLAY(struct name *head, struct type *elm) \ +{ \ + struct type __node, *__left, *__right, *__tmp; \ + int __comp; \ +\ + SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ + __left = __right = &__node; \ +\ + while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ + if (__comp < 0) { \ + __tmp = SPLAY_LEFT((head)->sph_root, field); \ + if (__tmp == NULL) \ + break; \ + if ((cmp)(elm, __tmp) < 0){ \ + SPLAY_ROTATE_RIGHT(head, __tmp, field); \ + if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ + break; \ + } \ + SPLAY_LINKLEFT(head, __right, field); \ + } else if (__comp > 0) { \ + __tmp = SPLAY_RIGHT((head)->sph_root, field); \ + if (__tmp == NULL) \ + break; \ + if ((cmp)(elm, __tmp) > 0){ \ + SPLAY_ROTATE_LEFT(head, __tmp, field); \ + if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ + break; \ + } \ + SPLAY_LINKRIGHT(head, __left, field); \ + } \ + } \ + SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ +} \ + \ +/* Splay with either the minimum or the maximum element \ + * Used to find minimum or maximum element in tree. \ + */ \ +void name##_SPLAY_MINMAX(struct name *head, int __comp) \ +{ \ + struct type __node, *__left, *__right, *__tmp; \ +\ + SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ + __left = __right = &__node; \ +\ + while (1) { \ + if (__comp < 0) { \ + __tmp = SPLAY_LEFT((head)->sph_root, field); \ + if (__tmp == NULL) \ + break; \ + if (__comp < 0){ \ + SPLAY_ROTATE_RIGHT(head, __tmp, field); \ + if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ + break; \ + } \ + SPLAY_LINKLEFT(head, __right, field); \ + } else if (__comp > 0) { \ + __tmp = SPLAY_RIGHT((head)->sph_root, field); \ + if (__tmp == NULL) \ + break; \ + if (__comp > 0) { \ + SPLAY_ROTATE_LEFT(head, __tmp, field); \ + if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ + break; \ + } \ + SPLAY_LINKRIGHT(head, __left, field); \ + } \ + } \ + SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ +} + +#define SPLAY_NEGINF -1 +#define SPLAY_INF 1 + +#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) +#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) +#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) +#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) +#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ + : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) +#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ + : name##_SPLAY_MIN_MAX(x, SPLAY_INF)) + +#define SPLAY_FOREACH(x, name, head) \ + for ((x) = SPLAY_MIN(name, head); \ + (x) != NULL; \ + (x) = SPLAY_NEXT(name, head, x)) + +/* Macros that define a red-black tree */ +#define RB_HEAD(name, type) \ +struct name { \ + struct type *rbh_root; /* root of the tree */ \ +} + +#define RB_INITIALIZER(root) \ + { NULL } + +#define RB_INIT(root) do { \ + (root)->rbh_root = NULL; \ +} while (/*CONSTCOND*/ 0) + +#define RB_BLACK 0 +#define RB_RED 1 +#define RB_ENTRY(type) \ +struct { \ + struct type *rbe_left; /* left element */ \ + struct type *rbe_right; /* right element */ \ + struct type *rbe_parent; /* parent element */ \ + int rbe_color; /* node color */ \ +} + +#define RB_LEFT(elm, field) (elm)->field.rbe_left +#define RB_RIGHT(elm, field) (elm)->field.rbe_right +#define RB_PARENT(elm, field) (elm)->field.rbe_parent +#define RB_COLOR(elm, field) (elm)->field.rbe_color +#define RB_ROOT(head) (head)->rbh_root +#define RB_EMPTY(head) (RB_ROOT(head) == NULL) + +#define RB_SET(elm, parent, field) do { \ + RB_PARENT(elm, field) = parent; \ + RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ + RB_COLOR(elm, field) = RB_RED; \ +} while (/*CONSTCOND*/ 0) + +#define RB_SET_BLACKRED(black, red, field) do { \ + RB_COLOR(black, field) = RB_BLACK; \ + RB_COLOR(red, field) = RB_RED; \ +} while (/*CONSTCOND*/ 0) + +#ifndef RB_AUGMENT +#define RB_AUGMENT(x) do {} while (0) +#endif + +#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ + (tmp) = RB_RIGHT(elm, field); \ + if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ + RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \ + } \ + RB_AUGMENT(elm); \ + if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ + if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ + RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ + else \ + RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ + } else \ + (head)->rbh_root = (tmp); \ + RB_LEFT(tmp, field) = (elm); \ + RB_PARENT(elm, field) = (tmp); \ + RB_AUGMENT(tmp); \ + if ((RB_PARENT(tmp, field))) \ + RB_AUGMENT(RB_PARENT(tmp, field)); \ +} while (/*CONSTCOND*/ 0) + +#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ + (tmp) = RB_LEFT(elm, field); \ + if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ + RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \ + } \ + RB_AUGMENT(elm); \ + if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ + if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ + RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ + else \ + RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ + } else \ + (head)->rbh_root = (tmp); \ + RB_RIGHT(tmp, field) = (elm); \ + RB_PARENT(elm, field) = (tmp); \ + RB_AUGMENT(tmp); \ + if ((RB_PARENT(tmp, field))) \ + RB_AUGMENT(RB_PARENT(tmp, field)); \ +} while (/*CONSTCOND*/ 0) + +/* Generates prototypes and inline functions */ +#define RB_PROTOTYPE(name, type, field, cmp) \ + RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) +#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ + RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) +#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ + RB_PROTOTYPE_INSERT_COLOR(name, type, attr); \ + RB_PROTOTYPE_REMOVE_COLOR(name, type, attr); \ + RB_PROTOTYPE_INSERT(name, type, attr); \ + RB_PROTOTYPE_REMOVE(name, type, attr); \ + RB_PROTOTYPE_FIND(name, type, attr); \ + RB_PROTOTYPE_NFIND(name, type, attr); \ + RB_PROTOTYPE_NEXT(name, type, attr); \ + RB_PROTOTYPE_PREV(name, type, attr); \ + RB_PROTOTYPE_MINMAX(name, type, attr); +#define RB_PROTOTYPE_INSERT_COLOR(name, type, attr) \ + attr void name##_RB_INSERT_COLOR(struct name *, struct type *) +#define RB_PROTOTYPE_REMOVE_COLOR(name, type, attr) \ + attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *) +#define RB_PROTOTYPE_REMOVE(name, type, attr) \ + attr struct type *name##_RB_REMOVE(struct name *, struct type *) +#define RB_PROTOTYPE_INSERT(name, type, attr) \ + attr struct type *name##_RB_INSERT(struct name *, struct type *) +#define RB_PROTOTYPE_FIND(name, type, attr) \ + attr struct type *name##_RB_FIND(struct name *, struct type *) +#define RB_PROTOTYPE_NFIND(name, type, attr) \ + attr struct type *name##_RB_NFIND(struct name *, struct type *) +#define RB_PROTOTYPE_NEXT(name, type, attr) \ + attr struct type *name##_RB_NEXT(struct type *) +#define RB_PROTOTYPE_PREV(name, type, attr) \ + attr struct type *name##_RB_PREV(struct type *) +#define RB_PROTOTYPE_MINMAX(name, type, attr) \ + attr struct type *name##_RB_MINMAX(struct name *, int) + +/* Main rb operation. + * Moves node close to the key of elm to top + */ +#define RB_GENERATE(name, type, field, cmp) \ + RB_GENERATE_INTERNAL(name, type, field, cmp,) +#define RB_GENERATE_STATIC(name, type, field, cmp) \ + RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) +#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ + RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ + RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ + RB_GENERATE_INSERT(name, type, field, cmp, attr) \ + RB_GENERATE_REMOVE(name, type, field, attr) \ + RB_GENERATE_FIND(name, type, field, cmp, attr) \ + RB_GENERATE_NFIND(name, type, field, cmp, attr) \ + RB_GENERATE_NEXT(name, type, field, attr) \ + RB_GENERATE_PREV(name, type, field, attr) \ + RB_GENERATE_MINMAX(name, type, field, attr) + +#define RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ +attr void \ +name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ +{ \ + struct type *parent, *gparent, *tmp; \ + while ((parent = RB_PARENT(elm, field)) != NULL && \ + RB_COLOR(parent, field) == RB_RED) { \ + gparent = RB_PARENT(parent, field); \ + if (parent == RB_LEFT(gparent, field)) { \ + tmp = RB_RIGHT(gparent, field); \ + if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ + RB_COLOR(tmp, field) = RB_BLACK; \ + RB_SET_BLACKRED(parent, gparent, field);\ + elm = gparent; \ + continue; \ + } \ + if (RB_RIGHT(parent, field) == elm) { \ + RB_ROTATE_LEFT(head, parent, tmp, field);\ + tmp = parent; \ + parent = elm; \ + elm = tmp; \ + } \ + RB_SET_BLACKRED(parent, gparent, field); \ + RB_ROTATE_RIGHT(head, gparent, tmp, field); \ + } else { \ + tmp = RB_LEFT(gparent, field); \ + if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ + RB_COLOR(tmp, field) = RB_BLACK; \ + RB_SET_BLACKRED(parent, gparent, field);\ + elm = gparent; \ + continue; \ + } \ + if (RB_LEFT(parent, field) == elm) { \ + RB_ROTATE_RIGHT(head, parent, tmp, field);\ + tmp = parent; \ + parent = elm; \ + elm = tmp; \ + } \ + RB_SET_BLACKRED(parent, gparent, field); \ + RB_ROTATE_LEFT(head, gparent, tmp, field); \ + } \ + } \ + RB_COLOR(head->rbh_root, field) = RB_BLACK; \ +} + +#define RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ +attr void \ +name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ +{ \ + struct type *tmp; \ + while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ + elm != RB_ROOT(head)) { \ + if (RB_LEFT(parent, field) == elm) { \ + tmp = RB_RIGHT(parent, field); \ + if (RB_COLOR(tmp, field) == RB_RED) { \ + RB_SET_BLACKRED(tmp, parent, field); \ + RB_ROTATE_LEFT(head, parent, tmp, field);\ + tmp = RB_RIGHT(parent, field); \ + } \ + if ((RB_LEFT(tmp, field) == NULL || \ + RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ + (RB_RIGHT(tmp, field) == NULL || \ + RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ + RB_COLOR(tmp, field) = RB_RED; \ + elm = parent; \ + parent = RB_PARENT(elm, field); \ + } else { \ + if (RB_RIGHT(tmp, field) == NULL || \ + RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\ + struct type *oleft; \ + if ((oleft = RB_LEFT(tmp, field)) \ + != NULL) \ + RB_COLOR(oleft, field) = RB_BLACK;\ + RB_COLOR(tmp, field) = RB_RED; \ + RB_ROTATE_RIGHT(head, tmp, oleft, field);\ + tmp = RB_RIGHT(parent, field); \ + } \ + RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ + RB_COLOR(parent, field) = RB_BLACK; \ + if (RB_RIGHT(tmp, field)) \ + RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\ + RB_ROTATE_LEFT(head, parent, tmp, field);\ + elm = RB_ROOT(head); \ + break; \ + } \ + } else { \ + tmp = RB_LEFT(parent, field); \ + if (RB_COLOR(tmp, field) == RB_RED) { \ + RB_SET_BLACKRED(tmp, parent, field); \ + RB_ROTATE_RIGHT(head, parent, tmp, field);\ + tmp = RB_LEFT(parent, field); \ + } \ + if ((RB_LEFT(tmp, field) == NULL || \ + RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ + (RB_RIGHT(tmp, field) == NULL || \ + RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ + RB_COLOR(tmp, field) = RB_RED; \ + elm = parent; \ + parent = RB_PARENT(elm, field); \ + } else { \ + if (RB_LEFT(tmp, field) == NULL || \ + RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\ + struct type *oright; \ + if ((oright = RB_RIGHT(tmp, field)) \ + != NULL) \ + RB_COLOR(oright, field) = RB_BLACK;\ + RB_COLOR(tmp, field) = RB_RED; \ + RB_ROTATE_LEFT(head, tmp, oright, field);\ + tmp = RB_LEFT(parent, field); \ + } \ + RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ + RB_COLOR(parent, field) = RB_BLACK; \ + if (RB_LEFT(tmp, field)) \ + RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\ + RB_ROTATE_RIGHT(head, parent, tmp, field);\ + elm = RB_ROOT(head); \ + break; \ + } \ + } \ + } \ + if (elm) \ + RB_COLOR(elm, field) = RB_BLACK; \ +} + +#define RB_GENERATE_REMOVE(name, type, field, attr) \ +attr struct type * \ +name##_RB_REMOVE(struct name *head, struct type *elm) \ +{ \ + struct type *child, *parent, *old = elm; \ + int color; \ + if (RB_LEFT(elm, field) == NULL) \ + child = RB_RIGHT(elm, field); \ + else if (RB_RIGHT(elm, field) == NULL) \ + child = RB_LEFT(elm, field); \ + else { \ + struct type *left; \ + elm = RB_RIGHT(elm, field); \ + while ((left = RB_LEFT(elm, field)) != NULL) \ + elm = left; \ + child = RB_RIGHT(elm, field); \ + parent = RB_PARENT(elm, field); \ + color = RB_COLOR(elm, field); \ + if (child) \ + RB_PARENT(child, field) = parent; \ + if (parent) { \ + if (RB_LEFT(parent, field) == elm) \ + RB_LEFT(parent, field) = child; \ + else \ + RB_RIGHT(parent, field) = child; \ + RB_AUGMENT(parent); \ + } else \ + RB_ROOT(head) = child; \ + if (RB_PARENT(elm, field) == old) \ + parent = elm; \ + (elm)->field = (old)->field; \ + if (RB_PARENT(old, field)) { \ + if (RB_LEFT(RB_PARENT(old, field), field) == old)\ + RB_LEFT(RB_PARENT(old, field), field) = elm;\ + else \ + RB_RIGHT(RB_PARENT(old, field), field) = elm;\ + RB_AUGMENT(RB_PARENT(old, field)); \ + } else \ + RB_ROOT(head) = elm; \ + RB_PARENT(RB_LEFT(old, field), field) = elm; \ + if (RB_RIGHT(old, field)) \ + RB_PARENT(RB_RIGHT(old, field), field) = elm; \ + if (parent) { \ + left = parent; \ + do { \ + RB_AUGMENT(left); \ + } while ((left = RB_PARENT(left, field)) != NULL); \ + } \ + goto color; \ + } \ + parent = RB_PARENT(elm, field); \ + color = RB_COLOR(elm, field); \ + if (child) \ + RB_PARENT(child, field) = parent; \ + if (parent) { \ + if (RB_LEFT(parent, field) == elm) \ + RB_LEFT(parent, field) = child; \ + else \ + RB_RIGHT(parent, field) = child; \ + RB_AUGMENT(parent); \ + } else \ + RB_ROOT(head) = child; \ +color: \ + if (color == RB_BLACK) \ + name##_RB_REMOVE_COLOR(head, parent, child); \ + return (old); \ +} \ + +#define RB_GENERATE_INSERT(name, type, field, cmp, attr) \ +/* Inserts a node into the RB tree */ \ +attr struct type * \ +name##_RB_INSERT(struct name *head, struct type *elm) \ +{ \ + struct type *tmp; \ + struct type *parent = NULL; \ + int comp = 0; \ + tmp = RB_ROOT(head); \ + while (tmp) { \ + parent = tmp; \ + comp = (cmp)(elm, parent); \ + if (comp < 0) \ + tmp = RB_LEFT(tmp, field); \ + else if (comp > 0) \ + tmp = RB_RIGHT(tmp, field); \ + else \ + return (tmp); \ + } \ + RB_SET(elm, parent, field); \ + if (parent != NULL) { \ + if (comp < 0) \ + RB_LEFT(parent, field) = elm; \ + else \ + RB_RIGHT(parent, field) = elm; \ + RB_AUGMENT(parent); \ + } else \ + RB_ROOT(head) = elm; \ + name##_RB_INSERT_COLOR(head, elm); \ + return (NULL); \ +} + +#define RB_GENERATE_FIND(name, type, field, cmp, attr) \ +/* Finds the node with the same key as elm */ \ +attr struct type * \ +name##_RB_FIND(struct name *head, struct type *elm) \ +{ \ + struct type *tmp = RB_ROOT(head); \ + int comp; \ + while (tmp) { \ + comp = cmp(elm, tmp); \ + if (comp < 0) \ + tmp = RB_LEFT(tmp, field); \ + else if (comp > 0) \ + tmp = RB_RIGHT(tmp, field); \ + else \ + return (tmp); \ + } \ + return (NULL); \ +} + +#define RB_GENERATE_NFIND(name, type, field, cmp, attr) \ +/* Finds the first node greater than or equal to the search key */ \ +attr struct type * \ +name##_RB_NFIND(struct name *head, struct type *elm) \ +{ \ + struct type *tmp = RB_ROOT(head); \ + struct type *res = NULL; \ + int comp; \ + while (tmp) { \ + comp = cmp(elm, tmp); \ + if (comp < 0) { \ + res = tmp; \ + tmp = RB_LEFT(tmp, field); \ + } \ + else if (comp > 0) \ + tmp = RB_RIGHT(tmp, field); \ + else \ + return (tmp); \ + } \ + return (res); \ +} + +#define RB_GENERATE_NEXT(name, type, field, attr) \ +/* ARGSUSED */ \ +attr struct type * \ +name##_RB_NEXT(struct type *elm) \ +{ \ + if (RB_RIGHT(elm, field)) { \ + elm = RB_RIGHT(elm, field); \ + while (RB_LEFT(elm, field)) \ + elm = RB_LEFT(elm, field); \ + } else { \ + if (RB_PARENT(elm, field) && \ + (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ + elm = RB_PARENT(elm, field); \ + else { \ + while (RB_PARENT(elm, field) && \ + (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\ + elm = RB_PARENT(elm, field); \ + elm = RB_PARENT(elm, field); \ + } \ + } \ + return (elm); \ +} + +#define RB_GENERATE_PREV(name, type, field, attr) \ +/* ARGSUSED */ \ +attr struct type * \ +name##_RB_PREV(struct type *elm) \ +{ \ + if (RB_LEFT(elm, field)) { \ + elm = RB_LEFT(elm, field); \ + while (RB_RIGHT(elm, field)) \ + elm = RB_RIGHT(elm, field); \ + } else { \ + if (RB_PARENT(elm, field) && \ + (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ + elm = RB_PARENT(elm, field); \ + else { \ + while (RB_PARENT(elm, field) && \ + (elm == RB_LEFT(RB_PARENT(elm, field), field)))\ + elm = RB_PARENT(elm, field); \ + elm = RB_PARENT(elm, field); \ + } \ + } \ + return (elm); \ +} + +#define RB_GENERATE_MINMAX(name, type, field, attr) \ +attr struct type * \ +name##_RB_MINMAX(struct name *head, int val) \ +{ \ + struct type *tmp = RB_ROOT(head); \ + struct type *parent = NULL; \ + while (tmp) { \ + parent = tmp; \ + if (val < 0) \ + tmp = RB_LEFT(tmp, field); \ + else \ + tmp = RB_RIGHT(tmp, field); \ + } \ + return (parent); \ +} + +#define RB_NEGINF -1 +#define RB_INF 1 + +#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) +#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) +#define RB_FIND(name, x, y) name##_RB_FIND(x, y) +#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) +#define RB_NEXT(name, x, y) name##_RB_NEXT(y) +#define RB_PREV(name, x, y) name##_RB_PREV(y) +#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) +#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) + +#define RB_FOREACH(x, name, head) \ + for ((x) = RB_MIN(name, head); \ + (x) != NULL; \ + (x) = name##_RB_NEXT(x)) + +#define RB_FOREACH_FROM(x, name, y) \ + for ((x) = (y); \ + ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ + (x) = (y)) + +#define RB_FOREACH_SAFE(x, name, head, y) \ + for ((x) = RB_MIN(name, head); \ + ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ + (x) = (y)) + +#define RB_FOREACH_REVERSE(x, name, head) \ + for ((x) = RB_MAX(name, head); \ + (x) != NULL; \ + (x) = name##_RB_PREV(x)) + +#define RB_FOREACH_REVERSE_FROM(x, name, y) \ + for ((x) = (y); \ + ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ + (x) = (y)) + +#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \ + for ((x) = RB_MAX(name, head); \ + ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ + (x) = (y)) + +#endif /* _SYS_TREE_H_ */ diff --git a/tpws/params.h b/tpws/params.h new file mode 100644 index 0000000..9d10d04 --- /dev/null +++ b/tpws/params.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include +#include +#include "strpool.h" + +enum splithttpreq { split_none = 0, split_method, split_host }; + +#define MAX_BINDS 32 +struct bind_s +{ + char bindaddr[64],bindiface[IF_NAMESIZE]; + bool bind_if6; + bool bindll,bindll_force; + int bind_wait_ifup,bind_wait_ip,bind_wait_ip_ll; +}; + +struct params_s +{ + struct bind_s binds[MAX_BINDS]; + int binds_last; + bool bind_wait_only; + uint16_t port; + + uint8_t proxy_type; + bool no_resolve; + bool skip_nodelay; + bool droproot; + uid_t uid; + gid_t gid; + bool daemon; + int maxconn,maxfiles,max_orphan_time; + int local_rcvbuf,local_sndbuf,remote_rcvbuf,remote_sndbuf; + + bool tamper; // any tamper option is set + bool hostcase, hostdot, hosttab, hostnospace, methodspace, methodeol, unixeol, domcase; + int hostpad; + char hostspell[4]; + enum splithttpreq split_http_req; + bool split_any_protocol; + int split_pos; + char hostfile[256]; + char pidfile[256]; + strpool *hostlist; + + int debug; +}; + +extern struct params_s params; + +#define _DBGPRINT(format, level, ...) { if (params.debug>=level) printf(format "\n", ##__VA_ARGS__); } +#define VPRINT(format, ...) _DBGPRINT(format,1,##__VA_ARGS__) +#define DBGPRINT(format, ...) _DBGPRINT(format,2,##__VA_ARGS__) diff --git a/tpws/protocol.c b/tpws/protocol.c new file mode 100644 index 0000000..b5b1404 --- /dev/null +++ b/tpws/protocol.c @@ -0,0 +1,132 @@ +#define _GNU_SOURCE + +#include "protocol.h" +#include "helpers.h" +#include +#include +#include +#include + +const char *http_methods[] = { "GET /","POST /","HEAD /","OPTIONS /","PUT /","DELETE /","CONNECT /","TRACE /",NULL }; +bool IsHttp(const uint8_t *data, size_t len) +{ + const char **method; + size_t method_len; + for (method = http_methods; *method; method++) + { + method_len = strlen(*method); + if (method_len <= len && !memcmp(data, *method, method_len)) + return true; + } + return false; +} +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host) +{ + const uint8_t *p, *s, *e=data+len; + + p = (uint8_t*)strncasestr((char*)data, "\nHost:", len); + if (!p) return false; + p+=6; + while(pp) + { + size_t slen = s-p; + if (host && len_host) + { + if (slen>=len_host) slen=len_host-1; + for(size_t i=0;i=6 && data[0]==0x16 && data[1]==0x03 && data[2]==0x01 && data[5]==0x01 && (ntohs(*(uint16_t*)(data+3))+5)<=len; +} +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext) +{ + // +0 + // u8 ContentType: Handshake + // u16 Version: TLS1.0 + // u16 Length + // +5 + // u8 HandshakeType: ClientHello + // u24 Length + // u16 Version + // c[32] random + // u8 SessionIDLength + // + // u16 CipherSuitesLength + // + // u8 CompressionMethodsLength + // + // u16 ExtensionsLength + + size_t l,ll; + + l = 1+2+2+1+3+2+32; + // SessionIDLength + if (len<(l+1)) return false; + ll = data[6]<<16 | data[7]<<8 | data[8]; // HandshakeProtocol length + if (len<(ll+9)) return false; + l += data[l]+1; + // CipherSuitesLength + if (len<(l+2)) return false; + l += ntohs(*(uint16_t*)(data+l))+2; + // CompressionMethodsLength + if (len<(l+1)) return false; + l += data[l]+1; + // ExtensionsLength + if (len<(l+2)) return false; + + data+=l; len-=l; + l=ntohs(*(uint16_t*)data); + data+=2; len-=2; + if (l=4) + { + uint16_t etype=*(uint16_t*)data; + size_t elen=ntohs(*(uint16_t*)(data+2)); + data+=4; l-=4; + if (l=len_host) slen=len_host-1; + for(size_t i=0;i +#include +#include + +bool IsHttp(const uint8_t *data, size_t len); +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); +bool IsTLSClientHello(const uint8_t *data, size_t len); +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext); +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); diff --git a/tpws/redirect.c b/tpws/redirect.c new file mode 100644 index 0000000..e562d7f --- /dev/null +++ b/tpws/redirect.c @@ -0,0 +1,211 @@ +#include "redirect.h" +#include +#include +#include +#include +#include +#include +#include + +#include "params.h" +#include "helpers.h" + +//#if !defined(USE_PF) && defined(__OpenBSD__) +#if !defined(USE_PF) && (defined(__OpenBSD__) || defined(__APPLE__)) + #define USE_PF 1 +#endif + +#ifdef __linux__ + #include + #ifndef IP6T_SO_ORIGINAL_DST + #define IP6T_SO_ORIGINAL_DST 80 + #endif +#endif +#ifdef USE_PF + #include + #include +#endif + + + +#if defined(USE_PF) +static int redirector_fd=-1; + +void redir_close() +{ + if (redirector_fd!=-1) + { + close(redirector_fd); + redirector_fd = -1; + DBGPRINT("closed redirector"); + } +} +static bool redir_open_private(const char *fname, int flags) +{ + redir_close(); + redirector_fd = open(fname, flags); + if (redirector_fd < 0) + { + perror("redir_openv_private: "); + return false; + } + DBGPRINT("opened redirector %s",fname); + return true; +} +bool redir_init() +{ + return redir_open_private("/dev/pf", O_RDONLY); +} + +static bool destination_from_pf(const struct sockaddr *accept_sa, struct sockaddr_storage *orig_dst) +{ + struct pfioc_natlook nl; + + if (redirector_fd==-1) return false; + + if (accept_sa->sa_family!=orig_dst->ss_family) + { + DBGPRINT("accept_sa and orig_dst sa_family mismatch : %d %d", accept_sa->sa_family, orig_dst->ss_family); + return false; + } + + memset(&nl, 0, sizeof(nl)); + nl.proto = IPPROTO_TCP; + nl.direction = PF_OUT; + nl.af = orig_dst->ss_family; + switch(orig_dst->ss_family) + { + case AF_INET: + { + struct sockaddr_in *sin = (struct sockaddr_in *)orig_dst; + nl.saddr.v4.s_addr = ((struct sockaddr_in*)accept_sa)->sin_addr.s_addr; + nl.daddr.v4.s_addr = sin->sin_addr.s_addr; +#ifdef __APPLE__ + nl.sxport.port = ((struct sockaddr_in*)accept_sa)->sin_port; + nl.dxport.port = sin->sin_port; +#else + nl.sport = ((struct sockaddr_in*)accept_sa)->sin_port; + nl.dport = sin->sin_port; +#endif + } + break; + case AF_INET6: + { + struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)orig_dst; + nl.saddr.v6 = ((struct sockaddr_in6*)accept_sa)->sin6_addr; + nl.daddr.v6 = sin6->sin6_addr; +#ifdef __APPLE__ + nl.sxport.port = ((struct sockaddr_in6*)accept_sa)->sin6_port; + nl.dxport.port = sin6->sin6_port; +#else + nl.sport = ((struct sockaddr_in6*)accept_sa)->sin6_port; + nl.dport = sin6->sin6_port; +#endif + } + break; + default: + DBGPRINT("destination_from_pf : unexpected address family %d",orig_dst->ss_family); + return false; + } + + if (ioctl(redirector_fd, DIOCNATLOOK, &nl) < 0) + { + DBGPRINT("ioctl(DIOCNATLOOK) failed: %s",strerror(errno)); + return false; + } + DBGPRINT("destination_from_pf : got orig dest addr from pf"); + + switch(nl.af) + { + case AF_INET: + orig_dst->ss_family = nl.af; +#ifdef __APPLE__ + ((struct sockaddr_in*)orig_dst)->sin_port = nl.rdxport.port; +#else + ((struct sockaddr_in*)orig_dst)->sin_port = nl.rdport; +#endif + ((struct sockaddr_in*)orig_dst)->sin_addr = nl.rdaddr.v4; + break; + case AF_INET6: + orig_dst->ss_family = nl.af; +#ifdef __APPLE__ + ((struct sockaddr_in6*)orig_dst)->sin6_port = nl.rdxport.port; +#else + ((struct sockaddr_in6*)orig_dst)->sin6_port = nl.rdport; +#endif + ((struct sockaddr_in6*)orig_dst)->sin6_addr = nl.rdaddr.v6; + break; + default: + DBGPRINT("destination_from_pf : DIOCNATLOOK returned unexpected address family %d",nl.af); + return false; + } + + return true; +} + + +#else + +bool redir_init() {return true;} +void redir_close() {}; + +#endif + + + +//Store the original destination address in orig_dst +bool get_dest_addr(int sockfd, const struct sockaddr *accept_sa, struct sockaddr_storage *orig_dst) +{ + char orig_dst_str[INET6_ADDRSTRLEN]; + socklen_t addrlen = sizeof(*orig_dst); + int r; + + memset(orig_dst, 0, addrlen); + + //For UDP transparent proxying: + //Set IP_RECVORIGDSTADDR socket option for getting the original + //destination of a datagram + +#ifdef __linux__ + // DNAT + r=getsockopt(sockfd, SOL_IP, SO_ORIGINAL_DST, (struct sockaddr*) orig_dst, &addrlen); + if (r<0) + r = getsockopt(sockfd, SOL_IPV6, IP6T_SO_ORIGINAL_DST, (struct sockaddr*) orig_dst, &addrlen); + if (r<0) + { + DBGPRINT("both SO_ORIGINAL_DST and IP6T_SO_ORIGINAL_DST failed !"); +#endif + // TPROXY : socket is bound to original destination + r=getsockname(sockfd, (struct sockaddr*) orig_dst, &addrlen); + if (r<0) + { + perror("getsockname: "); + return false; + } + if (orig_dst->ss_family==AF_INET6) + ((struct sockaddr_in6*)orig_dst)->sin6_scope_id=0; // or MacOS will not connect() +#ifdef USE_PF + if (!destination_from_pf(accept_sa, orig_dst)) + DBGPRINT("pf filter destination_from_pf failed"); +#endif +#ifdef __linux__ + } +#endif + if (saconvmapped(orig_dst)) + DBGPRINT("Original destination : converted ipv6 mapped address to ipv4"); + + if (params.debug) + { + if (orig_dst->ss_family == AF_INET) + { + inet_ntop(AF_INET, &(((struct sockaddr_in*) orig_dst)->sin_addr), orig_dst_str, INET_ADDRSTRLEN); + VPRINT("Original destination for socket fd=%d : %s:%d", sockfd,orig_dst_str, htons(((struct sockaddr_in*) orig_dst)->sin_port)) + } + else if (orig_dst->ss_family == AF_INET6) + { + inet_ntop(AF_INET6,&(((struct sockaddr_in6*) orig_dst)->sin6_addr), orig_dst_str, INET6_ADDRSTRLEN); + VPRINT("Original destination for socket fd=%d : [%s]:%d", sockfd,orig_dst_str, htons(((struct sockaddr_in6*) orig_dst)->sin6_port)) + } + } + return true; +} diff --git a/tpws/redirect.h b/tpws/redirect.h new file mode 100644 index 0000000..8a6831e --- /dev/null +++ b/tpws/redirect.h @@ -0,0 +1,9 @@ +#pragma once + +#include +#include +#include + +bool get_dest_addr(int sockfd, const struct sockaddr *accept_sa, struct sockaddr_storage *orig_dst); +bool redir_init(); +void redir_close(); diff --git a/tpws/sec.c b/tpws/sec.c new file mode 100644 index 0000000..a3308f6 --- /dev/null +++ b/tpws/sec.c @@ -0,0 +1,172 @@ +#define _GNU_SOURCE + +#include +#include +#include "sec.h" +#include +#include +#include + +#ifdef __linux__ + +#include + +bool checkpcap(uint64_t caps) +{ + if (!caps) return true; // no special caps reqd + + struct __user_cap_header_struct ch = {_LINUX_CAPABILITY_VERSION_3, getpid()}; + struct __user_cap_data_struct cd[2]; + uint32_t c0 = (uint32_t)caps; + uint32_t c1 = (uint32_t)(caps>>32); + + return !capget(&ch,cd) && (cd[0].effective & c0)==c0 && (cd[1].effective & c1)==c1; +} +bool setpcap(uint64_t caps) +{ + struct __user_cap_header_struct ch = {_LINUX_CAPABILITY_VERSION_3, getpid()}; + struct __user_cap_data_struct cd[2]; + + cd[0].effective = cd[0].permitted = (uint32_t)caps; + cd[0].inheritable = 0; + cd[1].effective = cd[1].permitted = (uint32_t)(caps>>32); + cd[1].inheritable = 0; + + return !capset(&ch,cd); +} +int getmaxcap() +{ + int maxcap = CAP_LAST_CAP; + FILE *F = fopen("/proc/sys/kernel/cap_last_cap", "r"); + if (F) + { + fscanf(F, "%d", &maxcap); + fclose(F); + } + return maxcap; + +} +bool dropcaps() +{ + uint64_t caps = 0; + int maxcap = getmaxcap(); + + if (setpcap(caps|(1< +#include + +#ifdef __linux__ + +#include + +bool checkpcap(uint64_t caps); +bool setpcap(uint64_t caps); +int getmaxcap(); +bool dropcaps(); +#endif + +bool can_drop_root(); +bool droproot(uid_t uid, gid_t gid); +void print_id(); +void daemonize(); +bool writepid(const char *filename); diff --git a/tpws/socks.h b/tpws/socks.h new file mode 100644 index 0000000..9026a64 --- /dev/null +++ b/tpws/socks.h @@ -0,0 +1,93 @@ +#pragma once + +#include +#include + +#pragma pack(push,1) + +#define S4_CMD_CONNECT 1 +#define S4_CMD_BIND 2 +typedef struct +{ + uint8_t ver,cmd; + uint16_t port; + uint32_t ip; +} s4_req; +#define S4_REQ_HEADER_VALID(r,l) (l>=sizeof(s4_req) && r->ver==4) +#define S4_REQ_CONNECT_VALID(r,l) (S4_REQ_HEADER_VALID(r,l) && r->cmd==S4_CMD_CONNECT) + +#define S4_REP_OK 90 +#define S4_REP_FAILED 91 +typedef struct +{ + uint8_t zero,rep; + uint16_t port; + uint32_t ip; +} s4_rep; + + + +#define S5_AUTH_NONE 0 +#define S5_AUTH_GSSAPI 1 +#define S5_AUTH_USERPASS 2 +#define S5_AUTH_UNACCEPTABLE 0xFF +typedef struct +{ + uint8_t ver,nmethods,methods[255]; +} s5_handshake; +#define S5_REQ_HANDHSHAKE_VALID(r,l) (l>=3 && r->ver==5 && r->nmethods && l>=(2+r->nmethods)) +typedef struct +{ + uint8_t ver,method; +} s5_handshake_ack; + +#define S5_CMD_CONNECT 1 +#define S5_CMD_BIND 2 +#define S5_CMD_UDP_ASSOC 3 +#define S5_ATYP_IP4 1 +#define S5_ATYP_DOM 3 +#define S5_ATYP_IP6 4 +typedef struct +{ + uint8_t ver,cmd,rsv,atyp; + union { + struct { + struct in_addr addr; + uint16_t port; + } d4; + struct { + struct in6_addr addr; + uint16_t port; + } d6; + struct { + uint8_t len; + char domport[255+2]; // max hostname + binary port + } dd; + }; +} s5_req; +#define S5_REQ_HEADER_VALID(r,l) (l>=4 && r->ver==5) +#define S5_IP46_VALID(r,l) (r->atyp==S5_ATYP_IP4 && l>=(4+sizeof(r->d4)) || r->atyp==S5_ATYP_IP6 && l>=(4+sizeof(r->d6))) +#define S5_REQ_CONNECT_VALID(r,l) (S5_REQ_HEADER_VALID(r,l) && r->cmd==S5_CMD_CONNECT && (S5_IP46_VALID(r,l) || r->atyp==S5_ATYP_DOM && l>=5 && l>=(5+r->dd.len))) +#define S5_PORT_FROM_DD(r,l) (l>=(4+r->dd.len+2) ? ntohs(*(uint16_t*)(r->dd.domport+r->dd.len)) : 0) + +#define S5_REP_OK 0 +#define S5_REP_GENERAL_FAILURE 1 +#define S5_REP_NOT_ALLOWED_BY_RULESET 2 +#define S5_REP_NETWORK_UNREACHABLE 3 +#define S5_REP_HOST_UNREACHABLE 4 +#define S5_REP_CONN_REFUSED 5 +#define S5_REP_TTL_EXPIRED 6 +#define S5_REP_COMMAND_NOT_SUPPORTED 7 +#define S5_REP_ADDR_TYPE_NOT_SUPPORTED 8 +typedef struct +{ + uint8_t ver,rep,rsv,atyp; + union { + struct { + struct in_addr addr; + uint16_t port; + } d4; + }; +} s5_rep; + +#pragma pack(pop) diff --git a/tpws/strpool.c b/tpws/strpool.c new file mode 100644 index 0000000..41e62a9 --- /dev/null +++ b/tpws/strpool.c @@ -0,0 +1,76 @@ +#define _GNU_SOURCE +#include "strpool.h" +#include +#include + +#undef uthash_nonfatal_oom +#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) + +static bool oom=false; +static void ut_oom_recover(strpool *elem) +{ + oom=true; +} + +// for zero terminated strings +bool StrPoolAddStr(strpool **pp,const char *s) +{ + strpool *elem; + if (!(elem = (strpool*)malloc(sizeof(strpool)))) + return false; + if (!(elem->str = strdup(s))) + { + free(elem); + return false; + } + oom = false; + HASH_ADD_KEYPTR( hh, *pp, elem->str, strlen(elem->str), elem ); + if (oom) + { + free(elem->str); + free(elem); + return false; + } + return true; +} +// for not zero terminated strings +bool StrPoolAddStrLen(strpool **pp,const char *s,size_t slen) +{ + strpool *elem; + if (!(elem = (strpool*)malloc(sizeof(strpool)))) + return false; + if (!(elem->str = malloc(slen+1))) + { + free(elem); + return false; + } + memcpy(elem->str,s,slen); + elem->str[slen]=0; + oom = false; + HASH_ADD_KEYPTR( hh, *pp, elem->str, strlen(elem->str), elem ); + if (oom) + { + free(elem->str); + free(elem); + return false; + } + return true; +} + +bool StrPoolCheckStr(strpool *p,const char *s) +{ + strpool *elem; + HASH_FIND_STR( p, s, elem); + return elem!=NULL; +} + +void StrPoolDestroy(strpool **p) +{ + strpool *elem,*tmp; + HASH_ITER(hh, *p, elem, tmp) { + free(elem->str); + HASH_DEL(*p, elem); + free(elem); + } + *p = NULL; +} diff --git a/tpws/strpool.h b/tpws/strpool.h new file mode 100644 index 0000000..5932ba3 --- /dev/null +++ b/tpws/strpool.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +//#define HASH_BLOOM 20 +#define HASH_NONFATAL_OOM 1 +#define HASH_FUNCTION HASH_BER +#include "uthash.h" + +typedef struct strpool { + char *str; /* key */ + UT_hash_handle hh; /* makes this structure hashable */ +} strpool; + +void StrPoolDestroy(strpool **p); +bool StrPoolAddStr(strpool **pp,const char *s); +bool StrPoolAddStrLen(strpool **pp,const char *s,size_t slen); +bool StrPoolCheckStr(strpool *p,const char *s); diff --git a/tpws/tamper.c b/tpws/tamper.c new file mode 100644 index 0000000..f9f2748 --- /dev/null +++ b/tpws/tamper.c @@ -0,0 +1,235 @@ +#define _GNU_SOURCE + +#include "tamper.h" +#include "params.h" +#include "hostlist.h" +#include "protocol.h" +#include +#include + +// pHost points to "Host: ..." +bool find_host(char **pHost,char *buf,size_t bs) +{ + if (!*pHost) + { + *pHost = memmem(buf, bs, "\nHost:", 6); + if (*pHost) + { + (*pHost)++; + VPRINT("Found Host: at pos %zu",*pHost - buf) + } + } + return !!*pHost; +} + +static const char *http_methods[] = { "GET /","POST /","HEAD /","OPTIONS /","PUT /","DELETE /","CONNECT /","TRACE /",NULL }; +void modify_tcp_segment(char *segment,size_t segment_buffer_size,size_t *size,size_t *split_pos) +{ + char *p, *pp, *pHost = NULL; + size_t method_len = 0, pos; + const char **method; + bool bIsHttp = false, bBypass = false; + char bRemovedHostSpace = 0; + char Host[128]; + + *split_pos=0; + + for (method = http_methods; *method; method++) + { + method_len = strlen(*method); + if (method_len <= *size && !memcmp(segment, *method, method_len)) + { + bIsHttp = true; + method_len -= 2; // "GET /" => "GET" + break; + } + } + if (bIsHttp) + { + VPRINT("Data block looks like http request start : %s", *method) + // cpu saving : we search host only if and when required. we do not research host every time we need its position + if (params.hostlist && find_host(&pHost,segment,*size)) + { + p = pHost + 5; + while (p < (segment + *size) && (*p == ' ' || *p == '\t')) p++; + pp = p; + while (pp < (segment + *size) && (pp - p) < (sizeof(Host) - 1) && *pp != '\r' && *pp != '\n') pp++; + memcpy(Host, p, pp - p); + Host[pp - p] = '\0'; + VPRINT("Requested Host is : %s", Host) + for(p = Host; *p; p++) *p=tolower(*p); + bBypass = !SearchHostList(params.hostlist,Host,!!params.debug); + } + if (!bBypass) + { + if (params.unixeol) + { + p = pp = segment; + while ((p = memmem(p, segment + *size - p, "\r\n", 2))) + { + *p = '\n'; p++; + memmove(p, p + 1, segment + *size - p - 1); + (*size)--; + if (pp == (p - 1)) + { + // probably end of http headers + VPRINT("Found double EOL at pos %zu. Stop replacing.", pp - segment) + break; + } + pp = p; + } + pHost = NULL; // invalidate + } + if (params.methodeol && (*size+1+!params.unixeol)<=segment_buffer_size) + { + VPRINT("Adding EOL before method") + if (params.unixeol) + { + memmove(segment + 1, segment, *size); + (*size)++;; + segment[0] = '\n'; + } + else + { + memmove(segment + 2, segment, *size); + *size += 2; + segment[0] = '\r'; + segment[1] = '\n'; + } + pHost = NULL; // invalidate + } + if (params.methodspace && *size '%c%c%c%c:' at pos %zu", params.hostspell[0], params.hostspell[1], params.hostspell[2], params.hostspell[3], pHost - segment) + memcpy(pHost, params.hostspell, 4); + } + if (params.hostpad && find_host(&pHost,segment,*size)) + { + // add : XXXXX: segment_buffer_size) + VPRINT("could not add host padding : buffer too small") + else + { + if ((hostpad+*size)>segment_buffer_size) + { + hostpad=segment_buffer_size-*size; + VPRINT("host padding reduced to %zu bytes : buffer too small", hostpad) + } + else + VPRINT("host padding with %zu bytes", hostpad) + + p = pHost; + pos = p - segment; + memmove(p + hostpad, p, *size - pos); + (*size) += hostpad; + while(hostpad) + { + #define MAX_HDR_SIZE 2048 + size_t padsize = hostpad > hsize ? hostpad-hsize : 0; + if (padsize>MAX_HDR_SIZE) padsize=MAX_HDR_SIZE; + // if next header would be too small then add extra padding to the current one + if ((hostpad-padsize-hsize) +#include + +bool find_host(char **pHost,char *buf,size_t bs); +void modify_tcp_segment(char *segment,size_t segment_buffer_size,size_t *size,size_t *split_pos); diff --git a/tpws/tpws b/tpws/tpws new file mode 120000 index 0000000..83fc382 --- /dev/null +++ b/tpws/tpws @@ -0,0 +1 @@ +../binaries/x86_64/tpws \ No newline at end of file diff --git a/tpws/tpws.c b/tpws/tpws.c new file mode 100644 index 0000000..be11d47 --- /dev/null +++ b/tpws/tpws.c @@ -0,0 +1,878 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tpws.h" + +#ifdef BSD + #include +#endif + +#include "tpws_conn.h" +#include "hostlist.h" +#include "params.h" +#include "sec.h" +#include "redirect.h" + +struct params_s params; + +bool bHup = false; +static void onhup(int sig) +{ + printf("HUP received !\n"); + if (params.hostlist) + printf("Will reload hostlist on next request\n"); + bHup = true; +} +// should be called in normal execution +void dohup() +{ + if (bHup) + { + if (params.hostlist) + { + if (!LoadHostList(¶ms.hostlist, params.hostfile)) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + } + bHup = false; + } +} + + + +static int8_t block_sigpipe() +{ + sigset_t sigset; + memset(&sigset, 0, sizeof(sigset)); + + //Get the old sigset, add SIGPIPE and update sigset + if (sigprocmask(SIG_BLOCK, NULL, &sigset) == -1) { + perror("sigprocmask (get)"); + return -1; + } + + if (sigaddset(&sigset, SIGPIPE) == -1) { + perror("sigaddset"); + return -1; + } + + if (sigprocmask(SIG_BLOCK, &sigset, NULL) == -1) { + perror("sigprocmask (set)"); + return -1; + } + + return 0; +} + + +static bool is_interface_online(const char *ifname) +{ + struct ifreq ifr; + int sock; + + if ((sock=socket(PF_INET, SOCK_DGRAM, IPPROTO_IP))==-1) + return false; + memset(&ifr, 0, sizeof(ifr)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ-1] = 0; + ioctl(sock, SIOCGIFFLAGS, &ifr); + close(sock); + return !!(ifr.ifr_flags & IFF_UP); +} + + +static void exithelp() +{ + printf( + " --bind-addr=|; for v6 link locals append %%interface_name\n" + " --bind-iface4=\t; bind to the first ipv4 addr of interface\n" + " --bind-iface6=\t; bind to the first ipv6 addr of interface\n" + " --bind-linklocal=prefer|force\t; prefer or force ipv6 link local\n" + " --bind-wait-ifup=\t\t; wait for interface to appear and up\n" + " --bind-wait-ip=\t\t; after ifup wait for ip address to appear up to N seconds\n" + " --bind-wait-ip-linklocal=\t; accept only link locals first N seconds then any\n" + " --bind-wait-only\t\t; wait for bind conditions satisfaction then exit. return code 0 if success.\n" + " * multiple binds are supported. each bind-addr, bind-iface* start new bind\n" + " --port=\t\t\t; only one port number for all binds is supported\n" + " --socks\t\t\t; implement socks4/5 proxy instead of transparent proxy\n" + " --no-resolve\t\t\t; disable socks5 remote dns ability (resolves are not async, they block all activity)\n" + " --local-rcvbuf=\n" + " --local-sndbuf=\n" + " --remote-rcvbuf=\n" + " --remote-sndbuf=\n" + " --skip-nodelay\t\t\t; do not set TCP_NODELAY option for outgoing connections (incompatible with split options)\n" + " --maxconn=\n" +#ifdef SPLICE_PRESENT + " --maxfiles=\t; should be at least (X*connections+16), where X=6 in tcp proxy mode, X=4 in tampering mode\n" +#else + " --maxfiles=\t; should be at least (connections*2+16)\n" +#endif + " --max-orphan-time=\t; if local leg sends something and closes and remote leg is still connecting then cancel connection attempt after N seconds\n" + " --daemon\t\t\t; daemonize\n" + " --pidfile=\t\t; write pid to file\n" + " --user=\t\t; drop root privs\n" + " --uid=uid[:gid]\t\t; drop root privs\n" + " --debug=0|1|2\t\t\t; 0(default)=silent 1=verbose 2=debug\n" + "\nTAMPERING:\n" + " --hostlist=\t\t; only act on host in the list (one host per line, subdomains auto apply)\n" + " --split-http-req=method|host\n" + " --split-pos=\t; split at specified pos. split-http-req takes precedence for http.\n" + " --split-any-protocol\t\t; split not only http and https\n" + " --hostcase\t\t\t; change Host: => host:\n" + " --hostspell\t\t\t; exact spelling of \"Host\" header. must be 4 chars. default is \"host\"\n" + " --hostdot\t\t\t; add \".\" after Host: name\n" + " --hosttab\t\t\t; add tab after Host: name\n" + " --hostnospace\t\t\t; remove space after Host:\n" + " --hostpad=\t\t; add dummy padding headers before Host:\n" + " --domcase\t\t\t; mix domain case : Host: TeSt.cOm\n" + " --methodspace\t\t\t; add extra space after method\n" + " --methodeol\t\t\t; add end-of-line before method\n" + " --unixeol\t\t\t; replace 0D0A to 0A\n" + ); + exit(1); +} +static void cleanup_params() +{ + if (params.hostlist) + { + StrPoolDestroy(¶ms.hostlist); + params.hostlist = NULL; + } +} +static void exithelp_clean() +{ + cleanup_params(); + exithelp(); +} +static void exit_clean(int code) +{ + cleanup_params(); + exit(code); +} +static void nextbind_clean() +{ + params.binds_last++; + if (params.binds_last>=MAX_BINDS) + { + fprintf(stderr,"maximum of %d binds are supported\n",MAX_BINDS); + exit_clean(1); + } +} +static void checkbind_clean() +{ + if (params.binds_last<0) + { + fprintf(stderr,"start new bind with --bind-addr,--bind-iface*\n"); + exit_clean(1); + } +} + + +void parse_params(int argc, char *argv[]) +{ + int option_index = 0; + int v, i; + + memset(¶ms, 0, sizeof(params)); + memcpy(params.hostspell, "host", 4); // default hostspell + params.maxconn = DEFAULT_MAX_CONN; + params.max_orphan_time = DEFAULT_MAX_ORPHAN_TIME; + params.binds_last = -1; + if (can_drop_root()) + { + params.uid = params.gid = 0x7FFFFFFF; // default uid:gid + params.droproot = true; + } + + const struct option long_options[] = { + { "help",no_argument,0,0 },// optidx=0 + { "h",no_argument,0,0 },// optidx=1 + { "bind-addr",required_argument,0,0 },// optidx=2 + { "bind-iface4",required_argument,0,0 },// optidx=3 + { "bind-iface6",required_argument,0,0 },// optidx=4 + { "bind-linklocal",required_argument,0,0 },// optidx=5 + { "bind-wait-ifup",required_argument,0,0 },// optidx=6 + { "bind-wait-ip",required_argument,0,0 },// optidx=7 + { "bind-wait-ip-linklocal",required_argument,0,0 },// optidx=8 + { "bind-wait-only",no_argument,0,0 },// optidx=9 + { "port",required_argument,0,0 },// optidx=10 + { "daemon",no_argument,0,0 },// optidx=11 + { "user",required_argument,0,0 },// optidx=12 + { "uid",required_argument,0,0 },// optidx=13 + { "maxconn",required_argument,0,0 },// optidx=14 + { "maxfiles",required_argument,0,0 },// optidx=15 + { "max-orphan-time",required_argument,0,0 },// optidx=16 + { "hostcase",no_argument,0,0 },// optidx=17 + { "hostspell",required_argument,0,0 },// optidx=18 + { "hostdot",no_argument,0,0 },// optidx=19 + { "hostnospace",no_argument,0,0 },// optidx=20 + { "hostpad",required_argument,0,0 },// optidx=21 + { "domcase",no_argument,0,0 },// optidx=22 + { "split-http-req",required_argument,0,0 },// optidx=23 + { "split-pos",required_argument,0,0 },// optidx=24 + { "split-any-protocol",optional_argument,0,0},// optidx=25 + { "methodspace",no_argument,0,0 },// optidx=26 + { "methodeol",no_argument,0,0 },// optidx=27 + { "hosttab",no_argument,0,0 },// optidx=28 + { "unixeol",no_argument,0,0 },// optidx=29 + { "hostlist",required_argument,0,0 },// optidx=30 + { "pidfile",required_argument,0,0 },// optidx=31 + { "debug",optional_argument,0,0 },// optidx=32 + { "local-rcvbuf",required_argument,0,0 },// optidx=33 + { "local-sndbuf",required_argument,0,0 },// optidx=34 + { "remote-rcvbuf",required_argument,0,0 },// optidx=35 + { "remote-sndbuf",required_argument,0,0 },// optidx=36 + { "socks",no_argument,0,0 },// optidx=37 + { "no-resolve",no_argument,0,0 },// optidx=38 + { "skip-nodelay",no_argument,0,0 },// optidx=39 + { NULL,0,NULL,0 } + }; + while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) + { + if (v) exithelp_clean(); + switch (option_index) + { + case 0: + case 1: + exithelp_clean(); + break; + case 2: /* bind-addr */ + nextbind_clean(); + { + char *p = strchr(optarg,'%'); + if (p) + { + *p=0; + strncpy(params.binds[params.binds_last].bindiface, p+1, sizeof(params.binds[params.binds_last].bindiface)); + } + strncpy(params.binds[params.binds_last].bindaddr, optarg, sizeof(params.binds[params.binds_last].bindaddr)); + } + params.binds[params.binds_last].bindaddr[sizeof(params.binds[params.binds_last].bindaddr) - 1] = 0; + break; + case 3: /* bind-iface4 */ + nextbind_clean(); + params.binds[params.binds_last].bind_if6=false; + strncpy(params.binds[params.binds_last].bindiface, optarg, sizeof(params.binds[params.binds_last].bindiface)); + params.binds[params.binds_last].bindiface[sizeof(params.binds[params.binds_last].bindiface) - 1] = 0; + break; + case 4: /* bind-iface6 */ + nextbind_clean(); + params.binds[params.binds_last].bind_if6=true; + strncpy(params.binds[params.binds_last].bindiface, optarg, sizeof(params.binds[params.binds_last].bindiface)); + params.binds[params.binds_last].bindiface[sizeof(params.binds[params.binds_last].bindiface) - 1] = 0; + break; + case 5: /* bind-linklocal */ + checkbind_clean(); + params.binds[params.binds_last].bindll = true; + if (!strcmp(optarg, "force")) + params.binds[params.binds_last].bindll_force=true; + else if (strcmp(optarg, "prefer")) + { + fprintf(stderr, "invalid parameter in bind-linklocal : %s\n",optarg); + exit_clean(1); + } + break; + case 6: /* bind-wait-ifup */ + checkbind_clean(); + params.binds[params.binds_last].bind_wait_ifup = atoi(optarg); + break; + case 7: /* bind-wait-ip */ + checkbind_clean(); + params.binds[params.binds_last].bind_wait_ip = atoi(optarg); + break; + case 8: /* bind-wait-ip-linklocal */ + checkbind_clean(); + params.binds[params.binds_last].bind_wait_ip_ll = atoi(optarg); + break; + case 9: /* bind-wait-only */ + params.bind_wait_only = true; + break; + case 10: /* port */ + i = atoi(optarg); + if (i <= 0 || i > 65535) + { + fprintf(stderr, "bad port number\n"); + exit_clean(1); + } + params.port = (uint16_t)i; + break; + case 11: /* daemon */ + params.daemon = true; + break; + case 12: /* user */ + { + struct passwd *pwd = getpwnam(optarg); + if (!pwd) + { + fprintf(stderr, "non-existent username supplied\n"); + exit_clean(1); + } + params.uid = pwd->pw_uid; + params.gid = pwd->pw_gid; + params.droproot = true; + break; + } + case 13: /* uid */ + params.gid=0x7FFFFFFF; // default git. drop gid=0 + params.droproot = true; + if (!sscanf(optarg,"%u:%u",¶ms.uid,¶ms.gid)) + { + fprintf(stderr, "--uid should be : uid[:gid]\n"); + exit_clean(1); + } + break; + case 14: /* maxconn */ + params.maxconn = atoi(optarg); + if (params.maxconn <= 0 || params.maxconn > 10000) + { + fprintf(stderr, "bad maxconn\n"); + exit_clean(1); + } + break; + case 15: /* maxfiles */ + params.maxfiles = atoi(optarg); + if (params.maxfiles < 0) + { + fprintf(stderr, "bad maxfiles\n"); + exit_clean(1); + } + break; + case 16: /* max-orphan-time */ + params.max_orphan_time = atoi(optarg); + if (params.max_orphan_time < 0) + { + fprintf(stderr, "bad max_orphan_time\n"); + exit_clean(1); + } + break; + case 17: /* hostcase */ + params.hostcase = true; + params.tamper = true; + break; + case 18: /* hostspell */ + if (strlen(optarg) != 4) + { + fprintf(stderr, "hostspell must be exactly 4 chars long\n"); + exit_clean(1); + } + params.hostcase = true; + memcpy(params.hostspell, optarg, 4); + params.tamper = true; + break; + case 19: /* hostdot */ + params.hostdot = true; + params.tamper = true; + break; + case 20: /* hostnospace */ + params.hostnospace = true; + params.tamper = true; + break; + case 21: /* hostpad */ + params.hostpad = atoi(optarg); + params.tamper = true; + break; + case 22: /* domcase */ + params.domcase = true; + params.tamper = true; + break; + case 23: /* split-http-req */ + if (!strcmp(optarg, "method")) + params.split_http_req = split_method; + else if (!strcmp(optarg, "host")) + params.split_http_req = split_host; + else + { + fprintf(stderr, "Invalid argument for split-http-req\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 24: /* split-pos */ + i = atoi(optarg); + if (i) + params.split_pos = i; + else + { + fprintf(stderr, "Invalid argument for split-pos\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 25: /* split-any-protocol */ + params.split_any_protocol = true; + break; + case 26: /* methodspace */ + params.methodspace = true; + params.tamper = true; + break; + case 27: /* methodeol */ + params.methodeol = true; + params.tamper = true; + break; + case 28: /* hosttab */ + params.hosttab = true; + params.tamper = true; + break; + case 29: /* unixeol */ + params.unixeol = true; + params.tamper = true; + break; + case 30: /* hostlist */ + if (!LoadHostList(¶ms.hostlist, optarg)) + exit_clean(1); + strncpy(params.hostfile,optarg,sizeof(params.hostfile)); + params.hostfile[sizeof(params.hostfile)-1]='\0'; + params.tamper = true; + break; + case 31: /* pidfile */ + strncpy(params.pidfile,optarg,sizeof(params.pidfile)); + params.pidfile[sizeof(params.pidfile)-1]='\0'; + break; + case 32: + params.debug = optarg ? atoi(optarg) : 1; + break; + case 33: /* local-rcvbuf */ + params.local_rcvbuf = atoi(optarg)/2; + break; + case 34: /* local-sndbuf */ + params.local_sndbuf = atoi(optarg)/2; + break; + case 35: /* remote-rcvbuf */ + params.remote_rcvbuf = atoi(optarg)/2; + break; + case 36: /* remote-sndbuf */ + params.remote_sndbuf = atoi(optarg)/2; + break; + case 37: /* socks */ + params.proxy_type = CONN_TYPE_SOCKS; + break; + case 38: /* no-resolve */ + params.no_resolve = true; + break; + case 39: /* skip-nodelay */ + params.skip_nodelay = true; + break; + } + } + if (!params.bind_wait_only && !params.port) + { + fprintf(stderr, "Need port number\n"); + exit_clean(1); + } + if (params.binds_last<=0) + { + params.binds_last=0; // default bind to all + } + if (params.skip_nodelay && (params.split_http_req || params.split_pos)) + { + fprintf(stderr, "Cannot split with --skip-nodelay\n"); + exit_clean(1); + } +} + + +static bool is_linklocal(const struct sockaddr_in6* a) +{ + return a->sin6_addr.s6_addr[0]==0xFE && (a->sin6_addr.s6_addr[1] & 0xC0)==0x80; +} +static bool find_listen_addr(struct sockaddr_storage *salisten, const char *bindiface, bool bind_if6, bool bindll, int *if_index) +{ + struct ifaddrs *addrs,*a; + bool found=false; + + if (getifaddrs(&addrs)<0) + return false; + + int maxpass = (bind_if6 && !bindll) ? 2 : 1; + for(int pass=0;passifa_addr) + { + if (a->ifa_addr->sa_family==AF_INET && + *bindiface && !bind_if6 && !strcmp(a->ifa_name, bindiface)) + { + salisten->ss_family = AF_INET; + memcpy(&((struct sockaddr_in*)salisten)->sin_addr, &((struct sockaddr_in*)a->ifa_addr)->sin_addr, sizeof(struct in_addr)); + found=true; + goto ex; + } + // ipv6 links locals are fe80::/10 + else if (a->ifa_addr->sa_family==AF_INET6 + && + (!*bindiface && bindll || + *bindiface && bind_if6 && !strcmp(a->ifa_name, bindiface)) + && + (bindll && is_linklocal((struct sockaddr_in6*)a->ifa_addr) || + !bindll && (pass || !is_linklocal((struct sockaddr_in6*)a->ifa_addr))) + ) + { + salisten->ss_family = AF_INET6; + memcpy(&((struct sockaddr_in6*)salisten)->sin6_addr, &((struct sockaddr_in6*)a->ifa_addr)->sin6_addr, sizeof(struct in6_addr)); + if (if_index) *if_index = if_nametoindex(a->ifa_name); + found=true; + goto ex; + } + } + a = a->ifa_next; + } + } +ex: + freeifaddrs(addrs); + return found; +} + +static bool read_system_maxfiles(rlim_t *maxfile) +{ +#ifdef __linux__ + FILE *F; + int n; + uintmax_t um; + if (!(F=fopen("/proc/sys/fs/file-max","r"))) + return false; + n=fscanf(F,"%ju",&um); + fclose(F); + if (!n) return false; + *maxfile = (rlim_t)um; + return true; +#elif defined(BSD) + int maxfiles,mib[2]={CTL_KERN, KERN_MAXFILES}; + size_t len = sizeof(maxfiles); + if (sysctl(mib,2,&maxfiles,&len,NULL,0)==-1) + return false; + *maxfile = (rlim_t)maxfiles; + return true; +#else + return false; +#endif +} +static bool write_system_maxfiles(rlim_t maxfile) +{ +#ifdef __linux__ + FILE *F; + int n; + if (!(F=fopen("/proc/sys/fs/file-max","w"))) + return false; + n=fprintf(F,"%ju",(uintmax_t)maxfile); + fclose(F); + return !!n; +#elif defined(BSD) + int maxfiles=(int)maxfile,mib[2]={CTL_KERN, KERN_MAXFILES}; + if (sysctl(mib,2,NULL,0,&maxfiles,sizeof(maxfiles))==-1) + return false; + return true; +#else + return false; +#endif +} + +static bool set_ulimit() +{ + rlim_t fdmax,fdmin_system,cur_lim=0; + int n; + + if (!params.maxfiles) + { + // 4 fds per tamper connection (2 pipe + 2 socket), 6 fds for tcp proxy connection (4 pipe + 2 socket) + // additional 1/2 for unpaired remote legs sending buffers + // 16 for listen_fd, epoll, hostlist, ... +#ifdef SPLICE_PRESENT + fdmax = (params.tamper ? 4 : 6) * params.maxconn; +#else + fdmax = 2 * params.maxconn; +#endif + fdmax += fdmax/2 + 16; + } + else + fdmax = params.maxfiles; + fdmin_system = fdmax + 4096; + DBGPRINT("set_ulimit : fdmax=%ju fdmin_system=%ju",(uintmax_t)fdmax,(uintmax_t)fdmin_system) + + if (!read_system_maxfiles(&cur_lim)) + return false; + DBGPRINT("set_ulimit : current system file-max=%ju",(uintmax_t)cur_lim) + if (cur_lim 0) + { + int sec=0; + if (!is_interface_online(params.binds[i].bindiface)) + { + printf("waiting for ifup of %s for up to %d second(s)...\n",params.binds[i].bindiface,params.binds[i].bind_wait_ifup); + do + { + sleep(1); + sec++; + } + while (!is_interface_online(params.binds[i].bindiface) && sec=params.binds[i].bind_wait_ifup) + { + printf("wait timed out\n"); + goto exiterr; + } + } + } + if (!(if_index = if_nametoindex(params.binds[i].bindiface)) && params.binds[i].bind_wait_ip<=0) + { + printf("bad iface %s\n",params.binds[i].bindiface); + goto exiterr; + } + } + if (*params.binds[i].bindaddr) + { + if (inet_pton(AF_INET, params.binds[i].bindaddr, &((struct sockaddr_in*)(&list[i].salisten))->sin_addr)) + { + list[i].salisten.ss_family = AF_INET; + } + else if (inet_pton(AF_INET6, params.binds[i].bindaddr, &((struct sockaddr_in6*)(&list[i].salisten))->sin6_addr)) + { + list[i].salisten.ss_family = AF_INET6; + list[i].ipv6_only = 1; + } + else + { + printf("bad bind addr : %s\n", params.binds[i].bindaddr); + goto exiterr; + } + } + else + { + if (*params.binds[i].bindiface || params.binds[i].bindll) + { + bool found; + int sec=0; + + if (params.binds[i].bind_wait_ip > 0) + { + printf("waiting for ip on %s for up to %d second(s)...\n", *params.binds[i].bindiface ? params.binds[i].bindiface : "", params.binds[i].bind_wait_ip); + if (params.binds[i].bindll && !params.binds[i].bindll_force && params.binds[i].bind_wait_ip_ll>0) + printf("during the first %d second(s) accepting only link locals...\n", params.binds[i].bind_wait_ip_ll); + } + + for(;;) + { + found = find_listen_addr(&list[i].salisten,params.binds[i].bindiface,params.binds[i].bind_if6,params.binds[i].bindll,&if_index); + if (found) break; + + if (params.binds[i].bindll && !params.binds[i].bindll_force && sec>=params.binds[i].bind_wait_ip_ll) + if ((found = find_listen_addr(&list[i].salisten,params.binds[i].bindiface,params.binds[i].bind_if6,false,&if_index))) + { + printf("link local address wait timeout. using global address\n"); + break; + } + + if (sec>=params.binds[i].bind_wait_ip) + break; + + sleep(1); + sec++; + } + + if (!found) + { + printf("suitable ip address not found\n"); + goto exiterr; + } + list[i].ipv6_only=1; + } + else + { + list[i].salisten.ss_family = AF_INET6; + // leave sin6_addr zero + } + } + if (list[i].salisten.ss_family == AF_INET6) + { + list[i].salisten_len = sizeof(struct sockaddr_in6); + ((struct sockaddr_in6*)(&list[i].salisten))->sin6_port = htons(params.port); + if (is_linklocal((struct sockaddr_in6*)(&list[i].salisten))) + ((struct sockaddr_in6*)(&list[i].salisten))->sin6_scope_id = if_index; + } + else + { + list[i].salisten_len = sizeof(struct sockaddr_in); + ((struct sockaddr_in*)(&list[i].salisten))->sin_port = htons(params.port); + } + } + + if (params.bind_wait_only) + { + printf("bind wait condition satisfied. exiting.\n"); + exit_v = 0; + goto exiterr; + } + + if (params.proxy_type==CONN_TYPE_TRANSPARENT && !redir_init()) + { + fprintf(stderr,"could not initialize redirector !!!\n"); + goto exiterr; + } + + for(i=0;i<=params.binds_last;i++) + { + VPRINT("Binding %d",i); + + if ((listen_fd[i] = socket(list[i].salisten.ss_family, SOCK_STREAM, 0)) == -1) { + perror("socket: "); + goto exiterr; + } +#ifndef __OpenBSD__ +// in OpenBSD always IPV6_ONLY for wildcard sockets + if ((list[i].salisten.ss_family == AF_INET6) && setsockopt(listen_fd[i], IPPROTO_IPV6, IPV6_V6ONLY, &list[i].ipv6_only, sizeof(int)) == -1) + { + perror("setsockopt (IPV6_ONLY): "); + goto exiterr; + } +#endif + + if (setsockopt(listen_fd[i], SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1) + { + perror("setsockopt (SO_REUSEADDR): "); + goto exiterr; + } + + //Mark that this socket can be used for transparent proxying + //This allows the socket to accept connections for non-local IPs + if (params.proxy_type==CONN_TYPE_TRANSPARENT) + { + #ifdef __linux__ + if (setsockopt(listen_fd[i], SOL_IP, IP_TRANSPARENT, &yes, sizeof(yes)) == -1) + { + perror("setsockopt (IP_TRANSPARENT): "); + goto exiterr; + } + #elif defined(BSD) && defined(SO_BINDANY) + if (setsockopt(listen_fd[i], SOL_SOCKET, SO_BINDANY, &yes, sizeof(yes)) == -1) + { + perror("setsockopt (SO_BINDANY): "); + goto exiterr; + } + #endif + } + + if (!set_socket_buffers(listen_fd[i], params.local_rcvbuf, params.local_sndbuf)) + goto exiterr; + if (!params.local_rcvbuf) + { + // HACK : dont know why but if dont set RCVBUF explicitly RCVBUF of accept()-ed socket can be very large. may be linux bug ? + int v; + socklen_t sz=sizeof(int); + if (!getsockopt(listen_fd[i],SOL_SOCKET,SO_RCVBUF,&v,&sz)) + { + v/=2; + setsockopt(listen_fd[i],SOL_SOCKET,SO_RCVBUF,&v,sizeof(int)); + } + } + if (bind(listen_fd[i], (struct sockaddr *)&list[i].salisten, list[i].salisten_len) == -1) { + perror("bind: "); + goto exiterr; + } + if (listen(listen_fd[i], BACKLOG) == -1) { + perror("listen: "); + goto exiterr; + } + } + + set_ulimit(); + + if (params.droproot && !droproot(params.uid,params.gid)) + goto exiterr; + print_id(); + + //splice() causes the process to receive the SIGPIPE-signal if one part (for + //example a socket) is closed during splice(). I would rather have splice() + //fail and return -1, so blocking SIGPIPE. + if (block_sigpipe() == -1) { + fprintf(stderr, "Could not block SIGPIPE signal\n"); + goto exiterr; + } + + printf(params.proxy_type==CONN_TYPE_SOCKS ? "socks mode\n" : "transparent proxy mode\n"); + if (!params.tamper) printf("TCP proxy mode (no tampering)\n"); + + signal(SIGHUP, onhup); + + retval = event_loop(listen_fd,params.binds_last+1); + exit_v = retval < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + printf("Exiting\n"); + +exiterr: + redir_close(); + for(i=0;i<=params.binds_last;i++) if (listen_fd[i]!=-1) close(listen_fd[i]); + cleanup_params(); + return exit_v; +} diff --git a/tpws/tpws.h b/tpws/tpws.h new file mode 100644 index 0000000..0753ec5 --- /dev/null +++ b/tpws/tpws.h @@ -0,0 +1,9 @@ +#pragma once + +#ifdef __linux__ + #define SPLICE_PRESENT +#endif + +#include + +void dohup(); diff --git a/tpws/tpws_conn.c b/tpws/tpws_conn.c new file mode 100644 index 0000000..ab2b605 --- /dev/null +++ b/tpws/tpws_conn.c @@ -0,0 +1,1289 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tpws.h" +#include "tpws_conn.h" +#include "redirect.h" +#include "tamper.h" +#include "params.h" +#include "socks.h" +#include "helpers.h" + +// keep separate legs counter. counting every time thousands of legs can consume cpu +static int legs_local, legs_remote; +/* +static void count_legs(struct tailhead *conn_list) +{ + tproxy_conn_t *conn = NULL; + + legs_local = legs_remote = 0; + TAILQ_FOREACH(conn, conn_list, conn_ptrs) + conn->remote ? legs_remote++ : legs_local++; + +} +*/ +static void print_legs() +{ + VPRINT("Legs : local:%d remote:%d", legs_local, legs_remote) +} + + +static bool socks5_send_rep(int fd,uint8_t rep) +{ + s5_rep s5rep; + memset(&s5rep,0,sizeof(s5rep)); + s5rep.ver = 5; + s5rep.rep = rep; + s5rep.atyp = S5_ATYP_IP4; + return send(fd,&s5rep,sizeof(s5rep),MSG_DONTWAIT)==sizeof(s5rep); +} +static bool socks5_send_rep_errno(int fd,int errn) +{ + uint8_t rep; + switch(errn) + { + case 0: + rep=S5_REP_OK; break; + case ECONNREFUSED: + rep=S5_REP_CONN_REFUSED; break; + case ENETUNREACH: + rep=S5_REP_NETWORK_UNREACHABLE; break; + case ETIMEDOUT: + case EHOSTUNREACH: + rep=S5_REP_HOST_UNREACHABLE; break; + default: + rep=S5_REP_GENERAL_FAILURE; + } + return socks5_send_rep(fd,rep); +} +static bool socks4_send_rep(int fd, uint8_t rep) +{ + s4_rep s4rep; + memset(&s4rep, 0, sizeof(s4rep)); + s4rep.rep = rep; + return send(fd, &s4rep, sizeof(s4rep), MSG_DONTWAIT) == sizeof(s4rep); +} +static bool socks4_send_rep_errno(int fd, int errn) +{ + return socks4_send_rep(fd, errn ? S4_REP_FAILED : S4_REP_OK); +} +static bool socks_send_rep(uint8_t ver, int fd, uint8_t rep5) +{ + return ver==5 ? socks5_send_rep(fd, rep5) : socks4_send_rep(fd, rep5 ? S4_REP_FAILED : S4_REP_OK); +} +static bool socks_send_rep_errno(uint8_t ver, int fd, int errn) +{ + return ver==5 ? socks5_send_rep_errno(fd,errn) : socks4_send_rep_errno(fd, errn); +} +static bool proxy_remote_conn_ack(tproxy_conn_t *conn, int sock_err) +{ + // if proxy mode acknowledge connection request + // conn = remote. conn->partner = local + if (!conn->remote || !conn->partner) return false; + bool bres = true; + switch(conn->partner->conn_type) + { + case CONN_TYPE_SOCKS: + if (conn->partner->socks_state==S_WAIT_CONNECTION) + { + conn->partner->socks_state=S_TCP; + bres = socks_send_rep_errno(conn->partner->socks_ver,conn->partner->fd,sock_err); + DBGPRINT("socks connection acknowledgement. bres=%d remote_errn=%d remote_fd=%d local_fd=%d",bres,sock_err,conn->fd,conn->partner->fd) + } + break; + } + return bres; +} + + + +static bool send_buffer_create(send_buffer_t *sb, char *data, size_t len) +{ + if (sb->data) + { + fprintf(stderr,"FATAL : send_buffer_create but buffer is not empty\n"); + exit(1); + } + sb->data = malloc(len); + if (!sb->data) + { + DBGPRINT("send_buffer_create failed. errno=%d",errno) + return false; + } + if (data) memcpy(sb->data,data,len); + sb->len = len; + sb->pos = 0; + return true; +} +static void send_buffer_free(send_buffer_t *sb) +{ + if (sb->data) + { + free(sb->data); + sb->data = NULL; + } +} +static void send_buffers_free(send_buffer_t *sb_array, int count) +{ + for (int i=0;iwr_buf,sizeof(conn->wr_buf)/sizeof(conn->wr_buf[0])); +} +static bool send_buffer_present(send_buffer_t *sb) +{ + return !!sb->data; +} +static bool send_buffers_present(send_buffer_t *sb_array, int count) +{ + for(int i=0;idata + sb->pos, sb->len - sb->pos, 0); + DBGPRINT("send_buffer_send len=%zu pos=%zu wr=%zd err=%d",sb->len,sb->pos,wr,errno) + if (wr>0) + { + sb->pos += wr; + if (sb->pos >= sb->len) + { + send_buffer_free(sb); + } + } + else if (wr<0 && errno==EAGAIN) wr=0; + + return wr; +} +static ssize_t send_buffers_send(send_buffer_t *sb_array, int count, int fd, size_t *real_wr) +{ + ssize_t wr=0,twr=0; + + for (int i=0;iconn_type==CONN_TYPE_SOCKS && conn->socks_state!=S_TCP); +} + +static bool conn_partner_alive(tproxy_conn_t *conn) +{ + return conn->partner && conn->partner->state!=CONN_CLOSED; +} +static bool conn_buffers_present(tproxy_conn_t *conn) +{ + return send_buffers_present(conn->wr_buf,sizeof(conn->wr_buf)/sizeof(conn->wr_buf[0])); +} +static ssize_t conn_buffers_send(tproxy_conn_t *conn) +{ + size_t wr,real_twr; + wr = send_buffers_send(conn->wr_buf,sizeof(conn->wr_buf)/sizeof(conn->wr_buf[0]), conn->fd, &real_twr); + conn->twr += real_twr; + return wr; +} +static bool conn_has_unsent(tproxy_conn_t *conn) +{ + return conn->wr_unsent || conn_buffers_present(conn); +} +static int conn_bytes_unread(tproxy_conn_t *conn) +{ + int numbytes=-1; + ioctl(conn->fd, FIONREAD, &numbytes); + return numbytes; +} +static bool conn_has_unsent_pair(tproxy_conn_t *conn) +{ + return conn_has_unsent(conn) || (conn_partner_alive(conn) && conn_has_unsent(conn->partner)); +} + + +static ssize_t send_or_buffer(send_buffer_t *sb, int fd, char *buf, size_t len) +{ + ssize_t wr=0; + if (len) + { + wr = send(fd, buf, len, 0); + if (wr<0 && errno==EAGAIN) wr=0; + if (wr>=0 && wr=2) + { + int v; + socklen_t sz; + sz=sizeof(int); + if (!getsockopt(fd,SOL_SOCKET,SO_RCVBUF,&v,&sz)) + DBGPRINT("fd=%d SO_RCVBUF=%d",fd,v) + sz=sizeof(int); + if (!getsockopt(fd,SOL_SOCKET,SO_SNDBUF,&v,&sz)) + DBGPRINT("fd=%d SO_SNDBUF=%d",fd,v) + } +} + +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf) +{ + DBGPRINT("set_socket_buffers fd=%d rcvbuf=%d sndbuf=%d",fd,rcvbuf,sndbuf) + if (rcvbuf && setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(int)) <0) + { + perror("setsockopt (SO_RCVBUF): "); + close(fd); + return false; + } + if (sndbuf && setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(int)) <0) + { + perror("setsockopt (SO_SNDBUF): "); + close(fd); + return false; + } + dbgprint_socket_buffers(fd); + return true; +} + +//Createas a socket and initiates the connection to the host specified by +//remote_addr. +//Returns -1 if something fails, >0 on success (socket fd). +static int connect_remote(const struct sockaddr *remote_addr) +{ + int remote_fd = 0, yes = 1, no = 0; + + + if((remote_fd = socket(remote_addr->sa_family, SOCK_STREAM, 0)) < 0) + { + perror("socket (connect_remote): "); + return -1; + } + // Use NONBLOCK to avoid slow connects affecting the performance of other connections + // separate fcntl call to comply with macos + if (fcntl(remote_fd, F_SETFL, O_NONBLOCK)<0) + { + perror("socket set O_NONBLOCK (connect_remote): "); + close(remote_fd); + return -1; + } + if(setsockopt(remote_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0) + { + perror("setsockopt (SO_REUSEADDR, connect_remote): "); + close(remote_fd); + return -1; + } + if (!set_socket_buffers(remote_fd, params.remote_rcvbuf, params.remote_sndbuf)) + return -1; + if(!set_keepalive(remote_fd)) + { + perror("set_keepalive: "); + close(remote_fd); + return -1; + } + if (setsockopt(remote_fd, IPPROTO_TCP, TCP_NODELAY, params.skip_nodelay ? &no : &yes, sizeof(int)) <0) + { + perror("setsockopt (SO_NODELAY, connect_remote): "); + close(remote_fd); + return -1; + } + if(connect(remote_fd, remote_addr, remote_addr->sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)) < 0) + { + if(errno != EINPROGRESS) + { + perror("connect (connect_remote): "); + close(remote_fd); + return -1; + } + } + DBGPRINT("Connecting remote fd=%d",remote_fd) + + return remote_fd; +} + + +//Free resources occupied by this connection +static void free_conn(tproxy_conn_t *conn) +{ + if (!conn) return; + if (conn->fd) close(conn->fd); + if (conn->splice_pipe[0]) + { + close(conn->splice_pipe[0]); + close(conn->splice_pipe[1]); + } + conn_free_buffers(conn); + if (conn->partner) conn->partner->partner=NULL; + free(conn); +} +static tproxy_conn_t *new_conn(int fd, bool remote) +{ + tproxy_conn_t *conn; + + //Create connection object and fill in information + if((conn = (tproxy_conn_t*) malloc(sizeof(tproxy_conn_t))) == NULL) + { + fprintf(stderr, "Could not allocate memory for connection\n"); + return NULL; + } + + memset(conn, 0, sizeof(tproxy_conn_t)); + conn->state = CONN_UNAVAILABLE; + conn->fd = fd; + conn->remote = remote; + +#ifdef SPLICE_PRESENT + // if dont tamper - both legs are spliced, create 2 pipes + // otherwise create pipe only in local leg + if((!params.tamper || !remote) && pipe2(conn->splice_pipe, O_NONBLOCK) != 0) + { + fprintf(stderr, "Could not create the splice pipe\n"); + free_conn(conn); + return NULL; + } +#endif + + return conn; +} + +static bool epoll_set(tproxy_conn_t *conn, uint32_t events) +{ + struct epoll_event ev; + + memset(&ev, 0, sizeof(ev)); + ev.events = events; + ev.data.ptr = (void*) conn; + DBGPRINT("epoll_set fd=%d events=%08X",conn->fd,events); + if(epoll_ctl(conn->efd, EPOLL_CTL_MOD, conn->fd, &ev)==-1 && + epoll_ctl(conn->efd, EPOLL_CTL_ADD, conn->fd, &ev)==-1) + { + perror("epoll_ctl (add/mod)"); + return false; + } + return true; +} +static bool epoll_del(tproxy_conn_t *conn) +{ + struct epoll_event ev; + + memset(&ev, 0, sizeof(ev)); + + DBGPRINT("epoll_del fd=%d",conn->fd); + if(epoll_ctl(conn->efd, EPOLL_CTL_DEL, conn->fd, &ev)==-1) + { + perror("epoll_ctl (del)"); + return false; + } + return true; +} + +static bool epoll_update_flow(tproxy_conn_t *conn) +{ + if (conn->bFlowInPrev==conn->bFlowIn && conn->bFlowOutPrev==conn->bFlowOut && conn->bPrevRdhup==(conn->state==CONN_RDHUP)) + return true; // unchanged, no need to syscall + uint32_t evtmask = (conn->state==CONN_RDHUP ? 0 : EPOLLRDHUP)|(conn->bFlowIn?EPOLLIN:0)|(conn->bFlowOut?EPOLLOUT:0); + if (!epoll_set(conn, evtmask)) + return false; + DBGPRINT("SET FLOW fd=%d to in=%d out=%d state_rdhup=%d",conn->fd,conn->bFlowIn,conn->bFlowOut,conn->state==CONN_RDHUP) + conn->bFlowInPrev = conn->bFlowIn; + conn->bFlowOutPrev = conn->bFlowOut; + conn->bPrevRdhup = (conn->state==CONN_RDHUP); + return true; +} +static bool epoll_set_flow(tproxy_conn_t *conn, bool bFlowIn, bool bFlowOut) +{ + conn->bFlowIn = bFlowIn; + conn->bFlowOut = bFlowOut; + return epoll_update_flow(conn); +} + +//Acquires information, initiates a connect and initialises a new connection +//object. Return NULL if anything fails, pointer to object otherwise +static tproxy_conn_t* add_tcp_connection(int efd, struct tailhead *conn_list,int local_fd, const struct sockaddr *accept_sa, uint16_t listen_port, conn_type_t proxy_type) +{ + struct sockaddr_storage orig_dst; + tproxy_conn_t *conn; + int remote_fd=0; + + if (proxy_type==CONN_TYPE_TRANSPARENT) + { + if(!get_dest_addr(local_fd, accept_sa, &orig_dst)) + { + fprintf(stderr, "Could not get destination address\n"); + close(local_fd); + return NULL; + } + if (check_local_ip((struct sockaddr*)&orig_dst) && saport((struct sockaddr*)&orig_dst)==listen_port) + { + VPRINT("Dropping connection to local address to the same port to avoid loop") + close(local_fd); + return NULL; + } + } + + // socket buffers inherited from listen_fd + dbgprint_socket_buffers(local_fd); + + if(!set_keepalive(local_fd)) + { + perror("set_keepalive: "); + close(local_fd); + return 0; + } + + if (proxy_type==CONN_TYPE_TRANSPARENT) + { + if ((remote_fd = connect_remote((struct sockaddr *)&orig_dst)) < 0) + { + fprintf(stderr, "Failed to connect\n"); + close(local_fd); + return NULL; + } + } + + if(!(conn = new_conn(local_fd, false))) + { + if (remote_fd) close(remote_fd); + close(local_fd); + return NULL; + } + conn->conn_type = proxy_type; // only local connection has proxy_type. remote is always in tcp mode + conn->state = CONN_AVAILABLE; // accepted connection is immediately available + conn->efd = efd; + + if (proxy_type==CONN_TYPE_TRANSPARENT) + { + if(!(conn->partner = new_conn(remote_fd, true))) + { + free_conn(conn); + close(remote_fd); + return NULL; + } + conn->partner->partner = conn; + conn->partner->efd = efd; + + //remote_fd is connecting. Non-blocking connects are signaled as done by + //socket being marked as ready for writing + if (!epoll_set(conn->partner, EPOLLOUT)) + { + free_conn(conn->partner); + free_conn(conn); + return NULL; + } + } + + //Transparent proxy mode : + // Local socket can be closed while waiting for connection attempt. I need + // to detect this when waiting for connect() to complete. However, I dont + // want to get EPOLLIN-events, as I dont want to receive any data before + // remote connection is established + //Proxy mode : I need to service proxy protocol + // remote connection not started until proxy handshake is complete + + if (!epoll_set(conn, proxy_type==CONN_TYPE_TRANSPARENT ? EPOLLRDHUP : (EPOLLIN|EPOLLRDHUP))) + { + free_conn(conn->partner); + free_conn(conn); + return NULL; + } + + TAILQ_INSERT_HEAD(conn_list, conn, conn_ptrs); + legs_local++; + if (conn->partner) + { + TAILQ_INSERT_HEAD(conn_list, conn->partner, conn_ptrs); + legs_remote++; + } + return conn; +} + +//Checks if a connection attempt was successful or not +//Returns true if successfull, false if not +static bool check_connection_attempt(tproxy_conn_t *conn, int efd) +{ + int errn = 0; + socklen_t optlen = sizeof(errn); + + if (conn->state!=CONN_UNAVAILABLE || !conn->remote) + { + // locals are connected since accept + // remote need to be checked only once + return true; + } + + if (!conn_partner_alive(conn)) + { + // local leg died ? + VPRINT("check_connection_attempt : fd=%d (remote) : local leg died. failing this connection attempt.", conn->fd) + return false; + } + + // check the connection was sucessfull. it means its not in in SO_ERROR state + if(getsockopt(conn->fd, SOL_SOCKET, SO_ERROR, &errn, &optlen) == -1) + { + perror("getsockopt (SO_ERROR)"); + return false; + } + if (!errn) + { + VPRINT("Socket fd=%d (remote) connected", conn->fd) + if (!epoll_set_flow(conn, true, false) || !epoll_set_flow(conn->partner, true, false)) + return false; + conn->state = CONN_AVAILABLE; + } + return proxy_remote_conn_ack(conn,get_so_error(conn->fd)) && !errn; +} + + + + +static bool epoll_set_flow_pair(tproxy_conn_t *conn) +{ + bool bHasUnsent = conn_has_unsent(conn); + bool bHasUnsentPartner = conn_partner_alive(conn) ? conn_has_unsent(conn->partner) : false; + + DBGPRINT("epoll_set_flow_pair fd=%d remote=%d partner_fd=%d bHasUnsent=%d bHasUnsentPartner=%d state_rdhup=%d", + conn->fd , conn->remote, conn_partner_alive(conn) ? conn->partner->fd : 0, bHasUnsent, bHasUnsentPartner, conn->state==CONN_RDHUP) + if (!epoll_set_flow(conn, !bHasUnsentPartner && (conn->state!=CONN_RDHUP), bHasUnsent || conn->state==CONN_RDHUP)) + return false; + if (conn_partner_alive(conn)) + { + if (!epoll_set_flow(conn->partner, !bHasUnsent && (conn->partner->state!=CONN_RDHUP), bHasUnsentPartner || conn->partner->state==CONN_RDHUP)) + return false; + } + return true; +} + +static bool handle_unsent(tproxy_conn_t *conn) +{ + ssize_t wr=0,twr=0; + + DBGPRINT("+handle_unsent, fd=%d has_unsent=%d has_unsent_partner=%d",conn->fd,conn_has_unsent(conn),conn_partner_alive(conn) ? conn_has_unsent(conn->partner) : false) + +#ifdef SPLICE_PRESENT + if (conn->wr_unsent) + { + wr = splice(conn->splice_pipe[0], NULL, conn->fd, NULL, conn->wr_unsent, SPLICE_F_MOVE | SPLICE_F_NONBLOCK); + DBGPRINT("splice unsent=%zd wr=%zd err=%d",conn->wr_unsent,wr,errno) + if (wr<0) + { + if (errno==EAGAIN) wr=0; + else return false; + } + twr += wr; + conn->twr += wr; + conn->wr_unsent -= wr; + } +#endif + if (!conn->wr_unsent && conn_buffers_present(conn)) + { + wr=conn_buffers_send(conn); + DBGPRINT("conn_buffers_send wr=%zd",wr) + if (wr<0) return false; + twr += wr; + } + return epoll_set_flow_pair(conn); +} + + +bool proxy_mode_connect_remote(const struct sockaddr *sa, tproxy_conn_t *conn, struct tailhead *conn_list) +{ + int remote_fd; + + if (params.debug>=1) + { + printf("socks target for fd=%d is : ", conn->fd); + print_sockaddr(sa); + printf("\n"); + } + if (check_local_ip((struct sockaddr *)sa)) + { + VPRINT("Dropping connection to local address for security reasons") + socks_send_rep(conn->socks_ver, conn->fd, S5_REP_NOT_ALLOWED_BY_RULESET); + return false; + } + + if ((remote_fd = connect_remote(sa)) < 0) + { + fprintf(stderr, "socks failed to connect (1) errno=%d\n", errno); + socks_send_rep_errno(conn->socks_ver, conn->fd, errno); + return false; + } + if (!(conn->partner = new_conn(remote_fd, true))) + { + close(remote_fd); + fprintf(stderr, "socks out-of-memory (1)\n"); + socks_send_rep(conn->socks_ver, conn->fd, S5_REP_GENERAL_FAILURE); + return false; + } + conn->partner->partner = conn; + conn->partner->efd = conn->efd; + if (!epoll_set(conn->partner, EPOLLOUT)) + { + fprintf(stderr, "socks epoll_set error %d\n", errno); + free_conn(conn->partner); + conn->partner = NULL; + socks_send_rep(conn->socks_ver, conn->fd, S5_REP_GENERAL_FAILURE); + return false; + } + TAILQ_INSERT_HEAD(conn_list, conn->partner, conn_ptrs); + legs_remote++; + print_legs(); + DBGPRINT("socks connecting") + conn->socks_state = S_WAIT_CONNECTION; + return true; +} + +static bool handle_proxy_mode(tproxy_conn_t *conn, struct tailhead *conn_list) +{ + // To simplify things I dont care about buffering. If message splits, I just hang up + // in proxy mode messages are short. they can be split only intentionally. all normal programs send them in one packet + + ssize_t rd,wr; + char buf[sizeof(s5_req)]; // s5_req - the largest possible req + struct sockaddr_storage ss; + + // receive proxy control message + rd=recv(conn->fd, buf, sizeof(buf), MSG_DONTWAIT); + DBGPRINT("handle_proxy_mode rd=%zd",rd) + if (rd<1) return false; // hangup + switch(conn->conn_type) + { + case CONN_TYPE_SOCKS: + switch(conn->socks_state) + { + case S_WAIT_HANDSHAKE: + DBGPRINT("S_WAIT_HANDSHAKE") + if (buf[0] != 5 && buf[0] != 4) return false; // unknown socks version + conn->socks_ver = buf[0]; + DBGPRINT("socks version %u", conn->socks_ver) + if (conn->socks_ver==5) + { + s5_handshake *m = (s5_handshake*)buf; + s5_handshake_ack ack; + uint8_t k; + + ack.ver=5; + if (!S5_REQ_HANDHSHAKE_VALID(m,rd)) + { + DBGPRINT("socks5 proxy handshake invalid") + return false; + } + for (k=0;knmethods;k++) if (m->methods[k]==S5_AUTH_NONE) break; + if (k>=m->nmethods) + { + DBGPRINT("socks5 client wants authentication but we dont support") + ack.method=S5_AUTH_UNACCEPTABLE; + wr=send(conn->fd,&ack,sizeof(ack),MSG_DONTWAIT); + return false; + } + DBGPRINT("socks5 recv valid handshake") + ack.method=S5_AUTH_NONE; + wr=send(conn->fd,&ack,sizeof(ack),MSG_DONTWAIT); + if (wr!=sizeof(ack)) + { + DBGPRINT("socks5 handshake ack send error. wr=%zd errno=%d",wr,errno) + return false; + } + DBGPRINT("socks5 send handshake ack OK") + conn->socks_state=S_WAIT_REQUEST; + return true; + } + else + { + // socks4 does not have separate handshake phase. it starts with connect request + // ipv6 and domain resolving are not supported + s4_req *m = (s4_req*)buf; + if (!S4_REQ_HEADER_VALID(m, rd)) + { + DBGPRINT("socks4 request invalid") + return false; + } + if (m->cmd!=S4_CMD_CONNECT) + { + // BIND is not supported + DBGPRINT("socks4 unsupported command %02X", m->cmd) + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + if (!S4_REQ_CONNECT_VALID(m, rd)) + { + DBGPRINT("socks4 connect request invalid") + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + if (!m->port) + { + DBGPRINT("socks4 zero port") + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + ss.ss_family = AF_INET; + ((struct sockaddr_in*)&ss)->sin_port = m->port; + ((struct sockaddr_in*)&ss)->sin_addr.s_addr = m->ip; + return proxy_mode_connect_remote((struct sockaddr *)&ss, conn, conn_list); + } + break; + case S_WAIT_REQUEST: + DBGPRINT("S_WAIT_REQUEST") + { + s5_req *m = (s5_req*)buf; + + if (!S5_REQ_HEADER_VALID(m,rd)) + { + DBGPRINT("socks5 request invalid") + return false; + } + if (m->cmd!=S5_CMD_CONNECT) + { + // BIND and UDP are not supported + DBGPRINT("socks5 unsupported command %02X", m->cmd) + socks5_send_rep(conn->fd,S5_REP_COMMAND_NOT_SUPPORTED); + return false; + } + if (!S5_REQ_CONNECT_VALID(m,rd)) + { + DBGPRINT("socks5 connect request invalid") + return false; + } + DBGPRINT("socks5 recv valid connect request") + switch(m->atyp) + { + case S5_ATYP_IP4: + ss.ss_family = AF_INET; + ((struct sockaddr_in*)&ss)->sin_port = m->d4.port; + ((struct sockaddr_in*)&ss)->sin_addr = m->d4.addr; + break; + case S5_ATYP_IP6: + ss.ss_family = AF_INET6; + ((struct sockaddr_in6*)&ss)->sin6_port = m->d6.port; + ((struct sockaddr_in6*)&ss)->sin6_addr = m->d6.addr; + ((struct sockaddr_in6*)&ss)->sin6_flowinfo = 0; + ((struct sockaddr_in6*)&ss)->sin6_scope_id = 0; + break; + case S5_ATYP_DOM: + // NOTE : resolving is blocking. do you want it really ? + { + struct addrinfo *ai,hints; + char sdom[256]; + int r; + uint16_t port; + char sport[6]; + + if (params.no_resolve) + { + DBGPRINT("socks5 hostname resolving disabled") + socks5_send_rep(conn->fd,S5_REP_NOT_ALLOWED_BY_RULESET); + return false; + } + port=S5_PORT_FROM_DD(m,rd); + if (!port) + { + DBGPRINT("socks5 no port is given") + socks5_send_rep(conn->fd,S5_REP_HOST_UNREACHABLE); + return false; + } + snprintf(sport,sizeof(sport),"%u",port); + memcpy(sdom,m->dd.domport,m->dd.len); + sdom[m->dd.len] = '\0'; + DBGPRINT("socks5 resolving hostname '%s' port '%s'",sdom,sport) + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_socktype = SOCK_STREAM; + r=getaddrinfo(sdom,sport,&hints,&ai); + if (r) + { + DBGPRINT("socks5 getaddrinfo error %d",r) + socks5_send_rep(conn->fd,S5_REP_HOST_UNREACHABLE); + return false; + } + if (params.debug>=2) + { + printf("socks5 hostname resolved to :\n"); + print_addrinfo(ai); + } + memcpy(&ss,ai->ai_addr,ai->ai_addrlen); + freeaddrinfo(ai); + } + break; + default: + return false; // should not be here. S5_REQ_CONNECT_VALID checks for valid atyp + + } + return proxy_mode_connect_remote((struct sockaddr *)&ss,conn,conn_list); + } + break; + case S_WAIT_CONNECTION: + DBGPRINT("socks received message while in S_WAIT_CONNECTION. hanging up") + break; + default: + DBGPRINT("socks received message while in an unexpected connection state") + break; + } + break; + } + return false; +} + +#define RD_BLOCK_SIZE 65536 +#define MAX_WASTE (1024*1024) +static bool handle_epoll(tproxy_conn_t *conn, struct tailhead *conn_list, uint32_t evt) +{ + int numbytes; + ssize_t rd = 0, wr = 0; + size_t bs; + + + DBGPRINT("+handle_epoll") + + if (!conn_in_tcp_mode(conn)) + { + if (!(evt & EPOLLIN)) + return true; // nothing to read + return handle_proxy_mode(conn,conn_list); + } + + if (!handle_unsent(conn)) + return false; // error + if (!conn_partner_alive(conn) && !conn_has_unsent(conn)) + return false; // when no partner, we only waste read and send unsent + + if (!(evt & EPOLLIN)) + return true; // nothing to read + + if (!conn_partner_alive(conn)) + { + // throw it to a black hole + char waste[65070]; + ssize_t trd=0; + + while((rd=recv(conn->fd, waste, sizeof(waste), MSG_DONTWAIT))>0 && trdtrd+=rd; + } + DBGPRINT("wasted recv=%zd all_rd=%zd err=%d",rd,trd,errno) + return true; + } + + // do not receive new until old is sent + if (conn_has_unsent(conn->partner)) + return true; + + bool oom=false; + + numbytes=conn_bytes_unread(conn); + DBGPRINT("numbytes=%d",numbytes) + if (numbytes>0) + { +#ifdef SPLICE_PRESENT + if (!params.tamper || conn->remote) + { + // incoming data from remote leg we splice without touching + // pipe is in the local leg, so its in conn->partner->splice_pipe + // if we dont tamper - splice both legs + + rd = splice(conn->fd, NULL, conn->partner->splice_pipe[1], NULL, SPLICE_LEN, SPLICE_F_MOVE | SPLICE_F_NONBLOCK); + DBGPRINT("splice fd=%d remote=%d len=%d rd=%zd err=%d",conn->fd,conn->remote,SPLICE_LEN,rd,errno) + if (rd<0 && errno==EAGAIN) rd=0; + if (rd>0) + { + conn->trd += rd; + conn->partner->wr_unsent += rd; + wr = splice(conn->partner->splice_pipe[0], NULL, conn->partner->fd, NULL, conn->partner->wr_unsent, SPLICE_F_MOVE | SPLICE_F_NONBLOCK); + DBGPRINT("splice fd=%d remote=%d wr=%zd err=%d",conn->partner->fd,conn->partner->remote,wr,errno) + if (wr<0 && errno==EAGAIN) wr=0; + if (wr>0) + { + conn->partner->wr_unsent -= wr; + conn->partner->twr += wr; + } + } + } + else +#endif + { + // incoming data from local leg + char buf[RD_BLOCK_SIZE + 4]; + + rd = recv(conn->fd, buf, RD_BLOCK_SIZE, MSG_DONTWAIT); + DBGPRINT("recv fd=%d rd=%zd err=%d",conn->fd, rd,errno) + if (rd<0 && errno==EAGAIN) rd=0; + if (rd>0) + { + conn->trd+=rd; + + size_t split_pos=0; + + bs = rd; +#ifndef SPLICE_PRESENT + if (!conn->remote && params.tamper) +#endif + modify_tcp_segment(buf,sizeof(buf),&bs,&split_pos); + + if (split_pos) + { + VPRINT("Splitting at pos %zu", split_pos) + wr = send_or_buffer(conn->partner->wr_buf, conn->partner->fd, buf, split_pos); + DBGPRINT("send_or_buffer(1) fd=%d wr=%zd err=%d",conn->partner->fd,wr,errno) + if (wr >= 0) + { + conn->partner->twr += wr; + wr = send_or_buffer(conn->partner->wr_buf + 1, conn->partner->fd, buf + split_pos, bs - split_pos); + DBGPRINT("send_or_buffer(2) fd=%d wr=%zd err=%d",conn->partner->fd,wr,errno) + if (wr>0) conn->partner->twr += wr; + } + } + else + { + wr = send_or_buffer(conn->partner->wr_buf, conn->partner->fd, buf, bs); + DBGPRINT("send_or_buffer(3) fd=%d wr=%zd err=%d",conn->partner->fd,wr,errno) + if (wr>0) conn->partner->twr += wr; + } + if (wr<0 && errno==ENOMEM) oom=true; + } + } + + if (!epoll_set_flow_pair(conn)) + return false; + } + + DBGPRINT("-handle_epoll rd=%zd wr=%zd",rd,wr) + if (oom) DBGPRINT("handle_epoll: OUT_OF_MEMORY") + + // do not fail if partner fails. + // if partner fails there will be another epoll event with EPOLLHUP or EPOLLERR + return rd>=0 && !oom; +} + +static bool remove_closed_connections(int efd, struct tailhead *close_list) +{ + tproxy_conn_t *conn = NULL; + bool bRemoved = false; + + while ((conn = TAILQ_FIRST(close_list))) + { + TAILQ_REMOVE(close_list, conn, conn_ptrs); + + shutdown(conn->fd,SHUT_RDWR); + epoll_del(conn); + VPRINT("Socket fd=%d (partner_fd=%d, remote=%d) closed, connection removed. total_read=%zu total_write=%zu event_count=%d", + conn->fd, conn->partner ? conn->partner->fd : 0, conn->remote, conn->trd, conn->twr, conn->event_count) + if (conn->remote) legs_remote--; else legs_local--; + free_conn(conn); + bRemoved = true; + } + return bRemoved; +} + +// move to close list connection and its partner +static void close_tcp_conn(struct tailhead *conn_list, struct tailhead *close_list, tproxy_conn_t *conn) +{ + if (conn->state != CONN_CLOSED) + { + conn->state = CONN_CLOSED; + TAILQ_REMOVE(conn_list, conn, conn_ptrs); + TAILQ_INSERT_TAIL(close_list, conn, conn_ptrs); + } +} + + +static bool read_all_and_buffer(tproxy_conn_t *conn, int buffer_number) +{ + if (conn_partner_alive(conn)) + { + int numbytes=conn_bytes_unread(conn); + DBGPRINT("read_all_and_buffer(%d) numbytes=%d",buffer_number,numbytes) + if (numbytes>0) + { + if (send_buffer_create(conn->partner->wr_buf+buffer_number, NULL, numbytes)) + { + ssize_t rd = recv(conn->fd, conn->partner->wr_buf[buffer_number].data, numbytes, MSG_DONTWAIT); + if (rd>0) + { + conn->trd+=rd; + conn->partner->wr_buf[buffer_number].len = rd; + + conn->partner->bFlowOut = true; + if (epoll_update_flow(conn->partner)) + return true; + } + send_buffer_free(conn->partner->wr_buf+buffer_number); + } + } + } + return false; +} + + +static bool conn_timed_out(tproxy_conn_t *conn) +{ + if (conn->orphan_since && conn->state==CONN_UNAVAILABLE) + { + time_t timediff = time(NULL) - conn->orphan_since; + return timediff>=params.max_orphan_time; + } + else + return false; +} +static void conn_close_timed_out(struct tailhead *conn_list, struct tailhead *close_list) +{ + tproxy_conn_t *c,*cnext = NULL; + + DBGPRINT("conn_close_timed_out") + + c = TAILQ_FIRST(conn_list); + while(c) + { + cnext = TAILQ_NEXT(c,conn_ptrs); + if (conn_timed_out(c)) + { + DBGPRINT("closing timed out connection: fd=%d remote=%d",c->fd,c->remote) + close_tcp_conn(conn_list,close_list,c); + } + c = cnext; + } +} + +static void conn_close_both(struct tailhead *conn_list, struct tailhead *close_list, tproxy_conn_t *conn) +{ + if (conn_partner_alive(conn)) close_tcp_conn(conn_list,close_list,conn->partner); + close_tcp_conn(conn_list,close_list,conn); +} +static void conn_close_with_partner_check(struct tailhead *conn_list, struct tailhead *close_list, tproxy_conn_t *conn) +{ + close_tcp_conn(conn_list,close_list,conn); + if (conn_partner_alive(conn)) + { + if (!conn_has_unsent(conn->partner)) + close_tcp_conn(conn_list,close_list,conn->partner); + else if (conn->partner->remote && conn->partner->state==CONN_UNAVAILABLE && params.max_orphan_time) + // time out only remote legs that are not connected yet + conn->partner->orphan_since = time(NULL); + } +} + +int event_loop(int *listen_fd, size_t listen_fd_ct) +{ + int retval = 0, num_events = 0; + int tmp_fd = 0; //Used to temporarily hold the accepted file descriptor + tproxy_conn_t *conn = NULL; + int efd=0, i; + struct epoll_event ev, events[MAX_EPOLL_EVENTS]; + struct tailhead conn_list, close_list; + time_t tm,last_timeout_check=0; + tproxy_conn_t *listen_conn = NULL; + size_t sct; + struct sockaddr_storage accept_sa; + socklen_t accept_salen; + + if (!listen_fd_ct) return -1; + + legs_local = legs_remote = 0; + //Initialize queue (remember that TAILQ_HEAD just defines the struct) + TAILQ_INIT(&conn_list); + TAILQ_INIT(&close_list); + + if ((efd = epoll_create(1)) == -1) { + perror("epoll_create"); + return -1; + } + + if (!(listen_conn=calloc(listen_fd_ct,sizeof(*listen_conn)))) + { + perror("calloc listen_conn"); + return -1; + } + + //Start monitoring listen sockets + memset(&ev, 0, sizeof(ev)); + ev.events = EPOLLIN; + for(sct=0;sctevent_count++; + + if (conn->listener) + { + DBGPRINT("\nEVENT mask %08X fd=%d accept",events[i].events,conn->fd) + + accept_salen = sizeof(accept_sa); + //Accept new connection + tmp_fd = accept(conn->fd, (struct sockaddr*)&accept_sa, &accept_salen); + if (tmp_fd < 0) + { + perror("Failed to accept connection : "); + } + else if (legs_local >= params.maxconn) // each connection has 2 legs - local and remote + { + close(tmp_fd); + VPRINT("Too many local legs : %d", legs_local) + } + // separate fcntl call to comply with macos + else if (fcntl(tmp_fd, F_SETFL, O_NONBLOCK) < 0) + { + perror("socket set O_NONBLOCK (accept): "); + close(tmp_fd); + } + else if (!(conn=add_tcp_connection(efd, &conn_list, tmp_fd, (struct sockaddr*)&accept_sa, params.port, params.proxy_type))) + { + // add_tcp_connection closes fd in case of failure + VPRINT("Failed to add connection"); + } + else + { + print_legs(); + VPRINT("Socket fd=%d (local) connected", conn->fd) + } + } + else + { + DBGPRINT("\nEVENT mask %08X fd=%d remote=%d fd_partner=%d",events[i].events,conn->fd,conn->remote,conn_partner_alive(conn) ? conn->partner->fd : 0) + + if (conn->state != CONN_CLOSED) + { + if (events[i].events & (EPOLLHUP|EPOLLERR)) + { + int errn = get_so_error(conn->fd); + const char *se; + switch (events[i].events & (EPOLLHUP|EPOLLERR)) + { + case EPOLLERR: se="EPOLLERR"; break; + case EPOLLHUP: se="EPOLLHUP"; break; + case EPOLLHUP|EPOLLERR: se="EPOLLERR EPOLLHUP"; break; + default: se=NULL; + } + VPRINT("Socket fd=%d (partner_fd=%d, remote=%d) %s so_error=%d (%s)",conn->fd,conn->partner ? conn->partner->fd : 0,conn->remote,se,errn,strerror(errn)); + proxy_remote_conn_ack(conn,errn); + read_all_and_buffer(conn,3); + conn_close_with_partner_check(&conn_list,&close_list,conn); + continue; + } + if (events[i].events & EPOLLOUT) + { + if (!check_connection_attempt(conn, efd)) + { + VPRINT("Connection attempt failed for fd=%d", conn->fd) + conn_close_both(&conn_list,&close_list,conn); + continue; + } + } + if (events[i].events & EPOLLRDHUP) + { + DBGPRINT("EPOLLRDHUP") + read_all_and_buffer(conn,2); + + if (conn_has_unsent(conn)) + { + DBGPRINT("conn fd=%d has unsent, not closing", conn->fd) + conn->state = CONN_RDHUP; // only writes + epoll_set_flow(conn,false,true); + } + else + { + DBGPRINT("conn fd=%d has no unsent, closing", conn->fd) + conn_close_with_partner_check(&conn_list,&close_list,conn); + } + continue; + } + + if (events[i].events & (EPOLLIN|EPOLLOUT)) + { + // will not receive this until successful check_connection_attempt() + if (!handle_epoll(conn, &conn_list, events[i].events)) + { + DBGPRINT("handle_epoll false") + conn_close_with_partner_check(&conn_list,&close_list,conn); + continue; + } + } + } + + } + } + tm = time(NULL); + if (last_timeout_check!=tm) + { + // limit whole list lookups to once per second + last_timeout_check=tm; + conn_close_timed_out(&conn_list,&close_list); + } + if (remove_closed_connections(efd, &close_list)) + { + // at least one leg was removed. recount legs + print_legs(); + } + + fflush(stderr); fflush(stdout); // for console messages + } + +ex: + if (efd) close(efd); + if (listen_conn) free(listen_conn); + return retval; +} diff --git a/tpws/tpws_conn.h b/tpws/tpws_conn.h new file mode 100644 index 0000000..193695c --- /dev/null +++ b/tpws/tpws_conn.h @@ -0,0 +1,96 @@ +#pragma once + +#include +#include +#include + +#define BACKLOG 10 +#define MAX_EPOLL_EVENTS 64 +#define IP_TRANSPARENT 19 //So that application compiles on OpenWRT +#define SPLICE_LEN 65536 +#define DEFAULT_MAX_CONN 512 +#define DEFAULT_MAX_ORPHAN_TIME 5 + +int event_loop(int *listen_fd, size_t listen_fd_ct); + +//Three different states of a connection +enum{ + CONN_UNAVAILABLE=0, // connecting + CONN_AVAILABLE, // operational + CONN_RDHUP, // received RDHUP, only sending unsent buffers. more RDHUPs are blocked + CONN_CLOSED // will be deleted soon +}; +typedef uint8_t conn_state_t; + +// data in a send_buffer can be sent in several stages +// pos indicates size of already sent data +// when pos==len its time to free buffer +struct send_buffer +{ + char *data; + size_t len,pos; +}; +typedef struct send_buffer send_buffer_t; + +enum{ + CONN_TYPE_TRANSPARENT=0, + CONN_TYPE_SOCKS +}; +typedef uint8_t conn_type_t; + +struct tproxy_conn +{ + bool listener; // true - listening socket. false = connecion socket + bool remote; // false - accepted, true - connected + int efd; // epoll fd + int fd; + int splice_pipe[2]; + conn_state_t state; + conn_type_t conn_type; + + struct tproxy_conn *partner; // other leg + time_t orphan_since; + + // socks5 state machine + enum { + S_WAIT_HANDSHAKE=0, + S_WAIT_REQUEST, + S_WAIT_CONNECTION, + S_TCP + } socks_state; + uint8_t socks_ver; + + // these value are used in flow control. we do not use ET (edge triggered) polling + // if we dont disable notifications they will come endlessly until condition becomes false and will eat all cpu time + bool bFlowIn,bFlowOut, bFlowInPrev,bFlowOutPrev, bPrevRdhup; + + // total read,write + size_t trd,twr; + // number of epoll_wait events + unsigned int event_count; + + // connection is either spliced or send/recv + // spliced connection have pipe buffering but also can have send_buffer's + // pipe buffer comes first, then send_buffer's from 0 to countof(wr_buf)-1 + // send/recv connection do not have pipe and wr_unsent is meaningless, always 0 + ssize_t wr_unsent; // unsent bytes in the pipe + // buffer 0 : send before split_pos + // buffer 1 : send after split_pos + // buffer 2 : after RDHUP read all and buffer to the partner + // buffer 3 : after HUP read all and buffer to the partner + // (2 and 3 should not be filled simultaneously, but who knows what can happen. if we have to refill non-empty buffer its FATAL) + // all buffers are sent strictly from 0 to countof(wr_buf)-1 + // buffer cannot be sent if there is unsent data in a lower buffer + struct send_buffer wr_buf[4]; + + //Create the struct which contains ptrs to next/prev element + TAILQ_ENTRY(tproxy_conn) conn_ptrs; +}; +typedef struct tproxy_conn tproxy_conn_t; + +//Define the struct tailhead (code in sys/queue.h is quite intuitive) +//Use tail queue for efficient delete +TAILQ_HEAD(tailhead, tproxy_conn); + + +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf); diff --git a/tpws/uthash.h b/tpws/uthash.h new file mode 100644 index 0000000..f34c1f9 --- /dev/null +++ b/tpws/uthash.h @@ -0,0 +1,1217 @@ +/* +Copyright (c) 2003-2018, Troy D. Hanson http://troydhanson.github.com/uthash/ +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef UTHASH_H +#define UTHASH_H + +#define UTHASH_VERSION 2.0.2 + +#include /* memcmp, memset, strlen */ +#include /* ptrdiff_t */ +#include /* exit */ + +/* These macros use decltype or the earlier __typeof GNU extension. + As decltype is only available in newer compilers (VS2010 or gcc 4.3+ + when compiling c++ source) this code uses whatever method is needed + or, for VS2008 where neither is available, uses casting workarounds. */ +#if !defined(DECLTYPE) && !defined(NO_DECLTYPE) +#if defined(_MSC_VER) /* MS compiler */ +#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ +#define DECLTYPE(x) (decltype(x)) +#else /* VS2008 or older (or VS2010 in C mode) */ +#define NO_DECLTYPE +#endif +#elif defined(__BORLANDC__) || defined(__ICCARM__) || defined(__LCC__) || defined(__WATCOMC__) +#define NO_DECLTYPE +#else /* GNU, Sun and other compilers */ +#define DECLTYPE(x) (__typeof(x)) +#endif +#endif + +#ifdef NO_DECLTYPE +#define DECLTYPE(x) +#define DECLTYPE_ASSIGN(dst,src) \ +do { \ + char **_da_dst = (char**)(&(dst)); \ + *_da_dst = (char*)(src); \ +} while (0) +#else +#define DECLTYPE_ASSIGN(dst,src) \ +do { \ + (dst) = DECLTYPE(dst)(src); \ +} while (0) +#endif + +/* a number of the hash function use uint32_t which isn't defined on Pre VS2010 */ +#if defined(_WIN32) +#if defined(_MSC_VER) && _MSC_VER >= 1600 +#include +#elif defined(__WATCOMC__) || defined(__MINGW32__) || defined(__CYGWIN__) +#include +#else +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#endif +#elif defined(__GNUC__) && !defined(__VXWORKS__) +#include +#else +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#endif + +#ifndef uthash_malloc +#define uthash_malloc(sz) malloc(sz) /* malloc fcn */ +#endif +#ifndef uthash_free +#define uthash_free(ptr,sz) free(ptr) /* free fcn */ +#endif +#ifndef uthash_bzero +#define uthash_bzero(a,n) memset(a,'\0',n) +#endif +#ifndef uthash_memcmp +#define uthash_memcmp(a,b,n) memcmp(a,b,n) +#endif +#ifndef uthash_strlen +#define uthash_strlen(s) strlen(s) +#endif + +#ifndef uthash_noexpand_fyi +#define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */ +#endif +#ifndef uthash_expand_fyi +#define uthash_expand_fyi(tbl) /* can be defined to log expands */ +#endif + +#ifndef HASH_NONFATAL_OOM +#define HASH_NONFATAL_OOM 0 +#endif + +#if HASH_NONFATAL_OOM +/* malloc failures can be recovered from */ + +#ifndef uthash_nonfatal_oom +#define uthash_nonfatal_oom(obj) do {} while (0) /* non-fatal OOM error */ +#endif + +#define HASH_RECORD_OOM(oomed) do { (oomed) = 1; } while (0) +#define IF_HASH_NONFATAL_OOM(x) x + +#else +/* malloc failures result in lost memory, hash tables are unusable */ + +#ifndef uthash_fatal +#define uthash_fatal(msg) exit(-1) /* fatal OOM error */ +#endif + +#define HASH_RECORD_OOM(oomed) uthash_fatal("out of memory") +#define IF_HASH_NONFATAL_OOM(x) + +#endif + +/* initial number of buckets */ +#define HASH_INITIAL_NUM_BUCKETS 32U /* initial number of buckets */ +#define HASH_INITIAL_NUM_BUCKETS_LOG2 5U /* lg2 of initial number of buckets */ +#define HASH_BKT_CAPACITY_THRESH 10U /* expand when bucket count reaches */ + +/* calculate the element whose hash handle address is hhp */ +#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho))) +/* calculate the hash handle from element address elp */ +#define HH_FROM_ELMT(tbl,elp) ((UT_hash_handle *)(((char*)(elp)) + ((tbl)->hho))) + +#define HASH_ROLLBACK_BKT(hh, head, itemptrhh) \ +do { \ + struct UT_hash_handle *_hd_hh_item = (itemptrhh); \ + unsigned _hd_bkt; \ + HASH_TO_BKT(_hd_hh_item->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ + (head)->hh.tbl->buckets[_hd_bkt].count++; \ + _hd_hh_item->hh_next = NULL; \ + _hd_hh_item->hh_prev = NULL; \ +} while (0) + +#define HASH_VALUE(keyptr,keylen,hashv) \ +do { \ + HASH_FCN(keyptr, keylen, hashv); \ +} while (0) + +#define HASH_FIND_BYHASHVALUE(hh,head,keyptr,keylen,hashval,out) \ +do { \ + (out) = NULL; \ + if (head) { \ + unsigned _hf_bkt; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _hf_bkt); \ + if (HASH_BLOOM_TEST((head)->hh.tbl, hashval) != 0) { \ + HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], keyptr, keylen, hashval, out); \ + } \ + } \ +} while (0) + +#define HASH_FIND(hh,head,keyptr,keylen,out) \ +do { \ + unsigned _hf_hashv; \ + HASH_VALUE(keyptr, keylen, _hf_hashv); \ + HASH_FIND_BYHASHVALUE(hh, head, keyptr, keylen, _hf_hashv, out); \ +} while (0) + +#ifdef HASH_BLOOM +#define HASH_BLOOM_BITLEN (1UL << HASH_BLOOM) +#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8UL) + (((HASH_BLOOM_BITLEN%8UL)!=0UL) ? 1UL : 0UL) +#define HASH_BLOOM_MAKE(tbl,oomed) \ +do { \ + (tbl)->bloom_nbits = HASH_BLOOM; \ + (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \ + if (!(tbl)->bloom_bv) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ + (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \ + } \ +} while (0) + +#define HASH_BLOOM_FREE(tbl) \ +do { \ + uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \ +} while (0) + +#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8U] |= (1U << ((idx)%8U))) +#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8U] & (1U << ((idx)%8U))) + +#define HASH_BLOOM_ADD(tbl,hashv) \ + HASH_BLOOM_BITSET((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) + +#define HASH_BLOOM_TEST(tbl,hashv) \ + HASH_BLOOM_BITTEST((tbl)->bloom_bv, ((hashv) & (uint32_t)((1UL << (tbl)->bloom_nbits) - 1U))) + +#else +#define HASH_BLOOM_MAKE(tbl,oomed) +#define HASH_BLOOM_FREE(tbl) +#define HASH_BLOOM_ADD(tbl,hashv) +#define HASH_BLOOM_TEST(tbl,hashv) (1) +#define HASH_BLOOM_BYTELEN 0U +#endif + +#define HASH_MAKE_TABLE(hh,head,oomed) \ +do { \ + (head)->hh.tbl = (UT_hash_table*)uthash_malloc(sizeof(UT_hash_table)); \ + if (!(head)->hh.tbl) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head)->hh.tbl->tail = &((head)->hh); \ + (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \ + (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \ + (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \ + (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \ + HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ + (head)->hh.tbl->signature = HASH_SIGNATURE; \ + if (!(head)->hh.tbl->buckets) { \ + HASH_RECORD_OOM(oomed); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + } else { \ + uthash_bzero((head)->hh.tbl->buckets, \ + HASH_INITIAL_NUM_BUCKETS * sizeof(struct UT_hash_bucket)); \ + HASH_BLOOM_MAKE((head)->hh.tbl, oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (oomed) { \ + uthash_free((head)->hh.tbl->buckets, \ + HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + } \ + ) \ + } \ + } \ +} while (0) + +#define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \ +do { \ + (replaced) = NULL; \ + HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ + if (replaced) { \ + HASH_DELETE(hh, head, replaced); \ + } \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \ +} while (0) + +#define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \ +do { \ + (replaced) = NULL; \ + HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \ + if (replaced) { \ + HASH_DELETE(hh, head, replaced); \ + } \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \ +} while (0) + +#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \ +do { \ + unsigned _hr_hashv; \ + HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ + HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \ +} while (0) + +#define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \ +do { \ + unsigned _hr_hashv; \ + HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \ + HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \ +} while (0) + +#define HASH_APPEND_LIST(hh, head, add) \ +do { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \ + (head)->hh.tbl->tail->next = (add); \ + (head)->hh.tbl->tail = &((add)->hh); \ +} while (0) + +#define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ +do { \ + do { \ + if (cmpfcn(DECLTYPE(head)(_hs_iter), add) > 0) { \ + break; \ + } \ + } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ +} while (0) + +#ifdef NO_DECLTYPE +#undef HASH_AKBI_INNER_LOOP +#define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \ +do { \ + char *_hs_saved_head = (char*)(head); \ + do { \ + DECLTYPE_ASSIGN(head, _hs_iter); \ + if (cmpfcn(head, add) > 0) { \ + DECLTYPE_ASSIGN(head, _hs_saved_head); \ + break; \ + } \ + DECLTYPE_ASSIGN(head, _hs_saved_head); \ + } while ((_hs_iter = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->next)); \ +} while (0) +#endif + +#if HASH_NONFATAL_OOM + +#define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ +do { \ + if (!(oomed)) { \ + unsigned _ha_bkt; \ + (head)->hh.tbl->num_items++; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ + HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ + if (oomed) { \ + HASH_ROLLBACK_BKT(hh, head, &(add)->hh); \ + HASH_DELETE_HH(hh, head, &(add)->hh); \ + (add)->hh.tbl = NULL; \ + uthash_nonfatal_oom(add); \ + } else { \ + HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ + HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ + } \ + } else { \ + (add)->hh.tbl = NULL; \ + uthash_nonfatal_oom(add); \ + } \ +} while (0) + +#else + +#define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \ +do { \ + unsigned _ha_bkt; \ + (head)->hh.tbl->num_items++; \ + HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \ + HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \ + HASH_BLOOM_ADD((head)->hh.tbl, hashval); \ + HASH_EMIT_KEY(hh, head, keyptr, keylen_in); \ +} while (0) + +#endif + + +#define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \ +do { \ + IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ + (add)->hh.hashv = (hashval); \ + (add)->hh.key = (char*) (keyptr); \ + (add)->hh.keylen = (unsigned) (keylen_in); \ + if (!(head)) { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = NULL; \ + HASH_MAKE_TABLE(hh, add, _ha_oomed); \ + IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ + (head) = (add); \ + IF_HASH_NONFATAL_OOM( } ) \ + } else { \ + void *_hs_iter = (head); \ + (add)->hh.tbl = (head)->hh.tbl; \ + HASH_AKBI_INNER_LOOP(hh, head, add, cmpfcn); \ + if (_hs_iter) { \ + (add)->hh.next = _hs_iter; \ + if (((add)->hh.prev = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev)) { \ + HH_FROM_ELMT((head)->hh.tbl, (add)->hh.prev)->next = (add); \ + } else { \ + (head) = (add); \ + } \ + HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev = (add); \ + } else { \ + HASH_APPEND_LIST(hh, head, add); \ + } \ + } \ + HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ + HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE_INORDER"); \ +} while (0) + +#define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \ +do { \ + unsigned _hs_hashv; \ + HASH_VALUE(keyptr, keylen_in, _hs_hashv); \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \ +} while (0) + +#define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \ + HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn) + +#define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \ + HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn) + +#define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \ +do { \ + IF_HASH_NONFATAL_OOM( int _ha_oomed = 0; ) \ + (add)->hh.hashv = (hashval); \ + (add)->hh.key = (char*) (keyptr); \ + (add)->hh.keylen = (unsigned) (keylen_in); \ + if (!(head)) { \ + (add)->hh.next = NULL; \ + (add)->hh.prev = NULL; \ + HASH_MAKE_TABLE(hh, add, _ha_oomed); \ + IF_HASH_NONFATAL_OOM( if (!_ha_oomed) { ) \ + (head) = (add); \ + IF_HASH_NONFATAL_OOM( } ) \ + } else { \ + (add)->hh.tbl = (head)->hh.tbl; \ + HASH_APPEND_LIST(hh, head, add); \ + } \ + HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \ + HASH_FSCK(hh, head, "HASH_ADD_KEYPTR_BYHASHVALUE"); \ +} while (0) + +#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \ +do { \ + unsigned _ha_hashv; \ + HASH_VALUE(keyptr, keylen_in, _ha_hashv); \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \ +} while (0) + +#define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \ + HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add) + +#define HASH_ADD(hh,head,fieldname,keylen_in,add) \ + HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add) + +#define HASH_TO_BKT(hashv,num_bkts,bkt) \ +do { \ + bkt = ((hashv) & ((num_bkts) - 1U)); \ +} while (0) + +/* delete "delptr" from the hash table. + * "the usual" patch-up process for the app-order doubly-linked-list. + * The use of _hd_hh_del below deserves special explanation. + * These used to be expressed using (delptr) but that led to a bug + * if someone used the same symbol for the head and deletee, like + * HASH_DELETE(hh,users,users); + * We want that to work, but by changing the head (users) below + * we were forfeiting our ability to further refer to the deletee (users) + * in the patch-up process. Solution: use scratch space to + * copy the deletee pointer, then the latter references are via that + * scratch pointer rather than through the repointed (users) symbol. + */ +#define HASH_DELETE(hh,head,delptr) \ + HASH_DELETE_HH(hh, head, &(delptr)->hh) + +#define HASH_DELETE_HH(hh,head,delptrhh) \ +do { \ + struct UT_hash_handle *_hd_hh_del = (delptrhh); \ + if ((_hd_hh_del->prev == NULL) && (_hd_hh_del->next == NULL)) { \ + HASH_BLOOM_FREE((head)->hh.tbl); \ + uthash_free((head)->hh.tbl->buckets, \ + (head)->hh.tbl->num_buckets * sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head) = NULL; \ + } else { \ + unsigned _hd_bkt; \ + if (_hd_hh_del == (head)->hh.tbl->tail) { \ + (head)->hh.tbl->tail = HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev); \ + } \ + if (_hd_hh_del->prev != NULL) { \ + HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->prev)->next = _hd_hh_del->next; \ + } else { \ + DECLTYPE_ASSIGN(head, _hd_hh_del->next); \ + } \ + if (_hd_hh_del->next != NULL) { \ + HH_FROM_ELMT((head)->hh.tbl, _hd_hh_del->next)->prev = _hd_hh_del->prev; \ + } \ + HASH_TO_BKT(_hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \ + HASH_DEL_IN_BKT((head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \ + (head)->hh.tbl->num_items--; \ + } \ + HASH_FSCK(hh, head, "HASH_DELETE_HH"); \ +} while (0) + +/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */ +#define HASH_FIND_STR(head,findstr,out) \ +do { \ + unsigned _uthash_hfstr_keylen = (unsigned)uthash_strlen(findstr); \ + HASH_FIND(hh, head, findstr, _uthash_hfstr_keylen, out); \ +} while (0) +#define HASH_ADD_STR(head,strfield,add) \ +do { \ + unsigned _uthash_hastr_keylen = (unsigned)uthash_strlen((add)->strfield); \ + HASH_ADD(hh, head, strfield[0], _uthash_hastr_keylen, add); \ +} while (0) +#define HASH_REPLACE_STR(head,strfield,add,replaced) \ +do { \ + unsigned _uthash_hrstr_keylen = (unsigned)uthash_strlen((add)->strfield); \ + HASH_REPLACE(hh, head, strfield[0], _uthash_hrstr_keylen, add, replaced); \ +} while (0) +#define HASH_FIND_INT(head,findint,out) \ + HASH_FIND(hh,head,findint,sizeof(int),out) +#define HASH_ADD_INT(head,intfield,add) \ + HASH_ADD(hh,head,intfield,sizeof(int),add) +#define HASH_REPLACE_INT(head,intfield,add,replaced) \ + HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced) +#define HASH_FIND_PTR(head,findptr,out) \ + HASH_FIND(hh,head,findptr,sizeof(void *),out) +#define HASH_ADD_PTR(head,ptrfield,add) \ + HASH_ADD(hh,head,ptrfield,sizeof(void *),add) +#define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \ + HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced) +#define HASH_DEL(head,delptr) \ + HASH_DELETE(hh,head,delptr) + +/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined. + * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined. + */ +#ifdef HASH_DEBUG +#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0) +#define HASH_FSCK(hh,head,where) \ +do { \ + struct UT_hash_handle *_thh; \ + if (head) { \ + unsigned _bkt_i; \ + unsigned _count = 0; \ + char *_prev; \ + for (_bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; ++_bkt_i) { \ + unsigned _bkt_count = 0; \ + _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \ + _prev = NULL; \ + while (_thh) { \ + if (_prev != (char*)(_thh->hh_prev)) { \ + HASH_OOPS("%s: invalid hh_prev %p, actual %p\n", \ + (where), (void*)_thh->hh_prev, (void*)_prev); \ + } \ + _bkt_count++; \ + _prev = (char*)(_thh); \ + _thh = _thh->hh_next; \ + } \ + _count += _bkt_count; \ + if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \ + HASH_OOPS("%s: invalid bucket count %u, actual %u\n", \ + (where), (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \ + } \ + } \ + if (_count != (head)->hh.tbl->num_items) { \ + HASH_OOPS("%s: invalid hh item count %u, actual %u\n", \ + (where), (head)->hh.tbl->num_items, _count); \ + } \ + _count = 0; \ + _prev = NULL; \ + _thh = &(head)->hh; \ + while (_thh) { \ + _count++; \ + if (_prev != (char*)_thh->prev) { \ + HASH_OOPS("%s: invalid prev %p, actual %p\n", \ + (where), (void*)_thh->prev, (void*)_prev); \ + } \ + _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \ + _thh = (_thh->next ? HH_FROM_ELMT((head)->hh.tbl, _thh->next) : NULL); \ + } \ + if (_count != (head)->hh.tbl->num_items) { \ + HASH_OOPS("%s: invalid app item count %u, actual %u\n", \ + (where), (head)->hh.tbl->num_items, _count); \ + } \ + } \ +} while (0) +#else +#define HASH_FSCK(hh,head,where) +#endif + +/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to + * the descriptor to which this macro is defined for tuning the hash function. + * The app can #include to get the prototype for write(2). */ +#ifdef HASH_EMIT_KEYS +#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \ +do { \ + unsigned _klen = fieldlen; \ + write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \ + write(HASH_EMIT_KEYS, keyptr, (unsigned long)fieldlen); \ +} while (0) +#else +#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) +#endif + +/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */ +#ifdef HASH_FUNCTION +#define HASH_FCN HASH_FUNCTION +#else +#define HASH_FCN HASH_JEN +#endif + +/* The Bernstein hash function, used in Perl prior to v5.6. Note (x<<5+x)=x*33. */ +#define HASH_BER(key,keylen,hashv) \ +do { \ + unsigned _hb_keylen = (unsigned)keylen; \ + const unsigned char *_hb_key = (const unsigned char*)(key); \ + (hashv) = 0; \ + while (_hb_keylen-- != 0U) { \ + (hashv) = (((hashv) << 5) + (hashv)) + *_hb_key++; \ + } \ +} while (0) + + +/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at + * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */ +#define HASH_SAX(key,keylen,hashv) \ +do { \ + unsigned _sx_i; \ + const unsigned char *_hs_key = (const unsigned char*)(key); \ + hashv = 0; \ + for (_sx_i=0; _sx_i < keylen; _sx_i++) { \ + hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \ + } \ +} while (0) +/* FNV-1a variation */ +#define HASH_FNV(key,keylen,hashv) \ +do { \ + unsigned _fn_i; \ + const unsigned char *_hf_key = (const unsigned char*)(key); \ + (hashv) = 2166136261U; \ + for (_fn_i=0; _fn_i < keylen; _fn_i++) { \ + hashv = hashv ^ _hf_key[_fn_i]; \ + hashv = hashv * 16777619U; \ + } \ +} while (0) + +#define HASH_OAT(key,keylen,hashv) \ +do { \ + unsigned _ho_i; \ + const unsigned char *_ho_key=(const unsigned char*)(key); \ + hashv = 0; \ + for(_ho_i=0; _ho_i < keylen; _ho_i++) { \ + hashv += _ho_key[_ho_i]; \ + hashv += (hashv << 10); \ + hashv ^= (hashv >> 6); \ + } \ + hashv += (hashv << 3); \ + hashv ^= (hashv >> 11); \ + hashv += (hashv << 15); \ +} while (0) + +#define HASH_JEN_MIX(a,b,c) \ +do { \ + a -= b; a -= c; a ^= ( c >> 13 ); \ + b -= c; b -= a; b ^= ( a << 8 ); \ + c -= a; c -= b; c ^= ( b >> 13 ); \ + a -= b; a -= c; a ^= ( c >> 12 ); \ + b -= c; b -= a; b ^= ( a << 16 ); \ + c -= a; c -= b; c ^= ( b >> 5 ); \ + a -= b; a -= c; a ^= ( c >> 3 ); \ + b -= c; b -= a; b ^= ( a << 10 ); \ + c -= a; c -= b; c ^= ( b >> 15 ); \ +} while (0) + +#define HASH_JEN(key,keylen,hashv) \ +do { \ + unsigned _hj_i,_hj_j,_hj_k; \ + unsigned const char *_hj_key=(unsigned const char*)(key); \ + hashv = 0xfeedbeefu; \ + _hj_i = _hj_j = 0x9e3779b9u; \ + _hj_k = (unsigned)(keylen); \ + while (_hj_k >= 12U) { \ + _hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \ + + ( (unsigned)_hj_key[2] << 16 ) \ + + ( (unsigned)_hj_key[3] << 24 ) ); \ + _hj_j += (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 ) \ + + ( (unsigned)_hj_key[6] << 16 ) \ + + ( (unsigned)_hj_key[7] << 24 ) ); \ + hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 ) \ + + ( (unsigned)_hj_key[10] << 16 ) \ + + ( (unsigned)_hj_key[11] << 24 ) ); \ + \ + HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ + \ + _hj_key += 12; \ + _hj_k -= 12U; \ + } \ + hashv += (unsigned)(keylen); \ + switch ( _hj_k ) { \ + case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); /* FALLTHROUGH */ \ + case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); /* FALLTHROUGH */ \ + case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); /* FALLTHROUGH */ \ + case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); /* FALLTHROUGH */ \ + case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); /* FALLTHROUGH */ \ + case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); /* FALLTHROUGH */ \ + case 5: _hj_j += _hj_key[4]; /* FALLTHROUGH */ \ + case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); /* FALLTHROUGH */ \ + case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); /* FALLTHROUGH */ \ + case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); /* FALLTHROUGH */ \ + case 1: _hj_i += _hj_key[0]; \ + } \ + HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ +} while (0) + +/* The Paul Hsieh hash function */ +#undef get16bits +#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ + || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) +#define get16bits(d) (*((const uint16_t *) (d))) +#endif + +#if !defined (get16bits) +#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \ + +(uint32_t)(((const uint8_t *)(d))[0]) ) +#endif +#define HASH_SFH(key,keylen,hashv) \ +do { \ + unsigned const char *_sfh_key=(unsigned const char*)(key); \ + uint32_t _sfh_tmp, _sfh_len = (uint32_t)keylen; \ + \ + unsigned _sfh_rem = _sfh_len & 3U; \ + _sfh_len >>= 2; \ + hashv = 0xcafebabeu; \ + \ + /* Main loop */ \ + for (;_sfh_len > 0U; _sfh_len--) { \ + hashv += get16bits (_sfh_key); \ + _sfh_tmp = ((uint32_t)(get16bits (_sfh_key+2)) << 11) ^ hashv; \ + hashv = (hashv << 16) ^ _sfh_tmp; \ + _sfh_key += 2U*sizeof (uint16_t); \ + hashv += hashv >> 11; \ + } \ + \ + /* Handle end cases */ \ + switch (_sfh_rem) { \ + case 3: hashv += get16bits (_sfh_key); \ + hashv ^= hashv << 16; \ + hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)]) << 18; \ + hashv += hashv >> 11; \ + break; \ + case 2: hashv += get16bits (_sfh_key); \ + hashv ^= hashv << 11; \ + hashv += hashv >> 17; \ + break; \ + case 1: hashv += *_sfh_key; \ + hashv ^= hashv << 10; \ + hashv += hashv >> 1; \ + } \ + \ + /* Force "avalanching" of final 127 bits */ \ + hashv ^= hashv << 3; \ + hashv += hashv >> 5; \ + hashv ^= hashv << 4; \ + hashv += hashv >> 17; \ + hashv ^= hashv << 25; \ + hashv += hashv >> 6; \ +} while (0) + +#ifdef HASH_USING_NO_STRICT_ALIASING +/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads. + * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error. + * MurmurHash uses the faster approach only on CPU's where we know it's safe. + * + * Note the preprocessor built-in defines can be emitted using: + * + * gcc -m64 -dM -E - < /dev/null (on gcc) + * cc -## a.c (where a.c is a simple test file) (Sun Studio) + */ +#if (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86)) +#define MUR_GETBLOCK(p,i) p[i] +#else /* non intel */ +#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 3UL) == 0UL) +#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 3UL) == 1UL) +#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 3UL) == 2UL) +#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 3UL) == 3UL) +#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL)) +#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__)) +#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24)) +#define MUR_TWO_TWO(p) ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16)) +#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >> 8)) +#else /* assume little endian non-intel */ +#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24)) +#define MUR_TWO_TWO(p) ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16)) +#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) << 8)) +#endif +#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) : \ + (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \ + (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) : \ + MUR_ONE_THREE(p)))) +#endif +#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) +#define MUR_FMIX(_h) \ +do { \ + _h ^= _h >> 16; \ + _h *= 0x85ebca6bu; \ + _h ^= _h >> 13; \ + _h *= 0xc2b2ae35u; \ + _h ^= _h >> 16; \ +} while (0) + +#define HASH_MUR(key,keylen,hashv) \ +do { \ + const uint8_t *_mur_data = (const uint8_t*)(key); \ + const int _mur_nblocks = (int)(keylen) / 4; \ + uint32_t _mur_h1 = 0xf88D5353u; \ + uint32_t _mur_c1 = 0xcc9e2d51u; \ + uint32_t _mur_c2 = 0x1b873593u; \ + uint32_t _mur_k1 = 0; \ + const uint8_t *_mur_tail; \ + const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+(_mur_nblocks*4)); \ + int _mur_i; \ + for (_mur_i = -_mur_nblocks; _mur_i != 0; _mur_i++) { \ + _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i); \ + _mur_k1 *= _mur_c1; \ + _mur_k1 = MUR_ROTL32(_mur_k1,15); \ + _mur_k1 *= _mur_c2; \ + \ + _mur_h1 ^= _mur_k1; \ + _mur_h1 = MUR_ROTL32(_mur_h1,13); \ + _mur_h1 = (_mur_h1*5U) + 0xe6546b64u; \ + } \ + _mur_tail = (const uint8_t*)(_mur_data + (_mur_nblocks*4)); \ + _mur_k1=0; \ + switch ((keylen) & 3U) { \ + case 0: break; \ + case 3: _mur_k1 ^= (uint32_t)_mur_tail[2] << 16; /* FALLTHROUGH */ \ + case 2: _mur_k1 ^= (uint32_t)_mur_tail[1] << 8; /* FALLTHROUGH */ \ + case 1: _mur_k1 ^= (uint32_t)_mur_tail[0]; \ + _mur_k1 *= _mur_c1; \ + _mur_k1 = MUR_ROTL32(_mur_k1,15); \ + _mur_k1 *= _mur_c2; \ + _mur_h1 ^= _mur_k1; \ + } \ + _mur_h1 ^= (uint32_t)(keylen); \ + MUR_FMIX(_mur_h1); \ + hashv = _mur_h1; \ +} while (0) +#endif /* HASH_USING_NO_STRICT_ALIASING */ + +/* iterate over items in a known bucket to find desired item */ +#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,hashval,out) \ +do { \ + if ((head).hh_head != NULL) { \ + DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (head).hh_head)); \ + } else { \ + (out) = NULL; \ + } \ + while ((out) != NULL) { \ + if ((out)->hh.hashv == (hashval) && (out)->hh.keylen == (keylen_in)) { \ + if (uthash_memcmp((out)->hh.key, keyptr, keylen_in) == 0) { \ + break; \ + } \ + } \ + if ((out)->hh.hh_next != NULL) { \ + DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (out)->hh.hh_next)); \ + } else { \ + (out) = NULL; \ + } \ + } \ +} while (0) + +/* add an item to a bucket */ +#define HASH_ADD_TO_BKT(head,hh,addhh,oomed) \ +do { \ + UT_hash_bucket *_ha_head = &(head); \ + _ha_head->count++; \ + (addhh)->hh_next = _ha_head->hh_head; \ + (addhh)->hh_prev = NULL; \ + if (_ha_head->hh_head != NULL) { \ + _ha_head->hh_head->hh_prev = (addhh); \ + } \ + _ha_head->hh_head = (addhh); \ + if ((_ha_head->count >= ((_ha_head->expand_mult + 1U) * HASH_BKT_CAPACITY_THRESH)) \ + && !(addhh)->tbl->noexpand) { \ + HASH_EXPAND_BUCKETS(addhh,(addhh)->tbl, oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (oomed) { \ + HASH_DEL_IN_BKT(head,addhh); \ + } \ + ) \ + } \ +} while (0) + +/* remove an item from a given bucket */ +#define HASH_DEL_IN_BKT(head,delhh) \ +do { \ + UT_hash_bucket *_hd_head = &(head); \ + _hd_head->count--; \ + if (_hd_head->hh_head == (delhh)) { \ + _hd_head->hh_head = (delhh)->hh_next; \ + } \ + if ((delhh)->hh_prev) { \ + (delhh)->hh_prev->hh_next = (delhh)->hh_next; \ + } \ + if ((delhh)->hh_next) { \ + (delhh)->hh_next->hh_prev = (delhh)->hh_prev; \ + } \ +} while (0) + +/* Bucket expansion has the effect of doubling the number of buckets + * and redistributing the items into the new buckets. Ideally the + * items will distribute more or less evenly into the new buckets + * (the extent to which this is true is a measure of the quality of + * the hash function as it applies to the key domain). + * + * With the items distributed into more buckets, the chain length + * (item count) in each bucket is reduced. Thus by expanding buckets + * the hash keeps a bound on the chain length. This bounded chain + * length is the essence of how a hash provides constant time lookup. + * + * The calculation of tbl->ideal_chain_maxlen below deserves some + * explanation. First, keep in mind that we're calculating the ideal + * maximum chain length based on the *new* (doubled) bucket count. + * In fractions this is just n/b (n=number of items,b=new num buckets). + * Since the ideal chain length is an integer, we want to calculate + * ceil(n/b). We don't depend on floating point arithmetic in this + * hash, so to calculate ceil(n/b) with integers we could write + * + * ceil(n/b) = (n/b) + ((n%b)?1:0) + * + * and in fact a previous version of this hash did just that. + * But now we have improved things a bit by recognizing that b is + * always a power of two. We keep its base 2 log handy (call it lb), + * so now we can write this with a bit shift and logical AND: + * + * ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0) + * + */ +#define HASH_EXPAND_BUCKETS(hh,tbl,oomed) \ +do { \ + unsigned _he_bkt; \ + unsigned _he_bkt_i; \ + struct UT_hash_handle *_he_thh, *_he_hh_nxt; \ + UT_hash_bucket *_he_new_buckets, *_he_newbkt; \ + _he_new_buckets = (UT_hash_bucket*)uthash_malloc( \ + 2UL * (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + if (!_he_new_buckets) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero(_he_new_buckets, \ + 2UL * (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + (tbl)->ideal_chain_maxlen = \ + ((tbl)->num_items >> ((tbl)->log2_num_buckets+1U)) + \ + ((((tbl)->num_items & (((tbl)->num_buckets*2U)-1U)) != 0U) ? 1U : 0U); \ + (tbl)->nonideal_items = 0; \ + for (_he_bkt_i = 0; _he_bkt_i < (tbl)->num_buckets; _he_bkt_i++) { \ + _he_thh = (tbl)->buckets[ _he_bkt_i ].hh_head; \ + while (_he_thh != NULL) { \ + _he_hh_nxt = _he_thh->hh_next; \ + HASH_TO_BKT(_he_thh->hashv, (tbl)->num_buckets * 2U, _he_bkt); \ + _he_newbkt = &(_he_new_buckets[_he_bkt]); \ + if (++(_he_newbkt->count) > (tbl)->ideal_chain_maxlen) { \ + (tbl)->nonideal_items++; \ + _he_newbkt->expand_mult = _he_newbkt->count / (tbl)->ideal_chain_maxlen; \ + } \ + _he_thh->hh_prev = NULL; \ + _he_thh->hh_next = _he_newbkt->hh_head; \ + if (_he_newbkt->hh_head != NULL) { \ + _he_newbkt->hh_head->hh_prev = _he_thh; \ + } \ + _he_newbkt->hh_head = _he_thh; \ + _he_thh = _he_hh_nxt; \ + } \ + } \ + uthash_free((tbl)->buckets, (tbl)->num_buckets * sizeof(struct UT_hash_bucket)); \ + (tbl)->num_buckets *= 2U; \ + (tbl)->log2_num_buckets++; \ + (tbl)->buckets = _he_new_buckets; \ + (tbl)->ineff_expands = ((tbl)->nonideal_items > ((tbl)->num_items >> 1)) ? \ + ((tbl)->ineff_expands+1U) : 0U; \ + if ((tbl)->ineff_expands > 1U) { \ + (tbl)->noexpand = 1; \ + uthash_noexpand_fyi(tbl); \ + } \ + uthash_expand_fyi(tbl); \ + } \ +} while (0) + + +/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */ +/* Note that HASH_SORT assumes the hash handle name to be hh. + * HASH_SRT was added to allow the hash handle name to be passed in. */ +#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn) +#define HASH_SRT(hh,head,cmpfcn) \ +do { \ + unsigned _hs_i; \ + unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \ + struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \ + if (head != NULL) { \ + _hs_insize = 1; \ + _hs_looping = 1; \ + _hs_list = &((head)->hh); \ + while (_hs_looping != 0U) { \ + _hs_p = _hs_list; \ + _hs_list = NULL; \ + _hs_tail = NULL; \ + _hs_nmerges = 0; \ + while (_hs_p != NULL) { \ + _hs_nmerges++; \ + _hs_q = _hs_p; \ + _hs_psize = 0; \ + for (_hs_i = 0; _hs_i < _hs_insize; ++_hs_i) { \ + _hs_psize++; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + if (_hs_q == NULL) { \ + break; \ + } \ + } \ + _hs_qsize = _hs_insize; \ + while ((_hs_psize != 0U) || ((_hs_qsize != 0U) && (_hs_q != NULL))) { \ + if (_hs_psize == 0U) { \ + _hs_e = _hs_q; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + _hs_qsize--; \ + } else if ((_hs_qsize == 0U) || (_hs_q == NULL)) { \ + _hs_e = _hs_p; \ + if (_hs_p != NULL) { \ + _hs_p = ((_hs_p->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ + } \ + _hs_psize--; \ + } else if ((cmpfcn( \ + DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_p)), \ + DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl, _hs_q)) \ + )) <= 0) { \ + _hs_e = _hs_p; \ + if (_hs_p != NULL) { \ + _hs_p = ((_hs_p->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_p->next) : NULL); \ + } \ + _hs_psize--; \ + } else { \ + _hs_e = _hs_q; \ + _hs_q = ((_hs_q->next != NULL) ? \ + HH_FROM_ELMT((head)->hh.tbl, _hs_q->next) : NULL); \ + _hs_qsize--; \ + } \ + if ( _hs_tail != NULL ) { \ + _hs_tail->next = ((_hs_e != NULL) ? \ + ELMT_FROM_HH((head)->hh.tbl, _hs_e) : NULL); \ + } else { \ + _hs_list = _hs_e; \ + } \ + if (_hs_e != NULL) { \ + _hs_e->prev = ((_hs_tail != NULL) ? \ + ELMT_FROM_HH((head)->hh.tbl, _hs_tail) : NULL); \ + } \ + _hs_tail = _hs_e; \ + } \ + _hs_p = _hs_q; \ + } \ + if (_hs_tail != NULL) { \ + _hs_tail->next = NULL; \ + } \ + if (_hs_nmerges <= 1U) { \ + _hs_looping = 0; \ + (head)->hh.tbl->tail = _hs_tail; \ + DECLTYPE_ASSIGN(head, ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \ + } \ + _hs_insize *= 2U; \ + } \ + HASH_FSCK(hh, head, "HASH_SRT"); \ + } \ +} while (0) + +/* This function selects items from one hash into another hash. + * The end result is that the selected items have dual presence + * in both hashes. There is no copy of the items made; rather + * they are added into the new hash through a secondary hash + * hash handle that must be present in the structure. */ +#define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \ +do { \ + unsigned _src_bkt, _dst_bkt; \ + void *_last_elt = NULL, *_elt; \ + UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \ + ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \ + if ((src) != NULL) { \ + for (_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \ + for (_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \ + _src_hh != NULL; \ + _src_hh = _src_hh->hh_next) { \ + _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \ + if (cond(_elt)) { \ + IF_HASH_NONFATAL_OOM( int _hs_oomed = 0; ) \ + _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho); \ + _dst_hh->key = _src_hh->key; \ + _dst_hh->keylen = _src_hh->keylen; \ + _dst_hh->hashv = _src_hh->hashv; \ + _dst_hh->prev = _last_elt; \ + _dst_hh->next = NULL; \ + if (_last_elt_hh != NULL) { \ + _last_elt_hh->next = _elt; \ + } \ + if ((dst) == NULL) { \ + DECLTYPE_ASSIGN(dst, _elt); \ + HASH_MAKE_TABLE(hh_dst, dst, _hs_oomed); \ + IF_HASH_NONFATAL_OOM( \ + if (_hs_oomed) { \ + uthash_nonfatal_oom(_elt); \ + (dst) = NULL; \ + continue; \ + } \ + ) \ + } else { \ + _dst_hh->tbl = (dst)->hh_dst.tbl; \ + } \ + HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \ + HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt], hh_dst, _dst_hh, _hs_oomed); \ + (dst)->hh_dst.tbl->num_items++; \ + IF_HASH_NONFATAL_OOM( \ + if (_hs_oomed) { \ + HASH_ROLLBACK_BKT(hh_dst, dst, _dst_hh); \ + HASH_DELETE_HH(hh_dst, dst, _dst_hh); \ + _dst_hh->tbl = NULL; \ + uthash_nonfatal_oom(_elt); \ + continue; \ + } \ + ) \ + HASH_BLOOM_ADD(_dst_hh->tbl, _dst_hh->hashv); \ + _last_elt = _elt; \ + _last_elt_hh = _dst_hh; \ + } \ + } \ + } \ + } \ + HASH_FSCK(hh_dst, dst, "HASH_SELECT"); \ +} while (0) + +#define HASH_CLEAR(hh,head) \ +do { \ + if ((head) != NULL) { \ + HASH_BLOOM_FREE((head)->hh.tbl); \ + uthash_free((head)->hh.tbl->buckets, \ + (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \ + uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \ + (head) = NULL; \ + } \ +} while (0) + +#define HASH_OVERHEAD(hh,head) \ + (((head) != NULL) ? ( \ + (size_t)(((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \ + ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \ + sizeof(UT_hash_table) + \ + (HASH_BLOOM_BYTELEN))) : 0U) + +#ifdef NO_DECLTYPE +#define HASH_ITER(hh,head,el,tmp) \ +for(((el)=(head)), ((*(char**)(&(tmp)))=(char*)((head!=NULL)?(head)->hh.next:NULL)); \ + (el) != NULL; ((el)=(tmp)), ((*(char**)(&(tmp)))=(char*)((tmp!=NULL)?(tmp)->hh.next:NULL))) +#else +#define HASH_ITER(hh,head,el,tmp) \ +for(((el)=(head)), ((tmp)=DECLTYPE(el)((head!=NULL)?(head)->hh.next:NULL)); \ + (el) != NULL; ((el)=(tmp)), ((tmp)=DECLTYPE(el)((tmp!=NULL)?(tmp)->hh.next:NULL))) +#endif + +/* obtain a count of items in the hash */ +#define HASH_COUNT(head) HASH_CNT(hh,head) +#define HASH_CNT(hh,head) ((head != NULL)?((head)->hh.tbl->num_items):0U) + +typedef struct UT_hash_bucket { + struct UT_hash_handle *hh_head; + unsigned count; + + /* expand_mult is normally set to 0. In this situation, the max chain length + * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If + * the bucket's chain exceeds this length, bucket expansion is triggered). + * However, setting expand_mult to a non-zero value delays bucket expansion + * (that would be triggered by additions to this particular bucket) + * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH. + * (The multiplier is simply expand_mult+1). The whole idea of this + * multiplier is to reduce bucket expansions, since they are expensive, in + * situations where we know that a particular bucket tends to be overused. + * It is better to let its chain length grow to a longer yet-still-bounded + * value, than to do an O(n) bucket expansion too often. + */ + unsigned expand_mult; + +} UT_hash_bucket; + +/* random signature used only to find hash tables in external analysis */ +#define HASH_SIGNATURE 0xa0111fe1u +#define HASH_BLOOM_SIGNATURE 0xb12220f2u + +typedef struct UT_hash_table { + UT_hash_bucket *buckets; + unsigned num_buckets, log2_num_buckets; + unsigned num_items; + struct UT_hash_handle *tail; /* tail hh in app order, for fast append */ + ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */ + + /* in an ideal situation (all buckets used equally), no bucket would have + * more than ceil(#items/#buckets) items. that's the ideal chain length. */ + unsigned ideal_chain_maxlen; + + /* nonideal_items is the number of items in the hash whose chain position + * exceeds the ideal chain maxlen. these items pay the penalty for an uneven + * hash distribution; reaching them in a chain traversal takes >ideal steps */ + unsigned nonideal_items; + + /* ineffective expands occur when a bucket doubling was performed, but + * afterward, more than half the items in the hash had nonideal chain + * positions. If this happens on two consecutive expansions we inhibit any + * further expansion, as it's not helping; this happens when the hash + * function isn't a good fit for the key domain. When expansion is inhibited + * the hash will still work, albeit no longer in constant time. */ + unsigned ineff_expands, noexpand; + + uint32_t signature; /* used only to find hash tables in external analysis */ +#ifdef HASH_BLOOM + uint32_t bloom_sig; /* used only to test bloom exists in external analysis */ + uint8_t *bloom_bv; + uint8_t bloom_nbits; +#endif + +} UT_hash_table; + +typedef struct UT_hash_handle { + struct UT_hash_table *tbl; + void *prev; /* prev element in app order */ + void *next; /* next element in app order */ + struct UT_hash_handle *hh_prev; /* previous hh in bucket order */ + struct UT_hash_handle *hh_next; /* next hh in bucket order */ + void *key; /* ptr to enclosing struct's key */ + unsigned keylen; /* enclosing struct's key len */ + unsigned hashv; /* result of hash-fcn(key) */ +} UT_hash_handle; + +#endif /* UTHASH_H */ diff --git a/uninstall_easy.sh b/uninstall_easy.sh new file mode 100755 index 0000000..c06f84f --- /dev/null +++ b/uninstall_easy.sh @@ -0,0 +1,259 @@ +#!/bin/sh + +# automated script for easy uninstalling zapret + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +IPSET_DIR="$EXEDIR/ipset" + +GET_LIST_PREFIX=/ipset/get_ +SYSTEMD_SYSTEM_DIR=/lib/systemd/system +[ -d "$SYSTEMD_SYSTEM_DIR" ] || SYSTEMD_SYSTEM_DIR=/usr/lib/systemd/system + +exists() +{ + which $1 >/dev/null 2>/dev/null +} +whichq() +{ + which $1 2>/dev/null +} + +exitp() +{ + echo + echo press enter to continue + read A + exit $1 +} + +require_root() +{ + [ $(id -u) -ne "0" ] && { + echo root is required + exists sudo && exec sudo "$0" + exists su && exec su -c "$0" + echo su or sudo not found + exitp 2 + } +} + + +check_system() +{ + echo \* checking system + + SYSTEM="" + SYSTEMCTL=$(whichq systemctl) + + local UNAME=$(uname) + if [ "$UNAME" = "Linux" ]; then + if [ -x "$SYSTEMCTL" ] ; then + SYSTEM=systemd + elif [ -f "/etc/openwrt_release" ] && exists opkg && exists uci ; then + SYSTEM=openwrt + else + echo system is not either systemd based or openwrt. check readme.txt for manual setup info. + exitp 5 + fi + elif [ "$UNAME" = "Darwin" ]; then + SYSTEM=macos + else + echo easy installer only supports Linux and MacOS. check readme.txt for supported systems and manual setup info. + exitp 5 + fi + echo system is based on $SYSTEM +} + + +crontab_del() +{ + exists crontab || return + + echo \* removing crontab entry + + CRONTMP=/tmp/cron.tmp + crontab -l >$CRONTMP 2>/dev/null + if grep -q "$GET_LIST_PREFIX" $CRONTMP; then + echo removing following entries from crontab : + grep "$GET_LIST_PREFIX" $CRONTMP + grep -v "$GET_LIST_PREFIX" $CRONTMP >$CRONTMP.2 + crontab $CRONTMP.2 + rm -f $CRONTMP.2 + fi + rm -f $CRONTMP +} + + +service_stop_systemd() +{ + echo \* stopping zapret service + + "$SYSTEMCTL" daemon-reload + "$SYSTEMCTL" disable zapret + "$SYSTEMCTL" stop zapret +} + +service_remove_systemd() +{ + echo \* removing zapret service + + rm -f "$SYSTEMD_SYSTEM_DIR/zapret.service" + "$SYSTEMCTL" daemon-reload +} + +timer_remove_systemd() +{ + echo \* removing zapret-list-update timer + + "$SYSTEMCTL" daemon-reload + "$SYSTEMCTL" disable zapret-list-update.timer + "$SYSTEMCTL" stop zapret-list-update.timer + rm -f "$SYSTEMD_SYSTEM_DIR/zapret-list-update.service" "$SYSTEMD_SYSTEM_DIR/zapret-list-update.timer" + "$SYSTEMCTL" daemon-reload +} + + + +remove_systemd() +{ + INIT_SCRIPT=/etc/init.d/zapret + + service_stop_systemd + service_remove_systemd + timer_remove_systemd + crontab_del +} + + + + + +openwrt_fw_section_find() +{ + # $1 - fw include postfix + # echoes section number + + i=0 + while true + do + path=$(uci -q get firewall.@include[$i].path) + [ -n "$path" ] || break + [ "$path" = "$OPENWRT_FW_INCLUDE$1" ] && { + echo $i + return 0 + } + i=$(($i+1)) + done + return 1 +} +openwrt_fw_section_del() +{ + # $1 - fw include postfix + + local id=$(openwrt_fw_section_find $1) + [ -n "$id" ] && { + uci delete firewall.@include[$id] && uci commit firewall + rm -f "$OPENWRT_FW_INCLUDE$1" + } +} + +remove_openwrt_firewall() +{ + echo \* removing firewall script + + openwrt_fw_section_del + # from old zapret versions. now we use single include + openwrt_fw_section_del 6 + + # free some RAM + "$IPSET_DIR/create_ipset.sh" clear +} + +restart_openwrt_firewall() +{ + echo \* restarting firewall + + fw3 -q restart || { + echo could not restart firewall + exitp 30 + } +} + +remove_openwrt_iface_hook() +{ + echo \* removing ifup hook + + rm -f /etc/hotplug.d/iface/??-zapret +} + + +service_remove_sysv() +{ + echo \* removing zapret service + + [ -x "$INIT_SCRIPT" ] && { + "$INIT_SCRIPT" disable + "$INIT_SCRIPT" stop + } + rm -f "$INIT_SCRIPT" +} + +remove_openwrt() +{ + INIT_SCRIPT=/etc/init.d/zapret + OPENWRT_FW_INCLUDE=/etc/firewall.zapret + + remove_openwrt_firewall + restart_openwrt_firewall + service_remove_sysv + remove_openwrt_iface_hook + crontab_del +} + + +service_remove_macos() +{ + echo \* removing zapret service + + rm -f /Library/LaunchDaemons/zapret.plist + zapret_stop_daemons +} + +remove_macos_firewall() +{ + echo \* removing zapret PF hooks + + pf_anchors_clear + pf_anchors_del + pf_anchor_root_del + pf_anchor_root_reload +} + +remove_macos() +{ + remove_macos_firewall + service_remove_macos + crontab_del +} + + +check_system +require_root + +[ "$SYSTEM" = "macos" ] && . "$EXEDIR/init.d/macos/functions" + +case $SYSTEM in + systemd) + remove_systemd + ;; + openwrt) + remove_openwrt + ;; + macos) + remove_macos + ;; +esac + + +exitp 0