From 2aaa2f7cf3c33b282727784738059d73279bc60f Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 28 Oct 2024 09:32:24 +0300 Subject: [PATCH] Truncated history --- .gitattributes | 4 + .gitignore | 12 + Makefile | 48 + binaries/aarch64/ip2net | Bin 0 -> 38360 bytes binaries/aarch64/mdig | Bin 0 -> 48524 bytes binaries/aarch64/nfqws | Bin 0 -> 114980 bytes binaries/aarch64/tpws | Bin 0 -> 95908 bytes binaries/arm/ip2net | Bin 0 -> 33432 bytes binaries/arm/mdig | Bin 0 -> 45380 bytes binaries/arm/nfqws | Bin 0 -> 107680 bytes binaries/arm/tpws | Bin 0 -> 94004 bytes binaries/freebsd-x64/dvtws | Bin 0 -> 125968 bytes binaries/freebsd-x64/ip2net | Bin 0 -> 14728 bytes binaries/freebsd-x64/mdig | Bin 0 -> 12472 bytes binaries/freebsd-x64/tpws | Bin 0 -> 101952 bytes binaries/mac64/ip2net | Bin 0 -> 116520 bytes binaries/mac64/mdig | Bin 0 -> 117272 bytes binaries/mac64/tpws | Bin 0 -> 289560 bytes binaries/mips32r1-lsb/ip2net | Bin 0 -> 41088 bytes binaries/mips32r1-lsb/mdig | Bin 0 -> 55436 bytes binaries/mips32r1-lsb/nfqws | Bin 0 -> 127224 bytes binaries/mips32r1-lsb/tpws | Bin 0 -> 109544 bytes binaries/mips32r1-msb/ip2net | Bin 0 -> 40960 bytes binaries/mips32r1-msb/mdig | Bin 0 -> 55188 bytes binaries/mips32r1-msb/nfqws | Bin 0 -> 126692 bytes binaries/mips32r1-msb/tpws | Bin 0 -> 109652 bytes binaries/mips64r2-msb/ip2net | Bin 0 -> 93872 bytes binaries/mips64r2-msb/mdig | Bin 0 -> 136728 bytes binaries/mips64r2-msb/nfqws | Bin 0 -> 350912 bytes binaries/mips64r2-msb/tpws | Bin 0 -> 295208 bytes binaries/ppc/ip2net | Bin 0 -> 41252 bytes binaries/ppc/mdig | Bin 0 -> 52896 bytes binaries/ppc/nfqws | Bin 0 -> 135656 bytes binaries/ppc/tpws | Bin 0 -> 109416 bytes binaries/win64/WinDivert.dll | Bin 0 -> 47616 bytes binaries/win64/WinDivert64.sys | Bin 0 -> 94144 bytes binaries/win64/ip2net.exe | Bin 0 -> 88576 bytes binaries/win64/mdig.exe | Bin 0 -> 114688 bytes binaries/win64/readme.txt | 9 + binaries/win64/winws.exe | Bin 0 -> 239616 bytes binaries/win64/zapret-winws/WinDivert.dll | Bin 0 -> 47616 bytes binaries/win64/zapret-winws/WinDivert64.sys | Bin 0 -> 94144 bytes binaries/win64/zapret-winws/cygwin1.dll | Bin 0 -> 1022005 bytes binaries/win64/zapret-winws/list-youtube.txt | 3 + binaries/win64/zapret-winws/preset_russia.cmd | 7 + .../preset_russia_autohostlist.cmd | 7 + .../quic_initial_www_google_com.bin | Bin 0 -> 1200 bytes .../win64/zapret-winws/service_create.cmd | 12 + binaries/win64/zapret-winws/service_del.cmd | 7 + binaries/win64/zapret-winws/service_start.cmd | 2 + binaries/win64/zapret-winws/service_stop.cmd | 2 + binaries/win64/zapret-winws/task_create.cmd | 4 + binaries/win64/zapret-winws/task_remove.cmd | 4 + binaries/win64/zapret-winws/task_start.cmd | 2 + binaries/win64/zapret-winws/task_stop.cmd | 2 + .../tls_clienthello_www_google_com.bin | Bin 0 -> 652 bytes binaries/win64/zapret-winws/winws.exe | Bin 0 -> 239616 bytes binaries/x86/ip2net | Bin 0 -> 32452 bytes binaries/x86/mdig | Bin 0 -> 46092 bytes binaries/x86/nfqws | Bin 0 -> 123304 bytes binaries/x86/tpws | Bin 0 -> 103784 bytes binaries/x86_64/ip2net | Bin 0 -> 34244 bytes binaries/x86_64/mdig | Bin 0 -> 46844 bytes binaries/x86_64/nfqws | Bin 0 -> 124720 bytes binaries/x86_64/tpws | Bin 0 -> 106064 bytes binaries/x86_64/tpws_wsl.tgz | Bin 0 -> 112072 bytes blockcheck.sh | 1868 ++++++++++++++++ common/base.sh | 340 +++ common/custom.sh | 25 + common/dialog.sh | 58 + common/elevate.sh | 13 + common/fwtype.sh | 64 + common/installer.sh | 689 ++++++ common/ipt.sh | 472 ++++ common/linux_fw.sh | 53 + common/linux_iphelper.sh | 127 ++ common/list.sh | 55 + common/nft.sh | 750 +++++++ common/pf.sh | 285 +++ common/queue.sh | 85 + common/virt.sh | 39 + config.default | 126 ++ docs/LICENSE.txt | 21 + docs/bsd.eng.md | 611 +++++ docs/bsd.txt | 476 ++++ docs/bsdfw.txt | 97 + docs/changes.txt | 325 +++ 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/iptables.txt | 63 + docs/manual_setup.txt | 282 +++ docs/nftables.txt | 32 + docs/nftables_notes.txt | 120 + docs/quick_start.txt | 141 ++ docs/quick_start_windows.txt | 122 + docs/readme.eng.md | 1272 +++++++++++ docs/readme.txt | 1937 ++++++++++++++++ docs/redsocks.txt | 196 ++ docs/windows.eng.md | 161 ++ docs/windows.txt | 222 ++ docs/wireguard/010-wg-mod.patch | 133 ++ docs/wireguard/wireguard-mod.txt | 250 +++ docs/wireguard/wireguard_iproute_openwrt.txt | 645 ++++++ files/fake/dht_find_node.bin | Bin 0 -> 98 bytes files/fake/dht_get_peers.bin | 2 + files/fake/dtls_clienthello_w3_org.bin | Bin 0 -> 226 bytes files/fake/http_iana_org.bin | 9 + files/fake/quic_initial_facebook_com.bin | Bin 0 -> 1200 bytes .../fake/quic_initial_facebook_com_quiche.bin | Bin 0 -> 1200 bytes ...2---sn-gvnuxaxjvh-o8ge_googlevideo_com.bin | Bin 0 -> 1200 bytes files/fake/quic_initial_rutracker_org.bin | Bin 0 -> 1200 bytes .../quic_initial_rutracker_org_kyber_1.bin | Bin 0 -> 1230 bytes .../quic_initial_rutracker_org_kyber_2.bin | Bin 0 -> 1230 bytes files/fake/quic_initial_vk_com.bin | Bin 0 -> 1357 bytes files/fake/quic_initial_www_google_com.bin | Bin 0 -> 1200 bytes files/fake/quic_short_header.bin | Bin 0 -> 620 bytes files/fake/tls_clienthello_gosuslugi_ru.bin | Bin 0 -> 517 bytes files/fake/tls_clienthello_iana_org.bin | Bin 0 -> 517 bytes .../tls_clienthello_rutracker_org_kyber.bin | Bin 0 -> 1787 bytes files/fake/tls_clienthello_sberbank_ru.bin | Bin 0 -> 517 bytes files/fake/tls_clienthello_vk_com.bin | Bin 0 -> 517 bytes files/fake/tls_clienthello_vk_com_kyber.bin | Bin 0 -> 1812 bytes files/fake/tls_clienthello_www_google_com.bin | Bin 0 -> 652 bytes files/fake/wireguard_initiation.bin | Bin 0 -> 148 bytes files/fake/wireguard_response.bin | Bin 0 -> 92 bytes files/fake/zero_1024.bin | Bin 0 -> 1024 bytes files/fake/zero_256.bin | Bin 0 -> 256 bytes files/fake/zero_512.bin | Bin 0 -> 512 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 + .../macos/custom.d.examples/10-inherit-tpws | 18 + .../custom.d.examples/10-inherit-tpws-socks | 18 + init.d/macos/custom.d.examples/50-extra-tpws | 30 + init.d/macos/custom.d/.keep | 0 init.d/macos/functions | 211 ++ init.d/macos/zapret | 51 + init.d/macos/zapret.plist | 17 + init.d/openrc/zapret | 69 + init.d/openwrt/90-zapret | 63 + .../custom.d.examples/10-inherit-nfqws | 22 + .../openwrt/custom.d.examples/10-inherit-tpws | 22 + .../custom.d.examples/10-inherit-tpws-socks | 22 + init.d/openwrt/custom.d.examples/50-dht4all | 39 + init.d/openwrt/custom.d.examples/50-discord | 69 + init.d/openwrt/custom.d.examples/50-quic4all | 37 + .../50-tpws4http-nfqws4https | 71 + init.d/openwrt/custom.d/.keep | 0 init.d/openwrt/firewall.zapret | 11 + init.d/openwrt/functions | 282 +++ init.d/openwrt/zapret | 240 ++ init.d/pfsense/zapret.sh | 24 + init.d/runit/zapret/finish | 2 + init.d/runit/zapret/run | 3 + init.d/s6/zapret/down | 2 + init.d/s6/zapret/type | 1 + init.d/s6/zapret/up | 2 + init.d/systemd/zapret-list-update.service | 13 + init.d/systemd/zapret-list-update.timer | 11 + init.d/systemd/zapret.service | 17 + .../sysv/custom.d.examples/10-inherit-nfqws | 22 + init.d/sysv/custom.d.examples/10-inherit-tpws | 22 + .../custom.d.examples/10-inherit-tpws-socks | 22 + init.d/sysv/custom.d.examples/50-dht4all | 39 + init.d/sysv/custom.d.examples/50-discord | 69 + init.d/sysv/custom.d.examples/50-quic4all | 37 + .../50-tpws4http-nfqws4https | 71 + init.d/sysv/custom.d/.keep | 0 init.d/sysv/functions | 357 +++ init.d/sysv/zapret | 83 + install_bin.sh | 102 + install_easy.sh | 911 ++++++++ install_prereq.sh | 51 + ip2net/Makefile | 28 + ip2net/ip2net.c | 495 +++++ ip2net/qsort.c | 250 +++ ip2net/qsort.h | 6 + ipset/antifilter.helper | 19 + ipset/clear_lists.sh | 8 + ipset/create_ipset.sh | 308 +++ ipset/def.sh | 270 +++ ipset/get_antifilter_allyouneed.sh | 13 + ipset/get_antifilter_ip.sh | 13 + ipset/get_antifilter_ipresolve.sh | 13 + ipset/get_antifilter_ipsmart.sh | 13 + ipset/get_antifilter_ipsum.sh | 13 + ipset/get_antizapret_domains.sh | 36 + ipset/get_config.sh | 10 + ipset/get_exclude.sh | 13 + ipset/get_ipban.sh | 13 + ipset/get_reestr_hostlist.sh | 65 + ipset/get_reestr_preresolved.sh | 47 + ipset/get_reestr_preresolved_smart.sh | 47 + ipset/get_reestr_resolvable_domains.sh | 45 + ipset/get_reestr_resolve.sh | 83 + ipset/get_user.sh | 11 + ipset/zapret-hosts-user-exclude.txt.default | 6 + mdig/Makefile | 28 + mdig/mdig.c | 435 ++++ nfq/BSDmakefile | 12 + nfq/Makefile | 30 + nfq/checksum.c | 159 ++ nfq/checksum.h | 27 + nfq/conntrack.c | 405 ++++ nfq/conntrack.h | 125 ++ nfq/crypto/aes-gcm.c | 13 + nfq/crypto/aes-gcm.h | 6 + nfq/crypto/aes.c | 483 ++++ nfq/crypto/aes.h | 78 + nfq/crypto/gcm.c | 511 +++++ nfq/crypto/gcm.h | 183 ++ nfq/crypto/hkdf.c | 337 +++ nfq/crypto/hmac.c | 250 +++ nfq/crypto/sha-private.h | 25 + nfq/crypto/sha.h | 278 +++ nfq/crypto/sha224-256.c | 581 +++++ nfq/crypto/usha.c | 191 ++ nfq/darkmagic.c | 1879 ++++++++++++++++ nfq/darkmagic.h | 243 ++ nfq/desync.c | 1964 +++++++++++++++++ nfq/desync.h | 56 + nfq/gzip.c | 82 + nfq/gzip.h | 8 + nfq/helpers.c | 387 ++++ nfq/helpers.h | 66 + nfq/hostlist.c | 205 ++ nfq/hostlist.h | 14 + nfq/nfqws.c | 1831 +++++++++++++++ nfq/nfqws.h | 8 + nfq/packet_queue.c | 68 + nfq/packet_queue.h | 26 + nfq/params.c | 232 ++ nfq/params.h | 123 ++ nfq/pools.c | 153 ++ nfq/pools.h | 45 + nfq/protocol.c | 771 +++++++ nfq/protocol.h | 59 + nfq/sec.c | 391 ++++ nfq/sec.h | 92 + nfq/uthash.h | 1136 ++++++++++ nfq/win.c | 80 + nfq/win.h | 10 + nfq/windivert/libwindivert.a | Bin 0 -> 25372 bytes nfq/windivert/windivert.h | 630 ++++++ nfq/winicon.o | Bin 0 -> 4566 bytes nfq/winmanifest.o | Bin 0 -> 1364 bytes tmp/.keep | 0 tpws/BSDmakefile | 12 + tpws/Makefile | 23 + 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 | 289 +++ tpws/helpers.h | 73 + tpws/hostlist.c | 206 ++ tpws/hostlist.h | 14 + tpws/macos/net/pfvar.h | 47 + tpws/macos/sys/tree.h | 803 +++++++ tpws/params.c | 193 ++ tpws/params.h | 124 ++ tpws/pools.c | 153 ++ tpws/pools.h | 46 + tpws/protocol.c | 347 +++ tpws/protocol.h | 33 + tpws/redirect.c | 230 ++ tpws/redirect.h | 9 + tpws/resolver.c | 264 +++ tpws/resolver.h | 22 + tpws/sec.c | 360 +++ tpws/sec.h | 90 + tpws/socks.h | 93 + tpws/tamper.c | 461 ++++ tpws/tamper.h | 31 + tpws/tpws.c | 1450 ++++++++++++ tpws/tpws.h | 9 + tpws/tpws_conn.c | 1690 ++++++++++++++ tpws/tpws_conn.h | 108 + tpws/uthash.h | 1136 ++++++++++ uninstall_easy.sh | 110 + 300 files changed, 43184 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore 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/freebsd-x64/dvtws create mode 100755 binaries/freebsd-x64/ip2net create mode 100755 binaries/freebsd-x64/mdig create mode 100755 binaries/freebsd-x64/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 100644 binaries/win64/WinDivert.dll create mode 100644 binaries/win64/WinDivert64.sys create mode 100644 binaries/win64/ip2net.exe create mode 100644 binaries/win64/mdig.exe create mode 100644 binaries/win64/readme.txt create mode 100644 binaries/win64/winws.exe create mode 100644 binaries/win64/zapret-winws/WinDivert.dll create mode 100644 binaries/win64/zapret-winws/WinDivert64.sys create mode 100644 binaries/win64/zapret-winws/cygwin1.dll create mode 100644 binaries/win64/zapret-winws/list-youtube.txt create mode 100644 binaries/win64/zapret-winws/preset_russia.cmd create mode 100644 binaries/win64/zapret-winws/preset_russia_autohostlist.cmd create mode 100644 binaries/win64/zapret-winws/quic_initial_www_google_com.bin create mode 100644 binaries/win64/zapret-winws/service_create.cmd create mode 100644 binaries/win64/zapret-winws/service_del.cmd create mode 100644 binaries/win64/zapret-winws/service_start.cmd create mode 100644 binaries/win64/zapret-winws/service_stop.cmd create mode 100644 binaries/win64/zapret-winws/task_create.cmd create mode 100644 binaries/win64/zapret-winws/task_remove.cmd create mode 100644 binaries/win64/zapret-winws/task_start.cmd create mode 100644 binaries/win64/zapret-winws/task_stop.cmd create mode 100644 binaries/win64/zapret-winws/tls_clienthello_www_google_com.bin create mode 100644 binaries/win64/zapret-winws/winws.exe 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 100755 blockcheck.sh create mode 100644 common/base.sh create mode 100644 common/custom.sh create mode 100644 common/dialog.sh create mode 100644 common/elevate.sh create mode 100644 common/fwtype.sh create mode 100644 common/installer.sh create mode 100644 common/ipt.sh create mode 100644 common/linux_fw.sh create mode 100644 common/linux_iphelper.sh create mode 100644 common/list.sh create mode 100644 common/nft.sh create mode 100644 common/pf.sh create mode 100644 common/queue.sh create mode 100644 common/virt.sh create mode 100644 config.default create mode 100644 docs/LICENSE.txt create mode 100644 docs/bsd.eng.md 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/iptables.txt create mode 100644 docs/manual_setup.txt create mode 100644 docs/nftables.txt create mode 100644 docs/nftables_notes.txt create mode 100644 docs/quick_start.txt create mode 100644 docs/quick_start_windows.txt create mode 100644 docs/readme.eng.md create mode 100644 docs/readme.txt create mode 100644 docs/redsocks.txt create mode 100644 docs/windows.eng.md create mode 100644 docs/windows.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/dht_find_node.bin create mode 100644 files/fake/dht_get_peers.bin create mode 100644 files/fake/dtls_clienthello_w3_org.bin create mode 100644 files/fake/http_iana_org.bin create mode 100644 files/fake/quic_initial_facebook_com.bin create mode 100644 files/fake/quic_initial_facebook_com_quiche.bin create mode 100644 files/fake/quic_initial_rr2---sn-gvnuxaxjvh-o8ge_googlevideo_com.bin create mode 100644 files/fake/quic_initial_rutracker_org.bin create mode 100644 files/fake/quic_initial_rutracker_org_kyber_1.bin create mode 100644 files/fake/quic_initial_rutracker_org_kyber_2.bin create mode 100644 files/fake/quic_initial_vk_com.bin create mode 100644 files/fake/quic_initial_www_google_com.bin create mode 100644 files/fake/quic_short_header.bin create mode 100644 files/fake/tls_clienthello_gosuslugi_ru.bin create mode 100644 files/fake/tls_clienthello_iana_org.bin create mode 100644 files/fake/tls_clienthello_rutracker_org_kyber.bin create mode 100644 files/fake/tls_clienthello_sberbank_ru.bin create mode 100644 files/fake/tls_clienthello_vk_com.bin create mode 100644 files/fake/tls_clienthello_vk_com_kyber.bin create mode 100644 files/fake/tls_clienthello_www_google_com.bin create mode 100644 files/fake/wireguard_initiation.bin create mode 100644 files/fake/wireguard_response.bin create mode 100644 files/fake/zero_1024.bin create mode 100644 files/fake/zero_256.bin create mode 100644 files/fake/zero_512.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/custom.d.examples/10-inherit-tpws create mode 100644 init.d/macos/custom.d.examples/10-inherit-tpws-socks create mode 100644 init.d/macos/custom.d.examples/50-extra-tpws create mode 100644 init.d/macos/custom.d/.keep create mode 100644 init.d/macos/functions create mode 100755 init.d/macos/zapret create mode 100644 init.d/macos/zapret.plist create mode 100755 init.d/openrc/zapret create mode 100644 init.d/openwrt/90-zapret create mode 100644 init.d/openwrt/custom.d.examples/10-inherit-nfqws create mode 100644 init.d/openwrt/custom.d.examples/10-inherit-tpws create mode 100644 init.d/openwrt/custom.d.examples/10-inherit-tpws-socks create mode 100644 init.d/openwrt/custom.d.examples/50-dht4all create mode 100644 init.d/openwrt/custom.d.examples/50-discord create mode 100644 init.d/openwrt/custom.d.examples/50-quic4all create mode 100644 init.d/openwrt/custom.d.examples/50-tpws4http-nfqws4https create mode 100644 init.d/openwrt/custom.d/.keep create mode 100644 init.d/openwrt/firewall.zapret create mode 100644 init.d/openwrt/functions create mode 100755 init.d/openwrt/zapret create mode 100755 init.d/pfsense/zapret.sh create mode 100755 init.d/runit/zapret/finish create mode 100755 init.d/runit/zapret/run create mode 100644 init.d/s6/zapret/down create mode 100644 init.d/s6/zapret/type create mode 100644 init.d/s6/zapret/up 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.d.examples/10-inherit-nfqws create mode 100644 init.d/sysv/custom.d.examples/10-inherit-tpws create mode 100644 init.d/sysv/custom.d.examples/10-inherit-tpws-socks create mode 100644 init.d/sysv/custom.d.examples/50-dht4all create mode 100644 init.d/sysv/custom.d.examples/50-discord create mode 100644 init.d/sysv/custom.d.examples/50-quic4all create mode 100644 init.d/sysv/custom.d.examples/50-tpws4http-nfqws4https create mode 100644 init.d/sysv/custom.d/.keep 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 100755 install_prereq.sh create mode 100644 ip2net/Makefile 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_allyouneed.sh create mode 100755 ipset/get_antifilter_ip.sh create mode 100755 ipset/get_antifilter_ipresolve.sh create mode 100755 ipset/get_antifilter_ipsmart.sh create mode 100755 ipset/get_antifilter_ipsum.sh create mode 100755 ipset/get_antizapret_domains.sh create mode 100755 ipset/get_config.sh create mode 100755 ipset/get_exclude.sh create mode 100755 ipset/get_ipban.sh create mode 100755 ipset/get_reestr_hostlist.sh create mode 100755 ipset/get_reestr_preresolved.sh create mode 100755 ipset/get_reestr_preresolved_smart.sh create mode 100755 ipset/get_reestr_resolvable_domains.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.default create mode 100644 mdig/Makefile 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/conntrack.c create mode 100644 nfq/conntrack.h create mode 100644 nfq/crypto/aes-gcm.c create mode 100644 nfq/crypto/aes-gcm.h create mode 100644 nfq/crypto/aes.c create mode 100644 nfq/crypto/aes.h create mode 100644 nfq/crypto/gcm.c create mode 100644 nfq/crypto/gcm.h create mode 100644 nfq/crypto/hkdf.c create mode 100644 nfq/crypto/hmac.c create mode 100644 nfq/crypto/sha-private.h create mode 100644 nfq/crypto/sha.h create mode 100644 nfq/crypto/sha224-256.c create mode 100644 nfq/crypto/usha.c 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 100644 nfq/nfqws.c create mode 100644 nfq/nfqws.h create mode 100644 nfq/packet_queue.c create mode 100644 nfq/packet_queue.h create mode 100644 nfq/params.c create mode 100644 nfq/params.h create mode 100644 nfq/pools.c create mode 100644 nfq/pools.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/uthash.h create mode 100644 nfq/win.c create mode 100644 nfq/win.h create mode 100644 nfq/windivert/libwindivert.a create mode 100644 nfq/windivert/windivert.h create mode 100644 nfq/winicon.o create mode 100644 nfq/winmanifest.o 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.c create mode 100644 tpws/params.h create mode 100644 tpws/pools.c create mode 100644 tpws/pools.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/resolver.c create mode 100644 tpws/resolver.h create mode 100644 tpws/sec.c create mode 100644 tpws/sec.h create mode 100644 tpws/socks.h create mode 100644 tpws/tamper.c create mode 100644 tpws/tamper.h 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/.gitattributes b/.gitattributes new file mode 100644 index 0000000..243d139 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +* text=auto eol=lf +binaries/win64/readme.txt eol=crlf +*.cmd eol=crlf +*.bat eol=crlf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7be93dd --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +config +ip2net/ip2net +mdig/mdig +nfq/nfqws +tpws/tpws +binaries/my/ +binaries/win64/zapret-winws/autohostlist.txt +init.d/**/custom +ipset/zapret-ip*.txt +ipset/zapret-ip*.gz +ipset/zapret-hosts*.txt +ipset/zapret-hosts*.gz 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..969be2733bec7e812922dea87924cac6a3a9b101 GIT binary patch literal 38360 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 literal 0 HcmV?d00001 diff --git a/binaries/aarch64/mdig b/binaries/aarch64/mdig new file mode 100755 index 0000000000000000000000000000000000000000..71146071169c0f39738713cd56786366dd29a355 GIT binary patch literal 48524 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 literal 0 HcmV?d00001 diff --git a/binaries/aarch64/nfqws b/binaries/aarch64/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..ec9fcb9ba2ad7442727cde0a10424771e93d2ff3 GIT binary patch literal 114980 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

W4K4Uk^MuPLtlE6&>A5@;c|F>5HNg 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

P-wG0(H>4jgy5C7 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

%9j-WniqEeVJ~NnmERkKs5lz}^n1 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 literal 0 HcmV?d00001 diff --git a/binaries/arm/nfqws b/binaries/arm/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..d107cee8ddc1a0d6748ceec96be850467d1c1c47 GIT binary patch literal 107680 zcmZ6wQ;aZ7u(dn3ZQHhOd)~2a+qP}nwr$(C{eOEOC1)iodAe3r`li!2+b_p=R@_%ge zpW*&97BB#Rf@rWg_wH^fJn{W93Ff{#!9jmy9O*Rm6c1`qHp@0O6Dq8#uV<7aFUfI8 zS4gqDR{Hee^MZF3Bno(@fG3+sE#=M~_a&1x0 zg!SoMS;a@_3jj>;o~lS}%+=K*ukcD~JKR%J);%(G{)2mVI(ba!=q%1Rr2bj4aJF2I zeYAKr!@&1|g3P#8b-@tBSeYSLG=8(gQ~=(_bDXqAB#6B^|70MKa7Y5lCguse_Tu?c z71kVsZ0_a_GQzR-gO>EQpus@;4LM-CCwgQWgzi)@L=bIsdOq&wddW-#I8367EaYcl|kT8ZGmMjQ)#zK+?QL}EcK>W?_ zS2n1pLGG3gnrlR@FWGp_0adt>EiFtz5kqJ5j0F|uL)!(H4l}R7SekD)(B&O$Z)0JX z8HhNe{~hHg=V$l89i3Jd^?+=K*OUd7aSir|tnBD)OADpL0d^}L!B|(BWT1~gR>-;s(q5b$w#HhJ`?PU|q7sT@zAqj}Af`4bx1MmQDleuRmlxO5co z#Awz)Hfs_j^X*~dorUJ}$>5dS0;ZjZ^qY}{Aw4vo+o0Vf%_H^#mfHTjU|5r6nyyxX zaE1*8IW}HR_tuS7*4k~Pm6G))kRp5(BI*h~$^^g|>uFq|IAr$6YTFV|&*Xcc1HM{EjMpg5XQ1~fe{QRl7jf1j?}`s)toZzx5GiEXjzY-elEQpU zHGPN4MLy;5Avm^C9Nf&m0DRxgS{tNl9~4|8GU{NN_2Yc0Twiqxg9EntTh#LjfIZ&4 z@bTuj*Dkg$r2-(z~$t zBs=$Rrh;%+xU})W!qr;o9Sjd4^(HZoa;^#yfBoHpwib}Zv2--fblG9qj}qD`q@fiN z0Vu>r{jD^QT@GdgpdG@kYigL(iA;h}>O46!a91om;!C{D)~|maTc@ud+iZf&tfQ>D3sg}PEtSN!)T#-0i&! zn*O$lmNza?Ps1_DVvoN&3aR;dn^LcS)`#|(LL>_rFZ-@$Cn}_GwOT5lMVDIO&&J;- zvI|I{oeu3p-qs?ZNbzJek~$;Yq)b@J5R5!+S?NIXO7lwyY)fY$r{8PK1Mhaxlmvqe zh(oU!$ExTkR2*l4c^6@g%=)kpGK}ToCAY;tW#^es_jv!@%^qvYA`2V}W>9xD&G;y{ zz~b-uxg~vs*5%nh{Er*jgcPK07!Ld_1%0x%p?M(RTUa^%Ufy<^11}H@{bB!bb$b?{ znZagQzviN7Nrudq&F2~okg3NYguebXyFf+AMuerQPE(iq6mC(n2iKfJ7)G}-!;4(9EFo* zO_ZYv`|!ROU`DpeSS4Q<0DyPi&mXP^VvSip~{*q#*oh!E3 z(cXfq3eX@W9?k-t`Lou;`rzyQ$0D9AjQYspna;P|Y0WMBV%xl){gnOSQInthr$@zK zo$5x*CS@}LZmVf)pj~-JunA|LiD}D(N{+sZ7DGfP+y7m#GVdlliTk)9st%^P*X_4H z*vP6goE{u=0;~l#f5o<+Kq57-ydrtvbm_t1D`cS73b9^E1 zce3Xa<((=^bogRqfA{J`A14AY$2k+5NS(HHnR+KRX^?JYA_pQQL=Ubb^TRfDO4Lua z`*SxaoLxjpd5ALg#rFe))ssWAOX({%QBp*$`N$_+@bGv4M8-~-i{0!W2Y_wnEKmV< z!hv0lxx`Mo8h&PUm@R(alK3f&+dVXzww?=%!SS-gt50N++4r1T_6jPLcFUO9JQVA@ zwLWd9o?(15k#UZK4(--64ApkV?-_FddkyL0jKfWpgb;bg(e}tTwl@1Ah`Az&tX%rw znB9Es<@@mg=CVg|`G!nZV_Hi3A9Ff7CdMH>PLmM{ocM6Rf>@c?IBLi>W{L)WEZQH| zt8H2i<*gF)ePNJDD+1Pqy60Y3ll!t}PBj@d)O@)~;n_7t^yG2}d<1ieF*EAln26kq z55~MNGN>pSH=~;NP1i>%Y5Y>|@}D!-Uj{zFsXJKJ2^gdsW`Q)>QJN#`09&br0b5SJ zboz;4Y>8ZgRt}8%C}397Z57Z*W#--wC<%YRD}B>HR<1_?60=D^LSPiW1!BJgjt9aH z_ziRVDK|3GW<}8mtVz(grLN)iIStL+PG(YW6eA|Qrs?YRin&X-NHKW%RLt@(`**pe zMqh3|K}mHqOEtbunbFm-`IKP?^!1HoWCBi&lOK@hiN%I$Gt>|c(%K$)0q&NW6Bjks=jys@fD!XK-JFJtjdxBd}{yFH9BGef>ua;4hzl@Y@8fYw)P z6@+95&y9#r%Gxg+q~L8oG|~oOxfWVtEjRpn(+gH#|4|u)l3x1cnL(W|Cz38JCNY%AuvJ>Q+(M^tE zRe{fCuBxTVWE#}OZ}|h z@R+w<#z9}&X`fzK5^ayPceRB+fJdb`zWkcebB_pvc1Duu0FffsG9v_mdtUZF)z+jh z&zEY8tNJdJ7?r{M610V@N7;14Y`De237fW?mCZZoIb0*D&(xrbe{r*AJ_qWwLm1*6 zDTrB1a|NR@c({85IUumZ7P&Pzs?$NYk$Kz6xZZ%e+1k-o1}{>|9af`qSAvB2`sXGe9U+w4 z*G?+1LsmUpRG{%PZezU1&w1E3QT7jL!g+jg5DgZ6*75?63*vny^x%I#Z=6x0z)8P) zC5-dmNf4nje?5*i+=F2k=7UQ3nY#iM36b3H*hx5RvI?dVO~RF^!zI=bo&x=aVH{~A zNr-6xW;Wh$JGv{O3|}^xOUiV_520_r3GG-( zS-h$BX7qaH4Y4~8kH(T%IDa}=arnR~1WV180&o=4Se_{?4JuQ!ZWE9Udq9>l5{31} z-(G#*pYyn`R!f{}Z5MeR2OgqyFO}Y@D904=NLH=4)}BOCD0HanFEvN1SYgnQg)(1h z?2a>l)q_tQYAeAd4jE*;u(3+tIzms0G1XTu#+OgCvmvJ+{oWgaP`)UwBf63t{fc(U zPS$vP7fP=H;(z3|&Jh+SOy6Vg+<0 zVI94x+cO8wT%nFLz{DI;eD)@Mg*ERL_Xn+6`Yrwr5%`W3cim&!vm>gl9DSEB3?sRI zh)F)6;#`!i&Q&LP(v5Z$B9|n*b{zC99DTIfLGq>;O=t|w$pgXE5zJu$M|}4H?d;|Y zTW{u1C8AHjLO-^#z5Pyq5TNvKN}{ha@OJpSrHLqr7i|(^=fe%9JKi6sRS&e0HP_Gy zzS8VprhZyr6V*C52@G|t!o;S{i@q$r?_^BYzyczaGOf`g#)+v5IiO(ol`C%t-kA-# zk3lCbzY7)82?sWYq`v3UbYQH+!O7b>W!CbEve-+4TNQyqMeyM*w6QxDiF?H8A+*-9 zxenYxx;aL4bvt%sIq3LIAOg)+YLkj~Z?Al@ZjHJyX-)t-Gu5;jkF99I*YDt^p(e^Gk>MbZIfY{-pljT*UTS28Z zc$1b)5-z-wJgZUf32s?J!12t)Oc@xApYLo9zx732=X7fO0^hsFr5kkFQQ2+{=H}~l z96M`t8NW&tTwVQKau(w6zlza`SH#aOjMK|NwDi7B6P1&SeV5cIi8YvFWX|~5ePw0| z`3?)1I@v|Zq6k}p*9%eJOBasg+@r&S>{eWDp;j7N$GP`7JlfZkSS}oa!B3}zHIcy~ z#kKJ3-;wEsQTraI5{2Opo1fxTJkQGg1w{{v7c|^yW5_kiq%j#8`EqWrGNVE!xiQ|w zNqD!fNnze&bH%?}m6XFBGk!@v403iZ*QItjy4)1vaJ<0-$DpS-E){lMN2%Z0Hz^lz zmPTU$#Zom)kd!Y+yZ_vE&z!^CQDH(Ah68Ylksy_!#7B2Bwy*myShEKfPr|o6lF-&- zD9G-V81Twba1M{8aA4d*UOIUDn=TIY zTzk(+lX)+D3HV}zZzh-O0Opi-hv-GEB|q4|N2om-%8@e5q#17Xtypa{NWHKl7qc~PQL(Qzm`21i(Z3kXzBtNYlliR zY*tjs><_QEXf98}m_xaM9>hkRbC|+wS4}Y~4e&8-SgZzko~hKO)p0QZrP!iFR!5mC zUDd+JL1;Hf+OKeN%M}41IF>I?bo<*%iM2%IKq%YNMD3TP6v z&MU2)LhI_1*r$UXYXPTo?%DXzuR;?WG`LB&Kr(Msi!-t=`8uTt&^(ku`lbVrI9V0h z?TKIi$ZtZ69bQ7JHZQbq&|5ND;Cn75{4 z_eG~i#gw?6{lFwov;3G6Bk@SC80$T#xkjPDwQz#l2WAMiv|QdNnl9lHt&+s1X@np_~U}Gsl14E6uo|e#t6O&MeD)ff-ST$sd{t z00EiI@ z@h@X;OWaW{1l-2h42zxkA+&O4BfER@mmtHTSWiCyHTIeXc_!5Rk^&-zhr~ZJeH|=G>7!^YVWBGfCld zAZdj8JMm#2U(o|UfCB{7A6JtSdx%kaxhx#l3lUCoFJ(KRhWF4sbQ_uZ z=lVaxJiF_5r;YkIEYoqJN@8dURRvqWV4YeRV6Ggujxf)SKL*tx$9 zy`xGg@Gy9h=+DI_LZBtxDC}$cw+yDCZL=n*4GPOXL89zUZf)X6_*OozBJHEjaGjd^ z)eu%RH>u7Zm|ZYvfS}5X|K>mg$35>_Q5!RUyz_;7>soVR)y5o`U~=^=g58fX$HHZ6 z{=H5i>M_KiYb~$={=UP=l$xqDDSr%}ijGOs*Lz1MlCP-z2}h&5gibN@tE=RzXgDXm zrIN(2jJKd82>pUt1E@+2;$O;O08Fu`d_?vSHNFC~Mjon+BWKMYo4BJWDZK)1zU+Xz z93nD!79+!{nj#qliaBlGC7jp1z4Vz+ksd_DnxE%agz|(XAE!Lk{!i8kqAYs@$ci+C zzJu4JMCAZqkvU0cgWDC}`li)3+ zO!B}uk0Em6ZlY}*Hs5CKVD3=9+#4G}{dDsL`d!T^2w|uas`qKCy?7O5#I%Vyk$l!L zmfEapGpgxTCqNi=JjzZ>v^i(Lw#rW2=#z-PiBCf8=HUI4rgAc*Md}GI3FJ%h<;5Mv z6xmNp%ZEAnNTZ68l-doX&efGaN0|mHGoqz;PjH{1 z>Ke&J=W{6lf05H`(#W3%#A;cjI~xCERfawFjDPO5?a zju)D7+V6nj;^B6my8JmVTw`H~oK6i&GYhnY!R}0pL+4&eqMlxNrZrJAdqC`B#EVga zB9qt`h~r9gred2XAtlqrC}ih71j(so0Eb;lMkMikb5}q~t|fKWEPXt5yc#~8kla|+ zhu}LegecO>9)POJk?#-#SzfOtEy-A-@BHz)SiFIWEh0Lo7x7FLUV@j826* zOE##Wd9A(PBjP#mqV9b0Z>SGA_(F)Kq7Eu^amB~<5?zNL+?G6<(E)OJVV|wwzI&Mt zds{31)MXiklp~?XyUdn9mt~UxbfiDWI_?dcg6oX)J<=ZDfg8z~iglNq6&GfNXqSR0 zGv4q4Sr#N=uQo>YumLSfR6v|{5nZE-(8O%y-MhsbwfIIkG1^5;o|Rk_=-84yw1&L! zV*)ec3m33}Jz*zBcllHse1$W{(IvRV4U3OSl(^F4)_6{marr?)R3+yI2i%!Hj%Go> zdOT3du%yY@ih9{eI+nVC)YC+f)M2t3LVbpnZuLQPFpopWhedxR%%9j0-@jg=J%)oJ z@-fO$-&i=0KpRcmTkpAZX%lz1gvRPnNo*hbi~F>{*`l*35lZVRbWp}sJ(!%BLEHsJ4hp5cvwL4P>3Oce~=R6qswT!T~cq&^{o$S72BK(lI`~nBRF+e zocvYE~Z2O(ADHOrZ!vitto0&buqh6ePAq`vSCl4(X{H0+GyA zLiCsxL={Cr5r?@XwNYXxN?S;gPlxxo?Fa%s=Rp6w4cS;Fcr}m!#O4!^mzG*k)!7a=PA%{Pwh%s7 zW^X%1*MNlI8Zjo5ko$8goqr2H%&S@v;;6O^A^6Yly1}m{GBbSaes{O7u~S@A%5onA z_-H8^Z~N^8NCNuGuu%#5MVlVv|ILhGd=$y1DbUt!R`uN4^f5iekLl_`8ttipLFoZu z8b;Bd%0;=&bqI?q6f&Jq42Q7m9_hTV*Mn`I%wMu2rw^UXFeE37-#_lzf{;h^j6^a3B$B92KokF)64-7f*8J^8_Xin+E^N9E!cJ3IBQFssld zD5g46B>hD0inO-c6G1hXr3EYq~m z)v}?uCxjBJl>gClTuv3}#P5t!-Qf^#Q+}NUKVcX+ASbOuBPA=bTUX775%6+vjc0C- z-{36FSAu_6LeD*A&zMIonn6j9dFP$X!(X$~QjFjn>b8JPyaQ@!y$k!p!&6qZ0_8Z# zhmZzcG%zV!T!_|+FRIi|rR$>lK9S-K!pWph@VMkmCRCGW7=m6c36Aa+u4r}EvEGtR zkH+NraC;N`C--OG0ssEqgj*Zs%07BV+$*YC9o)>!elY(NLX8wZV3u6nr#_MX;Usu+ z+pm~ffDLx*sSU;mErt-`W&kL=+H|y|;)UMvSxMIDqrE1;0=h|vqX@$X{x%HSvT#a{ zsY<<=WP?XOb;QKmKfbz={HG@G_32cBr!o8#8Y97|lDhUyJ#Q*YOQ$u>Td|m3`7+oI z)qoK6^g2o~;YOVWt%nSyc=P2c`le7#M4hCe2P?@}w&HzsZlbdzrG2{<@d(5HH*y>hzq&eugA(vNddZZX@` zN!V$a@%?EtuZqCV-aW9WR^B_HhY8d>2tSJo+*!75wq$89KdlB(YTQ5s%=^r(f zIcW;&98JOQhwbjpfz0(NXHH1z5*n9<7bQGbz}w^(tW?6bap_FS4=P!`uRxI(1WD^y z>sqGLlf29=S5A%{31jbP%{M?Rwq6vU#_I{)`C$51`*L}Bf0J+6w(?P4L&-{A%B)tK znbmRY6w<&^em)ZpV50su+wlRMfky_J|d(0OMo24IjoLpQZ*6bMyQ*E zsvbsM%or?F!FqZ~^=e0Q{>w}FGx~rriyr-np@qzSv^-RUpOIlEj;k@?XAf*KkML?5 zKqAnqa-%W7d}Eh~6($H2j9B>_A?o@AC7%4Ru&wS|s3n01mtGj7z4GGsaB>5CoX}K9 znhTJ^juel*21HcmT9<>fc3PV_<0y4RAfbh!s=uH+cv%H*2-UF=j&+?}^Z@cHd&A+F z$XkfNIS0r@`2`i4V9(Ox+jIrIqI(C9lLUS?SJG0^Llja9U-yQ&t4fcNgy{-ghTF#7 z%~X-sGV&G@aoLMcIpjrl%&JJvF=3!)!%+Reh@5(+N4lccQ6oxv||$6iiu6#q`NZTbe~0=y%8E>@)u zU?G>XRwDJhX1HdTi{umnTE=< z>?9+ZB0u;&HTR1Vf)Cz$vcm#?@tG~%dqw9@yFkE<>OO_H58j9SBR>7EqO(z}0SdnQ z;l1~mh+vKhqG5Mg5pnmt^Q4r@I})Dqgagj~vs=`(tvjDGT`%2%?|1$^X2>=+OH#3f z8?QpuNNZ51L?%W%)@)dR)y|`HMYDaoMd!XV>NL@sjt(=f;4*iAva(n@8Jz*oWxukv zu)N`;jmGAfM7%(0{(FRh!YI#5L^?kc%DVvri}`)JO9O z%rJAN2=1c@pUkwHh(gB7lN2Ovn0fBC!6Xpm+fkp8%fnf2NaPAskS~}Ky$@q!yNsPQ z%Z(kzqfv;M+Bu=zeOeudlw%tU0*&fcvHsrBQ$v5;vGF*Le`@BJn^-A~S4JZjrZ@ph(II@7 zEckQ0Rge$Px!}lOaaM9D!CY@QDwwyAA~BU7Dq1{P$4cKr;!$`L8ECxfZdtfpbIL(9_qgvWWr{UPa2e7yL8Adft_apfJsu@Ro+bBY5hpLPY zb13TC)pyJf>DIeSZ{VnyET@<78wsY?uI(irAiJs$7hqMSTMi7#$W=~O8lSt4O*0>_ z5wr%_(`4m63LX!x9mgz_>A`};A~oq#KGS$ug!&Y@Uoscw0B{Q+5Iu2dhHX^iUE8|9 zTb{SA-{T|!*Y&mVM`8a~QfGZ-=0gCUZf-SBZ`OSM8iRch>sI1=^ws6-`B#)aJx;yT zN&E{biP&SV|8Vtk*85^Ky4t_H<(4JIAFsz>!_7{z{V&(U(ty%YwJ6#&r2_Ub^UP9; zTNwK^!uG?dmhqrl${rN_sTbs0^2T7GPgc4x|IYYSeIZ>yZ`x1wsIu^Y1rwbS#-*2K z2ahHEToJG*m8D2qli43cb|f@}g-I_}neeo{Ce#TIc)cb@S4g^luoly=3D_KcR$@%B zHi!31+DJScmnn}}Xy>4ZL6%qWC-XeL;7LX^rHA4kj~aL##O?f z|IYPTvHg2MWj7KVo||GW)xo`L;?>ra|L~2f9FMi9SAfd^vUeFbll494sk6?Xmu;xtL(P;~=y;bLNjAV*`c7H5S@)j6Tnddwv zy@PNm|Lds#VUiQ*gIh0#gZ5=ju%j4@gCI=g>i=7lSosl6qf$EaZ_%fTcI#2fYM?v zi=y9$PT_xr4D>Dk(lWFG4F)I6_(+g56We+}T@(x{wlxnrTOWWAVplct05%!;Gj5ou zo{LxtKRT^Gfe!igLLiL|o-0AWTasNo$vvVu3gj6D4|Nk8l(U0^WWH+pj!F@meg}U ze=Qm2u$s~=7M{`tJP}sT7NiAoZ@Z6C4C8XHR=0U=jGNf;`}<``z3Gqa{O-6D0`5uW z7T08lWvaAfQKZt+lE)P`RjU%M_aKqY5sa;lY3Me*C@-ARzsZB79qnUOjfH>pnq2C( zLnOHK%9O4v1x$JULr7YU6K$}4k~VV8m57PYC(7^&DnV#A|>beW`aAKric!1z|c~-DKCWoleev!CtIF_LWklD&;7U3U1;cF$!>L*V>Rt zgEopa$X`&@k5H8;UTCGJ;hfaB=f!{s)TWL}PZxS#c8vjUpi(BYp-o8~8T5NV1Zx_>xIeC!h5a5Fs}X-rVaBfC&>MGNTnicW z^GbWp(!$P>40?5-_8(`rJLk8dt7GiPTlM-*ATWdYfx5dwA3~&TJIe+AC`K1&@YH$E zBRj1suG{Sm#sDgtXt4xnZuVo7Ke-u@O|{f&(P)quyJ>T?9fu|Eo9x&UnIV2q>@}qn zpe%Q$Jgw#KE9b~}r~kCu$rY?mw5RLTL#G(~kaFSkD+dn@c@BZp+&fv}rzT_h;ExL1 zfabif4p&SBNl^1-5*{QY$~;M3KQ5k-wzP5c97G+5a`=S@O-}l_mTJ;_S4C<(O7XdG z>gcZ24GlC_m3|?(zGm2pPxu{d1AIOY;TRR1pfCuMw1;(*D6O(HCFqCeaRSY>qv&NW zZcZ+;N=!c1GFD%Q;i%YOReu!++iDfUtP+IC8BW0yVUs%ZxwjBH7s4o-XnQ}(@L##5 znacgPJFv)IL)|KfVXS0*1@=eEmi~-a zXNEiRGKnZDs0)g#r@EQj<&DQW|5Ezin)smjl05up(l=8$=q`u~1$oF;J zKs_qs$OSh+d1V4&wWrakzz%wdjDbJDMudF|tql3)XhiYxGs05}b1Cx+N24pB(JAy} z5D_>Ol{D7bU>V$W3FoVN`oLzWp6&xh8>8^vFQe=9;%c_`7{nwu>OBwF2XPW8T#OQY z6HK}B&6=Yn9VHd9(3?NUCggiy3SNTspm1saOH>%7+nz~>n)i-ez%pXlr`{7C4zd#0 zm~>=LsB;8ycqhU{;SwAIrw3RDE32PAXHP2VF!2<#iy=r#$;B37h(&SPPhYOP#`f^F zvo%+mR^HNF_$XZr*$X-N6@t8qpgYy1VRmOr7TSwcko2lpO(?Xn4El#PBy^@M6sj;} zf^|jez2(|~Uk`(Z=0|C@ycaaCGJ1vV3uJSjF2!h0Z-B`|2uWJ{!q(w2NpPa&R=+ow zoe$)JSe~+uH88-wlzB(9>a}rh*@9H`kYz;}0DFrRn(}_XZ0VSph%>$6`LVTtz9JV(%|C9U9aRY^7%uLex2VVVQ-B{1?ICnp5aq0qc;GzfETIk>`KQucEqE)a5z-@L8ntt5)`nNFZYd@$vWDhjLZou% z_zCUh8n5Z}3EGq;{yGnClgP;dV8lnLeza{)(ca^a=xGU9Ale*pnK zB-mVL#5)11Z3!4&6Rt@ByKluXUH(uYHwVOagTVEG+&t4nf(13I`z6O}eygLc`hgg> z5}t<8iNOSlty3Au>s&?epWhp@0EIOyijy=3#cHR~R;NaHTfL`HWJx3tN$?6Om-Z`} zOFJf@OVVBN%@{a|Q3w}Eayi+IQCc?`&E6|~uWaYKJPj;5=}o*99-C?BfU`pc%gsx8 z=Uji#xpih}7P6i1*a;G+#4k*?80I?))(SYlm)D4dV8J&YME-vbmlKU0n6O(LMEUb= z6YojnsJb2W>xK)`p1)gL=Ds|4u(_jNZtnpSvw{@~XH$446_^y_WljZpt_=+|l{W=k`EZXIgK{>tN* z@y>Ec=L!P;lS~j|NgFR$W4R9AO_GQ@TT()B_oQjz78%kGIO&qw%q|Gzq{Ty2zv(u! z_-_>gfem>~_|$M6-$aTb_0wq{!37{VZetNL`b{yfe}_dz2v83xPvP5TvA=z9ygCk< z**sIFa+mFNjzMbxE>@PkOm&=j7(x@r)FhmxeLDzKZNqjwl2!Te7E72Hi&4u^IeEEw zaJd#3`x4yrTPp8Y3ohk(Vpt}`rY!tPTK<*;=HT||TA6-;W3qPcW@-Ews#_+uZ+0aM zVc1hX#9x-dtwXy&u z#sIQih%?g}u+O0oKMDXgxz2vZod2}9`{e1!N`YdtL)_Gwc3Lzn3BTw(hE&{@1;eG< z9Ryx>itF)4BhrWPCIr)d1~4CI9T9aJ2nj+*n3leEiWo!YJYJ3}1b5VpOPtJzXg&52 zAT_bHDF0<#hf>tPsb9?fR<};9WQWP4@BN$19@=UsM zdeK--!zs(lO`}QS;FXedQyw8-k9;3Zn^sBz-FK=-X5xv6~y2_Yl%iUuc1HYbC|@TB$5J)jXoBu&IW*rr|#( z3UdJ$6MTFw$Io}VEG|QusN<_jbGO<$*tWaH53t~ox1k=t*(#;MZ`(v z_u)dcBPh|o*XU~sr>pOK4k!{zd{}BIjF(vxU;R$0r-O)Zg@f6YMDSSs{vJsCxhN^` zr$Vq>UPWLGh$;zkpGu0_&Te;gb&)6nD8@$n-Mw<**Te|Bn5U)q2uA=h@B1b=)c7isAr9#6gc)M|I)Qt;XF9^;5URf>D7&1Sl zBv80U_1KHi5HOG0tud+1E@7R-v}S4svyu`WkL>8OQ#nKovgVhC6qAC8nD8q`_2`{( zA20Xgl1t~g;#-E2Q!v`6rk>lto!>xH_CkQJ(VU4Mhiy_CoO9D*a-zLpJ6ezKsxYp)7p)$tVAC0^y1IZ3$+`BymmP*+)3O9GB3Tqjj896 z%Wh~WmyGaZ`<1o>;AqnVL;5<R@6b zi;Mm0xG?c^2k|{CR1DqnjwI_X)-}?buvA+*r{F?waW4}U;u9u~7X)V~m?)0mQxpWo z_ykVB`cF6vv)_u@{rIc@JyIdTTT3ta8WDyTp^eBdv@^j=TF7UnXwr>BWCJqJ{aPva#ngqd?ys{VEcEkK%awfUVyrZs9){&h;KWo5 z(M5dGJYy^3h#`J8+V(1~9rEl-tiT*cvFp;^4@g89bjSj_QTCiW2Bf3|&G?QC^xKb^ zAw0rGNi!5xV3&*G{~B23(%7wV^)~8ppx_tQ@5=qq) z@8yU+bZ)+8LaUI|;psaBkoW>OJI1Yn`DzX;4$b$k>}BI7Uekp6SuP zwo9rp9nC3W=Hj!YZDe(pYn-ZLwA>BH=*~3RPOji+v-O>~8tY#SA94}iaWkb^u8N%! zy}?#6Yhme(C4qv|tm2+|QreQA<5|ycO9I^VrYYnFoLxl0fajUVmgzZ^f(jx@fFxgT zQ?8zFeRGsS`WyMdTW8tiNV~%Vs-32n>28ww)^~nzFxKSzXd0xv%y>Yzk*7ejSEJjy zRv~p%T6NKOr$sF zWe-K9sPLN}CKRTd2X75wu?d(WJB3~a*wV_#{jyM+PA6tjVbxC2Dm`^%Ofu_nu4RHO zd5?JKeIZl0+uceCD=QF0WXr)`-o^gKhbFs2@m~~yP2WYRaJB+PS>&^SU`BV(Vi{^hv>2-z&+vv0H(vz-hn2jxRjDPE#-z}GzE%x6Jc2T(8N+ePF(Cx01=Ot4upWanK z&QpKQrX@}Y%KcM^DB=QOyCrp}tgXYZ{Va`V(#x35>47J@vYf0Ppg*ou^~Fu|Hb2P5 zaHdE&T>kiO0G$k}8TL-H7lyrPiB^Sy+xHk=qiE>&1MJWwWx;dnOOn(lE;D0fPvd#> zQRex}B3dq6G0{4$jIPxY_|fJRHF>N7k;W+JWGZw>Ngek_`#%65K;XZjU_D}?oIqWz zCVCYpzho1Ot#rkrzH%%%Ke7#UEec;?pf&ciS~){IPId)gAX1Dh=f(o$6Q!>{;Eb?5 z5~QF-KUEMg;NT!VY7Ia*&%~#u+fmjTZKj)(wnf#u-rdMBg>^H6nmI-&x*$*Ec&`fh zNlb%94wAu+BhA0Gixd;I$0Veo8~BP>+b zbl6JQY(A)}R`-m2gToJdpo-l^AL{n1(`Ik_f1)HE>t)iQT?{=2V}ekf@JG5b!x<2JcvLsv({%}2>)7m^f0%qyR|6fb&P4dq zc4G=WNHCI7j_*2}YWiG?eQ~QB9ipjtfBV0eLZL}@R3@d@gJ#qewHK_S>Avz$hb9h?n&fTFvP~0&X9LG}f7j?DW zE+Rt_C+cd3sOa{Uc9|OGur8u<==}htC#QdT1C%*GIQP9t@gr@;1x&#T)gw3C`@7S`A%eMiY$fsK!5x8zBt?xX%NlYJByer@GrM)B`T4K?FtbPGuv{dWni76Bow zvYV)@6OR!-4}tBs2Lcci<0rZ$PnEW zleEpa3rBJm=6ZaLA0jpllVA%rd8wa%mt{u~L&yEO>xCiI_)A;-2eKDWEK%Hc4wSM= zh9iIdX^3oyaKa<(R~?z^akTHbvSGuPn*x{9KBC)GZ~}b@xuk8;Xj`oEIq9I0L$gwX z7|QMJ7m-Ix&bMsx1)7Rj7;d5*34r*PD~0y=M?zfOY#y^o3|uZzS(^Wu0+oqODD=T2k8>+q<1DS-RX-u@DTFaD zJ5K8ZtzF=;eyMf(yWk+^pfm)b?H%^((m&X$(Lj*c*`h&PVbY9$w1dCgUk!i-Ny8<* zCt1P^Uos9$z-^V$;%ZJ5n+|?2!|GbTeVQf+(YXsVJg3{!Dl7zYj`q;$60u?%l-|}* zeEC?phM!nU_-qn0O2Frt$|LStz{Zd}H5!#C@}N9^>0PLL3>*$%t0#mv6YpTKgy;D^ z#wGAnXuz{VMrbbZQZiGBdH}M!zyUP=`p73`xwqDD)=kiSx|Ed>&*8d3b{Dio%8Z0Dr#)?pBV~R5qQ! zO9uh>>!#!cL>g3*jqE{Q33)!nI{)I(=|zOA4yvBa(1{A`PilOL#Xs4ir;V&wePa63 zk9=m}rJ%`9P=abH$)$=SSR;e-$|*iNmO}D3ibV@efb~9;`saOHQkzZpFT8ciC3=hY ze@qbE_bFrbt`e-5p8!GD6Y=Wqkas)s|L`|}P+N&f&zieAiq&eAWocEt#5u)~j<@@; ze%TB6a(rec{Z{AGzLL6nr# z?#>`3Q^fj*-DTk#OkDhJrPIR_yn#}7CZtT${eGaZCTNCoqo4H-`W#L!%K$p1EPz{P9W}` zWgmqjW^dgPRp4W&V)KkND;EFdX&O9>eo=yxR>s9SK@31A8rp6!PaUmBf$vPxpJk0y z*ziXoaE7#2xOkX4kw7b_c#_p^Y#&UiT%W2LpoNw%=n9V;;@U8d)mOlzb^BInRI!L` zxhAhx`>AG%^`Uxt=ChqdJ~vUXf!z9A>l)2yMxa6X4g5W;XCx|vml^Zh^3|VUlWQXhmb0zuQqg}G92Il|MzhpsU!+Sx zXB*E#fJ#)4SEOJ@Nly~5Y7pCQxt6d&^bUwZG3ImdEVN@z1LCJ3{v4gKd&bicuJK(i zjBv^1$zqw$y(9`9b+^gL%(+HfhPj{eOiJU;K9SRy1LbrhnWuf-Zef*X>&OQH58uQG zLrgY)a0pdR54JM;er#vQBpmX7CtMKaEI z9PP?odLU1-sWP=kt%UOgvL}gW-46yrlMx^S;6q01`xok;OIn?_KPsN{HrkvBt)3av z+uxloTI$vO3w^~|Tg+x!9xOMsA&Lh_#Il6ViG64Q!o{=E5R=bXe8DJ#f-Nch(gix? z(^5XlNT^i9ddH~VB&)1RT2papMw%24oE(VQrnGt0R1LHI>|Z>VehxS;J!{0c#RVMaxwTj7?PNO6njh=Bm;9_?Yz8%a!Tuvjz^`ka*otXwY%4kF z3RUVIYnV_SVO|<|SZwJ`#&oScOvVoFeL=EKZ)QpewMOr=S*tjVO_(-rO+|0@O|(*M z0a=a_a?9j9sL=WdLV7o3osc<9fI5aQIGO zaAxJh{LrT=aWY;8qu_e6{P6U=q9r1e7EyN%wl#=ibnjigO>-n%EPatWglVFBEWwYP zy&=2=A}$NgHCWiE(90d*RYS8YdBE!2rq3Y$dhFi)Coh)sQ49B3p4(z;Ibfrcc0y2$ zGZ>N8-f|UAC`Ejl<`PC4O_bZF({!+`sm0ljTGr!RRVX3F&zzBIh(mo!JmlqlgkpD@ zNDjkkoHSkdz_wwLCC*A-Y`R_Dshj2uDfypLr ziDFQ&&8q}gw|TO5^J;|nFg4{R+}_)HxA^{YaQTM9Gx&!(d{V-;e3#1HShn+tr+{2M zWmRUG9QYjbtRW!PU^0A(s32P#g!F91j4m;uPFoq$x>!s}ymN`{vyc2(W_-Pe&dm4W zS_zjXH6ogWq*c`R(}*?vxAcWJvrur}Cv2HoGPlCD?=GL^eIJJyuv0JsGsrN5t_0jc=(Ea`e1;} zZu%A9T=zNUjj|yMi*&LtGltwDK$yy7tV$gr)sgBYh1q&D{rxdElS5HV3m3neKwH#I zTD4;m18;L;=7APq*N#^~Nt}4tCONp}1cb@nfH3OK-%nDeVO45EM}8xg-9#M@kF?YJ zhqQdh&J&@3#4N?@%Hq|UfrT`+FrrXLV8vUPHA+YO&bm0QT29HVH6;=7z%LSsH`%{n#fr5-(f6Pz* zN#?ah_-#_`Bn1}x#_RMEjt*8I+uuySg%!9ja^>E2n@}!voc7MhZ!qTAOS;R z&WZk=oJP`fRWh(o#eVK28f}Kk3hCb&g{=bRcJ(C3K|gdDL$j8iu7TYIlq^{_&9e7m zSxhLI|!tPPSIb2-8+9Hz`r!w}t}xZ`hkU}pTVL{fH$ zeYli=t&flRnE*={vcH)VD-Bk1Ni==d(khNE=B~E(6;Q(QF%FlVlkcjmKzVo56sn!52C%+VAj@;b{6pb*(CyIL)cM8N~9hN0BzEo@~ zABxwfJt}Y{kOx2%LAj6B0VgE-kG+vpuwe;~xl2G|C=F)k4(!D@!~$EI>72<^jc;mT zs?f1J0#~_P6rs0dEj0`sE*h~k1*vjftYi_;TotMng9r#A5ge38oh`5V!HJ4HhmBlSX675|gBa}j7BXu{ zVD_gXSCyDVLUqk0RzP^yp+xC#{FUa3;jAnr%beOBZ*O__+fFQ$=#lqPpXWM2xd+-= z)rPpN3W-w9bH>7uond1O&M0=zdVkjVX4sM^+#iW{9DvUIg|(`uB2%2s#1iT#le{`0 zhs9JRl^1V51dtA8xU5yFhgVPk)oPin_cjVK$>JH9;1Yof9Cpw$71A?5`^nwa{zVjS zsrMsHrMi4U60!18Wi3WEcN@v?G|>4~tJ*P_nI_cxg#{`25~V9CED=oe_Ws`Q^06b#t*02+qhhF&Ju3EKwM z>+uRf3WwR;XFU|y+PR=%zI-QF^j!0@kyS{ggQ0uHg-mdDg(CI)SPjq^e!vd1t8>2* zUASd}M=3ankRL~H?e_*RnI`weT9~WSmlMvouE7|%LCb~({NU?Rrd)^`gHFSD7ohKA zp(m&Bo`&Gqjv;KFi@FAzFri4cz23iVn1kkbD1of*J!N2cgL6IQU@WJw2mR$;edqX|; zVU+ZN2b}Fu)4)SN0hEY#;_5+iopKluL-8(`(JSgL6I_D`yK)Wf&}zI2KR1s>NIM;U zD!W`VN$Sgi=wqn4&UVN!YtvqTo}m_-QJI1AwE2q`_b?q5k6cs5Tygz4t2g22V!YI= zD4Iw1X}-SM%?Rf5JRb!)y6^&9oSW&YIpz-!2NE50(m%o}XBj1`9`)|DXXDikY-jEc zSsoV9WyvJOmHDSOkQyu%1D^_YkVSyjkN(GXN~TD!94sLiX;YZ(rV-La84S5pGoejz z#yFxM$7W>}akzFXjOsonAP6feqi3>q?0-9Y2Ybd7ra|FUBY z-0f^-UbKY%-e3kK?lP(HK&ergC}|bP1wxx&N!e5kBMFp;3)hcU=$ov7`lwIv)Vy60 zC$o3siYL#4%OCtJI^?XMw$ONsLW|#FhNDAK%{hU~5xBIJ6@VMeE+H4he>#wLTTjSbZ4uy*P_-yXAd@Q0K?{ z*lGYL?Tg-4jAPQ%t{oI3n6m;gM1t~5vfhpytC+b(+zxBrmffey>TXaGrjVW?ezE11 z=|)W#%>_fqCmu+@&n0zzQ!L0Qv*miYZI8i7jkmEpowvs_1l*AZHaB{l8HK9|2gqSZ z7~)VplTOU|&iam$>pKsO{}fz3Z#Uu?o|IFuA)Aralfc-I5rtN# zE-_8P{61JJ}k0;HKAE*yl#>SPV0@Ro8&PPlUM#L)C;DK z=z;>^y6#pE{66onS-v`~tMVbZlED_AM)8>kcAFQj%HMT~36K43)vm?gF%>8A<%8F3 z)A2Jl_cxb;i`L?dokd3qisxPM9?OM^!!z5p20g)0s;ay5$Y_AKzowVF9@5G>5zIfP zi+6|J4>0k%WIMlO2em7n;!a?zfX!0Ilp>knH-XSYjKY7drlVyQdI0QB0|)Z>X1F3Z zRWx7HkIdF*YF9WeQWoclVR6ul-%Y=_7S5nNP5W_ihc6ja{l>BD6Z{&zqKp(_avu)x zweM=LA`(1j@!_)~V6b%DztV#NYC@{nk=6eA95=Ei`RMmqda`9(YF;}9V2!4Xrr!tK zgel-%tMR1m!s1_Ziu-DIcCPViHl2_M7=LM>-a+ zDK~gCJ5aO&E}1pM?P-r8!U-VQ{*Hnuej{0=P-k)};LB=m3#qMI%|xWlu_)q!<9QH z+w`ceIwJ1hBe8_?ej})8`2qQL#`nhwo(V2MzXS<|8GZDOne{ zvoky1!tLg+ttmSk95KZ<2%Rl}S@$uNh7V4YL0!^?O~$g*RY0%p;JSIj+Ie zkerdQKaQ`ZN&Y0Lb9qTMPkGZ$Bv6#=hU0-@uXNVtSm?A*0=3nynI# zG5{-%QpqSS(9IaPmJs4>+gK^c!Q2Wm{>@BHH;!b7-@ojcaLf^7!ZJya;I?0GzGd|w zP>oOfzfbSj@gC~F!<3Vz!aNI#$#gV*J$+1zKU`XC^+Zh>s!XF(p#dz8>)IH8WgPRL zp3y~!2sj#ogsq*c}~+2P%0WKA`--(Rq*;TZXtM!MN9<-`H|T%PG*g@4mY zCF)Zd714Ls@%BnVxO1c3ZAa?!VHtoh#${8&8kq8G{pw}Elp9hMkBkof*)^n3*m}1w z*0#@*s z>Rp0-+>m{T&8esO_Q5d)fo>_8#-9aMr?N3L(56C_Z9P?fuFM_~)+-zP(?rA!*QB?( zog{?py!i8nK&)6I`o$USDX_)5i3Zvsd|20rb@Z1!p=K!lXj9r?2;VXnThRu>R$5jg z3e#o~CAk?pX|ZEeJjHJ#-MoxYt#Xfdc{{<8M+5s{5Gy>ZLLu|WM~mh0>cUyrh17Y| z*>n0yD7bgN4|mRt&0_~D*iWB33!D2HLt9ygSDZLAV2ro+^!gn4zTDu*TCp#2o(Db+AJbHG%J`OP1-So~7TiNmsj*u5sZP_%W==h3 zm|H)tqOz)N-8XA;IJX@CD%h$SZMbbY?}AAvA~j`cT9B#co9pKE0;y+{JwUj6le>j2 z$~@T!#AcS2qa?v0&YYF&mfWl12X&&c0;aTBkR??%;H<`wx5ibIZks;NY}f8Rk9HQQ zY?1*2K~WId<=%aqZa$H#!=UkF;2c_x!*q~#W*y;ijwc-Hz#VFqb8|O4iLXrzFu^Fz z*5__OEsJvbwt7I?oA}-TG91f|1y=g6WG*P*V52!yotkA$G#{*u1UnKTpJt!28{RKh z-lML}qF>0~p^2pNmndTcRBP|{zQaTzwj+_y(ac+xQ;Jy*9mc}<4;9$vjUx|^PNX>) z&`-8zBqXSUeKx~zDxNtSVj^gAVB{X`a}BsREYpya$DRng;SL*-uKpsWVjHu^>?9*EnBn; zC|tg(3ot@H8o{8)5trqysUosbTdE1LQ47gk+CqIwUTVlT8jaiK8yE4;IQhDCw#$gf zwm{1TP40T|vA_=e$v;B%aTce9_|R>Xam)XAKy07%G&n0>=wh%THRdokFtdFzM94Ot z{Xzz8SviOwHvvu~jYIhG?qZ$L`f zS)SO5DbM`LRPxlWfnHZi!$M8RwzFgvdt0-c?Y)bTS{}c@g!4i`8Z&GV>?v%F%p?Tu zY_XM;EM#ExN{uZ=GNe->WTI&?VI^LRXZhsH)b&4|S&DKN$_?HRZ0rw}679x{<7d{t z8+68xqrxGC`9O?zFXQfsIBs0<(D$l>iUrjZXx%MqR3;d89^&_{ed=fi?yvzI_1qFA zp?peIG?DAZ16rKcO4sg&#t2x0&m{+>wzBwSZPNe$+dNbGk$*1CQ#j^1&${|eS6GN5e1Pp~^0*41 zyTum5v;QMsmr*9VIs)`^|qRJ_z&bAxN-%*>$aES9$b820KHqwxYEprs?@eP z>Al4ak{?jL1H>s}{H8}$I;a|c#YW7-W3PAY#Z|h(+_dHf9UJecCQcmlxTLnvyWrMX zfIMh|0;QM~Li{Zt(PgsuAZe~t9Re1`WKUJNr;yO=T)t!64RCykWt*3(r7t3dN8k}> zaLRI6JK&=(csM-OZW75gvmJzo+5LrTIgdDNj3U4;t};SC?yhwJ=N*X&M8WD>f5q7h zApyF*$ww*H(^$njc8zNhUL->ylx0(s(j}6*I660g$Aa{3dNj4{LechT&~NP8gUf)L zk{D`He=@Zb2hqDt&p$lFva$$!t|f3gdc)iuHkBM6Qu0tQ7vYJWuYE<;9$eJwq{o~w-S*s_sv($#~1Ykq@ z#US~&y>39f6?KZ!+hQ%W;=npK)WtdWxi@iAk%wn+j)Ga!pCI95F*F~B93nL~$urlD ze4I>ba6cY)Wdp^qJJnz|BSvVmD3JOJ{X`Vif(h_h@G&1H29dXlx;je~xKp^vp?}5A ziRrblx#EZlUL(J>F$c&wPW5(anhg>-7`cT5*u`%O616zXVv0lNMDx9`s6w{R6ZVbX z&^DXj6M+eo_8_q&@Y%11e;{=uQWfX=)5w7szJow&eCE0OvTM=WxZMubf-UKQIKKk) zT@)f$Ed_+sQEbzNP8oAd;9j&+V*;sFhGAXy>}6Nnim6f&!9j;=eBw`+`hxu#>t>cE z=Tdc#t4{}wL(X9+hJhxQ#6s_1IGU1D4K1g-oFoJrYG;nH_{I2cDmE?lew{84) zMLNA~Oj%2y@XXBsDv3UwM0@j|Z*0XyCvs9FqE@c{?n!zHPtqH-4cHtR-Q@8{f8L;GVID_yx@q*!J{V?vBOda9(#8$dS0@d_b`QGHvP z2S6E49kWaS8fgjC)PWXSXWBVbqGfyV)6+>j(3hPAUVM*`L6t)_C<3ip*2O~wcUpjA zsPM`UW%|K&{;o*gFwI>h2PNn z9E@FQhc)Tre_1kL3m9(A66#E(m?Wl)n~R|xqcqwg2lt6am7oVMKDIVy&vu-wS9Mro z-GFcX+ETUv0I8o019E=OU;|KaUCW01X}RRN%z!F?XirATLf5#NQ(h{ZpJ5I_Tmm>> zEHl1qc&qs5EdKDuU7Mk6c7t}IWR}Rdw5W++LBvu~u6Eazj01Sgdq1d)QqK0%4O?V#ORQl~o2gv{=cKlB=#gEj0g}?8y6G^lo9gs_@RKc>i zAgsd4BW0k6#yKl;;x2bF{!xcSIZOj+A0*>$c9RMECi&hxL2bBR>98B%XK*N|t|Oaj zR(GR|-s14q6?hpG)M-v@12!o+)wDvRcAN~tec!gX_RcSuG+)MCr=53|PxtA<7yPOq zw8#UnocPG7{z@vOJOepk34vC7y4bZ4^4a#vYn{3gR|2qcGjKZu*v2LcIv1nYqI9;M;&BFZJV z2~o%YewaAf@;i^M$MX)>*RU1?15&wbRMJxwQdYJSz|Yl+qqnUR4%%RJ80(G(hi-~nUN`M*mAMo zlb_v1z(~N?gD*isr@_tb#^Cs^{$INi*a{m~b19`em$1*ozZfJ|v589QDE-=GUCsBm z1aZdKh>I{2GdvBF(2)LR#gk!<#Gt^Ezfn@pZRGiMlqUKAG-Gl6g{t*Wy&oYv4P0=~ zQzaW~L7s9?FY#EL%UCCPgt4|u1GYD{JCgWpW96;ov9)(&2j+lbVRX?C^Ff>!KEx*$ zIR;z};2!XW4I5=?5m6|pO`wLLJ9wZjZwN7h!{nQYxEpl4FItDG124bkp%8JmWx99N z8-Y(HXyV1jBp5f7;r=wCEJPNi_XLoBsiW-_#xOzx3tWQh3iGYBb_}pd5>=L5GU(m1 z*d2GegVWns7|i`f&j+qjtd;f-kIvjL^KlqNjVO?Fx)3;}D5}bqZ460?@mndd^Hu;m zy`p|VmdYUL{3z+j2qw$!(!m4wpHDc4Edw;R0u@j@A+U*v2uROFL-Nv-ge;^#FE`AN zi|DR1F;j9bL``b-}_n>qh#JsXzI0v{Vm_0P^H(CIiPyKkQc z3z!LfYCmDc*jzj%+PB#<`%O_PUWYU0k~E1;{(u`Fcv$2kX1;WWeIdv*1;8YXBAI7h zw3VX>Q126&rmkpqf=I1N9IBWEHB^<02f_n6)@Vtt#x(BOvv@+yaJ4xwrHiT$Qe7K@ zisv{^t58C9*TwcT*Y!IsJ>%Iv24)J4moo0!y#SDkjZxWytGEW$_5+BTW(YJeasmSd zRZMea*j%WQ>>9{J7hOa7xsQ z8~AtQYRc)Gs!rCKCeIz2uB*)n3o-DQHN*%Ef8JB@W)2~Avkn3skMiIUX)7w-&QmlmuA>+K(BfShX^&I#*Kc2DAzI%0p>gmDkl*?R^pd!4` zrU~r4yu?_7M2|@b>grkL>%)z>9z3UUC)1~@TeZ*g=xNyCpu<~-^voZ!gWanx$*p;O zGMP~drQflpb>rp71GWp7jyTQlsrpJ<{4`}b!Sy4Y{0CI$KMX&JTRkMP zBZ>#5YDJ*6+M4(wBYygP4#I_n;w=`C_;l9L)>7TN-Y!1X z5!s4|%H7-dVZ*GIw;(L1?T#=5&~eLx(_InJq#+3g=PwD!vl+w@6?&FAITMR{=mGD8 zrUUbfQ6@$aF(?Nn`ZwUIQbD~0fLi9SWg}+X=Ke#xl zymk-4c7j4Bn={5J=R7!fAf1MDwjP#56!Z{)w7~kq>Bh0ps2$hY1m1AU2-c2+b@q@u ztr|uCAOZ~-$c&>|pz-piOA2(@W(L zhXb~!zMzoCfXR>uTp!5ABPm%4{EpG$crPhi5APdjr1ilNmIz`hot;VwLjf|7&H5bv zPpGuh@)7PfgXTQgKx17aW~K%Bm)rSMd)A@JpMo?{8Z!7@_A7FDL;HKH?5pnnc@g)( zj?u2isr*EvyOz!{)+xr>#3~VGX82!u2^ySp%tJuy53~xZ0axSdp{_j-B3$>iaNG<5 z8x*94Epm7P(~C9iyo@1%$YDIGPJBD5LY`?h{I?RVv0+I>Qn(RkpCOv#$rMo`Y0uuM zNk^?-=D>GhL~231=RDZIvcc+>BN73LPx6q>#tBI|nXlrpt|qUPGd_d_d|ve!X&3MjCOa1S+jN~f-ztww*FLAJ#wBPEV%4TwKUKp|DIODekP>J( z_qity$#HM!@f<^_U7r4QX7VRdf)}pX(j+o?Z%`vCpnO$B2duWUc1R zzB3E{vm2YbueEEcy*35k^V%Q*UrV#bm=>9{JKk|rQ9I6~y6ix*@wZ^?sO4>(97DJJ zw7Yl!uAs07y+`agEMjr{ZVL*lK;DbllvS47{f}}=K-h(IkQ-RvYJSiMhJAQ7R#Qq6j?&#N zT1tTeyQPR3ICZgc*vbnK zZKrVl8sXwB&D_JvvdQeL1Z6Up$r}U)4tlAbGj(i38Ug2zcH%Pku;_pi8F|cwRS5|> zUI{_UZoRc;n3;84ydXVtpS7JAEO{Th7N2)UjAyZ%f=<9$6)XxXwEAwtd|OrW)1*xW zvK5rwwN{5#-}1MsMb*iewGoyR5GtUP3m6140ay2@L4F}pa!2roD~C}{o%JYyd{8Ds z>W65=X}ameQ(07P=OGMbcJTkhBCa?{&)gcZEpKZ3KpW6%GK(Vd7?$c`TS{4xr8QSh z%M-Nch46kZ8k=S~unmJMQpD?x;=-rG<*fFXMvf=B9U=em7eu$A3_Fjcg2pbCYe)L8 z0dPaa6d|Xy+2=OTlfX8*>{my8sq`k!j%hGHe0=N%y42B;!xBvCHXBYG2RYaue6sCf z$_8svDM9w8m){YHtSf`C&!Z#^wMaro_YAIOeh6qGg}vos_tIx&8;UlFFT+I})4PUD zCYvyvqy$}^-@4~Qv_Id%(kj9bsm-a3gRnhkN9+zd%5g+Qp2U;>p|O7pn&}k46ZI}o zPr|$glM~2~`X{D#fd7CUpqI(*!jRL?>GAKuWdz?oNq8t|LJ!e798AYQmkP(o>LaEL z#p@tl*Az))v*@U4-ytbVytZO=F;$7y3FD<$^5*IXg@uh*gzM&a*L9s$>O2WG6G}Bh z!)d5R8x?I0qRZIHQl3!ctvbktRv&1yjlrsr&*3gNQ#%usaEWFD$h*ebnZZ7~e+&MfJzPxOQU-d-{?P4iwX@Y1H$HCm*GM!@7L&hEKB| zogiyMdw2XnET|&^Jv1r1{^(=#e1TIk@R?44=T*N7cSQ-5;5I_pPIW1yj@%{XDCK<# zQSRYv6$vvi^R<_i2f>MomVKhbqKB)8!D~Un!$|>ag({G9QY!h1FtPw)W zgOYvFkqK4=IqQiH&)_3vM+lI3rJm%PkPa#)hFa*4=9q)1{%!b@cCgFd0lPfm1ZU( zJQS?bgVCcsOlBUM*D{~td&1+R=PRor%YEGS?l7v{%Xkg@{UT3z0b!PN8R1P%pka_Q z#^Wd>O6QJ|IBPMZ-K4<}|Iff>aG&651sQRZF|DI(hhh(pQ_=bFm^RGnow7COes)*) zaY5mNXLl$Xeo$_$amVq0aLcOUo^-jKL(ACa*$QkNU}4zA=5xhibVRUIH8p>0DlGYS z(>h*DRHA;ZMCv$kI_Wh=miaQ~u%c5nol-nOXcx>CBY@(@jDUe@nT{-|{ZRVn+Dm4vbFVQgt z9l6)-a+dJ3t==Ab753Ti^P`HI7gm`KeXpS;+}*M5a&62ylqhxx7er!!q=q23JQP~;*d16l=30tYlCpc$qSRq0yskjwt2-&nQn==Vs(3F)>YTD(qLK^ zwWM!M&pMwv`RIzP0`pkZZcnE1|tGpSs#S-JNOMaSo~rNa;D6 zCS;7E#0^OneL*fyT_IVqKhu=}Pb^@Mk@}`aklC(6ZFFByU%{Wr9T$ML_!a$fRsg#d zv&MqaJP=-2CY>>f3~lUgpv1K;BW%kVdel+TZS43)Ix|~>)xVmh$v7auNFU(xX%|sL zSfY}nq5ildEY)A)(yQ?hO`AmBVy!oP~)h6a}*AadJOc--;8$Hh20BhSn9kB(o?>s%F-4*jc<&&@k+E*m^u z6kbyHLV}Y(ahq+YenK>qcYkZ!P^pz{DFgD-CbE{lW956~ADMIts1*u|RKQwRJ?8hh zoB7n&v0BK7%!^>DuZK4UH%XxxLKZU5^tqE%^Wjz81z(`3cwBfYPG_!k#xJ}9MbFEv z%%J^PtHo9S{Od57NhE}X>V^u}qkp!^Po8z(lhs|+dZq$KsfyEd0Cd1<;H4C3yFm~D zg90q|3OODyygGJ_jN<7`|BcFe zLK2Uz@~J4v`EaB!UoWOqG*H_YstadV@E`oYbex6!s`wY$rHT%+%Tvozep+yTjWFFMLnbXFX*X!{MBMubegg6ZD*Ct0Fv;z7Zjl8kzmOSG zU_I0`m%L~-=+Q{dBO>qpCsii-)KaRSgr3pnvJP75JSQfao85?3R^O2`8AhoFdGvgvRgQ zXt~XTJI00K-C*a^Ua+ez!_;3sfHsi%&JJclqHr~%NU|`Uzf%^E0~(p}*=0kDX9x#b z6i2+?y!dpoGc|#G!G3bA_M69~Yw}Osx}u6z>7)3roq8J8SpP> z1TRg48vfp>#J2_vX$Jt^($r*lHBf?TxOn{T&oJlJjocqHR$ceF%-uP6pCudQKC z?p+*3lpqvpt#K%mot+UgXsu?rXkl%KI`q5dQElg9W^!u=xzjS@o2lgk3oCPVfiCd- z7CaYb08HtnmYe) zW_@kH>AUpcL6}b{O?~iLFcerg0N9%56xy4;a%H zbO3h{^}s}Da&2%b2cDD!^#{?5E-H7pvb7#mI$~1QuDl0Z&Fiit^n-PL8hQriNICAg{FMMo*Z z`)+>*TjrQ89j_T8*)71A>`tT2rEo`57fc~bP2k+*c$akLsv=YL5aeq2>c|%$4ErbI z%2K>5YAC6GfgcifR?^SEtk?+^*-*)bSbxG%pQW&1b}Qd3D#pWK$zZwcOAcYBfAYIUd-)E)F`S)l0Uj)1ONE zfKHDwaow(S`|{Fe44>7w@K#+Ahv;I&f@fvq$)>~6CopF4BKBv6!eU7ZRZ4L$N$|W@ z7Ed1a#BdVi7C-hBA6?G3CO1E#)#1-ju*|pU^uovpYIRih;+zLarXpwcSa`2`&wATE z95PC(#(0{^TSRCc=*e?!LjqW`-Ix6a-Wt5S%N^xBSxb!mNGU`weW*#(0#0>AcD5R1n zCYItg3}SjWlLY9+(m9988$vkXZ2`5|9*IU2BoKW5Khb~vNT@`vW!Yw|N`{Z-l{6J( zLTde9c>lV~rN4R3gcd`j0J`VeyoxRxOoE`IjCb%b0OkB3}@GdaaJq)j)TF~ac8 za9&aDycJG?m~0&z?ddgk7v-d=M8s26*04soBqH+BmcTa9p?TeI9)_x(=$@K=lxFv> zmRx*R(Jp=!;3;v9n9&i<&Hx^gZKCh|PFw&nK+eA!!u4zXg={t2w+}-S0q7swa!7-| zvbGES<39Y%iZaPiALu$E|EughO%mK!c5y!3$c>f?>^5&vAcop}4>UO;GEAJgwGiZ@!4@=O*`*I z*8Wws`*np|7G{4ZOF#j^VVv;geARQy)3U~rz)ne!oZtH~PbC8JR6J~QmFA53l_3e4 z`3$a?((CA4j0;C;l?}UJWutk?1VWIN`YegUhy^l-H^ses1!WcyqS=(EN--I{&3A#( zA27KhG`i4Ww~?GYS5^JxTvuDg-RQLLAIJ94h6;*o4-w&+6{=0$>|XmBabZlj9eQ&R zO+Jto1hPcpXl@sxKxHvsM$f=2)>~zHGmpg-pjdMhx2!cI-v_6u&+tOYu zCe51pUG+sccRAE;A=Hi7IIj`uJQS+ws|Lgg;c??hK6BGMGd1nt>Msa=F}YWwi*pLV zn0LHA9T2t-A?oFVR20c&dz;_w1bQ7=-|$U}2vKI8KdkP%vj-oRG)3P!wjh#Ut3$>b z3@W4;rZO##aTpDRP*pyPwtV?_>;iyPe)oIW_UQQUpI`VBsnIGIESIa*6#xwMv?|bw zKfl}AHOOJ3xQaSLpvwMJ_sIDuMB`uVY=Ddp`|qIhRzSwdG?_VUsE4#Vkkk?@5()-a zVOB(eE)=5mMalJCC3^m0y8Q)C_~jl-__PTVFM7lI3df0U=Nx>Q$ElRt+8ltfw0@GX zoW_fFPaI~zAQIWi>x1e|ymlg(TPr*Kuz*DXM85*g|K);GD?p<*|N~4iwl6srrFrj4o^n&Kc~II0}$@4INgIikJOUK)y~VkA5Ej3cD(Jhy*sDEKm2Nm z%l&?Gk4c%>>@qfWvtD|V0)nz&Q~?M3x=+03on_o#0ePyrcgqOP_WJ^iWYCGTT|&Gj z4xx==H_Hg%5NUledb+C_NF|{zFh(_e1sd)n)D~Mdlq)ux$wcJ-f#EXAuMkBK0>tZB zL!*b%yiWk4^PHbSQu$||U%nGlV-!9J7;cV_V94AwC?)>kMjlT0x|ayz)3ts;=xnmzAm(!RT_YO z9pN&+F05wxR3@z39H>_C-BK$h_|n+2GR<>!CpjV$CTuS6MS@se?+m-=x0C*fV8Gi8 zq7G>Gy?x+zc9RO%1AeB(-~P-lY2M?o8ii`eQPvBONH|oTRoKmoIX%KRO&|pIy z*T8qj$rHTh`Z+Jn<{Gh$6Zty-MM~@=+N>0>Y8EP1;j#2ISd^IwNgB_Y&rIPpHM}qp{y7h3`w*1FoYy zq6Cm#Vdai~9O^*rnmTt`^1kGpfF7oycb-03N(t(7^Z5(;-;8J}1B~3)o@T9Ewif~6 zl3L(5(@X&R1sLtIASZuccdTBo!BA_0>7K1cQZZ#?Tyfw3yGO)z38^)L1JG_Kr4bfq% z3%%sVECjbk?}d*GG(%hQL>MK&5Kc9_>vn_p>+{wK4ilP!C?d6gZL5h^wK8%(Kt2+0 zctR%lu+vBv5OT9d<497!b)iyV&14E18@04;0w*DxeOEwcTvg3_-fN6G$yH~^My-^Y z_5z{BSFjbub{^1@6Mg$aCqHrKjIKctZxVUJYY;OFSP<0_aq=QjORsfpvWWXQm)33RI;+weZ#6MeUhF=}4XXiipk?M$a1KgctW23>F zc4s9df*C;}t)3p6;wM_w+&wa3q&!UsM+_d`YT@;mt+#TzBS%mRuM*3D7+*l~bz=@} zEN5^U>WN(#Z>mX&w*oDsj$Q}8%o^5VsN~Z&Y5Y~TS8_MZbS%Iezy%1!CrWoJxW(_T zXt~qgY<^6=efFsb3#rFZ(y@+?rYa6{QYp&+Zpp?yQo`8=dsCD#yW6Y+p%+p=I8<#B zyL+(rLf2IoV@;)Zaw?J;ey=7?fttA@IB4lFdu7jw$$pR*EHwHbLz=$FN=_H#+fAAQ z5xdOLkP_l()2}zf*>62*+zgefFRkrIIM9eXiuv<~JAf`lnC=iq2mLVU-yIk2IcL`V zG6?K|i%ZKvvON}>wr#GzA z!ZNx}SZf+6*6N_IFRyW9aJV$PKNayhwcj#6_*kPB+Ph`XAjTC25_bKrb+cySK0_2Cp)8i8)Vt{(BgAbs5w9%aZFuJkTe8 z;bei&+=bOR(Pn`xBS2>o`8!_49_@CYrA`%CDYeInZrGO9Zhk1w*Woae;ERo$#V1e+ z;_SDutn~%i+Tv!u?#SjhD{zB`KKyh7b6V3HrPhEq$@LDnH*Aump`*Fc52WsXu!a07 z`=I*MUMlzDqvHd1`Peo;iEhDl$v(S#ncMn(htxXhul4ws(Rp z_mQ_sxaK1q-j3s!%j?{H9`!W$zNuFPW`(iQd8KlOeO*9+=5h=cd@FqSOMQ1#}epty~Q?n(%CMJCy? z8aw)1^?gE|j9sQ|cjSR{0|nXc_879l#UGWdwQlptyd$DLe?~h-u0}(r%bQ&}i}yr6 z`BqWola85D(#>YLOoeYde(3L~MUeL-RjNCuuqUwmt}?PV0R6i@7K>kC`P_ zYMH~6kAdt7-X1vvrtD6QkvbqpZ%H(qaF@Zw#!yEi+Iyz-MFZ)_|MycrIwpF5s#38N z(3dFgi=7{y$_-VtC2P;&CPv*)^9$UoPe|7Z2+5p@$gYcGH0u5Dpi54rI0w|{o&`#8 z8L6=fDs&3{DS)-1D$a$kJw;=hn`T%Pb&JJ$lHP1_LEeFjr#N~}uF$pH4^Q-t#n1x% z1uv3iG?V*GRNwrHM!;dNMB3r#(LqzJhtSZ63qMiuFtk)+u2GD;7NB{uv)><5hXutY zM0>o~rV`ggsu~i)b=w!>-|GBTDGj{8gikOYiVB=nTwYj$_auM1n(WtrgD71i4^ezd zVR)Kwq0=Y0p$+pI5o4M%8B#Nwta?qS7IgQl^$>GFP7z5}5>DQ2i((UQ@_)#Zg_Rzc zRRZLwCKhOgV*cer} zUq$UkDNG3Nfpbkp z+d?p)AVCexjsW`*SJnZJ3|)-AWmz=&?!5QwpR8V5)2AH`{CBL~huC^3&B&NJb`tNp60p=Ik zT#&3$*DY>%8C_B&+Lmlo9^|k~8Zvp5?tyqktFjAOl_LJ@=eo+CLL0p}w2RwP!0Xlt z?@*V1j*mS`B+Jtf4`s*+gTwb`b-=mN+*BU?n@~lVhB3ZJe4f!A4~`L5%>tNJCAF zqiyR5-aL;%OPbJ-c}4`&9A4B7K#!Ph3Yn+ke6)axl+fFck*}>z zp#T)X?Mc!?IX+rb%Hg{KZZ#eD&Bb_PN@`_s^#Ym|w*L~t>2_=IT+!8X99<`mZ;lX0 z05UgGv?Fhf$1WZJe60-3CtKpT$(f+({vm57u*$6vC2_eUH@W2NWLO*7 zN-uwU{XLZ~aW>CW15$FbW^n-lt~?Vj*NW2F#Fw2jo{C_7qEn;vOAvvI60z^?b*_D( zj@2hKaz~=*Qb#lu$0ac5p*?0uiNT<`>L_@Y`B~MT?paRbqHX*q#Cb%-3UZ zb~2IypE@L`ZsTRa{<PXomp8WU*c?VO2YIe$ZAqKXw36`+4@<#jbtywkyfRoAF2pc*&o2HXSF2Ly#wm3xR zwnw1W5H9736Idl1AC-UnPx3t$?GM7t+diXmAu(arfC$$HIGhW$?Z~V-k+o=UZ#Rh7 z6m}a1vX3k(Skfg5NUfDk*%zq6Wwg067-U^`q{NTT9U2hYDQkwD>ksd9HX)GEPVHvb zfD!c~<@xi)GT5zh2LH3v0caqtLBD?*)|`q4yg@egVU?gY!C(}4g;Y@m5(Rb>P*O@_ zLP1%v`X0nSiM?ZFC|6v0mATu6rb1mKTNg00;d0(@l|)y^R^hjXVJX5AhPbwnxjN)DPv)iae5vJlHSTykmC(YurM0QtxoJGb4SFtoZU=*mmR;!G|UI z_pJ|_`_Fn)|A^Ze>_WBU7r*VXVCDODhyut|sDn#{IyrqP#K~Hqo~SPX6buvDUzc6f zstcS_TU}-g*KF!5dplj6O&QgUMX*XQ;*HrLPQ}*ENjy?Gt1Vvy|C9z8xUqeb0o9Rd zM=)C)1ZcD&+HTT}tUb5+fzF(mzBbxB@SEMH@l*&P{aE7yVy*;3C+vk<7rPzV57rc$sDC$D4Zz8Eg%3>`BgV*bHW z2}n~{$}k|Ff|&Blu+blh_^@qPQ?E3r((;_- zQov2Ig-D(46)mr+KRb-%8hu$gm*YF&+fuMsOXuH$CBtTj`h{&)cgK>CIDz@=XT)E( zw&qtxXwbSsy_ZGbAJIUN12U%Jb{zOIuyZ|WoA(BjcYx^a8%iJTKJW_aGMs30-&{q3 zxwf7ZSgwNPMSpDv8(iz&*?6bi2C73wNBo{nEn0rSS*(3i(52K0F*%wX_RTwn`HxYH zW=B8!Ie-q~eiE>8tZ6JJbfJ6>w5du3!a$loT0QRd&8OLUxk*w=R_P_uTjGH<+o@k0 zM3Bx_>l^6ymk-AV#)TRT9Da)gpQ-f?(y&;lMC$HZa>Bw>A(*RHv)p!54=kH>2LXFN zOBF;sy8`4Ibx{TOxx00)%ocduvUsth|5^ff&XUDpK3Me5$|S<@cZalgsr;zlM74lF zic$5)#<#>6&1!}EWRtEfJ`iTw9Z_|D>GtwgqG=1B@8?Q(K`8m-tbcMA{2X4CZCrG$QoAKCWeudNQ8MTFah9LHCrhB!cQ&6Kb8cg( z&w!DG>N(pH%0s{m=&xAH1euh#}??a@Ygu0s+B6MYM&Uy>| zAu<6W<PV05&V#rL-m(Q1X>oTIV0IUkxTJ7ppFU z1Q-sBqx&1oP@8_pCm_2OBvNW$>?=#JO3^9NBx`A#$O7CSHTT{;^@w{#q_Mg=Qf~leTat*t#N8dnaKS2@wv&$?%Z0}5WYM3oG(TInn ze&TyTK(PlbEqfK7@0>wh= zhOZWkc0_?z?KxAIy$~gceQ5XZq6LFWgWcJVUFtz6Y0gUB~aSB9#;OB z?}Ukzp)2#Qg>=)CZf{h!St=dr>|E4xbj;UM+R9P-y9kZ$&a!f>%APcHM6#-~1$7qI z85Ar#{OF(v4>yp|#JNZ+>cR`tTD$fOC5 zk!B_L1KJqj!68x_4`EE>4{>NvLjIzWEDscRNMpun)f*%c%RRekZo=dy0E>04o^PV; zT}t1oRAKS1(1Owu?0>v0Y-@|Vbi|9Lm^hiT&H&MjCD38iex+i#ERJZlw+Go$Sx2^> z-KHm_CC7VMevsnuAOfW1+wPKA+O16}rSz4j&STs@P=n}lNZ;RlKNYelC$q0K;Ci2z zKwIyOWfV)a@WQYSBGIwphSqhpCfCT0V2Z;^e(JrdIXG$yCvwZUS3xwrbp7P%h|Sbj zo`C*1UJZrPA|C!V#gy$a>-4Yf{=VfieGv|nOAPMV?AygJx`Z=kZm6|EM}MTADjM(u z0ErZ4W}OxsZ!kcol0R2$u;16klVsYI^RsPk(4CFzWWx$KIOqs`HodpXGW^__{*o~_ zSFvC)L^d7pjfkB6!1*jv_?)2aKDKZvOhxfim3?4@EXW~r6y(rRxh=n(tD9ON)%yAj z=%(&SMW5^U*HGL24(!U!hsf9;2D*6+k$|>6;?)cMp?rYS9sNezgbys&|DtcPHhV?4 zx+=pA4^*orLZuwdW(%C41A|A9G6DChHYyZ;J5tq)F8wMwreyOs7vC{L)p@gLg$tf-Ah6_F-R*ce%Cwa3+HxXkD=sK~e@8jMC zu_j8YrQU$5;wHoaLpH(V(v*#`mO|()ljAE@NyWY{Qw-3fGQ*LoL4I-&0~5E$ z*%whbtj-%Z`#$n@4Hv&&$kE+NqenkC8y!Mdm}zkS(_UV^r}p^#O*luQ>zF4PE{El+ z?j&mV12_`{N!Jxjc8}9YXVxC9OmHxF-#fg&4LGb1|!Y!bMz1peBaORd)@$i55N~kgPA=1BEDaU8YJDZ-Ch<_iEUFF z%d16kq7zLuFP;MLaH}G-qd}rG(+#TW5W3nhbcE;ct3$nm6V{)}wAMR>6QvsogBjr8Y83qC?#0u$jWMBq%A?LClnOD|%MI>v^X8ENq_A+s# zuIfjG5<*St%R4WTrew)TdUwMdsT6Cr@j%>;A)NqjcP5E)F@QlCloGj-qvv0c*jm&S z2e(Ho3qjYf__Z65|7cDZ4K2Rc%G5}Wh}$-w9eGvv zfebI9-viXPl(Hi!InT?}+M`MK#9=zO+x;rYKRbco{XVK~TkQ%t0@!0UsX>DinpiwD zxoDf{r^k(9yKQsMi(O^u?D_GGB2g}k-KwWfloscp(!|N&UTyPjbf!P-mjmJ3W z1MQYdvvxf(!8*>6ktHjL$n=5-j49k{{!xZD_bUaVu$1|XqOIP;r+^9bLlW&TO5e8|6M#x$?bcV;zwMOB34I@7 zm6ibqBL=s_*sB%xl36nCyum*7svtJck+(2nq70(*7bF0#0bo~92ZDkRZ`%k3^y|mwp@hI_e#rJq=~D8UxSoYv}uQijojp{ z<_JqhMXR_9@A?d8ZV$xsyyI!0f(1)9Q=Cfgnwn6EK8$m_MLbIvvbmz+ZYyxzsqzq> zuT=I&wYg@haZ*rr2iB=!RuuN%B6FZiR1bh|i>mH6cY zccZXYQ(Bf-3eHzQ zK^(_PrA={elPUAnFZp*c$WyE@7SX=fpPHi6N^C{3s!Kg|b@gXCO>fxr4x93(+P}Mr zt9?2}DqWC74ssNc0k8Ghbc{CX8NoSUYoLjU5REt|T#A#+2O_q1?Mgg*gCT0IUO;zO zEPS^0Z z)K%)+cQv<^aBTsh+`)@^DR`Od47V;cVRiUN$1kV6D+^fFgVf^&Tv{HZDDtf31p@qP#IGb%^Lu`KJ2qQV%4tAKa zAkqIKOlkaVnVNt~f)Pq-R5{77306tC<$@f76+-d>NWz4z*XP!hi+k@67>HMj-)nvq7Ee}GDwGteth&EZe*Z{@i-mwjL}`d z*RnL z;x{%RJ4X8BXome1R1vVEQ8mL5j|IgaUKD=6Hhd0R$fJZg=$*W5C6fMjO;soxI%ZR` z(Bx}jm(l#Y<$J~c>xxs~qjuF2*}R2Bl0uock+c=*%FkrQJt0ow&J{;rBP2ogz960- zSgvY9uV4kKPLJSO0|55w89s#i(957rjHxxJLJuphjxtj%_}J7oyGg%C8v5#DL%rhM>~H8m9c8a1ArN&Df!|PP2jZNqWz9wbwAXH5 ziK#Zl+|m`QTfy1D#ST8Y5KhLXC0wDRmTMOPFKlUH+XL~U7Y5IHmK~oEx}D}nSWnjW zj=5)Ap%_1>r;o!mW0BhG5;`SlyvOm`icM#H?XTi5Vt}LeAW}ho+1i)llDXh}6Ctzc z@V_QGuq<3s!H4Qb3Zx_Y9hO0Yk~a1PKY@2GsvHULL_*x9bM1wfWcLt2$2UrMrd-kb z==Ee5&PTo;`SEd(V6g_~;asR>)1FWNiHx-x#(mn2B+5vV70I`d&?`RA(Ew`#m^+lg zf>7G)I99^4vTdtqvm&`Mjv=rst}Q~t`I_B66GGoNhhip$yFU|fvu}jWsxff4+I(Og zp{Oq6uBW>0K=K?@0W6P9LE&gTfCU;6itw)cHwl60if%9>h>!!=EhPhQg??`hbjF-v z+DI>C_uIMG*Di{CL>&;|7QM>ilI6!A7C$!qi6{`mPrCqs%Pyh3%5FHr5byS?j zM8ADt?jW8#lBa|JQENUFD*s4TJL1j$hOjH?On|NZb&n3!;LGaM&ucCxQ%H`=S?3zF zL})!kshJ77ylh9LyI>&v?6CS~m-nGCpwr-mHAs8lHV^Q*R|?1AYQn#;xVYB`0kZ+!S4Pmw)r^ zEe*eCRu;;}q+5IJadtU{gIY4IXE9F_$}1UC4Sfxop~Z#b%Q973x61HUewhH?AB^WF zF2lGoaJ&^`muAxNvM`&XF(!P!zZNcbFZ^+^?fsoqQQUtFP`t7T=o7mYOVnl2CZa-bQHEM@lD%Bd3zb)$}m@uRj z$Ze|qt#^nNY0-)@vZ@REkW1lX9rq-9e;F@+xWK0(30wDu5VC*_M%5A$_KC^H1)Vej zQ~Y**s=AS(eXnxeVuUFZ_Cjgss*(p0o}A?p-uQz&{ajonEZ~g=XG9{|zHX({QHJ?y z;qMQ|M4CMh&8I1mX9J?L?YKc%fxRb9*?>$#NQds0Q#+z7hXZ@bTz&49Y;`R;gFZr! z@3U&dNMeJ8_8KC($Jm%q5bT&SlC~%;!5UsH#NC|i-POqi@QU#-*VX{xeaELmZ0Yv9 zq?q~pL3oOXSzW7+LB(n?`14nHc~n~u7tr!sgB3uvJjnw5V4Ub;*|}J-_vC(oLB#Ch zF@5-eou}w&Xd^gQboK;!v%z+TY`=#cBBAEH7ILs19IPN`_^_9{le+~I9Jq-Ti!AHP z_knes2}^GO6YbXp(^}S(YYJH-#zxnhCB6T)hMcYJlSAQt>gvqH^^;AObhn$gcB{Jf zwaK_%42%gNR)Z z+PE&stYxPP{QI?Z+6EcH_mnag?kZ}{MJ4yO zZse)FW6W=BI2IEEsqZVugSdQcX{ZPSs37dQXk{FZy)qLp7>3jy9?W^JbVGQZ3w@}} zX?Cbd+pO2iE(cpvXFzDg(lXv-HxJi0u~+OO<2$%eZ%95aZJ>VQwaRseNJ*#y!b)t6 z4C&~;W4LF6Si7<*Da18P^zs@!4WzJRrBpl6sKdOkY!5By5BlhoZcw-W6B91J%pp1* zX=P>tK1yqB#U=W*k zxEH&zkY~$)6k?ZM(Jxh0q&lIAe?|0?Z6%8QDXfAYb+GSn64LqGa><&lC;M-@ro9JJ z-v6{u=j2b2$5J&D)Y`P+fY-}(^}QCXQ2SDS8af!krZgbfxT=|5$qjuR+@;sM1RtRd z)c6}4KOvyJV$5=cV)rCpC)v4@j;Fg>D44fAIJj+AO4HWMFO1yPY_mD9Rr{}9fAQKg z9T=s?5N@*fp%Z`auiH_pMm(HYz9ah|v1`LB!Ey&KWBccEVMAN?ba7sg6?kh|2co)p zWtojXsLGpUR{ySrQ#>spdE8M8X8;IEyCl zsIc17$Jg>O*DX%rxBU$?S_r``miGKE0kd;QHMp2xHc{MrxEdi55kEqfjlM}dys4D^ z6SbCh6&RSca+)Fe@Zi8kMgRr+Qz&GVf7YYVA)-hVO`89;5_NC+*etA!T?Z2XIt#@oxrsp&8?m!q zeZi?GBvFSxv7Vpt8&|2f8tkbbhrdJ_Ive>Qics}bEVYCm^>p;e zLJUtBrPp~wpi{5;_hQ9rP6Q$)4WZLd(s_IW(CEu#Ty#LV%{2ySS|XbgOyQTLv`}Vm zd$NiDtjpaaX@1-1xj(geo04!EP9ny#Y(Ef=>0~dajJ|(YKTIT*@A#z#5c6Mb z@aqq%m~5g*Otc~%MkpIpO%X?(-XANscRqJ8u0fJ+9J8~Zn$zSG9FRr>au+o*PBOue z#uja(jDYyc1;I_*ZD{45+XH)*!dHv4#%3?j?`XE zJUl_9E?9>%GP+D)Zz7DnfPE_9Z@IZ+8tE^xnL3$1rJY^g6 z)&>UDss8?F%3S~QxW(U-Y}p6lKBz?xfwWL{_4azg!ug&^Uu*)z!!KcLAYkq7h@41( zljeB!DV)kd3_i|WDEef^x^}2tKEf_CS$e zlvv~~JD&Q1F&k0c;Go08m^79%xO+3uDuTP0>+1^yiXRdL+>~d8EAGlFGA#m;t#qzA z$M=I6H&vF!6_LC?`M-)>;VI<9Y5I=D3A9_d_WwX@TMH4?y)t7o284gM#>ls#F47J7&9-xY2Q1!KpAA?s@m_|+R+>8}=!k}+S4diflYgZ9+QF0MM6r@D zn2H2PJbxj4DFw{LM|sx5(!RR74&MplX(ahNj*y*)$Q^Wc7DNt$?r#at0nA`It-J0~ zhv*se=>;UW+Ru<_ikH?y1YIC+xKqm<(afq5IvL<+Ww5wgrCUnUlzdnt95MsJ>G5S( zPXgTeT!l&I^!KGtn#aL2{l$h=!SwgHuuYRgi;^Jb{7^$MB}{1A04@l$@mPtKA%GZ& zUlf`&z*Ln@)$fKBfT-;2TXFbVd+3!i2Wo1PumoYI+?0)E+W03ekamwyI7E-c?{7lc zI~`au2b7JBzs|-v&N10%2Cpe=(`ix{J)*ZJ#h*f_79Hj(h1+VgfC-t@`2iW%4)Q)A zL{YCm{8^}bW~eSNK&?sfWnMpn3aP0694k4$CubihbZ2#5W!Dkn@B zRJ@j0vYdDBQ6b%1!;Umb<8cX~o0Fais8WbCFBGCR4}IlRPUdg)Y&mBND$kHpk_VvX z9*NQebq&gzOm@nzsQc=8U?cH7>j~r4w$H$rZVqgnGlb=g;r5?*?74P(c!qF1P^0?Q zmAnR>}OBTp!oiPxr^W?(2LbN%Pp{%s+MDV;&dvJ+d{2P zZ(v{~l7CB3^c6*C0qvC4+xHh2Bzz}i7m+w?bYpWERTMupo}__pHc3o^t-bmZh(0wC zY54@3qgivTz;XjddBZn!opO2p22dPO;kGTg~sczACUz<6BlekWXw6aqC} zl|GY60cR{aR2Szaq)1&tskh^rOOYcK56gW7C9tEe$6s7f(}A3SeRyPG@@bLK;1C?& z5AG7}A*5~1;p{3>D_{JCJH5rGSj*P>hR_k-5q6{m!KQo(aKehO$7J8^x%$Bs?Ehn} z6}X7Dh_dj$I}bR&|Ma8=IdjDQj4_Z41g=ZoUv->S>bz$M+hD!6u<%zKS}x6+Y1|Z3 z?T8kECxAXhyt(KwMLEEzOEu*OvS^$a4Cu4s2tS`e_QcL4x!Pp;rD&F2|1j<3^=n6u zb6sXVCkg{J+Jq@SoXK6pf<(lrxLeom5?S=9$g95&O z%grR_j&l|yOE<8W^Hc*?#cUDmD1t$ClO^{C3(<1yEZ!k!U(ej7_@61k&v+VUS&8p@ zhA+Z5w}&N;rNRo!3osO~aNb_!++cVz>B|lV)zmhsF@;zVqbYW|DiUbrOh}QhO@5|~G>KR%5YpGPfQ2lN3n2Uw7 zUZxv9pxQj;F=wF_qkQA@wsjOej7+ShOev`<8#Qq~R01WR@};tsqjs>i zyY8u}z{6=-{LnMqWV5h8{oXa15=i|K`Oy;Nr{j43BWI1ge4>CrYf$`xPi&Ts3YtH|gj*uhgo-xHOVFJhbRB&u|IVn2#X^@dG!@Dtsd6z| zXodjHJb{!UOW1M#y%E~f8>==oN}8vMzW5#fFThVkiy1?Ferzkh3l>*BrzF)NsVN~E z%ld~!&2!ccGdM92jU@(Ao%moJMpI<+xy5tp*td-AxCC4pdcf*($N3Q4#AJJfjI|vR zN~&3ZkZ->d=2j1s(UQU|L^=r;%>m`Ul20W26~;%X9<+(JV@>_W)UaP{j0<`gvcNA+ zPC*8VH7Tjr;iC&fqUQ7~0|AuS|3gb4#qbxK3v5ybldEn#*OU1y^T3!U1fkor<%rbQ z4Wu1(&1fbS9A7>|z}@Kefc{`Ip=BR>*|cWe8=p{GoxN*L}db!Hw!l*o?7=7ocNfine(_#8B^j1&*4Q zJ2w;XePU{yi1AA=&9zO+P72(dE;7`|5qyzn#ws^6l%W`1rp_4c*REFEgyGbdx7$nj zv$DBO)UO+ii{Dtg0;f)nV7+aFDsjJD+b>D#U@0<-zK(un?k`U(g+gcNRCC^#41;{1R#j$p9P9#ZFg1_m_5sJd3A7Zi@LJ7azJD zfu{WfNZKp~>vRbfTDXqihzZW_3C)NbuJ7#~8EbGKOn@fuf!O=F{xJV~ZzMDCbuaeF zVP{;~Iare2!?R^rQ=Sp^yIwwGbw1>8BMH`erLO&`9x5TqRyj74L=aP&-ftX+Lf#ph zo7{OQsC}rztMAF#z(_T4=15rn5T)|fz@N#0b3w)l1JaX~I}@Z7J)1@oyWZ9{7C-MN0E;7sC~-##3>6?kLH=>2339>pv-pR@h^@0ywbt3_SgG^MX%2f;#z)#snUP*jiQL`hNE zrO5Euz;pP&Q=Wf8<=Hnr_h>4yC}LgqSyUX1%mnlq>qvmx1l-`+&95yn9Hazt2!t;AI_LDww{^f__a*hIe5;%>i*J z{6_UmThf7O?uc}qvr1r~Tz%75u{gSPi=&De1a5u&b8mWt0G7NRy^gOhOd6FpTQ0L6Cgvvg=-KC#xjoX@es=FXFg zT%kyr1R)^-*J0a&TN;*pDiCMq4KS}9{8IDxUgFkoHI(#bn*b+OebpD=aM4NdVxVbLMl!%R*N5;B zI^C1?djez}p--jI=SIf1x9%R?#C-6=B+Y^_ph2}L`jK;<0IRBI7)Ky>06HShxw7O{ z0xk>qM4lMieN}NwCPJ87F_VDJJ;u7L)S=-fnMOThaE*f;s})b>qaIgEbPGx9>}6W(CAd=^J6K8 zETi;-H;zZJhSWiE`yIjb!C_JREYi#-(xfTd26=%%jkBKFHp!NLf3a#S8g_i|2(FoS zt~_2_kuZm|AS4u<=2IXby`JyAGRuT&K67q8OC|6os)r6(+ERqvWa_`rTTO3;B&K+Q z__+XtX8FpsT+3?Fb>-9!2yE!f&G?x0EhAwev#bCSf6mXlAId?rWP1%Bj1|czKY4#@ z0J&fG?jJt{2DHK64n#rOBa7f|TjA+0lhXszxw$KuPr&KUE@pRO4z~C1v1Z8@q#lsO zAgHV)Z$PCxg-wvT0HG}7ell9Vuw^+qR0IhVbZQ{fzQW%3{J-=A+KrOGi~iG;_5<|P z9t6i^e_}91KFZ#1lNxQ(EM?rqcq58uDJIU;b3uI(pQh4 zsFP{)oyL~fCs6+sJ77a_BN7j?Ljq=w(}z>%AUyO4pzSYMW^a#zmf0$J!dHXPA50b0nqJDJvMhB>{KIW%P^@mHY zk!iQ`1P`{6GWMg)wih{^7X&!&F=SgUuO07sTm-A zhFwwLtI!Ao)s68W2gU+oGAnQM&QfJ4@2+|BV>B^6;x^>_|Y-S%N+Vap3>5{)S=VTnrY&HA<-`qwfX+ zaWb+`Ao!yQHffX-{`O+FT}nU>cZC(3!W^LqTwf=D08v1$zrlZIAWB8x!=OKAb6m@5 zl9X{(xKFcEZ zCMb*|;Iu{s$$={i8o-Dg=^L>B8oemoaIV}+`)0rjB)(Q@)mI`$YNc;Mq{XTP?v7E_ zB$^@C0+z{)r^-w6#$>We1KC(ru1YKB7A7PV+^-F`&G;o=KKXgqUgc4KFE3Y5JQ- zQ(4%jeC=H@n^TVUxaNSXREN2#T2JzJF{6AyPp#jbFn_LOb9f*hYcv8 z9JBrxK!)MQP)(LC7@z_=19-1&&yEq5R%6ugyO@6sg99g> zoD<*(O5~{iht+x0YPDPd!SF0Lsz_26m|NF9_;|$w_MHeRxT{*Z0+X;RwXXY5hWSTo z_El+SbSRLt&4}Ug#sAUM9s*kd_oy+eA<_wyx61aO6T1Z2!z_#eVHd$QYS6JKdE*$*Z z7TVZs`Yu>4DK~uTvdTWiAGfAV!OQ`LL6@U-Cf>^;PX03;OlZKleClP&qaz4HEN~-#&J_ zcRKS{S^44F6_GATG1@IlmZ&wwlz z4{h-5N7?f6eUP-%v|Jj$LAH9+tz-7_o}Fc52)P+ZvxXeP`a%=+AmiE%WY@c`H-_sJ zK!&-QRBM0o>Ueyg7GV;BU^0G329cylUZf4+=R~=ct3}LA7re#j##LuafX+-1=i-2k z;Agc4Q8qE#B#f>N1Ioh9!QI*80MorMMOk&YZs97^OTy)8)XVBU{RIYtta|IVyD)}q zU4GfUP|^C@B4^;@&Ubkr(;-wO`fmj7`*cjkC3>AhrLVEPX6+HICz63XEMqX^#|qYak@!~R1|SV_ zqcKEvnD-CwTHiKsb#^@cl8^HBZi$CmHspvD{reTFu{9Ks2`K)=KZ@8rMsHeY>}=M1 zLk^!ZtVA1nPh8MomItO7e64gl&!uGAm)T8+^*oyIaa4m_09p!eOFt% z)6+O}K7gPfvl{Njy4j_SmS60W&_hJ=qd7$_w?WxqIPm^3V-Po$+5+A6ahdM*KNQsD zQIl5py@A9)bL+6yX{eB|Mcoo+a%?xz-GO<9Eir+0IgLGs{QUO>LPZ(#feD`K%tsZ< z4BuCKIR1w~xuKVb8O4DU-PK+!39_d7UxZg`PtKcEl?7koK_`ONu}ntf8%@syifn6i zpc^>w-BrmVM(X{jRsos_pS~uP)Z;(QYnv{wC0{cE3?L zdBmOf+;a8yP1e?VA!~MkxUfBgXwyKx?1E_^t&|zD9v$rOhK<{gwG)LVu9q|=GAdf> zHC=Ac_jYc2PhPhtMax|UHI~0`3Xb&4Jq?qzpoBHUN?y^bEa8VJo6iEUyQ*k)!3CAx5<`_4*-z0jGEeskGi&Reew4!*W1pNX>8>k1# z-LS2?xxEI`j25*a8_$aouzODucDv9S-25{9Q0DkEVO5!jd+v5pRpx#yekG(-^kHYz z+p6El1Pa##^S5{=rU76;2X@uT^dy^@E_OwLe$<`~KK+dtjZT-f4fw?7O4jR%p*bjI z`1b-ejq)+@qdMoY?>J`QArV(!A^T^sq}3Rm>`FVnj<(8pPvHx_Q>Ey4QH|1#UqXRr z-Z5r9&C49*B(fk#ZCOy1m?$w)SeE6j|8IUssvHp{ZsqN~Sh$ zO__8modEcdEyx~-L-wFEV^g4dl(weKQ|XIZYUY36W$ZCy{g}Ho&9kzYp#44Ji1OzF zGyRfN(>p@&0}FMbh1d7Y52C||1|BKBT|HQG0vd4UrOp&a#aCIvScKP#C4)R&15`zS z)60$2ss*-cobiX!8UpWZFgJ}-k1K3>b!=(+=Q5mSP(=EX5Hh9Cbbu<>S>;!V_fN zFikt88yYNdBku2XQ?^iW6lKO5;s~x0Pj9hk+VW&4v=^)+GaPM|Qs#GF0{0ta*S`W$ z^k-JZ7nT^2sKG}CMR_~6F(r4?tzE?msy*3OKY1O?D&neBVfGLy|C@>b-AHqc-7OgY zTe-sDCw4kAN*REp45U9IZ8lINzHo@)k38{tD>ZMg7`EOyt1AP1?-nXLZ8% z-~&AGP{8)axMkz@bzmD5t{e^pw86&cS&S_6$fZybpmIm`zgB#|sSb-8UFysUdY924 zA1yuw?MfbnhD3gsNyQUa{`@YucHxq#^x`MPCN{`+-{xK?i01~_`tyP0?_*CIV)>-& z@NgOCO&)lO)&Z53SvX2f zbuSju4ADXd1o$1LL%w1YM(y{OUB8ue1K&`d(}Mmi60ocIbosV0=0gCXrcIt4SgHyY z_Gz|zHZMe&9GB#5=!DJsY1e>XQR`W(bRQSUgCV%atUm`nc&o^k?Em5JzqN_*!a%xqlV*{t)Y!{ zw*Z%ooaCpPiu-T7WS*gVg~u*zi9(e63P~3DnZVQ{k6B(UdSdB2BS+dbqL6TTLU=~;t!<#6MZmHm_T04HPR(0)Fd(r2nE zN(pO%+@TgP!LwRwzIL-+CrIFgTFqbFBTBh@QmDuFIPdN(PMG&8H~^pf!3K}Cex=E~ z%ymj!v81`)oG3>ce(%|}*?*A#Ma4V+-vkHpBij_;qra)(!=f+``kfjFt zu2x@yagXr#i*bdjatvLX%vYldoJcr`fZLd;Q2F&1$!^+GlA!OEYEU}cW2Q!P($q+m zjaIY~t*zY|D3v6dlMf+cRNAOhs%z44$8 z?c+9%5p&$cZZxmLG3!sCVVbTcjw%tW{4=SNwC?As*ki#Uqn$34YTX$Iv$U)Y?7zQj zgwN}WB3rvnjaVafq#KMlcCQMv6FfRP=t^kOAh(sLJIIX>@D*VNMN)PZQ^Sf7o5I)s zZY0I24PaAtjf|s754C0vlu6)A7n4YzBT{!ZOlsr#-*W{`0af5Q>H8c6v8eK(r8gd3^ixx1v{ebw%cD~ZUWSk zsa2euM#KkYKGtRs1OpD~BXMaQNbBrS9ms%))@YLh%rEPAk6>GX{-Atr7~Fd<3ofq! z2_fkF;X2&S8-~%F&)p{Ui1Ry0`K8A}eNmYgM=lrf?0y^%5+BBgSpAIU>c33|MV6Yt z_<3l1#RA35B(|X@mf%f>_?WO+IMHn;X}ahk2-%z{(g32Z5>(!LUMW*fp*XMu4(Bg} z?o!jE%0{y$Ve#F)$^ZRh_Tr|A3cOc!0sW0<=#U%n(08dPr=q@9FkF;lp;1-26J?g3y5BXB4 z?+F?(A0yW>xBneSD(d|0QgDH>$n0k(A&qJ8@n5T`e|HLpkcstaj*1ZB30KAx=QqPM?Qd(FMm$DD0{A^(Jpy zir5JiP>3`34XfGopX3ySs5&fGQv~m;i~LvcG)zi1D3K#RSy`UQP8B-o!h32;UfpH3wT;%fCzNXjBwtkgQOh3lfdCSx@$G(6 zPliG$%Wa81?cfxaPUarR9=>66gQnu>+=E7+%&s4e5@qK%$_UQn(C^mE_(I_G$Lz`eE{7JJXmtFlXR*=;T zu)4h|7=!REFxX~ITz?B%;z>ncct(DN!lu(v@hA-ZWNrjUM@)=cW>iujaI&{`1Pxg} zocj&b%Mz^6rZYOsKJ$;Us3@u2+m}%_r*36^9Ngw@Kpu+kxl@l7>}rJP|3PKjO=S|j zDdYQddq+tG|LmV$u9P;&iNB3YLfNqd`Y^Uz=RK{7e(Rz^5GF%Fyo1b*BuN*B7Amp< zp_Wm%A`)k$;78ZS4Gu^oTxl~(1kPCIRi`JzLcEr0lsQEz_9#~4+7RegbJDW`YG`jJ zMD*HbX=jvaO^oP9!6B#t`4WD+5(^_Et3vk?B7YJ<_9L(#U%LY*ekHW;k7!eQ{-w^x z4+jIQiUUb_f?_!UBqy;9(&a4BI6nSK%6v!wbhFx&E<=}nzO_uUxAy*rK=0wh8UMge z{J&W*K3J^aFA?W)-Su(~8X+UjTE%#bSO}IJA3)M%0FUg|=Bb(0tY=HQ4BZ7Tv1^Y*xKA6HP9JJ9E8+AuKr|O;*w&P08*h3wryBUQ z5NsA%_qpZ%6SU_?zCe_NL& z$SqDjmIISFdTKapVy`dgpOiOKAIS&`0ot%MfrpjDyE#sEY~N!&0h6XbQER!Q{o26p z7`Ldzzs67}oYKn!M#iIpdGbNzo?QrIMeod@O1hozKj+AqZOD(dZX|NR#oe9GdrI!v zwD{Ww#Jk?i3*4;?wssk>h{L5-GUs*dgTjw*a{IlojP#@7ysD|ZnMWw6!(ge$n2griQ2LP=WVJRMb4F}iby&_-lh)XQqW51Id(k~Q$3JxKjq;sm$jbcn z-4XGerY4XFbU^E*MYgB2MlG+Rtwb3Y`NgyY1l>Dg98sRhU%k^>J{g$2kPfD@CUU$>1+&YCsw)t|+J$HNyJmGgPay3|`kyLw~$^ zJ4U@^XCN1gBtcsrJM=01P%?Y~Ec}`l)L}Q?$6#I2@z%W%gU5_dDeeY|k zy~kKOIIVzL*G_=km>RJhXu!pw(3@&v5s(zix{C%8{MEcN*T0D9Y>3VEBpHa#hG3W! z?`)iM3ac^1ot2s>uhRk4Ho7SS{#LxviEyC=_7YkUo_8Rcs=PxR0l4~0Kf6mqUbX8p z=fN*3Gey79K_Mx{_ZSltfTO%4roG&cv{C+{IEn2WAfas!g{>+kB__<*AItUNKnq6K zWEQy?f;QOpXYp<8b(3FUn(hl{Qv4EckC=7*G^}bwUZ7smyBEyoLKFdspGp!4w@|#1 zkn&xneXDMZ_2!`}8TXHau`N}lQq^5!i@Vf(VV&ah{F))Me69{8yZ629EvK2g15AnE7iZw$FM$v`ea+xJCcPK5KC zI>=dlR!ji)C0DlmpJ7y^)8m#9-W`Y;m|5pz0q^tOil!^sHhfyA9^}Xqq}Fl)-vaa* zmc&{;c$R!hHLECoIObTqVdP8l`;Y?VNh|e39ur#w?`v~BgkVJ%D$L!iF z(sX~}tx8OMJM=oJMpp}n@hLJllTf6Hk#>|ia=X~({oShZp(!IZHCv1=%7 zTJ5nszY=hbjg!dn+Jj8N>pH!)AYsvTS}pr%j{mCbtpWXPWwtuQZ8l%HES7Q`SXCQ< z`Kl}}Qz~IJO~iHvmz%e-ItFs5=-NLC_v|9HW0Nm4o*|=cA_NNL6odmbJf8GLYgZn5G!2 zeq&iyt(JbB=WEVQOKnNNK>>cJi#f`n{mpiqQ3tC`8A`@utB@qD+Q*bhB= zZ|=j{tt3#tYQ}bkrJezXBJAu5>?@#FRxJdBd$Tq5q}mclfN0aGp0jaR4Gq*_q)afJ z-f1tv7XcatvhygDAvr#+Tf;xa0Yj-fZWFbwwjJ*PDel;2_JOahvhwV|;LXXb`j(Kj zQeCFniU#O$!a~`mI9L9)N)gY67sM@g$GtcRDxotdZzlymnq!YXqJio#D$35WX=J0h0n!UFK#1iK7rGES>9AS^;ZCvVr9^ zQMNKr2yeh1e~)$D1b{fZf}TQ~)-f4$@5rUX6B5gxHcCXyjolheJQU zPVXQ4l^DGBYokX@bS#bH8S&v#mtt>S@?45R`UMIXbgZB>!zX@3QRPNdU2T!(jiqDp&%1awymAoHwTUNvT`W z6!db1MdLAhjP9dz1Gnw$$XOH*e;tAKuIdzosj*&df`&p`xC(Y<+!wJ7#FheUTQF__ z&LuTrT~%f*p5+f=UtP@AS?7V{jdt#F-`{MaM>xbRS1M2}SpRnLZ!X2{fn(;*>%Mol zOtZIbzW0$lcYMt*EZ;rwZb+C6(L<9DMvL=7y~T&$F0e<$DEC3b*2+A?3SH|$h}2FA z@izdrD*m)HgDFH4f((a?&o_eGgVBYLocRi6R>X}Y`?N%X9xBLCrvm3mZa{17Igj(^ zeov9>h7hsz3UQ29cpRT+i9dhu)$!F{HNV6eBI)P-wzinAK(5zT$q~14x%Gz=Jf$_{ zcE#b6Z5eFvdr*dEA6;4PBP&a5StUS(Boj71OTE*^W+F}oKmKwI0`s#65pk8;$5nm@ zj8X$Z#$yarlk7#XIUz?Kwq&@o-o9Ly)ioF-US zL$Y{Qnk&;(&KbeuljiUsQ%LuRFgi>e5NsPm3QMR^SgcqbIPuXbmG>p9VVWiVM#MTL z#e8zD(ORbz7yrw}F2v?@3_J0p!5V~Y1=Ue-uylZw_JQYH47Ta)uI6A4oZrmc$Go&~ z6#z(sc2qbYT^1+qsqsry^n|)v69?9s?`qel{g;GjvcWPhlOzPx23S%8DAHA`T{4FN zO_eYy%~?cds{lL`NR1$3VXN)N(RJ>Dkj+ z1bQ;WCule1*4+i4*=xC|UKW6bX7kC4srLWgOpd{)CPEPUC5?~8Oh2mmmc*nfjJ-b`Va&oJn!2qly9XplMjr~(;R|rPvY)M6`ZayM9m`a z&6Q(N+ML9u#7NZE*#lRjWS#}@99@%k%{pg6G*v$KZ-YWOWon2l?2j+uEpayQ zjt8@C99X-K83imHek<56d$NAHNo>LnViI$MF^*EqBt-pqWj>x~G2g0uA$(Xq8i_9y z^1-+_2LZVCloU7h~dZ6-AQxpW1!2Bsoo3m7GDTUdjv$0O$fzbJRBITZDmk&IRmy%W z_3&W8f(2BUyU(a#bCmXl3jxadcxi$?!n(*DWq`dGoXLJx1bYOSVW%R+K>faBlb%k{ zarQf+{?arcW{#RAYOh1qe6hymag2kR|D4;?yrR7nGQ-KZs>7 z=nvq70PlZ(s+D#OR&KEGJ3A&cw0t|HTpett^ygQAC}MP6K0(*cTDx(4mN&>t>)+R( zkQXj*r@Wf)%H>w|54D#g)fyrk7DM#DQeYw3BB-EC_;Dtc-%_T{w%pwISg+)b=s0d1 zQLE{<>15JvxdAKsSd8|i%JTW}-^Y?l{c59Yjpc``hnu(d%Q_=&Vk#+3Db@3m!oVPL zlm7}T%_6=?Zm(#;!w#y2opg!2$lsMipgzQdiWw{H_0mv}aC;}GRIQy5dWsHSncnb7 z{mLDNz{i?5fn`ykE7G89{G}u|%w{hNtSf66TH7q!gSk&uMTNmKViCSx$-K$0fp@H3 z*b55MDoBF1P89^^0lVICMdJX~WUXLc53d$C>}yj%)tC7GXesL{mI6{gx{K1 z5z}|^NFO>NLpAzBpU~FD4XzaqvX%?$Mo)Z7<2F@hvyu!D)gxuB4!~_V<9SMz(a&)9e3h7eUks; ze-P`{d~@joZcoBIx^(#(4~A^rR0r{Bh zsQZg5-IhNdc7^9`xYN5%Dj=eo*fs6{s}(l0!SEl=An%M(k$gf|qvJ)zGrL`BYdCoy zv}e!@W|{{&?#sJh@zBk2HNZkQr`=2(hujXa{*rxN2+qrT&RVC#;=*uP6_?4*I5o*D zyR1{oQqE9&Hk#;dF~IF-;7LLHKgSGm*v*!ulFU}TvCQVsa-&m@YOcd8{49ZIg?sFd zS1Tg@gTP|4fxmdCztD~Oa}FlE;h1(ab`DhdOitd&VK;;~3CNeaMXE~Ej^6`$8-O`B zeFBtq@rB(Nx9}33Yb^Sl4}bTxTQp=a47%;4nc@(oW{vg-I20`Ml~r$j65L2?fRhBT z_0)j%CKWdyZI6V2fb9;Ckdc-v^gu;Kl=lB44z)^8%0IZ7Od525B;u-#UKAk%s`4U^ zx=9X27zc08m1cAO%HWu&3iKTa^IwlLPwb8XXg( zqq&ce-B8-8UQPaf93@e4myqv^WI_8?K_LtHcj^-3&_CL9^E z#G-p5OTkIGUeeQQ`_N&HX8WmpdOb9ZSZ(-q1&o&tGv}%DH>;FlCwV$do*Z6cBXXxn z`*D}-q(+jPs%jaxc*50gXwi+lBsg<8>p}SnZqr>L%UCWlWsJG3UzL z`%=uE<@)tf$o0br(s?M64~8nI%i8B zOT%)SefxAlg4W_N@^?}sEzw`RZ#%AvU!7EY@B0{NLi;AZ{&DC|a+}ej$TH+#!6t&m zbQM1lw8EeRtF&zA!0ZDi-#^yy(i?W6Kn*<1eh%Bj`RIH-Gi}ywOctWrnzjP4A#k_8 zIPECHqoaPT1U8WuH~`zYjLp0aOw3Q`#0F9YbXN(Xf;i_i-t!PNxO6Ubn-IS9Lbd&0 z@LO4)H}20R>u=AlN5wCObZYjkA;WDb-&`US118)$InS2d7Hrqq-qw1j!2u$))-vNC zSs{s1pcx>Ma(-r`Rskloy#uq}_)sSPTYFNg>h`-t(RM%w{T5IH-v-oikKbNO7Re(0 zTD9!(-t_%~7Q<^R(|JR#xud;%#B-ePn@Zgi zIecE3hs*Cy$>m%hb&hTz`WYfXKHCxLtewyLl*QS0-)kq*^RzUlQwf_xk2#5_(~6Wz zyS~K;-X*yw4?*T3m-H31W()T<<$z>-9bTY{3D^3D2#k4mtSg6v^#N)KBnA19wSZLG zj2UYV54a%JQjur%xB45J4GU4ydmV?05QRwiZ*C4U&Z3{Hgq~FSusSKu_QFcIQVQR3 z`lUY6ZNlDmZc?D3~kSZ!j$*gRC05YU;*( zft)eRJ(~c0E1?4Xuc)CA@;zm`CkH!W+hOZ!Zm_cik=f*wgKCxRjM)U6R$2xQRM9$Q z*A1ct@*gxhx?E2Ei8Kv+IegKIuXq&j96I8Di@IY-XbIVMep1|&WjEZy!j+}iA25PD zCpk$sO`nOG&i2BO>o|7%tD#DuJWVbHx{6B%bu(oo_ys*jXvLkvTgR0t<*Zdh_!N;N zwzA84+Z8d!ni8gtQPI3zPC#F?h@Q%@kn#@gC;VKgxZBONKz``I^UNwJ2MIl(S(s+-L&IM5Q zF|TTsOFg~lo6=GnGgqhEj$Z}A)|pka2H?+c0r!t+p%15?-Ti*jf=?9UqfWQDng7eB z+lsZB(=|$TH);o2S(jmJ^GGWq1vx7epCb3=mU6=3si0#e`i)7u;MF~4N<0L^9oSFl zq#orAmS>OdLvxOo9Q3S8I{0UNo3O`?b_Mfv&8vFuNCm6}qD>OIHjQ{CE9GPfu@x-if>qDG1>%s;tKlj+;pgQgcf1>_r*v^0 z;(&PE)#3FFWO!Qg8noGWjv}zNm%j=xIDswjm7Q-eTg+4XhIbBlA|~73oM<$B2tHs4 zRy#qn9)Ww35jXe-9Fjc6ZyGKFNJ%SbPSpBs4&w~+uHiNs10-o&b6iloJv5Az4)ix6 zKWi`kHKII_pR4d~rz&)+y_%Tl06Ue-e(ayL+Otj%65SeGuFgSOGV*R7jR_{{K0LAd z5(a(OJZ}&2X&s4L@f`n4wD!bthKS8lw2vh%pca3(7-?VmQjl$)2(AKZJIHLHqT0G7 zgR-aOkz>L(Dyc{~=3`E(1>sw7!AV3h<|!INYUFHGX>h7w&@V&V990+v?CN4eybazZ zXy}17`xyJWSD1bP-1dN?g52oApk1GFWuj5KAJJU$^5)@)?N%7dx%rdXSVzJUImZcl zerL%>9|OL)6aTH6o|Vbzu3(Az63)*Zky1wo-|B015D;$T0P*30($i#@^2s-O1v4^{f@JkRW`cMQSMkGzGHyDZN(s}PfKPN_w*&Zz zhW{c*oq&Q*{()G61949_8vDk#+j;EVJIW6b^TNy^D*&mCBc}g+T+gECO5VNa39tgz z9a->vouKEb@&p;%q1i7)qyU5xBth2F+Zm+Ok&Ve#)6*sQacfT*YClz&05zm1dGy>;lVq%+CcXc;cB9~hN|t` z-LEt&2&l=5wxWrFtgU(z(_KJ)cnZ6QVv*(%lBGf5-8+m2<7N%q^aT(S#eD zrlq~J&#CNlP&nKfqRNSeIRKENl2I{(ag;!DNaXeyKT2bQpcc3F3+u2LT2>Y$sdRh|mlijiBa$!2(FuQ2I=t9TzUvkoXfF6g2QQ z+mHtT_?JYg4IFdVq>8F{Z02q`FjCDTXV1Me#`7KE{ELf|H{cyv#h6_Y8`f?Aw79?I zuFmdSDMqYi@EE2Tk@$*5aIa!NcL3r|KY;^`@NsUm)xVlMX%jBFx$avEB32Pkxwen$ zxsRB}1~Q>je8mQLE#SZkqDx8}KxR{7d9GsDhAy%$S}-mlzV?w0_X zo4ewoItiU$2WH8MLs#~(Wq~{UimSt% z$V^LoQ7(Nq+?(j+`*zTUhA@o0rNW^_?**bE3>13PvWSeRzNGm+n=G~RX|v1_9C5HC zurs@_-0)aiYWm2*ge=P4y~r$7aj!+3L#XPQ7jCs}(F1qa3I|JK&_3z=DY%-tN_>Jg z8)aQ&yv^=+g_g;7)2>e6au(Ns%H`Lae7MD_!10W`HOOr$o4Ki;pR%GSyE-s#Qp^$R zTNum+S`;(9cPK`8>xc7WFBWIh&bsI1^#b1JO+3IP)d^$>v0?zDabt?2S)?;$XpTxM z1b1+H=S+@q47Ul7p6^XnlG3b45c{$k7Ue!v*T$|LGp)7FoRManrfRQNk#e z6kP|XVCA~1|GbDYLyB)+W<{#t0UZ5S;%YLr6fbwQNqyOW##kT(^deK!E88L$UU}5m z$Gz@s25Hg;AY!8OhiCq8qlYSNGGXSEcttAJAAG!=)&BW`;arWaK(o<181_4TY@NWp zzq&{oyIa~P6ORXNXe=i%)!KS@;c6*ekuoafAe>b-#N*X==NY&8=8#L})x!&U~+%KL_;v3i%qnQ*|6T~>Nh z-NZZ1PbTYy3heuf|1bTgVIuh}1!ZdGBAQUQAWF!vchQ}8BjQUw3t~qUKKF{5M30Xo z5(kqw@!iljz>I^ke1faq2wV5cPmSaxt#>A-8QHHlHUGrF6FZ+mMFk38TCkB@h*-MK z4bMHth$o394?ToJ-3uQS(k2A9(9MHnT8Y?Gs=~!8Kx@47Q+O`fc8&JoQ4G0ZL;`Gu zzf3$NJM1t;CY+tS_H5gL-?82Ub^yg7Z?!ev@+f_Yl`rhIp+ct(vy5HJTlwV{Zp((S zT4M47F#k0}KZl~8!@=$+Ol<}doUKw8HqJ0q;sIH(>lF$_|I z*sbhqKw6}6S6pFlLo?{C7rU(NP`;W7>s|?O-~|-Vf|U<2g6}<R@DPNQ1HzH+DmmTHw@)$zl~3XyJVDw|l6@Q8s|HCqMA|SU~E-R*0*t4hzkY3k8d! zJYG2R`F*TtJ6TG2AB3&wGSXFpFI!KHt956!K4hB$Lg6Nse9hFJMzX6$kbh`M{ zl7gMtx_OHjXDIcQSP5Q=5O~OKKR~k(7;~WY*xy+nPYYurv`5^J!r35>u7K%PdFl&K zwB!`bCRRLi4_%s^?(IJH6POq_sRVeW5X%R3pd_mbi59hbXg8HCxzL^T@rtfwa$5Ee zX|~c5FqDo$oJi(a@6N4_FZLu6SEUrxq&;S30IIf%W8csGag<;}gX~3`g~t3;Vja7L zdJn^!S1hM5e@x?Jr!$Fq)j%kR)tlC(%S6G%brb)I=| z^dXHkoiXq7uiY#IBcgUL9a-iY0n{3m5{OGJ)j8@m`+->G0`1jsdCddOn-5IwYqTJt z%NGStt`2iO_gzTTzCwmk3X7>-d7tc%O%O4Isl5XvKBG9Yobg}{`R74(k?n`Wm^Zv(+F@vh z_%(GD&RE)0KEh_#$u_;o=o%1Nby$U^pG~t=H8KmKT`}fU!qW^*0uQ!Mw=G3qK~v zeBC!pP-453l+6S%OWzsi+M6Y{M9|7<2E0lpjc`SDr!UZ*J#i=BXI+h#XVM2m@aB5i z9lAaklXGOH#vP_n8$x8;*Ye`tA~p{AT>ytYz0{T=c85ID@56cph(#kUom`_DU(OMr zN~;j>nA$ex#B%&$$JythVx8Og$D?-2WnV(Gg8Rl$Jt(gBj7*~9l}T?%>OtjQbm=x> zK>X7Ltl`xxIVa1_mG|scO%nqR*wQS%2_q;&$z_XUKgcr7zYp+>c>Wj*UTiKf^Y$qKGf@3dPVM-!DjdRuJ$&HPja^&tOk`10tody=k_;+BxQ zQj%YGgGXP&y(`GGKP~(3DhQ_U(9n9ZyA`b%#!$FB%~Mpn>M(=f2eNs=DLUP>8z5(t zFhM%q<&2cdsW}{B)R-d{*nkLE? z_-KSvAfAD!glBWbK+HC?_?5_ zpQ}nP{O=IR*sDYA3(2UqP>1@)c4NWDCG-c$QS|0(z=2QWUDB$q4U&afAHF zl~w1B18F0Sc=-gCrr%GNDHIz~t{#xKhkXb>t=(mA z2gublZj~=!i8&SNl>tFoS|x}l707sf&MSfGEJ2qrl3Ez~7*kY0Z{HO8p=&Po`q z-zWr$O)~A&vk!#3T%F3@;ei zqaWZ|TmnAZ%fdWnkqwX9M0a=zJzI#*KRnm_)jyArFno_U;%tb=KhPB@hB&_TldN^u ze%sda9B1w4LAnjw2Fn{c_gBt1T4W&4zK+#}sy82DeS|kg{MnIZk!oG)$zRQ_2S#fO zi|R{?5n()4Yp{0Pd_NI=Uct7re_g<|?5Qv`N)~4caY$LE*J%9x&!J~uIHt+52M-T> zEWL*upZqCV%X_8-wnR{}SDu#f^AfxmR)XGyD>VO$m2l%u7z+njlo))fT>he@bE`;j z?bjE$NyX?qAI5A>G8(|~^eQeMuh%%i*jP|YzNVD)9lVycQR~oNMTP>;<2L>pPkdCh zUbAl_y*;J<=9Z0NnzPEnrdCLlN720$R(}!p&tm9CDvQ`tep0awdr)7Tx!>;T@3)K0Hz?L zZ6SVqoumltZTi<%aVxi1ND$-_)T31Gjhz&+;I#J+pX%fT$ssr>o&@Tx7QcdCfR83a zpEZUGMYuP37pv#K;q?^2wXcTB7xM=Jwv?HNMQ{e9xO=$cE8|o0ZHS|?^DRnN}o^3sleA-KhOGhK59JkjJt#j*}MR*>p$9FMIFZd6rYcC z8Z_-^-eT@zpR9JcX6YF)CO zZDFc&0>NL8W^bH$)2J|S^4JghiWFs2fg!5J0iP)Xc3lZ90MUXXPPyL!Go?#VxRj9x zjfC|4*;f+Kx(-w$RuQ{+4St%!!F}NYbWuhlS?|wW5(YRv`$mYLfbW1EK1D-oE(Y=b za+DiWBJK=LjDC=p5Fs=D=w~wnq{2JuGI}k3_I>Pa;F}%ALGm(JFM=)iL{+8EiF-T! z(LoG!zpW?o8$QM@dQnjDNctfWIkm2_dLzA6P%VR5_PE*RGOIPuGurv#AVDN8UN84iFF%8ZktX zhO#z21uZ^7sx(wqTH1{v@hsF*U`=shjahfmR4Gt6>+9nXR+Q2QD%Fp~nm@|4IZs!C zH!_>=Uv1NndF?63yealgKc!1@tou5cJo3(7DtaaN)^e!^b4eZPSgXvk)V)UrIsm-v z9~oyjFC_K>6G81Gg|HlpWv;4WstimBFjLpnoB&!!!o0l_w!+V5MF@M|z+W(6mT@YJ zN%jm}H_X~CT`6r^y06fqvB=h2qee|PtKtQ?!L8?~@eV7`<6QqV;8D6lKk@*M1O12r zJbd?vMTEitas}_KQb?cdM>;|-R_en&u+l~OOiQFZwtW`BOrn&T+Xbv%Buj!>=NLR* z*hYCk?wp42gZ%t0d*0*H6Kcq(hhqTnZ7(YiPRMhHf>Pfi91q7iIAd@31Q$qR_)!v4 z^av9`QKQTNS41eJJw|9S);XF>c1%xm5nN}nQI&k4(770CA~X{vcZ;6ubcH&3Lo$#C zJuy{%VH7HS+-cB^1IB^FV@Y<=Jm{|*BjgP4YDn=ELT6k&=dXyv)R#xUO0Z^Y4wp#h zZBf@QX6gEAgli%_l69uC6*v^Qto3WC_PtlF6Qq+tPfVKV>VtKuJ!4ls!}^IX^Q5D2 zgsg^|_w=N3f2|u3P1acl$r@1n#$~~yCTtkN^w0l1B28q$>WTg{tR0k6Im#(SW1qMd#jc-00M~|^LvETqTifg1moKP-g zc_QiSQo7_shk^6EeGJ>SC7bytb zQk;K?(%;`{y&GPoB4@qKp)43y2r)D@Lv}o5TIJVy2l6E8v`f}%iNDiey!TO1UwQ?p z9;G^&jAw77ojt}mBdP_TFf-I>Xpy^x#X+KkdAP}|#IcnlpWph3;?&}GhQ{6_FlmdrXk{K)cOCfuJ%!( zV4n=mWTvTi;-?K=bt+4tWRsOR?UZq@>L(}R5@)5h&{Ns!9b3$r=K;&zpFOTeG$yY4 z54D{e9w13Go!lJkDY1Tk%GWqROjbqw)SA>_Q3d(v@6zQEH&B|oY5G z&FvTiQQG(UzoFFQOJ&Q1C*$UAi&c%I2OT2LAQr!1OS~!W^2oDfu`i}DS*Xd$_$DZg z8VWO$0L5#m<;dYzC}*FtN-uEA@boc7ATzF$>zljT6ei>89tM=#;-`HwT241tW$62M0;v6!mvhov8DKBE)(Uraf{}zcOe0{3 z9jj}d7v>0KqXnKFYMLo$9$8$(QR)|6rsgiUHIi-2;(Uz(S$PDfGgaypDON&mYA`@V zYX;t@G2_;;L~j`l60`;)3UVgyA-<+tCmHf`YQ}z+e5e;FsSD9qsc=;$Zy!d2AUd|N z4%L~Aoi5`p+z?1!F+*L@M^OtzHTtI%E(wu|%#4e>*Zk(ZzC)HmhdX6asyM^tI#e${ z4+>!u4k~gYNOpF4CtJvxL_2-Ebg3{&@*G>j{ggo2saavbBkmUY;y9SdKQf;3GfcTB z-_B~tTu8O;i-Io9!w>h(zgJeYA2;-{64BL6FJ110Z`($h`{IE9yw-J=o|3A4d9>&# zMI0dPTyllp24;>3z7c65T-O^Ns>=mE(d8EqqZ&@dNAz@_RTGXD9h6Vel{}=ezV=V! z-N6W$z}2<^zDI9b*GA~06M#2z%L1B_VM_$vpnWZ1Pazy=)5A*L!UsNSPQxyAF>J#P z)7USQd}ZX`9HvTGbZ1*Tu_Ng4^=;^sBo(Ed3YDhXe6+)hgh11oRI~k`E9E#1P#zre z4Q78PUjpf)_CDL%5r{F-BFFHY@FqxagNWPsi~A9ho~WK(-XA z;qQT)f76QWvgR?L@4@aOZ)&-hWGA6|wvojUB5jNTlPjaY7c0NSdi;bO(8rED^PxsE zrubYECaWnzNtkXSVlI?$&RQzJuXtk-wk*gH1f7N zaiYY zQ#*V;n8(Rc=~5&SW;2@nZkSsu{*?$U*D)0L(?+}A_1rZKcONMWcypw#BXX#3e+v% zzR<$JU^&hj7|*xgkV|KS1i2!7UX;nY%icPaCznUp%a3NwzSEh>4>T?gCjSpSp`!U= zb3+siUDjD?3wfQjRiv#pX=Xk=+%kq55@hFu$?8g7wXG+f^prc7*`H{kEmY*ytTki( z8v$*_G1?I{zbxk!zHnnLVA3QUIKBjJv}{}@wmEfMVIrE$Y3wn5F9`i&x>@+I%hR4J{o?oG*|?wW z!=3(){a1lz|M+Gx_CE{FOC*m$+c@hr9s1MFfhtpipJgo{<(&Mcy$lm0kRfrJFd?Q% z`bS2xYG9mOf7Nh|sP-%ZjEw#VPM4zv`=~RQ#1W1nO;3_@N<__fn4gZyd6nBX&yf(> z%xchK|9#`S?S98QDwJl4c#`%*{d&xs6hjkH1nkHz6{JZAvR6wGYH&ahGxR@3y^!we z{73G~z6DHqSXz-8+wRAFdvRFU1 zOO_xuxVoJh#{i)+Iy599&i(}MT)#Hp9e>@D%5?;6)2KTMUP&cG((t?pNp_5i{t%GY z2XkhzeS`Ye07FhU8;tzDzwR7cNmaQlYsn~92sJKSs2ZM z+8zHPD;pA^d(b@~kf%Xkxp~XDhV@#Fn~?9wX5-_5rdw5t=G0B8%nO&Bw~D4E*}5aO zaZY+-|6!9E_SN(2joe4$SBhYdiH_c4871V|IH$IC+c>3M z*X`^AO@O&0%NK=?a!3V!pS}(*Jovl}R#t_fpY|%`;+kHhM;t}Mre5*XB_()!efCM( zialHh?f9tF6T>dx7`@o-Rp>t#;y;epk*1F#AxY6TOpC{HsxVIQUZw{Gq3>^IccURL zH>W{@2EX+Scos<9=i4v-Cm&2g2h!A0^CHKN@mSAoU)N}PP>=x9l1(ZhViLzHVsQ3| zh>8(0#}_4SJGX=aIG>lu{8c_?ZZ9> zODMJd?nZjjn#$N=V4@-sb@4&iH5e^2c+Z+VEYZf5n8>~n$yZuT-EL+!tLkWx_9R^I+4_1O(@h)KF=*1Cu;HgbnQ z9Bbe!gKR@m;L9|xlytI=AvK+ROjx-jX)pdXG9^`|i8H7Mb;#-B9yM>&3(8bQ{2^#{ zW##E@izKA`3Av$`NCzP0{jDK}f{6^~XS*|Whf@4EK+fFAL?=X81vC_${ZwpM=1G8H zfWBQT)U1QR#}25eVa)60;>98_0wktRx%e&jHleE+{|&z;ZlVyfN*JH+x=LqcpK87D zOae)N=G==W2){7dDBiszi+EII(<=h0mnzH%n2|a z)C;Ost%4{l;bDKT(BGbC?i75pn0<|5E_0=V0LxY;0paIPDda0p79Aoz`^fu3sv-L4 z{zar+7q*CC=-}{4jdscRa!pp2p{x5`4k}6c!uSG~;pNOkAVR}NSKf^iEjD-J5N!k-`Xaa+$l~%02whhuDS<5Y!p50HrW09VtPj&f?yIE? zCJDzTc?Fk2hs*IK!oBV7{^=A0exWVbLog3m#Gawp7}wA%znAKjV-(KfRdkN}i0)``6Xb0p zOM@qHN7`melKTp@FzNbDZ;RSa0M=2I5ZZec6luff!?NjrKS$#{YmroS2yK*NAWH*t z8F$kR&CEaw0J99K5_3$4AG^C{esbu}l-hqKff^)7lRQI!T=|F(iA!290tV3Sd#XTh zzKpVb99M#{8r8m$Z>4Q3L!CX#wW4_d(95waja_jTdJ1@sx7~tGshjlS(pl~y#cgDr ztP^m8XR;km)Yr=e_e|G5zTcg5d%H8~y9h%mzG!sv_ZgTaBWFfGlwKhLS*ek{Y&84B z%lynu4JDTc7*iG@{H_m1w*I9ZkAo4Pp7I*D@PrBWPAF&UlbsJH(PIn+zY~3?R!}~u z09678@?7Hcq~4597IDGs=b|vo&7T0PnhK`XeQn`eejsZ`&^-y!zh>Hhk}V-E)_*@G zN{kx@|5{iz8$Eu>wjKC$iNW}1lhzCO(^NAMbex{Y8Otcb#fF*Kpdh5Lu+(fag-gs8 z9rvmUa;Q*1_IxaUPTBuCoub{zu)!;a{31Pw(O>tRSdyd@?ctkg%!%xX;-xD=GAUXS z!Z2l8>64rUKVfE8@o#L|qh_?rnaRx3j?~SjIVyKuuL39|2?(YR>p)bFeK4-RM?@ zDh@lMN6drTkAkdTlrmJ>4yz%Iz@zzQmby}afFTKi; zHg0s1fjjm~)$<1E1y75!dQ259Q&`MxHZ%m{L0R8m+81^M)0$62?dE@t-}m?A zP%oApUyT1>gEE12sQg8`taJa$Crg}&3DCpX6KiGNTiMf>Ffr*7|3$NG?$3*jQIodK z!%>MS+qL4wY|t!wnH6AFJ^^DZ13759=zFwBnZQZ#vq2kDrnIagv7prH8Tki1RC5=~=gk;q(^M?)+dOx4U_>sbRoG{uVteHdil#{>eeX zI|;8XXcHxfe5SOwy+_Jj_hb6(T5!s>Qi)mx7dq^M)viZa4;vDRE!Gx1u>m|^%LwKQ zxaYfvnJ;er0?*Z9+^8oilF*<@Y$Xyu-<9=u9QuGCF@nMY&Z7JsyHbc6xp0!FKG?n~p`4cb2P_aDJ%dX-o|MniqQhX@=~2Z*Fm+7N#d3uplu5h@`wf<;z4&Mu0YG1 z8r%DGn%~}@V)S-$4xDse+%YxA>#+Q*t7a<#=~Sy>SLhms*B>DT9j*yS!nRFc0f;Rz zxW_6CV$gtEj|R{6)o5h+WstwR&H^5xtmCqXY7Zb>MeVYeUO8;7!A@;umLWT_Z^TJl z!$Td1@mSH?LQG_4Y!kPk4j7EtUIc8W3YAYhJ;;UBRgX zHuUKK?h#6nYnpiYnf(6W?+75PKmBonsY>^_ipd5PCKy=~O>m?{87Wtk_;H}oIXNXL zv`*MV0t4|lw0NP@~%2iMC@lI!Ya7Zz!%)3x)E4>aB09nofN`z z@+nzbuBL#M4gc|U$A?Vu?S{-?XEYmy1qSBq;To60k;abaR)Yp656}9 zcLyq$s`Hcx0P^rbYV^jFrGHU$IEJ}&0&_#l+1&~x0)mF8`N~$V-MV4E>(4S;W&T;W z++CDp1h(QsPgY?2LChFigN9?)aX_m5wz0$e(Yki>mTp7RmLct*@(K8j1GvGL1o zO`|Se!Y3msjK?>YAnGY`AeF5*vw>p;4f{ilou$On8FQ0U3VcRGWdh`gralcO-YtHD zmS2tyjjFUKz(INcGfkEQe~73_dSF481#SlC$_~0XU=PH?l9Ck)!365mTiCLA#Iz(k zKb}o15IoD`YC z((rW9@jSJ{MoB*=z5X&G#+(}^ifRTL!AJ zS%mnjJ$|(NTjHH|w&SxADO94Y6<=2a{G6&DdrE$x61wcPEx|n|)*S0n1!n8aRe07x z5?n?qexQzmA28t&6jC^Iy|V6w=?!x%RdMA{m(Xlav|=c#-#?baxQ^VEPv{ya@F@zl z5|$*L?N$IKrnbUftt@i;uKr&VGzj08c+iU4?sJxXgLTteHon22?}JDNB>znxg&^bX z47X7>6YW%cHL2_!v*C9=!jo9rrcb=yH`}AyLR6PxuOp-rGzBI;Mqt}MdXx6XwIV4q za(+*_U(Z4BX!gScRlW0cHb0Xntx~>j)D2xy^<8IPAd{#5{GbfwdJNjvnznM$vd@l(Fq#4u_O30c3PnOlARK9cL@7B&U%`?12GwBuhi6sSGXk|xs}7dUZ(yx zpX=LliaZ9c9?DXx$Ng-_c)Nh#Sh8beITe#I(pW*6Ev+!T!CY%#l-kt(8A;L{rP_Rh-*>_AL|$eI4v3 zMV>F8PktZb>vLn45Dg8q`$>=n>G8?Kr(LoODFok?G+cYJx>BmHGIh_9JE6GGdM@6e zFWOH>Fpul8FV7HM=^bgA9@7=hn}nnO@%gYddlqj=B`eF4k&w9Qsubd`W7Zq!+`|B% zjo9E@)f!-d^l`hMWj;DKUAy5)8vm9wd2Fb`F+1Vh~Bp^H}IWfO}e74&zj9I-v!cu#3#(j^8uNP_hyc5M(LL@+)D( zCOeaGo01H}Uf}lWxSww9ErrJ^D;?lF62T0c>4&j7Nc7!pz~K+OlX)WWPDVL`zd3&z z;3b;$$^HnXy9#-A-3QeE`T!3)(}L1Ih3H#ITdi(vCsuVGA<+^fr5U|=Smug%%a-AOKK{MqQz8$*1IG>YWL_5OM-C>bq$P;T0b36!ZS>?yi zs$5>T|9>~F68;7_F{oU=Do%QLuaRjriu55kz2_A6!P- zEo{d82R&hV0lL}67j9cI?syGttDiMDswlF)zp$b`I&9X-tuJ@+hjb5De9&Ztsz#Hl zIX|VrYPOX?x077-UbXbwe?najz3K~bf*PIb2+2G@kFW4M&?E!^jm76Bd`Lu+W6C49 zSLVk7hB0Fw*)7@=r{@i0S?XH;)!hQZ-Q1MBS8!wIMrxEu;+#4Eq5uP+Lw@Qp-M8j( z?zv+VlRM?>-P@@ftLn-u$dK}#~`-fwsQZ}RJ610MR*x~I}2F&>< z9#|0ntL5X6?#rM z2k))WG@St4vbej`zUM}V`|2t4H^Hrn(@q-I_2&C151=g}_LeOQNOdclFz>0je` z(Tz3Qx)UF7sh#^VRJh~*J7@Y3zaENGwFNYww1MxhI&GSda#OB;>_rCAWfz^;znQ{o zW&x$=ZYE?ku>-9r#9-IKi2qO)2)n@%J%)Gw{F zQ0m^f_o}}OM9PoDkmgC~@awD{%VY%TVNgo;hu2IxgL1_m7io0ZKQV;E~Ka*w9SV~ z2}c)DF9Qem)T^0+fg{x!I?7${Vgt9skN++pMMh3(YwG!$t}EJH2$_~@vvR6lb_G(@ z5pefQ2LT?65#AvdNT&hivgJ1U=9QCR+F$Wrv~9SptY^UrCf(jQzUeDuV1~95XJddZENx&R;{-CC8yBK_t_D zbBi0KX}LnY>RWGcG`(_XQM6%53w>)7U7qZLT!9O^6G@eoB3qJD z$}(odcF1BWw7BgedONhe4;BER9C<+cT8iwCpLp%AI{^}HbS7@UPwovES21k7zoWrg zh5XlyA&utK1EBMis)F-!VHD{D;VXFE4pZV#rFLnU#L1<{N1Z+Wbdze1o6OW!&ggL~ z?*@B68PLNomid{hVXDIhmg>r^$GFo;Fz6ZG>rRO7*njcdn(J zDdviH&y(2_W=}BIhbMedQ5_)nB6*h0A=%Qx&O!2n(lw=EgEFA!2>oc;y)>&*7O>a( z^}-=@9HwH|DSLXgd<>0$UaYG^Kd{#1;468o^&drw6N(XRh*+cVu`%-+gJwJ!Q!oWv zpTJV3M=5nHn*E%n-y2i6Z1G{7SUXq>+-Nq11Q@$xAd?7UkC;AQDnT8s<Rk_kY0Vb;Md z`&H!N%G}UD6q@^qY-JoSS(cZ7S+>>HmqW;z!BhWS-n*MF-nA5B(5b`bsXON(BIeRn z&Y+B!wY>g_BfF{wm`p`asWB7om5@-q^{_~L!zfOrS7#f482w;kH;We{DuZ0~rEY3y z7$Vp6$f;6?Z*@B1N6Yf9nuwjf`#$cDJt*L3;e@hl(}TQT0$;YIGwi*2!@jl?!&N6@4eVxnCS~!moaSzT~AI5{}s-M3P^bVh%xq%36*Lq)ZS?2-E$RNv;rpTb=SCZ@2_#^+>Wo%^Z{Bic&mO~? zFHjpvce@}>Oi*`QUL3x)FNdJ1z&i*o#Xlf%8Qdo^5F&~&JRW+YohuQ0CG))mb{tB6 zR(Upa@oheBayM#~NycV(g-vCy`hcZ($(lY*j_qs`?LPG2UX&>19?#1WBvejrl-YvB z*ld6R_B7culSXi~LLPb-TPRS?*99K7a^LRKtOiPSdk94&R`E!=`g_)E-=A4UKorAS z91giu&M@KrWd!mQj2tj~?IPmDH+ea!Y>K?xV?4(CIXN`U3dgK2i<8444eQj(k)##l zC>*9o6%;uw8uZ+F!Gr3IL&i=n{basinbVxTO`cuQ!4Xy@IvFAK9VDa3lN+)@d95=k zs1)}aeM3gn=j4*bRWbvr_w2&^ac`Dc5AfJ|TKhQR-!EtF6&Ts0Y2+Q$F_cU%YxC^7 z?Y}i6=Rmw*kVZDL%2;$(3Z?Oa^!&$n5|8JiSrV1G^hCPqIva-mV_dOD^#L&uUF8bS z_iJcj|L?w#k*XxokG8~8xwO6hJvqB#^~}YaRm0Xd?`U{!n~NAI)6pvlzC2;uXyf$P zzzg3d&MTQ1W768mr@Q8XcUxS$7)?)4<)7$n^Q8$wn(1HFby4MB`z<+v@yH-kV-HXR ziWhRW+i-Y3OrYG=4wO|&8*%_$ECv!@(^2A=h*O2^i+GdB3Es}5LZny8Eng+)uw9x- zqaeR3j;Cqg_j&l&8t z)O3T(mf>zXw8JB)X^|2cT>n&=A>mrxtMQA1=;N z(-6q^vG``Nm7mfh-j}3l;{`FCD|}A>uC8hVC&GJ8vBl;pk}BY-b{w2=?7VNSUE=s+ zvoBHs9!DH)6^+?y#-(l)M^TB@mZ!63L^>W+khtBPAt5{E1L`JhJg4;<#0K?I#eTRX54D;#k^7@dayH&qyhG6Dx z9a=C4)KhSy@tKg_^hKz)7ybcY9 z7w4(i0Hu1J{IvD2m+cowV@LGR)@m}ubUlvn|BQ*Cxq{RUF%{g1Q?B~H^6do z1HWTxG}w>V4p3drYLbHCk9>6q*tXh$m7S`!7yQ#C34ytQ#LoDb-k>XvC2j1-)PXm_ zC-Z97x-$|*7>EPI0vxgetwms>8`W059CN4rK3OW&gFWYQemBWm_(o@k7gbR-`0ZB^7q=L0mnOPkr9@3z3AOO{ zS-Hcg7nj8 ziJ8ilO;qkGgsCmane=Z!OFRE2DA{Bj8HN69xxM~|Ij+5e^SXi zbN;0+THW~lifVkLZ#nxc=TGkYA_dCwYFM!^m*r!iIGvyFW8fw?Z%}VQzv>m5 zNwhuluDMo`(}Vu=bvSEwy^~hmJu7)ch-R#fK>aOB`~ETZB&Q~(7%eh>^*W{R5|C*NK+y#;Al4+mZeshlr49~?+f(oLyU-+ln?{| zUphKa2V}V$7bSC)4Mk?yd`743=@DQk(VY~CluqoyBA=2TmNCXwKTq*e{wsT>Zc07AU`=v@2c$uP=~ia%6= zw(!yW6wj7gei6iu%-M~Tm6nWTwPh=##i!+7MoXrm6ygh!F5K~svo8BbpGVTzG*SaU zE-v%DN6!am{t|89ADtK}Kh~x_kRL1)toNOnptVYF6TPaI4>XCiXq@;FJCeV!beS%t zg`-*pFCYy&s#>_m*u??Pt93LV)Y4K>&+`y<-jk(PS@PySWZa(xMQ;SB>B0O`oy^6Z ztgz}aiA?R?o){_0lb5KnCW~${A$o>`wq*&j_=L6c@^kaG1}hspHel=yFz(To>0=e% zo7-Co4o_;po7Rg zn=bs@BqJ9kGxDBM`=9Y=e7KWYN#}IXLmi6V5d?fe(d0;;C&r%1l&<*%pcgd9|NQ>j zqgTc5g8%#jV#l7oI~RJvqwN{$4Ar5hEp!u!^vm4e!{p-0GJDrk8w% zQ@5n%%DRTEMitn_>BjhL1QqkV1nAW7HC>%U9p8F%!l=f-q~8DOjN>7oL<+qo zc+f+|VtW6(WmyVL?jL>s@zP}IfoBhj9lT~zTPhT>cPDw$St4(c@_KO`EeTPuO;Ts> zmk?mtGRP7Oua)rXiE=Ng6tCuZklKpR z6QsyHl5-j9T@8Aym`J6o9lE>RdwI=_x&xw+Qcv~Z2|X(A;@LqEgP^kpZ%*6~d#iK1 zkbH!ZGzok^hi2=CAP2ED4ltpHNO}s%P~%|{;Y_RZf}a<<8Q}FbqUWv<8f9V7UHsXJ zR=`Dhhvx1CZ0Ir%S{*Ud>Iocm67dkh0Vk*=R4-a5E9L*{)j znThx*vi8_Pa5}FqCU#&DRljk1s^dz-1o`ElAsP zDX4Ew5AqAPvB%T_-+S@cluBviRbR}9!_~%k<0h1#c7xWAIBR46{UcBXNLH6y23@

(P7x`SJ@svuKjOGNdd*NK>{Ny_|x*O{+s>nOuivr7hj(GO2VkkN9`GL@vdhX z^JIfT=ISKMGO%f*NCfgT=yZPe@)vnQRh4R^Dp-%eyV;WTnSFl;&Y|9}MVxrKLSo#m zZr6Nw6eiLa$Bbu}=iw*gioqOOY|V7fUn$0fYB@g7M8o*bMY zHyVs|oT4Hv;Z87I=0=wg!ZK2(rky)CuVq0vWl|;B?W4*o@mGt)_=JS@v`GW$T?H@y zZP;hf#T1C3(Ju^_brzm0Lq>a5rNIrlDQJ&oi zMitmaL|>f~R)`WXTuEh?$A@aLM3g^a$^!vLsTP}k*5kVdzTK2S<6t^L!#OZlu9M*{2?Qi2zuvNCATX7{#F+_tP*o5x~mrb;X*Nw)Y~INe!w^q&)_ zcm~N8iJTgmtJU9)`&5>7hFX{!@|87?_IdBf;i2S6@e(dxA~;lD*YdR%(tPhKjlp4S zZ)9Bhb4xy&d-U9(O#%RDMip{!^h3D@Wb0B#TseRAaJ>sV{i{XeP*|We_51bq#)@Cn z=I<*!iE6qF+|+RcWEp_h^Q!`~C@ zhlX=7Nk$Q)J00b7cB~k^gYX){zFS3$sHMX0kdAeLmde{`U{*U)0n~gAsJe?nbRGV8Ir#rFdk!MPP*jYUt)}AzGPW zjX#F#=IHWkNeaK}y^w1rwfmDV#zy=!2moXm?TD zs&Oz=29@}^N%c>pcQ@>vRRpeua)cIyzZ02`RjgIyB+JY zlTMzP$acC}W+%4{)d+jt6`T*IZw(3}Y~3yu z-5WQ}LUF`yU7wtrnyIikTftM}i&Ttu%u6RkKn7?r){=9Xo$l*GBXOfel9Tr~+R&U` zUUV#JD1sZXk>IA<#nHb)zq#(J9D zDAC$*d)Tur+!7H5CUUA=*7EY?Fd(ge<=d7fW}tyHE8VEJMK|(&TOK`-TZ*T;?-8s4 z^041eQM z#!3~nEYVBkoMC55jpO&}KG1idlwGt?lx>B^pb|E=tI;D1Z?ym6gUDc!mkMf+BsNj3EYH{~Lo?K%i zT;W%pHe^D`Z+mX01z>e#&sy4lChz@&!qXyB?o4`JHTa-j(TNlMo5rYTc%UnOs&{Pn z1?es@6Op{0Acb7Hzs*}hV-rg6Qmzpav2DH+M0J_oQvQ`GTLDrkz!#udCN;IBquI{r z&x$-W`#WmUObLou8= zSwV)fr+OQkl|fAnMqbk@k&6ug=1fU_mO)U7Kg4d8gz^idZ?ki)v4o2?VdI|a!WnOh z1h=6q5>vl{h&}coW577Qbp?LBy$G@G+bet6g${b^TEPMpyR}UCogvzKVnI>j2lM2X zbk0%d2RIW>IW49Sn)Ya8W>+WL`qqd=ti~02f=_2rZaRwE@q;FK>fEdFX*=95#8Ci} z&KN9XUf+FYMk+EiVk_jB+?_#0m@qwY!n&a~Tx54${tolme^@V)Zpp4xwjLA%IpMP# z9m>9n_WJF4C}7uh!4z$n_)t&MS7k>gaieaSRd&u_-EcfBmk=+r4PAZU>e!;H%3O4jGl61lXDzFRJRt_#N>|C zo~$q40Wh}@Y9bTiHpN6={8S+40}*vGv&W|8C1i|u)^v$lZknqA#~)tWy|F6rBv3^S z_3^pZU8pF_xzd+=AP?=F*wRg9+o6CwG|!3qa1O_FWN`3Jj6^pMQc)`kdbe_fO#35n zX+L;Cw@|xp0A3}>=&;uwhOk&&SCP4)z&|#d+>haIKvLRSy&gx1#Aa>?mZR%$CS^%!i+%GwaE7qy7dDZN-P~G$H+s z8hAl2$2?OQSm+Fh-c!qa=RP$MLaH{ z;>FZyBDGnsQx4IuT#rX!I!+BmWWDy2}jLc_{q>5^))wLWrbdi zsOS+rDhQCGqH@wE|KOJA;8Xg$A|3Y(gGwPeTvJ0W0CmqEBI29KMzF*#4i46fjW-he z6~YBIA0!JB*;4xHoPgHuWpy-}CEH))cFfhGkR81TzqMqL!BS#0{})Oe4-jSAN@aoNrD$0YOs;&C?q`-!p4?$BtGmXFe~8kO>J( z@mMet^x|2el7l|tWd9`!p8v}5dUyqX>3B^LTM$!QfkzcoMK|R%O~cj zJdE`5afH0Y0GU6HkZ2% zup|}B*y&Ul_SHWMrn}hDAD~nV@0($epc^BRStvkVB(Dk#G1+j2RYvYXqzT-&s;8G* zbOyDR;}vZ7HUqq|R0bBKi{t=Ce0u~f-w;YjP%beAOx~SOz*4>;R_?MLc++dh5*i{| zm4XgT5ljZ4*83;>F9K67b4Y)Xj2Oxi63WQcnRXI2=ITZVJEZz)F3Uo_+T?w&^rcy8 z#EmL78H@Yv99WH(f5c%joEc*B6M31ivV&HtH?yZo9E3>f)tTO@fM8)WDbkJ?el5Ek z7bx@-7ip*YFZ0GUxE&K>fjzI;GG4q?a{L!}a;8uDS3m#$4yMp+Yo&C zh=~YLQ=G`~n`me&R;u<)DYD6N8dj(l3eD<|hxO*9Gk#OtDnKb1#8$1OpbZ zh5ALKC$5E2Wx8AH+=_BQ_Wf#qfS5#pgVFMsWJC6FCc7|7KLlfKJxNq zu|#%MZyz1t5ij47WX-w3XslzC#|NO7;!RYUja26Lqw?wSL_I_cyw?bst;)49fs>D} zQ)CLFw&e+XB??RG*@f-59stNqg>@6?{$Q^y*38a#%?v%&0@jqriBvv1#f+_CRDU}V z`#3aIVejmaosEic(hXgJY7^q$P3BOkL&M67HaCScVUsE%$PKmS+G zmB<`psaW+AtPZKJ<6FmN>d(81_C)6FMUT9Zsr$smXm+Si0l(p0nMe*E$r$1~uQwMu z+3?u=++9(?rKbVlTMbyRh&spXPfXuxUf!i+=Uq;`UZ?9}Go29&}E#zVo^AS)F zfBU{_2oC`bZT+3!yyci~s;IYpkb@q#D8R4s05x7}LWnyH*FB81{Q;d@22V?#(>_{A2l!2Z#Mi8VU?zQCQoj>xupbu{#-Kyn zDv9rD0yWd-?$M+5DjgaB+}HvL*hMbFD`x2Wg)y4KN->q#inNVZt_^8t%BU{P;s?QO z&K<bJc%Qc{aw zq7(Xx{v!fU3BAa@=+~BvqsM_|? zlU7|F zJH_6u?O0x*%xQj!YMYDf+xO*6mnjuszgqlS%+|Bk9J2_^-m6J>ypw?(!*XDQ@@vShE`DBj-%`(p&1y@rXgGoRcC_k&+B|-f*Mc zP^F*v@1M~BSLB;iL`Oo}eVQZ?EgieHPX&kVB&#pol$#Z>3wm0U4hB2^Q`s z0+cvA4q-D4{Etya26E<;NuN>xD?rr0=S)-AsuDH!IG(+!bvBCW7)Bd)^pbMfiO zO#h#O0M=k6J48YeX`dz*wg|p&|4pI}(yp6IZVOvX&!cG5Iw2L#gvJo)mMhQlxugyP z7Ul;#b4wqo8yzHs5Ub@|Z3CEieEE9iY$B9KyOPD|R#Q|RxEAt*c*t6V&j>b~ z(k6*M{e3O_wBwndXAAZH)B^bZyt(RC~E?u`Sr_j*Wf2kw-T)Fq*^TT+Y_(R16%I?|S5CX(A9!K^h7mE<28|g``Z0_gl zg@gx47U{cLliwwv>?FM}g_RuL4zv=|1h_L%fdUK^Km5LEVoKajLYY z_fC62)nZMTMX}jCX~ZBIC%Ll6GxbvMqfI>z${n3**tsDkZ)_jBne#|MJ%8MPl2`OL zgJvY1Emw!S)5DJo_F){y9pjnr25W5n;^HKX$G*QjGn@M#y5OxlUq=41dmbSfm1dPl z4CY`84^<)}U1!qNCI4xL*qo((u#3;uKw7G4C-&Rw0UuCPwEVnmVS~#}WNY8{t_Rz+ zaApd_0Ual=Vv*(l;9PK@y{3>}S$C%^E07H7dg;EGjc3{p&HGQp$k((sAfph_XH|kV zUyTahlq}XHVwDK0IgcOqOo*WP<}0}&=UT06PY^P<#dBc%#wW~MmAsnBo{Q!f)E!63 z3?K(uiz#;98_KT${NaKHkG55wZ?k-eCvXiiZe z(6@CK&uw20fzd>9SipHx6qafbXVj>JICby=XiE^JNMv0?-bn=W0X^LeLveCDO7K1? zbJuaQf10k981^t6V`YDTsxRyt#G9zq;O%=EWfJBzkbzZ zM*BM&N649;Ly4RuKmc^>$VOcu6OPy>D-e+I7o(F?v8aoN1NAfYoQz~!tA?mkl0Uv; zdvIQ%Vbn}7Y-GWJWcd-L11!=n$x(JouA*1@^1HM7!Y^Bz4Tp z>bUj%;16*YcQRLd7US?(OOaYxH7PdGc8C1-O8Cp7q|aW6WCatr z@S|F&JLK4_Z+FH#_^suFw39hatQu=zOQ1fkL15omPWxGcdsnI{ETlvcyy5IL6EQevpM_VYl$_Rm z1G{geT#67i+!7_}4Gy;hUY;Ex94W>2yZArUem-xM%o~7UqoJ-`f~@Y53CpmOlaeIh z)wX;#h_+`ry7m|2G=TGnfp6K&i0&J&bd8`_ZHDpMP&D?6)d!P>++b0hNdP@TEfst& zdBuR`gN7|)f`ysL*{7z#A&%Vd@J=F?!AO8@Xl6VK@1yUC87-~|Fs8W7wX3pS&stRU z^8*$y=fEK#nrMeJSNe1a8-A3!#_^5fB>f^1HlliPWu43XEm8;=Dl2lMN+E!s3R3%MOLouVZMfOo@^Fs>i3Q7A$i z8CH#lQ9|QzcYbsZE@z-{3O$v61V_!4?Z>Zcnfhc_{l`!MFID81ap6sCsV`%Km=uyz zakGzE;~17@*mwPynHy>@z2BAqlh`}jXgBG-sYhYcc22dSpd}qwmiCA(K}CidwnSY; zaRc-oTG8>G7`55{v2do`ENhN5Ma5R#@`LdZRdV9E0;(q?X=TrMvSl1){LHPh4OD32 z@TqXhl4Te^L(CE0ltoWs$Ayf7BHuRGP)n@?LOSH&TS;Xe067a; za=WgV7M)JQ%uTfN0oD4BcI*5(OwxnZRCg;ZIqO#jb@qJV) zCDnHRg@e9H$9)FVUL0JfmUQ@sc1u~1kHngKF7KT?NBj%x;F5rx){z?Sl2?p2)0xYF z>W69_GEyQxDfA@OYqOyPCc0b5PsZ(bX%=1iXlwo@{vF{52z$_PbVu_XFys-Uq3G@q z7%5e87c-}7Qn082WOhWA-!^AECE-^S3D&e&t3!Ec3cd%5z_DI8=V<~1aUbl|!ejdo zJ#MSQX(1O-eFOpT4pQD=$6_bDEdeFr$D@Go=>0$=F%sr9wloJz(QAquksy*S-*swi>iAh_b2<$@jfog9ejlAl55fNX5^YG6ndY9N zk8sFUsblg4p8m^$BF{(_Zvy3mhiZ*0<+*P5COicv1*LK zimqj*`7_P5x~g_0u`XjvC+UTedv8Bb+tLsr9VbnXLjCt})4U$`5Fa%$7=&IWFyN|S z+iptQWvu;7_4Dk^?zLVyq~!1#0u|0&je#_MAfIL0gJxHcLB%kR#Z1D7SIzDqq+UXB z$t>&`76jh_-jc9Um&$L!^3_MH`};dqo*eV5JHi)3Jc_clc(Y zPSLJO6h(0c$`;ol&E?c(7#cR+Ah`_x)_n`YTaSc)qfsv#ViMuSW8bX|W{@>8^M!7S zbq91QUxrd?>PbSj&co=VD|1ql!O+n-1}>pU@Un*zLf2^X&V`!OXXs?_QCZWFYq(;L z(2_Xh_3Q;9@Fum(DCCC+0Cfew;P8_TWm*n`O&uDft5ZEpYfaUZ9x3>7iVhr%dgS@T z5K~4W{m2TpkrsvGYmrgx{?SsFn!!cBYEtKP@fIrBc9ZS|)8b0M9ob?Be}m8;@bG4_ z^`h$Mm$=O$hVDzu=?T+!;LZ=rhH89I1G z6sCNF?N_wnhuf1zZv2oBWsI5ZDSP)U)XYWcLGZsGTdL~}pHTSNz82Uf8?u2iFs(+> zM!03-$#!JVY z0CJWGg>Me!J*z<Gj;OFJ=Q<4c>_Jh90gzoMjgZRn5|0Mx!UMpL|vs25?p){rr}8_=QCm~&!~SBmV4Ypln2b#=gN=I z`vOyT6)U&3tIosMIj_6b*sBMo1~Zz8H%s`O9(HF9;l>{smixR`A_&j0!SKbZRRm<_ zCqbfGl|~wk@#nX1R(FmEvAUCc_FqRey(B@+>6O-3sL5E*34NS(nh4q8pFNo~Cvm_Y zf5Ojst78T*6~m$8fY{DTs$^wBBAR~%eE`?i>hKD+a2WPo?d{CQNAZJOgww<`+*mdx zOV+$UH&n0(^zpg@(c?|ATF*cn8qVwzPxE#^rDX@$tm#({aU( zz+Wr6uFySr5~VV2lWI^OX1H(aY-x%tYP$e~hNEXu_q%sD@F;GWUJlAZWV3aB6tF6J z-d*l3W%=@>En4>`-}=+3z^pZ#G3)0C1HyU$2cwMPduMyeb^LHL%WP$#!T3s(9_(V| zYxIk8TtOp=HZ`sdRDMS|JUrV#%?EVR6y-s=H)HRB1dX1^XWo#T-gY!yGc0F%lJq}J zMme?>gE;rve}@9rvtXZUFFlQ%P7E%eio46-Xh1!iXhQ+XJf^HRcg}q3T$-*Kyh%OQ zzElQ(8l%$rBB}y|omh~W7-VJp)!f-%o~fwjBasD~iQX3WDqHX!xYTvK=`xL0me zD7DL$PJ|!6UjJbSW#I^rSve-Vi9P?6Nd9Gx=tsCxK0--jPJjXbfD<}+4}+A5I0W%d>GrKF;wc5YYxagr$Y!?yz5~018{xK2+#uu3vxD+j= zuyV*_F~n^Ox)5|`Jr zh|rV6&+Dd)_YV1pyQ84~Iq5p0cJF1lRVnm3`E>*o%v$Ruy0)0*)?_sVuk>&Gu~s9h z$YBd{h4Ogx&`gy8B_wXdlq597M~&h5^uP#gnz@z1b44r@DIt#(X6vJaAE z$;4LcE{4RM&6yk{sL^}?busz_ph6x{+O(nbU@{!%oV}*&Ig!I%@@@O2fDZ=3iEKvmJM+|ENpnk&60&B2o8Chj` zf}Grm=`awRF#^0pTxpRr{118h|K-Q9B66U6v+pZ&$qUmydebkXzJa!hf0y?**g76|R(9nZ`bR>=|aPlPrWd zw02S&3BSv-7@;`tA$qD{pM!b6e)aKsE`tqs-kMrqZG(tUIuyT{xNSOMSyHA&$~@T( zrJ2_*(=S@&duqOsLyih1bKyPh?ktsJJ&SK8*mgw;^?}SF&V``xocdM&&=P-pzKd8% z378C!&O0O7Amjs1Z8*!&TuyLU%)Khfy=bz+c>DAQIsfha8hQp}cuBpO^NNWg`$W&T zIfr8T@@de$4)O({9Ms22i^vJxKgli<<#Ag2kYeVZ?*g-ne|lEhNrNdw@nkcJ3ejhm zXm6Aq2*Mwu9wS1L=jV-n7qi-{)(MfgtIBMe`V^lSZ zh(keOPc?$)`q|JOXIZ0z_MbRK>$$ zU=p9(oHEx;8o`T-kjFS&2KS$)@-2P9jeZNffrP28YABIshG-bI)!noxakn2j^hnhn z!%nyPwnAl;oML@3oo;jreyk`6ur*8`h74FH&odY-|mlt4eX7FX_C=~>US@ZDi7?HG6KF{fIgt!)hi7;B&!;V zW1`$E;b%Px;(8+HE%3pLd>vpJstbQC-gGz*YUpw~=bNOt)Cy_m_2W+Njk@6FggV!I ze7a(Ja^D#haN&a*#ZLndh&{WHt;;Gqm2T?Wn+Y>OcY06q)Na{D`U|9G3Raf?EYJDU z2qq{qeRV&?mkW0^xhla{bD*1PBgf1g)`C5T_XL8$di-JJ^ZZ!bX%U$~RiNgSWt+)L ztFwfKfTbT*mXBabaBk0NXtJcUokD$x`)c!Inu{qIDKJ1KwpK@(_~q9PLDIy=aLPfD zWQcUZHlOX##%63nBufZ}DVjw6{6*(##7Mp#<_T49{#B_gj%XM^S1|S;e^c-KZ|^)^?HJOsQbUxs455B08MT&cGRHBHqj|q zJ8oqLMU|XVeWAngv$LXgUT9^tmg}sAFY{dy3sc9j3x*q@!ilTqCeayMjWiW~0=q}E z+yVSdf!l)Qp4wEkq-7xo(J8OJi6*5359jUco{xfk{%@+hmx0;O4qx{YR(mjjV}o#h z>ITEMBocNSjy^)D>q-WZ4sa28s~t+4lrYQXy6R|Hkr<|&V9c0g+qr&*LlyMBOkC!_ z)md|%MgOtvibp=nc|pD?@IG*`J1`49y&g%kZg%LzaU4Z_int6q%0Q=Gp()*`|HvAN zRD&xudif+|)RDxjK>)n5kb&G$Q$$rXQ%R2WGEn;$LoSpyo#|=HM}j9?>OdLzJT`w} zApk>F`g=#pfv}bnxl5m~3PT7M%L~7PDkc_FJCw#(N5!M`qr*gndv;L390Dl=tn2GH z!3Zr|)HwPt{(Ac1L%bW5!J;j2t@%i`c{(?Kc6~)s3+ouObQ{+gr~NZ$^EC`#M<^TQ zvVtFd6mh~ie@PBu%j3Or=eh?iqLTqFHRIet=XA8V#>NntnTsVJ{hQ5@c5{!#|4+ss z<&ZW-Y5NfYRg=kIbWj2QR%`3JU8he_363YVc-tf&dT6eO%~+av{uDc;o~xBKlQOgDZHgRJ z3pMf0^$s(d2C|XX7!o{GJPrA5sDboZjK3jejualw)MZhWsJiY`bryfvu*8u!I|p35 zgg+Z-MzpkR5=XwI?{G%@<16qkeK%NxzZ_0PBS8wRCiR7&S%I`uZB-adE&khkykA)4 zX^K2>zV8quV-8}E!69Op6$S}QtS5Uy^EvMD8#<}b+umYF+a3qnMkTo^H#$jFlsvZf z_8D!0!V#R?INg4Ipub(IZA4$BS{3;@ipMnmXAE%dc1)~AUKnMJF!WfJ_mD^5=|SJ} z65UF(9u3XH&VXFLpWC7fjps#*lY581w zieo$`T!V3eX>Z)q)$QK*@n#MY;fd3-?ggYEY~l>yolrXC&kTc~2lMrIElQhjxuB}A z9@Aw$mQI5%-p1{U#pac8Iy1~})sMi~(LWj{YQcqL;ML>zAt*JOB)3*#0HRd<%Z*?D z!wz%{R{fwD6a8?S`Pdz13H&hAL8}GHc@&gihl|Lu<3A=5oBB9&yC~;M>oo-X1yJ@l z8>qjQ8v_6G>*{&w4guS-0cxrSQ6iL$(2zr_$D0aW6Oh-WG=7odQLZBsnz?d~HbysH zP2oGe@0k~0RzKlU3A?YSN{7gw(&K+xGUt~XK?OZKKm&z<$P&yQPid?UXa3BQ$lw{2 z1`=vd#s7xZ{eIWe9hiydgWPa3w`-tjiM**7roP-L59}SBpfB7o&@$?iul_zLH5@Cn zWT>HC)=JskABaMF&FyniNYr3+_5G=?G4SP%@1lv2H$0ym$fYjXH5C-?ddm99a@@$g zXe0B&iss!#zQ-{-?Xr}Zg(f@121WJw^h6`CGC?|U+a$cQd&7dsC=M@KMi~F&A4a)3|5dn`<@mh&uZ-G?<%AGFra%?3@#J4V;%|ANP8~5RL9i1oEoXyb}2> zhlen;E%+e~#X6VldQE6hJEv!9qo!95{SxJ{YQ0>x6a_ve@#!QkM^~w@ZD==4Z1r92 zks~AFS8Kj6`3SeuTQa($!Tq%x7DCfO9KWV?X2`IWk$PO31{T2Q;&yq*zm=@{*+*(z z)NAClwoIT?ymL)skg)ZSCgRIhKg<}TbiD47@=)v0J(w>iI@qf9O45R=!QJ0up0-B} z70TD=STU7yY?7U`3HD;dUcfW+cMX$=B%V0{79@)`&Br(KP_G0txZC`EP0hEuHY{>M z;c22b59c*wlK~S`x&0srR@dNcu+o2!%Kr{G=G~aV$A*SCp{Ex;UhQjHH2_kPPLaOP z@{8$d@af~L-#7hbXT`22uIr>z7PD#2xn*i9d;UcASjH?fYgx$pQvjtKEgj%|RZN<< zkCq;}WGR)K@v+!MYy+S zHI4p16XT9IumV_eWsmq*?*&$7d|~%7NDHjxYu;R1di4xRdbr0Si%#%-MJA7-ameo6 zXFpZp)XYD*9U;n0|JRAzNqE1P$9zrz5F#C3tb6|4LgCd7woroRY}&0PV}a-k%KaED zH>zv%LOhoYii5+U;M8C)U>;}F_V;t6Ayd)%XfTzcNf$kDo7yy(=a13LU-!iFkGe75AA4~64|-VwCOPntS=Qkzd*KDOgac& zF~=!xOojXRBQJJ_KeM5!1e}t>60XLgF++@-Pqh3_W}3rA2?b?spEJ};Ldq{>6;*^Z z{#Oui^RLwn2!N`b+7~>fRGBMAHv&S3@H^OJWRgt*hn_2%H50wEVI6rlP2j+o5Lp~(HL_`$5>MAP%G7R&bp4@2Dbdc*bLj%C z2o`!VX*@Uz+HU(Pe73atFkC@!+pQ9KuKv76qdKy?_b@f(Ckb!|FsSzsJ#e7ZM`khe zrz#YF^$xm2UtUNhaeos@EBbw>V=~gBOH>HwA80=Q7nAAf$LQD!7{)*jBMepEuz$KxoPHgy;$%iu z+#A6FCR63EPpXU$)U(>6icej!#u*O+P1YUY13+W8O;cE@U=;{zMN?p6%oFfq?NdH1 z*Qag!BZ(F@g-!~ijrwKyK2VO))pF301eqg!6)$ykFVHP5dO zdLMz{QA*goM%oBVl~){cqT<;N;+Ai0B_iXr#WNtD^JuxOE&F{CS;{Ja{8 z=iMVute((}#c`n_fSYEz`8uSMxl$&N7gX+ar+GNFcTUs~vY-z}p9GGU-3^^)8neAr8;L2v7cR2p^xtTH z!$*{(V~l!AWPv|NFJoSFd3|ev;^FA2_0WhEv49K0O~_-@6)r~P9nT#1`(TIpq?3*7 zXwj-GNcFch#hW0mvOdv3Na$Zl1ML@#pf>6q+DuX9N%C`hc(`@_du19*Y}WeSv|p|h zdi+|v4TiTMQOX)NY0_i%Eo6GMYHK?b(0ug_Z$dYrv8wMluZ(opHw-O2^P&pqFEh6? z1Ey0FNw@ywrCvMmLXVuR??VP&%y|3jH=39|(2E#js<~wQ!}Q~sdAfljA+v=;0=cdV zM|3XL!FV}eXsuP6R;3##cSKT_Ni61!Ys2i>wdHo&^>LSu60JM?;LNBfu9|9I z5LKnF=PO~#mf1}MRW|k|Y>I0PlaMV*G;R#0Yl`iP>-BNmMK({A!s&&;V5keM0hpC^o(099KyLa5D_e z+WT!D=-);qk(D(7hrEsz=OSDj(m$us+%yGlplihF_};D+`;SR7Oqs5`=>-}@2+11w zN{)VrFYXDjUZfgaI;|ode(I^WP*xR`q;@V0C6*5_&1PiHa;m>hwE0n1;I5@!IjUoA z>XCE~hcnsy8ZP#43OqAGDX=jKJMH?$1Iu%%zPc54ztg3_lGJZJKGJL8Qh9{Jx=Pc_ z{_S~qWW=x%Be3p!6G|v=C)hzN8iZz*E%4!HP&X9{uE+{oow&eKNPup&nEM%|`dE41 zl?YrdfNtm+D)GUaQw&m!l2m0#xqn)&WC93g^e0HupuH7Q4GVW)ysoJU{f0urb|ieR+?BM_Ym30|Ax$ef-RjbFFuUm=EY5#L6rx5W*)|5EZ0Nz>gsWlXkW$yb4>!Jp5VH z+VaulnA=QXudxMuAFn5KywdM^Au`}lbHsqhcxs;^WtLR}n8RBR?H_>nyzph(#$>*H zf2<|_D5-*&mr3@p%dPVqg0ENIHo?=K=*3iC_*G`EYevg$F2|D{3Ik@t=+DlO(JFrux5ubgsd@c7YcTK z?Ho`8MypyPh4kpDh}s`6KU0jWh!M$%$5t!J2vE6G6=qcwpnmaIyaJ~F&pegULeD`T zKV|UUg-?Dx{-K2?k`20yh1GIN||t_9_4&qL`r-&uYeET|cXVw@#fmMWjyenr6hx(cp8o#XMVMf-6Oh+FKVajkw1^Zj`T z*s_hy z8>ye%>Vc1~9(Hl2JUF-vz=ji@FIn6e4xiJF>4pKnqe{yn4=e@EwND{kc!)KD(PXIV zS!mrQEq9TePEc^#8s7X!i7>kMdU<4WdMm{F`f_(=5hvyBmwP5(H2n%|ar9PA#jR&R zre(!eEM-6GmxyfTJlklx+F0(jw*i6qraXKfA?2(RLK>6tT}qar8A;*B7t>Im!(EsJ zBg=o^T4RGD@gXmYGk4YBPOW%MBzFG>=S585v20pG~M6V=nsgoUmr1?TH2;r$|MHc zKAu;hL}xw=Hd8@J2h1#JeBdo}lf?(P3-Vwz<=f!li)=c`DCiw_uW(bNXN!EF^iD{s ziV35+Yw~X~3wp40)Wfk&km3n=u7H88ty-Q3Plngf>I4*YKI7m`?GCbp%!|6aKT9YF z%Bbc1dE^y*A<5OKB69bm2>!|`e=LA}5T;iMaD#o(;OeTWFAm2xa>T^QTOXisO3iz}Pn z&8q=ULN7LFR-!U6z}u@?MUyPmiHN3V$oa^Ug5JVJYc^0nCkQ$+jF#2~diJ*wjwZU) zbVR%ysQFJ`)3@?$Uxr-5>|+V4f??S+t;glW8=v@-+Q9_>u>RiYO-0V@-33A6I$~&X zR(mqO-VPqDwNd*eBIjycvMgu&06f2CLu3*E1XX{qK-fl;zGYBQ8c(}+CP{bUadNs2 z(;rV|Orfh8cq$cmhKjy6;r=~2(eN~HCje9U(c~*Oq_sgYOYg+wm+X-Emc0+xPs_0K z-NCg6WQ?7s_Ik^su+O4JhL^y@h2K|=wV0kYiNRED)?Uz<(>6&WGDjVwNbj(?JfijT z;&9~VNP7YT_$iIl6PH$X@_tI|uLcMg6sB)xn-mqe;$%a@PP!fc5t+0^!Hkym7LDqk zatJ#M%sgZ^jNCH%H)I?ZGtwV|L*7d;*V+D6T!d#kmWNIBr7e0uzQx!wxegL{Gb~ep zTY*q4+{AW$w}xDy)n-KsG7Cg5PWm^|CZ<2A2vP194>BAcGAsiR2(LDqj)CUe^3;-m z&!w!Tc>w5f~;)r~A9oT+J{6dM?m>i~SDr*v+oS0Xxmj_hZ{2O5whRXyV zB9DY_2#vI)wBWgM;0S89C4$7svw37W(#{KJI;As+Ff7#+8Cx)+N-iP_(Rh$+*ax%c z^(=PG>AdC&TG2&W_)OV1;5NG&vO*=$mX3Evi+jtntZiOqZLQcxQ6d?BDn5Pi(t~2! z?_G3Peqgc`KD>xl`=H43tb4u5e?yp&GVN(6!k`7MP*|eWOk31#476k)%@k$&M%Qa? z>ByxGQVJdv|74$ZNd5kNzUK}%&!S@Xs`*BExlMsE7Q?DH2!gSrobeSJhWT5X)(%4$ zn#TD?pL;Zo%TDd;k?kFogISH|hB^Qw3^-Cjg9k|-Uuu4n0uXrHEvUD-XK)taY1YzZ@t-88QmWGw4Rn6UtL32fR4{}tlJ|#mR zgUq=W<#;Ny)zW}klF-{cqvBu+%r^ZVX?Rh&`-@pBzaJX8fE#G-W>m<*0*ebMMg++- z;R~Px33|bz01W2KN(X2q>AehlKvLzktFhj7=nqYj+!bHm4 zmrLealFP=?AZE-FVa;h0PBmQx4Q;$(rKzy%Q{RiRWHk;-m)g;ATv1ky{2VBNQZX9* z`JY*XH18Iutxl3fsHcC49lB>>T_G)&Y%&0KjLl>4>xLZtc!~e*=yNp4EyFZH@!;3E zatl29*=Ti5vmThPZzHq>3;}Gp`WUurmwhO(*XdxZ@}ePH!g`Zm;_K4%S>*BII!CE>PV_xpMC#^rs1_Z<~3GVXiYY|f(H^8*4a zegX>82m{67<1rhNK}Ev$_xe2n+BzYG>d43YWhnkIrF_r(8)%Xs^*}bkCl+F-W~a?? zy+8!=0upJ^T?!w{fVb+XI;q49Y24dB9f@V$2sTR4*+x#H^Ux5kS;1uG?@hO$ z=+K?hoNi|E?+MO@{)c|K|~_SPZ9knXO`3h4I)R2E9#Hhc9b9|5se z#@|WXyx^GiuBY4r?Jvb!xq3BzFxz%S+@5*@F-vhOIw}oEpV37qnt$5^Kv0+xMy|R(Y-9|*(fEOj^J*~Q=VGe z0?1OXI*ohnHcn((>LQY7ow|ciF5&?5Xvflq;X86fR&@G9(I zI@CS*z5g2}Qjt^Cp|!c#$$#ligH5{gtqTKYdO3U*emkl5z;%ZZBLIy|wuQuPG zO&n7}CMJQ?JycsXDfLzUea|^Xk5LqBteb$VHXGZtJ>0y~ z;!y5%=6p1;?ddE&)VtRudM%F8qI+Pmg)pG5(=+^9<|RFJCMxvpHvZ~CuRVXQRA@_R zVCLrev*mcwfIR&O?_F6|Vug}_Kz%3%u0ZxQ)S_>Xwgde$RNd&|r#~72K8^8L{G!(d zMqtk;s1WQ#lh6FGLx*CD^-^1ktg?GR+hiiO|8x06d%xYrYke(?J3hwx>!C^6ZNHj% zra!xIRV2&J!h?^%-C|o=5DC3(py_JO`y30h$4MYnD-Bl(@w<0c%62@Z>BJR0X$RcB zx&keAB)$_*pf!7Y_jRnkFygA(#8u}wWf~?|kxp3by4I5dU7`|qhWd^unLpWfS63pB z6s?b?&&&E3X9Lsrv!V0SPoR&MA5zQP!Nm1(TwlS5x=&8k}JV~K~r3UJCkB2-VkzKDv5RB=7S=f zv$nHbaDJ=M1d#HW4{h!bWZMoeWA&guSGio!etn%C2@WH%Xcd`-DXdhFOwhOs85t$s@A z>>3P?g@){9#@Q98RhU>Fo{g$G8k(3cV%-INIwRrzp@bwt^-_Aj);tJ!TAWk&Z%nO3yu#-Ixe+#|=y zY=m&%%yo3ltA=9);xdpZ`J;`V$W3e+Ja6;Y^ z3yDKHh*tehVuzTVaK+}KNqZryAuf4;$2aLgKF%*ab*r_4nf{~b-r?F0pG>(1a@rE& zccHN^{<5NzQnh3qD!euJwU}N31NRc|q3k_7g@3D*ri^>>vVh9Zw=dL;?vCLP*S+#h7b5pqLfn?TLD4Kv zc^NF7s5hEqpJ?sR7EX0z#o^GF8CU#b%GqcfAI~^bL3-n#Z;pH$fRUR#Yu^WK?L#b< zdzN9+PcQ>(d_q{VRj7s9AWop$-*5{3skr)P?~`Ojb2>yxpTLNn_=O!mjFD_A*0FX< zndeCZ(oVa>Eik)mNTZ?15E_JV@VoKQ!MCUk&@u%5gZy(%5xbT2T=x5!`IExrT8GAK zuDOWL$^RMBBAPCcXKxITR0XKAi9)Qu_&cTuD&i`Nd9QNxJ`1{jGLxGk<+1czNg#zU z;WiCRw73a!gvNKj0G?yfcc8$NO#H6pOX)4WXj4PT(}BZwbSHM_G;$Pc?Z5rIcfjL_3+JLx)U{lpa4Sb0M!Fm<$?y#Kwwr_vnBXOzoz0wTIefs>cEqP570*X>jEM;d#` zS;-Z!pV5_G8aYZN;*cMpD|e9&69R|8Dhd_FszlrI=SN7wD(iBOfeg59NU6Q6?Vv(X~>nbC43ZY%VGQSG*1;Zm|0aSBZ{cJAxoAmrO0F-z3G+ay*VYG zRnP79!O_fHOjE=0tUv2WpEtgJ1zfY=od|W#a?!a6yc}((6^|k!v)UcbH{BupdR}tUhP51J-D3W&+#&~#1Pu@HNY#R;)zr*92TQ4 zloj--w}Q(0T{ID>Yj5eAK62dGZu@q)`@@wEV%xFHXYTEvkwGQo{zQ9HTOo|O;|3V? z`cz$u3?2eho%K6nPLx|H*Zu#V#mWl*_YP3tp1&`JS}^EBCtl<@gTd!@qTg@WP49xZ zK`5CEa&~qp+1goz1V?E_0V+!&3cp^`sM z&D0K>Oe{|tS$ITm7#2=O&%E_BHHq{{{ww;Ua&f=bkwbnSW_S9>qP7nY*?N% zAbG7)YB=(@Y|Z(k*KUa7y*WYuoKToCK>z7xV9XJsOk#ZiY~|w!Iyv?tsK?>thI{89 zq*NRAOYNNi-V&If{4^7)x!B;qT4v&)?mcU{c`){nog<@J69jBd3PR*|Iu9~>iu+Dw z!*FBWJ!+skIN$q7&MnfP&kT;4p?@iRq6f0cCO>kFD-@rLxFCh*Akxz`FT81nj`~^~ zMrd;A?N)?pw{(>FdksAaL5Ak`wcX9m1S(=pQ?1i z{~vHKu?Tk0XQ1kN7hV`IA?Ej_=qR#kyraTINKMgKf=8p;C2=0Ov>oC z8;zI?(v&3V)s70kHRd2FF2TPV#+U$lWmy5{;pI%b%5b{P2Z-OvHp|L3}S0uv^F?~~9h#)@OQJ;XD{~wsAvW>@dK*!9BEZR@vBcPdlGh8yC zI}^zW??tG1(>+bI{PV`zi&v)IL1};(97gnnj2}uGMz?42>LhIBEd}3CLx^XfCOCzh zM9${r?ISd#muU3!M^KcSK{cZMkX7Tv^dN2wW+CPc4Oj7SCT&iDa{rkf;KH&e+Ml^4 zsX31D{+BzpzPG<1yN1H3EQ|h!c<*o%bT-SD+<$-fk}c@j&YcQUNMb-66|}cZDr2&! zv;shs=^iucf}=w9u*#p!2T`*L`ox99n9YhzKN0NXmg(H?Ltcs7ae0_pyIBs$X$HUm zB-Sb{idKFEcP7{VmG`)QQdeQv!jcCFFU-zQu)e-{Ve-(0|qOja2w)Zs?l`_SHQ!%q}P+~ZqEp%ZM6`{+5k z8tHZ@ydDF~b;FolT4{ghWGSzI=nq43u)IDSxPmJyD+E#MOV5kVsSeP|q2ZsX>pJz2 z^v=^fAo-S(^Y^`=rUbMmRAge6eR({T?c4r6X6$6_OJYLEI%SI}Yu1>oiI6R8_EdIb z%f3regQP@+P*f;c%95l|%wlXIDk0nNx_h4I`}Ta__n+Tx?@F*3lU`yX=Xy;@NCsmQyl;pg-9kokx@94SY zwXH-SUv{@I@b?P&RBw!8o0tsQPJL4(qK0`cCr)yTc9;4XHO1Sc+YxzQO}pL&W5Ib+ zJs>6F0uyobLkBwbqGxv@#by=Qi{&zrOmc72Yg<7i()>I+5xvGH&^ zzl^%V(CEOK6dpZo+m^d?I?eo3`iegh7qqYjb9mAjURJ#kmYeo|I{-p5yqMc^62}L z2EXJa72CW^qn{0U^`1`RX++NSHPd{{d0-*mClGJ2?Rq~y^jO2W+P6NY2`7B|4poE| zEWflkqo0@l@qWf?)~f>MnpjQWD`lqIDfiQ=A~rDg9Y^wPk4eOfvl<|+@sE#B&{nqM zNAC!mWXiToa~q~rJA6$%M2o`hJ4DkR798NiDEr#tg@JOJLF<8+N0nH6#3-edOE-|2 z%Bp6ytoLfJPF7);LKqENSl?GoYo}5ldE586Y9tGr%jDTdrW{>wxTPIl@yv`NFPy_U z-N>%6zrrmv`Rb{Bg*i64tO&EF@=HjxnM4`3d&3B?9a}tPrg42RzBxtF&g;R1ji(!J zZn}IA(OJNq?Gk-yWR&Yn-PYxlYLSd}#B<5Su|P%v&tTEbh_r7EHFuAEsTSGaF}L_& zHNNTUh^V>eQGR`-`D$YCj*r#)kmsyKm+&iCFC^|^y33o1@LTH56Gnnm>|Jc2KH$;UV{?<&0MFxDNtZ-ExQQS{w$ z_<--w_^Aq^S@#Ljr^gy)TH_ygBsWnD8<%mnLVGh5N1JRVOp9GOOCy`tw>`oJf)zN* zzKGqht!UNgh+gGbQHa6s-z~RSkMHeLS;&9XJFaD#kxOK}nw9Tm+Qo^(PN0jSbd~shIJ4r^a-wWefH#+r~A55Qnarbf)q!@`ntZpPU+_Q2EP~NZhiQxkF?zG}D;XFv6Ae`jL;yeCxLZ z7iR1}&&S$?%$kg7R=PIvDG)yr@!+QkYt&Y{c^|(f#&5T}x95JgvN^pJ;Yf%r_iYSy z)HBo0Pb#rTo;@2SI~~KTlJ~f1D^LV|uj8!Qqw282Y32gOa#Q-MPI~u(vHtd38#i_9 z&m2t-WJ{mq{IEDDcyGhiF)wI7fBv-XqW#&0$>q{n3kI?73=Z|Gec46N*QEzAPG^I= zrYz@6zY8BG}Uh$-3_LY4(*?tZnILplKbc@GI76`Tfgd3 zhTE#0UKKCb&MrgEwS7u-|=bKHd}zEH<~y_D5)?w&ejFLJKL zAm_87kAcQdPTW;7dp(1HUf0?1`H}=(+e6x0+(u^U>2|Yrn%Z1kwK_(jqr>fKse_e` zc$Kdk5qQ44YDL6g*{`Nv)Rvf?JR$M3Wjwi2i}AF~MWYgCzLt`E4n>%9OY2I@)|Av_ zsFoJ}6b%*h9O5o{X#4Q^i9=_0zE|5D=iIy@e*8Fi+u;1LHn+EdPEX3OMX!>*D@}C* zs_K{w!`!vzs}HR66~05sc64tQhgjC|#W}Kx=eYOZ@q0QWC6F|bx|x2j^5;}XY+sqe z37Swu`}oeSYa-4yviweBntAknlSqA^YfIlW$qT`z#kc#%X)95)2bHs2#&+Mv&7u~f zwc7?NkUH&+J-$Jj^e<0%$$ThPE8zMr+tX-1L3dYW{+Rha3CeEgh*smPj&xsgSmO=I z{Zy21hTT)&vgw1LUxz(wGI<+m6UVnzA9#D|IE_0O~-?;c{GUPB%jSxxVe#^<*^YYZE0-<6S1q*vlPHcBKoydNGEL1xee9DjQ zN#9Sp4L)n?e%;gSd_OWPDIUh3>*NNLS5-YJzrGw6bpI3)za=mh851Ld$zn-5+%@x7 z{_5z}L=ydvJldNDN>G4!{;%=v&M`tb4gWBPX?^NdQ9;6PS5^?0NZ9B6i-LY~gN6q$ zOGHT>vE}rTdfISYPiX96fcq+6(^X|kWXkETXn$j?0 zHg9SDjUmtW+Yl)ya~}fv!B^CC;!x+AAdz>s%y{YBPt@yHB~jU{J*9`}-X|`Vl@wh; z4ng4!k5^6jZFs7pxV~|}I3Rkc;(-mLUg1@icRUkkc&t7%ZdFG=bl|L*KN{2ZeY32O z)q}v0s^sfaNONJ>gyy}i{ENOu1Umn$hz)**08_|&oO0eoEM@zhldH2=sMw8|K z?dTA1+3V_x|3E0-g_}C{#ao@crp>z12>|l6h=l!@mr|Rst zR!FgkuxLT@jmzx#d|s`k zuxhO&BpOMLF?~ z^tF|7&C8J=6s|?8k+0{Q3sGM5;(X@}Z@GOx~!ba=9f{eyI9o>zUBG@nhdY-F~^ zt?1c3lXAX|3lh-_N9G5M+LG+VVlULO#~PY!d08LzHgiEyIh=_%kX?%vvwIS1+flUU zmOGOhudEx-2&P*f=;&+T+ncd89LzqdQ@X4}z{c8Rnm%*AtvvZWb5!F(>8X70v=;FZ z%^R5uWF6cIq~jqvhcR?_mn9 zTbWA6^-5+Vn#bEF*UmfYFqvHIQjLieY7|vhZK?G5*=!k*Br>waTQtNqqi(V9bQN3Y zw61cJzjMgG^?=8smdw_gv(Dw((NOpT|e6 zN}1)pvQRar<9z*pl#Ujpx>TLdKOf~AT-w>FtvSuLV4OsxN~p1J$&5H`EqqGNnhW}H zr-H~|_sli-t)w=}i%%-HkN%ekGOT;YFjMfLUZ3Jlb_@16Sm@P&Xh+nWW$b?M=zxv#`1 zYj@TW(+0J)T+2(Cqi;7I9fGvH9kvC2-X2|#dSWR$x>TWXeki)CN;z!SUrTw=RQje} zR}SaRHwtgjp7)PAqvL+OT=8Of60j`g0`a%xIz1xzd01C=UmTn~(tc0%ihJ|DV@JwI zd8Q!4GSOAW`=xhg8Y54aTf{TvYU)e!pWfoQy|P7kyd~$e=YYxihBjBB{55PV-wRkzom{3?p~>OlCx2ba%;mB!!M z*Lzoi6w=dwrmo)u`INsoR-MVDf9{#O=zOa?vq$CeqtdbLYign5r81OM*Hv7yP^`?8 zTg({^w%;Z98glHj^0ZZ7(yvcF+TC#=q(mt45)A~&As}cE1VI8w$bfcB7%9R#BxxgI zgia1=J%SOvuzWPMpD`jhd*$8U(&r0r=lY&$C;q5B9`%^_)JdA_b0KXona=N z$7U|cL^|}OkXJw2Uhs$s`&`tP-^Y^h6;1I~^3Zp5H)F29n|@kBsGld$LYq~wQlolc zSY^=hJgV)uJX&m1Fq^sT>w>kE6^~09(+iWi31I@r*Y8^u_-mhufJDF%3CYg!4W1+q z&_G|HwqoiY$etnt^2%Z$I|tPcQt93hDEA){NP@2kB-UC2Nv$uH%rbbA2({%<8L(+o zR9hMq!lY4IuxVtdjX*)Q;is4(3)0r^t^hnngV7>GXaWh*_I8TCjfKq7)<=aO%g_)= z>`)(-4UD0|7#d0=vq8`o=0O4p!V*YG=;0Ymz%@xvXLojY=a&&TxWm}@UNH(*HsJ$Gyn~11-JzBQ4pM~#kP^6L7r&A?TWW&6MUu>6;wK;i$}59|Z;w+|T*BV5D()D23bk^%SOdcpaCbAdspk(r>ZSsI)x z5ymD4;>Q3?u=dDc)2MJgfAa;{g89M>c)|cUaz`i{<}j53@M1TZNTG+U{!=#~V!w5X z*7C2q!TBivgM)BBm_%ZT|I{6Yi-om>gd_mXjt2S)unB{F(EiOWdcZ9h2R!}{@4Nr@ z@el9o{*Rph=|ju$e|#_iA9cVM(2L)>`285zr-59FF^(~027m(%<}kt91vCs^&#+#= zYx}=7&~9M4$selR*yw z`XveS?+Nq@Ui(O(5lAed46l$%RCd6VX#h4lfDwUB{EaOU#^#^+FFlL;|H0<}myZ1l zTlDGQ*fcTvK*NAm;0SMz1Fi1>zF5I?1eOMT{y>*Z(}t(eYU*|XUbKUp_6pj7o&(lc zJT`_Hi`5}onc~TNK%e9U`G)fd_rE`N*Xj?P1i%9btmV`;5TBD12GN!(iURdt203B? z{Nz6gt_8MO%t3$k2k{d?ouWaVfZZfCIJUuk>3@34u|I4-#OD6hQ=*gp&z{1B1NDgh zD-RDbafcpay%6&kfz{T;qu5bVEqaJ+pyNsWAS95*;IIqGlO*i8bh)q zs2QyJ%%K0%U{c9Q%@`tcTMQ9_F(;n}^B^n%3HBhIu*T3rcJO{k6oEw^M)(g;L7>(M z|2I?Lfv?lR4huNHyS=Lh#|ZWzzxyRvLrn0V0tEqEz>hu1%^s{1=yhNXVPmLJZ7dan z^9`P32h+&Q8Bb@KATh%W?tW?*OApT=jJv0g8wMQx&$)QJxne>+gFP_89&Q*b+-Z#4 zB{!Fl;B(Gk#_!XC7?0p!e>Hje5dTYZLGE%F+=4M;usK(?-}4pa4l81G{QNHmdY<

^r1wRAh@D~HkY@xhqGvw|?@Zb5E=7u{UtU|Zk@@7+*N>0}58 zV$cMdf&oW#K8S-rVL_)++d#d+w6E}f48rD9QCL|jD;Dqt1Na7wP*IR9=u`P1UkPLy zP%AbffyB2A^bf=j_GeREAWtZC@)Rww3-6WSUK#PXO$ayP0KIuax=wE6ks>p0Tx*f1Lbk z^VFt|kCmX+lFz=Tl;l&0mq`K=TZ(vsiOk1afoMfE9qCkKw8z?J$8GG|2NtXH;=-Y) zdskf#45mI`c)rt`Xf+^8k`D|koM{fwXy4cdA3clkR=VYQF+{*C&3;=?IxFP@je@vE z?hCq4vZqiib}`8_R&uwVhiS>B88J{JqUE2}wWa^6I&#iu%=yS33l-;zU&S`{1YbpF z)$&LYirdp1b!5!P=Q(F2y~A8H4L>ty4@4+=K$mB-#Xqld;jqt(jL34vK3w=sAM*Bl%m;Gms3L9 zJ2+JJlVt647oDx+0w3mce=Q-E+;SO&aw*~*?{-V#hg4hHi>CB<8O)GpCsy@lcRrcL z_6HUa?^g^{gJcw)8Chy878Zj8f@CL6HZ}BUEvyN=17+H|2T$>oNuAZ`r8|1n=jyNy z?O69`r&RoV?3_W_0x=L>epndfeN&$5kT(_eG7mqIJIfPXM0;#%9( zs5sGHXLi{vYLp+#yVtg@j)?bBeCv~pIi@FDzbfCO-%=dsDULT2-?(T|Q|dUnRDJQ& zp0_LbSneDz`UT}ZfgR%aa|rYU)K}KJ4%4$wv|nY^JDb@+cWn1WcUta5tMHBoh^<8E zU<6dm;-Hgrj$_%){9mq~)ZJn{QqqHVXQdUFBfM0)r@~v!zjLNTd{6waCHWL5cwzl+ zsK1-OOJ}@oBunsd1+{O!!8c1eD^XC2`-i%(#OB56 zS$+9(m2r94)QY5;jl}aLw&Xg4uQ&@Ow?;nb`G%)=yPL*oaw|4FxOd<17l;Z8?%ivf zoh$Q7asG>4zosMAg6>Dnz7KceA86EU)@Xt6z`IQA(95N~O_9OdBdhKNL#_YV$ zx!SIg_1E_XV)Y)wuo?kwPeuW zD8zm{=cQO2QeAy=Us$JQ2`{?auKaAJ)Y%(NO(zX8-mH^FR{NHPLIVt+__y?wS}1a! zm3sfnB%CRKd(Q*8p~kHev2Dw+?{((YqZOG>->$zpCTWxW+~L`01Fkz4mSc=;dynys zxi&9Sg8B4>u-alDpRyUGJ*xH{A3O6RGWN(r);JASdDRpF2II!I?bloGb&Z$$%c$cz z=sr@(yQ+Yqz_jT-`8TPg%{z)247kZFwD$8kL@yu7dA zaW-S^0UhtD%ygXFN$XjydTNWgt&w|~hlu>gx(u59O1?NbE{Ep6HHoIU6({XScg|fC zi#xH|bBJB|bnK6H2L0Hj-Vg7w$>T@9tA{nq^?INw=LtT;F`JK*yVeH}-fMc_B&lCw z -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�hp(mLOXRd<{0|sBAy= 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ⅆou_9n6g~CPva%?FH|Tqt!gk8hPuUX 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 literal 0 HcmV?d00001 diff --git a/binaries/freebsd-x64/mdig b/binaries/freebsd-x64/mdig new file mode 100755 index 0000000000000000000000000000000000000000..0b67ab7713a038776250b8b14bad66921a6c5d00 GIT binary patch literal 12472 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 literal 0 HcmV?d00001 diff --git a/binaries/freebsd-x64/tpws b/binaries/freebsd-x64/tpws new file mode 100755 index 0000000000000000000000000000000000000000..deb67060ceb9e352fbc019bd522dcbefdfaebb3e GIT binary patch literal 101952 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

)Rr^~8FlFX*)sgvdi6NEX_T&) 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 literal 0 HcmV?d00001 diff --git a/binaries/mac64/tpws b/binaries/mac64/tpws new file mode 100755 index 0000000000000000000000000000000000000000..430606022db0c9da4a083d6a45d7a092b4d23e81 GIT binary patch literal 289560 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

mlpydOinJ+9qA(`X=_@<25Z`8% zd*@%Il?qks7g>UBic~CARZA^aTZ@dW&c!%8-J)}~0;U#NAvLRu$6tl@ERb~zx=s|0 z20+qg2phB9oHtM`rilbxrGzqxFl&zmFr-FtQ?ptpV+P2}qQ8*CN9j7PFAA;-(^M+o z&kDV$Dhsq&Y5=3Am{*wE{A4Z<(Tv(#bnNKpnj|7mseG| zD&{Y^IQdd$>8m(PuT#UbQ|8p|oL9Ec?VRhfOfLd8^3^04l2bW?*5n;|2-b6auGbbO z-|MCATzQDjKFkRYhDv2Ji@J{$J{Y27Af*nlECvbFENvl$Q0ai04 zMV;Q6OjS6U$>z`1^rk?$)VDgB%uk{FWvz#Ujw6zfAQxBfB@1h32;1Ya%U!gw(!m0)BzISnbWI6aIgk$jSgzQb8PMCoTpDfwXDJFV_X1;H8gw1H4Hx+nMqs)JJZvK~

SusgQdI-I!zT>*V%cb-I0_9c{Gqs- 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 E0}jRQF#rGn literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-lsb/nfqws b/binaries/mips32r1-lsb/nfqws new file mode 100755 index 0000000000000000000000000000000000000000..b9527a437be850e9daedbd4e1f6aca48d9b3cd4b GIT binary patch literal 127224 zcmY(pV~{RPtS&nC8hedx+qP}nwr$(CZLYELj&0k#-`@9}x^=ti=}z(_-9I|jRY|qK zsEimeFfh>n9UwqZK>wpr%!>oD{2wDYB9HVJGYqexhTE)X+s8W&D2{NvB??rG0GG&U7YWGp;H!dBpbksuq!k7G- z(?cdjui{G!23}k&Jn_6()ZWi?O0*F+Yl?5-_Qzg<_AB}V6%t%(;NC{qUXxa2cixN`|H`$+`H;wrWPT)aPIBiyZ>BoQnp4N{o#{m%l=-) z+Sf9v<^oyK=NU!Lv~_^iU`kh$IeBL}?0B0Uvr^EM=_EkX)&dINPTS_Y;dHp}NIxUHdL z;&Q$2_MDl5f9R`QlFnQ3e?CA7e*e8S*=5-v(i6km;i8;Ot@hA`)ytbspPdGc{f0ml zoQu90huE!Y&zyNUn<&Rh2M=hY>=n!yRb8mMv7jWp#SAlL>}~m`&72GbI26OzQe1kh zKpP*)L7)olZn#O8)vYbMsa1UPlkN0P=;vtvS$e5=uqsK5)`)h`vP=C~69 zOUVK1o%oJF5adi7Qv?t3(N603?osO4=*azxD!tm9K`|D#m*f@D{Ff)w(8n{aRlaU& zM5#1crP`>#oSjPVr5!wvb;R^IhyG9?H11<(wDRDpWXM=Up+vI|8+^iKON#<^1KOyT zZ|m13PV!aIt%9m0I@kImDxw1GlN=l_M+FcT0NZY9D3~iJbA)|#b-Nx)(1*fVHByBy z(+)AI;hX=W7`AYx`S*|NuC9)oMs~gVa8-97kB)zgHR1~{<}mQbyAej?unH<79>Yon zO-XFX9E|f{d1skIJFxJ#85>Iwt3Rt@D;v?P$Gc$EsO|x#S}9I6Pd@1K^}xzNd+v)Lwtt7-HN9NtiZL`uytTBG z%b>t{fBs>&11+Hry8xx!otsT9-SSF=R!E6J6_o>J43?kd?t~W-CqHdw_qyX(N6sBf zR+W?{_eVT%YQUKVc>mAk=|z2y`j&S3A1;q%hK1@h6}`7?vDj5>0q`oHO+9o{e-0Xx zpJR*Qh%up1S332YWOI4#*~E{t#yUNnU6!4Bd{hPzrSk0>o+;5->tEWCk7@v zNG18dh3pV>)lHw=d;{5S;-QfXu6R5Bp&Z%$R((t@o1}5^L^~7XfV-c#KoiMUbj!S( zwQ8a1%UEZMW2I9(_r-i26*v58nSv3@1z_o*>;0DkP3$3t?q)l=@QEvL@e}Wu;<2nu zAD_W(JXTvBM~UxO$5Af|l9uZ-BcND(TwUZg8R3>3q5I`o>jn*qYxK6Q^59_L`XOUH zfjfdl(-s*~bY9FjTLu+hd&P{CW*qV?p9qWg$-3Wgwt2%*nEKs#!W|pVZA47m*c(Bb z80X<)EMi$YD0cwDM*#OrGD3ACSc6jO?rKJ+#=5?iJt4P?`O2nocxb1+o%19pnN?S! zEi)p{oOuND+^9M~K%D!F-+q|%vt5HL18+n^_u!%659PTPwlxYWAlJV(+#LAzV!MFZ zjhf${hDEs%SVzn@b_JoPf(M}Sn(5;h zPpW3lAaI}|A>>-jS;Tz@OCNnPxsY;@3eBxhpuurpTzpJrt1=E|6tR}l=wO+{p=(z` z`mAMdsK>W?re3>K4ExT&!}XNz*UchYD!i6hrpH0rHfL<9Yld-3Ss(XbUaB(=rlE!C zzHB#ZT0(H~aRK*O_OGA(ehx*9xxCQs#Y2MV-pt7An$k`4*lb1-$?6z9zXiDiU8*5Ct#_2`~nWaOfQmGSE!jI4rk?}rbcsH8K0T#Q^XM7f6eD?Q{DJen`H>HFQ_aSraY}Wn{lAF>`aO_9*0(TeoZkR`6@( zmcOm7kyY#J@KbGGd|^m+{`COj2Ba2tZ&lWK|%}&ZA2Sv?tM8Qshy zABg=`K*aMY<^mp348n2d-0of?$-j~cYXCyZGxw(kiu~~Q5#q)}ws_%Ys8bWJ0{ccG z(xQu07CEiSB!oMIGg79|O{%uD-dCq0c6uHax|Kqh*I(5F`a7|}4O^(lG z_e0nP$-$6%RuO6+a9bFkjqnAQu_AmGuOcWU^xV(b&dy7Pz0EpKMp@IX7Q{{LAxbwJ z@RWpZeU;ylK3o+X28TQN9>M(b46HzZbOZ|oIS(B$p7job6xbT!+=0L=BhyjeA73j~ zFBEjhX%U}Hu9dQU*NTPW$Ds#jn*P!`z$B0C*X*>*!(R)Y8a@uqcpJBqUUMoUC7Bcy zfWv%CAW%NhoQ8(1VrKSk@Yt{f*;KWaa1A`bnIltm?m)6{Q85viNZV2hWlcabfOZiY zv7ly*W3o&%(56|3MW5Y7zTA%eiAW22->j?G#b5n!RfeD&5DW>F|9R2SVnl+10@k;^ zbz{0xjLYTM2-kIM)%J(d`!?9Eg+~QX!_;oTw(scZD8_ z!%#V}NBrrJ7H5qOVRFDf?#tfWJgFeyj#hN-K`Kv{b5jeTs!$M9Y2|a6eS4s~7*vMu zW9k7PNUO#^9~nKSiy)_{NX!7~(dfGJUC<~b{oO@WbCvJo2k*k`!cm<~8E^F)wJjK}jc` zvptc7#r25#aS&aZk~E^B%la{%2fc0&pC848sr*#aQuz1-FV~~4icBiRl|*f?CQ`3? z6dj!5mL|OfebVmykX{S4{&6)dh1gW>p^tKZaEi7!$E`0WnDmWG7*v2U%k00gkGykd zMJZCc8YTOM0jdQ%OS5Xt9P%-F>ZMa}l(!1tFYQf|%-4LdtJOZaNIfZKXLD%$bRBAJ zQE?E;T;n(J(5kLaC$ye9!lZ+rc2B$;S6BP!Am^80WxFQd^S2=kt z9MGmaz|s}oX4OQFhJ~=l1s8rwB>iE%7Myz$D7WsJ9%QE8({F8_Js!30ZWxB#J6%k| z8)rZw-Or^DtX9iR$s7DHwsat)C(vOp?ipuevxKNlT6g0O%+F)hQardaA``R#b3wnV*DIQRu z@kYqSB-b~zoMjo&LUD<8H%e0P^#G>~@gSYi)^xWyEW7v>@SeHoH*st+o@6d=kib^L z#%mNiY&wCAqC`fgrHV=?Tk*_S4CQ)gx|M=}>zRrVCyzsezCa-S0d6hMZ*}0!oS^jj ztfNVjlsPKwW#X-xv_$?28LU!%K;VR_{*ts`Wz^hHis(egPdbRl4#xL7?aV(olpUYR z`@&s<=z@P{vYfMGHsAwcAOkO^>Gi*7S7Ru=vDf*^qec}bWQLEN92q^u)dw|+taFJP z0u!S4ce~|8e}sljYt*REt5)eWu?`cNPxJpV><$M8CQxwWjIwSB`ohX(_T_h$!Jfa} z;AEjl7OJI*8-<*pTw3|6P6&NIAZ_^ zFp7GE;L}iw&MOAGI2PlHacR)2KBN?zvZ;m@{PGtSg8ODH3ktA~eLQE`X84<pY9J|YurUdMGh`XB|bV=v&-07=2 z_%(rj&Ka3nFbqvtm2=&6O-oo)Iep3g`rJc)6e3h_RM64U&5+3Mvrql|n?Ps`wx&;U zE6{e?WVi*pZ>TmX?n|@o2gzvnJ__COM-NqAv`-(E(f+0E}&C- zyTkG>KYf{m(M7%)cRW<%hZbFBE+)hk$H6jh^TaA95QqE`l4&G4|7#G}Cl`c=O=Gmj zm)@(#nesfD8KYZR53LTa8jGq`wztD3bj;|S?|=UiBZ+*uFUo5lz0POtNZ^sq#sT}t zZ&iTccz<#`IuwMNQFeKA*`5T54LC^Oy@;02U8p7f0?8zzK`_MPlkBqw$Xqmhw3%~M zh?>bIGU>kqBjIP8IPrV)4OdGbcoTyr>^e4!WS8EmVwGkR6851;xw&At0VUnsbWJgw zydiOY+XIC23zb-?fjUWyjY>`TplLV%j)az3VZB0-)kBvy@dL7F>ao%p62y(~?Gt7+ zRsIpvw@`Nmxm+0AQRo3!@wZl{q#^=U%Rz1jo0q8C6v@(>e$#-MxmZp>9h?`6-$Q5h z1dqoWU*wyCU*bDPNetpcC_0qf)Li?p7p@Kd2A;G3eM(Ku)aKh+(&+Rx0g0S!A#JIm z5+B%wG$bYJpe)tukF$~$CM+|L4)XFSGr~on>~`6tFOW;%1V-%oVE>#yemj%9c4Nyc z(b)FYUI-Q5r%;#flrEz+h9FEIGJYUTk2kfi$$?sy<_$GHPV;W7vM_cnrxguk=N`Z! zC_@c^Gk#f{+C@PRCPZ!5IiE+^sN(WX5bb!HUB$&_fvp6AxxV5Mlag_N9*`SjeX-BT zd&TCit%zYp3n55#Mj1Z4k=u+V)uH#Sk|a2XXe6F8jM~)AfXFb=22j!vTOunCp<{3| zao-}sB!RHN{1~G}@9vwRVbT!sJnUR7GuAkud^jtK0V!N6j~wR? z$z4TV3OAjFj9xVeAbgy#9su`QP-XCzLUQE~BsL@v;m-`+buo$$@7d&%V&~y%3K*t3 zhlLj!Uf0g;f%8glSmo#)CBxQie$oeLK^=8m#_LGCT+uh58*Ng;ubpj=EX^+h+-UVu zdsPN8_>zh-Nnd$jRzVONSVg&qCO20jyZZ*n?TNh)1r5$ppt(myR8J+(86W)<)%-R? zCLcSU-XCSULNP%T?SYJl$0^BHKw+;>nygGODGNp){ZSpy!VC+%aUavqqptUVW-c$w zCIpV#osPw6ykXVZmJ2uAVz|vC5e2Kjn0RBfBw3~_Z)ONWo+}7uf_2f3|GV=N_05E~ ztxF+6T!o5Y1=DbF!ytpfXNh=R>7NDEx&h7hm}RMe%$#mLCnYKf5wlp}EEN z*jMI9Na-ZjknSB-LGM6}F?`>sG?j!~noX~WP$&+oO$krCI}Lj=w`tp4h-N|0n%yX1 zs*N8E4(-K$yLS?XaG&+l<6iJ-7vIDXTVJ&oXx3FxNmDtAPDf*=vU+7K0Xu z3t5Ia#xT}n#%8W{L<2~$=F5H|Q6U{iL`y9(5Nn3)9LZ)*&|qYe$^C}ntqm-H=vJ{T_@$h!1p!f zRJbD6F^QOj1IeA;ayM5SOe-)m|E(`2SO4_1&Kz?fo`lBFK4=kk`Pjzp-~>unjvN`J z@h-R?;_<*8ssq`X?mqMX?sIY*r-|nNXojKh7Vzu{V2Wr1p9cQ7PiHP$jpE?}7Z>XY zv}ZtWs3;h>*H2p~RY`amRcOxW#wLTtOu#4}sDxi%5xxo^=T=sWq8Uo%mcGlvGf{pW zp~)-p6Wu`55Z`0in$&}q{!`N!9ce=5@Ds6XKXfU1Z-w(ww$6q>GTuTu3SRt6RU*hI z^x3+QI4RB=ptarZ6Tw|z07B8Q3HxAcU?O}?AkcA_3zo+2FTuK`7=(g@hUns#rRdzp?88cTrSX+5c8o7Wl*0M8gKW>3sRN)ja*+f z+j^atvZ2MOV`y0nmD~`kBnAYTub3SjzYYe36Js-VMdftAIl8=n0<44LWWfUHWJ`0F z>Qi{0F{3Od1*^tEq{D5L*z&){9&-Xa>O6ha07DGvEE)(oW74Rc9|*Gf7Gx>LK(02xB?k5VTmy0f$B>NMJKo#Xlne>`viV_yFQ zN9euLyGl+Wys0OmUZr?4H$IasVcAkUV|@6EyHm6t^@r1{l(|UFf`85;26f8|g5v;M zHk76BjFYbMs^7%car;lW1d9jA|81VcsD=d;e;*e5z$CB zpW@P(ttKgppP6&N($$#9bRdCf>4+1%Dr_UQsh_uDg|TBi!Gp)_eP)_d@95`&oC2A{ zy#Z>>j>U7Wd(Z1(Q!V8*LX5DtfI`M|?)k;vd-%1cKcEE_9pH z2TpY_+RYns9DhKSu@hm2iLJ%mrx(Uh>JKQ$nf9y!VDHmnR6S{EwL@3k^MM75eYJ$HeM;z0fGo4U zU@fYxG5%D8f~H>$Z-IekmYGzgZyp>1pDs8zYVL@$w8U(G?Ox`B4gRu5VsN~9Nk}WU zpJ|KPTDMxQN5yhs_GS>;PXCV;sIRApbW*{#P1S?!9@HFvwnu%=2Z&52!{>5JCTmpA z0dMYaK3%z{2im6FJxC_QxqHaM;ktBvqtJW+bB#Uj`Fn*fi}4PvE`xw~aVJfvTlIHq znnOfTLf@QX_zR@&OsFb>L@~kUv%Mq@b=KHi;K2`Tr6;sY76?ZHoMKSq+Q?zM5^Iy z_p}{)HJuNOdQNeLXdV&KDeLFBZ-5|?uM;;@@qH+=Xe-?vyXWvhK@K6u1hOWJiiP^i z!O1kSrdbI0{3-r|bxLUO@Ch+29)@1o>w*jIA-uE1$;WPU5wf7XF?lZ37me*}`3U+a z{<1E5fVF!vZZ)_4Ve9C3#A`!@5IC%qi3>@?neHUpsi4)EGFyUWhKv9Yz1ulcBB&ru zyhgCYDow}J5)!DXAFi(Y#chC(sgpwBgtQ-e?xnnWzcWpBm7}R5TobJ=dOJhPGpqpO zc^_*p&gV697K~)*8|szhMZu9N?DxGu3Vfi@d75mrzOdb2t{G@Wmt>|9{3()j)Q!;X zoXe3dQakZ9$VA;iwoLwhU=4(j9E-i(=(%+nKSJjyq@q1KsmO`gu)awyWSbz4;`@Z? zdd>s!LPXH)BXc(vT~AnIN3=W(D^Q+)tGS~v$m1c%1tVZ3 z3-JZTo5OY#=rE)b;d%?PVz5NJqMyx$w;Pq5NPt30sb}7AWs>6VLnxZw!yd;_wn5T} zYQnXBK)oe_7N^6Uqq6|tAod=T@YQZ*JVlc0d*&$y1KsSkadmlz}nsDayWnpGkX6N?R+ zrOpY52xb zgBa*+TUSns*L^OxVQL;H!wH3F-(^6&h9DN4{xXhU)Sye+=*0x?WN4d2pmvJ=4ChT{ znS6jP1}5`biEAC%uO#9zTU8(iM%j{0v#`to|H&r(;LYvkVq$1hfZJ+L=_S+EHDv?@ z$1@)qajT$E|JcX#NV}O@tMfYI`6FU_mgYHYv--p)kuA4x2Zz`flM#qC7>F5_O$W7o zKCQ_;K$1HvPQ~ACg#3Cx=v_!r5xAH{TiBCzk-O=tdDkzClmkp-Vbm>qXqZ=>dNQIp$G4v(P;(&GxL4uOX_g?9nxEM;0A~i zWyg4V6K2OpoGm(1*gstmb9KxH;axpU*ZqV%Fc7W5M{OZc++LHw7T9T3GJ}`@FPS5^ z;>l_>QGNR`!@ygxN%DE$XDwdImgkq=ci5hTAIc<3uV7`Q(Gi=XgVo2P!z*`8fRt$; z!2&Ls-;aA$z`@pNMVMag1lQ5_@G<8Bg89PQdnsqQH4DSWWTwl|L8pDhoHynfC>J3V z9^MpPS8rB}8?P^YEoxtLq)|cA>VuXSg)w*RWFFAS-BkO(e>RK*ENu1YWTt{q^!*aX zp}B_<{m+5H{XNzMz0hsg_Avo77R9OEU6 zQm}f`j9GC@7N$iu&F{xW0}A{-pDEu+Q)|`jdLg>x9c&-oweE;S11^rET-wI*(ibs&?kZk<|+oU@`;91{?5uZK6 zzh$u@)}i*~@=JJ+^15_(&XusRGC@4%dA>VE^)ntQZGx2q{yJ#WPDuz9N!H%SvdgEG zKdy0iU+TBOgUNL|Fv$K~8W0c>Rx#FU5o`iL9CEmo|% zYuSO3k7~uuN6PsZVsmuB*3DrGfGN>=S5_aBvoz&%JI4PWLxRARf>?&V?f?&DrZW)42e{+|*JR!LuPD1aSwmYg)Qk*h7b09E=5x4nASuVr}SATf{ zV>!sApby;OBXKOCLm6Ih2T(;gk&u!_ExZGxa{?o<9>KpS^Rk;Bm_w;D#|Zq?Ag@GJ`6pWnLj5 zq73O_MXRfRvrzwlC88$?PF@S3eYi0b4RF3q&-C{?lk>&Ywx6-OyI3|#A4xrM;fzsP zOXMP_se_F4+*BD!z=YxUn6%v==E-6QXo$d>rr9E{q!q~j?AA8M;#of+!*FBU>a)xUHg*qPT z1C*ta?$9>jrEWO7cMq=gh>KUO;9&9E6OPwD2=H*sCe+N=d8F3C(xh9c-Iqq;6cTH- zl9bETv{SPTL;97jt&2eb8)NOdnU~PD=6u-t@)-uNrE26QFGeh$U%oBkZ|{8=7EZp@l~&eloU$>*>qYbB51(dtuEmf!7ddq=6CJt5D&njxsCc(YEMxN3 zQGskn-8DMFdLQh(h!}~j;895r{|qwjhdQr7}0_^jfHTPYM{fFz}F6cQ_Br zdI!lh+c1o*uTn(rNHf^#4)U3jr`!2PDJ@&jGAWv8HFpada4Y>vH0kanUTVC|%K8^5 zHWs2KsTeDuT7{{& znURp=z{SN&IA!>|?Rn`iK&dl)k4^0wh97GiDB_mCW<5c}oTobcMZOe_oz@NW507zY zRL_(G^Vk1`R3g_@6?hD_G+qK1`2@HC)w$+z)RBTAq|}61T@YO~H&F3RW-Iwyqf|;| z!p}u9`uJA@(7ix*f8q1r^UfsfatRwHvnx1H+ok(SmWVS5zGJ~o@fqKhm6_+;E0Q?r z;H!e`abWbgn;!y}0^I$1=(vMdUR95qmtU=&9A&9O$go4&zd4W?ilYF1=ZXWfAXDTf z<<2Bv!=r4kqClQh3pSul9mYFctVP$hWZ%){Fvvk8Oy*=I5@D-m?XEg$q{O0?-&2CI zJ~#?l8jXl!i-_qe!N|7L9y_=m%R~3P0 zfdht~4n3=NP0`5dcDlmWXVgr5b^-+vx>lgPg=^H`KuFoeI7~x-d0Wk5~C6=s} ztB?c4#dMdwwKTx`l``Tsbm@eT%|*Q3EcHRmm=B7Jal0UX3#u_k`N)d&{4 z!D59!`1_IisXG0M{(YtR-_7H?nJ91{l2gFIw?`;L{iRU<_2=lOqWNoyY&O1A_bz;M zKhbCkjinrptRZf~(|~L@MEeIHsau9$H_nZDj&1M1Pf6K|tNsoR&|QSIUt~}JVE%O+ z?ncmLg_=-OIV1Gq)tOcxtb4q!Fns66GjGOjJwRzUV={02!$hKS`hCf|KTuVg$!nKrX=-S`x&(hBli^`8qgR|xZn7ocy-=zcH)1?;r}qb zz7q~!D+$?d1nZ>V!|~_VL7-;EjK@C24H_|~jJa{W=Zki=+txd-^e@PX*+T)Mix{RV z91}=|_+Y00gU48m_MmqrCdJGypxNwQbVU5mcM_-fC>HxN@6>O9#zdE@7wsmFcrZRu zx#05#AzvV9P&5o_(o()`X2rXt;bEEI=i)nyyn;%Fh_--8Gw>fdtuc7|#^fc5ED5Ec z|NaauNt(D-F!b-?soHr@jVVa}BxAWx;)VE7OkeL>3E}1EoxK0pDj)@&NlG(6Ul(s~ zZJ`}}LiDf5KAc#$^TyLdS7)FS+aC{|0cW&R9L zM2`FDqv5&mskdll($|Vmi$SD-h_XL6Fp*^s+utsV#i31>shKLX^A`fSyCe8|#Hdk$ z(5P7`lM5)*0|a6P=#4Rm#1~HLjntiZ1yfLkz=%8=m4%P6HL>Iw!OcSg9?|zW@z7WN@4& zEOjW!8|EL|NJ~6r^|S~`qMGugXRv`zB#j|oU4WSnzE#K^a_N3DVN~@4UB(}xv%K6uZukb!# zN}u0FeIW;le_iZj|22V1Zbl$w>_(HV%o-!R`!wy3`qUwYY*kLew`ox@t(CN>G;cj{ z>jXI>((k7l?oRh4yEJr?p*Y1%#f@6nQ!Mo$UgqH|p+CL+Tm;A4+`lPBx7@A8;zU5{ z88!j-8%qZ=S^l^JWAT|iZw4XYoXEr|?L0O`x#-i00;<{|Pu`f@j&F{C`fh6v&JPql zwwtSrAOGl)}aY$`|w2?9i8`VXLu%&2!>IXy%zoIYG>Uk|vNfxzHarFBaNie|4? zb|W_gtGc<$A*ZMNNgo=1N@FlV7bAB3ns(^J*N=!1Osp=NXY%0l?q$$SGq{BtRQx%s z4HdWp^7o|l()v!%+H*RVFtc}VytFl{DO~r9oX?`UBVJX{KrLKI};klWI zyqGkg+=t=8y)2CsnFlGgkl{!IX3^LVLtvY%dbSE+NmeHEKBs?0(`^S>B8yY4{yvp>MxyV|*M@Nd(y@%w_{I}Q_K=I3w z*F0P8Ber4GzU(A#E)zbP50Q}c4UJL;TOQb#&^bo|5;@d)$W~N7XEM*()F5fqrv?v= z7T!{KCfa#tkA+BQx*9@mLvMQn_a<3thlNIF9@I+USK6D|C1;1a5<>qqXV-49<3WD$ zOmeKuS#oxTDEQhL60gpayI+>L{K!n|QV7Rcu!gkLpV-MXMQa!@O12W*&4+XlB%b4(dW& zFbb_&(iG_wM}}*`CcS$C9Fg|APum=}=6(`fjcIT!_DFR7ih2@#n4kGo>b;afw}S~b zi)yzM$|ff{BD=Ap-+}_ub)Vd|;C8ej)%Q7T5sB>9pD(7jPtgL|rc_DTGYqA6p9#*< z6ZM14*iKdxK*I0~kb5CUE5P>p+kM>;cZ3S>7$`dAa*c`8sxLD*CD8xG@Di>x!Rl1f zIN$5^dGZT%hw2<@m>X!N5Kl80bc}k#rR;%Z?(2 z+`WOYBBTTn%1W9^FW%nSL`j@TAV$r{ib$IIj}p(IA~022zf5bRac<@Zw}oADKbvo7 zLc{$+_%DQkNUfdr{x~HQsb_63iN|ovBdA=Kn&4PrlfQ|e&NVbus(?ghp`Q#%h@{q9 z`Vc>;4=##V8CY}ZtJpU?DN9S4ZHt2tOD5g1`ilkfj+T%+8>^Gl|xJ+mgZyU;NaS&6J7hM?N0lhFiXMMB9g9TR>krUpr=CDP-sPRM zb3>vx5fo%BL&h&8U7QC>hc-_?NRV$W3Vy14q#&V$Z7qQy;sZTANOWYFxY_&3z}vwr zjcd~dlrzJZ6=-?EqYNQblyHzTPO*sz+eD;<)3V9-!d{$!DW+#z72l@J?3kd6h*;oL zBTn_nq5JXu-T3#?|AHDq2=jX5+=4Nm&-AOFR-ZKkLVGXKK zOsSqeE=f&M*%-w=Xm+HbQiiS$K5YKp6#8Hj>k?KN5Pm{(8C!46TLE_Pe9s?aIKJ-cEW--o8oq^b$JNk6v|&=EC1UY9jTe4+q%It+lA9dA z&96^BSCX*#o`AH~JtMKWv-LBRgPsa9|3mn-cZuaIoGQPCtqLP}CWuQwB(AdsA%}z^ z&|Qu>2+3u`g;`Cg9-AE@+z_ji?qbO|Q^=}cY2ZaE$!-z7eBPn?H#SoKK4X$e!Aq2d zTvPtcw)_M~G}ibJfXU6r=E%=EX5-(G<;wV}edC~CIrHJEnFU<=i+}nUY|;6$49}sD znydWX)(`qAPR^EK)3`6&&ExI ze*bIlIN)tj+0U8%3Hgz@`cSaT?eE{to2lbkid7}`+d<7D5`1P)mA##eo^*0~U5>?1 z`kU}N$mIoB;w-@RqMm%}4bt)uPIN5Iuw?2IS?fkW;!PYmPU+a0RFJU(B?bztV|G|& zKXN(g?N2w;ik)&C36GZD$_hOCEm~Waz5JU4Py;ab`xI}W(ax+laflKIH`be@=)e9T zczjuE0+X8^xH;JUmtR$4iDG5=u?Pj)<8#im0ds$&v3Cata6zy67Mr~ZALPdg!)DTa z3m=Qv=7moxXc*>m8`nN1(YI3z9zsn*pQ|_IF=1y|OQ(ik54$}x8XFBb!=&ix){KE; zY78br^6>}=ECyp?Cd1pgVpjxBC2en`#xqm9n~la??DLJRTx>{`duKI*r3w>+zA z5v>BG32D|($I!*?=kBy0)0B1Vu|uwebk#!g%h`F|EYUD8mHa9=%*A^z`-$NkcKVnK zr__YNeygxTe^h%L66 zV+0>|4Z)A0$a95ChOS|ygt1+c(K>8bt3IAsT)h_wGcl>klKM1w02}*k^bG!oSfcS*19AqOz zf2To!k+cjGy#HWt(3zMd7+jHog}UP7kQ}Eg)|XA5)qdBg8otz|K9BBTzAckxLCMCc~Wy(fl9N&zALrLvHUuiEbap8MZ+# z0j}`Q$aAMlGumY7B!2iw{vqrz(|=wKDBlY+a1I3hh^9-7FttFlUA3FJ@xuOv_obD& zRGOeu#Cstl{Tgxx)Ps`9&qnnOT3@^r&Y!>TPtIkvF-s`l1esoZw;o)!)akEy|&)b%gym4IAQvTX%nS#O%%F*(h z@*7h6`;G|8{42+XtwdF4{OJJvj&vrf>m$Bw-jlQjq1(|%hM&-yjLnI9nbuc9&Y`Y; zcUqM<3frbj*x=M;L5dA@Q_-MycJqTNV6zlMU)HJ7N-Y(i579Ke@b$;0t0%rc$G>0j zuy&I#9cd=)R?YGqeD&~v&aqFJ85e^{ zZs1tirYi)ftUi!MauX$#xpm&m@M4rg4@}o_#P9haMP@p=zjZBt&Dfc+Y0E=JmP`Ki zNR&f0o*zx?3BT+_e!Vd2^P^_zOw2U#Sp*kk!OEze6gAN+Y#kEKZ{Fpxe!N>?6X(mN zz+qkRu$J!lab6jOdK?PfA%{RoELKVi?4zAboqMl3m2jTNhdh?0917a~#zB$ebcy7n zJe;kw;5g$~J+`Em>DW*U+YiNtFatw2i;liA_B z*55`ACVP&3%6-)sZ^X{5L8JE0Qa@ut81IQu#3zDd;cE9J;kj2BI`H93KHxHcsE>f2 zuKaebWb1mTs1D0<@s^gjGj53MwLp^(7txWF28Mk^;w<-SJE7SSA?lID@Z3mHi*IK6 z^BW1_JpqGTpb0N*kUteO5JnS?>sp`@SSYL0#IR+N^!*xPhMI0ym5NBeTFafz8~N2? z`hh0Mgnm1_F-c#nVR23vXPj@DE1D}hWsAYP*OdpKkx|nIS_KC zo=6&T-B91ZHU?RYTxj6BFi_iPG5M4YNT7~b;XX(1PKxX6E1g@+s5Yzr=!fM#^l?}i z_I7MbHxWu(40TeqMeX`0HBTyX^=T6GnWu&8lZ35awNhtmN?(t2RsPrIi8H;A2ax&lhKe#bCQHuhE!wtv7f7;$K~Xuy zq`uRfOHUV-`dPMZeOLuuZvr~{Jtuw4MSk2>pFOiAxL>pw3a2Ga$9ISQ6lvQnD$`WN zyxa}P1)X)L?T4@1VQsCC3Nos~Qv{OVaJNK7_&xXquhqAkG|{!{cJXdPPTI9C+cPr0 z!S-Br)vOqK#KGEZe7>yDg6HwzG6nQIqrm}vgg=4aB{C+^1jk&RycMDNcyy=8U;)mk z@1i-rQEcuEfFMAYHBzV%q#-i3!7q?->W~Ocj;QK}`E-9bn@ND2{Pl67Vulx5D`{Qr z&2IHPtHL=CPv89Ic?1c@zz|<5I|+agy$yCzA_$h(mAnY-{2vCEMZrfkl!3x+GvWkna z7QNAlF~kT_BNoJyQzx0_L$>~ItTVahTp-s1!P>av7AiAqEZk`7FBv-GREB5U zFxaVts+V%7_J?U}HpH1FJ6rcs`)3fU?F!M8qK;$K5a58Q{!&1Hj_mTjN2&5xDZMw& z_=g!vNRZ)NS{hB$G+D(KbQhRZ3IHE((yb83&eImMU@Na`??){`^NmptG)QB;$e(x_ zv`)O{L|bb|)=!WGihax-LH8=FPnwUj(`ZAx;t*phfSD=#zvnO83)=Hm@b!e@vrV_k z-Y*p43ua2msAr8}uXssj(M>8l=?7%22+>?qsxk#?2da~TLg@?|cBc8`c>I zxxmXfJX03np!PKH?-$W6q22X0V^zgvs0SHjp5xkQ#=;?D18vmn{|1GyWSWVtLmCE; zY^h3H`WGXN%4YxWpV+6<((vWgydet^>}eP#$>U#{0$@cvjOk`2b~VWL_viv6CJzEk zsX>aY(Xy|%y#3jqN{B1yUc+9R2;LO+36G*+JzM@5ig{PoZX*H!FkggDz_#{LpeA_+ zj(6v^My%Zn&}i9~f5%91Z^Uc!ncn&y>PbNUX>7`)5vb4tzt(!JNNxmwXcB!mNZG)0 z+La^l@F!*2I$*q%!5xgj?6t+$gy*IgCzaIOIyA$7z~HExDJ~(5@lb?zxT9^3>()R7 zQsH_^I0D>6F6ZWU&|#~ERPM)TyS${IY$y~YZS*Rs*JGYt(4qr-9w5Psj-6w#kQd$L zv=T$XjR^xSnM#T5!Xt-A70nD&_%gc?*{wEEh-(Vy5%ky<|An=_KL!4(J?T%88e<5b zXI><+K(ka$E`h23h0zXb(ZiXDDu@Z9@l&y>L%Vd8)M?c}YMDQ6G>@f9!E%&P+=deX z*gU~rAurje&4_me7f1hX5oUfGM<`99-I18#5k_s*CYg@FOP?4w4l``RiLVHr(MFfC zQyMu5QbEnuTp2pz6;18%cgiD4V4Xojq(m?H%R)ndT1*JjVH8g?yK+b~%HoFvcjTY@ zE>fKHyeu~{;lgp;q`J-dGG#)EWOp{z1t|q|wXm475Q`W`>*GfJ zx7hZtDX}&XOje^TvEZ!eX~rM4 zM+Qp>vyQwpyXRDiv!9Ycj2?y{_AxCo0nM;Te(OBvRST)i7|@3hx@@_&AuKIz>LXTI zwj>O}Rw6j^HX9>;jtrIO<^~PH#o{f@i0I{k{^9W4At$V7R)zMuCP7X3Bw zdcJ2Ae7#=8-lIndJ1>goqgSo!zEXGYDVg{%Hk|ijZ_VMza4Q^Q*5ccRRLgwNsLf7DH^Rh8`Ec)# zWj}H5MlIRamoJ>pqk3_mEzakTJ2*T~WFnwCnD>l7WeVoPtL@NYc^YhQ5(`#cr12eq zM56x(D?rr06Zjwrh`4WW+4C{ZyU@b8y@$n1h?e}Z|E+%vtHP=-|MJgymvsDT+@l`g z%a$BRgVw}3KzQ+A^hWvdn$Ns|m*Mqj?|PRZ9%t2hzp{PcpH}u4i)6Rc78*hGb0!QK z(p!okGOQuA(0sb)EDy^YF8-C?@~|hR`o!~edbycZMDp*2v%TOdmKj6o^pED%bZ7#Y zkGL-L@rH6F0Ga_;UPYx_Qz=#WC8Hzje~`ylYerHkI}raFOL9aOl>E`ct=Kn3b&UYm zUil>68e$rZV^7BCC#Q;fMDZSWrwwu=5y7 z!c>Aio7E3sFQv?K$PZx<6yHMwvFjB3cTMCiQEp+?%F5*I9Q&FcIR5>n>DU`s^L5OB zwU$gClsx5Z+tGdujzA#?Wk()&WK4E%{*#CL;&HVbbtJGj=um0NejPwGi&5xy{q8N& z6au8jiq`Toui8zzaF~gIdhB5D?)SNJ;dqMpGspmQ&RmeAlQM9%7`jD^oQAmZboySFWr06 zWhOrgouh7fJdfKfCzr2rk8+8FS`qIs7q7Zkw)M@64~7Bw(T~h~)pZ`3M3)^39h$|e zN>fGXZD8W|Ow`UvnJoHKEf&qW1486=Kgwp0R!X>WwT;+5Sfah;x zaF{Fe6y>OOYWojK-(Yn?iNQg|MeYG^+Bqg=3^vZ@jqKs&k!HGdekYBqVD0U&%w<&g zGpwa?2-aZSXGDbei%I<vp0`+t<%eT{L5of&hi5MjE&kRtP1-2Pou)30!za2MgAf zKioeafsLkTAv^UmjPhOBp!oI$hpU`IZ=}+65sRKPpb4+$L8uRFnv=Wi{ZS9M0Vz?Mp=W4IPpgGdSB!TdJrX@cdRRmN_?UCI+ ze{3P<q3n@1caj}oE0)he={2Wy-xC5 z&0`kA+nN>(fCz03EQLDl*~eFdgMGqkd`P;@=AFLEpL@R<(T`~XYBnX9Kf+*kUq}%& zy=c0>%vN*7`t~W2_5o~Oh>S5eJpZoF^kYMB6YD`NjZLSCtu$sJ-T(>U* zTs3Cg4dzWmE^0k+dD-Y)P7Aqiv4W@Jul4pGaEE3hFNQLM{%B0neP;9_7eXhS zCev5G4ufLnn<-U)@aynoo^sIJ(>4M%mOjQ>1eNSgG1mr|W=`?==G*miIEZZG^mc+^ z=}}v$jDP+%ppf8jBigdnmw+{a){>#)2jYtiHnuO{f$lSl&)T;MJ|8QxD`yRyx|^=B z96*DpRKIR>W*fJvAh8=^7<;S7r-Wc~IrQs9Po)^c82TEry!W5y9?c1WR%m?OSL?&G z@+)Pv%TAiR)MIn9@UvkR06(1`Gr>J>ILw|eB7*d}q%=`-5S7_(o&yPDAr4%)ezhn? zR|+w+gyWZFt{)KHW20r%JFfm6f3=d>qO zeP*`JI%I||Vo5R6rI+kDE%!XY^R0TLF`)H0cyhqle}z>g+PdtLNjf$l1V6o}q*71} zevDpQqmLg(%Ty30lT!9ZPQBf;NDUXlVI?KQsk1~p0o#A<#0j3M7hY+yZNyojW&t#$ zrUZ9|fnF}sLQUg)`Gl)FQh1yD5aIN@J8gQ_Ka>3VYFBo6mP)Q?EVx%sWM<_yZGGqe z5`lmL8GK$kUy+ZT&|kaH|F)+KWYK?K_sB1ZNl@Y~NU2CMqgVj!?D56n$pVT?5L@Y3FR(NgN8~39O84zJtL|d|r?}q< z^@t|#=25&$8ZXQY9*E58kLkqI25@n4ai|(sA9%RKFTrz{3eUN;UOX#1ZV9*?iEjRF zI55hgPCl4a9uXdt3nWf8gUk&}21$kkIYfy?DN`S`;-Rr`p0- zK%~Zto_#|pM$)KUalDkt0i=RufD^_y7H<6A-GHL|U9JehBzra3ThL4>fo zd#LN<|5G3EgEXb0KV$DBa2o?&kk^2J6@Y*pd6LSBO}19i&rTgbP`!I&q<%e4O`yG5|Ee~X^4vcf zsj`Bf$Arl6Q7bjWhHB~Z;MD3~GP$`)4hK%#8%|YIlV{-s#~H$eu%0G$JWbkRH=u^w zWG727nj}sI)~g6y)6nRuV^)gTzb^#!?-eqtxh4Mbgr~FKZto=d*v|{R0C(YyGphK- z?y?9FQAzNI8#l{jCKYd%4-)^`Lly;+l7MRDueVrK3|9VIE}Elt-yLsIzFWs)KIExc z(yCP>__6%neC`DIhqhw2*v>=e_!-@YlGXQX$A)(8d7fQaO(xJalE;T1K|9?2@aXnr zl_5Q!xoDL(>5_>?QrO&PbBKeWnl&{?Awh6*pxwC$rQWI*NEwSmX?@DUKElVCT)h(! zbSoCG0;xDqetdFu7&$oVnMg_9z5Yei>KyY`mG}^K(l9N?5dE(W*aAhY@fxry9bd9& zV!Ozl+NCt5LA{K}$zAHT7j8a4tKw{77!&G^y7 zt3YoKqTpL+Ut*ekgQv~(^TZ2<-A^C+Q1U^A#%ML|Lr)fyVjO>73d1Oo(nln)3S~f^ z0S56{CMW(Dy|o_x8EdQ*G|qPpZv%B9tTqr0`!fLqq1>`R?C@^+Dp0IZT5qpbZm37H z<-u0Pdb$pNYv}9r-^-&;V)(q|L;F75?Jv4- zzowl~%*rZ7Gw)W(F%672OcLKcl=qS&IEbr&%{x2|e#w-nQ{(2Oj{;&Z+dGepqXbE> z0!$=>u%L#f`G=cCKhj=l@tee*QZhLoj{yB;%C-7@g+pCUV(W3uy+X5h%!8*PVK-Z( zN0KFG!G&^;qdi7Ik}&3Y8-Xll+Kuu*lp%_e6Nh zx%~PR7%DkVZ{h!-<|MZ+QNI+*;}aO_*ZShgfwp8^mkzbv z|H3V7(<7E68+rQrS0|e)ndyB?Y-nvyD5f(W)R>lT2g>CUGRfse zR0d1Ve;^lD2hF!N7@s^3(jZ$hQ$yv<_bCsB5xBv6DnXg2FmIjI%FH;)dkvGQ(>ho2* z39}e)Bi&Rvlx$a?myM$le2`NPT7P5e-b$Tev|FHrh`A^?#Ppd^x2AIFg|?VCiMz2?e}tL27@KR zx3Q)uy4#P~IO7UYvh@3YPT$$!(O2OM2sA89LU&s&*Z;;^@MXbJhnc~+etkjGb#8FK37rXcZ%aQndnJ%L%cy|e#v}_ zCupb+0&Wae1<87s`UjTy6(X1C#T_~75^4wNb* ziwj^;?m4&Uj$)xHZ((HBJX~!$%WWf0M>j0B1Gtj@X))Y|1?vTo%nR8D)V;JbmU0=n z72Ci3k?}kDzyFw;Udqx$-QaINjT_+sTkJMi@=^oatInNqrH?oa7R8FBktW`;w?%7% z1e6uNPGhT7GVK@oU;VEYD!*6VnL|uG8At3PgWh=A3QXE=LghosvU7o@)aVxGY1u%z zD7yJX_WUE*uym%w`qs^fG4|dSHwu^bt|bs9GPBAy5P%e` z8N^Iap&0|)w+`A@`B`8?IjxHh)Dy~U_8_)-e@V#cEC*b{{R)rCKbLbbNN>@K1^6c@ z@>&(?%f#|r5A$G&KzRcJ&(G$@sKQKF^W`D{4J*;?TNFni?%X6CS#{eKfRi(ORRBT= z-p99D*6jPK__A%(L4?{0xheaGifCaJe~pTh;x9G$f)jCCftOO51b>48z^A=&e|(R7OmT+3tN*Y=lpT_~`E9)LYhm`tB45I~zXC=rb}y=-fA?sL(0| zkPUi=l{}!K3qxvW%LE&HzQ62Qr@VBxiF`_YbT^+2V?%F2%mY@C&zCw3N^!k3KZ?Rd z(Hu1QnVaQKq=SdRYW70d45Xs#z51#1Nj?Yt)Pg5c836Z=!h5ElZ^Ikt&9(c2d&u)w zdKW%6E>|%0-W;LhL;X!Jxu5OKIgal$I^E%$@ylA~GhYe;E~Jsq!U1|C49Z{FMu^GD zzF4n88CZ0KUOebMr&E6tZ;3ns-OC^ZOc{KRS=NW@RXE{ZzUuJ|QMUo!i5))f>~{M} zjX*|XN7g9_&y%;u&gCs0IiigkWh6M`18cN_&VKz=9%BHc#aLm4!k08>#>NdyzXkOt zZ+cSatHTLvJe}q8l(-UpDC?^SDUzv)&1vY9;jIze+i8=fYET(FcIJS-#$X^Eib11P zqaNuGbHXp)oXInIR78n|$o(-@VPrC4LSjPM*tF0Q*)x9&oS&Mt%z-T+Ayx5qWh&Aw zW@D8>g#-|Or~W!yhGMd8)AB1u!!k=YJ|%cgp)H-oTnz^e~LZpJpdkf;7qGYN%!;ZVY9{pU0=5e-wm zIcsrs%CA@H=l}Jo=QJ-J4R2k8f8HQ!utmC0-G5y!Me(=mw>9c5qCD;Fa_ept`OIl* zU0Z_1G^Rm61&~nGv)gdMW*yWjUiejq4HE#$@$fEV5OQ`{RD5VLtZUc$6e`biG|3Kw zeIqd=y>%NMn`Qs5ti$~cia1JH@O@LSy2$6B*OX%t-M>!*IT;|GR%?Zk{&|&KuL*8s zHztyyo5^w%=kx6VkdnXnZCw3bM2OJd;j8^MHT(v8MZAi2^g*UW-(Js=31rNY>JJcX zbn1D`SYUc*-u)d&Cm(bFEwaAtb{R@Vx8AyWAHr<^4i0mAivwFQUIM1VA=?O?rhms^ zoa1hzf#RwhU>$iA!>rLln)EYGj+TRuoZ)2-uF5~*`Qv<^H15zq@1aB6K(Pr%KxIzd zji1R3$?kd9R1kqgVloL$>g)Lw2@JO1L<|CL5x$L5>*)Te8;DO^?-?Kr;v2J^+2t-m z@ybzC&z?(tXSIrrFUg4&<$UV@o^KwttskU=9P_a>nG_|z0WOlp8B`tqAu642lFMu> z((9LJ#^3B*4L4N<5=?*=xsm@4s0b*`cbhSMSUOSarzj)&WJU)U0;v#L$??WZmAJL1 z^Mru6ininlV*&rS>5pQdMR+id7O84(={8U4WAQ1DSnQJ+ zJU&7Gkt2VL`!DRNLJY5KS;oT}Qu>iTpv^xsCt7Yi0DKz6lE1=^0|Lcwr^+s!LOzFY zx`wnP6J78@oGE{m^S>-hsT6Bh1R%g#%oXc?^e-enQzZhgxD`K6YBM`{RTR-mYY{U(;Vv^}b;8TH+JY{L zyvC~92cFA}Y6w;@iw<07fX%^1yGir{bN?RTd_Oti=R|2UD@RLiQzqTlGk-KR%h%c< zCf$&Rl;4FU&gMLbm1rHXnL|z>!z0$EJ-KWy^C?3q@4qn8biT**DkWbk271*6z3EQr z-n19KI{9LVWIOiQ`LiGKeN+$85S-+H;j}qNEtzk^>(1PO8KBI&B<$*aV2&O+9u?b@ zU3d#OHYp12;o>7bIzLJaE?~sA5F@(L5;A`5v9(UX8k3%U;%Wq8h3V7!0q=B{k=#xQ zt|#RRU!}6*i0sdnjZvL99VcD@Ahd!H5 z83hy?o%SzYoBPDVUv^pOUGig8^nt8%-NEY|dnTRjqgY$1W@jXeA4dI_v`iA#4h)NO z>N^!ZXoR@XXTzsQ^Kl|RH@;Qi7!Mdp_T`QkLiv+(ji1cASI=5u84P`+tbFf61;pqQ zXFmc)2F(L78u~+s%Sut~hv@Y@g%=@uAEF|L>LEhgmKC=R53D@h!D3X;9VRLnn>ehD z{n|9@{tvkG|MHZ{49tg- zAq@_$o2gCvzi;=sV^c04%BVTOP~X7|#!fyH8#*hm6OQrai+fTVYj2P4NyvUX#u2>@ zHR2v`8I+#Tv;@ZX(D@j*@V!zL)g(i0AvGW1{w`p*OL;S6WwuSc-0XD6Qr!p}hF>_Rg&lNTt`-tCG=bSi8Ox&-x`P>7l}ZGxQBN=F zZ~|XTygZ5Tu*BlSXB^2uxHPJ{Cm#D4Xrx+yi~K@I%|i^vZoChg7wbZsAY;E=<%X(5 zo3h8B?*j^FwL_L7kU^z5s37mqGDu!>#&*D}+edhj0Sx={1;M8z_^dafUht8nKe4az z#T{v!V5&2JBH}Z)VrBWs?xlAOXJtu3t5fVfJ0zT&;AFX;^T8}V3)}apdc&wH=Yt-- zJ$F&SIkc*o(v0QY5n)I}5NGeDmF_Yk>cJeBH02aeZ?#kh=w4=XW4b~!@f&vSQm1NaI(UStZdT<&t~_ds^BiEf7{!$T$ca0AZ)((? z|My=rm6Myepv@>i!%~WaDR0y_MIWi9I#}9$(U-O__+1rY6o#((@EaqWq`$p@<=Ks> zsGW-@i?O42uGJ>1gb@7640*%!Jcd;1@zo$#{5)hRS)jBlZH=T$X$EcNvz#@duXbVa z5XhZPY4?;QU@#3%w@V>SgAe6f-QFr3zq9G$5X9!!1N|#d6s75T5;!Xh9fB@yx4Xi& z<(-#ljSa<3R#{218Ey&5YJgf0+lk?mUq;p35{?|5lfN8)!?2FSCrax#Y2D1aO5N>( z&4#Ak@>}Demt>#r{GtWIB+|46C5)ie2rxS$z_?@>vJf)2BTMZM44*pOihlZ62H(6E zoRbhu1;cXevZOJzal}YJx6U|K5k2YL5?hVed*DBX=?4$KDi}A}_ssdqDbS7Jr}u$9 z{7@=XO46#>!ur#PcI!aOJH~f`Piffn89~2eKn+o7ftl2S9){GL?MjRGad48mpZGf9 z_60E#Y?9TGGEI4KLE5e!VxigO&?$+cx7(jwMG9;9#7 z-$cl;ZQ|q6fD4d7Str+jQX`7lv!&=1ffQ*p)-L=}-#bn82_^h0&*|@dl)oumJ5e5XogI{tH zOS|U-pJS!}TCKcGVww8ru5@=*mnfg&jy}_qn}`|iXrcFdiDnYc4(I!^3064TByO7! z-W~5HoA3B(mNk}Qi+2A*_iVl+TC?-N)rwqve4sxNu@q;$!2`N9?_Sc?#S%4VtEvmS zN|Gr?ncIHzNDOfB)NTbnHDsV@wMVj755F2AB{qKV(JM=Jwm&i8+7CFQLR8CN|D3YL zR2bORun&_4{AccrhrBty;J%?*PQf3HfT|q0ZDj=ZC@cJsN)tvZ*2-LO4zoW%vo*m{ zbIq=9(^xD@%AKJvBH<7liBcZL>9+y}pntaq2l<0VZPrzzxjuvrS3whv#7Fhz3Fd21 z<*Skir?S}KUa~@NUopQws7y@!o{t6m)6IhAi-HrIJ2JC!(}PDT+iGE?^jok20$L-n zf-z(3Nkl5IAh@64bB$^Z7)xQ)P!|t4$?YPsJ(>0J97VF8cfEf1P$d;MfsUVPd9;Bc zZ3+@4@Ua_&Kc(^{cexOz56X`c+Zh|SR>vCW~t%gJB)bOF~%{+V6%W*RJVY&v|u z05|VqeC3_KAPnCWQe|e6>oCUJpv0?;7ZNu?Z`;iRi@C{Fklg2?BWEVOYMOaMwb?>F zaYHRY1n@bF6&wTB@0|NYRCP+2D++}J@Ir%3)|2Iy!! zYR3#Rx%X>m*{q)Hcbowd26C6-$9|g{|9*El42N}=W4h$4CP9GuD-ts26 zg23NH?fBV1VRFCZGGCP0nCr-E->aGqeN%*v(=4lWm{cRIBhL)scWpcPh4j`6h0n4SHr3N27DeojDlVD0 zuwHm5K)5^IJ=Aq%K5S^Df_Va0J%T%c%gHh|Y*&?19*qLRTLo2M5NxyAif^R6fz1Qf@=rQY%3jeJ|vXsl$*#94Y$ zHj+Zj2(6GLHQx=w1446To*Tt2=LK`IS5vg;yGpa*E;&QtyJKK&^^evPxz2X-h^d~I zbN%;CXQ6~V+Bm1REGrsN6v^r;;2RB^vApGTjm4mc-NNw$QZKvmrcb}U;a9pETkcef zqoI1{%h9n`!X-v>U4R(|nT*ZaBD5&WQIOOBo&HsX2XhAd6hlW;RkrK+p-N+`)d_mF z1WgqIwe7~PhGh_3CEFWfXI=RrxDY|S5&J9%YN&3@g3MVXSPRUY>kRqI>{D9qd;%^m z*+&mWBP7{xptkqd<5yNkPWt)tCZUxNLVTd4+3p&`YRsRiB|PG z9=P=1icAa0(+OY;ZlafLEOmcu(krl5DFxFwuTCG=3>df!&wNkHkFF-^hru~AXyTF# zQb9PN5gHL=*d{3tv+>{;;LalL9D`ZA5U=_hiY=(j`93tdWN}^(l*GYpR<8DsZ#Yd| zn(8Z_5J#;lX3at3ESFFhEZhL>VH_?fv3rB?;@Hhso{RdS7E>{=l2&PhF1wK3(ni)C zD*7_&drkYCK3bXqhKjHei#aGf2m1*l-YlLLQ9RkAYY1ci?`v1|?&ZJ~X} z$+A{Is|1uDx_T^re1=DV_UA+wlxFE-H37Pd;<0%EmM$U7W`b8MLGc7<4Y}&!0iZf= zn_U4Az9ImQ2W29D=b>jNSy|mkwyqtY4Sx_f`BRDsl-|Pf;sbUJr2kOZFt^UZW=&p0 zg;V4f57Q%|LsGz;y00}R|ET9~G*ck20EjQKxG!)T6Zbfkwa^w`;fJd#iuWIrM3q4^ z(<^aWqwNkETMc9$9R5A8KcXAqfYkG(IsbIFJ-hV5O_CN0XLsWu~8(^V|`WF%$y!8Xj5|PGC$e#p*T5{7uP=x%vnXCOwXmu0UyFeBFY1 z>%mTC~&(7yIpO^ojo zWbaUeQn*xQR1+=Gv^APBo19mZ!cKWfV;8wlmi=Iyh(}gt z2&l^8w0i%8!z_xP&9Mo@3bMYPk0A|<{1yv0UvrC3|DB4v<+}O!!Riwu1MW%?6U7-- z@96ObygtETjlq2mA$v&r<1tHOi(b2iw2(_&`~#QRo>W32>tWh zwZX9wQgdZQV~Wvtt3R&fGlRu}@0@)7`Q$DU{;Eg}$BQ83YkommSXAKCN5m#{?d3OQTp#D^8x?xtHjTJp3?J4Yb#(Fne%tIZux!e z_H#^NN1R9i6=j1D)?&w{vO0+GG+Cc_B1!BZ+F!#iP8FDP=a>>cGC&ARjW)t;`o(p2 zBEs_=D9^MV;v)q;rlMpEel>dzB4OMsh?_MtJ~>g=i7yEJED>+HHc3+o0 zKS7V%VW|%xO{Xu%`s}DV-Yj`Q00RZcJlGq{>Dj#xBo+!aMQuOggizcvZzSmj`7wl( zNXB`av=!RYHAcd|>oOpjz3tI58x3ytW2RCn&!-_QF^XO!MDE3eM<8VtX+5Xwns*PE zT4@)Zz*T(I1H~{^GPCq*3H^skYtxolu|%|_kt1)7>&~hcfhfo#SoZUPoNIXop3$AH z);vGp-*GPj1Duw7c~_1-WIeArybG`Ckt;)zX={6zK{{3>Y&c4$g(u^-v=qYY2;os= zVI%XnABe2@*J9~vuj_h3HjQpcg(8G3+!6771ZSRI9BHk6w#dPR952*nKC6h6xJ99e z_@_ep=P3IE*jYzgm;3+;WtbC9W28z>3@fkHdsRb82qSHubPSN*8()l3`6`pGKTG z2jisU@I7@l)`0b>GF63r*W$QX+-Eic`#G&+v^SZZ-B0||4rRzyyp&S09b{&h*+wc+ zco;Zxwu?qTh&W^LHpz7N%HGIA{&Y^T)YoS6MX{zZxBBhlm9Mpg)i!v0?D;Q8a1QdVF^+>y-_*K_Sg{92ZLN% zK{%>Zd&PYhHP^MfGdVc6?_45JGq^$nx(?W<{&RkuZub4mTjNBGD^%4Y@Hx4WPngB% zajw=IH)%S49mu}A|6m#$Hbma&vEBlf+DZStCi^K#q%^5ej#PbZ7U*zvz!u0W-#+3D?IZzORyxjiG; zBMQFp1fRlMLefT_YStZpT_f!_CJDl(I&!Pxb27Y5-=NP;`dGT`)yo}D{kPzAfE{pn z4&iCgzhBRa4m3J$wU20GRDp%_@hIzZfM|0>T08H|K-3gUz1Bs&9I11-iDB-Qm_ZiU zixIHz5si%Ga+kDS(I-4Bwq4Yh%sp0)?7o2WlG&mly*Fh~&>7uQBqf&4xA1w#RRTXn z_QvHgw7-Nr&x{G(3sFD2T}1X(Fs)gPbLP;(14JR;u^-J1;d|I$fpZv*!kiGv{r1Bx zFoq+eB4q~tu^qC1h~=QRl+jrRJ{-Gdy>lp$aEW+V_GARAfM(CIx{*t+HXXWTzVX*7 z&>;4-IwN^_Uc`~|O%Hb$G&g`8Jmi8Yi9z3{!}(4ayRVaaXgoAyWcF|L%x2hT(KoSi z=Ro}f=2Tvz;%JrBmjME**n#OXo?N!tv=8^Lm=(4BvC^!QL~yr;L=w?{epq|d)v+~8 z9Bsvm#%-%fRSnAp@#RAVo&aY0A_XQ?4wZGiw>WX;uU~n0GE7NWRx*?4ZGGCxySW7- z+ZQAvh6818ng4cH%-`j~Z(2R$&o zq0ClwMDQ3v`o0?6oZXLXgyb4uF(jQ(Reyp8V!wLr7Y~gIhOK8_e80AbdSvB@bqdsq z_OLZ}Z)A6#{V=PjdpBhU)sq+TbZu$3NWs0?R$)7<9Ig)s6^;@|<{;uw+mnHJzQ-UK zJBnr-%FOsB~q9C4q)9*+dUpG zf|`og%)^BJ$Hq4!r?BIR4K+bV2{vLbc<(!duhcyQ#zO20Z|-;kTzK+=JDP5b}R)*Nd$}{TEx**;49WPMi|**;!`*$4gOIzFL~tR zr_Ja?T_=B-CSC`&Xi+)!b9r1{y{(~3s*kU4p!TPT!1^_dQ!AhuYZ~Odyw27sHXoP! ztV?IYS(ljgBw3WOuVmFl!|Bm3(om%c5}Uo}cM3`+SU_;t_>wC{z%&b7DToO-AHnji zs1&x<9JE2|_=+T2M614V52eBhWu0QgSe2PO5E3FKggF5Th!6KXX_w>?d-0-1jjB>iPjoNT77u@0 zNi2HG`gb6p0U?OxnS^^p*DG0*$@_+v+s@oEdNBwl#vokVO-pd1z9xKH-+HX_RihF-6fs75^u1 z<*3U|`u~~3VH4mBW;Y|WYVvdl9z074-&UpwD8lUd7PgWGw?zNwS&_K3j@))9)9Zpm zpYo1O_eDiQ!R##=sD6R9DAS@@P&2mh1-_8O@(3)TN-j)C%MRHO$566Kt4*7D@0Bv^++JJ@CjU#l02jlv zNIzzuN7+p3w7O`DAdK@Ac}}(K9uq(4-wV@pvhvCn4bQqPpo%ld%jROmbP4`YdAf}6 zUp$=9O*%J3+OB@Oy3bRsVsr+k=l|+ji&=lqHe83$q;so_g)b+IfcduDp1x>RGP7S) zTb`M|;XLv+!zRh-26^$bnwbRW%*&9GYd-F)eFNCt2SAsVUv#>|)DawWqn3eZDF_C= z8Jo3v_dp(s7<`fG%KaUDc=gboLZvI@9f=6E3GOTY;m#QT407Db)Gv|n*Y*$t=m#Ob$;5KZWgLB*<5E1h&>)?z^-XjzpjR=gXh? z9@%&O2d~qEW-HEOVF+kb&F}?@fcYH+Dtq+Pm4G3hHQ~Ou2cwK)}#eajlz6Y2dwHB73TwCGBvg~S%)5|DYBW>%@yiL6Z z=r6jAgR8o9Y*Q8kC>v%GM0hzBD|8T+{NhMT;i>%2&{)U-)fRKgp}R2U+Exk1I1xNO ztX6$59(M1>NY04|=;HRu1~7fr;5??7TaBV&GyU;UVHLl3HnC{aEQKZ5ixhNLO8|e* zR#*5!U)>BmBG^&b|<*_7KvD+g_-%fdq_f%;71NZSth#{)49D_ z4E2}o`FVYV41w;Tpz=jSPVn!;56H66AB5$aXEZproeM}7gsh&_26)9p>XaU`m~^qw@twMP?Tamx^TyuVqY_NVBA!V9})oCP;7Nc!T> z8Q`_glgPDDVymL~=EpZmL;jgN-rCDOeg-L9r8PRy+M|i;g^bk@Fu(q1`?0rpuRr*s zH}RG>h}j2#(j@&sm-|;hsdFMxe>K(rY__g zuz9E~juo6Sr>Fee(eqsIi{pJWxw?Z`m>~&G?%FqHyPW-+liWudt6y##Ho#KGKZq}e z&D+_VcH-XGNVDPpqY8>W?#@7Dw^;ne85+mtswLW0m{wcH$JjNa!eH6qi{u{7cMXR$ zcpYexFA#6sgLmhV+N^Awi9p=t=B7OyGCGb^KH?DiKbS78eKp+zfO7SuOeK2h+cTrB zD@Mv>4Was{gF`U5#@B_)$vg_0cTWWB(F1!=tFs!2^&k*IprL*RbaECOO-vnbL5bb~ z_4TropYA3ZDZ|@+aYYmyiwm?p2LlCWPjUyjzDQ$1IVQCEv9r!%BJ!Yla{LOM_jWHW zEkft;8xda>L&-E~azCmiVMRCPORxJt5ejC1@|rubq{!ID7v2+FrLuCDi3pg!4f0aT zl}5cI4tG`$q`zL{&=Gofs>wx(?!)zYY4c?90sZ!UiqLaX#-0PSdh6O-(Ylp*D#3bL zq3m6mYn=y3=**c!jchFH2vzJDhiaw)y9T@o@vd;O;(9I!%9bB|UM zP)p-?iK|@+nwceTr$)=**{WnL95t-z@v7tpS<66^u(3DwU81a`0+Y0fF~eXTD!ZTH zhV)!_A1I1T3<-vb@d3&@vIbFB=74CuP|i&D$__wsxqzo5tav&oS~@DEb>q5lM^6Bu z!gy*GZz8c`wY-JBoYZDPUmU5Yc?c(~i*73;#0%iTlPelk|C@2Rk#*}Ha!E(e z5X|>e@E2oS@Wr#kRNr5B@HP?RWXp}r<3!dmoy6(DwVGPk-#Hlb5|E)mKQ}EWJ2$*nlYag+T){KAIJ6uy!y4!Mj!JDaInQmXSiovr z@Ktr)U^bYuc4&B{wh{gVRKANC8{Zm1Pj|tcb44u{v4=Nc8y&MqljyPX9bZ!d zo-w_h!$h%&ZlD1a=hb=1{|bdLR&rf63kznk?zPf7uH9eDIHXA2J`Y8A9(zR(<5lzucfHeg$h>_zBn|(j>0*+^VgfTmWbCR{AuvO49yvRSd9F?{!-yS{C$V zZo!-THN4vfQ_1a&{EyJ;!zIqp^?O9vS;vVH`H^XB76l@#Wg-7qo?wh{3tlJy&G7Tk z$1SnHWUiDYG-j&bmU0+s;9j0*oZq6glM+ms}cPseyO8E zQ~PI^E$bnqloNk94g2vXDO>+V9DxNEq;5Y?d(U?n4N(&ai9*WER-xUc)EqbQho^`A zO?8~+t?2~!oTewlqa~4cm3{^^Zj^@@^s=9L$y&CGB*s-wme>C1*HrK^;9|$XU!VCE zL3dZE0Ie5zMwMe4=q<=9@^)TJwRLx={4+v(R6nF=ReX48ulL6^nM;>p1O{%1aYAej zRy<>wLs+9}AX^^FVs$@_VhlREV?ek6kRcRk|5YWU7&eClc-sEw@Cgoj(|D8cRy&>CM@xpl_9ak$<&WBz%INdwLD6=MY)nOprNTifVy zW*d!z;e57DmukRHGwIxT4Sz@{HVjv~>oj11J%BrK-eY%a!+@>ujJF-Wic{{ z9aMTSOoT2bzaRtj7eioid813bD@&Rdt|HYbcjps%?&yWj6~?g57I9$bZLLf`@HqnP zI?#}j^ye_%!3G%d5g7X_8)&qkpFiU|U^BbzooN50snCrvAo96BR1O2*U_uLu4@(P| z19`bi9z&bl=k~hxZ}_PcXOUiO)!Xf>AM4|KRTqDi>M~TnU#X$)-@~8i27+@C{)1@X zw$!AGSqK&Cn>1+-?+vkim6pTb$i;~wSX9=~SKfmYA?>&Br(AS)qUy2Ww%nt>dItyn zX4&pddXgH%*bZ_BP?9FhULt(J>WfpqtaT`}m#22JRz|KrS<5b+FQbVn96Iv{YMN5Y z2l*>2{T!#FoGk$C32Z1`FKBcGgD>q4#^af*h0#ph+qDbx^d@tJO3O_augIS@COKQ| z>z*IVNLLV=)D1`^Q3#uNunw?Eo)b(4=w@MLZvz%c)AhT5{{$}Ir|7xtDDqf|-s5X{ zK-rwu*_54WJnV+*NV^3+93nd9o9<&H4k}rVdhQaKkC-I_fkf;mWWIpe+YUWgMb1tI zAyV$%o7rGT(K640R(ihpgfOGfHL9-Ft})zYreE)P?C?@F*>J8YrW+kZt|;ydu`Z*B zMr1a9aI7pTxxCNwPs0N0_J1ZT9d0Evv?SOI8T*JiGRl*3LcFi-QiuPU>8Sys2>SzuaD3(UxUvI<9B#oHcmj*h5k2=b+kR!B zngK67$Gcvn!la&UUI6LKb%kF&NxfFCSK~f)mGs7L8&;VL*eW6AqTr&iyYs&!JPx#c zW-%^eg9Za|z2y8!Go$?>c{(g{7@5kAd^wr9T`<>@30m4OMg-$tTm6({#S2DWjOfL+ z!yP;Mcy9OZa(!Cv^RrBlZPDwQo}s`R-p(Io;6GS1CU)3Jo%t04y8m*~iUiqaj(Kf7 z!p!$y6}bawW0$fatI4KiA>6FA)P+szpRcIsD)B&mVF7_NdA-=gE=p)KD5FzReR-#{-b+HCdt;IMFCYS8{>+Px&(;mOBpT5 z$)K$OJ3z$0Nj(=Q*HVKA-kW()Zz)cxDf>FJJP$)`B$FgL5|B_B_NH8VLLh-A`2`v1 zPdP5cG(Z@7ku+7i;WZjV&HerMy}I>lfEoCDU`h#z4E7>Y%s`^#EQh5yD|ZqW5mkZ( z20Q!0tK1kfNz;8{EoIj!@#L^8(vT&-7YuC!k2gF^9kUYmlJ?|P>KA$kcAs*coW7PIc|96XfmCL&@Umc)UycgYl@YmCicp zd{3WqakBjpLf)iah|@XAeQUNWO{U-0HRF$Yn?$$zBt`>Y&0rw|%ov?h_@P^9q!ydc z&i29WLULV~S2~xSJ=}Ydd(}+(U(-}=8C8$e4S#w+)4^{$|KxJ%tbui}b>S6Y5oaf% z$CLk1+BN(rk?(r}^GoQf-D?g_eldu_;9gz!)KNq%mausf!uz!u3;sI1%8|Kb zxXf-jEO7WhpmBa?y?QXmMf2q$Go4i`4u=+oGPSg#06V1+Y?~qM1OJIT8dHPqV~+OF zGDxFE@G3+-e=|?F!^c<;ghxlw6r^?v+DT&Wp6ew!#9Y+HpNe0gP}|59^desTD#i;d zV7$?Eg(EU8{@@S0T?wZ=e0N4;=I>K3lqfMq^BZ=e!KGUE%JmQ?_iMEF{NHd__2;lB zZ|Nc@v?>1x30S*(sUbjy?96VjhQdLJ60xc8N%ZdRk}<$F^K#_}G9rDp(Fb6$`1Ibh z0F)S=2cQ7XxR8{QQ&q%)m3@kOzQwSHeR(g6WS+>E7FwQNElCG{U3Q{V#~+h#1!ctn z2MiuFSbGjEqQ(53shYT$b0LEvEp3&9^YYq15@WV@G$ZtiPNfXt@pcJ9KU0nuH%Hw# z#4BAQ=(2f-{1WJTMFU_5M}Kgb;2#BRzkt@ z$$Sqy5)doL(S1=id724wX<(UUP}pB&0-LRk_b6@l;(bea{jiLs%Qi0%j6-3y1I?wuj z8C|4GM0GE|a}7V&z#cz97Fg~h8C zNl%E%R_7Cz#G%s=zBun59({W~!<~1IuD6MV-|dL+F6UDk$0%l1z<>}m0U&LI>baAN zVSCnlGT(Qbho~p+S8006L`kzMA|QX%6%Sc9Y1f{fU?&}}`zy|CydXH;>SXDNgAAOM zKEU?+l9uv{^P*kf&60Wdx$f4UX_dQK?4(a8hoRFKjC3t%HUwTZK--N)_9kUusT@Y8j`hGJ0S34D;$pP@-gxKay{ZZDYea zy#q_&#Ed?R`2SqPzxQCqW82W!dMk!t^qShx1iveUNJ0v@Pb|{IW#&sJfI)>}-A*b5 zUfq=;(G=;#>}7s1I2bbc(FK`c*9#q`C|fvv6$rCYlLtwCkC=@3)Gz@KwnsoC-`hKc ztJux20Okx-3;8*T3M7qRWa^QHNDsjQSw`ti7p*alZNTb%1S5B9bs%z}Mc)Q@-!v6F zUssfYA&3GFP8pDSM(s=ZC1@Kj;+bJT={tHu55Tn#ZErV)xTBMaBG}%qcN_ZM2)TfP z6|>D2P4eCf_kW#ZkJr=p0|l(;P1SEK=7oajCa^Yxjud6r5O1v?=uY|sg?6((NKe&K zvLrZL^YuDC;Yp^(v2oXizN7M`uke^VmsLCh2QY))l@?X44q60y_@CY6Ma$gQAu&1k zC)yo|;+~l(D$=cCDpO&1{n%c@5mU}gA2x1I}?&@eWjdEnU0))!nYu zm9+Kt90ob2@aZ8@3}`r}rjRbIZfy*YqoWgMpiBjPPFX!hQPNeUf=bGO`Md!-=5xR- zNERP!M)O7+<3^OF?)9S@HDRBPrF|A=7%D_Wxhu+tL7t@8s&q0u<=T2SN=M-k9?4gwxm*w|&UgsD4}>6S@Y5KKVF zxwEfT%0=dDJ4J#+Cz;?5WF5&T1DuX>VY{5kArQ@Yf%BPNn^GGwf`IRf2to?_q>xt4 z<9->RlLfj^xCt7=pCbby8S3-av^V7brPc!F!}cNsti$H(0eswWO)+U%MfD2v^FLd> z+hFxQRsCVjCntX_Gb^&^=B;NZzuXC<1HG0LQ<$8rtbZ%vz(s%SUk#%D%C1kQC^dC- z5rlou7*qxo-2HO4E8wYP4Wr!WeS#II>3Pw(;7taml_;=|cSu6!W@SJ=)8oah8}I$c zE6&QZ0ggogGSPRO>2QQ?d578gJM{aB_BCbRZR>H9x$IcIceU5mwlUrUwMghvVbu4) zd+^(usF=pf1N;tB`hn`L$Aapv(a`H3WX6${`=xfnF41AyYXq_6-`l`ThRDh@T~$t? zmU?wAX_I0~{}4XPD-Yf^J)dkjV=fk*@1{L0Kb?2a!7L2$@|}Fq$+kDgw=EGF>>(WM zziYF(eU+4u{U|x0c!;WRL#w)>yTzK9#f(o%w9svn@Gh>7mGwQ)9}DR5=Mkw_yge?zgUUeJNO1RnQl z@rdAhh%^!N$=+FsHV*f;ysj+=zn@m{k2cMK@Xm!{!&1XDNVDrIu<$5`g6R~_gnfWu zWHQ~blZNrrVm1(rF#G5&Dtkcgy4vlICrp4*Z^PRoUn$IhYO-w%SG@OlLH)GRLzP?_=isJ@mv*{Yr*#pL|l?320^V zNj+yd7)6Qn8>;YN*T7{mdUVYMt8Tf3A#qjCS{&F}I?{qtGrmec>z-p5PF?oUfVauG7FK=UECKI9QoH`?i=};BruRR4w zGnT=l9RT0Is;d!FkIXu)UT`5&rh71oOFH8lx2>B25bJS0)f5~tE!Jsk`>VXiDqQ43 zLQvS_j{9L->Zh#MkAkLzC%0^E-R@Uh_Pd?<6+-vG0Jfv-MhM;v#i(vT5RV5Zv(<-A zB2@rJgLIqE?7WV?KO-6Av1M_0VruWg;x7G0*5@*x&!}{ruv!VM$ni`3X%B%14VO6R3i;Ra#`)TSb#t@+%bsZ*$UwING}wV4_2W z-jh1M_f2^~9@vqA&$4IyqMhFcP06phJBx}Ot~n{RP2s+1K&W12)+vx`(v;M6%@d~i z#m;K!=YCZ&7_*FP6~nMMQRah7vS zVYsq2;^u+hLMQGjvH=y=jdcj#FF^iR8T`Vw7bjXNz9*ysw##^-4Ve=vO+>eny&T-p z*y;oLG^D>hIegX@Hy_AX`NJws2pjq7X+~G+$ zXRE$G&4q6-2k}d)t|RvKgCaLeJpdw!gn8{5A$1C$<;LxtpdBSODTGIv-73>$W)Sa9l>PK{%o7!8Q@8O>9Kr$2*Myf-+2`tjXRFA{+Ny+Y+ zhHZ)(kqQnC6YU4$wG$Lj8_@9fVCYJ7w+XtUrBd@d)I&a<_2zUYMEJ zJFKXCl_4-}c}V^E5Y39d&uiGN7)IhYwUl^AAjA289^$;^@Gc+5prJp)^YWL8)O=L` zwD9%YZe7xg(Ia7Z((*2H0MMlHdrmv&bJok0j5S+Ok4gFP0%1$N>kGTVY z|7<8)mM!lFVifkbMr=paF_FSIgvxR`6dGx39KKwTk2%|cqwiYLLxNe3%( z&I~qAakbc6!EZ%I1QAI-Z{I$&iGqzt$*VtJV)!GD5J5BIJfd*b4A1WWi! zgYopyq|?q#NN{JXBS-d&E4|ioo6v<9=L1{aqdxWZ9QqHmJ{7h&|;f!ua*RYd5&Acs84j|s7N5#C&*%1rXq38MN1C>a`t;Q`f^Q5@?qP?5zzGzxUs z{_Hx>@YV@80IB?O*8!~P>wu<-!pI|vB(;9@g6lPmDsT>tpn&itA%b^d$G+r@P5#q5 zG}eB4T2)HVBBNY<&EMO6MyPnzv?eu7zd0xMX~_I=N^?(_X9!6J#r1!cv!z#?CR~FM z;Zj!dgNJUZ(95{jR7lUNma4774YlrZirL{v2Maa*GJZovfcX=yx|%9r4@7wqn(3AG zIMGwJ_{Qsh_ew%a$G~)@fEyvZ^Gwkf==Yy$FuX&mqG%pLLEl*iX#2NP?9VZlxB58B zEH48_-gKKNHCqt4TN^YztPWGC<@PX%4gzJWezgXEv%pM;c)mU9Hz81DGThSE-g{22 z5!V2|;#W*A2Vnp%DS&8L=<#L5BK=I=!VXv+0p@Ay8w{MWQpzWyrOs3v-IMA)ZstA`AuL9g`FtfkMpyPTw8;G-<&&Qw zvI|xs0P8vegYPV!F=vOX2+Yb$6&_t=5w9yz4R8#~1`)B zO(_BqF`sH91+i6_w_tlVRmo_pp@X?JSoldtLZbs9OEQ3AMA78y>2Z4n>`BimVhxh7 zb|ItB0B0JBBi8)-Jo#eJ+v5>FC=G^l&?Z;O3OBE=!to{KpQa+Zw_UAhjj(kqXk)^tYV=YxWXvD^UA!tOcQm|ohV;+B z8BqLz)_!+rl5NB*RyWn}{A^c-NcOtjwPDH#ZHFMjDPr_XnA10BfsB0?RZNjAnCmu9 zsJ-{wQed>p3qM8EL**|bU_Y}xPd8{P*~3JV$zWNW4pMjubj@o%|Lw`EIAw_(GKKDN zi|w$=4~Th1tCTaPOWa%`#EO8H2+64FASCc`-Zz`Lf92SxagZD`;WUVrc-U}jXu3RQ zJK*sdwtoB<9$;Dp_wzZz;370hUBFBKMI)WOvjKDzK|YY1UP)STL`ozgUhOgPMjbpwXF~Cl=srY%BTaMgpWCa69i&j(Z z27AnieGWqm{Wkf)~nxBSwSycPE0PWVuB3*3^Y6PRY-gzkSg0 z=7(txEzqq}LMWJ*2G92R`{|Ca?5AFxXDXh&l20FCzkRWyV6Q&E6CQxh8NWwNt;f2Y z`{Q7EF9!o&mF*CM^==C?dZdE%vczDy{Ix0rSigbLt+ww20+NWzBeSWqOe{UwFaYo5 za&-%JQ)FpSoQvk*%L(8ABpD@+q`m!Uc-X=ZY2GJAYp+K|p^OGPU6uU|4WeSnjMcyI zLsXXPzo5lN?zBwF?sYlfR%*yAX&L9{5OYH~G{{s2)L`Gc*BqQ85vz7#eHETqGY&JY zUE7nJ$2qC5Vq2njayBwwg|cZ$xok}wca z$Zq0>$@+`SWWxO@erpAf;WraAFP93EEHl*>~|7;6dM z$X-~7`J4@b?^F?6L@gV`|Nan}1GW}{_dgTphT%XV45^6+a?<|#YC~P7g3m=hl~p$< z!3a}@tMfMkx1UEebk4?$aY zA1XC%PN#)_sEcsweZ`~b{W$LUk>5Rvbc;FN_2}=Nh4R)5w3WHKu(YimRm-dmUb4Ks zvf`Yt20ng9SoK!4p!SKoynhZ4!j4WM!uFJme>Ag&#B=BgNzw`WhIX>o$E{&|4L?bv z=Gi^nExJi0Nki2SzkYqtW%EEvtG2`hHQ<$d{Jg?Kc`u$G7LRm^pxV)cHd(rlzhUNa zZ$KFz_<(?pJ|2_=$T^mAKQs9J22 z7?EzU-(J14X3wVCZ?2PjEvP31)aVt)n%rp%J28P4DHaqd{?A>}25D0>DD_phF8NMq zweA$*Ec~1bQ|;z->6#OeEoi)vPwG=^iE}nroC_&H;M0Orvcr4D!{Bjw+%Xk=Lit8a z8CWLAP#XsIG%yX1P+A>&r?Gi2}V1x4iF%@ z1jo2mS?ND8l~|ZRVhX?yHJ~1A&l^Ndq%kTvgh(=a33Zq_1tV~p`xr}e>57=*w%tPr zRjv668+4!rgKV1RcBx{lFuwPD=290WW_?S5id3!gFLlWjw^|1eiOd;dUvt=wkBxR% zM|pIG$RM<<1VX$=ec*vA4#nVf#$4~g+`a+HXT1O6t9Wn9B(94K4rG%X4gd%g4bs7V zZEDBpjiESlclV3fmM7>2y|xr$o#C{^FAb8Slz+ zC3W|+x%VD1<ESh8F8$e2EtlK}NEC0K5zH7U#oOS28xqdZf(;ek!iOB{1ua*VoztXlLAs@w zaJ@X_k3u7V6lH=VixhfH#&#kOE{}pQ=+#NAn6zC`Bj<(HVw}hpPj~Fu}EPls%ck4igPnW2Z-&|ov?a`fKegcXb(7!Am= zl=>63y0J{IN93cWP&4uhfqrW{O<(U*0Ei870_{bEb+RFKQfu8V<@?cWGi$xr%-Iwh ztMX<~ClY>Pi*lF1|3j4#|Kx@PZP1{yjD(RI`$HSqcz9McY#=xH!^P+Q9Y0yW6o?5l zvOZ%Ji7#+W1cKkqfNgW)l40qJbutSyr69!evz!})sbfq6v1f9`o&?m(3>|nr&(Sz7 z^HJ8cdOGw}EC3XYfR)U3-8LHPk{lbTrQ0AXPFxB_y)ZQ`SQbK{Nnp&LAvfv|5RpmC zMpkVCxJ0Ohjcike41!J%PTX#d7!1Qf=w}(6Uakw991w8~u|(EWlkd-PQ%!tVF3YT6?{{O?rIv#T$qj3yxIms2!FYWV1VgBpV*cCIM-@(Pc2P=P(22 z<7OOyg$Q|nq)$Ws-yVcg#O|Z_iSa-~hHz&&)qPlENeL=#4H8|j+Y!Y~Va&83h3KM8 zwAJ+ph{L+0rk{yWYq7-t1UCw!W(YEXn2h0z} zieoR=sjP38*U?`wR;t^*Yq}OzGO8$><c z`?QQBFWiq6Um#FoPBtsw;s`}4F=f`OJB+HSI+N6IH9D2Z?`U0^}pq+cHUVDL7)YU+$RoS3N;WTkvzaqoaui|pFUjeAmGnpGXkNIVwP?y8%63Fro1nxFBCEj|w3V2iKE8EZUf(-Z}GPIc+gCt z@{zbs8ACae<*l1CbtlyJ*r<_At;5;sl9a@KXVx#7VZUp?nW+pq><=P|DOtC@sDBG4 z2S*i6#0w6NJs-Y@y9W1Hh$G*VNsERqc|l`bOY^C&t^h*DjV?(+NMtgT|K^;hVRsdw zsj4n%06VXGJHI+9hdCd^fN&C*`|0x2T0Q{^S)R7rN z)Ab)^FqGu>QN5E(FPb<(`{iQRwCWKwv*rP&izoWYQ_qqjZRoTL8!#zV+IFU5V>04# z5tpKVhs%mHv&hI%3z|4p`gR;fWDfvon**1;=Xoxu{vXM|2}Q?SmqV)oQuI$GG-Iy{ zk51KgoE%Rd2Hv#ahD~8!hC(o$bLMJv^iaSm#&2mBc|hG>J2$S2EWczU`?oCGh=VHj zAY=Y?T=)TFuY%hxraDK-N#qeWx9^9PGWr`K5%s@?)XCk#7ee1@6sOK%F4RuS^v;61 z>o5Dy&C$(oTbOIJ7RU#TI6LR3G5787-^z2mj<%l(G#%h{!?O-d+9&2lCYxf%zfyKh zzuC~PzE-k_S|?xuy_2MF!2{f@4ygPt2&}H{0}Ec4Lzc`_%As>6XxH5P?6Kt^P)D~` zn;_!X@*?bR!zUSISW8>giT@BVNJu10L{8S(+Q-W^&>pCrub{V`$}k2(Pvx`mQ6)zz zrZxLC-8O*Qc8;YWbPsjj$-H%kbthTUZjU-_ORBTG=mrV2ZAA zfBKGQSRU=7JgzndCN8?^j4i9DKqzvWgkV>TGv4AqQgv3}O)=Ng zJpICa{3r*RhTP}B-?&>^{Z6w@FBM|jczUCQ3uh7v^WvqGD6yZA*=cKlC_c^=2;)7+ zxv#{c#id^wHo>w9wv^Lj2_>?ATxDd%FM%@Z-#v>o@=ps0HvWbCDaruKU+sXgx@-(n zdlX-%VJJFbBnzD|x2#(5d|cIj$}@sraei~jSaK`)P0vik^4jJebLKWSOlyo1V-8sO z8E9S(Zp2o-U>XBwxn8cntGcdI+-wnxBd;P{E1Xy)cftUEup8Ct#b!iZiQTu%a3up1 zJH{{XvcO1tcU0yU6VD1^Zdp7L!~KL>3;T;jh^YMbq^uO}JbG(}+j1}&Da=shVR@D-s|B&SsS45 zO-Hca$*!uDm`qyj#fxh^+DRcy>;D(+26b=`XHpFDtf-jOTwvZDC^E5Vy{&oT>ji^X zP>0cVhkJ^ROz~K~x!(fGisaR1u4sjKq|1}a?oTyboLNONjX6|eep6&=B zyRW7cEl8n)aA@2eqK25!GlKKY0k5ozhdq>t!G_Dynmr74L{~vSFuGP}1SMBKZZE71 zo;SsXRAG%jmEP!?F1H-%p!1IcELeGP(U{5Q-USD)bv|ibiD95MDCUWkXW0~2RMVr~ z7|QgJ0#*_)71f=w+He59CU0#%+;T17E)d`dLf~RTLji?)^H1~<^95%;){{poMog+B z^mv$>4P8@D&x_k*1>pq^l(VU5V_V-VE(^y|`mkU6D_VcXodz4Z$nc1=H}A--i5))V zVPBE^xnu$0f90((&hW6+%2fKLMb=VxAL`@Yp)%0hdZltE1uaI!KTM8Y`Mx=^18X z{sTV?GdBU4m{-~z+Uh&9)ghQ!Ql2WBanEqDq2lLcCPcyNn|?tDtyS8=2kNWuk%;9B z;2E$hTit=-cB&s52q)$!(O^klA~Bpr-`$@EzW$(SRnz&=sg9FS^9mAnM^5z6d9`{L z!n%;if5x6_L(mX{seJ>q!toJZ)Q1fTBzsm&j(_HjYGGnq8#xH?;-(Nxe;bf0#ADp< zQLN#Kz9P4ZZtb6efU$ximYe#i{d$N2dk*Rx*7Y%Y&W^krrtRm>%ebfN!q(t(=YHE&uQ`E&OH{P1~lVJU_ z%}i3MSF53CH{O*bD@4vUOQs6tPCrmdbVqxWx^Mgk2NtFg^~@Q3qTs~X3}4xOKkn@~ zv?=+WefdP<`MEP7tgRq3r%rFL7kEC1{;FPM5dAM2Aq!)p7OXiB0e6L$wScce^q&LG z%i+}v7fm43x@&|sfl8_q{(L~UqCCGG%B)$eq_LSO6~4Ew2^c4Ww{ihXccM_uBXb;< zenNVSO^BWnH`HsiGJd`^dt}yCf(#y^4@&*MkMzEzy=Ug`Q^9L37yY?79TM2LFR+&D zmW`2<*79hvTA>Yw@b@r0IK-tnirEZp#1X+s@c&2%h#3b$&5L7TvJ#n!dvnIVEtdZc zz0r!h6kGd;Udg`gr(ir%cV8sGp9wwKm{0NF64#^byLtLPi@_+{R#eWAk;!Oc32AOUm6T&9u8} zzBlz?IN?$IF&k!O={$iarf*Sz?c<*0+8ZBKEpM_dRZkVB3t3M7N?^HdnCe)Vv+j~L z=arA9)!02ftn(Q6SU|T^q|Btlvph6C)0+}7Ir-`|zJGCNN< z7*tr3E%<}F8`*HrCq%0zRaocenR6!V-mK1_)nK&DwCM=nB8-4{KP}>9{{o?f0Zh=C zP5p$S;0oNDB&=Zf!*3^gmLI*Y1mL!BMaP~B@|{hrQmi<~Glyg^+40_YBQi7Rl`6{~eMmvm^W$3VCpfYv6d&}x zey6r&pkw%0>_*y2|GoU8Kee%v?_t^}1v7|lbh)5XJ{zUK_smrw>>$DLDYq1QE z%A2Zhy6&nYy<8g)Th%snXRWH@Q@{Hy7E-L+MR^6=%a$~Q1?}eA!)-t1!Zu*?-)(Ah z&V;3GF3n%{CJLKDuOJ(SdFz=NG%%~-H3m~MU;F76!KWi>KD(NT$sp7u!Z9)#v@k3q zrp;oFG9(*LJR@0} z>ONAh)~gAO6s}L@Nk`xe^vQh(?Uf@7%j@x9sr4Q;z~H|EgKaNS9N^QfL*ZUqt`w{Q z^&x2e8Z=7gEmD6AleIn$uV~PJRWbY88FB))n|U>b z;`3@Jgno1O=}SSFYaEEOeL}8xClp|Tcm)3LQ}BKFEt`{JFgDa;#)0nwAsdSc-o=jiODE+RvblYi>qn(niEjZZGc_?K$TSQI>3lP8h&;oGtI$fJ4bP~fna(IWsN zjvCUpHg@pm>PMhlc)l!WuR=8eZs4ja5YDiU-j-tsN9 z^(l@aeKJ#MxkR>#1p{`5Y}UG|xy^0ZvoE^J1fh=_zIGgWOw@pePH$zc`&}^_4bFaV z7mI>_c+CN%BruL#2fK8FKa2V+Cx87wXp!<<*y-~(>jg}GH&ft|i zE?6Sjv2=kHIn?}1*mG`NKecgeaGE&g!EL^}gO7A|R?kSfO%$|Ymz2Zb$hOWx30_UjtADa$3JdSA7b*O$#7BST7Hd${`f+N z%>p3uEV6sL3=P#ConsYvIDu#hbTLEpMOgB~E?63-;OINRs!a;@E(@F9q1S|CLs;T@ zK(QVN%?(PV*SSaPWwD;W*mw27ZH}?h9w+}cN3`gHI!es(mHa^vYJ-v!{BrZpv8~8e zpa+|k(hBPxmxUXr1y?rQULT@5y{((sAuhY!dsoF9@94RG;T-A#t%ixGyeB7ioG%)L zhJ+?^WW~QhpOvcI!|XzXVCgdpS9uEbQaflvskB{rezD!{J<3Csk)F}8zR2hfY3Dyd zY7%??NMUT+PtKP(e%KG<%UDKfEpcs)uH2ud5D|6-(#M=j(E_Ywdpca9ziWMpKS%P~ zjIU|_0jTglCz6`XV@vkW=z<)rhzld6H*Xbi+i-rZ?fzHEH#>XHL^PKQ*o1!VB->i& zEX)>0>BXs=vk#vfhe%a4b1~@fKB6ud{3_CoSH;SH5@%rk9yq@X=em8z1|}F>nXb6` z7)MLnXc|J~?`-q@*kR}ae@!C6YX}A>4k((AtjxzUOj2bZMo7g)ox7k#jV85(f4lw_ zy{`tnh{(**&qCN;NI5>Aj59#B(qhObl`nDNkcd{o8Szfh6W9MY8gt3sBm(CY-BjM{ zjIVabuwMeNW=Ihr`uNg8F}^IeNTTYh^RcKF%|c)vv5IZu^jC+)GY_QtF0wf&5?qa? z{}8zlqVPlJ^6P--lq@F^pSX?5$nARlC5vpSF9Q|?YV3F{&Jl+HX3xLKU#KT3aOo?d z0Kz<<@$)=DfDB@q;I|WU1a7NjNCJ9^my=*!hNq?jXv;`x!*PHJ+pr5XcXXCHSxN6C zn}NR}%Jk=UynF-d{7{%8I~Q~kb39$=V^-mNrA8Z-;{|h)32u09mgVnhnMK33t=IW> znCJ(H4O|2hoASo~>hUjND5IoHt}o|e($+_`-Fub=j$acC40xKZTZd|dPAQyg2rMG-P=FjTreR>eX3$1i*6#2g4^_(DqXBm&s@svk2oyZBRgzfc_$q*Vl^FJFery9|`fx@DsBIV$b1XA*Os1XjvO>Pn7q7y$1 zsZPiF6_#kn+2|S$4Mb1n=en#Z1P;=x1-BbGf1moZfN(YU@;yVozYx6;%~;)*HY1&R z+dKOC0l6_5>MWD$EI)7OlqZT;;E-T)CqitPyx46UQlnq+pp zyLJTfn1~on#lDp}Kn0MeKH3A_esSrWsyoXi^>W@Y8`Q;$5*=(Xh_^z10XhtrUp>H# zBcu;&{TiL50dHL+K1>N5D;OQD2NX;9!lm%0GA@YCfoZChgB6@<)J7i~eIOyoQr0eG zAa%FJB*`6c?UtChzzi^6$EAm+@;nUqk-q8wdN;RM|1oH1eBvR4W)h+3D@%=n=#W@K z+%R?=9pPXi728q@hnwepM^8?2s0fo)y#L=)>qtJkNwh2X9i}Of)L~=?fankYu65{n zI*q_#@dtOZo=f6$nQ#PZldy-U_?fd8$-c35wVil+4nozn@Q?ac?I`MeP$XVK*XY5$ zEmS`QW{XL3K9fj*imsSEa+Jo*d-jnAcC zBHe$5r<55~mgb_-fVE@|-LREF)E*}eE;l?bazaGo(1|F^Jez_4C2H-%kd>PNxa^qt z!@{5UhKhCq!Vvqncx&ZUs2=K<;a=-yb>9qkg5x-YdLk9r+N+5N022!XFU2mm(jPMy z_hhaXU-!c7qNx#0h8_y-Rs&G6f9Nm>Owb_L9oD$d#3U`AhKO)znW8-vgQij`e%0~? znB8-}vT|y1&wQO?8|mo&Dz$|X4Ivrut`M3ZyeUbrYvk#YruE1A8ld(^4rvDDzI z>s2S9H08bXH$_#U>DF9GhIc3#G$t-y;`q*RkQ9K`0kZ^Z^BKg+-y3NnDsJKH_H2-@D1kO}NRwVh zM&l>Z&Pq?kVtpKNAYY)>XU`!i&2LQ}rUeB;no82f0_7R~=;l1R8njFTKB9tOGm`?* zilbg=2r?VUOUGXYO}=9&#fF5=X0OZVbguHC3=EI(>=_hNKdN<>a;jHcZxaYc>Mf7%&+?&HZRI;+T;?{ z_~-uR!QtV?;rPJrVYr*Z{G(mVIV^$xr-o}CD}5y(_cv67Z-3i0CS-Ra`X(Y{_*VJf|n z*#nug_UsOl_k9$E-d{wqz@7qGOS-Ld`S1&idW?S9O(Je@f!8Oeg8n^brlgYU>~(SX z1dRm?!v#RIg;;*>vnY>$8f^&=FcRQ5R~!uCRM4LYuHBGd+upZfWOf;`6>VDsCc@T zw)e1#dM25p5Vhdr6O7EK<)%$}9AbN!YkA=Tlq?&@dK_eY=x`JwY6gqr7K zV^S}E!+3N6WR`TKvR|sm^Ah_3E<#px|4j8K^@4o1SN9S20%B$$Mp&)HdP7B+4|;

=v-Ix6U_#P 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 literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-lsb/tpws b/binaries/mips32r1-lsb/tpws new file mode 100755 index 0000000000000000000000000000000000000000..130820e7dc5380d1a1979c22966558ea7cf5d8df GIT binary patch literal 109544 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%0AU5 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 J5C)Iz{|9#7I{^Ry literal 0 HcmV?d00001 diff --git a/binaries/mips32r1-msb/tpws b/binaries/mips32r1-msb/tpws new file mode 100755 index 0000000000000000000000000000000000000000..b95c9dada3538b4d2f8115f168fcb4bfe3f08f48 GIT binary patch literal 109652 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

As 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 v_x($ literal 0 HcmV?d00001 diff --git a/binaries/mips64r2-msb/tpws b/binaries/mips64r2-msb/tpws new file mode 100755 index 0000000000000000000000000000000000000000..f1940cd034c7fcba979ad4a26392518f82589034 GIT binary patch literal 295208 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 z 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 literal 0 HcmV?d00001 diff --git a/binaries/ppc/ip2net b/binaries/ppc/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..eeaab7a097527ce6ef569634aa4af4b991868f51 GIT binary patch literal 41252 zcmZs>Q;;r9ur1iOZQHhO+qP}nwrv}`jor3wf9>wwod29VH|AwBVpXkLnGy9=Sy7c4 zC@v=f3<3-a^nVQm2<<-#j06_z_210)f93xe5zzk^1^hoc(*KM9WuWMJ|1BYa{@3$= zMkKKRJpTa*s8IX=00{hlJZ5gE%KxMO{}{x78d5TBJ+-=$7BT8QLfHStfPfPL0kb*% z$J_pcF~WZX4k(advUr#kTMRUekV!+?bo1mWtE{{Q8|oJzU~Y#p9#@07X;R;9)jI_`#N2zN*F0>>!*~(`8hRn zOZ7pI=F6yRE4B$XDXu|LtrjhG$~ess39oGwDQY&EwqZtieiK;n>aLz1i zwBclOT@~mE0kX$>Yjhz5vRr*r8m83Ww)A34etLh8gO(2BXpWOinxCH!CAYbNCsGFr z4T~ZOClBi&<8S0Hdnq5h&gXbllnE_CjxuD(_(N@v9{K`+Z`}u_q(dpOfz56M?3yrF$%YpynA%cl{-3*n@w(4Jf6qen-o9DAku0}D|lhQ;pzboE*v5Pazuq9n4IkPULb&&^Ox^96P)we zyZb5#Y2UW!Np=A{RPV?45JcMhkbEp?{rpgG=nz}Z4lSf}NOb9|23~_3GFO`+GaWwh zowLzkE*0g7KWoUItv<52k^NluV`@izQV&M@QUsP8qn>e1Eo-^S_LhIvn3i5mj{lSz^U9Ja0RUWW^hWQ+~5w2kL%`e zVq;?@5{lD(lee#YCxMhKD2JE<&Rp#B5L7f(QW?S6DLy>~a+MW2gHHYfQJer?o`6_GR0seSdO#5{^+N6o ziS;AF_(Hne%mcPBy${=D3$(d7UnS;(L^FwEA%{`@=11RE{vQUbN$t8MrbXlp8DVAplO_(J<>Q9}Q{vF7X>8y^w^^ZLN zZeKQAThN69ZwB4Wckj7TKWq$)qsWJ3TW(Dm_o&beJffo{^YqW=TJ}q|I-w(LP}}s2 zO2(0zO75JBva)m>W%9% z-G0kdjF*NR>H6#9%y-@ecz=ZSr)9VOBKe{bqc!|HFdV|6>cFJ4m8S69rh)^Wns?OG z`~8vhRLZEFyGqY_kP{0_-Sa8(+*aDfIU=@A)HA5>Iz+Wrk8ox~73=U#)aU&bPDq~n zqhMGn@Zf_0Hfn>QL8mPxbX(QGG&<2`50P>ItASM{O?3F=pI204CrvmZd*?R z)T_0FH6tXVyB!%`W!^Q06ZHa58zq-xEJ3pM9-D|r`DE-+{MB?`4ojCCAo!_6t6 zbvy$9S1-$?3#KTM(RYs^-{CJe$K+T*0!*T*opU9A*`!?l%cY(Lyr=9aP(Cr-vjkNS*;YEgR0&)#H5uG57YQ7fGi_~hDxn2BKh zmeLAGy7F_SM~lf!Vk@>fu-XD5C}TN)ubQ+Y|2**~5uXoWYjg)D<1;@nnc)JLsj1L$ zeIY;23WFwi9a-4jmpTZop-!-)kjowjvOCeqpq~?&d^xng(aok7-nM&R-g8Oadl$iS1K~c2I%&h0?)D4TV3m89o63gQQ$|prY(`|2s(AUoh^5w zWcgZ!)$*fH%VW8BYl{q~guRQlO0eo#{J`4wa3I zz+T)9AJ7lV2d%Pl(PW#~a zISI1FxG<)=&Arv$+!i02cLFtf+oAe1W1OdBj+~~8Lclji_@6?bs z5pdq^kEtWd8@HNT6*ohdiMbZvAHU3YusbenKyY+jKE0G3%igC-@LW0`bE@a=S4!QE z-2{(Zy1J1+UY;RdV2Ey`x_8P^(M$#!&n#Z zuyNbFW*7qQ=q91ud~$-mTAr}Vj0=+C<)hLWxjCOhE0c{^RM`ap0y=SG29*uFwMAbt zK2p%ux%!xMC=$9*1(Hgg_j z1y+u%0R)Zsg8tBANdM*zJ2cVio6Cnk+^0|*0yeP*jl)Gt^W zP-;h0%=a`1sTPE?g%;zEag=*$u4Pp!ljpSZS&D6Me~)is$I+z=Gc%^8T}BqoAG2KQ za5wrUpK`wD%|@KUgE2v`t-i0V_&|f{!LVlT#o_NPi47OhAEQ@RZeZUE+qYwe+?gbe zCwHi39;j}$=(pm0afd7z1a<3Shk`aS{9`#s@>9wca5&{&^&pq~zss zfm|Aub<*L$d3z$D-KNYj{OoCIr!*Ba%3cbtP|mwD*zqHUG>q$RZs43ZqN+c zN_L9}*DiY>i$+-zbl%4ocw!d>7y4HHHlC@V=gc|DJV-Ag)9q|9qsbe%)|YN=+#SS! zl7YuBbSvvQwp`(XSqwR~k%-fiVAd-@i*pws%Jh19Mu53BYXCWeIgkj86Ixp_Mh+zW07yaM66e4eV^zKqXmvy)!uDnEkHl zW`xT4{khu(0DrT?R@HpdgLPP%D^Ao1d&>K4SH}x)oN1PPwWdaDS*3X>Sn3 zzumafZ-A%k;UI7t!}d04vpTNGVF*=S_HQ-R_ys205&7wy{3{7;^WX6g5Jwx@Ou*5* zF{4L=&ogTLBS3!p4T(hvdAoJ<=ln)<36!l`9g{lnYma0bppq7uX1heZT3~@RnaZx@ zoE;278i8w0kou9AbW$q0B^gWa-TsV}8V2M$EQeKs5@SK38Lzh~?I$7A59&he-yC1j zG{Y?_zxD5*_O{4i-jWtrHG~LGqmkKsLeQEJ5LT)yyYo0QSfkrs5?k;wV@jn}-^*b`Z>1I@uOCcsWMt=%6vl==42}|E{a4EHCO zr1|yEG*F%-4;O{Q3Abd3&GN;6%r={yQPh~AXdC^Ii~}Ah`XU%G$Qy5VzXz6|FSNXi*JCM~N^0u!yir)-Q##eP+?R`zTzA{nb(f3OEn}hAkU%4CTQ)mNSaE)cZ{S6hHyD`4 z5KC;WhKaLTndLu+EXV1iMsKm?RAs*+3q{l+>gOsRf$f7NIJ^$4L;M$6rKI-ns;lc$ z{Fe|*YX9(b;T!|XJor5-r1tP6 zJ2*!&chWO#0J}}1h*^uiWG@TiN(VALD}(06CPFJo(3LkM>_&VY15qCDL+7G2=Tc#2 z%dP8~Ym3OWXj*5X=>9APRHGMgQ$HQ~-Cg!2fxZ)o&x9<-8*vHNLK>-%s_QOs4!>k6 zK!BU58Vi?>w5>sd7R?F9UN2}jy;aYQXDTQGB0$6Bls^wDFgdW1mtC7arMadraGYq? z-+z9g4fv~)09R=q+6F0B>#7-P9rAh!RB|QY*2#^=`7hLiuSw7+2Q*LYKX*`RyFInU zB7C`=gIY2A;adfyyKcrX8fVn|fG#g+t0i+fzMf{NogOX#s~$7T6o4DDtV9`rrN9E# zyUEZN!f4iT73-U+i@2?m&2i&Rv~d&aV{pzJ8LX}(g9!>7+>q*z@XR%n8-vzzMt`q$*(L7ry)9LF5JCZcte5FU-$)y*)E!OIeLePOrwzw@E)ud8V2b6lrrxv3i5IP zNIOjLp6*~-H~nfkiwVm=+i~NhNSIaTK#{Hl%2NI<1d72E9MS5svyZ^l61gzZ(t`es zko*1y`{&f%3qNU=jz}T!tfFCaTAlbKaHi!_V-D5KNYL>C-}ZL6FZTBQ&Gg}|ktTui z5$W%s_ogVA6|sonS%ApYcgtel2Px;;-OMh@j%uB5;~uO`>gK3}^HBp=&UNN&Zgg?# zE2{|p$M19405+)`d#clPd~DLX3)3E2uqQO?LlNUw2~ED2_=7vR?E@5dVHhH-?^TC~ z`#gs?Twm%j`5-2ynP!Y<=44}gyC(87Yqs;z2)MSN*p{5pyF)!3e8ZR+?%qlE0QQq% zG5K3{Q7IRldHey=UjFA|c)Jv>npC&1`wS+>3g#U8Fh=`}E%5M-JPOpPv*X&sRvsn!;Ukw4A zpo&0LX)W7JWlqhIb4KpLGax-MQX~wH&#Ar_DgsHRBbJ@0@(G2$6vkg``9S-X2GA`S zaRK3_y|N+-=WSRTWwV!NG9r(lX)JWLkd~`S-DDhgzj90TA*&jvVe7OcYZf6A^IxR9 z5*k#GVltx^5RxB}LAAkIT9_Kmtx{Pg|0D>r)5W_KjWPxJ0Q#|2r?*V6BJ%OhcZSGY zuC7`v9%wYo+zA5B0@#B`G&TTV+`Le5R)36b#jl@!fv}%3S-7)zIR&~@sD8tp5!Z<~!aXngNFy{?yGVdSJtg}O`0Zwrb+Z7GmO{@c&NoK6PsxAH zXcCxRk`}BXt&B96uDYJ8`#18590nzucV%GTa?PF7n!p@h#vzI6Mt_mSm=Lej>#4>A zj_%V}zEpJJvz!YcQNOG!Z{7u;0VamJMz5c-}R9< z2t$7f9#l(!$L+T*LNL^F6VqTC!M{}@7=ZjFxlZ=T_2)nEx5j^koLRPCa3Y9G=SoDg(X`;B~{w3_KeeWidP*rs~?KZb?K0 zQ~1ijl;s_fY`n5)ByMFpd*`!bSl`Xce=%;=-fT_*F)vmToYxq&r}(vstLXGMKM#`j zqMzni4f{OhM7pIR^$sC4{-sR5yIOJju4NJjcJ7_HD+#WC=bZLm#Kl5$X0BFwx@8Ed3`HWhpz#q+aw zNTG(`(VSx=PWaJjET9GuWlj=T7z<&c-P<@N@`Hev9`SBbEdo_uibgh9M+UX4`QM!( zPbXn%Ys1YTgW0*LGbb7ib@G;Oe}!C7tw3&tkggNA5(a-K8dtNUIt6M2YtmDO8DB^H zu#NWsVS~(W8p3o2P`S!`Np|<9Y?1!o4n)3{z*=rYU!bYvQ zh!C{Eo>5T7#E!W!6W~N|BD!YS>D*X3&-g)&S9I3m}I-tzY*Z|`v(ekSbpIpYKHOrKdn>(3$p?w%)$9E&%T7NLgR8P&GqO(m2Rdv z2)yUSz1Gw9+W6OUSOj^vnm}bB_PK&}PfLTW;1&t0Q|u0?T9#E+b1|5_yfm0-@8C4s*kFXtzUAmvl6 zjS6^XcpJBay>5OqGI{)`a2Z}Wqtwdew-SS9M3TBd>V2yaXm|=$1iI~+s|CcT_)+N0 zRB7l{TTpqzF znhqNrQA`8Yd?+iZ7FS30SoPA9I=hzGZ+cbAeGDQTm6S0@T>HgI?%q_Lx@E^@3_ce# z;>A6i3+(=?-dH4q!MytRJp8{*rs#7;<;r+NDnUvMUfi+3MFbykBf(`reOZfNnE}Yu zr?ZRe*PQOJmv6*Sp@O>gmm{@)q+&v^M-LPsMqZ@Km;QGu);!TBAXWaBZo`O85b}?Q zWZm@dYFQ;NG^Q);e-?N+R$Q4pac>%55|x`D^8MZrq+mdAinAEm(I@ zXGdyw?BdH6$8NY4a3cjZX#gYxw|{;iUBV1T=3`6$fY8#XULDf}AQ-VB=3hr$gK+wzpm1qaWgd`47( z*lF&KZ5jHBi!{6tdRZT>WYA)~U6O~M;CUu|8l-@+!vc8H*T)yY^FDlIXdF5W=CtV} zAFg^;aNrOu`sUsxJ?*{@{$Kqa^fj&;gnH@jKmKJ4X_yKpj-*<0IItpaHhd>3-DME} zjOk16{Rr|5yp+72wP%$XYUXWLRfMQ~+pgO3^lRE;;$I1r^76IeMMq&jJA5wjHL8>q z`--|yE6Kd+c0m%(fFJ1=EG6cm>cUfRr#OISM@j^A0@4;)zOT@Yn{|#0Vmkd zq@gI=XC@McqN z{mj8*&f53KMw54R8*bl4B&x5_qtb+3ce6UN-YNC4pS={k1%mb@07{5o%pS?9@s^#NL4c`>xBk z#FB67bO_;*@`ceS_L#m|`KLTo^_=hy_8^y~MRvNEvcG^95$UCKt@N3}8lS6$Z%SZQ z(4{YSQScKUj|=;W+2m=e8_g?&tEs)Fw_HJH+AnYj9hK_}NUKm=YROLoC9fi+SpPEI zI`93~Upe1)l~wvlIbNzwkUE)2*eneOq0Jrnt*_C_l%`P#q->9+hW?L`B%kQ7@jbr% zgQTe?_fAGY6S%G^v~qtHl03v|c7U(ce>L;%Yv-yp+pSL!KOF$&Qp6@qFqCtz#c(Us z0?;2NDggHdPu_lY;P7YCEIxW#`knMIc`DtQnYNNy!NFy*(OOWaX|N4Rp-3=R&}RnI z9jO+xyEVHoXHd!bsW~oO#yjx?u5msEZ|=igY=vtp6EO)MF;3ge@rxkCe%yaWYDN^C zhH)RFFlPA2#O##?PTV*7(SiXFH{L|V%l+FhzRStkhT{rY*qU!Xi(n%g6IG%3f*opk zs$$|VCA`6m6`@;NQJo2L&}h~QdpH|6>XM4=)BdG-JUn1y!)qVC|-CgyEtBjAnYXeUILbO!d7MSl2^ZYfww$Ch%RE~=WX6w z0fV!-gz?Dg^eT$X%ogF6tHXET&#h_dd4tpWGY@V4&DUc++ueyG+L7lan9EE1?AYVF zB*++0F<*%O^B-JLvD`Vn&q{{3G%|~$ULJKBqUDOi#euWl5()3i{Z~8z%JkWp*9lcA znQzCuUPjC%0rrWUi-8hSqYK69n{}P&V^mscyb3UZ6-AMwAb@rb4k-PX;X)II)RSPVnfdA9&`54WMN^=&3=@nuNQn**`VV~l~b+|GBB*Cg`? z5$f%&_6Ji_z6IIRiX#q6Li{5rGVRoK87{Y{Uij)3zXEE~8IIe=pS5=XV%;>c+5{z` z@h;0XtC8?92o(hRcVDHPW;`;Hs$YTD4zQmIk-}d!1PUoOHKyXU;ur7Y2=h@^MOrEw6wA$!-LCixipx3*II^5yW5|szq znmFk#r+z)N89h{C3_?4XXXuGa$k`n0GXyJp=&_P7-bgFmmO`e5c=*VQDT1x-PKeWn z#)@FQ`7w_pKz=AQJog5#)S{@nNaVVPgzti*!%8dI9>yg<4W+LZrI{ zM_^$Ll-_dWDH{L7_v>xdGTbHRIwOf9O7B^+N8Gek+UO!<4yJ!Mkr9w|>D+m7m7g;W zOZ&sDQa#I1DCK*aObCYr%ajI;PigG+Be>H7R4ONd`6iQ8S*WFa z>>QHHt~<={{SwjE(S-~t75ITO$x2hk*vt7ps5O{`=TF|~sn#-F*=ivCmF#l&vfDK_ zaK)F;LnV(vxiM0$gM26(eSJY=L5z5P)OVc+dT^T(u)hvdmC?349`qaOPk$~23i#%T z6a4tK{{7gZNs2CO0Xc;*0Y|8r5baSoNf;sCec!E?j^V#H;u|qtccYzZCLB?Mu=60O z@WlSMm9yP-*IR`>v+_qH9SW4_;4kx?SRYQE@5;(sje zAMjI66Gnab&VjexhG-TyO00mLxsUoRWY4K)(>34IKD(vFcL`r>;&X=5%$xFD-F$I4 zYRGJTmQm*73s?Cv|8u(Eh9-|UV;`TogExaCI)7@+t8`@M+3vxoxA9#2^CB{()2Tdn z;)~${bdqAgebOSG`NY(;7{s(Zz3ES$yeh>JJjxS%qeCZETPzLD#f)j&Vsa@9ANDSn zjl3&i^e@)+S+=ywn?0g1@v?@Z@Km<#S*im@LkG@v`t+Fr;a z%jE>GoA8w^E*QvD8vwz$+C5j+EI5RtFq#*}2`Bg>NIml>_Z^C*5-iTlZT_GwiDe;a^09VeD|5iSq z?O3+Di=+=XSlZ0h%W*Yr(O36+?B7>z6})a5M|VR{h%rGEa0rd}Ol=*iB#3GKPS|^z z=O7!=dtWHa=Q;HG)F$|W5NeO!`}2KIsdO11x4?*iVK_z|Dr)S;7hwqVEa{~VGO;H9 zqv4~r465UR=X;>|i40_E<-9ZS`z|Uzp`e#D3XSbjm{PH$AQ8$LLVEeXY~{4SLws># z&(qqG!lc@p3h}yugC$I!vpfU00&;sfkNR zZxETbXDS5u-wxuhi(M-}BJu-uVW>eJ78@|{B0m!2utElx5r~##QH1u8fy#e!`!q0m z6|=_@Rhs{_(1wD{QEMJpZiOO#&)lQfsMXpYvThwa)#~a$Zt)%(%l9|kLd;jHz*Y4HGMbzWeWqGykG~yax6iN%1r{df4YefS zC>tV3nbXiej^IWfq=A;DCJ{Cem=>Ona3wuXB$neIihk)vaWV_=H0Y2E9L^4>n7@&* z>%9G}SW2(w@0j5pkM!YBYN+rQu+&2kP_Yv~Y8(Wwr!5w-wjC$lCQMK>3M}@FYt`(V zBgif8YXek?#<9YY_*d)~cpZ+^MtSGzs0$TFCQ<%U-?1B_2V*p;yXS>@@|D4TwKf?l zqb)&9><6OU>h)Ev#gDh>rA7_NL_Cj`jmDy^Q=4e&_0EiK3#tbDU%Mr zVZ9M61x78qw90OQ%ZE`grApThOVAe1fPotM2`Z^`e@=s8L3i+$qA9hnWloZkIK0HB zjf9@6G71kp1tb(|vEly`6H1~7SNlgVUx_$3U$GGTCDmYLzH7MGv+AnGGDNEjb9ipG z^Z++B_4GB${+D)o_ZjL@nIX_9-K$eTqX}HN%712;xtVc-Y+bVDw-RP;EJ>`*3bn@x z;HGa=4*UK{!rJebXd+Rh>*eRV6xNRFu9gc^B&e5UE?E$xbqAV@ z*?>gElJ^1Nj1aN@O zr!F;W4P)Jp$|_rG6Iy}1_?L#qfgNH;|FM2Em**xNK`ZC9p={lx2dbl!!IpHG7v+!9 zb?jSN$mwU71KtuFmN}bK)6#r{$yxuLtCkCm5{B0K!9HwI?MM7?ZEEyHs@~`}FR|kf zBhmzsveT@VchINeLvx)@%2&{D%r=}zFpYGDGHmZUOv!|Qjh5JUfhw&fmW-K*p0((1 zd^Tzjz9j_1BKC#=#$F3EN^bpt?4G!9QW*SXqa?l3y+WD%St-}JjEE2E2VNBC`x`35 zjQ?WeU)I3}7uL#3)`>QrIor+&ejdewb{PNJXRR)z!8x3;u0aF1moyMAhY`bSg*~wR z8{f`D%+muE82T-;hyxI8)SpENkY|?3h9{r6Oh?f=b_=Hl<-x{)0F` z_o{ff(I@Im6QK)diWA5zT8iH8NJ^0T3Bt2}(@A8mHwW|26YeAz`kRP+qZsmC{yeG? z*V~<&*e9}mnLld?qiM_|a%4`Qf5DJ#2(i}^&pNYlj`uphpsOtHXWDD$s-8|mZ{D{@2XyM zw|e0&xll4FF;j49^!ff%_!x*N^I8gL?OE=k09Q)FpK??scc86R*q=R(8`MTGR@CbS z=eRUSoYQ~?@1ex{8gFY!TZ`k=R}leX4QEJayQf$v*GGN3AATSI^Q6|pr^nI2(m&xc zN8J5HxZ{{@HbVA&kgs=9`Kw9p?}N46&swv zi`S2Wurh!qiR69{r0}q>R~ru5XE z)VR4nYdBLsyi8j2BZmf|74?Ounyo z9;ld$_jCMKrN%sra(bmFVcx%04O*K2=x<4#i=et#rA*PAm{VIRuEcc8`f@A#RL))M zAs$nXSZ*=>5s_`n?(Xl_!Qi?8v$gx1v;65x_Ph-g@xuS z+Hd4@>THoG*uK9nIa|Ayh-Hi9Yr07O$E9%ZscRUe-(Dii!&;((;MZ*ALiIKj@^=;e z;e>crVoe2CLHtA6DKk3g8__e<0V&OMqZfz+uXgrCJ0E!$X(Qd0u z#G6%!kIt;+n8aU!8gug0J!{0e)rDPz(i+QQa?L3^7HqnYh*SwGg*U4-rqA#7gaJ)M z%63j2sd_uTCx$X=83<9+edx8NJ7{0;<<&?39OJ$@+UDy8%;O^*_0x+IRD^^5XjX>I2@h23RBbe$nu2^X_8 z{iTurpk%1rib10XU~V;2t%!LJXjJ!Y5+0uPv1XOh)+ic0VEv*6$00#ZoDcc-l0VUb z^0OLM=BMQAV!~=joByOm-t)S$k{KQ~jz{_u#HBgd(=;~aLtcEcw?^G0OU`ozIIo_) zX)!*;1;B>47#0&$3(j;d$X=8-Pp<3lG+(%y8w9w*OVD(w(9%OT-f(bWtwk-1b}`Jk z`Gm&A(M(2O==hpcO_jc2?Eq=3&L{khg7L;YXKMw`)jftp#g(=jw40+K_K+6$EqXa| z`&9^zXaH2Xm8%^`O^{ELF!-ds?`n#~OGOr4@17lg0 zK)#h$5zeS{yzpLOfR)_*MGmHW2xYvjjas!Uonsr~Vhl_pmB+BVw%YyTGp93$t+W}k zYiB5{s?Y(BBn~~%BH|`NNX6>BXXvire3N+N)>&xtRUY+%zTEIP*v=2R*#HBU998iB zWUx(9$&giKrU;$`*}2o-yUT^0auAtz@m;=-!a`6wl@Slz*MX`&lxFOylT939x@s(YcU37h@`M1bMSIoPP2bMh&X|+Y24?dPzlJtQ^G-yCV?4A)8AMVC@0{zwrSCn(@~rN?KryIabp8c zFgxV6y+x)5sP9zJE=2cF*KooGVAIU33M`fSn6Ey>8uk4UgAV#^4ZhkR zdPxiyhG(x58Jp390u|sso4oo5Wj2!v6uUFM^|8 znRcg;I(N2eQwqv8^|hr1#eOXBT&4Q?P$)Sqbv=Pb;?5D~t|4cs1XRuffx%7fMP%pt z)dSRf%XaqvNx6X-6@k@?K#on78ykY$x;=2dL5ce@_a%Vr1M5b_c5csN#4maL>A?mWzb<`xnajUF&?@B52@A&&60$M*5C@_v< zOC{GSky&LPk*!rTMBFxFdnLa_Z(Xhw_0-!txTiPGYi**D}5UtSb|e=xKe+Y{dezy+Nhj9XxO=MA0$nrSEt!TmW)t0w-_b z?gqn?gcxo@>%t{4_sxQV+Zdfli^QAPdsPbf?#(ZQZqJTR_eO_bW?Kp z*QK&G6KBvPXOuJGIR2Guzi*$go0c<>&tFudWPn>Cvc7ob=8g=t2%+HG1plf}NV&qM z)zav6yZ)PSXEOM8{O09r4k&!=d0;<#@9VD*cex6vOa)$)#h;SX4hSXka;T6CtrYy{^x9Vv&`+ z6Py+_iIzswbZ)V311-nO>JxXxskelK(Z*30f5IxCLDLT3raxqHq4X36gWr6s-od(^ z>xcEs1Zy{wqG@caD)N7DvlyD(=>Qo6t_AO0| za!ORw(?^BD^j5=@wCyFF3}Y564&3fCS7U3SNmtx9p@{wrypkPnd%dVmpUV5YrGLn% zx$sGFc;^ZWa(qsrvIY6ozM7)er8ewG_v}{!*DIwqZ1y>P%jJ2sykEwN@xr~yg`Cl< zdL9`55e|-m?&2|K#GqV(KqP+F<{CjH`a#61ARn@7U;ez%R3lw3rtXQgR+Ty1%QUJ@}2$a5il-sci`j?LMM!qlR@6u#CLfVJi&_kS{KGgj%*VIowDy{{Ve$KA#G`_0I2Oy`GHT zY6{2``_U8lH7-6bqo=iaYIs0SE#J3nvGYYXb<(g?*z_;D+Lx!qgE#o(2;4Rt&?DxV zSN-l0Xy*NA)yc_(PH{`_+m39i@F7h%E{HyNiy(^WX+Cz7;%(i9-7aHxlpkxu^jnfo zLSOWnypT7ER)N@`N2bN=Z|%=Vwr7uq;1&o&6QH6(dwHiRlj*UIc#iE+JnC=P=K1CL z8=LT+HFw956I=C>I|nnwc(O=*t)14YZt{CK8Itz@dU0fB+F^0oFJxl&eJ!|?{~n0q zTQ-%xmTTo#T0`X~hw#zRM@}iVi;V`z?e!+~w*{1;!LGscIolZln}_lA%NT+wR&1zx zNRNEn5MyYWQAJK4BBFRT&0^Ij*qC#6RZK zvCZZb6(2D#GMn7J`8z4R0Uo9uPh_ABnWQ&u81BuSaLemYT25b zKaR?8sewYf({C%q;mLD;Im?$k^)n;fZ>q1@@e4y)%l3`sz7(miN|?<7jwH-xxY&k;MzXG2~}BH z5c*)RLIf)*(ObFo<6=>MRlXR_z~3Mkr%~ZpKz@+`x?n6RNDunqt^nhvg;0ZTx%@~w z$?)OT@cv)lbitxitV?76(~ZoBkyWKk8;72Qz~(K25Kl$2wAkMlz6|n*rmTo&+0#&m zRTM!eoNBlKj_{WjyK8O2Nz$3hgkgUGFOGV+I+5#ML0UlTPW4Dr#X$xp$i`Z5W0!GRG661!+? zM})%9MeIFf-B1`@8TXVfs*!*G+IER8O&;b7I0QedSP`L=>2>6`w@m&D7Rn(ZVEVE+ zOCbLF%_Q*~w|EkM1-V5Rk)T{zqvJcdwzyz%r58``t`*$asuWFWoO;5k+2mk*k`*IJ zC_5&SGbZ|@uA7IGQ7x?~lZf+olR0Yk|dY2D1psK&dF+4DD{$!$kKkW!Rh<}|}S>jebVC{f%;4JNd} zyJG#pl*AF5D*xlOMisuE*kIW%lj9sD(9lCcDK`Zy_qZf!6BO`S?RfBXm~XMs5ifQT zmJl)sUJm#7HC`=CSzPAdvsPv|CTy|{MFk9#ITpE>zZHSi<=MeO`lB9tQT%g~PT8jw zgv*Op{|^8&K+M04%R$!wc_PoN_-LhB8_nL`3ctr>J9ekKiGyBBJ=J=rb?ExaIMyv< z+|K8%{2ImvhU7>~ex&5AGO_#gNozszA3`GKK56I@{Qqh#f=Uf&;hygb)O7BwuDq0M zrEN&g<%}elUd*br{?UxA)KfPH7(LwAf)L{tIEazb_A(MQ@Qc1Y-}IOHu@i9`#hB@Q z&P=E&A6+<<{|o(uy~}%tCggqtQGq18es~TcK1bcK+CD0{=#6IQdX|FpO&>)8@VY2r zn8Sf4R8s}*{=6)GeA;80Jsa~6hJ*=t`R-dC_Kb=s7E@V5d3-%W_R#3GfMhKTfn*mx zNRfsHxNz8X8-bVQfy<>VVv($jC9hucyE4J5?bFjyqfrIptSqpE9uHvK4c^i%)mV5N zX6HGMU+gf_#4Asd@lhV1(d(I>p#9O@v}j4-aN>T&=)omhXb)rodkfY&ktqr7Yl3Q^ ze8C2J5-a|8C19;%RTJ-cEWHC)%(G@z#qs+1re!pn!K*le!q`2>%3ea>kx`6veB2n0 zX?2+l0+R0n;-j*_)rhl#T+eF;CDZpx6ObKpRqvGL5`Ar?C=Cc7rN@oVk;q5$$Nkr= zrq+jfn6QLa_G}j|!INR% z2#xkBd>0uQz~@-B0T6+hRlE2%UI3E9dZ?UDYy)F8J*2P5x#$Xaod{P+>w%0)LWACi z2QH(ua%*uaE5Ns+H<6&&+vK0_s6ZWcxl2Wb%3HB@H@@CrOL})jjLCM;W?;#$N^H8O zwc&=L?A#fN3a3O)djAd&9F|>cayC(O@ozVeL#*UruzbeB7eu;0*TWJO8r(!TAIK4O zZ)ppHudPzflXKgPkw<5HDaxy+{k8aZ|Gjm-k7)BLUs$|`oH~7}QvF7^TIzHq5};m? zqRp-@23kb)P_#X|wIxqskdfx}`{2=2NPl;Ri~u7&|GGEGMX$7TR?Ef=23pt993?HE z%P{ftgzSg$)S8P8{o)Fub!pxPC!R4&MiR$<*?1Ac9nTSAgRso=WcPlR2kiudeiqG3 zuxWm%%}h3&Y3r+w3>V9#2=a()eFuNnBmPx5aI(qn;gQB8a2f6I zHUH9hp^c>I;bwlxZh7ayM*GM2>zz~mZ1rO-ru*l#V14>xny3my+?DX{Ev7aP8$guH z7@YE=>sg@XgzYDcXP&|T?^D`qqAuv*W;Rzi(mqy}B2`XS%1EW2rLt}v@-;2}$U*Xe zanjtAyCyKyHco-0L#8BC!q9}JR>h6Lgce*nk_ ztEJoCFUFTwSi^>;wb7z_GzzfKb_9>2k|uHA1D$zMg2*JLA=>?vFyH<^C$#sPGh!V4 zNyzHt{&CzWk;EdGXogSr&K?@|Kg#j{6D3u#&z%4zIPD!Y6DtyVRG5`bkqE&%c?Pm&?}7cco(tVval{8Ay)@%O#l zFLgcyG{=ld>Ki@Ku3OX{=Od?a)}=v@3#I3sbPBhH<$1f@F3u%IGr-MH$d3?dY*P)R zbQp!y*=GQJyBPR)kFtFf#Q4aWb6QiUK;ZA07_^0?)8f>Me@3E!?` zK5a=LF;j-v6#=h=`*{LhnHVr2mf~Q)xupk6k!V7W$~GYQ6uGufCak98esEkudV69E zZ!sKPon^z%ErfoZPyw8x8B2rAZH1f~e(DuTt{LBcJwxzKYku@;t3|rX(Tc|7C#=WI zj>d2NRzp)Rh_yC7W@Lc@hry2t;1P3Ov2*gza80dzovFzm>#q&p`$Fe%^1g3(Tj7dM0KEmhMZm5HX5kgrW3BAy>M*|~pyi%WR*@X6@9itZN2S`J^v%#3rV^3@u*G#0gj;f-+R*nhqo9hEqz-i?a zZ^$W-Px^!jOTmHNkuv0n7Qd{I+piO!$lPM$+TjQ30qNQh82fS!`!NVz$tB)|3Pt?v z9V5@t#Fl+n>gZ&C7YZM>n9g=N$`)Wt?G z<15u`!w>v95QeZYY0hw*i4JTPD6Qr(xuL3L)>k90_W3hN7(<&vSZo4d(r^MwD4ESM zWmh5ohiPfykOC?+=~-+EOV(k%VrYxNnnBbRxz~+W)ZEEPazi*b?MhlV#+hmpeB$wY zUN6&)479E?B{AF1Y&Y?-SZ#0ItK?%=##PO6p@ci9eCNrCo8J0gvt*6+%;E zSJayFKd?c*z{UOk+3OJZ714G5WcxcFZzLidB zLOl%GG-?ZGU}fe?-BmdrowWSb|h!5`iA-`JL% zxGx7krqAbcLH7|k+qS>lAlf849ZbWPFNM8;@^4(P@_;50xS}w?L*el@z3>{6#B?7P zQbJ(o@xn-3|K8M`+(?{(_97L81Uy4s2l^mK(Lmwg9N7E#BZW(8SDm+4gzJ7Yft^R~ z^^gN-CvMh8;f1+>#-drvGcHMg+!xL>MhH;Fb|xVc79!Wcn0}rk&@6rme9)}!SN(wZ z-q+8josR5(M34cb^qu#8dNK7ZPe?<%T7T4a)6OE!GJw;M9;vd|RdV4lCt<jd}zHUcB79eD{C+$#$ux(hj-KM{-*y9#bt zGvW@|(|-HwIaH6+!8LVX89+AZv&|xOHpM+9cy`~aLFn02X}Cy*cuNl=JU`W-VXCbu4SsMb%gkA+ z#if7tFcD`6r>3t+g8MtVYYID1|JxirNG;;f%UcF_k{!HAy@EFu(hIJoRwAZFXAC*b zCa-K6>V5Hxvj;X7L;b?;W!%W`3HaIR}McB>q1bp^gS$EBmy0ST{?mVSf zRa=L`iXW4XzJT#fDoXSg#)=-4Zk)v>G|x?;%C~(W#Xljv+7SAxKJ%I`;%hvx2P%b17Sj;$f><03r`hqtY-c^J zDeR2-@*Kmcv{y`hIDr}FaV^@8rq@wsYGO}{(MO!|Vw8`x*Bw%!$I0%Ojm(#=L0xyM zr@Tm;VyMw*|IQIay82}6tT?jQ!m1Yi&*H>D^rIBW^uF1#=0-5i3J+B1R7W%>At9N3 z2|D!};4$G2Y>ZC42ij(aDVa_1qtbRCsaQC`|u$IT!Ikx)@{ z=h4kn{YTRxSqphzG`QDf=yclM<$#}OkWw8?&UgQ>kM&dO#vbweJPxF>j?jP{Fgst| z4NFyD#*~TfFMU82vu_W%evg^A?DaXYemm;5@@l$dBEw*T-{=KiWHycg%re^`L`?no z)88}CpJEVZQ-x#kES1uUf0Vi>TYras1>t4;!%l12Dyw#`gJgaL>v2WlNKphwFY0wT z^Cep&Wdf=B%z`xw1!QfPR5IwqTt~tEGEpI%HF)#zseY`byLTT{D#D<~Nl5Irg_gq| z+s@wGEUPD{kwRUhg$n#{*|D$yjP4#8^%%cVi`54>bbu72;Yq_IW8ko*u?ecL!kP@5 ziwxfa!SifEf;I?jF6lV7_Lmqo#z8vhP67+-LDGH$BenS}R1h{ARrhQRcRV?E7xtVC zy=B6@@o>+8iK5j^k8F`)CkI3UfTgCjqgYuV6Z}163?aBDAXu=VtvY};0s@9EDBYSV z)#ArIpU0Yg4a3b*)(UK?$FjYgN4Nwoh($7U&({s$jpd&IJ)m*n>S0pOOYJU-y)ZGX z*DD)73AoUMm)~N9=?MAV9-FH1Xag?P&0<-D?(2lZTJaF09+Q2tNp36=$0Hv zV>_1=xsahu)VCW)-wtD4da$x2=ZsMSy(^vgoqmx)NEF?YSJoc}{rNihLlG(n zVB2Ra^{x+GH|UM8Zk(&iiN9Sa(76ybnfSkgA)Xtr+rz{_2 zMAPhsGQ?rV3c%0ZoukTX2w}7tH2jCg9|CxS*^mEb2QZ9V%Fx!Rsfa1o8I4Ibk#J|o zYaX?qSGQ941gh+(vA6)~G9+LrhD&hSZ@BB^%%)hZtCv_uv!wf~6#on#!ON3q_ zpj^YJc+xoEoG;Q>qg=Vk2t`N0Z}h~xnbtUma*94M@8&t=5h@8xA81bDG5H!GB^8FW zcr$RAb9_p^iy~7cvTiu0f!&U#s^=;g*zN~-j;@fRlzo)NaRivEKipDq7=&(Wwz`!_ z?wK$-BEPg>>0}-yq(yQu_bvuDo(TN0bY0@c{O>`9xngkN?gb zw1Vl5oXq=B&_mxpxDsy}-;Id7B)mPVMjRmTO~0vh>^Nua zN2wMxRrIYhS7p*sbAe{(r^j_z3??Rsc<$;;_X&G9K6`je;;&Q8?JIl1w=9M6%H$Xh zKN{YehfgKVZhuO+XP6QIoj<}bZ*W4)#^;tFYB3#JkvIPBBg!E7R?prmGWSX6wH`EQ zx9V=zbAD&GFTyX7*;Z69l!Z0~-dbe&`wu*ssjO$wsTx;_*eT=?uD`@vpF>na`bV5H zdiUycaP+_ZPFMmjgUcau5-spU9|0HjmBjruHt61f4dCh$*)Bi7h%~vO>*^Sdj08m- zw`Grq4Y#9^kU`0++s`_!vfI0sS7+5Gnf6uTAxMY}X$AStCsv(=-v4XQO2deRvBJAN z5NBOUg53)+zsg5a79B|`_>-+x5`&Ob)tSc02qq0ri+DAMv7>}|ol1g)^g{&^OSFo| z_4&ocCTaB`V!pJ#%k*sFuww*Xbt^_+YXbf%1er<*dl-bybB%p=+A)D2Fj==O7g9*9 z)!B_G)1Hv|ZmrY^`f-9Ac<-;A##xk;CkitCPts`qFSKbObDS(I%(Ly*07OWk7-BGWq^f z@s*DZ27M$UaI%7?Wa|EPCc(3fY$Qiv?kZ?J9W@hH7CJ#~-Mjk*c~q z&e;T>BKvvtpe6b{p3)vR?QcN+=(+wt(Q!1TrR{VLxus4Z%&?`t?$) zXzMnFXX?BB9kMO|gL}Ak%?^A`pUGFJMNh946_QP2@oX&+gsY-WCat9JdIn}dF=?!P zGD8vMosQrZ7pIrYdyLwBZ8nme_aiO~dU}n?g>0&UcTEEx|7eZ*?wWK;|1DR9o=o5u zsYQS@rAs&FgO%+H?}=e~(CO{q_Kb_~zO;^;5;ak9eMt1X>vsuP+x~Smj>J_A_~IL4 zx!*kP`CIuflFEgJdDccGWK@jxtASR)=Qt-|36e1P{Oz$a{-p*_%NoRWa@3bYQL4{h zy&1ILt;bOG^Laj6Tcms z=$9MJFjz0!B@b##QsVFd1T>D;AFi}HU!M+h7;3@?H|xm27>p)7E7Vn_xd>Ru**Oha zsBKmVzPOicvIo>|@!cAxZaE*42w29=k26m9Sb!Z5^nSir8`tCWg0!Zs?G$Z-MbLdL z+li3=6PIky+ryRm#6AJHrDOfa@;S^?2Lz#e_&>l+N^!5~CP=#wfez!_evnKkQ!)ZN zOt;$IiD5`6BoI<4=_M-ogOV%st%%lw9Bbki{_Frz?A?euP-VDn6{{5X?}NvpR1uLs zD(IsgxQ#+_SM)|EENl|SF`{A#{hM(mCvwrDYK)+gKqKH1n25C~ufQmQ++9JdQ9mg@ z+9-7xFpakt@!t0S_NU21WbHQfo{)Kx%-1`WQ&rxv@BjY-v63tUY=M0*Y@@Ti2Zd6? zix{yJnr4`+pduBGtpF4YYDAV!o4$PTbmDHWgo*W6zhvSJCCvTJ;{HI+=wgGP1TIcX zgDZ@sGIRvt&DjGz#}RuLA?%~OLDg61-asMK;JfFjlROEl6OhHs%HhtY0nV|O2ssFL ze@Sv{yOuJr&CJ%q=t%jB0FP5={v9htdu#GYU)O>a!qatKm#0~?2orP#O@}7F898jn zkOlMHX28I1LiiTTU!~X0-hy;h9{#&FhwD_Yd|L`m0NZ5rpvZ@ z>Hl+LPWb0l0%yg2OE%u#OqVcZlSyYpfvL~$>R-2&<%P_`baZVNH!b}1O&3OtCHlyv z29}Nj7Lbf&8HH0`m1`-VQ+DqitWoEwb)!3_+PdT9))4j*snU z+Q65wnuGVf987Q5dkAbuf;F-`_ps*;+g|%*(zxpVn78@T%Ze|&b}Ouhe8;)%7=aFU!|1!xn?w6rC==g?t3^GRN=9~232AwRTzKKn?O&b(aFcb!Sr|bR4J(bA0}@uGC{{gJqx*rnIK1U;T>r; z0wRaPY6fqRAQ(zTyL&v&G@0efKp6OUV0*vqcyQ~4x6B)=9X{fhZ?DQ7P@A(EO616a zp*0&CeWsHR=9@$0ENyQYJ&?DOZfh>G^FSg^Jy)cAU&;7)S^DN9IqO8P`XTuBmCCH{ z;{i!q5>-m93FwaLC!usN#47!hiFqJ84I;bDSCHUFoIePz;P~H2{AX=yk=L^He96mH z*bk&j=yaMc>I;}mWb-Qrtpe2C#hJq_q}O^=*#Wr8`po-k-PXK4r~ zc8Xk0tB*_3OfROmm3DC2R7P1!SNH@d0C68YPWpYcfGXP(*y;_%TYIhfh=KX_pHWyt z!cAhu!Mb6 zcE-mgMEPK_M+QBxp!(%3?n;kzIPU=k&a?-yW9qT*P{B-#={)FEHYUy@ScW)i$YY!*hF;CfpO z+3^V7<~@HFj;H@EyJ{{Nnax!_)<_K*6wH`CP0@1!J(PKv8Ya}MbS4`v_TyWN#B$UL z0esFh_*1C9tn%(K(Qa=ZotyJFtfmh1lKXpb4beR=L;Xs|qfe{zyb$PxT3S!e1Eo?r z1_I)s={n>$eDTZ_OeTM6n~62J3!7rC>UHVX!m=AH*vV) zxzAAX*(3WFq1yjI#+gcZy)h}Fp!0e#0N5`U`?1C)e6$L0jZ4)=Za{7`1eD%U%sq=d z8xXP7P!Ar|v%lN`vb?E-i7@u4l5D?gc=-vQ8MM)ZSBYf9a-qtUhap36rfI)&54)!U z{b3$F%Q*EFnLXFM9&V`lmExsH6*&5yH`ygsPUdabmM}!>Eo$Byu6ITrAbT6qH(N>f z980(;vBSYpCRxCj$TpGelS2YuKP`{Ec%`qE#M4}vcY;+Da|cZZl`xUgKBI2tjqk$KKnsH|u7WI)PGc4=C}aur54ZPNx|R z9?TQez0{NR^%Zj@w>@I@U?Iync%W@;YAgt_^kUp)%-Xsv?7M~NavHxhWhe@r{->J4 z)W+WZ0r@#ZQk-c^g3wtDCCt*x{m**hc-SbLAE{85pf4Xw6%@oiM8#96*opf*iK8G1 zQjiqy6R;3J2+$7F#xRdg^Sf#M&Z+a+-LVhscbn|l&l3Z4*%OunPg>`-Mxf-Gp4n1^ zwFd-H@JbV%(RzBwQs&4gFB7tQ&?(deAri+Nj$DI11lik=0R9YCpd5xX0=+%@i56zS zIkhqwQLvG~gF6;GWk1a2e(T$<(|bg>7Xmqei-VU7?@+b z>{0qd`km|xjt#5R8nI?#Fl?4Z{zdf0D?@h^L)RL}$AgsC5@NCLCcPIoc zM9rjC?JKZ=u0LPdrzMcz16wZ^B?Fg=3pan|nDcF;I}qEK2ktx`(J8O!BCN$pSC3~a zV?w%&{YwQu>7P91hfE=Lhi1onk(azZa;5HFUzPeBh-p2q9=7hNeKMRVZgmcDW$L( z)rUJ{V8-=qkX0kjnvs^<)-|JbErWH@bLDtt3OtRP$~Q+J>hwSRYS72(Com`(?{~!~ zCe8Vq`H?^%+Uvj;*xu}l3HbURLdS%Ox3SW=ivsm=l55NJa;v(6_#Y`@cgu>cL{)Du zq`2>(C>^-&>@(VDZS%~V@MMyq>8-JSZE#n(PeT3d9lDqqznUaNI+P`J6=L?ejx}$i z6Z^!vAQBs1DyX$cdv6yCe1x=m{z#1-p((|m0MPujfrCl7)X!ye{dc2~lHY@cY{j&8Qy zc-zHF{CtTInz8`2Z(ve`ev56m+tR_+*2(~;*WichxU@iD@Z+32P@*!Mt3DW#l^rBR zaO{a007r)DDh9=`?qSbw*}TmE=hd}n7EjXF!KA{o-;-i`6LhytiNo{7ZSM`tIKj*d)DB^WF{J%FhdkI%H9ax$u6^X}~X#N!BnkWJ- zQ_&!PZ>qK#HDo_duTA@mE0SYpB$?pMIf89tJ_A(DX+Lg#>`PJK|i*b zRes;^x1P;W@U=PNBa@KdX`Q~?nw^T0*{-TR9%a<7)}l6cKi7B zA85KAMV^R`2HaizR>8FbF9f!Ld#$Mt%BPhz;t&aY$?kNfBS#$Js_H^%A|YqS09VWW%Vo!rQnjE z+&}gGJChbtfL?f{^pQ0x=Mj*dwfQjb-O2u^G!>1iIgc>nK{#g^IsZ;?dJEe;)~&S> zhqyjAcJ$@MHH-`ZL=L`2Ha1)(nE_ci0iMwi&3ivd9DY~8P^W>q#F5Z|613hCJk*mi z%C2(JiP*)`P*LZbX(!;qux5u((#R9&l-nf<;$W@M=7dv^A=dnt`iT^*I=Ovu{(`D) z4$So(G{7V`#V|?fKS*|lvPz9z?qx#N!%;a|QT{0U%T>3hEjRQ$uNVN9;8U{(1dXE) zZJZg2f$R_gf6XXFR~E?qS4$gq3vrn?uEM2Q0FPq1*Ze8vA&kxLJH(q_W6}N3H+dE; zfm6tNbO1!vyZ(FVa)A${mV{r6fpi;1=I$0l4v=Y9VB4X(!?c|-FmJl%qv%VC)hC1( zZ`Ymg*tl&FOpGllIQJxdBv|fI4*2dEAP4@C?Nn(j>LrWxXmY+6#dDrURS|-%EPkM9 z0xIUind6LGDK0+RTLYou9wu+@2y`|Y_d;Wg7sftaoN9%Jy)BZdVK%I{8W0_tbNcB6X!?IVx zB@6YYYg6#RK!YZCFX?9Fzlf{$7t<&q*8oMaC{nKNO}%7gkyigm!axh(U4t8`Eh%UY zg3fnl6+Qbqo4Y79B!#5pJHTni%Ks|pu_lmbEFkzN%;}x@TINx?Iuw5mpVv0(*+AYR zz(`uI-UL~YQ4QM#;WmNKLG}^qbX@Uu8+)<7-B#W;jH~E9mbI>J5IcL`q~DKnwR~4cg<=Hm@OP+to>U~SoJDPn{UelG8~QNG5s z!j~WOnt6LK^wA8!P;1(|ZSZ{|w$^fo3b09ci=BE|6&d@D(%&^3)#3!O9}nok4J;V@ zm#=R_p9@J2kx&5EU|vK8#mTSp;ypJd{ZC~f1%C;g#Wy~WR&T9l=OoWwfYJH}Wj6v0 zrUxW>=s^zpdMAtF;a|8YBL7>-ypFhcJq9ovO60v0215IG{^n9b#z;75+^0q-vCKrN z?BK3imkIruJur{z2>9IuPnZ*kVd@S~II&LGjP!{F@;qeHlJrK&&rWBh-qZUipB>m! z+$^Sr_^ya&HF`xu+z}~#r)o}(X``R2ge*sGU6(YHUuv-q^%dP~uU)#NBMED1%RLS5 zz+dl&7-?_i{n{qVoHZbYud@{~v^tmo+M#JHwrAlZB9X4sAPLOrKwpfaElt1ZDLT$f zFWF8f5nOSTObO^b8m81$>{if47kv^@rt>a|1y_FzZ+EK$i3V6Y)--ZyX`RUmcp2y3arcf8Vil-NsQERRs zE=2v?ApM^FiVN@x*(k{$A75j)(TcJwMqav1B`Ap`;iJ5_DsEGfUT~Zik!^K6^W*#5 z_Ew;lJx_+~H%;r}a$O~FJIkq}%RQBS4}$pFnW`@{zI)0?`J-D7j?**`&#uR(gc?jV zFov+!qfj&t=VRB*A*cax*2H$soxR<9c~l@5TZ{eR-gu=ogc}|J3U>23^Wn{QG}DCi z!^#gCH*VP-OuKz^D;Iiw^l!FdQ3-ZsDXX_?ZY6?lxK2=bv$wrF?IgSJUvrFB#S6+H zH$AsjJk1vVd#*3-$S7W3=$Q3XJob8qs~k)yHX53y%Zm2JA`d2$5N1K_Btk0oz#09q zBMCKZLJ#6QVdnV)16#ewnZ)`qjB<;H^v47YctT0KokSYylJAjzv}oF~t8f-f35?+h z`)_zS*vkbuMpG;U$`$FVNvb68*&-{;7b3cw?D#DD_eof_T_VJ?6bn$^W1o?zIb^Oe zvP%Bk7E%D!$#-@6muu&8>As_))^D0~rEe@}|Mi}{UNHg4-ES{K^#OAF=XS;GD|G6e zVMM!u+P-{4r4y7gFeOS{$=f*j-8dBU?H_~cBod4` zBFQ}y8LwtDg>+1Kz-`TqU1C0M&!2u%=2e5z9HRStOy~Hn{Ck~Cz)5f7FMq9KZ5M<{ z@PkA>l%nZ+*>5|fCC!>MLm?)y*9=VE0(JFJ_G;W%eTE93>8NRFD&Mv|SHwb`23RN0 z>xcA?D(%gJL{>?Z?Q(goy3#Uu*@q5Ed-Nr6T7riAHFU|AR3aZHlApWO-Awv;^lvG3 zvHv1FWbYP(bS`_2yLu(G^4T@)Y1rIYPU;s9vre-K9-s!SGST*&C|sw<)zx{NP`wp# zk<6XJ&LLJO_Q%mdA&R$8J#OWq$^!VQq#+)>tUtYn4CH!rW&82?qS{SlGF1M$R{k}f zCND_Bc@;$4rK4Ar?VaO#$Wz#>J@_BF|3WK9=%{O)Rkq&r1HaJqu>oBXNSv#bx$A2E z(`aPJ+qzi8KH6>)10fF6Dkv1BI`Y!(vKKj)NoDc}!!8N&hz_K{^AM%qq?V|#+mE|h9SMP0 z*FjD*@hT9Z#QHVlvhdTj1cZzU=txdqZZMTP+W;1n-h%-$vWSdcOv{jYU>tKh zl+-rj)OVMhZ6OhyGZ&nhtBD`&Ek;`kwQ=%@#^u!+;;aVHB9d4_Y}Dwln0ym6->TH(e_x4+ZqPO8yaZmnMG+G3Y~`bh))%Pl!@W zjRooF6MUdzycuI*rpWC$#JKr?aWWe9KbK`z6FW#BM=FIERbOg>!iNcY+{OEnd=EA?!#r#vp-+Z?3)vICmKN@VkzuD=pH~k(IS7REYWma~MPKAO?9l%HL>6;*H zzA2*;x8u@$7%#!RX<4SeK%~vum2a$lGF3n2e>;p9_wP15|7vv_t`IHnPxz4I;1F$J zJ)29>nV=mSZVW_`!k!`l?+O6ho|V@cab7#KX&Yt-tFC-IKMxk+hm_o7c-wP=ZzHs= zbw9dt3d4@2AI_>zfI~F)RiXhRmTd>QSV=)Qg4Nf}Q%{+S#x2qrOeI_!H%DdAyh!DZ z4<}J8eM`X4)6msLPp4#{x zOJKm-_}CX0U!kVaQh+D|vew#85=A}?`Ts-eliabE5$ z+IE~dPKon1+5wR%+_R0F^%sgd7v?IS7RGWp3048<-SE7+Q`2-^XX3MvrjP`2_t_H= z)rX3>Ril2)DzlP?N)uMIVJDbWH`y8H5+p0e<@Y~2RS>juT2@p7<(VS+X3BC2urrJE zK^g)HdEf5+I`6YlIr@(Q6@V53u5E<}iFoxc)q}b_Mtlho^&E8>LWl2|+ z=g}-B##q^8Njk0XF93f_%ICeOAxj2DK1^?g_VR})KE{>N?bmNuuU)rmzDea%nknx1 zZpFLNl)m+~p0tCl_1~vxUy-Sf2!mL-_rO>tu2co0bqYx8o?$Qw zN+$hA>{5`NLgV|e%wve$)RLGxa!6(G%J8Ru5_a*ta$SZ@_RFi9rIOOGu31^AR(3_(-i?aRzW?fX~Z(!i@ps0zZ}Z&R!KVPJ%*w z?PNRiFy`AD)MX&=^K_prRjH_v;)G zk3Q=QRqlxN3Aczy2r7tDGUR$*pn0;D4kGN$Q1yvrK6wC8p_xLo-ku2SdHm-oe~jxJ z1|d?*)cZTi@TbTsS4!R=OtxVmp-rU?GUlC#iDmu!!(g&%UIH9a>R0gicAAVEQeMf? zMQ~i>+*u%WD|?tuJ20-JIp4r z4(=GXxv-KmSRw=g-~ow%PiPyh`>!7a!Z8GQW?>@H&(*j-z5IB*DSoQFUtCCq#M2*NnUkR9czBwdYW7 zJ8~pvpYys3`aLX{igUZJBmrZJaB>!=nOgsYO3aaAx`t7{z71EbqF*P#0I00UHZ!v> zFYV2|6p{OX8WpiX@~{yLUouxxlcs58`v1`eU+19mv zxUAQK5_GuYHAF+si-QxafGqROGKWr9;{R4c6O|=v2)66v^48XpDY9!l&3G^^*^WJG z)VrGz1$9SRig{bRr);WQVWsKsA>j;Q{vqNXkI6RWBtXn*9Kpso;@Jr~7J&Cjq2wfr zCJDkN0X&=?pDQj}I`5BuF{bV&_UM*t99JRd*nROq7`?fhIwdOoKoHZ|wq_G*fHz1wl z@^D)ISBk=rDrJ(2U{VjI9@ynNdTBSjKEUct;U(p7v>2wTjSliYTq2HwfSbZ8;7AG=W-eb%vH!i%Zs1h7o$bm&BSfkS(@HFv+;8n=l6y~<_&fApG)gK#s714Ci|{XL-}nlH{G0O&vEvLlb1?qvcjKGQtO6bTRyv(_it zFf}D61JV$$;R)*LqKn-O6U=X=(fhRK*!)X*;Q|sg{MB!|Y7eY1vL)dW3o=rih7KUo zJg%o$q%wF?mV~d{6#N!7p@2^r^~wDO7z@J@MX??izB0N+r$lTb{@ea`SO$lAgut8x z^gXVH&3Cv>IO5n4>V>4Dl_!>JN4WkgWC_Bu56 zurTF10b}-jk^Wftcw?|NT44=R_A@LVP@$*({EVdi@=@yuz|z$t@>6OYPlug|T5YCT zW^ab~{Y!6WBVNmbrbYo<7Ia>!jY^%T3yHc8GH*RvGR|!nb7~yyscSz;-th3^mE*~J z!+PE72{u+bh{%5D^ja-kVr#G}qL;-rPW~32^$K}+4QZ0;Uu_yFJW@3{>Wkkxp24hS zZozQJ4Y?U=jzn!bVnUol9I9~bn<=Pz0ZU^4Jqo-vLyJaj8eBl$Ok`bxBD`Hu0+RcQ zQdw~r;#=N_&t`{60ZT7ciZG%n40z*~Mq0EU*qSFCk$PDciq{vP2Oq@BpU~{o##Au^ zjpARHs36R4#2srZcWT=`1^kod0N+OEG}WYfI_l;Ek5GebTjZI!0x>6noE!D51a&c8 zT`7*o4)v|Pi3~b_P0fU>Fw8clv{o?G4Obhc9$&oEWEF(H)(Ku$VOpd5bWGyJs9e$E ziqIDbG2Wz(AD?0mM9oIoG?IEHjvKfwSn;RPOwBy>$I8l7dB+?@jNk(Mh>_C5sa;dK1jHT9R zKuCN!O&M`APl6FyZ0%d@>E-&H&?@g_W zBh!2E-9re)l0^rgmhCd2)7OkE{%Oa)Ybu-dQTWlgE6I)S-)G(o%MRIZah&o@J{#e@L0WFj1X!4rAP4L7rGvrj*6c((*#4R zz_!3SkZL#%U=!Z;{b9X(gyizSe=Xbd^l#oTKq!(hZufYtk<-=kU+acUsn3QnF;Kwj2q1k@ zJ19CNA=(kZV*9b`Wd2Wl%8hHQX|?#}af2Hb8Elok6922|SeT*Z(y$jIkz-r4nP!Qr0l`5s3)dw?vjGvZhhP$i5}} zzGN*D5-MASqKFo)$P!svR0zqu*X?zy^_bA>th64NM?{_j^C{IOnPki21oMI?(`JgdBaY{S@Y~< z)9_i*8N2vNNlC+>O}G5$#5k#}7UnjjFD%J5A)n7by7&3sqW9Le$irc~8A(yA5iv1Y zYN+?Nfu7}8_<83j56gXw8NG+@2@UUzbJWpla9U8axiimS*wa+nwi;AuDV)i&^ZR+z z2{gL|bMLX!njB_F4ktIZ==I|C5*va>3hYv6Bj4>qpIbk`*6#4sO0<}M{bg>#u%ykn zL49Dg&kZz3Ao@x_Pl&F>B%&+E=t6?bQAS7UkMpn>&A`ymBt<@yeT2OTT#i>dcowY4%Z&cP#X^4 z??AV3FJJ8vp=|upt?EAI?I{=JKCo+w=goPgl*gZ@R}@Vdl;}PBUbvKnJV|^p zpz{SxfE$mL;levDYqdE0ysR`zKUs74AywB_$zo&U$kdvE zuU-%L$FiiXCsjx&=y46F-o2Q{(M?xp^dORXklXHx-znxdpPv4p5gDx{!|Q}2qG}e1 zjjpz<24AW@hE!B3PX{twtEOxXNkf6=4GLc+54lihv~&ri(?NJfiQbJ!T9fs@2=%BI zK7XNYf~nVQue$497}oT~O!G&vx@*5(EEmyMR@j0n7|u(~ssH9Z|Y<`f2I0}?WCc}gqCzh z%DEFs^A=BiBU@ukjr4q&wbZV!m7Hx}rL6dCQF?VrXYV`kiFv^HlKeg?3c|J%X?zi@ z=ah}Llv>8?`A@dX92CDRkT}A_b{Uzs@SuBUFD$mCF#1?OUAyHx0ieu3c zg4Rt;l-$x2t|w@;%txA@3dW+1+~IT=?6f)gZoe2Hv?oQakq6Z)&R_bN6lT_TlVGKSZl_9lx~CyXuYf5^wLF@bGGRDXos@^PE=87IbHySPn2HiW&qb7MX=g-&<#1 zcv;Rid-jlz`lyWxRW(1bcKc`B(rG<)o~ijLhKs1120zx)^lO5a#W@$(JjSaP@6w-n zFVncak753;?XCkNdG?M}x!u|;@HVxq%aX09XEolxcAe;Tq4OOVQ=(hw(XR3Lsf>?N zO#dcC6vZ&r5Siwiu49n|@ZbUTA`?NLfYBQ*kUI-Wv|&yMx%*M1gk zr?jK8r}kCjtlg82Z4X^^#44Lm(y0QgZ|)P$P?NFSN3J{%Fc8@my!Puoxsqlt|4VCnYAdOJyHaKMP=bDPz6i>EbZqIh*_C-M$v`0AZQ^$hA>AzVkib=?&bk`GNFcJ5S#T zE%i5z>ITMVrrKR6esD@Y^q=TIOXyN_xukL@Aa9ONso^C2c2Y=?4=?MfJnSlKUiDq8 zRJ?&`#?YML-rBU5(_FXj%2Eb@Wo|{W%ol7F4(Q;Lo$%8A4eUANe(PL$mtHf7mH@a*W8_- z1}cA-(qeeX%E~?ge>IMlVaJjCJg=}=@T3C=-Gb~L)``>CCa)YItUAk%gMRSvsdrUi|L$~p zyOZ*Ve?(tVdlT=l&ts#g{Y2KdR-mP~$PrnYiqHdN%n8Jsx*NyYI?XF>BZc*H`2;0t z5?NJ&eGlHcJZ!#k)vB>;;?sPLW<_Y>!p{vRksxWgQKfnZqS9UQrBdFZcMZEnLrsME zm!@V?UYc3`kc=UjYdj5|ip_axasREe*_|CXG^jfnyrX8(-$L5ZTQO^=9_sH8dNk~O zv@$Zd>Rv&xY5Z40BRio;K2s}?Z5!)3}v79dg`kk#B%!Dma{ms-Fpu_ zTNZORDU5Pwy;mxx=;tx=^7tvG(QSIhl#{V}K_&gG8X*%{`FmzVoVr#n31yddqW7Cf zOGv!4WlpPS^EZ-M$+OCPQT2YXYPf~-)DGS2uVSI9-+xsA#0TgB=2bBUz(xvVGE5Vo z%}{XYa!Ri}`2rRI$`wg6v6Qw!33g(AvK zrU>l7n+t$_L@1roDNjyf1RxDVTc@CSNLrz^m81>;V(4hJq;Y^Fb^!Kd0l-3Z0(f)g zaSe08ppgxAWIF>?7Sw@YfLJcKb^sn#0sz5cm~zTvc`_wchzxPKP?l85!FX+QtTsTa zVgQ}$7yz;GS`|2|k^m}B8vqpo+=m3GiUOcK21ju?5-3{_Rr=~0pP{Cx3)P6u) zq^3&XLp*cI#LG}VfY&+#Kus6}%BKKIniy|k)#k= z6nXF&dTXX^q5RB5hpl`#4$iXC=7X)S; zu<&>tvZH7L^6SV<7*kv0Ku=-1bFlS;JpE5P%6bth%Nx7l>_Yy2Q*SX z%@Y}+-U!VxKy#)cI9EvKC;q^;iEC1o{3kA+f8q*uQ~8s-|0^DL1PcYLDh08yBRGQH zRHcaUBfvj#BtX6~=2WZ(b+w{eRT*N;2P{ZD>H#bno@3nH|3Ui&_uW-~(AMDSh}ddA z_BsUdJp~X=EN5|Qh#wI7l$ApWpMUxuYyadIz1N7lmn0&^1vV$A!uT)^{x)BEq^ z-wmMu-}Rypy*Q{B{ij~x{}uztxhOO;j~&jzX~LXB@xYX;UIwV&xy9|rNaq8L$`8Om zt(f0j%gO|Ru@EQ9AefPLhTtXkVjSUdY_K?{oEQr00FoP{|AznlZ~UnB|Azm6ksFE8 z5I@Y12!3J&tz9|-=9wHJh!Z6Sw^=E%Y(D0p3>(TGG@9cMfDVQnZ~EHSTE;vS))sx7 z8e&5*LC=KPOYZ<<#0A#mpX#t4A+|Wd8cmI{CL#3)$?;aUn{^V_9@M^n+F^lP386-k zNLqP-g>qHQ#Mu_0Ag(URDV>!qth0=en^#yJH7Fb5$Pp3;`w7Su56SAo-?*av<_Zk{ zQ^)_Xj^L5?sQTd#uBf&`Wb+7|8pIZ(1Tkub0X=F?4@tEZpdmN*NFGydg?7U{CL2tn z1xwDd|ITL=d=EPXpx_G(21^2EQW)(y(qCxh{isp{fCf#2e1X5#G13!g6#y~FD+{s> zN8ZieL=5(R+Z;{cF^~kCQlw{sy@bmh*oP4XfFlKmDGx0IETOQ63oV1^1YkWcQ^CVI zIAR%%wz&`IIDP>9u%3BR7{p**)2t$X00h_rE>Hknl_5awF$x6)sPl%Gmy-{{&B?>l z)kTU4Facrx({A1>1ao%}e}Wr4N`Rw}lk+K87s6SO0Cz%wyDP!M#G2qrc6B}z;B*|$ z*gWk=a1RLZQIVED<3pD6cau8p8bA<6#JQ+!&fg~`w~wIh?GxnZal$=-Af_!&kX2Sz z+$$#okN*~G?&{#2!2XVn5`!*>+@O)z(E*!zgbKG& z$aY8%x;&JhwxX&@TOp3oXkm?jj@S+asf3%}q#4dGv z4j#@WD8srAF(SFb7MVi|2RKS7z#&|R!k(Jw4CtgoVJ}-iTSSh*{@SNS3*f0U&?YC4 zWI&^hz}IWaxt(NWerPzv?+kG88Z3+zcG!9X7*{jIPQ>Ug7o_1t<>IK7JMDV#~PrNy)lzJ{kHsY-Ipk>wN~0YyGgQ?hOrTmYwuj^9Jmm6r0_AoIz#)=}Mb=L_;u6M;(^$7O3pxAs$QQ`}ww zllJ_V(l*XXMXbZABLd&tGJ?=@jkXgnc&voWbA#!1unscab(SAkaaq34H13(0jGn?) zeP*(h&+7W(s$5ncKosO3*j@CQUh-bZuAX$}Qv1u-csPly>yl6O>oT9y*;RbX!|jYt z;>os^@*MC>dp_f;uk$Q1=4{f*iiZ3d4rllE=PVPh%Tv+wf_KkGEctr$C-%nQ(QfXH zpQp(!IPLqe{Ie>bMd3x}_|{*B8CRWuKAXv0xvNgU?J+qy%Qn2ZrF1~#ZU3HE4gD7d zH2KnRSja>QmDCYGpO!6H-dd!p)L@-+Fe~AcG*eyPK}h-n(?wZ$XwS9Dr*)d2>(d>c;(x()TTR7R^|u#4Y_LHdL8pSNpebf4|Y9X#Iq@yEd(uVxk;$s(DUbgR^XzJgiAtdeeC= zx8>daMSGr@t-1DRYHpGbWPYFB&2`3Zb@XdUkO{T28-C`nQ;npsDoC4=un1bZ{#u=b ziyeh`(Uf#?@_8UXp5hn0V(_U|hom&Z}4MW$D}jeyO+(w9&EUTvV^_KY1Ac)ztN4KYI;r!PB4L+>bE@zhDCX0J7O4*ik(rL>FOjm2RnISOA# z%iLEo4kq|-tP!V7O7`AbVwb9O&$<`( zO{4ev#r2`wkAnl1J@u~pyOXz-yyHz{Hhbhu3GLw2EB$~H&|MIC7ngs$K=An|F=M{n zn)ei@AB}|wdzS9o(1j-(X$EPjQ4v@1T4P==7S$%O8~TeD)B#c;=M6jD7Nc?Xt{E7XEtYThdE~ z68jm{6W$Vo4m&KPHOsk5r%Tw=(QolPwlh+s@8&Tc3#_euC~L6dJ1nEyWgfB|+z{vK zAu*slr{B^sz~B2VJI0;Fo%xoNNaYk(a*(_w#4evhJR#Z|aKx?c-IcH9kHBXm#kgJl zVY8=9zq)<+&VSIIF={31;*fgCn+^XbU$uPPV=7j>?rr(L&0$WZ^ZhD?c1g>ys?1JA zNl`mZZtQNYkBih3N(P1~?R?2FHB3nWtKm8H<5$ib#q2&aK8gKbe%7xUE%xnBXnN1` z!|-m@09MieHZPspj{2QNkDu+>uSkA2XO)=Gpl?C%Z!z<9w~fD~FuOUAHQgP@yF3FA zjEI9pspTt*%u(Fi+SP<#(}H#wE?5N(x$OU$fNHwg_104BLixJTe$N;7OuAb|4P|g6q&F_^ zuyhIQYijvqg3wm8F&m!lGjS7VR~pl(EGOHaXQGOr#Lagma({{yO8OW;;8eF+3Lm|% zx_(gDcbiH+gXu84)rk|^{k#14_(-GLn)E3BA=CGn+lzJR#EvPU+Pobzs`*<4Q@PKa z`LLyLw5uSHhOV#dPU`yE`>UmH$0wDn*1I1AZyD(yf4F*NZin3Y0n3&c$0sw@j3aCI z9WRY)g?*I>cKqBHoC9sUOtTmFyjJ^cVK4ae@}ZPg`k;(LrqB(l!nR*b#TE5WCDHNB*)nVo@Br(T6`+-AL|96&Dq zls?cg8Q>-vru&udl+qP}nwr$(C*S~Drwr$(C?cV3yzUh~)WXz0wRY|>8s;0lFj2Ivg zATYrH4IluN|12N^NXP#Wmj8?Ya|8hYUlrj0aD@L?|LcI^{s(~p{BP#}ya*uwW&RTY z!1TfY5di4_WK3L66#s|*{{+~73?UJ^hEi2QgAn-|F64h}fIvwA0L!cY^UeQB?|(XB z0R!+SiiTLQL_tCc7}XX}HH;54^VMl!Qfj7BXp^Y$m}~IPZhR%-c)4_5z4QiTG=pw? z;B6{|Y&;gcey;uPe{_7a@1R~*oYSPK(dtu|pPJeyz{leoZ+DT^69NF1y#oNW>B7zb zZzm}T?OWhIim!RM5V)oVfJBlpv5@Usu?CFCt`q7-Dqgaa!Y!-efL5O`m^%mUm41Hx zhHzvdsOvG#yZHD&zZ%)HfKEa3ua;DrcVr_@oIlMCYhoXN$)ziU8g7R!%%tpFR3Su! zhHgEw(y25mTN+I@xfWX(j!IDYyrU~7hMV~-K8|a0$STfSZ5&o|YN*Q{BC2xJtsI5& zlDu{QdI=V{Baa<9U%m`U;pFV}rue0W@{1246Ej7ebb;JnA2tJaWEAji5G?NT>mj)i ze^YE6zxt+8_*ud<%27a(#aYaa)O#|KC+KL!P_OMKsCed&-d~NfpP-$c4kzsRvcg~` zXUwYIWrY)Sv;{X}&aZ?~C8fR4qk%!dDxI-^HU)LIqccg*Q;U8~28d#P0b;x0U*;t) zBJxg6t(1)MaD!D)ge+IcnNyvxo>e)?q1>hzO2GJzFMJoCmJPMDfT1Z?UhFR|RhK|T z5adp;^q>Yyjmj^WjZBb$+z7>Iwbv~HH0GLlF$88k#3jFNfp%xjFP0j_6JTcS7pvK1 zY4Z~b$}jZ`Lm91n%`Tj-k*zZEA(Ey1f+!fMC^0}y(&lf4@`vs@(Q|8R@N#jM(mt^!_v)^TJvZYKx|L_JwiTaS2^nZi8>)w z|B;?B!KJPtxF%uid;t{RXBv-A zvoeH#6-iP-=TmghOnL(EQIW9UDc~2*lb#eaOE?pq^JhQ4Y9^BU)eM5CD97IN6doa_ z9&8PiLl{Y}IlR+UW$I7qcdX=Yi@vI!}f-Osy~K*C2T4JvN(St(Gu>IV-G zs;KMd%7Fa{d)fz)C~U8j>!K6yIPcE$y-Ff{C#sNhljGr;?y1@m35cei2X$LQWZhG? z|JL+&py06JEEiY%C7w4YaTf~V_;#9~04s(neqJ5f0u+!ZLq9K8Uf^&=MT#0aR@Qv9 zFK3yU_~_E1L9~{hX9kZSZYJx%mrcA0$hvpTdL3#PbNSp2-tRqT85@in zy_|S&2fel}xt`11G6e|5bz^`+sU^#4-@8=t>SIt>r(I*1%;z7)&fQ3Nn071K@|K^hn$Qsw7UWeA z$W+$1zGQBzus>1Qpa{V0pw>qs!VM@xwh563-OO#26&_sU4F<+eI7J0$ZXvnDBMj=i zZ>WERlnCjUa64~eH%L5Am~?L|H~pFl`D?L8Vg?r;z4~~S4=;IZ>t#MI+FD;TPDJek z%8J=kCdbOT+Q=HOz_mO^@-GWwknIP!;`zAtMe6BiUb=kMwhRxp*@|!^Pv)W@B{P1o z8`U26!)?G(XzCciyT*Y=BG}*dioiFW-01JH&TI_?3 zAZcrKnshyDsTL*(CQK@R!M#nq3Xzry%S!q-!xJ3b4ce(g!dsTvTWopooCIBeq^w23 zw&OiG8s8hxxJI1c>+yjk5I>;aS#^$4JN>1Uej>4AoO~s4bJp$I{~xiwS_;`Zn)Awi z?v4wZgv7khfLoiCh8mi~a~)q2SJiggt2)?;FHX&AKa&R%Y~zT#%SY4!J%1)5 zs;$0(LNjy~I4TUaYH>2xGLw6eaWw4gp0+}8zV(A+U0~Ap^;Qn_<={&@A&90}0Vdb` z%ve-n$^*kq0SKKu3CLJoi$8~|tucA>YlTARU}8zs$AoK0`m{}u4BKv`q=mvhB)7bZwQ8uPTvfTNM#=W;S;DBxRVuvGWhUOc zSLqzjp_T6F07PMdwI+Ue4h#9K>E9`NoTw$LNKO?3>LXMn0QFVh(o$9ym%4861iaoT z5*kYRz{#czKSL{4V6#N1Y=Fkdz;4=coLTlVP>n3#D1>CYPJI%_QC;m|amH!*^r4bt z3oXrxqa7yZG5*^i{hT4M!={(fT{e%{*!Z}lCWabq z!rCZj0umv`cI_vPwWv-EMnK~aATLmt zI0@W7(w|IIv}TRE#91~hLPP*O;9{atIq-OjvmFc1=5s7pQSD;~ zL%2#0oWV2_)=_S!4{8?qmC9fWfVVs41DvPr^+LKq8umf=(P&&E7gp(U@ong1A%Ji^ z%Qevhh0lbyz>a%Q?R90vyUK(C{0K)5&HCfEnXuUinzm6AvKNa@aMvNllLhqiI{-_A1s ztJ%XxGpBjUa)aNq(Vj3J4HlQk^L(;9R*X|M=L+yH57+FDA<%>$58G8(TJ_M~Dsl-K zO|5?g)Me@f@~gpoQzvcj@w^j_7NAs|%TMUKa7wZ*-F%2s^l#hU1I6O|>UZcYtjViX zZprS6XAeU##xIFQlOe`<|BeIb7 zJOhT-NYo^=72q=Hae$3DOhg9e-e2cO?#roWw{bg+4Q_NJ#6#}!t|}?#EiPB?sW6=d zWOWfYI1{J$A(+8rB}#{pwI2Kzxs!uth(cw3FM3I3`9(&IC8_xaamn`nV)7Gk44&m< zfK0DPrbS8%SG_<^Ug+wSw>PRlip00)lH5sMFC>ip=cJiEpJ|^goD}CnI9PU@_X9wZ z3-+CZ97z1Sa|a4hZFN|!FJ^r^xnYHE@~9pTTA)M4n1cbJvJpIi!%YbhSW+$>)!+Br zQ9&=VK)qNX>MY&3rl%n^+G4fV*UqPlyXq?oBAY{j8Lb9eO=bf2#+fYo@xBfFBKD75NPy0qClyAj5P)2~w z6VI&V3LE(2dKX-ZGkYiy5OH8Cmz+K}DLqd1Bcu>BFMDv4D(VjcnL%z{D=A_AB~0h* z;<;8OL(3s=&n`JyAb|d_vrQ6Jki>FCKCOBs@yjw0jB}4lDcCeh(egza&q^y5Vl>F6 zmGC`6^*`+_{WcncR9S6QH`^@&v_zFH`8$VHuY|3?M&xVT3@m|-hiz>V77vHZw{f0o zUKwWF+`>2C@EZ&R@22ieGgN#^kk$GrrVJINkR(G|0_^k#{kij#4fBbwZQuqMmd){j z9;cNI3vGYVuhCl)|K;_pJXZBcRL2~aNviX-9+sVj6iMvtkBmGdGOs%ba#wlR*!Qj{ z*9$9)FJb9h7ci>a$A_vq5u;0!A)APXlKCpQkSkIth#yMixUc4L+*l9-4P zu^e;@$zhnh{tmh<)gYWPQ(>=L^)g-;=NX#9M?+@*oeP2itnz$P9&e!UGbLHf%UWgV z@98$g&I4@T1h9)YQoP!68(L4gdD;|gw$g)5z^OqoE?)(*71m4RWT~W_x^XZ;hTZ&$ z!pOou;=%w_;?f45&fjjbiOQ9t?Zmmp5^3tRTv%YFs=bUGQqWBT(zkl8w|c8Pzs4;W zvq<^zuqCNd@JTVkjNz~Pc1sKbQi74m>N?Ar!Ryu@x%wzsjvMb5PXfRL8-a6)8G^|_ zft&i9ujt@tmemeFk6uMtTAKZ-NYqZ~oc)_yz590OJz{Vib3@?{|DbI0J`nEWV8Qv( z#@++=>H|~sHqsHhH-dUHu%mMEw47F-yx59gSPu$|-j=Xq5EmaO!pz?F@kp1mYHw8e zWjIw{M_Hs=FE93AnmLE>uhZR^_TU0$nm!acf#gC7bVIavCP!l-2Z-Y8f*e!#(K+kf ztRR(xU9SBmCE(|HF>O}Ug>SdWkez7^({D1Bh_TZkVgcd3E^ie=HI5wX(t4>C7MCvy zxvu>WVM5b;3Krh5!H-HGwT0}@57ef+4bJB#^1{WgrX~pBKXTiofnvI~p!JAby|81R z%}TKWFNqYsIbqY$iP!yfZ`Gk&=&aF+K5uqd*~Q=Gm^1{XK?4jjv03`@NqOIFNJVc`itxktMnLc3& zmwbp~uw%&ueQAP``=U{YhFiB)lZNINEDn#6Q`i&se%FLmz*pepT)pLg-`g!2xzMSg zR&e0%4`A+b*e;dVc$C#=eOzg6#IKDN+)*W|(^UF8_j^ohg5(-9HjQov_iI{TuP$^?3wRGN|Kwgr_{bJzsir!~P8MLHi;%58rU(Y56aL0V#Wy>l zu{G7TkP^c9=n)1PYiXnC-83NUZA*bVw)DX%T~HQ)cU!n)YWy)WMK1%E==u5!Z+W3@ z8z^{qTk4gUrqJirFeb)8yZP&X(Zpm3UV|f*5%g2Vg(FMQ zasC`T(iS6DSy|w0bt(EV8zkMTy&~A|C<^)SjEiO1?ml4&lXI`J~L(@NO>HmRo z7VGNeMos<7Dk#we&SaLm(^|z3jh~f62#OHh@WIOvthP zhiI0|NQjQ_BLhn*G>PZ3=FowN*HS+unVMW6Z^#_;R44RD)g3>D#cMWuFQj48pF$kw z-Qb#4`Y)>w{8{8)jt&iX`!a@EGFJGjq%XN5?bwib6z6BrP(+cup}8jvMs{VA23WI! z{M8sY=sISM?#wVtXcMT&)v=G_Ysu!>KE z%z_NIwsu5@ZViNM^AgLLI_9jEjwgptR=??K$7MK6*Pf|lIDJ_q^ZGE zw$B|%*g73xh~#QN0)&Ce;~jipPVdja!#EYric_JtKEukolm9zrYL$`T1HLhXJ#$IerwrtfCJo6k$-0@G{$z#VZ4%O4;1ieW55>^jZiz5)tpysjx{P9+QFm}RtGUlh z&kv*miUUspH5MyG=s^OlngWg3-FSr2Cw9Z9Muk*>5U%x-rv%f$~4R`)?hwU(-y6-yfJY_SLm<+tn3 zDfDB&urB;A(3ugW)!)sAAXC9pwGrZmsu$Q4Bob;Tm|Ns^yyrfX$TYSu!X23gY6Z4w z?hQArH1wX@trbIinccpRi^!yGTm2PnlJP(X!)=+NK>4e^h4w{*+_5#+vwgpsHsJ-& zyKh}a6|0`pQrm@0dqDdcrv_p)1l-j>F@A#I2_%c8hFA?;DXjaWIY=#0xe$W+;r46Q z3)a5Y1BBwT8&R?jP{czxT)xs%o!rbdPtBYsKO>RNJ(7X~Nt51yLu^RH2UbhW05xW^ zrshh_P@Wd&=mv7SnzqPK)80g{RgWqZunR<%YZu+pa}a9BmM;VT!nK8k4n|2k+U9@u z>*W|b1&g6qU!zb5zBQ#0pfWQ_5sK=67Zs{63T|$!^c)qtxxxDE4Di{|ewpd5W4o|C zN4^>>sfZu3a;n+YwBmY0OaY%gD)U#Jp{L2QU87QZ0Y>89E;7RJBSI}{ruqtjDD79f zLtAE=fww50Q>Xtl6;wYy20V)mGs36Xx}r!ksSt5Nw=&ITNS-z=2f!;9!hx zJd^7cnDrGZ_N?LC+;h)3{+Y>6;77q1+9`@wT6ET*-!pyNlbQg zz<$7a^W>d;f)WfdKHtQY7qBryN$~1#6p`}+!3>n@dHWLR-{+N+Kc0*A^B0Mp0e`b( z(I@Fk1HY?01*+i!7Mh-%asi#MF)2dIdD~p!RFrO89P@}^HWu~BUib++@G9$i9-j(0 zlSup3&3V4dR=r<~Jaw&RU zB0->@;OF$3jPI!2>>FpBu5RA&RRd=wQv2mc2SNQ&xOt zKl0@ehZln3I-$7qUzQV{bbRE1c=WNc-b4$TEQjqTH+b`6B=@j)BCIszUVkS_>%!*2 zaz+w}`&Ei?A&v7^A8);qKraH6&G&`PWKCk37UzOr?cSMD{Y-3-b(+sPlQrK znZpuVnWlL*4ryHj-&@QiBLb16;-1Unc^r;2rT^$#3eSxtw{bNnx0P6AeXFaXKS^$cF=9X=I>em3L3t9x>TrmTtu?P zJ4G&BYt^<6ffvQ3n^H_(bO?oci)S82MtW|1It0hk^49uI_8Z6X+Ad;>N2b_MM#zZh z_!J(#;h&2GOJY>KikxYVu@ytT{~Wi$;2Go2*5_Q*RlEYhF;AYWE=>6X`X`6nfzdI1 zzWB_`F=(^hO#$8%HJO~))<7tOZK#*AlfM$|uG7?=dz6yx>rK_N3&Nmk?UK0YN<8@* z_p`4K3ii&-ej>v@WX5yEK*>~;D%V&WZ%jgMGp3L*U-)XrbFZdy1;NW)G=Z)xGqi~T zSC-+OjsLSXeGrJ|+^l0)qgharxu#if>b7CiGKAByG~lA50Fue*`~@z1b8IPx4czz*Jzt6SultIF>>rA#U8G@)MDh$<#{b!;|R_VtEau z-A3#{2=WZWZ;8P*LMU)D=;PzuKb-xv4dg?!kd1@9&81a}%S#~^vhoo2xT&0)+Jy-t z1zhiHXDXJUD`m)nS?&#vnArV<_K%-qpxS-{wHEkGM&0Z*4Vl5n!%mFnH)<(F) zqUcyj$K2H0eNP5{n*wnWEVS$vqR;^w-oacy%bso@<^T-c;dN49*iz|kAx9wj2ZCu0a|}Nc!~qQD$a7FP z)ZSw4OG2){wBih+S)(jOulI9YL-*r~rL%_CKTRcdm(^eWU^H)TY&|j>emD z+oT5wq4O)QyhhA_i+mse1$uLM49;Pc`9S`V;GWOIw&nDtSYG24l!AbB%cuTRS$J!@ z1Y)pWbY+4+-I`WlddEU(GmOkOBfq%{w|L;tcJMF5k6-h)j4Vmv#6eefh^OF+Tt{{q zwxgB?8YO;m_k3%ZvCm4&t~ZMT>YbI>-)z=Q=XcjFMd;D>p=i{N3<4GRlRtlAD53nS zIt?xJ0kqir(J_8Myw84!VUcJVbUpNCrXS6qgBPNrT%c828jbO-RNLx30}Es8xsd8! zRC>=0cv3LS^D{%n@RBLUuMqXjRn?QZ^Pd4VXmt1=mg41Brfk%QojN$Dm8|sIs#BzC z>9p5TFe#V`iEeiFI}n}pZoTA%sOrD!XhI2CHd=e`e$MJ**sI1%4h&`7I|jFLswKcU zpRRu-mduZ5BH?>A{G=0(pXmnJK-@5_??&&(iL%22! z0Xa09E^hP`?^)?_zhPjk=Zk-I&O<1!=m;jCsr8?2UWRoyVP*w%n`re+=B6ToJDj^j)Jfn;8yP~+ak-oWh3dVwgWkD3+gbw z(K(#IBHk(^td$c`*W&>w@VDfpJ>IMJc#0~KY@}6iXsfJy%Tn||6$b2$e++Z_{CwYf zr@e#|z$yuAhF zWNJSEi54H89qM#|Wm%5RH`x1?GpDN^dQH1{f%Pze)akpCoTry9vY(Aczw%U-8oms< z>?ugY&K(RXr@3LOc#H#0{M%C%gyuE6RDWTro(;jk^Mw%PklOd*ZGD8cl>uvdY<0cO zFoN4?@B5^NaxF5Z%VP*PrMMXsQ+5CDkawQ^{iR4;Eq0+de_^J*%$2Cr2M!_B$fp`X zVAW$5mw98vNG54*5~kzfs0+qJul>^FuQ+ZrUY?mhqDwl<*wc^bs0)gI);*@9mThCW zs0tL{1~_4J`a%smoCyvqTZDgl-4+C@n*7RzN)V|ZUfd1S91XqTHZ<=U}nr3jpACA6!{&j@)#NO2qCVpd3U*o)u-@kuCCVPuB587fA{ePY$NL zx7E009@S(yWv2&qh;2i}0R_Vx#zMWjap%;f( zdp>>T9wr|R)kNyU@G;>anCXWstb3TWw5T5BcBe=D-?T+EgG;lU@_Dk&4faPV0H|dC zWf2u(H(lbTxVz68Pj>FUJ6x_*C)tde=Qq|z3^M}DmtVN@J+;v5jna3S+^L=^oTqC4 zbYEk~t{w<^Yn3}4H$=i_8d|<)!ilYt$+dh+jN+AwE(MeS6@wA@!#L~nF$jb*U1#C4 zo|_L-74jAqH?=AY!C~dc%6!2`wL6;L?ko;v!D4J-MSjeh!w>(O5~k6h(hk-vhWg^(T+vl-DU2X!Na4tRG+!}K&r7h# zpLJbwl1^JpHMvOVJUlVic>E?n*jh!(M;w6v%yG-A5PJu+K&SG}ZHGCktVEG3O?RrLLlo1fgQEDN|O$bTeE-?{HJNiWk}D~aEW z-MZArSLXfWVsCJU()iK?@o5dm=OVf{8NJe*m;U3X!U>s0-jh(eIxasVb_c~j-MrAM zDq%tnTg(4Y+EdDTnv22Ofr?g<7eK`AZ+^OXqIR_XO)K~pw%Apw5L|K3A3}tf7 zA<2$;zCNENVO9=11l@^sN8?6Cl+7DO`?m7?T8+`9$a7U~*}cb>Io*!YgPFyU8|^7~`(Z{CD0-A!bz zr?uLAi4j$>p(lkxgx^U#B-+%RWOA`$2~evT&j{reC3w>zK^zIfvi9QEjRhhz2*Y=9k5I)yp!gm=3@ zP8fSNX%A+i|M*#_l}ax<73JB>#;meJJiOc~5uOU`9!PED@6|E)k4#SG#SyL@CjtO$ zq^E(fOf_53!3F_I>eEEt|G{enJ|1~RbYZ5;bhXu?>bJd45c{o6{d2^LRwXv{%l%>LJDN2~ixH3pS4at+ zmTh2Tv`g@=xk&h;-EY~rLU2%{?At^vQ%m-`aki9SSe>-^0-k!!RR;>_1Ad<}oYJc% zUC~L}sWJ9I@jE}L`VL1h>gWEx_^YvH^n-AXv!FiB_*haY&_1>31KdAQl`B%Yy9tXK z-1&SrU_TF;>TjbRV#eP0mKQA%c`pZ4f5Y{G3wczCNck+`41M`VORRZht{5zL!&h8@ z;oFRXMUsaw-;J?s>Zjw+eN+!SS>r0aq`a@#R+Q@F`Rw@6x+v?V6(l6F9KWPhdv1pp zBrLBCcJD^&)}efHNB3fDj_ZW~{$v?8QR<^mYHu^H!e3X|q3Pg}siJ&2U5algTtptE5HHbM0Wz*OYd_+f6To$P#RDoJkJj|L>+2Q^C z?Uix;W@o3>i2-XyfH(5NX_K3f+l-@)TmJz#3=1weNugSoY-u6Ec5j87=sh}@$s%7?gznzITB!xAF%b0I zNUOaR<%*{pzqJ7)sBChUu7_0il2|^jLo;(@Uj8JEfuz)qLtAYP$b9#pyRaF8&=hd8echdM>$Cn(G7;zV;f8|1_AM@;IxjccY(%=9y-*~v? zWzR;0fTYga>S#-&6h_0?gK3};@S}za-buQUvnM&*xT00yNMtC#yB_6e*m{bf0_KkzQbB%X3n-c4qJ`WbZI`xXTDl5V;kCxF!@FMUQEjp1|lR?%3bNm;N5JPgSxZ z$zh-&iU_q+W+JwM61Mf$R0PcJk4izJ5Mf-$Lw~$PJfN00* z`Re(H0^X`qh!F|DYFQNb{a~a2Ic1~KpKPM6(oA!9x7v%xyYNzqfP7K9yQ3bH1gIlC zCAWnK%Fcurb@-UA8MR>LI4wSf7pOHPx$R!n5KT`u#^mRLL+drnRt~3nS|XMNr~t%Ja3tRK2Gkvd6XQ;-}Qyqjkne_NcQ@idrnBK*U&~?TPckks>6nacV)S z-Xz2R2O4Ct`%Y1i{5V!(Frt8p7Dw>E%eHZl0BnXuk(;MnIvz<&>b}JXONc|*AK#rS zJ3%ha1(RtbnpMBcFPBfjxh|jgRG$H>HLKhNK=iq*^f_=)d=DsrL!=NRnQvD8jf$W$ z{5BPyQ**^*Eh1m&`3>_#aU9M1x2TXAo=P?70D8iB_9+yBkJPi(cbPrXSaSn14Fl4I z!NrnE3IA9P?er5*!1h)rj$-H#2q6(u7ux$hYHnGXGfH1FsDQEPU0$TDuOXyGbLfME zD_RQNnq_5vdNr(RK-jnKY@*k;LSf_V=aj4NVH^GLnNHM(>ZrU3#S~;S?4GDs$e@QI zEGC2(Wk09&V-t7=*CA;%B<^`7x8aM7|>O&?7f*qGK9NX&O>(9B1ZLK|XJ- zQz@cw-Ph15UiB)olI*~{CDQ4+&}m@BKWDxXgbbmp$D}A~3>Rv-2C7A;M?PEAY+jrk z37n><4Qr_3l&ZW*=AJ$62Q`aoaUWhvN`5>GS!Inq#Kh1l777r|?eS_f%d#2hN+p<~ zf4hfouY5h5NHzea2yZ?WIxE~4&aKUM9B2INhJqVsx2)7aO{Y#UfIIWRWY{pJ`-Ple zbuXy7t(G^pT2oh>_rBcRlK=ezJ_D|*_~$i#fJe*V8o&c zN{Ys4c{>(iAeU93>iF{352nPI9nBA3=1+kE!49SooF_spQ}+io}*!K zYAnw1imQ5qJMmL0$yI!?2Y&iy&aCmCyD8IAbPrd!nG>LK4Hl3Pi8H&e`9NU8KOQDhht~MeJAFvD|5+}cuAwYf5VdC%{JkXFY=C{5D4frgTjH%aKDJt1oUlN-4c@f-Y&$92+jYfWH+1-G=HWZCgkTy99DBz^QyEQ;d3cH z@Is)9{n7aYU~^=N!u!*vL6Nf0+8o%`vD9?OGo)BW^H)|hIseLC;?GYpHzmZ;vd$hv z0^?BfaP1r=5^$)Tu^z7xR{0*KFOr$6ANkm!5A*N(l$2GYJgr5B1LG(XBG2zP?ur=k zPV)^YrAw8JXfnjeyN;V_#yQ@ycE*Dw3l$@x7O8`uuQq|fw~(O`7i{9(5KR(Jbpy-L!(K$4$LIe0mm8adA6VzZ{> zm@rMpN8e_tvlB~%bN4^w$@Fitn8;}Y3{Mt?Gpa{$&LCrRnRM`!PQic*qn<|)1-~L@F{M~w zv>OVBT~}-eEx7b=eUQs~0}>dnSg!b=_jYhZAu|DjX~$H;t?XFiWha$LVu-M(>`_I08TcTsuYFfwTSv(HWCW3;8%)y@@z?&OHzQSBxBszO%@J4H=uQY z16}VM=uehB6f!XcY1nMLS@qv&0-YYpb?MU4ZFctCni7siK>aZsfsjFmsKZUiS`nq3 z+Jq;&8K1DzDh0$4xV1!ffCQuqY2Jx+S1hUaBA{soNeWEgBZvt7A=FK*CXGO*oZ$C6iJdFrg0*QK$w-QZQx%C($vO*nV0@p`C|CLoBRuobTv4zYu5 zCX4>y08yl!O~2YMZTe#HDYM2=U6zxr1_>R~$*CX!Xatzam>=s`?TkHGt}t zF)UlN4iYw%} z=5Kt*?|s!lXbfa$^mNn{8qBRt`kJXo8)_NlvS+A)$Zg`CsyguJnLnyYHiI{ZeweQw zj{q*O`E$}!iK0&CM~b6?Cm9urDGvzo4wlly%fO`rxc$gh7ZISw@q-G8IX^!A{7 z{Mk&RulL8nr6Ksyc}co;?9?(OaHx~L!;2+xnr&A~jgs-@ zyacS0N!$|?NG4`z-bNS$t_K4D2>xws5;WU><`|8;{i#if4YmEQKWU72cK5&wdtjO? zZ7=0NjWi2IC{bZAtIer9f!{YKlkWdZ8{Vvhv359kJ1V6WzgN-wXP5a+@tz*qn1(vW zz$e{#GbAzZB#LE!k-)f+M6W{0r^fz7KSGAY+<-lYv#YedpkUx|kq|Vc5$b@#=7RNJa#1 zEi%s!jpp(?NqLdkAospjIn@$40|rcP!p#B0Vu}v%UGj5ur|*gHLc2i z9GGkS^OFTJl!1?%ipO?8XOQv2J9L`%g5E!SIg%MJsJ!P5E^l%iA`?LGo?KSD{V*Vp zZh`%f0wROq&MR!t@vdGd>KGY4_}_(`HjM7sd&`XOBa)IqIkt4CRM)<5E}Z=p&X%%Y9b`I}cTYZN4F1 z_D$S{-q_|{sU^qjy0-oJyVQ?n$r9l!N9h(=c1B$Ab+q&PLEf5vtEvE(V>`?cLVx7! zFV9il|Ez1YD#($9gBkn@(R_<@JyuqjsViz6O~98DfE;npbEBvS8Um_#OtTgw)&iK# zIvrwW7X_6J=RH8p$juZiTHDr?Zbj~^r>osaD)8MIQSvk0S?VM;;fEJ|rI5rf3(@tG zO>wYWvf7G3idM(?7>F7Oq~GE!9U0V4)iE?5*tQ*KK2{Q=N{D!13K1{X?F?Fz$Ln1T z@F9C%Y~a}bHz3cNud1$_?>Fx?DT(j{u``1R&W6e8pb+|xXkP$zh@I}FI|W)Q60aM% zX0A2E2wiiD-@a0U!O-sL_lZO6Ffw$5Gy&#tXE}LmY_Mhu3p|~g0?gU18VL1sh3wan zvuiq=$;T`L83XBD%Xf>2yy&xF`_aF_gwNZ$)cRkJfHqN|Js(?xm|qQK?=4UYR2A^} zeBWP@qtNq&>H`m!m@PCDb0fIo$K$ukJ$*MW!Y(cA`l9t){H|Kfar6z2c|IQMMmcXq%x?Bu>u zwp$~C(8Z19UQpY>;N*mIZ_tA2Yq;rhiC^!&v{Z~YCpnc|Br^GR$2I^t_i}bEuAt12lO)=<`{Iflv6``_eW= zu~7WMD$Mt6F`KX8Gd5tUHq`2JV2q@faOsNapo^`52lQdm7+{AmsjM za=ASWoCg?P&KDBv6uT|o$p!KB7LtGeR&Hv?Lzi$aUX*DKlnLYo1Ma}S*b>P%w}z@r zXH2AE1`OD6HYKqrt#5wWiZw(zxTpReGvI?v5x%VA%8XiJOo<>$a9N-SyXoctGhI)r zb%8!`5g5sS^^Hk|IXvIp6jaDuV-Btkx2VqiKv*xzIY$f97K{}jt2e6z8ae7U#Q3)l z!)z!?swyv_d>$!%*D==7h+442d)GWlCShOOwvmAW*bP|)8e*g(kbt&$v2lh-UxMbZR#?hI6j|gx)K4K`;O2$;Fe7zx(%3`XMk3~}363#hb>LGkA)71)TnwZM(G|Dn+{m%^;hr}54edmxU?-NwGC+aH8j^rYMzW)O~eYlfDWB-8j# zffQn$fa5Q7gAL{Jfan1>;XNWNp+~XM^bsJ#hvJ&T7F0*&*Yhejml?O+DZEc`lG{j- z*Fwmi+ng%u-dmFnaH$;}EE4_J6X|)pPjLNS5VcEe9Pcn=c#m#rQ3FgV>|ql6WPd;9 z2HOv=wDZvefjJDs7pU5(^$!%Za|Gs#-M%5) zo^V21Hu??dwB3Ph3PHmH&;V^L#60A3Oas+N{93<5Jx_^uclD}WCyNhG))NarQ%*-a!w>~#&8k_h%Vq@q67#u7|TSC z6}o&FfBSK#?qsqIgMaou!u->!|I}UP#^#^Pq<4>+p%_xLJKbniiE}7RFHNHcS-yP+ zKZa!a;6kyIzIRpRRFjfP5M2Q{&mWVzp1({Y=Vm&b3#7=%FUmOE9?yF}=`giTQAP04 zQ3FM$ZtX~8pFC>D$S4n{?BY`ZW#a`qVy0Ez;kVF@&Tu+_d{DP%JjAgt)N~vsvPqxm zed~rS?vhwI(`##Ts%(Q;o5R^ahXGf?%68I zMS?9M@d86v}?KG#K zfiat&8Yp`w!s7QJN#v~F3Qi0a_$}5aBH~33V9IMSkk(NlUHOABW>ZSJ#Exg=)Uw2` zhE8}HkQG>o{1@C4i=cq~VDb3G&=ZNV5-kiiZ5VeJo5DUMl-J1I9N>RBRnfBsjUKJh zPxc5zk5FVN`tLXTRyW+p-&T`Teiu=B#|E_6uN!BjW)4~+)sP(rbzl)7n}TNyI&MSa zD_F^WJ0gvm&ThavR%>#sOV+{#At9?w)%hYpcg0(XgdrLNaa(2vI5hb4{{byP(!V!l zEw4#GxHNmaxwkQ5rr`k6Lw%a)HpE;s7Qy*@m)pD3!9hC!faKjKD^M*al$FYB3ZGMH z#ONFC$)e8FTqLX3UwGy=vXeFG;0oR|x2-l=E;7lO62HbYMp|i%H3NxMrxttYK|UdF zz4R`GSV#Q&E0uXpbIRAfryV*nJvW~h+%)N=(8X&IfT+zYH9gG^>12NBi@JZrF_zGX zC$vWF>x)4v-tBf79b03s;uU8nDey7?dSDO2K%1R2zRuN*n!&j0#}bjb*d3d%_)O#B zm}psq9lSkEoN{M z0w*nEu)u9(!G_ojs(o-4%rV?pAfV$N`*PQWU+|d4?rXVPqzGLEO4dMgDOmx~LwC-^ zwC+l?00}&K=&Z@II`qo}`$mc*4jAd{m=FsYzw>27hXTA19w*DbrVV;*$3Xmfrq0T8 z?X^8tiN&^8Gs`CM4Zi7?->96c1ZBl%KB=;P6io9l)6_NZD^r2~CrRjGHUm=*bnswSjuCJRd%fuwgTa=MLk8-6KnJ|a=l>W}d|k&}2TB<*Bpcq!=4 zcDw!TS2DK=RPbcSgc^dw7GR(~M<%FhLFx!G(UmX~s2_q&S*E@d`Y;<0|0hIzsME!p zv1w78*nR`ly$9EoY@xVTt518jcpW1}7@|#TE==*F@>)gA(7pxNMi5Ne1jEFNGnc-r z{bfPZq?5~0RQ!UT`0*jsj7tR=EN=HnKW?_Yygj9iuO(_9B+OLnr3}XN5)l5zMj36N znP$xA-h3;E1$U$8HD;|k7$8S90vn>l!d1S|XG`gjtAS%IzN1OtMQ|q=^^!+yWlGyJ zW|Ropy_yAIm5WUSOP-&9CJxf{Ui|a3B09FA|CJxKjQ9y!xo{`1F%IMPPWoNb%IS0k zEO{bUjtwlvXyG$UW>=o0Y!`oi*!f)0eA5o)O@{J|ldB^ns*f(?=V)h^n}JuX-^WU5 zmJ}jHmme9&^?(jgkKvLSUh^fNO6dfOE$qe)FpKnxOv5!%G}f3cr@&6So)DnQY18r{ zmY+Fr;CqpZ1ksNMg4T5!R_2huj{w>T512~mBHs%+Y!}G@?YM!uI;H;k#ZU+lf6oa{m`R&C66N;#OQ!ukz|qg9_D*2q z64HX{MFo6Gzw2Ftxtm@T64#KYL7(dQ4L?9VjfpTSI7!LKG2N;A@)gCE&!gjR5PC3O z=*YlJJp@8hAht@|xsMfl8V!hMGom14S(xasQ5>okK6-ScIfb+sUI~+xw&*hQ;S@ym zr^P>8=KT?Y30 zxs`&vrqi*Io5_lBEL|4O ze6eMh(mT?}!tKBn`_Nc{=SLvMYx2;ogF}%K*EJqMtE}p%Z00;Spilv|!kDfMUuD7` z+_q-^c=16-QbVgXPK)_Aa`4JahETSpnuc07$v32(8yT+$>d-u$@0D|Ng8f-F%BU|^ zZ$KeMxvMY=I}1*)*r`&Svpf_-t2&Gp5b@Dg1lV88&Is6ljm5N1Q)+aT_-Rn|o9 zI|Z4*nJ6moGmK2CjjRZYOD_i8qjb(ed12ewNL4oFNk=Pz4;5H38eNl9a^5QKw+#DP z#}-Km-`iPf!~3SOz=tM;pF6vKfbBuQ>I0b8xEVZp;O3Zx@-cm0jmurF`yAC^(*K_R> zvQXZT`!NFTwb74hJPkr#<@_qfRsr51t5EbJ$`%Oy>!q1=0c>&9kA3L zfeWKqmu}m~=dF!MrMXS=ZA=x9c8;fIIfhnz0A*%Hyu{!r@O5mwddi#t2&HlCit*Cs#SWsXC<+)m_V}=63VNC;20fw{@sBuyLgmM99 z8<2Hsz&*{4o&>pEjTr?v6iSF}<)dRdU8Hji00FS%3|#qS@Uz6Gs)W^hJ`UjS@Xn4M zQK1{5O^ePJBz88Y{&oz}iq~^pSRM{$iYrs+UV{_>N>AJX_>=Kj^6Axb95ai5?uq~# zV_ba75QRr2vdTVj>_nEKE{_KRFq)eA-kx*F&cV?t>f`fP7YF(5Sx!wo|Mu55OTk7O zwkCKW3={8PbN?`PGY%Urw{r%AS=NZ4l04wNv6XE-%bSgFXK1r-tE z0Z(cb0YECuUeK~=`*$Nsh4d@`0V_c+A%e?pD2G$Utg#Qgnn*oXZWJkaL7A{xANE*+ zmAj4kAM9d2jtHJkn?r6dAY`+0b*MQ4Rm^Fi{F9s_2IRZjVkynT@->8yw46sD{M4J# z@dxp2Gr2Ql9_XKrq4Abv!O6qy(jdrF`~<>i2=Mb}2t7Am1fj(!u%pDuftGChUN(MJ z3;&^{;aMtn8bClRZ5+#VO3SOM8hb7D3A$nM%YmVXIoc1~KtafAI)W);jh;adCXQ$#Iw6a%qmElT zyt29@Gw=cn&pw$N2nJ9&R*C$OZUtw7_t}p)tUwfEbIxp&TgPYAv3V;XN#MpYw*bpAj{P)K#180a7Za*3;xU0i?A@hw zEXCOnYA#8H59CKHUWNi=wtxO##9%TIA= z*7p*r3r13_{KjMUU-=itafJU8vDRyZAQ;+_njt#7&x@zpU&^utq_LII4-v67;fa00 z&z&uAkwu0IVH6FF+BR@B3;a3jdxn)EECF+!!ykM-TWYzamfqIqQU2OF_f!Ln+_#YF(L={SQX-7oK1|XNLcoQBlE{ zxl|oun)V)tg?oje7|Ldw6K7cP7%r&Eef`u8{F@ZF( zT(0bIz*9Z=__Sfdez!)S4yRCzsqiS-5Y)``4EX&|DdV=F8f@Rq$E8v2m@JqyF95`Q z<>I_v*V-E^R6{jv18GDi;iPk!-M^e;#n*B}yN07gT~zWV`$8OEP`Wm5$8?T%iC9Vy|=30(ehyC73iPFnq2N}YIeVU0=L)32~0QhT;Jh9Tz z7pBcU?FzDK6IhVYohLyaOpgmDqqSKk=(CN-XHNDjkhA9X{rRd7!L}Wa5MRCnfebXQ ztVWg;=)RsG?Al|(QrUKO`S@k={&bdj7QX^mOFJ!$K&Q;N=^zsb#qEpF%-w?H#6VSb zNfzmm5QqNEK4p0$#39DzzlXs$A4%6TnvEV^4OD*8Grr|^ZG-|vBU@qCsLG|s0Uj!H z69IwErGo9A8?noZd9nPtz}GBwS*YZ6Xphtpyv?SMIi&}`$cJD$@#gA*KeaiZZpZuU zBCigeYvM3Sgp@R?hh)#p>BT<>r@U^Fh*TGJ(s8A*?HWuqeU#%Mr4PWNt$>ekRxa4e%rxF3{#j|7j$t3cSR z%0(-vsp#|W5G-b_Tc5IX_hS26b&c%0)@OJmwIqsX5ZG=8XAs;fOSHPIN&&DBd}|fH zh1sMrh~%SM>=986O0_q%s_>Gx5>cD0k}P5Kc7|M<)AYuhY8sbJudZJi;G@Nec^6z@ zn*E83&vtxy@%r=fg9Lv15ExVaX0+<|eWJ6$vW&+sel}4pKT~mW1P9p|CXPot;SC7A z9@A~gDv>NC-lAoi;j9Wl$zR<|FJtH(C01Uwh=;!sHoFRmX~q2GzyN?Pg_*nZ%o4po z-zbUGm@b>Qu-~2%x41DppFxcw{jcVk`Oej zLdAV&a|2xeX3>f*Z%xRY(;d$T3F?~_bMB3+R-3Mgp~x9SsMe8)*x zBWXRKEkHod)6YnbE;0U1F)*2((uK3JzW(VMck_{pveZANK*ILLcKVEl=`jN{vy{s5 zH@r;p$Fiv+ZKKBtavm}@$fY{Rx3YQc)VST=7ZC}>M$G?LCwI>s4ai-?#SyRG8-0gX z&-Avwg7n#dMy^+N_WXmN9^;=8@NfklV8I`{3eCQ@bNY>{`+c`ny&~T7N@;|x?bw0) z-psz0IV2pBh*y z5`p(YgK?QQ&acrlTaKk~%d4^>#7PT}1AoaLoJP{KY^y|>@(Lb}d*5A`5V@v>>^UW! z@6v>&y~UAYl+e6foTb2HNzLq`=>Bj7b-#F)U@xlW58hpZHnhnFW8YboS;nyhLHAUi#zZQ2ykBn){ysG zPy4b5@vGKmcyra-@penlp=cEyB-N%T66f%Pl6VsPS(`cSc;Pw$2xUWoPN7Z8Fy7dI z@I>O^S?|Ji;>20YUdjjTm2ffFx(_u_kd}g9VnUCaM$UPsBw7&o(mcvvMparAXx1Kc zTI3LNI;eEzw~1d5c)1ehjEVPo_heN(t5~BTnV=d2yQGHxXy1WDKD3JHS2Q<>Q_bE# zMo*!rdyU5NwU201_lD7ML8PRl-ufZ<2jR~4>@t~krceP_P~TRRDkJgOlh=p`QCLTQ z!(@Xts7~|AAmQwnB`P#6ny=xvj`cfLp)Iit8) zYml<{dRJKI`NpnDizF&-%a{&BAy@6`B&;F!tSwb;*Hzch zJ1mclu~$4)N@FDIpuu|jN%gF?zp0TZEh&t63hhG;`(_4x#R zRBvyIv#zLR63%GFNSGfa00RT{ic78yp7A zfOx?yKU@S9Dq>NmA?C;cvEfr;-aLQ-NWiFv(V;aBfwZIj0hdCqb-a{cxL370{^2a$~Ndh z&0=b-$9pyk&RCjNh|c;W3AI5y9b}yG{D&wq;r0=)0)RY(s`k-}`8zdKNxyQeZIw;x zm|aL{(#Aa9SJtcPd5nF5q2e^r;PNXw4_AEke=!Vm!x+$;1T!P_lM@&0@!FSnyfQ&U zg}T=Bdb@%m<6Kt22K}83SD^4}5kvvX3tAyEk$NKs?#rZF1YIH{E{7M-0 zjZ2QB#xB1$(pr+gd_(g*tu%kE1{!eL9}>^oYs>-Hz)l55wRa> z^Z1TWIWJaaukb7xY|r>2^_i;MZ5b7{*^xCE*!5b=kt_B8CeIHmw^}72y8jm0}p- z@F3*2kUI-|vCzM1a}uILtPG_{(e$`fWgGwk7mRy$N?|?<{K03}X1Pt^pK$L|CGbb~ zz3sf@1a`|}sAXbpArb<1l*&Z;uur}6dMZ>y7U*t_o$etfbcK0I6KWVvId z5F3CUZ8_yM?$od#e*dV-pTs`qWA}g#yC`@mD#KZu2ms9fIU`B_U%ebNDYd4eZ{6Y3 ze_D`rewz?JHGbOV@}?*(LHljpCvSjFOtYutDpJ>Dl7oDGz^F=#Gj!EOOmHXlH^Y61 zyoVc>@cI9uUQLn{Q{Y@aQvKeG(1A6sUcI>@n7&>!FK5VQIW|>xxW{823q)9&8Rr}N zUik<+uVdA0vf5$vn?mcmM!d+^jfNU4_9;yy^CoXk6MSxCB`q9uqeg*n*JM1aM@y+B z&~T7az{KNI=A6fI`%`wre%&psUVSb?R4;aMO_;zD%yO&BOsz#*kSAilKRTfBx!}c* z4SZ!2<`!B_V5H7Rn?=pniC<^EcJ+jI}tx^h=PklEYAJG_6=B-)W>-7A>bTZDli zJFmcPbIb9DIPbry0bc&HF%+%OKkuEUQ_gxBMzK|ILw5cIUmuKqKQCb82;Fg+oaJt% zwhXH373Ke@AJ7tASx3ZFms*{8x?KOz4j+Y5%5LhfeuKT}KopfzHVVF6;dT^EI7!ST zY*A`n^-OH`*aanFI|KZ{eLBgNGjeu>)IxZ5B^}<|$Lzv}SN{G66Rly~-R*c^*t7lE znzO-}Dl{cn;{ahabZ7*Q#{;WID}z-0<-(T^~uzDHFBH}99zNXOv(Lk zy^`0`1f!9*0)6;}GH0Xf3nDTA&6tM6P5eTZLgB?W3Pr3Vi-12u*3Eu^lLxCdwNB4M z>77R60|)b1rN;Lh#8ki70DH|S(|`>dDdFsROZ|arTmiX*gm;%;xfww)+Hxb0Q^W5M zB>tv|wyo~p3cPr=p{e}K26H8;4u$>=NJ4&ref$H?8ar4bmb(>M^*{|nAogECLg$CB z!(t5r1J0)JAsFmL4!Fo{-vU>_P)mR_`)s-ow2T(x=OOjyyYMm_$7hTgIYW|eUzmtU z9{ z^~K_oP#?`6Gc*u$Xh6l`D=)zF0IxlPEOVe5;~y%c3_iXV3F`4ltcnE5bl8`j#F?1# z2gxDM`$dHJ_s7fC>^j{pE)FOa0fO(Z-$xP0!%>N~peq$tJ>y;|O2#4?3mQb6(Fx+h zXUo6d;(pyn-lL!W(yH5jBzV$XJG!6>N&UAX>}jQgA&mPjQ&YTL6qj#Ff8p?tMWPDJb|gz zM%b(o#6AzPf(?4Rjm=K9mk8dt_?PAcl1U>^a|^vLqjvkCi~&JhWhM{;ag=Z_K)uMt z+`WOSh)6~3MNc1u1)2=${s|(KD*FSR#wz#Cd&EWU)M(}bMXZF(=2QB|F1_M7E=Gz$ z84o>nTa7C)5!RPEX3rQQ!djTX zPO*8MPw@ut1v^gNR;PR1#~#ghK-b}+_xkwu57E8P0TIxv{4*c;EEjaLGP;T*r&gj- z85#f-Np;K2p<5G!DzuLCqVv?zl>Qg5@?{T!TR~T?X7LJJ;^-&%Mm*Y^gR&)g=Lh$` zElCiICH#iTUxc{-^_Iv$M-{>Z;d{C(QzY+$7lm^#kb4SXi#f}NC}wG?R4*uyX;%?K zQz$TSR;ZCQk@++&vw>#~Lv9SoSp9g(eZ#QC^}da*NvWu#ZK!f9 zp7e&wB+G*IkH6@~^C;Gia(p}!(0*|mlD@;Hj%Kgma-<*C$rec9hg>$Ls0owEG&n_~ zJ>RdFg*CivQ?eB2De(oK)!5C|4iUEvneO!sz~gnA4F=InzdXRv@)_LJK{?f(FPIva zzhUwqOo6Hr;|*d}pA(2_V?fQuWD&VG!n})XMZj5agE)zVbsnT)+hkZ!pp1G-_nhoz zVwVQzB3yQ{LO>w;c>&rI|7E_9$#ke2{nugBA0jwYDVy?kP+!XK8(R7xmneqhVzU_1_yv_1pVO{15zn09Qq4In>h!B_9RlgJ)6<+D1rjpr-F=0~9P_YcZU-AD9AfX-D z8_-7@bU#Fadz@WWcR)@TfkjpdJxW57hAyx2C7gyc>u0R#oedaNqd6i4 zQNd0oetk9v{_e~me>2K1nIBTmIl=mIM<;27F45iLu3_+n9rB>CSiBmN(HF|!AQ34h zpAeHzHdW|SJ%yTefSz6o2Cl3d9%fd#ZO5iaG)-R`2-X2tJaN=oS$h7(Qizg(bp_(> zEu#|lr#aXW5rput-c1pIhVqyzQ-Kqu0JoFG?(RZTHB5S(on8#N)gRZ1VnQx!DCNBeC9OXFcP z?)DMeKCvwaPSP_3@23pOP4u$bMasy|gbkv$pGq3*-RftPGPn}mM5)uHN7Q zT2u9Gt0lapGl17nv$EHr;{?Wor!qYhLpOnLP5t@X3_>a$)T6t&I}h5;nlEi?hu|P~ zRzpsuLMAad7&Q`MwdLQj#k<{qEYT^_;{P?*>pgPSdt$SMc5P#+J6$!mjLtr(qT#WB z=tyoH=pZ@12mr>I>$~DGmOXP_*0g(kU?t>GJV9KTRqCjGG{BVRt?=&{b9{GbEA^CIXFE*_Pju{EDcA1 z>jEa_SL#{xs+f&1(_m-6he^-Sm88^sJSXaC{;EEvj76#@+}1 zDg{>@-r9RW7Y*OVYOyaZl6TZTUUSSa<}j~GwIcT>i~kQ#7h1H>wI`$ zTp~T0Yb#PIq#V1!Z*DKOy0~Noi=C4)z+1w+AUL*gUZ?$Qc#E@ElH`g+^l}QtK{gLG zFpQVQz&u0{C!TT>HOqM!R3WeF6syO@(k{HT*L5$6N5FPaeMSB#57@nJo(>k3cF`$Wq4#z82PbS^fe}$)I_pVtk5TM+#me^KN@_!OAJ0v9VkG=-tAsm6RH1y>4EwtWtx)e9L z7k!rt*+HX0E|~tZ97;@T*mfxy0D(Vz968oUrii>bhUD>;V*fvbsWU}{n_{;vSp2+e zvFLLV+c+R{JA_6W%e7t<@)*}K>tS>%!*_GaY6yJ$b$O&lALV-JCS*GN2?u|=V47)B zmxdVw$8spN`G)p=-v7(l2(0UxLv6IC3lwS`np&VVQkxVsM)J^KHQn7*kFa&~e!w6D z6I(cP$|#|az@{$V8R*bzt7$~cH~<(^)}fH|r^kyr@Av}v4pmepUhoA=!nL^nNa71K zStN6M1bf>MdA$}7=CuYdrqeIKa*HC#5XTnoR);oDg%u0xfG~all)dJ?I`-BQ_d~6D zi+)u@?CyC=CdDd}%3%p?`Q@tmoDC8P29T@M$2sj7c(7;6QH2iSxWC@G=@r~ixdTd8 zDcc1h6$jSw=(zj~l4dsCX-kiPOnOoFrOZQ}o>5L&Le0?0p|@Q+9CQP`ivE)vv95NN zkSk!HTN#-VP{~GCR&Ma_1Q_fsp>e-lb=FmWvdi@&T01VC&yIl;rUeLJ0$ZsU+eef7 z)^96v;pU!VpU(yGyR!LyoHpg?uRkp!hyF(&GjYp`m%!7HC-1M?6m${Vbfp~7jaQ~6 zu>R!W6gqn8gZ%Zw#l_a;Y`IMi?k0pZ7{nf5u|HWk1Cpm3WV>Boo9QB;4m^F$43(A4 zZAqF~KHUn^?&0kFJ!wCbKq^DD70oTqlkeMb&cXeC)9Jb@)>d#!Ko)zRxrq9Hoq*#> z^{XDZJe{ayLvW=jbuH))d29TBUn)G*f~&RDu1gk=KwjMNrc?pFK*(Ug}RYS7$nom!^5RpH)Azrb4xf(Xh;~zUBDi{NIAZhQL z>gdvA<>CS1xb&4Hdz(u0QIjM>7z(+ZapD-$YEdKVcu_4gyad;c^ZohX<;zKNFJjtN z?;)@s@-HbB7+Vc%#~`-KU#Un|TzI*JVVqyZQ_)MWk`Pl9%~XH&k*lPFU-Pj zB3&$@D5hrd%Mhrgrt8^5YezWC3mBHE(>VTLpUp)To!1f$_3-fyPTN8b{00uh9sT+~ zFoxvpqKTcQXej-6n{F4rwFPr>uZK?aWjl4vK5_7#XqJA8caOgmJG{DMWtKrKL8zEt z=)dXO*k>`&!`7Snk`sE%2s4ADFlIw$&gxP^8$u5tzCnZ0#SO$%0L)0?;&fnc(iBkS zo+KbWGM31#i>14vgr9vN4Mc~jy+D3QHsy_B%ux`|+zd_pgB#nMy46KaNZbsrdAT>>d{?4g`QN@2!gDsXfG zT%1oRpS*aW4Y!$wA_A8MP(vLXWe%0Z%LeqPM!8#fXGJE}jY!aVlvGQr^Y#38f7W8W z-SkgV`)$IbH)V%`T7DOFP_p$Ybm+dZ}gTz5YfTX0S{f)dWH(xA5H zpd(_9M{+izx+;(iAdR?gR|Ib3V}XPQ9)z@4p$C~c+OW)6IWK_0}Ku& zm)pl!SCh(*qs|)0344FNwu|tPHaSX3Nxd6H45`H!`seO2@5tgt1=AJqP8@Z2hjvZ6 z$oB4gIsL9K)PQzw=6;JE|B?3d>T1v$w(Ty3U=&la#4CcfjJ{jkriJls8K@*G zl>VrEWb2yj+1SvVoV3xfE|*6%`ie_sTAO5gGve2`3r39GzStxDhUw0xC47jVkPh)-h09Eu~uNpGBK$Ko1$o)lZ6CzRNs(#WA*#Dc+5A`%J z0tY43HDj(!M~GOz{=t36YFmo*1n)H(G0nwYoYX{dAuP#+`7?>-nCVGns_}ex3bYf@k*KD#i?zLP&hAG@;F4T&Bll z$Od^g83l(e4MY9#RFfh?S2Y%gy95B#Jr?IQzkA+&J-U>E#EYj&svVx0 znxY|&I3FNGyRTpSW_-a;HFX4}WX#y$QVM*`^Zy_?y7YN!8w^!-a1F`W{_fVSF=lU_ zsL1ESmI4$3N9FC`hXipDloe_SeO1-5-W&g*J3<+qDVbC^PigLASXCQdxuICM2(kib zKtQwM0qCg8&(6nEi$vh zP4Q5}0PRRufAg$34CejKT~XR7to?Uma^D1FpmQwYehng%YG>sR`KiPahLa*!Ax^h_ zfuyByjYZcJ1PwAO*jDkz%jhipNPwbJ#H(!hMm&bW22_0kP4QS+IIh(CKFA4u}z{~kOsl%K*> zi|Xv%trT-w=VL_f`@?=V>XQiP8boWaWy=ph>qgso%nJo4){3VR-idmDO^|K6oX(VEwl)31 z(+F%hl4u_)Hn~VQOq3>|n&~BCLQ$3s640h>jyTlPE7i2pyghUvEqM5~?GJ)yr8%M9 z6`%@`%k2xcyH#RY>qvqzg>fmoHsB2yh$8J?```>W;L9O`eW8i^lPql|z2VW9S}kf3 zHfL;leG~6hIdi-12793Uh0%GjQ(OxXW7ozE>`F?zmDS5UD4A1|0OHEGv1m;z#hXXh z^J`LoHo*XIOeV1AX#sg5dtVs~V}GO}XPBo$Gc;xA>5d-3#Y}Sl|FzYED8TQx*4!TW zagJ>-74+J%G7&1l563pKEi8I&6oHc;v~=AH3*jPAp(fpXnEyfU^0Y7;(2T9KT~-PyGqts@!x|3 z1D!Q+oMzj|P}!ed+1<$KmKR}crd1d;T$E+dlnDp%EYNR}6lz{r!VnI#%1&P)?w3`f zUyyIFzRbAb8JWTn@t!+?Gu*}m#5cd)SWvR))9d55c$(usv?f(f8b99|_|O3Z9Iw43 z`%@2I#N@Ss!QCL?<8no5*rG+VxY+zTO_jTkA%IesXyOv-J~84)y#!h`!7HXELdKL{ z{DEr$!`^OMW3of0^C- z#nK%P!?JtPS4M-0$!C~?d$34x1$0k6BI*(xpJO14sEk^=@9TDA)&rW;WZ zsT40cUt;FLGLtMrqY@>WXwF*XqQuPDv=UC8bnt_TSCKWC(3T3X>|}~^V7}! zFo><#h){K>$#KcIM>(Ab%&lfnD)G?M7^ab>6KeeG@PAfY z|Lqv-th;6YeDqF)OI!o96OnwBXj)#Jl)v1MoI_Dpd?g8#X8bzeBE`^t2ZeeLn-#C-XsPMFGKDB;mMa7t>zb22ISEF^6m6feqEBd_qs ziT49H)-)l*H-(0)jymyb-NZdDD>Yhjq{vHV;tM~JimP}#&Dl{`X0<0#{NjVPGH(9K z`Gq&E6fp;Y2Du6_M4zjxq$2n+om_YTlkNpNC4Fl)(gs(Au;~*)!S|dno}aMLhn6TU zS!9$aKYuWl;nlHI!bBfw!}Wd$a*UawP_sW!uXU=HIxjry*~LM9Le;S{zeiXLk=D9F zC1u7%jmbQbwlY>Ac!mxFZ_la#M>NG6kPn`7YKj-2k#OWIgtVi;LSe}Dbt zM3tX)XzFM)?Pq1i$kc_M-nna5r+R3w+-2xqP1XRed@refJfCh%y__8uF4RB`w4|QO zw9@5#PL`J-HIbXV60o0a0e&;AYS&ka)f}XWo;2?I$tvD)Hx^W03V1~Lrf=M?L+OK_ zzSMHJ9#7v5`Ui*JC)VG%uDC;#Cdk@qe*k>P3+|f#_fsFSJDZ3viRXk1x{3;1L7{)D z&4OKyJI@jbLmga6jajM?~80wgY&Cq?@aTNbt6u<x#wP8{e0>50*;qW~9Gb(1g(u7~rB7^Z_?eMw^3HnKe zfN3>j5mhDP)E;FZT+a>giT2x>?K7gqrXq)Vl-Kd|5+^@OvT%`gnjj$AuE1B}c=Oo) zI{Cd}j~9bCXOuG@uA=3MNU%!3z8yruYin4U6z6h@Vi=h2dwzK@(#m6(g>y?NsK3fW zWSV41WwvjEY%jdcxzX8G!+xQ`qM&&qe2#isako3=glcT}AgklRH7M>1`b*yC8o zPBH4g>N=tX-kI!yCYfy94oZo8@tDATgYi^B;@|_tx(X{wr*<4qyY&OPx(C6coS(pH zslK14V9l%QFrjDjq^SMV9Z^ZIHh)F*f0bN1Kk9ElZ4$RT_gNr+WYmNirxBQY65f|3 zPLP|^(6OJ;Pc%G4#v8pBVE9cMC$B@k-^3bPzsD2?sTxoSMeIJ75B7egag%P+W4UBs)QC%(wlmmpc9TM((Zz_3#v zU)bi}D6M6Z=vvnED|Hd?p`?zASwl;cOQ!!WQap(|W26Bt=Loy{)6YU&udBiOh)TZ% zXPC*kfw?84AyZWBOX){>ABlrs=9sNZP+UJkqr!5!(x7V|;to%`6dz1CZa|k;C2-ZL zBs*LTsjCOND$h;Wbbr8`paUR>$_?aL%jpY?f16Ujka?#~seV69E|I z3ypBS!t;TF=&W4BTcK_=gI>wdA$?a$Jvh1SUCa>vkh0$8bnR9NTTfbwcqCHC;$;L> zd;ldmM_;(clr`$^RFaK9SrQ_jQ{i7E36>O4OwS5qJW#K$w2d}J?SEi|@$DiJ>Af=y z)pf2Pu&b_6fF;`>%XP>ZUphTV(Y9=8$udF0o?K=6%kk+1n&oCDSADNWgp|OD#qGUN zOGnAx4uWKwkAseH&s&}0H#9eB(?Fu?T=+MoDFR@01PB*3k?C7F3yz2b1QiDZrBJk2 zVd#{@3QaLdKX?B5#iZRN465S&Xr<$~?I+8F z;DpZAQk7xge0QwNJiDZfZ$ApE9+RSJ^`3#QfdO;3BJlqv{z_rDEnF!Bx{8ALZMfWo)n0jX8Pcy(@(|Zl>~H*BbBr3n^(fYY3qv-mo$B z9+4TSM&jnfo$_iu+Kd!g|5#^=e+PP7h_km`FB*>fr@t`}H;-bhQS?uZ$K{%|$oG#bsC z+6K&1kxwO}Vy0KysY8r-j2iM6?iv`@E_zp>5PZ|Wt;Ma*+d*pdN4=*nB!VM?Zh{o% z03Hh2$5;`FuHxAk)3O@gD>3NxSr!d?DMerN*DNs;9E86Fxv=gsT~89sE7C1a+#C zZm1ZysAG#$zM(!vylgt?=&Lyex}QZbdsK#82%BZdzg#m%>JacTGu!WYeLJpy! zXxl3a*1nZgQft9?S5EuR$sMop8$?L`ayi+#)?Vlg=|LxBG-JQCmnuT+htVITy#-ht z-Lft`xVr>*cY?bIcMTTY2`+)bo#5_);O_1k+%qvrnnnu6C$q>CCW zoI1elWATiNosg!lvXsJFl9EbWr|;o+m7AreNX<;!B)98N^_`W_v70LE84T2;78xc* zu~OvcUFrxZ6-6Xu!{0O&s+Iu)WR=-FBuQW8zXqtCH%%c=6+X4RkHc^qIZoT@#!!+b zmSn!qU&t*LzY0aV(Iq%@HR!Tf~XPTzb^)#)i*(I&BhUOB=4YSgrA7`oRv^6gMcJ1Au4oNF!0@zQM88VLxSO zP*R#Rkoue7ClsI5iJDCxe+%N>(Q+JG7>E$GeNJEZ$I|vJf)m z4Wd7Hxny^nuf~0vx~4X1kOfuyX6nvGTSP=#xD}TF*Ppk5Aamj#(5@>^hwW;?h#;`d4KwJd zxwK9c)2swjxXlq-;5-Hm^P3>lr91?aD--jWidM*s_x%g=x7c@TIAvkWkg+f`SuX}r z*iiXuOY~8aTmH`V=tcZA=z`$_&;e@NJP8~g!R=gN$6g&zSdA+#TF9kR2CYfCP- z!EYL&JuZ7EOPq4vI4sv_DjLeGINO7%XU;Ok$%}SgvG@v8P4qi>x_lX@QwT3hb&1mB zjD#F$>Lgqm8SfsHF;owlWvs`h4^CS`@HA&1bs7TYVnQFZW;DYl8WlZ03YYQzA{w@~ zQNOTRDZpQ+iNu>eAF3i-m#%L7DvPU zdd)=8fR7@eSRhRF3;u{#YQdUewhJ+0ZxLVk#CIqk?v~C7kvVmyFXO@UIqsS)Bc zh+#Jw@gT$?6{FeKe>FD(wrKIrpz^>?zUUxfdNgn)U zSbCd$jD$y}?QPSk35T=%75*VO4zWi^0oaPyO++X1OE|CBtgLjle&VZyGQIb#3kky( z{K~crpV;^HD?6NZdUSj^L%#Lk52N8HCYbO|wwZOKjv68u4a!v+JhHQBPM#|RFrV_3 z>&wT}>@Kl8U!}rW9l)PV&d;Asn8shc>yU@;YE?YzfPrf?O$6bRy5#4uvaKWKe3D=f2K=wY2QEN+)E0&TLk1?7&Z=Q_2 z--Do@R|KU7(2{BaWoPuHE=(=_m0^adS8FrE)h>#(7bYytCe6H9gi*j}krJ0MdvYZw z6>RS344hL=WGreXG#6nBB>^If=OyUI0W7jc<#ed**KB-%S&|ZZmY&BRg;LYy8MDyH zg9M(d;Llq>kOZf{`%7Rhi@>btSM2Vjkyu5Mk?*Q~*DdEzPo~gHkI;2z=~yv%*Wo|* zypf29SNe?$gMS+rpLtp=L8Je4t$JA9L(*+Z+x69=j_H?KFmMgo<`mKj<% z(DcZk{bW{xFqoj^IyE|mrtun9!gbsExJe^L#5omzAiRV+Xc56`Rf;R~yW|sX5pl*A zi0Yp8X&SVAZOzeDdU_9IB(!gK2|-QfthalLFkFzEX{^|YVKSc{_3nxF(Fi*05Jc5j zI0AJ@?>Tc2JDio|ivCprI^?D_q?34&=EEn%k^6yUaQ9UiT^$pk7_C0hu(&uqLM_7) zoS&pKzd-OS?FWZvd3feCIwRBX$1iFyzCi&W>X?-AogY*)kvpsdV_J+j&%fsc69&W~ z=GHZ|_3TB!fgH0WsywP~ZJ+`xkbXRpAgj`Uu;%auJwr~>T*Uy&Bnr6g3*t0zNK4d6 zb${FUAT4wbR&5hK$_Leyrh{z7e|~MSQQOP@baK2rZ6r?KE+-xrm#cTXdYLC-+x_uZ6>Lv2^3{jUFDIY8r#|fznc<*TIF1W# zq!2Vx(t9nOaL+eLTo-K~BR7w6E~53E$Y?mm3TaX`W`ruRVE%M^uW# zAdY~{C0a{I>vPx{NlzVfcbSJ77;TX&zt3hDvyv@=K6xRA<$|2md-2&<;pjs9B3Dm& zrr}wJ1wqWA8TtV-fVjAUIw#Lr|0K;4@uyFM>cdd~-MUO8epbYsv&BB0ChE>w(C*2Sy_eKr_N&O)e^O zYP$Cj(WM&FeYcR!erDT4@;<%d?&WRQ(O-)ga|)>oy`A|*jfyXB0hqEMwZ%!K3PMNn zM@Tl-E7)QX%O1%=TOEcFKc&-)0_kX}|{V z1@a`2LJPZM-|2)X7F4lNpO_rL4Q3YD1yVOetW^JG`2`j4tBB|l`>FIy=#!xW-{EZF zYZ97EQ;tt@Y&av=1V2$=&Fvo`67^^Txi9KFo|?kR>_uF;gPmhdbNQ4yYc( z#dQ=}CN$M#)qMB`ef|x_UzEM9&`(=*BjgscO zY@lGKN70rhT}(#QYWs^L8LT)*WES0ZU+ZClGM)>Yo6eri#^~!GbbTB3ZKQbj!9Epj zWA_vwe~_Qlr%2so_77LO;?*Q^c*wu|b7LJ2`{ay6@Dx4i*+PSV&1DP*e3Sgj)|98l zk)cVJYVZ0r2TdbearxxC9p`{o0-P4XSa>hrQ&p>FLm5`S6~Ejo-X-V`I-)#%WlWrz zpm2z=oFqyQBLiAxIrq0t&RYa#*K`{SM}?){qA& zBRBoz_d6F%ESJKklP&XfCQLzIzp?nbWmYk+IB5TDuJfYs%J!35LOH#to;kDffHHGPk204Se>`pON2A5`o&KEb)~L*Y=i~G1px7m#QVGGe zN{@q@Od)TjX24wYT>nBk#(IVolKOK`gPn#e0_rnCrnm>%uo+b#dOMR@$?4`UJ=#Jz zK9+GrJwxxR525Szr_o#?`Bl{yDe!-u)+31c$s`B7mSxc7`q68B3d@@%rQ7-4fOzg3 z)j~wul^bFwpZ(b8o(H5AJPn1LGI<~;mW$~d5sO?evKG3~CTjWh-(lN~K{Vv=agXuq z8X`b;jIAoQJ2Frx`0Q76eU4|f>aV=xXBMT+N9X#+2`zFWymJ7)OvtX#L9&Aw^|tNB zEpT(k9re43tchO12lnxgFLHL!V;Rjw)sTgs_B*QzmPB4%0h7Q)SVMHi? z8kwD8+;VH6beYQPYzP!_VaDIRgG2DaXr?ntKVjhBMGjINuaV9s0Pb&!j;jYLZVK^_ z1W}k{B^j>Gz06;H-3JV?h4^|e`O{*Z+sCE-SOIg8Rd!H0pBxubcMMk4_{fyF$KGFc zwreITS1onWmZA?3q>Cihb6U<-&Udw7-ziN=NVyFG@k%DgB#dQ%}EXpIdQ$X zR!p*gG*F7Oe(Q1l8Kba2VWz%lq>e|HQJ1y4H=QvqORU?}Ja^!Y>}ju^~s zebidIyhstU!A{*#PrShiYp5%9GhR3MuuDVxGgQaP1GQ-y^81vX`l-iYJ`xo}pR7+& z5;Xlh(_mKFjM}{#388#zKh>iCve}bxB1?&&Us`clj715|82`A2cf^ zJ|u>vB;B=fzObm&L8}ckb;N3F7dlc&QHOaHz!H}Q<}}0+I4Ce|sPI!IMH`SAgmKX# z!x9LbeQBeZ+FM^e9RYg}E@>=L&X4kB@vOd5SnK=*vJF2XYE7 zA8vEU-}nB|1lQ6p+iE-!HiRgno$?X#hI?olkwxVjR;@Cub10c*fR~VIufZ#+TbyVr zF>Q?`rn5)vs7K=-W6*6g(F4?)3=Mwi1UtV86^%XqVC%Uzf+N8w-i?=ZWwKnVJat6> zvTbiun~CA@DAfV>K1E_VA#7jq9`XD1I+gHouWBPIl=w}iUZX4SvU$T!717gucUat$ zzPPZt4r>U3yZOwAObPC3+t$U;(aUXY9BKldZJoDMD_m?rJYQP7Bo-@Db|kN3CmG42 z{*-5>_Y7W%;VkF3Ld*Ot{e!JXF`uwNGHcAZF?RKNhLjcga_!GhtMIG@2_RC4xnjO! z*nTi1OA)E7!eQ{o5ncQ<=2zkG645_~EIpX{L?-X83l#A`pgAPost-D->}kl#_?_2l zE~uNJ9%!P5x;fMFj8{ckVbfWiFn#`^k*RPU# z$ADc?&~C172L|%&&!4q^q;_&9^z-V@Ex(w`V3Z0ZlUrRef(^Mbx9L@dpV41pl&!OE z^hHsCY`=d8V|D32WmnVhAovp8h<6bNTg_WJ!1ja6h(0Ljaa*^&tIhn4-3tn}ADR4p z@Sa-jnI9rvCtaoo%Oi@VRja^lhRBeOA%AGPw70S^EnpREm;GC8Dr?+3a|VS4*PRzF zKlv@t4+3WR7bxU{hXLlWPd?wtb%^~kUWa$?>5W_#=<83>-LG5hthRjVsp6t}8mcY7 zeB0U`z|O9eYE`Z(#+H6k={Srgi0CCJ59wmnW|2H8s7t%hmrOisiF!5hMqGX}%}LZq zBVKR(EEd!Mn}6UbxFV-1#pySe?Pz@*qW<*{bw38l^hn;PV4G%GQ9hLtv_T}AKD1l} zZj1>XMlwm>wB379W*&;`r$zvP&QX8`w^~np%d7Yhy;?Zg&vDw9}``r<89L@o!z}`V+ zsOyPF8K2>wDyk2yVAf*xzPddwE(RVgSY!T20JUU9Fi6F9M}U%F1vMtcSr_nWak0_s zMx?nCWs&O0+^Tfea_Sq-3_S9Dh*0LUIl(hT4c3ngwRno^Qx?Gj?dNL+1`Rf}vMPAl zQoEM;qNVV{0q&t$ru!BX>%ICjstJr!a`*`}@!{51 z$32{seSv}_CamQ4*+H!{UNSB-_@bi~Levb&Bgs)#O@zuORX)u+p~fJa@Y@yhM(Q(? z(=NS-awk>o%%IhXD~q*Qgz#ERQ4+FcKajSF*Zq7YDwTEk3NN==6Nl_54o-}hRcVFM zsdh))crU!jDNjt5O^`piBpaqs+=%X#MvTej^{018(KE2OlM7IGB~$DNPepukSC>uf zM2Wn;x=j77PkX7+ko*INEZQ0n0fy{kfDKbWIib&2chHGN4Uh`0(B=@dQ&xq)%Vr79u9HnH=6VD+K#<$vJX(g;wBf^zE#3c)wK-- zlEd7?u&%#8_r%$=ki)p?55gWxU`B%Un)PdXaixfhG(_8M9F^m~Uvu)W9;5Oz8+?m3 z9QpS3U0>iP52jddQrnj3QgTQx)q*Xvh>q=twpH@Hh{}%kG>u;htnRB>y_=$LW%iH1 z2B*`*+-P`hJKeetTKuImHP^PHEKmtmB7?-SCOSndCVgpWF&EB^`lu{MIUHpH=N>j^ zc}5+tHpbm8yAR^Aw7EN?Ls!+jw2l!V9hAZCj1kX6`ilZKgC^$cbvc=SrSs>?lB|av zM?=ijr`6hdmsgH$4wJ z9_`)5(@4%ewhDN}F_g;xykkp_Nah|AIyq61hxvrHV-~*deDJ6x+qj5hUuZ^zY}QBf zAmmU|By2wtUA#cf`-3eOe+DC33TT{N%<T(Jq>*Kk0ejwf*qQvC)oGgDLauXdu2wCu<8Ra zXjzh#14y_VtA?`({OR0J-XMP^X0y`|1DrHhAn8r)C-W z#)pU3xSoc5YE&M-JYOY5nVbFMLlEOqrRS;Un>7sY6R@y*nkW-_`&02^v)f#_D6vv1 zqlPrp9Q*tbAn1)n68$gD{oQ93ay2+*wdyPl6rDRbrbsrBa;xqD3_2ZqDj0|`1hy}2 z!Q6G=FCMrH&4(&%f1tB?A2A=KFHnwy-BXAxXcj`t9E53AGESaPyE7+s+$wFsrNvPe z9!Zq+0GvuSw1)0lxaW5=dsLN(T0TS|LB2MXHX==W4qCQ(CSiF`zod91#E4s|2z49< z69SVSFLhL8N+1XUv24nM*z}-wkSk5+v&CVb+Uv8>rS_A6Vb$|jlXE|Z$t5#DOmODb za}T{;>R~pY`1|pY7f6qAFdWi|Kg_7!lP@1(u)~1*Ty0x3`$QP#c1W5gY)btB4kNa* zp2>S4`K8C$?MNHp5Ai2wXf3sI&sm4tX9PZFNU@B8MxbiOV$S3B?vFs=ktA^9Bz7rvQU=p@!p zi680+my1W*f~cR~$;*|cj6@3BZ}3crbwv$GHLKfCMVb+2jI^{wmV_(*Rc?pO#XcrM z$D|g2im<~4cZUEzSAz4zb$YzC9C-9)%tI;3415_>Xj?d;b9Xg?p0OUH$tOC5YtK*O zi&x2p*Js)=As{S2o{3bS$X_iz?A&p9QXl$6^4>=&TCSh;a>P;M$pK;p!;dS*qLT~D zKC1fba2mslbUO66nj^sr>R@lpaM{Qb^PO!1`#i$X-gR63!Byt7LU?)n@xe(vgYZ#I z1{W$em(R_&|GJjk`Ngt2gu<%&`;Z0VrKv&K_QWJ%bCuW(l85kj%VX2E1m$5={uV7) z2k@i#$_X@o1m_`)%Hq$mdK2~zawAJ-vb$Qox_6~~VkX$>`PBTOtN8?DDaV;aLc(ZP_e9I2?9+VJkbaW{GcRQ9I0D%4TMA@n4uP zD^ce=*~71vlzzh{$UC^Z;r>vfykBa{r6m)j3bjn?Oxq5@9m1_LI|7Ec@Ytx^bve8& z#I-B*Hy<@KOy*y^^@uqns;$7p;J|lVicIO=&n;^+{V_1*fsy_b&$U$Q zr^{*y+2lj1yxE;*@BRTV&uVX@Hi|yv{oJ}V&(hMN=WT!rBAmeaQ!nM0^6;`DI^r=H zV@s%~sw)JkYzMg{z%IK_J6b?C+HbUTw4x_>E6kkMy8#-KKFXHjxYgd167}70LwuT+ z6&=_eK>Qs+W?5dNq@PSyI)I>&79X5@0Y?Xev|$D=KOZ%Ov9uRsAMpn7{1<>Z&S(Z9b^c9Y*YGfHrZQZx3a*WT(lnV{6?E8P z#J=P^FFA;YAM~c`BPx0N)FvOQT4Kb6WVKheZ*c@EI=+64&njt;Ldjx+cLCPXlALoP ze>}hO%j?SMwGr(9`Z*5$ylai}xnL*;ayI))RE_i%ayP!#Xg!|Zf)H+SYzj-ChpbRT zG6i6Ohx`#W!m+?N;W~)VpT;U7in}Fc1)pWK;&SM$)e4)&Mi@gSf5Pswfe#aUve+{y z^{A_Uvy(F8c3AK+arsr6K%G3xtfO~k-*@;dxEklXnPk7eW=dA-DeE$4cGqX{ok2dn z^oJO)RY72ne#$T7apGOoNlvwqDzSL|!-lfk1K)<2R22Pu$yYPYCh+dGPO3w5!F92e z{5H^HKPp(v3$ACCIm(L;Vm97A!P$4r<>NHRxl2S~yKQ3Yl~4qv;nSQ^fd$KuEzYq5 zy^JNLt)G|z)|Y!DLkWlUMaEMV5s{EE2C>3gp>|A>@|-?)jJ|=|d=uEcx#Bo4zIp$R zbO#&k_EO(hZ-cP{tLFsVh_#-X`E$Y1Z^Dt3rd%Bx0o67Pyn8+x4wXon&Ca~WM3!HYtaY{SfYgelJ_bR{F$7hV{u%N}eA6V;vUP z_snui6!dJaDOs;|tUHj!cR9q=3GPD*hx$c!J$X|N%y&2q$(xH_V(1FJuF zy~na?$!HyEXicy}ojb`6blSVfwu0^9;WSyD*7Mk&vOWO1z4rWtNSY++ogi+h zlfzi=lHz{Gs&iSnMBqfDGu>pdZR%Qu1@#|od-Xx6tJ<<$x2NbNYwG-K$L>ZO`txk{~+#RiM9NaoM>CBCod}Zu7<0T3i!VI<{rl%>jy3 zV;Ao||0=fcE%KSNrL253J?-}o!_MKX+1R`vy4}*wTWNV7oT+St7@BT4;LXzx#?T(b zupQvvb2cTU`L*{aW;=!PK}ck>G0kG^uHCLA$#hn!~M^mq4PYzgHnkHZSjE^(`Yu@hknugN_VTA2KyZxnw0BM$t(62K}x&4pg zAq;u4Lb5u>_xT&O7Rw8Hy&fX)i*>HV8iWD$42->)lTU?2CJduCX$PA~RM>l$@fQa} zu8wWK(f*vsp}WHETpsU*qC^v!p^>pGNxobLPyN94gq?R2>-1T~dZdY~V zFf)mT?{LTEb9dzbs!ww&(vw^Wdz^hnN>`e7x~S#P#|jGVjdw$X3&iF;``)bhnbFch z;SQzw)#2l${UmlzCGSRw6sHDGv64}hLLlvON0G@Prql?xy7g3 zbg;cDv#b`b3}$JzysmE;uOA2@xOMkCz<15Lx+YES>Drq=9_AN!b>jBphbqCWEBktN z$ySEb(UH2j^e$YK+_z+7LHA}y&|d%Wk?8)=g>fhT01abvoq;noRxt&qa+BNB_x-7g zrd@^^%e;Oy1Ec3$j-8Dmy&umsE|Z)(od8GPkq6!)l5A*`Q(EAAVv?m5;Ewc*&&yVF zFz07lk=wjXuJ+r;2WR-7gCNsKZ-j_!e8JyjFO&GNB*f#p1kV^^AW@1EB3f|y>!U?w+iaS7(zKnP1!1^L?nLO-*{{Ic zb($Yv+bBog9aN)jWE#%_!HeUpvXWxaqZv3O|=9q7p_$&C!v~H?AHjNsNhD5 zn7f<&D$ps44c5yR`zG}jpwUa_v=->$L^|%^BA{9mk|;fF55*a+TbK^CTTCa|#Q9e4 zaUBLbc7N-bXG?*Yn{StCxx36VU>+0A3J-mk9kmmDa}GhJtvZ9k6@MV=oeru0k-O!x z$e^isEmw@jICEavz68n7&_zC|oP*ZEnpreMwbJthe_zM-1ff`u zt2G16$kPw+fYQox40m?T(HBSZm{?zaib7h9J(s7DYb(&B+pS#WY+xEwGXZY{ba4!e zG`fnvF`MmF+jZV|v!p?OzYkXvrcSvU$)G>jLvM7h7vr<{rTL;im@{F^K*SsMIRMT- zR}0Fcy2*K|#^ZjS7(V|XFTvP88-Jf-jlHM?k=<~@o73&&kfrg`OEH?zbV1q1cv0sU z^g68su5!f>cRk{ZEf>48*!V~d{U1cUaR){{EHEZj zkG{;HXKox~rzS*ju9DR+7NG$c?^x`xez?Q~gfJT^-Hd8;kp z)I=FxXg@S3_Zn})v<_$=gjU4~n%{(fbe*~RLF}5blSLRn*w`YhFxn9ku>KAY*G8(P zB@8bfJHRIoq9KqnjEQJL$Id1I<^ak;u!@TyNz3_ugS{w^|55#YM}rK#sM1OLjvw$5 zaBvhsH^==;0FjdRU) zXGktLel=0HwUKJ)1_-+{DFruqS zQ`KA1pMqE>L;&adoLu2(j~>u5?>aAb`zw2JT)#}Ef0A2YP#6sQ={S$|eSkpU2^a10 zCrT7~{vOr=C86B z%B!|4Qg}NLX)z6;eJv9{Z~PvMwDX}I!^@ZBPDX>p%!=UCXOHX`?P1s@RK=`9sp-5A z3KEZ{agHlkiSF#bm+7D9sz)YPCd{gNhZmqo1~s%Udnm~`Fiy}>4kS;RSp7ZJ>@GwD z%o2|t);0-Fnv=5OK`Sw#^%69EJT$%8uwMkRRa?+`%f*D7UwI;gj@2fAFdqrqyMW%~ z6mxi9>O$!*^*TGtQmIitk)%u1vHl?*^j&%PU3|6f+d1z`eevVv?X?dRoT=}H5Y0?o zg)eZFC_K_FowLEkWV2MC;8EJ<9vAa`4mrT|sm@{367H*=pyg?^sd3kV*F-+y0dcfS zX5pv%-2ugjDjw&Mxz3|Cz+oq?OH<8AT;1VaX-0vwD`4a zI4`X4pK5ms1gP3r+%d96N2uPHWvC!hLctUFPvnHH<0&ZB|EhuU9-Bo*4)DfP&P$_Y z&d2*nq{ZnZ`7t(vl>$0IWRIwEJ?ezx!=-JzW=5^Rmx+8FruRo*h)9rG<3WMjbZrUx zD&rIyWsmH*H%n&OF@0|D9vsGqa&;`dc@FkZB`uqJ3naq&1cG5@DaC&=o-0Zhi2TBd zEA}oS=YDPUv#4<9z{$NWCZK~OET&%_#+-c-Neq#p9>KuXD*C`jKQAIN)%52w88me4 z6?k{3re9iBrs)?vFAea3t9X~WrZ(2CCcksE);87Q;azySeRI7_MO7)VH%AE@n+iiABt-G)Ep{!iJ&=!(wj7++C_-kD3< zYx&EzM-+@Taqlcs?oEk&HShi=T<g1X?zFGmLs#Q$WKayDnS}30>DE zG64k{&B7?PemD`6)hlBIn4&(^?kcZNuj5G@0}^DfwDzh|Z4Qk&7*JhhEw*1{?gJOD z5RCW7tPT4=Rx6poG`~aieGDh=Rr{j%$`4tl+9LBr8;5IE8bTf8JBl$R9yMjW?jva3 zct(-<=aWybfPJ7V0)I>=BHPp+3F?kfXnXV$w3|DZ#}bYYMF5gL{I0*f$M5XIBnNSS zjZ3CK0n2vg8d;_2U6XsT4d1p#xqhWv^qdhgrNFb4N6Qw)1*cvR&lxJBtWX=kQV^Hi z<#x_R{b90{*c9akU>TXJF`F8HKzqVIVWr+4AGS^(fqOFc!S&uJRg4KhVN1IzxW4?Q zdkcvv&rQZwC!euixuiuF0Z(pJ^(wcHlHRFLWIRv7xFfWI91^y=5c5vj-jMs`?ojFy zQ9|&pq%w>qseV4vst5c84POImdhxH}XVoTq{a(@1pWT$QnneO|7V=aboeyTqE~g*p z3+R02ThY@ADK~`?O$NlgzVg^u<{3f*Uk@I;*_0A{(W+AjC@Nz}&((h#oHqt6aOLI| zG{A0aKzeTzy-3Ni`PF&%*Po3h8o6Wi&WeU0F*UF)`R{VKE+B?If5geOK(|44#Q3(M z)KX2XPTd)rD`O;(X5QYSw~KMt&1q-0Z^fZvd^-`~BDbnLz9+~DbP-z^?5ihR1klhd zyB_Ilg`EMlBB9_f)LIfroavRix!oP1+XOkCg3)eN=ma8aYE?CAFj_LT%U87z3`=)RYqy@b0x=`!7 zI20-Ky?Z|Kf7(f<#IM#cPinxuQ6DkiHTKU}` z#{14!Njh|W8n4848$aB~QWrzPHPvhv8W$M*lcFH>;c+jkepTtm#SCMrU$;ZWIi}c5 zSVId$Mc*}tMf^l~yo6NE$^(+;pyval*?ITvFFqpuL&P!GAEAgt#vCOIq+I2fdl;kL z_+uR~c6#{EQ(=2ZqHMn~4(yL_=jz0ALY9>3eMrUN!13PteX7D8UzV7r-EP%o7N~;YG}OwWnk?OpM%)*0x}R*df{hrI zAabTcIENB+>Yd27Symt25-yfg0+|gPx}!Xcy-zz0MJF;C>?c^)a)gpz2s|=#_qWDD zM~0u=)VPOah4r&D7=4HIT)fJgt+Fl-lRrYMoPqsOV5+?M^Ps5rm5i-DJG(4n-cB&&w zmv?gBxxEA)5O5TBdj%!gn7;?aCjs=#VmOdw@=_V_yF~D-BGV{xdF3D3uqCtYFIR$g z?hza+VDw#LdXwl}Wk!?{n~d%lhlWv*u4T?Nj@-{iEQ=B14Qx7(gSqeS`d7)i(fT^| z``2sq=#IxmPPRpH2>l)HjFwBlUwqv_f=l?-ZucaE#CL5IZgwp$4Zb;GXQX$YsRnJ$ zpT^jzHfVQRuPg_;$^_bUco;a2h^QlH1D0b7+h&4HMxt1F=@|)se&eaInX`H{vJ388 z&spv5*u@9q$o85=Zh87Od=PQ&5^GOZvsOtpE~mT5N{SL`+x7`Dazf-Hs$Tl;@m~B5 zD4+i-7G=hMJ*uzm+sBhc$FnL7EH;;OS>Dx|J`!h*jsXOub-sDRqlq-E8|>9T0KHfR%@kb~rlfx8> zn97PRzIOwdC6<_H+$`dGRu5;V6c~HId)xO2?w|e^EPPL|IktRD+B~6D z-EVuATvT(+TqN8kJC`?^NL`|YsAM{7rG~JM=`?gP@+Vx00(Qxq5$S$XiOVa-dD~if z;{yCdG0B7Rh;fAHsrQwu+WHoxtcwY=a>?#4fcEM70Qb`ydYWIogNbo_%Uwc0@t5w~ zcZ5!0>x#m-yO3VO(9+OqcP&w)ZEJKdC{l#=ck;HVJGCm*D&mMf&CnwaR>lF5)|ke2!SUm<_~&^>jeP9p+TUy zZ2&xPF91EB9DvMg48Ybv+7{LTzzL^=b)=gDAkx4(-Y|f%hKSn2^{$^Z+(q1UPO!@I1eCfT$0n4x10X3LBp-2*gJZ0>v8xkii(? z!N&ojSpXs+0#p&75i~%P3|^3r9suFv3B@7~0NwZ{GGP1KWqR`Fg5?9i=NbV3eoS5!0$-b}a$05Vwwf&9X2ME$`W z`%waTwYJE(fdDX{u<(Ln*#NRPd0-hj5lmqIb46J+;YC^AWC3C1J%RguESi9_S07Qn zMZXXguuO;wupDI8Q~<1xjJhYU5!gO@052IPSoRhy*v2^U3lf_Q4jw>E4+{VSSR8?H zkk~-jeik2IIc(k$R6EgZKm(9qSVhDL0P?#9RGE6e;ae8f2EhwzzrdVnn1RP!ctJnp zEdUS}68p_Y;1&fo7%QGw23*aXt$$;Dvp3HY67YtRl^E>XAWBak(T|H{Nbmqn>lNR> z^do`&VXdR`hTjKKR0Yg8b`2aP;0?c68vsuR03fOb%K(?8-1z5mX(BE+Q zSO~E2T7rH24;)cozM(YyV1@l2OREI!l>3dlH|IYV$mJt5`@cqYs`W_(q=Jz*l z-+1*!3-Sblx%FlH>RAH^;r~}W0KoC7I_C-YF+48-00n#p<;lAYYbFDL#CyY|Y4kT9 z9hEm6Z|D6N4w(7>0Y}<@;OOv+tP%Yiht?4t=Npc<_|mY27X-^p`-{&b-G8$Y#`9mY zW&SI^!8UIFhin+t z;g^4lQCM(1!2dHYkp2-Dh*od0`Cpiz{(JvhfY%Zj!eEi?^{`c{30f7Aft{37>FFaT;Rm z!^=AYWdz<2>q8G!#On{P18=!8?BDS3{*52v`G3Rze~}w`!@&5#`SA@uZ!oBbH5i;{ zGAO|~A?U!{D8L9*M-6|tS3YYH$cO*{=>z8YFJJ5Guxa>%Yl|$r;F}FTWHKteBQS>G z7%>Ca3gIfd5N1=m>wFgMGvl7e8_ZyXtci39f&V6N~)wGaM{E70Fu0jB>`$Nym+ z!G2qh0tf%#%1@WlQzIB&5R5IH2aHiH5Fq21F)S+334jE1qyLu21UkWXgYy`>4+!ML zc!d6UJ_BM8qXPjD;1^)phY`Rh8VH(y>o3Hz?kfZV01((TFkgUwt>d?zKr9D92j&&| zZ5uoi{neY$fqOqJBNgyIKpeOuee0RPy@XjSxDVqc2N(h2p^E(T0LcE}9?riIe2g4i z&kOmn!E@kw3qhd2-h<~D9RNtd^~??kM+dHJA{D#`05Wh7cmV`JS114=n3VhhWMG}O z_V&h(WERHOcIIX*hyX+YmF#B=2YxaQD{B`r3-Det@aSl4YHMyr=3(t>MdoT{PNu1% zLuT%2ZtCW0YyzI~*I{QeD_2)XepXgDM^6?P3zpC3u4Ghi;>`H}n$OAdo|8<%!SRc; zwWXCS8Jz?@89N^zH}iWo@czGrYM2|_vyh3|*^#Ne&2k}AGj}m}b_YXylLY|xcc{Q{ z$RaQ|kZ-Xg3GUp%+kW6}h_`LuVaOtXQqY5d2fGBWJ9OYMd?CGBZ=F%O2uH+9*p1A&(UKqdN z9Z$dfV^6RypTG1H1IPkFpoh2E^~2A=2G1qq1J`vh#B6fHW>rrE+Mdf&HcXs{q5$}@UAqUYY5KHcs<%$^yYdSH+k4l zUj?cV7<1r|U^&kBwUw3?~$R?+}@Xc}~5^im#@=8lDDHv33Za#kbJb0 z_UmrYL)NKf7f6iv3y&r)J)A`24jSMK`K(+MdgN0cn~b>S(D1iRBK5I*RN`5Lm6dpL znSXcw1_T7Eeyh!sIfEy39)wx_4w;HgOjf)jC+_TsAi@SaB~b-Sgx+3Njkl!an{b}{ znz)e{-K@y|gH-~ZB8>FW5xLPK%(N06TRL>m1BW3F5-6emSQomCK1hlT9Rhi08qf4*DqOPkf9CSlieZmW|nyZ zGPYXc))-eLrki~QL}sbP~K|>tnLa{GnmBhWjUp$bT}d(&nKbo z1uMdS9mtgnq+Fn@7!^1T{43E(vX|5ZTdD1w2pflx7@1lwY|nC()aYeNMAMFlcaUnS zwVmh^V`%);4B}<><%jDczjuW7acRwt$&0x|yTgm?|1$7lH0SpFtep%s)|cTC{Y;jq zWBb$Sm-xRu1ryGAk(gS8yS${&CELv`*tN}#AwM3Ku~jgIBcrl7?rt%j_7R~wH?>%r zN0^N5FAB1pM+3mq#pSP}fT7L;$p#i4qjgeIkmNb}<#0>6=Hn!;Ep%zU!jGtO@G*ZR zbO^R;vn-SO{>F_j##I>fQw-%PR&xy8o9RN<`QBu?QPU(&6v<2+SfFDLE8lUxOjoJ) ziJ$k_M_R0~#YqHDdu|^Pt_8#!Sv>Mrt4it{hgorY?La1EcD1ZfnXYrd8RY)FHdxUd z#jup3d{8-gYrE<_J{6_*c-%ig_1eR$o4nt~^jsK-5u03fud{eXm-Fc-7Ij6M9i6*K1f{zqUCA| zyKVYt5=q^(^^}blwxWV+5}(hVB0T(Pr$2aSU>|RLLz7Nq{u5%;; zn&M`Mk?oG_D(fvToyrL(o1Smt2|IeR0u@Fv3+@?%7mT~42E>;*jCKGP-k{Mt1x0V~ z2B&o7ybTwM4EzJI>MF~hHog;GxLFoD^Kq{pP%FMyVo4S zQOwV>wjvFGPtM6hEo+R}d0}&kily?UI_kb={+5|emc64Y#ERi1REk^>$PaU>CL6_& zgzhCDUYWA@Z^oFyg7QAet&RNEo9xifs>rluLdB62qu(5q3scKue1O3fNTlZhAx7{a z--?}Lo+8xkC{G?IKf*QU%iw+_Y@{?S#405LuT%kdoO=u@Ugc<7_OE8^>D%8aB)-^* zJrgZ?tt%iPK4m+G)Gc<&o(1Ny4fz!15`r%peC%|?ZR->>M=osB$_DgxYcnuhkwQbI zmycC*NPE1Mq$7^a2R)42IC)K8_5weq7Nq8*5S0Sk6dD-`d@sM8314=wu*xw@_;K7Y zM#NNp_IwA#zTchNWG>NsmIF91V~BE)nr2Zi~+i{#M@Rufu{T;pobi?S%P=W z73AqqZS2dx>xX!8`0mwt4X#?qDo+-OO(w%(e)!c5oAlm|#5{iM&6aizrn_cWGjN`g zTuWa700000S3m#&06q=?000^T003|O|No=6|3^MZ6>>RYQMi&Q=A(uO`R?Q%g3~X> zIy?bOv3|*licK%04cULD#56s@go_7BNw5r9B#QVwpys{eYI+(q`>~^Q;;xBup~ORZQHhO+qP}nwr$(|#LR4eE1Um#%YQJ2 z`>$aE1Mnw`hFGvfK|%=_)s;*&j*l>__9bJGg}?9q9TVdB31`4^YSIosJlwFfE)X9b z8W1_VZE5fRtzK%Xn%~QHwS2b%%Gd@qcO;K9sQAi~neYlDy>Ac%RdfhfAdlo+2LXUw zb^ri=`2O$fq#(3!f%hoB=G{Wznil{PE#(aRwkLYnZs7faetn>(gi0B$`m4nUIjN7+(4TNUN0Wsju6Xw}{6w9|f}8gJwqU@;J}fm*#|%iSD1t>F zP+KF}eG}om{<)@2Wi}0KIotmgB=M#P3(2N!E37vsf)Thr{S40am545&g$lGwX$SUt zM_8KPLGb_?d=4FEQ8=E*egaPr5ntq=;p04~g$nThRhH7F{DnBvFQz&umyz+t@~mC- zFad7wH16>Sl;F?mX1qNV|+{I zMQ#8A>i%T1eh{Kr=rk31S-LB?^th&bOnNF(In-a&c1P&M;%Fdc32rwP{vMB`zab=8 zc*Zd2^a>6veI1By5Ucb&ngkU_MZFxvhTy%zBA|XD92#4FVRx22e2*&v4E z2>(Q{P4?>pkDI~SV}y&pGu>PuX(zRF_w5~YA+6NUt^2)FzT=^xf@jiTQQC1X5J+-x zIVf${GObeIz|JS_4>0bT!V3XjH|3=(r3AzQJ8S~}>3$eKEO z9|vgxmK%QZk5rP=;Obm@ONsj^o~PEQBZt4@N)8H>oWbx6!)7B^MovGqdkT$cj5f*) zN+0bxn163iT{COYQLPsIq%O-om%BmJ$?hJSR^uj6pPX+dKdw3ZP&8!33IteLS;ftFUo5#&*s=cgG9HE!h^&9>!R?>PfxuPi zC19AFfHbD55N?o`I~h^85)5LmI}ZmVdH|EVz9Mutp=F0JVaZ@57}_a^*5ElgJQond zUVMK>0BH29|CTy2DIJ)$??D+3fgi@UQVtcuZyRjRU+T}B`LILiIX+PoxtD~fD3*z7&ta)5t?|_cHW-Rmj-@=j z*fN01z)UH(^$nu9qYRUQLD^#c6<^~0+NttPqg*79NXy6my|dxJ(EgM{Nf!n%M{wl@ z1{9qT8`b>E7A~7J_!!MLA8+LHd&$=bgu#WQ*8gpmZ=-~9c=V|~BOfnCJ9CUaet)R4 zKX1tEuo-3uNvWjJNd_-VVT}Kh#9Zii*B=Su1l)A>gs#@cEhJZAMZY@(g5Ep8aNAwbh zZeAHSak_<<`k40|Z4YBFB}90#YYU$Wysdkt$50i6ayn{!A2|BCKo^&oDY2h5wk+04 zsi(BI70Pa7DO43nGhC`7xMV2FJ6DIm0Lg${$j7@kM ztAk1WZ}$U#;ByDIeWyZ2qNC2*jgT1^@MIM29c!UOBHjxiT9W~W8@?)%p}`Q6GnL!q zy|8z&R}$~_7#|`^h`fsp<9_sP9SnR7MlAb5$YzwIpMgfP-XA+fv$&XM&oAu z>#U8jRnq%BvJzGP*`7+ja^;L22nVEGd&$5!^R4={v!|=m-V{#r%T+yhJ+VOC7}(x2 z5&F^;W@D2@@6)bs(54}tX17Q|=?QiJbOi=d?v1M15g`abr_xcx3HugYcnH}GE{rs) zU#)S#B|K6Knxj1(d!mz;<(sk3x!`Hp$JdH zaAz*ZY`ytZ|M@W2h&(d8FX9W{Mr0IC7oY4ljlDI_KC4vMj>UByE;hPxAlzKa?N4eGPcNtqI6+6<>?jQ zIeO6x(N|hBfNoykbl!zTZy5zsY4ZK0D$Yrh1wh>AoVVqq#zVs&Z$ymm$rdgfqU*f?CNs@ZuKxB} z3xAkdEwK&~bhKg0fD*EmaD~cJH8|m3bkXHd>=zA5ml>37=#f}g2Ib;Vy>^7OTNM8 zC{q8&i#c*#4!^bM*anFP^pwHqAe3S5VMNP0!L^sqsMq@R90zg44?suYNwL}hpEB3? zrJ3UnNtcA5JFXE!MRXYK13Xa`>=y81q0mtPpy1O9+3!WF+ z=M5{_p#kNr%M&SD0Cw8w=QhI|EGLSq_^FPAI}i~H86y4Nv%`6>w#PwkWu0J`C)-;x zio}hgbL<2{O}RT^T-rYk*lwQq({F3n{WiAK+T>voqFMK1=@)+{l^@P5y{|cBN-Zzs zLjw?q72#F#RLk=MlHI7n`Sx1mQcMfjy>TT4r5_k#iL|VY@?FyUcI8XEMl;X5({jnR z7Lye0s{ysa0Nin{N)(jQ9Eay(X*hHqY8wW$hs)&rHKwE}=voxjTAFRJ9=~_)<}nc` z`fT#4FgOkwv*k&8KH`QtZiaP+^)Xult|NL|(GrB}=MI(*RSU6XvGa!y6EMHYN0 z_1aru5fx2=oC~|{Upw_Ks&ha5%v>58s4LnpcNs#UoAt22VRE@_BtJwOK9sl8f77-H z7Rc|-Cc_(uxwfJ1s0oc)w2z64Q72o`bG zLQ30WnMJ@+)`GMU43yRD0Qd*#gJ^f75ERT&Vuz6%qPtr}qJnH$kDZ!;A=KOfv3CO~ z_?4zNP?UE$Bo$lQ9N-=K(2!TGkQPhrWt{b~&nIIm0{bV98a2!E3SV^V!nqB%)vK=W zVZ8to;N_o#p%vH6Z6voW2>gz^#`rS=WHRT8inIiw``iq=L#vs;l1N6s8M3+w;h)O7 zzeRoV4vBT4ILQl`uff~!3T_w4f>b`gbhrT~UVo9mw zC7)%)Krv^~#Z;-o$^oliqYtKEH-3#`XCvb|eKfPkIw(x&qQ(Psc%Gs>4|;l_Hn8a$ zZbrx}Et`wK`^wdN6Z?`~kSB)eidqcIiD`_hJ@{`why_}vF^>60KV@u$r6FliGP_Gz zJ2=m+J1)ep&p|XHXzIb9s_@b6PKYZ21q^Ryb|6F?lLEWe!j63xmADHR5|yo0aHFco zwbgh*Cq=*4{p-DmAPq6hsB_wqZut!IcrB>dt;ThyB*Px}rDLZKAMX2bVAcbIz95Kd zp-w1@0#;-cF%Fh@NYq8Nyb*n%p=7HEc$Xn0*b0dMsgLc>_}WM@MY*u>i%&b&A61XKEDz@N#AUA%D^xConOJEL+NeDS_0Nx;JUnIN( z1tD`?`(uTlxgJ?bEu!TtvApQ)CVug6pe9D8Fr7qXoBD5KJDk(O3K*!QgzDRa-{!>( zf{RjUVBH=j&mX%n=w%LIvuS|ECkNhfqlO{Uv%o^?EDPnnPxhW9SZ_ab6*1UQDt{eq z*IHrV`UCC5G?nXRrFv{i^iB3^Enj1-E1u(H2OA|2V*evGGZmj^L9U}?=B$-vQ$}TH z&J_krPN3+m00KBkl|#hROBehN{cE8>R5BPLc1Zvt{dSr`U&?wud#S^Xwu#4IC5KoI z;&3-k6xMGvV^dz4AyVx>Q{fjUwqzc>Ucyx5ZR*v(@%;27X{a850T#@5m?4Y9&pzp1 z7<4ysu%ervQ>`xcS$q3DDhJS0UR2-1nM~3-KPs7PH@!y{N|Ig6LO?z?4nYTgaDkC4 z(13v1Gbd)oOJ-WxS)g|B{UdYYMH!*yS~DP9_rm`t0YfT`-yGF>uej)7_fFj**WLEGxQ%#Yj{`*39cNqzSe$~ zO15;tHITn^;;0fD=MeVV1}a^-CT+DgLLTm;cjnYevYE#f>T|`sfB6aM0+f8_q%+yri(WFtG3slMUIc=A&?Nk)!`Ue8^00VSDDN(@ei4|dpkNd3kXEX zPsdv5a*I7tlJdIs@|uzcoRXo^YwkdsdF#~ElhE!U@r9?iEn5rt8lOWUL9|^B!cKg{ zyJWT-u+ng_0x%lbt1c%;r>^ijQdV?2{P@(eK&_8h7266 z0fPl7M<>}ylH=JYPb@pIZuqJ;uCeTEojjJ(1z4(Ls}kqGOju3Y4b&a*kzS#cGMAgvC`v@q@|4eq~pKz}nVQ)i)k z50&z$%)5E98}OkL#K`nf84Lz)m{D#f7%~D@I@PU4f;?1 zGNBrbmqAXYJ|9Y5nX*g#=jLN{j>3o)>1C+3N@%8tWp12gVGo*faY+fDOZi7lLa^kR z+plCqewoNV6AIrY;n7(nR7QNn+b-OHHj4+VRfAED-1Fuc|u54bpXSj7g+KrQe#P%IkP z6V8yV=~bJS&mae4Y26#;$7}6thMQ&H8^o4;Tgg| zUcY6$xY1|V{ZAwBa|gq|*JeasNcF9P*^nmn=U>w(tfpYnn>^$=cfVh(j+NEgO$S@sal!Au3k{ zZyFckqGtuTFn{z+BI*SQ&YP_ZN$M^V&U|wKUWMObaZe~l4hTd6`@ur1 z^6nnt=p1si+U+^t`$-i_j;;zk#lrGYJl8P`x zEjr~@t9yX>8l)B;nm(t0S#>eS@~cr^2;3nt3_alOpTtyk8~2<_g7WQ*)O(9?B3R%u zwev*99|r|{J1EU=!8=F#Hb#VdLX!@T^4BqZsDRBacju$59^Qudi^wC%DbO2tuG6<4 zbf*%wN&|8%(eBhcjT8!1Uy%=BKW6mz;e5F8i!khl>8UvoSrl2_!>N0Yvios-u1(2N zOXq7Q0_%B6c}+h0ahM>bYPZZsk?p5uWUS98C8DsL-cCtmYwD+CIs_IlzKw+>`}q{4 zccAb1?<+8UcnnJQIhWh9IMiylB1lib1Rvc$==^J@+oN$>{cNHu4^smxvEzuUV@S=z zCA;G%^1?7y6VqMF_+Hj6xoTDaiw+`ccr8YR>yw-_%N{e_;QC41JF8K~ZEh}ta!rlH zBzN*f??5gRcQUe3P&wSC7&Zmw@Eyy$u;uOAy#c9#9z&G=xXEL>YNdyf-L2teAm>|g zGkbu@8$sd01b=0?4MYb*QdPfn>$`p$CGp-}qPHylY1k9=yD$3JC8`t$(NR{J$?R~= zf$j;=0-SF~?wOIf^G>1_vnR+FrNj9{he}2#P>8BNDRYiTAq)jCP%R%K&M3S7_4ihm zi}GOa01Jo`7ELzKa+`)h`0y^N6L^N}I9=|~(C@V{&>Pnc{`A1A;3bbySCG>&;S!MV zh#cCVE?sbGuyh_=0#BtGtA@7mj-<8{@|hU-n+Ob}i>SoYa0Rx%($dR;(|?M?_xK6R z09k+5&njl^RpWun*a8aV8f~#6Fm8aDa4jnx(mZkk+qmUNWKAsmOJHt0H(Mm3^1F|rUIi2|K4EWylL3rMFR|h`03J?#2=i zWYvF#o&(Tsd*AIa@4@aFCUVa%ce4yF@$ zA3f{bWcfg{Efm8hceOK=k8bJK`*%+q*cGSxbL0a$>8`;!?^uNjr~^DD8buiFiZsZm zw)8N+&DzbcP}|)E>v=qF++JU!CapF`<;#+m+jwlTKz~A#!X7^;i&B}60?$1g6Iz{M z<9KJ}a-9OXNatveZ6HGt291KO&Z1MEFh348F#?g-dl!IFSVEko@C#44{MqH2uB*QRy2yp8>{}es1*pK6py71yzv+MC zM-g_-EMWQCP~R}Sjiw_#(>TcfU_Rk&#~*|#0TX}cUIMZGXjz3&xg_R6;Z5(rG@MzS zqhBK4Zdp$j8R@+;^*g5z7#zAGC)?$)%3CLQYldEf1&IaQ`8PlM^{!06EBNNUFtQJS z@2=$bGM*B`FLh-JxI97t{s^1!79ojb``bO4OZ3_4@3r0pzQw@*rGM#8svDcP?ZMxB{QGfo?nR3oZEg(pr9OC!%gOP&FEb zgWMOuQlqmJ)ViD!oO!lr#;(5MF>L!Yn=i+2pSpw8LgL4gv|(P6x&R4##V z4qKnv0e)Ac8-XnV5wf2LDZ_8`zPh*R3MdkiR$O(q|Iyz9#CSH7`uIlATE0Syo^ymK z_(W{1I!jaUJph#ED)pog1L<@#bSOU#-GP`c7SvSdU^`wOJ*AhJj!WRAD?>^ zH7?>D4whoW40nEz&(G}MZ#G(J3N(GD2R>C~!P=8j_7$#b|83x{m z9+KT4T!dbu#oMSKE8wmL7Z_&S0_)T7b6O%SW|;6yHtqU@v+mLpWoE2v%6Tl##g67S zW7_13#u;#2sG_PmkQs0o*PB{!Ae}rzJS@8B#IBk+N7_tzl^2kpo*sB(ISWqcE53+` zyVx&P=ex&RW_6!vV&P z5K%xNQFCGZaCL+n^RB%?MQlMdi;zh>M6hp(apahXnyAecppVuYXny(5g1wAMJQ@_K zi!Z{b_#&4oH%W-9+QT}G44>=Q$I_# zr+GxrA?z5X*FXGdEpX2^xyHkjJyKQJ-9i8D@{bVj4=R4&Lhnr|RF#w3yRjv0SmNNk z3jIF9*nl=wgLJOHGK&q{ozv2+g2ndC@IoMGE!jsE2-Vqch*n8xtK&VCGT}fcK~x?Y zhVkFBeiDJAP0Q5L6M%+ox|)D^Jf?h8Y{2*@D#^I!BLUD1PHQ82c|NshFcY$!JX((h z-`2si@k_Ei zE@+Mml40z&;=9-L5iF;INQHomclRP3k;QQU zU88pq!>^bBjay$4_$i%2nNCovpaBn-uQ6nZ1GnSO>=rrdRz`P9>rE>k)oAkFx^CS2 z#vA9ICP36*?KB8t1;@t$e8fco8pMPL(}!Ts*hZ&XON4krj^`b3{`s>1SXSq)2y2o2 ziYni7bndgnE110%DfZXu(Q{+PKi1txKO{H zeVUEtxr7&X}HOG%WtEXMD34{jgu~}*L^4w zk-%pk3g@d6OelG%WQ%Ncv>DKN`$R^cvnktL->wJU!ON+-17U3tP8h2?5gUtY+%JG# zX6beZt_M2kfdO-MPyyeQZnd71wIu3a+R^Ox%1uXqe&@PWfyp1>Vvp< z#P$|)?-i4(?{*K~B3C|vD!r9W>%aj7@*KP?$ahj7FO8_rX6$Yyl39SkbNRv~M+lRw zi9W{K>ZP!vm{BWxvIN|)%t*?OL?ntM4_nM_O8qt@B7E_OGm>eB?t+Ma84tn^ zJqGu@4m09_@iFiyK$2cbY&94~W=U543kcshQ6P6A2=&Ji-q$g_#K_=s!Pawi9K7AK z|EWT(>?$R#K&tKYAp*ZFNQh1i_Bze$>xi2i#`fRSBQ6@j->DP9X*VD89;iFIYMnHV!YzE1MMs5#)mnku{f;Ndz)80?`yw zJS7W{Z8eh!M&w`;NyeeNw+yHHe`zgNp&oGQH98`Dz|kH>ilcV!l{oysUd}E9F0GJV zxQxNSDhb@%`)RgBM*{{FtzX}FW8bJ)o}^17YQTX(pZA<;@tqB!v>Zk3>qa(8y{TQq zA!;EwYc+%Xs zHgly>Eh@V5gfPpG(<`w8&DfM8Dro8mCR!S)^M8hC)&y($;jNy zQOX^+T-QPF*^C>8+GIox0Gq4{9Z@6_3C|!A+TS-0pl7Xa|Et7Et`; z!(UNaAPq>IJhguykFZXy&&~ne*BF6u@CmnlvZeD56==XzMF0R(IiRPjNba}77{3;D zoUMe0$jr^IqcI+yf=uJZOq&0k2^=5Z&Zj>~XsyE#SR+qTILihK6>;#|+Euw-Q?51# zg!1y3Bj(*5#CzGG+G}ItgUQwCWK+8|h~FPV-kasdUOdVkI`B=9)G`{+KVX2(KfJdO zEmi@;Ui3J#0p#qa-V=0oUs*PwQ_lC4OjcL(0G1?BMC1s*0ofpzfA z?BC1@bss{!WHDA3W;-kr2DMGWgX9yY$#LoikT1!1H& zLTSLGdAzd~UcHVi626V%V2yh>RS3LLGjJSV2aUp{Nc*)=s0D@3x(esZjp1K~#KZ^y zu#?)&B78vRYFE6;6_W+5rP1@yxs+ls1#IF5T4y!3eVzz0B3QQ8+1}2smE1=z{{|IRD{~NJ_$_(n$1$+3w?PB$ zjlNhk?!=((FXX(=5@jB+_w2|v!MJzc!COd4ZR1r;ra+dr9MOc|ial{S*k zycsiS{oNorprrT!oBa;_FBO+ElpndWIUVwu&B;0mUazaw?(shTa2l?|77-(LK*c2q zhnWCF34HZEf#30@=Y9gUDdm1QD%<2Gy?xfTsLfTEi3m85K7ohzAImUyg91FVp{XZ` z5{I|?n5AT1V=mZ2Bd{m#TRND!R32WP@UnK@yy`nIwai5c{F92A0lV=w1ekyLBBJCW zAi3m~HQVi1ECh5U1lwkQt&`n&kxO81aFWik%!p)flpa9c^OYXb=x3*P-xIV|eXSLr z-@?t25Y0gM?tZIUjv=y#?!l^T?x0hP8u^r0516-(i^<1O3?tjMtkpjilE#49Gi-L+ zd>vM0zA@AP@;i~OiR<$-kNa>OPpNJg5_QP$N8M(Ze%9h?On7`ZGBcrKgEi@972_Ad zo`R}!Pn&7!Fsa{#9rar19Pod_RqF>~5E_m)A~z7bPkQw}#b4($)OjmGu`u#uUZt3^ zr1$(ulrNu-;9^o!Sn3>+FuFQcy zZpEnd;D+J`Jt*lMau~n(ssHB^FrgBP#Vka}lnPVi?E%mb+ z+gRDy=MFVDiV*+Q!v78WOPSno1a^Fr!*~uH@!&`P6C+PapW?sze7cC1$p~g*qZyfy z76?e(*r*wPJ8fg62D!-Q9nZOr`DWHN58uedhpGU++PWWg?*%Q5do|^>=^z~C@ND`PagtfhHQ)b4JxPV^!r!e+G^;7uY) zKP?s~3Uncbf1;>u9d&|ol`upxbUWQ6mntP8k%(9iA>%j=MtNZ4SZKP}Tj=f=JAa8CZ&*h%ukEI8`o5<5jQ{f^bNga+G$+i_h*Sw z&f@%*OYRvFH2Gn0zK3%K7>Vuu1`?tI}{?a^7jxcb?z`vS8p4^cM8s-iN z0|y(F*#o*R^p8UUzTbOcx~+Dn8G?OjS49*q(s`2)d9*X&zK}HxunQY2%OgmR4Nfzl zAfkxz=G}$Wk7-XBg2{eSwsSqcyuLJ2fxRJiYRi%{qw?aeJv*BK5ZNqA6ff_&L~vk= zJwL~HHXhx9-QYCRP2#!4z%{|?>lQKsCtQnjw1m)?l8igdJ=6Fpu4GZcV_a}Gj+UZM zpP|oTRSMEDZw7*;CwtrX?{9ath=>R4 z#}w1!SQI~q!Ob^nHcwUu2Zf-%f`0UY1xYojX2UW3Q{z}*^DB_O|FZ8VFPo7*+;_Oc zBTZ7`r?W$gt7MU&#VJh(`$#K0qh>Tm7r^s_J^odmpL@lAK$)8hF6!5$h-U5R37Tj( z*#gPZ)fJ_fRK~XBlg&)1V<-2qGagXv?20y7ceFOp>?DX3&69FwVtoJOGtS7-PMayD z>FTaNa^0v(W^S#}6LmIF0BomEA>nP~vEREAm>UKpXpAU=VDN{Z@Z~CPe^CV5Ceoyy z8-uTPU-S|;pD=vz$8TL(i)6urOqf%^#wV>AWuK#g%k1oRk(eHTaocYL|8!XP<~1;i zP9@E<7>>mg|A9D!EiJQ>%jv6@RPzxOe?a}%236DB@N;*1tY&$;5`xWHzhOrbO7@r@ zIsItLmr0VnF;EC|or`;yeD^ylLboNwwWqS;j%=Z*NfqCS?J&1=`c~=>UHIvDQqB|z zmB-cU6q`Oa;?COxaTIeLO1mdST)Uk%gRnnPUK3LSv4UWLN{Y18$!fDg1u{A+~m>N zUrU`vo^Yo{bfefr(Kw7-dCWa`dv|aO*>4ERf}f9JR%a#3t~AjYJCkzxF{KUHoT<{S zG9?y}T?W6otbIHMQO<0x zj(-B8#jYv7jvAwej{Bl`c1E|#)|zqpGs;xbzGe^1^L&T3Dhd`39bs^uh(>R3LaCJg zeR_}?(@<;2hEy=R_@cl11m={Q=r$gy%yrgn{&RLgyQ`dIH!ueog(MhGo=- z3ZDr0jLPKD@ItXeG+{r@y=FA@m$uhM3V1EHd zIc*HzkEb>}D8WtmXr=`}7B#+Hn40!v=A^J=2-cvr)=a0-4dt&#%?zif{yEf*Hwnl9 zVn~WOA+7k}-tYH;lz>dpmA1<=ZNG7loumgb)GNZ>@kMOM>1qcJ%!Kyai0|mOG1i~8 zS>rWlJr*^1UNM;p?4FWn>nkBrcp=r9ikaBp90Xa^kjhL_pSGfbyX1#HrO0?8>X@l)?-9=3c9tm(>(|;fQ>ZkK+X@XiWsihCfTD8Gc%?BDcUp`HQ zZh z2ltQqf0^-XZLyjU&d3_#sB*&ycORHwGi~0N{8LsQq91;@{9uD&9het@$=O%EV$Rr9 zv#M3C&Fh-PdmMNrK8N!4X$^Iwof1F$;AjXb@=2SaP0ks2)(2;eB8d>6fl0r0S+0sX zqcWRz%dMBTCXypv2KfqGlD$B*+lMbwDKL&6fg=Q1O6}_~hMFmKFvd#0LPc}}(`v%K zaGmAl?#AOL@=0e16?J z{@Jd!Q?&Sb-?ezdv;nRYXBg3K%v0MrfjkU*$g5EHSXmda@C%bW!? zCVzn8d-@>hS7_Gq34Xl^ICkHKk#dn3bh$5r$3L)g;$&J>1DEySpy7L-pns7)lm{_QL%Q|B6yoVvA$t}r_@ zgWuh~Tiv7v&4Ndp--lJdv7Aw#cge?j1TcUG99;~_&35O5{-Mc3lArWL!npoez}(x4h0{bGNXU&bND94$5B?L_+a3{)#PQIcvoi891c=n8IGbtH*t4PS0?EEY zQ@nbZ`050YaouDY->lSrhxiU(Ssk^J@Dg3HFUHmF!b=twKh1T#iSf$dG`j}hL?<{Z z!A)aFP1m;4{YP*Y97cbnlN3Q(tj0BBNLqsI3ZWS#o_-}Z!sKt(nxB%v zXtj6~V}`OfJ+X-Z4j}R-Hat#r*n&_P?UKzwdi)%?RvO~a7CSic7xO!W=4lg4uIA z^qX;quI1B{l|~3(+$24A%qtZ6Y+gXIVBIUT)R)w*bFaEn*th3}zyys`y&3NNM6&v<^ArQoKR%fHf>K8sCal^6! zNiTULOaCACjiE}_@_C{oUT%xwJ6-_xm{#zU<;PQX*A$Zv0tf zDC)JQ-2RWrnJG+h`KnT?$xCK0s)~1bKXWR&Du!s(S8qZ1&8^7UYd?F!oSzG|}3&6Tr`mrG6183o9IbB(SIni)14d3tmmtubY8 zz>%lzYhN{!-vQ%aOzucs#6ysI70LKwDW6(h9Pe+?pk_0*L zATB-TmA_4Juuu+l27HJ9OcxHUx&EuPlJkilCBE+TMZ!h^2>eR$VaTjzEpQb68Jl2` z3#L#I%lyf?-NlZ-n5&$shkF}AEwdI~1~;zJM;1v@f&0@ZG5@rVz?+~!!X-b_@6K#g z4nG_x`5okrk;Q^TPJz2FSXG)WhpkM+d!?zI(TJB#rRYFJI=gO?r1za{Q*h^BsG1#G zH`U*Qxj!cgZm4|Ic=ddXY2gwHDxBD|U$Vw@2q#=*Ik44(Zq0a!%TcEmDsr*ZbV@>5 zWAF;FX`s5z#DWZ@Oh|T=1|0V5Pl|Erd|C@^mHDu>#dc!mwFlKnWP*FW7bw7PA*fT5 z!@f84&#h$c2R`{=+*N~3*@4ShIbd~&xs+vkzLClfKyV4~C7wh>g?j5@Om7usiWVn1 zww97Z76=qbWnb4uKn}5COoEFoer2X+ao>l52PRa#8wX!Tq%zSA{kWS+izxO$b9LRw zQ~=Xq!Spb7#=xPI{~oPhS{Hu5j#_AhyqVoXwX7GAog~iT6(f6&HGOk!-7*U*a`G^7 zm$hj!B@dv8F?&_S&@tY%QsY!%lY^lz$GcVL*?R0e3f$%QI!dL4cX_P59$BYwc~cdFJKiCTL}*54NdNuV;dnrq zb@vl&zY3qreaI1#%7#hTi+eE9?H~Vv0l5{(0+qqVC%l`&pjB^#HWrw^ME?jPAF5OR z2=BV?K3+G@K9As<#*%jXR7a&*cyu!NCR_E+?<;Wh4w_HWXB4Q|Ip2WJQ-=xb@@Wecp-lV{uqX!JV-kdrGXHLGX>y|9Y08#RiPTlQOUCnT3J? z_dS!f#_VlY;;7#Wf`f6N$Fd;eeY|BlMQM4OL6FU9hnC@qy&7`>)I>Po=oxF3BgDm* zUz;fKP;?M`MRtjW9D4P7c+2#yO7VHpW<5*3JI7FIWB6r2wN!QVcEwp?dhU4{yIR=l z2(b2oc)_n`?|60>=$;mSWRlXYTab{lEf?UI~O2F-yuVm--O2h3B6r^sc+G-VlHOyXj{Rbv%W8(yxXDlx+VciQgy1P`s!s ze+pqgq1)FOD=Z-#9sUHd#Ep{OZBV8t;93hE976b@9B~%Joto}gV7ol??Z}ONBX`O& ziWa-o1y9U}JG&5l?{B2v{do@0b2XWn>dB+iX5KJCj;V(`b$+wcYA}5Jv{Lg}V5B)CI9^L~bv}$x0zmfcy>79$dGRM_Rfb87y_&n$USiwGRs8 z36RJn%KCN+RR-p=Sg)#yNFt^XPjd|rAYBS2H&B#ov;>B!*+z9h`uuz=GVLbF1a|cn z?PX>IEku7DkhQy;i&-hyQ`E@?Ork%jY0NNpnem~rCv#3|eh_;Td1r)Bi6CwWh+|Md zJ0sz4*m&h@0Z&Y|44wH3Butv-UrZ{&95VzIxtCUCOM(|JFXtpg!}xZ{Qm$eK-9ktGuyo6 zi3hF0B1bqaF~^)J$41HOXgkUnn&fgQS8Yy7>NnJ|uu6o61K|bugOQq`!6_;h3$8m$ z{G?_eEBt%DpmkwV{%Q+|X2EYM%L+x;1DasRQEZuhDS%%A4+5KmRs|MN8A%MgNnDVX z{u{fXrj{$~oSAbZ^1(R0gJ?Lk30op*?aDSD$-I|YCdjj#sF>BbnlJT4HQH_Oak5LB z`{INq5SgnmZ6kT5dz`7IqZ``!FpKAV3PBxTXs$g6Ou2k1BN<|_=sHF9+Z6B>>jwH2 z7?4aO{Ni!ZeLVC<_`WLY3{HtCdY!d_+@9<9vp5Xye!+!DXBKEb=E&*3d-ivn`t|Pa zH{DFZ3YqTG$&O)EqXxpdk^%?D%>zI*1<&O6)^WfBHg-~}A|-k_gavltU5qRd1TD3| zz!g9qY)Jn02EvEyD5hNgPxbv$8vNN;!`7ZPSu0LgzdEs>c}RZlcqYH&efP5wK%m1V zIeol>{Ai)onPK2G{4ukD)-Hxuwc-c${w8Hhio>d&rxM!hI@Ms`CdQ4aP$Qhc{Rb&r zuPqs>Jg5|y?7{^{yY{F>V>*XOa;OxIZ_qsx;&;6nb(Z!*DS;k{ULUN4VO@GuPKEFg zjBC7T>;BAW%du*|%6GX|!cYXk6B`+*+%_pSV@4)SX3Stp%6eb$pRx~f3N(;S$~xya zsm7TJki2^9#2K#B1eq&ZM@rOI?(%FQ?!r;H&VI}!m6H|^$Xt&-NB>a_3dFgqmX8&0#RI4jic!!CIpo$uIj06w1$B1Bs7gCUR3fX0?g08Ps>iucoaf;W zzvdN62#K`=4q3Zl>0|C1IgHyj5ISf<i$DYh8ba^0~ppg`}7U{QXHn-!t{2#&8* z!lFyaaeT24r~D`ROqDL8KQ*b_a9NSYOzt-?iGS8pmKj=>8e~Aq+mVUB^eE<873T}7 zyU%-sAE!B=>UMJTY_`^z{y2xW^maQ15v~|_`C&DhYB(Y4og8c{Bmp4_%c^yhHn-}( z?pqLboBy5Q6@8z6*C>NOA6syD)`b8lR)<1vB2g zm*s|j`31?iEo@l>4?t7)WB6zJq;B;hAQB#vw8}EiHCC~JO1f!sc--jPyqT zNbd3xoWz=T-=?$P^QbgQ$!^lDmIY3j;`)|-THhIH7|ZA+0|QQK$}01>2P9u)TUM{$ z%7Xi?h!(;Lkve^OX^xXC)yL+Zf{16+dM>Xvcbg6fku+pDthsB{j|S7xEeYtK?GC;M zQ-UQmY}Bh-XPdg`7W5eA{{^H%c-nxLwt5L;?_(H-S~WWohH<2vIk=P5mDh_5lTY7} z;H8L1oq;_tj!5K`g8)D;FQKGB!q3C|mk&-y{S*ps*0|7qp;z9nC2v}e7@dYLDlEx3t7KyMIWXH=OsCQHirhNsU^$_|^;Pr*J&G^AqwHIZV>; z=>a+wF&Y>za)tm$aQ=<9d&zrjqGzf^adTW*Path3r)&gvQ%z5&Fa*@uzaLCH_Pb?x zbkf#K3Tg4SDZmaAfCxj1z#_b+iH$Txr@&B*ME6V%Gz|k)p&pp+ba(|#+m1fy8yvm7 zS7Bl0&efd4^85vhVQEAh<#He{-q}Wpb3W#VKHHeomC#u=V%qd&J@0g4Egf9bRE_npSxm;Vz)a>2Mc2XG zRql*si-nQ?h7n#;J& z_++NnIa6Q|FIbtGy;=Tl%V;(iaM6B3fh0O=tO*?}!w9tgS9bbs;CgkvSGrbr0TSeT zUIf^i1Esg@w@`6&OU(l53E34xybz%&l?AL@8{X0f3|&rG)Rs5MRlbeYC7QEa!frjb z+jnMHsf<{-vN-7lWGe`B&OctlD1evW@z;uCItXh~#RN6Pr5Og~^ytfr>C8kT5UzRRbouxl81v(&2p3-H+sU8 zCF`TdoY#Xt(IXSc66+W`!zcWw?AM*i>JXo_Z**G|2{uo)`rdqqD2T1%gTY4JCfGwJ z%BN-9M%)l5v_-baQqW#~bw+n0ppg-7CszZ%Y+U32(6*0Df&rAozv~Yz#TLyruX9;% zGCaHQB1v3}r%V9j6MS*SgF%t9=4tk8?*exX~g2gM+RsKlE?hLxcfI0(^jHut0U(m_&G>@s&^RYI(jRx60w{w z0oCx#FF&WxpaJRo^_D|omN6g_#3*gs6!LvMIlDRFrfVmCL50x zGPxgih9uiu1N&iin1JC5X(o_s*ipl^NX+1Atvh4W7}vXBz9e6Q+Rc6-$N73aMd2pW zKj?kF{PD9w@woH^d0vXA2-A%q?4bS%$}}F>nYBP^sAC7m?0r(*e#jIvuTS@GNkiOc zOi|oJ+h!LJf&NygY!u|-<2zddWd3ohu2p2oZ&3bd#6f^A+AU#uRArvC8a;}mNv#XZ z;>|ha;EoqUMR7EP+~n)#7*=uqVdFTH4pJg4bsM?7Id# zN3jk=;nk1Yth~xt+Kg8{TC33=|uwhrzxf!}kRM^Mlmoff(#rA{}CF%mc3qPErz>*30cSpH#sbtMeA^%&^4sgHIqW@ zPp1Y(lCu5%W<4eqB41*kr3N5m0J=Z`w(;;K-6=G!6SmR|#-op8AGHh^s^x|AFkAdxjX}FW;#^=JUD;tBJ4dKDfM* zMtEFnmNnS0v@A90#=}lKtSn5{YH>&5U4Y+1OLExwv#gt}*Cff}p3>qcHbAu!`kamm zz~%x8avB^B@(Yr9G)5Ny^W}|UBc1FQ2%AzZht+V|MC`f!E2jEONrS;{48xfrH!|*D zdWL?`f&b<8GZ;p3lD?nH`^3C5Bzh)cgAl>FX+Sh^S_IVXz3+|~HRWLX>f9q6E;~nU z$L+Z$bRfFu1{R9*8}N@EPvaze0`W~$(Y3U1Hx@N<=P=(~)2c3F-*?E$(<|(Z%^%K* z_|O_2gzP(79AS>C&r?{Ia>#OuDEYp+ArsjuS4uB5@Y5ECj?VJO?s6HT)tM|TyKruD z@LuTbC=Y>6kD!3E-WZV%_L_@74boYlSwAQwESmyheAswz4>d&wg9|rt=H=-lnQ^jE z(eAraZZ&F9GrWQ>&}cPm?!z~(J^pNX5}1;JI=L(C2A0@9b;97Suv+z+z~XK9(6?u` zCp*?$6)1&0JXC>}n)k>qIsTj~sI!q_EH@wVYOOaE%r9`mUx_fM<^x4IQ07 zz%G_O#RUjWJe(XkSPhFc=#-a-vjGq9X9H%BQA)3v~^ zmUa`YfE{UEk&FPzRoxd@YsXNb$ae^GRX85NtKcL}?lDtWD9_V})59-tb70ao4Q8f_ z*emC~(c_2~KW4kc<^FM@pi(pfMqV_M@<}%Pf!L2>I2c_i#^9~qeu ze0YWSGC}4ysHt9s%5~A;z!@*!X0xIbQXuNx<>kOC zGdrd|bN$6r;koWKS?3JKwPG2qR|t?=67Cxam44{dUt1O+8Non@L9Hdm*V)wU5rO8N zw9@l;Um)Mpq%L7s)bfJCdG~>i$}Qce`W+cHx@hAg-7H69BX|PG($Xxo#-LAv4pBHe z#jk^wnzjK#Ndv23{D$vtpjuy%w^oMxPr{aMgfVYqOj_`ZX)l4u!)#p3Am$)Bi&(ks zj01KwMOo1#t0kzM+>4E&8dX8UWq9B?YNt*)p`+8&`dDo!cxfKIQ-L?(B)0~fA<%1Y zjaw(L{rBWl@HrO&Ab~nc{d!N{QW8mpLz~t|C&}}X^13Vl)i5~n*gK&NG60LcLH6F( z+@GdLX~L($0;^ARVR>ulRiMDqHb@BPoBf9lzXyOn&(OJV$S3(8mK`QbKapQsaXm)Y zo?RxNxBK}B;P~2bLBQDpv_}sU;Xbo2MaKJy9Fx^3Ab97p9D|R;-GWHeGMps~yD*}F zjlB@T93|)!wQ1<5b9`vWFkkFRsfiKi+T)xXp%I#a^6s?-appTkAvYB8NX?Zy&|eqV zgM2;#>h|IN@Df>EUPW(Vbz`*G7q{UrOf`70i~__R$5-}8-_P9M5;CwXZ{)#$AJ`<( z7FGYXVBy|4V(3*W^UEu;Z``rM;&$F|gCmhVahw?_Qm$XCAA64DodDLN+X!HC7avW5 zhA=*==gP3=urWswC75AsvS}R)qZ~GGlB(Z)l*CfdWKtDr`{&4IInv9MM~ZLL@ERwq z@d$6e7eH zZ73a1EZ3NQ#sL`iD4V59H$i2M{rg(49Ob;e`&*RXy5v6oJK7&@rclGG)=3yxA^N-9 zaMq;JT}}(?PqyIa2K;bPEF=#d`0O?<6j+He?Z$cdUx>Kp$2x3ux@~v)bt8&?WAZPm zgqgk+`yK(7m5ZeD4Vy|jWti0QBWI7RWP zR(m}P55w{BKCn&KJlR84XsY@393@si00in`P&NQJK1vt=t|akM zp4}BRrj{+^_0#m?oaKbt@k2TnM4o&S^k|vmUq$itW}kHTzUQ*}C3yHzvalqJ7xJ=P z%MQGM$X>S&xL>jCb~cq_j8j&nhK-4q4CnERKztczYn;Xa%uL^l=c^WvK+Fy5B=)|n z80(-laHy8BGdQU6Y;v?KH&lH0>@Hc14JoW|KVf*KLGLFMviz{!{;h2QkMaz__&7Tg zhV^P8WD}oftTFy>vH|T@J|6EDZ|iwq)V1lvnb)Z+iA5T1d9{~n8!b2{ewWaYBY0;l zm34*pT$_Hax#7ZAcZb~p>e)c%^ws$I`Q@Ud=)jLYDzNIkFOQ}symhn|y9~8D?9)w@ z=T=A@?u9kB;2tQ>k|HCD4p2hzagc;TsTJaL!ruD;DLOkAtci+^HWp_-7tO)je5f;a z4mHIPsteVzhY9U~ccuC}#er-9j8^|5YP-5(rgQ;p$$BZ1!?{F_EF^gPd&U0h9>MSE z0fiL$jn`ravyR+RimIj>!~*;>b#EggXpi6ITpow9$^1bnAFN}|6t>E#8DtT(l^o*5 zdY&k@fEiV>0s0Q5&i^GWT9RFYfNKSw5aZ3lB;L0 zjZ*F@0Gl;b=4*il4`Sb8uMh;v=-qc*eejk2mFHE%kzZRH%p16Z&r~LglTSQ*~ec+$Lrt5!u z@bu15eKJ2Lq~31gzfygQF)IX7gY0UIO)JtWU;my}e>e-q}>{b6DBehtTgC$k7CH$s|SBbsMnrd*U?;$D!Av8RChqKg}Kfx6B5Aeg(u8UTN1v-QBNN3uTg8=LG7l95R7g zd_9}Kag`k#Kd{MRLbEiu&}Hx=f;It0$G8M%`K@%n0D_lL4p_a+D&|u$AN?thddu4t zLgNW^-Ba1}f_&_U18zSGzJOvjOI@tq6U}LP?D<+Z9BMP|e_8txL2O(r>%h zwnDa`Bn!tm(4ppgsCxPr=3bdLZt!&Fof%15WJQZqO29R$vK<**7ZQkvapfS$ zjT#7y(?0XFTN8lV(5DM&w~ZrJBCv7|X&}zBzD29(^Q{u?LpsJqJOt!DQf&DABkML* zxv;C9EF^Hy0}>fWI&^jF6&yFQGr)zHB1+(|E#d2?97l*@G9#7a;_K395$?PR(X%-G zV7KNXb_BQKu(BV30X;LlC@O1;8oQktAr0MdJBBgo(~*Hr^*0NWj_Uo(qT+l0Kn7}e z&lcX!|5j^Ru|a_bBeHYZ0$~(OyWMt}`r59RIg2c)7Fbv~2uIAu6zsj~snH8kW~HF_ zoso~L%I15}O&k9vBdcknfq*0qN!g1532I>loq>1$JX(!ch>YT%@>c2;q?G`Hp|$Jw zBE?l1>enxA_wDhWTDtr`PKzaHif>z}+)8Cq0DK#SCj~55e&K~q!gbC@Pr@;0Xi{9u zlhH&&R+6u*hf-nKKVRuT(j*Jd?=O>#K`UEIY1Q0-3=J*~Yt}kQm+L5lHTjO~l)@R4 zE|&={Azib!ZN1b5_s&!3_ub?IjWkDBOZC3B&D>7RkSG7BjhWD7FmC8jGkE5nRP;e< z?5B<_>QMkzS8wNJDR#xBasGdpEyX$inP%fc9-t1Fy;&@KRuJAs zu%VPLd*#O4T-3{8jhpnFH-rq;@zVZz{gH;pj$`?=BaOzSfuRTs%-?08A`&^b< zdmzd#iz+~0h`u%iTxpbwtE@=mPG8hOBI$8$|4zsipMD2DgiKqiYuTmP5oj2vY0nYH z4#IsG6M^lw0ysWCW8*xWk$r0!VNa8e$m)1W!JEZLcB7+qHTC1CUFzs{9#9ckP*sW? z%z~lnkX_p>g%A&J{lJ-ten@V@(W=XxGY9#0dyFP@=Z(@Bh}XfuG@kNnH3f8z{1(%>j&^u}^?x0)z>V5IghgM#ufVe4~x z{t@8*>UL->akF=i!j%aSm%Rb9DJRCo!HIlrIwZfgh#|_wo#&JU7bQC^EPwui(c!;D z#u@td0!yuOh$9WGx*xHmgu}M{@;Ks?uFhma{+uhH!}w8u*N5Ig6CFdQ6I3c>V4v?I zweQ82Z%24no=IYafy=%l;fRD1Fu(1H*6XV{S$o2<0*;kHJxZDMOJEZ>WUmjDqP<61 z5P$^iiGB5;Huvg^p$#K|+voNINC>Vj4tu{cUH1#Divz9r+uf#F_}7-4s*t7uWOdWW zJ0)#SrwfH?Q+)Myfc|*Y@@U>};t*%$e0Oipkwxh_{evJF;CSW!=KLzIh2+r$@7s^Xa`W^WSTUvMaWVPX)Q41(0T`zEl8sXttp19tK6b4=%~x^ssVu;V zUCi2z&638Uo_`{)yqA=L+?n=Mp6ZajQdinfSZtsF5TEp8rU^gWUfwifH`aRJw6G0f zwdA-N@mn+|YU3nkF-QbkE;>Keysw1b=vBM=x}Hh~f`Fb5P=HdIN8$k28g=&ZjjNva8xaQcjU6bE z+5U7|_m^Rpr7PqYa>J9X>)B(p4tp0xs0I#{_!PZyjfg-kYLW$-$v!5t<_P>O4Fm5^uBtRPc3&8O6ibC-H@~%12<={J$ZHiP*sqCf~gz9;bRJf7s##ezbH-H%P z{(>k?`wYTB#}BstOfciHMcfz?-lgw`?IDo+V2n;(Q>bR2UbWFlo`WXKk|Y)!B{oA( zi-C)uV>_Pz6(W$pz@V|9zDY3BECqKg&pMYuwi5Eg={he2*FJF#G<%mKu*`hj(J>It z(3KMwm*L_#Vb5F(v4Ij(`p()&(*#CL{URR!>YE_~Z({MqnZ@m5s{U(r&Mx z#CPQKF(SA9&DvC^1NTH4ZDKzAtEU>6%({ROn6DA}SyX1@>0u{vIuAtCv4H0Lx8-OP zom~;Nk?F~x7GXe;gly776Vu^@50%4_O6|lSMYY<%;}3wX>u20#*(TB9lG?V3AhCV~ z!;AAT150wJGJM2qcZAoQ_OWQ=HAS^XZ?@Z~;z%c1D%yM>@2X#ZOJ4hXk4yBu{3Ay5 zWYUPpn$S7-dwV5%V~1!E3ALpaiSO2?cj28iFalHB7bJUx+2W$10E5SedvJh_7ZjR9 zmBaz{1BINoVKr1#E}};G_vYf~I^F$mF&%9pO`9rM0%Esn6Lg*Uwsa!~yFV}Gl{qje zcFbKY!Ii@fY}%CqA+mF0UqU8-BelOXj=GnGPa`KeMx)cS z{HzyPnIft#<$At^@w})#Qv^Y{@9j^H>~WoET{S;%mBVaof<+ME7cwfqPd)Ew|Dcwg zeOo#6M(#AMwP|JyVwCRW_^<(koLZQ#_3blOV`cK;Emqqf z+w(=s&V{?g2#0 z88qwB)0c_d=;U{+BG__{5NAu>A#H$FDsl5E@?DXOTjwmHDM20^a5Q=`C}KZ8OeSgfgd8#;$y?=hWu}X{ z6yO%t4Z%o>C{a-di1g;qJ4V-Qby^raumu`!sgCsp5Tx^i*$;m$e)%1$Y#~0U7(B2K zMaEurZgT0U+n>zz%D&8Kg26U|e=&9~}`)KlFX`E3kLS)GL9$qG71E(Uhtdq~T!njMr~f=b z^FMf8d!e5{?qth4Qm=xg&s?VX#|{Il^kI>lNDj6TI_sdb3WpgjxjJv6p`ka!t0Wlz zS0ueX);S;^CO-Qy=EDgimsMDjM^Jce+T+%bH{;r7_TnkTJ*4a@U>I5Spn63XeXU~c z*2+RFoPQVe)2n1In|YU9AAg_p->ZxE6M3Ma}H zdkaC#L*||8IzP|sOJ&MRg=Pq0DK9E2iQn2W#z#`Q^l1dbhe!fBFc>I;7xT%3WD$HoB0Cy!y@!-D=pe)%F^wGaag z4wi6cVz_Rs_{!C-O|`yFlj_M3zh2||1d=_SnI6|~k&<8l-^yo+F5aNn*wGhIm@qx& z&O=;z94EAPj^Sd+)(}R+aKcybQ=}$k$)c*F(k#xuA`B_>AkOZ2P<5NsjO<#_<|3ZF z68YQ;D-|XP#uC{VRoLWB%x7bcoO79BLgXLIu}%c!A{4Ff#RNg;1z?t729XIr!cM8YvxNG!mXn%oNza#9Q#)^Cbty1s>=?XyNskMY`1;wku(Gqa?Qgl3 z*nc+570OI59c>!f%s2%-$Y=MB)WJj)DYyp{xei}4MW09sUjZgzmk@!MW#BN>{?e@z zv2tbt;rt@|Q@F(8Y_4HOK=y}l8|Sg{j?&Sz2l|xUR;GMjXD+NDfdB9dFUplLjr}&p&T%THqxVX zCNyPndKtFT|D;(S=v06_$?svyNfK`8O$FTmnlj(}a^c6@hQWybp(ZBb-G?TMLuK+Awy$vdbrGT73@PtV+4u-5`SVBMaLS@+lnWMjENp&yb{hy4%Df z{7+}co&#?EWix?c<>xc{sk$uCfX=e{55e!9%x3>X?8?ITmdIKy57zQT^3XyMcJ&$v zq;~1Gl}1`?pb)1$>=EPVG6V@|KOHKFTy$%_1S>}7XR+S~0j?H$ond9Pk;f3WH zV{C>=X0Gr}0fFecuI!1a(pCm8fit&m7o%M7x=_-CIp>=9`mg?k3m+IpGVR;S-rnvy zN9LCZ9FCr8u_Uq;`Qw*a%Ag2swmNurw9zSznI@t(YDK?D4#XEUUBS#mjgExUN`$S} zcZlB(LhdPWJH<^dQ*bpTGJaTg*ip=_heo#}XS7Gc zj0icM?17DNfU#3sn|xOPDeF8$d8vMB${`+z{w4uQT9Sun&1$@;8ZIwur*=`nLcH{1Q(6>eLx>U;4`z%1=#-ndm+emVC5Unrehakbz-mmEoIfp;&InGE?MCdWOmZNm`q@5BC?wGfE5{$(|n1pdL;V z|3G}E%`-Rqv~nD-gS$B?9}lqNL^(6y=hVqs1i{Cswn1-67TJ02-|NCShLGY1<#6%i2})Nf|1=WK=+)&J%26l@wzLiE zXj>k3L`rt1Ef~(#2O$n{`E0F|_{l;M*wCw=eJ+5Ie~SeCRJjC;u>WoO`1&sP#~W?t zlhIqO+{IP7U~XG^-#f}7M!^c#V8g~z1ExIo4timCZmo5T)yJo3vqBIu&`^pXn7f%= z`vkqzq9h5kQkt9p8PFt8o0wFlMHvi4*KEdK!iyhLuG^ivc^c?ITnt@R+c|PM=Dk{t znVgcmss^w#+Wb#qZpY6aTJLnd5bRGi7AdgP)%(3CvieCjI#VENXFm~&YfUou#OaX(o_L!J8svm=>xMN|a&}*!7 zV3xT+-y}1@f*B&~Icy+M%<-}x2isK=EGXJXIJC2-R6EuK+F|_@;)_;n=Q|PlHFG9a z2l>U1M+VnUuoezRU%*$BvoPPU{Gh4G)kBR>ZI|A_58O64I|DLGm-6epe#RVbtPn3` zbJR0W6bRVSp|EAslvy4RaSj+deA|h%f7FuJ#i?~f@^6GR)jPzlu6kEBhyykeHjU}> zAv<@;`c1SeLbaD~pGwm`y*tFT%EXQ4o&5M?Q&~|X+6`n;`EJATOiI8)KWs95q>wF8dJLwl{htv&2o&-D$%M>atdt8$W3YESE83hXH^m-F)?m(9 z?-Y!|wg-}LL2x@?!Fqk0GDyig&~j~(w@X1L zrEE575UBM$pLrQ3akVX@0EvWo*LeJ;m3fO>_kl!DIW4s$m=kJ(^(PFyj6mJuLS9wl zzA|uHS4FqA6Y~ZlzR~6_13^Pr?9i;;Dd0Ayggvk_YlCV*#w`jjin+MwWTrJM-?5J$ z4k{`rVd()2Q0(K9!F0HNz8wy`)aK;spk@3k!oJ2G4z~WQOIkK=qC#9&sB3N&wB0dW zqtY*Ab*Pj*NmNH$g&+#UPEVDNBo}+=MWVE9N|Xr(>%w5x7Uj|!SGfR14$uiBoQ42t zpwF*zaJuKqH79HV1jk6AtWBq`t5-7*FkwgQ1^wW3`~?5vUmO3Q>B~vNZYF#W8(V~A z!}HH9wQd#LPgX+eFL++}`gh~PrgNqxLt3j7ulseJcLd2t2E?MOnx_-Ajx+t`#T*UU zK+7dg@BN;IHywQX!Zl`UgX;0CA$2BiT0n7%yMi@z`nHdLSMDrc4QE+WfZ5bvx-#5V zhTpT7<%4Fs9KG4ZXIRnT4LBFmtorXODkRO%X7x_jpF)0_>5N6`1b{tMOCN0!< zQPn7Z@|?I51C!*lSD|AD160l&AebB6hPR_v5*dV6V1@2HqcC7Y2NU!9RCal#lxe5! z@8Txm&_po(uKCW{Z*W=8bxdEb!~^PwNV;C|!nP{o+E6#SmH@+c6fJw8G*gk<(Y+@b2PlFk!5Q5Y7Ub@p|v?Eu4x!m z%jdS-8=Cioj*CuDZVcn5;K-aknD=<|f;}XTtFK9us{V%5kOcmW>xtFqPeM$VMLW$z zc4(*NqIc9el;0K(m~=zQM0y)x^E3(~d@KDJXeIRP<&RN_qg2K)=r~dre{Ln0e1K%d zEhuEUZwzDwAH|KOak~)bppspYT0;xvFc9L^YTdzO!s~wsL#rVe58b^LuClHpP!#=@ zK<-XdRIiaY=prPiIWitF9Ce1s+|P*PntsXtk>o*>Z+wXiuy+XOc#cb|X#7oExBHo1 z-h}t=y1D+&Szy~U^nTw;YMsaqCsrnYI7y;#*pN2W6VUOrUG!- z!u@CZJ)xzTm)cL`Poed}>E_LNA0L1Ux;Mz!Xt#it4_+_DKPkF3h5I)YRkn=UzMwp_iF3 z)m7n@bko#TCfU1L!08UQ!9sm1ZbC_C2NUqCf<_nMZWiz#(T%9;)0O&2iWDXy9zP|l zTOX{X5M|^Qj<9?(p}nn7hxZ15*|SS1x=R>R<=A)X-OJAWx-z>Qg=g} zMjYocl=P-0dKvAx7m>GHDoulxRa%MGd(JURraW-QC#-&{rJkm)jN$|c)r4NDNg>`& z>nts}vLH;+_!g{&>y&dE`rh2lfunW%n%|e@X@(RtnDUgsht@*tl9_!)_6ZfyR1V`+ z7c!)R|3jHubr+quEOvDm{ei8UmUv}11>TRyW-R5DOUqlNYdXrJ8pmL>xJ;4Ck$0K1 ztPVdJg5qi^-qKM-AF|_My zX?ECOIzx^Muj0u^kaf-k^ccV3L6gS9E;9sQ+qSGU!H_{T2|8m-%ZeUjT{54MUP()} z5#?1UTHL63_6;M0eh{zm7_ks)P+}0faWnQRSA*3dNOzFit0DuF_`{*qQxHbl<4B{B zMZrAG=6~3v-JyHH0H%n8S7hMYC&NhON?C~?<_I}oG^6#IJnbg=?Q3;>xq6cm>8?l+ zk}ytwT0$@cQCz*xk@hUA5lvLS-aN;3R|YWl;Qe>~oTNbF)_3}nl+Ji$l}sux`JM{#rU+dtf5uaUIEZOZ(;EE~x9@>004=H1{ zE_qbZsZ!sP0YmB$oGWf@ysdd8S1YzawdQ&@dyOv;waV~8K&bU*;k^T~l~H+JD0U1F z75J#$%)`&!KW!O5d~lAezI@nBs0_SpLYJ(XVn|A>Fe{sa1J2llNKGN+U4yPuxaKh> z#oo-uU5^S%P-2VCfP2pGZ$vyy-^xmxm~3=8SgQ_AfR<5`0hzFqZ74+jh7uC|=%#9W zwVlMID(E90IXLYMNddq2ro(pt(XL4e`k~+wO1t4;f-Q3 zqyx}Ki`;8-;lbF&HZ;fzC0*9Dajh&s3qnq49u~U6=3wR2ylypeUcGGFPUJ-sxMtT& z`Pi>H!$z;%If1Yxx{Tbx9ILbG;N2q%+Ma#zbP=&ks-`x8^eTUXW|i2{=tSEY(len2 ze(_qEI|ynskg6?nJ9;t?NL{(B_S`)?-7iSm5c|UCqxeDbrWCy&$k~C@yL`#Qu{y=M z!mGmd*oyLg`xwY^8cKDZX$wRl&8vGw(b3jRRe zM3IdI#j1Vh3ju=+2_tGsj9Zb3A}I_ny-4=pkw71Mg!4m(b7}GYc@SLiDAdZn0?ov4 z0RtZ4&Id~0(tMb$RqFsQ7h5}ZM>;cF9IA&y;{NVo8=Wr4ii@U19+B{A@!m+^|5wcy z?_7L^8(qOgf7&m9UHu<$c>anrX5CRX~cvA!D~~SeHCVm-J?zk+l>R=Kvj@|H}4b7v_&MD&47G!i%Mgj zv@ln_xAAIcs7&0rU==G}pB`@;>m~ghJ@|>`-zvFV?oM+C+Nh^F!Y3RcjUszvCw+AK zBmBA4&y3J;GQL`wBIX9E#(^*fP$b-@7yN}VOQ9ti98%rymR`BKlt)boLOk$pyz+Cn4k#3Uh{MS$3~V2dcmxmmD9#faf8FDtk&5@Si&AL zs0V6S8^i}j+^7LTk!CT0yD1A}%t}6>%|$-ReMCP6<9^n&LNr62OKHe|;w3z@kK+3;3dn|)! z!oCxHbk+v}cX2%yk!LS6b}7rX_;Dl!I^dHFsG+^~j#gtvhS{__A8z9+#Tf;OEj)AW z+pGEfQ4`y=h>q&Oa>+tiA4nR?59 z6lc6%Lu6LRTJ|$=LD&nQB)MjYL!zRotoeiAUpYUd=m0@$MZ*iN!Tv6J?ewHW1*PzI z(H?wWP~6Wp?BZQ?W2~uV(`yVB4Eo5~64ja-Jo4Jp?Ymx6u+|Wl6QAAxou0@oyQa*K zSIg+`eHRW+ex%JhnVrX-;J|+O369NxIA+#J_4_JEc$cl!Lu-@56A>6WlqJ<@?HaYd ztVT5JCh14A9w0(w?$S@BTf4Y~v8D2MjC%;M7+yw}RX2?ZZ?<-sV$V7mP)8g_e=CfP zPfG!zz1u8`^2WR|K|%i~IB#vKG8+?9Nj1Ra5?UCl(#V#Obq1m~mYgVa;Vj<&6mCyq z`YiW2=@2RO&HpG^Twwsq7m|wB!T#mOn_dRQeF*N>ca@Fmx4hDso#YQ7`ekx(nZy+trMslgt6k<

rBI5g20hCQTo_alHdf-6jb#nFR8^Vsx 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 literal 0 HcmV?d00001 diff --git a/binaries/ppc/tpws b/binaries/ppc/tpws new file mode 100755 index 0000000000000000000000000000000000000000..12a3fdba602f6918233df82a9c8936eabc308e6f GIT binary patch literal 109416 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⋘U#5|( z6Sz}|FO(onE)0}ntU`2i?k&bdFgVSKf0ZmpQV~ORwh19!p1d4h@PWJ#@+agP5>SEq zDq|Wga)T^>duTuM(yY1y>h}g^P4W*8Z<|ALhVIaU3{LO(gtSE`7#1#?ryTZhXe75u zT-soTk>#$SX0V=7z(9G@9HExkV)S3IXauoL>)Mk2h*B_})eVMtxPHrW-?b^7MXzZOKLLcU zh{z++7;O0+rXH9PA;$68nNwf3jsH#mYTSEB8b*un>9OrKWdbnvlUQ6eU*8oxKKhc- z{}?>pnNBhH>@naT!MG_vX|fT3JpO!GI3vIF(qZ6iDcNl2A%6+7)93RO%yyB+N}NxA z@DFPiMR@hVomby}15A*B{b)iNMDTsZuSx@(DUkW!SQ{Qc=E zl!Qy2_B><|?h=}n6#{u^z;dm4-zj@hC3o_xm6z{(ESCpPv27IAF0j%NQU`7DTWqjN zXgt}ZhH#^ghwR*1?}||>rGppHA2g6|G$UQJg-hSM*S6P>+)R7EbnpMAT%aCobW-P) zJ_o4%cgQoGiT+^)&DLEXLG&7i2jlyxP<-wt!=*z*{gz~M!X8{Zw#kC!F!a%cp!ge{vceDo2q=@nOue~r%x zX`mo7dw#tU9iHJGF{?}uPO%HM2FrWWKDwTJTF+%>2Tr$_t@=XhHs}6MIAE;G+2?6q z^DP+WNLy&Bp--!A?RArBbQ6d)po?4(o{pGvT{VHdDXk3OmQc{f7Bd_u?FgDyhv%Uz z_0H1)JKU{B_>l_hUXbo{g_kF-EFGAN;;v@c{7(^r_n-Cqxsd7*W}B%qRIjw6!a<1P z3_!X9OoYl>Pc~c%8y0@G+J_E4<~5~;GxM6@XP~#rOeH zLHbNQ1nf_meu8L~3SlzBZ|RI=u=rNB+cH~VICJT*UWCRCq$A3n!Rcro^>a9%R$A)Y z>yv!l+9;cMwDY&B!T%$w&8L#niSAd-7}85XuLv$B$1TKFlB9(e;<~Bwy8f)cOC%4V zKAU^<0oPOdF8O6b`y3#W*JQ)&^>_+K1 zNC1(t=z#97O$(n30xtFkDlLG#W;^jQn^2{e`hj+vaVXDtTsx zb9{Kl%m{P zm$Mo*5(h!f(uW0%G!)XV@;@3Qi06PeAI=1;S}{3da5wg0%JNF`yp~efZvW5CymOhX zhYu{XDqb=dw{rvQkaUwr zf@}gXO+*F|u%-L0sa$u|b553w65BA0!%2qoTztA;Dmn+MpBh`&8JUFt(cwXM2}I|! z#5~e1a){f2x&fy)3N%Wjz1ACxW2ebcSbW<98yC1$V0l7}_8G3m$S1sA1h!o2GZErx zbj)ZpFBGv3I#0@Se4HdQJ0XT^AIP`-s|qaeWoHDV8KN4mBNZo7&+zXe4m%_sy3%LA z$jB1`t+wnERxKsutdP<+bCfdt;BY$i0>u%EJ#qve7_OcWa{GQTXdU8O5?)qLJDHLNz?1CESJinZm1!HvrMzoX1i{(9m6C8R6{?*UK(@k@+7_s>h}&axPCEO z%gNs=5Kt)VsY~}%rUhE3*cl9H2a}=(o{ymqn#*+Z-+-(r4Eaa0@Ef;Xv>h;!wdRrX zv%sWcCT}MPWC{VheQ?7UkpM`Vu?)v(5aUkSqKi3SFI2Khn{*U^jGoC{NNCgisAr9i zQYKLRqcJX-Un%N7T*cxB_hGy>p2OnI-O@y0@Uo{eM?yd-QO2ThE{r|!up%0bsh27; zZ2GI4`&E~?U3kMzrO~At{CkOctB63E5me%S+r4|Bz8oxPvA z8LL_ie`sk#=*`|JQSe0td0?XF@d7d=T{yZ2)BPFj-fddqNHm~{NjI)lnNm5wd`q2t z$umxe+q=?QdT!bseAp0Kk!!aS8nk0{?{wnq{Ue6fQ)oO!)akm1Y z2bC2y27#mt@nZiUCZV)iWw+zAG}6xwc5dvAQ!-wSxQaC2LkhazmQhdgUa`k#o4w3& z28vr*5k%0M^ik0un}E&b*S2>3cCG1cc|kK^jD3PKm&2<2FBN?p$o|kRpI$1FMdJ@? ze(<KnqOHl#Yj40ypX?N;h_z8WE;ui)m-nCHvVlat)fouVocM&IE^QnWbCOXVR(G9&TqTgW2?BvazWZ(!@ulp!YO4W7G36jsBcW51u2rXHP zeSH_oh2O}m+G!;vDn{_5&-P?WPGDmQrnbIcmUktp8ZX=(sHrDTFstK97>!m%do=DP ztjzra!hTrVz?MfB8V7Z>QENFxga})|+{yiPYeREZ_IAjt+_4NV`wtMb2$5%`6rz^Vh;#SHhIU=H&u2k!hs`xE*tj0M3 z**~3T4a0Nzn%oNe%P*i%xKBZy@_;oV1%3n1;1*OVrNvPH5S-IIy?+RL(`$=>J5G|{ZHn|%Et5Q~aUA9ivV5-@cyd%~EGS9I# zBwjb?T10*VukZJyKPNIK2@Hh!G85cWjcSJxk7r)3+1l@*xO&(`pb*8Em?Pr`ldi!F zl5Z+HRWWu3UD+0$olKg-rdS4VVl%_>I3_>HhRJ4fQr;(Di7&wxb(L&&qSs{`|Fz78 zU|dDW1^hUS-VIM@ne!#;OYj*EmqY?EYL0`HA4CwccW`k5joC4@YFJDo@Gs9L~+9W6Rb*iCYOKl%?B?+L<1Ejygdb5E4^EB3YnrqAN_GlG(w zxMCTWvNU=2Id6J$@@3`yNO`V%<@Jc}$O&5u>&CR`eo<*FtO&dJSzD)1g>SbTGBAu| z7kdncLtH?yNdz{gG~pX2?pGv`&k)j{+|8jV+oG(Eqa36*8FAjbgh2$~K-lSIUaTy@ zELeou;qXHi9KZzUnlA@tKwR?gpw8$X2(=sw`X{=1Yh<#|T{3X$opKT;$I#VPc_N}n z{K(!K(cq;oMZ>TE#yJDp5mh&*?CkTvS6_MGLep3P+0nCA^kff zSy_-_a)AeAQ}0k<)Y|f=lu!aBK@h*4<6ZoG+(lW*(~e$ey-7n!Z0EkM5|M&u>Cs2; zNrb932ky@(IDTE2v+K>jmQ%*VHtUCN8?9~w*O{67A=JRa`Y~2~Jg_!#>Q(-gz?w(3 zBf);QEUC=2`J7!)5L#lq3~B!n6UCf&P0B}@t+)IQXh2{xvK{`0KOZ3NF{nA(UET{T9$e!l2j^!;s|1kpC4r3Nc`z|-!c(D!m&Ik-?@Ta zWkbLUl1&^4u^WY5Ic-g^22o`T8uRr*=(@;DOx9t>(rX%{)2h4CR$04zqda#ps8kHR z?7wb~?o}|T_L8TJ*Fk2mq$#4L^2_e_L#V9@Hs4f%(K(3fT^Pbg@?~92r7g$a23a;m ziUNa=LiOZP08&`>hBKD>s2M>I9h`J(0$`k>PFSZy=eLt)9tA#4D~e>MGCkie22IwSJ|}&|TcNp*+q5SY zt79hF2@Sy-*3vx+Jbof1eGTUYQL0y}4Z$l`9sJ$TGcc*bT$OTv7}^u3%qV)LGNyxw z@OhVG1u*n*178I7pkI=pDM{DKu6AKL2O-G54sDfvZR@mdi5m#(lReg&Ginv#(!kNQ+glij|GrA?4sM6Bj`q>u06a^pf>lSm2)H)?`9m4E{g$zW(r| z2ZW11ewFQExp-CFIPL=XQ1si@6)?x)I(bpSg7=76q-&AO^cH0Tsv2GJ>i3J!u$+3V zj*$q^p-{*8O6ulV>`Z*z6gkS^d<7vZO)EAfmMjLZ5H;?4$8b+UI~%GtIVfR~nJ=pS zkv2{7-ZpfObts;?_UNceLxf?1YOX2mB-00Qx_`GJUB>((9kxHpJ^K4^^hw1@Z)smr zEwd>Q3@LYAS2RVG1(!mLs?UVp%~S*K413h^HI)$=hPUAI3!qR^#36)lkeif?%!=&e z0uKzc^}#JmoyQqZPR0(TuU9_W)GH%%+nJ719`pM*A3}%12c@cCMdw2$UtoSt>)*PMwCam>fo&^u( z`xrE<^LdQ2yk=>J2#B^k6=lp#u4kPgY?72Bk}ppIKwakP5BNhm2E}=jG|1%?0CR77 zE2vn{6^IU%hj$}mSCEOOJZ~l64iRexaJD4Vi2T`(u7Qe@QM+z~lh#{ebf$FO)C<)y z5nte`ta=jt-|j$dBNbH%)XS~?&cY&8%QmJ3@k zgMz*g8LBkRE>2^#@9g3VMj}xCLP@(XYWVu0yLc&kgArcQ_yzOEgZ^5G&;*9)KF(6R z#DDO#Vd-Q6hH{;Z!vP>@-Us+x)||8W)QF5>B8dEV zmIV1hNV*`8qY-L~It<|&qHHpBGQpo_waA<~vQ zn#JAh0~wWlZB15c-I&Nn3^!*Dj-#c~K}uiH<@nL`rWRSptj_Vty7I57B(nv1R+4qAI_UZM->4IP`pO?{`)TFrEnD2x4?m?hj}0;t^Axt`B|C? zU#VZgm^zU~3yuHh{U*vKNp|5JU=PLU~9GrH~W~?^^z_ZS(l(@hKXT$Vzp1M z5mkshR=DvNvqup^Pr0se_is!B@YD_=de0BIdBKZOL>8f^MyO^%9O$Z=V$|r#BqdO6#XLH@9p8&JCDZ?G;OVxNW&AfhYttqls zRT#tvdyp5K0a#S9I$CaQ+Af7H=7aN@wm|9^*hQQ>u*_?kpqfZfL<;uAu>(_wX80+4 zYrQ9N+r4|Z$SvZNlH}@kLRTal8a6gQ%UW4i@u|`NL`wab-}WM#T4>wB{JXKgzsxt1 zU$Le`iEq%95e_!&v3z{0w#Cgbc176~#%ZNbL-+M;B z!z#0uSqxXCur8_c7YR(bJ3&sV@UsK6^~-iVA4EwFzCHwsc93uFESN#ZiK*2{YYIHpcQTL>6>;lnvk^DLXsdyoSz})7ot- zl%88hK5&a5;RZ+qrm~WB`DAVl_Yb-75aQ!WBm1pg=V?T?8a z1Z|Btd;M<6h{NDY8ig5SwKXoB zm*@K8O0uCo-9jYYBp>RPBc^nggvS?_4t!`+N~zr}EivCQHS}>oz1~rECTa8o71Le< zJY(@6y*i<@`YFRF;YV`-%E2j5TRY;M#(@IBs0y5WqQqTDdxISd5_5DQ|L*QF;Q9(j z;T?3bWJ0$kC$z%sJiZ1qUWJ2)G_w@KYU9m$ce~_|sq2T_p1^sDq}*!V*1@@^6gIGm zxf>XW3q=w2U!9P_;`mWuF%U<6Dl>)UGiz!Ug|~R{Utxcef|fcDk)SInu4GQRSWbGB zSYkB&%oyazBRGvT-o?WaN9Ue@U%$+>`Ts#81*HX4Vm#yMsGejcXH2K);&A(2OJHh* zxkTNEM|d`Mp5a^ebO33%%Xyd##TgO~^o5@HS>`FobZF3cQv>4$W0?A4LQC~Ol5=ZrlbL)QARVXP@GCWVT2q>J-&Ah&U><{jx+yViGVb6RH3IU_O!t-5n#Q7s zSMc1ngEmo; zCn`;dT+<7I0EEh zB`7gJo>gDp$z^7}E#RM45{+SEOucH4sjHvCXuJ?hbcqHOz6H~hRr>3D?1)HeU52Wu zjp#NG7{^J2?RM$wa}01WkmMN-$>E8R%kp?p4oL$MXdV)P|mFF?=d&t3UgWJZ5GwG&g|OXXAo81-G0 z4nBG{B(u}4a+F4jW+av{hL|r7#Cd@;b3-@0j z+MQ;o{4g0_TT3e754|A4Ty3ZQ^{-4g`O@i`uPJ5DSwx;nM!Vj-8V~NjMgApr*4wA* zXlXl=>6d&=;WyJhXwPSf+T&;cRjcNzRvulxc<9C8>-+Nd-l}=ysl9L80e&FT zF?1Fs+4Anc7%=y+16NG6lu0nWMAG=Ko?YK{!(!a|#+OI?!MRIOj8;^jin+5qw;+w; zlEpy)Qq{@x2lXh!$QD~`wu;;jrdD;Ph0tcO&=8(BnB6CnM#w6pa4zF?9y3vg{yb{* zK1p9(s?P}wR>v$QZ}vj;5}47oM@Z!ux7?7I;f5@eiDwEimJ*kkmmm1NZCL4!fb8=ykf!}zGy z8DG1CJQo zbk6WDRYVX+NOH!lYW-2lT2jKSD?&9*v`#2!yg_W#Cc~d3&C~U)vU{+7!uzZ)Ti2^8 zt|~-V&ZE6&n2O;&o`@F|Iz?BaScZOgxE6AvL2!nlPh9o|dE22W-pF|2wKRi0rwov2 zRo|?}woje5U*j>D*Y;=Od*S+!d6oPjV)SIu0c9SL;0Zt%iz!#w0i7}+iml5Z_ z&?~dF(%|C)#Jz$iMNKffno+1D&k+&58E*_~l;kzl>eiFg;(+!vc767BVe>_%GB4A< zqw^q}>oDdK#gMr=SE3}XvJ+><0FGyOqE15}LIh<3!gZ2_knH>g;ch(#3h`&gjs<=` zn;)x00QjS*>)NEpZ!_M!W(%|+Ez_pM&RSLCOrk5sjAR;IGDKA#x+MIKx4bi?8n{ny z#;w66AHc5sI&L1C{L5Xk*WEJG{!VY%`kz`D9_*~xrYy={E5#uDH)M@Uleh_b2b99+ z>$V&9G@j<1Hg5R)Vv8MMn<>{2s7B65))z=54gqSHvD7=lE=^_mV)s~GI*4o4+;fz$ zw2hM5U8}>2Sz0M5_V$}EsH6J(6A9}rhh^a#h=}+vmb5`GyNb#)>#QiH*=`;uXuEk8 zYRrYg=C^Ip#>EGHi0jy1S{r92a4oK>nR%iGQXq#~X%(LBUI-v+2nmrB>f0CW{H*UT4Pm_n}yYsH`k z)w>{H62*ok%7G}dqs)~WA|XbFHOgYxnZrh}7AvPGN+g-KyJxOU^iLRk5Fcz9edCv)V zv3=zqyubA=I^hQv(T9}q7(iw2C|CqqqT#E`(EakWMWZ7nliR2JP{05Qee5at{vU6h zy`QZM;|9}e0-^$ZUgk$#!?&^DLvP-XJZc#XAL*VvVBXue)qSC&0D$d%zMJtXJTj8k zrcN6ke3OtnfKc+R8=z99f_2uSWdHs&6$9LojUZkdRf$ah@sptrG>>bFULNnMtC(72 z^a^`$MDn9ns*C~wF4@RlJ6YOx(RH0cX9+9#eB5~R;$eI?i665gjT4xR^aZozl$c$T zPEDID#Jzt`Svz{l_kalT-+s^yrP;0HHa! z!X(@_EJd*SBD^t#I19J))Vfvky9-)?(*0&IVNbiMnuQb%p}#;lgFeAILA z>dp?nvfb_qb0c`M#E&p?n;5~ygy>N>STbPpdT_|1k1Izz0w5G1P8&cZ(Z;Xm%Do$Z z#1WTEGR=Yoqs2-L>3w~Tk?C7x*H9J9_j2kUcK3@DQ7^gIz?N7j2KI}(P_dr3F>C#; zck|hL&JZ+psY;iYwD;)y$kNw9{A6*QEMr6w?6$e?!@V)nb4N4N zTb?q*3Do&i*&oz7X^fQsgD%E5%B;vB!}0iSBhXq}`ORi6A8~EArOZ6vROJ{hu0V1| zIWC&f6_tds^g@yzlf?3$y#xkJ^68tfDtlh&9#OC4GmVrH@0P+G3c3Y79OFl!0l=4* zS-vp`clk_myFfe?DGmkJ9+C&Pt0ZlIeTn}$K9GqCw??%;I6lC)>9wMnA{r z^Iwo`!9%Cz-bNa+c@7?O#Pi;6zX$A}7ZZ`V0x+HLQ^0@YNXgIR#TmDJ=mPzBDa&^tc)a;n)C4#V=lt5P%ByJ5g&`asx^8L1>a;Bf1i~54 zwa7zB%vzLtZU)2UXjiw%kD)Lu6WR~m(SY+#2rkI$LNCPKWW zbFJuTP_cfbYh2RE2H24v-`uzpJN1=1gatd&^v$6S!3IXdHC!V`UxtREaty*0^TNH$ zw>DKkNu1WI})cZ-iaS_!x?ips+vCyB~Gt@D6|s)Vz8vl*TV z5tW&sY$oW00$|0cka`mTdt~MgmDSxXWT4*k1)gUyfD%pj*n0nzGpm$V^S`DDiJ^u| zLpww#w*(tF^#{rW;9z^YM>3e`c-D&^^#y{Y!kdS7gcx9vEP^RHYy|2OIbz`Y z7z4w#Q%?2u+-)+l5!n^fWpYmF@7%-Wsgh6vaI=XHG^IlY*=1!8K-UaX(Ome%pb*ur z6+xyCV8F5qGO>@P9AG1v zjF1&H@}V>8WA~wa!d(Mh++xQU%1px2o1X`-cZ|mR3NC)STu7_^PMjZWX@|@8cu64y z;E+U9)k3!WRHS2Ci)xSLxhK9fVzZaqr9IL^d^iu_$x4sUsFK@A65U?rCV`h%hR%PI z?eG+?z8p5ON%_OX&W!f4Mn!0@9S4>W;!hc&`%4CbLKZ{&+f_2-z11%bPvz-KzU~al z5WnIg($8c>UE6T8?qYRgEP{Z^(ohM9uYMt8VduRp{7JTnuL4O2s(gHq$G8XG62drE|dfDgd&42Gw zm#DejXCcX_jQ+_#kp3?;{Ao9F;BhExHb!%Kq9fNK^?TqE5?YQvTu@gqtQ5vG)=e`m zhE|-diU(p0HtEL}b#$ap)j>SKR4oh>kYGjMKL2;%>fk5k0k3idzhmc0NPVz4_l?q> zOWq&N;L$EZ~Ie)`{-}Vg2vGJ6CT0X z)=Xc_U~Q?MyKS7HsgQZ@axEGV&|CnB4nN!5ezUqNrh?AIw$DcK(|B$i_5!C+6JJ*Y zn|89z0qR;M&A(9gK%PyC;;y)`=kYbSenB@PQq4eqt6O5s-qjGGYINr7W!*!ga0Yfi zJ1^ru-P_eY^E%X=x{4n+sNfXCt^^p!4xe*U(PW}G$}R&iAQZw%ILbYv zKMZO_0le?j0C?PRNoxA~I8I9NLBuf2P~`CXJvuiNKY3M>pM95lGGIny7UyS91gDIs zC_Nq}8@6epB}~$JJUs;m@j1pxxz`&vmKQ!EpVgi7avv+wL!iT+{huJV-DcgT1iP5w z%KA;^+pW$I>C*w9TV)Otg*y6XEAdW|*gr349yEwITl^#ZyD|p4*q<1CKR+Y*W#8~kL_u>F-%w%4`X zVNM%U?ysy%%z?gJwHnG8E03>a(|13GnB%&vSh`>}~l zw#&(xOiHrx`N3;|e|y8ZEq;fI$K3WiJR|PuUoyw-PHYP|tD*bW^(zf(2Ql5$x6rP_ z?dDStV`Iv1`p~qj?TP%#_dxGq!Os=R&tMzo=aR%_5@CAsBc0%3OOP<+rYn0ENRbtl zQgypCFoCc~>0@rd8hSNI7Xh~Ra5gi{%RH`h(gRa(}c z(V(UE6aY~`uD|p3iYYo_U?$Jj_zoHqYO{^V1uJ3S5Y80v=afk>pmGO;Ko#fxVdECZ zUVnSrJVu|fyWqgg3$3{VT;|OK!q6r3sdfW-^GRQc&|}92#7@>|2p(|EcdNN3CP_~% zE0~oD$c`_3N93Qze+0RO|2Jp&E8a1R1HaC6$Kra_sEUHm86tf2ak;+ktL|d0R)rKV zb~DmekZ|*eE_`J(ZWfj54deRLZInP@C=M!onqbYI?u zfN&9p%L*`{?=xZ@ebbPGe4#X(#HIayyVGZLybsr-T=_nrt$y=}dei}0cX#qDPi=GN zzwur>U2-h8l$!d$$n87c10{6^B{-;U<0Udo$?!%^1<7Uf;F9A}A*q8ZvU*aANdXjx-CkYerRx;a0+ zwAlEg2Sk=bbbZD4vmNLzd=Ag|IE9ZMSY69D;hJu=Kj!rdcE#KwMZfMVs}_(4!}%0@ zph0Ck3E0%BHEX{S!-f*(2S@kX>vH{q2dB>OpK1P{y|;b9SWGU8tc}E<<8uF~J*tFN zmod`}h|F5SLSqIwuLGsp^$rm4{NrQ)QCt!c5-NWtTGMDiQIi?km1^O@cKpVv0`5 zcNNnDm7Ogr2kkpye8dgF0Gz4<&5@iP<{=BxowzJYF_f&|enS2#RfC_2l!p=PBMOrg z1LYhHl(dKqCxKn0kY(U7+uicMEAz>FRjPKE$b?+Q%0eMFP1kB*?hw=uv&!jYeey?$ zsnRV~q_67LO(FZLHzS%n-)i%Q#|BRC(A0VNK-rnxF>GF&ujrNn#x))@YmP*|F%QZ21foodzrr@o8jebOUPewU& z@59#CTE=+w@E|Zx?esg|Rd5S2G(UZF}OB(&(@t-jKmyYE$Ct)!4zgEhQ zm22B{cf~Yii;h8D1KrPuG(0%jRGR+@Qe!CP%M-46YCJ%c$_~l+md!LS+sWADsA*VF z{+*@q)8>FBucrUFiZ&OzYN!-HadbBct5K$r@``iKbCf z4WjGNuH2errWd|^ZMUmkPx08F06lMZ)8%WY({=NYrz$ZF3hP zAnG5pEFJbU*K?_i+_-w8LN`r1qA4nrrS5cnHZ+o_q5KoX}v04ey zI;W~SL$=Zqu=L>_$JWGR)S40q2)1hD3KvB~5K**l;nt6#)x77R_t*Q83QOKJUj>~< zC>#7HG!%j68TZZod)5{FbF_Ex#C~!P!6JisIu3$=}z~`zn()w1HW9i(6F6A@x3WLfR))D3FY)l?M5k^i@ow^ z+Idqtg=yrAG@MK*LBr!bf8U$10R|M^4R*|^K!5NT+}Uc?+(Vf7gjqAdt!ZSy`1%{$ zegu?+*M1R90ai;Y9<>O7{J%qphPaN$)|P8}TY*nZx(b3}KN%KlJ|+d7AGk-1ZXvx| zc;4Qd?5vBI&W>qr3uqjjhIs3c&B2zh-%5Yz0b>?>bXKZ|sSz6x)|!|(sT^$EBlk30 zbv+bFBkDz;4M8l{202$2XvQ2jz6%5*C&%4A2jlY7jP6<$UBrpa<;u$=`gJVslVQ~A zZomah{Rz!XesGdojnKkeciVUV!Sox=`7xcT5WN%qyYPl1K&W^q$rgK@HPE_jkofOo z#F2H7fe!=-cp3d{w@YbVc5Ic>?_+*!EWH_Fw00IZ{d=T&sF8!b%>%h%gQ_y(02OS8 zB0;644Tg0tEHZ@6o9+Ra>X&3kj$R6siwaJL&T;5E%~k|Fj+qvEh<16)Tgg0Wez{>_ znNhtj#6U7DX6{IA2+im_P(rD=k3WGwGs!Tm)(&&mfbm@iGKk{}aJ`O? zfWx$|Zd6f8Qt%H0RnYY`rcEaAn*7ZBoi~G>CkjRe2-#u{4e?^Fdx=v*OuP#DgW>m{ zF;q+%;(&f$z(EHYL|`?caEbBdPTX^I&ih}c^ANsRxpeKF36;jS>sNPg6S>~J09i7O zf1+m`TqGkKPrqJycH%PDDyJS+uOxZcH_5(wC?O^Md6ZIYx=N;?gUUc`%mjhk!xM5! zPIh(rQk-e(APTWr18|7bPWo##-66J^FxdAXJ&EVn-Y=V@#LILQDLi+3g`3-Hdet%QTz ze1ktqp)Rj?DiTRA#Sh4ZQK(LX?c64p@g@pWA~sp+DM$4;{DMabh=#DWhvl7&mqh^) z0Re5wd(SRB6Hkkuq1~q~OyI~mZtWdShv=}a2o1a#2I{YM-wBF-`UgON9n7V_Fe^t zeU#ISYR7Q=O_ll4lc*$yvGG6={~2Jow0DS+@CQXj(%RF-hUVv)!_jYOpf zhZ*=rB}4}tBFK0=F`zNtr}dr;Ij%%LF>}64A>6eM(BZ=%6})H6_J=kNS^!zGGB_wh zDi*wPvkL(ky9U&=LIJ~hb|~FhnoamAA6&S)WP(mpIQHk`vKO}rL&Mb)whAb-vh1d( zGX*Au-~Y|nwj8I`ue0=k5C~9$1Ih}rmSuX8eyTL5Zcut_2JzSA4KZVIXR#>z9BUCF zZy`m4_Uu;5xE>Vk8Q9E!Fzh%1S7;Tv954(I86mvp9WQ#!!E-TWPoDm0sYwfS$Bu6-8 zGFKFR3%qkfCsB3@ex33C(tFuoZ=&b}bfw~xx zQV-c$FuQ??Tf*P?lvZ}&&V|ig1%Ah}P!rv(XZ(z^QS8+y=8hgaamHJR=?*0ldY|8( zN`GH0QhufB=9%wvg5H)rHB_GVPa3I+(|NC)QVEFGCDGce6Q??#2b~(;h10amNg+sIXr&hV{72;G zY*&?B;fSLcaN-p>SXip?m1(-r*Gwci?s zvnc2uF$q1m9MF(>n$RP%3+a2-!s!(D!1y4dP9l%zN<1 z_r*s)?F{MzKVvN8AaZ?k;M)Mi+4yZJRwCPTyxk=qtel&1#-Xk8bK#Jq$CO5YPvH#l zm?wEWgO@3ZK6ggaI-gP&!Z@#1sL*Xfk2aV#po9}&AJ2aS@{U!o5?I%~q}n0jX!0mN ztN}^3ybeR zN!&FZEdqNaZkMA=+HX@Sa=Wc#nnH3&rkdt_`SuHMhlm!ebzwnW9;l}GZEN6I`=y#a zlhg9Wn)UHqjfUQ!wrw$bVUH4t0710Sv33m&XQr0nt+LfU%$(AHAohmH45%_TB7qxL zE>jC0Mra9FQS>=7JEAIPT%GVd*w+hp3Xz?XILli%6A7^77nEMPK%P_e(v2ejT-*nk zYZ$6poud!op~=GV1acoNbS&u9JsEGq&%l(M`4$=X`mwKBdT!K{lg)5ZneJKgBW3_d zwI;{vxlz<+eQ=}SrJO$sM72ldFiI*?1bV#zU?jlBBL3=C7JfQpAPyJN>gc3gH zih6X+vc4&~t&4E0wM0yB!6_FNYb|$C5L68)JV^x!%jJk^)|f{8C7G-tUyRsxLksM# z^9zLX=;E<;Wd?g7gTvWK%N$RoIflg=u%=@Rs`Yx>#_a;CxY~z& zEosXVI5@7Qi%X}ma{f612M<(%VtI}`pGF^URJU>bO1UK3Y`5^;s}aP^>j`%;Wa zo$*CJOt&wixlPY8gKPT64z&7ClGeWfyYd^5n78oPa=HL*6CRI+_6CvIm3-_|f4bhy z{8?C(>pW;QyzF9D!ugGhlgh%pm|EJpsMJ{d6q}>tH$6JT><3q62!RH=_!^#_aoQ30W)(w9Zl`nvx-A@@)k5ul zcwwZogISMxalFJb4?bcaDiG{({=A3wNYz~PvUG-TntLNy%G&l+svi+j9@wvo?$o*p z*>k~Yxl~$+Ar3YwhRyNYw6RNBSO2O#iuSqz)r*3)Pa++Ev6@n#0SbrLb#TOt;|pF_ z7{!t2*OnD?L|Q&6@g{a0I$$P09Wz!EX_v-vCpO@okOBY_i(Nf}c)s=dTfrb#e>c9s zBB2ci;rwXr4UbVtB9A8Bzzbazq6GWD7VUehR}>+CKjA}gx?waywZe@_L%MCtXI!=# ziuc}lb5?5N)KrG0d+lJ#p$|nKkEusevMdNRi+_z(5mLWpk(%3@wP7rW`TG-1+1jky|r z`cudF!+o>UlAc!&=_Zx@@sy0-EuqqfxEmK{m951 zz^%Jho>9w(3z$@9_lcc28xs}fL65W|PdGMl{mb9JK5@owTs@YBl5m<6eLB+)-Gqs7 zC^q$}THYhlpPjWdq7Imow1pMdUoE3i0$rssv(Skucgfj7SUYYaUcjVcg$1D+_HQ>K ze!!PN6<|n!F%a%}NW)``ZwqW9`Vc2D8GghZsr{Cd&+HbmJVxfdOAX>;IN~r3GI~V&N*kddRKB_&<@!6=Hn=?p!C<^9Q&KC(#|T> zz|@Ycg%hC=IR;oU?cfXBt?>rRGIJ-mVe*kWiE*n;$7C+0?8e*M-T7PpyA|`5$HK7g zG9ta!^qM3u7`scKU4L>xFFX1)MR}O;x!VAufFknR5TyHbo?#e6M06AFhi1OzK>l}K ziOuaG20>;%k)L_$JlsQBdWf*fgYp2~EoJ=6-@Y(hFWbM00XELt)}Th(?u{im+VL(~ z91~;|7PnfY91S`Mpqgb6VerW3!t!|LFSw|=wN7?8{B=e;Nf*bPv06dNh9a}PS-5sF zOoy)0>-N|@ir6E?nwk*crwKmTz86Q7584m`LN4ciX`X?i4~l~_d&mX&ckLSGD*L4- zGD=U?Kp&tpCnfJHRUWAWP$>TQTBH#3#G@dS8w$wPgw8tLQ{6y^rAug{s0GKSWFht3 zdfcSe#x;SDgiTT~vx`M?f7ln~A@$(9A#e48Y&Lj**TV_D3Q4|I|6Q_mpC2P~Y9b|Y zE4uYP@LL9k83htO-`AQGzVpIMI`n1Bh437(>)RVuW2V>C8bc4~Cte@dArHNZY1!Gf z8P`%Ze~%Rgx=sg~&C#7MAxA zeK~`kVS?F-U|ep|Mr3U4$HW=X9S1U&+6>AaV+44t$r|ngJ72RxH0^i!%v>I;S^p^c z=!%w}0F=(GPDCdC z;mF=clrQLR0DqGapzNs2UEgG`z{Y-`mk<4Y?3&bVZ@p1Uh$Iv0&fJ@1@N*J<)jO#x zF@o=27t6`W-QgUR2GX=YD)58WBV7>q-f3R~Iy*cZTCP zIVEnP{S;`s=IQ5Ln!)&yYL2ipeGeD{v$k~g09u)@G_0lY()TiOoN^mQk`568$1C?# zcu?kBB&566QGyo4xow|7vCrTeruN>^ak+uEw_Xr>T7(sCIF1D0Z@8|dEHrqlmKaXa zBga}X&hrsYFlUSYh&T=$H7D#U%T~^}J`UVZvF*kxq z4Pv2IP)J~#U^hTsTv_I;K33~Kz6&a^bly}&*tW{Ptz>EMyI>?cG^G@NqszgxvsEh@ zrcsKQpQExOtw_lq4y?5}(`||j0yv!XuRI)5OqE1+~N3e%=C_!D)tH z^(4^<8#JBn&j-)N%p?0kx8S5VOdVF7@llh3Bo&pm0UCO|$XEvp)}-+9z7x*OBL3E_ zE6*24Am-&Jf!hXZ3l0Ia-}uOfk!e*UR~1aBBIXI);@}ZlUNm)v`tTFsQl;~qj>4#c zWcL{(Paq%V{!h4;fcllQwzML27ke)PkW?|9FX1)rqW0YDSZp{K=WdWu-X$h8V9**5 zK}L&cBx_)#B+f=XrKd~JCl^|Y34Dl76(WE2_GHrq-5+W{i3F}rW`UO?M7^2l!Qu-} zNheR&$yseMA2N}3_6e;WSpa`o%aLn;Y&f96+xeaL^Nq6SrpC3E%)5nvpeootj!=yk zJ+1cq4*N(k|C@Gpb`>Cru*YBx!3S+{b#VBrAJ`ikp>7|Y zMUN>}+l-Od=)y_kMziIf)H4IvXJ|rpU*#04DEfEjZ@IOS_Tw_rG0tSn@yUU4Rb2jI zHBQzLf9aGMWD}%g7Q9@gu4hOL4TR7ahd7Gga|VsR-@#hqEMz}XuepxaVx+0MB?m+r zvRFax%}HsL)SO!#{kLX9k-{HzMF}OczIL>25w{=3#E+dLY9Mh5SR@%23f)AXK~$pu zKxyH|ke)qUsnKn|=Y1e>k@tE|02KGJ3n zUQr_x7o(FaQ%56e!0B*BI$BspWnnqV0TyGxtiGox4@4q}y~_fWwTKOkV;rbeEY@8w zW6M%vUtiergpx#`mOO@Ae!eGK34^tZ0pC=j5<;X&+w4D85_boHH1ZGnJHU# z!p^GEdU=`0_Oh4g0wC3Yz6@AS-7va-##@*HO++Q`X`c%VgPeCL&sINuFC)qyg2A8) z;`lB-mNN>}AJuf+s|BO598BvW5Wz{N_2@S-`oCf7e`7DTOegODgG z0?To-5c+6XrZZ+IW|XeGrTHy2klE?+{F~yQzrj?&E1U%qL1ZQEqY5^Yp#}Jg8!K{_ zW}2$bJqci{rt%C{S*&bqCNE>XuXIk=1)-)Oh5fSHf^5b?fT;4ATQS)J>EP@Q=it&W ziXe+%*pB4Ow_Eoxg1VW~rBx*uO@~D(xoMljO=NXQ{5057@s{Zh+Og@_2Mv)qcrBiO zbMKa2_Vh~BgwE~<%gdn)Ps(@pzjSPXdCcJboz6OL9`rjqX#*Ggs18ibTV$}MY&@Qmm;k&MxXCYTWJd!c z21@Vt!Ben?=q-e7^aRaJ^UkavjUMN9)g>}k+Rdd(&zU(2Z74tR;bzW(IVH0xU|*== z$8lS>rq|L9T;0Ko$0luSVB+HU{dy}%*b)%O5@G!tx|{}iIQT|tt)!14iFVcJ0OC24 z?2we#Jhv!$i{@0?Nj>0o!F^Pnvoc|aBqI-I8I(W8Vy_FUS$VIKYmi!GaMklLXY}rJjxmIIXrDV+;e=u^ zG0=YoMdF15_t32x0*2-99i09%J$ErThE)c9p|VUr@A*Ujt8G9Gxy@wta%Iu6I6eCeIs% zna_mi_eZ`#zFR(7L=7CO7Ileo4&b}$u`#+1qpe)Ni@;idd(;O{(t@i~`uR+ICDw1r zZbty5cJeSXO=Qwo-ii|?+s#8UnS_48IiOvXm_9+DhcxnZ(VkipfG~VDU@!}4?~XBV z(gLP_2)j=+XAaJ#YCZfZO{ray=UG>k&64oceDy_gC!hJ1yvyuHM(6cG+S^W!4rotU z@TGeNVIs|w#1e=LfTlAQ=6k85S4F~x&#*zv<^Qn%79CC4K#X#0<55Gk9>@4*^on`d zM!8p_1I9!k?yRdIvd_gFt^xm^vf3V?!w8jiVzkk&&+4G^;Oc_SJvcIk%-Rxmj$oo* z@7VQeU%fN7CK3q3`DjgL^fRXwQ*D`H50qL=*ko97XaP}HLQG?5>JNJ}F(*&X8_8@o zk0+`!8h#!2W1om~71Ujrn>W42O!h|3dp&U(%dBTxw9~5QCC@1;UdkP{v>-`q23wp= zou(b+8lWeQ9Vnb=Qz`|>gx?ccm8>}ng@fs7FB!7pug(UtD^J=~l?rP%Lq31Pg@lxs zh2(R1W4Uv`r5mqiUgx7En6M4U`@3%jl6Fde6h9hPWxBa1FIIOJKcwAEV)T%4+gDpF z2w8($~$21W0Kbx=@CXOzvf}rn3pW52Yx*ktj3kz ze&#tUB2BSzQc4Mk>jcnPXl2ASQEd|3VGH_RpES9keoJG)=@LifZchtwHc; zUUr;h>mZLB@EfdfI0j4X%5jn24e!7c`-q9`reaQ>cuiW<$Ada*vTtGSt>Z$bM)UZ* z>yh8Mf1*FLGswjBF7}5pI{oVbUmfsAy?lOhkZHK|{0Xjy%d-a)+4{ReI1;*1Lopg* zlmh#5efH12_+2o3Y(v_D`|Z4NoTu{_`cPAuBc znv;O@uR4or_J4fnQKC3b=CuPq%64+_MmL2RD&{O)mGQ z!r{*+f7m8o0zV3_)nKBtc%$AGc0!-H(j6*x3o0%I4)!U#+-?a^*@T79oROhkz;u5N zbl#S%^8dBbjEm6D;P){o>-^#ly)@l?doCrgq##AbbP2uO&eky2XL2^Af0ww{3CS^9 zLq*7rgGP#bs+f`rh8Y3YjBB(RW2mHefB^+y;cHD*N7@DJ;_!mr6fp}!WJ4DAe3dRI*%AEQ97Y{pC+ zwrX?UCC$?4n?be^EUb*tKnI@3ptg~9JS&?h_#|J=0h5LgU_Mvihe?$C>%-l9Cyu6{ zT8acF9e?JVLH`pP%O|aTu7KUbL?kJFixDb>Wwc}*R~aT?}+3JD`WX!8fY_(d>gE_fD#tAFk)rpcD=3Llc_$`0s-8yULP zP^dEmQfOiSjPXsC2tXTE1#|p5;+C~&1{J0qZGl6UjZ0wzD;0%VU_AUNh7f4X_W5^q z#7kRA&YSHzf)T);N(M-zr0Q*^&le0VX;dThqs6$q{(w#r4}@4gZ<}oMVB%Jr&tEo1 zYloO7G1SZ;a`RBk`qLjLeB8Az@>twF1%#|rWbXVznH$*}@W7uE^?mCZqgqh1mz&nWtoo~!(4ssK{Nn|jLPlb!O@ z6fycv$YKu=G$jkNAM@l<6RgQ>l}nLXraNrVS0alY;Pdx(1cDC_9Sn7n-kJl&6Wp5M z?vMFF5Fjp;OTVIb@F-FhNqd_Mk7ur2&KD!0?h`;y^|J1JgCf)NtCC*Q;o%*dN#_jy zq_Vu0xSia4x|C{8j+*zfs-lZMT5XwFtDgsNCRijB`SrH3+0`#9Q3G&FYSH*4Hq7t} zAgg~pImdB1G3emf2MD2j{>r#yw071MzzQn%5i1_5%>` zACgHPAdO|i1PnVBk)mClK50WHj3jL}Ds~Mzhl0y39g8X0q?yOf7A*AZkAqg)Es{Ckp;cgK?g{ zj!I14q4te{!#MFNQ-#i|0m~tEkpHG=KEIyUNP&9P24#N~=XR@lLcC$a3nw6^{|lrd z2c8-WBb=mT9)C9-ClS$RKGliMX`k*svj0z}Y5O~=V-WDh1mUvJOlZ{^$iOEGayB~6v!eiWHFMROhT~=JU}S{MV{sfOj;z2x=Dg__#q|4# zAo^%tV7if*=PEf8aiUwrATttsbT7x$t7R&j0Ik8ZYeVT~>U61!n;F*}iY435tY~(S z;rqTV)XO9deNTr7h{+#{3y-{|*+CS-KS^MaV#yx~cbOt?pJ>=_?A*d(jC9j(-%=gF z1^XdinvNqjK6~vvA@;B_)y;NO;VmH&57jk~4mYkXnInPCPY3)FJr1UR+zPhhP4XAo zh0^AG$}d%*M>`lo%Ij_S%(TQ^V_Ejt{4cRG;T!MDLUoAwD?0bZ@jP=hbtPv=4J zK@AIaIwH1mdNqvSg&$ z0d;cRxu($(1ma;Qf9xI~q>&FW$#mX>@=5)mT+xGJs;53Y=x)o8HTRYIHb3ECL_|eVs^E99$r$_4Q>If#p8oz= zxkxt3J1jAB<;K*ru?kPn=Rl_MJv>B3?N}S+0_$87=uWrEnj_cREXAhec>1eCrw0{M zX4-^f1dU=2gHh@)kh+{9w&mVT8_Duhx6B6)+C!}Hm*kuEX2V#wp8TrF5$?z-7MQQ2 z=6@@5NiGnLWA+!%((WC@CaL>ghSjn_xGHxK8dOQlm4p5WH~ndB_HP*K%3uLJwF1hM z%~U)N44QFC)+O2!>Kp`fp93g480>dnF_blU5SNH697d1nexzrxYbgVYbR2y&)>?Up z?xJP~nm&Du^^sUX&?Zw0hwt3IaFb|Rm$peuMzdQXyFlwUnc}d^B_wcT(>gL*-Jpuy zs7h_yt(l^tWL3Eu7*Pd#D^d!|oiguTl2&{{J*Ed%GA1g-W}aD+TP)W$4IjQ{(5A7B z0ri@>%>;XJCOo&k`{N)Uy&MuSjhM;;l_Dy-gY^LEHPmF^f=)aO`Q83KcyZ-U2(5K@ zqvZqBx5973K5qCP8}_3IUFD*~Dz0H-h4~NNynF}ASvKA~O=c}U3I3g6zSBMAwk#9| z=v;!UGbTn7P%qm9GH!3gj0N78wH7pYqTGm&RU7se^56M8XIL!dlx&?Bf&FE%CIpm{<@H?!a>17cj?-LQh>YZy9xTqEwdZVY z>D^uYs-Z@-v z#wwJ5$4W;!Yxjkhk}2Q}1^EWb#UNKs(&BeFoV#<~n=<(>N*9U?!#M#Gz*_4bT(y5v8PRUlkl?-{3{b#mOnC`E1J+;XRr4(e1GZ;8AErH=pEaaE4oYL_7N*u6VT7x0Ri9oyA{Q>j5n*T019zrvzeeM z!Bz7p1%DZBQ+h4BGSd1=A<*nVay&4yu89NieG^#hPb^xH64p*#CqUj^GphW7-}R;7 zyoX~u02|oaM`|e`KEli!_KM95tO8B)yq!`GGb$4>b|lCjRj69MZAm~(u> z5t(PWF9)Y*O+*zgI|IOX|2h7Vx7dH)_o5q_)Q4d+XkPEoSU9GrjQQ;pU0;Va8{mEm z@X*)PBo>n9QNMjtuh$;yk)aAxp2^%K=_Xri3t5A@x7%2X{Di}}|4)tHB6KheYJve6 z8Mr1q)p$+rkvh}g_m6o=`U|8H6R+yE@yR}u7^9 zWXRqL<0*IsQqNvjLyo%DgQh%Z%d#Q+!_|B`)#$)}97G<*;%K#sfWE`eKHrVVMRrR9 zTHRqX8~(X&Qn;=ZJ%g5yB&QgX0o&zAMU|gz#qL1YTV;5JFJ;y45y1)e>N}t^qH(|( z1iMI*Z`TKHmLKcO?)gs5Y1@A zz@HA}H%6F_GCmRf4|UewkM;(%2ZzTL?~M%u(n2mEq3vQ<0I^g)*f(W5&(5X>iU-zP zSj()c`l3D}2?2-b<|e5dq^wkG|H}s9%(2Es-qK*^#{?>wu$RwP-FY^L21;4eF7F&2 zV~4TDRAbPx4g{Ur1b!7H;uY>GX_o#XJf!q?3I|Bh6t+XooXwGeSEm@>bfAUNfysDz zS1IO;6;2Obqc$b=V7XTIxUf(^AT`k^{?&j{=d8=2xf{L`y=+k22T+JE3*864a;lhx z5XGf1^^9;8HK~s<@()IVU!10h3wmb$j=S|j0!HES>gBnnot-Xwn*Rlq*^RTTgWviF zs-D#PF46l*Ov`|#oYg5=DSbLpQKndWu}Mppy(#cQqS5_pkaxz*YKR&(U|semy<9;k z>G2bU(o=>tB6GHar4C%}`cf2LkrI8;9i)d%fYRiJj|;Bzh%|22MZo3((E$LKRTA zqA|S@9_8${y9oPJC-mkm{-Ee+Dre{vRBN-jZwuKiyI|rfy0RTRSMa6qE;T>n$bzx= zq@g1zS*fWqph57)nbW!W8;3jbI!f@BNZhXo-6ikn%X}ZlYy7vzQE%jI2y<$l(|^yI z1yMvuw9jdZcPhg!uHVIUnd@OGwSl*`S6jrNUK~%wkG(8a@!Y%J8n;pn!p7M_IheMP za$Mhl6Yf6e>3g1FXqBnO(Z*K0Tf)mNVCpy9}OW@NvYQAbY^aCuc*EWUj~saztFt|^~=3I2fx?{|3#I>@VSFH z_o9x_f%=3{Kyl2gocKyTpd!30U-ujYh*?-|Z4=p&9nBt51YE<}Hb6h#7!mMMGNImS zoHfuoIfF@;a@^wEitGRLK8)tJeYOKV3|1)tjz8WATj~>aC{M7u(BP)k^a^(%d{`tT zY%1jJA0hHL*=L3*rCIpnzr_^PkHWOAKi4pW z*oZ^%2K<_Gnm4id`DLZ!+Kx|o5A=9S36URTK)7je>f0ek>}FSb8C?QLWt+*KVpEFYx`)r<6o~tFJ+`|I7P103_ps_RH3`^9V%H z5yPOrV-^3{GXYAxtGf^*%j3Tk%(qgc5+TRRv4R7lk|qdR~#qiL!p*Ba>a7&DL_>U3Z{x9LHoVL=*Mskf}lJG!&OHDDT zvlmStIP@}tjz5OSm;+C><1f*%w4*eEZdV%3L9#^cvIK8|iZ{{WpQSc52AbE9Fh0}W zj=U#BR7DQhxSR_aG;VL}xFkT|l+mXoLKaORQyI*bGB;&VI;4LS0(yx(NOSC(Bb!K! zxl-uvas}62g#&12N7%cpGUwDd8&-VA&ynq2aYD#LF-D}&7|i6A%>~%9&nYY?h_oG= z-b->`NMzy@lOqeTlW1rU4_ja80QAYq+YiUFI_>rUlj***>x79)5L#A z{*5x#BOXsWD7X5D@8l8UMg()6tS|5`HR6Z&@N|P!G;JLrYUH{R@5P+9p514rVo&e8 zOL`JmviCwM0x0X@b@0;Y$EDlkpk5*TI{1tKF9-{oXF`O+3@eZ$H#4^Czt-XK{Fs zhn^{MPH*K8n(@OhpskXCN!CHvBnHWw-@xeI#qr5+X^B(0C=K!R30?%m z_8>g6wFqkA8Bef~2^!W*u+gYww@aX~7$&-^XZIOB5?Fb?$odF2|88-}EDAxFJouKM z8L+6oe+9L?k`>)~_f|jq{7w~Zy?J^6{_hE1FePHBt^L4)%HR>O7I0^v^0vu7#}-?| zV5P(ta!8S@-I2!ch3%#~klq!5*+qiA7@5Kvr-(?CL zaO1{qQtX4q8LmH8Bi4{UQ?rc}ZkUh;6o9>IpD$ZGqZtAVnI%A{A56y|as&ii`mqX< ziz|fJC^w$LJd~joB0^iGP4kYJdDZwo7gKFm@F%)C&L#hvD%st-{%G#o$`#=~*swRfI1xwqq8)HAhnEL}ZE& zIG;aM$8_71V^w@LJ{QGPm!(I`GdFz=S6dGIG||oX=O zid`S!mYD`hFEeKVm)#BxZoM%mv^AOhW zWwFAZNrpnMX zrd5Ip#xb$C%%-e~tIK%4?_-7ToZ^rb2_|6}3Hu`9rF3r9l^%v2564i@UE=(PB3o${ z(=gm!(B6uXv8QzmfL6CL5lK=WhqR+dBy&QwoffZY>^ zDGq>Fx*=s#^zLC5_`zA7$ZC5RND*cM<$b0%CmVd(A*EYy=#TO*8>`Z5X00!q?l*1= zNIm%U$2WE^hU19Z_1DMOHfU@QA!M_CxE}ZU8*(hBLNfIk!IJH))?*g4HgL-0Dytb) zH3JOt(>BT6g6w?}wa5iOa1W8&g3GZZCtdG_PvyIWTn|^szx)^Z0Y_g2goW2@9&hcGoMR`AFJ!@(DYNw)5BR%V>h-6q}kYJp!?%a$0B4O*L zu{sPm(E0!dGktGbNh@}%cfk|rkr#1ikdOox5U3mv%`qmKY%qPjdCRM4Y~4K}{&)zu z=usVq%|hp(lQSPNPwO%iP^>vanPmpb8ShIBX2{NQ0%3@Z2>aT~1!q>3jHM>xEJs_V zq^fr!UK$+CY@+-F0+#wlbMRsWhE&_~S-F{HtcvB~Y<$0@(LpE$s`ZPs=K)yIqXu6q z-r5)alCbVDm8}nPEwBZjAx6WLtQ*ZdCTD8FY@lrZtxNPNm44wWd@-voFMq`JzqI%y z&d8v~nc%f~h({Scq78tecjqeP4O;Zn62;w^P!-nd)236*PXEO!eUUzWo6W~;H_G>i z?GF##p^_F8J#ZNb_Gw05_xj1@-!I@&hoTZnuZ-hJiZvXnGft|n9fI!6gU`A6ojF0* z7b6$F2xdO$Kb;&U%hPT8ie2ujFP!gWk|}vCrMA{o~w?ocv064U0KkosgLSw&z@lk%U3iq@`c;w zK!hx&y5+AQ45fzFxs7&8t%AV=Mpm*MP{iqyqmhxD~+B`j=?<=b?12I9r}UV_Fx zOd&WxlZgqD5ajaJTYRX-6QI;XpHwmPu@D5#L&ogU@rx%=(T6>wb=&^t#~tz6QWt;u zReWzWn24{_I@hoNboN#wd0~2$fJsl+dL*9{$?0@W+s^7m40iAvBTkX5;CKqq}|kqJbr;n-rpHZ0jrP`hwLN z)5SPKG!o-4v~`A)c0%d*p882{Cwymw{K?bAr5Tk1GB)(oZ$UlS%}@UcB<00~t*J`N zcYP6=3POxN%0uiI`XGtzo_l@9ScPtlTaxKlH54>P;+wrLrmfT_Vk@lWvvT7-&XWRT zpKrRzf6`Dky$$OE>mS1vfHEXRg8i|C^=g|QO8xjHu!XZm7JZ8ZFGew1dJ}=~AFISs zd~{!eMK-1jfcYbNIeL|6e6)0)AFh`PwQ*^Z<5yQ9R56`e z*JUF(1G{5*kK#7bJW49;274O_GZX!LV4{`wl>w;S?b#`y(rAT{2#@D2?o4Qxf$GFu z0$A}d7NfxNzl-M3!(d{u-ph8- z&Fn+o%%EN@L)0cU6_=U`+PqbLQ&UnQqDu?-){H%n073xsOzq-;mBW%EJB=7QECMZ$ z+3>3garVgyo{SP9R~)$EP2O2>O7hr3)Pbp6{U{3L(Ltd81h9THi08hb3MnnN zN`*u8?hY=4DQI+0&IMf54++b};-kJ3xMWM|eu^6100Q&S&N6aE^E+H<$WXW zq3vl-DRNn6>sP%)xF3(ssR7~&M~$zOlsl0xM5g=NPuPyM$-dlOp_LQ>XjP6^C2$&% zko#AtmfYc&D!akASnOt@I&? z?z<9n)CpeiHgovOy0DqX2Afefq&%$cg&ybuD_~kNwc~pdJ~%@#MMX2@KN&e2r#{$il7s zUQk6UW}{{=l369IBC1b2s2EIFI)t|Y8|rOV?tfB+@g^gi$1E)76N3Pr*ou&ajIH}SG^B#JSu@#!t_0UUgqO)xfKY$abUgnze+x_Sy z6*6g|x3=gJ8Nj;VTKQE~= z8t4z7dyrQQVqy73*Nx_LkFTG%68tFPnJo1({sdKvwLP%a=^PhN5 zC|#PImUpdH45m$PrY!=m*tZ)8c{tLIYPK&xSE!RKoY zPvHG9(k6y#|EP07onN&xD#Y|uCQ7FTMj%j6RTa@X9wy)**W-<RZK=+s z#ZR?A1DUC^(r(i~IiRy6Cyl#(ZcLg|jjaVq@hrOztsuiXtf#Nvue z+#qmjOuGCgp+z2g8oaUNf{}MLDap+i7kUp4W(BuSX^X*>HTeh0(q zn*aCLmpev)w*<2pYlj2jimsv*_7E!fi`xB9{G{}684?0HC%7Xpn080GYSiqxEz!@G zkn-EEnYv=imy94F|sv&BP}Ef!4=|DudM5M~6lT1W>NVceMX zcpU6n>bHV_bu{&xpiHLC#z_ez&dB3P z+;o`rfor^*!$7K@MgXFZGZ>HZo?F{$Z}Z1Nj$u`SAe-`-OHyWAU0hjlh|rbJZ`Z)vBk_V@;~3? zi33oHdCcYo8^Z0F+%Sgv3Yf0gB2U zRjXcUye_ZXyabG9fSiAKU2r(zD@rA4sgqZ9fsod z&oWA7@sMEnt&F3eza?WE2a(4fv|cWbLs4WZcAE!mq1R!|83TCdM#q@T@7InT$T^am z+}lrGh>4xMQws0?Q<0#RX(hwdM*CEgu1Q%-H|0aq8gl8s!d9 z^RPT;m@-a$pN+(=bMeSx)urqzU;`%AwdusBcqh-F4wXu@L^hU8l{v0_Ix%h5I{X-J z@P0*Le~sW1V0ZzH^YRkwm8^9uU0>WJJe8z5_%Neyrl@t(v_e~8M~rolh}SPJ^b?IFsfI!}?Ns3p_wcLx9O z&#i*URtN(2(zhq*T?utXu!7-kDQdPZC^lhrb&k)&6^ORhSa`?GTl`z`dB9D<9Kc3s z=sY}C`i!+cV6|~rOMBFDJ8WB-%VuxB)onc|9e3`(vhbV!o-t0ese5jdE@8Ht;kfna zf8t%DJs>xu^#1ysm964wu}E*)qM(41uOx^rini4GsY_zbN4B9^Yzz2AHaO0-abV9g z!pMN+#E%Es7@=2r!Ths8Kp%;Y$dtQQI0|}zKvelRj5)P`#GveQqSmaY^>&5P(h^0s z71FuyAHG)iiK>BXIin0qQoIH0cTh)d0?B4@-svVRXfJIP$FQCd-wbi=Dvs7Yun3hz zeSA1C*JT6?=eZgq)`Q{aa%=SOzjhBoGS-tgu*F;p)tE4^8M_lo9NTKH4x(C-f-{7a z#;R>>9>0z?x_Ww0@M~Nqe3wqB?l4N73UG#2%An#~dPD$|w0IEr)LV^(zWOcLEXxl! z0{MvG4W-5l1iBJGZp;J^N&5|X@^Ug?$`@#^c8grW-7LHBBd7u@2yLw%S8e8Ljj+D; z(S#7&1%T9fQR5XF9+692PMoXV_LZ*tjXe61z%6vD7>(YxPVRZt2D!tV z!dV7zZWxKi66vcSW6IbUPUM!Lu9~p7&i+JzVGxz=dAjd!Llkm=1oi6meBCS=f@jO> zonIP&Cv`%gPb?9)ovTBPY3s-S^XLbHRI9H29l=tBqi+a3Jr8c0$$b1>M9>_hC6S6? zOM!{N9%19&)Runb_gCC|MyE1dyeZ$4)pQSQzRQr|A@D~tF22Wtd78Zr}`*q8J2@9?2_QpRh+*H8o>h6#kr z3!?Np4B|li*(%s{Vtx-;5DL?&k7HWzA$?4s@wxO1igt9S1J@WnJD&=#;DQ{8@zFnX zWi*R|a1b5|7fByoM0d46G40MsInkF(pE9a@5o3#x>A5o5h**GGSAe#yxg%(73ycZBo3w)y^ zMtd&9-EOmFGLz)S9@h$x)VOers%d+fU0*rMUqx75!?*_R9ydFsKO+xU%k$bh2#b;) zQ!obZ0EjRJ0$j285py7Y{GnlTLVPv0jcQ+#Fm>6srfe3|nb6*jml~iQhKlTwql)r= zKor)ntr z_p^OoJ30h9ze)rM8k(}VP#)+^L9=_vfFzDCld$>P{Hz@W90g?C}-&Bt4fRmr$`G=S~Qh!$f=4&qmn2Tlgw`d(?1=qGDN3&Ryd0mPvw zkN?pP+!JTNUj-siNI8?-!M`c4ZyQ|tB6s9lK2;wcy{BGvkDWFG~(C;5p_FwGB?#N^t%v*jw^+xeC_uZsm$<|aQ*0lnm_+ZtMf&@M8|)l zg%odkoeJr^WC&Oc7(T^q{*8!NNlXr1KYtKFnwP@_wo}V3zZ+m=^XkA_2-w8NHfm$f zwD9~I2-I5lBGSmOU zXN^4ggKETGf!gqPOm8+XL25+YlbC)K4JjC^0T{+lXAH)zCM~v>bC^+$zUDOYL|(dd z<(1_unEUXc!(=3J97lIGi`5@#90gJ^$Si z>X-S3S1e|Rf%vQ*nkOQFM7rGZyeyR0We?rH&=DX}Dv-|jw|Dk$#NnnoJ~%E~GF;Pzr&n3}ED4It+94@%D1#$Y$4PkyTeZ zz0+9gQuvaGj$vI8DlNOyw+}XUX$q`I{k*@smlCok#i`;fSUEE~$W(RVIK6Q-C>Yh~ z!4f96@ISB}+Kab|(Cb0-Uy;7EV#Q7U2YAzfdfeu8-)tDC(v)>NRq@jKQEqF5ioT3X zuEp-+R4rdbKZgU1p^zEir^dNjpSQ2YC$4Es&@Fs;qPn-vC6`}9--lZ#-CqKIfKI|s zTG(A6ERrU0e}Iz+FeeTeP-y=18T3f#MeLOq`a1rSmMk}~K9kA4>xvBMGGE4B`^CK@ zi3Z7?or^l8(Ooxwu$Xa!M$OGkd!y9PGIAJ~1w$l8<>S7b78voD+kxVE5ifU-2_m1d03X)KzH_$fq zU1D#r8ige~>0^WQjCW94*asU=buhP&5FL^}Mh8I=jqa`No(hr|)JF(-HgsB8aaBp* zP+L)~R}_zL|8+p|dks2duh1xH93O3=@j7`bmq8~A{@f+ugGC+3aQqR|M)W!tb&560 z5M{E=1v0sYkusLDwJdGbMkB&h8&VgHey%M^!JCQ;py(Q-V#o4%d|@><;Qqw+-OY3f z5+ti!nM9jdXLqWTl_EGq50qJ!uO2;cn~26ySb92@(`ZRlKW^I2>1x2BG^F!!6dhM% zFSZ4S82Q|*a^{9)EGrb=Wp-f)@oJ$iiP7KL@Gx6sqVoAN zbuX+w&X@_!svo4pgK1D_aCrz1KN%l=@BYM;{Y)n@?yy&SK87~uyo2^{wc3PUG~q+5mpRZb;Jz z9r0+>6aoGTr#nSIC};{}68$W;c6EL(H#wGDb2?`?p%*YI4SEA?B&BYX0UwI{0pFbf zLuiLyFXAr6>a6(4M~{}QK@-CxUGKKsV}RAWOp^>SYd-&~@4VB~;ae4##}dU)oTCE3 zKmop?2}gUPCTbBNs{ykwxEI$AGEwRU7x_8%*G&1f3#&zSJs454evVu$V5{$iG1F6EoK)fPCp2y&Z~leoIAVmaP^sypHL))Qg{?$Qr7{LG~%>T zA{Rpewz8*OXb93p+Bq+H7D!mWtr9YRKNI2k=$$`y>gay4F6pQCg1*Iiq=?<5Q^jRj z9p?%6{teHjj&QH2;aOgyuK=KY{#q+{ZXs7g>P(cis&Rf>>YtE9Q~X@K_fwBY6!c;a zw_;&B7lP;h@N~z_xl4kLN>UIGW}O2CI$sP;i9DSY^Wyh9;H+-DI&W@!K&8?vp2aMf z;{hQUNs!RMlookEs9+i}S)GDXy!l{YKWII!F=g}ZnRqtz8@&WzQMBGLmk zK@6%6IEqSxXTi@ee|A>q1W2X-gRR8hxaHR&o=k(Y?>7L?B^$5}l4uH;S?$`#QPI^d z*TrVm1u?Cxa$@>F_I|_o)&9yM6MS%iPA6T!gpigrtj2NO`q=SI#&0PB=1>DY@p$Er zw4pD8cee|ruGtr;1A{Vu1Iqf?k)3XLBKUhvV<+2!P~dx-%X~3QRK?)0sed}@HqM5j z%CK_I^1}hnk@-&-VneJ+YZhh5Z3G!;)b@dGy^9~c5XvjrNXD;T0ki$hfBsk9H~6P( z8jbEf{RZKa;mvX86Q3o{9o{*yDokrZ8H`{XDSpWUHEny0PA%q|-$QDSK}`vx8BvF3 zkhmOq0lzWo`lYtaNH#zo8?Gs-YS0j}diJd&m@LOEn6Z|esGerhqLTqbd^D}hb_}-r zbqd?>XLDpd8mp-Pf{^U{$K2h;P@Z0sVQ=W=7Cg;!@7+ob6b~6249UoyeG(^ylIFX> zq0Sf}&XA3Du{M$XVc@W1#=#1+QT!`C?g5$!`{=M4UnQDcyE?mKIk(90zk>p$YykEt zZ)>wn@b7Rn8&?}%%n!VX=b}0zcy+XwLXN^O(kPT-!m-0?vmXSzj<_9Xl$p$+s23uB z+|!8?EQ$RP>1I7w_k-LeZJXl29PG+4`mRlMX&1R3LcnZuMHBv^QbY9aoT_F(rp zEC?ufC*Jk3WjkWnp~X6s{~%mBni$z`3ioIw%~8;W47XCt11J8$+Y)J?p?x;F2(`!R z>x3?Rf)PXDWKfblY*rF%0oGlqITcE}Re-AmTCsupIEHEi{3>wMl!MGsenWUveB(PK zyOADL%9v=Ctzd+_seB$HiHK3a^AgViUVzl7LZ#CLr}Zyd3!Zwh$;`eNe2Y8?5ma7e zri|O3XRPSqpDZBYI3x0oyD0z5>Z-y6*2z!tv2~Zxz?_tk_>NCpQ&Uj{V?OJH+{d%6 zo#Sif%8iRuhD5hY_APdo196;I@1?B#(JZ=iMcLc5nSV$?sb>N<{mv5O5bb-g&%{~- zuFzu_6-H3_HowU;?$baWa?AN%ujAn~%(J$`I7=D3syL~d(O+%^LwIH&Gov6nDwc}y zxgWRvF9F}z5~VA4sy*?h4?xnY8_Z)?GQZxZ5?XNBhU`xwvK59`=N^)Vx-nI zK0E&n{=e*B_~_U?nji8~m-6IN(&7xVSyQICHMJ#|!E;#1nVHAOTq@C*`1z&HU-vIH zN}^|x90e|&v#lyRC>Dt{Tl;VfoAP;bcms}bEC#;8PZ8{O5&U8Ijwtc-`1-=PCo+S_ zoc3RHix;t>f?ltt*)M8@Eo8B}rAxC8+hml}eewn8on_O(r-Lb78sMOlr_pbU1TD__ zaX~Pyezo{>G1yskY^byJ( zuz{1?P_vkoh>b~3VY(*0rk1v?yD3Q%C~K@zBU@nZUN@b7zqi*0*>!ByN+BtM{+}hy zCo@7Vb~#-DtoXQ?I}j2-vNe5)WK^(IE@#|UIE_nR2+SF57>vKkwrg`G?&qujqT+`+ zy{Osqf0d@{3p6W>7X?f(F~U(o^Ru1S7aax8^@Q|khX2wF7A1bm2UxfXBmdZRjgOz5 zR3ci!W2V;+12KuLusy)}R@qd=bJ6Av*{#oZe7(mVq@#b1$$YWFhzR%rwT`Z7>hZuA zOEnNei9duur_mP7@3Oi}>XpMrgT;0-X0G-qN5)2Y94NfdaerTa0LO-?vfJv~!0j#w zmp|RxG^)rTK&BNaTQ_WzJ-v5RLW%?a`&UOmYA1@*kPXrzn(!bjFhC@i;}Hj^Q5F%R z>rT-55Op(=yWWlWLU}gzX`%#z#G0yu?yzU_YL>(#xura-TL~@Z|00v9JPPJa)O<0*WzdP>=1)bwORagQaK>Yk_GiUsxA82xNUSIFw60hmA@Fd zYilNP7r;;SMS}C2*5E2p)``)_o``%CenT>x&r5sFy#%Opk=0Cv`D^}Gc+>SH*>^Vt ztNKbiSoh_IKi-Mv^6k9ptust!z5*kS2Ry{_jnc{>*I&esd3&7W8Oe%4d3S1}`*8>y z(YssZ@qaB5mwFT@OnMaj%f)f_FRi+wjy-oQKHMjr?B|>U^c&T4`U3w6s=2Bnfsh!@ zY@DTIJBMAuf`ttsuYpj`RyfAUR8lR>o`pbxYzVG!pc0|#Z!+`v0AP4r?^O{DDU|kU z{{vAY;8dCL;R}cc9dOps;R#TM!+0mu8`8j1O!wv89Ea0js{xOoVhO>>l`UqBL z;K&WnY9j#;<3JZzKim=m5ELTX6V>LBL-g~Kdo#6Wt=Blw5$~xC?U3W}2_9|UiOog7Sk|&9Zd`)zXq|r1W#y1wz{V82yC}Y|H>+<|6F1c1n_i( z^ia3}b5XyL8vcyX;ov^c`ulLAu7x#_0K`=(Y=(paq?smLcQMix$DL}?t?4W0oB%&* z&@ma-3Qh@5_TPF`&XJgDA;bpWv<}Ueyd{8DAgA5TWJfHH9l09xqQLmul?{&!rxIA%+92;^$nPv z(InPIn*S~Ick$El`vmEI1Fc6p;Op`jYT85N5KNTxB0q&lgr~Q8(HMjDSiH!iE7;yB zD^}mfX-s6C0>Uc0KER8gW^F#mw0|gjV;U2In&jA!7p_p!@82Sbe@#P?o$aDI zgQNk$F9&lx39s1Kp&9^DZ!(L%7oY4i9Yrl{KQHVcg76>C8m&Je_`qk}KiUcDaCDvJsR`N(+_B~ZXVwhJ3CD%4Ebp==+>H<-3g zkusuKSm)2Ki(D0q6uk{V=WcZ^t>o((q*^*ePGyxjA$_oidE_n0r8`RuaJ;gSlokf0 zAex=q0s$SqqU9c{;KXfG2Repo%nS>tds(kUne+)IpncJ<8}8)jrFUR65Gi9G@`{-jd& z8WmiA?PWcg5z@7|U5<0CEoC8bDC3-lGfn5^CHN9vtL)XZ8q0i?QZlsOf9-$jZ`C)75yn)NF?-mv0oGkQ;%sA-MCGR($(tPs4hkO)1eojiSAXA`O)rN-9>$SsUR*my zLSg-A81Us5xdk4@iMY8R2)^sdkd%-W@a4`I&EoEdXF!_gdcYlaaZgN>{*Dl1rl%Vo zFFZkdggis8zIaQEQ;^6j^U2W(9$o8_ob3~1b$H%9fQRza31X&DVj zF+E&wF>03Zr@RrXbC+(~=_((nt}Z%68guNVfYUmUOhNITqFhzV=-ktQzS8(v;Kj$X z7i#T)xgn4k%JJp?u3(Ii!$?m75;8gdEN_rpN+M7Y_Lia*^HK;`(oreX)Wuvsox9ko zA{HW>#%M_lP)fa+$dqt)CdLLlJ%B=dV5glb#q0~CRu^0;^jaBQsUsh~kbC!*Y-7?{ zeZR{;i-mJinv(PZ`YrJjnxMaaE!3iTap&ECQVetmJ{<SeVA-LQ+ zg$~Uf&bOR-@GZgGzR4F_7vQYaE;|?Mg@QnKQE8T3YHa=|WUAY@H!~TW z&{zjIiDOa-K^i+u;dAZRFG~(op)?QYCrq!+Use~fjC-Vj8CB$Dx{}-SmeWPVi*_Pz znECOmfZ|9#m88%B_G|8e_~~{gaIHnY(5>#&&|_{d#Kp|Z z&?5q;xV|>`3reGyb7TvB1@e}3dEWFF-v^P_TUyRN@$ktu6Na)b!`X3l-Os`wj9~sR z)Iv*4;`RF#M=Q{Q=xqPIChp+&^%**S3CoY!xJJ0ob_$O2n|a1(men|%6Hy#?Eoq`J zrCNhT|Ly9N00uw*Qj`PUSMtF==%S!6ATuP!7-)sG4}U(K>%-0emI54IhJ819R^X~etXU301k^!pqgr6ACUUwIb!oY8t zS(K8^LBY;d0Ii3v6L6NJQuMJHm-a>Vs9ICSVA4uS@S)b5u%v(55O?zomLnDEPdqHh zl|PLhZr3`lj`et1XQ53-iKVYtfGt|syR{OL-qJ6Q<<53(JF#0#uBn6$9)3}*LhW>J z_Qj4#S=WzKcOs5R&9E(#!$V^>Biv!9DMdrMa#al8VK_QYX|N=!9K4iHsImkcU)ta> z;P|Pdf{tN7xrB|9+~T)%yy57k69FMXZ@zRXodJzr`RGm2#e6LIAM@SHm}|3LrA1Cq$$hMv8BZ8?*EfmBS|H&Ge3J)EC0bLI_y!a+Br~w3X%Xr$c(4={ z*0_H7`58Ii|Kk{p{wHpT$dLeYvYl@SeZ6{EuEOCI9M2iELziv*P{t4Gl+SX=XMpAt zeR8}tZ}k2+q^IHD<53>l$g}K)^B7PL>B{F_Dlbi3S33)3^+u!tYiw-j<|L__c3kz| zZ7LaHW@HORLOl&T+XOZT#pKEg$N`J`FQ)jGlUQvRuBqpCXUn$Mets z)EZJ;E`x#}QvM8A<8SRPbv!N3^=YmsC|*jRT0GgUf)S zA2CDZ+jjck`u(A~yXqe)oe}pmV}}|LC2#?rh+h;LTa^+C=eQm$TC_jCv>fR>V?2=|STSuadZJfsW@e`t{qZa(BC1{06sjww+ z5nJ!Rlqb-^wXOUErFcQnEG_4tkSMDsWxo)C{m9D~)#rqct5coTo+2VQXT#V#G|$1q z8t7PCyt1qrB=OWr(iH(7*}HZ^6GILqHRyJY;KzjyCh@0%VE^dD{&3PHXz!;+C;XAh zfEFw@ZrpAKW|=Z^VR;(a9{zO!WYkjT4xMpGW3_?WpF{beN*2G&i7pN}H8e1kpE)Y^ z*EUTk?WYe7dX8&)wF!*AmY%>)CmnN;qcSI>Vzv+t2sqzs0n?lM1mSxN%e@N93#z3+ zG-rGD|LiOlyK!+ z>B-GwAw4tp=PriB#Nl{48qZSrNOz#I=DYq6N5z)`IAEI8%i@L3lSTH=UV@}$MMO-F`~Q48#nyAQ`f973>NV#Y zha?X=gr?&{{`AlHZgp-~1}qlz&v>9#aMl9D_PDl7Ae}4ro9DtC@bH<#&o+DmsXO=H zNDL`+2RPyo3&&NXs@ohU(ZWD*o^s=G9m_JpS9VAG?vx@Fr?|&^U_B>CYn+Y^% zm^QJ<2KldlW*UPpg?gYd_Af2G<}BQN)&2u;qHvJ;qI)QQv;4*;|&X{SUZ>%kLsAJP#BK&cr z*{5k7G{>o69-wl#ho)xxDj>%hd2)n?Lk%e%x|J@)&}ZS-`{34%97=w2weQXlz3#(O zOw*gdRTSp$*OPYA*aEKM-Hbvmr3>1!?~^eIMiD)QNiN3xy7(=-*VS|UPytO;wLT1v>0E>$y*>ASlVf%C#E)E%gaX!y6Ct=p6FJ|r zN_F!+FbA$=u!DTCXbr#dKjZ8fKZLHYkP9Sa!X+!*gc37dzZ|y{A31WS(PwA`=Sm1U z5pLHPKS7Ch#zv!b4yau|37|F@iSIyV*Uwc=hwF|%J_1c~6%&x=Fn zf z>~0?GpV#hboZ)ws>aBV-bnyZvaJs!eTk+l9b?^tIdzb`?KW;&eMq=5F?@pNj zz7>QWsC^VxLh^?2>GnCCgZQ*>-lZrJfqNJKlap&d8TI|XDA(>lV)R zKhPjm1B`iqWACwOhtp1Ymz443aF)}%$S6PN%)<}qK@1&BV!!Q3R4bqwe;u=a9?HBkC~;xX;NNb}`L5YpCG+jD!WNNU@^w|FO3+zI3x~2sFpwkyElXlw4m)9>c8o z{@;6xC2($_>kXYIa(smF3PP>X|Kk0=$9%fd3%G2px+VddGIh#zj#F_b8OBA5Q}g^}3Arh2FB?$xHyclqUa(}^8NYfNoV=Jb+$~lo zyujri$31Nzy?Vo?{_}6Oo%TB6+B$V~GZ&dclUa(OG+a_egw-0c6Tq@X!@E zJMMtZ0^44jcLrv!m8*X|nENiZ)87I>VOIcze}M!LB7r#}MFQF$@yif#oT=`_vx@s@ zI8+>^m#S;A;Rx_JM20l2vK?t5CJ+X`fNDV=uCtpBl~@S zy~CxY+H%Vrh|-8_*p5+9an%dYFF_8$_r2P$IS-$6K1;8^@S@t0y&u{5wZBYRce*#8 zV41v7m_YjAl;nc6y=7@@Y?!o{?`(IpGLCr8sTA?NGqD0zC4^IR+wYo0-%;!6*k8ri z<=52Dqbd-z%gzH{SKvwYCtU>5?VL#bFN$Pwr|kW>2(YIbuv;hgk!G_<7)wbFr{J>u zgVS^(0{8_OXCsHZFW#NZiTlU3Y59dEAd()kf)@e#QM~lYNLnCQ^?0Z^m{3wn zS^*=Wqi_F>hTP+hRUMM@~ z6(EFps8m44S?Dm-R^=W+Rh$N;hM?98!#c;6N8khY`|}h;eQ%zEyVQ}z51SuaCne|d z)3V)+JHhS1y_aSmq4!O+kEapbngZ%fQ?JWf-eHJ_`kkW^ z4+0nibk0{R_Ut~F=#(9>@!m}PalC03IOC&)l8v}umE3oLEuG?BqT|>2@;%)L?s!l6 zKVbotk$}z6Rp>piwJ*0&UQSMGoVdFkXH8qc#P-OOksr^J$zYQ!49&S?OO7Viewx#j zGJK5oytvy@lf;8X=PFq2zrEiFxpFnJnj5ShJ{k7wcdFHB5?z-E&J=ZeB?mnFE|17? z?shAz?hbXz4txy|Hh3aSd2vetHH<=ahVRd+pr7wI^>Jb;L;v+4+UviqM%K0iNt?J; z^$#iY4)Agg%1GO_KkQZPx?7SpH%aMdB+SSWUesbIlgM6zq}Y25ff$>}K7bpjm#iwwY1Yg^ zdT<`g@({2*R?Q8k>e?MFCU~Ck1y~g^hmtPtI-!*9_~=5TeD@}C-a9grl6*QXUI2Y1 zyrABQ3g6v@g7)l-`DyvRNu{31nDdBnM*;0Yh%%ZZs`bWiAvIG&^6dbyW7s(M9YAw< z@Pxj`8$otP2d?lZ^(G--1D`qEIGhxf`9kkAuAjT;J)Uqm(sXgxClQ?96HK)x>14sFgIa zZ1&z9M)EKw%YTVn6_;^qIthxV3f#9RB{q&Z5+vh%2bh+6MFv%`B0w4qPp{eoeBMnnwr3jI#w)mKC*}NvVYeIA=!JvrF?g-J37}quwfhmr& zNOnFRSs3d7NY#&gg}-VvnU)Tu;(4ryYSm^-Li0ZTi7&s&NKN|H$m8q*8BbnP??E5u z)+v3>#Gjx^^1UV8N%E)ONa@Z}--&tP?)WmtcjMd67A^8W;RQ0@9P>+;!DH`vCk<{quQO6-K5aZSL$veFmFp!}=)s z9N)PQD;hbe2$G1jN5q(DG-U<94$f^J)<2EMUNNVvLqmjqZF7{|r!BkUvxTrsK`Xl0 z2>JA=xAFR@Sa1hqx*f36PmpVQ-djm`f`pw%(%|cD9WSho9M01#lsMdT?s(o>gh=F7 zrO=(UXSdj*1=QXVd^LuV(HwkYfN$V<#B*tOSLn#%aPhy~aCExHPj5h(D#(mia0hB3 zLYgp?0(|z7P&9O%c&IX2Q*8#`uEIXodidl#LYN7`un(+CK3Wb-F6`OX zK9`_!kFl5SkD=r!s^rCd9%BW6lRl^3I>uHUT?w69Xgvx!B2!L1;F8$&m#sup)L@*E z9u>$YM5Ymg7}J3Zg1iVI1o9;tZ7D^I`kzBp+xUMb zk7>{=Q-g+O#?ywA{P2x^!3l!@QR@(Q1@Cc{FRFFR5Sh>Kl7_R|dp`S(2VDt~W3Fri z31@RQCU(R?3YOj{&=I5s+ zI}RE8X-G+Lj}fA9?QOi~9RGPJN!eHUrjBp?FEh&c+XHg47T*XTg5pIbfxlJ#=xQ~ann zUIffNvrtpbgHIn>e&8V5^Op+!l4bVFbPmFOM@_ScvXv4AFxqW7n*h*=Yhx>hpw&!F zlWoLAC|P7HDeM+1ME)w-FX;F6v2hls6iS|KeLb=55$#W6rSvF+k40OT&uz_puLszjZJd{cHkZ9W2Kdr!n2E_nsu9J+teJ z8Q4mOIr{Lb&Xu zvul?kQK7}y>{l6}B&P4<$lY6J*(crM!~NKdA1{sf`ou91?Yik6=h3U85R?Y^oTE>- zbyd%dfV-5|NIMUk*#oRxfIlcj6I^&GHP#NO`?8l9of++{_!&y*C%A{(95kR9U-eej z`jtz*$Ed35JpuXgE`S9B&`@;K-2nYwN8+}#29dfcp}2Z=s2yT+-O<5(X7hvOwo~00 zGnr`m@A{OcC^O+fP@|Q<$n<1$8yP8}AUx%7;8=VUKI1X5d~mrDYxr^0A*xDImfnZT zb35Q8gE2FxZCM#%%0T*!DZW;O<^E~g4`WC=r#rw%`CvtW} zJ8%@R!)G$!H!!!9QsF08elm(XOSiaLj`k0HVHav}0@Mg{#qvHyi{Y>?nXr3pGusx? zN7WMer)6S2|2>Kvd;Ls&yiKCW1GKVa+F_R8Od{86P-slc0i~14>SJjA(;h2GS_BR~ zEvTzP+e4$XevTanen zX`3XXV%(I(DpC0~oWAq8#!>nVEA9hu2IX>Q2flHz9j0(6$4C+E^4pN|`IQ?6RalM@ z;XhhWvqHawgdBAmu;SKpV1d=D|N6!@sjGsLGW`&)&HV;CXI0*Gj(4#Y3bYKe4wmp8 z*HgA~hd}Awi%0J>{!TQoTb72z%~=sI*wUd3bJghvo5qQ-^(LSR(tI~0NOnMX+?@Lq zm!f;-!m6leQR_zL*O_oFeE+&@{`$&n5|s%HoRo8@tLgtbs$~{)omRG~!87mc;?DF$ zWkup;@c!gS0~_w#j`a3l>Kg8HPx=TMvuT|xG0k40P;LR{bEBLS{VQn)pZ^cM@{2Xg z(%5nr{hm%%e>lf|RRpt^%O&?_*YHUY0i`aHKdz)GX=*;|kx8+onvP#5eul+jeY{=$ zuIXDA zK(E~@Mfz0+c6>yjx87PZ;t#9m84d(57kA6uy@fY4!aKMG&p*77%eLFC{$?LcXSJV< zdNEgKQWIsfIey)@k>nezXBzpGEzdlq3|*YGs0$?V^d|}qEB{Wy*88$yCQDFn{y}$| zpFl%dP0LJ-p>AP%n;ctNqM>er`R6f2^XTwZ@{+um(Xw z486Y^BV9NIaJvGr6B1ZjRu_jTsvv#%cdowcpo*O6v zJlgLtm7#<~4FS~9a=5|v%|`AS5f0hzjkx4nt%7y^c*ev=Qtr9gO}PbWDqd5N0`V|jkmf;oo*nsy6#u4>rf#-&Y%t zDmt1DNccblL9@JW3QD1U=2r0znw}Oq>ZJ*?lC(gfxG&^NWzdVPxJEh8eYBbD{F1z)ym6FkFea%IO)yy@EZ3o}r-MveIk<1ZRyDV}P&TyhoE;HI5pXGfM8X)lO43+- z8e}lyLeCdQ-2ofSP`Z&E65f*#whI0DVO=_|#jqHb*^M1F;^T0)1N&-~H8ydBH_>UN zBI2QzBEqp3z*7kwBJrxz*uoiRE%-}9R9dy5GQ0OlBBPw0kp-=%aNQ0FYl_&aZ|6$t zo0*=-c`Q1xefIsurJFKyY$$0wzy6Psc2kSMgPZSM5j0`0(5tz5Pnf_7)6U~{-K9+C zNHiR4cJ~xbM5I@t{IKK_xM?8Qcwu9=4B?ElsnI_9sO7F2X3%tz;3yt$Ofa-i2L~_G zUhNu5(Q4_KOO<*H&?DAVX=B!IUh!+i{$OSO%h?T>M2B0!uMapg9c^fU%`$))xX3q+&i$XysT&JNugV zbp&yd=RTU2M8*&$Tiky3J}eWi$+vXN%B3fPQn&OS@4{m7y6kTGmSZbWMLYwjWc_tY z6J$aZQIcdj>*w|>QSQ?sY^x>fqRSAIl^HRQxwPw*mrdA|x!s$c@QeRP6YR^|@iSQF zWmA>l16Ik1c?4(!mt(-`X4N|XA1w|HY%}h#Adu~)GuM;q=iM5&%FG-N-fUsYz%!(1 zHq~ysgj5q+uxv#_jDbPW?|D)YXDA6cIzR+M;PD+iYj`;Rn8XWU^rh}bKj)pt&*{o6 zaK(_LBcgx)S)rd`UG_@G>rnF+Igk1;r_DwLOlT-I-j7)YDU?XT=o-Z*?prWM<3Hcg z%^PJJF4ZHQQ&MYKID`#FA?lOiw8~;kp8LtmjCEp7NQZ;>GRLVzHBCS|f;lZwFouEO zXy1Zc2e8nNDV#D;(v+Vb^Pn<*OJzN#_b1ah@=;t~5SFtfb31f5jTW4vjt=+!v;BOK zcMH(8<~PvG6?)JNi5~@mM)WWq9rjwSOcu{nufVh9#ls4jY@DS(5~>PhHqR-j2}(;| zk?Rr#+@PS6ous<1v-ffJtUa}})4E=A^3g9a5Bktfce~#2u<6zXxF~HbBj5(qreVQ4 z%EAFHAPcs-LTvdKCC<#gQap)!sFxip`kFHJm#)gY-^Vm#3J1$^U;}T(&~=%JR8JK~ zD*3_5Zw65ng50_ooR!iEfw3UwgD(xpx_@d)&xo(yYQSXqP#2-!bF|%-0B870yJ6@> zlz~vUF73B#a?!?g$YbfY@x1SG?J?iS$F)bwZ9>F&IV&J&xB`yxp@e*w{e3S2dOZiR zO$@FZ0sSJGK9rfv4)2ov0qA`NAoEvDKz4F0Wo=8Ja zL9Xi1G+Js6+BWCbu!QQN9FS`5Pa%ktWVwNtvV~vJeVRI2j?CVC!uYo>i@h zTlZlY9enGJ?_+Aj|CA=kTM->4DFre6#|7dOQFPqmHXF>|3S*fX{9e1NS0Ec+ zNz<9}=Ci_zy_Iq|#AZ~jjdvs1>S{X=wVR`BB_j3Th^4g%ShGuL8}d$2`xUj;vTi=U z4OSqp3-A0eWg+c-+5XP)(vPQMw{`a*!0_@vPC<^_F#NJw2wAA&m&y*8C75Kc- z^&t&|GB~9v5{nsTU6z1Nhsx&Bc55^(6|z377>U0OKPq)Dyx#PbYPxTF*eu#eP=qGltT@8^MW7fERl05;QD}8?0+PUe4yu2RqAtZ=O`GDhCV&^R zDPzDnb5l+GAZSX*N3q67A=B8Vsbtrzzr+aPP8_o+GyA-!1jG>S`~3lv4{=Mru+Cu zm>wq8{m194DW8S#h+KiI4Sj0zY}&|<=pJCfpBC;h)=`X9O#n0?GeOY{ZUd=ch`Dt- zp+xRV|LcTAIUFFmGJ^2E6~;OztLeq(0V6JkUh~-x%F0`%_n&A)A+Ii@2RM@lkea6K zOpxrGAFnfsE#s0;d4Vb)7+@F0e+nCU#j;!|JR#p3=bRrm36^h-Ve7UV1qTsDpbskg zYL1D0cgi+^LPDih5c?CFJqWvIq%#8}azEA*X z>fr0CItMdz!^UAlPuhl%I3t@gjam@8UrFA~-RwPtgI+6ds#U~hLJxBkcd2TwnA*Ed z=o=}Bb)^Yz#lneqVPRef{?;lD;RT<$y&O8~XitOuK1Z>b2rliTmbHSC_+hNY`$vuR zTEEQWt6jcUTeu^4LN5nzv>mZ*%vn(X;U?#E+yTNhD) ze}qS@1*{^Jj4sY#7SN*ixB%Do$FnX+O3hnmK`%^1=*>JnStkH>S%HP@&cO6iwJc1K^9q%A(ocw=@1omF;_gS84RcQ~>rl);_+F8EVKm1Fvf3Xn)D% z`2rE6vJw#ZGN!b{a{98s7_D}NsCaVUeS9q@8CRY2UhGwJ3hWj&m*DC0pAZ=- z9b*lrs&H{ZpoI10I%)bMWmZ5j(%z*`l?)PdFz0+1Skr8!S;y6rf`jMssQGB!Kq(v0WK)axX9%gruMk@8Uew*f1RP-NHn%aS_1D-vjAC zw8#S9W^YAiHL$hGD)Z*dpn&(zYe zx=J82w+ShY1Lm3;tYj7|^nQn&Lr~-gK}jx19g&JWTUnJ z-qte}JW@PRcaWkjUHj|A52}c8=5udE`hM~xNbp_;1JU5m&HstBBCd0-|E#bs)N35q zL}2e$DtDmjE@@~S*kTLB*(B|8A|4beUoGqx6}yp@?~n1%bVD13tde={6p|Mgs9 zP@yeYp5}J9CAa^8u)GFNA8r)BgeSLPIRB9lS7Vf8k+*@8&&3uVU5s;I5|<_b8Zr%y(XH3l zY1M<^Fn+b29nSKO{nAtn7YpTn_{<&7_3atqE^Q7#A|*3Aa+5d_1s3-7I zNE2&GlVkm`a3boi`lPvUzJA5jUYhDbFn=EjT}U=u0ltQH6X3sdj1H>$(8f?066sJU zcha>>OCKXHia(AQ)C|x!@I;{>LGQU4Sl8i6?9->3YM-dkqCDB@1r{3OUq-K;>0mkz zK+2|N#zGSJ;9sB0m2^Z5)e1Kq8LY#J$ZRWzU+--YUNqT`#=uMmC`cq87|v4w+WK}$ zhlXMZ0AZ(rs%2Mb{>3o!E3l4-QsXfO42Z~`ep~;csJ<>j;FPb)<$p%CjnEYU-721M=uFVA4 zyWLKVBeteQXkrh#LTs@_g1TZr*TWzwq{4lM8ggD1KYD^i{~*NZhtH=o3C04@+VIB0 zn4JBd0b^Mws%*+PNvCN=^F}mBUF=`RM%jHe_Ui3DW zzzr?D8h4wf`)FU*C4zv2S1AEtO*?G@rD_Uq76oc5mObNP=vb8(0ka(vc#z*wp$Oy^ zstI>!{ll|hK`#()(?b|g;Zzq+cbbGFpMatA$!Z39+W#XZ9bhiD52Djwc=<8YLL&!r zqeJmCs$|j;-OA7qnd^-SL7YAFP}Z^SRoY`;?Es7@k`TSKVV_fHm09ASUSb{%gK7nSgr7O5N8hXM8tKfjLuGnS+qtee z6U0&~!;$+UV?Dx@Y+J>`9tZo1dH2=l30<7eZi_UB8i*%Sk68fw4wG5h|4|MR-^Gbt zc%=+dvhyEmxv#?FS082tra2`eVU^mIG&_J~IT%LRk1)V)KoS8#mBGgW%&WxJ5ldA7 zTA(M}UNPTMp@tE;sO2MO+IK5^swqQb13#WYyo(hPS*2fZ6YW-hVE^6@DJUYrvhSni z_DlB8-ew0#Q4E+k676Y~ZaGQfTa|N_@`^epFe_`fV+r<-Av~8EEywuRe{o<4>@$_n z#Q3^RYd1;zG)2l88B4kdDN<{A;6zSQO~@xRE#QA2ltknKIgQ@>kOn9Y>-AlA4c7C?8a$}Y z8?*DQI3pOMe0#pg?f8@~rR|aGT}Uf^89=afus0r^m%PFg4K@Hy1VP5RflRkR+?qTb^rM~Selak1Hxt>Tqd;; z!q98njo102&qwA4v?$gDi$;_VvW)Khn#Xt%5|M1TBC*r&Q(|UR+eo@{MZjh8>N7y} zbZxpDAl<{@_a9!(j8ddg1^rlHw@ua{Wv-+iQc|kM5g2c}Qph!Yf~LY`1UXylG7^tU zqv#8X`QFv@S(q0A-X+ACrsE5lOt;Wh+2(!nox>sU3r(m=gwQB{<6$q!Tn==BNsmD5 zl+L9D*kq6i!CgV}N=eJ;DfJ2_B)BfLc(+;(Z>8Kkt)=0jIegqN?5YG8cQe7-Xujw* z#s0O9Ptmh;PoS#bLmxWl5xAbKahQVP7nKr2WQwVUekX4g6)O-&@Z5pcHeJ z+vIwC@?)v0=x3N3I#7_2fqLsH3a;k&^>qQcm)a(N#zfSQ8t z;8vp%N?=HX>wRr2v+&Nro2)!$LCyf@L0$&~rGjiy+IAVzK8{ZCO@X*D z0s?w?Drwhzt~Kf6jCHnE;M)nvYq&^3=IZae259TX{P1A;21Gk46}5!xSjFw}PkN!~ zSS|nok=B+N2G?fe_OyxzYrQs@6u*ju$tG)rBKM<{AFK~YL=_dtvH^i2$`)+Hs{%lC z%tsqBu{>KKdBossoZ{NJRcNyPtTi^8WCd1(vOGqe(ZIguCE-PUo#lrrDF%qv@=kswhXYNqL{Mw02t=$ZxA;?rwzes2n4K*;C>v{W~qz zRlOv6cXyS%%<}eWB*XgJT>$<}npqp4Xoq9d%7g-6^j|3z25f|**tppmjZVY|vGJ2H zUR7j>v?do9Gn&)P3=vP0bMnZdYzo$`{7|5KBv%x_Bw=d^fJ%UTuUnht9C^M+>$(HL zTSkb3vU1;s6pv1&G^7vITUqrxNH<%wRN|Vf2ivyU}#^l7fzv7x^=hqNyPgppQ9G1BWv!72D zpW+<%pq*?IxyoJZcok`l-Z{r4@|?HVdi(#V?o+`?k2tdm#QBQwJ4TJzud3(sTGnRH zB4uH`ZE%B1{gvK4_!+{i!_b%i;oZz*{>KRo|AzYsf3(8<26Cg_?n;Q}aY}=J4%ec^ zS?f0G*I$tHLSz7cdJQno`yBu*)-M%92915hb_uCXe zh9({$iAC%c8@=D!!j8aMDr9`H=+HGvT33(6kg0-+5xQ|10c#4eO)q+T19W0`KxOxH z;?glSu!~fwhMb+BuK96gvANIxy~BJv8IU>WNWQdadIeX;-z7R!xW95Jj|2f7v*nX) zk@;~#hUsJXxLha&RGtDEe)W)3e`m=-AV$4r_xk6$B74~o=yK=>BL{cO>KTgjFr09( znzvrZp^>QqXkY<7sCWI`J|+-XeK$mF#}-i|hMw=yuwZ}05{Wmeq3|N6I&c^%3#MbO^d@2qTABM82l{o zSv=md$MGoh6<g!LF{KH_+m&rHrr*NeC-SqHn8+pb!os)$Hk4fHb#P`?!EmqXK%d_!j5_ zcxEy)oiL0_nH{C<;QcL-x5Opd@q_p~vM5f(1Fwr}@@pqW*SAr4$ADTEL@)hF&eCNz ztsz}-iiw%ttWRP|wu2Hj!vjm0AYb}t0S)fbPp>hJxjGugTMgo@K*<|+hWf~aEL6&Y zWSwi@OnMAS5YBp~k?q?IHXN~r9md@qrN*o;(#o82#{qNj%Wijm&jO?B0%)+J&FQ$rD$Sc$_4Y|?C==% zNu&%^0&H%xVmd54xT~6-36=$ANMJXd4ssNZ#mm?q$JJdAKf27u&(5C+9 zwokb-FKy;+r9f<25@tH$hI@G0(qnPl9Tbs$mIr(tJH)@rGl;bZ?FA~wxi@|`SW|HY zmTO=Z7>{@&#rW8S=F0-ehducQs^8HFlMcIc5%DKx7`}%%anuyT=H;%N;>eK`!`?p) zsxHeHfPxBaMMlBBcMd2Ut)Ty0YC68-2PEGp&uuT3NF&>(8G|v699!9_fvL19DE~ZY ze~7h*co#$^aYo1l{Dk7>`g%#aO7DjUI$I#A_Nfgfj2I5j8`6RJJz&6aX52!Xn}Uvs zF+>F0J@aKm9<sPJAIVG&ZBJCCOR{lO~xy6vHirgz^QA}Mfpue-d-HT@o1u{h5yIB7xL44`K4O8 zHDhTvyI@k|DE$ahd_b!0p&)3yC47{r2BQHr;0p4P^W#t!$^Wf)E&2&|VWag9^k1qXHeH6rJQlZsut!L0_)^D9klE8iAuoskd!*Ob4Xy; z%DkiKLJ^PwQLo?13@p=9Gt~>i6S%5*Es`!l(+%%F%NV^yklVF?dfX}Q!(+sIE9Hc3 zouUHwUmPX|%elc5l? z_{mENjQB`Ud~m~Gh%KLsdSfW=7LMJ7yoXF@ow|?`_Gv_W7$%xg>cPoI#UTXNOJm%< z`-x3g-3>G@$i>Xe(>qf;bFmaQ%ojS_rdS~%lfhbXOOp)8FYMK{nhZNziF|(K3Tm#>9KXRr=m1;S$?S&-0{RTYfdW9_*gpeVNLk%FT8ZZmK1|QR7_uks#*6%ZJr7-i_55h}gcoiVV&$i+YKNv6HC{xd|To zO!R{>py=ra%<4y#;!tv&cg+mX%qm6CH0^StPR zik8MDgqrt?aC8Xzh_khOEhGG{IucPFIUI9-LK2@eZm3!~axNs+TYumu2V#kBfp9~V z;&T(^Fu;evU4pomQPo#G5cI3Ep6yb{N9jlmqGxv8`nhp{l8qXM%rz&_N8K zN!~M-qtL#%T7fF4o5e=vZ*3AL#ejF%OG9*HTJkF-48ABd%ASC>Td4~=5;dL5Ylvx} zH^2VRsrdc1?>fs9k_bV(dkpnkPcB=$MiYN=d@?PYbi$dnxdlCIW*{*bfmX+m2h(|i z##kqoA9lg?mt_Zc5j=N7pfZ6VrQ&U6G+vs@hG`J{ei~Bj(C>j>qR}}Kp zDj1v(ATa5b)fS`|}cw@k+mTTY@seFaUrCGm!g zi(*`5b6(21MaTyro1Q!d2M^jcV;SzJby}xcZSv@54>!d3i=lwsD zTskUj(10NX?Y%DMVf2|)Y|c{I=0ai9_CyGxoC{l{C0zZ#E>ly-Un%Eq42Ei}+=;yi z`dt7zqp938xf44g^K2({X)M1;R96>niMr#b|CIHtkojnmVIP}07NeJ@GVeux3(jd= z!3(LaXYTJ8WDVs!e;-)sTbft7i%Bf-bE3v_<&>a0QDUR6De(MX%omKqxqkX4sp%w$%tr><)R-^`6h1~FQJ09gv%{d*Rn6uEBd9E*qpxs{>H>qqh?(CWUV)sQXOv9TQ!wS=d9!*7Tf<93>W`STlY@fT1S_IJ=ia!b~N zh|04gwquZs0CEUfd#rrSdYQ#vtU9~@56T5~Em1eu1`FlOQWy04`AjNJQ6yT%O-+;5 zsB1uxl7lwuQbY;~d*-x((==wPJ2)85QuHAkbXpKvQ-Nd&2WR0!{>jrhg>u`PhUa*0 zY$?VJq6{yufV$uFhw-NpeXpC$jwpTHV_`qn3*R?qg*$`TxNmaPR)miYu$Ol%a_q! zSqgrzb)x}J6N&k3M1nj44+=KO2VQD2^!+YzgcHG`j*!cSB*>2r@l8RBEUA5+u*duS z31e>(T0L;Q)H1(#U}m&nDPrN!`JZcSsE@7E#a_oOWc~36qsJ~%nj@%`aXdejbwIJf%wJ&z{OWh-%c;^_-en@S+m z$QtX88zxkUiK<(k1iuM6Efcqfi*OTo`;otlnqh4e7qY%Gl?=-ttwQG~rL|uY(q5^P zJC!(GoA>xyS|Nz3B=v`aY+Uulb<9W0@t0(LNnp8Pnr&3j*E1pViK^-j6L-cFD&Obg zx$`(U+wewZ3dp_XhNtr3L|$% z+A9?6X%`ItxW%;d@at%nC-IotpjnS^W8bgRSTVlMux7MV5jY3g0B>@o#a9T&327E* zka=q%3u?u?9P#v@nV}Ip<*~<<4R@9q8T;XTTXS~+nx>|yKB|3YU9rNZ4>+cq>8o2)exqqQh!7Er zZ%50{vHYKd(B0T8{-)s>{q&{meCpOgQ!fZ6y{IOr<&P@Pt_}ra&-Nd!bUC7TALJ4d zTC%&VDM?2WW9nq1Uk#|H6wTp<;5|t&kei{J_pcWJCCn{h@BwUmPi5m9t)Jf+b;`PA zc;Dt~Ua_390Aio2&Au1)D@$X~Ar9f)PWD}lAsvH7n)by$_DC zN6x4?)r`BJgt%^WQWxXwZ>e}=$P&Q$LUFU_3>Bq&lD16BEX|c<|3%$jHV8a0+uldU zs#oWkiYj`NypEIp1O5hU*)}wt!4lCsDsC;1c1ZOHg;+hL_*%VhnA2dULQbOZaQrCr z$0nk)z-a+9!TI=-t*+CDN$`V4vLo~)0F5^Cc+W&T9Ihv##E4Y;T?4FW&Su~3mT|Q7 zS--TN5R#u#(+4^{5Yesaz9(5gu5=|!C`i>F>1rKGyKGl@X5HQzSNNSTxZZwr+!Ty# z;>2kXP@j-65x6AR;imer`EfT%jVs}ci>q-oei=8+!Gkk|Z>4h^o*@ep!zJ5m%K#zr zXWFSugV!T$Uxj@~PTLv>o zQay{2ItcMZ2?r$)Sz0}NQ|I7HbFgsl92?`@MmlvXT*5LG-3ozVO3KJhi_$=D&isojPJ_U2}iD zLhUJ=Qwy?r5SQ+tAhp=nJ_uQsy1ZV;DFO?AKItirmn#-9P zEU?oopLhQWollD-Jigsy4Mn_d`U^uJzVyZT8X0WzWNcE}8!d4vF`Qb=a(CF( zy@QEdf)Vorw&{pOkqqrK(2g3p6HJ*xLvbTeY6cxmbso%GyNIB{=G4T*)$&H{p5Hq0 zlfIbd#}pYrcCF22uzr$$A0rS)YxI4V=#`{yuAj{pqB3^-8iWrQVHvS6k8)Q`c^K~M z4bPI*2Quu1)gXEI4s;t7vf9B&wn!%ke@NZwv0=RIbafdl{k|i~&8s+fE-p-+RO`b4 zFJqiLzOlq&Y{{*{hN`w{aDE7bVeB7xKbq(Nq2Nx8N=c935U+1a%Q3joOB{mGozJik z-112*WRtezejGGh0fr0AW`T+5ZhMQ$BpC0Hh$ppCzy90#rRZ_hjGWHvH_p*`8S8J$ z=2hN3m(qC{?Wc|3{HSe;r5o7kbg_}8V%rmjaosoL(as6gu+YRnitVwQ^|H=v`KULCzqS5NH#kfypil-a ze>DgxJ5Z{ciN`U)oA>&1W8x6>>`>;jIU)LWkGHuNiH=)KCaI8QeV!cQ*^w@Yf*QMy zaSD5rBjDCMuuQD6Wa+-A{w1=c+XR)#4C#PU)I@u>DvI;5I)t#7R(JdvK@VAW`UY=5 zT8Ak|d8!o|ne24jZT7(OE=mxBie5N)JJ3;>YrrbAt+oI>4KzWcVmN-$nnLH;5hkXR zlTsp)J*H0T(MhIL9oYHN@IrasHEen`M(IP@ z*LwfJ(Q$Evlr@Gie7wF?7fn?$`3zU{Vmi-t`&xIPE{aY>C~Rj9^t2)T(bT#HJ$Lbv zED*HYNKfh_X#hp4Zb#-&QT+ z9OP#(iI-|$MPzEFDZJ=gd+N7HFF4ycqC8_EAZAHkRs!7P5;IWV+N%%SoPhazO8Hm# zA8V?zDz8Xg7QB{lG00>hMcuZ*)!hvqs4^N9h{ref#`aJdp}PjT8`k|5cQsdOF+($!+r zIoG;dNQ1pvEUD90Ix7FShsFjwe*)o{Tq-VQc67^=Qq#5tvRX-c9JNjmK_b>2_%oEE z8e){?PJg|=8o`d(1iVy9n=~kV38Q$>KjdouUrr8FD|-smMS_k$UfzY>aNxydN>%0v zxpg48g5MvpygLf*rx{x&Eazg{%(V?qUw&~)F#1nWO}9LY5ro96{*;vaktsSyjSkdKDINa!Eblagv&N8X+l;N)-eYVVyX6x+J zESj+2SCgRQi;-|}D`?dv8ktj|&qcU~KEyiL7_%k`1A?eo5sc|I?3!~W5sDhcmNiY~ zeCLkhx`i|Y?kn-`In=%V=*q;Q+S{8uHGfpqj?>3vfhx%zo=ti9X#Z`$Yk~1Z8<7db zui&=mbQ2cd&;K~5&iW)akvgE{g(I#M!bWN8u~~s&pcgOJEX!!QP?oM$%*=u{ot09b z69}Z%74JEJ5)}Nv$4m$p8qZXd<*Ph87%|#vEvXLGBj)}*C|GHH!Gf&3QSEGi@%!sC zgp>?-D}?0|tj}ffu>mp44etEPL(4Fv5YJpwCIR-P#@ zCT^Hq7*dHWrgE#4A^yFD-8y+;dQU*jt#Eh~bE?A`Y#uT-3|Ph^ZNb;MT`7PaSDg!B zcfR?I*&=+sa{%p))wFKi$v^+sySN5RUs@ljsy|#xT@E3h{h#Lk%06E@Kx( z4$lo?F&v}@Xs~R)q(fP!&u#$&jdae#JbFb3qt8ld#P9s6kR3zRU6c}++U}>uu6BNe zCXO|L2V;?IbQ2gY2!ijWZBxYPEivefg7rtv`oPFejY!lXjB$5Sc)}(fG)E$U(tw*$WslL+6Uclzte!24qk^U{R;b=QkIA!cq*<2K7@EE>qUeorz(bFPa>- zPRrYk9LJDnMv+n8kEmG<7UUztc(f(%v`oADAi8u2DUA5@J`sL_b z6?v2luuBk;8K=A{MSO_6ni)ep-VOR4q+aDQ9=XlTVf{#Mcz`lGzT{jMW3!&0PiUsV z`sahLC1*Mg4)2;-jWb<_92c~YRZZpCZ2q=Yj%&3j&rtyh2SEcqp5wEjNQOh5Si%6a z7Q}qw7oYv+R(M0k)lla3FvYRsKjpKg!U*->5qrh-Y3Q^*EgYw;oNdO*K~}Xl{3?sO zNyA@f0VWqzYuT_o>edbPbK7Jdzqc~B70v&{cJk(K+6P^L*ofDNhZ z1^JK;4#iZGDRWuSCL<1&ZOr)^84Vx>STzM#MZ?9HQAZ>7;DxA^LVUMMYm6vsxL39n zdw}EGwI679C==88msvQ3%Bxl`_rk>hSiq+dds#8zOv>uN!4;AzC7CQXGTDLA3cvL> zP^h%0LWJrscm>aLbpRd|EAii8WDke=PzwY=llgaJ(xMw6VOiBW*e-rzr)gQbUFsU4 z3}UPZ;QMB)GJ$FUp-9ig=8u#!9& z+jaw#UpgDfL;yEGBDw}>Ec~)v1E~tYo4SJ(a#VBCEHSpDafmX(u`7h{(Kwtky(g@W z1r-#Sr=CIX{_cwE12J4_ZD`r%D{@kTRhD(u(QEod6bRm7jTAg+GWJ@Im;fyjO=@;p z#u0nGw^}K2@cRrAYw>M5F&fl6MTVq)?W`z(zEHA`ZGsXxzRVn_w_efFfDrH5@D2mm zVyh*2ey8dOUSN|{FTn)W{1eA&UVpdPugpZ=sdme>sQ6z(G#b=nSWoYxD~jk2!IE~p zhINH+=|{$L!U(V|FOAHHVE1q)Ee_EpLbp} z98$IQe5yVQc7SG}Hz(}-pew73H<|>n%Nn_8(AdJSJM$CyU@&0f^}D$8CPvTGB-i1= zp+u1AqOvnl`~4x;q(K*-#+oaKEobTf#VFB^3pS^UU(!w>NEd&>@ZY$VCK*LOA(-Mm z3PfYSS{eU(9k{Gw)XB0%3(32v&o=ku@%%k}LZLyi2lK~KK-`s)y46$328dsh{r*rc zY3=~4ahJioMXGq6fi?^#bm_#RB4JMczWtHb#3n7bUw6Arn$Xw9EBehV#EZ_Ibq)N) zg@(7=F^Lx?iVG)TBKt&3CSf0oHvB&?a63F%-Hgz(b?-S3v;qvy27yFzY$wiZQ7Tt! z5W#I5RfE5+txZXqahvsZQJ&z!P*!wHspgEdNk3z6d%+e=V<_XRxPboa*Ba) zHW+fk_@J^3ZCK-_hAE7BM~vNp*s85sxzhYxo^{ZuvrN;L4$x-n!!$^^2QBLmP+(Ze zy^UD%Ci@(qxEul0lGp><>-&mD5CB0yzQ1HqNP0m0xDZKD(-L;g(PI#*clY`6T`a9V zGzW;~S)wCSKwkOFG*y$I5upnY>dA3{SA3q`Ui5&xy*cc>*-52i!$p~74!@kC=r-Pk z%7>kKOwiQ2Ix@F)Eam^rHp~9yp2$!qh0v+G3tsJQxZgC9GX78Bw3PII!cU-zZb%e5 z$qJVT7}^~oUyZ+y8B5o5T1>6eF+FAlksk6w+Uo7*a>oJ3EUl&83#H0aGP`{pptpx_ zN7>FhYYkR5jsVv7eh`^23v7iw-ReTd+3`R?z2P;~+cf&C4XtYzLQCqZ(--B&{AN{k z#m~vi4A97~EDoWpsNJ>117XR;p2Kw}1Q@40StpEiN z=2v3=){LQy-74=XO-tq3HDv=pV=6psXP-G5xmCtJL)c`iy2;??AQ>rdfRCBJ74{bq zf%>@I`LObbG{-XIoyjV3YbOGHN&C^Dqc_mlD|2D6y@zo~U%4&8N$vTf%|jg~Ezc^t zhe|Jjq3-x}^JErX-j*?(JPhEaj3y8kL}5#`kQer;Nj%-OdLJGT03Z2wu;2WRT_I#vlWGfi2MQY7~6xc9A;^VMa z6&FbOCqx++t|UbGDzfn=Mgv24?&dzybHY9C);;lH4yAFk&31>3lyw#b`b1T(;!qmR z&*Nt0p=!kcI2XMWQrp{A7_tPH#9vi+Yym?i76elJp} z)@!VIvJz`BouJE&D-9+f^veE^C2N9B_P0Zt(MhE$RNPPgj(L3_nhiRY%%Uu~{;yZIIcoG8 zZ{Y71={81R^a#O3uz8_wVluewUw0A4dv%hfK1Nin&)a~XghH6)M;o1yf zQb?r_seF#m%MdCmwUI8;>6kWfEWh*VI__R%#KWJDvR8?%W`rhj8Hvp?RG0>NsIjj< zLiHn5G%$GreRoNe4#*6tohWNWE{axHaN(zw8A_4!42_QYvLj1yU0&Ip)nN5w8|v}6 z+VTJVjm8>}QoUM<_0Zu59fnrSCc#7jhia~%3iXicdNqsU&a^Ka{0^Bq^_r2bI~&SC zp||m3-&^n=CIwiN4Ie52*Qa+T4OWwK;2sz_prG$HN*Hz4NTAVmifkwGsM+4$%?6_L zR>f5e5_4UNy@`aBT6qHJ_rG(o3Pzu1xHh<48s3Q72CEqQCmQ_hz=}v*2M@&8RC-7S z*W~K?y6*_5NJ&=WJx-)gd`Alo1p!wyb!16Q@z9pM}MIz?=o1f ztc)&{KZ-u$l1YobF=ybs{;Eoio`~!%zL^Ek@APEEwm6-pN_{_837Zl_*fuf%>>c5% zHy2|ZiksDmBt4B22lJI66h||**pS59kI&DgEX=qMCgIqv&tgMU0+0k)7?m|{zh_*g zbf@(P*K7_Z!D-}5$MsLsRBXg9bWe$!0WU4BIeV+Aw8=d}kl+oa*FjAs<%GKQ4eS+o z?2kK_7@4f90SK~%t?yfDc}>Fu$alVr!Ia2p`8^Y|z1wB=_%U5~y?A{83G`DM2y&x+ zOE8%15QQT>c7L-nZuJ1NfSKg_!X*7!fgeNg5@fV|7{4CjZINyGwD;JmfAgjnEkdpP z#C`%)0?1MU2r#1g6XUF2Ll56vv~Snhptk(U2c>=^qe&s)I%M(9fVlPjvtx1X@9d`? zI=wRc#7|cK_A_`aWYQ}mp&2b%{7$&slx6vgTxmM}h8+K6MI0fb!&B9~8K)$>MiJUp zc(S=wr|f@C)$knLJnzgTsaEk$kM9S=XpxepqKFR9T_Gm`bL13 z7B31dSIV!@cp&1ThAGFOGwT%$r;>;YA`sqx$r&Tmq^im;jjAVVKgh_JXS@(UVLcO% zFY)enUhVf0d+eYsO%!z0;)64 zrWL*o4}Rq9C_M}1WL_draQFzzJ*uT@7=1BRc+bg$sAg(bW(A30o#tqpl{Nn)j^5Xg zP`P`x9zJnNsPa`5cE4{nk?e>mpFH_iDD^@nG>62&9N-GkItedLbTbPH{S79yVbV6z z^c#R?Bh6z64tCLJsF5I3Zdg57yO}H;~Lt1nHcg|{SLrgFO$G< z?V{P7eQBfygyM-3uep$e@zwoCwk!gSi%qZv<=>F&LmZuOQGPk~Xl|2}heNar&;I^0 ztwH)DQ|uEj74##d)SRYX^gxbWo4h|7&zy9@uXGa`%ua1c8-gK&$zaAymr1CxN_ z(cx3kL4ARIIwz1B{^^=(?CunUm$I#EH)+An6OAUv_`)vEb$g|7Wf=>Pv94eVK3|kw z<;$l;gl~p!_bdL)&K)zi9t@F~-nGPHxH}6GLc(@zMhGn@LB?FRCvtPy>O3n@Q{98< zfnC874w0w+W?Bt0?ECWp=`mSuaSiPgHY;eZlY;_jn&=7gFDSk z`^uO`c?}3vIX%To7+la#qPpm#8#`#p-Q-+aPS}4143P9n=IKteoNY}|aEy_i_G*J| z4ZH-CRsPsl8%>}v9gGzbW#Ec(N=O!|Jooc|*oqSzKKgGUEAgmdCvgCUPcUv6g*GP^ zFoATbMRJ?lGWxoOY%xdLN<-T*s>tqljt?s(c;w@(vO+%OoVbr;UHAl-S4584({gbq zqJ&C`%}9S(jT?+k#E`wT72qrlX$RUNcB$#$8*Bu3le#oI2grOA=D|jZL#o#y5<$8as+a8GuxsXOP z7n0{v_U5HoiR<_KZklN(O%zpIZ?#7yfflxe@4%A+z4PVaKrpoYQoX4jjPfwfA)Nb8 zDf4r4`>N-tFfO4gRc4}c>ob8~J3o+1XfpxA&Qd)r7I0OTzM2Quj)=t6msA){H=<`^ z0otrfYHV)qK*2J9=HBF|7ypCJ^{LGW@tsR$stxi)UmMo}IlSpAT^}R|vltOUgIUBm z2!nb{Ca*5P0_3~zB~0ajWX(+%+mVL%IUFHmT;3{6U?K`wmH!N(L^|mASi9^@kN37w z3|ZM%l`}Dqy)Tx}MKat^kfMp9-6u0(zwuTG)Red_3pApoT8sNjEi#wTdD*E$UO5j` zd54-bl?+IeRAD2{mpdVk=@qN@s(c9Q-0#ebP*0)&nnmS16p9E4IIQOU^GVNA{Wrf3 zxES7N4}SwUSWh;Z2v*1%eVsj6+50=S^DkI4z*nPGEdn@$#fpVU5 zP;D|)c=R#rk|VC$ji$TY8sV}bB#s>)0Dy4}<$(IpNOm1cOkgUn{$PMiu=& zCdLb#HdxWs9BO?7VwObzTrU{C{Q7l689fEr|u zJ{m|`B*H|7kkqn-vn7jZ%txk~hmV13sser8N?*~$DV#B4u0&7*Zzt574~%ifQr zVrii$&%|z1HW<<981x~2C$hCqiL?!uQqOLyCgYDyABa92a zrJ)PCKp`{t>F!xlh+jfD~E>riDtJKJ9nTo;@N3f$r2xew+o$DC~XQ ziAu;NF#IE2@000nX2~0uisbVCz*Wy6Qvx9w*f(Z39pw-H;}{UsiVS|8H^xMa=hk*^ z({|-7%@ss2_{{HI*#MzGCWBd>pU0)1W9t;P7Pb00W^7x4P=fRMkDv#QOQ$ze zEk&+08nz;=^Sbq8V@$d18g!0lw!*~M!q8j}a+WI>xL703og{<``hg4P%VI3Mf$yiZh!OuyC+ExDh{yyDm$eT4MqaeB( zyd^*Rwhga)U!7>g3$5(|L!o(#e=F>HiHtpZnN-yHKSA=uvdhTqYmbr%kSz;Ej`;Sh zlu0Ah*WaH(K@Ww=A1`u%91sy$F*tytH4i=C7vV?Ph09;;tm zXioXakN)-#WxwmHO@FNSUeQPDwt4}K_9eUK>=cA5o8?DfBr z0&Ecw3P2&WkXayMA)=|+5a7`@*$F#Cq?Z{X>N|#37_E>j$y_ySd+T;y{K-iR0$2K&BO0tqlx4j=YT0>gUjBn2~P zzD0!aaKz#(rrm)p_Qj(!?N4Ex0N7!h`iOy%V zyV$xD9=?^?MDA;r`Ja^52JB*m?!U^M4YRJva8Gi5ufyivmSt!O}LicU0KFJu)UMUWI4p4I> z-uCJ#nHYcTWqFLW!`mZ+<^CVJU0Q#{l?%U45zn|PEo!CO0@X{J@^KZOImVK(3eg{H zv*^mrg7e#b#ZyKQKY2;oQ9+EM$rN?#UqFGlippNaryzBjVq|z(?hJb+d#u9wd7k} zau%g?=f-D7n@5YsQvmWM>p8=~{|7W5j}v}CcQ}1cj@DE(p8dSI7zSb|EX#y|JI-n* z6((}6udKlC9Fg$xM(3(R&kS-8x%FVkn{s4?Sw6ZH+Fc&cW}3}}W+cEEB&%v7 zbV^K#zdbX)MpuZLa1$uNkm~v-pbCok5cJ>lg9fR-ER8IIfj_n(XPfj1f0+10iI|30&kN< zj&E?flR-{g5*JYOL}F>*r==o#ULU4EoYq)$sE>l`y!W~@a+p`HD`eh*8Xm!w>OKL} zE{f2r0nHvH>(z|VvcX{5B!u>Ac1j}jqUwMktkHO^8_TUAf%4EV8+w+>^sxn5V1A@6%zzg^p1`L|W2)jgcN(PpZS5$7XAy1s^FG(X@t&`{yXQNN2K78nif2 z+sO5UfUyQM_HSTQekFLf7|q-(9uNc0yb;0IB$abN9tcuI`f5no1P70_J0@Hl`^K1e zK$hYxU0wzjS!COP7w1nv1y*HELK(CJlb4n}Fcq7kitq&ZpMyO0^LKAUSCg+JPv9s2 zS)aTSGGA=(Js0+BrCagd|DWXT-%)8{##W z_8VF-*dIMMkqcp{7vn>NhDD)3){6)QOID7+(zTVMXrwxxF6!NV%3t84;}P&t>})c( zO0rfstUWTbT0Ot4TYOOCgTuD8{VcJY?YgRXJL%_F+!L^hnke3LuYS0tEJ+LAvbr>x zr)ow%+ZPu_v#&#ZD}ogS}@1xNi|yKw7%7~^6&QY zC)ego=p51BW11DyinYvzZTQ(7zX3uX0@|iK1^)D;!h)B_5k-!_$|{3l%vUS5q$_82v)c- zhYlDn8XE0Ji(-qC4JbVckR};(jJ%QU~X3*OllZ(4WrfWycq@&Pg zA+nzGeJPyd2!v3K3GUBhVkMQGAWY*(5@p-Ffg&q!66fIpfj(iB7_r7ff6;mud95L1 zBdpwK#I$kG^_1L>no@r-pei)UTXAAY(0LJG|!H^aLmS}m040>rj~X4iT&>|v?yFK zY-Tk8#2lghIfDHN%#5*RYuY?FFU{`PURFc$p zQ`qsnP=8vq0RFyl?~#T4D_V>SejPyo>T_f^g;o$&jpf0xAlld+U9?Vg%p+dSauJmG zkcC(+W2Nw?Z$VY4L-zX1$5(l}`iaLtjOIO?1HEKqB~D)TK@aI+ubi+m3^RqVibZ!i z|9B}*9XIOMOX>O7jzDquGkZx$aXH=pr}W^v49W}wdLxWOUvf*|qwer*-R6-)$c?ci zzhYVuL5tMDB^U3z>e~=xCl0yObOj{#+6;pbGRjK#NJ1h-pwWxtK7#0W$(HFu(dnK& zK|2?~Eze8SNhB3se$tHD#COVJ74kVvW)#OrcN^%7T1YY2QDkvWxX9jV-tv_J>gUD+-T~M-t1oz4J8?p? zADE2~@Q?uE+Ev+b0>I3p+>|hEZS}7Xlc?YoRu-+fGteb@Aq4jXW=1CxAQ7{Iw$>#4 zXxu7jLEozQCiU{~=jVN$KR#dB%D6s~Z`r^y>h|YZ;#n}n@OJ_lN5<5iTKQpvDrtxW zY{4c((3tdaRT(76s{jD+H1v9s)$(&Hrwi$Xm*j`$?Zh&Y2{*#txmX!J7>^j{*3Oux zoJSantLnMr5Z;_Fe%@v2}C)mvrJ$3PyZZziwpK zFX%4N_K#RQZQo#}rt3Tm_}8{Z%D3l9<;X(9J^_i~MNUsaKp6e==p-l~XX1vw{@d$J zhKG1z>72@r0o7fBRYX#jNJokjR&o4T-`3LoJAb%fIZKTbJmm!QZLtr z=Y|eN%PwXZ-ZrBI05o3PQC7y;pL|p*+b|1oQ1eHI1Zq+zJ{HP#hFHTS`I_XCP=@qH6)9>%DSnA;SXYtHQsSZr3a zmD7hvBouWJN0}~Z+zfe0KIv~8daMV^1Y?I6@syGUPwQtFU>FwZ8JkPgc(f^5qIF|6 zO~&v*(;D1t_526rWzo5O$s(|a!nZC_>8U(4wFR)ktJ#oZII+#=oWxU`Bk(Xqj?8SY z+R0tR9k3b_uzQk&n=pNRtjmG4u+^@Wt%6i{gW%BA+i&k)1^Nz*~JC2HIVYy9#7h_ThZ4u#&fNT`5nah^STF!N98r3w?pTc69XsNrnpBWfX6SzP zc#D&NyJyTOpNy@?jLUCWasR~moZ!7&$#}SbxV(J&EUg%<4cti_4wB&h^_D>`5FygVzc4At<6HbHJp*F{V^2tB;G$h(h5pViGrq?$5q6BeW{ebEAc~S@YlZ zE67Uy3Xxu>A*W6nI4DPS5Pl~+gfT_mV_4$rm-qa16eL!JnCDdOq1Y>9z1a|+s{v-X zY~k+a3K_l{b|+f4hHbvk~@(U{%fLo%g@ zet*I0HGd~qkZ}qcgs0sgsE$7cxkd+Y0k4^Ww!_La3`$auYDJKSyTwTWa22r;@Z%^3 zhc5JH5=fyx8>{F3DJY)aK%oUaF+zW%>rz&a8E>heNA@4rM0v^m1Va|ply=#A;??Q@ z5o7)BcLYkFlNJI6K48k)c>02|fLId^W*C0ONJ2n@iyMQ>q!$}344IENganVZIzb0NN9hm6~ z7p|Gde&MzR3LFUai8Rj#xUq>&S8))87TU?&S{Gb~9n)~Yro9!)cD|kECF7&1K#1#) zcyqXQcNk>l(x~6zX3(JATao=)W&s`?8@hfLI{h_d5M<1s@6Bm`Fwri-xTEde@4_$} z4nLwn3SczIT$6$3SWiOs5;%?k5%zZd0E3&j0gnaPZAyTQ!Si0+&DPBDORCeD31M?> z-CW}fx3m4+R8#Uga8w4eY1ND=Pj;T!LNi`Z0{bpG*3O*t~y&pJ>=e+R`Y|c+9EF zX!gLSd#n)+u(Sia2>yFHej5Ha5JmDyRTfG1&s$0XFTV8i1WbALK%r(+4}44Sy}z~ zcGUv;l;6we#9)4|X8z?^5eZY>IX`R4H2Hspj$+^FUR77XPJTLO3l2~8^87g_15o@B zsg2EF8vn1DbOkZiXTtjZv8QG0hcg zIm?%5s2ZMXREB0le)K#KdK57WEQ6~$J!Z;q&v`w|hLBP+7MrTpLQausX`o>&f$}v_ zOUO>!Va_Wy@aG&G?z$?OaFQnXmi5Ky3^RNZY-(s9@X5Gvh&K{h(raIAQgE4N1uHWy zUsS8;l?SlTtgQJr?&_PX1#uD7Nw9hCHY0}@<N!!SPgee7%(S|CFWq zOuw^)uK=J&k%|*BxJ7u1NNy$a@k-4hMx~PU&0;LNm$j8R>spPU1or8s9ea z;|>CA14-9ga2z=TiSz!V5gk02HC&bp5x#a_C2XRBP2Q)hnz?E1sIDRQd&}c!UdIHR z>ydMA9rBsF$IQg8YWE^6L(%?FM6ZuB)=CTJUT28>_Ypke1(#)T8TxbsJQDV1rn1+M z?b7!C<}B+C48_Cx4-=#cP3p^=j%_!FG(oI4ut=`WKj?EtO}u*?`5I(g^ zrOFgjL#Ja9Y${b}*9u9yu zWA{(0142=SI4*6EXF#L&Z0;IrK3UyRxyU4?PxvBuRfIL8xikrW+fCM3*X8jRlYn;Fj7U81=l=0bT*WEAA z>huUkC$%%b5UephbmU}*Z^7*emvr8&=O*4u(+HS?awP(DoHjYAn6)#%%Se?H&}}`& z4|@4m1q+o0i@<_B?3ht7Zl zk#*?p-NOj;2b5Dw`_=#_PBSRRA`C7`bG02(&P0M_%$05MM8T1*zS(az*w%C5GZt0X z5e>*C2LLzf&x0%uUPbR3g7>^~jP@i)n$}=rk=SeAZvGVqz**bk`y8n)3#_s4*Gng2 zuijT9m{#*9!>eOoJ1k3epa9?3tZ@Dlle1!NL&WqT?h}rwgRW8s*2O9h`mjI>_7HJ6x)#&AQIx%lU9#9fxXwiHNYt`AyCOTj;DfGh`$?FN{92|E%w z_c<~jir(2e;Oe|ms(;=VdpPv}SyfYwuO7Y7Pw&GVR>qI?u0qG)|zHdzK3IRySO4`F)OYSpK(&E*Swo?K-4HwO4EOX!>cFDAC1r7%<2z z#-EU7AO+IgIHUoCa_j$!BvWvcqQUnoz|_7lH8Pxb`8(9dTO_Q5n<{96u;W!sdBMzFvl{&t{YY#+PpQFs#A_5R@wf zzt}h~?Wfa4VA3q!vX?1)AJ!{B?gW?rs5$lnAUZ4H=s2rbhw%2iH60snBkXP`J2s;# zwM1NInh*RjKX|3mB$?eve(*L&2xm?k!zR(^` zmx?j);ZSV$31UPSfmNq!N%Z zPTvubNvw)Tj{sI4_}}^GTAg;218}>0D&6Zx!%lr_K4^&C{$e5E9`pu$p^>i#z~#48 z%7BI1BfmJtGUM7-CEZOr>BTbG=DWu`Ij@=1HELFKJ%3 z6o?#l8s{~j7e?R+R(wVval$@3%YRjUz1$N5i1c4I%dze z`2C`5Y1p`p8R~Pw6UdU~AL8@Rr2E&Xd6Y@7=fSFGJ|%gXuiE+Mglna|yQz@L*%r8z z&HG>#-uVez9Xo4MrbYsWFqV5~yG&4Jqhg@>1Q+j3iT?^N*j!%oReHp}!5d!bZ^ghd z#^GXnq3DP5z7^)Hh7K|7C`3KHvC}yw_eO9VDV2>NU4~(by z5h0r8iq|$Y8KsPpeKy)ojTzVhpBysarW*fp5+`#M7c8(Xch$c@gcD*cnU!ZRfXeSx z^YfXeM|j|Yy~vfjItcWa@8@DO8X<-CI+KyRR@yNe2ajN~^r0>t*`*?E*U1+?lw0-ZqpHt@bSswa4dS& zj0{OL9YGmZJWLhSQPm=1{01<%iO2a$M)^N4`~j7K*QR$vO}ELzCBW_Zx2 z-Tq2Zx>+Khus|f}y@+jIF)Mi+L;6ojB9#_UX8woUA{pculxk`R*NEl7xqLmUZe3d& zwp(T_{0AL$FcXGqcfFP$$p+LkGM{VLp|`Ya0~(fbf+Z8sJ!N2n)@*|w@b)&!^LpwVVwjLBG?~jifgR z$w;di`Hf;L+soror7hgQ4aO7?x)* zGMakO(p{A06G@M#0<_U23318Z3Ap*aAPQ!>dS`r9=ljTH1rOeTpGAXHqjTrznBF?Z zwVJ2V(~o!_NTU=YmQ;SWQ>H7w($ao2o1Q{7g0yhRdazd|4_IFNclN|ti$Nth1b0OJ zl*K8ObB*JJTh{bW*rs^91QCFJvx<~!egqkQVHr4YLlnVaF}ZsGAa0Y5V|>%!=ZUFS zOdP`mo8Gxqio-q(FYbbyjObU^Lrq*@YNt-&WSLLKYS85lH)z7=l1qD!QXx!B5}HA8 zeh(#>%$7Ny%#IihE676J~*j!tn4jN>Hgk1>^!xYpN?Iz15L6$ zgyj_CF(^QRpD?;EpIJD8M&F!1I0<@C$d((XB;wJU-5*NGf#%y@6ZkLD`+0h~WY6k+ zyYhk!v}fY>>61TeSg1E}g))qdM(zcji7fM$XubcVy}OXVNNa7}^JTb=w>2ca6_L{{ zhLjyYswZrVx%b~{Zu78jodS27MD|(7WH^OoRgi)qQ%8opR4|FI&r4-P&DPx@=!<~E z95P+H!f0zMMmswjizG=D{mt#fXW{uaXiCM6 zmKH@CJ3d9jn@sF&7vk`-PnY{YBuukRwMe<$H|>BfIHu_2%yuP$D@kg&g$O5Y@+)lJ zMiDE8)O1D^I&5ZpO8oFTI+KFHzw>{#yD{_1MbLWN<-7k+lCU~iASVI^&=M^vY1_>w z9hjS665|jcMjVbx#4|lB0p+&io}SHC-Ci_tKIdUqO}M!pddsf{ec7@_1ngWCcwO(WTO-w%SRnB?;3lw`W|L*F+OMc0;HgwzEFiC&*YpfZibGY z3L!9Nks0RFv!UJD8n^5JHL5iG0F7JXAcaEmqpH|fEaFTEuZ=eCL%7iPQ@}c;3@vuC z0K?yme_>{Q#+~fqnTOGyfk`+mlwCVBy2YQBhA-o7CuC^R1`98OKWTw%nz`xDT1SUG`?M59{_;j=MekN5Pe2UE**J6Y~;(($f=_oyq2r+vb zA>eMrn$aYo3ry%sOldx2>?UY|*D5dT?cw?i5{m&n4=r{;Mfy$Ixbq}kka-UDlxl)- zB1HB=L+~fr`5|UqHyFq`Yy-Ent8kQ0zHTk~{35>`=u-?D!{1gU`Em1OU|7&Yz0!KA z_++VzwU3B&8Ab|<(Llj`JzK+4sH8k8UB6u6w`pmkeH{#)^FtxFsm^SBhRTNH`#<0n zTbx;UNYfJxDyAvwr;;Owi5`WBq~L))(!jVZYIgo1Em#bzoAKktj8I5J>t!Q9;BCrh zfK81A>y^&f7xKW`%Qt}m@$yeocEKX zj5a4Wha!RzM>;l{*{CChle06C67)c{p(g@*A9%EQOTr)lv@c?5Oor$UmLE(xr9zL` zd4q29rQ=L;M#Q^qZKBjUK;v;NyJLQsI&4Vt%HaP;MH1AvdO;5<(bw_I`g~^TzY$5iPtWeFru&*7rO=IlCs&yhDeM@QDd(r1(`o) zv}@^Q2T6I?P>h?nwPoF2QxpRsJ`Hin6j6bZRV?O-Onpm!cHeGLUylAHz2B_;!_GMf z0Z8P+!uFpuvmKc4b=qR{kg+CN2l5>+9g6kg=6$P zs=9!>zj7C6T@NKF(e`XhPlUO*dp^_eG(~mJ*{|OVo#Y6R$#UR7=gM&L8B;uiZU|U! zIDP-NB_|e4N6}DS_guGI(E;rY;SgB7G$FIi{9HA?L>h!rP_Nq4CzXc;ZfTau$oI>u zv&OaRX~Wqs+oxV%sv#5HKu9FvcGQd>s&OvYeY#9^$;=B?SI(kB zKI3K5ssWJVCV~0lR6`uBAu3C5@Q5C4??V2z{1~uEZt=o|AP+jqdQFURXz3kF9lkRo z>CM9(=Z^0Y%k76ocrC66KTbHY=jKQf31`=nd9E?_)~5jR;8go-hfzf=*kG=t&BhXx#SQ5!P$Ru?uMv}*P~kjo zywk_)h%{vA(aNy6o$_W!5K? zCstD=-~bakUbA79U`~Hvl&_?reJvf@S#r_QE^6zV%E0&jZ3BIB4C#QE7?z(kiEfek zX$1tTx=RLaS;UWdmefM4MWOjlL=MbKE4PrOgQS?SAr z9Wg<6_yeY<9{&ju2`AE!Dy+|V_9l{U_AiS6-($=7lL229-2 z6yti=iB*n{1_xA4xOef-`DR+j2S$|6WX@9le<9S;pQ6)Toci3_J)Lk_e{4T9iRfID0mW(rN8rwG^L{~?f8xXl#FJs?@1{@Sg zdnLv$%s1%Ho9xPbz$uCaLZfEHGjls6Fu34Zd5D00ifUS0-VEoI$Ff2a&J70uwkG`0 z#Y!rF@_BC*8uaug2fwc*1uYva1*RBLXoGv8ad!{f=F8au0rt+(V@6mig+FM9{6H z#!8P7g#jN;(CF<|dE*4 z>1mvU*Y!zA?*VobE9_dI$$fMPz)Ieiy1VT^ui$QjOTu+T1ldrmJn*}3|{;F$n#cdK&H(rOAg zh+(G2CeSNwejEQs=U_;q))s-K9#`I9W@NRJ{pJ=%8A7ha7JZ>F3XhCePrpaZe~8!S z#22@R_6dLfYcV9))J(wz!jXE2AA156H{obK;$ka%5s@Kys0mO8=E9cbqhsDhOicUeMj8QSg0?-M>~eBR}K;`$>bO zP-H6!6*p*_vsR)|Fi1P6b7VTB+7c5a`!;eAl8g?i=<(A}BWDI5Bv_Dlo21{UlKhclzff~oJ8B0y zizE&J3eAFlZ4;Jne+hten^w>IR`}5>2eU2pwfy_D;M@T!}nQ(uw>ICd`#Yf+EZj?9+x%w(};ecyKaQB2Pk~5D-pnZ01}v z>7&>WY{Q;kM84SeUbml?Z_QKz@NAvBL9%Nb4fLq7R`ABUb0A-MMtPR~rF(0j$=Ezv zW1I6>4V+VtwNKwl4y+9zl{1GpsoMZ9QdJhLOFpYNZiVe!XDeXB($!RZsDfoiFQFgy zBUO_rXx7tG*G1lsjV^Y+NSWAgs%v_$`1mBL9crF{L0(F0WDZ@%7EIEfBk2!8-^0I(I<1J#WT?V{a+bYtrq(X2! zHQg3_(WDI0{_?no}A)R;xHxdpiZi>m0l>DdP$n#Pe)qo zdqhj;Tb}EI{~c>~Gy6*x#t?anGxrgJj$UxiV%`@bx8L_= zVnu^xK+#O5FH&q7Wzhac0O|6q?JHP#m;d0;cgXo%1Yg41CqBS1CJnZKOYn;(>B!KeE)!oAMVX~P z?L1^M7k8kDd_K2E;4^T~t4w7!C1B&9LfXKvtm4IHWM9LSByvpUn%&Y+_Aer6Hb9Qd zSwsX2K2dVNiRdTKk3xHu3ed!*L??~hX-##erz`@BFzQ=FTGhK-r(&{F>1U5g#S3!K zn;@V7T{BRWST9~LT74})GF0>ukh|x(5IC+s zIT)ab9xYwA9wE9+y6o@RrKA1ES2HuuN8QN^!Lx_%0^Ara%J$vA&daf_Wqj5f#T?So zDX%@`g2PUk6F(I76QRI``7w|S)D)dydzgmSpCgDKtZFcsD=b)B=>;o0 zE!eB1VEzYv#7)m30>gwDL~>`y`QU)7<$7fU(=X^t3WSf2K@67n6-&HpyZ*@Wys^)E zTcCW!$-)tq-mvPpfey5T!RXR|;0k49E9g7^rJnJ=GcWokX_5feS+4jE^~1_~PuFiv z|F*{kweb!Vr}*4HyuGe|RuJ`YZUbv!g20gc*{4->or+DXSijkmEdUMsd9xQ9U7ONezDoKVYJo_`?G?lE!u%P>ig^ zOq-oZ{+zyZ4{)nXkh9j;HnKW0XT9SWf0V4}dH9Z?m2Mp;$b$l6$!m*K!X%HZSs?L= z$!QRH(aRmfwWI*zn&43Lj;(VG)7#cM_k6cX1&DlwZMFMl#yvpKR32|0$0{}F>`tTh zp-ST$WOj$z^$Rane4)Ina=)R%txfyLfY0KR^h`L0oUyq<+7n=n4PpvL8#f@>a!i#` zDd2lpom75p2tOutJUi}jb5ah9O{J&jS#FwUgGUBv6-G4zxfY)Qf>Gq9eFs=m+Y;^$ zp@b?zK&k|!_fF`cBOpyWiuB%_0Rurgh)C}sC?F^*MFi;rQlyI@pi)$NQIIZ>x8phI z-t(Pz@2h-YvUXW}=AVCN%}kO_a;Q#9dIegxH}l-IF#5X~T$som+rns-@Ys;;(jLjXf<;7~&beb1!Iz*Qvf(vD6w!?ZU zJf@W1PH$xriF%m>6eRKzA->qE0#Xp2{`6AGWr$2V8qz{Vo&4lu{-}Tw@dsg z6Ppexn%!3ao4Oi$cuZDSxm>uWw5`5}t5;C*IZdS|uR(8GqZe7MJ$ap9V;Dg$l|Oi& zVfGnCvADhESm0#TH5xsX^1XvPD>;Ku_^O{~g@bmKv#y`k%Ztml$U+6r^x`mow51i@ zOGFrHEjJRDtC{oi_}=sJ3+Kc?tg*6WEawjl)>cd5a#IzWdQ_7wM)RYG%;{d}4MZV7 zu}&(5gtVpHA!y^u_%y^LM%L!Ku_Q=995?d?^Xx~%o10SRvm^Ux@p?4+|!E;T0f zTYV`NomRwyj1n$}Xha4_kYr z4Y5u0&oWN9@^Nr&HgAb)hb5Utj?-=Urh?-@nV^+YwB}%8@T9u!TGMNe=7wb_#Y~dH z9-o@Hu7#gn(7P;5QGyMNLJg3u*EMW&)8~2PAHIpRIEEmwyH|-E{o#_Dd3MAL6U(B@XF~el)x_Q}+)kap^oxSf5y9pk? zHps9)Z)Ho-fBV&%GMkjIk~eu@U$lncMJ{qla#@QHg7y+s7VNSn4V=t!0W5JgtCq-- zmuqV^JrJoKo9aTD&5?^zB6AgANcyJw66|NPaRYu@L+JJmVs~n_`A=32vu(!UN9HF# zN>)GZ_lQq1_G41aa}i672V3l!lqc@pL0GEEJGNt3hsXOY3M2678LNpjXF3BGSqa^! zC+l&WYtdWw={tKmreV+OTwOIa3w2F>+EjdX9rg0XHK;P~_Hp0e<#jHP=_RiiYT_nU zF?nzSpfTI4KiqUw{H^JtCA zuK(cmWmJG>Z~H07c6)h&#o5<5m6GexB~{!eJy!j>)4wJ>?7G7nL{navxG3J$6E=2# zO2TZTFZn)s%E#*7{LHdAvQBl->jMH=0hQ$8NUzgYG@j9eeK$2Xx_#a=SVnrImMog7 z;R9@_DtT3pK!b3hB$Q#zP+Z!UDHlR3w|N8$0#;mbnH z@)sfut467n36_4@he}fmOb?el1~m2GSB9L+d|UnX;9dMgn77`mr`ZKd4imZcw{|pK zzyH9VzNp#|$dJ0DDeaneI5U#JFj(bHRdRA+-ie)#=U4dI!n@3@S%CT0MEFk6l9+f8z?NU1;aTR4p-Sp~Uu_X@OCq^VpZkX&o^Gc7k?bSl(t@}5?PKQ` zmtj6kmw!2l-L81^X*nZ6=xmjAwy8Ifq9Y3^J@y2GOn6a{*%GIT3m{l(A2XRa5Q zGpQI=Hb8~V^O)&IAEhM4pWWaO(thPME!r8(E|o^hR_?*Wa8{(rHBQhyd%Y{!b?`VC z>(;+Wx*~18TByZmsEO8oH{*IL8btd-ZgJ6t^xe9T_bLUMw6PU4L82Hs1s1lhdclx} zSf?KTBK~;Gbwc`GDmD3FD0{=T4wB_|H3qF;DhScNk)lRYg=30cp>q_~6=p-6nl%bj z6uUV$T_Z`hFBH4mlbaBCIUR12uwB2G$~PWK&C0M>ndw4Vem7Sd7>M&7ibYW>`@A!t z+_=OfA&BvKpC{fzTDvToqi1uHd1m;;Q)bvhu#A(TAWuwc=0)-O0hz9RUK0-8`^;sS zqJ&l(_De&km)g9QbYF#RD`>v0$40t3q9ZTRg!@-W2)l-PZSntl)T|-AHeC%d ze`YC}{n=A_o4jU;U5u!&LMmIp-$?wngMpCNg{dFH>BZxl-n+#CXSp_)fc&<0-D!*6 z$@E=Ylj-GR?hx`*A+Oj+emBmLR0!FTy@Ce4VxcdYA z0omGVN5C6oGT6yXn(zJklmCxUKTMyOgckLwe4n}ZGEC%D~_SHE5=>siAk1q z8+|D}RM)>Nz{qArlk@m^$GulMq)geX>94fo9M%#Ey8r}4e!2^cs1<&P%H z{Xy1Bf^gB8QP1ypn9H07OkDVjb^N@CJt;cB>TqNUWsq?(W1FIr6z?o76)ZbSeBQ1f zAF@@4ecpe?BF-+kam|b_gD^^sp)!NP6h|3eZ&+L>V&!EqowyV(c3?`mcHDF^T=7e% z{xE7;aX0$?RP^ZU^Tzsh0!&IopM)=4)K=e^(f6Wg?s)QD?+t`6|2+6Zq*6QCF>Ozb`mD;I-wjnMfV$!3s zuWM!I)quE3+@gQ{Ii%!=!J$X;Q;g4_bwUhiG%SdXgFfmYd^3nt9SiM5?7)A3iBH`` zj8+^p`wL>tLc{zbGZxrJ`Q3OS6fbYAnJC20VBsDO{Zh-z*h^QQZh=d_ zI=&&nic)TU>hS8xP0Z6+q1B`avnL(5M>bCH-G+VOSTf~j^|kO7J+`BM*F!khrsgeE z$X!?>`>ncqClB;9M z{7k6V458U_)eT`SYYA;_A4HP9MjXJO-##SHTtgR#R+ufykW>%K>PMr%HpUUNm0hs{az7t*oT0qq5=A_tHX)Ld0G%n*Ncq-H!5jB;Erd%+T>$$#2p_VMN0 zwb6GHv$qn}k>7cs8j4c14}Lg}N9lZTwD~p=geoTYXs7lX2)i>Ryub?H^SOJA`EB6w zrxD$zrTyWEA#1|ip-wl|q)bwH38crhVr<|%Of9evmi^a_Zsl+sAE}kK! z0XNcnTGG-vje--T3vWj@#d8aZ{1%`Z<|lOrZ@ydp=nigr8MI%cdYL&F^WpQtEz|`L zx!p(~Gs&njI-v>6uBueKev3Zu(BsTprgDO-4bwN22aU<8no=YMiaU*_NiK9Z5Vd@P{Tx?PL*_jDlvREf-u~`J^sgp@&S;kVGgoETL|&Le z5y|$HY&@>WMq*{V>r{drbsuX2D+pM=VAwEv_nO= z#O5w!4NU=X0S7+DXVL<$3D8Yb_?7+7Lm}h@#+y~l%B<(*>@_YqFG)BIz!d>?*c;N* zD|Rng;gl`X5lrVacOgV78n+Q)IV!$LUu@ntwbKP&u0Fw&Z)+!sM%S<_S*JTIW3#f+ zS?LK+h+G%?&CJFo40b26PJInObV46Tos*O&V;>I`$Elx;JIZl)d#dOX$|-?`K^6?%SbkmChlE9k$x^rD3v{6vX%l}YrVh*f z?9tu zp>p$6kw)M$voORU+{{NvjlROzf{rQWfG_74Q3Q`!=MK*tCP!W;)dbF_=G5%sdcoXc zxAtm7=!tq-h|pkte7%}%zUCvZ(ziqs5T1$#qv%__Yr;=4`GZKWqt0lCi^*E{52@H^ zYIt4r8&Zgg%?(bcThyPBDBo-;Y>GXN-}AKb>$&E#<0*=MEqWHup;?&F8~p9*u&(YE z@z6Hv#VAIK^#0NGZ(Id?bYs@_+WzgUg7&O)OV;B>r?WS&+S)UizPj;Qw^yFe%(7{^ z;1^%N_%21cgmaQZGmRV^H+ab8RH$gYt4+CD3p;YuYUTen%SCZ7F`d}a%BYG!L-=gn z^A4w0s*ctb;o&7Hm-p4g1~1`?_BuxvTjeh_uaBgg#~cHR7*D!ZWlBqO{27Gg-&^v7w#-P`#_E#w|yy082rTT;1#N{s6LZ75+nNx2xGJ4;K`d zvk_@Y9nWQH`Z;=emb0^^Wi^=xS)Hku1>E(wJQxw!L^WndhLf8Ro~mo*d$QD|{1*T*25q^MZ(Y0x>q}5|YIHLDJLS zu=^%u!x^EYzeHK(TiU2yq;QyCTyc1saqzeNw=-lCy;tN~QMF<=cQmUBn}x#Eoykrd zB&T^r63+i{ta(Y!Fg`b_*Ym`$h3);TUGkow{+S!P945O9$#Pc?CG`s8;Lx_+&domF zZGsXFitl>txbEbZP4)&?RwdG>pS!%acL&2_NYa+~(&!}em zqgI*bGI4uqCT{~0XvspSTxN7??hO#XIYyuRNAS?o zbG^hTj#6}S;jqHzZB#TCY5$N0*&MSLpi%h0Dgcr>s11-G@sa>ks7Nxs40hZK21Zbh>6bv?CI$e^BLOtB6nBP< z0tiwd04yE~04C%sXC@RR;YizK0OMdGigehd18fAUU88JO&U; zaqDYcdjth!L<>KbCxy2|{0nAaU1Hjo&;&9mb zYE%TsG4>LGG@D0AV*rp(Vwi$TA%MWk17%nw2!i|r;{%Wg8c_B;F=%57_#l8INMHafA2EOdgncn2 z1aJ&-mv9(T2afEg@NXwzTR%DI z4>t=#JpM2;lp)AByqbgnz~fhG0vN!h$WjB!z&z$PL^=Wxl|0bCC;*2l#ChUJP;a#I zJb-h+;c*_KOkDoJ_8Zq%dGw#S82*VX%vtVF?*6xUsPR}Z#PY%*7HT|>FlTvTqzmZd zKX4?0d_zsJ#7fws%4hPjAjU#~0w0gs05KXoNBVpJ0Cx)RyUHElj=|9uZ>!1tbU5Dk z7yxN#whB|g`vET>bEt#o^H1LsU;9tKFL8lH{Na1cKYb6N@P5a0i{~}`Tof7uavLss z2VG49iTE8402rS}<7m*wFeCs#F&Cg{y7aj{kJP!PI|HeV|{=eYJ z`3H^`Y+^O)FC1p8ypnhv`1msMfGL17bAI!=YV|i8iO~O&t^M!#25p@Ghiq+;Tmbk> z_HQ|$Y*6OBN)eGH-hOb+lH%k!0Q{STZ7JjUPn@V?-?^V=7oo@!7}(tpuY{Wm?X|3y#V|56X> zA3g{5^nrR1css*ZZ=o@uoqzhX53d^^8~C`u$3mE#E-~2Q`d1u^nz$jPf7{Qk1OL|=$LFI2Fkgc?vKp)}U~Ynf7z_R*7vTB7 z>HW{~?+g(9pX-I-^};~C1b^z~{GVa~e=e2)KaU!m15*Zb3dRjuE?*2l{>m-pkN%ch zPXEd+1TFFZ$a!Io|ChOi@ZY&b{t;Lw9Od!#B?a^g6bXR29$*l~7Oxm$TW7#E16dI% z1fX&U0138o{r6gyMF3D!KBOofGk%@n@gn=7w%~E%Fg|EGG6Jjv_}m!xH~ioJ!Vfw5 zpYZ>GKs{T!%Dfy&n;g5*rr4TrO30tmuDj(_{w z%0kp60<0~UVG4K~!Vubq$bKRlFh(4~n*2)kmH1n_K;^lVI(E zNdD6fQ`liRHU@=KDF7%i6}*NHRsaOV)eUk=Xl@18SyGUjDPna6P&S?;TaY-gp8&aH zK$$Q9jVs(=Tmhs1)bamVN8tGND8Kv%S6Hh{Xp?A|0*EbM2E?cm320;U`cU$%00GF& zHGCeEZw2iJ^O#r|4i_e{O8r+p!@&EfF#rU70Ha|7fGjE!_a5J0s1zJjDF6TtG!5hn z_}4nd_XH|M058ZZ1%4YGS$_8>ykPG~YikG|15&`&7vD31y@cZ{un$AB1GX3#v^=5& zpojo_xQH_F96MOg%jDqT92l|;hx@$`&aqtv*uZ+`i6P+y>zZ;Eav4B?J>U-vKv<;* zKm_$800gMB#>>mj7vXH@=IP`pOa_nvoR__wedG`(u5JMcXYeQj9DVH^Je(X6H{AkV z5rM8w2vb7~gcI7yAt=z!9-Q&}v_HZ%Fwj>{L?p-;Egax1?ClhY;KYk_l>0qjQdnFP zq2}Wo;_v3-8i?Rk<3ota%1R4~i-O1h5^CaP=Ov6#@$^I(<7WjRjGY3U{DVPgcv%40 z-%(-W3Cclk2=K9^4!%SHx3SI(aj{8ywStVG2C&`0C^+{#c&G|&hkgJ6N#TP*O-KE;~y(^+R1{3#PW)n$1jXm8lGaLCJ)nV8CGmgT| zz4`F|!rtRcceny!Ev9wLIii~1k~=iE;Wd3tPa%wZ%gKz7Dco}1>^IYD)!_uPJi}g} zg9v-vvLF8-7dV(WvJdExWEu1^p>7s*4NU9M%{qE%E3I>mao#@h8oa|WRanVDA4xB? z*187Vjx@SoQ=+{EWA=YT^zi{fHk=jl=&O#Zzb~n>DDjBeGh!C%=4a0tKIn(1eJ?&s zpDnrDa7C z$xE*lKVhIlQl1EmU9Qc3PiS4aSpZ{>OJT^h680SN&v?J$bXk2oIsRsfdu4s$3XOy7 z$$N?~PWy{->m2PjqxbyWhLZd5yi#lKy0eZG|6wP&y#K4JkV0xQd*S@4URH&}ukn@a z!*)d?+F^8Rj#X51OX&#L$05O~`k}k*$`>sBDuFq_Ha+vo{e=4m zQ(9J4)o(5n8rEjXBQJFLV>d?HF8NWtjUcpo8(-S&OvA7|WaL zj0YG)*$|KBHAN-5vVHU?Wz^nG*OUB~xt`r?4DsjluLV7?Lu+LJT;-t;vOb#K4i7QJ zK7JF^+`+7Xk~-qRt?-+M>^+@Uq@kyVz#WwZ9PNC2B^J{B!wz*fTh&ntpWb&&8GG4g*-(cf zmOFHZCh^hbCn1m{Adu98HJ6=^N+?BP2ugWW9U7zUrrNG~*c|_Ws6Zya|IxLW#S+f^ zvGUf7!)Zsvdj%XWPd>0Fw|oFNE@XSzHe{2x?X*`6+NK1(;n_Ed>^*agpopBwd#Q=$ zo6)?p*felIW6(d(r;Gg#bRk^y71f|ZjV$;n_!<1!Vm7;zn^O};eK0pqN&7nCgGG0; zX0Kycn#-SG>}A}&@bW>VJI(#+IME&%gD^zE*)ej_@S#xS^zEYa3E46h^$+e3xwXJo zUT{~f2A+F8xs_|R{mjAkwVuZ1Mr)~!FUQmlMOB`6rDq@)1T}kQ*5fy9v?trnja_>d zz)6tz#W^l@GkKkVT}Y(xEh$fakbV1RzMcuby1 z!{xng)3^%iYA%d zfH%#h&8_)n&mpk%%F~~q=B`pImHV~rQSun)~+7jM~EAL$>+ zMbCIl7!8ipzT}|98VvWV33((CxfCDDtHJx_p zGK5|82m4%Np?wj@`%PYhi#*DmQcDB#;hdhOl7ij*T#)A`keda!DEMp^U9I+?JFl;P zoa5tcn@Uim6$*JOfIuiY$;ZAI3hpl=TB@Nuf-llUiZEd|0=vA{;SyTHp5t$ccY{16 zM6ac)s+DEmGY!zb)sk6yDS3!QG3g^RC!{$OoESaCPq?>NP7Y4jo|9) zw_>`7exF1&yG_FP!|D?~-S|gj*Dklb9%1X>$&GhKUC91Ohs4rx%Gd}rT%wl9L%MLc z1{yiH%{|&K9{{%Wr4w0)B3C_(x1E=NvT3=J#vaDrolp#)ISUxuR`GR>2fxy?^W0Bb zn>D$vZ$}v1Jr%vGGHWgwX|)XT`SxmGN8vF{78EJsa8EBiQih#a$#df1G;c;ackt>( ze%0^4UL5Q14)P>5eWN(gYmXfvmJVoSAyi;`!CW#t&ZH`h9$zz0E+n~ZN)%wa@{Y$c zK!B6lgu#OFm2Er2NUuI}v?RU!P?|jU0&Rx^=QJ*aN$-bw$b_TnuOvuQUH3;bmD}Yf zmx|+9YAqvg4$^&FHT2pTXkU**`yFmggit=S>f<+{kH5m*Wfy)pL7Bfhd$(I5e0?Y@ zn6kXt*<8Z6DD9f=4X{W90EZ#?B=~2I27FF&xQ7imEhTL_e_1=D#x&lghp{9_Ti-55 zj*GmJQ-J8!7(Zyf23`X71lt?sKd-x#vJr@&Q?%TRn(dK4(c<)@l`AAM{zPr=;=&lv z9U$l{0%>c~#telo^^kWwP$%TQAp-&5yU%*Y*20l~At-41+~90?Q813+#p5?A-M{)z zTWXm$<#JlvH-a1VFWbL8GFoF2zcpgk5^p=U+K4WC?A$IN8$;WCOZDm`QPFz7`T|j} zuWt3>NVy^8LER&f#Vcu^EVeRN&8y;G1xamPeRb8w>zO&p!Yk38d(rDW-XsibFOSoeL#GAUIphKD|GCR5Ch_PQJ?zjVdn?y0H=hJ_NBb>@jPYgw(C*8mTpZuL; z_2M`)3s%z-%9yk{?I8v(otPyVI7w$p#Ac2Yse$yzY~X&@@&AT9tmnnkjgX3}B=D=Q z!aph^)xBdm;5Bpkb4M(gC(UCx{yhkwYTpOw@L0Kg|A;a*qW^LbHUKPuYCwm_%FVTo zC{^RJI-;&D&*wWt0&3;bts|<`cxGygRsfalB|wLV#hYJVPC- zXR(O?3MFcP7{5hoJk}@Z8y4@)_Bezg9_m}PxTH|a5`DzlMIX#sbi^CiIpzQQyn^Wl zA)(CFBv9jWjZUvYs7>Y+!PF?ae@Ju4yB+c#f#2HG(;_80g8JpP$BDeVpH#92FdlQi8whZ7St0w>8=`S~C2_dyep%S{zv|<%zlcrv8&1N`uX? zFZ`2D-j&g^CnRR=E>E=co09WIA~c785{?B7Qg^{OSrPb+$w`K0ep7QG2v=?h9D#GZ zxpAt~cUkHNs^Ub{(VnquywBK8*b}tLelgG*<23B!H_lAW`k*}4?h_5+*ouL6U%p~T zR-b41#hMn07uhK7hSZ`QmEpgo(L336!{mgrZd#YTu284Q%}Rq%XXNC`rbcSnbks@-8N2eb4oIfs0dP1W88iIhiol^5r);yN3Gyyc-XDA!jo}lUon8c0pNy}##+Sd% zC+?~~l~Q5xiGQs=8C_xawvBe>T+kUCF-5>F95MYfEs_8ATCTUV^f_t#9>_ zMv_VNjY~jg?o7_rLv#m?G{$0RO#SF647|f5hSS%7HHx*RKb56+k9%Pkl?Q06-6zC`_%8Qcfj4@4jVBT z71v8BZ|^PXR1o>7I`l$+LUe5uswG9Y$)5*~qz3n#1x4P!Wdz~}%Mnff1>RMMu@Z9_ zU%@vz(x(y|`DaAnH+~v?v?D1KBrCu1bI`OrD?t{f2?f(;uq;LQ@&uIVBeBV5F(WgM zkTgPEm%5jmI9JN5An=n;W;OH9hHwl9T}BJFNifQN@~msW)3?}ScKQad_i~)CRC$MzW_{)A zj|saHL2e~Zltc1q2XFs$=&!-GrxhhUOe}14%102+Z?f6aF_g{0K2&30%48&|IS2~H z56(ht<%4CfquSyvx7~iLFh{tRzt-UJC1XM-h=C(! z{tgj3oOG(Y-nDf!w7Yaw$)AJ z>{tLY?EKaSn;c*x*W;H43BGa7+3}TT$h77ywB(EO$>2}uDUaWUSr)cBvcj%Q!~YR{ zQ??q+laGbZ`&s?t0GEn4S`&@AUZmJwY0{?Qm{H?r) z`aIVwy|O@1-gg>~j+33QED!@B44U2Hy$+?(;XWPXdQVg^nok>DFQc=nz!LqI26P47 zVcth9)hGzibf6v;9hKuv{-aGkDBji5&3)Qbc?IP-K>nASp?AewPH;4wl$~!m_1yO9 zxxH_#lPq(6)6>V*K4Po|KZoLXxKE_AjQBoRDupFFTkX*?$T}nk#RY)I2UP<9ZYi((&D5pAQ(Gg1krS0gtlMmAYjnc!p!P2*eum(EWZ|Xw7emvc-vj;0jW2Wkg*HxY#Q1aibH!s ztezUeuUSnwpddzM5$p8LN`nfL(78bFhBPpPme1!l*fSIi1mDbk=q(epIKJi|i0nRX z;Mb69Vy!+q3_5v^LAt6k(ds!S%}2=9t|j5waI>WX{9h|g#Q%}5Sw3S8jgD}xy+(0O za-WW?m{2TubE1T8)Z0*MHom{=dj+Dv-HLVmWI&-sA%W_RX4-|?vUuTsKI3-c!+a=P zxJQN(KF*4{nZj!nsdrXm880^pbt8v1It-^nHk!FjMhmDMs{@G#6e?D_w6Z%~gET3$ zP7UfQr6XXBG$(wY`*iP$WkOv}f^(;kTTG2*yWJLB!^s; z>TccUkQbWsbZhO;dGgH6VnLp1bhoaw#h(yrta+}B zh6SRpUUZ3XuTIELy#Yn9)2u~{n4sj^F~?^^=kErDRodmm=CbcD_n|0d7gGzQAp&i7 zp(^Yw8(cZU4%N<bE(iF&6Dm@V~`tqNDCzOEkv_e=Mf&*h7HlN&{J9j+B33^Yg>920$Ip~R%&q+ zc)|xLDPf^^@K5)I3)-+*ZCF6ZLW4SR2+<^G6fh5a83umgRc%<2j%6GSMeC6fN00!gLB_SU~zl_Hb|JTiJ^uUmuQvFC42f$Y{ZwzxzkbEnmu=$Ww%tf*ErYP z9rn~Rk+(qyw40zimbv$=|evUc+q*Bs<) zha=d@Z`*6#WDxmnjd^#qq&f_{vE0s%!b)=b>`G}shC-OKQc4!G8WHcl1Y6dDinzSO zgX8M5`%_e-^=*_zi~VEA*l%}=J*>agqe$^q&yRe~U(p{z?P9B{!Pbe|R+XoX{HBKDRY%UQEOwtVRP+;l#(?Ne zIy(Vfn^e8LFXxIAn@}~J=(e2#<$IsBY(NN>o|oXz>8U7xo+rQ0Z)z01!y5XwkcuxJ zZ*ey)Cp{mB1)<=ZzhF>dalGC;4I7rD6rNcu=l3u6P8$GsfKXRp>06uMm*2EExCk?z z-}D9TS#ASL`>9NflYFhj=V-Pf&VJXXgMA=&vm}nNt+FAvY;SHt zR<4P6?@WT~dvj{_$$R;=OMpY;3`{CCdh!gdg3@Y}KZ*asmAEC1r92w6gs_i70kZW8 z4UJ9o_NKB)R5oAA)3{+FZwg|H*h8||h@~eWngda56u!oZ{I(2LS))d6XHCLw!tJ5@ zAUkWe@{crO$ggj(n!k|R3-Sc0Z3O`bIwRH!LQ)h3>8}-J9b%qa5K2G=@gpimG4E-> z>Jz$~Y9JqFl?{$LHv@GSqvf$y&EvggDxb8Dd1w*kqf}+eDL6}w{je7M)c34JNv!-i33|@`c5nJUsO6yCRpt3rz(VkYx=@H1)AUnO6ir#xn5a+4W`L!>ie9-u(raB4> z*5i!ph;rDy(ugyM`#})hD@{P%K)sh>LR7A(K3OIuSD!3*mDONar}V2tB;Nj6IFWg~ zGq3G4YT6WJg+9q>amoin58#BEDZtPhRnZ#GW`5y4Og%0<48iX*Y@iyDqQ{0bRyP#b z7mxECpVKU&T87j_0qG6A62*tjn z3VB`)q!%HV1L;9XUm)>>Bms#bgm(2D5UP;vJ4LBp*^k2@9Ij>72SM2VNd3H*AjWx} zu>ey5>x6Wvdg5>%{S8L{k@tKIe$>E5e(lS|+L!nZmcx!EuBMi~Ko+lk%Z9_E2;>J< z^6UuYyH&C^0(pu`PK!VuN#qNZX)^VE%{RO!276N|`PryeD>|3N2HNv7R<(rH=nU^A z$|0=W0}=W`#f2;Q@i!OFAP*eo+KUMM(sMZ&1+^s6PB?9?rB440S z-a}uxPnoE>;#qS&6oJ8QD*vhoMaK6pxP!dVe=`U@hTt4=n~m`>-3R-O4rR^pp*>ptIZbFhxsN@a*UCcTwy_APtX0$^dP4*rq$=)Lo z_8#eioLo%?A3rgJ4=c`#=wPM&ynZ%4n zRPeS8e;y7aJ>#+a6E_=farb)sZ*lt^BXd$OlvI32XPh^(w_{|v$uaVlBvHn(+~&r6 z6Q*sg$*>@)nGVQIo52zH*@`q7)`6$6fAZxUaWCueChrwTUNS*W{?L~nV}m`Q8ZyH~ zLGVX;XC%?Jt(4@eigo*=9V3%Z6DeFQ1`eAYFsr;TujU&m)#jUNg!;SzoWXX2H~9c! zTEb&s<{Mn`!O^0trX~ zqo)I6prIEwu(&aI(6|f4ISqk4d8ebk5V=<(Z{kkO(D@VzsTk`(fY|QLGwgI`1gKo( zW95Q%9rAPZ#%{6xB&zYo9n<>|!D-knW*lHqHoLW~L<7#w$$n~(n9+b- z4mjm~@LlG}XoL^*hkRyd#y-qzvv%4^r=Mwb;d-@qaso_MCMP-NU396u!)k)zp*0?s zEBwaKg!nx;To=1-rn~S)K4~1zhgdg1ilo!w_K zUo!xQA9mj&Me)P@0XM25ZWZaC-i$P`iwXr_LOMD`g=q>)CK`V6c5|Ox;!05bGVHj5 zAs1q}Pp;r=b|VS#>A*pb1`h`si`iBLZ$VTXEj#2Lyypyx)XNH!I4G(dju}Wi!k_nTz;qEizq_nc`?lZXLybgJX zV!a)dTcCrN9oaHq5&iFUg;9=bgf0mI9`m0_G<_*aPGC9C>h7A|*S&cAnA8j5A z-sEKWsbx}@`_yt*iGr0MLf~hod{~a{!~{mY!STd|GD5X6#kb&UgbQDFUK&i2Q1CQH zUB|e%O5iA5`2vSoWnhFh#eg88+}2#MBV|^$tA5yk*pQH9>^0XZe-iXSYs0W6GqV$@ zlIWEz3q@!v>DFUS2G>=#x*lYbR@{`^jZD~nW)@a~Ls7wJKcQ+LES7V-Nyh4%yD?p* zibTrUZOFnPUV#i?(FaRWT7L&ytG|!pYaXO5kljPYO?FIsOfK|%ka7ssP&HsHS50mW z4&A9Sk;=%|%vMwJH8ZH0u)yF-GGG#Mb)AXSe3I3~CyAIWI|D(}4x8onF{>6><{-5) z7#8K64Ab46fmYLC1i)ej+G^l%YJ4-hMdEuxX@lxAlke%Yh-#sNO&=>tv22eD9j2n7 zNVRH_q+%2Y#wQ;zub;2kiD_DAPjJE(4@0d0#oEk9wtUnHLou^z$0Yc&SHZk0`1J{J zZL%lfvSSm>c21(?PH4@ukr``8dy?crJ6gjflqC&5YB$(-eV^o-gEr%9=$1jto5i}-Dgw0;-B z@UCJ~odLDTHcGMCu~J&tS~uAQ>u=n=W)^#eZp!Z3$);lWi8B>3ZhurbO7R!VLbq@- zGkvQ_shb=}Q4=Ye`UVBmPpJItJq~0cLYL0Rg6-n#XCQAS<>rscY%aW<%!-G-lZr6B z?E&*&5ta)1qOZV`uin5xSOmG>NNtz4V>ArIy*V9t?KY0#dY19)LNMjy5<~$*8K%8UtHb+E(Nv zE4HnesUvfBWFa9^fAu;n#FY6!ljnquI_ z`q{eJaXW0r8@TK-e2o`@G*52GXwfwYwFx0pgC3+rE@+8SQkhLY43q3)*;bHWeIq9= zQMQY|i3ax>lT^+s|FO#*f`$a^Dwvrb4UWcG#8C3km8`olinU<)=G@wXgd6ad6pHPj zo0*zvAPbwBZBh|Xl+&{WZs-(}%LkN3%5QG?eyVGN`%Ih^7itA1;~-u{@w?)&mEb*O z_UKgm9vTnln`*H6a!$a=+jsLxSdf-Q*=106wGCB zsWcc-#K55>A<&u>f7BKqh~Gn|+AuzU(&~B@ZI+E&Feffj3z0cc5$H@6wF1opibk@H zrPW?C(Nr9x2GJ`TR@(5G_%vXAPj#4M6m_W7`EM|GCffj3j+M=Yu6bvu~_ ze+Y>}N}caX3oTlrypFj|9?J%J=>hsY9JHVU^d%NX5%&kT?N*d*D_`>_U1q@l8u@4N zHP34Pr^&yFuX$MWKR|w{QL8ooO7h$InljB_qQ#%D`EMtG1z$5o^G_oG?R?ER^7~Y& zy@mQ2nM1M#^FgQaaXIMvTOE8&GK>8#6R2At|JB$hf|qNte=}kI^e{5s7K3_)DE!)g zAyo9fWl2XvVeQ1qbzjCYW|2X*+Z1|3I`6Ka^+Z07{PXToQiHGVQj|Qy_f*EGkRBpK z&oKBFNL02p?YX&6Oyk#9z%SIzfSGX|77}-B91?+@`|t^@7F1fHcDx~2p`{i(riPtV zrj|O;3f)Cb7l(8xoto}OEnQN_bOwGcr>2XA6>gqyJdD+m;aMaktq~c<24l2@UmygQ z0OJk#cL_>|_v}p2SRj9IthC_&*zz3wPvKWLASJLq6;l)sYV)@Zp|?I9*nBS0w~DiqnPnf zYSs?ky_ynx*Quk(z`M)fhX@(3$0jQy7ID@&5gqU=J3`CPkTSME<6v-XlPcey#~2S? z4JzIj+steez@Fx~=)G)06B6yEHy9x;KtT{&XT3@o&U^l%VtA$IRZx{3P0@=Hvg+&^ zNDO|B72-_Yi;{p3(YX{D+{Al^Q6__ckA;@!c??AUf&D70Y~J%CMZQhV?N*7(xPtdw zrTTB-YiwFhIF97Pk2FQYs)5V+G4z8Lyo6FOCrOIZ;9!;u(ZWQYQu53NE(d)T2BCUI z3^&%*3yqQ46wS6t+oM7P$W75z6mv9CvUSN6paZF~o1$rBVjF3K{tHI!=^Pz2& z8+=Y;9chY|h!4F!c3wQ%d{I1lWwI%n_F$nMK;VUjyaEC^K zL**sn7Cp7N_lWy2-hKPU00+9ldVgj!zuG`+BF3XADqu^qL>xlu+d^Vfn~>?V8+Z?$ zm&n`0_fxIavBVamc%0aTMfnwVK@Eh>d<`@$tXLj31hT}c&p;;vYf7fo@X4d3u=`z!BJ2ujoesT;DGEVDG1zVwM}AiKnERv@@9a+d-NsNY&1zHy`l%|I zgnDHq1kUEO_>Vn&F*2$K8}eW?7<>;J8Z`D|Sq2*nyWX1Z;&2oKU^M5_?uarA)+^5GF@lG(A6*;gFq{#TZ{531;a=|Dc-zdqJ2h-_?>2{{-MiC-+I$0S9G9lL zcSGGhGovyA$GRWg&T-@LhWl0ax`kMulknCr_z3QAPuSv*AS{+rRWIwu!446jXAz2! zSZ_~(UXh!OQ|SBzytx1eCz1(plItd>xZO^0yQdD5A1}504TFTasN0ZGz@Eud}4>kNTZGOjaRDQW#|}Jf45?g5`8ny zR==A}#4%DgJ(}{7u$e?3x-Z9nQVLh3DJ9zY zt^G}Q`9Ln*EE{ac=OT12UYTX9Iyq)te@nMenMJEBCIb9~Pn?2X6a^s?#Kmz$zk?vI~@QJ`A5 zbk`KEa8)kU7FvW}9LxYSa^l*G6`Kbm1%e=HGd`!Bi*NF zRQ5t|9mD|!-U!=jG(b1480{PPlKVvOihQ{@mXtObudoIR=vLyUiIceJySey=TC1ewIY%e8;~HmaufS90L--M z4RyRh>%?)*&n(9CmJ@L4_=aYDa442Ks(vy&Fc-f*!+)&7z}LjUn^yxfUwSb&uFhr| zjSUCeM6xk}Ls7cVGLZ*cL<3zNGLPtxWAkt%6i<|V2VQlcOEKn~>5z>UIxb?qx$HFv z?7CP7Nl6rcA&GSIgS`k+5>Om&Vxx>ZOpwU0Qb-x)q%!bTF|)y5^ycXm2E=xNAr*BKJBaIn9W5UQyp$70_x_c@y3Mna%5Jz^xyN$Bo zJsaTAHq_>j_qU}dA!-ixQkl@b7++Jx;z<_K3B6pjK{v5sE!$W?@5ZdKus5Wr6gW>o zfo2lwfWW|Wg2z?aV#`gz(t4bRu&-}C4-6YWGTp{;dvHCxwoF9f*BnKHEm$9kPtbyJ zSc@C@jW_~6iZv29sHXUaU=hOWred#f)PE!zt8uV^1>htakqp6H`0y?OakznTxS2S( z4Y%&AIs{-G|6=Mv<6}wMfS9z=2e|uZSdYbJt@5Gv&uoJEa#`!rj^A2;?oRF^d z<|OzYq-|YzAZ*3)ae$Et$j0H`VGK5J#;Z2&vk9(HxI5lsr`+E|5Wi_^6mS7YQ0~Um z;1iI=2>OA@4*(AtArZ(^iMY@PXL3?6k+mBMkb2Tx(b25uj-Wg=K%1#pyypS@C%aZ( zjAbe?e2Tz*s$1pV@DC@ye&qrGj>#zROduZ+0xR{He-e@lM;`tfwg)}DIu^{kC6$1wR+4S34yhGOd*n!=14^nachFo?W5AscZ56)l`}DR1OKK^ zV_=4KdXKQPbXxU88VxX-Bp8*l7mziKNy_-;e z<7B7>F}I;)?Nvu{hy%o&6NloSXMod+42RTYBGIDRiWtEO4XSv%7lCyi%XgFtua(WD zSx%CYYN^UaRUVRDBnec@lnoD)m1N04qK77rmEYvCe1n9Vwu|Oyg>Nv)50DFx$Jg-t zgLG6P9LwpJgoqx5NHI9i#+3(NE^~(djR0y?RtvtS72YJDW zY+FDWQw$@P#iPKvlvkKG`fZElzoCqi#1{EYcs&>@KDKWNQcsoXBz&Qg(rXg}+?W=O z#I(ndF@<_<4qZZY7Ku1ER#NtD1Xq$_SPFPg2n^drTtG>ALno_x6*?XVSms&_1w_XVpQz~{M$4$^hFGdKH)!>I$ll-CEda|QI z>T!HrK_w!1yc$emsbg?Df@$iMf(1wh<&7dJi_V`+Rz2V^U8ezhX2Hsb}ao7BUk9UOgSZhQm<9W5Z0LwbC zL~@GC<2yKOhHgrh%cIq4Yu zB!cm(EDridgEN(WZpJQehmmv-BIvf=32+_ z{#y9KbHa@XN4cV;iDlj4MoZ?dEIb4gdVsCC##;!H3_$X6*w z(i?9mcarKPsY&YcJGE?8u|13>O#1I9{1pZ+bNo5YNjaITW!jT zav$achm+!)14m49AkdnMZ4$l|L7Zf~{{ zH7u@U*ewY2=Ab26MQK^Xj*8*5u6c8k7*4I>%}G9|F$S`XU>)Mlht;V)IAwB5o87iK=lUTb| z3+yz~MFi4U8O|T-BPhDpj@ItTncna##z!2^8)b@#5zgoH9SG;K*~0?$o}gs|rG6KI zumQ^0rCR&6_vLepkVu5i^QW$zVC*!p?rtYUcOuMeCq#83+@uqlgPp>M=;570dmdcyP=etICQ;0L?tm7>B)x||fMfR@W(gm;+24jqeYP390dBU?jTKG;|Fncyrqm!K0@FswV^5IbA-bW1Tyqt#fDUo%;od z|E!b8eee_K<>!bEW=nXv;P(2yY&govEbgYl~wm#~s_t8jJn;)gC)v00U!bZrQ zD16x$wk#RD)Ctu=jkq1m=#cvwiXX=$OE?w|#7M+6S0jzON0tUM{args@34rGu4-hg zf0SSt!3x7x9<6=Y*7IvRU1k+AwpFBuUXeQ~6C5SaK<+_2hAXT zGBJLC06!R(jB4uz6k;Xi!Eeg#6nG~BY0Si6#p#t(OGp}>_WkMPLmu( z?NoBid96W*hbaB%j-?M!yP)))0$-s(G@EoK{zprrnBctu8ADjVj%Mk|fcCyHXv*vu zwwN*9nA<6EhRQTrx&lm%QU>dnnr{*69gkH@?>2vk$pvq2r?7sAMvBZ#?7OU{_P9|h z)2I$24X7^Yq^qg?Fsno?hqqlzJMWwTmjhtmuCkpMfh0Q>I6^){)qGM}J{>gXbNPg) ziQe(;3iWy9(QS21Xscrw7nrCxzb!wNRu_L4UvMeJ9pe*YsUKTt6HQ!jII4ch z1;?7}{UHlZ27x{05A{>Ar~RQMV8`)I`GKK$IyXci>A2GvN`Mca;li0`hpnS=(%K8GU0x-4!3yKl%;S1~D( zT{S2v>ya&X-tPCUx3DkDc3>)AglmDu^^K=5$n~ZUT+cBdt%V-PPW?Z@CSxBwxE`~~ z>nuT_QVhNU>FTB)3GYC_xu?NO%10ZhdN9St>ICyz#A!bY-YEo#XUf_vj6>Fn$X~SVqq!9#&ZS)?PzPJHHVYEBK#m>15tGt@3$Cp>d7V@Uzk?)Ms8#n77woybrtp*ai{2+d^ZI6{XrG>6d38EPZ+5{6z$XaYlr5K0zE z>UW?+#~{gs`q2~`X6W^Vwlb7POXxF(jwf_CLq$TjG1NimTMV5*=wBInGoep06x%gi zR5SDvLTiEIjxtoug0RQtLN110ODHWALOmLe3*F98958XA0*2x;fMaiN3H3M>Ez#?XF*KF`q02>l~NQwhDFp->mNkei|C0xnd= zP?QPQdJM%sE;OH^*yF)afuR_DT*%2#X#8AAU??vnE^&`n$D%59@TP)N&$-Pae&m(ubP(P8} zi9-D(a&v|Hd~$CT>L-&sTBx5w?g*iND!Eq*^#$Y(5bCFq+efIMPHqo@NfC(AdQ4$X z@Hq~+Pxj~6df;JtytudZugqr3MH*Rx4OfQF4zC+RWMXz_GEw5d=Y~B8VfA8zsCLqt z1Ji~eV%TcMR3y$6siPeh&LhhAXwqr9=~7`EPH|l zvK*En*x|z)w<`1C<7xtE&maiLY?fGqWZYrxXQ0pb8PpYwUzX2dG@v+ZkE=I&IgKR0`W{JWEk|4a8)o!p<`*t& z=K-LtBj{lDE}2&9OnTAODdT>rimp`OM6-*skQ5?4DPxz-w^}vRhTS^9=1xpOyhPS8 z(fjWER7X}CzGfrF5NYZErBx@}L2o@=TN` zr>pYpd8K1{8sQ^F3%2to`Azx#gKz2q@C^t#U{sMOU#WZ)+6r?+yjH6S}=6{jlG|Of{nlXsE@Og&n4C6$Q$YMG}4VN+Ikuex(fIZhMqmC~7x9j$2;3 zi)7-2sZ-Kr;oeG0HxTgS9~5T@q4>K0HE>a=RqvDbbB-dn>W2-;OZ2Hmz3lBqr=^O_ zv`X79*$J6RMPe!k#eI-G2qodj5K%|W459Hu@oF_PlSh=GN{#2SR1<=SSf*3dYVttO zrzG?cPT9~yIO@P2N{|+OXg}=la8!&>I0!VEiAvY()o@XFrx#g~sKoUw@kb0+WJ*gO zRxWtV!4KX;gK97EHOf2JwCex(osD7WX*)$ij)xBX5kvAb`qxbVKEOZvu`2pZU(d39 ze5g+vOs~)_)qZdw@e7DPCFQ+G(E~Ai3HRd*87<*5GMmzWs^BJ2X?%Q7-^WP&J4^8# z!ouUdiBB`1Pm2+cyH|z%27@=ThEeXKcmutOmCRS9#v?6(lX|eo2iC*1iTrr8-Ho5! zI!6)S2_c5J`S7_0LH?ACUTA4@LK9Adwt)ABs2z`cn9q;l&DVTLA!s_HyIWy=b0V7e zZ0Zz8|3jbC2+Aeej*HPv46|it-N9r*X76&eTz##=xCUWc4>5 z%t}f+eAuwih|VJvBYYZMoCU-qp+1C}U0Ew`c zl%NH{5W#tUk2#LxS6seJl27T$!H>pg(10izE$Dj~cI^ULRSG}|zQEFo__8kEGRGG@ z;y({3q6kLbb02yWxwbQl(U`r3G@Y1{x<IWKFl_R_C5)M}37d0)t4%OSO{-c3s|2bNer@V_3$DD-3}A(ZKKU0` zUG>+Y&W~r*!#KUL%xg^Y@%LMir1vR!>{P`N0 z)-~Q9bjJTDj1NHkM;juLW9gU^^s(`@YL2tQWxsK_1$p|R4NZcwtE4P?7>V&4QuMKk znk38`r+4@ggbB)La+A+`*6AJlD7;QteMuSvrXrDz&QgTRC&Q`7)XA14;jMTK+F1y$ zx1dD?<%>`cxEOTG7xezO(-(6BID&P;>2>Lh)=zVh38a>Swd)Ddbu5oK`t61ZZ!*Jv%q8@zlC zeHBE^3Y5JI@}*S7aZN^S4V~C|qnqY}A6u_x5`s5KsGbPV*TY3ZoUqG4pjE~3f;v3u z$d(zHpd-npZ4a7`mKE0GXqd+-Yi)5+n#X3Ki=;UEv5#Znd_iy0wb(zQFiJ{PTS^Hp zJNwB}^`w%Lj8OVjyB)4%q*GF|;U8~Vb+GXkLSX0t zRP(<$>Sqn3VwF?A>Zo@OXm1ToZm$Owa{G(WMDXReX{(NJ9UCw>cVa&s5U>L`oK@jhwKiL3ELc=wb2_O9)4+vwmK83( z7(h{JXhNN!k%j&uw4oi{0n`czmOV!D0k+Ry-;Z8&iJPw=wo_+K6|+ijvw^DlAji}#d!V;EFnPbDRdfT3L~2UgEFdHu!6X!hVW&{p7&Y%NJ5*aY9#}DLb{qhCI z3lzmt^;HCHsHyq!+ogGO^OpM;^kVs>2k%%i!Ve*Ko zfchXb*w%z%VS=Hyb1b5yf1}|=6cOKOz>kczxKdfBT81pQ;Mqs;k(5id!mxtwA-YOj z2O>%_lYTP_W|Sy3D=mAUf+az@w>*T=L|v7ckG!ds(u03h(}|SszgT$N1q*+~8>#S= zYfy+#ct-r>4_e{1et<+_1;@``Xi>WkJ253_e@O zaUEHm+pA!OjUKAMWxduSZIXcap?~QIZ|-knd7G`CoDr)zGm=8o3fD>b)|=EiF7 zFNiN_y}>myK4jpO`ee_P zx@QZntm3BVvn#__!%UEtp%%{`zU0=x{rj#C+aLfBk{ zy^c5(mw4(xaS13M0pVF15HAAa^&G+owu46t;46fk22i_P3Ai3$2Ye15t$-td-vDO; zCXb>lEs@NedEU|m_+L_H=58``W6YdX<|^Wf=PfQT;>=?~8ASiG2?)870LVmp!Hh{$ zZr0t~b06j|oZJf>Sv=_h~ z=a^{YawbijNbx``uutTKoE&?80hi;PG}X>c%120g6}P+y9~&;JD8jD^l%d2WOENV# zW3+~hyp}7SS9n*Eq&Xm{eh?NHExkip$VrQq6qQT!mXvZ*Vd;qcdCL};%v;bAN16^4 zBy=rkkJkZ5ybeCZTeNh3iEHTsuEZs&NO9S`JC;ys7Zp1eRB`35`3{CGD&-cHR*dEr z6{@8mKFmX5r6a@zWlpuM@Dxm%N@48*js@hm<fPw-iIr(KJQb}RS zV#0G478TxA?pi|l)UrZh!GbbEZRL`NR*W7|P&Ti)cu`@_;(6ueAR;7paY?0f-uxnB z0dHIOz$X?}NhqR95KBs(iXH zg9PDI%2j?-mn~)f+(oK8V-bd4B@1dRkH#loDpOggqe^Qv8YOxG3D*lqc!wx$%qUzN zml}C-NlEE^jB9SulG2iLsicf6Eh{N3Dlf-iSX@##Z!zo2vZ5s=QV~O0AZrCRkfBJU zj*6nC3rb5CEtQbEbY2+-sJ%U4@w{b4#C}mp*&=BfH~&`1?AM@)eYQ?fHUb_4Q~?s| z6lJmxvK7!9@EgMJM!a!eMR^glYPjFRy&6ypSOnMsxB}tx026>4;Xa5ovygTx@Jr$T z6YlSTF~FaO`!VQO;g^X&LLT41eE{wYaDRaNr&`E9z$<{uAHZf5;R^w;f>sJx3%olZ z8no?je*~|mfX@Z21iX!OTLHTP@4+tso>+?y_W||;P5>?eZ8YE}z*N8-z&(IxAXEJ$ zSAqWrkPO}<0aE~9g3oC{KfH#U1(*q_1Uw3O8}KRMS3s|aa0Cmu>;ESB3gx{JQ2q&6 zGrR!8&%n)xOKZ^vz#7dZJW?3NA)2p4Ts@thrX!8QZtoD6coXPhMAy@u%ZL0r=w;I5 zM)K=Ch_0vY7)I$=0En)`h2rTny?l}KrF!Uf(bMQ|320ud)sF!F40r+X8elVEFlaVF zAz(G&835@C1Vhn(GGHdw?uX#M4)_G{6Ce>`hj8ey9q=JwFW>;+a-6Am2P6Sf0Q~?1 z0l&P2_tXE1vHdsbT!2S`KMQyh@D5-n;5)#-0Ve(m?)|7ilFwpE|FsY~C_6S%bS@g-ixi19ocgPq<;gNkH_Q(4F5>l)nM?15N>iw;_)KcLU~bgj@t10p4$u zqFe*W0n7oo01pCQ27Che8gLwtM4uP{tOooAupjUXAhsSn0Mh{v1O5hR1cU(5TNEV~ zFdQ%*a4Vn!@BrX>Ks}%Z5C$0EQIyL7qX82E3jp^59tFGx*a2t-oCfrH7xER*3+2BG zFrWb^O7IWfswlg*p&Wj=0YxcC_(8x;jfzqLxCHHT7;woy@cB)^DnJWhFxsahJ_2#< z)P{i90UrYz5a(I6|1$9VBft&t0UiUS?L^ydN0|Z30X2XJ0Z#y40K5vQ2fPpX1aJWG zE#POsX+Z1_Md=CX4;TWt7BChd0;U3P11thafR%tczCoq%S*K0qrV2>2Or z0>GgSOn@XnD!>eQ>wUxngaO9@m!Phf1BL@K0Xcw)00STaunlo`13m+kz<&gMn*bjJ zJ_CFS_!=;Wo5PI&%-|MrOF0|WwMTkKPa`{wOX(Of4#_SOnE?j-B>F&XPOkXi-&B0ciqe7kJ_ZnFkK&HrR5- z8pPt=&BqsGvN$3@OS?Z;I`}M!XG;HX#L(;FBaIA?X>{jvRH} z=<74HShaJ}9%wAIPyS@I&a~+>X3m;DZ+_u|qT)LiF1qus#Y>i!l-^xdF1acytClUl zdTb=VdN>X@FZkSh!O-@=uITMCFN{UXSC371H5Ys6X7geXUBX=KiMbdNwAe1_bUAgg zhYs8?_QYR|2wJx;=wzRJu_xhTM9>nup!ev4&UZmi>Vn?03wp0E=)Jq3CwD4M&; z3p$x?U+hV}7!kCt4x#&Xk)8~#FZT4m7!kC~x}Xo}fUfXhgcU3;M_|=%c!z zU)KelEaETrutWcgL?BD|i#^#FBZAh|!g^yD>2K0)&>3ltbQ}T3;tpkbVnET z30=@{?t<>@f}Ym}ePS2%NnOy%XyIbdG1f05=lYyNqfzqjV6vkZFTH2-a?mwWUbmH!=@|A%K( zKeM?**pnLlPL2MI=D$nxr)m6HArbbemVUNI|5EecqWQD6_zN^Yr}=Ny{3o>db2R@^ z%|A=?zog~AQ1ic{`HMCG8=8NS=6_rBFVp<%{-V}TA3qK)e_h`FL(5O!|NN%W_4%Cq zoSI%^$Mt_+_3Qe456!RZ??%n9>+7eq^tygNNb~FZ_(Uzfu7BUC`E`B!TFtNP*H>!( zc&$KZwDRimC0DDjE)Txe=(>DM(DLu5rLWNZ-8H{c^XvMwPxI^g^GwaJ>&t1HU)PUw zHNUP8XKQ|4|DB@wb$$0v&9CdXt2Mu_&t9kbb^Wza^XvL5ulaTT^heFF>!W|u{C&0h zwP=1_->ldCx_-G`^XvL#tLE4B$Hz6lt}ni%wYM%`R%`98uV=F~x-MUrYJOc_j@A6S ze6QEWFP(wV^Pc8ku6nt!#$R8L7HNK~MlaR;g63bQ`NwJg$F%%(dHJg5*X7?N&9AQ) zZq2XD=NTG5eZ8Nn`StaElIGX-g+eX8zJ63`etkWN*4p!Ct$ckozpigTrHyy9M!#3{ z57PX5H2>wAzgY8Mq4~FJeqBGV)%?0X{0FVPS8DN}*8D>>|KBx#n&uB_>4$3m7c~D> zn*UYJf3@Z>)BM9U|7^`aT=Q?#{JMVosOH!8*?(z%U4Px7`E`9&*2<^rN3Uw~OxK4l z)7n$lUk7OIKT^v-PV@gJ?xn>7FRn*TG+pQ-t;*3xHb{?l4{b^X+) z#lJzL|F83ZaSK53UP{8ZRdsIyZUj#5EId-oWRN53jsb8IJw;+ycYu}cL+cNPOcqL1)SVW zeF?(78aTPDA;=#DPVVP`mw=Od9R&JYz{!n)F!uu|cQ&9IIJpxp<+y#o$$bd$GjMY0 zqi!dFlY0js>5%F=AS9B3lUok~F$_4lhXGdL-94F~PqCPVUlN z7{LQ4w{HRJaaeWNPvf{$;N)(a$#Lnx$&D(7!7*@hX8`5`C-?7wg}}-EU>V1i0w?#t za(tQ=IJsW|9sy47H-N{1lN$m&37p(8U;}V+e*ruXoZR04F99d_B;Xa`fQdtVL80-W59fFCG6+#A*)PvGRP1pE%1 z+%*8>*Q(nB+ytE5zH2cCfOEANH-J>a|6lqTP;LX>?J7C+qjNcJYh~pAgo6_Uv#+Jt98~stu;6eFZuJNM02=My{ruoM7=($m) zhJ5&Y#&bOleYkGv@pDb3arv=+V{=q1!aMRNe7;sjN%x-5zca zW$9O6AbnI67d6*VYUm!zbuWuckDVJ+N~L1yukDatFT?x`@St{`e@?ryawWHyt5qvk zoRN#05}nTSjMN^zyK%h@eYtaUir9XU+J^BNd_EuQk23U!?y`724d>;DpUW^AlH11` zwLw>)_a);wD^lL2tk0hXKZ?IvbIGrksg&iT;~ia$brj+M^UsXlLkp>r1vJ;;(q4ri z4ZaP4RD_c}B-ux64y_lo-q2b>Yk|H_&{{z9nq)J{e3I|94v;)2*-f&aoWG~6%`N;cjfE%y@@E%}4;8y^TPZgvCCIjvQ)B*kq*b4X*5CWK@4crhw zHed?i4!~N#i+~0|GvHr&v05CeZC@z{aaxu8;isMXNJno#j<4duL|3`aQ z58E^pgs-7uLdg9AD(Dc2g#n?cAjE)Bsw5><|E#1mYpmwcBDsm>I8`eF%FqRgAw$K) z@NAY!^-sjef?@1{GBTlTWz19wv2cFA{Psr-3S~*F zSUzSfZD>eH2^lPd#w1%sS|Lt92Xxa;oX~3u87?R9HB-_z6yq%0th{+Ipf4g*XwYrA zGd8$?N`tggUYA4a??6Urqf|U=$H0u_)zkc>aCj*zg74K?~CBA5s*3XD8%%?{W z%*Ub&<%!y3(eZ~bvop%twx8B}VIM5(l7`%?PLVTgb+cbeZFS`=a!vcCe(T_&nO(0K z$gVBod2zn{OBHx11=qT8xr85Rx;-)kyFI!B>UL0f(lR+3>Zb^kgv*3a2{#FM2;UIy z5q=^S>LT8G>NS(v+9Fk0B9S!^#3NA(2#DY>()|ieheukQmBZYD-l3{DY z`5fDZ2SO4~QA}-3!;3(Jw5k_I@^nk^Bf3#15+&+|&zND1~V+zjM}QlTOSU$&@hpc|MCv`d>z zR~1cTg$yfKR0F<6(oE5&Rb=}^Q*0+h=kUf`NJ)IrMK5i`;e`y=O(`>x20jlM#xD27 z{5ZUZGPTtX+s#9~gQ+Ir);WV9=1Fqyo-IyD9WjF6? zZq=>1+^xI5+i;t1%LPyJqF&64d$O1JG_UH_Jnq#!-)neHujPS{&zpj>aEV8GjK{gm z^IYRqUgMnCxz8KC$y*#u$&8vYGj7Ue-qg&hSu?p=H+{2VHqDj^mSjb(m=(8VD{tW} PhgGvU-t(O={T28HuB@^W literal 0 HcmV?d00001 diff --git a/binaries/win64/WinDivert64.sys b/binaries/win64/WinDivert64.sys new file mode 100644 index 0000000000000000000000000000000000000000..218ccaf423ef0a67696226f9ef3a09149e4441d0 GIT binary patch literal 94144 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 Mok_m={2+h)7u^}>0RR91 literal 0 HcmV?d00001 diff --git a/binaries/win64/ip2net.exe b/binaries/win64/ip2net.exe new file mode 100644 index 0000000000000000000000000000000000000000..5796e9ca4183cf19f9d52f9763d7959119df07dd GIT binary patch literal 88576 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ⅅ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 literal 0 HcmV?d00001 diff --git a/binaries/win64/mdig.exe b/binaries/win64/mdig.exe new file mode 100644 index 0000000000000000000000000000000000000000..8006737011b7ae5ef86a9a831daf883e0fe752aa GIT binary patch literal 114688 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 udb^0z_ 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 uY?U9L5F@}FP){m*}*C?0X#x)H7?hQ4t8 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℞_}84?p< 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 literal 0 HcmV?d00001 diff --git a/binaries/win64/zapret-winws/WinDivert.dll b/binaries/win64/zapret-winws/WinDivert.dll new file mode 100644 index 0000000000000000000000000000000000000000..50ca874308a916f834e02a749bcce365673426f3 GIT binary patch literal 47616 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 PhgGvU-t(O={T28HuB@^W literal 0 HcmV?d00001 diff --git a/binaries/win64/zapret-winws/WinDivert64.sys b/binaries/win64/zapret-winws/WinDivert64.sys new file mode 100644 index 0000000000000000000000000000000000000000..218ccaf423ef0a67696226f9ef3a09149e4441d0 GIT binary patch literal 94144 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 Mok_m={2+h)7u^}>0RR91 literal 0 HcmV?d00001 diff --git a/binaries/win64/zapret-winws/cygwin1.dll b/binaries/win64/zapret-winws/cygwin1.dll new file mode 100644 index 0000000000000000000000000000000000000000..97785e9795c98e43103de07a8942d76f803a6de9 GIT binary patch literal 1022005 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ࠣKbV1JibLY83H{hIbcxxrF$@9iUJIQ4y~X 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

MGsg=)ct@SF+pR5kFjKpM&RdLk%6xa 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

5rf@Et@IYz-4L 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 C9=pje`v7@Q9~N8{OXQMEx-UmV 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

e5Y-V+U{% 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�uLkYYJAKaIE}o-bz}axR#t6ef@c#jG CP4!Cv literal 0 HcmV?d00001 diff --git a/binaries/win64/zapret-winws/list-youtube.txt b/binaries/win64/zapret-winws/list-youtube.txt new file mode 100644 index 0000000..e37b016 --- /dev/null +++ b/binaries/win64/zapret-winws/list-youtube.txt @@ -0,0 +1,3 @@ +googlevideo.com +youtubei.googleapis.com +i.ytimg.com diff --git a/binaries/win64/zapret-winws/preset_russia.cmd b/binaries/win64/zapret-winws/preset_russia.cmd new file mode 100644 index 0000000..5dba037 --- /dev/null +++ b/binaries/win64/zapret-winws/preset_russia.cmd @@ -0,0 +1,7 @@ +start "zapret: http,https,quic" /min "%~dp0winws.exe" ^ +--wf-tcp=80,443 --wf-udp=443 ^ +--filter-udp=443 --hostlist="%~dp0list-youtube.txt" --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic="%~dp0quic_initial_www_google_com.bin" --new ^ +--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=11 --new ^ +--filter-tcp=80 --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new ^ +--filter-tcp=443 --hostlist="%~dp0list-youtube.txt" --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls="%~dp0tls_clienthello_www_google_com.bin" --new ^ +--dpi-desync=fake,disorder2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig diff --git a/binaries/win64/zapret-winws/preset_russia_autohostlist.cmd b/binaries/win64/zapret-winws/preset_russia_autohostlist.cmd new file mode 100644 index 0000000..b6d3b74 --- /dev/null +++ b/binaries/win64/zapret-winws/preset_russia_autohostlist.cmd @@ -0,0 +1,7 @@ +start "zapret: http,https,quic" /min "%~dp0winws.exe" ^ +--wf-tcp=80,443 --wf-udp=443 ^ +--filter-udp=443 --hostlist="%~dp0list-youtube.txt" --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic="%~dp0quic_initial_www_google_com.bin" --new ^ +--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=11 --new ^ +--filter-tcp=80 --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --hostlist-auto="%~dp0autohostlist.txt" --new ^ +--filter-tcp=443 --hostlist="%~dp0list-youtube.txt" --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls="%~dp0tls_clienthello_www_google_com.bin" --new ^ +--dpi-desync=fake,disorder2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --hostlist-auto="%~dp0autohostlist.txt" diff --git a/binaries/win64/zapret-winws/quic_initial_www_google_com.bin b/binaries/win64/zapret-winws/quic_initial_www_google_com.bin new file mode 100644 index 0000000000000000000000000000000000000000..80a07cc8870c88be6d8ac7f9bf9dc9bb1979468b GIT binary patch literal 1200 zcmV;h1W)_J000012zck1M!WNQga80Up0eT_O^eJg$v*FaNtH@lrZ!8F85?~L=|4FC zk&^uu@3*1@yE;Nr+phxdvmjKlDvv)J(yS~3><6w zEp#coJfYUm9CGLZ~DKk^PzBnc1%f|fM8tBsxh*3hcADV z^CU8<{XVqh;7whf0$D!%XlMGTw798<*&-QJ!J_F4aM6Bx6zTZRd8tC1&6A?yHRR@V z*(Y6i13lm}>32F&=^G*!oie_jmxN)fv~C)yRenn~>%$c!gCi?1$YU~52E7>9OR|Sm z*0or11T~hM0jX)6M$%)CyQ}2u+gTPF+39I^(olCjZ|S`FNZIz}o)#b)O`EEWD&X)8 zD*dxPl59gAxb#Z3@fjs3yr%)0G$8EX4eO0kwYPK?fVME93!RHm-IjwaEHlyOY$UAS z{-}PnuMtXZ1oyFzaHYi8wq0%YZT;bX@31QPpE;duWeOLIey~ZX({>Ct)#s~nnhkyg*!711_$gJmQ;g6N?g|dE*sv|JA3izy z`WHxH{1S6cV)gmesLpz!3FW>#E;01f9ec}Cg*NAeT5z}|OVuqL`24o6^a-?V+mF*w z3qPYBq?4tc`GvPoX}H_!HLWNemb3d@-DH`AHC0J+!`aiI!Emr{8hgF5EJH9)0BV{>t4FO7*Rn83&5KIgU<<>6KLttmv1oYA4 z=|Qj2Xr}J3MOQM@D{!=(O6=H0PX(AxaHfuc;q&mm6Vt28(`Z@~;(wo0Y%3HWd~aSl z#&4OA#_}K!cZ%ml1$@I>#6AZw$cQNc^h7W*BMq7~M7ltAZU;k10h-}sc%+cuBv6GG zu)B$*t&^YX_t`}*mbbnz$4fW~M3li?vQy=t9K+{XI^~X8D9^1+9dPY=(HU+JS5O)2G_una37W{$E@A=Y6 zz6l_Y^XKXZ?u$rOQPL8qadZWlusq6)AxNH-W5i0Hb>l zMxnwI0H0_{axGEA-0IMAcn{0>x(qs#vJ}YC{N&g*WJ!#t0}~F^x&%%+56^^8PNZUOV7gRH{hGiiqGsb?WDy(b{K z&N2J~>0wK(Lah`S`JmOrM)_q5vpA`<}<0}}$kE5I+zsm!RrEWj|p z3cv}#6TlPzoB*8wF90_;aCRtcpHtubr&`D*y!q0|WyD01W^b02TxT1p@{H2m}ZP2nGZJ1px*D z0s{g802}}UKmq;@0T}=Q0RRDi03eHZZztxRuIju?4>)}17B{htF$ibYqheaY#Qj1U zT1f!!CNfXelbZ62w|apnnq4pmn0BubVPo1+DBPj~PrZ^PfUGj&3^MKk2g(VBxSPw~(8lO#%$$^b zza@}hE8(I6_}NsOlGm$)x+EZH zH8^$WGMUf(xX!H-(qW-}cajp|m_^3w2pT5+knS7m{a(CM9&laCU_?^X!w!Gv5wzwI m^PjJHE7{XZU8nG0K_nbN^BS-KSy&t6d(KT=p9Zv`p3SHaW%m^T literal 0 HcmV?d00001 diff --git a/binaries/win64/zapret-winws/winws.exe b/binaries/win64/zapret-winws/winws.exe new file mode 100644 index 0000000000000000000000000000000000000000..2c992210bbbfa64fdd6c0bfab9e419afe2f571f5 GIT binary patch literal 239616 zcmd?Sdwdkt`9Hp!8w(O95u#DCu6C_SMVojl5wJUC1GBKva8XfFqhN{^6=7GYw=V21 zWI7I}6)$aVOIxeh+G?v!08uvqlYqAXiYWFY;%%0A0jwC}Wq?U9L5F@}FP){m*}*C?0X#x)H7?hQ4t8 z8h7Z0<7dvhdXaa*!s~yy@QQ1_bFR4Vy6eNsl~;^ zd^YHYI+ttivSF@YuKl>l>20s;)V#y;@+w{ba=Tm)0K3ajQeyuP%#bV7c@l3X3tdR? zUn3~Ne?2edldh=C726{jYi4F#^@L?D{) z8l98<-(LNr3S6tm=&$*AYWS+fVU(@j58&*dw1bY^e~qB-)VWuLuRx}EDE^dy=3#jD z5uxlqzsr?8b)l?y-*l9DQEw)mc{Y#is;K8b^~%WA^XFbY_e|!2Cc(xF1|llzEs*d8 zFTfLlYVpSvhP}KV?~PTmYjbfv+&`x+f}_4Kq>mvF`L}3rlwPs zyIF-(07(CPOtl zB5w!X-2uHL*lu}IM?KI{5SfR+dEsG7n+HwuH1}pTw%Z*pQd(Uapy*qawvP5aC0cvR z>+W`U=soRLiMvPdXln29)WtU`bsZa&RxJ19U0y{2+p zz~yp?uTN}M;;#b$81f%jp~UY%oz;2ak%#DrENJ|C?wpn34*LDy@h3bqgZH5r6{#G| zBJc+MBBz?#lafU}de4TY7Rk}xmmGd5Z2@0}zE$4@;cNo0>)h?+zOt!K-xP9h9t_uE z{bztB__qeUO_Pb_-)@_KNn4eUm#WkbRZ50XXUiVRzXR=(fl#wO)FDW!9g<3-Liq9n z?LxntGU!)3^h=aczqUB~Rm#j*JM^nV>Q|4{uh*zwJpnx_^(#sJ0{==0M|1Z${9_u5 z*5fEzDc&``U1_6k2}Rp{NJS&%+2PbOqdM87tHXkNx6(RPFhk!Q+pV3Y4R8e@UON{N>uL*O&APH8)u0}2eu3&uLYj2)uJ9&(ff9A0NQ6$(%R z9FY~)p+a5t&R~8Xn6N>M9ds-4dyp42E(T|Ipc+cGnjLm&Uiem&lpLZYKYS%h$`4Ue z5Y|xQJw!=i_*9fs9HOKsJPIXMgG+!;y*X+#c!II7xw}c(Fx41FibOImasdba5LIbC z{2L3TN!9(sE`bHWxB_#bQ}t$pyZL!&UFv6FaqRnDs?x?@Ao1?rU*`x=)2TL_jKk|- zlMJmuRl1?}c=H(k;dOeFW5C^ExcNr~j`&NBGt}YuD+Ujqv~*u%qXw!=Q_J}mUND0; zU#LxqroX7^+d}%YA^oN5O&CMr!!&)L^}~K3-PUc?xdO%zb4HP}8M=<~Z$-~| z87>|}#NWvrjsasb3_Kq!`tO+4W--g*KKLQn;mt6jK9LMxQoXfFpH_l7EU}XedEL4| zAlPHnmjIR6h9c!T^r-J7H!uzcjoN=>i1(7qGW@7dYzlwCIToX~gz(D%Kct6zv#fo6 z>2%1z8*G4T1c$2-wbK{UCG4*oFQeoGLxri)@1qrXGT|FePemmU7!m46nqZz%twT=@$GGx9I} z=JIE^Unl>fLGnLvDEZ62{;$cuI*G|LWKOBD{S{S*!Rm0U?Yjz9cT#Dcm=3t%ByEno zrx`jIgT^!u4BGJ>TKnz-Ex%MV4yT#8A!MlDklr4u?9e`Yt+yPLvGngW3Q|1Pw~_b?T&QT8?`0KE3ZF&VhJ+K znfbSRV~V%FW~w*x5DX=3ic39Totd>Mb%{+-DOGzI2rcs*?>l{xi@e?rV1&m7?>JmGZ#Q8`VlM0k>y>=!mnOO4a9d+?{l=$BP#W=UX znB-A5xnF2fuG^w?j5VM##C@@lae@$9Gf~bu_`q9&Fm)2Fg7(n248qIv5pv0Oc3S!LQzb575WXSyUYP@RZEgq#bb{}3t zdPPZJ>9tO~F&;f`a#e zt@M{U`D3-I zpy_IP>_;W;tni+FGKUGdO8ST>$Oum}4JxQo`uKf#SSzsNfV8Y-td%$ro~G%aXvT%; ztd$g{K7tr*zM!<0q=&E4^qWA`-c%v~2iifKrkO#Q_4(~escKneQn^JJVn%cPJ27gFnZ7D4;Waof6YyJ@ z(?I8ssUJ%|iMeFS2b3mB(Tpd27Tz^uy>Bm{`g2NUz*iO0H)&k~UjwpS%L$xzDMYncro`Y@uyKs)Avw? z=D_EovVKQPq{I20Lxeu%YkJWdnk8+?MxtnY)}RmmyK)^6(#)B@Mzn9z08jG+#dHuk+Sx{w_(R;vg4n24srJ;z$eP> zbh2-jU}B@E6A&wv%Gm&3IoDT}I$ZJ(>zy3bnp#*bo%%GR_v(e}1(`W}$p;)2g3tO( zSOSofjarvP1SNvC3j}M&z_?4+E|9E+k&FA5qK<|c!JLhD;Bu9)B7(tp_@XEbp;7`* zYwoE?7(evZCoq*y1~B1fzh!*^Cri^iL9mio4NI=HNv2eDew2u4=1N}+Ub|t zBS|zP*LoaTbWi3W0ZkhZ7+6>zSX+*^R%;tZyu>;_4HbaYG5CK@NoV2NcaS*q9-*z~ z3RYK2?_)|SUFBlOMy(f1aD7<`69~wN@uBKF5Qq|fU%wCKMP zc2&P;7XWoFfYh ziK_ZSVe>=A8YWd^GEBmSo_hVf@_OSqU=%Q~OsmJgq3V-Mg6;1V)VtqMjeyTnZ;bK< zOuxGh!^soU@7ck=x|a2@Py9ppEL>2pPbp{R;r04(pBac2x|3>6a^c93@mJYb-5JFH z1K`gX$Y*PhL`zl7v(jUj1SLDS#HzrM)65mCQEH8O19~{qH$JFa@CX9N9lo&?NaWLW zy7zdD6DJ4d>rem&?^EH|pvrVq(PHa;ex@)78FBHd=~c|tvblT>G*_WhG+(ljoa8vC zhp1kr(&}Tp=k$YhiQW#?u=f57NZc>wiSeq$|AwXj{3ZWdPq+L(Vt&-y703Ob7ld%_w}g-|Y%^P4-g$K^-9jthD{sXMcCQ)UL^6 z-#V^z6<6GTzzym{g8Bv}zKYt78CqR`9NGw>q~?Qs%@E2~uaEMfcDNvLHbn zlP%Ijn#c(~MH@;Jv`|llU3(A62aWTvT;Eb(a~>R_K4icjK`bB{9;LBFuDjr%c`-eD za$O(k^BlipfWPBW;;R8e_%r&x&ce#(e3#q$7f7s5rXB(2s!{I|yb@uCkUkr;M*CZZ zA^|z5h2i6bx@6sJaGBLIx^{ScIl`C~@oz0!p2y&ZsLwN8hSwYQ zE_1dkU8ip_&vUEC?@+h(sq7n zG449$(J$(1UR~r-V;fPUad^lm(Yn-fq8ZYsVGh_D`K<&V`9m<4ED6t_$6LT?0A~d<@d`4Io;HmowYAD+w6z!Z`w*b%1fF zU@l|z1}o)H!*W2yDEOm*G!aw7B#`|LmIJKzO_u{>1wQ|qs9NP?Vt-nT!fm!dcdSp9Jc>H$ZtFNf9|)P_ECo8i51WT;fXmtVNlW4Wd z#!W6!?zlq8^K$4QTxhP^qqp3E4j!kbK_Um>@svmW5+8ckl^sfJtPJ(W7b)>;_$*c8 zF#<^(P~r+-xNH+kHVLY>JltuoOp^ebQD1?-u;c$?HcWKTy+vy9RDcQUH$a08;vqsD zAxUsO>P^vS4uvWICMsLwQsPe$#Q$mqoBx-uQQ19@uppzdgI2K5ZzJ`uSsPgk>`3f` zJT(3Ka%bT=R;)QP`XpHP42g%XDDm5fr(Dm%YNrl^O?CM0NsU9wsBK6jBdRe(tLae8 z)c~GaMu|K6iTJ%%)1%yZ150%LvDdvJJy@Q4B%8*p5;@tJT)@gJu3+UK;7?PFhBzdb z^F$(bBRaI($NI2kJQ`K7PaxWy!ZyNQ3O%J>_WT(%=d7cXOgnb=_o$C?F=+iFOq>23 zv@%~PHP&(Pe^v{DLm7*NFD_RAn(?Gi1e8Zvj+MzSJ~87i&N11o216m%J3i`@Q}wRB zsHv{4z+c4St>r|FmX+%V#cuI;(E`9U^Dg@N+3K^L>XYfq7_}9ev8X&`o>;P%^j=c} z2pkO|VE!J^0rNK!M)Zrz6{li};Y_OrnS zMM%Hjw+dB|{`28T2e44OA8BjOw+TrWhV)x~vv44w?PDOIcd#RN7=l~SK!2o>-Yr{^ zIrCV|UWM0?;R#AK4L-_ZO`q=@8`7}`4dAUptgo#ykQ{xIR23(l&KAo@0%v zfy#EgR2fr4z``pMJT%b=a;#td$?b~W5-wDh9{|oqZ5T}YHW@vqU@3ND(!1>OU>4r@ z5spd#uc-_1r}hQ_coYDD=ar-Z-fAsq!)`bV7qK79571(seN=GcbIo|B8*iy@SXXEK zXlCI!!0mm=i6fhZwM^feO;<9#JewYcbSf-{iXR9Ez>pA-*^g}S#c#}zEbVw0)lLxA zXxF9ox`aoGae?$>z{Qoi7RUgJtskQHaoO>QS&w67&_c#9<4=gHVEoZU4!5Sld9_2i zoJ|o!=T04?kYb$5_#<=_8%JBPcNoyStkrCy=X1&$t?7$OKouLFNC0T7jayW{@Nfx1Y+c&@qO82v0)$k~6(hYEdFsn@~ zQSM2KqcNG?4R64Z3#kC&9Aq_ge}QH^;=2#;=p7@5V@Q7$Ct2XC497dfH=E{Q(I`Z} zj|pJ#MUjd3OY-~&x;){daI8Y<4&>kATZR05Iod^@Uh9F@4G-v33u3#JSa(Bn?eNdK zXjQ^Tst1xqkuH`*+@wz(0l;o0!3CfyD66a9R9C$<_I|-y z*dEs!o=#g=gg+wu@jhNAb_Na`<-ysFA0%7Ny&BS$&U`lHnxi4$eO7qF*}vc7!K?b2(Hus#*fqpc6c^IO)t zc&ckgqQTlx__L0xrq`aJuH|vGHKXxIUB_3FnK%l=0I@V*E~#BW9NFo${F6Eof24i~ z^qy2PQVu@KCbM9e(w)I?*$eJ1%U)30+HJjr=}?EONvq&ovmk*EU69Cl%~VH)aB!xk zd(m;IfK7~K_y{$MDHHomNjLHrTK4#_PRe)!!m93I&89^kqdvBsq6ghKz7uq}hiW!0 zd_x`E6MikEclZ94=XItHPvVf3IqGiq7TYa4!|Iitl_{+yh{KME_PZlTI6d_;KEb`Z zC>tQSi+;Kn?Lj|&^wa0Q@y#H27~2=V8twOlu?$W2J|11{9;QLwTphSHXqSWlyYqk0 zzp(hZeT!qeK8hvF zkayJ1*xMh)HXP?a@N7Y3I73Yyw09|i9h`v8+I-IH4aidJa6IV4*xO%BG{>KAPOiW_ zy{o>)t1Nw&m^5GJ!C@;LkHLoZbr|-yyJH(hbxs;uq_pkqEUF8+dzWp*nUg#mjOm(G zfEF%&(r{xUhw`Lh;2%)Ji4>f?=>&F-=(37baH)^N>H-Na}l8qF@fT=Pg-=-xu`ksEYx66_DAo;CELx{%@ zXn-uGbiWWM<=BX9P8sv?4DzVY7QG*s--;tns4clcx%InkNAIYlEyMmC8Ftw+B)6mt zKc@^;y-)9l0M#v)-q*e-ABLzTwyP?(+XH!49|#QXi1n3BGH)F@iqc+y#(rgGr+LPH zy}x}=0jjyTS8oltzY3U572w`GLhi&#?+=;RR>XGu;qfLIf8-Xe50ikphBFCfoT!qB zV|wATc9JL1Tvw#`Lo?6|B_Rb56;ZlRq+wM`>pY)up9uO=jP{M#?5}g_d#O8h1xl-Q zHkH!)^5#06`)ca|ho~$RQ$Uwn0m!1hXvEIe7ji@B3kLHBWWrs{=#8T-RRA|B4~0~l z64}^m9fh49N=Nv(c+L`#UIPz0tPg*Sc}8h_HDuP8Lw`bMoyS`HI+W-Ayzr1FbxEY; z=|`zUWTzd|^Xfg&AS%KD4a)d?byZqdT?LAPu3TS$gI;WU1BBXH=PF_}hMqIwMo|r8 zu8RrCiSrh?7O?9ag=4&ddVzX zS1?blK`~5Zl8;Ax-FSrHS@+V872b&U4pH)mSfpdf7NBUg$dWt4$nqfTF=XL& zxYFisLX07N68;_;8P*g#`$#3ubs7(VZY&=(6#Xt#$cwy9^8zKG>GO!Q!uk`kx41xu z6Bf1=9ub&esICGurM18p(jO3L+cp|7x=<;JQhmLk4q%8DMM#V_d)%Qu#pP(^V6;;E zu<_eMj1GYd78}EJP$5_wy$mj^L|%caAAmFAx$~N&j|$KN0(Y z=70kM9Pj4i5u4%bg`#4=8l1-QRB+uKej1L0t+*A4EP>?6@0;*0`Mq7${{`16rCZfI zx9q`*EI0;}&ADfIVsCk3yGw>{hHJo4ZlMol-rwsDcDA*;O&5U3!Q>=sHR3) z`Z;Oc6Ed%NoPv|k5uJiJ;RGPy>@9_(37^1^WI*p0G6^(K9wMxY@B!#4OvIRLI}kMM zJ;i`WFJK5&+N+dK7Dq^?dYUH}3Bf9*=ambYQjk5UyzI>;{qh1#BLKgvsZOsef~G*a zoLH>0?;9jus-{bc!x4mN?+^o(B4)NV;XznDrS0XAc^)Ei+>cCIue~gsLpi?}$@!g( zvFG=(nBQX?wE-3-8$XotCci20W=J_;o>5g-{SIV)Gg63WRuCV}Jg*8|!n`j&GQo6S z%6XrDHaY0(f`R6{yR=Kqo$;^6j1S(%9{?=Q^rdoUze89Wdi~=W0lW`QLoh#7XPnoP zQMoGX(R-bV9rk2A2LKo<>SU$|h6vf(nbaj<&UJ$)^#PMPPSP+KSixzWI~W;%IjFw? zlB)obB#*U^sc;^rhHxGi@K5-H z*H?8-7JIKmlJLf-E(gwv*mrT4=Aw)PO9Q16VyrY|UX3H8AuL_WK!AgJ22UMM7gjqN z+%iIv!ufZh@W7W>@Y9~XIn8qh&*GJ}=a?}A*lulPkP0#0*^Fj|eTy+QM?oNMdNZD! ziK!u+qlH!>e-+YVvOPgewndz5!`D?OvqK`g9v1WLI~eI(`B?>LHpHG6b1IWMYRA-U zZ%spf6wn!JUZ5ccJdc6k#w_5}eAqVHNdZyc_x~QCfypVyr%`9h2q$9nxB3>;n~k1O z%}M%;%3bZjSl>y?y-EE!?}kVzPwR*eE7aLCeuEWFUeFBUEJ;U2FlIqTL%w;cQtC#* z6bmmw7}$w@!7fz{|DdjVt(LnebWyKWEmE6r!2fCm%#m8KY-23x5f)7?(07FNld|3A zAUk+JB=*5rL4wqBD&WlPM2_&RRZzzJFdMrN9`zI%LHE)Vpa88rj{vl$>9MNd}80v-GdqwPA zjbUFQz6v=kA$~9oLHKrKtj<*?S;_%q^cJAO8rh$R5KfPO9xqwGUqq)6{0wv*sc%jrkcE3D@>rPCbP zu2d6jhl3wc`x{D#niBhK2Bk6o9VM$K7Zsu~sQ2EeW`GLYchmEy7=g3;ob(hua5@q; z|4hFp7~9nss!VE?odNe=yvO=H%F;fdig$jyrnf^=L&m5PIEmw_=~?)3YNw#%oAscX z8Y1s+^=Xyeb>^rd^n&m2`qWrII{6ONgDLdUA^IpdBBU3T2GGezsi7#$QlaNh1QB02 z0+^^Hk(vQK{!5h&sPZ4jlP1R#4o7y1?-|;)SpP{JN8RBvF^&fL0WC_~U$1}UjK5&zSLd3;&#E`4!LF6kNMUAzDl1E?P?5E|*@ynRR=L04oP7jp9mO5N zvC2}#uE0?McT3azgOzFP`4w*0L^E*KF6^mQudCm%ZnQ~Jobu6?4oL?Ru zp_(&&5d?^pdcGU6_*W>I)D_IhJzpF9V3vb7=TE^}%%44?C%LW^ z_6gfZP%x<0$Qy4`T5Ax=L-1}dg7g0HPpD=6C*61jQjL*Ils1?xbNY^DFTmus*Vl9` z6q~R(tOS8zkH7(HccR;!V(FPgr}$^3;e-+(anzfI>O11Z9_o*YQ#6C?SOZ2uyW%0iKG_g9PSFFF_NgGLuBXVKCss z0yTYrcMb}Te4qr&J?;xw>Ha0JR*9nHoKtcez6BV2TdY70XQRs*Z58%94}PB5@11=>b|~?TEbU#MSwFG;BRTDDZSR)fb^zFQJZc?Wmq+DQ^}|tLiSs)MI9?4H zhx+t9oSDRl@bEFQMtB?EF^Jh2=dPs~%hCd#F2*Tiy^0;ST4JY^dG*&5MQ zccW$aHeezaDe#XynlZh^Uhu-IV{tSMNzvHeZ>4DGpvAPov?=kiR5yuwKrcm|($q0j z9IJt8U-cAzz^7A=^oN7e zI|ilO2c`cpD1FbM^lgLESLdb$IdOdc7d==hq_PeSNb>>>$+w(uMVcwXwI%o)GO^yr z`a(0qJeB*BroSSN7X-})ob|V`0`;TLTwep;s$ABrWtd^j8Sr-47#31gwp3R9J57rPHrhhiuE?3<1TLqA3trd!;eFyI^yTCHO%LWZAfjYdNp zoq*;Dz;EHaA*%cuRd6bnYXhqv-L?$c&tuW-$ODZp&4s@nt$Tly9nYwL zJnHwpn%Q439?dj12%|s=Y$*QnIi%aNX%EYt^Fb)z$8zU<5Yq25?VJxn`kzQ=&Icj= zFw=8wJ>~af3)W2}_2z6J{D5xmdQO63(up&RSD`a&d4eRzHZHhigMFSw9!b_HM>rqi z4gmPL9TZw4KAn(f*TnZ25Md)@G>~IU+zrof7d$`trG_{UXWfik9{)n$*azAVhI!E^ zv1k$9W{%q;D!L&zp1kCPy@Ekup-Ta((F-{pQ@Mc4%TOwOjoP&oiB)Pk&)LN1xU(ouf~`V>(Bl?q)hipG>54_30v}v--5;gH@oy(I)U?^SUTA zAW$Chlxh_OO;!~cO{!VnIUh!SYzX2Ta2#VP#=S1^lTiwJ1!rhxz&C|(g9qA6!b3V; zD$i!{dKbJ;m+!dhqti7>zI*uI!1vf&UcR5t_c{Y#9N=P(PBF##8S%$ppUq%e;X~jo zKKpJdo8ZOz;BJk1l9jSR@K;b-`q#x&8ig5*z z5`S_4`XMX?f(JTs(8rA>8T31H(C^4We|HxBfDwc@sSU92YMSiO7yE$Q;DT`o zc^9q%WYO!gH`xKeKWDuvK*jKp>joiDRQoZi*|^Hu+gY0=R0)i}1&pX7_oJyq>N`ZL z*oFjFJM*wu=HSfhP&k>HWsV19B?=HOv%utohp2Es`K|$HWjMbgKCBs~N-H*b@>mHQ zuzG2*k`ri@4aIV48{ znf`7DUwe5r0^-RQwFk+YxVB2}w-ec>?}oWtq?ukv+#nS+KwH`Z17;%RH79o7r1q#v_9 ze2jTfB>K7g#*xJBJ+;{*3!?x7toq&ItpGFy>)+8Y5OnV!VDEy)IEFw4iW}}h zTSD%w00Cft5?PmOKmqX_5iqAkaFPkj^XbS6ic6197p!yn{!`5d*ECi8y)}-tbTB8p21g ztH39dMe>m^9$e^;#t7imP>xM@3 zHsr=%!HI^7cRg`!*1oh!Q#%45qh!(T(7=bgnDF&7xSC|YeArRPJwq4d&mhxr_ zYLQ8Zu#5BHFvI(^DiKrwPW7%7y=r^h4d{HNvg~Lfo@v9|`-wQe2v|ACCLAFge1_9L zzxgsMi1VAzApql!lyC|X=QnM8=9~|F1oiB5o4>QqZT7(DsvxSb3-0#b)fJJ6rx&c%7F6B`Dq$rpKWa)hLG$HLy; zr@>bQYC-pFi~deBc{=rBMD(YM#zUtBm62+i1t`9N%y zq?Y^v_X&WwPGnz*Y=83tT=d3WlvERnr2Q52Auxgi>BS}I`f3tn{L*9#AZ zNSV@nIbbV^IrvMA*a0NPN-a?v0P_+_y|4={P@ptdqH;*zoo-m{G|>zHWP=+f0AW^> z=Wf#th~Y}Gdf_s=&U*r|sPhC~(=Bq^aH?HyS9>N~&0@6%Fs9Zny9*gm4}fM-6ON%g zhNlZ>`U5qV5+_(Sz1`_r&|D(!FAg6t?N`p90FZ?7Z#@u@Ezh3%DIOs+{i3j3V;n`cl`0E|wz*1H*cd-Us zkHr|m1IBNSz#Io(VK*|(KwSw~A(}Vpg=M17;)lt)5h`E#HNxj*;&|R7cBqA*!R~yAV~md>5iRLcR-8@%uo)_gasI!E6}6 zz33cgo7A-)yhw{_mW=~?T334>oG&%~s$Mu%gYA44>Uk7TF-2L^EMAUER%#JMun{5{ zOr&Ps;ZxBWi2V!Br%PgCAJ>S+@>qE;(X^R;DEt3}_{V|u+S||@zC7~-$y+pI!kd4| zMO17t_`WefseDv%*^ynG?^M&QO6 z7>C40q%qzJPHvro?ObizP&(rUUUV(PQG)BQOp*xPVnA>?avxr~Oj(5|>~g9Ir;MqB z>yai&X4z1X0Ad8O99U3>3XsGKU*Ug2Y`Ux--NOFYN$y+>?%g47OP2L8CU?wx#oSaIp-3@n=ZQvz0jujgJdqY2q4RihyN^RAId*n_A8`# zEH8=_H2dHVrDPIKu3RFIZ#{9?kqx-MjC^;Q{@Zn_p0zi<_xL52aMN+@*H3a#lVV-DLfX9&)1o{K!VTf(UV z*a1#ecD{6aA}lm2wE;1y7oLvJ^bOc(`Gw&|r}t^5yy>d?fQFM&3z%GmicBo-9oZ7w z;MSIOj)KnBY*1qN;EAPIwI{ZYch9>cySUC;;Gjv3a73f7;fhqK1M4gncFMYTJ_&xb zR_Xyi7Y`W`$l(z&D(m?@{xASmji)?#)SG`Cjz{m2+4V}jaid36dmHrE8|UyUj0(t1 ztLekN%X%NYEN0z(9jE5V77QJ0DEf3*+g12I^v!>g$sb-bkjY1bUn%7EmfG^~D*S4q zY!EU|N#nJi;@ys{pcLi2TWRV(JUf#Lx9u!1;kl;;nkvOF|N$B&k;*6l%1U`ihlfEr${t`SLJjh z)2YW{2Qq%J6hY1?s2 z_M!GbL{l@N7*d}hz^n>d=lm!uO2Z9}TzZ`#!SCuSya1s24}w(^Ps2{7_$O#wD&|aD z@(^@8$r`XxxMgf-F~_p)my*D*r7$i?i!lyv!3Eu ziuL&-FVPBG1d0I10vshnDd9FU{~dN>md$HLW#r-0_w2X-4NSaYW1%sz!%p~_c-c-M z@+Q9uAb=_+p0`Wz<+)t{u*7RU3GI&c9i}AC2G1a|B&y-~1#JLQBzuB5oxPk95O@OJ z$gvN|FJ}bAxycNb*#oStxXx(;=Obk~BOuLk0z`!#0ZkMq;4?2Zhieqp{eC6rU1{uJ(({99G=HNYD_T>Yjmm5W*TLQYu0b~?kU^hT7 zJ6W@<(C-w&j%&mP&fw)wz!@aFxXRzadiGUx_X=DmB$1VVbwV3bO8jJ0gdKxRz}5U~ z>9UL2tG*%qDn^K2_{0RF)hdAOOP5`R7o+&MBJ*Kp#y(Gn=Oe(e5m{n9QeUgL+7QwI zIMk9BQZKw$RO0YNC2>r?K?ZdF=B@><>pYKv> zSj0{EVCpBx;6HpL(xb&T+DJy3wGKlNQAn`j?`WIqfMyDN1a=w4&!8RRANcF&j*0hl z*+~M0;#DHCpNX!*JCWc&G>h5|TGC~OD5Oa*oM#uOZbpA1zE->iSAPG* z__FhD_WU+C+Ti*;H!%-3?-U=ZN8#T%H;Cgxtu5$1WSqG9_nO58tg zeP>)@a$LSEe41Xk22blD+>IDdM!s#0fal&tmdnT$8I%2%C5mjQT*y50UN-8O$9>;0 zPciMMN9>4&*HmeAS8(+x3?dr^jQn)j9^gSAek(H4WuuYO3(o?e3A7hVd>j5wco#ei zkBRl&EYsHQbBRwOic*X+fKS#nA`AN9O3k9Ej5CJ!vO$S$MpS>vsm$KC|Y+K0H?Q4$it`!KQ7l8A!uYMB#2Cxg?}fgh@Xw7 z2J(A{$$1g)AUa>3 zL|_s@$Uh4#PZOuCyznvB2q0Izv&(e^(1TYS`ylF!-=^3( zNAg3tvng3Gg6RRw4M|i3?m+mDHTf>w?GW2t9P8da6jZ$49PphDdq>oh%H5#iyLi?W8jQ7TkfRxYqq*Vn$N^+v{?(%_;Q0kX*I<&)gd&q9uQl$< z0VFNi$gZf@a$lt>HcrxoLzf~-1=2vzD`WFX*#MIEOOi;3P11$GB}q4+u2=$OAm_|E zgVrmog2>8yXej2hka*WdXwtNcOV~L`2N@MfvfAzblLg8 z0W%Khh1a4URP*=^DNT;k0Sw80XV4No_~uQgo9b`Jf9s~1>Y6Akw@!4cmEG9k3yf`F zI7Vrmo;S8fncRWz&c-H{TKMed*QlnmA)*kr)AmGBs8&}+Fta1IPZ+rm72XBeJ?Yap$Y ze+l!8j{v?UWzB&JDUlouYVVca)1>CQ&Rh8Av>e!@-8k9aLh+YNa^{Axtd zm{t<53+n#zAa1Dyw8-CkUzB!3SBG2OzmQ!#i7vu8{2;-f9u_-xfL?_Wk6jWG?*|YM zfRqp=gXi%?Z6(2TYpI(A@1wxcMl$kLY7X*p7+_Q0ftw#mcLjc)h=>1Nso4F(zJ6`_ zoZrCPYQgzG-1m&-iUvAQkMocO%~8}3F_wtfOAxbID(vESMYG@SA;SbjOmIf#G24)oV>YUT$nYh8pF z5l4nZZ$&En6Q{vlkD$S+Xn^h|K7V7*7YNisDP;E?4@S&Ks-0f@t$uikHt~skD2G*f zDNfd{ISzb~ews%)V>YoHor7H? zU=uql3B>Im^g%zxSFz8K0T8!k=ilu8O*mZ^5_fKB`ZnHLmG=*L4@PUwgi@YfRl`epEe4&bzXOx$V3Gi|~?aWE}rn0rA$-_53T z2;P`c9>ULPpmB(ee}cvXno|F-(t1~9>E+gyS$rdFPebkAyK=@Z*F6K~6MP@cvkF{W z!q$iru5J7A>l@TcE;#^&L_Zf)>b9u*i*@?5D(+0?Axg7&Dhu%ysI>>Qi(AcbfhlI( z!at48bK$ykTnJrK!uu-m<t$hwMaUs3hAv zh2ghxRnJKem&cq|{u|Z$%0?iLe1Acl0^|S56 z8zl{*F#NutAwC{eg66#+p#hZEeT`6HLr@j}F3K?8pa$bn!}S?jHbQEMD)orYR+{(!&^p2ZbF zR$7cA_~T&opFmee4D+NIjs|z77*4}mE>;Qg2~kE2P!A!7szEY1`G!Fpr;g@tXDLko)Vu)8f{60-;O~VyDFa2LS|!KT13RoU+38T`h#$BQS`+j1Fx-KS#bUQ3nxHv`qa? zP@1cO@!KVQsb6BTk%hl;UM~D^0m8q-UnS}&310V{dO^Ym*|uKr3%Jx%B2)tYX7eYb zV(O1hzMTKO`1w0df%E3A$$3P+6TFj73j1D*cMV=#DKFnHfbN?WpF zHF#_7cvOs}*B^rVtzQDB!n_sW31jZBPGcUBwov#dAp;jJ8I#JP)K{ZE9jr!cIV$H? z1HPEI#qU25R&x|E&EmUJU+=IkwtMLK7j9Eu#r2Vwr~~O^wb`4?{9+LONVX`K{hcWL+ryOpnrNP?N2fU!w@IAOvoVk- zQBKJqF;_F6B!76_@~1x$Nc@R%z~#n1xU3nJkM5~x^@is0kntcu*5KS4El zychIm&JU5H(``p?iWd9vVpq5}x)yC9o5w0(%)@8kXw;SC)8R36^S+OBPpZBb*ZVcs zURksK_VduuLlm%ZO;dkF*OI@|RRwWzf^tQFJl7T86aDd3uE;yaw0XGDa=sDNtXJj; zeqDrP)mQdD0J{lr)c|MB2B7GZQ8ta>piDld(8Vab6lM60QR`Sh6HR>A{bv@u2Rjl*Np*I&-u^F{h$i~%mcXb%&hCDMCR&PbsI;Y}ksQ8`16+JT+ zrToAPccz|PJG1v00P*&&wNuy&Me5}Y|FiOz>U%j3AZz&HsBja!btV2!H{|y8v;dY* z(f;d{_?bvY`xhy3&lT?<1ITY4-YU87~kpWXffETHd`Yg{y zW!Ed{j>X~kMR(kfh~B;kUCyXe5**8-*U3(=r{YES8o>=wld#S&HrUZ5bVN1rqq|93 z;N(d&iAyXjls^hEMCoeEWHf4Ov8RQZP!bRje!`(sj?#VBdACyQl=z*<#;sAD@zL%g z_V5mhkTp?2#5fUny^4B*8}P&ilHZdqWQfJU?e{*G=u8UqG8w{_zlBDeU|xZ19T;nckE^Rr2VnCNZ$U{mj_CY;26t$A7KZ=$ zUShxFG{F$Q%6qL3gLbw~@-)Zg)nZ0r@u_)GfyX>05F|$KZ-$aW*(3ySu!IQ0);O%!FwvY{zDkW;T!YLKca8Wkira4IEuBQBV?NkqW_aVe5M1qpuuZ0B-HZAJVuL8|0eXCF-fWtQH@#KbZ6{+DtIXtoSE(U-0qR6`Z5gIbd z2ISG-vYz`hXmCzEa8C^3J90vHv(n~>+>Eh)(*-twulNCYSTI@XfWH`5cUM7iNI`|9 z;CLn-I?*FVsTnQQYy1?=Dn77rl@!moz+c#B>$ZbzCn+MPtYO_J7KTdP54M1)rUFZ~7#1VWCv0jP`SZPd@qgh*O zvzRm7rLY={=K$nmASk+cF5W)G8&sql4T-zape@Fw(drW&;#Y*%l!fc zv`N&Ujf$AZcYyojIR62LbW<_L-9-3c3m75TT?xW$)&ehnz$FLV_icY9GwLeQ!68ST zLpa2QPU~<7z-ay$WqdrlH41-GndgeGDS!mQs41h^{r!R$xOyp#W7Epg??d9^rs3mR zYL6291j*q{0=HFY3UtxXRw^t@K?{d=64}-d!2;kdQ+39C-)OcfN0Yfea3S_3ZZm%v zu<(|Tiy}Y=-tcYGJy1Q7m-rc!NE~z-;Uxt;Z5jJ=sIu&s6H&vgJAkv0%JTWBgrGL> zETJM2(N%bY!P8NK2E&wiVI>+o1sew=hwTGsTH@W4i240KFNQupm0%lQBFFKjf?2c4 zu|^y~e)}*$$;uuHbnm-oMa5@8G3*7T$OX z5=|5@MUtjUS|i}ThLBtDmv$2u$&Uy?C%-^uoiW{mFT+S*AA!j#{PCnJ>?^SkYAAcy zfv0u+gS_`s+932oGaN!)vYodc2`tcNmuQ3a5$lp~INRh$Inm%3W{aK63i-j-ELIYo z<5B`tVu!r?shLlZv>Hzmy_b!l#YCI!8UP6QU)ZOT^!)_v<;5Edc$1=Fjok>7mxeE= z;Mw!`jxB0l64JM1svZ$>Eqlbb*~O1n7-5xU{UZ>*q9Ht@;p}(jjY~9 zl#qSKig47SV8rKnR@r>G=VGRS)-_7ODae9*X_4S<%{y8d0+cRu>2 zI#GB@lq&J~81^Eu(ZXV~q)E#OAdYd)Em{MT)J*csYIkvu_ zLJ~=9{~xe44*N9h1i}@fwvcVR@PrH~C8=Ea>KV2CbeA4u9VjD(kM5IvIE===DQXBE zLJ=__2O-gUsM5_OK8tnKke6Up1W*CGX5V)VRf7sRqUWhT1RlB8z6L&kkU!Q%8GD1S zIB`P-9{D4@IRFvK%I%2O;zsba^)82+p0cHngEn(9X;AXdvl;4hR6z1V&VyvnU8>02 zve%*LRedH8_@}4ja8Gon--Fu=;15nhS3!^F}4Q^sRP73-Am;3d0$!Y{6w#pCYBI4;6Sm3?3W4EV5ZC7nbSN5FyW zL(k!-vg9aYI(0U1u;UN)#tFi63vs_pp3S!UFw6z*{Fx)$7k&aaSX#fm9*sXnW_C>> zNP*noiwv>d_|zE)vN-VpHTn|>ERJKg)Xo)zauK0Cg{TGBBMzq4w>L`-yQPqW6>}xI zOdC)h>%&)W{{jGf)utqtqhY4ei@y_%624M^x94Sur-sF1Tla}A%?je_ty0qQur(lb*ycup~8^>aCzN4Lia0< z$AK#T4hBs=4~cRH=v64ESf{(@Q~WX=Du^WpYz0mdV=si(;lekGLu6-a&%VsM7zR@; z8t7mz}7O1M@$jCeF;lJM+vxE#~@FZ@RT2<8NN9F&)oa!CIpz?gCR_t>V6;xX)ngY89zj_2}9dP z9qnAH$H9Y4d<#d>7`v{6AsFC2WL#0MUS|D=K}~Q(yLs>yM9Z+2Av;6S@PWr;J6L!n|8O^4p zz0c~h8fW*_MRH(>=C=B-IJ1%VquJr_xb4$a%)L33O*@eaf-g ziQd9h`pf7Danw`L!hLe>{0Ur`E6ab6MWNcMUWKbC=KIEQu74gaczOi5&~xJ&xJMXL z85$6u?)x!Lptap7=fBh!V&n=}p&Z?aMK*QQp9|$NK!LV+*}_?I)ALCpoe4Y)ZOPJL z_dtisUTi1s5=H~Y3xtaW@KI)&e{U6)O&IWAr1(86kG|-dgq70aU$eoXnsT| zaEvCs)(r^w73Pj6U7N#SBkxA#_}#qBe>-N23^$Wc99s=g%ZDtZL!#Mnx8BOjw(J}LGxqn=DPq57f!gf z%FX;{+ZyLU5(Pw7s*@5QNr?E&5E3P6tI^Q<=T%bil1K;=nH#Ek&Y@k2^&)N*!ur#k z;nB>gaE0v^P2~Jp3#`AE7%**fyqbKdPO*l0|&P}PG!%Bo|K2(L3hfU2-KWl3bL{iNNuLIG0Vb+h_n9)537uo?R~PN?t;b}!UPSp4dOfo zIMBVqja3A6ih~uOiMAjOr=#0?X|5cO#QB>C1|QZXHNwj29l{!{gv9_mWOz$8)G$7V zK_pWRbL3+FROi+q?wa@x4>l%X(dk%QDRdwnSFu~>3t?Jdlc_23)Aq{x1A zdctiJr8&fN^DlBSNMJDZs}fKn&{zFn`W)O+I~X1Opg4Y~SeZit4rD@hs&_;Vd$1&-KQBGwpj|jRTBLW1qbAbVCz}LNo-N#hssrH_|=nD z+ww1~#GMcE|8$8t<<>H;hZadHhiQT~~!e`3uWGW_1u%VNpBq?y`ck21|zvdT{K znL1#>N<1a3;$hgLr?asN;Wc$lm8f-)9N8saU$?ICORZ!4R#t#7P2bXnZTV3lJ3DX_ z@ZXU-B6m`w-D1eS-Iz*6UdK8&ann#G7J$AfDc4iD?eD`clk z1kGj=Yqi};4#*0rg(T6e`vm7omF4FS%S;7eHG`GKxP&nF<%o4rB-i-y2Y1ccurofJ z2w*Dl(P+#QLvdcOibfuMO)g%z_(kl-R{M!JNq(cfYVK z%2Kv=)?`ZSBXaE}muO0x1VCtwTvpD;0&F!Pihkp#5gs__EDsqu02&^QDe+tKSj=#E zarYlmzAjieaf|G6J3>cNxEq9x zb_B^ImPP0u8}8O5g4AEH-s$vMJo7M|<9|jtT{v&}gxKV;juSm2Ld_vXH@P<-AFI{8 zsjQes(DZ*XeRA>2xK}oaX|?tUM|f*02xNrcd}u#-D?L-}S!};laOdr~*r{E88L@lK zD%pyOriN9_;xTuCBX^=8bznDr6kN7yao`HRW&)r?upJiSbq~AI3Y$xE=1XG!p&>{D zQEMt-2+PM*>P^;z;)x9&=s#>3J%S#T@oPt#3VPXbnH zpmFC64#wwM-x-HoyODz&VRrO2$=95yinxiGgA_xFOE^YpbAzvkSm$v+ggX(A5VzkW zb$!n+!QxGbEVBUqXp#Q)`@uKL5o*4uC8tqMeipL;XTqUmx29)pt_tl`IoNQnM1 z_T14A>F)Kk#Jb!yUxvRWKJyl9yEXM>^ZvyK@qpUq12H>e{Fj)$1_yS=cuFtuUhBnO3XanO)vk-BY zqWBtpaHLGGQ0trpI;HN|#EcXH&(V?rrjbT-9>~i?%^P7Tzh=Eo+2WTe5N~sgrX#;x zZ8%hn?X#6qyoZ5c455eUf!=j7*(rynv|9Z3x%f=vn#C_KM~xd$BRjJD;SO-Idlr5L zDz!;?5|X{v)fb62H%5iA87JV{MZbYmQ(i>FxJ7;(zk68k6UQXOhmmHQgV3tMvJwTU&;N-G48%UDFZ~0t?lFt^!o=W~J8OYJL*9yFp3krK-91+;ZXJP6ZSViI6q%OlEj`mTWk&IV@HQ4k{^g$(4+p{ETrjx+mWjISK`6*I+Q%JKlbM7#}E zmY+<4nsxYz3hcc%A%>W`8U4$+6|q?)wg#lWIm*V*6%M6uFF$Wfhhl>g&;nx)p#LST zui3mBsFUSFsljFu4y2~rYAK@fLQPTVwdTx32@h`gF{L>Qf#XL6V=X%$d1moV(w~@h zK~4>$|$4ZSMjfWp(ZSXL5mn#3v|d zyvH`y#A~8>BnmYH6L>}wM8S%eTC5teT8Uu>yd4cBD9@SBDaYE@UbVID;Z)n&)^hWf z1SEip0laYW61>!B7!VMPfJ)x)Z|`R&3AH`vegEgrhs^Ul`?B`lYp=c5+H0@9H_%0h z8+iJM;KL{6>VwTn7~5&{CD=HE_W5^GoLSWevzb+}Oc&HAF1)=ydF3JX$uWbY$uWbR z)~^?8bR4Gbk=%@9?95sguQUVS7?iavWlG+%Mv~2bs0LDgFp5RJTu7-fw@DVVrcU9- z6RDBTa!8)jg*@{=$JVMj!wn`;X3oHI;Jc9e8fe0y)qWU6-d2Ce^R}QzV8j}i7QX?W zjU(<^6dJAAXqL4P4a!z4GiC4d=LLoCyi|R)kByUJ0u~qj%JYA|T&0;a(j!jo-qb0S z8raEY7FdV+ZvDI7#+DXvCMXQs;wD30d+w%<9>t_)zyz^=xR}DO!;$)uX{nE~TJ?&m zx#zGbn!3Ye8~)qd&Aj^&9{xq-&RDW8ZYIrCoGbkJ$=VflG(~0hY_)<;vn%SibYUN6 zaE*Xyev|t4Yo<&cyNlUmY7e66=1Y^roRE@LiSh*5&&sz})pwa&A3Wy2w`4`{SCCK41W8)jCs z4mbSva9XADb$A~@*`|17b5mCdT+8PJo%<%gDi2$ltKpJ5oyG6$sJ{wi_u3ogu0l7m z<9&=Gw43QjGN*D`_B2Zbsh74BPAiO505y*Q(ye$w?E9)h^<@6hW*VsBHd;f~xqq4o zf81zm;U!NNFjZqF zWzHfpP@Zwq%Ie^O|BogfSMx3&?zH}m_6dF=BoImD8ZNYnFlXVdc+gn2OtdBS?2`?u z-d^$0D^O%h8ZYqe{?wXB)&j15Pp0yj$4qS2}e$!h$y z^DOInA2WgJAuT{%nSfVX%Sd|^>fB{Yr9T5ZwQi2O{7wo7HQujWOS3K<+`&!xAf^lk(y{3 zJ7holl;;2GSpi+DFq4uj5)L2YY*?}V6+_VcuBI#&cGP71fIY3TvTBlL4{QER;Y6CyVI>Mku z<0~>%)feSx7HecIVpW~W0RZ0KT$vue$SWkU4I0%_V@^cq0@F@sdl#G^FKZTTGk2vv z#-s3mywF^IpQX!sgoNnv5kP_Y)%VbMR+RfIuqT;4n5m2j&L8^~lWOoCAoD+omIjFh z!)g#R9sIlQEtQpGf#7+caP3lh2vR|3hPEDU;$nU5agzBNdiB5ZjH(o0n_8l2U$SU9 zT_y{Tn1Z;@N}hfdrAh@*U@(UWYYwr>zr5Wl2cjm!4U|5$hgo7qFj{Z)GfBsR8=9C) z-`8OH4DO$LMk033mpI^1M>V-WazELZ923&H$~#lH+Zp2ZlI(xD5U@v3MZ9WLr3eBe z8(KdWj2^VnEDeeEPLYD9E;pm9^{?m&!nS3#)^7X)VHvw|X2kUp4rC}Uz;J4&IT=|D z2#a7ikS>bKv>qmY`B;Bnc+qU+l%F9N*?G2--L|u15z_n7&8_B0>`4< zR!cTVsG&f9M3qVwZH6DY_?TkN^uHTb8?Cs4S7d2tAaakSYi5GOn@J%A*o??A6jKV#oYRcet! zihJw1^fhlxHU12J@HUubIGAB(*qhAiy56zR;(!_UslhM{+A)Rw2>zq4+M3}}jn>KN zbY>8#H<^T@u!{zZ)tsCqqxcbCq+~l0)>18W>EU9seM>X*9F$c5x`b$zvjNE?LcKux z;*X(PmLgJrqQY53XOsd6#S)BN+f988lcTn;X~h0*Jd}GixjDD@%V0o24wXuiEXtEW zc~$YFh_9=7fon|}Rg4lVWsyq*{l6VAZPNyr5!ObN!Ye|hso|J_84V$j$>S`hMS^`C zPrs5ATp3Z6Vn$R`$XS!B(40J3^lB4@PF10cnOf3k>M7B6_!*}6IjQMzWWo6(^H&YF zpYT*&ML{V;Wm!ATx4%u;^Gp*`cjMN`waX!9!tCu&ZCfv{0NVv19?)dJ@lO1qIkEnO zaSGYWA;#JDg^zK|^uKW;odI*`R6GMsBoNSOpa`?7BOF7hs%)LNIXzOBk(6dQnIjC6!7e2Uj5_XMCQcyrU84^XqL^Wu0Py`#5NX_TpWs6aR*wXM_>l%$ zyPBo_5c-93LE$zoL;Z&tjk*chkHBAfX|4Jcdp#wJr5MrIO?e$3LDrbIQ zw55g8i!=y!MwFQI4KB#-P0Z1O=6V(BHfR3GP}vzICY#?zdh(X>sUt7vjw4&P(i~QT z8|r9^LF!g3dSi$)0Cl9X@oq#5Y{QT;AyGL zdhI%zvAnG+2T0`N6tiY4yqx=k3?2_bF#8L}LaRDw(C*{?fP3d7^S)E|UDJRE%bIyg zQNG>3mxL!^!%*!1-zXc zCF)4Kb@azHS>dnAAZ+RJBowy1hceiDU+n76F`_ywI_+v50#kuE5U4Zj8Z%1;ANlVb zOAxnxO(%LB(W(C+{d_`xsE`o~xtEZG`NP-x+;CE9+`Fsx)Fn^4n^HKr?bqgU`gR_i zhmt;hK3dih!2AmVtna=RwpDI;QdQpQ=KZ;iMzE&jFaN4yQvNpcTxN`E&BU=V?CsZ* zDUL zCn!ld6(m8^&2x~i^8E#OSQTbIbO|7!M7EAl5vg2sXIq*X-35ssg9jaPzZfPhdC^Kh~N1s{v$!9z_3A@LLY#k+qP<+`kHd zEe9a*|6;hZMwhs33Xa+@W{a@vpTckgw6CIjVg(dF zT`KWZCF;thXEA>0v<=J-tkuXWE5G9!l2I?_2AP*iy{Pm2UH4k@I?VE+UAKx%_xPJe zi(S9NU=IupSCjxESyXy6sCh*VCX-AUMN~PYwv+pjV zC-iN05n&%QWDM=|WZb;SE~4y^#P6NmM7cV)lLEq;%USPk^G7el=*zCy zKGcW{Wx4fy-yRD`lSyqP@@rX=$iko7sI>mSN=&0$M{zbF$}`6k8L-Q`StV3EUwcq-)yLg|CbhK z)NC%vfzV(H78C!C%YV>l_b(^K&1+F(8T;lOof`~>4D`>yub*` zMkNCXcPiNfY@E4^sh*ZrYHn28c4^xh#bP0P=F~{E`u>}ZmYs={sHuum+La`c+TO-f zVmW@DZFRm@i8wz@O&EGm6Z(`sh)ESo+MP;vG*dEh%tQ9+?51BYwybbkxmckZn%W8a zvhp@L&N}vOph+zUik#MN^K$4j%_Lo1!;cg3k*Qhk274@J>5>Aa^E}6}Z#gi;X}u26 z$#FZiRD1t#O(3gOonOS!?fG{&)v0NVuRrU&%F3$qZWp53C=I-TfY!2_lX=n;8tPj5 ziO$}8HEh_qzeG(XLh?r!YPd?6oEY*CV|_4_qc7(sa-j9@6Wy7PR6+lQOWQ5UjEjjz z_oIv41WWL4@|DyTox-;SG zjH|mbBm zGhFSE9UD3mnP!|+jRWdDC3%h{Qe*T%R;u;dja2KQb0r5XMA~iPrQX84AUSF_m-LaN zsXr5;dAUl>?CTCEYD+Z(_%3A9vKM+e92!YZ+{vwj&i!{1ShZd2nse7kq;5x9$ifymS5kbJ!p9bypsDJzd(}PVI z6xs91G5XeobEL3*7MV4;z{CN@&bPG;EP-J|W;ji`GgQ@`@Kce{z7; z%P@n<6lxNZ!2+dyIMNYsl=K zblSty!28k>YL4aZnKk7UGpw9%5_vj%g`~)QpF|NnP#K!3K0~ukd?8{d0;NoC{L#O$ z<@`J4NcC1939063M$~nb8LhCpv@ZyXZUYOMqBr{5K%z2FB-U~Ql>iVWqY#5XfBmlw zDVV*>YPR5t(GsxEnM)eYCHbsCLjXp^}!{ML= zJ#%WTl)QYZm42(3z+{DXa`?!bXxaHFIa2OUM7*UcJ`(Vv>5BM>g)7x!0dSDg%nByP zxB*qO0!FH41uLy6^l4RiiNaFviyVRmYFSm4gM%bwM#?DdOlUH)Ms@5b77mgGoF-r; zg=9d6t7K&X-7jte45Lq0>O~wy!@(aBGcEZx2X;$%PuNB4w$Vg6Q;e)4N3y6EiyP-i z4OTk|ZGr$&FA4!*(=<9c{6jI4qyA_y)B|%#6#yv1LRDZ&`%0ezuQ|^Y>$41I?apqW z$GhJ()e`RvBk_U(6#!RPS@|NZ)AYL=Z11}XC0{*j>X4WtP;TOZM@%w1tWxi2ktG;o z+3I?JYLUXxtX7gZH5^L8e0>xZq_t@^<#<}28iNm@GPMaJK$O^Jg*=Qih;a3NeJ6{4 zE4tqfR{Ifwn>|(NETl{Z4E<0l97yHr;w5ZO1IhreL;o+|fJ(Ig$PCtC`~{9|_b>qmEz`elD0kwS zsFYNjxd^^8g#TGHoAU@wU1I|pt|y>^fIj&B_GN@U|2t^8nneCn1O9FqkC|9^Dy+eR zxkMm8pxD$Qq?RO|yHF&KdZf{t(IC(;GO|0Ed`FW;naE7PQ-5ak_!DelBxy z*m*JangD`NLnF9_(mFq;mJ;@axSjH3DC_E{eC`6M!4hW?ORwN35puW)<;G5zRK zn@p7W|B;vuJyqC)nCb#LHq;#uQ`KoiCX2pwl_91)(H)iRo8o0$fcmtgjFf)jF_g*=A@SL-m6qR87LK&FQjxNCE$XCThAqF>Vbd} z8=8Ql%?BC&%LcRd!}Z2k-$^kZnsL4=_f?vdvHfLc%xaWIYJcC!OIgr-6PV5-Q~)d= zn!FpUzh?00I(BL<-$_&QuNmM1td9&?a_R}blPksqu9InyW%jCEYwblBO5gb%9l%UD zc5xg%3EgW1S2Ukuo!Yu#ZuQ8!nX8fsMNpz7a&(FkX!uIpjIqI z^HWz-9ho0e$EoX+MSCH0OTS}?>BaU~VY^IH4U!eM{hJ_d*Bg6#Y5?^#=gTfFRkPX9 zos1sh-+7quebH$q(7(lg{p(VCA;*8#e%-TF+JIktI6qhA3R=6n__5#Gf9@w+-1e>9 zI+}l}8)|baa91k$4Y+a>`7518#SPx~TFHz(BX?fQeJZzw^I$nUSE1tLIbaA=QnKi_ z*K%`GKV=hk9~1xlmec@UZ~lX};GW@R_<-C~f6&&FDr(u6>-?Z&P}j0P8LCLwYaMEs zU)9#KZ|JNci$f=HOO5mBO6P%o3FarmxKHN;kLkvP2f>own9X1O#rgZ3*UK4mhIEG? zc`aS@E)DTI3_BOQ`@M|{5hW({yp2WV<|uZ)jom)g#{Q>`%@1P50kK}J4`MwVt1eOA z$u{=sAogY(%VfpG{)>(Mbr4%`V+RJYB{ufELF}0}wlIj@&y#ZR3}T1cSms>@@*6g` zA&A|bW7>=L!NfjmV4 zR5R_q^vdzfBXtm2dDL4g)`FtM>1150GieJ$u4VbiWn3E3=O61c57j{Cz3VdUgu`K8GDoM@+Fp_v`*c|Q~FceneP3}6o~MLF(7 z6wKX6GgB)dY^RvYuY?IZ4G5_e9EyYn-_1R~ zV%G5I9Z-R+XCr-IRbpT!=k~H z#d-tM?}eX3o$g6L+=p9eyxaTOQGe9J7yQwbMwX+h_5?v2{Zj~{C3H1cl+1UNb!BHT z3k{o*Zn>uaDFx}8nN@7NKI4RV2ahuoHO_-8(o1^pXLyFOhu?8mQvv3Hs_j}!y^$g> zOpXfaN~7dSms}glneQw-0x{rntchQB5@4$j#J6$SeSAC&b2JHjop^|M`3T-se`n$0 z$uZrdzA>|4DH<0D-6hXt|8Fo^xBAm~xAGoiNZKqS>iqB>Qvve|3DS#n9%#`vzI#)o zmJ-v;Q4hM0q1<`)6e?ZktpISWtPTyZj_tFOT!(>fbAivE`1s!ZT)k+H1m}L2%vD<~ zGxo;USAWv9x!&7pR%AB%Z(97H8*SMUYFZZc-gFk8tp-U3Kj}}0_UYmhO7c4WYx$~i zo?YV?@?G5-ewIa$pP2@9Bu6hY&#(b)FgV#_m)JKTSE??H{5 z?>|ORZ@V(*!&jl7sDu};fp!*?BtTy&BiPuEhCito!2^49+iIMLJN>DA^&X2KtUq`w z>$Syyt>}Nu3QjwA78P=i+`in{v3eXCI|s&hGr(|RN}WM(*nC`tgyA}$YuC+zAgT9& zE&2yJ&2$bP^@``}pp{FGfGW7^zLc@yTMv zm2UEq!tj!ELJc4-Qrs?Bi}D&6;;~EkJ<@6Y8S$9DsA@O!ir~hVW^k*!X{L$R13ED< zN%kX>EfrMpsLM$h0F3{^Su{2mP!@)KFxyCeH_0Vy{L}iwWW3rs<_C3@Fi{;}`GiJa z-pfb75b9|esISqYJ~izfj=Dc;_O^!r+81E~s@e#)sJh8ba(v_8p=zgJPc<^AYOtvK z6S>^v)n!w$057fNgXTTPTuW-v1nOZOmVQKt{~WpJi@}pBxDUz{M2;(n5Ae6kKay-2 z{QX!h&A=z&7!n#RnzAUwpz(bmr@wFfcWlM`<8P<`;2!Wdra%7rK>di>$=^f$u8=;8 zOuYyU=#3SSSC^irmLpUalg!>o6f1VUPPgK1H#vSE5~FaYj@)apSGGXO5n+lg5VEM^ zk2R4x)g^25S42jMZrhE>Y4B=!Uu{N#|KZ=Xd=QE+ag!5Z#F4Vo7^9bHCN+#Q74t9> z`83>BXLCn&PR^|P_bmrNu3>2Dx!@x+KANkqf@j6)(6!b;uoft zv#DH@D*iJ~_D34`yZ1F&yY0AsS5>vDSYr^dX?~|P^`uGvqL0K1>W@`*8Z1qIj(DhW zZz9(wvhiA3jwTC>DATazo<)I;tl55xQ=Hc`8Ob;n&iy$hWrUV#byhyf(x;}?L1)u! z(}U*tzc9_X<1q@lMFnjsRa5;dKaxO5|Hbm*zWH(H>VppdT9e=LrqdI^xIi#|W?>v* zV3=zI0)Blk{v~oP^84d<8#$2_j3*o0ugGi#TOYp}pVX>XqKgursbL?0m1?T>2I%T^TP5S9i@QtX|6< zaFIde?&Sx9cSyL9TLkR*o)k@#xS{nKHNSe(j9F&fu*^27wslqPCSI-xg_Gf~+T^6J zQG;d<;r-!J1+%W<`CsAY{exznR-3%&VPg5(S1|KCT_lGebGea*BMF(zc&Ow#g=aa>>kDpSaw{Is$5h>H=U49p zT2_ek=?m!#NVf%4L#37aJrw12Fy-IR>V_)-ib(5r_8anx2Tly76r9TYlzE?g-4KY(L4OVU;a)C5OL>S($?T&0wzu&U*-eMj9Y959uSM zypHtaeNf7LC7h4Fs-&T%IwxM(&~is^j%Ynge+S!Vdg+OYWIDy?&&*5t86-DeMZ z{n5tJgI|AC@Dm1pXNdh9?k6AC@!P)lg1S(L+rB?v6WL_`1N=2dE84;>ZP!NTjpqpb zx8o}*#^~aG;9r`BU;Xdzj^zKLf`2OT`@weC?zeE)x$WJ#g4?`zP&hfUGMucr+!@#5 z;(i*G!h3Lc(ixfgguUO!|GsK%XDnwhx^QD#zl{(`?NC1b-|!)&`@t3J!fD$fYt2|e z%rZ{O+}+ncaandoS|06Oeqgf(#7e zwPNDXubh#95d#>ik*j zKU>n z{vJjAQOKnl8&f7e+35p#liy4Le)Ziknix@Tf=3BD1A4dKFIX2jY(vTYL;nKz+xye*H^;Oi7 zKHL>NW=CtOxQ(}7MzOmjgJ*Jw!5QSia5R=jwmu@3eg51NU;$k089RX~(SeC#?S_cn zJS<=hVrIJB(}vSaeg{#34QZoaAi{?PirwUtQ2MvM^mx$Sp!55TCv%P5YYFBEF!Q3P zC=`vszZtO2PuW9zsLW$})9{_aqM^)1)#g@IXYOO5p)T>576t1Pk7_B2?dP%l6%23A zVvkJ+aEUk~dNVv#XrviJRUUNRlnKaE_g>|th~0=h2wsOs&%th%*4rFSl4 zS3R~<54W?$gb?T^o+>si>xmzps-kZ2w|k)<_UL?>FE??dGEHH{pCSC-5`uF4!5=^q zS$QDTjbte{Kvi(5tnqTiSPW+WtV?ElG03Um1P54T?H4AJ;R{bubN@x=GX|Zzi2;|J zCx}ZOx08oWXYPgf&oQhtb_uwALMb%(_xax?b8546>umiDJ?+Dw=Qk0VrKi96Dh3|$ zD`5eeN=-5~2_PXj{4u@hclmQO>901`Y7C`j*!f*RO3qx>H$yMB(I6pqcW=wHw8Irf zc1H3CYVL1#Y=h^vF;XF_zbJ48fiQqw1oi3v)*MrK(F02IC`nT95Re_QzpNL9Z}B~3 zhVdrO#>@+1rYq)TfSUgK6EEqcE*6-3CaEAW|+(mkEIQr_xDoO!U4X$mClg?am zOVRN}Uz!i}TQ~XLQjz%6TD;8E$-7^~7GIui_;>3>8@v3Ou-5eN#NRUdQlj9j_I~Ya z%C^re8`C~LZTl9%25Fy(Fr((-5;JQ4N&Dot^F{6J)2s*kH7n4GCSfrQd+S>EAL86s z4o3-lYoA(j$GJZbo8Kinp51=Hj04t}Cl>HiGobyQ!uIasP=`M9?PFkjcZq!)6xu}i zl)>%Yh3)Sahc@V=&^``nf49WG<%XCUEObMpXx~y8+Q>(V`JIxdG#e|{R&-RfM+owk zh1=6bk*bXqt1GDHdT%wQN2)eebP?rswfn?vs8}0rNezj%v<<0fujmMSFL>?ksUiI{ z6`M??wAl*C#;Zx+p3VzbVQ1JJsn`^$*wFs&;HvfBMqW}*RXY}0j-cv+QX?UX(Z^gf zf`>nPQ7Gra>+=824R!T&_l|$sQbX%YLhX7RButq%a8_vF46>Ffc7S5dTY+NDTfTkd z0U~T)b4eAvhDc^#b9f~4kMdSmyb!Kf*1i=yZ1TD))>o`02`Dj$SSdsh)6R;WL14Q- zBwW=Msc4H-wCgISHb7T(c_2Gn(bm4TplY?ZHeAtF(bb*;Co3b|d!w`+?OO&{t>oc5 zRb84fN4}6wQX9oCTDFxt3qwpqf6AoXnRRA(X$Z}x-g$KOj4v|_=de0d&MpN00~f+o zzWuHgcjw_Y=?g&4S$r$#O>bgwkc)r4^QDYEaSdv^e*^h~`M~Kct7**5>CVX+Z6FaFzpJvkc*9XF;Zfnr7>%HeOPDp#X6~*NVvLdm6&m-WsOHTv5DwlXC z+p+=9!jT35^8?yP1h%dt!YlI2IP7Y3?4+7`=ex-nA!&p#VkFWo|LZorK5-lFFp-Hieu({K427joyVi{zyY0%)XeM7 z4IGlhuFq25c{a+^fv3*Du?NlB?s#pe_e z4*sn6`c)I3Fk5uqDOK8^=-zW7@~tI zIT>FsQgX-15z@9#rEVworu_kF2{}_COf<)X8rvsdx0=QqtY0bOjBG@N2rg3Xf4}|g zZHvL_;&Of(!XC@OFGqEQb!Qz@4=u+3n0~I>UWYB{TbcF;fG(|yZmn6!;50Aa!)`!s^lPbmMo!>O)eE5cuH4(rHm3MmHzZrBWAGqz#8C2R z+cujX?s>BL{L|xk;ZI6TrP52X@#XPc9qP^rv}~Lg{uRe+7qhqeyow=^hHw&7U_ZSJ@>K zn#q`B!=3wMbXX9V31S;SkH9)}v~F6}2Jm@#scF3T>7amrn#J#BEUeK_{@%?-5)JFb z8#dF;hA%FYKgIAzO|p&tT9V1S%tB3f=KzU}^!k85*~RpG19%JmIlQX_c(cC4luCgyjMv@X%SLEu2?@H%gf z-lJY|A9}0v!iDK=z4-(DB#x4~1d&qhCRzl@O?=M+YQr1Ln{VDBs6@h4Xa(Qmvd`+7 zI9~Fl(~6c%zq#Jm3IkWE^r}An(OclwkMq?;}PY zN8KhY*r4BOrlYSBwcD9KfWHaF5$~}l?DyA73Am<`pN1NKZk^~1&2xrcRLuLhsr*c6 zbcRkUb%tJ5=?uND#u<7u3C2z(MWbvLcX6I!Gk{PT_{HMne`OPM@RrBAmY zer!%}?1Mktoa{9c!vp!9XcjOn5use|^7=Vf!VhE#lR-aYLQXv;^7*^|H^R1Me_rea zf9b2Luv=_I?xsLtm`g4*ZvCIw=#uo?<~uV#Gy`l02MtNPy_{|dWZTKc)FA&AKMV|7 zg+I+e;*Ehjn94?Sa-L<__N2GY5A@}c@;ky_#yY7Mnx?slqCfpfz){QO&UbtB60^Bo zTinWH#fgxZ)mRo&V)wvN4l`)Q->Y}s%76D24F&p)tw(OL|0JEkTuSKgmyYpYK`YSo z^Zog1DhuYad;An62idV9&s4ADP`Atx8JRCZccqRnd0aUT$(`))XK zu8y4W^Kt6lN9bPHEBG(Pj_!eFGvcZJDb081^$d=G8437%MJ0#-cm{g}P+9P2R+i3! zCc^daDKU@Kp`h+5;m=6fKAlVdXYlDJ&bjT6Vt)psx9Er!^s6j3?NI?*r7DjNNDQDB z=lXwKuO`TRjrCbLYo_qvP=WXb#xW>^x*Dxx#b!W(zJF&no5^$$nY_+EsV&_m256BA z9cBV+WWyIWA$?Ayhcd?cpV2N`woLW|4WeY2e+l4yVF}+ieVD~Jd)YRi6VD>V;Cq+< z2Bc>3z00pOWLZ$H*#7t)5a9c(ioy?z>R5b_R+i3!T*CG5IfL&IsD94iTW99{Lwtvx z_`kz%Itv~k{C|dTqkl=L?}iN~ z3jI;0OdX*#4WL@c6Ms$JKu7&Ozq)`V;#dEI?E_=u`b#_tYzr6l&Z zo0K0J2cM1pbPBVRBySUJZN7=z=$G^CWp9?=Eq_Y|_QFcb-V#M`{?5|K6ph8H;%w8J zmy{P%Y`n;@6&)U<`LULNrhuyNOee$ab|ochugF<^H2xA5#O*m4zXx@|Q*67c(_6PZ@pDbuExGstsVs~I0F zYEI%T)^m10PDPVX=`Oh?myory=J09LXT&g+Zn>41&KBJzH;-;+tHTKSzbMojTfW=< zHR4y<{G69j(z)MUkP=J?cloy(l4T?JMb{%wb+0=;?E9*FqF^l$R*Ws|SsJ1i4bJp} z`2?_?VH?SSeD&g6vCX)N;Wq(~)oCV?1-~JMGqgo#3Mj*LQ-_vP+U6$a6c;1&hPG&z zr6Rv6@GUxbpk~F`OL|s}9eitNi?(fxR6ASB$t0AM!(3Vl3mvO|^EkA$*-pZd&$L_b z`sdE>Fu~r@uJ=7xMH;*tk=QGrUGK-LhvH^;n72LZ?i6fF6I zb9hkRd{b=jl}s2Tw3qAOK9mCK1KEpjvF|eF`rQR4TxM(k75i>14TYLbBhQ{#!_#Vm za!xesXI5K@4@;kz)mH*!#13sPWU%E#Lzjj>307GB3IJBroWum^ z$dHEPe#0N6Wp{+yw-kgnIt#Dt3B7>FcYLciZe%o(U*=si%JuH4G^IZ((&e%Zw{u*H z5R4mjAt%F@G`P;KZTQE!r@Ezj$Cc-nc4z1~biJlx0jWzg7KRh!io=O}3hTXlO6n1X zZ5SM<_k>S;Gwh8kj<&y_UmxQB@Y=$9R?p=VQ|r|i)_Gqmr?65Lrc+?@>%BX<6|8nh zz4xy<$w+fSs4a|l%kh~>ncHv9nz28)l$sdNq3-e56Bid6-X_+=9tqu2MZ0x2>uG+$ zi*j}2P3NMh!Db?gGUT-Gqx{79!o=mpo#Uk+=On%{q%LuCBsn>!2kSc>5;<{Qczuea z5W+1Rdm`S&01K&@GdNIy+U~xU&*}+5wGjZ z;SqI-aH;a*9F&+?NdI^f3&YiGXB-A` zong~Au6Ic(Q=<4UE#&xbqAkmc>#8@$XKVdu-wW!=afOMA#Vs{Mn8}x~om#kd>-iH; zbLNbKm2}ors+p-rks+ijt@k*IhWh2#c@s3%n772B$zs#IwTq^lV78|Ds?c%ecGAVSu=vR=cF#Gl#(^O6n`7s?p>*|(QSlv->gz_v zIjZrZO5-(OAdFuY&O@Bvz6y);lGYOLM7H;Cg$Zx`;f>%W=#T*e^aw0@-KBa1)mnx_M(t>&_noiT~CFPGU4qEOyzXk>HhqGR!c| z#6^VFlwxPhh3tu($m61NOYmPFJE||m<8W~W#W9lFVsKHnR4HX2Va$a~%s4>!oUKZ+ z?#j&SQx@e*QkSY-%nzv6SVksQBY&mp7Q2w`A*q{fyjPh1rIFKPN>cR%W#nZbRNcg2 ze*?s4DhXk|sCVm3lAdS!<3d_-VF_M!{q)Pf!(ZU1<0cOA=NWioOTix~>4(3Pzr$a7 zFaBt>#UIVN2rTr&pTb6F@K^T*_!Ae;;&0^N;cvHAYI^Zk-VcA};7?Wkf5YEH0(d%~l)9K?S6Gc~Otm_0R5cyRZRp1#Dh=;nJwGSm6RX|Qd zaELY{S456ew$zG(E8deXa4aA*xE=M02k3QfSeV_?_;H|JX9(~}i z=mTre8PErgk8n0rEylGv?;9g2%ZR3W7y^QIEO5r54h+a>106Fe+3Dy(Zk^)`RVg=w zgW;@V*b=PnUJoB`lafFp zqbaaAn-gULh!T^ythlq*Y6@RRQ}{L-jZqc4GOB`aRD}(w3bo}L4&PNxjjE7FRlrpX zz4jmK39Fq6aq^n@Qn?bR9vN^6)>nVgi>8mjwf4bmwLJqWYt z3FD2PpdB^ssqQ{{LIIpS>Rnutde-O(7nkZodcrDyaEGW#n1daCPVF)-sHs;-%b}va zPhhH(5BPgu`ER5@TEnaUU%`(R`p9CZ^C|3kT->9sy`UvfR1 zmHO;6Lh8Sr9%|d0xC#Q=96QkseOf)E&d7b&$o(24_qY1%sI}z2oksSGc-z04;mFw8 z8;DNN@j-HaVCp6jNmf4;ULO+PnC_&;8f-Vy1X?=Sf8tp^sU`#KS9<9@BMV2!R{{@(t20SG@A1o5oR zv41fgl|20g7B(rT&S;!?-=!jnv4zo!eg0t<6|thA=hAN&znEZ%fRkqGp7nq8)+`ZU zL;LryP}8inutvOei2!+dqD1hA8Nz7As9L&$Udpc*%*nkO+6G|^JTjNeenwNZ^tL`D zupzU)m{A{NqcZv^wN?p*PzVsEQuAc;%%U8saDjg|&;<2VJ*^Sug#crjwI4m*mi+}Y zuSC%q`e}NI`URJ!y6X1W_~z=t?CXo~U_(f#rTgtsZu~u7bM<<099u{@Pp^~WYk1Aq z>*V;d<~s_`qnj*<_%mjHvCh>RRF+<{{gXH@yk9jmdq(J=^RUyONl2!BRDHe>Tiw}o zn5JUZ-}&>W#nkAd#5IL%ss{y| z8AjR9|66;4!QVEHl2|33)ULyE%mJ4Pn5m=2QJvS}KO~x^*6(Y|$4k@;Wm5c)@=y6E z`Bk_5ht3>4yV{*Rd19;(qnY7Dv+u~8cxKfZ>c2|{wrs6z-XEIve)AoLrSZ238Dv5R z&05d<;NZQJjy$BruN*Z?4Ji9~*7^1%m+8Q?d!U7sArp_t)Al9AklmKSUK z__yOM?j}bK#S232FIS_)yJ$~X!jU3dm%Q?|ISk&DLFZhJv!@~4o!d4O^)Gp8S{Owqxn4gHwXZQ z6AZt?j7icM>#SYPBNZ>2Q&lWoI14ZAY2J56d>i@G&@XPVAaX~NNP>ai zg%jbzOMB8EX#PKYTV+V=-pgc#8yRjMnG-upbOA2HB8>6L*5-gR#wGJ>L>l2_B&Tci z8DxtcH~MTnjsWwsmkW?qFtYg6k%6T-0z^1y${7K0hb+b+O5^rNVPWcwW|YbgC98R-Pvt3EJ(nqTvB|r*N8fZ6N7R z?M*jMS)EpvQAoF<`KwCDltL1rbBO^ykQALwN2R(+lBu6-`s?-Bz1jY<0Zm7wu-mYo z!1Q;g)A~IF*Yr7XA$o-23BWbnCiM$Q$d3EF%g$~ThVb}0*O|MD@YE&~nZ-vBo$buM z-i)A~sY;&E9sbLPE*4M^V*<*IM{jRRK)4qSI(ci<85l3gkvhp_t05os=3QrxPbqytM``a$cWoo_T|N{)|pMA_%+d%eS>CR z%rGl%-p_e*TR{MJz2^NzPU~B|N0MWnb8+@=-h0%nqhL{(%*U{CcJEO$uTzHy^{=Zy zHuxb}Nvz1)yXvb~N1ZX+npY0}n~Q?l{lDREPJP9t-!xg;3hSy@&RE-g=YUeWU?8@o zrd_ne$+rKXvko|&rT{4hL4-70$ zz^B=hsP$l0MfMlP21S`0rv`&th3E2>oBE7ik^E^JkUG*Jy_q7B-)#k{f&ISoQ(BhJ z^k++3Uh0E>-?^#Rd%vAU;k<_SHaQ;|c$sgGu@LBG2YtKM9qftiBj1fYDwtW&Tzy0= z5B%bfmKXn|`HtMYS-VgVLh&?i+O>H0zx&0IU>+f`At!NM;|F!|o;Rq=eJE2O13ypj zLk9jAr$@X7`y3PxEToWu+6%I!E#G}8THR)<-^-sT$$&8uy5iP^IG2G&LvXn%x$Rqu z!|m@DMh0!vXCBYms?GR>xYw<6t5-X79s~7+AdA1^-1l=nNc9yKqbf{nQUQzVN=|NQ zZ!dHf;pI?wNQKME3~u$NrWww{W6=$-K8pJjF3Kf+)3t60qTQOyNh)py9ye{dK|bol zDOuHPU1$92^jVe;7fsB?DYV#aNwG1!Ex)0?gX35DaTcv3Wz%5|wbdQ53cUK=inT7o zYt~EDGvaLs6nG-t%MaAr9biLxRaV<%&m_%l*JHn7r9Zg3M z7C1XDOn>h*{k_%n_j}HwC=_Me-O^rAt80%+#iVIzCoNeEMkfx0{|pFgE5;U@vb7*G z$OMD%wROpf1zAitecvK^W|9mz@rFTgM^iKRQ$z-X-8P!t1{)87T^H=qGx7>#&B zkq9RPCS9S}nR6k*(GXlW@jOqq#(MjP{>w+)$QOp zB0LLZMZ3jw)#lWD8lzT@2+zi%V88p}*#)DRhlVn1upT^*laFeu>B5jOlFFmT+;7mk z-`7pFmOTPxA(*v~Uy8ixjbXu_zN|e@dWGqiznXsOHvO^*s$r;yX$FU6x3S%%fKgdc z2Rff~7Pj#;5*eEf{^%?SMxF6pW*;u{8V$cdb@JD62AA2E_#M&7NbP#9 zaGq>#4tIF-N)b2Y!H5eeaJdS6Pq$jnkxd>I9;t0!*fyslTioRMo@n)FbA0IkYe1`219mV%O!o&^=@)lWz-Dq!O;qqfclUe zy35Pz&FZzFdUd+e(uv4UBu8&S!QV1u7m(aA&NXj~QJ2XDcsE(1ql+}S`)IxaA17QL zGxHrJT2A~8zm)4xBOFp^_&5^0XAuYNI_4ELBm*rPr;DX7oFyU!``7yizm|7E}a zk3#?1QgrI7{~F(7&~JG~N-nzd!GqJHF=#XcGoSUk5cM;UhZn_%as*%XN=|I=FvkNS z_o~{=TMl*j7zLnU=9}o7N5o$bb6!neyo(2tWEBrY30t-nO@y}?%-1C^EvSd#{SFG5 zIDmuurwpuj#;q0CremYYD?g14+N5B3$|l>t=*i9;t|>tI{uH*|$eR+J8cj}utq^w& zA!D6Iv69nRAU-+DXl!U-!HC~epS=2Pr0@(_%x-7SxhC1dSV=)N89SSEd#=f4G1-}O z0^x4xBl;VU{zXUA;ZXlFQUB)p>P^lZ&0?Z0pXNFD{Y~Q?Vn`2fpa;&cuUKCfT4$rA zypj9T+-OTWA1EZt2TX^+tgEkHKjWp;B9dhE$-0UTG!<0d4xPK{;=>O<`zTy}_y;y7 z?TChP&s+Fu97A%Rk>TgLL-f5gk6$s*lX@;d2w1fqf2?+D<9y098Oe2(;5ng(*Euhxa$ zYW^yfJDPW0am%fxM#b1tIA|sBdHlAr@ds|x7R#&mN;C%YqTWzbt<+x)f}5#0_~-~f zr6z=*R`Z@2z|V7o^}Un@pPbaGDgeCU$jBv>IHo?shAI-P?J|HjK8FJh_opqGE!`g<1lEiTH6D7r3TnL;~K%T2}_ZfMZ44{2vL=*$4@Lq7ApmF<4v=$xFMoY?iV z_l2HVvtQ3#JtMRC9jfQ3?_{NlN|ny9?ZYkNQg5w zcJ{vI6Mx+3buGD`);N)N^u@);@Y+Y8^j6w=>*6C!`25Ak^^aftrT*VWKP;TdR zKX94Z55B)p^qq6N^w9+BB?tOs?NOYD50wN721h6^!{@?i>l2Y-`wySxqoQ;n^as?z z!#A_zuU^_k@)CSj3um0ZAV1EbO|c`9Bm=_p+|YvD*dfS-+ym?ZnjAV1Hg0i(Z0I5p z9e}JI6!qM_99EFKH`>y@H|o`e_SVC~y|t0h%DReGgaNu~InSzfIMK9p6i!GC8+5TZ ztPuJ9VfrzkggrNun4J5W3i&Mkqkzx%TQB9lO-L0(LezV`-dnDFHEHXt;C@S@GOhsO zYuLtO=mtF9(H%+L#zEj~YPsX=6%^eK_vR!lmM-dAf zPRlV6>4JP`?g=a~f|bLWuMFUd7NuE`i{?jg#QUgyYvF8+eLYOXb>0t-jAy%S&zpU~ zP*f8yA}Oc!4@B}Iy5fWm`(Y@m^%vQX$xiEo7KUSCRGm{fId(?G>?Zo@_)yO5Eh4EYC}ii2JgUObFyn*P#ptk&wGJ5lZ%XC~TnmoZArt+z0s zB{`+4_>*Oo419Bw7T+NIZk;W=OMAB#$8MQXb$01>w-_VG;l$b-%5?wF*~+x|mYZ(4 zHCB4ltqt5~BQU0DuI4+7cg)?bW#{q2_ZS{Ieq&IJ(bNK@ygc^oo1NA?_^U3*d4d#_ zE5Efx1wW=$+PhV53yeNxYjRuM6ksY_tjfyxau_cSw0>Fx<(alDzAb*!b)`4oaEC7J zRz-sv9jY2t+wZWc(Ob0?ngxz2V(u@n+$_!+lBtU+F9SGe{o+ys|E8H4@B%v$cy6+_ z>{mgxDggm9rG2WBVwyoMig?zjbj3FMS5XBOTu#B^C2G}D!xqi`0*m!ZFNd+`AVl$X zhZKceU2Co)8+7BnX|&F{c+hrBVsdCNANi-MPMsZi|MZyYQ!pw|6i=NN49#_BXyy;S z*vmg$LsR^mEeiHB6FS2nV9bivAu7a3fKua)TdIoDvP#nrrk#T7e+OQ#=3Ieh?JOLN zn%xH1+3U2pCSX_|hMi(7kvXg7d?aRZR$#iJy(Z~#BsBu_{ro^+F6G6DvSth`ha)wM z7ppqGV$%)1?uI%|5>(Xl;di<0mNpXKeJBI>c`#w%zMX;lq+U{-(66fz(VaFJ2q-Rx zJNNyN)WFPK`i@{eLH9v7Q*N}n)0s1ic>hhh*`UmNRpX~@y3oJj%N7l~Tnz>H{QNpl z+C^5Gy%q@T9MR^9*^*ZxE|)A`>b%!&Vg?|8hk2aOSf}Y z9#_oX%f+6_M(H-R{Xoq;_LxMH!=5Jv^fTgobGPK{yMI-+Cw%kDy6sJ4<*Xc5wu+>M-A#iq=K(Rg z&CyRbgx7B!H*a!oPf$Ndlua{i|EyZ2dof@h-IO)~a*|^VL^;J0WvpzX4wtS`(8$bq ztkjqBNEd@C_0wOmJ+*)XDWb_C7laqv%pYlY%LGsjH9y#vN)T=3-=qO5aj$8gl?$Ax z6ha2_gEh`&T2!$%)Y0+|K`Rkg&YTy?%V*W9u(!IUz3}41vBeX-V~;@D|1kAL05`(| zVSYaw153{it)(|zH}fpZ%;1OFv6p3prDFL9@xKhW6h}B;Ou*Y8FdvMWmUr_#Rzt|& zTobe(3*yoY;|n0nI#Lt&H{Dc=P_hP-m0?(-7Jfgi&kd=!OK4)*~Ag+1nf^PkPscaHf66O89tui)NfUr z*#{)8N%^2n`8z$F$lBC*h)qlyK+~idKmb;cNp*7;4vab!C{L*_zU9q1;`gHc{z|L4 z_A3>J3xpHJ=G>*M+Ikv+I^&OdM$}tom|b}GyP6=Rt`SSYQS+VO$t7f2uNoXZahZiU zN_-{P;ed{12C8yO7cNst2m7NZQ1gSkMYKVU?cOVxXb+k>lIh}LX4r$Pw#(OIa#?w; z4qb-h8^29B$O$?wZB%I1X-p!Uc5wc-Gxq?vsM^jRtAo9(Lpm&$VL4Q}<$8BZH7t!)oxYBq(J@YDS839r_=LNxS-$$VjQ*vT-wQ@Gtb z0D-TRTfM@WBVP~$hFd5tm}*{3CIf|aDWELBD0wXPf6JLuOZo}Pt53&(ficUOa}M9p z>K)D;3^Xi2!!zou-&S$Br_?)RK6R5r%AZl4{A$>9YHu+ASd99}g&Q0n>+MH>9^hZZ zO)d4wiwB3BC*-z?Gg{VKn0k#ItY0lUCH%CNWzQGRe&6))2^5{dSAu9{Q;zczk?O=; z6De)r6e|P6?avp6gPfYZS^eMCm>p;K`jL_K6?-pC4jJh`gKbydZ6i|^77mmYej1%N z$A924(be<4^yHrSeCk2dtcY01TECGLx=eL3S@rLN=!wr;iqmD}w%kbK6iai?ORAJ= z`~w?l`#-Q}&E8fFS8)@MmrXOzr^}}DG?qZN?FQ#;;l63l!(K5EX?Q){Tx)EGCB0Fg z9jo2`OS|pa0z&GFf#}6gmsQdOI^&MTIBojp@OrU-WzeQgU3bRH++F4rJf(28W4uN( z?ic1Dz1Y-D`5`y&ZejrC!gizH1~D}CxDsElyLVpAx-Fv1kC zf5zU~TtjBRD7FoA9;e+KKJzwb;ZU#Zldc7A@dh&k)JZahvvCK|Ja)7u9d;wbXfu=j z+GsP8y?C^kSIpI8ax6UB%q!0G+WXEYoYoFn#9TLa;%H4~V@KP5>@}s>dDW=FGq<(8 zQ(4u<_K|m`*adScj+LLtWHpjEVAQZ#oC$nOE}bysR8!wJe*pK4w{E0>QCL|1qGu>} zGaBIV5N=#{jM8_AG=rT5X$|wZLm~K=7Y^#Mh7oCa)d!q8*MUK1f!}a`*p|A2 z_h8;g-A0=U#e;3=K=@3iCMj}Jb)YDA7S8^_7;HkFZfJ*F{fX0ZlpuxdL64cbtnW7J zqTwL>pxe|pNaWArPA|FPWC`CrvC|NK`iVrfW!x_V9%4^Fti{;zCVhWqpE{p-+LYJ+ zPRXDS)41+p^MWDAwo-#-IH~&DD?}{&wHOy;?FzdL>qhZC7{hboTBOK{vq+I=Hbe(_ zP`~XTAbY{}nf0qG*01g!+H-^1HZ6Y-|A#+Pm-mwX1E%T>RZK8fk6j%;>ZT?#(!AAc+o`$tk zIGzH19E4i7e5%D*yz~o(ayNNr!BvZL&Azr3oX3+W8qF6V$LY~?(xO*#`|c$dzO6r( z_REb?v5A6<^hg$!naA*-(On!*H-P+|1;hB&KlVTu@aj|)e7G<-r)T&Sz!J8W5Bxf{ zMjK^A;e{r2Q_pK`;rk6yiJ}Gk`se=w0EwbsnZ%nq3m)S|OvfwuoeA10{9bj9+tY3E zYrn*NEdJN62myr+mb%{XQr>%pFI}H2o!7Vk zxy!8o#1lver{c-7V)J~u%veF33Uqb?B2EQ&589Up%O={FpO#IvFTW~lv@egBHQSdb z%jVmcr^_DUB~dVvD`+%ld^}&Xp1LyD9KKUl%!lbx%a4-7a_DdlrK#!)&+cxf?y+NA zb{-RDWzDSitct(M+{t7}Z67&@!f=TK*WD9Hszq zhjrfT$^66Gdj<~LOWmq=R&C&@w5qO_o!5<>myb=oEyT^sroKPp;G7Sa=Yqk4589|r z#F<|7*1xbdl$X)(^8(ebLDgueWs?*R(A%N=XW@=e$f756F$w;Mz<{@6pw_TN#$QKG zL)e)f-KpO$0ou-dzJ`WwCxkwVSWq4bDw(^8AcH$no0G`F_8_Y1$c5zEAY? zo>P%uCQxnsH0=qI>TeCs_3hMX`fEz?mg=@vkspWjyPG7}cL8u^gEMt?gEOszR5zpu zP@-#J<>#iClsirM=5>6&ZQzV36QC5|>2->JB?EW!>q@B1Z@;Jl-xs`YrCY7fF5Wi3 zOyX-_;q9j7ylvjf&)e(yv9;UCTl!T&QOn<6p(L*hz%l`No42OjEMPmEJNZ74`Hna{ zI6`g5>)_*~5@M%+%GZ9{@rptU!%oHRbjbnxMbujUUL^WmqIa=Vsp;cF8+w3{>1z~9 z0HNfZ2!eLd0|yA+0p@MgPI6HlXUB4i+X3#Te?WzHyq3vTqdrw-oTl}vk&>j}AlW;B zbO8r&r{W4~HJzF(jg8(ypn3!XFqP_!=_ZDJ(>MHG%m>8mB!=oVeOxSP{Mf>riYqfk z^pByOE3@VF%R@O=X3Oap^8uhgDIt0%FRy?gm53W`#gt4Lw!OsQCT0)^Aq5y-r_j~5 z?V`6PVX$efLff5+nw_}aICI}Zd+aP|?XWD_DGxYed4?mFXE*Mg;D{rl9zMZCerEHC>Dy=@+h(Ww|w=2YBW zRt#fC0`QC0%r6&g^LsTX**g{2>xT4-Tgn=1J#ICU`zHrG=0+3Y!q^Sr zHvg5E*Lk_Ei=P{pne5$!zs1)Z223|_H&X+X{x*^7jS%nj10>oz>^#v1w_c+QGai)p~-l$K?f=98@>qe7mGkLbaHO1kkzNvg-y0^ibcopxP`n=M= z%iFaK{hQv=%R3}#+EvW!O`F8$UQ`m*^(OG9p-VKwf^V_abO+yQ7}B(t^g;`#sUV=J z9B1e^yG$Jj*-9`%f!rT6sFYyZ^GewvC=wDH`_n$RMH*15Z^RjTAvnFsu;!O-detOT z2~%$|Cu(em>rMLwf}IcP7x?2wB~z>PO6t-LFie!|Swcmvk9ZyJ@8pO1Y@LDKz1G_l zu2@%#t75oi?*Qk%i_qhCJNFEK?o8HnysjwcembVN4P7{mo0UewLGae|2jUHc8$TpM$QRie;1(WqwqqS3+Z7BjaJ!uB8}%Yd zHnjsf0guyn>VuS1smfGpFje$$+fK4c_$rx^TSla=q#yT_UY&5QI^mOIa4%WWxOsvQ zzfa(4{AYzl(_=zLQ|ye_}>GVX8?Zb ze-B{30l0SG|5}p^48Z3809g^X{nC`_m;Vbi;s?`G3A{`n1Bni~(sl@VH(hLeFKY*F zsI`4;f?0zZGL*3PEy%@oZ^-E-_^o3jGnxloQ2g4_~u@3+fVXp|kMi zL}Pv=F{PLVv>}D?FOCY{*q$mepZFkF;RyCZ@KIvpik*e4f{?;01mLQw*Sv`(XAi#z zm{q&H#$(xuezwbj#H&5GEK;>T;!VWCtjC*j8ncpNBO~71;i`4sruMBWWEkG9#e6#p z*9TuEK`h0r3xWy>id4N;TgAnl6DuQU4?mKkyv7k>Z;!VoQuT7AYE8s*M|zE;ytk?j zc(>PhA9;;v4Ii?=4v5pr!&O_ozqM~yfv1(XzfXZ%Ylv?DP|ZHAocBGvjHqmXpVGIs z|FzJ2GhFpiM8MZkq)U+t{*%_NRa5J#Uh>?@RWFCVHJo&IJ08rRdyNylX;%Yc)W~qv zes4$n4izg*roK!Wo#@AfQpP#bPO1TTmuI{c6HYFvr8RsiO6^_UdhIZ)?5x+SVfC zN0Wer534||d{`CK>KTIap+Z0;4srVYG{cG%%irtk*i*szlkP435+ojs-k@Y~~Jz}+srpj+^_j?a|Kd~M|E0aZsS3ktBvFhc3)%JkI z{N`c)0z_ePz&Zy0bRSET{VNuNNk>B}%V0DFy_@`kQ~~2R)Cd@xekG&r2Nms)664+M zebH)rT-sc{n!n%#7#@@G{i0_S7$&INcgc`s0ML^Rm!`5L0mx-W@6He6lH0pJ;Kg%y zbB9zXPRtJy*h0Whz`N0EU&lAUk8R+W#-CR|%`fqj81*6NG!2E!?+Z~B1ngpZu?X=KbD01T)K=4AXlzi}e1LWHi0sB?F}5sF{D0IBAN{z6+5&gRUNq1L>BUTdK8(ow<^xbl=*9kI^qUi{fGJ!ngi!_br!cCEQ{QuK(c< z4@q6(&A(Z=77qYeZNd<}IDKdqu9e6=IIzFB8*%pFgGUr?dk9@!w4*Fw&*`)0e^4L4 zX%rg0j~`==*<~+1U@vr#2N4P03fK+1*|liBDGqno?1(m0%KBMMVZ;a^V=9?EBm69? z0q0pf2`t(W8v9LL2}EKe>WM;!n2p9MlW}}1K!t|m~VOCw-!3M3vArSeCcJ1 zrz%$q*j`oxW7T%j#*Bd5Q@N^zr75Fwfy29s>>nN@v#HVBDz_Yp0zS787`CAq# z=5KN29Cd)B&QaD32h-N{TvP&y)x49H)TgWw<5f5QA>!8*4usnY57M_p_i=yy%KU(R zvd!~*_SC}a+T1|(DdG6lu<~hz*eBal^Q))jTe;=-<+;|&TaSxD?+?vfl+TwR=cS~t z{*E!li4so`R6i)H*hyoM8E~+EN)^|M%U}_9Zh62GW-o$Q&>r^y`-DJs#vA~g*$N!%gVi%YOUa$q4l=16CCkMe+0Kns z2jb*-(O+F#Ql0xFWK-HK?MxKYD=gQ`6sX&(bAO0XOOHV(HT!{FIx)FA{0xQH1+63g z>S=ufEx_?qymU=q)v*6uVE=e>b>XuDJOAHTU-K%D(W4E}I3_ELV~;FSpg|#awu|O# zkZHOD)uYnzJnBSvUhl7-_0Qm0q0&z)e!IR9g#QVIzwEERCWY|#6vDk5f$6a7OdnWY z1=_G60_U4u?4i2<_)+G+NR5U00c&fpx?ZEdkc&u&28=NG+a-YLwo!HnR7|AAAnx(C z3Hc9smcl#z)wh>`a5a3$RDTIt&#Rp8BJAud1(dgZFazrKzQ|a))gthUaFSN7q{=8s z27h%uzam_gdZ7-){jJo)t^twwpiap5A~7L_Dml{?M7;;u9gU;2yZqHnqhKf{d{dY+ zzfXj3sC_K3Acb1*>&n1DNfo>5V(S(ELzFBa9%Q-snh*_{n;z)y(ULi^1DbGpGMzi3Uq_I;Vf)K9l zco4@DA^L@I!5fkm){$nxULD#ZSyJWt&4NA^p>l3A3pSWmNx2-?iIyX`+{?qRBjEe% zN(bpRQ~Seu>s9#3VZ?8E$o`)y9^$Yl!#?)>Yj#$m4E0vpacFzW{$dL{E^$RYM?bU( zXTUZ^p7s!j;AQe_9TdmqSCcPnU03cC2L=blfJNJ6-zazJxMml&SEv_41mp%uZlG+K z-zrr{fJapc$eSYi43dD)4U{>rVHHoUc)xo5bl5IFLDvafu0@5woyl+g$~254*V<8X z()Kd9yp52xIr@e{Gh1b`HtpNCq7F))hg!#Er+q38oX8XE+?Q+GCCG6bI}*A6=pF;y zSAhYR0n>Q+*hGKym=QTc5~kU=Z7%&<^~0N`&ak!H^g5=O*9N;(AtzU5kG^Ass$)8f zUHDN*%7i-iRFO06-N3~ej}g5^9lv7jumLZHVm`y%Fqx1*B<42OsB&Y~-$Fu*z`(ss zNHD}QEpFe)MetpqE;Fs;;evyN-ZDGit&kfKB+7g=JNH(FtYhJV1QcyjjhIC0H0tRs z3w7?T2p8<36}l1*OA^ge}{8k%;!1%;GjS(bl$-7&g$Z@y%6xC zu2=MSTm&n(=SQ8fs97YPH-YVNd4*WYDM$FBtxm|;cw}eTczDAlVQX5WUs*S_?4igWe5gzS$7NwJp5r%|mc5!- zb88}GJlt_fbhqcojxer*N2{!zyUR>3dALmx6#djicp=MU{P6pr#UH=vI2Q+ux|z>E zswPze?pSaQq!Rf2qimaX351?Skhqj6rG;E0cABnKdZn|Jk!6C;!sj15QVA6#_;f-A zWrrBCS4bnvhE$d+vY0vxpMR9iw61gl2@N`70%h~HqbjoONM-SnrBP?$^N+hz32>oB zb9919*XBjpMs7m(bSN}faVQk^^}T+LI~z-syC zo7HwRc|z9I`9aS{f3%mYTUR4#q*0=47eJwhq&5rByVcXmD3On1dB9#Fga4tn#>1)o zaJdvRZEdJ+jA*Hl0T2)PJc<2+H6k2;QewjK-(m-nMY{Y*(e4(RBm76CKc5SVg!Ey>;tr%j_{Zoh5D_TA+DdMrJ-j8K zC14CU&x}?dEhK7~n(fA_U{+OBfv3o?kQCxPRnbbm%;@oKW4WM{xa_LvxjK$ZZ*S?i zoT{j}s30GAa)lDems=GbqvP_7<)X$RF0U$jzK-MgMo5^rAyrXv;6d4;#&W%(3l6P{ za;773`Nr~QoiD#CDyHYe6)avzxq_;wJcUVk*y1^ahgC(#>hMX68wj6N6%~&lq!%vs z5iYEXiVIl6MT@Hl7ga^a>+tZ!WrT-UMX|n+bYpQbVWTRFl?cNjei)Q7JdX|S40}Fw z3>3-XN*r*B9j*V_V*Z9}4u_4p!=X6tE7aN4?;s;HUJu*h8RtzHdvU(`6N!uV8BJ&K z7D$kzs|EK6#u@M~+;_`o?@u_RQeXVmOA4oCFDJ)^nIxB8fh`ReMr@9bOT&i|3+uQv zoZ$Rd$ED%Lh?VQOG~5_5@v$-pKZemNULXc=lz3Nyf*1OrpaW9)atcdscbvb&+|9Tx z#2k)COXbHp=6r)4q4k`Y5^-^x`EYBon2@%9ljOvAh~az}!7R7DDk}5AjP}D1g}jIi zltYr(bV)2EIWidwQDWgHu@I%0o2$H#<;6M{vP>jnAx!bFOkN1HCm9QAPSUZE<}=Ay zi1VvD7UKN(WGv)~DZ11EdHy&V%b>`FBDP@h4^;aMiC@PITl`%W!+>yYK=Pcl_-Yly zaMbFU!o?vK!(aq-Owr=6s2E6XNZ(Xfk4Q#a7jjhAJa= zMlv=HT}Dja`%-xaPzLqBM@Lkwi?+n8N%~bb@aj1c{h&1W6GJv6sW`PCKkIlx&0pUl zjKGr^i;(WF2O0d{G(FRmL}YE}^|*R0^u=M}x7Bq)RaH3tZ!!r)^g?=R5ek-9w2^7y z+otCKiHD&iw|=n>HI^@y=@G9h){ahVp2LX<*WZnMItvhLj)p67rF3+-@srNj1|v3A z<(1pOeP$(2Gx}gS7fKwWve8;9Bg9-)BV{Z&)#W*EaEO||RfvN_-S*WZD0>yZd(S!R z18n0x`@@y{@eeeFxwS^KyzQ{O?ahiydg`seHl5zAIH;$oxLL7QPt(w5#d9&?oGIMl zKp4O0*P@=0xj&7Xn4Y2dEarY8a9dUPkyqYA(y5d5>C2H+LB%~wyuD5+=%sKH1nWNcZpom zFB)4njC3w?^q*wJexTD`a+mar$JU)h`bnfC34BARyM!<46UWvSl3qwUZi_C_>FyMe z^hsmuibyXa9b!03r@NCu(!V;kZaC?~6SD6QFa!AK*M?YLTs?%K_ zE$QRN*5#6pVpRC`T%GQ6Ye^qJwl0r!t}ym9WomW0%eN){!m)LLKV=B%@bE9_beDrm z`d7x*4JBQV?eZL*{#j$Y{7p>D{=wKTU#rtUYiyVQQm22`*e;Li^v@dG<#ToViN}^H zU#rtkFt+sHp#M5OxmwWwOUBk2^xsJ2lLYPasF|jJm*xrDLJ3R)tVv#0-_*rC*e(Wc z)R3h9f%VUbJ>{k)DSu!kg#O*MB-IbBiAF5yrX?wUV0DC_x@k#jA6O^x?Bb>+DLu7f zLhl#2X-O*AYiFWVqFw!ibVHMQy3lbL8wp8Cl6bo4vCBBp?{d=y50WO@@40D7Qq`hP;tGk@cH2r# zk@7^O{0yY+&hTe6_&y!mMSnhSBcEf%Wq-zl80sDm&I`==7!`?!4x@Fste>o>1rAJC zeRH*z`=a|p)_ZKRD$Gs?r4ELQz3Sys)EObv+95ycYFPRk)xJ)leC&C=Df5Qu|-1JzQ{r z1eByI|Hg2E!-YfSovsjGY3d8G9NkiH?Fyj|3Keuwrdx8-kUZ^bs=82T4n+CVzEOvy zvX;p=s*t@>RvvBvl$|M!QiYNs%3Qh7>FpISCvUmV#p8i;cV9F^i7B=c;kh{MZjJ7g zotd#ptvFRf_>lCfIuBnW)>qYGLjN&$la$k!RZ6I@s>>k`rN(-ZnpP>1zN!w}){pay zm|O-VP6Ya@x;)}gU}$$~N}R8%!#T#sn0?))^NBEDRX3El{Kzeo6EVJu=Srd<7esC# zEJA!$T>;@?k*f%c2wzndtk!yF`HDIO*}s0 z2y9QE>Dizx+$f{I47eC0aoCvO3kt16&9glM`;`b{dWkrtOlywXtEnKtPh$<(71Mnz^>Ed71 zr5$j}-P1p)!bvJ34woR0fwIKExbh9y;JF&P4XXF|a-Rt;mN->V5;IXkR| zwN|Daob?bPC_`la4*utsFeaG$DP~6BfJVevc0R|@b6DNQ7I^_G2Z_5D1K4Y^(YzkR z)ax-|?On(J*x_SOtZsT>acnHw$?-=o1sCn$L#*`0zIf5DTt2Acjtz&`8b(a1X~0?~ zPWJq`q7vKPWpn_l3zYC$>K!El8>Z0v0YhMv=I6K|EfjlG1(RGT5x9WoTHv|1H)#(F zkSdol_jDlyS~jHAwQx6<%XjQX|Ak67gw1D|OaFVA`&_4kM--kqHeA9T)XDIgjRhM* zV!YX+Qo^TtNb-`DolIH;GYFrWP4rlzF#^>k7R`|89HKdUot&GBo+#0|M2{mnFBLsn zqVtFzucDZeL(H0;i-sGkW}Z4^?94)xQ`-u*pz&rqu+9fN5dWbNjv9VOfyyw2~=kR2{W#?9ur9bs#080Q1cwC(J< zmXzc?z<2Az0{5Wxxn-Z?OI+G-16=Dx912P4b^@Zdj6KMQ8AYkeFMb8)xWUJCa5_Is zhI0jgxp*phS`{>wsU?SYC7X9!=*SUq_buD>Vj|odTFOzuodywR9Le}uKCl6KH|Tv! zPs;dgUQ1-(?h_9ql1o&(@@qX>em}n`c6(2k{wPh@p?c3J;yy(>snVuO#_^x6 z&-JIz>MQr@Q@CJ12q-DI!zsAGCi7pA%lub3Ze?^jy(DIQ}#P+lw){$j}bEABtU-958xr8~=< z%8{fUg%IFHLdhX(pEFwGo>sIB1AU2DEM!a!YL-ot!+mjyI*cmKcv4odiDsEC8uf{m zDDl}&aO9Z;+3c{a@8^~s76c+~65!k-Rz4F5kTh@^Kx|!cGS8f3NM#ZSj%3P?)Jb$% zGSk9jNM(xXOgWLWiT-*OEwk3|XL+X~E-yC&zcd(=Y=}IFxJted@maPa=nCW0l^SvJ zB}f&yLriNEzeQjBSlWK0k9rVQUJmC1{vAajVg(FhV!5gho-Il+5aPg0Wr(#kdT4g^ z;Dv1~RdO5Uw7cJ(MpRJAdOZX$3T8G|eB|^;4@lNo0262nR_xy`rj5VX)tSg7oBTXz6wJd)v)G5pn{(`U%m~xmkK8=I?FKDLLvQDUW&|)!gUMga1Ly&C>#hO*Irj1OT zm6U*{@8?JUv0(i%C|YCDL_3Y-gNh~bB%QVCUg6ZGLcyf((Dk$swS~eG_4i__#Av;N z=_Q6UGB3>dN=>q)=cyt_tGH>FbQ#w4DwE~UB|Sa z1*;Tyi*k|-H#TB&WQ$<8jwJcV5^@?fYL4(7%vkp6@Woaw1O^lM&{!s0XP)JW%rN7Z zt9iqnI^hdEU02C^(k9GTBuWk$?%d0_5`EOUAKC@n0T0ZO93fzTTOnFj-hrrD-}IVU z^PW)BhfvZuUy736x`OKCE2<@XijrPbk&6lie+L~ew?I>Dn|uGl@}jE4E$ifG5Je@| zCoPm6lb1aYVloO97AY!JOJG3Qo=}k_%l%d8Y7f?%ydbAMC_4YDuAIo{CHk5So)|7)NS?*>E)rX^D1aV88FD_#J^f@@*C7 zH}QyoxMzSR`Xu&3Vv{UUjc8H{aDkBViH01e=z|?GKtBkv$ zX;s~)*kaCdH{)cL@rh){Pw~Z^JKc=6D&r5689&7wbK2aD0hRGv$&4uunPZV5okIrA znnOl(qRtq|OJkF#$jHJbeTmPLs`M}LF`wdN_zP4bwiXf-A(esIljvq1GZ=h*AN;ub zO6@-dVFx*Cn%yFF4N;zMtLe)Z@?NOWnMaK-?MKC7$^ifDRz;YrT24bUQ7^A(Ib4U* z#Lao_CvI=lKzky$Nt3l1O}g;@Puokr=c>dx>Ezc_oxC8`=vcO-SYID?KCdtrnX0C2 zcXS=yk`*AW>uf3&-#HN+a{peHRQ*;tvuvK+I_kWQl{m=!jl8{uj#bS|q7A(@`Z3YD ziYXs;K2|x6)?0*^3!gsfSSpu0oT3H$2lAP$N#b~=O#R~AieE17V?(JwR+KmBkCo+f z^v46`3-!mtYVQYA$?N+-$y}jx5q_p$M9cv`uDpmp*G}dB@D~2xK;ZhTxIc_svtatU z?u}w~wfL{F_`k?9G>6!2ba$nKhP*ve4Ta=7`nTVdfK->f1g-BRze;lsvFKRjTD!iv zyqgFFuvfT%o4UD7)ufUldYW(daNC#5$;JX|n@{=qBrH%@irIRg(cz*pV9!xEmN&R+ zCV0;L4N{KFx!iE(mb&uEflf*^O*i2&gQ!=~-e}hj2h@dSabnWjA*GPl&`haP#!W{6 z20aj$iP!3D&BXVlvaYAf_sNRJh(7|&wQnlvRVsg9+-clQ?G!=66a|*5h9+=Ffr3dD z;eIjf`}&V0ukuPESKvh}cJqg&lK*egn7RgyLjbuW&w`_>(f5y^hX_!Z7?mvZ;@`oS zT(97^4eMAdfnRi5av@tTir?IGvfN?j7+T$qerc#qy7~RniQbk&wD|rI>4N)--M@vVebjPXMB|3le4x)eE>f_sPo7z6 z6)*Zho7XYz;3#ohE$d{^z9u(l&&tP!`Lcs>OZ)ahY~qU%bxJL61~irU?Q6IyIjTHp zaT8=_c`hc$`5aIb;=8k$ms?8$M2zaC7w&%2dY{W7)(g0`Q1=l!xF;YN7GLytzHn0K zh9Um5j|992B&u`$P`>KyNKw|5oN=hsJ97gbm2%`|9;yv`j|Z*Si3wWkgJ*B|a0|PO zI*K|sWe2>6h@^sH>Wi!|2hUzlfq>^wAU+PQW|oKw zaYLf`1MWjKf2c_E2i%Zo{(u`2%^z?>qWMFG<`1Y|gvSh$ebN}b`+i@*__M#lANQfd z=LSh<{oIbpZ8LMuofkd&l{+q&7wx;`2WR?MUjk<}jX!tb@f$mlcsS==T>N)9Q!f=E zVyAPCoQghCTS4}(NcIV2m#iI9W+40L$R4n#mGdIBT=Fnh9pn-qw;;L2!7asN?mrNV zi9ZjnBAVdUBY8a4L1b7Ra*-DsWwE@MBd<;FCpQGR?|@OiN{}B;n?yub5gj^W3x>Ae zgx%v|D{&Ktn7qfiF;Wf9=dInZMAmM98F1s%)X($j#t4rjttQFr_TMN8m{k_DqUiM! z{c7fVh1^LlZwF6b7_nu1DovpXC-(FkQ5v?|^6AGRd(*drR>#!%#37>i%Zk>Pd78f5 zUAqv;5dmvGg3qmzdbw0K@?n`0y2bl2VpO=iJV zI-vG3m|>R@1h=*4^8ZErKb8Nl0&tE&cx?;Z;M~sB(fhO1dQHM0(0d5wQisxth(6!t z7a8Lt?-McNA^ZCaTl`9#nNCE1jU@da zLw}zW%gz7q=th(Vc$GjGj_B@>qa9_+ zEv3ST8U4O5D>9BBGb?hwX-}V^s$nUJoN8V?tZ9TjIsg1|tf$ewv#?9#Y~VBXjcUyf6tzPb?HQZ&C$h; zf%7g6*mVKUBnWa()R^)*-q5qf<`bt~JDizySy`2@8?hBqj#&Frn%c{2J*mV=F zI|5dnPaPAoc*@(dYJK5yuH@sGj;w~x+Fi#&!^9hu-K7_RRQG)Jc~j3DJigq}-{3Q? zIuoB`_|7z1#mTY4SMNQ%hf*i~voH5~cGPSz0^L?!03Wqmjpbs{?%8Es?$fKeQpeLQ zhb$G2*dI$x4+4c?KVakSt9x>VKm{XB{-RG);VSuM!EXAd`6RXWXEjUoK&0h^Wyx7p$Z7{V^VpR-H_k1SCP`O zvzENs?VG5Y?DqNOHzD@RY0@5YhJU7B5i6{o5V!y8nMT%n!Ie5Ev%f!~^_8W!TCZ`3 z_joRE4@B4JML()C!aL%%y!bM7aW3x}-)P!bm_o~^UHpv+k&{E*u4?f2<3-u*o?=R~ z){(hLJOZQz=+wWuC_2@{6J0#T(HJH&`nW6an z>|=x!UG{I0dwY^c32)r%3MeJAX>oDPr@GheQ!zG;8DdBFvq7~Ef`?&mmBgCNT!v73Bw!e3^ z{~1u&-}{*V8AT|+;ntj7l|%2Cl{i2Y`~b5XU|4KMm%?-w@I#m8n|1@-K+4ESoors5 z-Bgsubrugr_!hX>s6laumQINtE&jpSfPGnGUA%AvI4oOIt|no?n%XG4xt`qtw6>1N ze>S&+Hu!sXhdq-U7!TEkRHotPD}(;iU-!z;M@RQ9HSIG)XMzViNA%zGy&W9hZ=iD_ z%vc@+1w>91^4!N{3)@%n@D)c-uM-eEJiCTu<_2!W*AW%67fi5&`I9bT-Zm9>2lIV= ztd>7PdqG*)ZfdZvX|yBd4C#&KRW1Ymym4ncWpS38_&YyybC>ZJr8wVB(&Jf6s(FAu z_N^iad#CuuZw9<9iE1E<*L~$}zvz1&FvQ~zAv7;rLeR(ydMwM_KtWL!;4(T3g%OhtqP3F-E+u>P%{~sV zLOt)LA2U)*m=8c1Fxt2Cjs5c?boVf=-lfl9A zF(=xa!vU^zZ3z9IPs*CN$Y2E*nyWds&4N!$XesqhpR+nnq_jr&^F#z5NXwHIQmw z;BxCyZLCl=EMJs#1IvW+{tIaL+Hd5>QZY3&rUiC^J~uFZ#f zARW9Kus)z8fPBoY4sX72@@d2p^eozk8KVLEWISVg1x3MpKV5OLqWb7#TvG!oBRN)@ zdjuUNq+6))OZa}mpFNH=%>z6yL%78zk0gLSlsmBpius7=E!rbfb4nF$Pp9qP>jHN0 zIvL^CQ(#HNhKUWfzH7uj;BgODhAKNa2PZ$3duz5B%bysYl{GnDQekbW+)xwr8PPjH zdcgjbtdBvl`TQPXTIn0yO2EFZyh;cH?I23EBiJn!3O%&`fT?^`<{XdGHG zOq#9_2a9tf1p;>K6^sv)%e$?0qg|hG+>7(cAvv=eG zwbO3Tx=yqVe?kXs2WMNY2S6>uGL;tX`rGhl&A+fcYaz0s|HxLjb>Qp+p?K~xd50Vg z3d-jv=3utg1!MKqtX=dqp`RP_2h&d@;S8~$1F)vO0N$qq3f=ucw#)r9F&2sC+DsHk` z?15z>u+U)SN70XrCF2BZOwp9=GbW)OzuTS}$IX9yJ#4wl)hr8L>xY zZay)qEX+|->_GxdhwZNp#=$;Bf+RmMXTezt*0#M|$ z7)A@jk_cHS@i{{SHE%8&FRiSkmBHiFObl}X(>qMg9GPxtgw~cLSC}Y2r2p4I&Z5Qc6}~BPPd$0sC8}iYtyFAk2KcT9!v9cIAQ} zH^1~`gM>dr4iVQGkkv*=#tv45AdZ+wlu*@r>@U(-dE!1ueO`OO1>24{1C6yaSkq}N zuK;(viMwRBw04zl&0V@uQV%XW9{W2zLx~);4n-3=b;c99wc;ezQizacYF?eSGAR8I zu$PN&f(5W@L74L1?!!=L?;7}*^uN{17(&+~yCni>lv4N+JSchWugC=qU%EWjLDXmA z!L)<$fsROS7>@{tgQsUlhN%hH`d#`)OJAWSBogl{y~EUem1(Tn`R=FN5eF$JY=?QA zY-a?TZJbgTixnl}pVd%e&ni8#0h|?Sl{9Gxskat6kD?u4o+fzO0a|AKY}Y@HO*Ey2v`ft1Qr(szeSE!759D~ z`~xM=W6E2W$-cnnd`O=PPc;BxZE1cRntFs7d)Dk4d|18|FzVh`w0akj^sOq$tpPR` zbHcVCnY|-&MZgY~*&!S|ahT<=+#0CaxVW}9o{OZz&atL*QITh>wdp)&k62Zj)8d6l zR^nVncovSpC7aLr&+#-FRH$hPBdPh?h3C56xB_koJi^~R+XIzvShHpeDLo3$r%ZQn zw%dh^=)&Q3`9`aZV>&Od&>52XE+$`Ms9FGgQUl)O(bGd0ihYQ=RtEj~i25x2%ehKZ zDe|4a8P^1{MS|XV-k-J)o`WYt>Wp-Nmea+$0MqZIBHb=)L1w!fh&o}rMY66S&((|9 z%0toK;Rtnk-1r$5edDa??z6-VPD_`Fzce-+{^UnFXWbi<7FvbD2Q0+}qJ5uVQrL2g z?J9C|Gcyy&S7bomi1d_N!CB9(Z^^nOqLz{d-=-8xi9h--ZxXKM+GnlwQzY@kOqwT-f$a5Gp;{uAhCe>02}`?nerr9c(M) zW^R`!7~9yiUNMa-HG9t$P?Yh8B2F{V22nfL0+LKxaV$w#po5MmV8YnH{6r!-yZOxDj?GUKDLRuA&_hZ-YX-oE zRCO?_E>_X?LZMq@tUco?ez*%6?P3-tJ*G-TV@O&04tJFqu~Nu)V4EX&Wi&<1O~jOM zL-uh%H`~an z1Q=2izT~gz;K6h#oi|$YP0vph#*_FeFTbd^|+dqX8x%_>bi4sVfd4e<0QN|^@m7amMMUvPJr zNJchaz8$_#FrK_Gxd*9at8#kixmQH#%ATIxM?~Pt3CdVO!il5Y^`YKMT!~NiNSs=Y zS&3K7Qj&;8*ObgMgGtnKyV}+nF$+%{^P|w2D~CoZrzim|I;(Cbe!P?vpvJ z)~P^cM<6FS(Zyauv{wFjVU~hXvY!dTp zb}e2Yz2Ap2UY3AHQ7|+FWPgK`So5fjQJ`|IJGQ{(3C>CU zh$dK#xTXa^NsK~Xm$k_&D0>pZqOGJ{@EcjfKHW}o-_eyFDGIe5Kg(vQV;3NiC)fR< zC_Eue-Zn+!aFZ;SYer1YKRZ@D85elGAbmi*it*e!KCt>p^l)Im!94PY{H@%A`a-l> z*gDFT5FeNr6{5Ir6(4j;&tb@W+^vTJoaHCi4o-;n=29<<5@I*omewBG9n|v_JDuDi zaK-Z;+%lL1_o(Rvo*9SrNyQLjAvm(mY#rBHYVq|={x z3vfZo<`>h&h4kEA8Bb%NHLKzQ&Z75^#{AnYS>GzNJJ+RKqeNT?s_Y948=HQ-< zTG`uoh&UhZJ9){pH7Ke8z7yzvx|1))KAwxS6J8K3vWejC=yWwdc3L51vo<#C@8S>8MTjf>r#@xUmdtA`CkkEWp0H^bVz&~q*BGLe;EwmeuzUOhi;2T zSZQ*D(0k%aD4fyG_SgJvu~Pi~UWBp%KJXC1e>l#SYvCYJy{Y8pyB;h8Ij6P*B-+zMx5)ZEE zcMUXBPa{YT(dB794(|cuyORhlD>6h1M9ppN_Ig5yT`;7sKU7yN1Tdp zC2HXu>GZRW7V3n0&W2ZHXjBDYkpNr`cp?JOsmXx?X-SIvmHOKQ# z**tjC-NFzO{YXaiT%w&D5IYACN~&wJo1cbQHqfW@k%weGyHnm2K?$;~f?svcru31D z%zJis2i0~PkG{cC&Mpp@{Vi{2F%YSG;PG?x@itf!x!e0nV%Xb49EvF_&y=dJ?%-`K zoG9$neh!>1)EYdE7!Q(H35M^%+Z2wR{UBDgAq;XHJfA+7ZyJn>1&&JtiX?>wZc4@^ z>6=wR;;$qg@FoGC(yS!@^cE|yI=!uMUV4q%Wz9fA*>sT{(ueKIrfdX;hmjXJo0Y>< zd&UGgS{-z*x?7zF`)6}{DeL~zV6?y2Ny%f$^KH}W;WnUiBkkx$W|{U)SOV1fhC&p<)*go@X{m_;^`Ni52$E(gW zf0N1aBrO!!P|S_9^j-j43tMuGbo zq`j=l?Y&jWbD|g^{eWSy5|y3NqdC?FZPi=iz2^;#e^B5?SA#INX8>@3tvR;nyx7Lbmyli+ z#JR(hAU~f1S!KI}s;j8p1*V=X$4T%=WO2L)je$4sc#~mkI;YVXUu~TJgmUh6EPLc!kL^TEc zYt&r1*S|(6v^VZwBQkYwt9K)B51h=W(|#5XP6wIK_{63pg8j+&F|`Qm`4Uw2T~ddf zGmRAcu40}A2*g{S@1PY-ycQ1|u-EZ&{3oZjP5Usl@OGe}Tq$!YOHC8855m4BW%I?o z4DfFCIKSR0wR5T}7t3UFOyW0ee@Ai0bnBHFzNGoeXmZq}(@>5NWj%cqYT%~#)w&E zd|zEcCxs(dmbSybTHkh6bA!K{0aG`9S zDzV%NlrIeBs0{%=Lqe8zcLD|?qonsCdzPu~&cu8LZu1QWnC{n$OzQ0jTi=?X))uVW zT(cb?bfZ>OsXZRc)llP605EG8ioYDDosF}`TFtkh*Z`>{@ZaFH)u#xjyj*1aP)2jjdE+Of_c~fVHJxTj0 zx8f8&?8|1OCK=!lCtQyeJPeS6=L8r}<1ePYOo%gSvRH|KuDei-SxeaZ~1+{-A z%D(t1*>AYxFfV#h7WSLbz3f#zO}t|e5dg*ORDO4s?#8LzzFhSsn~82kn}{v;_>G5w z%GPFQ=6RwU#K`$&%B(%Q@JHnI6@lb^6{vqcQFy<5g$BMi9QO=5>Wg4fd3eO#8w>&33;rnfum}@F2xHEnFCU-U;2Bz3EalPh^6M(&7ZI7GnTyy43&LCmvf}Ve2`jLi~Kig3Wq5H>!W}r zvTvX=(eow(SkF5FE79XvomO9xUMhE>>Oe%jms`$f_}Xq38-c0WO^zRbYXPgTXSW~B z-Y~$=wmL*K9p(R7wBSc%ofmynPm!jxwe>+vc}iyjlyT^1JW+DFnqfdzayf905xq(w zo8F~ocVVm$XgVLgomvP~zvB)4fwQ|jTYCRZ%j+ol{7=oHmkBY;p4ZN4UeJ1pyM52F zQ4(Fb5$L6p?DtgvFr33nM2J^XIsT6Ynkg8l>}=h5$AtpKLV1Vt(s*uN?`g^YbA=3d zc^%n-O6*YY;2EcN9?!-p@$l%ZV9n+w*sp^H@aBOS!0*JCej$m)CpF(z{(~%|^=(AB zB%!IuJBZv$q_ozEp8#VOJ;v)49Sv0;U^Dl_5d1LEc6Qs9f@yzt;y5G)icjVSY%3D< z`YfNXjrm|TWXq^F3MHYsj7k7`JVyjm`5t2-=_Z~WBi%^QN3qh*yHdS`j|idPr{zRhdsOb{C>ab*>8F{h&XO~*a(gqOLiO- z9x!1J`DPAxGEL7e>cJDw%<^K1C^kJkWI7)5ykdHG)O&V?11H5u>q{X_c*ox%w~9T~M?q%K!nlfyE>5DCgSxOr#5Y5W~E_>tH`9 zuk23Cd*mJQ8H!{pML7~PZjYZ|!s2n{(UwX5@JGY)EzC|fkM)y3Zfp5YTp;I2fyZ#V= z6tR(V{RjL}XX& z2)5;@ni9s84Q9(;Md6e7^kb`QOzBEeZo5mlz$cW;R$yQ~|NljQ2bQ~b*1PL>r>%Dx z>rsU)M$L>l&fL_Jv!CUj%ee7L)s$kuS&_bM+^OGNd0OQ}AGnoFGWDCY_>E7>-_1|d zk+W&uOA4&dSLZbw#t!F#GzYOf@8sm$B|kE~Ot-GFbw}k^M(5sqJNHi0E8J=9<;T0HM%a&?Za<20VS61v6CFh-fJvt=SjA68x9Mv3lPRs>U} zl`4*Id0z(u9-JT8`T^9W7#*+9eQOK(xXl>Jb6x8vsr z7p5Uuo8^+ZwQ207RIoQy0WN$UPZK(EjZHr)D8y&c8o=*md9=orBM>7N$`)X0(AzIQ zF5@FtK1+>o+k7?e2k6_hbIY~P#k41wHm^}dJ789gPS|cZ5ccj5+Y9@`-nUIFSDaFJ zhrJ)wdzt*71ne=(h*)3GE2MTg=IK0rI&m4?t1Dm^%J2GsJ!;v!_Q~NsYNX&oUl6;V#a>*)~_*MzO@=@ErQxJ6!s^YSv}GC#%&O?R8o z8_VYrQQHS{Gv(fr176wgG z2-MFb$M9229M8BV-lzIBX6ddM8`9Pb(Utn20%6T?3{e=}@Mo9-T;Tj=#P;T64iwtj z7n#YW0#D?S)wf2nV*6;%Zbc=&gNA#{WM9vr16wOjsX2t*y4T-wuq?XzU5>*2MzFKB zC$c-he$4M(>u=rJ^pdW#=}~Wos;&1d;Nr!>tqE~m!HaQH{(vsOk@6e-RPcI$qjc|v zVC#;im%ImLQX=v*9-j?=7nT3-5C7#eRx9MAQMgHcJ*Ck`M|kOAn?l{WqE z>aVZ;%=V*C{=d>b?|0HrR`WnVHVYkW@<-pK9|?cUAx#LcKnRe=Ia~WTy6~8r;F{h9Di|%uRcC5$M%Rt?9SeE4tEweU46LIXS6N@P@plM_O4( z!&VKqHe)@t!Fb|QT=!#=+-COI*SxZhmN8dCe zJRbj1&35&yRkgKMq}*s17wdrOfVJ~kS;8uh^}KBzJhJudP7lI2Jgmo2{`!Wfy+gRX z6n35uSe${#gT-G<0%dSLr?WV6Q9^t~t9i>6dOE$+c;Xw`X+1enDgB00^i5xccP}U1 z^@{Ld>4jo@!+9-$Mk%}&?a7jMGveGbm=dQFYBYq_iJXCk6Tpi$9cY-PGCdS zdODR_FG8+W=TQR6Yk~xP@xrf~)Kx+LeB;ha@O<|KY zeNFpBaBEbLpb9u)v>XjJRAofJ#1H^oRVB4~H%f7lV=7Qz8veFXh-#fwz}Z;SyX-0_ zNI_|b!@*9oa%Um|A+)Omt5cN)vM)-f4|E`Skne}CcGxIOYD1S>v_~wl84H@BYW`wWG2w#>Fo|+M!oDse# zBRn=Ed~QbgoQ&`p8R3&N!oxDc*%{$uyaSsYU7^!M8R5Md;WskEyE4MtGQyiO!d)5R z|1Nz^M*cr!gdfQW{~{y&(~R)l8R5G!!pkzkw`7EG&IsR-5&mXI_^OQXWf|eA8R5wp z;fpfDV>80%W`xhl2%nJ=J~<;iEF+wq5k58{gFXg@#a|C^lFUL>=pWh5yORT?q`orP zN&Ejae7QJ_!36XL%xKic+Ib`wZYEwtMu-wbc5qo&vJ{&Z?^eghuV6{UMm<eV$|J`BqG|oHStX4Bp5(TsaVA}~NPW)0STuMsN}97HEQqeBaH z=m{MXD?8GDuS3;3^gA6IsYAcgp(E0Cbkc)5v{Q%vMTeduBu*4(5Hv=}XHld2G;xT! zVB~D|-M|6$f-~o+@5U9h!=&= zkyamTR^W_ZtcIuEC67{_mK<-D)?h*`{UFV>Oz5Ufn;<-9~LPLgm7;jo<-Lf*DVPUEj> z7lrvrNZ*q7Hk?^Tk7Y-eESV)IlDCuM?LhAXMmp6*D>{P`7}bTXyez)D^Nv?!D_ajM zZ#Q2KCfv|!AE?ONK{)v|%eo1A{1rh&kL5J&TcZ>ioSG#})qIS;;9xh2!UYX-HWebEvV`$$?aq=lVTD-m(Eq08>`~=tnZ@djuktb^E98?_KWi zE$;6P?(bFZ?^O5qBKP+V_jjB7+vWcL!TtS(`+K+hyUhK)+5P>d`+J%DJK6mm>;9hO z{+_IU{a37Bx&WJ%%aewZ&Q)Br;$J3KXFU6R_Sx&=f;+Ubr zw68i-v(1SsnbeAY&G@6`RYM`Z`1mR3Wo12?FSFj--<|gi$4zoO0NY7pL|%`P4U^s9 z!RKlc{L$kchAvR>`&q4wFj_U{hV{?ks)Yw)Tvo{-W^hB{QNI2Czr1JX*GMK>dUBFjLxbc zam`2=?JcbkL`>0z^KT>j8J$QaSh`TvLtdr@xn3X_MNB*2xlLsQcQy}J_W|+;Vu|ZcnXXVIRQiH(m7)QjQ>*g00y%WFs2NE@gWTf zB~8*`j1(|DDKJjcU@WA#SQiQ_2!ldl0n&&2N9e*?y6~T9)>-%YWFK~&qWVznwk?c8 z3Jc$WrstDc>iFP&F*Cw1p~!ggqAR41=2RW`QAgMwys2@+_*(lv_5)>C{Nl}EJCdSd3e7liMSk5F_m_mY`Iyye7fX`7u~Xq8b_ueK2IRF^I~qvr;{bi zDJcW=IbCX$lzM$svY#J90+hPcEv0VpOM7LiJx{dn6l3`wExbL_LdjpHNOYq6r|#%HH|xG)FC00vj8(I;Zp$GrKHlAWg>OLYc^p+A_II5sfmeH z;#S=I3Yo5vOz|1qy{pATLcSBnVq7wRDAH%V=nD+6^W^7}Sb9+yqMcWv3xz4f<%oQz z(Jj=W3vK-Yg<`2fKh=faM_3ETA1+@Af0FsL8;HeLSbjV5h=Yq!*9vmWBYYCgQ-{F% zn{$xLB!|=S$?^Wg)zXNa_pqui>IfCbM}BvqbUEMo9)#7}amT5)O32G<&dQo3F7Axw z&(xeq%v$g(lFH$wGhW-IzgsyQMH4brWeC=Ib4D2i=RDb z)M)EDBlBI{}t_!@( zZ6*d|43KS}p&|RFB91$TMQQpRJ9R!1oz{r!q5jAfA?uT*%;@cRKH-M7NW?>t7|r-n>=m(1OE`y# zCU%nusS)Jid?l}X78$K!{h198{CrYvF4Z>uRt|EOCN7oM?Yy6qs{!H$Y`$Yd-a`D< zx(6RDrUyqxCVNn%doWKIxJ(LMmZJ26dyc8hwce(T1Ry#fMSJrA8 z{=6G~xr%N`JgcLJ5{;mzo_X(pjkpNd;~d9MIJpr12XeE2eNgb=^QasmBe1((>TFMC zQ-}&hp94{QoGs4reyg^W#q*1NVWJf4Xe!|fKt090x2KJY9>oOu8NRWFmRWQ^D-V7eiIA&xt!L^TPwY(= zTIaQQWW&-liekE$2ozs0dt}f@ zUJ?O=V66hfE@cl}7LJ=AhvPijW9QvL#WHM{GauyQ#*faF2IEDiQpnkZP^zw5I!E%= zXf{ah_>4kk;xH-IoTo|2Ij9P)UPPfsQ-!*uP<+M^au?9lDQ;6ga|`{ELcM<_gPiQ; z_r6M&17}P9i0|x72lhf&0h{cF5c{$cw@XuY-g>tYJI}jTs%4VsYdCl|XCvU4C_{{O6^7NR^MQ zOFX3G1@!T5olSzJM<}niKF*nL{4)}Nck|O)(I6Xp(Kr~bmw-BAl^Vim%|)7%5Ez1F zjY5v&ja3h;eT}i|QMJ#(ZR4VE6K_ANR2-a)%f?0A&XoD_PeaAK3A3463aeY=<6E9M z8v>eA&BU$-r>SOIN9O1dKMcl7wHa$ddC3#Uwt&!VK-? z(KT6RlFDTavHxzAuLe;InBoRug0Ka2n)KNDviMM-f2;WA#bicvqN=ycDS-=0AK_M@ z`NyEySfzJ}0eAwtIUsx76<+iHU2xSban?cFYLu*x5R`V=4apXfPqA1PWb^6cvrT_a z;B%$^tm3m>e^&6hLVuPyZGRW&4yapM-i`eui_4fdYU33d(LeHJLX(~#uMu0N@LJRc zIL-_a8RA6`ybHy>19hs+#s|!dl!0l{{p3R%P{1Mzws%RX@6v74K7SsixPRPqb>cgW zjqybAvUyf;ma!^0vn_Zqhv(!?S* z5?B?k&l`=)dK8Lhp7A%HFn^9*(uP)$JgTZ#BV0#lu}rC1zzGz80jq+n_z%CCHp5os zF#V0z4z}R24p@8VT()}FTBEg=zA{tjV>mwY{p%#KR%Tf21+oTXZ!tg4W7061`t8-ph0K>1jefjnIb#Ua76P`v8a#{HCjc5 zl=upNDDvv}bdgJSkuOptKXE2S7{Zw{Vlx;f_?mRq+4z64_ttSyJ>UQMr9(kM#MX<7 zf^=9&h=71n5*8>f>;j9+F77TNc6WD+9WOhu#V$<50I>sX#V&r&xv``#-tX`C`}ltU z_W zhAOP6#VV>}660)WEhdv5h8THwp@I3g-2HEiZr`*Tz zZ@}<-Pt)3ph-vjR@r`NU67!vDpC#G{nF+CnKpq4TKZ--Lr^5sA7=ZtPJ`nq#e_B5z<()#S$^Q8O32eAeW~yJ^q5%(3 z%VIXvuqYTIT#929f*;5%Cz+|P0Qj6v%1&`CibCFToy2v1pxTfc|D2{t?z;NzAdVd?dI4hEV}dS(~t zWEX2^ztqYu(u9F=Hq2&W`H5F^GcSk@B$p>)6chkzBW(m@w`b|y0xxzVoSPY`QMzUI zZ^FCe$W7W!ns_fRKrm2uNNXdJ2XAwmVepZJ0udr6^`uZ>g8Xdo#i1-(iG5;GQXz-9 z*64XrG#hGIWJ>UGO0D?#A7a5qZrEU=WupvG?8Ia+dsF7wO$yQ~Dh8HSSg5mqK7$^z zN)U7~*FtaLr53m%sX_q3h6(|mqaUjSPmNI&K@5oYb}__9a4NEfl1c-oJOcYKx{k>M z?2i8fnqhi4pY(7r>z) zovA|=b$Ey@kCGU~OlSqfjCOOp4Nv(nU`h$fF+e$Z*Ho!CvSkSWloowf;A=MSQZgs& zvzcY|ZfX7PjmXM`hXHsf9!jEdPKTZm7H0-L5%KIXx&($%xA--LPo^WQNV{Vo4Hpka zyH%pa_#31pAa-;Zr2m$D@5c}PvXVtHr+@p1@hCC}FiVMDNTX&Ltb4A8%&g1iFC#ehpSc#Il(MOp_OA`J*^oeDI!P-sKk9`*Wse z2HHddb^*SN%#o2Hz`r9X)fA`i+%>#4lUk|=%N7_ zE4CjBD7X0DqW{GuWStrRw9a@>f)qxWIv@f<#uG6CYs3Sz9n)yx0ODa)R7Wfba7rGg z>?~x&ns8?j%Gu5C>~|tNyNvvUr{XM>jxnK&`?8IR8bVRWP!Y~g$#kmCPN#S|B7R_1 zEPj9aJ8sG>#rh{aSI-wmO&T3Znbxqby8 zNt28HATQybzbAwu)b$ecW16Ywlxsy4DxB7#*yA_m7=u8MSc1Tw4Do2Ktc1B4S~QY@ zQm-fmdp886I2$!Y7AHY>P&7nZ;@ z2N%FkgEah!dU$q8_+2|PI0G~=3gjp65HSTJKv8WJ!6LaOia@MFg4i$El(Dh35nB|G zCNj#^`j;?MFpnD+g`*p6j+fvifU|;>P;^WMcax3%Oq#h#6?=@tPGk4G?T7?|{q9s% z>S`9oh%im1Dt0Ox>qKG)s$!LhWwqW09nq#DZ&gbFvXn;zrkyIKD_fG7J#nvD(i{F1^}BMDDI3{UDc4h`GAYi5lSZYDh1x zq5O9>q<^U)T~o>8=Wp#d;nJ(?8;NUH1AN;W;GJqn?@~kg-D`mFUjw|jhV-Fa`rqcy z^cvDv*HHeR8q&|!Q2xCd;6K!mUMuC_$Dghty;BY8eQQXU*N{HFhV)G}q@U)}|2BU2 zYJmSxL%LS#zvHi24e9M`NbgZYy0C`y^cvFV*O0!mhV+Xyq~EI{{Y?$&UusC#N&9#F z*RLVnv4-@J8q$+%NFUFo|BZi6t^s~-4e2XtNZ(XL`mP$%vua2`Rzv!k8q#xWNWWP_ z`okL1UvcSwqyN8+3m@NdC_BISaAp5f2Alqa^VNp2VO`EQ=KO}7Z^rpnoL{-T{|Wzh z7_g!I!ox$T@PII?SA@S8)yF^7$2Y<=)SL453#TH2dIkme2||(P3OdqUF~G$?xlAd; zqds+^?w?X`xYu?5lq%s1;lkm<`UO!wVd0+L0{p}Le7vdd{$vE$&wMkMJ{EKSI?kt& ztOcixO{P+W$&@%2Ha+C410{~fqeziV2@VUf8KEaV^P5dAY@r9gE zo@;X9|3%)K%Bn8i)`gn zk!MXO);HmN5?7Nu{U7A1sf>S1zxf}O{}g#X{YyS2(k7!%y7(d4hH&ILf%DTjpTyPV zEdGnUHI-FedZ+)Od_Uyr`!D(KpdVzeE0Se$B_UHG{}3k;#DjztG{;#$^wI2N)yz~_ ztUw~7;{>rvnVd!`Dbm;kfizwu)UTMt#*!Rlwx#G(eZ*3sER812h^~^DEElH=lp-oQ zB}O8SrBbAW!8E0mP?jVROQ|5R3>qK8WGUJrRwk8-VwEDHB?4lpNJ)Hig{3~}9%XLd zsjrQ>y|e1ev9GzkBMGq&m3=Bmr1baZN=Ff4!QI3Ac!v5!1&U+kGKDNo8O1hTK?j9L zd8NqZBB`>sNUjjeq)~uPlgS5r3FJZr6(*9Wiep8jwUjp{q7+mtC8xwxGNr_~jDp6C z@)Qb^l_ELQ6|T|cqx30Xi7ZASiAobo(-hJ87K&3va%FT9Y4g1FqsTs0qQz`vHyfG88> zB1M8sBE-@pKsSW8v>=AG5)Bgwg_u0dQ~7qH0smUAT!eCB2NU#i(5W)9kQSySW13>Z z0#pAAk7~-;cx_w>J#McALL88s8A#k3>67cC?h_CLKWpv%R|Nr zq_HB2gs@}oW3B)hBtxVmW2O`&C5z4?vcnHJ*>xdpgdO~ufiIoXrDXmNpArJDA6$EKEU^}!zDNCjS$B><^ zsvrMKXCTf>d;_dNq_oAPj8PDpL9Ym-M$h>Y8IZs8oxj6#crD+*Dx3$cF$WcZ2+C*U zd7mng6jiky1Xn!fs+7!4QyYd18C+ui5N1bPB*}z8Vyq>KC%X!unjJxQh|zThmu!fG z|2wP-?_{`CCD?M095_2y=os)=vM4iyMq_!zdV{1SF=jJYE5)~)-58*M|5c-bC$8Nb zJZaV6%OH)fzTF)7f6;K3;7I?JkVO=9Tnd&->=J1&i5Ok=1GULWeUrdA=2K}p^r{wR}$U@5k0d-!x_L99?B!LLLHNtMRhA(q;3^{4>&ZrjpgWm^S< zBSGaVRsG|HQJU!|!`ON7YOn^m3q8mX+5D&ToDqe|aIkPZcdA?t8OECDd*#BoLOGsZ zBb_Ql5I513IKf~MjlH+0S5LygVnvWag(QOE+jO`WZs9|p!APF?Qew#h+a4m#HwrUbH55mAMRzb*u#JVP&A*Th7qO~r&`7O|@N$l6ym51FUlJ^`Nncp`^v3>g^% ztwniEA$v5)-$L4~ZB6~G z#LSpMCSB&`Cp4T{sl$T&^(j7*>@&(jL|(+2S3#yDox_J03wc0Hi!_WjBc@fu-URXB zvV;mMu|0OnD5PVC0zIiBY(j-)4KzdkzmFqC4F!O>nNW>9gR$m`oRNWIWfFbLK%W_M zn!>Uwj$>vA8$tH7vFslvM3Ok2=>@Y>1v^)W2xx>tB)9R5$NGS|X}}DC9Q&kHl2w6G z648PT$(KAr-wowOZMqPC>II#6`(C8;h99{W=EOq@A=3y z0ii*8l0X86BqZf>YZOB?P}V_0B7#ar3T=ZvaYdBDlLTN6gQ^fivcO)C!6a7*Qf+t` zGR_t7&(J0>Vgj%#dU*gpepLN>_@cjPRTw z5(q_d9vz?=u{06u4nch-NLyMWk`l?B_|e>cgWpOl*W|7!~d_sG4(qBuh(0?-Ry3F?Ru4_R)b7}f%5JDJA75d@o?qa z|95y5x>fa&aVwv{@=);*d_4re;$%8bE-2qWF*cg)em0t)a~vQKN9rjL$JbLmWT;OF zSvDyD5NE=P;dfwshAU%%M&S|O`)z@Bi%_avgSZ%~aaONAt#Hm(9hQ4Ij#evl_J6(`9D>L!DO(tR` z4^CjOPE=L7CPA4+G3$1pMP6t zq0XtY(3Wj0&;*52o&u4+JR|0Zp764GWrA%POQbzWjbvlZikX$TF)Lg`>?VVa^$IJ! zxsWSG)eWA-VhWH2jUBggWwH@~MmGr%t3u*9Hk(Lvpb!XwC+3UQG|LrA3JyvK3gRp0 zk#&-S)|BDbss~4QiDkbXDRD9xN=FDr$uUFmMGy)N22{RGf&)2(0xBr3sSxQXnLM6? z+L{sxQ>b`ZDitHfZP|EN_B?Aa=gT->!TD*NKaBI4!7KM=s-dPn4)@bWX=p6|DQ@Nv zclwTwxs}pa&0A0RYQ6Y}-5a&I^!E8or-O4=(;wgTR;<&%vSHhe-$M=@{H<+R_`Xla z5exT?mWDsBe7=P|K+mlpWO`Rhgjr zIuveS>c>MD8k=BCI@AERsEj$SK4nPNrkWw5A=L;mYE&&s9oAuWNxXW3qi%vynQZ4^ z>wx1rE!JwRCFFQrO${v#Z4Gq|%842by?HZ=mOs1F*TGeHi`}NKFESo~y0 znrd2V+G^?=Xnj*ky{pfNpxrGh@8?{2+3UXqk<(y8=S-=Y=$dgiU_XZ&4bDcx~G+OB{*?>3wd zpP|!s!Iiv@f#QZYe-C^h%&BWP%J9PPo7Wl&n)I3FIZ75BwN3NvKxO!(Ll)1CYOV07 zmGsHxmqXBR{}=Ta?s&V@ugUg-!|7vtUnlHWwp{(Xw9&$+b!WNGnVgxE{w~Py$^Jgm zo!)KP+03V@dcfn+_CGmfc_g`B1vM08JoWVnr|p=%6B%1xicU*QvlR=Z0$a@eisEsgEJG}j2<+P1+S3+&m_s6R(n34f z+uC=b5z)c93!P5B5|l|2Yi1V;eLWbWT{?-eO0OK7B*reov=`mD%bjyiD*!qy2>z3fBIp=b(xn231z zH;<)ggeZ9ol@>z@lu*Fv^JWLp-8}>S1NuedsNP%w%L9tDKtPB>C{E}GP8k*)9qQG) zTSRvRz~A_|upn3oA6J)Ap4xAXx5~J}V?U0JVUr8qNX~%3DD`hRyV{@&> zNh6elDqJ!rAWY3=Icc&#EZg(dQn?S+qVD z+Ei!q)qxaC(Ka?hQA|p_oBeQy;fkROi7bA2S66bnNGwm>^+~z_dvU2A`E;S#0CvbE zC0Q&aIo-8ruLUNGIv5dakMk!7bkv+0on2V1~_ehtB0Zh4!wukIeAtrH} zaXu%5PohPGF3XxOXW(K@!@>oV5gbTiO+$dEIS{hC`kd8ZU>jy>zg!|isg@<~E`}p=_h)*g?Bc+q_V?@wW zp%mD>fKez#@k0qVSZv$;pC>4;;Qt+>!eY;;$%wjxAd_s7`8ZGzKVOBgHvzg4!%#9; z@&68qm9M07#iTK872ttP#fSm&{er{7VHQ|{_3fhH3H z^OpcCXbYK?69jNjjwC50Ixt4|1PL>XSdTEJSu=7U(vk`P5DBfzcoN?X700tABhSa$ za4TlTMq(k7F$k~H)c;4VBt5OtMCQ1VIVp?5`PyKX=3-LBIB4X%$Djy@m#~kKNSGR2D=StBp(q8+0F{(kDZo$yR#P(QS8A++JGrmY#d1C5 z)!kfH=A0b56t1US#~De3SWMN_Csx{Vg`5L25xEmwGEtRK!%Lb9ef@CHzz|+oV2o2- z$(kffizWg0NEcTH5v-zFBR_X$2>^vMiwy$L{scpp@ONCJ9~ADlnxgTR}2VZxG_ss zY{9G$$ue`y9!`4&;V6dehAgDaW{yZ(mUv<PK@Ni)B9x;8I9Y-&lD1G- zLS3c6ApkUSbP!MTr7>P*ymAmhOzMx6&E zc^sEB>OA0>)ysh>7`+_L>E(zyBzq9UKR5y{{lweErq5R}0bucnDIdXy(7b{W& zOB`+)PD|Pr=?XQzQb1@LHXrVhHm*s6boT)R2#OibNlGFpWh#t;RR+49>ddVEq(!QI z2ly%3bzs9@sVk%u6w=}ERnc8&8K_x~GeiZMGgVs2)Xnsttjd+jkAt}>NWiVa9ASA9 zP5?;f%huiMw;g43MoQN9Bw>4n7|LS>jqN08m+?}P7($oIp!qGEG5pkVtkfnLyNCqX z@VN$o+cLurVF`!Qn6nkej1FSf*d zwZR(YmL!7hgK#)uC#07Qq<~>doXC$ghb;4$`<|1G6^MuWGw6;E=+haVG=ltK+E|9Wsd$u%*oxq z)L;WUY3!M#<>aH`_UV2;eKFU$BxX_*>5}10Jc773R4SU~NMzV-i1_Z>Ni}rbfgm~K zXU2>CLUGGuUdR%YY?7Bn8Uj2 z%En?((Da{_P0YhMl>W82At~b6|D-Gir_6b*KX)cwO}|y=um5q0Dv0V&Y^$k5m;f3f zgT$yX|2}TyY?q_AQe1asv3ZzE^J@PNv-{C)J0z52>3jUX#ORU$}cVPeRcNQ#WG z!=C#Raf=r-(O;Y(6Tv44U$|{iwikjq9MnFXUYyr2LQBt_9rH)e)i>mCyc={t>IOkE z8cnjQF-*QvDGUd$Zf^m`$}j)CcH#fz&LSRNBPL_O6_!>kx@EhJax9%SJNk|xw=u{@RYk7g*#}r=CH-X ze~M*=5EEBEk&Gf`NtySh$dMi=SyQaMMG@>!kd24~a#-|H78XSB}_Ww^)gVyPv0X0nH{1`q)ZA-TIbII4iT6eq_>`vGol_UX=@+B@UVzH$bK4v~&b z2FLDB4wVxlJFrPUl@kEv%qH18IaN-KbYQD=Vk;}(&`1Xd2F%Hk?+({aRYFHgOZJ@c zzd#4Yw1EAN6G#-yL7IgHv%v|I$9f8da@w7Cae-AG!EMC^SK1M$%q}kWq(v1$+}I?N zSUqH1tiAnTAmc<#(qG_2o&F9NOOpNq7x(x2;^N{6oa&I4?JC<>Z-ugYB=8AUk-(?8 z{{;zrx+`5734975t3d*v3b;y0;8Pg5DoEf{0apnLd zZ%3a>Q&P~alG9(ZpThMcBJ{GRG$@7@uq)i8VmDyqtpO_I6jjDbRx*56M#^OlI8Py6Tw%rhmn)!}3@D|nTwZI= zsn(gdD=^n@Drwa_RLsCCl!-->A|;9OL_;W|f?%}C=qG0v%s)8ds*F@rzFuC_g`-Gf zAHx<;4mn6hYqorArNWw3j4@tHlC`P|YrbUFgJZ>har$Z%qPcTTXapSXRd_6i2UZOX zog+D3Ak%;uaxSMoHy*g74{IW5Pnn~NGNpb+9kM?4pXG;UiYvcLJ6NS|m8O)-S5A+K z%}_Pn#7zh0iaDvGW;m5?5z(Jkho5rw5sd+V7FUMWn(HeMS7UwbxR+^AXuRcu-0j5? zHK!Pb<^y)C%ym~ThEYdX>MzQvpc?&OEeDNmyr=leQvEJZq9WjelW*WF4 z&F-j))owC~tpXSf8gMkg*uC&}9sC5SkdJ8qG%z?9WnMVKBcN;ws3@yCI2a&Qna|bb z`&;>rwzdwST!EF6@EeXD5jreqUsOhUl_jr7|dQILKO8GFWGbn=vVrIN@~^ z^4JjAx=~{Rig^5ar2m^Rk5cq(ZI0+n%yv2xQHIvA|r$HSg zWUj!12bqCiJDD6L66#YFfG@muh*?dU6!e=Umi;lC>}uLw*5xGTxSBD%lm(PRZeozCkrz7sgejnOXDr3h_N7JCQ}AbHGf&N7~8^f;5hnM0akc15tx6pdCK4Z znU;CtbRwBC5k!r!8w3#wBt)Zz3%n^(=FEan3uA$$Acj2#%U2xU#e1lmW zBl(cIZ~((B$dNhpK+e$eaVO$TfB%-RL#2HFRjjKSm8goN`Bbu}#+&k(x8QIbuWYbX zHpxVeBdn9THYd&?SR)pT?Ath49CIehL{|vnV1+cI?M6U_H?cHYD3A}1CIxW}7Vl3H zOQDNnUo-`(vanAl@7E%)+TzcCVaUna60@QLV=5vgZ(b3gJ!lFF!!&~V4Q_nHZXCxc z;k>$+aPZ2-kT(f&Ww0$Po3E-K!rlS4Qprm47AwNr$(bmzfndf#mEVQNp&{lC+Mv3X z%bhHcoRupkZ^vR9NlF*u(r`I+s>(zis%K*UADgPe6mTR3xv+~8%4c=|Xap`|lwIrv z2l5YLUqs{|!r0J5Xe1e6^ISd%yX5jgo{iy1pY3IZ_j@JdtpE(Fd5*@`T?HR}J{7Mk zpRZzj`CHStOTn0T@wYxJ_e+(J&qdB&_$$m>UH6Cj6E2I4Ojxv{zyFD8!VhY_q~V zaVAw1XZ}=9q^zbw=W@x!UZ_&AL-{a~0V-wTqAFzL_6y}9IT62nRGFDcg;?G~q-rEN z+a-1%RZ}3HSB+%l^1sFNCKBb-%gN0|gs5H;CxSz{l*+PirL+q2Z27eE$MognnX_ur z(<+gbI$8cuyGmZ}K)OmiIa#g}sXFhil7e&HDskN5I5~|ipN3!snY)@a?!2;m3VR$_ zK89hI%q%7%m+FBxN-m2a6R%>ZlId=>iCAbDs;4TYRA6o*ASRTruPqqm6k>&;YXN;mzM71o=JEs zo~Ob^z-hq!$S5tn0(S=P2;9n{EZijc$#5QUhHxX&OG{ng4B)P&As<{4Tzk0Zsimd! z;kv;Y!97eVE!_h*1uhEC4o)2|Pgz>J32qo%5S$v^ZUxGQ^Mmt%YYI0a56Y&xX;O@rTgLJaP8r?%Subz!sSX!OE<&$!@WX3GvT=5!bv7YS>qZm@rh$@ zAX2z)$cTX0IFOYu4e#GXnl2oFm5zf)RjkDpx9 zKs>3BoO+U%n?S%J@6sXn5Xt2yye=UQ@e&EYu+qp&-tSA^&Vw7KI4K683#A``_dOAl zHW!Lew~L(}<15GmDBHn_CbXIANGITRoT@MhaUX*>Pws!EHWZARH|ChM&5BFkkJ{el z(}>?G)%xq_e$IOW8!Uak?tJZSIfqB_OEHse$MM$|OXl4OSh;B8hvfpJhhDQcEh!Iw z>g`wKbGC>38*RMdWwkd}bnN@*^5~;R9Vsvz9(TC7k;}r%X1!J(%}^KiC=Z_zbpO+f zoVU^ILL`lhgU{#WOEuier;qwP^w~ex;6uXY9huk_T`9t4e*~tw58afF?b?a;2eoGX(cDZ~jlC=RWc#uH z!*JH89#v@{`q`UV|KUE?ul(Ji(kH6Yr*i($UFo{Inz*7q zI{V@KZ@>OjPG4*{wc8x;jzg~g%-*-YU|(_M$=;nm7=7rsZmh@Lyn#)(F5aSZM=f%k z@v#XGtxt`p9ibd>O#Wxr{m~n>?=4e)Sa#xsc-hm5zQ^93U2&pLPG;@aGV5ZSE#s9v z?rq)~l|T7=YG^O_#Ytx!Hl1&)vGd%he#c8{Jv{3>XJcNk*o)fnmX;Y^(=)E|rsQcoPp<7HIoGIY?)BE%OKweQ zZ}=&Bbz)u96YCo3N;)C)Yav4@cL1qhP|dIXf4}%cU+4`mmfw}#xIPSWOz3) z%ywBDeHiBBmO91Tx|P2_%-MPHnlQ4X;O;1 zi$g1iCW};2%!OuX2+1uS&KwFqIY&NZFT~ulfjB{|tDpdZa1CuWE(9osLU|5Zk8c@n zxZ`>hlaF~TD1on#W@E#@?wX!Aiu@xb(8VJie z#Y6lhmh>!6Ag75M2QA=-gRur=2cs;K>pUOLD7fhu>{Yo0R-PvPUEHd)v{ReX(gX16 z)}^Hl&G92}?XY$s&Ys3P-lDYBqA}KNxQB2haCe%PmYzqNg;{CoPULF{SbIEwYl2_% zg1gfk`QZGTVeN-YY+G7tjQGVZ0f+MbLEL22LF(r}b@7gj23l%r^|XwrCR%EBjkL6= zMp|l`^|d^yW?E`p>uPCG4YkzNO|;CYrdn#Wv6ddySW8XURBH^?6->6SmO9|a0KO4{ zZ)l{YL*TXRYY7Papt@R`1YW~L%Yne#8*3R5_}ZpgCm8ra_$gINHw3OOWumK~jCESz z8B9^vo}%=!sk%B?4s{2?(Fm`GPx6n3>x%G0q~j-Ob^F3KM0hq;Pp1o>)8W8q^{!Dy zI!1U-fU`h&Cwvs3I~mRo;rD>YN}vm7t7}5l*L?zbD?CG&tLu#P^MJ>TNOXm8VAy(_ z;FJ90;k*$p0z4@%3JwfjZ!u+}6NcyEaIOg7L4WY(5?wHNU2B97z^@HA9WDUjZ-9rS zq8kcljQZE2{#JO#Pv_}6BKiTdl|IT5ZM!h7Kpd`^Yyf$%55V-R(F! z89$w;+Xmr(;1hgLgzJv*YryN_89%J3+Z^HLs6Q6ZBjMZ;zK8m;dg|gG<+`>AAAxTO zHxn)h;a?Ox{=E=3LjT8c<39vp2c(}w`J}x9I5ULTz*mDC1LukGW2BSz^n+`J@LX>E zha%h=;TzoeixIX&csG2~-YIbY2!8}T8P5o~`cz$Abv1VU@oNRT?U8I7pd8>%dQ5Wdche*(f52=9VV#%nU1AHp91Psaam^nZaHe{a@zB zKMr}?0Dc>Mg71lN-4T8RcryM2;hH17f*b#l2)iR($c?`gVOxZc!Z(DQ2^WO$?;7a; z6v`*#FMu;c{;~xpv1mQ*8_zy$43&OX#@gIz^6~bBY zYr#!}>xuAJz?1&`jsCB4;~$SaZIOQmd{W;eIA4U{0iNKKr~g&l`1ADtfE#}q^4KB& zarkxMX2As`T#Egd5oJtBn$n^4C~Zm~JGWZc!PTb78?)5$QZM{&GSdI{sf!ZGpAl1z zF;x$LCitt5KU4fQU|tl4SB2rPG5(t1uPOeT;jb(H@V+tBq={Nd{RSwd5oJa>P@a^4 z8bh7H`^Cnnsi~`JsA=L|UAk(u)#|D>RHN1G)w-$;B5mU9=Y7%+zAeV+8EFsSCca&y zZFQ+j6lMTdw>E0mMg98dy8-%Z1egYBX$z_qULfW~b)medF#PU^f*MDyrA|>#m{*>W z`f0J0c|jD-yaUMoh2w?W!Aa9jibGzGu}Uecd~d2B{;Pr5EVb%`=g}zg#ifc zc%P|EDv%GQa4IemBoXPGD9J?ZQH?5={6Gj}i^9d@1?G6?lQ@>Vxtx3b5yid*N|k|Z zRG>&9KNNxsbL7oRY&$kiW#3Pi#rYdJ|0L&M=KOrlf5!RWIbVAk3(vz<>>U&8if4k~W4jLareso8}yNBKl46-#@vo$DNzHZaX zg-g4&v!7vdZ9}couGWuFqh88)uJ?|sEx%2eyz@xA2VP^YExvwcR9(T)h(0B5KT5|a zG7i-1m}kFsT4|cY)e!pR$1U+8`?cOZ)VJFt4;uYP*t94n#`*F^`{bAvrvew} z_tNVa`e=2(K+=KeMZlo@J*NQd?R@Gh!G7vyH1ME)wH-Bdq92mhhN(|joWQA%IM43 zubDkI?Q}BKd6Dh(dv$19sKw(;>9XWmw>zt~SvzuGOzkhN?zh>sYw48d-8L#RuRXbE zIVk#z^kb8LXGcfe9b;^is<&oaRFHjfNuyIY^#=Buz2Vj)>*;e839UY9|GKzm{sB>! z)|$b?_ji40y@YsDDP4c=geLMH&eb2_in85?Sv^o8Ge1i9GQ|nhQ z8)lyv;e1ot?p*Qwq=;=@o;@=%T9X!W%wNaro8bbTJ`>Fkk2sN4dSjvYNsH^ZCQj-X z=d!K&r;+OWC)$twV4}1cy6(J=dxzyj^i6K<#0X)y2Zq>XkZ+3g2MEjrtK!?kc@y}nPk zw`!64a{5fIu{$m-I!k%B&1k2+&wWC#?i!;^Z~9(aDg624?w8{cL&kr|>tMPsxvrorcuekqh|J@-we4b7#y1lyfp!lYS zZ9n(ToHfbR?0o&unO)bvU8mD=ORbR8i#{~yojY*VbD8pv(yG8o(`|)v;ZVn4ZO$}2 zymw62Yu_V*Tl2m>ZYA>>YV9;#LdO!nn1rOFzAs=Qwe5y%du-M}DvCweV1f z`kmjLu{gD*k3`b)#kKCDl=;Pk{x{c}5)|6Nc*W1A%W|JtL_7*;b#F(Ohwt#_&Q~0# z^(ko7GAgvs-L4nLC->}nQ95eow{uFJ{jLeiMGIo$bnyWAm_N z(vutgrzbAYoc$qKcUijHif>8noJ*bxuf7|V75DVZ_w;L>E?qC!HKEahA-IJ*LHru+H zJz4dtUE=k+9X_ZZbW0C#`A`r(??-6kgy$D7oOsi9(u2D*_od#@`8ngta*Nhy>c{Qc zKm|73HbvvfF5_!G4lP?5J~QH<-xKaV)?VW4uw(9(QGJi(U-^&~Hd=q{`LMOCJ)0e! zKg-T!mA2sBxD~s*Pd53L`%3M0#>2@=#{8<+!{X~w%?_u+JFGfim@d58ee2~1SDyvd zll*?s@Y$ZGnj;78tMk=%YnRSV)$MnNez&$76Vi6g)id5%PbI?fci$S<-8%|0GfP zFk5M1`#gE~=fj6y-BjE-e_U6iu*-)H&NnyK_6(`*I4fp-XKm|&<||6S+M4Y8F!FTw zzA1saYsI$;^kbqInDm~r@#uht#oax}xxDM4ugtJ)5uMv|p^=5V!O1c0$4_6S*5gp{H%rdU zpj*1nIs9SKQpe*{w*Q(zuTMEuaPVzi`R@3Eh4f}Kr4=ok)$#C=Hm;5zJL&$)o}-a6 zGqJ_n0jEsj>-A2PcPbtJGgWiYp!M4Z7r)vQ-S%$d@a>Bp`L*}<^E#q`X;us4nDGmv zmMk`yWj}BH3EPc5N+$ht>ge#DeWiJauhU)coUT=z8|Y(v_140}r=#zze?RAC?VkIzfW0Tt{rN*;LMz9D+3-R zkG);{?v#Pu&K;edEZyJ8eZiKoZ(K8Ltv#N!>9A>>+2=PIhuU}#aZ2d#^SggZkkUjq z^xe74esNQrT@-6pIQ)1WXCv^q+NNm8b>lW(>5X<6jMH+y-_G#p>dgKkC2eg{9j zn_9Ot?({sTGxuCN1uAu zeV?RHF#R3Svvs)d$;2Iz{SIn}T>DDs|MBn1Gba2VlpRkM1@`>CGjcQ4>DCqM+A{0k zeN7ks5M(KJie2jIsHJ`QG37_0&h^(GKl%y!{@7)GNT+jVQpxUpvkYB26&c=0(J$%$ zt&O4j+tVdeW7n3%*m@eiT>DcmSH01v$XO#l?K!zzuS@XGPqF<%^sMvGIx? z-CvxETGu%6`l-h2mz%w?G5S((gOzH#TKv&(`G7j`$Cer4K0sgs7Yp3|$Ludc*?I_K2o zvH6ufvTj!*TdsD>-SN6@KrO@k(-Xz{)|aNWUDthM{;v?9w#vemZI{o^&Npe6QD}2y zF}>cQlnxx;tnkbS2YSVe+`{^adkcTJ?MHK7ihfhx$cNTQR^5A=oH%@H$%eyLH@&;B?U!))XYkbSij!};FPl~8a6NUe9n&{thH6@!4SgNg zdWZ0pZm8?;mpk?*&)5;=CJVi}GcV$eQO8Z9@*BDEE3fnfq66%^aBPA9ZV>D08OYq$uq(52M~rR?m#nIGs_7$I{<#&?-mv$n4@-~Td!FciNj1yX==v7 z^wXm4lfAX(6gO`?vC+yi@2s}ue=BHr=-i>?_1Aj5*EG4`u!)B4;$g1ACxuqWyB+Q} zBXwQGh%cuToBmTU;V0jT=r+oqN#l zamI#d;~!@SDOTT28%Jw5-(}KB&vX9J4)m2cvui>7l%vD8#3tunj53;%*YlB{e#>09 z`t4gCP0{c6BC*--_)B-&%({8yR-L^cvLd!V_svtzN_jMR@dQDwjZeFn>@+#7YjMP( zfk(iuG|J{xLW9D=StH*?ZxXk7aK87*3Aa6GYNbwS{6;+YWs=^uX&p@u4a>Ta>p$++ z>4O^kf8Oc0`L)H}tCznmx|XloVCOS&;Es<=E+;SB`dv0Xa%i1BF0JaWySR4Opn*NN zr)|G<#qa8z>(L%Yh8+ydjm&ugNO$L}UZz18()9Xu{wj{^yDfFdCY!n;>9KWuCqI#;7avTPHR`-W+sa_4QNfIB zwuf$C?cAe}^!NSaLtff?807_v3{M_^c75xN>sOA9=(T-Z(^|Xczn-?Owzt~uCVR)+ zXq{JZ*~vW8xPJqgLEwvbN%D#N@QXR^b2A?o=Il2f@Xr*5&YqRyCP}{T+M{^r=~V9l zEv|k3TJeJwqd#R&O;)bnXJmVP&7tiNWZ{Tg0jAB0Z35K)6y_8zdiU+*=oaZ~j*o14 zbkoc=O(l(cXbgLKG1hz9?BQX<>aKP1Z+*n(;JSOpcmABxvKYC(^*8%NPP#kuYl~l= zX|g1-v3%=5Em7osQGb{58G#oy3#JTweR}0~$-2y|9S-mJ*e`rwFm~Aa-|9`iF7K=P zP;#eX`sq*|ne&bKkci3YzUy^2+AeZE&^i9d9c}IB=ZwC@#pT7!9C~uDVWZzA;o2`X zZr&Z|@bK*X6N5HvUF~x4NXQ{V{|jy=FBrUI_J=>i9ts!r4e6vlo!<8AYxV_ktDRA{ zyH+P37F~Ph)7*Z{wToR%4i>-nvvwO@c%%EEgT8a?T1UlrKDw~qLD}*0^}1^sWlp%{ zVsv-lTS36;1!FAQdww`7&wVuKh0Yw!M#F~;n!ZWx^RsEYHYZ1)aGlxOtZ$R|y)J)0 zS<*;iI&S*hq}U>zgY`y8m##JY8I-$MtG&~;*^j(@ZY#pX-8Q!Rb>!Zu#g@8z47yrr z^vWw$oVFT2Z}qW|C+*j--u=y9c{1rrotAo$1)<9wzdg?0XgxQgUmv+c&N%gT(~OKK zH$M~8?BTJoLsJqzzHaK@ZReB~j^=64Z+Jd-Tyyi|gcnZny%ud)(k|^}?LRtwM1@(k z-s_!PX((^|W7&p2vU|?HUj7d|-pX2bdw0v=jct2M8VtLCApR|VYSPqw4ZgP6{$j(8 zE>5?6&-is{6|%hh{?5n0y!>bI#8IJjg1Z8~#wZ|ybp$EJ3C^?hO3NSo(p8yNOp zIyS#eo#B~h2N$R8|5MA?q}|GS!sCOA#ut2c{S>skg}1TZCFe2v23vlIg!d)S@t z5PYaZ;EwximptfsKsuxN4Z0B(Q*r8|Jt-MzT1z+#sp1<&p?H7&O z17m-u9n(ozdu6WL=#f|EhZ{yF+P(EC{kd{WvkR^xCpQatl^XZYtS7tgHJ&<0(!GUG z)7(eyzp|7sr?+%UUv9YJpV!O!-mYDGSz~zOIy$F=!>1!_ug;1(*FVxa)N|{IRX0Z& z=(p2+BRzg?#m`$MHXFU#4sbjgb+os|eNT)qJFvd!^LhI*x6&mh>bl=w4lP=^d1t*7y6%X-)6`|prYWb-`@QMav{QPI*W!H-IyIuryuN$yT{Pu-;oiv!YDna4 zH~qt(Hr>A@*kil&pEf^UcD^%4e?VYF#`)H%7w7L#-{5R_2Q(yoE<^9$;SOH|UH&hs;DzRd9cGr}iq(C(cD3!T$*bbksy79?+e=5yS5a_uAe ztL7?BWqN+Awf{lKeHpobMkEC~2*Xw$`p26}X<+G}`oR76!LyX6qhW)kzn58f8i#p2 zDD0tDyZ2brxl1|^D_HtL;uBF6y6`^jqieKsisqf(E0;D1UhThpQr7J-*Zh?spDt6Y z-jw8;m_H3HxF$I~py4p{xoSRN8eIrYxFz>6%R6LoyzyF7$(+Gz9|z`L{=dRVXSIidZ^#fHD9XrJ)%(bt_8I{(~UiElvvVRy$pGMzozQq3^f-lOpJ zHw&*?Up(%9akud8+}3pd?ssbXBf=$KBbN^=+%>_+&?PW*_UDq7%U!!nQ7>tkbv^y% z>fo$im$mmU$zMEd^wXa2{YvsYjt*;eFhz1SRT3)wz0T*oV+)Ie4!1qp{<)&|DMi~f z@z8<%I7Ra1Z%4!>Rvj~+?)%nw%CDa{R>nAATD|MIMwVUjpe!5lrqz2k>{>anX zN^ZA#^3=chNB+_n$IF`ArmPO!?wOS<=sSgaIeXX=@6c;(Ysnf-|NbQtlkRxy&3#*c+Wx)I4GP9)%_{vcE4K99 z{YM2WY~uHC9sX>t<)y@=7E6o#eZ^G0O2bW>`>U2muRFbRZi4_L=9sKMIH%>OF8k7T zj@}9C?eQz;(N2vYJ007u_S)NHp>YT4^td|<4|VLn`{C((4{j|O_%poab7~N@f zUZCOiKH?F@hs8Y)bPhD?d7N(B*iCc&w%tGH{jz^>q0au@r30N8+KrO#X=M9)kyl~j zkCf>}_rG?DH#?E|Ol#Sa*o1B89|hchZxB$FIV)jzsGin%jcI1udo}OdKb!a?(Ue*g z!gGQskdJ4vNo68Ypi_xt>2{+Ut~+YZnPJlIj+&k zciEU(=Y?7KdvtwclVejbJV6#rk+LhRR z`EesHH)q`EuM3kEOIMqHIM#CENKcbe{&@>+C+fX;W)!^VM-Hf?IZb zn|7t!oi+h+WAiT7+B@FQu7lILYZMqj|2e0YNU}YT9(mMc@zkA5j$HFY3X4~rOn0mSQo*y45O^+Yu@x#k3XSi*H6@T;>v>Wny?XZ&T-zTRWxqA2O;=FB* z20i(;%==)SW|p%Ct}-wvuKTgefw{K?JxvbxX}oY%>y{a-j1}Jw`;8uXYvlD`AAiLu z3@U^)AAn)ikUp9iJx-Qm;qnT?>a>DJoTzLpl--*33RIJ0%h$@ls{aUBgbx6#Gq>}DE^M@ZC zG40Qaw(05bjVyoMj4?938QyjNd&51(D>^-%eeh63i|*4kSH#@<+N93I4NI)-C!I3X zzUA32%KV&fqS7a}=+wpK_viW@7%#Yzx7$A8!wKEhAHMc$nYV4rx&zC8wprdNU~{Zp zGb`Vex7*rz9k(+i^j|XjV~6Kv&ywozY7m*@b+N!Bx6_+;F?Rd!ek>e)cg!N^*pq2Ov#gr`4kwyZjDQKJ?C|P7v9o#@5bHt#*XZ&rat3ZiSuH? zQ`z7Tru_zwwcWSa_};h~YcJgy>D2k{#uHDa;k``zdOlRs*qvO`-dycP!mT;=2cDwU zwd{AkcPj2?v#0Tm2NUYVp1=RA#HHxhXm!mxb>BNS&U_&*cBmh1f9m{$Q(-Q}w;tQ< zHkUsbzewGBmvHX=Nkdv)xHooBmzR;A&l5LYH;FnrNJA&+{RfAjaTf}Y*6Z?W(;DlY zk&gE#j?LE49uo4wUij$w;6+1B2J}$Ba{b_3*BAe^vN{sI=kC;ro|^h8*T1+98uTcB z-ursJ=8dyDI;h^=X(?;2T$||V`aC-OQQSZOA6tJN7FE|h{^NAlpoo-ohm@caGQlt~ z%nT)K5h#=D4-QC^YjUXv4jfyCZAOiB8`|I9Obs`@cEn5VwWO=IYvLesgd8vRoFCAn*eDk8WK@A z9G*OA@EM&^q?O-P%jIv%l~{^+(@jJbtbTGoZEX{K&=mA|8E3;lB#K5`hMkylsQRZ2 z2+G&GF})amX7pi};ONmBfj2S58R+N3jjRnrkSLALP|t@s8I4ElBAa|I%T9}7GkCkN zd16@65}YJ-UA4bC8Nj@`JCif<*9JXf6bGWeD11q7Uf=l5v6Hjw#vsm$>FVkkmrxTu z=UL~?nQ@qjGsor0j*I@7=*`wU>R2WAyA<-{jqcPPRg^I)eaGE)a zR;k#>1jk;|Ti%)%Y;hYu+|3>DpbqfKXz*iy@!aCrfBU(H1u3i0H8MUSezj=GUBG`h z7scXS|CPiWVZTpp2M)(K^CCmMqYr%B|j#Ao*iF9Ja!GV**dj}^zl+47m*8;S;+Yajz zj7s;r2M0&g?;WnJag+$#Po%Zr_H`>qOP%Slv6od=O{cg(s2KgHE`_3uzq=YAGk}e~ z*vq46rc?d1`?_4jq)sb)zq{yZGAJl-P%*VQUJ8@oQQy9Zxf0pq+W(Kz*aGNFqJgvyW`Ap<2FP(hnk^J{OT@C7hC0?+EntzdVddzgY?Ni{XapJ*j31o zYOh6|G?}6AC2{15mHoYZ<8Qg~CK=*EOH_GHpWNZ6Iy;sP-flZu%O{ z(ivq!)5vnfR%L~7Xg*#6clf>ixXAc@Yx$*m{l}9*|7lPE(`H`$mENl2IOXi8CvuaeWugl_4{=u1z0~K1ZW&H=)}Pd|bN1D0 zC&#ypQ|GrgWi;XOkpvOGs9B&G;QB^h9q3_q7o=*TTgqbCEhlW&5C#6^LgcW7+r~DP zBtSE>AM9W4z*^rxl)u%PDeLqH*<% zznrLBTN@eLFwcvc`lE4-j&|dTY~1s4nYvF%e02J#e-12EnW}wjq}^%i2=xeRzFcKl zHc}Q|q&xPQ4l`B#c%f@pgBnw>f9QK^ zRuUd$UOv%eu;?UA0Q<~>FY!W^tYp}Oa#_}aP^|=v$4f&)-Vwk?G0a_Wp;PN`$42_m ztT}VbaE$7F<$2QZ0zXI6L{(kU+#tPN?GtaxIuRMY_QrCXmacz%O&V%DQz$kX@KdI$ zogXO8>{Pl=rPJ{&5%}KvVv6Vl0b_i+&h1Ih%EJWjLt^PO}!kXY#6>0S=+iWef+Z~I34`-%_7aH%CfoLYV-N| zen$kfqmh0lqRL=9cXrk@b~3xKXa2s%(JJQ9ymiuCr>$U_sQwXBss^zrNI9>{L{@pK zf-hz8h5+2VZ?O7!)x2mw!dA?!!xA1=YdFH_Yu1)EWydYGVWAQ4N->JBMBdtb3ykunU;P&^7fjTr*(n^R<(MC*K<8$;}i9v84E%z6)VrGdQ4Jzj*Ne#+D?=v+}q()4|PxWw%-p_cNPuE?m>|B)^Z-0485@c^hef?gB$V`tM7j&Ir8fjT! z^lSRs+E8)a=GN;CvaG!+$~i4x0(4I;{sTiE^TM-R1`{YHOXVe3TX_|$$%;=;XBW)K zR}~Iq=A|_&+KT%#T36nU*C>6vt`}uKYHtteX?ZUiTdP@+TgOExHPI4FH1~mDXGN>i ze1TKsjahAzieVoflZAeqpq+qp2YFp~1Vt~?D&f=ceLU>jO#U7M_`gF2fa3%J>Awyp z{Qo<&(DTrVf>~e;RQ?&K1PA6S*ACz|0Jj3T1;EV!ZUS%(fU5yq1>i~mR{*#kz;yu5 z18^>Ya{!zT;1U2A1Goslg#a!9a6W*u06aD7k%jP{00p+z-|EM0dNq2qX29SU>^Yc0+_rLi{+Tl2bp7WO2OcjR z;yz3^2@1Bs_OFJ{zBm9+5AV30w~T?pe6aD6#pHxDA7;`-m}p`XNpJ*(&MVgZGmp+O z7Br>NSmv!=zyrwF0rAzWwkb;l$3Z##*!1L_G}Hn77{J;9p0mAFxX(2X%3UJCkvinY zn+32gAbb#pS9Hr3t&|%7nz$|F*Z9VQ)x&1aaZtGdHvdA^4{HEk2QY#TPtp`;8r0H_ ztsgh{4K+(sJPq~sbHZmyIhx)&l{Y}`v*z4oJ4}QTV^@yK0J1*Wqqft=P5M zB~kq>MCG+^h`H}&o?ZVn<(x;gK&tYKurZAlC zfHzMlTItrPw)C^i8t#k^cMo zhP$WhIpgW zsK96SqJuZ$wZhDAK)Ba9lsoFTWU?ZR*yG*VmQ^|^(T%*uW#5pNx0u&gUi_YF#zdj@ zI=16x_UTze8YoW-!MUSV8ZmS))^G@ghNv27pgHEEvYM40>ilg;kg0K17KbNZ|1SXXAhi|Lek)0-RThu zrM2IgX*^Pt^XOyV-|8FjB{LOqXNyq5RArbZRu0~+%7$;wXr75H*WoKVdr@&E)ogdV zU&<^a8u;42NDG0|Pai#2B6nh-zpR4OXpE&RVEgo4%Cu>YC&Er|xNaZPp!fABT*a9+|azo=h zv9jlDy*zJK5ERk5zcIuDE&05#`NH!>5{Yv3`5wdh72VCZv@ME7G&}H+M(v%b*Kx9g zq_j`mU1}hiEwDW}-O=Dn8ViQ{<8fFp707NRW9+crE+oF@QzfS4>RpvqIin1|LU({Q z>KI*EM@VEQBVxhP(-Ckax~7!LZ7|6^r^lDD%ng3Hh7XRkUwiV_OD4@2P#>+wYNGYn z_HO-WJZm2#$JN**kB%GzrEg*x*`!Vw^8I430|N6xE2P^f(tWD~g!g8xH?|m>041kk z>wos~Iu0OyEg(D|K#p@`VxRif6sT1M$Lqz}{(H8W(3_<>W1wnQZ2p>r_yPdVTS8p# z8{k4p0<~!5_n)98rUf=$)KI{ECkVZ1oZ^Q&fAibACQm}bsor}UmIr>pspuRppvRVP z0840*w}us?>w}m$yvsZ*P^2793+t!Cb&#Ae!Ex}8N4A5 zXm5Y#Vk<4D7! zeLb6a+@)vnS!0+@R+apP>sk#pD?sX*mx!{{Lqw>q3||@i>?KLqI|YfyV$fVL=jeS` zKY1F5M;j?rT+m7-DEd8NkIkCo zB|PowvyU{<1|OSjkD+Bn1S)P^jX3=D{!t$+PJy8>3tZJ5Hqn(G0kM4fo%PGzVU;jl zmUppV3-Tu#S%UV?P^f|_cw*Ur?e-5{7_~T(Njby6-RT4+-*7dgRK9OKs*Y7skf(zL#|4At@%KZTG(E%p(qlx*ek3mD>tlQ}QfIj4L(c3pILg z#WNMN#uU10NUYB+V=L3)_o+~MXbJ;2$^1FPT+adH+m`6yB};wzlxNn2pb&3yw-Z=N z07-@WU7^@JkcwR`7ipFBCWo@_j@s_t+rOScpN}9K!~%R1X0t!u2fwazk?BWP%TVW( zsLyg@X8vj#`UeR3v2Q9d{ZB!sa(H6MsLx*4$Z-?e}2X%T;i zkHmn4+XNzI$o~S~ad(+%R5ixP)L%6~XVNuBgQI~)Y`ljG-i>LV2w|p3>uW!tICQO- zGgGc-YwX8NKc8&?ZD^@Uy~6lP{=OHVwB8>e?v_02s)I~elDUVm%dE%BCI45h@lD5` zsU4d?12+GjA*o&`iJ;)lNl?eVzw^fsUL80Scnaj3f|W1ap3ro^7svnpHPW|Y`;Rl} z4b1p4_E-(H6dB~iJi=U_7uszhDO@Pk04?L1KDfJJ@W!KV3B;XGu8`rC52wqD>f(z- zZ?&}tDrY4te2ScU{MFz1++lWk8j;mqL9|`<_=4pr&U_5v0c(bzST&PDU>-$ReZ_WCT8ra&Ef z*zvANE?ePqbk(NsIH>Rj4qN41qEQa@;h*RCh|sa#sa$hsqd`1~LCxe+2~=6082wKc z>7dE6-(-B-lc4Cpdhx?=I{KU=)od1)&FIFD1utPsN%rC1(=kj1dx`FE31+uA9BbFimMG)`c%`d?jdc zU5Swep|bNK_XIT8Ht~f&mwoumhV;4q$^`1DV5!;=oHx;#02SN*qaTDh*i)eYxw`&- z!3XUd-*8gBL51Wnbe1b6@iUW3*#4SQP^y0}0-98MBSgD~mx6D62i=@)Ozp)T(~mvH z{GY4q?-$%llQ}R8g0;sxf94vzg|DF#OSxuKSzH(E{F`Kp1 zz#DBiJAgq0t*Zw6scz{Y@-BgLzEV1_a=Jpg1bI8T)J_+)T#KHMRU^p%Y zsE;au{x?ZR();90fdcxm`A6&|8+2%AQ1_36QiQPWNftH6Q-OL$+=QJU(EX#2431kT z^6N*~`B2iWzf5D+tiVw}397BbmdEz$E6Bqq;;TeAvIY{iklj;Du!fmn`_K3@|Mz}d zA}JNQ%dzo`u=>sf!td&sm5cTMgQ?(Ni+Hf3U`z`kthjei6z01-gIi+e^<~ZQyQ5#-4Dc@1XKq&lgdFK9>CrUu8>wn{SX%%YyFXQA|E?j@b>Vph6 zeQI8Y0Fn~o@KFYI9u4!WN()<~S(_n=7xvl6lqGXwa$nb1{=!B?+7RTi^%YZd1 zD5B9|en$_Mc10d|hA#NP4wxU@0>ozkFdcxk3Rd~w6(1;d@??N7;(`{8s;r(&)zLvR zoxjnfl6h--6C-e7Z82%I2r$U z2~8Eca7<>6z8isCB=Tb4cJvh54^LoFpK(Zd_g40ngmu1)4YHG6aV2dAKl@73KC8q= zOS$Y(Vvggj^AHPqR*7Q5WmJ>x;wI`-atM2;9@UFU?ED!QtFPGkv+suVkh}tdSPj(6dA1opLgoAYzg)^+U#$1NZ~*HAgQ8%v>bWtHuiD@6SxBklX45fHaSJwo zm2K&+8=5bT!X`mAAO5MoFwl<1=3UmSDNyyvKmGZ;e6|3{XzTkpDE|U$kH7K@J3Prs zEjk?s<^8jsA&Y#leleVqvo@FyIChW) z{Uj*91Djvs4u;U;#^aTmNl^0+XU9Tce@3dksW+H z(#|L5R*lF~lRKbEP^25Sd_5QIj)3xLG|fGpJUxPxyb9#Yu9-4PTc3+OlSxGs3i(;p znujHL+B}JaNsobpZvBC~$Blkv}d{gzPV|JdWK39{4m&m)TUjO))bL-{48xnN%` zY&0-&%R+yq%=eqAf@yGq17*SGZHS-spxVkipA_xEhUeNrWRh6>XN_$y?0DEKP_xr5iXGp-W7mk!D#(=&d55|m^Pys&>uh;cEI4t- zbamXWdI`=d(|F*}@ZhKDBIRQ+;S?yX7{{RMhunk8OCiu6fl;ArTK% z7?N)DZnx4cqT;8q=d@Vso5|^sGCZF#-qGFgs=V~wk4tZNEXVK2hiNCE(x1R#VCRk5 zpzk+=KjXB)BhWVs1J+HmNhqo)D72Q)af&?mG71v?Z<-&y#TXKzdneHYAh#%wnTjva=P(l*Sy1D-C-S8DOO>IqVn&|vRPMkZ zvv*+LJ-+9r=#Cv0o_dnAmo95ogrw{`T-3IRD$Xs?E$?hCIOi-@vYLg(GP!;4CzPr^#KG-jfA|W&%!L^L%fj&7UiG9^P5a{Jz|ot6vC^l z52xwRlSB^8UsiR|AnTiN&;B?MG=LYiqz(CoLww$O8W{f}VzX5%xX1?;ZO!Ll2# zoyjzU6B&$$JjB7#Kh_4#{`}(6p`9QUP^j3De5SZCQ*LmT^dl!}H4?nZ{FREN{ z=(inzY#P8jxnyPBO@fGod(YTQ_EMp(>e9`2v&GQR^HOM2u&`3|*q2lv{sRUMYq60t z?j}eGsTL(?p6uO8W7*&#MS4^R1Bc94rcG1KN}DM$h8N>o$atBz`gXa9>($iJup}az zXf-JK3L`zH{m1l=ULUeNQmlAe@jehRwbPa z4US;WK4HZq_GKZys+#%zcT+>NC`A)W|L6G*duX^gzw0G3UNuTkJYBnrD)fV=RClUM z90=WR<}}*7#ZXpJ5lo`k+}IlMrekAQ0!g2GtuO`3@xKQMeioZQcD*fn$lbWF#7L8Wh-VO%@xAOGAikFt?~%`0G^9Q5 zP%2ja;g9O9Fr2!_+Nw=OsI8jh=?;el!+bJZ%V3=czUwdUUS_xLUwE*tlqfbq^C4xLHp96J>5rwdek)WO`i(%zP?E`Ggt@#w z1(ib?Jzah$&2D)IM&}-VjzZKf6n=(^i-(1)1>WfiK7fRHnmnaed#_7Vs*yqYYgM_d z2`c*2;`L+qrWd6f9=@1p{l_HmVNLf}t89XccOEEsCEj=Q;hkwLGjm*Zjxk4sKbDy_ zTnQ9@i@rb6+mfghd2=L(zc!|RVxy&dl|~ZUvHT{7oa0S8`r`xKKUPP|0a0?5@4s9( zG3bEuL}po(OFX_JLpQ6;GXoX!vI5^?8gcN5o6Q(h?(O9Jd|2pLO5k7Dzw3au{VEM< zF4IwhMypqa*@#b`dH8mb{c06Z^rv*2h%oagRJ{0ud@D($kl#^8QKjt=Be+0emnbr+ z7<64V8PK${tc7^3Ju)B&_qGh$R4Z%p`L0svQ&*t}&$>C0xF`A2Sl@+O@LQJyI4Xjq z0MvvzWh1YX6BXz{MSHrkOtDNPKOF6>6IxP*RPn$2mJ&Dsj#%4X(iCk&R{ILL3o_h! z@~K;ZSr=-9Oq8f(r!#dq_?Ew=_kAl}sVVaY1zwQhdOG#F3BBWeRB{fO37G1}xoU(9p3yWyEDeYr&lDzII&@yTzA<;F0MD^SIz zN`UIE<7l#`KZX?;!g*Anl2-#M9$Q}{4x>>2d%5~g=$JWck&x~TMDAnz^v-FBrRIJT3 zcNPz*D%8|eylkjcw(#ezJ#4WX$D}`Yk9bFCADx%YmhVM>ifO-n%L&?Fd24z@cnbw>Vv59DNBjV zMobFD_o{=-I$2Tg4T(Ew7r5`!qz8I3y{(xQQN=P@Ug)^CWZF43Fu`DV%*s1oOH6KS zz!xz#70&Q>=a|XyUU2R6>PL?Ybx(xRmoDYA42lKD((T$r-u{vPHqSYz43tv->`2fz zI5_#}ml}0n^`eTGi78o>^%EP6pGS3eqm^sYOdG|grx*!$56@m^<|vg^@K4hZ9GDf( zm>N@3e^v}UrOdas!o1}|C9VuC$fG)=PZZVJn(19*y4g>KlosF;s;K9SP2`$bMKP(0r}msL+`6Q=J6DRx?ID}M0GU-i^Lg?LH-#tXFZ}y?i54)6{B|App6J2Ow zQX|Uw2~R&`!UHbutruWD0d42c6qU>#K7q6pz5cpy;QM^Zzd`=o^i(zL;pV=nW2W5G z%Ql?2T?9HI`;ig-5knMwOMLIWSc{4`Cja}?)ywC%seU9SvB6LQFtfy1x*Ttd0kxX9 zKiAO(viwwECrelr2&4MkIA5vyAx*yg{^ej@Yx$mTPqbUPY~A{KuVZC>TzQ7SzeqWv zkdf4KM7!X_wYZ*YdTSN5zE0TjGrA`E)5d;i;uhI%|CQK6tS=-ns^I#M zlhXJM@0-}c1rJ^-3ExT-_+xGCS-kojRi`~yo1{KpY=iF`+{KGjh$NvArulT`tY!Pa zy*~p7+Cj$U^Sy$RM?^}$@KUW2Qzlf@Q6dJ51@=FXg{RAivJ)h*hwb?BI>|GxjCn4G zyON6OD^_L>7fpXM6pwmmy*?>+?z6gN3Vs!>XGoM#3X4O;^~|5WS%ww#YCbbUly;+A zShM%R@Joh$LgOQZWwS!fV{b({(n0@LwzthzCyA;pG|#0-pd?zqLd~G)?i%I9VP{vr zIlo3|N(vvWLq{QxN%xJ*+}HE_V0P;1>L``gV&0Li{`)De=x)ZZc>3r@m`HVndQxMR zn8xg3jSeDjtmx~&&RgE?Sn&e1*%BhlZS_?KA?aCZ{DX`%)*F~6UPKMj#=+Tf%7~b( zzY3Y_WBK-jW2)Ci#he}khq+3VzD?S?w!w&wXnUL9dk%P=aGUlL+2>mx)MLlE%A+a) zh?$Q_g8fK+Exg?86(qcL+i=JvJT{djHR*PJ@-sz0=28#mt>w$RF?W=q+9xW7-_dVw zgnK&^oP-`jS&ksFgyt*ce3zV&`T|Q|h=>(R3n~NOYSLeW+4SMm zN1om5stuzWMBmD5Kx&z$mGc3DD9a>-TCuo7H*qAIvy+ND)B@Jv^qiek;ao)4pE`O6O- zVQ|RO?4dW9Qi^^dVPS{~P8S=8C#EakVO)797Miad+ho12`db;A^x8`Y6J`W!HFhB2 z^r|KuU7n4zPMI-n|m&&r%@S6;zA@II!=e+oXfev>e*btdY^zX6LpJ`Xw3D54n zbG}{#SI#rP&OffmiOkV?T%hlZ2_o$o4gnSXCRkgT4g4SoOV@c$_8nvANGu^WF~Ua# z&gA6R-u%4wb&s1jNy#olsZPmT@b_DhNLUEU*O_z{9bkKeKTm$2W;2JJ{Ds1EaKYaD zS#Gx1noJLzXBRYx(Y|Q&;Q*TB^pU#2{jno|r2t*kf&uya1E~YlA2u95!xN&OeaO@) zsU?kE=;Jb6!z4p|Om2|~7ZaNlzi{=GMU=%_vJm=HZcp@4*%obRtE7L8mk5rPd9dYt zInW%I1}R=o?JJWOG{X1|5Uw!%Ld5?LqI^a@OUEX6yp{6!La9jfd<1h?NQRSqwZ!PD zi)mo8H>Ra_mAO`fQSMtwVB(kE_X`D}(N9w3^=H1}APd^BC9l;@5dlZ%Vt#6WAdPH- zcqYlx#`oJO7*4Nx$e)r0~eddis2tFV8x+$m6j`T z&JYKgb}yoIR7lPGR9%_ZO9t-CQW7Zv)wmscCaM{D>CgD;JZ_(PB`?}^uvB8ehFFXR zW3p2UIx@MDH95WZx55$UxR$^?qWb0v-R)~ak-J%*#v`qC3K2rtgUwy_@DX9>c`JEY zWbGemIOm6PqWdk(kO)R^L|O3W!%%`BTQ_)=yu1>hE7p=YPUFZP{mS%c)&F*XN+D4h z6GD|~Lan~A(&m1f5Y;w%_L;$;N4M`_>RscXT$DHc=EZKGsn58qq0{drH;Avc^1ahe zqvN@GGwe`yj;_ynDsGdLXPMIC>rL}*5fNy4v*KkpJz0)N7I9_yoI;hW=EL$`rr!lK zmAcD4Q%aeg`}U)HPfWpH<%Lh{DpUh=_eSb0ir2#l9)9KRq{SqPg|fM92eVQ@)y$|n z7->RVvHQcK6s5QT){g&Tr(&O_6v@>S9&5L##BHC`X!*GZo=+f{@P3Lro3XJ3^Erk` zsa}jj@rk)GgU|Eba?)l7c(U@(IhHc=k&Ua1LxW;daAuI2nHy*JRSvN{n1KB6S5!3*E zpaC!?fT;jX3t$j{Swd`I^VY$jF~p=_$v<@z-vG$@UzWv5;wuVhb2fvaiq|(KrtDg zD9AuWT{9gOLBP##)-s`GE>WbXXq%~+Fkhe6JMK=6yz|eMGLZ`0jaF=XQch zihsez!!Tn#IvOWD8buz(qKUInE%%o~rD}$b$pQC6bWXeHI)zkd zSp58(QRn5)8z@G#N(etJbFzp%j3~)~H7#q=!B-J4%_2qY(ClU&LN)7!KtKHJ@V8)eRJu!b@S-fOgzBV$9_m64* zr{UiEF%jJg)qgkV})DU8b6u2htZEk6gAfO~c%qb^xpLaUw6bvgjagE}Qn zm~>&B3htemv3X&#`j_`84mWN4t-4erxH2m3n{5Se-v8A4?Y1#2s={e&3xRkB`R`%2pXBO2rNpws5`mBd13AQ7{ohyQp8Nu|9{>G(1!) z)y0`4e%p7OYV|$Qu1N?in0L(moT^qo=0r7VS0)HnbPfp^cK=x-w#q@`o5l>wa--ZD z$4PV7z!gO4y$w|k+K`mgjLGR&7uVG4@ZmxvbSpKGJ5%DE-B)W{<1|oCSd=KOd~)wc z#GYL6zTg@-c%WXNls`e0zzI+1RD}Q>W3aiPfw+|N0`%vA>74YRj+nBV>p~ z%SfRh$}Lbd*1w#MBE^iV$4`*6d=(YDM0nlqd6|z;q?Ucug;H%k;`CgxFm~y(PEJrO z|DhBkV+RgIEqq@S|KKh0`WO}{ZSQ>?&T3zj8OB*owhQ(>N$lVfiey{rKILBw=tpEO z9W}VK!WO-L7ABqHmLSroVfTdiKX(P+NyN18J%$ynWIQ3Da#Erzn2t*>>Q|`{+?qd? zlzK-7=+7Jwru%WH2jB$%>t{6vt0Lz)eeRd@mar;!iSMtUmSt(05f$2m7b!$jW&cF_ z4SqH&S-8-QPgH1u?b@cB?li3uEbKw5eZke_PeF;fuT418~0dAaM+ZSPB(SzuCg%O2y1QiZ!{E5UB?tqs!KL}awue(moDWQjk z#vx1o+&e{;9PY7qk;@hh5u=NptZ$Bt2ztI~zV*uG%mfyuNp$O-!e}xP;C}D`Oafp6 z022ckAHbvlCIs-$TzTDz01{-u4uyrLZs)-+BL>CLPf8s+vLQ1X9MS3Tnn%(8 zG&@uh5D!P!p_wD2JRRkne4&I|{5E4|eji0^cq}@?SB{?U2gP%NL{1~cVPnNu{;Of< zN^Z?p#|eK*U{Z=@Zv$ z@%kp*r{OWm*&)K*5kkUWSt6^4gDrnv6ul<!xHP_e`)u05?Lu$NHp@2!#lhA*KX+HH!N1XaEIXTSboK92kkk}9=vPyz*x z*Wk&Xf0u?Y>;Li^KiK*6|HPjl!wefAPl0lIvGF5*yd&)`-1*TuqwK?CvS2o1_O41a z+x03A>+cN1%CY{=SzuhH0ClYYYy);b-yN>Hp~YL{tT_39{>tHv8n3UIyTJu?X%zkm z*=3j|&;oUQUs(!eo z8AJ{lASckZ@~54buo!u%daiibXl)J9?Ox{O6i-KA`>dG^{os{Ic)yAKA%i6p+$R%&5M|FIIRB1cB9i3WXfRn0An5}V-QW3tS4VU0U4 zQ-~ZQeX<>>M3b^7C&02f3->2!>rY&|r*rSE1nodv7NYH|Rhs3;S)5GF6Is#BY^B7M z;cYoNGNLj=g@Y%z9;p;-xjxN**X3Ip#vW7h;~vyo!t33XWX~SR6p)** zN2ILcFRf>4wi^Nb&AX6YJJHfueU1OCuP5M1Su5EoP+JK${RRFd4?W`Mh>wpHN|R>? z-_ZD#RT2DDO~Cr|hd#pgPtf+~xD=}=^0jSL+<-gh+$A#GeVLb_|!^i4-v%q1nVs)-_bdhp!E>U)c zU}_;L;xxrXmq)dbt@|vD#C9{QkA&ui3)cVf5c@pb*6~CE(0~3P{$Ku)H3`*qEsQh` zY1s57S%~ET;eq}^t-L?xWgbBks>xKw7q~uZ5~$&ALzuDtv;X*8V*O{w0Pzn2&pU6$ zOVGseO@X2wVC&-_|1R$Gp*Zn9u(zoLJ#vCsCx-Hr^0vh+yjFMC(0+N#>|@X{^}XRl zWU&*RPbB-*5Q~2kBSUHgWBc+oq5=T-;|Jg_K>4-+ z#x~S0U`+`*HX=J)CxOQ#R&| zk{(mcPiquIN_wbTw>dImA4VH@D=;Fw!xbE_!|X@3gv_sY6l_tc%H!3AYVLE^g?7Ii z%|OWb!vK2F?d@9)II{H|$*+;sC(D0aQN5|67XwSsp-triMICv&2QaIrci1EY3v_En)Im@C_F#R!3_TrBm`^)%f7wq^Q!}zzqcCLsU z*9Y3eqq?5!)RE+6gya~p5r@SgBWUfV2RJI4bPV`&AUnwlNiv$54Qg6EszpgfPWOWp zt3tnbCWaq?ONbVPHfTSAGIw!6(5%Pjnhzzxj9WR%(I42|WLk|r#{=X=0B&VNFgxhn zR?PRlyR}R;pu?bYT<6Q_f{Hu+At|NP`za)NPRlT>P@!XR%e1XU2xHQw&TP1H1y4#g z&YwScpr)_0tVCG0tm>tliud8xiRzm_XWPsSFX83!iQ2E*i<2JMs_~tE&xW@uUHNN2 zZPxK;&9o31lt4!^_`gD5JspEGvhxMMwNvu;7B+lR!&aULD4!As9g&*dQ+SLbDD+Ck zfY@l7wsmhY1zEy!vqgdVH*2r@(weJX1+sQ#>lJCO?)_dlt-IahAV>gae1X|cBA&;I z(+A}3foVIb@1}oj@+TXRegS|p0bB^+6Gys=34K?kbHY88YlT*G z(TLqIsHBWP@sB(d>X%01K5qZ=NCm_%1#l05+rEAgyIzB%!c4M?`k3ja^8xayoE9Uk z(nfHT<7-b`qCEDu0W3mMJwxCMPs!pyyl?q)PLc@thjdK(LowPCFS_(HK>Qp4#{oDR zz_|d<0B|vY(*bNIP)Ni4?F5?qX!)c`kX)r3Aa4aQrK)GDkR%Z}I}^i8a2kBTfIWX1Mn4$G@qzW_Y6Uu=mMYp{yviLFX`&rE z3WMdB*XPdJM%P+!A}Yxw^5H3ZxPy#Gs^PbX@#Nh`{goRygk#F>Z*g+jn5o@u+C^tO zKC|`o=U5B=exXOixCXEB**x#ewbCLem5x^v7Xka+xSaZB?j}K%S;-!UDn=*z3pHAY zkxTYcyyqM4X;r9yXWl4HD@Z>$BWn7M*a4Dv`|B8Ta?8s-atmi@YFoL;22XfT6UypN zSJ>q^&w})F+V3g*SbgahgwX+7GwELK!E0 zMb#G`@y=YAp@9Yvo(jM*j#)XC!HUohk$$<%R@+PxfE*XV6aa2uqxyLEs~l3whOCUF zTP^W*RqTZqjVZ;mjTM~QIxEFl4VW!28zBp<4i+VP>L%Wni}v42jfWPywTO)Wdbk`f zd&;E7qpy(MEhW{?l9f#iNIww3Pa*guKXqnNai&GD?0r>8@BsIZ4+u{HU_t?jh;!=t9zxm~Kd%F3XVQ(uuZzDp4v_V&DpxM5&ZSHoST( z`2-xPm}NqZ`yr*{cfjc5MHU7Bubaawe6HX8$#oEWlOHfSYTxe>b5u!}y!%klSanw= zPAb5tKqqme#pCBPG=2-7EqFwn_2=F0WFImo!{rR>btCCo+vfI$EyFWRd(U&_c3jq# z=?G=Z3*|6dhg^H5It6|b1CB;;`MG%NXnTP|Zu-oSsh$Z%$KO3o>=X5{KnV0bap<#sQkvYfja<5%3U^wMt0wJZqjqv@S~-g>COe}T-} zCz*xjr4_fgk9-Lj`V78Zbt@IoHUt~5npvr^DemkFUb}!rRPy|CGmKg+u@h>&sP|Eb zu)ZG}_B(2wq~GVK6g7o%va8tM7*E*mglFRSFZMYUTJS{Np4s#285-zCgcwDr`k1tC z>DA6GH!ML-5llZJr9R(02cbNtpVGaz4pg}n+IjT11>}hvDYtxfKB-G!Vm~fV2G@)RVB-&(G-lcV^jHQvNdZJ4LHgemq1#|SY z57ffIRgkm}ZmTO>^Q@)SaB@>b;Ip|pb(?OJW8;WVf|DA`b?(m<@vH)b)pzU`RkZ_Q zNi+u&=XIO;Yj$f@G2V>m>i1G}U?rNGP3hx1Uv+&k1u;t;tj|As^6FjusvUTR$s2;E z9PMkX9+lA9kxT`nQ|b`$_ogvvwgH~_FMsMliz?GgJ8ZeBNPm{`>AgEe1b~ij;gT79 znXrh;yq*n)1SN9(iV1Z*R%AXhq>^=3N!u}}p-h?CTI4w>{FNUF%QvChgzA{yQGb>u ztDiiHNDcq3SFtjyx5F6Q<1fI53822nzT&pM{S5Vk=4oOuym@P)q?dYALY-xipZ$gw z%nSMRGBbdcT7$@)<;Cp*u>Tmvv(1kcHq!P+Vx^imkSIgK-^Hbh=STD!aEr&|(E8?6 z7A;NY>=#defIg`!Dwj&yhOvuM zOs3S@W-Y2cgM^8pf6VsSABRxh(c|FGU(pl&*gT zah1`ItG3@vOxo5&bs0wD^FO%H1CPEUv2ep>BqXcICZqc8hYWzNz4-OHtp2y_4=vXl zUtnS4L02zeL#ot?ORg?PEr=FAVq9q510nhV9Kx#$b%nyHn+U(U(_%M#dAXHyT~w>h z?OFbq!ve<6^qq*I0GPi@QVH(;V~QVU4%oNySHNl*hbzPxH!WXRkh$6&wV;alxn+GP zYXg}d4yie=Ayfmaq(py96-)%vMx@uyy?}f3a8pU9{L*i_+f#Au@&KN?#`hgs@J3{5 z53l0hU=%!D<7s#g-i?x?l@Bi)TuP-H+ai+_KC!gAhcEC& z5NhZ;){u9h^9kf`Hxfii;b4{I2(3Tbo@?DU^_TB^t%4DqN*SE3QwBd`M8Bx;8Z)VS zRdlY4@zO&|JNl}V@ogz~$A+Sp4YzneEQzUbPP`V(J9+EvC z|8i1716a>^sZLr(bYss`jA7^Bah#y)(SM&ur2>Qp?pMs7a?1%IWuei29unpECU9*& z$UQ8T{{(GYQ8Z`X#u?%S#ODHVRwI?euHt|Fy$?)YB+-1tLw9g25+Bv~ufLsK0oTqN zLXzJG4NxIjblpm#TrPjn!EJK#|ng z^(c0~E{^%Btorc($KHEKMX|K+qJsp93L+T+k(?xnC@3?;8HOw%S;T|^$&y5J&N=6d zNRS*Q2_hg_Q54A_K|my%?mg?SA8Wll&pS_7b#J?83~D^ zIqxZ<`GJ#=PX+nxgpOByaCcNH&RQ-o6Y4!-wGSNVTNP7yTmJ7 ztD_dXb3BE*CdqbJ$s9+?M}_WHs_xP4DmkgCGU?06l5d<6A?k#JWdrNG?G`ss5v+RV zx5>=wzTlJZP+w9)zvwWjVA5VxnNsI!ilt_kuP%9e)Y zw)-i*Xdm3jxnqH&Qe*gUeJH^DpMH6uyzo)neC-KT1ByoI==1OJ1wP}*v%KfW;c)7u z2;A5CU(7k)>Q~_W&2K&{%JaKkTbpxl+r=3Zs@hND=fFMey{SLy2;LX=NCN2r&s&o@ zk9k}py@7f`Z~WW_p9y&ys;|6|&kFeg(EHLqc;{;T&oQFCQisdl6B}M14Rwg*>guOR z-30H8dWDp{!{PXtjK2rICc^XMbj8pnr^cI*4|shPsdzy5Zy>0dtUOYx4BjVyzdygS z7M0rxW!Izav#2jj?*ja~m0VyqIba_f8r z^@&fD%)|VWxp~SNf(mR&qWWq0Q2Y{*e*yCUey#JrVMC84P0d+KzA^qjKZShFDfCeG4Tak|aC~4r zl47qgm+;P)GOl^yoQ|qantAlkX+6hRR8x$$+UwSRSXnfEHlu3##UZ2@R_vf3)X8R`|jQEM>g8)8N|NMP^vWO=uEJYx*hMG3QT3+ zc`94}xV@z1%viNLP4vxkgpD#GKZhQ9UpaQuxbs8()klR2o^t({>3iG@7s)NgXzChe zV~XY5JM@!3g0DjV=kMTn7ohsE1No1y3)Hd@^-;u=fcn||w&`n$L{wP>xWADB{0g5B z$iJfdZ~lv^Z%IEHNtE$gojPhrdF@rZs?GIsuP}wYVougaf(ew;w<*LZ-^E}PJZwDk zdhtZ)`+v+xQQKk?1G7^YGAu+#$j`;NIP=Q++1ljla1Cg#bf(>;zj$3XOy~UFyLT_B z`C2_5dNydP&~PLvI!gGx@wKOpkp{$+N@Z`cn;zyJTRE%6c%hMXveDzx(HSQ+CeC!% zd5&HiQ7X(Vx>4u-`CE`rzVbTG2-QR3dlJ-#^1JKE$~r%~>-6Mxm0-S|K&vQ$ZDSxlnkWWh;B6&*!>x$x$M#e46R8RYxkTlD+kRuLsm?z1wtg zF&$feB5)+kr=l;#wX4UFdrmrKPZ}%I>NDe`NOZ0w;JkEnTPw}i`eOTK0=qcZEeSa{ z+6&|9{kQa5p#HKQ@?S!JGvv2I{`)=&$Gmf;s+o7b2Ns;0=>0gHkDMyR#m`y9aZ2TM?JSAkpE|0>WP)SvgXWnPU`cS+Q{Wh0BYK4(4H<_-54Srr23=fJqX#v`0o<^5+a zMPVZvF}#DCE!q@NdQU_C7?i*8`h}HLV;Ow8-O6cd+VNkP#GY2Te!D2u3C6Qb`~BC8 z)&(g16y)Cy&TA(p=fkAEdPOw8sf)h|>64H@4f!jO{}u9Amu{{;?jlo-j}&F)U~h>C zKQg@PC zk7TtzDayGhmOv_Mv&2zYQO`egmDtAs#RPXnC|7&sX~$DBpwi zO%{q~`viWgf7DR?sk%0s@h^HPYE(ddct=Qmm3pM?orMuP__BGYo&oKVW6s|ZK|JQf%KBs_9oip^onI;DE}@EVVuzuYnDqgp(szgFIVonpCidQ;eLd( z;){Z>c9ZliEfv+_!uH3D5noG3}1Q zE&eh-Bc|5&vcD{jK;u7r$R~#UqmWMs`9zS92l)ud$ASEhF2x_qB^c#G8=`N^{(M(F z4xN8DAz%Ha`cYHc4pgxIgn)QhxR|F>UB8u-hGI6JQ|DSNUoFGkSBoP}jmlm|w>Dm? z7h$eL&jWNPy$)y9uEFNw8>MJ640mLf2y6RK5+lR?2fJ^aITBU>aQNc#`XzKNZ3!Na zg5gar8^Y{K32Wt2!pC@7$QSf(AN4z%B6=u7SitoOU+>LmoDs2G(S7m>IRh5Si`z^0 z?$HY~zg@$|6rOD0_O2E4s&e@Dh1d&QK=5gC8|jDQ2u-^8@R*W(F+zH=(Rs#tmtfBF zYtWwji$FVcZdxH_PAcghbxXf$sL*ATU^CS-wL^)FUt+^#vyThqcUe_QW;!ug0^Rb{8Nz64EZM@UvO0RxWdeIh z`80~U^}Q-GOT8-a(Q)q$=lgwx#f~j4-{G7ilr4*}UyJ26HK2!%Cx77nc{%Za);lDH zbP~v)huZ(j`xbhG-`2bNth(~X>SsTNPZl^{)AK!h1rFr(++aOcvj6x)W7G8Yh1pAFJceVeaU> zYamXlLVyYr2;5boW0p%LiPg$K2ik|_U+tr?n!6 z)S^|g4yb*%q-*F1-s+>M$N=kC*g9>0D2!LTpbh-AzkDq+aVy@S3>hy<-iK=^MZXL| z`NtAq)#<(Yh9dkKNN^Xgc?C*>Dy4^e_!MmhIhf3T^)Tib181`yw(ezcJ!J zO!#DYS|-%uCr_u=Y~*)DWS-}xt8$SwC!}}zII5C0wMh(l;7fzzYuKZ`z=sjHt0xq&8hmHI5T`2!LayHl?Z2>2UbsCsNNo$ zc=eDLqx=GOmuPgf=JKDyF(W2tsjXWoO)pa`~lzCX&ZBzCcmtL(8LfGajev|dDq@#*e zl23kdlX5)tfYRT1u`WA*zy^ZwL+LRog|?bs@kt7dsX~_3!85$d}Z6ewu*w zVfW`RaM5Co_fx)|R(nH{4<^R%;&4kXJAM?K5ebto8t0wm#9k7~y+p97>yaoE9#i|0 zJKotRYl74y`bvfLf1JL>|6s%TbQ$? z0}BU9S*h^#GB1SJ3|;!?`SFm;(pD6%p#D05`~mZ0ke?3u8B${#_in!Zt`g0$IkqHb zYm~0NK~#hyMf+}2cac%cQ*qV(N_E$~Ez`hx*=;tMpgHJlIN?RMNla!`y=vmt)8us4 z4u#+MPdNOVXYe_{T;|cRU-W%LaLjI z*}S1}6$SZWOtj-K+g;|Jcw06cN5F(!-=}Z_s*femdZCMu-bl4FZ2#MOe|&yznRycZ z6iM@-JW8&cyf(I^(W_-dd7i2l-|3!D<;M;$_h4hC8`u{#d31L_REyv7{`O!_+2_t? zL(M>X;KsKI2Jk#@#70u~Gg$xp;(mW|Vw`1CfhF(TKkpZ~7NyNbEC2KSe}zJm&?vE_V)@BW+rrCcG!KFo zxd-H#Q8oG3=^rE(+@6N^XW?(^OxXtNUjo?Q{`%U|4@mu90zdvQU(|?XRpL{QbiVUh zm6zD!gg}Z{XtruFe>?i__16;*=*TVMk@23M9}P3z0^c z{LMkuO5TX5R zj1R3`{u1ftOy6C-^Dvu2K%8DKT$Jh9iDf~ruTc66%O>PnN@)bUaf7yi}$A-+#3i(Oc;v{KaRtN!GDTByGwfqYWPzjd4B=j*X*OqxBf zL0M3E)`uUa{vVlHlmZt}w`Iz+**T!?2_PR+Q9<`^-Au8*^F+8tgO0!PC6dn}zdcXP z3T;0K^&f(eE&}<&kS_%J?2wN#Zno*O=%c9A1N964=1&6p5$-ofHkA^jwGCCDvV6@} zwXSBivsX?GWv7XYz;s99dMB2~5M#=DyaJnfR&TRG>&tUOJ}=};L+evUVfc+NmLy1L zKcqW1r7A-cwo5 zSY=;c8NS#&{>5X+@@bCa(5b_La)V-fhBL$e_e`H z8f2x*l$J}kD&!!#{HEu2c!mmvRSL3#b>mV!^-B@L_N3@X2H<@PZ!n&~E50g#)t~%; zXu_sYiq}!B57HEFkkr}#cKzB*(yRTwRZ=Ebj9w$_31RqfZ{$!;kds_#*&D-}0uo>0 zPtVXY*P)5_hy?v3#vJeqDiE^nAm8? za{jGu{|~0`tko0zun`ZNiMWZZXL%a^D7NtFWP(r6(M*nT8NWhovQrOVMdp2!tp92^ zq5Z*XEPs;w63Qosj{k+*5_z$R!**d%w5(r@ek#>ZGIz0}-kcNFKjmVzh)#W^QCvK& zPZOUkQi2K&Fp;`%N**h~tirHhOQP(jp?5bn_{`DraGp~3I(uXy;k&O&mo{QQvgFP4UHQ(MUcx zDX_|_63Dp~SzVcU_uGlD9TH81vT=`Z#GO3vqT)T4a9xFYN~LD!G!B=wk6`(RMe|*Q zQ0W*sN0%7tNYks!TlOutiB#$z&nB?o`6+*tR6^bN(pU8o7ZPd{WLIl&Ilr47JS3lJ zeKYPRzo72(AE9lzoRZRR{L(Sj9fT^+v|Qcw&z+O?9+FURQcPe7lVlHid8!;+67p=^ zJTq$UY6aK2lV>2tH+qOyTk~kzd5+HZ<{46DuTc!T@w9Dwsb{mLa??rWSSC7K1~OYS z;gu^sC6~$-()J#Trr&NqvBqlgULns&K7gk{hH6K1Zp!6iqflfDvSGOJF>731(BS!Q zq;@+gHqgBOGq|^`*71yS-BWHfBX9_4B8^TtQ zV(QWc2%@*Y`Oz{>67l<3qa*s5G?|)2eyB>F)|I!O#+0zQYU%oR2$TSnDOr<%xJt7{}Cx6Cv6-Pdg{NiOHHb#3jFBOmW&FXw(ZPA?r6DSm|c zoc+82%aBpQ^K69*aV*Iy@?G$QDphCEpmAidhe?wL-sHJgIW)F~J71Jj2)V17yrP;^ z7*5T-q}Y;<(VWG7;IN{ZzEbYxP_Kx7#w#8eD?YSK(jdZGSrj0f@^7%l3wiM!Z<#7JlI?)D7c;_s9SF9!jS2l##I6q`Y_CQBAU?-Z58b{rpt2+SgY<^iagv z{Pn$pzq`Z#_J{oyez$_IC1Wec&UC-GbPhz%CTDQoqd{kXqYT3?>x7O!KP|20*C=1F zKN=gOZ8(d5wmuA)2KRB zD2{@jH=+2LT143bbb2se13CxPKO1~l!q14MQScvmIr|}wsU&{pdRA2#B`PfIW?S8B zQNbFDn3@P3ABCK86sM)S7D*SS?&*cAPgS4lP476(^E`-jC#OT<{Ze$L+#$9mA(?ko zk7zG7$B{0vao)T*vY|)@jb}I^KOB00R362Vq?#9nN=cC@;T!AF`W4=t)xfPJ7lb#= z<*+NoaH}G=^BjMH>a%leZDgb*0j50>Gk4yfK>6H=qv82#q{j;#UlX)G?R9F>fuinS z3jfO>KRPBJ;zQp@xGi=6SYK=-I-PZQ)MjG$rEW_dZ760JTdgkXVZl4SUE0F*Da>O; zHE%}rv1ESEr-H((_RIq>!20r^_j~*r-OzFGzRQvbtrM z&`Xi<^DkX*eD(cE7ucTkFMmKUFfs^SpC;}<&ji8;LF<=$t;%(uW|%-nJI%k7$qiFc zbE`lph0>^`)?|v)3Y<&YiQx#Hay6E7yny&FSOY|}D&>Dwo;p0CRMFaP```kVte%1sXk z`TPfK-|2)l)p885Cdi*xF{yMctvwXs$9c4>HgyTlW2-yWXIa9(rL^}h49ADhssvpe zcrQzN#A!i@_!oO{l6=s^So(y7wO&2@T2N0hW*)o49FZ_}zf3_qxV7;i+ zBXdo4S9cVfZec87M1lH(PydXOljspPX8d^fbE0a0MW@=!{_ax5?s;Gn>~)0S+^E&ZlEkv(HIOSjRs4~0s-7zf&v!E?;H@1ptIg3Utw88y4vQKI z-DwGhhVupsv9-Ib>Lq-FuXx_d#W?ksW@SmSlsIM0`s!$*Vn3F#{GY}XGx=~OHT*93Y2*t|b)`K4#k;3*N7bz_%*yyt zk`T^Owzw$EeCTF1kw9hp3mf(g9>1_MlF20T+xiYTBXUEm(>D~0Jcd7QYa&!*KR2Wd zZ%C+=`R?2vS^u&&L3;UZdMfA-j{MahL<)c4Q+>dKEV<74Qt%aXb|Z8?EB=zBw*1@m zdgi8~T;D{fJ__zaV@x@+Dx^oQuCmpx;Q3YzHoR)ufA5^4t5A=9fy}hg zH#wx-b@NS3=2rPikNXEE*;~#__1RH!35A!qA|JF<88Xnte@pgJ$khEf>T5VS$4w(5 z@ofHxT-CMk>)NbglC++(@)pi{DoLD`v$j1v?=;RJBN?gfuz5kbR$U^Ijs-+_L#hzE z(wU6WCbtJK`d=bgcwLCRi_X_$2sXTZ=Ryi`mu8em5xOSGdP_TWZ7gM4+q9@tNF`#f z?uGdi4C7cyu74O|7czh#^xYt}37w`+>}NMtq|DRAwqtxcxEmG4FUx7%?G$6O=!m_R zaJ0E!^00|@A4lfDw|}&Jaf9<4&3UIjSslgL+*O{05c`SoDZiNRAFie2ZP4fha9Vt?o=pb!8_j!y=aY?0d|e=slCIP zSkZU{8PC$k6s7LuPp(x8?sxPS32OO%3AMeWy+_@lSSYcK)nu7*llwBU@cMS2O3D_` zyU)Z7gvgT#0=dV2ph|6;=FQb4`y8{~9964r(P06%UiELsPEXx))RdxVRq#4KqP!!2 z|J09a!yw5wvx=3zNMgyGS_+p@89(u#P+;OMEpUZana6S7qz6uhUv+v5d?v`JgZ$%=e**GPLp~1V zlR!Qh&uU{4Q z@{dA3J>=6s{z=Hkg?vKD|5<={d5>^WA-e9IR7R;{jvA}iJ-v2Al`5S{x8hCT>n2~B zQa#0~WPP9932tV(P}BG}sznQHqL6C+L-67aRgLz?GnCCAe9`p-=M7ADqG@e?^KQ9H zK1DvQTmG==+%R$T-~#J!j6*p!ejbmIEg2uxmEYCbI!wQHNch`_=ywj$O(9*2ODV-6 zn1jt={ja;32Py&q>j(EQ54M2y zgXbX+^rt`h)D{#H<*JQmhOI*EaNzvA)AXYIiO4Xj=y4zsizatFTt4vkzz^=H9>o9O z?_azA^?k#G`=9?i{owh|KlH!9uMHm`96y{tU(dSF&;*(&yGsTq?$w_%fYaYQ?Z8e= z;fbt|Pf&ea_Sp#5;rQY5g>|@mVI3}CScmHuoWJn#Us+w=yD+z=ls7xi>cJ9OWp$8o zez;BE4>}{JyVFx(UEF^ifqjWo z@{W!VZG<-hbxUH zt#WRokI3tm->t(s{QVNR{T~_X9!eBoAdiRv_xt#^3*q(y*FU&^E9s0)`c~>G*0Q+h z$#xWcg6nqy(pB0n&0i_Tcw_TAt4lnbK0)#;!N%3{GKFNf>*Bq4BVqlCXtu|cIa0MI zvDI4x+4mjRJylyeP^>tz6-Vn?mTU`MU_A^)vPkmuwo+(C+l|MgwNGKaB9qQrIfYv` z@OX9fYu(9nuzvBDlWSP=vP?(}#T&e@EH7cb&5FL^RD7j;(QHvs;4&r-*6n0%vd=f` zE2P?LuF1x7^T0Zs{|C>DA2d_=`!sO>1D7w{ztR>5kg#*gV#8}3L<*mOnuW_3*5UdA z>v#tV`x{4UhT?PHSjeVcs!~y}j!cG+FOiSD8>!{1n7wgxDwZ*@57w30BI2LrY^f&1 z$$eF7jNgED$u=_@Uk*PNH<=6t*W>J84xT4ENXDm%`lK16psM0Y+!cRECOI7D|lM0Ytv zcRxgTJw$&3>7u&4NWH}tbi|C;+&%sX6}bFQT2~cs>@BDU{mLTCF4AU%^*5F(b=x#U z=!P#xPOZ#q62W?M>fpG}yFR6gMbX^y94S{=cd<8@Z6)tSWw$Eh%4ku=!1{6dzE3Y2 zugC>Xk;_Pih7`lPZky#dqbJM?HS8{S&%L+AV0~?4IgC@_wRFVg$8jkQLL{)xLL{Ue z#zu#Udow>mu=C?Ntfx*>-D4ttr&Jr*zgpbET?gweeOF$LVO&(b?&!In@_#7}>+@zG zL%6GXQ8l3#9NBGd{e*SA7^}h6;ANRmHr@d@T9+YMcboF_LKk$;1FtYMeki870qZ&~#fgqdCGusrKenxA zyuSqN*0F@RbHQP#dgB3RtIE(n%0I(pXN$MbOTk~|E`8)?#w;BEhFY}vt0hxu&#+1> zA*&v4ST8%Te6w`?8MZj?$z#0ed#_>r{MxYRsn}B4XsUKyvl^N|##d~r=3O4fgIFKU zJIZ8pj#Y5@9L4n2oWu>J-(t+@_OH1SSeLbrIf=RdOflzVrnw@xi*;A@ScoM1OdQ{@@V( z-XS`C{Q{@o;*jvxhv@M24;;Ta6doRbpddX>FPpIA`zM*C&l#73pFHz|>qp#;6elU- z6Ij1`#gFP8v_-IP(X{6;?|%iG{57;@mWs&))_c#yzcO>KQt=tIyXQU_@yGRt@#-kC z)Ci$W{Aq$SPSiVpj4zXpb!f{c-N5*o3oyRVj$DT0e~WkQ_ER@IOlpd|kPzil4p@he z|6o0pgKY4x4|;1O;)ad0y4*tGKJrKZMfQDoty3*sHij128AgXOgyWACbMj06IV0nG zo8!1HcsU0ipTaskK81C>gM|H!!mtZ=7+65+dd{m*`M6J!z|ZCiuOvR%P*IEUcsEIRZlPH)IOCkmpPp zzu3WglXhFw3m!Boc_6v%$YkXoH)gZ`ZfvR0F7b*|NFs{4sun+m{@aKWY8a zy-&i+ky*G8M+SM+pTPTv!(*ZFE0OcBCiCuM^00{}c~{uR;P6Qfm!_qTKa_v|%jSln zWMw9-x33wEj?1f{i{-+tus<yKjt9fzp>!{YQ7flj9iKt%BUJc{uz#65~KNY zv#AN0^I$oU;3VRY`Db|k6uy4~pFiOFAy|j!f8hDUQ&9Th`vabk4$n_A9HP@hIvhXT ze}?19-V9Iz@4Nhce}@DL{}6A!SrRu)rCxt9^6dQv3_L!Bb$EQZmEp#8JVQac`s*oN z(>!SdI6VBlZ*pk=>$x?2%)_r0N*uR_Sp{)~;PS0}w7yFqp~1>D_J`1#k`e?-q>63bGI$=!#p!1@eXx;bNCl5(2nO`%6zP5iJ9rw^{*uucZ053aul z@B18VcEx#_^yW?E#{@KaQRCTuTITi43X}>=@Nrq^B)|RKJXgszy8MbdQf_s z1n7Dn-S+ov!PRhhxPHSr{QY^nf5nbKysh4T-uiP$Ir5#~Rdk@M6I?&x)dVCx_HrxiTF8;$>Cb9yompv-5I1!G*}c7q2y*W>fuf{RsC@aQ+MY(EON0Yl+Us zA#7fERQzLp5zZg@`UNh3xc`RlZ@~G3oV(1#TlYZ0{X9=My+;BoJbs4nUmd(pc92hd zistF^)^XAe3Jdfzl$3wmzjONau=@46bBf+axhJ!f+eXM9LnDNK? zA2XU`L$Py7IhA1K3E>@GYB;?5F^vyjzF$x%a6dAZXAmj~>%}eCrj2=7q{D)rGX<;~ z{}CRSUAXnNeH$jeD?6CyhtqvH{Ma$ucbRRA=<>@|P8u`4*02t@5BU6LlNxm2K%!2@ z*PNK|;~0rK93HNp_)z)4=U+xhhtHoZkX|vgM1)iNQYJ367x&2W4|#b1aCo@?g?0G+ z0_$-5f_1ok!#aF^fOU9$0qgMi1lAABKluDhb`vW=r#39_>!yWLdinZ~@hx{3YSi*> zsC1dtdWyhVp$RyDl}yZoQLRKhv-a)=0*unvzeU>$Csu#N|%AJ*aY z*Sm&%WGeEL_NutF$AGyI4yPa1;ra*156{oT`oa3>2g#gG=Fh$J`h-lh5$pXoxoT(N z{lnqm^8>8I=Lee}=ENBO8dOk2>`p3Z(%Fmp$h(FNQFu>&}xfUDh9G{C0nie?0nXM8A z$3OdOoWzapk$mCFAMZl&v;Vk%y2F@B#@0`(Sa??Vy3PppA{-t*e)#+W>u~>>a?gty zakoY>3ZMTPgYxZ8IDSe0uDa#GY3T&Uwor!)0e{Tz!tulXFWi3M@+&I)u^PDfK)x1V z`wM?@)gqj~aCkUWDuKyVH^^?C=m~uP29BTYkp08wuk$uP?{z1%V_bhK z8r<5^v4QXZT;V?PBVuP$CA4$Z={lPkXeGKdH`3=_L@eQoQ^%vGn z4oUxwLv*MF@yo`N|AN)Im7JHFj=Gg5TZu$pA*IPulq zJbmJ5;h0Ls@i&_5dXe24-hD1VN&At-X(R;qd~B0hx(Kf#oxfwt@_BJYf^axK@t0;@ zaH&(Q3J*OdQ=VMwa^EQK%3DWFwY^vdDfbJUSIru^O7s%afqZLZ?h*99Rd#D=S5qgY zfRExhkJ@f2^ByIob!l#wiDTV3XOek?cj_}*S*o5Hla0pko3p(1y(Y8DeA3@Z;W℞_}84?p< zCFDTqY(E-IBJ00MvH2oYu=MMj1ZO5^2TX*!y6bluKGCg9LB?EeIf|KF>qZz3tFR>t zYTVC~{pe^)$`JnHY*QWf-X15dJ4&A0JVbj_M=@Ei1q6rCL8=v&^g%2+_QIXsuB@x> z7ZiQ)KYl#^D|}r`^CRQ?z;LAu%L^CMe_s9?CT?aY(e5f+x^eU#b(-Er%Bj=co#WH0 zIgi6he3gmxdFdbGsLa*4Vg;*`Lh~<2`I7Q4I%T)41;1Sj?d)^HS1Nrq z(~J^Rwn*=e-y}OZqw05(#q*J{`(4SSN!3E{^pT<0-y4N^a(fmJ4d$LE?v>7JR9A^r zm2)zB5Gm70ER8H@KUzC7?vf)jC3S-SG?jc5XRF?m2unwYON<{3_Kr!H#wAgSXeQh0 zOYs`Ghh<0yEe7H>eZ8Tq`LR!g>E=Mc~RMS>;Y#atDlqe^iiR&YLOm}|6J0+0y zK})SdN=23jcJE52zeU!^`%Ukas{9&C?zv*{Mld51d_O&8OUI{OPDdi!w8(eZUyNGI z~M`%X69Ufo-m_u0PA^*f;GhT3rWhJG-co72j8a&0q=8y^|(Ziths)! z1m7!{_-p-7gZ$)bHF1P&oe1BwC|}-nh@w`{?cu9G%uJ~8p&6B@TB>uF1sxTa|S-W+(!{u{MYv6xe<}#;Cs7u@?ia~ z2NUb?`sLU2`A^JHb;*Lc&L@ODDf%Pv2!1juB=Mm-O7%}+)ikM9hpImQg z`ZLdkUx;vw2iuat*!50s&+^WzWnT&v(pXwQi<}#s`0nQR&hN~WLY}d4UGq`|NmD&8 z>ngoFGEk7~LJCS;sakXy>z!kZtnnq~P4deNY4NHvJ8Ed9lw;?zXn&NCfMnQxIDd8t z<6Sv3zIn3yr+f2q>X`8{`3ReNUv+2FhhaL0pJ!f}CTLP3@-_ekl~RmS>zht{yfx-E2|3N2!pPUljh!VX9j} zJv^YBs}NIv<2#DBf0nK+^O|3ht(sCW6|Ovi6+$x3BIrTxb2R3~rsOt$z|UP)fqSFv z!!MB@HPahzLqdeH3esFD{8{ovH&!M}y^CQY1- z?C~q><9C-l+FGL=_Q_$eu(z-+FV}_0!J-HikVqstENEn~JJMd=pdu`n{~Zyyp>Rg> zng{FZweHU{l}T97a=J|@{hx%ffOo=zJ0au!(Pxa01W?g!R z@py%h^Su<(6IAq|0T0vkx{Ue?HdsNaPWIL>Ee>$hkQ6 zs*|=Kc`Ju4sw=bPjef`LJauG7fngr&(<4DbVn9{#%cDm)cQsJaTW8QIM}?)PgH8V) zQ<4`pSr&ZY;%*5EgR{|~wazt#s7ySO@zrAD>kcuxpDt5iOC;{x=izyfm)foVow&wL zzPOmIzWlPzn&bBJjhAVsu$~K*x4tdC75=FkA5kA-tCDV6AQwfaeuMc|j~g#qT{eSw zT+>KPwMvU)hTiIfv2xm#>HNFClP|W;(6GBs4E;-1R)`<^F+2TtwQv=m=-B zRhQkl;uDO0_*$yT!6*IJerb_q`!?e{wFaOou871qYB2;DYFhSRbj(rkv~lZ?XH)M` zy>X9^A^f4r^M{0c#SS4#{LJ0rjw1cotjT9(cPB{(GPE6|D{Po#f@b1cDR3Ee>SZWD z`_ghNW|3A4m`%Evr(W4AwZR`&s(ZJjd*&*C4DY+uqM+y!=`vj^67Hnzo5yw}>{|5~ zl*1WDorDQklY>uFwQ{90$>)cMgd1!|sQc(ozOQ;{BA4Hmn|D-0EVsqB!Q&^lprY3} zkBQw6@`shLMQndcETfXWCT;{aP$zpd`HHA61t=xtiz%xQd%F1jTD!ZgXR8!}{5Hxh zAQwi6OLBsBu}UQ|Hug?;TFI@CRxyP_14OC~EKkgKR-A~_9Xv6t`a!Z4Q#Wlwy$NCs zSE#(Foqxz?JMd+e8H?n)vxq8sd~Zb;P~>7|jCefLJ_LuAS{7nrP!0`M13GJVxr`R% zlW&zPWF4NU7N%3a(8`Z3mbiuWcqouTR!75Z9D^eHKJiN?@LJ^6SG?L^G(Ji`Z)Sa< zl(e+o%Bqk&s$NMD;yxa$;v2#0sd>@)&9bE#XC7MxCOGCpY#B~%_pcbN)JK6+a&?(e z8MHzAxP5J(@Xwz%RfwIpUO#Iox_0!(p8ws9QQ6plvo7CLs&Yf;uC8h4=*lE!dt2~s zt+~;sOngoMu8%Fa71a~LCE{au|EYBGo7XB;JP&rRrR@HuIcU z+1-{QfaSAlUH9tuX&YwMtdFs^^h$%M%#DR6uA3-Vbiz?`jJUZ%L9}e1fhY3)h? z6P;B|qT=wEfZJH7>Yp7Zdm;AdjLhg_K_LU$MA7TEsDAK$Wy126u!b25(bi@`Kf)lT zSi`(cTEXHxgxwQL>)+Os9P7P`_?Mr>eC&6>5fMuGyU&)r9Q>tEUpBJRX7`Oi8hz;V zg@9g-UW&@^;QR#Evz=yNy*2Jcj;=}Sw|phTH@T=7ySSbDMIn^g5~X)rR393SBLt5V zEhtUIDdgaju{kxK-%5VALu2hrHvy@Y?w z*ew2B8t`&nK2KzV2}f0&k^6>3oudimG;WW?JfqO1n;|G6-$Jb}-PvJPsojiJ!M8S= z$mCd3)xt|xea_hWfxqNeBEhM-0lCq$s?j2&$wzi?6O#3|K!jA-Sy+J`u%^u zF7khDpa1u#|Nq>-{C}PP|0nJD;CzAuh{Z`f#7e~x1oGg=|H1!Pb6|h2Z2x%zMps+} zqc$!=s+201>Brq<(R{-jQ z2Nw7MHwL%{OcHPexJkVXOlf}`fV$wJ7oGiW0ImTu-QNaO%w=Hq``Z9~1|D4T1iTpF zJa`D#cmH>QC&2>;iGZ^JoB%gRGWUN6c!33^4{#*FAHeDWM}V74daPic3UFh9&ERHx zFW|iZy}*ruIlw~!o&paEYyr*!@PRPMlQfV&0ONtN0iFtQ3>Y8a`^YMSK!^h_2+$Rn zEa3YX2uuy|P=LPY5D3kE4lowjO~6wD<^wYYyci&p7}y`+EC3ULS?q5Ekm5W7VYB}` zz-eIifUf||y?{VG2D}(x+GPYHa-RbXMj{XefQJIyLm?2YfFq<42z_}3Vi<5^fVK(< z#0uc909nxp1Ri(*R1lyQ7UU`5t^gaA!7&29k5ua5xBzDXC<4p?a3nx#4Ftk?|95~T zSHN-YZx7H^6BytY0R4eI06Y{RpEfuyzy$#s1M>uYA3p;N1bhtOV;xXE0e1yh1FQ=0 zMu5(`;8^y52WY5=Ky(3a3@{YfFyQ<60oWMeV*n|@)yo{ObIP z05u&zUIA_lP|FeI)jkL43~UQt_5e=>DDMRFBoiDXK#ViUlYI`5;t9wTz*zud z-9ewQ|2sf(570&c-$xH%vVeyI)b|9(3%D^r1#i#~>~9ay(ihYvz+C}SG=Mq-I150b zX3&-ZM*@^;0rg~`1GIP#juG&E+yd4GIN}4S%fJQ!X936qY#4AsfO5b-0LADz*7O10b2yT5n%2|kk^101MCO31^5_1w^5KMS>U(;t^lJ2d>^wv zgSr8DF~A#Rpxgns0Qe4=65wM16~@7_1FiiPW56u{Moxmh z2JlpXZ>K;T0DKH!&@|`|0S^UeI0Nbc;Kl%{W&u4+!bIBFv4uG4Zv++(D&3i_XY4ls2E z0EdB1?f(uiZU^)mfTsdf+Xcs)1IiAd1u$~J_wh9_TEKe&?f_#09I*$E z4;UZdNPwEaL;*Jj_yd^a{x&~Ad-{bypaCZbm;}ri@Kk_V2pohd;Kcxc0khcO9(+_? z71(3I)c_g*O9k8*pf|8gz(WDH0V@E!7vMSY;rU{~kpOLRaS(NYy8=uH)(dzsz$##a zfHwks32YefUVtRvBlI5uCkJ>9*c{--0Mo(8~h=S;vnatcFBa@lw%mfmDBPxxx)vQ%Z)ov${gtVbP z)MeSM-EF5l^bxJqXj>O6wIl1ZOSgY%OC^-Z-S@k5ZgQDSfLeTZpQqf%&-Xpw{m%K$ z`ObIFy_vbgmAlPk18&chC?C8H_#Mbh@HlV@UcNU6yb?G7DF-LKpznFSRImy>1}wyH znybMbz`G!Kf;)k|c@jCnFswg>(UFF!oW9JmZGnmi6(4crbH0B-~S5+Z*Cb%E>g^2vN~CvZQ+1|A1~ z1~2uT1MUE}K^)+WXCRf}gqKtF-j#?a zcpUh>+c9U%fsRe+e-FkB{O~UHAG{y=S^lR`I;EXS0F9Np#Z->yg&_1vWB7^S(egw$`r>7;l0g?+| z4ZIDK$M!%!Bp*BkJOG&j9tZyF8N>v!eJPn~25zikWt`HeK5BRlLQ3j6zyCF94eZXg4!?l3*z(;>5(Jb&b;7-UK z)&mc|iFF0u2Rs5<37!Bx--q?iHo!aHLJYy3zy!p@HbCdwm_OD7V~{A@1NR?69y0&A zL@z_a{Ngdh9J~$q zEF=yd1GYmBfhT}@|B2jYd!XB7qE=itL%>GJPoV#_4oSwmEW<4W9HbQq*BysAmuaEQ zWwOKUG=-#U=u*oWGG!E-9VVw#J>uNCY}t2i2IVfxbYwWKAxpI!H}yehF_EQMa!9#W z%B?q1#yYL-(2$<%0%yQJPA*jvQxpD62X%Ztas3rhX~gf?J6RlxzX@ z#$?bKw3%6_*Mv^1d-ce=dOwE87m}=IvMw_@Bq!<_Irk~sO4-F$hs7y}%+;oN+PJcv z=5PE+f13WXk@~zW$}3168QK|}Nn?w%9a+xIP)4;iF87%d65DQ1W1F2pXIr9vmW8sG zSsb#{95TgG=DKxh>WvyHG=P{Ec?IB0GBGJixHdOwU~OXa!^$Gi@6 zskJpRb3|Llc}*9SWoh!=7?TU(+&A7A4;uEMESa*fpK(TM=e8TprP>vjx z?zC-*@#}Sr{n2$g>N#Yz(eiil$o$o98N*n+#yUo><>BwfjL1Wdh292pW1V#4U>jYG zw#Ha-Jn9T{dA_pl-`ECo{d#QF8+~#=M%zD(cIooO*rt(>)?T_cj6PCx;9Td7{)~1! zp44_y%X*IJsLw@eKJ$6rfArXD_a~njz7D0<*V{3op65Dp47MAutY|;gFYYI`y(L|| zjBPX5a(c_ioE~iswCneF>8$H_YJ7Ab`uOzmv)&kMKEEBhx~Wt*@CCa4_+wOkq?K+w z{CQg3yMxNQAEh}vAEB#TAEs$d+i61mL%6@2Bqgt6s8>0SDvxB)!oyZ7?X}R{ZkcB7 zG*dyViKaJ6G`XH|pE$~OlE+t&W`Eblx9RNrlhJJT@$vYLYmMzM#=RBCO}`h=uicyn zArZ%2xC>{l&Ed5p=a6%p?;&s}KjJ#0&k^_ipkbfT+A15_mZnd0&#lj`j>dIWJ%y?d zPoW!oC)48YNmRD;GMdwxPggfhq|56kU~WoA`Z4AQ_tDs%F&@R@Ugkn=^zo)*YVPWD z%66&u%zP~^#yvFtav9oxd9IJ8$)gN2Wh_G<#CvKISKlS!@8Z&C7|my==MXmak5ND47x+mH9>dWpgRs- zD|A!fM?Yj6+JY|Kkr4WRfrA2brzGuX3Ummp61Y*IM_^RoeF9qrwh7!RaIe6)z}E#H z75JgRUke-%C{IoHCs$y;!07^K33Lc77g#B9rNA12^#Y>;9}(Cl@CAW;1@;O&B(P85 zQGv$=o)9=FFmqb6-}wS(2`m*@DR8C08i7uMeu4K1Y!&#lz?i_j0{06%B(P85QGv$= zo)AcvC;OKtaJs-*0!sx}2wW+!MxaxmU!b02O`^O*;Ijg|1imcr4S~NFNYj)3(c8IF zl;;RsDDblaHwp9$yiZ`8z%GFY1RfOlw!mWo2L$SV$6k@_M}fd%f%^HXlyZ$Idj;Mn z@Cku2fqMM|qI_835rO}cVs~kMCg|JuBg)F!!tos zP*%d>KoH%$27I#;4J%3jXNc@5`-5(mU#WFRn?p)%C>mzH1NsJ+FTng3@JQ6<-cswX z-%{&!`TTfZ<}BUjMpxKF0jl-*{k86J)Ip6@>uU%#hV=%2ORi|phi4ij_<}=j*Dks1 zJ-#qiNp62IqR{=4yLt0AU!c~bz*{{xMi1&bUm&W411`A6S9Pcra5eD1gYmq?E+Lv% zJa-~_8u2F({ZvYh{Wp>~**J7#OXj8fz7qSfWH~f z!m%#o^YHmsm`8%{EwJITYVrk?Xl(#>h|C%fMS}qfnzh-8`Wlp4o``464MXwjG&d*> z?gkznb!j{VFBmg({KvdoMc+?eUN)|a3jQE;r zQN!i;ZPw;}raTl1YL___^)BvH2lEJ?hmymtfG4Q={jQ7$dS}l=?+ZEs`pvNr8JdB_X7yhk0PQv2Tbn2dXE@wZOh-i8M!&p`t+xPYIqKvPOgc;5LOF zj|XoIg*0AfZH)L8MVp%{>(-$py2-kAXpqaT>y*vQIn{4cn#skb6@kVE6jn4Xr3jbT zA{Rxuh0C`zD&gkaT>eIdP3WOi-3C0>#5!LDt7E+q-s*EJ%Q4WEm>9njUP|v-*DFzR zVm%_+h zcS4lcG-9hk|Mp8a1j7xk=o%#wacx$hiJERyqN`nz=!)b#JjUfUK~JM!Nwx`_7g@J< zs}lCR5KYfICDQ1R(iLWCYkcl4%Y%))R~fnI>oOb8#Kpwddh-P8oV5} zY;gIa=*xOvV6$IYTX(nOj#8#|gU_QZM-tZr*T98uSu+;z3|bycj%rl^xrU)*g+sS0 z;EVdO7Vbg$QIu~D_zaqQTHhSuzO0X8yVy+2XoKGsFve=Nrr`-*#aoxx8(0 zT%$Au!&txfX&Rn*5oCHu(`ZvaR25GK(*|Fl%7-vTH8;Gk4{5kMO&cz+Q`}oIeU}ew z)+@>P-tpglm*l)LNM4DG=JGWtAMrYuEUmh2Y4xg-V$B%)!YtT-61i!`x|>(59&V=s z?dTHpD?=x$p*T6BV8e%)~zO-H_A}v=$%HtFCBl25y1E081^hY zN<0?05jX|d3IrGqe9nwgWg0y`2BltuB~!LN4qIFhTev)YNW}JshZTY)+mEHOXM-b< z0f$W8d0a{!v87m-dI8vr@^ffgKP*&3t01dsg{Hz7$p)!}NE!n{dw9%P6ToPPiE?tj zMzUo926zH@6v?03XK27ovbC8kRy<9d#@?EFnkG)}z&Q@p`HoxYimUKz?O&+$qu-7Y zbMG*c_sgym2pM1YeYb1Nj>vYRqAJe<1hwO}XsJ>a1cfX;U*LXOV z_(j5bk8M;_H=womL;O=J2LIB#s%k-7QvTFInlOpeFrO@zIow0%GumRJ6) znr~LvKYj&q-XrPX;Mdp(=JLVcsir0CRGKjPRngjYl$rGl+V=RFR9h}vUORKq{7XmR ze|x7&W5y3s-UNJuMj4cm^*H>WqR#J~6)(Ln7t6o-#~4fFSCM<;@nk(!X=BeB^Ab7A zKce{iX?sm|CR}!s{;4l*A1?a*zkXUZudK!XGwH`#40tcL zX1q(Ed-&qc|GR@{kLNvAHSd34m9BAojO*EZ@O=&BM)>ZhwRfJRxBqyyJ>o@Z;}ebl z#n)82!*^DD@*8JVx%Pe)aX$*b+1l8%bNgrm_ICD_PBzu6a{Ft4$^LsMUGF$S|8Xj9 zd-BWwrJ5Xz&tUxTX#R=*jJhIm+Nft-l<+bZ8G2Y+!~cj9j3-?XWdIRDmNaLr-EMH46F{ekm;)eTF|SS*&W4xc(VGn>uN zRV`gOsMOuA=H-pWFA=HY+%?jk9cwa~PPcAvRJVq`sw~UA1}CSrJX<+Umdzi9wm8*| zHEUF}$;9h_+}S1N|^di4#e#UgX;=jwK!1TmN1tjvs)9M30O?^V~YU8%y~8MHM|w6_XzI_Xn3 zsgLhyQlEJ2Uihw3p&PVVOm}}0pQ&}whfRpXiP_g*bILw@7LV%`Y^Jdt9{JgV9RKKn z<_7hS4L7S-7tBDe%BS$i{hg`p{FUWNvTS-_OiuPM&=+2hWuiSfGb7^wa_&@aPWCa_ zJOuru3-#46wT$bRC@IL(enOd%by_){&S0a}Z5cNxC6)}%7#Ll~^)ES-k$CWo)bgN; zpYo~?NvisNGyW#!&q8dr3h^h64*D__V*l6|pz? z+~Hs(=#ARl!G?vdNW>q+3FO0gJkmsJZz#wYzAvv1Yalx!%-W)jkMu2T2F9W#C977 z=(5@ELrn=I#j|$3ZIx$H!M#ecqo}B~Y`(pytaP5ew8ULzca?b+yTeiLQ52=bQ{r{p zZwSvP@5}si_M@b%sHD7Zfy-XzS%7|c>pb>yrPyP46_=Jeii^v<3rbuUryu3#>_@4q z*jrq#l-SEk>K52bOG}IFb*=?&yJy}4PpPZaHBTuizexSSzwURgnJMzln?KJzf1bVE zp%mFmi%S;R7nIf2*~?2j4(~jV!{eH-^~9zv5@g^fpPC}aIeSvBIK1;+MaA|yZ(RxI zMk%*rrpoN4j$Nft-&PhU|LVHX?e&t~r3hS# zz@-RWiopL_1Wc3*->tjwzdRGg7-F_qWy~3CiN#{^SRzL4w)V<)XM0O~tUcbIXs2Da zU6s3>yIOX|cExukcF}Iz?#kWH-7ULgyW_hPyQ#z0QQ6__Xz7S`#5)ol)M@Li>~wav zbjCX4orzBBvUOEKL`?Wx@3+|#lrwkN(Pv4^^C-Olco?$++M?w#GS z?(Xh=-M!uDn9amr(b2y4Ui1URVbZ?yYuVenw{7pvy|KOBd#MG#?_txPSv`)P@}A0` nl|9ux8+)8R^*yxDL^ho3gU^0=&4XVDJXgbaXb(>O4IcjsD&U;+ literal 0 HcmV?d00001 diff --git a/binaries/x86/ip2net b/binaries/x86/ip2net new file mode 100755 index 0000000000000000000000000000000000000000..8f9f31fb16ff1d4aa22fec9c98fb7789feafadf7 GIT binary patch literal 32452 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 z zGUrP*-*FhBCn6Vo|7IONl;oCk7%X$Ef%j9MSEB^f{`2=AzmsaT_A!_4P-$KJg9*W3 z6jdoRfurSvd~812gK_G^A-yJxW}xBy+0v*!T`TTAwI`yy>uGnC$fjAGqdG6ir+l zM;JFFdKte1wbkO@R{!0%+>bPhIm4X$e&F8MzaV`Jfu|G~bKg!@{&oMW+(wg+!Hbqv zQjD9=+alt=cw}lIyTR(W&?&5S_`Zcr@4h1LmiZbZ=)D^PVtMM~;n6jxqR(SBG{whBWL@nTTdkC{_9oej`<;O`jX+ z`dQV411?s}lM_Losr3vxop@xn4Isa=s{`+{lICA+4A{A16Nj9Kgx{K1SOSPO34~F` zJH<3zuiO{HrT6-lsoq@0yi{7-X2qlh-Xx6Kdiei+yI$nZAKUcVw0OFIR>MLpHBi9F zRlMj0h9zLe@Rj%Q9Ff-s3P(FwvxW9?x25Ek+!kZN8`gzwkMR{u4dSm?z_iFUv5duyg~hf5L6OShOF9>WV*_1o~GCM{w6PH)LbL7@SBPu*UHO7+>qr0UFL` zzjPVBp9laXrsii0e_*?PP&O%Py#H_%{V6y)08_v1hAsy?iooD-(s6xP*tp29Cu10e z9E)j$GU+hJX1;W9*fYh#|EIJ5sK$QSZpx9|oit=z#@H2biBzg!8r;cN3Gpic6&1?F zy74yP0nH2}Q1VgqBd$9kxq6Qs_5wE^c%l|x2o}R*)>~(-)GMBqfGx}UN?2!98L%?S z_f$KIHt5ePJUGl)YOIX!6hqXBKyyu&>D$NVBl4@46lIO2PA?7nfDPyFdzCH~CAPn| zpIB++qn!Xi8KoIT;NT;kWt;tb5EgDDF2b`H9YwoeFG~~fKDs5R(>BsnNDVcp7C{nx z`>mA&q?PRDsZ!c*$=xefhKaJ5 zk)^XOy9!0x812r<`_rL+OOjKMof=h9ThbR<>1n!cXa1&DxQ{-fGiU`kxGj3j6V4Ei z-h_@|dS7pGhwopg^j1&gXen+u{j66odl$^~J0s+RAwE!n zd-G#s_?B~Z6N~cA=`Up$dPm-frpmI7Jd6Yu<_sAZ_Q*;F5X5+ zRq(e4{wb3yYePuaTpI(PR=WOi{z@|En^^tl z-AUQsFozIGofUb1Ib~&0`wZQAQ@#49A0iMbd|lohuVhw2BJo4mSO!YpY<%py=M*Rn zN3JU&Rwu}SXB4o?r+&xHoQ3a0q@{ZrSA&6Rx`F2{K#`~-F}`oVPlq;wW@>E}JpXd@ zXSh!sqnoE%yWgr#*VkmeIp!{#Y(dt!(*gEX$dCJ-#1he7Mz-@VHfOK^{iN^*R zt87d4?KMmXMZB@SiaM@}V3GjHM@8d$S??dgQrEDKc6!OLu4f9wp>-3biUE=X+3XF2 zlj69=ph71*TW3KD-fobs_sRB+FwZ|&SJ*~G4A4O{V!u@lk2GHhfyrt zc)V|d#>&*k(jfPLR(v5obLAw8b(DWK;OtGBOv>D?VToP%+O@Z{AbW?bPNR^e!NGQk z-XEoKlE_V;g~lOVG-l!F4?hbeZ~sycxcmam#f`(x8&g?9d{_;GTw$`~k4sw{6=y-d zSg(lg7FDizTO^YXXZ#-Sd@HRwm6Hhy22bq~+s|LtheCqAsF+eMFX{tyuMtKDgnOd7 zBlYTUV=@7<+*2#*nj7eR+<58YRljktcaCL5W75=oe2CwU2kM5*FN~y!V|^}^!y&L1 zxgqun;%KTxxUg=56Kx?lM4cMdDZPfw`kD6^Ug^mjOz=*GSs{n`@29ie+Q-7JndjCT zOm9(W(9Y#1*T_f+n~1T}32~^kIKmJ8wAc4*2}GT$!0>F*R>W*jBH&Yrn@ap#EghA+i(LcA`LunaDmHU<|%jv~U{vsWAZ`E=`L?rBn?@^|#8>e0jBs`2@bE=F&;srB<&E zE+EhOe^GO56{em~l`5AKu1XxYSY{^#tQGR;?PYadSqWyK^A=dZ1Sic-xhCV=mIZ!r z+pZeckzc4ICvE$GMNtcMF>*e{)rUNdo6{i~KcpMC#+;rMfp;2=Di-?uKxdtROo1dytz~N5mj+L|z}5OCOU>4MR-KKSjj2Gx4wWca z6rblI6>KoQ9MhiNmRn;(I}OvFQ{C5SrjF%kP&*sf6ffrAK>u|u&0%KgZspJQBu-@t zH7+$GqxgGWlJUMM7)0A?MnysiY{ly28rXqTxW{PdnI^~d{b6C|cOe)DmeLIL?NUf2l!t?BnScOe-JbX=>$%-?pw ztO5n|;-Pw;M-=SGu{a1uv7yrPN3m2Kd_on7POU$xuEGb%=ZC*-IK7z+^Kh~JF}ZQhQxz}B;&||+Eh7W z>E?Cg~CHddZFld7poGO^TZ=>PJGP-Ou(xFnz9KX(wy?(YGOQ@ex6w*9fXF zpd+gmxv8`q;>VPY`%(y%TnRdjd7m|xU21+V=PTL>#q*(&^?&&rg}_%Wl(uH>bM4izv9dj2*B60lGM}KBULa;` z`HT^+*oGSzWx&kLE3K_iNXF2@FA{E?o8-cZi?~z0M%Do34dr~s+EDxWN8>2EJD}GF zXM95adtFERVstX{ylMZ`aZgO>U|Mqc^CdDH`rVmYtGo>4<~7`=T2AtbgN;h~m1aL0R!yBj=HhDsq4z9Acc}%e~B&jXZ~}w%!zFKY%s`B4#PPW8%H7B=2_csYD=nx&Blo zj&yz$t;&jCOJNdyk&;BUkn*w|1LHi&YA5BhOjr{q2Y-l~y2%Yz8M{?i4V&HTQ8lrN-umTONiM!Q{XWYT*$Gwq6}5t<{z79JYVXSt9F`hj4dV%7Ax8CKe&d zVRIevS;=zY>v}~LkdWQZetp#3VLOR{=`0G>g@6%MXoAj1SNbYEiB=5m#U_s=F}_f( z8)&`;RKIHP<;!8ksk^-=B_|yd=?R9mAU+Z@03Y*MYxm^!7G|cgAg6nj zIQ7T<;%L%tS-)R9%>rA|m+U%Ztc~N~i!+8>Hhvs9G)8rD|m{q@03kIa`8W={BKV7CmW?8e5N2u01Y1@?aiojgs>lyfl_ zW4D^D%~hOVz^A>nB1)=WEz`GpA5o?EXW-oW25}7c9-J`2b2JFTf?fDPbPRCJ%7iB> z=M*~~R4os8bIeI~xyt-OZ!)w~F7Q}OJ1Zp|_!SIGSW8cHM)33C!B16C zsk5a=JkKzd@kB5lOC98mg|B9fP4Ae2%L^vlvc;xE&R*a}ktUtE{aJiz|FPO!bnD=# zkTK#lSNfYRMWp}sgUz;w9Gp1wvZ!ysxWzQAW13+Aqv!cKB ztB4w8ph`<)FDrjxW3lG*cPT&&Bmx9tr%)25eC*lVIVnXc4p{sC;<74Y7eWOYcm9E-%4EP38z$qsG;5Gam|C;zxeeAWB}Jv~5o z{oS*fAirvcm5c)#2e)sMB?VzT{0)fowH@cz_wU(pD&mjO%n&WE-E;i+UZqijlx5G) z^1=OB_Xtb4PHJt5Dgq|#^eiWIQ^BHAOpG~7AZcTems01K?LjrZogRuZ{!jfDDcy~= z)y+%oRGmi=mWA;F{UF}%mpvtG>inR#{J>#)(a#-YR81bk zabsDElZBIgeazYlLjD9pklchEMt z^^ho9Ahy@EKU?7j21ZCMTix&pp82V)k$|98!h`LQYqz0|jB8zDh9v21dpY+MtY#?( zK}j^zq_fg2_S^jW$XEUsqQu2T!dph-w`<#5pDs$9h?EV<44}+4VIK)H!d+QDRxlq5 z(*Qz$`?~xM_(&uXQApim;BMz5k$!rr$V}#*W-#+y-Q9#7()-3@1&TH7AX2+4a(WnR_}Vt}0>~rOXL8=21vTH6x<}jft@;dAuRNZgttZ` z8{@$989VZZPr*?IZ664O&><7%iy!s9t+9{iTo82Zw!TJ}(x7$PU-Kq6r}~8YqB-v zulcqob$Wdb%z`|hKaqfOPtc8HJFvA}#P(T61(%PtJijH(7Smu+Gz*Y340KJW+`Bb< zQ&2*j8e-I)vY5_+&Cd>*keazz#=RQ)*H%LY_#4BKm^$_-a2Fgt<5Izt1b0wV{Kn;k z8d6+ULL1YiOO865=+<2v{Jf4FKCydsPcs~o+sA{!R1hcq*N5vHajbzGd9{y;GDfW% zc;a2;xl)6cAhfk~gi3-Oi9!Y2iM#43e;b~h_n!>9_e?#Lo*<3bp4T`};?s$G{@iV( zOE9tUg`4|wE16VMBtDt`%GLPuX(M#HOVW3Y(OV>NRE~RU)6YRoT#3Df9_3-J!E=m8 z6r?r1D27IDRf|hk{$+?D(`R?w&nRq@-A4-*NxKdmZw5*F24-VpuWB;1u2q90F8)^< zd|1?+`7jB6l-j91tSkDs10`Gi^wx^*3z zQ7eAqKoQbBeHl#T_0zC@by6zuT1w?L{9naC<;QdL4~R6ql3T!3JWlHw45Az@kWlpf z_qxL}gSoi*o3AjEZht=5ix4T?JUPv`x);S+V?}{QN%z!) zWVKj$$Na%mic-O6lwaD^tCK(rAs2a}bC47>h9L2NEjOkSgmqQJ%IOy8R8n8J4s#N8 z#Dr^d`^k}_!thY$ZN(xLaDv)=hNty5rg+WF+ZQX{rS)L(i^7DGA=C;vwYZdT@7RTL zD4fYsIfTg{;Z(KjP}7)lwqPAW zz}@WldnII)rK(8sDV7=$6v30*ZuYeCd2Sf8-#AHLFVV@Yr1&v0kJlhe{_QdYCD7Y> zE>=o4&D$oO{4%|XLkBDyT*191TLFMXYxA9ai{f)*4BT%|;N#V)0;ZKe!CNujg1%Uz zvsz4t^r28tjud2EhE;=Bid=_*T_jVCN1xN?#Z(~Xz)Y-8Xiq&B`<*t>T79f~07i(eN+!0dYz`@YJ^Y{V-XV)9i%Rf>o!v#4ywG(1MhxIV-@L_yPQW8yqsDG82 zoEyXN0{dwE#1@mT{aMq{b9pmg!K^Xr5Y?dQwhNvgS28dQbI3lI9Fg2?^A#Cs{`+=` z>{IK&(Fr-~U}2wCY9d($e@Shxfv4^QeIB~2#=T0yhkx_}+L^LSa>ld6qccr=msbkh z>;CnH_m4)aH~GU&fo(0v__5oKeTy7ti6 zK)Tc$>*Ifff9&hCxOJU}JRBv(>JUF=RcRN_2^{7h;VMe-)J;oBs}16~oof)r0-T0q z1{@Uh!12+Z4bABO$zW;{ho(G@)iCK1&!QIP`4Ky)Y32YbrgcoKf?#?^jgHZs?}Zv z^X>ZK8SYvQx(WOZLv9c0%b<&@_FGbO?4A}HO%3?g4ONY}@@RiC+EZ~*konrkHjASgz2OV$a8PYg|lYM(lGe!K5dF!vK$fL4WLt$RZ z7rIKXRv4~wDLFaE9wvPsnfvOTRSF@%hxYg zIYW5q0U(wjvDJwD9?0iU@uIO2O#e{Vjcs<$rC?}71s-FlkE_ROoghpz$w$lNy8R5c zKD^c+fXDyQ*;|K2*>3H_Gc-t-AT_{H(jgMkE!~~cA>CcV07FVjODQc9f*{=>jg)k^ zbjk0==Xu`!?!DjdpU=aCyVkYVxz2T7G3eYEheP~L+$>!R@YU_-;CEZ12^CVKnvI>O zxrbp;AF9-}^a}{q`*6Cln24%1L$%QlYL~rVev4V{)hOA2^iw~?{UTuIw9TGadzM@4 zA#dt4BD!m>=ET3gv_WjIqWsu;5U-E^Q>w(cYOn@QN@e7y9ai#V>&ox>)vP9R-kBW@ zcovRf%$VlBi=Z>j)~{VDGA!PVr?0*ps1&wItFKGXH}afjulqn0%~3u zFGc0pKj29rm=r(Daigw#U4j?D&Wr=|x#jdCoi0K&F!8=hL^F zxPmMCX>OJ;YB4}uU+C#2(sSj2>Qh|HfZj6k_v!ewBML2~kvQLv52&QH0Ql9`*dEP>9^>2zIF)$ zt1l%#<0_M*O;eX0eSX=-onFGZs3^JrY%>yB|EOGPQRIwuKl3q3Bl~K<)Z_M^yW*j{ zmxb#|gMmiPgj-`20iGE~p5=^>kB>J#VZ>795=N~@BE%nvZEr8RzHHHPZtPVvoc!?A z*E*0zaclj{EU`~au(={v!Bq-*5nQ<>LHeUJj&afVr3u1slese>NMs$T@wJy;u7PzF zk>5{={fMmUQoEj{(i==M(vm%1{Te|*YKmCakYELmVZ z{5~qRq^&#g<){Na`z83D+mPAS?h8`Z2EWLYKA~)rz>k#cvlw4Qi6Xy~xk4$x+1Wbn z#F1@apA6b%!MFV(&S|aQCiSX>XxWds0s>-!88q4Zu+qkm(b!ocidWUy)uk4ol+kDd zwRuK5QKa5WLMOu4hFLaCT`%gTtH~GPQUpPi+4vZhJj_lVS#vZr?hC2kEJvkJ{RXE# z_QZeTP9ApEz`^Bq1v72Ax*_Kc*H~3s8}O|3;v!mWqoX*fN7ZSZs05aHvbP45!ZgYm zlWee__qD{CWZ}v=rhk0)sQfi=*kchgdech$7)HZ-grdOvLyw^^9dYh2>rsi|PMe>b zgFlHRNF?039^~&%fNm9{2wL0(UI@yd49}L;)IKI;MXlOrLRy-sC;vTzJyt>R6qV9k zeRj8TyuV^VgM(gi1~2(kZpBdaEp=yeb}VjT##oD&(~{Lv>xM>bph5@ zW)i)U`~D@JqPeHyNaVeyF@BAu&~M?2#dSRqCit~=f1)APQvP}hq1f_)B3-U)6KZal zZZ^gJT5`4gW)GtP1XBE#Hjv56X>BEPZIrK>Tb*QZUi9GEc0j|_B(Z=S2VG-Fh^t1# z7z-)Hp6J9T>WDm<#fDHSifpDeo{5Y8aN`U21<~ZDb$^t-D1+Bd4o8AOD0^7&?TYcL zbadt*qBxG~yy_yg_ntd)xr2`v;g@Fhv?ltZq0Z4GS5`({j@-zX%j0Irm>t1lpU8tE z(-oo<`_IME!nQk8?r^`^XYjtX&989N2qMkC@KythMMjO>S3wt%=$_1--EVxSkC8a! zgdNeiiF15Jc8ov&O1_!y^aYooKb5Ln85~#r-hMMoIwB%+ylY<6;^wGxZ|R$PyGck> z0AFa{7<&KOvS-8USJ6%nBen8cc^1&dTx6>BeNvZMm~^9o@w@JKv_2vk+zvCt{1qMk zp8|sAcQ2)zRjiYqsoQ1kU6mm>zgFjcB%)ZSFaGLFm3y94^H7G~G>z7<2>7l{(^g&7 zG6^;MnwaB+z&I|mTUYJ?t5S3$_ZY94WOVu}RP^8@6O{UGyZ@8u+ab%RufEP#;8ZPD z*jO)L;L|zY>69>4ota(1?j;asHs5Y) zr2X*J%3bf^?^;24q9*vueC?2PBca5a%imw99YiJz`P{JIVEm+Ku{=U9?7(QGyBB?W z5WcKT$Gr8~%KX)o8iT9!P3orp?$2v%slFcmM1&5-X|m@Sn|+Pw;Ne1^j&8aA<_hqe zeT7p~Yo;j^X9c1c7G_VRQx&F1*id#|0=J{ZNFK2gy6l`4+7K>GAI}#};2DJ~n$hSK zpD162;s!RnTS+j^cBzs3Mwd2jynK2XOLr0FZ*nQ=$f3O{u-U_BO5uZ&TjAC!ti9m* zodT3$ZZxI(7f$Wm&Y=WkxDwE`UVS6KU&Co>RZ_-jW_*pey zX|YZC%0NdrlPiwLmIZeKJI!gw!au5h$j6f?ee+w0@iq8$6Ns6LLl|ytEvGZ{L$Q~1 zO%j<1C6TH&*O^9KwSex~ZYG_mgRxw7Y$HaE0PUL=%c^^7bwA0nY>Bw{!QGoBs(|6=;BvpgKP={jvU0DzigJ}pjH<(w(P}Zuh*xd<;=~9ha{Dz zNcY+i4G3?iBEPFGVL};+i9Y5!pA-sSM~|!-hiG58j4y_WdwJNQ0AFvY%vQctjg?O@h$p{ytkV>lI>1!n{EQ3Ibea)lhUKGncs8MwK-aEo=~oG2w^s8} zC1N;pRtPssnV#?aG=Z%!2Jr^&t}AlY*Hmi5u{z5jx7-|D;1n7L$oE0PtQc0u%Ij~u zkTMr@x#e7*-G5em$u!{46%rnyxvB1?UeWX3IQEkl^39oIL> zaP3cCRy2{EzZtc#)wLw*a?~NQkrjaKWV5iNv$olSU(l?pk}Do(m7xVw_iPauVWW-7 z>|rcD@nVi&{uygF!W3s_u4{0XDMZscp1-bJI63mAe;HF}0q?D~U)sTL^q{cm!axcK ze$y;wbf5IEjl{hdSB*s?28K5=_X3>d3k0u-DvqbgBk~!KN80AnX zhW51t&IRjFe5t~qVKFw$LgN8{gTPMGaBV1VL$sH$@+FqEIe!aiFbp}#ztOhzjz+BD zVsN^dZnQbmqgoeUm^R$66aj z|CKa{U=CVqP{tIB*xU_I$`cyH2qZjuB!~db8<*mX_z~ggd%w!yBIy*)s9xE2Ng}ei zaLPf5%7uQ0p6L}OFV|%(`z4lV_X5gG`1}kH?l1i^ijf6h1c@1n(Lg6j-M;yAsk!oqjXpixfKMiLp3h{t)7IP{6~;^H zr|+heF!=6Gug*2!*6rZRvI>|AdS|}%scNurV=_0l=3Z}o@iSb!N9@V+*e*xxvq!FD zuEE!};z2Uk+qbCEH?4HbmC#F~JZtzExsHX`@~xVV@ND>9 zn8qhvxj?Q0>X_1HHp^M7o6}Ay%i%os2D|SikFXi0FNP9Vgf$;mA#!x0HSWt3Ez4Z< z7QMG2jKTigE1gb1vrxO2KN$B@B_#Yksbsqe&UBxAFhMgpA9HH${b4<({=vWoPcZdF zKo)rz?v7*$iP1#&bD8ClrS7;z%*QXm0ayZlNqS;&a@MR0oUA~l{Rhzn{e z7dC3zy=xljJZ0FTW6UXHJ`tGeANN?|E6NDz+v8B>_@j?SX6$Tn(H~ko!z@~QBl2v_ z>Ah83-)m$@R&%TI%JOXF`8PC2R_28Mi0Eu?Nd#fx{;Ja{X)icf5C7@%`4yXtBHv^s zOF(#6V?);3IcvzErV)Ns8qIWAjU>$q>)A^^eT4;+*i9GVxaTey=7}x!NY_`48mXrk za=c6=E{o#b1U?JC8wNNeg}BnLzBM{@@u?BCS2(+OHcPq|& zr9dzCAk?O7K@FRE-pavGr6WZ3Yc$YcVhLLN)oy_+;aDRA)a4BPC1S6nhzL$Omjlok z#EX^$)4~>46q%oVd!5I|fc7EM_oCX;!Rz!==!xYgnz$Cct+&NXUi@|Dm@KcUa*z6) z@?!74XNshqrsp_yJQ|n&jl%zO18%7~zm3W={%-sSiKZo23VNF;9wG@Jt-PUGI$TXR z3olH=O4X2v(lzOXY-XSHVVDRuck( z-D+BXEIK7;%+jS%n7agFILX2N+g|cT+If@Dmdcg`zKerjaecBAlkuH^lm-))%f?isHayPa-72*Y*PnnEe`m>a3-MZ&jGK4;D zQ){;j&eDYTu})P*cGrcxBQ-kYU_VfTZT{9YRD0JULG;Okc;o2XHXde_hC%yF+8RYk z)xsnEY%h#yA2z+x;zJGjX2v-m`dtD+bSW2iC~?BLayzq#Us5mbbUXWR>FQ@IX+e*< z$iD zA$+H1^y(@@Mw7sp&*q%{mUnLHZ1e^1dd&+#dj!Nh5ibxFO%Uu>v`=shvt%gfk}c(G zzD^I?aO(y39mj{Z_S_fJBovJ-s*gQJ(y4guNLqn+?F3G6Mi<+H)NnlOZ210^@2O9 zcJQ8^#2rFh#?c54JJWyRMX~sv-rtsWVSSd8f@1QveCZK+;`Ob1LwjvTad72D$YG)8 z=xA2ecMoOV366bPuY&2Vi(#=-i;kd>nK!@DFU=V910z|OM=pAX_C4sntyA#Qc}{El zx%f@Smy=bAthd@ep2-a&m`=8KYtzGkyqOCZ4L;S$qj+_$9ma!;)u6ci43U{5dwyMh z`iZA(?(9>yzTZy|aB?{`OGi449B(w$YWj`IW(KVrdhcdn>2lvca6S6zqt;><-({K#3 zTKi14S|Ggb`*E|-Jxbn@=}0bpK+lF?;=b2uW`$Ec02WJPLtMcJcCya02W4 zOmo}tg#!tT1JA)Idxb8ptHKe%pB66tGYse~79=0Uj89@brt`6Fg*8jM`Epb5b{SYB zm#!F6TBqlbCjFK5#*1g42s2Kc%#BYJg`$X|PG5C7_a6{!if2$$!@QXxdbf>_SLpW$ zd%T>F!Y{}#aPV0KYlKKPa3U3ykI$5ZBA+Q6vV@vyk$y0KDU{rSd8c7BPqAsZRrZ~V zV7>JXKW6&5xRq&Xy(Atv8a^&sm{#3!$B*v|HS%{2FU*<<)a{WKcuhn<#JW5#+mPtZ zr|70yOb+6bU%HDNTug?>1;pYn*%7YW#v03~LUSaq^1CaqgzapYP++lgj3t=vd zh(UXX2ZOG^_ogA6_r1$eLssHKwdjIQ)c%Yd^KIf1#<7*iYl}G(C&_8YS_ly*Q~=GN z>zN5Q%TU={Q$4N~ClOCW5L=dn!`9mMX&2pBIy3H0g(qBhh-im)LJZM6p_vC^!-%}4 z%o-BD3?o|htjq7CE?Jpr(z?gb+oz{c_4Z9SuSV*`yfsqDR}gE%#IZ{KIs(IgCcg9! z?y-RsLwdmbACxOtEmAG8VzT5DKO@)wQ}~2Ug7~XI(qX`mc_8Nz_VuiNt&d;LqJO<* zg}gipZd`R*+X`5cV@izr49Pu<9!nk?;HuH_unPYs@Tj2nlOW@hFFOm4ZFXpn9Z^)v zelKLcan3sKdz;IN$4oiK%TFjWfF&%M;1k_GrubO^J#C-uB9DqZC^_K$H>WY|kz8O3 z9Q<~^BR#>v6}{H)5tGL`jlXJVA%&e)d9V)+LlL&m?~Sy&Kl@a_cA3{b1?FUONu#^U z(srRJ@N-;Eu4F8GP9b%%1^ksXSVO?;%jivJ$RS-fE51eEHdI<5S zvT9M+SsFF=&CR!Tn5ykK!*?UJGg!0+_~48q}fJ3fl0!1izE=t(eVs| zU|#+BCy#BB9Q_B<^`*d?w__9Z7YsR>kCdS*MXD48+0tvn#x3teC5pr)cAc~V=kd74QpzV{Bc#SWW&D=misZ--~Fg%I%bLK&2iu> z{e|Xg9jRiod)&{kY(Up7B^ZS9$EWDf~-qxjTkDuuELfP3&xz+Hrb27`g zA1-orRYo$DX}KXuIM^5CBLX=pi~G<0oo(6p@0Q=wuTgi9aSHVM)CjQZq-6C(D|~ei z_w0Ktm@baj1vk_yEIRu_6VzSB`)TAosgnVA1Tx~KfaextlJLjR^j>N^!^$_w*ety5 z$7`XrA?C=KajLYNYiDQzZdFc|zIe#h&C3{^ydOyvOCU)M!xfvI2Ul6Wx`+w!$YSTS zZDuCkde6ME^0g#4XIQovJ4!fC4_1Zfskayg+gTKCL|W_4 z+b{2hE&TFp?$L11$<~=guBNqLh`3SguOQ$t4PAxzGFiJ+)VG z8Tlo8A(d%{T&a^99dO}r@_WsT@eh>8Z7D2E zuaF$Hpkafe{-W)v_A#Mm25&qF48kqs+J}5S=32Q}a0C&XOSG^x2j9J3^R7_}3Sa&d z$a}4v#ikQrbTd*g5zT;NhV9K^zqI5N%ExrQJTT(Bc5Bb_PPQN}TWTd~;=4u;x|ZY6 zukp&y6zlVOPTF$Gfkk+>!x7fI3L^ozJeWN8*c6V==W}p}o@~g6X`df<-9aWpf>OGm zd8K#Z&uFsi+QJ=3B=*D17pmhcKJM;1Rktx7#;>Ne^hHBS$grzEU`J%%`W_w2XRDv( z>~(*B?LET4U?wMTcw*!%5M^fB#P_oM{-lnd$ zpwyIV;h}5g`|tAF3f^BOfR|@I=HX}ojU~SSSV-#Nru#8-^p&t@U)Hf2(1X`#1ZElS*bcApqWIlAFs82kJ?V33my=RV){f@ z@HK)0yF>8twV+LIkMU?JHfBG{%spZe>Ti#Hoe#xZt3oxqb@sTt$!qBrWJzM9lH1c^ zy-}7k9ju}dyZCi8Dfm^Wp)h6R@&yOV=aG*ar#iVs>V!N!RHWiDT+gs~APYQ_17f=6 zp3KeFQl&wsx^>)gJsb4_Mk=o|7vHqQY;&CJmX3pgNh^?FG4#@9G{pc=+ znenQju#m&0X^ijz-C4T|%IdxzI9lV%+jfJhQa8Y>6Z|E@F0zaf#b`-7B}oR|cx6vW zN`5clnbB|w%9&v~$=y;=OivW6skTBjW8d~u8Q({WsUBP(bM#%r-keF+Kvs;tX1ps{ zA9y>{@axz!*X!i8-dW;ny(HF>R7%cdZh_qSShKA7Vj3SN?H7+pv(Raw3*-$p_OCrc z1nKd7JJjXh-ssbB;8%?tR9gvABBfm7B!qTwqmW(}lVzfRPYP95@-{gUlA5Ux=nSRr zLB)5hAeb|Dm)GxrBeFq*N?%xSE8wy8mVDiWIHk@guU8FmSU3?!`;g_;A7g5m3VPry zt`gxXsb0!dAImJB)B>--p0SIVUvgy&o&9Kxm#ElqvP-cyu!FAR7__G#Vc)q_u||2) z_5|XT_roE@T>?t#r}Np=3Y7@M zb&eImhuQ^Vl7bb^-|Xiv(`jNcaA&;CXtQ%CM&9|4SXQ0Jl1ena%aPx&s)s!8eDhS^ zy;mT?1qE5lAwU){GE^Zn?E|X9$l(*JjQOrNIfYuQN`bFU+BmJ5&^Ys)|Q)j zzH%lo#PjAVCJFy@jfic<5Myx zI%IG5Lf8557Q>Hnr|BGH@0*V!L6Y@SN&Vyv?vfo%NFw#kN-63+JlHrSa86R#JiLUJ z$(@VevZaRfz6SD%*x>?~(e({TgBS#|KnMNv7JdB8wiR`2h8kk?U#hxV1Ms$={3=m* z6onXb=BtS}q6u4_*a7#Cc;zi5ODZ>e*=kA|%JKEvhO-%dt_qla;Z5^6TUamwdnI!^ z-wc`SgZY2o{N|@PDmaewDwfb_D{Ca(8p%)B8B7uIEKlZ*EPU z>-9GapX5)?P#LW8?rr#gUV-oij(~RcZ`8gpQoB#!xB6E*n;C9eC*^faoxap&(^RpA zy7N%&hws!*_p8HB{P3PGS&Pn$;j~6cop!s81Ul^8JCFF{t<>;-x1X5M|BCb;S{l|J z-`ih1nwAXG(X2{>7?fMs`U(EZWJ3siDTBo%Kk*_daLO?xt$-o?9K3VdmGTa68Ptug zD;4|**AG&7R6_lxl2@1~jX}GbEJx;b!&Ph#!!YH!=Xa$suSCZFPgx{6p<^xHG7Mvx z8k;(I96u+Jaqep(vyrx^;H=csimjDH&*`)ZiUWtP;V5c0Q4U?Z8vATbN0NyB)%}kAX~^0dC;^WSM*j zGvq9guv=zN?o!Z?=iSG$&#qMQlqQ&3%2>OxXDIDEmKbcyws}o_Yn=b(PP!X!MWEGx zpV!%Oc(%mWiF!SVGv+pDea-tvCba^tH%-`$5mJu6Ep|YD9{R0rqy$O#=zdwPc;K;O zPwiL91X7FKo8~^XKtZ%~x~HLaft|0V0H;bj)jOO6c?hcAqoh$r2D14p`c7CXGsuk;G0u=wi1i^!e7U)6 zX=$goXUgg#yxupXfmy~$hH~X&v&f36eoreSUOpes&&7^}e4x#UCW*ec@~e>2R)t*} zxQFTcd|_zco-L&??b5PO11wovlI3u-?U!_xx}RvgA%UoKDWn5!km@owRgXt zx0SR{U7YlXJ{>s>OSe4+^Q-A)>KQ*NV2;&)ra*k-jE_*Ez~4n=KQu8%aT&Sy!!M>W zLd9HrYC9Q|VknOLVh2OR<;9f3_(vK7VK%U4L!Az?eyio4vv@B3^=eEbS+yqZP=GXq ziHlauHOeV0R_0rF&DWCGA)(N5crNPFYVjLIy(AklX%xL(f2)u2sF!8Si67AEBg9AF zVSNb0EMHGN9bVvw=w5HV5gKI@-$ZpBeQF~SrSomoK+^{^*|a6(IpbchHchg4lk5k^ zj-1Y!Ib-toTzt_2?qt#zzY|vMas1{E4XaKC{pGj8UFMfwxOV4qwwOx8UC(c(Ub+nG z(%fMM=xuL~fQ#RJ*Clnl&nF+C9AuFu6szZi$RTGKJ`U)!MUel%U*{F?#j{%+p@S90 zgAo}0o&G#J-66gA8*R4dx@E$Ef>n@S;3pF!#Gifs<)bxbe!+@e>X|($M7Fyzxuv0 zPVqgu^&}nCq8Pu81a(Za0gBrYlYfjt#o8ZI;OWi@VGKq;b_DR18%%;lOJ|(R?N~ocO`Swy+ zi|v#rWe|SB#AeYHsPX)rYEj~AgbOZ1606l=7E={> zna7hjS&JjT5)FF)$yy*AY{v!zIy)!`o~;|5P$?&@A`p(Kee|{i@+&c}ick^1_N44lA*c z(+0JW%@0}0&g7}LD}ALs+C@610p&iaKh((WOp?tGRzGKKEuUEX&t!3LEnvSwU|z)> zws2m0l3&H!e%b7(KAe`KLp0~pUmyL%);ZQll+{z*J&xsq$MexO>$9(}9^qko1Y6zS zAG`+K;&fD`iIg11rIWtv_nmfF8l z=Kq zDMstu@;^t$63&dDsJ-7aSf1au+kzzA8=KV%-nAPbPvYlY@EhYy=`Q$T+p9iz~ zhXFYjToVj_b+}7g0V%(vlrdE|W<32f)34i(9qlZ#?UFr;KJa%t%`=qG7eDfHyuzcU z)4;p-HZmQlNA1QtOW)6{qO5W(|1~$iiug_#uD8n@eSXG``y|P+)~G6c4=u5M_~W#e zWlg6R`B@Lo(`_X#nIf8;4>dH@XOf5IP7!g%Xs$mi9abl^AFUQ4w8-+d=J}mhz$V^V zbpF_fKMKwln8^6P*ynw!A6SVkW}b)V+wSqAtFlduxI7BaWzSgR>bW4VX;Ze0(uh*i zx*biV6*&S3BQ}BV?(fG};ROcq$M^T4YfH8uTM%qjJ+uQUT9M

Ijtb@mH3uRXJa__*I)5KE{ywVw9RUnJ9$$h-@}h!3{0dMvSL|pYyk!pvgcRC} zuyP)q34IGV;JgQ1$le2gV6%vCp=rP^mJZyD(ZnUtdqS^~ z0yd*#pap={gHN1LbKp5ZryH#s)E@9}60HICYFk1AAWDLdg8lw@2EkdxJxTuZ#{$^5 znL}mK{&EWV1X{^jMr(rFwjSZs_v2Ky@%P|_E&w?IbjUV<&_E!j-Y5mAdD|s&%R^>x zBm|r~4XCRnObP_Fb)$V?%^vDCzVrpK1u+Aru?C0TOs1E)tM;Boc=B1IvhjYTN>`05O>WPe9vb z0Dy=4=z$oa_Q2z9jE5V*8Ok;YI0JYF(gl=b!qf&E`77i0;42_GkR?nL^iWW^oBM;* z`8nuBnsR%*>(de1RG}R zVe0-1DA1hGlBpdi!5^>*4}Si^sQ5388~=mxSKAJN5uWx3V;fH82>&!r=qf-`^Mkr! zQ%qd|Ydn9>w*a(24gQ3H1wXU^5Sjp&l5I=Kh(P}hzJ7=bXOaCU;vBHQ+~2JHi3pIf z1T=#k{jdJyYQm%dXc9egoP5(pN zA3FX?g7`m@c*y@x2A0tYRS)p~9vFb0^ml1{9~}N63js*s!3Mymv;BY@b_~?&U!nr; z^Zg^N_y@y(g61Lp4|9L%3DDZ#dP?d26ZCIALH-H)pr?NYeXs$XYwXhhZ*>65c!+2T zi~sXn1F8XBssKbi$W8~4p9bK>03h^1cmHS(c;xj*ch(qy?j%Lg9ti)7sejO(00aNO z*BS5c8vl)w{h_RX>mKO&l1KnMfUZ~oMjpmYOBfgcA_-RjBLN_AcU}IiWdBqJ@1JmC z{}oOZ;osv4{(r=K7=-`oY?78RF$8!F9uh#*Lree-2jCX8%l=nvpmWPUXyXCp!w!f5 zbq^*F4lH4+2*GVg4?PcP2++gP2snATV1%>a10u!+AN=Q#H~KK@n*aCILj1pb0?EHn z_x>dx*p4L(WtWKQukrU^8YYHof`LGcN&rkocUTmF;m_PXzQojyr~xb<{vPx&apE=s zY@tBKP(!Z~VIu*^4G&oYZGo8(703t*3<@B47>WsS8wii~#|@n2!2<2S)4=%umj;jo zZ0o<$fJ*^$3^AZMs3IUYs5=a<()s|B5Q-Da@KBZ!*wpA{=mr=rdmlQC5PFRTPz(tq z2U>WIZ-B>OJW#l#JBVon*$C*O0C=QbEx5|fe^RdnxcYbMNA01q;B!G>0pNnl4Ezio z2ETOg1r+Gjwt)nAMV16e0l0wxo$!xe;GF!S#DB;E!XtrOfp8??uK$d+0~q~#EWqo( zRuI4bnsUj2#((#Qqko2pKkEgOT`H!3FE!Ad{`DAIpsM+EVE zV6h?Rh64<$e^yOETbGqxJfPX1OW+|+NYnZK{r{v%^f24~VZn`Q7xmA{E<}R)@6}o> zux5E!O#(RFU{8QGT**W5N1>g5`bNfvh_1JYzL%V>@E9lvfDPMI;U9Frf$eej0fRXd zP%R_>lp9zUCM9Ym1<7i=;CYR1;_m z1`bB$@MfSO_sk+&IDjp?lZ)dkc2^5~OLhP=@MXC^TV%jW1^8%iZ%Y$RY>TL73)*4_ zEY(yJ%T-{jT0T5_miQWB>K9x$a<>kw*EkqXz3&HWi4~-yJm^@l85(tZGO25<3*kl z4kH5R(`a-B6j-3m>+!Yl9Bt~Xfwb2HnMepyxV~xWTa!#PB5sF0>>+#+8QWK;JiTHl zH6g`bs!RDQQAH*(dpIa{FFP5r5I6Xibvw_&e&M7I=Oc^=vO1!_kLVLyNX~-tuzWVdbdm2NbcQzR(bPh|uRwz{j8Nn} z(s#r3O*5PN+^!Zl`{5ifKGJw@9U8KmOe!(7T>jSRda6n>N+$3;ESB)%Ml}U%yF|Zw zL&4n`RgB?a>r!)BeNK^{^u%@9_>8TN;`muA?P1(E6&eH+(&+U^KKi<1Xu}^UA4tK{kxBk@rawL!U(__ zIWatEbf~;)!EmlZnWT9YmqohSdG0vZns5HwG%FgqS1&7+NsON%mo)job8C!XL zJpUZApGz!!(vV4*ZHLUOJQwtpy@6HTT%7JSOpIWpE>A7M>#cn(JI>Sc-7`%dRnD#X zC6X!UtwqgtevyR`5y4NkB0rgQM5O`+#}_7rjwG5C?m zK{3hwvrxo7{pfPMYM4qygoYc8>P?fzyE=rdC<*h-JPP`&fFhrWg5#ZKPr=_FTh|{I zL+KsTJ}mi9CEA31-_NcZu$U_kl*lUdz$m`bP(;p_?@dVJ574OiEi>*K%4XubF9x+Z z@M0fFmD$9L)I>TjuT%OSn&Bc?yxwa!LO;iqge~pq2CrEooGol2ad+(&ed9V!BE#C> zN}edD<_*Wy7*mnn(EKw0F^g#s!}Ty>EI6WmkA|z|mNK4(CGzk!Tj(|O&+NKGn}E#r z?V3lzghVnFs6lP#!XC3PmN~-IxKkrEDH7ts+qE?B3Bfxp)n&d#@`LY9xe&01*$ork z%xu5cGkZorX({qnhFHo!?$fcN-uAf|87&ETGTd+hyB!>RcWmhxK`LG)_3?+=v;Nm= zDNBt5vd;6ZZnAnpFBHwrx0}?$FkNNU$T}TT&x^NH_L6H{qOf*&xC^{T4mKdAhi`ry zqM-AV>Oo}U!>|VM#9rICEj0-z)v13~dS3WhKsfp!dbI0Ioa*kq+t)!ZLR@Y;o)l>x ze~xQOE;9@PJ6jB_R1NO3%S~hdd2Q zkt3s#3H7I>;d@?}HTFVkt-yj&Z4qZ=;TFuEG0IOMU9ly}B{$qXffVRuN3 zDjtEZ+l-N_*kd~83!e>bgiN&v0*_p?-%fI9%qCx?SbU_((V^uO+m5W-8`SP?i2X3c zy5;b5%7(`$mf3DYzx)vWngB(e6(aR)yCs~DBn4CFy_U0_$2DO5Yq4M z@6f`36KxjLmJhBFQc9)Ae0~4KDpF^-Y_BMrt#B3C5Yb>ONEii2%@xr|(aEtmDddcZ zyFTa(kC|A=wYzr7Kz`=hCB8+?t9}meLKB&E_3u^XBfZ@Yy%9|($i-TvoRO2?EaY;2 z3~Kwrt5DKPQ{q{`ABDD`zxVG1feL`hgB+Mk{+>fXj=-lp1+5Do|9R=fI6=(tJNj&LJZ zY}pYBUj4={T|Tm9_{0-H#am)bq<|C?&1uzWnBISS_smRqO0>VB*twOpcG>f?td}jU zl%9KtJ%dhw;zQe*j)Uzh-De^KJK`R`ua^{@ksZbelf@q;lzh@C{z4=v|0FoEoQ;t= z2qinkvxHcnhARUpA9dOz^~~)jfp?^{%3}uzNq1Hru|@eC>u?%0*%{AU-Xue#X5htY ze#wWr=H4*M-fwcwwi6gr18VU&3QQL>pqsNoavvxpFqbBE@r~bmP2# z2->x=p$5;3BdllZ_v-4++9OQL6m4Az)0XoDnk~#kzI|XG^sxQ=!|~4vHYPTPjl)qY Y8jTD1VK4aHfWP*H2ewfU&joD$AK{SeW&i*H literal 0 HcmV?d00001 diff --git a/binaries/x86/mdig b/binaries/x86/mdig new file mode 100755 index 0000000000000000000000000000000000000000..0f1f801d742a49b28dbb68409c3fb14077ed49e3 GIT binary patch literal 46092 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 z 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

ZB5LRG!J7f}#>zwK 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 yet%` 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®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 literal 0 HcmV?d00001 diff --git a/binaries/x86/tpws b/binaries/x86/tpws new file mode 100755 index 0000000000000000000000000000000000000000..34bfb9830237674cf3a94758db943dff83b8ed02 GIT binary patch literal 103784 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 z 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

){m=tjQ?IocE9hI`o=Jp>ng=`NRKdR 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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..fe32b7b2eec0a843189023ef616d94c5a0e5d021 GIT binary patch literal 112072 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 k!y2TD?Z^qUvt!iC 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 AmjD0& literal 0 HcmV?d00001 diff --git a/blockcheck.sh b/blockcheck.sh new file mode 100755 index 0000000..eb91336 --- /dev/null +++ b/blockcheck.sh @@ -0,0 +1,1868 @@ +#!/bin/sh + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +ZAPRET_CONFIG_DEFAULT="$ZAPRET_BASE/config.default" + +CURL=${CURL:-curl} + +[ -f "$ZAPRET_CONFIG" ] || { + [ -f "$ZAPRET_CONFIG_DEFAULT" ] && { + ZAPRET_CONFIG_DIR="$(dirname "$ZAPRET_CONFIG")" + [ -d "$ZAPRET_CONFIG_DIR" ] || mkdir -p "$ZAPRET_CONFIG_DIR" + cp "$ZAPRET_CONFIG_DEFAULT" "$ZAPRET_CONFIG" + } +} +[ -f "$ZAPRET_CONFIG" ] && . "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/dialog.sh" +. "$ZAPRET_BASE/common/elevate.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/virt.sh" + +QNUM=${QNUM:-59780} +SOCKS_PORT=${SOCKS_PORT:-1993} +TPWS_UID=${TPWS_UID:-1} +TPWS_GID=${TPWS_GID:-3003} +NFQWS=${NFQWS:-${ZAPRET_BASE}/nfq/nfqws} +DVTWS=${DVTWS:-${ZAPRET_BASE}/nfq/dvtws} +WINWS=${WINWS:-${ZAPRET_BASE}/nfq/winws} +TPWS=${TPWS:-${ZAPRET_BASE}/tpws/tpws} +MDIG=${MDIG:-${ZAPRET_BASE}/mdig/mdig} +DESYNC_MARK=0x10000000 +IPFW_RULE_NUM=${IPFW_RULE_NUM:-1} +IPFW_DIVERT_PORT=${IPFW_DIVERT_PORT:-59780} +DOMAINS=${DOMAINS:-rutracker.org} +CURL_MAX_TIME=${CURL_MAX_TIME:-2} +CURL_MAX_TIME_QUIC=${CURL_MAX_TIME_QUIC:-$CURL_MAX_TIME} +MIN_TTL=${MIN_TTL:-1} +MAX_TTL=${MAX_TTL:-12} +USER_AGENT=${USER_AGENT:-Mozilla} +HTTP_PORT=${HTTP_PORT:-80} +HTTPS_PORT=${HTTPS_PORT:-443} +QUIC_PORT=${QUIC_PORT:-443} +UNBLOCKED_DOM=${UNBLOCKED_DOM:-iana.org} +[ "$CURL_VERBOSE" = 1 ] && CURL_CMD=1 + +HDRTEMP=/tmp/zapret-hdr.txt + +NFT_TABLE=blockcheck + +DNSCHECK_DNS=${DNSCHECK_DNS:-8.8.8.8 1.1.1.1 77.88.8.1} +DNSCHECK_DOM=${DNSCHECK_DOM:-pornhub.com ntc.party rutracker.org www.torproject.org bbc.com} +DNSCHECK_DIG1=/tmp/dig1.txt +DNSCHECK_DIG2=/tmp/dig2.txt +DNSCHECK_DIGS=/tmp/digs.txt + +unset PF_STATUS +PF_RULES_SAVE=/tmp/pf-zapret-save.conf + +unset ALL_PROXY + +killwait() +{ + # $1 - signal (-9, -2, ...) + # $2 - pid + kill $1 $2 + # suppress job kill message + wait $2 2>/dev/null +} + +exitp() +{ + local A + + echo + echo press enter to continue + read A + exit $1 +} + +pf_is_avail() +{ + [ -c /dev/pf ] +} +pf_status() +{ + pfctl -qsi | sed -nre "s/^Status: ([^ ]+).*$/\1/p" +} +pf_is_enabled() +{ + [ "$(pf_status)" = Enabled ] +} +pf_save() +{ + PF_STATUS=0 + pf_is_enabled && PF_STATUS=1 + [ "$UNAME" = "OpenBSD" ] && pfctl -sr >"$PF_RULES_SAVE" +} +pf_restore() +{ + [ -n "$PF_STATUS" ] || return + case "$UNAME" in + OpenBSD) + if [ -f "$PF_RULES_SAVE" ]; then + pfctl -qf "$PF_RULES_SAVE" + else + echo | pfctl -qf - + fi + ;; + Darwin) + # it's not possible to save all rules in the right order. hard to reorder. if not ordered pf will refuse to load conf. + pfctl -qf /etc/pf.conf + ;; + esac + if [ "$PF_STATUS" = 1 ]; then + pfctl -qe + else + pfctl -qd + fi +} +pf_clean() +{ + rm -f "$PF_RULES_SAVE" +} +opf_dvtws_anchor() +{ + # $1 - tcp/udp + # $2 - port + local family=inet + [ "$IPV" = 6 ] && family=inet6 + echo "set reassemble no" + [ "$1" = tcp ] && echo "pass in quick $family proto $1 from port $2 flags SA/SA divert-packet port $IPFW_DIVERT_PORT no state" + echo "pass in quick $family proto $1 from port $2 no state" + echo "pass out quick $family proto $1 to port $2 divert-packet port $IPFW_DIVERT_PORT no state" + echo "pass" +} +opf_prepare_dvtws() +{ + # $1 - tcp/udp + # $2 - port + opf_dvtws_anchor $1 $2 | pfctl -qf - + pfctl -qe +} + +cleanup() +{ + case "$UNAME" in + OpenBSD) + pf_clean + ;; + esac +} + +IPT() +{ + $IPTABLES -C "$@" >/dev/null 2>/dev/null || $IPTABLES -I "$@" +} +IPT_DEL() +{ + $IPTABLES -C "$@" >/dev/null 2>/dev/null && $IPTABLES -D "$@" +} +IPT_ADD_DEL() +{ + on_off_function IPT IPT_DEL "$@" +} +IPFW_ADD() +{ + ipfw -qf add $IPFW_RULE_NUM "$@" +} +IPFW_DEL() +{ + ipfw -qf delete $IPFW_RULE_NUM 2>/dev/null +} +ipt6_has_raw() +{ + ip6tables -nL -t raw >/dev/null 2>/dev/null +} +ipt6_has_frag() +{ + ip6tables -A OUTPUT -m frag 2>/dev/null || return 1 + ip6tables -D OUTPUT -m frag 2>/dev/null +} +ipt_has_nfq() +{ + # cannot just check /proc/net/ip_tables_targets because of iptables-nft or modules not loaded yet + iptables -A OUTPUT -t mangle -p 255 -j NFQUEUE --queue-num $QNUM --queue-bypass 2>/dev/null || return 1 + iptables -D OUTPUT -t mangle -p 255 -j NFQUEUE --queue-num $QNUM --queue-bypass 2>/dev/null + return 0 +} +nft_has_nfq() +{ + local res=1 + nft delete table ${NFT_TABLE}_test 2>/dev/null + nft add table ${NFT_TABLE}_test 2>/dev/null && { + nft add chain ${NFT_TABLE}_test test + nft add rule ${NFT_TABLE}_test test queue num $QNUM bypass 2>/dev/null && res=0 + nft delete table ${NFT_TABLE}_test + } + return $res +} +mdig_vars() +{ + # $1 - ip version 4/6 + # $2 - hostname + + hostvar=$(echo $2 | sed -e 's/[\.-]/_/g') + cachevar=DNSCACHE_${hostvar}_$1 + countvar=${cachevar}_COUNT + eval count=\$${countvar} +} +mdig_cache() +{ + # $1 - ip version 4/6 + # $2 - hostname + local hostvar cachevar countvar count ip ips + mdig_vars "$@" + [ -n "$count" ] || { + # windows version of mdig outputs 0D0A line ending. remove 0D. + ips="$(echo $2 | "$MDIG" --family=$1 | tr -d '\r' | xargs)" + [ -n "$ips" ] || return 1 + count=0 + for ip in $ips; do + eval ${cachevar}_$count=$ip + count=$(($count+1)) + done + eval $countvar=$count + } + return 0 +} +mdig_resolve() +{ + # $1 - ip version 4/6 + # $2 - hostname + + local hostvar cachevar countvar count ip n + mdig_vars "$@" + if [ -n "$count" ]; then + n=$(random 0 $(($count-1))) + eval ip=\$${cachevar}_$n + echo $ip + return 0 + else + mdig_cache "$@" && mdig_resolve "$@" + fi +} +mdig_resolve_all() +{ + # $1 - ip version 4/6 + # $2 - hostname + + local hostvar cachevar countvar count ip ips n + mdig_vars "$@" + if [ -n "$count" ]; then + n=0 + while [ "$n" -le $count ]; do + eval ip=\$${cachevar}_$n + if [ -n "$ips" ]; then + ips="$ips $ip" + else + ips="$ip" + fi + n=$(($n + 1)) + done + echo "$ips" + return 0 + else + mdig_cache "$@" && mdig_resolve_all "$@" + fi +} + +netcat_setup() +{ + [ -n "$NCAT" ] || { + if exists ncat; then + NCAT=ncat + elif exists nc; then + # busybox netcat does not support any required options + is_linked_to_busybox nc && return 1 + NCAT=nc + else + return 1 + fi + } + return 0 + +} +netcat_test() +{ + # $1 - ip + # $2 - port + local cmd + netcat_setup && { + cmd="$NCAT -z -w 2 $1 $2" + echo $cmd + $cmd 2>&1 + } +} + +check_system() +{ + echo \* checking system + + UNAME=$(uname) + SUBSYS= + local s + + # can be passed FWTYPE=iptables to override default nftables preference + case "$UNAME" in + Linux) + PKTWS="$NFQWS" + PKTWSD=nfqws + linux_fwtype + [ "$FWTYPE" = iptables -o "$FWTYPE" = nftables ] || { + echo firewall type $FWTYPE not supported in $UNAME + exitp 5 + } + ;; + FreeBSD) + PKTWS="$DVTWS" + PKTWSD=dvtws + FWTYPE=ipfw + [ -f /etc/platform ] && read SUBSYS /dev/null + sysctl net.inet.ip.pfil.inbound=ipfw,pf 2>/dev/null + sysctl net.inet6.ip6.pfil.outbound=ipfw,pf 2>/dev/null + sysctl net.inet6.ip6.pfil.inbound=ipfw,pf 2>/dev/null + pfctl -qd + pfctl -qe + pf_restore + } + } + ;; + OpenBSD|Darwin) + progs="$progs pfctl" + pf_is_avail || { + echo pf is not available + exitp 6 + } + # no divert sockets in MacOS + [ "$UNAME" = "Darwin" ] && SKIP_PKTWS=1 + pf_save + ;; + CYGWIN) + SKIP_TPWS=1 + ;; + esac + + for prog in $progs; do + exists $prog || { + echo $prog does not exist. please install + exitp 6 + } + done + + if exists nslookup; then + LOOKUP=nslookup + elif exists host; then + LOOKUP=host + else + echo nslookup or host does not exist. please install + exitp 6 + fi +} + + +curl_translate_code() +{ + # $1 - code + printf $1 + case $1 in + 0) printf ": ok" + ;; + 1) printf ": unsupported protocol" + ;; + 2) printf ": early initialization code failed" + ;; + 3) printf ": the URL was not properly formatted" + ;; + 4) printf ": feature not supported by libcurl" + ;; + 5) printf ": could not resolve proxy" + ;; + 6) printf ": could not resolve host" + ;; + 7) printf ": could not connect" + ;; + 8) printf ": invalid server reply" + ;; + 9) printf ": remote access denied" + ;; + 27) printf ": out of memory" + ;; + 28) printf ": operation timed out" + ;; + 35) printf ": SSL connect error" + ;; + esac +} +curl_supports_tls13() +{ + local r + $CURL --tlsv1.3 -Is -o /dev/null --max-time 1 http://127.0.0.1:65535 2>/dev/null + # return code 2 = init failed. likely bad command line options + [ $? = 2 ] && return 1 + # curl can have tlsv1.3 key present but ssl library without TLS 1.3 support + # this is online test because there's no other way to trigger library incompatibility case + $CURL --tlsv1.3 --max-time $CURL_MAX_TIME -Is -o /dev/null https://w3.org 2>/dev/null + r=$? + [ $r != 4 -a $r != 35 ] +} + +curl_supports_tlsmax() +{ + # supported only in OpenSSL and LibreSSL + $CURL --version | grep -Fq -e OpenSSL -e LibreSSL -e BoringSSL -e GnuTLS -e quictls || return 1 + # supported since curl 7.54 + $CURL --tls-max 1.2 -Is -o /dev/null --max-time 1 http://127.0.0.1:65535 2>/dev/null + # return code 2 = init failed. likely bad command line options + [ $? != 2 ] +} + +curl_supports_connect_to() +{ + $CURL --connect-to 127.0.0.1:: -o /dev/null --max-time 1 http://127.0.0.1:65535 2>/dev/null + [ "$?" != 2 ] +} + +curl_supports_http3() +{ + # if it has http3 : curl: (3) HTTP/3 requested for non-HTTPS URL + # otherwise : curl: (2) option --http3-only: is unknown + $CURL --connect-to 127.0.0.1:: -o /dev/null --max-time 1 --http3-only http://127.0.0.1:65535 2>/dev/null + [ "$?" != 2 ] +} + +hdrfile_http_code() +{ + # $1 - hdr file + sed -nre '1,1 s/^HTTP\/1\.[0,1] ([0-9]+) .*$/\1/p' "$1" +} +hdrfile_location() +{ + # $1 - hdr file + + # some DPIs return CRLF line ending + tr -d '\015' <"$1" | sed -nre 's/^[Ll][Oo][Cc][Aa][Tt][Ii][Oo][Nn]:[ ]*([^ ]*)[ ]*$/\1/p' +} + +curl_with_subst_ip() +{ + # $1 - domain + # $2 - port + # $3 - ip + # $4+ - curl params + local connect_to="--connect-to $1::[$3]${2:+:$2}" arg + shift ; shift ; shift + [ "$CURL_VERBOSE" = 1 ] && arg="-v" + [ "$CURL_CMD" = 1 ] && echo $CURL ${arg:+$arg }$connect_to "$@" + ALL_PROXY="$ALL_PROXY" $CURL ${arg:+$arg }$connect_to "$@" +} +curl_with_dig() +{ + # $1 - ip version : 4/6 + # $2 - domain name + # $3 - port + # $4+ - curl params + local dom=$2 port=$3 + local ip=$(mdig_resolve $1 $dom) + shift ; shift ; shift + if [ -n "$ip" ]; then + curl_with_subst_ip $dom $port $ip "$@" + else + return 6 + fi +} +curl_probe() +{ + # $1 - ip version : 4/6 + # $2 - domain name + # $3 - port + # $4 - subst ip + # $5+ - curl params + local ipv=$1 dom=$2 port=$3 subst=$4 + shift; shift; shift; shift + if [ -n "$subst" ]; then + curl_with_subst_ip $dom $port $subst "$@" + else + curl_with_dig $ipv $dom $port "$@" + fi +} +curl_test_http() +{ + # $1 - ip version : 4/6 + # $2 - domain name + # $3 - subst ip + # $4 - "detail" - detail info + + local code loc + curl_probe $1 $2 $HTTP_PORT "$3" -SsD "$HDRTEMP" -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT "http://$2" -o /dev/null 2>&1 || { + code=$? + rm -f "$HDRTEMP" + return $code + } + if [ "$4" = "detail" ] ; then + head -n 1 "$HDRTEMP" + grep "^[lL]ocation:" "$HDRTEMP" + else + code=$(hdrfile_http_code "$HDRTEMP") + [ "$code" = 301 -o "$code" = 302 -o "$code" = 307 -o "$code" = 308 ] && { + loc=$(hdrfile_location "$HDRTEMP") + echo "$loc" | grep -qE "^https?://.*$2(/|$)" || + echo "$loc" | grep -vqE '^https?://' || { + echo suspicious redirection $code to : $loc + rm -f "$HDRTEMP" + return 254 + } + } + fi + rm -f "$HDRTEMP" + [ "$code" = 400 ] && { + # this can often happen if the server receives fake packets it should not receive + echo http code $code. likely the server receives fakes. + return 254 + } + return 0 +} +curl_test_https_tls12() +{ + # $1 - ip version : 4/6 + # $2 - domain name + # $3 - subst ip + + # do not use tls 1.3 to make sure server certificate is not encrypted + curl_probe $1 $2 $HTTPS_PORT "$3" -ISs -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.2 $TLSMAX12 "https://$2" -o /dev/null 2>&1 +} +curl_test_https_tls13() +{ + # $1 - ip version : 4/6 + # $2 - domain name + # $3 - subst ip + + # force TLS1.3 mode + curl_probe $1 $2 $HTTPS_PORT "$3" -ISs -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.3 $TLSMAX13 "https://$2" -o /dev/null 2>&1 +} + +curl_test_http3() +{ + # $1 - ip version : 4/6 + # $2 - domain name + + # force QUIC only mode without tcp + curl_with_dig $1 $2 $QUIC_PORT -ISs -A "$USER_AGENT" --max-time $CURL_MAX_TIME_QUIC --http3-only $CURL_OPT "https://$2" -o /dev/null 2>&1 +} + +ipt_scheme() +{ + # $1 - 1 - add , 0 - del + # $2 - tcp/udp + # $3 - port + + IPT_ADD_DEL $1 OUTPUT -t mangle -p $2 --dport $3 -m mark ! --mark $DESYNC_MARK/$DESYNC_MARK -j NFQUEUE --queue-num $QNUM + # to avoid possible INVALID state drop + [ "$2" = tcp ] && IPT_ADD_DEL $1 INPUT -p $2 --sport $3 ! --syn -j ACCEPT + # for strategies with incoming packets involved (autottl) + IPT_ADD_DEL $1 OUTPUT -p $2 --dport $3 -m conntrack --ctstate INVALID -j ACCEPT + if [ "$IPV" = 6 -a -n "$IP6_DEFRAG_DISABLE" ]; then + # the only way to reliable disable ipv6 defrag. works only in 4.16+ kernels + IPT_ADD_DEL $1 OUTPUT -t raw -p $2 -m frag -j CT --notrack + elif [ "$IPV" = 4 ]; then + # enable fragments + IPT_ADD_DEL $1 OUTPUT -f -j ACCEPT + fi + # enable everything generated by nfqws (works only in OUTPUT, not in FORWARD) + # raw table may not be present + IPT_ADD_DEL $1 OUTPUT -t raw -m mark --mark $DESYNC_MARK/$DESYNC_MARK -j CT --notrack +} +nft_scheme() +{ + # $1 - tcp/udp + # $2 - port + nft add table inet $NFT_TABLE + nft "add chain inet $NFT_TABLE postnat { type filter hook output priority 102; }" + nft "add rule inet $NFT_TABLE postnat meta nfproto ipv${IPV} $1 dport $2 mark and $DESYNC_MARK != $DESYNC_MARK queue num $QNUM" + # for strategies with incoming packets involved (autottl) + nft "add chain inet $NFT_TABLE prenat { type filter hook prerouting priority -102; }" + # enable everything generated by nfqws (works only in OUTPUT, not in FORWARD) + nft "add chain inet $NFT_TABLE predefrag { type filter hook output priority -402; }" + nft "add rule inet $NFT_TABLE predefrag meta nfproto ipv${IPV} mark and $DESYNC_MARK !=0 notrack" +} + +pktws_ipt_prepare() +{ + # $1 - tcp/udp + # $2 - port + case "$FWTYPE" in + iptables) + ipt_scheme 1 $1 $2 + ;; + nftables) + nft_scheme $1 $2 + ;; + ipfw) + # disable PF to avoid interferences + pf_is_avail && pfctl -qd + IPFW_ADD divert $IPFW_DIVERT_PORT $1 from me to any $2 proto ip${IPV} out not diverted not sockarg + ;; + opf) + opf_prepare_dvtws $1 $2 + ;; + windivert) + WF="--wf-l3=ipv${IPV} --wf-${1}=$2" + ;; + + esac +} +pktws_ipt_unprepare() +{ + # $1 - tcp/udp + # $2 - port + case "$FWTYPE" in + iptables) + ipt_scheme 0 $1 $2 + ;; + nftables) + nft delete table inet $NFT_TABLE 2>/dev/null + ;; + ipfw) + IPFW_DEL + pf_is_avail && pf_restore + ;; + opf) + pf_restore + ;; + windivert) + unset WF + ;; + esac +} + +pktws_ipt_prepare_tcp() +{ + # $1 - port + + pktws_ipt_prepare tcp $1 + + case "$FWTYPE" in + iptables) + # for autottl + IPT INPUT -t mangle -p tcp --sport $1 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:1 -j NFQUEUE --queue-num $QNUM + ;; + nftables) + # for autottl + nft "add rule inet $NFT_TABLE prenat meta nfproto ipv${IPV} tcp sport $1 ct original packets 1 queue num $QNUM" + ;; + ipfw) + # for autottl mode + IPFW_ADD divert $IPFW_DIVERT_PORT tcp from any $1 to me proto ip${IPV} tcpflags syn,ack in not diverted not sockarg + ;; + esac +} +pktws_ipt_unprepare_tcp() +{ + # $1 - port + + pktws_ipt_unprepare tcp $1 + + case "$FWTYPE" in + iptables) + IPT_DEL INPUT -t mangle -p tcp --sport $1 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:1 -j NFQUEUE --queue-num $QNUM + ;; + esac +} +pktws_ipt_prepare_udp() +{ + # $1 - port + + pktws_ipt_prepare udp $1 +} +pktws_ipt_unprepare_udp() +{ + # $1 - port + + pktws_ipt_unprepare udp $1 +} + +pktws_start() +{ + case "$UNAME" in + Linux) + "$NFQWS" --uid $TPWS_UID:$TPWS_GID --dpi-desync-fwmark=$DESYNC_MARK --qnum=$QNUM "$@" >/dev/null & + ;; + FreeBSD|OpenBSD) + "$DVTWS" --port=$IPFW_DIVERT_PORT "$@" >/dev/null & + ;; + CYGWIN) + "$WINWS" $WF "$@" >/dev/null & + ;; + esac + PID=$! + # give some time to initialize + minsleep +} +tpws_start() +{ + "$TPWS" --uid $TPWS_UID:$TPWS_GID --socks --bind-addr=127.0.0.1 --port=$SOCKS_PORT "$@" >/dev/null & + PID=$! + # give some time to initialize + minsleep +} +ws_kill() +{ + [ -z "$PID" ] || { + killwait -9 $PID 2>/dev/null + PID= + } +} + +check_domain_port_block() +{ + # $1 - domain + # $2 - port + local ip ips + echo + echo \* port block tests ipv$IPV $1:$2 + if netcat_setup; then + ips=$(mdig_resolve_all $IPV $1) + if [ -n "$ips" ]; then + for ip in $ips; do + if netcat_test $ip $2; then + echo $ip connects + else + echo $ip does not connect. netcat code $? + fi + done + else + echo "ipv${IPV} $1 does not resolve" + fi + else + echo suitable netcat not found. busybox nc is not supported. pls install nmap ncat or openbsd netcat. + fi +} + +curl_test() +{ + # $1 - test function + # $2 - domain + # $3 - subst ip + # $4 - param of test function + local code=0 n=0 + + while [ $n -lt $REPEATS ]; do + n=$(($n+1)) + [ $REPEATS -gt 1 ] && printf "[attempt $n] " + if $1 "$IPV" $2 $3 "$4" ; then + [ $REPEATS -gt 1 ] && echo 'AVAILABLE' + else + code=$? + [ "$SCANLEVEL" = quick ] && break + fi + done + [ "$4" = detail ] || { + if [ $code = 254 ]; then + echo "UNAVAILABLE" + elif [ $code = 0 ]; then + echo '!!!!! AVAILABLE !!!!!' + else + echo "UNAVAILABLE code=$code" + fi + } + return $code +} +ws_curl_test() +{ + # $1 - ws start function + # $2 - test function + # $3 - domain + # $4,$5,$6, ... - ws params + + local code ws_start=$1 testf=$2 dom=$3 + shift + shift + shift + $ws_start "$@" + curl_test $testf $dom + code=$? + ws_kill + return $code +} +tpws_curl_test() +{ + # $1 - test function + # $2 - domain + # $3,$4,$5, ... - tpws params + echo - checking tpws $3 $4 $5 $6 $7 $8 $9 $TPWS_EXTRA "$TPWS_EXTRA_1" "$TPWS_EXTRA_2" "$TPWS_EXTRA_3" "$TPWS_EXTRA_4" "$TPWS_EXTRA_5" "$TPWS_EXTRA_6" "$TPWS_EXTRA_7" "$TPWS_EXTRA_8" "$TPWS_EXTRA_9" + local ALL_PROXY="socks5://127.0.0.1:$SOCKS_PORT" + ws_curl_test tpws_start "$@" $TPWS_EXTRA "$TPWS_EXTRA_1" "$TPWS_EXTRA_2" "$TPWS_EXTRA_3" "$TPWS_EXTRA_4" "$TPWS_EXTRA_5" "$TPWS_EXTRA_6" "$TPWS_EXTRA_7" "$TPWS_EXTRA_8" "$TPWS_EXTRA_9" +} +pktws_curl_test() +{ + # $1 - test function + # $2 - domain + # $3,$4,$5, ... - nfqws/dvtws params + echo - checking $PKTWSD ${WF:+$WF }$3 $4 $5 $6 $7 $8 $9 $PKTWS_EXTRA "$PKTWS_EXTRA_1" "$PKTWS_EXTRA_2" "$PKTWS_EXTRA_3" "$PKTWS_EXTRA_4" "$PKTWS_EXTRA_5" "$PKTWS_EXTRA_6" "$PKTWS_EXTRA_7" "$PKTWS_EXTRA_8" "$PKTWS_EXTRA_9" + ws_curl_test pktws_start "$@" $PKTWS_EXTRA "$PKTWS_EXTRA_1" "$PKTWS_EXTRA_2" "$PKTWS_EXTRA_3" "$PKTWS_EXTRA_4" "$PKTWS_EXTRA_5" "$PKTWS_EXTRA_6" "$PKTWS_EXTRA_7" "$PKTWS_EXTRA_8" "$PKTWS_EXTRA_9" +} +xxxws_curl_test_update() +{ + # $1 - xxx_curl_test function + # $2 - test function + # $3 - domain + # $4,$5,$6, ... - nfqws/dvtws params + local code xxxf=$1 testf=$2 dom=$3 + shift + shift + shift + $xxxf $testf $dom "$@" + code=$? + [ $code = 0 ] && strategy="${strategy:-$@}" + return $code +} +pktws_curl_test_update() +{ + xxxws_curl_test_update pktws_curl_test "$@" +} +tpws_curl_test_update() +{ + xxxws_curl_test_update tpws_curl_test "$@" +} + +report_append() +{ + NREPORT=${NREPORT:-0} + eval REPORT_${NREPORT}=\"$@\" + NREPORT=$(($NREPORT+1)) +} +report_print() +{ + local n=0 s + NREPORT=${NREPORT:-0} + while [ $n -lt $NREPORT ]; do + eval s=\"\${REPORT_$n}\" + echo $s + n=$(($n+1)) + done +} +report_strategy() +{ + # $1 - test function + # $2 - domain + # $3 - daemon + echo + if [ -n "$strategy" ]; then + # trim spaces at the end + strategy="$(echo "$strategy" | xargs)" + echo "!!!!! $1: working strategy found for ipv${IPV} $2 : $3 $strategy !!!!!" + echo + report_append "ipv${IPV} $2 $1 : $3 ${WF:+$WF }$strategy" + return 0 + else + echo "$1: $3 strategy for ipv${IPV} $2 not found" + echo + report_append "ipv${IPV} $2 $1 : $3 not working" + return 1 + fi +} +test_has_split() +{ + contains "$1" split || contains "$1" disorder +} +test_has_fake() +{ + contains "$1" fake +} +warn_fool() +{ + case "$1" in + md5sig) echo 'WARNING ! although md5sig fooling worked it will not work on all sites. it typically works only on linux servers.' ;; + datanoack) echo 'WARNING ! although datanoack fooling worked it may break NAT and may only work with external IP. Additionally it may require nftables to work correctly.' ;; + esac +} +pktws_curl_test_update_vary() +{ + # $1 - test function + # $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $3 - domain + # $4 - desync mode + # $5,$6,... - strategy + + local testf=$1 sec=$2 domain=$3 desync=$4 zerofake split fake + + shift; shift; shift; shift + + zerofake=http + [ "$sec" = 0 ] || zerofake=tls + zerofake="--dpi-desync-fake-$zerofake=0x00000000" + + for fake in '' $zerofake ; do + for split in '' '--dpi-desync-split-pos=1' ; do + pktws_curl_test_update $testf $domain --dpi-desync=$desync "$@" $fake $split && return 0 + # split-pos=1 is meaningful for DPIs searching for 16 03 in TLS. no reason to apply to http + [ "$sec" = 1 ] || break + test_has_split $desync || break + done + test_has_fake $desync || break + done + + return 1 +} + +pktws_check_domain_http_bypass_() +{ + # $1 - test function + # $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $3 - domain + + local tests='fake' ret ok ttls s f e desync pos fooling frag sec="$2" delta hostcase + + [ "$sec" = 0 ] && { + for s in '--hostcase' '--hostspell=hoSt' '--hostnospace' '--domcase'; do + pktws_curl_test_update $1 $3 $s + done + } + + s="--dpi-desync=split2" + ok=0 + pktws_curl_test_update $1 $3 $s + ret=$? + [ "$ret" = 0 ] && { + [ "$SCANLEVEL" = quick ] && return + ok=1 + } + [ "$ret" != 0 -o "$SCANLEVEL" = force ] && { + if [ "$sec" = 0 ]; then + pktws_curl_test_update $1 $3 $s --hostcase && { + [ "$SCANLEVEL" = quick ] && return + ok=1 + } + for pos in method host; do + for hostcase in '' '--hostcase'; do + pktws_curl_test_update $1 $3 $s --dpi-desync-split-http-req=$pos $hostcase && { + [ "$SCANLEVEL" = quick ] && return + ok=1 + } + done + done + else + for pos in sni sniext; do + pktws_curl_test_update $1 $3 $s --dpi-desync-split-tls=$pos && { + [ "$SCANLEVEL" = quick ] && return + ok=1 + } + done + fi + for pos in 1 3 4 5 10 50; do + s="--dpi-desync=split2 --dpi-desync-split-pos=$pos" + if pktws_curl_test_update $1 $3 $s; then + [ "$SCANLEVEL" = quick ] && return + ok=1 + [ "$SCANLEVEL" = force ] || break + elif [ "$sec" = 0 ]; then + pktws_curl_test_update $1 $3 $s --hostcase && [ "$SCANLEVEL" = quick ] && return + fi + done + } + [ "$ok" = 1 -a "$SCANLEVEL" != force ] || tests="$tests split fake,split2 fake,split" + + pktws_curl_test_update $1 $3 --dpi-desync=disorder2 + ret=$? + [ "$ret" = 0 -a "$SCANLEVEL" = quick ] && return + [ "$ret" != 0 -o "$SCANLEVEL" = force ] && { + pktws_curl_test_update $1 $3 --dpi-desync=disorder2 --dpi-desync-split-pos=1 + ret=$? + [ "$ret" = 0 -a "$SCANLEVEL" = quick ] && return + } + [ "$ret" != 0 -o "$SCANLEVEL" = force ] && tests="$tests disorder fake,disorder2 fake,disorder" + + ttls=$(seq -s ' ' $MIN_TTL $MAX_TTL) + for e in '' '--wssize 1:6'; do + [ -n "$e" ] && { + pktws_curl_test_update $1 $3 $e && [ "$SCANLEVEL" = quick ] && return + for desync in split2 disorder2; do + pktws_curl_test_update_vary $1 $2 $3 $desync $e && [ "$SCANLEVEL" = quick ] && return + done + } + for desync in $tests; do + for ttl in $ttls; do + pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-ttl=$ttl $e && { + [ "$SCANLEVEL" = quick ] && return + break + } + done + f= + [ "$UNAME" = "OpenBSD" ] || f="badsum" + f="$f badseq datanoack md5sig" + [ "$IPV" = 6 ] && f="$f hopbyhop hopbyhop2" + for fooling in $f; do + pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-fooling=$fooling $e && { + warn_fool $fooling + [ "$SCANLEVEL" = quick ] && return + } + done + done + [ "$IPV" = 6 ] && { + f="hopbyhop hopbyhop,split2 hopbyhop,disorder2 destopt destopt,split2 destopt,disorder2" + [ -n "$IP6_DEFRAG_DISABLE" ] && f="$f ipfrag1 ipfrag1,split2 ipfrag1,disorder2" + for desync in $f; do + pktws_curl_test_update_vary $1 $2 $3 $desync $e && [ "$SCANLEVEL" = quick ] && return + done + } + + for desync in split2 disorder2; do + s="--dpi-desync=$desync" + if [ "$sec" = 0 ]; then + for pos in method host; do + pktws_curl_test_update $1 $3 $s --dpi-desync-split-seqovl=1 --dpi-desync-split-http-req=$pos $e && [ "$SCANLEVEL" = quick ] && return + done + else + for pos in sni sniext; do + pktws_curl_test_update $1 $3 $s --dpi-desync-split-seqovl=1 --dpi-desync-split-tls=$pos $e && [ "$SCANLEVEL" = quick ] && return + done + fi + for pos in 2 3 4 5 10 50; do + pktws_curl_test_update $1 $3 $s --dpi-desync-split-seqovl=$(($pos - 1)) --dpi-desync-split-pos=$pos $e && [ "$SCANLEVEL" = quick ] && return + done + [ "$sec" != 0 -a $desync = split2 ] && { + pktws_curl_test_update $1 $3 $s --dpi-desync-split-seqovl=336 --dpi-desync-split-seqovl-pattern="$ZAPRET_BASE/files/fake/tls_clienthello_iana_org.bin" $e && [ "$SCANLEVEL" = quick ] && return + } + done + + for desync in $tests; do + ok=0 + for delta in 1 2 3 4 5; do + pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-ttl=1 --dpi-desync-autottl=$delta $e && ok=1 + done + [ "$ok" = 1 ] && + { + echo "WARNING ! although autottl worked it requires testing on multiple domains to find out reliable delta" + echo "WARNING ! if a reliable delta cannot be found it's a good idea not to use autottl" + [ "$SCANLEVEL" = quick ] && return + } + done + + s="http_iana_org.bin" + [ "$sec" = 0 ] || s="tls_clienthello_iana_org.bin" + for desync in syndata syndata,split2 syndata,disorder2 ; do + pktws_curl_test_update_vary $1 $2 $3 $desync $e && [ "$SCANLEVEL" = quick ] && return + pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-fake-syndata="$ZAPRET_BASE/files/fake/$s" $e && [ "$SCANLEVEL" = quick ] && return + done + + # do not do wssize test for http and TLS 1.3. it's useless + [ "$sec" = 1 ] || break + done +} +pktws_check_domain_http_bypass() +{ + # $1 - test function + # $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $3 - domain + + local strategy + pktws_check_domain_http_bypass_ "$@" + strategy="${strategy:+$strategy $PKTWS_EXTRA $PKTWS_EXTRA_1 $PKTWS_EXTRA_2 $PKTWS_EXTRA_3 $PKTWS_EXTRA_4 $PKTWS_EXTRA_5 $PKTWS_EXTRA_6 $PKTWS_EXTRA_7 $PKTWS_EXTRA_8 $PKTWS_EXTRA_9}" + report_strategy $1 $3 $PKTWSD +} + +pktws_check_domain_http3_bypass_() +{ + # $1 - test function + # $2 - domain + + local f desync frag tests rep + + for rep in '' 2 5 10 20; do + pktws_curl_test_update $1 $2 --dpi-desync=fake ${rep:+--dpi-desync-repeats=$rep} && [ "$SCANLEVEL" != force ] && { + [ "$SCANLEVEL" = quick ] && return + break + } + done + + [ "$IPV" = 6 ] && { + f="hopbyhop destopt" + [ -n "$IP6_DEFRAG_DISABLE" ] && f="$f ipfrag1" + for desync in $f; do + pktws_curl_test_update $1 $2 --dpi-desync=$desync && [ "$SCANLEVEL" = quick ] && return + done + } + + # OpenBSD has checksum issues with fragmented packets + [ "$UNAME" != "OpenBSD" ] && [ "$IPV" = 4 -o -n "$IP6_DEFRAG_DISABLE" ] && { + for frag in 8 16 24 32 40 64; do + tests="ipfrag2" + [ "$IPV" = 6 ] && tests="$tests hopbyhop,ipfrag2 destopt,ipfrag2" + for desync in $tests; do + pktws_curl_test_update $1 $2 --dpi-desync=$desync --dpi-desync-ipfrag-pos-udp=$frag && [ "$SCANLEVEL" = quick ] && return + done + done + } + +} +pktws_check_domain_http3_bypass() +{ + # $1 - test function + # $2 - domain + + local strategy + pktws_check_domain_http3_bypass_ "$@" + strategy="${strategy:+$strategy $PKTWS_EXTRA $PKTWS_EXTRA_1 $PKTWS_EXTRA_2 $PKTWS_EXTRA_3 $PKTWS_EXTRA_4 $PKTWS_EXTRA_5 $PKTWS_EXTRA_6 $PKTWS_EXTRA_7 $PKTWS_EXTRA_8 $PKTWS_EXTRA_9}" + report_strategy $1 $2 $PKTWSD +} +warn_mss() +{ + [ -n "$1" ] && echo 'WARNING ! although mss worked it may not work on all sites and will likely cause significant slowdown. it may only be required for TLS1.2, not TLS1.3' + return 0 +} + +tpws_check_domain_http_bypass_() +{ + # $1 - test function + # $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $3 - domain + + local s mss s2 s3 pos sec="$2" + if [ "$sec" = 0 ]; then + for s in '--hostcase' '--hostspell=hoSt' '--hostdot' '--hosttab' '--hostnospace' '--domcase' \ + '--hostpad=1024' '--hostpad=2048' '--hostpad=4096' '--hostpad=8192' '--hostpad=16384' ; do + tpws_curl_test_update $1 $3 $s && [ "$SCANLEVEL" = quick ] && return + done + for s2 in '' '--oob' '--disorder' '--oob --disorder'; do + for s in '--split-http-req=method' '--split-http-req=method --hostcase' '--split-http-req=host' '--split-http-req=host --hostcase' ; do + tpws_curl_test_update $1 $3 $s $s2 && [ "$SCANLEVEL" = quick ] && return + done + done + for s in '--methodspace' '--unixeol' '--methodeol'; do + tpws_curl_test_update $1 $3 $s && [ "$SCANLEVEL" = quick ] && return + done + else + for mss in '' 88; do + s3=${mss:+--mss=$mss} + for s2 in '' '--oob' '--disorder' '--oob --disorder'; do + for pos in sni sniext; do + s="--split-tls=$pos" + tpws_curl_test_update $1 $3 $s $s2 $s3 && warn_mss $s3 && [ "$SCANLEVEL" != force ] && { + [ "$SCANLEVEL" = quick ] && return + break + } + done + for pos in 1 2 3 4 5 10 50; do + s="--split-pos=$pos" + tpws_curl_test_update $1 $3 $s $s2 $s3 && warn_mss $s3 && [ "$SCANLEVEL" != force ] && { + [ "$SCANLEVEL" = quick ] && return + break + } + done + done + for s2 in '--tlsrec=sni' '--tlsrec=sni --split-tls=sni' '--tlsrec=sni --split-tls=sni --oob' \ + '--tlsrec=sni --split-tls=sni --disorder' '--tlsrec=sni --split-tls=sni --oob --disorder' \ + '--tlsrec=sni --split-pos=1' '--tlsrec=sni --split-pos=1 --oob' '--tlsrec=sni --split-pos=1 --disorder' \ + '--tlsrec=sni --split-pos=1 --oob --disorder'; do + tpws_curl_test_update $1 $3 $s2 $s3 && warn_mss $s3 && [ "$SCANLEVEL" != force ] && { + [ "$SCANLEVEL" = quick ] && return + break + } + done + # only linux supports mss + [ "$UNAME" = Linux -a "$sec" = 1 ] || break + done + fi +} +tpws_check_domain_http_bypass() +{ + # $1 - test function + # $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $3 - domain + + local strategy + tpws_check_domain_http_bypass_ "$@" + strategy="${strategy:+$strategy $TPWS_EXTRA $TPWS_EXTRA_1 $TPWS_EXTRA_2 $TPWS_EXTRA_3 $TPWS_EXTRA_4 $TPWS_EXTRA_5 $TPWS_EXTRA_6 $TPWS_EXTRA_7 $TPWS_EXTRA_8 $TPWS_EXTRA_9}" + report_strategy $1 $3 tpws +} + +check_dpi_ip_block() +{ + # $1 - test function + # $2 - domain + + local blocked_dom=$2 + local blocked_ip blocked_ips unblocked_ip + + echo + echo "- IP block tests (requires manual interpretation)" + + echo "> testing $UNBLOCKED_DOM on it's original ip" + if curl_test $1 $UNBLOCKED_DOM; then + unblocked_ip=$(mdig_resolve $IPV $UNBLOCKED_DOM) + [ -n "$unblocked_ip" ] || { + echo $UNBLOCKED_DOM does not resolve. tests not possible. + return 1 + } + + echo "> testing $blocked_dom on $unblocked_ip ($UNBLOCKED_DOM)" + curl_test $1 $blocked_dom $unblocked_ip detail + + blocked_ips=$(mdig_resolve_all $IPV $blocked_dom) + for blocked_ip in $blocked_ips; do + echo "> testing $UNBLOCKED_DOM on $blocked_ip ($blocked_dom)" + curl_test $1 $UNBLOCKED_DOM $blocked_ip detail + done + else + echo $UNBLOCKED_DOM is not available. skipping this test. + fi +} + +curl_has_reason_to_continue() +{ + # $1 - curl return code + for c in 1 2 3 4 6 27 ; do + [ $1 = $c ] && return 1 + done + return 0 +} + +check_domain_prolog() +{ + # $1 - test function + # $2 - port + # $3 - domain + + local code + + echo + echo \* $1 ipv$IPV $3 + + echo "- checking without DPI bypass" + curl_test $1 $3 && { + report_append "ipv${IPV} $3 $1 : working without bypass" + [ "$SCANLEVEL" = force ] || return 1 + } + code=$? + curl_has_reason_to_continue $code || { + report_append "ipv${IPV} $3 $1 : test aborted, no reason to continue. curl code $(curl_translate_code $code)" + return 1 + } + return 0 +} +check_domain_http_tcp() +{ + # $1 - test function + # $2 - port + # $3 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk + # $4 - domain + + # in case was interrupted before + pktws_ipt_unprepare_tcp $2 + ws_kill + + check_domain_prolog $1 $2 $4 || return + + check_dpi_ip_block $1 $4 + + [ "$SKIP_TPWS" = 1 ] || { + echo + tpws_check_domain_http_bypass $1 $3 $4 + } + + [ "$SKIP_PKTWS" = 1 ] || { + echo + echo preparing $PKTWSD redirection + pktws_ipt_prepare_tcp $2 + + pktws_check_domain_http_bypass $1 $3 $4 + + echo clearing $PKTWSD redirection + pktws_ipt_unprepare_tcp $2 + } +} +check_domain_http_udp() +{ + # $1 - test function + # $2 - port + # $3 - domain + + # in case was interrupted before + pktws_ipt_unprepare_udp $2 + ws_kill + + check_domain_prolog $1 $2 $3 || return + + [ "$SKIP_PKTWS" = 1 ] || { + echo + echo preparing $PKTWSD redirection + pktws_ipt_prepare_udp $2 + + pktws_check_domain_http3_bypass $1 $3 + + echo clearing $PKTWSD redirection + pktws_ipt_unprepare_udp $2 + } +} + + +check_domain_http() +{ + # $1 - domain + check_domain_http_tcp curl_test_http 80 0 $1 +} +check_domain_https_tls12() +{ + # $1 - domain + check_domain_http_tcp curl_test_https_tls12 443 1 $1 +} +check_domain_https_tls13() +{ + # $1 - domain + check_domain_http_tcp curl_test_https_tls13 443 2 $1 +} +check_domain_http3() +{ + # $1 - domain + check_domain_http_udp curl_test_http3 443 $1 +} + +configure_ip_version() +{ + if [ "$IPV" = 6 ]; then + LOCALHOST=::1 + LOCALHOST_IPT=[${LOCALHOST}] + IPVV=6 + else + IPTABLES=iptables + LOCALHOST=127.0.0.1 + LOCALHOST_IPT=$LOCALHOST + IPVV= + fi + IPTABLES=ip${IPVV}tables +} +configure_curl_opt() +{ + # wolfssl : --tlsv1.x mandates exact ssl version, tls-max not supported + # openssl : --tlsv1.x means "version equal or greater", tls-max supported + TLSMAX12= + TLSMAX13= + curl_supports_tlsmax && { + TLSMAX12="--tls-max 1.2" + TLSMAX13="--tls-max 1.3" + } + TLS13= + curl_supports_tls13 && TLS13=1 + HTTP3= + curl_supports_http3 && HTTP3=1 +} + +linux_ipv6_defrag_can_be_disabled() +{ + linux_min_version 4 16 +} + +configure_defrag() +{ + IP6_DEFRAG_DISABLE= + + [ "$IPVS" = 4 ] && return + + [ "$UNAME" = "Linux" ] && { + linux_ipv6_defrag_can_be_disabled || { + echo "WARNING ! ipv6 defrag can only be effectively disabled in linux kernel 4.16+" + echo "WARNING ! ipv6 ipfrag tests are disabled" + echo + return + } + } + + case "$FWTYPE" in + iptables) + if ipt6_has_raw ; then + if ipt6_has_frag; then + IP6_DEFRAG_DISABLE=1 + else + echo "WARNING ! ip6tables does not have '-m frag' module, ipv6 ipfrag tests are disabled" + echo + fi + else + echo "WARNING ! ip6tables raw table is not available, ipv6 ipfrag tests are disabled" + echo + fi + [ -n "$IP6_DEFRAG_DISABLE" ] && { + local ipexe="$(readlink -f $(whichq ip6tables))" + if contains "$ipexe" nft; then + echo "WARNING ! ipv6 ipfrag tests may have no effect if ip6tables-nft is used. current ip6tables point to : $ipexe" + else + echo "WARNING ! ipv6 ipfrag tests may have no effect if ip6table_raw kernel module is not loaded with parameter : raw_before_defrag=1" + fi + echo + } + ;; + *) + IP6_DEFRAG_DISABLE=1 + ;; + esac +} + +ask_params() +{ + echo + echo NOTE ! this test should be run with zapret or any other bypass software disabled, without VPN + echo + + curl_supports_connect_to || { + echo "installed curl does not support --connect-to option. pls install at least curl 7.49" + echo "current curl version:" + $CURL --version + exitp 1 + } + + + echo "specify domain(s) to test. multiple domains are space separated." + printf "domain(s) (default: $DOMAINS) : " + local dom + read dom + [ -n "$dom" ] && DOMAINS="$dom" + + local IPVS_def=4 + # yandex public dns + pingtest 6 2a02:6b8::feed:0ff && IPVS_def=46 + printf "ip protocol version(s) - 4, 6 or 46 for both (default: $IPVS_def) : " + read IPVS + [ -n "$IPVS" ] || IPVS=$IPVS_def + [ "$IPVS" = 4 -o "$IPVS" = 6 -o "$IPVS" = 46 ] || { + echo 'invalid ip version(s). should be 4, 6 or 46.' + exitp 1 + } + [ "$IPVS" = 46 ] && IPVS="4 6" + + configure_curl_opt + + ENABLE_HTTP=1 + echo + ask_yes_no_var ENABLE_HTTP "check http" + + ENABLE_HTTPS_TLS12=1 + echo + ask_yes_no_var ENABLE_HTTPS_TLS12 "check https tls 1.2" + + ENABLE_HTTPS_TLS13=0 + echo + if [ -n "$TLS13" ]; then + echo "TLS 1.3 uses encrypted ServerHello. DPI cannot check domain name in server response." + echo "This can allow more bypass strategies to work." + echo "What works for TLS 1.2 will also work for TLS 1.3 but not vice versa." + echo "Most sites nowadays support TLS 1.3 but not all. If you can't find a strategy for TLS 1.2 use this test." + echo "TLS 1.3 only strategy is better than nothing." + ask_yes_no_var ENABLE_HTTPS_TLS13 "check https tls 1.3" + else + echo "installed curl version does not support TLS 1.3 . tests disabled." + fi + + ENABLE_HTTP3=0 + echo + if [ -n "$HTTP3" ]; then + echo "make sure target domain(s) support QUIC or result will be negative in any case" + ENABLE_HTTP3=1 + ask_yes_no_var ENABLE_HTTP3 "check http3 QUIC" + else + echo "installed curl version does not support http3 QUIC. tests disabled." + fi + + IGNORE_CA=0 + CURL_OPT= + [ $ENABLE_HTTPS_TLS13 = 1 -o $ENABLE_HTTPS_TLS12 = 1 ] && { + echo + echo "on limited systems like openwrt CA certificates might not be installed to preserve space" + echo "in such a case curl cannot verify server certificate and you should either install ca-bundle or disable verification" + echo "however disabling verification will break https check if ISP does MitM attack and substitutes server certificate" + ask_yes_no_var IGNORE_CA "do not verify server certificate" + [ "$IGNORE_CA" = 1 ] && CURL_OPT=-k + } + + echo + echo "sometimes ISPs use multiple DPIs or load balancing. bypass strategies may work unstable." + printf "how many times to repeat each test (default: 1) : " + read REPEATS + REPEATS=$((0+${REPEATS:-1})) + [ "$REPEATS" = 0 ] && { + echo invalid repeat count + exitp 1 + } + + echo + echo quick - scan as fast as possible to reveal any working strategy + echo standard - do investigation what works on your DPI + echo force - scan maximum despite of result + SCANLEVEL=${SCANLEVEL:-standard} + ask_list SCANLEVEL "quick standard force" "$SCANLEVEL" + # disable tpws checks by default in quick mode + [ "$SCANLEVEL" = quick -a -z "$SKIP_TPWS" ] && SKIP_TPWS=1 + + echo + + configure_defrag +} + + + +ping_with_fix() +{ + local ret + $PING $2 $1 >/dev/null 2>/dev/null + ret=$? + # can be because of unsupported -4 option + if [ "$ret" = 2 -o "$ret" = 64 ]; then + ping $2 $1 >/dev/null + else + return $ret + fi +} + +pingtest() +{ + # $1 - ip version : 4 or 6 + # $2 - domain or ip + + # ping command can vary a lot. some implementations have -4/-6 options. others don.t + # WARNING ! macos ping6 command does not have timeout option. ping6 will fail + + local PING=ping ret + if [ "$1" = 6 ]; then + if exists ping6; then + PING=ping6 + else + PING="ping -6" + fi + else + if [ "$UNAME" = Darwin -o "$UNAME" = FreeBSD -o "$UNAME" = OpenBSD ]; then + # ping by default pings ipv4, ping6 only pings ipv6 + # in FreeBSD -4/-6 options are supported, in others not + PING=ping + else + # this can be linux or cygwin + # in linux it's not possible for sure to figure out if it supports -4/-6. only try and check for result code=2 (invalid option) + PING="ping -4" + fi + fi + case "$UNAME" in + Darwin) + $PING -c 1 -t 1 $2 >/dev/null 2>/dev/null + # WARNING ! macos ping6 command does not have timeout option. ping6 will fail. but without timeout is not an option. + ;; + OpenBSD) + $PING -c 1 -w 1 $2 >/dev/null + ;; + CYGWIN) + if starts_with "$(which ping)" /cygdrive; then + # cygwin does not have own ping by default. use windows PING. + $PING -n 1 -w 1000 $2 >/dev/null + else + ping_with_fix $2 '-c 1 -w 1' + fi + ;; + *) + ping_with_fix $2 '-c 1 -W 1' + ;; + esac +} +dnstest() +{ + # $1 - dns server. empty for system resolver + "$LOOKUP" w3.org $1 >/dev/null 2>/dev/null +} +find_working_public_dns() +{ + local dns + for dns in $DNSCHECK_DNS; do + pingtest 4 $dns && dnstest $dns && { + PUBDNS=$dns + return 0 + } + done + return 1 +} +lookup4() +{ + # $1 - domain + # $2 - DNS + case "$LOOKUP" in + nslookup) + if is_linked_to_busybox nslookup; then + nslookup $1 $2 2>/dev/null | sed -e '1,3d' -nre 's/^.*:[^0-9]*(([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p' + else + nslookup $1 $2 2>/dev/null | sed -e '1,3d' -nre 's/^[^0-9]*(([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p' + fi + ;; + host) + host -t A $1 $2 | grep "has address" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' + ;; + esac +} +check_dns_spoof() +{ + # $1 - domain + # $2 - public DNS + + # windows version of mdig outputs 0D0A line ending. remove 0D. + echo $1 | "$MDIG" --family=4 | tr -d '\r' >"$DNSCHECK_DIG1" + lookup4 $1 $2 >"$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 dom + + echo \* checking DNS + + [ -f "$DNSCHECK_DIGS" ] && rm -f "$DNSCHECK_DIGS" + + dnstest || { + echo -- DNS is not working. It's either misconfigured or blocked or you don't have inet access. + return 1 + } + echo system DNS is working + + 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 | "$MDIG" --threads=10 --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" -eq 0 ] && + { + echo -- DNS is not working. It's either misconfigured or blocked or you don't have inet access. + check_dns_cleanup + return 1 + } + [ "$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 may be blocked. + check_dns_cleanup + return 0 +} + + +unprepare_all() +{ + # make sure we are not in a middle state that impacts connectivity + rm -f "$HDRTEMP" + [ -n "$IPV" ] && { + pktws_ipt_unprepare_tcp 80 + pktws_ipt_unprepare_tcp 443 + pktws_ipt_unprepare_udp 443 + } + ws_kill + cleanup +} +sigint() +{ + echo + echo terminating... + unprepare_all + exitp 1 +} +sigint_cleanup() +{ + cleanup + exit 1 +} +sigsilent() +{ + # must not write anything here to stdout + unprepare_all + exit 1 +} + +fsleep_setup +fix_sbin_path +check_system +check_already +[ "$UNAME" = CYGWIN ] || require_root +check_prerequisites +trap sigint_cleanup INT +[ "$SKIP_DNSCHECK" = 1 ] || check_dns +check_virt +ask_params +trap - INT + +PID= +NREPORT= +unset WF +trap sigint INT +trap sigsilent PIPE +trap sigsilent HUP +for dom in $DOMAINS; do + for IPV in $IPVS; do + configure_ip_version + [ "$ENABLE_HTTP" = 1 ] && { + check_domain_port_block $dom $HTTP_PORT + check_domain_http $dom + } + [ "$ENABLE_HTTPS_TLS12" = 1 -o "$ENABLE_HTTPS_TLS13" = 1 ] && check_domain_port_block $dom $HTTPS_PORT + [ "$ENABLE_HTTPS_TLS12" = 1 ] && check_domain_https_tls12 $dom + [ "$ENABLE_HTTPS_TLS13" = 1 ] && check_domain_https_tls13 $dom + [ "$ENABLE_HTTP3" = 1 ] && check_domain_http3 $dom + done +done +trap - HUP +trap - PIPE +trap - INT + +cleanup + +echo +echo \* SUMMARY +report_print +echo +echo "Please note this SUMMARY does not guarantee a magic pill for you to copy/paste and be happy." +echo "Understanding how strategies work is very desirable." +echo "This knowledge allows to understand better which strategies to prefer and which to avoid if possible, how to combine strategies." +echo "Blockcheck does it's best to prioritize good strategies but it's not bullet-proof." +echo "It was designed not as magic pill maker but as a DPI bypass test tool." + +exitp 0 diff --git a/common/base.sh b/common/base.sh new file mode 100644 index 0000000..7c772ef --- /dev/null +++ b/common/base.sh @@ -0,0 +1,340 @@ +which() +{ + # on some systems 'which' command is considered deprecated and not installed by default + # 'command -v' replacement does not work exactly the same way. it outputs shell aliases if present + # $1 - executable name + local IFS=: + for p in $PATH; do + [ -x "$p/$1" ] && { + echo "$p/$1" + return 0 + } + done + return 1 +} +exists() +{ + which "$1" >/dev/null 2>/dev/null +} +existf() +{ + type "$1" >/dev/null 2>/dev/null +} +whichq() +{ + which $1 2>/dev/null +} +exist_all() +{ + while [ -n "$1" ]; do + exists "$1" || return 1 + shift + done + return 0 +} +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" "$@" +} +contains() +{ + # check if substring $2 contains in $1 + [ "${1#*$2}" != "$1" ] +} +starts_with() +{ + # $1 : what + # $2 : starts with + case "$1" in + "$2"*) + return 0 + ;; + esac + return 1 +} +find_str_in_list() +{ + [ -n "$1" ] && { + for v in $2; do + [ "$v" = "$1" ] && return 0 + done + } + return 1 +} +end_with_newline() +{ + local c="$(tail -c 1)" + [ "$c" = "" ] +} + +append_separator_list() +{ + # $1 - var name to receive result + # $2 - separator + # $3 - quoter + # $4,$5,... - elements + local _var="$1" sep="$2" quo="$3" i + + eval i="\$$_var" + shift; shift; shift + while [ -n "$1" ]; do + if [ -n "$i" ] ; then + i="$i$sep$quo$1$quo" + else + i="$quo$1$quo" + fi + shift + done + eval $_var="\$i" +} +make_separator_list() +{ + eval $1='' + append_separator_list "$@" +} +make_comma_list() +{ + # $1 - var name to receive result + # $2,$3,... - elements + local var="$1" + shift + make_separator_list $var , '' "$@" +} +make_quoted_comma_list() +{ + # $1 - var name to receive result + # $2,$3,... - elements + local var="$1" + shift + make_separator_list $var , '"' "$@" +} +unique() +{ + local i + for i in "$@"; do echo $i; done | sort -u | xargs +} + +is_linked_to_busybox() +{ + local IFS F P + + IFS=: + for path in $PATH; do + F=$path/$1 + P="$(readlink $F)" + if [ -z "$P" ] && [ -x $F ] && [ ! -L $F ]; then return 1; fi + [ "${P%busybox*}" != "$P" ] && return + done +} +get_dir_inode() +{ + local dir="$1" + [ -L "$dir" ] && dir=$(readlink "$dir") + ls -id "$dir" | awk '{print $1}' +} + +linux_min_version() +{ + # $1 - major ver + # $2 - minor ver + local V1=$(sed -nre 's/^Linux version ([0-9]+)\.[0-9]+.*$/\1/p' /proc/version) + local V2=$(sed -nre 's/^Linux version [0-9]+\.([0-9]+).*$/\1/p' /proc/version) + [ -n "$V1" -a -n "$V2" ] && [ "$V1" -gt "$1" -o "$V1" -eq "$1" -a "$V2" -ge "$2" ] +} +linux_get_subsys() +{ + local INIT="$(sed 's/\x0/\n/g' /proc/1/cmdline | head -n 1)" + + [ -L "$INIT" ] && INIT=$(readlink "$INIT") + INIT="$(basename "$INIT")" + if [ -f "/etc/openwrt_release" ] && [ "$INIT" = "procd" ] ; then + SUBSYS=openwrt + elif [ -x "/bin/ndm" ] ; then + SUBSYS=keenetic + else + # generic linux + SUBSYS= + fi +} +openwrt_fw3() +{ + [ ! -x /sbin/fw4 -a -x /sbin/fw3 ] +} +openwrt_fw4() +{ + [ -x /sbin/fw4 ] +} +openwrt_fw3_integration() +{ + [ "$FWTYPE" = iptables ] && openwrt_fw3 +} + +create_dev_stdin() +{ + [ -e /dev/stdin ] || ln -s /proc/self/fd/0 /dev/stdin +} + +call_for_multiple_items() +{ + # $1 - function to get an item + # $2 - variable name to put result into + # $3 - space separated parameters to function $1 + + local i item items + for i in $3; do + $1 item $i + [ -n "$item" ] && { + if [ -n "$items" ]; then + items="$items $item" + else + items="$item" + fi + } + done + eval $2=\"$items\" +} + +fix_sbin_path() +{ + local IFS=':' + printf "%s\n" $PATH | grep -Fxq '/usr/sbin' || PATH="/usr/sbin:$PATH" + printf "%s\n" $PATH | grep -Fxq '/sbin' || PATH="/sbin:$PATH" + export PATH +} + +# it can calculate floating point expr +calc() +{ + awk "BEGIN { print $*}"; +} + +fsleep_setup() +{ + [ -n "$FSLEEP" ] || { + if sleep 0.001 2>/dev/null; then + FSLEEP=1 + elif busybox usleep 1 2>/dev/null; then + FSLEEP=2 + else + local errtext="$(read -t 0.001 2>&1)" + if [ -z "$errtext" ]; then + FSLEEP=3 + # newer openwrt has ucode with system function that supports timeout in ms + elif ucode -e "system(['sleep','1'], 1)" 2>/dev/null; then + FSLEEP=4 + # older openwrt may have lua and nixio lua module + elif lua -e 'require "nixio".nanosleep(0,1)' 2>/dev/null ; then + FSLEEP=5 + else + FSLEEP=0 + fi + fi + } +} +msleep() +{ + # $1 - milliseconds + case "$FSLEEP" in + 1) + sleep $(calc $1/1000) + ;; + 2) + busybox usleep $(calc $1*1000) + ;; + 3) + read -t $(calc $1/1000) + ;; + 4) + ucode -e "system(['sleep','2147483647'], $1)" + ;; + 5) + lua -e "require 'nixio'.nanosleep($(($1/1000)),$(calc $1%1000*1000000))" + ;; + *) + sleep $((($1+999)/1000)) + esac +} +minsleep() +{ + msleep 100 +} + +replace_char() +{ + local a=$1 + local b=$2 + shift; shift + echo "$@" | tr $a $b +} + +setup_md5() +{ + [ -n "$MD5" ] && return + MD5=md5sum + exists $MD5 || MD5=md5 +} + +random() +{ + # $1 - min, $2 - max + local r rs + setup_md5 + if [ -c /dev/urandom ]; then + read rs /dev/null + elif exists pidof; then + pidof $1 >/dev/null + else + return 1 + fi +} + +win_process_exists() +{ + tasklist /NH /FI "IMAGENAME eq ${1}.exe" | grep -q "^${1}.exe" +} + +std_ports() +{ + HTTP_PORTS=${HTTP_PORTS:-80} + HTTPS_PORTS=${HTTPS_PORTS:-443} + QUIC_PORTS=${QUIC_PORTS:-443} + HTTP_PORTS_IPT=$(replace_char - : $HTTP_PORTS) + HTTPS_PORTS_IPT=$(replace_char - : $HTTPS_PORTS) + QUIC_PORTS_IPT=$(replace_char - : $QUIC_PORTS) +} diff --git a/common/custom.sh b/common/custom.sh new file mode 100644 index 0000000..40b65a7 --- /dev/null +++ b/common/custom.sh @@ -0,0 +1,25 @@ +custom_runner() +{ + # $1 - function name + # $2+ - params + + local n script FUNC=$1 + + shift + + [ -f "$CUSTOM_DIR/custom" ] && { + unset -f $FUNC + . "$CUSTOM_DIR/custom" + existf $FUNC && $FUNC "$@" + } + [ -d "$CUSTOM_DIR/custom.d" ] && { + n=$(ls "$CUSTOM_DIR/custom.d" | wc -c | xargs) + [ "$n" = 0 ] || { + for script in "$CUSTOM_DIR/custom.d/"*; do + unset -f $FUNC + . "$script" + existf $FUNC && $FUNC "$@" + done + } + } +} diff --git a/common/dialog.sh b/common/dialog.sh new file mode 100644 index 0000000..0cb3890 --- /dev/null +++ b/common/dialog.sh @@ -0,0 +1,58 @@ +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 + printf "$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 +} +ask_list() +{ + # $1 - mode var + # $2 - space separated value list + # $3 - (optional) default value + local M_DEFAULT + eval M_DEFAULT="\$$1" + local M_ALL=$M_DEFAULT + local M="" + local m + + [ -n "$3" ] && { find_str_in_list "$M_DEFAULT" "$2" || M_DEFAULT="$3" ;} + + n=1 + for m in $2; do + echo $n : $m + n=$(($n+1)) + done + printf "your choice (default : $M_DEFAULT) : " + read m + [ -n "$m" ] && M=$(echo $2 | cut -d ' ' -f$m 2>/dev/null) + [ -z "$M" ] && M="$M_DEFAULT" + echo selected : $M + eval $1="\"$M\"" + + [ "$M" != "$M_OLD" ] +} diff --git a/common/elevate.sh b/common/elevate.sh new file mode 100644 index 0000000..65e8dc9 --- /dev/null +++ b/common/elevate.sh @@ -0,0 +1,13 @@ +require_root() +{ + local exe + echo \* checking privileges + [ $(id -u) -ne "0" ] && { + echo root is required + exe="$EXEDIR/$(basename "$0")" + exists sudo && exec sudo sh "$exe" + exists su && exec su root -c "sh \"$exe\"" + echo su or sudo not found + exitp 2 + } +} diff --git a/common/fwtype.sh b/common/fwtype.sh new file mode 100644 index 0000000..61390bb --- /dev/null +++ b/common/fwtype.sh @@ -0,0 +1,64 @@ +linux_ipt_avail() +{ + exists iptables && exists ip6tables +} +linux_maybe_iptables_fwtype() +{ + linux_ipt_avail && FWTYPE=iptables +} +linux_nft_avail() +{ + exists nft +} +linux_fwtype() +{ + [ -n "$FWTYPE" ] && return + + FWTYPE=unsupported + + linux_get_subsys + if [ "$SUBSYS" = openwrt ] ; then + # linux kernel is new enough if fw4 is there + if [ -x /sbin/fw4 ] && linux_nft_avail ; then + FWTYPE=nftables + else + linux_maybe_iptables_fwtype + fi + else + SUBSYS= + # generic linux + # flowtable is implemented since kernel 4.16 + if linux_nft_avail && linux_min_version 4 16; then + FWTYPE=nftables + else + linux_maybe_iptables_fwtype + fi + fi + + export FWTYPE +} + +get_fwtype() +{ + [ -n "$FWTYPE" ] && return + + local UNAME="$(uname)" + + case "$UNAME" in + Linux) + linux_fwtype + ;; + FreeBSD) + if exists ipfw ; then + FWTYPE=ipfw + else + FWTYPE=unsupported + fi + ;; + *) + FWTYPE=unsupported + ;; + esac + + export FWTYPE +} diff --git a/common/installer.sh b/common/installer.sh new file mode 100644 index 0000000..57d7cdf --- /dev/null +++ b/common/installer.sh @@ -0,0 +1,689 @@ +GET_LIST_PREFIX=/ipset/get_ + +SYSTEMD_DIR=/lib/systemd +[ -d "$SYSTEMD_DIR" ] || SYSTEMD_DIR=/usr/lib/systemd +[ -d "$SYSTEMD_DIR" ] && SYSTEMD_SYSTEM_DIR="$SYSTEMD_DIR/system" + +INIT_SCRIPT=/etc/init.d/zapret + + +exitp() +{ + echo + echo press enter to continue + read A + exit $1 +} + +parse_var_checked() +{ + # $1 - file name + # $2 - var name + local sed="sed -nre s/^[[:space:]]*$2=[\\\"|\']?([^\\\"|\']*)[\\\"|\']?/\1/p" + local v="$($sed <"$1" | tail -n 1)" + eval $2=\"$v\" +} +parse_vars_checked() +{ + # $1 - file name + # $2,$3,... - var names + local f="$1" + shift + while [ -n "$1" ]; do + parse_var_checked "$f" $1 + shift + done +} +edit_file() +{ + # $1 - file name + local ed="$EDITOR" + [ -n "$ed" ] || { + for e in mcedit nano vim vi; do + exists "$e" && { + ed="$e" + break + } + done + } + [ -n "$ed" ] && "$ed" "$1" +} +edit_vars() +{ + # $1,$2,... - var names + local n=1 var v tmp="/tmp/zvars" + rm -f "$tmp" + while [ 1=1 ]; do + eval var="\${$n}" + [ -n "$var" ] || break + eval v="\$$var" + echo $var=\"$v\" >>"$tmp" + n=$(($n+1)) + done + edit_file "$tmp" && parse_vars_checked "$tmp" "$@" + rm -f "$tmp" +} + +openrc_test() +{ + exists rc-update || return 1 + # some systems do not usse openrc-init but launch openrc from inittab + [ "$INIT" = "openrc-init" ] || grep -qE "sysinit.*openrc" /etc/inittab 2>/dev/null +} +check_system() +{ + # $1 - nonempty = do not fail on unknown rc system + + echo \* checking system + + SYSTEM= + SUBSYS= + SYSTEMCTL=$(whichq systemctl) + + get_fwtype + OPENWRT_FW3= + + local info + UNAME=$(uname) + if [ "$UNAME" = "Linux" ]; then + # do not use 'exe' because it requires root + local INIT="$(sed 's/\x0/\n/g' /proc/1/cmdline | head -n 1)" + [ -L "$INIT" ] && INIT=$(readlink "$INIT") + INIT="$(basename "$INIT")" + # some distros include systemctl without systemd + if [ -d "$SYSTEMD_DIR" ] && [ -x "$SYSTEMCTL" ] && [ "$INIT" = "systemd" ]; then + SYSTEM=systemd + elif [ -f "/etc/openwrt_release" ] && exists opkg && exists uci && [ "$INIT" = "procd" ] ; then + { + SYSTEM=openwrt + if openwrt_fw3 ; then + OPENWRT_FW3=1 + info="openwrt firewall uses fw3" + if is_ipt_flow_offload_avail; then + info="$info. hardware flow offloading requires iptables." + else + info="$info. flow offloading unavailable." + fi + elif openwrt_fw4; then + info="openwrt firewall uses fw4. flow offloading requires nftables." + fi + } + elif openrc_test; then + SYSTEM=openrc + else + echo system is not either systemd, openrc or openwrt based + echo easy installer can set up config settings but can\'t configure auto start + echo you have to do it manually. check readme.txt for manual setup info. + if [ -n "$1" ] || ask_yes_no N "do you want to continue"; then + SYSTEM=linux + else + exitp 5 + fi + fi + linux_get_subsys + 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 + [ -n "$info" ] && echo $info +} + +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)) +} + +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 +} +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 + + if exists crontab; then + 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 + else + echo '!!! CRON IS ABSENT !!! LISTS AUTO UPDATE WILL NOT WORK !!!' + fi + } +} +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 + } +} + + +service_start_systemd() +{ + echo \* starting zapret service + + "$SYSTEMCTL" start zapret || { + echo could not start zapret service + exitp 30 + } +} +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 +} + +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 +} +install_openrc_init() +{ + # $1 - "0"=disable + echo \* installing init script + + [ -x "$INIT_SCRIPT" ] && { + "$INIT_SCRIPT" stop + rc-update del zapret + } + ln -fs "$INIT_SCRIPT_SRC" "$INIT_SCRIPT" + [ "$1" != "0" ] && rc-update add zapret +} +service_remove_openrc() +{ + echo \* removing zapret service + + [ -x "$INIT_SCRIPT" ] && { + rc-update del zapret + "$INIT_SCRIPT" stop + } + rm -f "$INIT_SCRIPT" +} +service_start_sysv() +{ + [ -x "$INIT_SCRIPT" ] && { + echo \* starting zapret service + "$INIT_SCRIPT" start || { + echo could not start zapret service + exitp 30 + } + } +} +service_stop_sysv() +{ + [ -x "$INIT_SCRIPT" ] && { + echo \* stopping zapret service + "$INIT_SCRIPT" stop + } +} +service_remove_sysv() +{ + echo \* removing zapret service + + [ -x "$INIT_SCRIPT" ] && { + "$INIT_SCRIPT" disable + "$INIT_SCRIPT" stop + } + rm -f "$INIT_SCRIPT" +} + +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)" ] && return 0 + local what="$(opkg whatprovides $1 | tail -n +2 | head -n 1)" + [ -n "$what" ] || return 1 + [ -n "$(opkg list-installed $what)" ] +} +check_packages_openwrt() +{ + for pkg in $@; do + check_package_openwrt $pkg || return + done +} + +install_openwrt_iface_hook() +{ + echo \* installing ifup hook + + ln -fs "$OPENWRT_IFACE_HOOK" /etc/hotplug.d/iface +} +remove_openwrt_iface_hook() +{ + echo \* removing ifup hook + + rm -f /etc/hotplug.d/iface/??-zapret +} +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 + + local FW=fw4 + [ -n "$OPENWRT_FW3" ] && FW=fw3 + $FW -q restart || { + echo could not restart firewall $FW + 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 +} + +clear_ipset() +{ + echo "* clearing ipset(s)" + + # free some RAM + "$IPSET_DIR/create_ipset.sh" clear +} + + +service_install_macos() +{ + echo \* installing zapret service + + ln -fs "$ZAPRET_BASE/init.d/macos/zapret.plist" /Library/LaunchDaemons +} +service_start_macos() +{ + echo \* starting zapret service + + "$INIT_SCRIPT_SRC" start +} +service_stop_macos() +{ + echo \* stopping zapret service + + "$INIT_SCRIPT_SRC" stop +} +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 +} + +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 +} + +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 + contains "$M" " " && M="\"$M\"" + if [ -n "$M" ]; then + echo "$1=$M" >>"$ZAPRET_CONFIG" + else + echo "#$1=$M" >>"$ZAPRET_CONFIG" + fi + fi +} + +check_prerequisites_linux() +{ + echo \* checking prerequisites + + local s cmd PKGS UTILS req="curl curl" + case "$FWTYPE" in + iptables) + req="$req iptables iptables ip6tables iptables ipset ipset" + ;; + nftables) + req="$req nft nftables" + ;; + esac + + PKGS=$(for s in $req; do echo $s; done | + while read cmd; do + read pkg + exists $cmd || echo $pkg + done | sort -u | xargs) + UTILS=$(for s in $req; do echo $s; done | + while read cmd; do + read pkg + echo $cmd + done | sort -u | xargs) + + if [ -z "$PKGS" ] ; then + echo required utilities exist : $UTILS + else + echo \* installing prerequisites + + echo packages required : $PKGS + + APTGET=$(whichq apt-get) + YUM=$(whichq yum) + PACMAN=$(whichq pacman) + ZYPPER=$(whichq zypper) + EOPKG=$(whichq eopkg) + APK=$(whichq apk) + if [ -x "$APTGET" ] ; then + "$APTGET" update + "$APTGET" install -y --no-install-recommends $PKGS dnsutils || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$YUM" ] ; then + "$YUM" -y install $PKGS || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$PACMAN" ] ; then + "$PACMAN" -Syy + "$PACMAN" --noconfirm -S $PKGS || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$ZYPPER" ] ; then + "$ZYPPER" --non-interactive install $PKGS || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$EOPKG" ] ; then + "$EOPKG" -y install $PKGS || { + echo could not install prerequisites + exitp 6 + } + elif [ -x "$APK" ] ; then + "$APK" update + # for alpine + [ "$FWTYPE" = iptables ] && [ -n "$($APK list ip6tables)" ] && PKGS="$PKGS ip6tables" + "$APK" add $PKGS || { + echo could not install prerequisites + exitp 6 + } + else + echo supported package manager not found + echo you must manually install : $UTILS + exitp 5 + fi + fi +} + +check_prerequisites_openwrt() +{ + echo \* checking prerequisites + + local PKGS="curl" UPD=0 + + case "$FWTYPE" in + iptables) + PKGS="$PKGS ipset iptables iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra" + [ "$DISABLE_IPV6" != "1" ] && PKGS="$PKGS ip6tables ip6tables-mod-nat ip6tables-extra" + ;; + nftables) + PKGS="$PKGS nftables kmod-nft-nat kmod-nft-offload kmod-nft-queue" + ;; + esac + + 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 + } + [ "$FSLEEP" = 0 ] && is_linked_to_busybox sleep && { + echo + echo no methods of sub-second sleep were found. + echo if you want to speed up blockcheck install coreutils-sleep. it requires about 40 Kb space + if ask_yes_no N "do you want to install COREUTILS sleep"; then + [ "$UPD" = "0" ] && { + opkg update + UPD=1 + } + opkg install --force-overwrite coreutils-sleep + fsleep_setup + fi + } +} + + + +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 +} +select_fwtype() +{ + echo + [ $(get_ram_mb) -le 400 ] && { + echo WARNING ! you are running a low RAM system + echo WARNING ! nft requires lots of RAM to load huge ip sets, much more than ipsets require + echo WARNING ! if you need large lists it may be necessary to fall back to iptables+ipset firewall + } + echo select firewall type : + ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE +} diff --git a/common/ipt.sh b/common/ipt.sh new file mode 100644 index 0000000..c134d82 --- /dev/null +++ b/common/ipt.sh @@ -0,0 +1,472 @@ +std_ports +readonly ipt_connbytes="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes" + +ipt() +{ + iptables -C "$@" >/dev/null 2>/dev/null || iptables -I "$@" +} +ipta() +{ + iptables -C "$@" >/dev/null 2>/dev/null || iptables -A "$@" +} +ipt_del() +{ + iptables -C "$@" >/dev/null 2>/dev/null && iptables -D "$@" +} +ipt_add_del() +{ + on_off_function ipt ipt_del "$@" +} +ipta_add_del() +{ + on_off_function ipta ipt_del "$@" +} +ipt6() +{ + ip6tables -C "$@" >/dev/null 2>/dev/null || ip6tables -I "$@" +} +ipt6a() +{ + ip6tables -C "$@" >/dev/null 2>/dev/null || ip6tables -A "$@" +} +ipt6_del() +{ + ip6tables -C "$@" >/dev/null 2>/dev/null && ip6tables -D "$@" +} +ipt6_add_del() +{ + on_off_function ipt6 ipt6_del "$@" +} +ipt6a_add_del() +{ + on_off_function ipt6 ipt6a_del "$@" +} + +is_ipt_flow_offload_avail() +{ + # $1 = '' for ipv4, '6' for ipv6 + grep -q FLOWOFFLOAD 2>/dev/null /proc/net/ip$1_tables_targets +} + +filter_apply_port_target() +{ + # $1 - var name of iptables filter + local f + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + f="-p tcp -m multiport --dports $HTTP_PORTS_IPT,$HTTPS_PORTS_IPT" + elif [ "$MODE_HTTPS" = "1" ]; then + f="-p tcp -m multiport --dports $HTTPS_PORTS_IPT" + elif [ "$MODE_HTTP" = "1" ]; then + f="-p tcp -m multiport --dports $HTTP_PORTS_IPT" + else + echo WARNING !!! HTTP and HTTPS are both disabled + fi + eval $1="\"\$$1 $f\"" +} +filter_apply_port_target_quic() +{ + # $1 - var name of nftables filter + local f + f="-p udp -m multiport --dports $QUIC_PORTS_IPT" + eval $1="\"\$$1 $f\"" +} +filter_apply_ipset_target4() +{ + # $1 - var name of ipv4 iptables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 -m set --match-set zapret dst\"" + fi +} +filter_apply_ipset_target6() +{ + # $1 - var name of ipv6 iptables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 -m set --match-set zapret6 dst\"" + fi +} +filter_apply_ipset_target() +{ + # $1 - var name of ipv4 iptables filter + # $2 - var name of ipv6 iptables filter + filter_apply_ipset_target4 $1 + filter_apply_ipset_target6 $2 +} + +reverse_nfqws_rule_stream() +{ + sed -e 's/-o /-i /g' -e 's/--dport /--sport /g' -e 's/--dports /--sports /g' -e 's/ dst$/ src/' -e 's/ dst / src /g' -e 's/--connbytes-dir=original/--connbytes-dir=reply/g' -e "s/-m mark ! --mark $DESYNC_MARK\/$DESYNC_MARK//g" +} +reverse_nfqws_rule() +{ + echo "$@" | reverse_nfqws_rule_stream +} + +prepare_tpws_fw4() +{ + # otherwise linux kernel will treat 127.0.0.0/8 as "martian" ip and refuse routing to it + # NOTE : kernels <3.6 do not have this feature. consider upgrading or change DNAT to REDIRECT and do not bind to 127.0.0.0/8 + + [ "$DISABLE_IPV4" = "1" ] || { + iptables -N input_rule_zapret 2>/dev/null + ipt input_rule_zapret -d $TPWS_LOCALHOST4 -j RETURN + ipta input_rule_zapret -d 127.0.0.0/8 -j DROP + ipt INPUT ! -i lo -j input_rule_zapret + + prepare_route_localnet + } +} +unprepare_tpws_fw4() +{ + [ "$DISABLE_IPV4" = "1" ] || { + unprepare_route_localnet + + ipt_del INPUT ! -i lo -j input_rule_zapret + iptables -F input_rule_zapret 2>/dev/null + iptables -X input_rule_zapret 2>/dev/null + } +} +unprepare_tpws_fw() +{ + unprepare_tpws_fw4 +} + + +ipt_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 + # $4 - lan interface names space separated + # $5 - wan interface names space separated + [ "$DISABLE_IPV4" = "1" -o -z "$2" ] || { + local i rule + + [ "$1" = 1 ] && prepare_tpws_fw4 + + ipt_print_op $1 "$2" "tpws (port $3)" + + rule="$2 $IPSET_EXCLUDE dst -j DNAT --to $TPWS_LOCALHOST4:$3" + for i in $4 ; do + ipt_add_del $1 PREROUTING -t nat -i $i $rule + done + + rule="-m owner ! --uid-owner $WS_USER $rule" + if [ -n "$5" ]; then + for i in $5; do + ipt_add_del $1 OUTPUT -t nat -o $i $rule + done + else + ipt_add_del $1 OUTPUT -t nat $rule + fi + } +} +_fw_tpws6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - tpws port + # $4 - lan interface names space separated + # $5 - wan interface names space separated + + [ "$DISABLE_IPV6" = "1" -o -z "$2" ] || { + local i rule DNAT6 + + ipt_print_op $1 "$2" "tpws (port $3)" 6 + + rule="$2 $IPSET_EXCLUDE6 dst" + for i in $4 ; do + _dnat6_target $i DNAT6 + [ -n "$DNAT6" -a "$DNAT6" != "-" ] && ipt6_add_del $1 PREROUTING -t nat -i $i $rule -j DNAT --to [$DNAT6]:$3 + done + + rule="-m owner ! --uid-owner $WS_USER $rule -j DNAT --to [::1]:$3" + if [ -n "$5" ]; then + for i in $5; do + ipt6_add_del $1 OUTPUT -t nat -o $i $rule + done + else + ipt6_add_del $1 OUTPUT -t nat $rule + fi + } +} +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_post4() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - queue number + # $4 - wan interface names space separated + [ "$DISABLE_IPV4" = "1" -o -z "$2" ] || { + local i + + ipt_print_op $1 "$2" "nfqws postrouting (qnum $3)" + + rule="$2 $IPSET_EXCLUDE dst -j NFQUEUE --queue-num $3 --queue-bypass" + if [ -n "$4" ] ; then + for i in $4; do + ipt_add_del $1 POSTROUTING -t mangle -o $i $rule + done + else + ipt_add_del $1 POSTROUTING -t mangle $rule + fi + } +} +_fw_nfqws_post6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - queue number + # $4 - wan interface names space separated + [ "$DISABLE_IPV6" = "1" -o -z "$2" ] || { + local i + + ipt_print_op $1 "$2" "nfqws postrouting (qnum $3)" 6 + + rule="$2 $IPSET_EXCLUDE6 dst -j NFQUEUE --queue-num $3 --queue-bypass" + if [ -n "$4" ] ; then + for i in $4; do + ipt6_add_del $1 POSTROUTING -t mangle -o $i $rule + done + else + ipt6_add_del $1 POSTROUTING -t mangle $rule + fi + } +} +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 +} + +_fw_nfqws_pre4() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv4 + # $3 - queue number + # $4 - wan interface names space separated + [ "$DISABLE_IPV4" = "1" -o -z "$2" ] || { + local i + + ipt_print_op $1 "$2" "nfqws input+forward (qnum $3)" + + rule="$2 $IPSET_EXCLUDE src -j NFQUEUE --queue-num $3 --queue-bypass" + if [ -n "$4" ] ; then + for i in $4; do + # iptables PREROUTING chain is before NAT. not possible to have DNATed ip's there + ipt_add_del $1 INPUT -t mangle -i $i $rule + ipt_add_del $1 FORWARD -t mangle -i $i $rule + done + else + ipt_add_del $1 INPUT -t mangle $rule + ipt_add_del $1 FORWARD -t mangle $rule + fi + } +} +_fw_nfqws_pre6() +{ + # $1 - 1 - add, 0 - del + # $2 - iptable filter for ipv6 + # $3 - queue number + # $4 - wan interface names space separated + [ "$DISABLE_IPV6" = "1" -o -z "$2" ] || { + local i + + ipt_print_op $1 "$2" "nfqws input+forward (qnum $3)" 6 + + rule="$2 $IPSET_EXCLUDE6 src -j NFQUEUE --queue-num $3 --queue-bypass" + if [ -n "$4" ] ; then + for i in $4; do + # iptables PREROUTING chain is before NAT. not possible to have DNATed ip's there + ipt6_add_del $1 INPUT -t mangle -i $i $rule + ipt6_add_del $1 FORWARD -t mangle -i $i $rule + done + else + ipt6_add_del $1 INPUT -t mangle $rule + ipt6_add_del $1 FORWARD -t mangle $rule + fi + } +} +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 +} + + +produce_reverse_nfqws_rule() +{ + local rule="$1" + if contains "$rule" "$ipt_connbytes"; then + # autohostlist - need several incoming packets + # autottl - need only one incoming packet + [ "$MODE_FILTER" = autohostlist ] || rule=$(echo "$rule" | sed -re "s/$ipt_connbytes [0-9]+:[0-9]+/$ipt_connbytes 1:1/") + else + local n=1 + [ "$MODE_FILTER" = autohostlist ] && n=$(first_packets_for_mode) + rule="$ipt_connbytes 1:$n $rule" + fi + echo "$rule" | reverse_nfqws_rule_stream +} +fw_reverse_nfqws_rule4() +{ + fw_nfqws_pre4 $1 "$(produce_reverse_nfqws_rule "$2")" $3 +} +fw_reverse_nfqws_rule6() +{ + fw_nfqws_pre6 $1 "$(produce_reverse_nfqws_rule "$2")" $3 +} +fw_reverse_nfqws_rule() +{ + # ensure that modes relying on incoming traffic work + # $1 - 1 - add, 0 - del + # $2 - rule4 + # $3 - rule6 + # $4 - queue number + fw_reverse_nfqws_rule4 $1 "$2" $4 + fw_reverse_nfqws_rule6 $1 "$3" $4 +} + + +zapret_do_firewall_rules_ipt() +{ + local mode="${MODE_OVERRIDE:-$MODE}" + + local first_packet_only="$ipt_connbytes 1:$(first_packets_for_mode)" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + local n f4 f6 qn qns qn6 qns6 + + 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) + # quite complex but we need to minimize nfqws processes to save RAM + get_nfqws_qnums qn qns qn6 qns6 + if [ "$MODE_HTTP_KEEPALIVE" != "1" ] && [ -n "$qn" ] && [ "$qn" = "$qns" ]; then + filter_apply_port_target f4 + f4="$f4 $first_packet_only" + filter_apply_ipset_target4 f4 + fw_nfqws_post4 $1 "$f4 $desync" $qn + fw_reverse_nfqws_rule4 $1 "$f4" $qn + else + if [ -n "$qn" ]; then + f4="-p tcp -m multiport --dports $HTTP_PORTS_IPT" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f4="$f4 $first_packet_only" + filter_apply_ipset_target4 f4 + fw_nfqws_post4 $1 "$f4 $desync" $qn + fw_reverse_nfqws_rule4 $1 "$f4" $qn + fi + if [ -n "$qns" ]; then + f4="-p tcp -m multiport --dports $HTTPS_PORTS_IPT $first_packet_only" + filter_apply_ipset_target4 f4 + fw_nfqws_post4 $1 "$f4 $desync" $qns + fw_reverse_nfqws_rule4 $1 "$f4" $qns + fi + fi + if [ "$MODE_HTTP_KEEPALIVE" != "1" ] && [ -n "$qn6" ] && [ "$qn6" = "$qns6" ]; then + filter_apply_port_target f6 + f6="$f6 $first_packet_only" + filter_apply_ipset_target6 f6 + fw_nfqws_post6 $1 "$f6 $desync" $qn6 + fw_reverse_nfqws_rule6 $1 "$f6" $qn6 + else + if [ -n "$qn6" ]; then + f6="-p tcp -m multiport --dports $HTTP_PORTS_IPT" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f6="$f6 $first_packet_only" + filter_apply_ipset_target6 f6 + fw_nfqws_post6 $1 "$f6 $desync" $qn6 + fw_reverse_nfqws_rule6 $1 "$f6" $qn6 + fi + if [ -n "$qns6" ]; then + f6="-p tcp -m multiport --dports $HTTPS_PORTS_IPT $first_packet_only" + filter_apply_ipset_target6 f6 + fw_nfqws_post6 $1 "$f6 $desync" $qns6 + fw_reverse_nfqws_rule6 $1 "$f6" $qns6 + fi + fi + + get_nfqws_qnums_quic qn qn6 + if [ -n "$qn" ]; then + f4= + filter_apply_port_target_quic f4 + f4="$f4 $first_packet_only" + filter_apply_ipset_target4 f4 + fw_nfqws_post4 $1 "$f4 $desync" $qn + fi + if [ -n "$qn6" ]; then + f6= + filter_apply_port_target_quic f6 + f6="$f6 $first_packet_only" + filter_apply_ipset_target6 f6 + fw_nfqws_post6 $1 "$f6 $desync" $qn6 + fi + ;; + custom) + custom_runner zapret_custom_firewall $1 + ;; + esac +} + +zapret_do_firewall_ipt() +{ + # $1 - 1 - add, 0 - del + + if [ "$1" = 1 ]; then + echo Applying iptables + else + echo Clearing iptables + fi + + local mode="${MODE_OVERRIDE:-$MODE}" + + [ "$mode" = "tpws-socks" ] && return 0 + + # always create ipsets. ip_exclude ipset is required + [ "$1" = 1 ] && create_ipset no-update + + zapret_do_firewall_rules_ipt "$@" + + if [ "$1" = 1 ] ; then + existf flow_offloading_exempt && flow_offloading_exempt + else + existf flow_offloading_unexempt && flow_offloading_unexempt + unprepare_tpws_fw + fi + + return 0 +} diff --git a/common/linux_fw.sh b/common/linux_fw.sh new file mode 100644 index 0000000..dbddc65 --- /dev/null +++ b/common/linux_fw.sh @@ -0,0 +1,53 @@ +set_conntrack_liberal_mode() +{ + [ -n "$SKIP_CONNTRACK_LIBERAL_MODE" ] || sysctl -w net.netfilter.nf_conntrack_tcp_be_liberal=$1 +} +zapret_do_firewall() +{ + linux_fwtype + + [ "$1" = 1 -a -n "$INIT_FW_PRE_UP_HOOK" ] && $INIT_FW_PRE_UP_HOOK + [ "$1" = 0 -a -n "$INIT_FW_PRE_DOWN_HOOK" ] && $INIT_FW_PRE_DOWN_HOOK + + case "$FWTYPE" in + iptables) + zapret_do_firewall_ipt "$@" + ;; + nftables) + zapret_do_firewall_nft "$@" + ;; + esac + + # russian DPI sends RST,ACK with wrong ACK. + # this is sometimes treated by conntrack as invalid and connbytes fw rules do not pass RST packet to nfqws. + # switch on liberal mode on zapret firewall start and switch off on zapret firewall stop + # this is only required for processing incoming bad RSTs. incoming rules are only applied in autohostlist mode + # calling this after firewall because conntrack module can be not loaded before applying conntrack firewall rules + [ "$MODE_FILTER" = "autohostlist" -a "$MODE" != tpws -a "$MODE" != tpws-socks ] && set_conntrack_liberal_mode $1 + + [ "$1" = 1 -a -n "$INIT_FW_POST_UP_HOOK" ] && $INIT_FW_POST_UP_HOOK + [ "$1" = 0 -a -n "$INIT_FW_POST_DOWN_HOOK" ] && $INIT_FW_POST_DOWN_HOOK + + return 0 +} +zapret_apply_firewall() +{ + zapret_do_firewall 1 "$@" +} +zapret_unapply_firewall() +{ + zapret_do_firewall 0 "$@" +} + +first_packets_for_mode() +{ + # autohostlist and autottl modes requires incoming traffic sample + # always use conntrack packet limiter or nfqws will deal with gigabytes + local n + if [ "$MODE_FILTER" = "autohostlist" ]; then + n=$((6+${AUTOHOSTLIST_RETRANS_THRESHOLD:-3})) + else + n=6 + fi + echo $n +} diff --git a/common/linux_iphelper.sh b/common/linux_iphelper.sh new file mode 100644 index 0000000..e22f91a --- /dev/null +++ b/common/linux_iphelper.sh @@ -0,0 +1,127 @@ +# 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 +} + +iface_is_up() +{ + # $1 - interface name + [ -f /sys/class/net/$1/operstate ] || return + local state + read state /dev/null +} +nft_list_table() +{ + nft -t list table inet $ZAPRET_NFT_TABLE +} + +nft_create_set() +{ + # $1 - set name + # $2 - params + nft create set inet $ZAPRET_NFT_TABLE $1 "{ $2 }" 2>/dev/null +} +nft_del_set() +{ + # $1 - set name + nft delete set inet $ZAPRET_NFT_TABLE $1 +} +nft_flush_set() +{ + # $1 - set name + nft flush set inet $ZAPRET_NFT_TABLE $1 +} +nft_set_exists() +{ + # $1 - set name + nft -t list set inet $ZAPRET_NFT_TABLE $1 2>/dev/null >/dev/null +} +nft_flush_chain() +{ + # $1 - chain name + nft flush chain inet $ZAPRET_NFT_TABLE $1 +} + +nft_del_all_chains_from_table() +{ + # $1 - table_name with or without family + + # delete all chains with possible references to each other + # cannot just delete all in the list because of references + # avoid infinite loops + local chains deleted=1 error=1 + while [ -n "$deleted" -a -n "$error" ]; do + chains=$(nft -t list table $1 2>/dev/null | sed -nre "s/^[ ]*chain ([^ ]+) \{/\1/p" | xargs) + [ -n "$chains" ] || break + deleted= + error= + for chain in $chains; do + if nft delete chain $1 $chain 2>/dev/null; then + deleted=1 + else + error=1 + fi + done + done +} + +nft_create_chains() +{ +cat << EOF | nft -f - + add chain inet $ZAPRET_NFT_TABLE dnat_output { type nat hook output priority -101; } + flush chain inet $ZAPRET_NFT_TABLE dnat_output + add chain inet $ZAPRET_NFT_TABLE dnat_pre { type nat hook prerouting priority -101; } + flush chain inet $ZAPRET_NFT_TABLE dnat_pre + add chain inet $ZAPRET_NFT_TABLE forward { type filter hook forward priority -1; } + flush chain inet $ZAPRET_NFT_TABLE forward + add chain inet $ZAPRET_NFT_TABLE input { type filter hook input priority -1; } + flush chain inet $ZAPRET_NFT_TABLE input + add chain inet $ZAPRET_NFT_TABLE flow_offload + flush chain inet $ZAPRET_NFT_TABLE flow_offload + add chain inet $ZAPRET_NFT_TABLE localnet_protect + flush chain inet $ZAPRET_NFT_TABLE localnet_protect + add rule inet $ZAPRET_NFT_TABLE localnet_protect ip daddr $TPWS_LOCALHOST4 return comment "route_localnet allow access to tpws" + add rule inet $ZAPRET_NFT_TABLE localnet_protect ip daddr 127.0.0.0/8 drop comment "route_localnet remote access protection" + add rule inet $ZAPRET_NFT_TABLE input iif != lo jump localnet_protect + add chain inet $ZAPRET_NFT_TABLE postrouting { type filter hook postrouting priority 99; } + flush chain inet $ZAPRET_NFT_TABLE postrouting + add chain inet $ZAPRET_NFT_TABLE postnat { type filter hook postrouting priority 101; } + flush chain inet $ZAPRET_NFT_TABLE postnat + add chain inet $ZAPRET_NFT_TABLE prerouting { type filter hook prerouting priority -99; } + flush chain inet $ZAPRET_NFT_TABLE prerouting + add chain inet $ZAPRET_NFT_TABLE prenat { type filter hook prerouting priority -101; } + flush chain inet $ZAPRET_NFT_TABLE prenat + add chain inet $ZAPRET_NFT_TABLE predefrag { type filter hook output priority -401; } + flush chain inet $ZAPRET_NFT_TABLE predefrag + add chain inet $ZAPRET_NFT_TABLE predefrag_nfqws + flush chain inet $ZAPRET_NFT_TABLE predefrag_nfqws + add rule inet $ZAPRET_NFT_TABLE predefrag mark and $DESYNC_MARK !=0 jump predefrag_nfqws comment "nfqws generated : avoid drop by INVALID conntrack state" + add rule inet $ZAPRET_NFT_TABLE predefrag_nfqws mark and $DESYNC_MARK_POSTNAT !=0 notrack comment "postnat traffic" + add rule inet $ZAPRET_NFT_TABLE predefrag_nfqws ip frag-off != 0 notrack comment "ipfrag" + add rule inet $ZAPRET_NFT_TABLE predefrag_nfqws exthdr frag exists notrack comment "ipfrag" + add rule inet $ZAPRET_NFT_TABLE predefrag_nfqws tcp flags ! syn,rst,ack notrack comment "datanoack" + add set inet $ZAPRET_NFT_TABLE lanif { type ifname; } + add set inet $ZAPRET_NFT_TABLE wanif { type ifname; } + add set inet $ZAPRET_NFT_TABLE wanif6 { type ifname; } + add map inet $ZAPRET_NFT_TABLE link_local { type ifname : ipv6_addr; } +EOF + [ -n "$POSTNAT_ALL" ] && { + nft_flush_chain predefrag_nfqws + nft_add_rule predefrag_nfqws notrack comment \"do not track nfqws generated packets to avoid nat tampering and defragmentation\" + } +} +nft_del_chains() +{ + # do not delete all chains because of additional user hooks + # they must be inside zapret table to use nfsets + +cat << EOF | nft -f - 2>/dev/null + delete chain inet $ZAPRET_NFT_TABLE dnat_output + delete chain inet $ZAPRET_NFT_TABLE dnat_pre + delete chain inet $ZAPRET_NFT_TABLE forward + delete chain inet $ZAPRET_NFT_TABLE input + delete chain inet $ZAPRET_NFT_TABLE postrouting + delete chain inet $ZAPRET_NFT_TABLE postnat + delete chain inet $ZAPRET_NFT_TABLE prerouting + delete chain inet $ZAPRET_NFT_TABLE prenat + delete chain inet $ZAPRET_NFT_TABLE predefrag + delete chain inet $ZAPRET_NFT_TABLE predefrag_nfqws + delete chain inet $ZAPRET_NFT_TABLE flow_offload + delete chain inet $ZAPRET_NFT_TABLE localnet_protect +EOF +# unfortunately this approach breaks udp desync of the connection initiating packet (new, first one) +# delete chain inet $ZAPRET_NFT_TABLE predefrag +} +nft_del_flowtable() +{ + nft delete flowtable inet $ZAPRET_NFT_TABLE ft 2>/dev/null +} +nft_create_or_update_flowtable() +{ + # $1 = flags ('offload' for hw offload) + # $2,$3,$4,... - interfaces + # can be called multiple times to add interfaces. interfaces can only be added , not removed + local flags=$1 devices makelist + shift + # warning ! nft versions at least up to 1.0.1 do not allow interface names starting with digit in flowtable and do not allow quoting + # warning ! openwrt fixes this in post-21.x snapshots with special nft patch + # warning ! in traditional linux distros nft is unpatched and will fail with quoted interface definitions if unfixed + [ -n "$flags" ] && flags="flags $flags;" + for makelist in make_quoted_comma_list make_comma_list; do + $makelist devices "$@" + [ -n "$devices" ] && devices="devices={$devices};" + nft add flowtable inet $ZAPRET_NFT_TABLE ft "{ hook ingress priority -1; $flags $devices }" && break + done +} +nft_flush_ifsets() +{ +cat << EOF | nft -f - 2>/dev/null + flush set inet $ZAPRET_NFT_TABLE lanif + flush set inet $ZAPRET_NFT_TABLE wanif + flush set inet $ZAPRET_NFT_TABLE wanif6 + flush map inet $ZAPRET_NFT_TABLE link_local +EOF +} +nft_flush_link_local() +{ + nft flush map inet $ZAPRET_NFT_TABLE link_local 2>/dev/null +} +nft_list_ifsets() +{ + nft list set inet $ZAPRET_NFT_TABLE lanif + nft list set inet $ZAPRET_NFT_TABLE wanif + nft list set inet $ZAPRET_NFT_TABLE wanif6 + nft list map inet $ZAPRET_NFT_TABLE link_local + nft list flowtable inet $ZAPRET_NFT_TABLE ft 2>/dev/null +} + +nft_create_firewall() +{ + nft_create_table + nft_del_flowtable + nft_flush_link_local + nft_create_chains +} +nft_del_firewall() +{ + nft_del_chains + nft_del_flowtable + nft_flush_link_local + # leave ifsets and ipsets because they may be used by custom rules +} + +nft_add_rule() +{ + # $1 - chain + # $2,$3,... - rule(s) + local chain="$1" + shift + nft add rule inet $ZAPRET_NFT_TABLE $chain "$@" +} +nft_add_set_element() +{ + # $1 - set or map name + # $2 - element + [ -z "$2" ] || nft add element inet $ZAPRET_NFT_TABLE $1 "{ $2 }" +} +nft_add_set_elements() +{ + # $1 - set or map name + # $2,$3,... - element(s) + local set="$1" elements + shift + make_comma_list elements "$@" + nft_add_set_element $set "$elements" +} +nft_reverse_nfqws_rule() +{ + echo "$@" | sed -e 's/oifname /iifname /g' -e 's/dport /sport /g' -e 's/daddr /saddr /g' -e 's/ct original /ct reply /g' -e "s/mark and $DESYNC_MARK == 0//g" +} +nft_clean_nfqws_rule() +{ + echo "$@" | sed -e "s/mark and $DESYNC_MARK == 0//g" -e "s/oifname @wanif6//g" -e "s/oifname @wanif//g" +} +nft_add_nfqws_flow_exempt_rule() +{ + # $1 - rule (must be all filters in one var) + nft_add_rule flow_offload $(nft_clean_nfqws_rule $1) return comment \"direct flow offloading exemption\" + # do not need this because of oifname @wanif/@wanif6 filter in forward chain + #nft_add_rule flow_offload $(nft_reverse_nfqws_rule $1) return comment \"reverse flow offloading exemption\" +} +nft_add_flow_offload_exemption() +{ + # "$1" - rule for ipv4 + # "$2" - rule for ipv6 + # "$3" - comment + [ "$DISABLE_IPV4" = "1" -o -z "$1" ] || nft_add_rule flow_offload oifname @wanif $1 ip daddr != @nozapret return comment \"$3\" + [ "$DISABLE_IPV6" = "1" -o -z "$2" ] || nft_add_rule flow_offload oifname @wanif6 $2 ip6 daddr != @nozapret6 return comment \"$3\" +} + +nft_hw_offload_supported() +{ + # $1,$2,... - interface names + local devices res=1 + make_quoted_comma_list devices "$@" + [ -n "$devices" ] && devices="devices={$devices};" + nft add table ${ZAPRET_NFT_TABLE}_test && nft add flowtable ${ZAPRET_NFT_TABLE}_test ft "{ flags offload; $devices }" 2>/dev/null && res=0 + nft delete table ${ZAPRET_NFT_TABLE}_test 2>/dev/null + return $res +} + +nft_hw_offload_find_supported() +{ + # $1,$2,... - interface names + local supported_list + while [ -n "$1" ]; do + nft_hw_offload_supported "$1" && append_separator_list supported_list ' ' '' "$1" + shift + done + echo $supported_list +} + +nft_apply_flow_offloading() +{ + # ft can be absent + nft_add_rule flow_offload meta l4proto "{ tcp, udp }" flow add @ft 2>/dev/null && { + nft_add_rule flow_offload meta l4proto "{ tcp, udp }" counter comment \"if offload works here must not be too much traffic\" + # allow only outgoing packets to initiate flow offload + nft_add_rule forward oifname @wanif jump flow_offload + nft_add_rule forward oifname @wanif6 jump flow_offload + } +} + + + +nft_filter_apply_port_target() +{ + # $1 - var name of nftables filter + local f + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + f="tcp dport {$HTTP_PORTS,$HTTPS_PORTS}" + elif [ "$MODE_HTTPS" = "1" ]; then + f="tcp dport {$HTTPS_PORTS}" + elif [ "$MODE_HTTP" = "1" ]; then + f="tcp dport {$HTTP_PORTS}" + else + echo WARNING !!! HTTP and HTTPS are both disabled + fi + eval $1="\"\$$1 $f\"" +} +nft_filter_apply_port_target_quic() +{ + # $1 - var name of nftables filter + local f + f="udp dport {$QUIC_PORTS}" + eval $1="\"\$$1 $f\"" +} +nft_filter_apply_ipset_target4() +{ + # $1 - var name of ipv4 nftables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 ip daddr @zapret\"" + fi +} +nft_filter_apply_ipset_target6() +{ + # $1 - var name of ipv6 nftables filter + if [ "$MODE_FILTER" = "ipset" ]; then + eval $1="\"\$$1 ip6 daddr @zapret6\"" + fi +} +nft_filter_apply_ipset_target() +{ + # $1 - var name of ipv4 nftables filter + # $2 - var name of ipv6 nftables filter + nft_filter_apply_ipset_target4 $1 + nft_filter_apply_ipset_target6 $2 +} + + +nft_script_add_ifset_element() +{ + # $1 - set name + # $2 - space separated elements + local elements + [ -n "$2" ] && { + make_quoted_comma_list elements $2 + script="${script} +add element inet $ZAPRET_NFT_TABLE $1 { $elements }" + } +} +nft_fill_ifsets() +{ + # $1 - space separated lan interface names + # $2 - space separated wan interface names + # $3 - space separated wan6 interface names + # 4,5,6 is needed for pppoe+openwrt case. looks like it's not easily possible to resolve ethernet device behind a pppoe interface + # $4 - space separated lan physical interface names (optional) + # $5 - space separated wan physical interface names (optional) + # $6 - space separated wan6 physical interface names (optional) + + local script i j ALLDEVS devs + + # if large sets exist nft works very ineffectively + # looks like it analyzes the whole table blob to find required data pieces + # calling all in one shot helps not to waste cpu time many times + + script="flush set inet $ZAPRET_NFT_TABLE wanif +flush set inet $ZAPRET_NFT_TABLE wanif6 +flush set inet $ZAPRET_NFT_TABLE lanif" + + [ "$DISABLE_IPV4" = "1" ] || nft_script_add_ifset_element wanif "$2" + [ "$DISABLE_IPV6" = "1" ] || nft_script_add_ifset_element wanif6 "$3" + nft_script_add_ifset_element lanif "$1" + + echo "$script" | nft -f - + + case "$FLOWOFFLOAD" in + software) + ALLDEVS=$(unique $1 $2 $3) + # unbound flowtable may cause error in older nft version + nft_create_or_update_flowtable '' $ALLDEVS 2>/dev/null + ;; + hardware) + ALLDEVS=$(unique $1 $2 $3 $4 $5 $6) + # first create unbound flowtable. may cause error in older nft version + nft_create_or_update_flowtable 'offload' 2>/dev/null + # then add elements. some of them can cause error because unsupported + for i in $ALLDEVS; do + if nft_hw_offload_supported $i; then + nft_create_or_update_flowtable 'offload' $i + else + # bridge members must be added instead of the bridge itself + # some members may not support hw offload. example : lan1 lan2 lan3 support, wlan0 wlan1 - not + devs=$(resolve_lower_devices $i) + for j in $devs; do + # do not display error if addition failed + nft_create_or_update_flowtable 'offload' $j 2>/dev/null + done + fi + done + ;; + esac +} + +nft_only() +{ + linux_fwtype + + case "$FWTYPE" in + nftables) + "$@" + ;; + esac +} + + +nft_print_op() +{ + echo "Adding nftables ipv$3 rule for $2 : $1" +} +_nft_fw_tpws4() +{ + # $1 - filter ipv4 + # $2 - tpws port + # $3 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV4" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" + nft_print_op "$filter" "tpws (port $2)" 4 + nft_add_rule dnat_output skuid != $WS_USER ${3:+oifname @wanif }$filter ip daddr != @nozapret dnat ip to $TPWS_LOCALHOST4:$port + nft_add_rule dnat_pre iifname @lanif $filter ip daddr != @nozapret dnat ip to $TPWS_LOCALHOST4:$port + prepare_route_localnet + } +} +_nft_fw_tpws6() +{ + # $1 - filter ipv6 + # $2 - tpws port + # $3 - lan interface names space separated + # $4 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV6" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" DNAT6 i + nft_print_op "$filter" "tpws (port $port)" 6 + nft_add_rule dnat_output skuid != $WS_USER ${4:+oifname @wanif6 }$filter ip6 daddr != @nozapret6 dnat ip6 to [::1]:$port + [ -n "$3" ] && { + nft_add_rule dnat_pre $filter ip6 daddr != @nozapret6 dnat ip6 to iifname map @link_local:$port + for i in $3; do + _dnat6_target $i DNAT6 + # can be multiple tpws processes on different ports + [ -n "$DNAT6" -a "$DNAT6" != '-' ] && nft_add_set_element link_local "$i : $DNAT6" + done + } + } +} +nft_fw_tpws() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - tpws port + + nft_fw_tpws4 "$1" $3 + nft_fw_tpws6 "$2" $3 +} +is_postnat() +{ + [ "$POSTNAT" != 0 -o "$POSTNAT_ALL" = 1 ] +} +get_postchain() +{ + if is_postnat ; then + echo -n postnat + else + echo -n postrouting + fi +} +get_prechain() +{ + if is_postnat ; then + echo -n prenat + else + echo -n prerouting + fi +} +_nft_fw_nfqws_post4() +{ + # $1 - filter ipv4 + # $2 - queue number + # $3 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV4" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" rule chain=$(get_postchain) setmark + nft_print_op "$filter" "nfqws postrouting (qnum $port)" 4 + rule="${3:+oifname @wanif }$filter ip daddr != @nozapret" + is_postnat && setmark="meta mark set meta mark or $DESYNC_MARK_POSTNAT" + nft_add_rule $chain $rule $setmark queue num $port bypass + nft_add_nfqws_flow_exempt_rule "$rule" + } +} +_nft_fw_nfqws_post6() +{ + # $1 - filter ipv6 + # $2 - queue number + # $3 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV6" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" rule chain=$(get_postchain) setmark + nft_print_op "$filter" "nfqws postrouting (qnum $port)" 6 + rule="${3:+oifname @wanif6 }$filter ip6 daddr != @nozapret6" + is_postnat && setmark="meta mark set meta mark or $DESYNC_MARK_POSTNAT" + nft_add_rule $chain $rule $setmark queue num $port bypass + nft_add_nfqws_flow_exempt_rule "$rule" + } +} +nft_fw_nfqws_post() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - queue number + + nft_fw_nfqws_post4 "$1" $3 + nft_fw_nfqws_post6 "$2" $3 +} + +_nft_fw_nfqws_pre4() +{ + # $1 - filter ipv4 + # $2 - queue number + # $3 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV4" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" rule + nft_print_op "$filter" "nfqws prerouting (qnum $port)" 4 + rule="${3:+iifname @wanif }$filter ip saddr != @nozapret" + nft_add_rule $(get_prechain) $rule queue num $port bypass + } +} +_nft_fw_nfqws_pre6() +{ + # $1 - filter ipv6 + # $2 - queue number + # $3 - not-empty if wan interface filtering required + + [ "$DISABLE_IPV6" = "1" -o -z "$1" ] || { + local filter="$1" port="$2" rule + nft_print_op "$filter" "nfqws prerouting (qnum $port)" 6 + rule="${3:+iifname @wanif6 }$filter ip6 saddr != @nozapret6" + nft_add_rule $(get_prechain) $rule queue num $port bypass + } +} +nft_fw_nfqws_pre() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - queue number + + nft_fw_nfqws_pre4 "$1" $3 + nft_fw_nfqws_pre6 "$2" $3 +} + +nft_fw_nfqws_both4() +{ + # $1 - filter ipv4 + # $2 - queue number + nft_fw_nfqws_post4 "$@" + nft_fw_nfqws_pre4 "$(nft_reverse_nfqws_rule $1)" $2 +} +nft_fw_nfqws_both6() +{ + # $1 - filter ipv6 + # $2 - queue number + nft_fw_nfqws_post6 "$@" + nft_fw_nfqws_pre6 "$(nft_reverse_nfqws_rule $1)" $2 +} +nft_fw_nfqws_both() +{ + # $1 - filter ipv4 + # $2 - filter ipv6 + # $3 - queue number + nft_fw_nfqws_both4 "$1" "$3" + nft_fw_nfqws_both6 "$2" "$3" +} + +zapret_reload_ifsets() +{ + nft_only nft_create_table ; nft_fill_ifsets_overload + return 0 +} +zapret_list_ifsets() +{ + nft_only nft_list_ifsets + return 0 +} +zapret_list_table() +{ + nft_only nft_list_table + return 0 +} + + + +nft_produce_reverse_nfqws_rule() +{ + local rule="$1" + if contains "$rule" "$nft_connbytes "; then + # autohostlist - need several incoming packets + # autottl - need only one incoming packet + [ "$MODE_FILTER" = autohostlist ] || rule=$(echo "$rule" | sed -re "s/$nft_connbytes [0-9]+-[0-9]+/$nft_connbytes 1/") + else + # old nft does not swallow 1-1 + local range=1 + [ "$MODE_FILTER" = autohostlist ] && range=$(first_packets_for_mode) + [ "$range" = 1 ] || range="1-$range" + rule="$nft_connbytes $range $rule" + fi + nft_reverse_nfqws_rule $rule +} +nft_fw_reverse_nfqws_rule4() +{ + nft_fw_nfqws_pre4 "$(nft_produce_reverse_nfqws_rule "$1")" $2 +} +nft_fw_reverse_nfqws_rule6() +{ + nft_fw_nfqws_pre6 "$(nft_produce_reverse_nfqws_rule "$1")" $2 +} +nft_fw_reverse_nfqws_rule() +{ + # ensure that modes relying on incoming traffic work + # $1 - rule4 + # $2 - rule6 + # $3 - queue number + nft_fw_reverse_nfqws_rule4 "$1" $3 + nft_fw_reverse_nfqws_rule6 "$2" $3 +} + +zapret_apply_firewall_rules_nft() +{ + local mode="${MODE_OVERRIDE:-$MODE}" + + local first_packets_only + local desync="mark and $DESYNC_MARK == 0" + local f4 f6 qn qns qn6 qns6 + + first_packets_only="$nft_connbytes 1-$(first_packets_for_mode)" + + case "$mode" in + tpws) + if [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ]; then + echo both http and https are disabled. not applying redirection. + else + nft_filter_apply_port_target f4 + f6=$f4 + nft_filter_apply_ipset_target f4 f6 + nft_fw_tpws "$f4" "$f6" $TPPORT + fi + ;; + nfqws) + local POSTNAT_SAVE=$POSTNAT + + POSTNAT=1 + # quite complex but we need to minimize nfqws processes to save RAM + get_nfqws_qnums qn qns qn6 qns6 + if [ "$MODE_HTTP_KEEPALIVE" != "1" ] && [ -n "$qn" ] && [ "$qn" = "$qns" ]; then + nft_filter_apply_port_target f4 + f4="$f4 $first_packets_only" + nft_filter_apply_ipset_target4 f4 + nft_fw_nfqws_post4 "$f4 $desync" $qn + nft_fw_reverse_nfqws_rule4 "$f4" $qn + else + if [ -n "$qn" ]; then + f4="tcp dport {$HTTP_PORTS}" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f4="$f4 $first_packets_only" + nft_filter_apply_ipset_target4 f4 + nft_fw_nfqws_post4 "$f4 $desync" $qn + nft_fw_reverse_nfqws_rule4 "$f4" $qn + fi + if [ -n "$qns" ]; then + f4="tcp dport {$HTTPS_PORTS} $first_packets_only" + nft_filter_apply_ipset_target4 f4 + nft_fw_nfqws_post4 "$f4 $desync" $qns + nft_fw_reverse_nfqws_rule4 "$f4" $qns + fi + fi + if [ "$MODE_HTTP_KEEPALIVE" != "1" ] && [ -n "$qn6" ] && [ "$qn6" = "$qns6" ]; then + nft_filter_apply_port_target f6 + f6="$f6 $first_packets_only" + nft_filter_apply_ipset_target6 f6 + nft_fw_nfqws_post6 "$f6 $desync" $qn6 + nft_fw_reverse_nfqws_rule6 "$f6" $qn6 + else + if [ -n "$qn6" ]; then + f6="tcp dport {$HTTP_PORTS}" + [ "$MODE_HTTP_KEEPALIVE" = "1" ] || f6="$f6 $first_packets_only" + nft_filter_apply_ipset_target6 f6 + nft_fw_nfqws_post6 "$f6 $desync" $qn6 + nft_fw_reverse_nfqws_rule6 "$f6" $qn6 + fi + if [ -n "$qns6" ]; then + f6="tcp dport {$HTTPS_PORTS} $first_packets_only" + nft_filter_apply_ipset_target6 f6 + nft_fw_nfqws_post6 "$f6 $desync" $qns6 + nft_fw_reverse_nfqws_rule6 "$f6" $qns6 + fi + fi + + get_nfqws_qnums_quic qn qn6 + if [ -n "$qn" ]; then + f4= + nft_filter_apply_port_target_quic f4 + f4="$f4 $first_packets_only" + nft_filter_apply_ipset_target4 f4 + nft_fw_nfqws_post4 "$f4 $desync" $qn + fi + if [ -n "$qn6" ]; then + f6= + nft_filter_apply_port_target_quic f6 + f6="$f6 $first_packets_only" + nft_filter_apply_ipset_target6 f6 + nft_fw_nfqws_post6 "$f6 $desync" $qn6 + fi + + POSTNAT=$POSTNAT_SAVE + ;; + custom) + custom_runner zapret_custom_firewall_nft + ;; + esac +} + +zapret_apply_firewall_nft() +{ + echo Applying nftables + + local mode="${MODE_OVERRIDE:-$MODE}" + + [ "$mode" = "tpws-socks" ] && return 0 + + create_ipset no-update + nft_create_firewall + nft_fill_ifsets_overload + + zapret_apply_firewall_rules_nft + + [ "$FLOWOFFLOAD" = 'software' -o "$FLOWOFFLOAD" = 'hardware' ] && nft_apply_flow_offloading + + return 0 +} +zapret_unapply_firewall_nft() +{ + echo Clearing nftables + + unprepare_route_localnet + nft_del_firewall + return 0 +} +zapret_do_firewall_nft() +{ + # $1 - 1 - add, 0 - del + + if [ "$1" = 0 ] ; then + zapret_unapply_firewall_nft + else + zapret_apply_firewall_nft + fi + + return 0 +} diff --git a/common/pf.sh b/common/pf.sh new file mode 100644 index 0000000..4516a00 --- /dev/null +++ b/common/pf.sh @@ -0,0 +1,285 @@ +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" + +std_ports + +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_IPV6" = "1" ] || { + if [ -f "$ZIPLIST_EXCLUDE6" ]; then + echo "table persist file \"$ZIPLIST_EXCLUDE6\"" + else + echo "table persist" + fi + } + [ "$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_nat_reorder_rules() +{ + # this is dirty hack to move rdr above route-to and remove route-to dups + sort -rfu +} +pf_anchor_port_target() +{ + if [ "$MODE_HTTP" = "1" ] && [ "$MODE_HTTPS" = "1" ]; then + echo "{$HTTP_PORTS_IPT,$HTTPS_PORTS_IPT}" + elif [ "$MODE_HTTPS" = "1" ]; then + echo "{$HTTPS_PORTS_IPT}" + elif [ "$MODE_HTTP" = "1" ]; then + echo "{$HTTP_PORTS_IPT}" + fi +} + +pf_anchor_zapret_v4_tpws() +{ + # $1 - tpws listen port + # $2 - rdr ports. defaults are used if empty + + local rule port + + if [ -n "$2" ]; then + port="{$2}" + else + port=$(pf_anchor_port_target) + fi + + for lan in $IFACE_LAN; do + for t in $tbl; do + echo "rdr on $lan inet proto tcp from any to $t port $port -> 127.0.0.1 port $1" + done + done + echo "rdr on lo0 inet proto tcp from !127.0.0.0/8 to any port $port -> 127.0.0.1 port $1" + for t in $tbl; do + rule="route-to (lo0 127.0.0.1) inet proto tcp from !127.0.0.0/8 to $t port $port user { >root }" + if [ -n "$IFACE_WAN" ] ; then + for wan in $IFACE_WAN; do + echo "pass out on $wan $rule" + done + else + echo "pass out $rule" + fi + done +} + +pf_anchor_zapret_v4() +{ + local tbl port + [ "$DISABLE_IPV4" = "1" ] || { + case "${MODE_OVERRIDE:-$MODE}" in + tpws) + [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ] && return + pf_anchor_zapret_tables tbl zapret-user "$ZIPLIST_USER" zapret "$ZIPLIST" + pf_anchor_zapret_v4_tpws $TPPORT + ;; + custom) + pf_anchor_zapret_tables tbl zapret-user "$ZIPLIST_USER" zapret "$ZIPLIST" + custom_runner zapret_custom_firewall_v4 | pf_nat_reorder_rules + ;; + esac + } +} +pf_anchor_zapret_v6_tpws() +{ + # $1 - tpws listen port + # $2 - rdr ports. defaults are used if empty + + local rule LL_LAN port + + if [ -n "$2" ]; then + port="{$2}" + else + port=$(pf_anchor_port_target) + fi + + # LAN link local is only for router + for lan in $IFACE_LAN; do + LL_LAN=$(get_ipv6_linklocal $lan) + [ -n "$LL_LAN" ] && { + for t in $tbl; do + echo "rdr on $lan inet6 proto tcp from any to $t port $port -> $LL_LAN port $1" + done + } + done + echo "rdr on lo0 inet6 proto tcp from !::1 to any port $port -> fe80::1 port $1" + for t in $tbl; do + rule="route-to (lo0 fe80::1) inet6 proto tcp from !::1 to $t port $port user { >root }" + if [ -n "${IFACE_WAN6:-$IFACE_WAN}" ] ; then + for wan in ${IFACE_WAN6:-$IFACE_WAN}; do + echo "pass out on $wan $rule" + done + else + echo "pass out $rule" + fi + done +} +pf_anchor_zapret_v6() +{ + local tbl port + + [ "$DISABLE_IPV6" = "1" ] || { + case "${MODE_OVERRIDE:-$MODE}" in + tpws) + [ ! "$MODE_HTTP" = "1" ] && [ ! "$MODE_HTTPS" = "1" ] && return + pf_anchor_zapret_tables tbl zapret6-user "$ZIPLIST_USER6" zapret6 "$ZIPLIST6" + pf_anchor_zapret_v6_tpws $TPPORT + ;; + custom) + pf_anchor_zapret_tables tbl zapret6-user "$ZIPLIST_USER6" zapret6 "$ZIPLIST6" + custom_runner zapret_custom_firewall_v6 | pf_nat_reorder_rules + ;; + esac + } +} + +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" +} diff --git a/common/queue.sh b/common/queue.sh new file mode 100644 index 0000000..324129f --- /dev/null +++ b/common/queue.sh @@ -0,0 +1,85 @@ +apply_unspecified_desync_modes() +{ + NFQWS_OPT_DESYNC_HTTP="${NFQWS_OPT_DESYNC_HTTP:-$NFQWS_OPT_DESYNC}" + NFQWS_OPT_DESYNC_HTTP_SUFFIX="${NFQWS_OPT_DESYNC_HTTP_SUFFIX:-$NFQWS_OPT_DESYNC_SUFFIX}" + NFQWS_OPT_DESYNC_HTTPS="${NFQWS_OPT_DESYNC_HTTPS:-$NFQWS_OPT_DESYNC}" + NFQWS_OPT_DESYNC_HTTPS_SUFFIX="${NFQWS_OPT_DESYNC_HTTPS_SUFFIX:-$NFQWS_OPT_DESYNC_SUFFIX}" + NFQWS_OPT_DESYNC_HTTP6="${NFQWS_OPT_DESYNC_HTTP6:-$NFQWS_OPT_DESYNC_HTTP}" + NFQWS_OPT_DESYNC_HTTP6_SUFFIX="${NFQWS_OPT_DESYNC_HTTP6_SUFFIX:-$NFQWS_OPT_DESYNC_HTTP_SUFFIX}" + NFQWS_OPT_DESYNC_HTTPS6="${NFQWS_OPT_DESYNC_HTTPS6:-$NFQWS_OPT_DESYNC_HTTPS}" + NFQWS_OPT_DESYNC_HTTPS6_SUFFIX="${NFQWS_OPT_DESYNC_HTTPS6_SUFFIX:-$NFQWS_OPT_DESYNC_HTTPS_SUFFIX}" + NFQWS_OPT_DESYNC_QUIC6="${NFQWS_OPT_DESYNC_QUIC6:-$NFQWS_OPT_DESYNC_QUIC}" + NFQWS_OPT_DESYNC_QUIC6_SUFFIX="${NFQWS_OPT_DESYNC_QUIC6_SUFFIX:-$NFQWS_OPT_DESYNC_QUIC_SUFFIX}" +} + +get_nfqws_qnums() +{ + # $1 - var name for ipv4 http + # $2 - var name for ipv4 https + # $3 - var name for ipv6 http + # $4 - var name for ipv6 https + local _qn _qns _qn6 _qns6 + + [ "$DISABLE_IPV4" = "1" ] || { + _qn=$QNUM + _qns=$_qn + [ "$NFQWS_OPT_DESYNC_HTTP $NFQWS_OPT_DESYNC_HTTP_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTPS $NFQWS_OPT_DESYNC_HTTPS_SUFFIX" ] || _qns=$(($QNUM+1)) + } + [ "$DISABLE_IPV6" = "1" ] || { + _qn6=$(($QNUM+2)) + _qns6=$(($QNUM+3)) + [ "$DISABLE_IPV4" = "1" ] || { + if [ "$NFQWS_OPT_DESYNC_HTTP6 $NFQWS_OPT_DESYNC_HTTP6_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTP $NFQWS_OPT_DESYNC_HTTP_SUFFIX" ]; then + _qn6=$_qn; + elif [ "$NFQWS_OPT_DESYNC_HTTP6 $NFQWS_OPT_DESYNC_HTTP6_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTPS $NFQWS_OPT_DESYNC_HTTPS_SUFFIX" ]; then + _qn6=$_qns; + fi + if [ "$NFQWS_OPT_DESYNC_HTTPS6 $NFQWS_OPT_DESYNC_HTTPS6_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTP $NFQWS_OPT_DESYNC_HTTP_SUFFIX" ]; then + _qns6=$_qn; + elif [ "$NFQWS_OPT_DESYNC_HTTPS6 $NFQWS_OPT_DESYNC_HTTPS6_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTPS $NFQWS_OPT_DESYNC_HTTPS_SUFFIX" ]; then + _qns6=$_qns; + fi + } + [ "$NFQWS_OPT_DESYNC_HTTPS6 $NFQWS_OPT_DESYNC_HTTPS6_SUFFIX" = "$NFQWS_OPT_DESYNC_HTTP6 $NFQWS_OPT_DESYNC_HTTP6_SUFFIX" ] && _qns6=$_qn6; + } + if [ "$MODE_HTTP" = 1 ]; then + eval $1=$_qn + eval $3=$_qn6 + else + eval $1= + eval $3= + fi + if [ "$MODE_HTTPS" = 1 ]; then + eval $2=$_qns + eval $4=$_qns6 + else + eval $2= + eval $4= + fi +} + +get_nfqws_qnums_quic() +{ + # $1 - var name for ipv4 quic + # $2 - var name for ipv6 quic + local _qn _qn6 + + [ "$DISABLE_IPV4" = "1" ] || { + _qn=$(($QNUM+10)) + } + [ "$DISABLE_IPV6" = "1" ] || { + _qn6=$(($QNUM+11)) + [ "$DISABLE_IPV4" = "1" ] || { + if [ "$NFQWS_OPT_DESYNC_QUIC $NFQWS_OPT_DESYNC_QUIC_SUFFIX" = "$NFQWS_OPT_DESYNC_QUIC6 $NFQWS_OPT_DESYNC_QUIC6_SUFFIX" ]; then + _qn6=$_qn; + fi + } + } + if [ "$MODE_QUIC" = 1 ]; then + eval $1=$_qn + eval $2=$_qn6 + else + eval $1= + eval $2= + fi +} diff --git a/common/virt.sh b/common/virt.sh new file mode 100644 index 0000000..6e566d6 --- /dev/null +++ b/common/virt.sh @@ -0,0 +1,39 @@ +get_virt() +{ + local vm s v UNAME + UNAME=$(uname) + case "$UNAME" in + Linux) + if exists systemd-detect-virt; then + vm=$(systemd-detect-virt --vm) + elif [ -f /sys/class/dmi/id/product_name ]; then + read s fe80::31c:29ff:dee2:1c4d port 988 +rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988 +``` + +Then: +``` +/opt/zapret/tpws/tpws --port=988 --enable-pf --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. + + +### `pfsense` + +`pfsense` is based on FreeBSD. Binaries from `binaries/freebsd-x64` are +compiled in FreeBSD 11 and should work. Use `install_bin.sh`. pfsense uses pf +firewall which does not support divert. Fortunately ipfw and ipdivert modules +are present and can be kldload-ed. In older versions it's also necessary to +change firewall order using sysctl commands. In newer versions those sysctl +parameters are absent but the system behaves as required without them. +Sometimes pf may limit `dvtws` abilities. It scrubs ip fragments disabling `dvtws` +ipfrag2 desync mode. + +There's autostart script example in `init.d/pfsense`. It should be placed to +`/usr/local/etc/rc.d` and edited. Write your ipfw rules and daemon start +commands. Because git is absent the most convinient way to copy files is ssh. +curl is present by default. + +Copy zip with zapret files to `/opt` and unpack there as it's done in other +systems. In this case run `dvtws` as `/opt/zapret/nfq/dvtws`. Or just copy +`dvtws` to `/usr/local/sbin`. As you wish. `ipset` scripts are working, cron is +present. It's possible to renew lists. + +If you dont like poverty of default repos its possible to enable FreeBSD repo. +Change `no` to `yes` in `/usr/local/etc/pkg/repos/FreeBSD.conf` and `/usr/local/etc/pkg/repos/pfSense.conf`. +Then it becomes possible to install all the required software including git to download +zapret from github directly. + + +`/usr/local/etc/rc.d/zapret.sh` (chmod 755) +``` +#!/bin/sh + +kldload ipfw +kldload ipdivert + +# for older pfsense versions. newer do not have these sysctls +sysctl net.inet.ip.pfil.outbound=ipfw,pf +sysctl net.inet.ip.pfil.inbound=ipfw,pf +sysctl net.inet6.ip6.pfil.outbound=ipfw,pf +sysctl net.inet6.ip6.pfil.inbound=ipfw,pf + +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg xmit em0 +pkill ^dvtws$ +dvtws --daemon --port 989 --dpi-desync=split2 + +# required for newer pfsense versions (2.6.0 tested) to return ipfw to functional state +pfctl -d ; pfctl -e +``` + +I could not make tpws work from ipfw. Looks like there's some conflict between +two firewalls. Only PF redirection works. PF does not allow to freely add and +delete rules. Only anchors can be reloaded. To make an anchor work it must be +referred from the main ruleset. But its managed by pfsense scripts. + +One possible solution would be to modify `/etc/inc/filter.inc` as follows: +``` + ................. + /* MOD */ + $natrules .= "# ZAPRET redirection\n"; + $natrules .= "rdr-anchor \"zapret\"\n"; + + $natrules .= "# TFTP proxy\n"; + $natrules .= "rdr-anchor \"tftp-proxy/*\"\n"; + ................. +``` + +Write the anchor code to `/etc/zapret.anchor`: +``` +rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988 +rdr pass on em1 inet6 proto tcp to port {80,443} -> fe80::20c:29ff:5ae3:4821 port 988 +``` +Replace `fe80::20c:29ff:5ae3:4821` with your link local address of the LAN +interface or remove the line if ipv6 is not needed. + +Autostart `/usr/local/etc/rc.d/zapret.sh`: +``` +pfctl -a zapret -f /etc/zapret.anchor +pkill ^tpws$ +tpws --daemon --port=988 --enable-pf --bind-addr=127.0.0.1 --bind-iface6=em1 --bind-linklocal=force --split-http-req=method --split-pos=2 +``` + +After reboot check that anchor is created and referred from the main ruleset: +``` +[root@pfSense /]# pfctl -s nat +no nat proto carp all +nat-anchor "natearly/*" all +nat-anchor "natrules/*" all +................... +no rdr proto carp all +rdr-anchor "zapret" all +rdr-anchor "tftp-proxy/*" all +rdr-anchor "miniupnpd" all +[root@pfSense /]# pfctl -s nat -a zapret +rdr pass on em1 inet proto tcp from any to any port = http -> 127.0.0.1 port 988 +rdr pass on em1 inet proto tcp from any to any port = https -> 127.0.0.1 port 988 +rdr pass on em1 inet6 proto tcp from any to any port = http -> fe80::20c:29ff:5ae3:4821 port 988 +rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5ae3:4821 port 988 +``` + +Also there's a way to add redirect in the pfsense UI and start `tpws` from cron using `@reboot` prefix. +This way avoids modification of pfsense code. + +## 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 +``` + +Then: +``` +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 in quick on em0 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 proto tcp from port {80,443} no state +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 +``` + +Then: +``` +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`: +``` +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 in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +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 in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state +``` + +Then: +``` +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 +``` + +divert-packet automatically adds the reverse rule. By default also incoming +traffic will be passwed to `dvtws`. This is highly undesired because it is waste +of cpu resources and speed limiter. The trick with "no state" and "in" rules +allows to bypass auto reverse rule. + +`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. + +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 +``` + +Then 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. + +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 `fc00::/7` range with `/128` prefix to your LAN interface and use it as +the gateway address. + +`tpws` transparent mode only for outgoing connections. + +`/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 } +``` + +Then: +``` +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=lo0 --bind-linklocal=force +``` + +`tpws` transparent mode for both passthrough and outgoing connections. 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 } +``` + +Then: +``` +pfctl -ef /etc/pf.conf +/opt/zapret/tpws/tpws --user=root --port=988 --bind-addr=127.0.0.1 --bind-iface6=lo0 --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. + +**WARNING**: +**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`,`apret6-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..829dc5c --- /dev/null +++ b/docs/bsd.txt @@ -0,0 +1,476 @@ +Поддерживаемые верÑии +--------------------- + +FreeBSD 11.x+ , OpenBSD 6.x+, чаÑтично MacOS Sierra+ + +Ðа более Ñтарых может ÑобиратьÑÑ, может не ÑобиратьÑÑ, может работать или не работать. +Ðа FreeBSD 10 ÑобираетÑÑ Ð¸ работает dvtws. С tpws еÑÑ‚ÑŒ проблемы из-за Ñлишком Ñтарой верÑии компилÑтора clang. +ВероÑтно, будет работать, еÑли обновить компилÑтор. +Возможна прикрутка к поÑледним верÑиÑм pfsense без веб интерфейÑа в ручном режиме через конÑоль. + + +ОÑобенноÑти BSD ÑиÑтем +---------------------- + +Ð’ BSD нет nfqueue. Похожий механизм - divert sockets. +Из каталога "nfq" под BSD ÑобираетÑÑ dvtws вмеÑто nfqws. +Он разделÑет Ñ nfqws большую чаÑÑ‚ÑŒ кода и почти Ñовпадает по параметрам командной Ñтроки. + +FreeBSD Ñодержит 3 фаервола : 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 + +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. + +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 xmit em0 +# required for autottl mode only +ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv 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 +# required for autottl mode only +ipfw add 100 divert 989 tcp from table\(zapret\) 80,443 to any tcpflags syn,ack in not diverted not sockarg recv em0 +/opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 + + +PF в FreeBSD: +ÐаÑтройка аналогична OpenBSD, но еÑÑ‚ÑŒ важные нюанÑÑ‹. +1) Ð’ FreeBSD поддержка PF в tpws отключена по умолчанию. Чтобы ее включить, нужно иÑпользовать параметр --enable-pf. +2) ÐÐµÐ»ÑŒÐ·Ñ Ñделать ipv6 rdr на ::1. Ðужно делать на link-local Ð°Ð´Ñ€ÐµÑ Ð²Ñ…Ð¾Ð´Ñщего интерфейÑа. +Смотрите через ifconfig Ð°Ð´Ñ€ÐµÑ fe80:... и добавлÑете в правило +3) СинтакÑÐ¸Ñ pf.conf немного отличаетÑÑ. Более Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PF. +4) Лимит на количеÑтво Ñлементов таблиц задаетÑÑ Ñ‚Ð°Ðº : sysctl net.pf.request_maxcount=2000000 +5) divert-to Ñломан. Он работает, но не работает механизм Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ð¹. +Кто-то уже напиÑал патч, но в 14-RELEASE проблема вÑе еще еÑÑ‚ÑŒ. +Следовательно, на данный момент работа 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 --enable-pf --bind-addr=127.0.0.1 --bind-iface6=em1 --bind-linklocal=force + +Ð’ PF непонÑтно как делать rdr-to Ñ Ñ‚Ð¾Ð¹ же ÑиÑтемы, где работает proxy. Вариант Ñ route-to у Ð¼ÐµÐ½Ñ Ð½Ðµ заработал. + + +pfsense +------- + +pfsense оÑновано на FreeBSD. +pfsense иÑпользует фаервол pf, а он имеет проблемы Ñ divert. +К ÑчаÑтью, модули ipfw и ipdivert приÑутÑтвуют в поÑтавке поÑледних верÑий pfsense. +Их можно подгрузить через kldload. +Ð’ некоторых более Ñтарых верÑиÑÑ… pfsense требуетÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ порÑдок фаерволов через sysctl, Ñделав ipfw первым. +Ð’ более новых Ñти параметры sysctl отÑутÑтвуют, но ÑиÑтема работает как надо и без них. +Ð’ некоторых ÑлучаÑÑ… фаервол pf может ограничивать возможноÑти dvtws, в чаÑтноÑти в облаÑти фрагментации ip. +ПриÑутÑтвуют по умолчанию правила scrub Ð´Ð»Ñ Ñ€ÐµÐ°ÑÑемблинга фрагментов. +Бинарики из binaries/freebsd-x64 Ñобраны под FreeBSD 11. Они должны работать и на поÑледующих верÑиÑÑ… FreeBSD, +Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ pfsense. Можно пользоватьÑÑ install_bin.sh. + +Пример Ñкрипта автозапуÑка лежит в init.d/pfsense. Его Ñледует помеÑтить в /usr/local/etc/rc.d и отредактировать +на предмет правил ipfw и запуÑка демонов. ЕÑÑ‚ÑŒ вÑтроенный редактор edit как более Ð¿Ñ€Ð¸ÐµÐ¼Ð»ÐµÐ¼Ð°Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð° vi. +ПоÑкольку git отÑутÑтвует, копировать файлы удобнее вÑего через ssh. curl приÑутÑтвует по умолчанию. +Можно Ñкопировать zip Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ zapret и раÑпаковать в /opt, как Ñто делаетÑÑ Ð½Ð° других ÑиÑтемах. +Тогда dvtws нужно запуÑкать как /opt/zapret/nfq/dvtws. Либо Ñкопировать только dvtws в /usr/local/sbin. +Как вам больше нравитÑÑ. +ipset Ñкрипты работают, крон еÑÑ‚ÑŒ. Можно Ñделать автообновление лиÑтов. + +ЕÑли Ð²Ð°Ñ Ð½Ð°Ð¿Ñ€Ñгает бедноÑÑ‚ÑŒ имеющегоÑÑ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ, можно включить репозиторий от FreeBSD, который по умолчанию выключен. +ПоменÑйте no на yes в /usr/local/etc/pkg/repos/FreeBSD.conf +Можно уÑтановить веÑÑŒ привычный soft, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ git, чтобы напрÑмую Ñкачивать zapret Ñ github. + +/usr/local/etc/rc.d/zapret.sh (chmod 755) +----------- +#!/bin/sh + +kldload ipfw +kldload ipdivert + +# for older pfsense versions. newer do not have these sysctls +sysctl net.inet.ip.pfil.outbound=ipfw,pf +sysctl net.inet.ip.pfil.inbound=ipfw,pf +sysctl net.inet6.ip6.pfil.outbound=ipfw,pf +sysctl net.inet6.ip6.pfil.inbound=ipfw,pf + +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit em0 +pkill ^dvtws$ +dvtws --daemon --port 989 --dpi-desync=split2 + +# required for newer pfsense versions (2.6.0 tested) to return ipfw to functional state +pfctl -d ; pfctl -e +----------- + +Что каÑаетÑÑ tpws, то видимо имеетÑÑ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ конфликт двух фаерволов, и правила fwd в ipfw не работают. +Работает перенаправление ÑредÑтвами pf как опиÑано в разделе по FreeBSD. +Ð’ pf можно изменÑÑ‚ÑŒ правила только целыми блоками - ÑкорÑми (anchors). ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ñто так добавить или удалить что-то. +Ðо чтобы какой-то anchor был обработан, на него должна быть ÑÑылка из оÑновного набора правил. +Его трогать нельзÑ, иначе порушитÑÑ Ð²ÐµÑÑŒ фаервол. +ПоÑтому придетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ код Ñкриптов pfsense. Поправьте /etc/inc/filter.inc Ñледующим образом : +----------- + ................. + /* MOD */ + $natrules .= "# ZAPRET redirection\n"; + $natrules .= "rdr-anchor \"zapret\"\n"; + + $natrules .= "# TFTP proxy\n"; + $natrules .= "rdr-anchor \"tftp-proxy/*\"\n"; + ................. +----------- + +Ðапишите файл Ñ Ñодержимым anchor-а (например, /etc/zapret.anchor): +----------- +rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988 +rdr pass on em1 inet6 proto tcp to port {80,443} -> fe80::20c:29ff:5ae3:4821 port 988 +----------- +fe80::20c:29ff:5ae3:4821 замените на ваш link local Ð°Ð´Ñ€ÐµÑ LAN интерфейÑа, либо уберите Ñтрочку, еÑли ipv6 не нужен. + +Добавьте в автозапуÑк /usr/local/etc/rc.d/zapret.sh : +----------- +pfctl -a zapret -f /etc/zapret.anchor +pkill ^tpws$ +tpws --daemon --port=988 --enable-pf --bind-addr=127.0.0.1 --bind-iface6=em1 --bind-linklocal=force --split-http-req=method --split-pos=2 +----------- + +ПоÑле перезагрузки проверьте, что правила ÑоздалиÑÑŒ : +----------- +[root@pfSense /]# pfctl -s nat +no nat proto carp all +nat-anchor "natearly/*" all +nat-anchor "natrules/*" all +................... +no rdr proto carp all +rdr-anchor "zapret" all +rdr-anchor "tftp-proxy/*" all +rdr-anchor "miniupnpd" all +[root@pfSense /]# pfctl -s nat -a zapret +rdr pass on em1 inet proto tcp from any to any port = http -> 127.0.0.1 port 988 +rdr pass on em1 inet proto tcp from any to any port = https -> 127.0.0.1 port 988 +rdr pass on em1 inet6 proto tcp from any to any port = http -> fe80::20c:29ff:5ae3:4821 port 988 +rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5ae3:4821 port 988 +----------- + +Так же еÑÑ‚ÑŒ более Ñлегантный ÑпоÑоб запуÑка tpws через @reboot в cron и правило Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² UI. +Это позволит не редактировать код pfsense. + + +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 in quick on em0 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 proto tcp from port {80,443} no state +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 no state +------------ +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 in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +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 in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state +------------ +pfctl -f /etc/pf.conf +./dvtws --port=989 --dpi-desync=split2 + +divert-packet автоматичеÑки вноÑит обратное правило Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ. +Трюк Ñ no state и in правилом позволÑет обойти Ñту проблему, чтобы напраÑно не гнать маÑÑивный трафик через dvtws. + +Ð’ OpenBSD dvtws вÑе фейки отÑылает через divert socket, поÑкольку Ñта возможноÑÑ‚ÑŒ через raw sockets заблокирована. +Видимо pf автоматичеÑки предотвращает повторный заворот diverted фреймов, поÑтому проблемы Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑ‚. + +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 + + +MacOS +----- + +Иначально Ñдро Ñтой ОС "darwin" оÑновывалоÑÑŒ на BSD, потому в ней много похожего на другие верÑии BSD. +Однако, как и в других маÑÑовых коммерчеÑких проектах, приоритеты ÑмещаютÑÑ Ð² Ñторону от оригинала. +Яблочники что хотÑÑ‚, то и творÑÑ‚. +Раньше был 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 из диапазона fc00::/7 - +выберите любой Ñ Ð´Ð»Ð¸Ð½Ð¾Ð¹ префикÑа 128. Это можно Ñделать в ÑиÑтемных наÑтройках, Ñоздав дополнительный адаптер на базе +того же Ñетевого интерфейÑа, отключить в нем ipv4 и впиÑать ÑтатичеÑкий ipv6. Он добавитÑÑ Ðº автоматичеÑки наÑтраеваемым. + +ÐаÑтройка tpws на macos в прозрачном режиме только Ð´Ð»Ñ Ð¸ÑходÑщих запроÑов : + +/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=lo0 --bind-linklocal=force + + +ÐаÑтройка tpws на macos роутере в прозрачном режиме, где 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=lo0 --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. + + +MacOS вариант custom +-------------------- + +Так же как и в других ÑиÑтемах, поддерживаемых в проÑтом инÑталÑторе, можно Ñоздавать Ñвои custom Ñкрипты. +РаÑположение : /opt/zapret/init.d/macos/custom + +zapret_custom_daemons() получает в $1 "0" или "1". "0" - stop, "1" - start +custom firewall отличаетÑÑ Ð¾Ñ‚ linux варианта. +ВмеÑто Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ iptables вам нужно Ñгенерировать правила Ð´Ð»Ñ zapret-v4 и zapret-v6 anchors и выдать их в stdout. +Это делаетÑÑ Ð² функциÑÑ… zapret_custom_firewall_v4() и zapret_custom_firewall_v6(). +ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† заполнÑÑŽÑ‚ÑÑ Ð¾Ñновным Ñкриптом - вам Ñто делать не нужно. +Можно ÑÑылатьÑÑ Ð½Ð° таблицы zapret и zapret-user в v4, zapret6 и zapret6-user. + +Cм. пример в файле custom-tpws diff --git a/docs/bsdfw.txt b/docs/bsdfw.txt new file mode 100644 index 0000000..2575c69 --- /dev/null +++ b/docs/bsdfw.txt @@ -0,0 +1,97 @@ +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 + + +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit em0 +; required for autottl mode +ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv em0 +; udp +ipfw add 100 divert 989 udp from any to any 443 out not diverted 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 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 in quick on em0 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 proto tcp from port {80,443} no state +pass out quick on em0 proto tcp to port {80,443} divert-packet port 989 no state +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 in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet proto tcp from port {80,443} no state +pass out quick on em0 inet proto tcp to port {80,443} divert-packet port 989 no state +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 in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state +pass in quick on em0 inet6 proto tcp from port {80,443} no state +pass out quick on em0 inet6 proto tcp to port {80,443} divert-packet port 989 no state diff --git a/docs/changes.txt b/docs/changes.txt new file mode 100644 index 0000000..ec76971 --- /dev/null +++ b/docs/changes.txt @@ -0,0 +1,325 @@ +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 + +v39 + +nfqws: conntrack, wssize + +v40 + +init scripts : IFACE_LAN, IFACE_WAN now accept multiple interfaces +init scripts : openwrt uses now OPENWRT_LAN parameter to override incoming interfaces for tpws + +v41 + +install_easy : openrc support + +v42 + +blockcheck.sh + +v43 + +nfqws: UDP desync with conntrack support (any-protocol only for now) + +v44 + +nfqws: ipfrag + +v45 + +nfqws: hop-by-hop ipv6 desync and fooling + +v46 + +big startup script refactoring to support nftables and new openwrt snapshot builds with firewall4 + +v47 + +nfqws: QUIC initial decryption +nfqws: udplen, fakeknown dpi desync modes + +v48 + +nfqws, tpws : multiple --hostlist and --hostlist-exclude support +launch system, ipset : no more list merging. all lists are passed separately to nfqws and tpws +nfqws : udplen fooling supports packet shrinking (negative increment value) + +v49 + +QUIC support integrated to the main system and setup + +v50 + +DHT protocol support. +DPI desync mode 'tamper' for DHT. +HEX string support in addition to binary files. + +v51 + +tpws --tlsrec attack. + +v52 + +autohostlist mode + +v53 + +nfqws: tcp session reassemble for TLS ClientHello + +v54 + +tpws: out of band send when splitting (--oob) +nfqws: autottl +nfqws: datanoack fooling +nftables: use POSTNAT path for tcp redirections to allow NAT-breaking strategies. use additional mark bit DESYNC_MARK_POSTNAT. + +v55 + +tpws: incompatible oob parameter change. it doesn't take oob byte anymore. instead it takes optional protocol filter - http or tls. + the same is done with disorder. oob byte can be specified in parameter --oob-data. +blockcheck: quick mode, strategy order optimizations, QUIC protocol support +nfqws: syndata desync mode + +v56 + +tpws: mss fooling +tpws: multi thread resolver. eliminates blocks related to hostname resolve. + +v57 + +tpws: --nosplice option +nfqws: postnat fixes +nfqws: --dpi-desync-start option +nfqws: packet delay for kyber TLS and QUIC +nfqws: --dpi-desync-retrans obsolete +nfqws: --qnum is mandatory, no more default queue 0 + +v58 + +winws + +v59 + +tpws: --split-tls +tpws: --tlsrec=sniext +nfqws: --dpi-desync-split-http-req, --dpi-desync-split-tls. multi segment TLS support for split. +blockcheck: mdig dns cache + +v60 + +blockcheck: port block test, partial ip block test +nfqws: seqovl split/disorder modes + +v61 + +C code cleanups +dvtws: do not use raw sockets. use divert. +nfqws,tpws: detect TLS 1.2 ClientHello from very old libraries with SSL 3.0 version in record layer +nfqws,tpws: debug log to file and syslog +tpws: --connect-bind-addr option +tpws: log local endpoint (including source port number) for remote leg + +v62: + +tpws: connection close logic rewrite. tcp user timeout parameters for local and remote leg. +nfqws: multi-strategy + +v63: + +tpws: multi-strategy + +v64: + +blockcheck: warn if dpi bypass software is already running +blockcheck: TPWS_EXTRA, NFQWS_EXTRA +init.d: multiple custom scripts 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/iptables.txt b/docs/iptables.txt new file mode 100644 index 0000000..4e319e0 --- /dev/null +++ b/docs/iptables.txt @@ -0,0 +1,63 @@ +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 dpi desync attack : + +iptables -t mangle -I POSTROUTING -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -p tcp --dport 443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I POSTROUTING -p udp --dport 443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass + +# auto hostlist with avoiding wrong ACK numbers in RST,ACK packets sent by russian DPI +sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1 +iptables -t mangle -I POSTROUTING -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:12 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass +iptables -t mangle -I PREROUTING -p tcp -m multiport --sports 80,443 -m connbytes --connbytes-dir=reply --connbytes-mode=packets --connbytes 1:6 -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/manual_setup.txt b/docs/manual_setup.txt new file mode 100644 index 0000000..5dbdcc0 --- /dev/null +++ b/docs/manual_setup.txt @@ -0,0 +1,282 @@ +Пример ручной уÑтановки на debian-подобную ÑиÑтему +-------------------------------------------------- + +Ðа debian оÑновано большое количеÑтво диÑтрибутивов linux, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ ubuntu. +ЗдеÑÑŒ раÑÑматриваютÑÑ Ð¿Ñ€ÐµÐ¶Ð´Ðµ вÑего Debian 8+ и Ubuntu 16+. +Ðо Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ вероÑтноÑтью может Ñработать и на производных от них. +Главное уÑловие - наличие systemd, apt и неÑкольких Ñтандартных пакетов в репозитории. + +УÑтановить пакеты : + apt-get update + apt-get install ipset curl dnsutils git + +ЕÑли хотите иÑпользовать nftables, то нужен пакет nftables, а ipset не обÑзателен. + +Скопировать директорию 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 + +Создать конфиг по умолчанию : + cp /opt/zapret/config.default /opt/zapret/config + +ÐаÑтроить параметры ÑоглаÑно разделу "Выбор параметров". + +Создать user лиÑÑ‚Ñ‹ по умолчанию : + cp /opt/zapret/ipset/zapret-hosts-user-exclude.txt.default /opt/zapret/ipset/zapret-hosts-user-exclude.txt + echo nonexistent.domain >/opt/zapret/ipset/zapret-hosts-user.txt + touch /opt/zapret/ipset/zapret-hosts-user-ipban.txt + +Создать ÑÑылку на 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 : systemctl 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/openrc/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 + + + +Ð ÑƒÑ‡Ð½Ð°Ñ ÑƒÑтановка на openwrt/LEDE 15.xx-21.xx +-------------------------------------------- + +!!! Ð”Ð°Ð½Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð½Ð°Ð¿Ð¸Ñана Ð´Ð»Ñ ÑиÑтем, оÑнованных на iptables+firewall3 +!!! Ð’ новых верÑиÑÑ… openwrt переходит на nftables+firewall4, инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð°. ПользуйтеÑÑŒ install_easy.sh + +УÑтановить дополнительные пакеты : +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 coreutils-sort + +ЭКОÐОМИЯ МЕСТР: + +gzip от busybox в разы медленней полноценного варианта. gzip иÑпользуетÑÑ Ñкриптами Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð»Ð¸Ñтов. +sort от busybox медленней полноценного варианта и жрет намного больше памÑти. sort иÑпользуетÑÑ Ñкриптами Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð»Ð¸Ñтов. +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 + +ЕÑли меÑта ÑовÑем мало : +Ðа linux ÑиÑтеме Ñкачать и раÑпаковать zapret. ОÑтавить необходимый минимум файлов. +Запаковать в архив zapret.tar.gz. + nc -l -p 1111 1111 >zapret.tar.gz + +Ðе Ñтоит работать Ñ Ñ€Ð°Ñпакованной верÑией zapret на windows. ПотерÑÑŽÑ‚ÑÑ ÑÑылки и chmod. + +ЗапуÑтить автоинÑталÑтор бинариков. Он Ñам определит рабочую архитектуру и наÑтроит вÑе бинарики. + /opt/zapret/install_bin.sh + +Создать ÑÑылку на Ñкрипт запуÑка : + ln -fs /opt/zapret/init.d/openwrt/zapret /etc/init.d +Создать ÑÑылку на Ñкрипт ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ð´Ð½ÑÑ‚Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа : + ln -fs /opt/zapret/init.d/openwrt/90-zapret /etc/hotplug.d/iface + +Создать конфиг по умолчанию : + cp /opt/zapret/config.default /opt/zapret/config + +ÐаÑтроить параметры ÑоглаÑно разделу "Выбор параметров". + +Создать user лиÑÑ‚Ñ‹ по умолчанию : + cp /opt/zapret/ipset/zapret-hosts-user-exclude.txt.default /opt/zapret/ipset/zapret-hosts-user-exclude.txt + echo nonexistent.domain >/opt/zapret/ipset/zapret-hosts-user.txt + touch /opt/zapret/ipset/zapret-hosts-user-ipban.txt + +Удалить Ñтарые лиÑÑ‚Ñ‹, еÑли они были Ñозданы ранее : + /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" + +Включить автозапуÑк Ñлужбы и запуÑтить ее : + /etc/init.d/zapret enable + /etc/init.d/zapret start +ПРИМЕЧÐÐИЕ : на Ñтапе Ñтарта ÑиÑтемы интерфейÑÑ‹ еще не поднÑÑ‚Ñ‹. в некоторых ÑлучаÑÑ… невозможно правильно +Ñформировать параметры запуÑка демонов, не Ð·Ð½Ð°Ñ Ð¸Ð¼Ñ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑкого интерфейÑа LAN. +Cкрипт из /etc/hotplug.d/iface перезапуÑтит демоны по Ñобытию поднÑÑ‚Ð¸Ñ LAN. + +Создать ÑÑылку на firewall include : + ln -fs /opt/zapret/init.d/openwrt/firewall.zapret /etc/firewall.zapret +Проверить была ли Ñоздана ранее запиÑÑŒ о firewall include : + uci show firewall | grep firewall.zapret +ЕÑли firewall.zapret нет, значит добавить : + uci add firewall include + uci set firewall.@include[-1].path="/etc/firewall.zapret" + uci set firewall.@include[-1].reload="1" + uci commit firewall +Проверить не включен ли flow offload : + uci show firewall.@defaults[0] +ЕÑли flow_offloading=1 или flow_offloading_hw=1 , + uci set firewall.@defaults[0].flow_offloading=0 + uci set firewall.@defaults[0].flow_offloading_hw=0 + uci commit firewall +ПерезапуÑтить фаервол : + fw3 restart + +ПоÑмотреть через iptables -nL, ip6tables -nL или через luci вкладку "firewall" поÑвилиÑÑŒ ли нужные правила. + +ЭКОÐОМИЯ МЕСТР: еÑли его мало, то можно оÑтавить в директории zapret лишь подкаталоги +ipset, common, файл config, init.d/openwrt. +Далее нужно Ñоздать подкаталоги Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾ иÑпользуемыми бинариками (ip2net, mdig, tpws, nfq) +и Ñкопировать туда из binaries рабочие executables. + +ЕСЛИ ВСЕ ПЛОХО С МЕСТОМ : откажитеÑÑŒ от работы Ñо ÑпиÑком РКÐ. иÑпользуйте только get_user.sh + +ЕСЛИ СОВСЕМ ВСЕ УЖÐСÐО С МЕСТОМ : берете tpws и делаете вÑе Ñвоими руками. поднÑтие iptables, автоÑтарт бинарика. +С некоторых верÑий Ñкрипты запуÑка zapret без ipset не работают (он требуетÑÑ Ð´Ð»Ñ ip exclude) + +СОВЕТ : Покупайте только роутеры Ñ USB. Ð’ USB можно воткнуть флÑшку и вынеÑти на нее корневую файловую ÑиÑтему +или иÑпользовать ее в качеÑтве оверлеÑ. Ðе надо мучать ÑебÑ, Ð·Ð°Ð¿Ð¸Ñ…Ð¸Ð²Ð°Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñ…Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ в 8 мб вÑтроенной флÑшки. +Ð”Ð»Ñ ÐºÐ¾Ð¼Ñ„Ð¾Ñ€Ñ‚Ð½Ð¾Ð¹ работы Ñ zapret нужен роутер Ñ 16 Mb вÑтроенной памÑти или USB разъемом и 128+ Mb RAM. +Ðа 64 Mb без swap будут проблемы Ñ Ð»Ð¸Ñтами РКÐ. ЕÑли у Ð²Ð°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ 64 Mb, и вы хотите лиÑÑ‚Ñ‹ РКÐ, подключите swap. +32 Mb Ð´Ð»Ñ Ñовременных верÑий openwrt - ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð½Ð° грани живучеÑти. Возможны хаотичеÑкие Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑов в oom. +Работа Ñ Ð»Ð¸Ñтами РКРневозможна в принципе. + diff --git a/docs/nftables.txt b/docs/nftables.txt new file mode 100644 index 0000000..4acbb59 --- /dev/null +++ b/docs/nftables.txt @@ -0,0 +1,32 @@ +nftables test cheat sheet +simplified rules to test nfqws and tpws + + +For DNAT : + +# run tpws as user "tpws". its required to avoid loops. + +nft delete table inet ztest +nft create table inet ztest +nft add chain inet ztest pre "{type nat hook prerouting priority dstnat;}" +nft add rule inet ztest pre tcp dport "{80,443}" redirect to :988 +nft add chain inet ztest out "{type nat hook output priority -100;}" +nft add rule inet ztest out tcp dport "{80,443}" skuid != tpws redirect to :988 + + +For dpi desync attack : + +nft delete table inet ztest +nft create table inet ztest +nft add chain inet ztest post "{type filter hook postrouting priority mangle;}" +nft add rule inet ztest post tcp dport "{80,443}" ct original packets 1-12 queue num 200 bypass +nft add rule inet ztest post udp dport 443 ct original packets 1-4 queue num 200 bypass + +# auto hostlist with avoiding wrong ACK numbers in RST,ACK packets sent by russian DPI +sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1 +nft add chain inet ztest pre "{type filter hook prerouting priority filter;}" +nft add rule inet ztest pre tcp sport "{80,443}" ct reply packets 1-4 queue num 200 bypass + + +show rules : nft list table inet ztest +delete table : nft delete table inet ztest diff --git a/docs/nftables_notes.txt b/docs/nftables_notes.txt new file mode 100644 index 0000000..75fa845 --- /dev/null +++ b/docs/nftables_notes.txt @@ -0,0 +1,120 @@ +nftables - Ñто технологиÑ, Ð¿Ñ€Ð¸ÑˆÐµÐ´ÑˆÐ°Ñ Ð½Ð° замену iptables. +Ð’ ней Ñобрали вÑе, что отноÑилоÑÑŒ к различным iptables. Рих немало. iptables, ip6tables, ebtables, arptables, ipset. +ВеÑÑŒ код из разрозненных, но похожих компонент, Ñобрали в одно целое Ñ ÐµÐ´Ð¸Ð½Ñ‹Ð¼ ÑинтакÑиÑом. +Добавили различные конÑтрукции Ñзыка, позволÑющие пиÑать правила более лаконично, не повторÑÑ Ð¾Ð´Ð½Ð¸ и те же команды Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ различиÑми. +Ðа nftables можно Ñделать почти вÑе, что можно было Ñделать на iptables. ЕÑÑ‚ÑŒ то, что можно Ñделать на nftables, но Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð° iptables. +ЕÑÑ‚ÑŒ и наоборот. + +К Ñожалению, не обошлоÑÑŒ и без боли. + +Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ð±Ð¾Ð»ÑŒ N1. Очень ÑерьезнаÑ, Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ñ openwrt, и Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ðµ видно. + +ipset-Ñ‹ позволÑли загонÑÑ‚ÑŒ переÑекающиеÑÑ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ñ‹ ip адреÑов или подÑетей. +nftables sets Ñто не позволÑÑŽÑ‚. Любое переÑечение вызывает ошибку. +ЕÑÑ‚ÑŒ auto-merge, но Ñто работает только в user mode в процеÑÑе nft, при уÑловии, что веÑÑŒ блок адреÑов загонÑетÑÑ Ð¾Ð´Ð½Ð¾Ð¹ командой +и нет переÑечений Ñ ÑƒÐ¶Ðµ имеющимÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐ½Ñ‚Ð¾Ð¼ в set. +Это не было бы критичеÑкой проблемой, поÑкольку Ñкрипты zapret и так загонÑÑŽÑ‚ ipset целиком. +Проблема в катаÑтрофичеÑком раÑходе памÑти при операции загона больших интервальных лиÑтов, то еÑÑ‚ÑŒ Ñ Ð¿Ð¾Ð´ÑетÑми и диапазонами. +Чтобы загнать 100000 ipv4 запиÑей, едва хватает 300 Mb памÑти уÑтройÑтва. +При уÑпехе операции в Ñдре ÑпиÑок Ñтолько не занимает, но Ñуть дела Ñто не менÑет. +Ð”Ð»Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ñ… linux ÑиÑтем Ñто не проблема, но почти вÑе роутеры загнутÑÑ. +Приемлемого Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ðµ проÑматриваетÑÑ. +Сделать запиÑи непереÑекающимиÑÑ Ð² лиÑтах - задача непроÑтаÑ. ПотребуетÑÑ Ð¿ÐµÑ€ÐµÐ¿Ð¸Ñать алгоритм auto-merge из nft, +но Ñ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ‹Ð¼ раÑходом памÑти. +ЗагонÑÑ‚ÑŒ запиÑи по одному отдельными вызовами nft, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¸, займет вечноÑÑ‚ÑŒ. +ЗагонÑÑ‚ÑŒ блоком отдельных команд, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¸, - nft такого не умеет. Похоже, при любой ошибке проиÑходит откат вÑего Ñкрипта. +К тому же при таком подходе будут неточноÑти в итоговом результате. +Swap позволÑет немного Ñгладить проблему, но лишь незначительно. +Скажем, еÑли вдруг list загонÑетÑÑ Ð±ÐµÐ· ошибок Ñ 300 Mb памÑти и Ñ Ð¿Ð°Ð´ÐµÐ½Ð¸ÐµÐ¼ на 256 Mb, то swap ÑпаÑает. +ЕÑли памÑти ÑтановитÑÑ 200 Mb, то swap уже не ÑпаÑет. Ð’Ñе равно вызываетÑÑ OOM killer, заодно ÑƒÐ±Ð¸Ð²Ð°Ñ Ð¸ другие процеÑÑÑ‹, кроме nft, +а Ñто уже ÑовÑем плохо. Может быть убито что-то важное. + +Боль N2, не ÑмертельнаÑ, но тоже не айÑ. + +Какие-то нерациональные алгоритмы разбора таблиц в nft. +Ðапример, еÑÑ‚ÑŒ 1 большой set на 100000 Ñлементов и 1 маленький на 2 Ñлемента. +Чтобы проÑто пролиÑтать мелкий set или добавить туда еще что-то nft будет муÑолить неÑколько Ñекунд. +Что он делает за Ñто Ð²Ñ€ÐµÐ¼Ñ ? Тащит из Ñдра огромный блоб, в котором вÑе в куче, и разбирает его, чтобы выделить иÑкомую мелочь ? +Ð’ какой-то мере удаетÑÑ Ñто Ñгладить, обьединÑÑ Ð½ÐµÑколько команд в единый Ñкрипт. + +Боль N3 + +СиÑтема nftables поÑтроена на виртуальной машине. Правила, которые вы пишите, переводÑÑ‚ÑÑ Ð² пÑевдокод VM. +Чтобы потом их показать , nft декомпилирует код и переводит в читаемый Ñзык. +Это довольно Ñложно, и регулÑрно ÑлучаютÑÑ Ð±Ð°Ð³Ð¸, ÑвÑзанные Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¼ отображением. + +Кроме Ñтого, чаÑто вÑтречаютÑÑ Ð¸ баги парÑера. +Ðапример, вÑе верÑии nft вплоть до 1.0.1 имеют баг, который не разрешает Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñов в кавычках в +определении flowtable. Без кавычек Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñтавить интерфейÑÑ‹ , Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹. +OpenWRT решает Ñту проблему отдельным патчем в snapshot верÑии, но на традиционных ÑиÑтемах и в openwrt 21.x- его нет. +Почему бы не наплевать на интерфейÑÑ‹, начинающиеÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹ ? Потому что Ð´Ð»Ñ openwrt 6to4-6to4, 6in4-he-net - обычное Ñвление. +Ðа текущий момент Ñтой проблемы в openwrt уже нет, еÑли иÑпользовать актуальную верÑию. + +Ðо тем не менее, хоть nft и давно перешел отметку 1.0, вÑÑÐºÐ°Ñ Ð¼ÐµÐ»Ð¾Ñ‡ÑŒ, оÑобенно на не ÑовÑем Ñтандартных правилах, +регулÑрно вÑплывает. Потому чем новее у Ð²Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ верÑÐ¸Ñ nft, тем больше там выловлено проблем. +ЗдеÑÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°Ð¶Ð½Ñ‹, чтобы потом не мучатьÑÑ Ð¸Ð·-за давно иÑправленного велоÑипеда. + +Боль N4 + +Ðевозможно , не копаÑÑÑŒ в других таблицах и хуках, ничего не Ð·Ð½Ð°Ñ Ð¾Ð± их Ñодержании, предотвратить DROP или REJECT. +ÐÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ð¿Ð¸Ñать такое правило, которое что-то важное ACCEPTнет, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð¾Ñтальные хуки во вÑех таблицах. +ЕÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ какой-то фаервол, и он что-то дропает, то как от Ñтого отказатьÑÑ, еÑли надо временно что-то принÑÑ‚ÑŒ ? +Это оÑобенноÑÑ‚ÑŒ netfilter, он так работает, но в iptables еÑÑ‚ÑŒ лишь Ñтандартные таблицы Ñ Ð¸Ñ… хуками, куда можно +вÑтавить ACCEPT. ЗдеÑÑŒ хуков может быть Ñколько угодно в каких угодно таблицах. +Эта проблема чаÑтично ломает кайф от незавиÑимого ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°Ð¼Ð¸. + + +ÐŸÐ»ÑŽÑ N1, главный + +iptables хороши, когда ими пользуетÑÑ ÐºÑ‚Ð¾-то один. Иначе Ñто проходной двор. +Когда еÑÑ‚ÑŒ ÑиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼, то приходитÑÑ ÐºÐ°Ðº-то к ней прикручиватьÑÑ, чтобы не нарушить ее работу +и управлÑÑ‚ÑŒ правилами Ñинхронно. Ðужно уметь внеÑти и удалить отдельные правила когда Ñто нужно, не Ñ‚Ñ€Ð¾Ð³Ð°Ñ Ð²Ñе оÑтальное. +Ðекоторые ÑиÑтемы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼ вообще не предполагают, чтобы кто-то еще лез в iptables, и Ñто очень Ñильно портит жизнь. +У iptables еÑÑ‚ÑŒ предопределенный набор хуков netfilter Ñ Ñ„Ð¸ÐºÑированным приоритетом. +Ð’ nftables хуков можно Ñоздать неограниченное количеÑтво Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ приоритетом, управлÑÑ Ð¸Ð¼Ð¸ незавиÑимо в отдельных таблицах. +СиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼ может работать в одной таблице (fw4 в Ñлучае openwrt) и не трогать вÑе оÑтальное. +zapret может работать в другой таблице и не трогать ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼. Они друг другу не мешают. +Это Ñнимает множеÑтво боли. +Ðо еÑÑ‚ÑŒ и иÑключение. nfset-Ñ‹ - аналог ipset-ов - Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать из другой таблицы. Потому еÑли вам нужен ipset, +Ñоздаваемый zapret Ñкриптами, вам понадобитÑÑ Ð¿Ð¸Ñать правила в той же таблице. Ðо нет никакой необходимоÑти влезать в цепочки zapret. +Создаете Ñвои цепочки и хуки и делаете в них что угодно. + +ÐŸÐ»ÑŽÑ N2 + +ВозможноÑÑ‚ÑŒ выбора приоритета хука позволÑет легко решить проблему хаотичеÑкой и принудительной дефрагментацией L3 ipv6, +без танцев Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¾Ð¹ модулей Ñдра Ñо Ñпециальными параметрами или перекомпилÑцией nftables-nft. +Это же позволÑет перехватить трафик поÑле SNAT/MASQUERADE, что на iptables невозможно. +Ðтаки на проходÑщий трафик, ломающие NAT, крайне затруднены на iptables. + +ÐŸÐ»ÑŽÑ N3 + +Ðаличие множеÑтв (anonymous/named sets) позволÑет не пиÑать кучу однообразных правил там, где в iptables их пришлоÑÑŒ бы напиÑать. + +ÐŸÐ»ÑŽÑ N4 + +ЕÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ nftables, то там навернÑка еÑÑ‚ÑŒ уже вÑе или почти вÑе. +Ðет кучи разных модулей Ñдра и .so плагинов Ð´Ð»Ñ iptables user-mode процеÑÑа. +Отдельные модули Ñдра еÑÑ‚ÑŒ, но их меньше, чем в iptables, и openwrt их делит на меньшее чиÑло пакетов, большинÑтво из которых +и так ÑтавÑÑ‚ÑÑ Ð¿Ð¾ умолчанию. user-mode процеÑÑ nft и вовÑе неделим. EXE-шник + lib. + +ÐŸÐ»ÑŽÑ N5 + +Пишут, что nftables работают быÑтрее. Ðо Ñто не точно и завиÑит от много чего. +Ð’ целом - чем меньше правил, тем выше ÑкороÑÑ‚ÑŒ. Ðо в nftables правил можно пиÑать меньше, значит ÑкроÑÑ‚ÑŒ тоже может быть выше. +У разработчиков еÑÑ‚ÑŒ Ð¸Ð´ÐµÑ Ð¿ÐµÑ€ÐµÐ²ÐµÑти backend nftables на BPF, а Ñто навернÑка будет ÑущеÑтвенно быÑтрее. + + +Выводы + +Без больших лиÑтов вÑе почти прекраÑно. Ðо большие ip лиÑÑ‚Ñ‹ убивают вÑе. Ðе Ð´Ð»Ñ Ð´Ð¾Ð¼Ð°ÑˆÐ½Ð¸Ñ… Ñто роутеров. +Ð ipset-Ñ‹ к nftables не прикрутить. +Зато еÑÑ‚ÑŒ возможноÑÑ‚ÑŒ задейÑтвовать более продвинутые атаки, конфликтующие Ñ NAT, которые на iptables могут быть невозможны. +Делать нечего. Openwrt отошел от iptables. С Ñтим придетÑÑ ÐºÐ°Ðº-то жить. +ПоÑтому пришлоÑÑŒ Ñделать Ð´Ð»Ñ openwrt поддержку и iptables, и nftables (только Ñ Ð²ÐµÑ€Ñии openwrt 21.xx, в более Ñтарых будут проблемы). +iptables можно задейÑтвовать на любой openwrt верÑии. +ЕÑли иÑпользуетÑÑ fw3, применÑетÑÑ Ñтарый механизм интеграции в fw3. +ЕÑли он не иÑпользуетÑÑ, то правилами iptables управлÑем как в традиционных linux ÑиÑтемах - то еÑÑ‚ÑŒ Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью +запуÑка и оÑтановки, а Ñкрипт запуÑка вноÑит в том чиÑле и правила iptables. + +Ðа новых openwrt возможно ÑнеÑти nftables и firewall4 и уÑтановить firewall3 и iptables. +ЕÑли вам никак без больших ip лиÑтов на Ñлабой ÑиÑтеме, Ñто может быть единÑтвенным ÑпаÑением. diff --git a/docs/quick_start.txt b/docs/quick_start.txt new file mode 100644 index 0000000..4d0aee8 --- /dev/null +++ b/docs/quick_start.txt @@ -0,0 +1,141 @@ +Специально Ð´Ð»Ñ Ñ‚ÐµÑ…, кто хочет побыÑтрее начать, но не хочет Ñлишком углублÑÑ‚ÑŒÑÑ Ð² проÑтыню readme.txt. + +Предупреждение : не пишите в issue вопроÑÑ‹ типа "как Ñкопировать файл", "как Ñкачать", "как запуÑтить", ... +То еÑÑ‚ÑŒ вÑе , что каÑаетÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ñ… навыков Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ ÐžÐ¡ linux. Эти вопроÑÑ‹ буду закрывать Ñразу. +ЕÑли у Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ‹Ðµ вопроÑÑ‹ возникают, рекомендую не иÑпользовать данный Ñофт или иÑкать помощь где-то в другом меÑте. +То же Ñамое могу Ñказать тем, кто хочет нажать 1 кнопку, чтобы вÑе заработало, и ÑовÑем не хочет читать и изучать. +Увы, такое не подвезли и не подвезут. Ищите другие более проÑтые методы обхода. Этот метод не Ð´Ð»Ñ Ñ€Ñдового пользователÑ. + +Обход DPI ÑвлÑетÑÑ Ñ…Ð°ÐºÐµÑ€Ñкой методикой. Под Ñтим Ñловом понимаетÑÑ Ð¼ÐµÑ‚Ð¾Ð´, которому ÑопротивлÑетÑÑ Ð¾ÐºÑ€ÑƒÐ¶Ð°ÑŽÑ‰Ð°Ñ Ñреда, +которому автоматичеÑки не гарантирована работоÑпоÑобноÑÑ‚ÑŒ в любых уÑловиÑÑ… и на любых реÑурÑах, +требуетÑÑ Ð½Ð°Ñтройка под ÑпецифичеÑкие уÑÐ»Ð¾Ð²Ð¸Ñ Ñƒ вашего провайдера. УÑÐ»Ð¾Ð²Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ менÑÑ‚ÑŒÑÑ Ñо временем, +и методика может начинать или переÑтавать работать, может потребоватьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¹ анализ Ñитуации. +Могут обнаруживатьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ реÑурÑÑ‹, которые заблокированы иначе, и которые не работают или переÑтали работать. +Могут и ÑломатьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ незаблокированные реÑурÑÑ‹. +ПоÑтому очень желательно иметь Ð·Ð½Ð°Ð½Ð¸Ñ Ð² облаÑти Ñетей, чтобы иметь возможноÑÑ‚ÑŒ проанализировать техничеÑкую Ñитуацию. +Ðе будет лишним иметь обходные каналы прокÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ° на Ñлучай, еÑли обход DPI не помогает. + +Будем Ñчитать, что у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ ÑиÑтема на базе традиционного linux или openwrt. +ЕÑли у Ð²Ð°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ linux - задача обойти блокировки только на Ñтой ÑиÑтеме, еÑли openwrt - обойти блокировки +Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ñ… уÑтройÑтв. Это наиболее раÑпроÑтраненный Ñлучай. + +1) Чтобы процедура уÑтановки Ñработала в штатном режиме на openwrt, нужно раcÑчитывать на Ñвободное меÑто около 1-2 Mb +Ð´Ð»Ñ ÑƒÑтановки Ñамого zapret и необходимых дополнительных пакетов. +ЕÑли меÑта мало и нет возможноÑти его увеличить за Ñчет extroot, возможно придетÑÑ Ð¾Ñ‚ÐºÐ°Ð·Ð°Ñ‚ÑŒÑÑ Ð¾Ñ‚ варианта +проÑтой уÑтановки и прикручивать в ручном режиме без имеющихÑÑ Ñкриптов запуÑка, либо попробовать заÑунуть требуемые +zapret дополнительные пакеты в Ñжатый образ squashfs Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ image builder и перешить Ñтим вариантом роутер. +См docs/manual_setup.txt , docs/readme.txt . + +2) Скачайте zip архив проекта Ñ github в /tmp, раÑпакуйте его там, +либо клонируйте проект через : git clone --depth 1 https://github.com/bol-van/zapret + +3) УбедитеÑÑŒ, что у Ð²Ð°Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ вÑе ÑредÑтва обхода блокировок, в том чиÑле и Ñам zapret. +Гарантированно уберет zapret Ñкрипт uninstall_easy.sh. + +4) ЕÑли вы работаете в виртуальной машине, необходимо иÑпользовать Ñоединение Ñ Ñетью в режиме bridge. nat не подходит + +5) Выполните однократные дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾ уÑтановке требуемых пакетов в ОС и наÑтройке бинариков правильной архитектуры + +install_bin.sh +install_prereq.sh + +Ð’Ð°Ñ Ð¼Ð¾Ð³ÑƒÑ‚ ÑпроÑить о типе фаервола (iptables/nftables) и иÑпользовании ipv6. Это нужно Ð´Ð»Ñ ÑƒÑтановки +правильных пакетов в ОС, чтобы не уÑтанавливать лишнее. + +6) ЗапуÑтите blockcheck.sh. blockcheck.sh в начале проверÑет DNS. ЕÑли выводÑÑ‚ÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ подмене адреÑов, то +первым делом нужно решить Ñту проблему, иначе ничего не будет работать. +Решение проблемы DNS выходит за рамки проекта. Обычно она решаетÑÑ Ð»Ð¸Ð±Ð¾ заменой DNS Ñерверов +от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в Ñлучае перехвата провайдером обращений +к Ñторонним Ñерверам - через Ñпециальные ÑредÑтва ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ DNS запроÑов, такие как dnscrypt, DoT, DoH. + +Еще один Ñффективный вариант - иÑпользовать реÑолвер от yandex 77.88.8.88 на неÑтандартном порту 1253. +Многие провайдеры не анализируют Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº DNS на неÑтандартных портах. + +Проверить работает ли Ñтот вариант можно так : + +dig -p 53 @77.88.8.88 rutracker.org +dig -p 1253 @77.88.8.88 rutracker.org + +ЕÑли DNS дейÑтвительно подменÑетÑÑ, и ответ на Ñти 2 команды разный, значит метод вероÑтно работает. + +Ð’ openwrt DNS на неÑтандартном порту можно пропиÑать в /etc/config/dhcp таким ÑпоÑобом : + +config dnsmasq + ............. + list server '77.88.8.88#1253' + +ЕÑли наÑтройки IP и DNS получаютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки от провайдера, в /etc/config/network +найдите Ñекцию интерфейÑа 'wan' и Ñделайте так : + +config interface 'wan' + ............. + option peerdns '0' + +/etc/init.d/network restart +/etc/init.d/dnsmasq restart + +ЕÑли Ñто не подходит, можно перенаправлÑÑ‚ÑŒ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° udp и tcp порты 53 вашего DNS Ñервера на 77.88.8.88:1253 ÑредÑтвами +iptables/nftables. Ð’ /etc/resolv.conf Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð¿Ð¸Ñать DNS на неÑтандартном порту. + +7) blockcheck позволÑет выÑвить рабочую Ñтратегию обхода блокировок +По результатам blockcheck нужно понÑÑ‚ÑŒ какой вариант будете иÑпользовать : nfqws или tpws +И запомнить найденные Ñтратегии. + +Следует понимать, что blockcheck проверÑет доÑтупноÑÑ‚ÑŒ только конкретного домена, который вы вводите в начале. +ВероÑтно, вÑе оÑтальные домены блокированы подобным образом, но не факт. +Ð’ большинÑтве Ñлучаев можно обьединить неÑколько Ñтратегий в одну универÑальную, но Ð´Ð»Ñ Ñтого необходимо понимать +"что там за буковки". ЕÑли вы в ÑетÑÑ… Ñлабо разбираетеÑÑŒ, Ñто не Ð´Ð»Ñ Ð²Ð°Ñ. Ð’ противном Ñлучае читайте readme.txt. +zapret не может пробить блокировку по IP адреÑу +Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ неÑкольких доменов вводите их через пробел. + +Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð°Ñ‚Ð¾Ñ€Ñ‹ ÑтавÑÑ‚ на магиÑтральных каналах. Ð’ Ñложных ÑлучаÑÑ… у Ð²Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть неÑколько маршрутов +Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ð¾Ð¹ длиной по ХОПам, Ñ DPI на разных хопах. ПриходитÑÑ Ð¿Ñ€ÐµÐ¾Ð´Ð¾Ð»ÐµÐ²Ð°Ñ‚ÑŒ целый зоопарк DPI, +которые еще и включаютÑÑ Ð² работу хаотичным образом или образом, завиÑÑщим от Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ (IP Ñервера). +blockcheck не вÑегда может выдать вам в итогах оптимальную Ñтратегию, которую надо проÑто перепиÑать в наÑтройки. +Ð’ некоторых ÑлучаÑÑ… надо реально думать что проиÑходит, Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ на разных ÑтратегиÑÑ…. +ЕÑли вы применÑете большой TTL, чтобы доÑтать до магиÑтрала, то не лишним будет добавить дополнительный ограничитель +--dpi-desync-fooling, чтобы не Ñломать Ñайты на более коротких диÑтанциÑÑ…. +md5sig наиболее ÑовмеÑтим, но работает только на linux Ñерверах. +badseq может работать только на https и не работать на http. +Чтобы выÑÑнить какие дополнительные ограничители работают, Ñмотрите результат теÑта аналогичных Ñтратегий без TTL +Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¼ из Ñтих ограничителей. + +При иÑпользовании autottl Ñледует протеÑтировать как можно больше разных доменов. Эта техника +может на одних провайдерах работать Ñтабильно, на других потребуетÑÑ Ð²Ñ‹ÑÑнить при каких параметрах +она Ñтабильна, на третьих полный хаоÑ, и проще отказатьÑÑ. + +ЕÑли иÑпользуютÑÑ Ð¼ÐµÑ‚Ð¾Ð´Ñ‹ нулевой фазы деÑинхронизации (--mss, --wssize, --dpi-desync=syndata) и режим фильтрации hostlist, +то вÑе параметры, отноÑÑщиеÑÑ Ðº Ñтим методам, Ñледует помещать не в оÑновные параметры (например, NFQWS_OPT_DESYNC), +а в suffix (NFQWS_OPT_DESYNC_SUFFIX). Чтобы не ошибитьÑÑ, можно их продублировать и там, и там. +Иначе они могут не работать. + +8) ЗапуÑтите install_easy.sh. +Выберите nfqws или tpws, затем ÑоглаÑитеÑÑŒ на редактирование параметров. +ОткроетÑÑ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€, куда впишите найденные Ñтратегии. +Ð”Ð»Ñ nfqws отдельно наÑтраиваютÑÑ Ñтратегии на http и https Ð´Ð»Ñ ipv4 и ipv6. +То еÑÑ‚ÑŒ по макÑимуму 4 разных варианта. +NFQWS_OPT_DESYNC - Ñто Ð¾Ð±Ñ‰Ð°Ñ ÑƒÑтановка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑетÑÑ, еÑли какой-либо уточнÑющий параметр не задан +NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменÑÑŽÑ‚ Ñтратегию Ð´Ð»Ñ http и https. +ЕÑли у Ð²Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ ipv6, то они так же будут применены и к ipv6. ЕÑли Ð´Ð»Ñ ipv6 нужна Ð´Ñ€ÑƒÐ³Ð°Ñ ÑтратегиÑ, +то можно задать уточнÑющие параметры NFQWS_OPT_DESYNC_HTTP6 и NFQWS_OPT_DESYNC_HTTPS6. +ЕÑли Ñтратегии Ð´Ð»Ñ ipv4 и ipv6 отличаютÑÑ Ð»Ð¸ÑˆÑŒ ttl, то в целÑÑ… Ñкономии реÑурÑов роутера (меньше процеÑÑов nfqws) +Ñледует отказатьÑÑ Ð¾Ñ‚ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑпецифичеÑких Ð´Ð»Ñ ipv6 уÑтановок. ВмеÑто них иÑпользовать параметры +--dpi-desync-ttl и --dpi-desync-ttl6 в общих уÑтановках. Таким ÑпоÑобом можно заÑтавить один процеÑÑ nfqws +обрабатывать трафик на ipv4 и на ipv6 Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼ ttl. + +Важным вопроÑом ÑвлÑетÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¾ поддержке http keep alive. +Отвечайте N. ЕÑли вдруг на http Ñайтах будут хаотичеÑкие Ñбои типа то загружаетÑÑ, то заглушка или ÑброÑ, +попробуйте включить поддержку keep alive. Ðо проÑто "на вÑÑкий Ñлучай" не включайте - Ñто увеличит нагрузку на роутер. + +ЕÑли Ñто не помогает, или хаотичное поведение наблюдаетÑÑ Ð¸ на https, то еще раз прогоните blockcheck +Ñ ÑƒÑтановленным чиÑлом попыток проверки не менее 5. Возможно, ваш провайдер иÑпользует баланÑировку нагрузки, +где на разных путÑÑ… уÑтановлен разный DPI. + +9) Ðа вÑе оÑтальные вопроÑÑ‹ install_easy.sh отвечайте ÑоглаÑно выводимой аннонтации. + +10) ЕÑли ломаютÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ незаблокированные реÑурÑÑ‹, Ñледует вноÑить их в иÑключениÑ, либо пользоватьÑÑ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡Ð¸Ð²Ð°ÑŽÑ‰Ð¸Ð¼ +ipset или хоÑÑ‚ лиÑтом. Читайте оÑновной талмуд readme.txt ради подробноÑтей. + +Это Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð½ÑтрукциÑ, чтобы ÑоориентироватьÑÑ Ñ Ñ‡ÐµÐ³Ð¾ начать. Однако, Ñто - не панацеÑ. +Ð’ некоторых ÑлучаÑÑ… вы не обойдетеÑÑŒ без знаний и оÑновного "талмуда". +ПодробноÑти и полное техничеÑкое опиÑание раÑпиÑаны в readme.txt diff --git a/docs/quick_start_windows.txt b/docs/quick_start_windows.txt new file mode 100644 index 0000000..d9e5a6d --- /dev/null +++ b/docs/quick_start_windows.txt @@ -0,0 +1,122 @@ +Специально Ð´Ð»Ñ Ñ‚ÐµÑ…, кто хочет побыÑтрее начать, но не хочет Ñлишком углублÑÑ‚ÑŒÑÑ Ð² проÑтыню readme.txt. + +Как обычно, ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ð°Ñ Ð³Ñ€Ð°Ð¼Ð¾Ñ‚Ð½Ð¾ÑÑ‚ÑŒ ложитÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñтью на ваÑ. +Ð’Ñ‹ должны уметь работать Ñ ÐºÐ¾Ð½Ñолью windows и иметь минимальные навыки Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ñ‹Ð¼Ð¸ файлами bat,cmd. +ЕÑли грамотноÑÑ‚ÑŒ отÑутÑтвует и возникает куча "как" на базовых вещах - проходите мимо или ищите помощь в другом меÑте. + +Обход DPI ÑвлÑетÑÑ Ñ…Ð°ÐºÐµÑ€Ñкой методикой. Под Ñтим Ñловом понимаетÑÑ Ð¼ÐµÑ‚Ð¾Ð´, которому ÑопротивлÑетÑÑ Ð¾ÐºÑ€ÑƒÐ¶Ð°ÑŽÑ‰Ð°Ñ Ñреда, +которому автоматичеÑки не гарантирована работоÑпоÑобноÑÑ‚ÑŒ в любых уÑловиÑÑ… и на любых реÑурÑах, +требуетÑÑ Ð½Ð°Ñтройка под ÑпецифичеÑкие уÑÐ»Ð¾Ð²Ð¸Ñ Ñƒ вашего провайдера. УÑÐ»Ð¾Ð²Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ менÑÑ‚ÑŒÑÑ Ñо временем, +и методика может начинать или переÑтавать работать, может потребоватьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¹ анализ Ñитуации. +Могут обнаруживатьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ реÑурÑÑ‹, которые заблокированы иначе, и которые не работают или переÑтали работать. +Могут и ÑломатьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ незаблокированные реÑурÑÑ‹. +ПоÑтому очень желательно иметь Ð·Ð½Ð°Ð½Ð¸Ñ Ð² облаÑти Ñетей, чтобы иметь возможноÑÑ‚ÑŒ проанализировать техничеÑкую Ñитуацию. +Ðе будет лишним иметь обходные каналы прокÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ° на Ñлучай, еÑли обход DPI не помогает. + +Будем Ñчитать, что у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ windows 7 или выше. Задача - обойти блокировки Ñ Ñамой ÑиÑтемы. + +ЕÑÑ‚ÑŒ решение Ñамое проÑтое, а еÑÑ‚ÑŒ "как положено". + +СÐМОЕ ПРОСТОЕ РЕШЕÐИЕ + +СовÑем ничего не могу, вÑе очень Ñложно, дайте мне таблетку. + +Скачайте и раÑпакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip +ЗапуÑтите zapret-winws/preset_russia.cmd от имени админиÑтратора. +Возможно, заведетÑÑ Ñразу. Этот вариант похож на "2_any_country.cmd" из GoodbyeDPI. + +То же Ñамое Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÐµÐ¼ по автоматичеÑки Ñоздаваемому хоÑÑ‚-лиÑту preset_russia_autohostlist.cmd. +Что такое autohostlist - читайте readme.txt. Проще говорÑ, мы обходим только то, что долго и упорно не хочет открыватьÑÑ. +Сначала не будет, но надо пытатьÑÑ Ð¼Ð½Ð¾Ð³Ð¾ раз, и тогда Ñработает, а дальше будет вÑегда Ñрабатывать. +ОÑтальное не будет ломатьÑÑ. ИÑпользовать только, еÑли первый вариант тоже работает. + +Ðе помогла таблетка ? Это вовÑе не значит, что ничего не получитÑÑ. Ðо придетÑÑ Ð´ÐµÐ»Ð°Ñ‚ÑŒ по-нормальному. + +РЕШЕÐИЕ "КÐК ПОЛОЖЕÐО" + +1) ЕÑли у Ð²Ð°Ñ windows 7, обновлÑйте ÑиÑтему. Годами не обновлÑÐµÐ¼Ð°Ñ 7-ка может не запуÑкать драйвер windivert. +Поддержка 32-битных x86 windows возможна, но в готовом виде отÑутÑтвует. +Ðа windows 11 arm64 выполните arm64/install_arm64.cmd от имени админиÑтратора и перезагрузите компьютер. +Читайте docs/windows.txt + +Имейте в виду, что антивируÑÑ‹ могут плохо реагировать на windivert. +cygwin имеет внушительный ÑпиÑок неÑовмеÑтимоÑтей Ñ Ð°Ð½Ñ‚Ð¸Ð²Ð¸Ñ€ÑƒÑами. Многие антивируÑÑ‹ его ломают. +https://www.cygwin.com/faq.html#faq.using.bloda +ЕÑли Ñто имеет меÑто , иÑпользуйте иÑключениÑ. ЕÑли Ñто не помогает - отключайте Ð°Ð½Ñ‚Ð¸Ð²Ð¸Ñ€ÑƒÑ ÑовÑем. + +2) УбедитеÑÑŒ, что у Ð²Ð°Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ вÑе ÑредÑтва обхода блокировок, в том чиÑле и Ñам zapret. + +3) ЕÑли вы работаете в виртуальной машине, необходимо иÑпользовать Ñоединение Ñ Ñетью в режиме bridge. nat не подходит + +4) Скачайте и раÑпакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip + +5) ЗапуÑтите blockcheck\blockcheck.cmd. blockcheck в начале проверÑет DNS. ЕÑли выводÑÑ‚ÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ подмене адреÑов, то +первым делом нужно решить Ñту проблему, иначе ничего не будет работать. +Решение проблемы DNS выходит за рамки проекта. Обычно она решаетÑÑ Ð»Ð¸Ð±Ð¾ заменой DNS Ñерверов +от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в Ñлучае перехвата провайдером обращений +к Ñторонним Ñерверам - через Ñпециальные ÑредÑтва ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ DNS запроÑов, такие как dnscrypt, DoT, DoH. +Ð’ Ñовременных броузерах чаще вÑего DoH включен по умолчанию, но curl будет иÑпользовать обычный ÑиÑтемный DNS. +Ðовые билды win10 и win11 поддерживают ÑиÑтемные DoH из коробки. Они не наÑтроены по умолчанию. + +Тут вÑе разжевано как и где Ñто включаетÑÑ : https://hackware.ru/?p=13707 + +6) blockcheck позволÑет выÑвить рабочую Ñтратегию обхода блокировок. +Лог Ñкрипта будет Ñохранен в blockcheck\blockcheck.log. +Запомните найденные Ñтратегии. + +Следует понимать, что blockcheck проверÑет доÑтупноÑÑ‚ÑŒ только конкретного домена, который вы вводите в начале. +ВероÑтно, вÑе оÑтальные домены блокированы подобным образом, но не факт. +Ð’ большинÑтве Ñлучаев можно обьединить неÑколько Ñтратегий в одну универÑальную, но Ð´Ð»Ñ Ñтого необходимо понимать +"что там за буковки". ЕÑли вы в ÑетÑÑ… Ñлабо разбираетеÑÑŒ, Ñто не Ð´Ð»Ñ Ð²Ð°Ñ. Ð’ противном Ñлучае читайте readme.txt. +zapret не может пробить блокировку по IP адреÑу +Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ неÑкольких доменов вводите их через пробел. + +Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð°Ñ‚Ð¾Ñ€Ñ‹ ÑтавÑÑ‚ на магиÑтральных каналах. Ð’ Ñложных ÑлучаÑÑ… у Ð²Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть неÑколько маршрутов +Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ð¾Ð¹ длиной по ХОПам, Ñ DPI на разных хопах. ПриходитÑÑ Ð¿Ñ€ÐµÐ¾Ð´Ð¾Ð»ÐµÐ²Ð°Ñ‚ÑŒ целый зоопарк DPI, +которые еще и включаютÑÑ Ð² работу хаотичным образом или образом, завиÑÑщим от Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ (IP Ñервера). +blockcheck не вÑегда может выдать вам в итогах оптимальную Ñтратегию, которую надо проÑто перепиÑать в наÑтройки. +Ð’ некоторых ÑлучаÑÑ… надо реально думать что проиÑходит, Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ на разных ÑтратегиÑÑ…. +ЕÑли вы применÑете большой TTL, чтобы доÑтать до магиÑтрала, то не лишним будет добавить дополнительный ограничитель +--dpi-desync-fooling, чтобы не Ñломать Ñайты на более коротких диÑтанциÑÑ…. +md5sig наиболее ÑовмеÑтим, но работатет только на linux Ñерверах. +badseq может работать только на https и не работать на http. +Чтобы выÑÑнить какие дополнительные ограничители работают, Ñмотрите результат теÑта аналогичных Ñтратегий без TTL +Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¼ из Ñтих ограничителей. + +При иÑпользовании autottl Ñледует протеÑтировать как можно больше разных доменов. Эта техника +может на одних провайдерах работать Ñтабильно, на других потребуетÑÑ Ð²Ñ‹ÑÑнить при каких параметрах +она Ñтабильна, на третьих полный хаоÑ, и проще отказатьÑÑ. + +ЕÑли иÑпользуютÑÑ Ð¼ÐµÑ‚Ð¾Ð´Ñ‹ нулевой фазы деÑинхронизации (--wssize, --dpi-desync=syndata) и фильтр hostlist, +то вÑе параметры, отноÑÑщиеÑÑ Ðº Ñтим методам, Ñледует помещать в Ñледующий профиль без хоÑтлиÑта, +к которому перейдет управление, когда Ð¸Ð¼Ñ Ñ…Ð¾Ñта еще неизвеÑтно. +ИÑпользуйте параметр --debug Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ вашего ÑценариÑ. + +7) ПротеÑтируйте найденные Ñтратегии на winws. winws Ñледует брать из zapret-winws. +Ð”Ð»Ñ Ñтого откройте командную Ñтроку windows от имени админиÑтратора в директории zapret-winws. +Проще вÑего Ñто Ñделать через _CMD_ADMIN.cmd. Он Ñам поднимет права и зайдет в нужную директорию. + +8) ОбеÑпечьте удобную загрузку обхода блокировок. + +ЕÑÑ‚ÑŒ 2 варианта. Ручной запуÑк через Ñрлык или автоматичеÑкий при Ñтарте ÑиÑтемы, вне контекÑта текущего пользователÑ. +ПоÑледний вариант разделÑетÑÑ Ð½Ð° запуÑк через планировщик задач и через Ñлужбы windows. + +ЕÑли хотите ручной запуÑк, Ñкопируйте preset_russia.cmd в preset_my.cmd и адаптируйте его под ваши параметра запуÑка. +Потом можно Ñоздать Ñрлык на рабочем Ñтоле на preset_my.cmd. Ðе забудьте, что требуетÑÑ Ð·Ð°Ð¿ÑƒÑкать от имени админиÑтратора. + +Ðо лучше будет Ñделать неинтерактивный автоматичеÑкий запуÑк вмеÑте Ñ ÑиÑтемой. +Ð’ zapret-winws еÑÑ‚ÑŒ командные файлы task_*, предназначенные Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°Ð¼Ð¸ планировщика. +Там Ñледует поменÑÑ‚ÑŒ Ñодержимое переменной WINWS1 на Ñвою Ñтратегию. +ЕÑли вы не можете обьединить неÑколько Ñтратегий Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… протоколов в одну, дублируйте код в каждом из cmd +Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ неÑкольких задач : winws1,winws2,winws3. +ПоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡ запуÑтите их. Проверьте, что обход вÑтает поÑле перезагрузки windows. + +Ðналогично наÑтраиваютÑÑ Ð¸ Ñлужбы windows. Смотрите service_*.cmd + +9) ЕÑли ломаютÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ðµ незаблокированные реÑурÑÑ‹, иÑпользуйте хоÑÑ‚-лиÑÑ‚Ñ‹. +Где они будут находитьÑÑ - решайте Ñами. +Параметры ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ…Ð¾ÑÑ‚-лиÑтами точно такие же, как в *nix. + +Это Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð½ÑтрукциÑ, чтобы ÑоориентироватьÑÑ Ñ Ñ‡ÐµÐ³Ð¾ начать. Однако, Ñто - не панацеÑ. +Ð’ некоторых ÑлучаÑÑ… вы не обойдетеÑÑŒ без знаний и оÑновного "толмуда". +ПодробноÑти и полное техничеÑкое опиÑание раÑпиÑаны в readme.txt diff --git a/docs/readme.eng.md b/docs/readme.eng.md new file mode 100644 index 0000000..40f298e --- /dev/null +++ b/docs/readme.eng.md @@ -0,0 +1,1272 @@ +## What is it for + +A stand-alone (without 3rd party servers) DPI circumvention tool. +May allow to bypass http(s) website blocking or speed shaping, resist signature tcp/udp protocol discovery. + +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. + +Mainly OpenWRT targeted but also supports traditional Linux, FreeBSD, OpenBSD, Windows, partially MacOS. + +Most features are also supported in Windows. + +## 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 or nftables. + +To redirect a TCP connection to a transparent proxy, the following commands are used: + +forwarded traffic : +`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 1:6 -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 1:6`. Without it packet ordering can be changed breaking the whole idea. + +Some attacks require redirection of incoming packets : + +`iptables -t mangle -I PREROUTING -i -p tcp --sport 80 -m connbytes --connbytes-dir=reply --connbytes-mode=packets --connbytes 1:6 -m set --match-set zapret src -j NFQUEUE --queue-num 200 --queue-bypass` + +Incoming packets are filtered by incoming interface, source port and IP. This is opposite to the direct rule. + +Some techniques that break NAT are possible only with nftables. + + +## 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. + + +## nftables + +nftables are fine except one very big problem. +nft requires tons of RAM to load large nf sets (ip lists) with subnets/intervals. Most of the home routers can't afford that. +For example, even a 256 Mb system can't load a 100K ip list. nft process will OOM. +nf sets do not support overlapping intervals and that's why nft process applies very RAM consuming algorithm to merge intervals so they don't overlap. +There're equivalents to iptables for all other functions. Interface and protocol anonymous sets allow not to write multiple similar rules. +Flow offloading is built-in into new linux kernels and nft versions. + +nft version `1.0.2` or higher is recommended. But the higher is version the better. + +Some techniques can be fully used only with nftables. It's not possible to queue packets after NAT in iptables. +This limits techniques that break NAT. + + +## 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.md). +nfqws takes the following parameters: + +``` + --debug=0|1 + --qnum= + --daemon ; daemonize + --pidfile= ; write pid to file + --user= ; drop root privs + --uid=uid[:gid] ; drop root privs + --bind-fix4 ; apply outgoing interface selection fix for generated ipv4 packets + --bind-fix6 ; apply outgoing interface selection fix for generated ipv6 packets + --wsize=[:] ; set window size. 0 = do not modify. OBSOLETE ! + --wssize=[:] ; set window size for server. 0 = do not modify. default scale_factor = 0. + --wssize-cutoff=[n|d|s]N ; apply server wsize only to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N + --ctrack-timeouts=S:E:F[:U] ; internal conntrack timeouts for TCP SYN, ESTABLISHED, FIN stages, UDP timeout. default 60:300:60:60 + --hostcase ; change Host: => host: + --hostspell ; exact spelling of "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 : Host: TeSt.cOm + --dpi-desync=[,][,] ; try to desync dpi state. modes : synack fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper + --dpi-desync-fwmark= ; override fwmark for desync packet. default = 0x40000000 (1073741824) + --dpi-desync-ttl= ; set ttl for desync packet + --dpi-desync-ttl6= ; set ipv6 hop limit for desync packet. by default ttl value is used. + --dpi-desync-autottl=[[:[-]]] ; auto ttl mode for both ipv4 and ipv6. default: 1:3-20 + --dpi-desync-autottl6=[[:[-]]] ; overrides --dpi-desync-autottl for ipv6 only + --dpi-desync-fooling=[,] ; can use multiple comma separated values. modes : none md5sig ts badseq badsum datanoack hopbyhop hopbyhop2 + --dpi-desync-repeats= ; send every desync packet N times + --dpi-desync-skip-nosni=0|1 ; 1(default)=do not act on ClientHello without SNI (ESNI ?) + --dpi-desync-split-pos=<1..9216> ; data payload split position + --dpi-desync-split-http-req=method|host ; split at specified logical part of plain http request + --dpi-desync-split-tls=sni|sniext ; split at specified logical part of TLS ClientHello + --dpi-desync-split-seqovl= ; use sequence overlap before first sent original split segment + --dpi-desync-split-seqovl-pattern=|0xHEX ; pattern for the fake part of overlap + --dpi-desync-ipfrag-pos-tcp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 8. + --dpi-desync-ipfrag-pos-udp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 32. + --dpi-desync-badseq-increment= ; badseq fooling seq signed increment. default -10000 + --dpi-desync-badack-increment= ; badseq fooling ackseq signed increment. default -66000 + --dpi-desync-any-protocol=0|1 ; 0(default)=desync only http and tls 1=desync any nonempty data packet + --dpi-desync-fake-http=|0xHEX ; file containing fake http request + --dpi-desync-fake-tls=|0xHEX ; file containing fake TLS ClientHello (for https) + --dpi-desync-fake-unknown=|0xHEX ; file containing unknown protocol fake payload + --dpi-desync-fake-syndata=|0xHEX ; file containing SYN data payload + --dpi-desync-fake-quic=|0xHEX ; file containing fake QUIC Initial + --dpi-desync-fake-wireguard=|0xHEX ; file containing fake wireguard handshake initiation + --dpi-desync-fake-dht=|0xHEX ; file containing fake DHT (d1..e) + --dpi-desync-fake-unknown-udp=|0xHEX ; file containing unknown udp protocol fake payload + --dpi-desync-udplen-increment= ; increase or decrease udp packet length by N bytes (default 2). negative values decrease length. + --dpi-desync-udplen-pattern=|0xHEX ; udp tail fill pattern + --dpi-desync-start=[n|d|s]N ; apply dpi desync only to packet numbers (n, default), data packet numbers (d), relative sequence (s) greater or equal than N + --dpi-desync-cutoff=[n|d|s]N ; apply dpi desync only to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N + --hostlist= ; apply dpi desync only to the listed hosts (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed) + --hostlist-exclude= ; do not apply dpi desync to the listed hosts (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed) + --hostlist-auto= ; detect DPI blocks and build hostlist automatically + --hostlist-auto-fail-threshold= ; how many failed attempts cause hostname to be added to auto hostlist (default : 3) + --hostlist-auto-fail-time= ; all failed attemps must be within these seconds (default : 60) + --hostlist-auto-retrans-threshold= ; how many request retransmissions cause attempt to fail (default : 3) + --hostlist-auto-debug= ; debug auto hostlist positives + --new ; begin new strategy + --filter-l3=ipv4|ipv6 ; L3 protocol filter. multiple comma separated values allowed. + --filter-tcp=[~]port1[-port2] ; TCP port filter. ~ means negation. setting tcp and not setting udp filter denies udp. + --filter-udp=[~]port1[-port2] ; UDP port filter. ~ means negation. setting udp and not setting tcp filter denies tcp. +``` + +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 (`split`). +`fakeknown` sends fake only in response to known application protocol. +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. + The most common Linux NAT router configuration does not pass them. Most home routers are Linux based. + The default sysctl configuration `net.netfilter.nf_conntrack_checksum=1` causes contrack to verify tcp and udp checksums + and set INVALID state for packets with invalid checksum. + Typically, iptables rules include a rule for dropping packets with INVALID state in the FORWARD chain. + The combination of these factors does not allow badsum packets to pass through the router. + In openwrt mentioned sysctl is set to 0 from the box, in other routers its often left in the default "1" state. + For nfqws to work properly through the router set `net.netfilter.nf_conntrack_checksum=0` on the router. + System never verifies checksums of locally generated packets so nfqws will always work on the router itself. + If you are behind another NAT, such as a ISP, and it does not pass invalid packages, there is nothing you can do about it. + But usually ISPs pass badsum. + Some adapters/switches/drivers enable hardware filtering of rx badsum not allowing it to pass to the OS. + This behavior was observed on a Mediatek MT7621 based device. + Tried to modify mediatek ethernet driver with no luck, likely hardware enforced limitation. + However the device allowed to send badsum packets, problem only existed for passthrough traffic from clients. +* badseq packets will be dropped by server, but DPI also can ignore them. + default badseq increment is set to -10000 because some DPIs drop packets outside of the small tcp window. + But this also can cause troubles when `--dpi-desync-any-protocol` is enabled. + To be 100% sure fake packet cannot fit to server tcp window consider setting badseq increment to 0x80000000 +* TTL looks like the best option, but it requires special tuning for each 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`. + Some router stock firmwares fix outgoing TTL. Without switching this option off TTL fooling will not work. +* `hopbyhop` is ipv6 only. This fooling adds empty extension header `hop-by-hop options` or two headers in case of `hopbyhop2`. + Packets with two hop-by-hop headers violate RFC and discarded by all operating systems. + All OS accept packets with one hop-by-hop header. + Some ISPs/operators drop ipv6 packets with hop-by-hop options. Fakes will not be processed by the server either because + ISP drops them or because there are two same headers. + DPIs may still anaylize packets with one or two hop-by-hop headers. +* `datanoack` sends tcp fakes without ACK flag. Servers do not accept this but DPI may accept. + This mode may break NAT and may not work with iptables if masquerade is used, even from the router itself. + Works with nftables properly. Likely requires external IP address (some ISPs pass these packets through their NAT). +* `autottl` tries to automatically guess TTL value that allows DPI to receive fakes and does not allow them to reach the server. + This tech relies on well known TTL values used by OS : 64,128,255. nfqws takes first incoming packet (YES, you need to redirect it too), + guesses path length and decreases by `delta` value (default 1). If resulting value is outside the range (min,max - default 3,20) + then its normalized to min or max. If the path shorter than the value then autottl fails and falls back to the fixed value. + This can help if multiple DPIs exists on backbone channels, not just near the ISP. + Can fail if inbound and outbound paths are not symmetric. + + +`--dpi-desync-fooling` takes multiple comma separated values. + +For fake,rst,rstack modes original packet is sent after the fake. + +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 2). +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. + +`seqovl` adds to the first sent original segment (1st for split, 2nd for disorder) seqovl bytes to the beginning and decreases +sequence number. +In `split2` mode this creates partially in-window packet. OS receives only in-window part. +In `disorder2` mode OS receives fake and real part of the second segment but does not pass received data to the socket until first +segment is received. First segment overwrites fake part of the second segment. Then OS passes original data to the socket. +All unix OS except Solaris preserve last received data. This is not the case for Windows servers and `disorder` with `seqovl` will not work. +Disorder requires `seqovl` to be less than `split_pos`. Either statically defined or automatically calculated. +Otherwise desync is not possible and will not happen. +Method allows to avoid separate fakes. Fakes and real data are mixed. + +`hopbyhop`, `destopt` and `ipfrag1` desync modes (they're not the same as `hopbyhop` fooling !) are ipv6 only. One `hop-by-hop`, +`destination options` or `fragment` header is added to all desynced packets. +Extra header increases packet size and can't be applied to the maximum size packets. +If it's not possible to send modified packet original one will be sent. +The idea here is that DPI sees 0 in the next header field of the main ipv6 header and does not +walk through the extension header chain until transport header is found. +`hopbyhop`, `destopt`, `ipfrag1` modes can be used with any second phase mode except `ipfrag1+ipfrag2`. +For example, `hopbyhop,split2` means split original tcp packet into 2 pieces and add hop-by-hop header to both. +With `hopbyhop,ipfrag2` header sequence will be : `ipv6,hop-by-hop,fragment,tcp/udp`. +`ipfrag1` mode may not always work without special preparations. See "IP Fragmentation" notices. + +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, --wssize parameter may help (see CONNTRACK). +Otherwise it is hardly possible to overcome this 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 ClientHello 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 1:6 -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 1:6 -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. + +### DPI desync combos + +dpi-desync parameter takes up to 3 comma separated arguments. +zero phase means tcp connection establishement (before sending data payload). Mode can be `synack`. +Hostlist filter is not applicable to the zero phase. +Next phases work on packets with data payload. +1st phase mode can be `fake`,`rst`,`rstack`, 2nd phase mode - `disorder`,`disorder2`,`split`,`split2`,`ipfrag2`. +Can be useful for ISPs with more than one DPI. + +### SYNACK mode + +In geneva docs it's called **TCP turnaround**. Attempt to make the DPI believe the roles of client and server are reversed. + +!!! This mode breaks NAT operation and can be used only if there's no NAT between the attacker's device and the DPI ! + +In linux it's required to remove standard firewall rule dropping INVALID packets in the OUTPUT chain, +for example : `-A OUTPUT -m state --state INVALID -j DROP` + +In openwrt it's possible to disable the rule for both FORWARD and OUTPUT chains in /etc/config/firewall : +``` +config zone + option name 'wan' + ......... + option masq_allow_invalid '1' +``` +Unfortunately there's no OUTPUT only switch. It's not desired to remove the rule from the FORWARD chain. +Add the following lines to `/etc/firewall.user` : + +``` +iptables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT +ip6tables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT +``` + +then `/etc/init.d/firewall restart` + +Otherwise raw sending SYN,ACK frame will cause error stopping the further processing. +If you realize you don't need the synack mode it's highly suggested to restore drop INVALID rule. + +### SYNDATA mode + +Normally SYNs come without data payload. If it's present it's ignored by all major OS if TCP fast open (TFO) is not involved, but may not be ignored by DPI. +Original connections with TFO are not touched because otherwise they would be definitely broken. +Without extra parameter payload is 16 zero bytes. + +### 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. + +### CONNTRACK + +nfqws is equipped with minimalistic connection tracking system (conntrack) +It's used if some specific DPI circumvention methods are involved and helps to reassemble multi-packet requests. + +Conntrack can track connection phase : SYN,ESTABLISHED,FIN , packet counts in both directions , sequence numbers. + +It can be fed with unidirectional or bidirectional packets. + +A SYN or SYN,ACK packet creates an entry in the conntrack table. + +That's why iptables redirection must start with the first packet although can be cut later using connbytes filter. + +First seen UDP packet creates UDP stream. It defines the stream direction. Then all packets with the same +`src_ip,src_port,dst_ip,dst_port` are considered to belong to the same UDP stream. UDP stream exists till inactivity timeout. + +A connection is deleted from the table as soon as it's no more required to satisfy nfqws needs or when a timeout happens. + +There're 3 timeouts for each connection state. They can be changed in `--ctrack-timeouts` parameter. + +`--wssize` changes tcp window size for the server to force it to send split replies. +In order for this to affect all server operating systems, it is necessary to change the window size in each outgoing packet +before sending the message, the answer to which must be split (for example, TLS ClientHello). +That's why conntrack is required to know when to stop applying low window size. + +If you do not stop and set the low wssize all the time, the speed will drop catastrophically. +Linux can overcome this using connbytes filter but other OS may not include similar filter. + +In http(s) case wssize stops after the first http request or TLS ClientHello. + +If you deal with a non-http(s) protocol you need `--wssize-cutoff`. It sets the threshold where wssize stops. + +Threshold can be prefixed with 'n' (packet number starting from 1), 'd' (data packet number starting from 1), +'s' (relative sequence number - sent by client bytes + 1). + +If a http request or TLS ClientHello packet is detected wssize stops immediately ignoring wssize-cutoff option. + +If your protocol is prone to long inactivity, you should increase ESTABLISHED phase timeout using `--ctrack-timeouts`. + +Default timeout is low - only 5 mins. + +Don't forget that nfqws feeds with redirected packets. If you have limited redirection with connbytes +ESTABLISHED entries can remain in the table until dropped by timeout. + +To diagnose conntrack state send SIGUSR1 signal to nfqws : `killall -SIGUSR1 nfqws`. + +nfqws will dump current conntrack table to stdout. + +Typically, in a SYN packet, client sends TCP extension **scaling factor** in addition to window size. +scaling factor is the power of two by which the window size is multiplied : 0=>1, 1=>2, 2=>4, ..., 8=>256, ... + +The wssize parameter specifies the scaling factor after a colon. + +Scaling factor can only decrease, increase is blocked to prevent the server from exceeding client's window size. + +To force a TLS server to fragment ServerHello message to avoid hostname detection on DPI use `--wssize=1:6` + +The main rule is to set scale_factor as much as possible so that after recovery the final window size +becomes the possible maximum. If you set `scale_factor` 64:0, it will be very slow. + +On the other hand, the server response must not be large enough for the DPI to find what it is looking for. + +`--wssize` is not applied in desync profiles with hostlist filter because it works since the connection initiation when it's not yet possible +to extract the host name. But it works with auto hostlist profiles. + +`--wssize` may slow down sites and/or increase response time. It's desired to use another methods if possible. + +`--dpi-desync-cutoff` allows you to set the threshold at which it stops applying dpi-desync. +Can be prefixed with 'n', 'd', 's' symbol the same way as `--wssize-cutoff`. +Useful with `--dpi-desync-any-protocol=1`. +If the connection falls out of the conntrack and --dpi-desync-cutoff is set, dpi desync will not be applied. + +Set conntrack timeouts appropriately. + +### Reassemble + +nfqws supports reassemble of TLS and QUIC ClientHello. +They can consist of multiple packets if kyber crypto is used (default starting from chromium 124). +Chromium randomizes TLS fingerprint. SNI can be in any packet or in-between. +Stateful DPIs usually reassemble all packets in the request then apply block decision. +If nfqws receives a partial ClientHello it begins reassemble session. Packets are delayed until it's finished. +Then they go through desync using fully reassembled message. +On any error reassemble is cancelled and all delayed packets are sent immediately without desync. + +There is special support for all tcp split options for multi segment TLS. Split position is treated +as message-oriented, not packet oriented. For example, if your client sends TLS ClientHello with size 2000 +and SNI is at 1700, desync mode is fake,split2, then fake is sent first, then original first segment +and the last splitted segment. 3 segments total. + + +### UDP support + +UDP attacks are limited. Its not possible to fragment UDP on transport level, only on network (ip) level. +Only desync modes `fake`,`hopbyhop`,`destopt`,`ipfrag1` and `ipfrag2` are applicable. +`fake`,`hopbyhop`,`destopt` can be used in combo with `ipfrag2`. +`fake` can be used in combo with `udplen` and `tamper`. + +`udplen` increases udp payload size by `--dpi-desync-udplen-increment` bytes. Padding is filled with zeroes by default but can be overriden with a pattern. +This option can resist DPIs that track outgoing UDP packet sizes. +Requires that application protocol does not depend on udp payload size. + +QUIC initial packets are recognized. Decryption and hostname extraction is supported so `--hostlist` parameter will work. +Wireguard handshake initiation and DHT packets are also recognized. +For other protocols desync use `--dpi-desync-any-protocol`. + +Conntrack supports udp. `--dpi-desync-cutoff` will work. UDP conntrack timeout can be set in the 4th parameter of `--ctrack-timeouts`. + +Fake attack is useful only for stateful DPI and useless for stateless dealing with each packet independently. +By default fake payload is 64 zeroes. Can be overriden using `--dpi-desync-fake-unknown-udp`. + +### IP fragmentation + +Modern network can be very hostile to IP fragmentation. Fragmented packets are often not delivered or refragmented/reassembled on the way. +Frag position is set independently for tcp and udp. By default 24 and 8, must be multiple of 8. +Offset starts from the transport header. + +tcp fragments are almost always filtered. It's absolutely not suitable for arbitrary websites. +udp fragments have good chances to survive but not everywhere. It's good to assume success rate on QUIC between 50..75%. +Likely more with your VPS. Sometimes filtered by DDoS protection. + +There are important nuances when working with fragments in Linux. + +ipv4 : Linux allows to send ipv4 fragments but standard firewall rules in OUTPUT chain can cause raw send to fail. + +ipv6 : There's no way for an application to reliably send fragments without defragmentation by conntrack. +Sometimes it works, sometimes system defragments packets. +Looks like kernels <4.16 have no simple way to solve this problem. Unloading of `nf_conntrack` module +and its dependency `nf_defrag_ipv6` helps but this severely impacts functionality. +Kernels 4.16+ exclude from defragmentation untracked packets. +See `blockcheck.sh` code for example. + +Sometimes it's required to load `ip6table_raw` kernel module with parameter `raw_before_defrag=1`. +In openwrt module parameters are specified after module names separated by space in files located in `/etc/modules.d`. + +In traditional linux check whether `iptables-legacy` or `iptables-nft` is used. If legacy create the file +`/etc/modprobe.d/ip6table_raw.conf` with the following content : +``` +options ip6table_raw raw_before_defrag=1 +``` +In some linux distros its possible to change current ip6tables using this command: `update-alternatives --config ip6tables`. +If you want to stay with `nftables-nft` you need to patch and recompile your version. +In `nft.c` find : +``` + { + .name = "PREROUTING", + .type = "filter", + .prio = -300, /* NF_IP_PRI_RAW */ + .hook = NF_INET_PRE_ROUTING, + }, + { + .name = "OUTPUT", + .type = "filter", + .prio = -300, /* NF_IP_PRI_RAW */ + .hook = NF_INET_LOCAL_OUT, + }, +``` +and replace -300 to -450. + +It must be done manually, `blockcheck.sh` cannot auto fix this for you. + +Or just move to `nftables`. You can create hooks with any priority there. + +Looks like there's no way to do ipfrag using iptables for forwarded traffic if NAT is present. +`MASQUERADE` is terminating target, after it `NFQUEUE` does not work. +nfqws sees packets with internal network source address. If fragmented NAT does not process them. +This results in attempt to send packets to internet with internal IP address. +You need to use nftables instead with hook priority 101 or higher. + +### multiple strategies + +`nfqws` can apply different strategies to different requests. It's done with multiple desync profiles. +Profiles are delimited by the `--new` parameter. First profile is created automatically and does not require `--new`. +Each profile has a filter. By default it's empty and profile matches any packet. +Filter can have hard parameters : ip version and tcp/udp port range. +Hard parameters are always identified unambiguously even on zero-phase when hostname is unknown yet. +Hostlist can also act as a filter. They can be combined with hard parameters. +When a packet comes profiles are matched from the first to the last until first filter condition match. +Hard filter is matched first. If it does not match verification goes to the next profile. +If a profile matches hard filter and has autohostlist it's selected immediately. +If a profile matches hard filter and has normal hostlist(s) and hostname is unknown yet verification goes to the next profile. +Otherwise profile hostlist(s) are checked for the hostname. If it matches profile is selected. +Otherwise verification goes to the next profile. + +It's possible that before getting hostname connection is served by one profile and after +hostname is revealed it's switched to another profile. +If you use 0-phase desync methods think carefully what can happen during strategy switch. +Use `--debug` logging to understand better what `nfqws` does. + +Profiles are numbered from 1 to N. There's last empty profile in the chain numbered 0. +It's used when no filter matched. + +IMPORTANT : multiple strategies exist only for the case when it's not possible to combine all to one strategy. +Copy-pasting blockcheck results of different websites to multiple strategies lead to the mess. +This way you may never unblock all resources and only confuse yourself. + +## tpws + +tpws is transparent proxy. + +``` + --debug=0|1|2|syslog|@ ; 1 and 2 means log to console and set debug level. for other targets use --debug-level. + --debug-level=0|1|2 ; specify debug level for syslog and @ + --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=no|unwanted|prefer|force + ; no : bind only to global ipv6 + ; unwanted (default) : prefer global address, then LL + ; prefer : prefer LL, then global + ; force : LL only + --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. + --connect-bind-addr=| ; address for outbound connections. for v6 link locals append %%interface_name + --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 + --nosplice ; do not use splice to transfer data between sockets + --skip-nodelay ; do not set TCP_NODELAY for outgoing connections. incompatible with split. + --local-tcp-user-timeout= ; set tcp user timeout for local leg (default : 10, 0 = system default) + --remote-tcp-user-timeout= ; set tcp user timeout for remote leg (default : 20, 0 = system default) + --no-resolve ; disable socks5 remote dns + --resolver-threads= ; number of resolver worker threads + --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 + + --new ; begin new strategy + --filter-l3=ipv4|ipv6 ; L3 protocol filter. multiple comma separated values allowed. + --filter-tcp=[~]port1[-port2] ; TCP port filter. ~ means negation + + --hostlist= ; only act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed) + --hostlist-exclude= ; do not act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed) + --hostlist-auto= ; detect DPI blocks and build hostlist automatically + --hostlist-auto-fail-threshold= ; how many failed attempts cause hostname to be added to auto hostlist (default : 3) + --hostlist-auto-fail-time= ; all failed attemps must be within these seconds (default : 60) + --hostlist-auto-debug= ; debug auto hostlist positives + + --split-http-req=method|host ; split http request at specified logical position. + --split-tls=sni|sniext ; split at specified logical part of TLS ClientHello + --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 + --disorder[=http|tls] ; when splitting simulate sending second fragment first + --oob[=http|tls] ; when splitting send out of band byte. default is HEX 0x00. + --oob-data=|0xHEX ; override default 0x00 OOB byte. + --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 + --tlsrec=sni|sniext ; make 2 TLS records. split at specified logical part. don't split if SNI is not present. + --tlsrec-pos= ; make 2 TLS records. split at specified pos + --mss= ; set client MSS. forces server to split messages but significantly decreases speed ! + --mss-pf=[~]port1[-port2] ; MSS port filter. ~ means negation + --tamper-start=[n] ; start tampering only from specified outbound stream position. byte pos or block number ('n'). default is 0. + --tamper-cutoff=[n] ; do not tamper anymore after specified outbound stream position. byte pos or block number ('n'). default is unlimited. + --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*` and `--bind-addr` create new bind. + +Other parameters `--bind-*` are related to the last bind. + +link local ipv6 (`fe80::/8`) mode selection : + +``` +--bind-iface6 --bind-linklocal=no : first selects private address fc00::/7, then global address +--bind-iface6 --bind-linklocal=unwanted : first selects private address fc00::/7, then global address, then LL +--bind-iface6 --bind-linklocal=prefer : first selects LL, then private address fc00::/7, then global address +--bind-iface6 --bind-linklocal=force : select only LL +``` + +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. + +To bind to a specific link local address do : `--bind-iface6=fe80::aaaa:bbbb:cccc:dddd%iface-name` + +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." + +To bind to a specific ip when its interface may not be configured yet do : `--bind-addr=192.168.5.3 --bind-wait-ip=20` + +It's possible to bind to any nonexistent address in transparent mode but in socks mode address must exist. + +In socks proxy mode no additional system privileges are required. Connections 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 activities. Domain names are resolved in multi threaded pool. +Resolving does not freeze other connections. But if there're too many requests resolving delays may increase. +Number of resolver threads is choosen automatically proportinally to `--maxconn` and can be overriden using `--resolver-threads`. +To disable hostname resolve use `--no-resolve` option. + +`--disorder` is an additional flag to any split option. +It tries to simulate `--disorder2` option of `nfqws` using standard socket API without the need of additional privileges. +This works fine in Linux and MacOS but unexpectedly in FreeBSD and OpenBSD +(system sends second fragment then the whole packet instead of the first fragment). + +`--tlsrec` and `--tlsrec-pos` allow to split TLS ClientHello into 2 TLS records in one TCP segment. +`--tlsrec=sni` splits between 1st and 2nd chars of the hostname. No split occurs if SNI is not present. +`--tlsrec-pos` splits at specified position. If TLS data block size is too small pos=1 is applied. +`--tlsrec` can be combined with `--split-pos` and `--disorder`. +`--tlsrec` breaks significant number of sites. Crypto libraries on end servers usually accept fine modified ClientHello +but middleboxes such as CDNs and ddos guards - not always. +Use of `--tlsrec` without filters is discouraged. + +`--mss` sets TCP_MAXSEG socket option. Client sets this value in MSS TCP option in the SYN packet. +Server replies with it's own MSS in SYN,ACK packet. Usually servers lower their packet sizes but they still don't +fit to supplied MSS. The greater MSS client sets the bigger server's packets will be. +If it's enough to split TLS 1.2 ServerHello, it may fool DPI that checks certificate domain name. +This scheme may significantly lower speed. Hostlist filter is possible only in socks mode if client uses remote resolving (firefox `network.proxy.socks_remote_dns`). +`--mss` is not required for TLS1.3. If TLS1.3 is negotiable then MSS make things only worse. +Use only if nothing better is available. Works only in Linux, not BSD or MacOS. + +### multiple strategies + +`tpws` supports multiple strategies as well. They work mostly like with `nfqws` with minimal differences. +`filter-udp` is absent because `tpws` does not support udp. 0-phase desync methods (`--mss`) can work with hostlist in socks modes with remote hostname resolve. +This is the point where you have to plan profiles carefully. If you use `--mss` and hostlist filters, behaviour can be different depending on remote resolve feature enabled or not. +Use `--mss` both in hostlist profile and profile without hostlist. +Use `curl --socks5` and `curl --socks5-hostname` to issue two kinds of proxy queries. +See `--debug` output to test your setup. + +## Ways to get a list of blocked IP + +nftables can't work with ipsets. Native nf sets require lots of RAM to load large ip lists with subnets and intervals. +In case you're on a low RAM system and need large lists it may be required to fall back to iptables+ipset. + +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(s) of domains. +Both `tpws` and `nfqws` take any number of include (`--hostlist`) and exclude (`--hostlist-exclude`) domain lists. +All lists of the same type are combined internally leaving only 2 lists : include and exclude. + +Exclude list is checked first. Fooling is cancelled if domain belongs to exclude list. +If include list is present and domain does not belong to that list fooling is also cancelled. +Empty list means absent list. Otherwise fooling goes on. + +Launch system looks for 2 include lists : + +`ipset/zapret-hosts-users.txt.gz` or `ipset/zapret-hosts-users.txt` + +`ipset/zapret-hosts.txt.gz` or `ipset/zapret-hosts.txt` + +and 1 exclude list + +`ipset/zapret-hosts-users-exclude.txt.gz` or `ipset/zapret-hosts-users-exclude.txt` + +If `MODE_FILTER=hostlist` all present lists are passed to `nfqws` or `tpws`. +If all include lists are empty it works like no include lists exist at all. +If you need "all except" mode you dont have to delete zapret-hosts-users.txt. Just make it empty. + +Subdomains auto apply. For example, "ru" in the list affects "*.ru" . + +tpws and nfqws reread lists on HUP signal. + +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 ! + +## **autohostlist** mode + +This mode analyzes both client requests and server replies. +If a host is not in any list and a situation similar to block occurs host is automatically added to the special list both in memory and file. +Use exclude hostlist to prevent autohostlist triggering. +If it did happen - delete the undesired record from the file and restart tpws/nfqws or send them SIGHUP to force lists reload. + +In case of nfqws it's required to redirect both incoming and outgoing traffic to the queue. +It's strongly recommended to use connbytes filter or nfqws will process gigabytes of incoming traffic. +For the same reason it's not recommended to use autohostlist mode in BSDs. BSDs do not support connbytes or similar mechanism. + +nfqws и tpws detect the folowing situations : +1) [nfqws] Multiple retransmissions of the first request inside a TCP session having host. +2) [nfqws,tpws] RST in response to the first request. +3) [nfqws,tpws] HTTP redirect in response to the first http request with 2nd level domain diferent from the original. +4) [tpws] Client closes connection after first request without having server reply (no reponse from server, timeout). + +To minimize false positives there's fail counter. If in specific time occurs more than specified number of fails +the host is added to the list. Then DPI bypass strategy start to apply immediately. + +For the user autohostlist mode looks like this. +When for the first time user visits a blocked website it sees block page, connection reset +or browser hangs until timeout, then display a error. +User presses multiple times F5 causing browser to retry attempts. +After some retries a website opens and next time works as expected. + +With autohostlist mode it's possible to use bypass strategies that break lots of sites. +If a site does not behave like blocked no fooling applies. +Otherwise it's nothing to lose. + +However false positives still can occur in case target website is behaving abnormally +(may be due to DDoS attack or server malfunction). If it happens bypass strategy +may start to break the website. This situation can only be controlled manually. +Remove undesired domain from the autohostlist file, restart nfqws/tpws or send them SIGHUP. +Use exclude hostlist to prevent further auto additions. + +It's possible to use one auto hostlist with multiple processes. All processes check for file modification time. +If a process modified autohostlist, all others will reread it automatically. +All processes must run with the same uid. + +If zapret scripts are used then autohostlist is `ipset/zapret-hosts-auto.txt` +and exlude list is `ipset/zapret-hosts-user-exclude.txt`. autohostlist mode +includes hostlist mode. You can use `ipset/zapret-hosts-user.txt`. + + +## 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. + +Which firewall type use on linux systems : `nftables` or `iptables`. +On traditional systems `nftables` is selected by default if `nft` is installed. +On openwrt by default `nftables` is selected on `firewall4` based systems. + +`FWTYPE=iptables` + +Main mode : + +``` +tpws - tpws transparent mode +tpws-socks - tpws socks mode + binds to localhost and LAN interface (if IFACE_LAN is specified or the system is OpenWRT). port 988 +nfqws - 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` + +Enable quic fooling : + +`MODE_QUIC=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 +autohostlist - hostlist mode + blocks auto detection +``` + +`MODE_FILTER=none` + +Its possible to change manipulation options used by tpws : + +`TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"` + +Additional low priority desync profile for `MODE_FILTER=hostlist`. +With multiple profile support 0-phase desync methods are no more applied with hostlist ! +To apply them additional profile is required without hostlist filter. + +`TPWS_OPT_SUFFIX="--mss=88"` + +nfqws options for DPI desync attack: + +``` +DESYNC_MARK=0x40000000 +DESYNC_MARK_POSTNAT=0x20000000 +NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum --dpi-desync-fwmark=$DESYNC_MARK" +``` + +Separate nfqws options for http and https and ip protocol versions 4,6: + +``` +NFQWS_OPT_DESYNC_HTTP="--dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" +NFQWS_OPT_DESYNC_HTTPS="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" +NFQWS_OPT_DESYNC_HTTP6="--dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none" +NFQWS_OPT_DESYNC_HTTPS6="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none" +``` + +If one of `NFQWS_OPT_DESYNC_HTTP`/`NFQWS_OPT_DESYNC_HTTPS` is not defined it takes value of NFQWS_OPT_DESYNC. +If one of `NFQWS_OPT_DESYNC_HTTP6`/`NFQWS_OPT_DESYNC_HTTPS6` is not defined it takes value from +`NFQWS_OPT_DESYNC_HTTP`/`NFQWS_OPT_DESYNC_HTTPS`. +It means if only `NFQWS_OPT_DESYNC` is defined all four take its value. + +If a variable is not defined, the value `NFQWS_OPT_DESYNC` is taken. + +Additional low priority desync profile for `MODE_FILTER=hostlist`. +With multiple profile support 0-phase desync methods are no more applied with hostlist ! +To apply them additional profile is required without hostlist filter. +``` +#NFQWS_OPT_DESYNC_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTP_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTPS_SUFFIX="--wssize 1:6" +#NFQWS_OPT_DESYNC_HTTP6_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTPS6_SUFFIX="--wssize 1:6" +``` + +Defaults are filled the same ways as with NFQWS_OPT_*. + +Separate QUIC options for ip protocol versions : + +``` +NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake" +NFQWS_OPT_DESYNC_QUIC6="--dpi-desync=hopbyhop" +``` + +If `NFQWS_OPT_DESYNC_QUIC6` is not specified `NFQWS_OPT_DESYNC_QUIC` is taken. + + +flow offloading control (if supported) + +``` +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 and nfset options : + +``` +SET_MAXELEM=262144 +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" +``` + +autohostlist mode tuning. + +``` +AUTOHOSTLIST_RETRANS_THRESHOLD=3 +AUTOHOSTLIST_FAIL_THRESHOLD=2 +AUTOHOSTLIST_FAIL_TIME=60 +AUTOHOSTLIST_DEBUG=0 +``` + +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"` + +In openwrt there's default network `lan`. Only traffic coming from this network is redirected to tpws by default. +To override this behaviour set the following variable : + +`OPENWRT_LAN="lan lan2 lan3"` + +In openwrt wan interfaces are those having default route. Separately for ipv4 and ipv6. +This can be redefined : +``` +OPENWRT_WAN4="wan4 vpn" +OPENWRT_WAN6="wan6 vpn6" +``` + +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. +Not applicable to `OpenWRT` if used with `firewall3+iptables`. + +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 +IFACE_WAN6="henet ipsec0" +``` +Multiple interfaces are space separated. IF IFACE_WAN6 is omitted then IFACE_WAN value is taken. + +IMPORTANT: configuring routing, masquerade, etc. not a zapret task. +Only modes that intercept transit traffic are enabled. +It's possible to specify multiple interfaces like this : `IFACE_LAN="eth0 eth1 eth2"` + + +## 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 + /opt/zapret/init.d/sysv/zapret restart_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 + /opt/zapret/init.d/sysv/zapret restart_daemons +``` + +nftables nearly eliminate conflicts betweeen firewall control systems because they allow +separate tables and netfilter hooks. `zapret` nf table is used for zapret purposes. +If your system does not touch it everything will likely be OK. + +Some additional nftables-only calls exist : + +Lookup `lanif`, `wanif`, `wanif6` and `flow table` interface sets. +``` + /opt/zapret/init.d/sysv/zapret list_ifsets +``` + +Renew `lanif`, `wanif`, `wanif6` and `flow table` interface sets. +Taken from `IFACE_LAN`, `IFACE_WAN` config variables on traditional Linux systems. +Autoselected on `OpenWRT`. `lanif` can be extended using `OPENWRT_LAN` config variable. +``` + /opt/zapret/init.d/sysv/zapret reload_ifsets +``` + +Calls `nft -t list table inet zapret`. +``` + /opt/zapret/init.d/sysv/zapret list_table +``` + +It's also possible to hook with your script to any stage of zapret firewall processing. +The following settings are available in the zapret config file : + +``` +INIT_FW_PRE_UP_HOOK="/etc/firewall.zapret.hook.pre_up" +INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up" +INIT_FW_PRE_DOWN_HOOK="/etc/firewall.zapret.hook.pre_down" +INIT_FW_POST_DOWN_HOOK="/etc/firewall.zapret.hook.post_down" +``` + +Hooks are extremely useful if you need nftables sets populated by zapret scripts. +nfsets can only belong to one table. You have to write rule there and synchorize them with zapret scripts. + +## Installation + +### Checking ISP + +Before running zapret you must discover working bypass strategy. +`blockcheck.sh` automates this process. It first checks DNS then tries many strategies finding the working ones. +Note that DNS check is mostly Russia targeted. It checks several pre-defined blocked in Russia domains and +verifies system DNS answers with public DNS answers. Because ISP can block public DNS or redirect any DNS queries +to their servers `blockcheck.sh` also checks that all returned answers are unique. Usually if DNS is blocked +ISP returns single ip for all blocked domains to redirect you to their "access denied" page. +`blockcheck.sh` works in Linux and FreeBSD. + +### desktop linux system + +Simple install works on most modern linux distributions with systemd or openrc, OpenWRT and MacOS. +Run `install_easy.sh` and answer its questions. + +### 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. +Install openssh-sftp-server and unzip to openwrt and use sftp to transfer the file. +It's also not too hard to use 'nc' (netcat) for file transfer. + +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. + +Android has NFQUEUE and nfqws should work. + +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`. + +Nfqws should be executed with `--uid 1`. Otherwise on some devices or firmwares kernel may partially hang. Looks like processes with certain uids can be suspended. With buggy chineese cellular interface driver this can lead to device hang. + +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` + +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.md + +### Windows (WSL) + +see docs/windows.eng.md + +### 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. newer 2.6 kernels are OK. +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. diff --git a/docs/readme.txt b/docs/readme.txt new file mode 100644 index 0000000..759f235 --- /dev/null +++ b/docs/readme.txt @@ -0,0 +1,1937 @@ +zapret v.64 + +English +------- + +For english version refer to docs/readme.eng.txt + +Ð”Ð»Ñ Ñ‡ÐµÐ³Ð¾ Ñто надо +----------------- + +Ðвтономное, без задейÑÑ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ Ñторонних Ñерверов, ÑредÑтво противодейÑÑ‚Ð²Ð¸Ñ DPI. +Может помочь обойти блокировки или замедление Ñайтов http(s), Ñигнатурный анализ tcp и udp протоколов, +например Ñ Ñ†ÐµÐ»ÑŒÑŽ блокировки VPN. + +Проект нацелен прежде вÑего на маломощные embedded уÑтройÑтва - роутеры, работающие под openwrt. +ПоддерживаютÑÑ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ðµ Linux ÑиÑтемы, FreeBSD, OpenBSD, чаÑтично MacOS. +Ð’ некоторых ÑлучаÑÑ… возможна ÑамоÑтоÑÑ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸ÐºÑ€ÑƒÑ‚ÐºÐ° Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ðº различным прошивкам. + +Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ функционала работает на windows. + +Как побыÑтрее начать +-------------------- + +Читайте docs/quick_start.txt Ð´Ð»Ñ linux и openwrt, docs/quick_start_windows.txt Ð´Ð»Ñ windows. + + +Как Ñто работает +---------------- + +Ð’ Ñамом проÑтейшем Ñлучае вы имеете дело Ñ Ð¿Ð°ÑÑивным 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 + + +Что ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ñходит в РоÑÑии +------------------------------ + +Раньше, до Ð²Ð½ÐµÐ´Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÑемеÑтных ÑиÑтем ТСПУ, иÑпользовалÑÑ Ð·Ð¾Ð¾Ð¿Ð°Ñ€Ðº различных DPI +у провайдеров. Какие-то были активными, какие-то паÑÑивными. +Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ñ‹Ñ… iptables окончательно ушло. Везде активный DPI ТСПУ, но кое-где +могут оÑтаватьÑÑ Ð½ÐµÐ²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ дополнительные Ñтарые DPI из зоопарка. +Ð’ Ñтом Ñлучае приходитÑÑ Ð¾Ð±Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ñразу неÑколько DPI. +Ð’Ñе больше ÑтановитÑÑ Ð²Ð½ÐµÑ€ÐµÐµÑтровых блокировок, о которых вы узнаете только по факту +недоÑтупноÑти чего-либо, в ÑпиÑках Ñтого нет. +ПрименÑÑŽÑ‚ÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ некоторых диапазонов ip адреÑов (автономный обход невозможен) +и протоколов (VPN). +Ðа некоторых диапазонах IP иÑпользуетÑÑ Ð±Ð¾Ð»ÐµÐµ Ñтрогий фильтр, раÑпознающий попытки +обмана через Ñегментацию. Должно быть Ñто ÑвÑзано Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ ÑервиÑами, которые +пытаютÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ образом обмануть DPI. + + +Как Ñто реализовать на практике в ÑиÑтеме linux +----------------------------------------------- + +ЕÑли кратко, то варианты можно клаÑÑифицировать по Ñледующей Ñхеме : + +1) ПаÑÑивный DPI, не отправлÑющий RST Ñерверу. Помогут индивидуально наÑтраиваемые под провайдера команды iptables. +Ðа rutracker в разделе "обход блокировок - другие ÑпоÑобы" по Ñтому вопроÑу ÑущеÑтвует Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚ÐµÐ¼Ð°. +Ð’ данном проекте не раÑÑматриваетÑÑ. ЕÑли вы не допуÑтите Ñрабатывание триггера запрета, то и не придетÑÑ +боротьÑÑ Ñ ÐµÐ³Ð¾ поÑледÑтвиÑми. +2) ÐœÐ¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ TCP ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° уровне потока. РеализуетÑÑ Ñ‡ÐµÑ€ÐµÐ· proxy или transparent proxy. +3) ÐœÐ¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ TCP ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° уровне пакетов. РеализуетÑÑ Ñ‡ÐµÑ€ÐµÐ· обработчик очереди NFQUEUE и raw Ñокеты. + +Ð”Ð»Ñ Ð²Ð°Ñ€Ð¸Ð°Ð½Ñ‚Ð¾Ð² 2 и 3 реализованы программы tpws и nfqws ÑоответÑтвенно. +Чтобы они работали, необходимо их запуÑтить Ñ Ð½ÑƒÐ¶Ð½Ñ‹Ð¼Ð¸ параметрами и перенаправить на них определенный трафик +ÑредÑтвами iptables или nftables. + + +Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ 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 1:6 -m mark ! --mark 0x40000000/0x40000000 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass + +Фильтр по mark нужен Ð´Ð»Ñ Ð¾Ñ‚ÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚ очереди пакетов, Ñгенерированных внутри nfqws. +ЕÑли применÑетÑÑ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€ по connbytes 1:6, то обÑзательно добавлÑÑ‚ÑŒ в iptables и фильтр по mark. Иначе возможно +перепутывание порÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð², что приведет к неработоÑпоÑобноÑти метода. + +Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… атак на DPI требуетÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑÑ‚ÑŒ один или неÑколько входÑщих пакетов от ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ : + +iptables -t mangle -I PREROUTING -i <внешний_интерфейÑ> -p tcp --sport 80 -m connbytes --connbytes-dir=reply --connbytes-mode=packets --connbytes 1:6 -m set --match-set zapret src -j NFQUEUE --queue-num 200 --queue-bypass + +Получаемые пакеты будут фильтроватьÑÑ Ð¿Ð¾ входÑщему интерфейÑу, порту и IP иÑточника, то еÑÑ‚ÑŒ наоборот прÑмому правилу. + +Ðекоторые техники, ломающие NAT, не вÑегда можно реализовать через iptables. ТребуютÑÑ nftables. + + +ЕÑли ваше уÑтройÑтво поддерживает аппаратное уÑкорение (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 работает без изменений. + + +ОÑобенноÑти Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ nftables +------------------------------- + +Более подробно преимущеÑтва и недоÑтатки nftables применительно к данной ÑиÑтеме опиÑаны в docs/nftables_notes.txt +ЕÑли коротко, то в nftables невозможно работать Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ ip лиÑтами на ÑиÑтемах Ñ Ð¼Ð°Ð»Ñ‹Ð¼ количеÑтвом RAM. +ОÑтальные раÑÑматриваемые здеÑÑŒ функции могут быть перенеÑены на nftables. + +РекомендуетÑÑ Ð²ÐµÑ€ÑÐ¸Ñ nft 1.0.2 или выше. Ðо чем выше верÑиÑ, тем лучше. Ð’ nft регулÑрно находÑÑ‚ баги. + +ОтноÑительно Ñтарые верÑии Ñдра и/или утилиты nft могут вызывать ошибки. +Ð’ чаÑтноÑти, на ubuntu 18.04 Ñ Ñдром 4.15 будут проблемы. Ð’ 20.04 - работает. + +Ðекоторые техники можно полноценно иÑпользовать только Ñ nftables. +Ðапример, в iptables невозможно перенаправить пакеты на nfqws поÑле NAT. +Следовательно, при иÑпользовании NAT невозможно произвеÑти атаку, не ÑовмеÑтимую Ñ NAT. +Ð’ nftables Ñтой проблемы не ÑущеÑтвует, потому что приоритеты хука выÑтавлÑете вы Ñами, а не привÑзаны к фикÑированным +значениÑм, ÑоответÑтвующим разным таблицам iptables. Ð’ iptables нет таблицы, ÑпоÑобной перехватить пакеты поÑле MASQUERDADE. + + +Когда Ñто работать не будет +--------------------------- + +* ЕÑли подменÑетÑÑ 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=N ; номер очереди N + --bind-fix4 ; пытатьÑÑ Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ проблему неверного выбора иÑходÑщего интерфейÑа Ð´Ð»Ñ Ñгенерированных ipv4 пакетов + --bind-fix6 ; пытатьÑÑ Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ проблему неверного выбора иÑходÑщего интерфейÑа Ð´Ð»Ñ Ñгенерированных ipv6 пакетов + --wsize=[:] ; менÑÑ‚ÑŒ tcp window size на указанный размер в SYN,ACK. еÑли не задан scale_factor, то он не менÑетÑÑ (уÑтарело !) + --wssize=[:] ; менÑÑ‚ÑŒ tcp window size на указанный размер в иÑходÑщих пакетах. scale_factor по умолчанию 0. (Ñм. conntrack !) + --wssize-cutoff=[n|d|s]N ; изменÑÑ‚ÑŒ server window size в иÑходÑщих пакетах (n), пакетах данных (d), отноÑительных sequence (s) по номеру меньше N + --ctrack-timeouts=S:E:F[:U] ; таймауты внутреннего conntrack в ÑоÑтоÑниÑÑ… SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60 + --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-ttl6= ; уÑтановить ipv6 hop limit Ð´Ð»Ñ Ð´ÐµÑинхронизирующих пакетов. еÑли не указано, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ ttl + --dpi-desync-autottl=[[:[-]]] ; режим auto ttl Ð´Ð»Ñ ipv4 и ipv6. по умолчанию: 1:3-20. delta=0 отключает функцию. + --dpi-desync-autottl6=[[:[-]]] ; переопределение предыдущего параметра Ð´Ð»Ñ ipv6 + --dpi-desync-fooling= ; дополнительные методики как Ñделать, чтобы фейковый пакет не дошел до Ñервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2 + --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-split-http-req=method|host ; разбивка http request на указанном логичеÑком меÑте + --dpi-desync-split-tls=sni|sniext ; разбивка tls client hello на указанном логичеÑком меÑте + --dpi-desync-split-seqovl= ; иÑпользовать sequence overlap перед первым отÑылаемым оригинальным tcp Ñегментом + --dpi-desync-split-seqovl-pattern=|0xHEX ; чем заполнÑÑ‚ÑŒ фейковую чаÑÑ‚ÑŒ overlap + --dpi-desync-badseq-increment= ; инкремент sequence number Ð´Ð»Ñ badseq. по умолчанию -10000 + --dpi-desync-badack-increment= ; инкремент ack sequence number Ð´Ð»Ñ badseq. по умолчанию -66000 + --dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по вÑем непуÑтым пакетам данных + --dpi-desync-fake-http=|0xHEX ; файл, Ñодержащий фейковый http Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð»Ñ dpi-desync=fake, на замену Ñтандартному www.iana.org + --dpi-desync-fake-tls=|0xHEX ; файл, Ñодержащий фейковый tls clienthello Ð´Ð»Ñ dpi-desync=fake, на замену Ñтандартному + --dpi-desync-fake-unknown=|0xHEX ; файл, Ñодержащий фейковый пейлоад неизвеÑтного протокола Ð´Ð»Ñ dpi-desync=fake, на замену Ñтандартным нулÑм 256 байт + --dpi-desync-fake-syndata=|0xHEX ; файл, Ñодержащий фейковый пейлоад пакета SYN Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° деÑинхронизации syndata + --dpi-desync-fake-quic=|0xHEX ; файл, Ñодержащий фейковый QUIC Initial + --dpi-desync-fake-dht=|0xHEX ; файл, Ñодержащий фейковый пейлоад DHT протокола Ð´Ð»Ñ dpi-desync=fake, на замену Ñтандартным нулÑм 64 байт + --dpi-desync-fake-unknown-udp=|0xHEX ; файл, Ñодержащий фейковый пейлоад неизвеÑтного udp протокола Ð´Ð»Ñ dpi-desync=fake, на замену Ñтандартным нулÑм 64 байт + --dpi-desync-udplen-increment= ; наÑколько увеличивать длину udp пейлоада в режиме udplen + --dpi-desync-udplen-pattern=|0xHEX ; чем добивать udp пакет в режиме udplen. по умолчанию - нули + --dpi-desync-start=[n|d|s]N ; применÑÑ‚ÑŒ dpi desync только в иÑходÑщих пакетах (n), пакетах данных (d), отноÑительных sequence (s) по номеру больше или равно N + --dpi-desync-cutoff=[n|d|s]N ; применÑÑ‚ÑŒ dpi desync только в иÑходÑщих пакетах (n), пакетах данных (d), отноÑительных sequence (s) по номеру меньше N + --hostlist= ; применÑÑ‚ÑŒ дурение только к хоÑтам из лиÑта. может быть множеÑтво лиÑтов, они объединÑÑŽÑ‚ÑÑ. пуÑтой обший лиÑÑ‚ = его отÑутÑтвие + --hostlist-exclude= ; не применÑÑ‚ÑŒ дурение к хоÑтам из лиÑта. может быть множеÑтво лиÑтов, они объединÑÑŽÑ‚ÑÑ + --hostlist-auto= ; обнаруживать автоматичеÑки блокировки и заполнÑÑ‚ÑŒ автоматичеÑкий hostlist (требует Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ñщего трафика) + --hostlist-auto-fail-threshold= ; Ñколько раз нужно обнаружить Ñитуацию, похожую на блокировку, чтобы добавить хоÑÑ‚ в лиÑÑ‚ (по умолчанию: 3) + --hostlist-auto-fail-time= ; вÑе Ñти Ñитуации должны быть в пределах указанного количеÑтва Ñекунд (по умолчанию: 60) + --hostlist-auto-retrans-threshold= ; Ñколько ретранÑмиÑÑий запроÑа Ñчитать блокировкой (по умолчанию: 3) + --hostlist-auto-debug= ; лог положительных решений по autohostlist. позволÑет разобратьÑÑ Ð¿Ð¾Ñ‡ÐµÐ¼Ñƒ там поÑвлÑÑŽÑ‚ÑÑ Ñ…Ð¾ÑÑ‚Ñ‹. + --new ; начало новой Ñтратегии + --filter-l3=ipv4|ipv6 ; фильтр верÑии ip Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтратегии + --filter-tcp=[~]port1[-port2] ; фильтр портов tcp Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтратегии. ~ означает инверÑию. уÑтановка фильтра tcp и неуÑтановка фильтра udp запрещает udp. + --filter-udp=[~]port1[-port2] ; фильтр портов udp Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтратегии. ~ означает инверÑию. уÑтановка фильтра udp и неуÑтановка фильтра tcp запрещает udp. + +Параметры манипулÑции могут ÑочетатьÑÑ Ð² любых комбинациÑÑ…. + +ЗÐМЕЧÐÐИЕ. Параметр --wsize ÑчитаетÑÑ ÑƒÑтаревшим и более не поддерживаетÑÑ Ð² Ñкриптах. +Функции Ñплита выполнÑÑŽÑ‚ÑÑ Ð² рамках атаки деÑинхронизации. Это быÑтрее и избавлÑет от целого Ñ€Ñда недоÑтатков wsize. + +--debug позволÑет выводить подробный лог дейÑтвий на конÑоль, в syslog или в файл. +Может быть важен порÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñ†Ð¸Ð¹. --debug лучше вÑего указывать в Ñамом начале. +Опции анализируютÑÑ Ð¿Ð¾Ñледовательно. ЕÑли ошибка будет при проверке опции, а до анализа --debug еще дело не дошло, +то ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ будут выведены в файл или syslog. +При логировании в файл процеÑÑ Ð½Ðµ держит файл открытым. Ради каждой запиÑи файл открываетÑÑ Ð¸ потом закрываетÑÑ. +Так что файл можно удалить в любой момент, и он будет Ñоздан заново при первом же Ñообщении в лог. +Ðо имейте в виду, что еÑли вы запуÑкаете процеÑÑ Ð¿Ð¾Ð´ root, то будет Ñменен UID на не-root. +Ð’ начале на лог файл менÑетÑÑ owner, иначе запиÑÑŒ будет невозможна. ЕÑли вы потом удалите файл, +и у процеÑÑа не будет прав на Ñоздание файла в его директории, лог больше не будет веÑтиÑÑŒ. +ВмеÑто ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑƒÑ‡ÑˆÐµ иÑпользовать truncate. +Ð’ шелле Ñто можно Ñделать через команду ": >filename" + +ÐТÐКРДЕСИÐХРОÐИЗÐЦИИ DPI +Суть ее в Ñледующем. ПоÑле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ tcp 3-way handshake идет первый пакет Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ от клиента. +Там обычно "GET / ..." или TLS ClientHello. Мы дропаем Ñтот пакет, заменÑÑ Ñ‡ÐµÐ¼-то другим. +Это может быть Ð¿Ð¾Ð´Ð´ÐµÐ»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ Ð±ÐµÐ·Ð¾Ð±Ð¸Ð´Ð½Ñ‹Ð¼, но валидным запроÑом http или https (вариант fake), +пакет ÑброÑа ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (варианты rst, rstack), разбитый на чаÑти оригинальный пакет Ñ Ð¿ÐµÑ€ÐµÐ¿ÑƒÑ‚Ð°Ð½Ð½Ñ‹Ð¼ +порÑдком ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ñегментов + обрамление первого Ñегмента фейками (disorder), +то же Ñамое без Ð¿ÐµÑ€ÐµÐ¿ÑƒÑ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñ€Ñдка Ñегментов (split). +fakeknown отличаетÑÑ Ð¾Ñ‚ fake тем, что применÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к раÑпознанному протоколу. +Ð’ литературе такие атаки еще называют TCB desynchronization и TCB teardown. +Ðадо, чтобы фейковые пакеты дошли до DPI, но не дошли до Ñервера. +Ðа вооружении еÑÑ‚ÑŒ Ñледующие возможноÑти : уÑтановить низкий TTL, поÑылать пакет Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ чекÑуммой, +добавлÑÑ‚ÑŒ tcp option "MD5 signature", иÑпортить sequence numbers. Ð’Ñе они не лишены недоÑтатков. + +* md5sig работает не на вÑех Ñерверах. Пакеты Ñ md5 обычно отбраÑывают только linux. +* badsum не Ñработает, еÑли ваше уÑтройÑтво за NAT, который не пропуÑкает пакеты Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ Ñуммой. + Ðаиболее раÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð½Ð°Ñ Ð½Ð°Ñтройка NAT роутера в Linux их не пропуÑкает. Ðа Linux поÑтроено большинÑтво + домашних роутеров. ÐепропуÑкание обеÑпечиваетÑÑ Ñ‚Ð°Ðº : наÑтройка Ñдра sysctl по умолчанию + net.netfilter.nf_conntrack_checksum=1 заÑтавлÑет conntrack проверÑÑ‚ÑŒ tcp и udp чекÑуммы входÑщих пакетов + и выÑтавлÑÑ‚ÑŒ state INVALID Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð² Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ Ñуммой. + Обычно в правилах iptables вÑтавлÑетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð¾ Ð´Ð»Ñ Ð´Ñ€Ð¾Ð¿Ð° пакетов Ñ ÑоÑтоÑнием INVALID в цепочке FORWARD. + СовмеÑтное Ñочетание Ñтих факторов приводит к непрохождению badsum через такой роутер. + Ð’ openwrt из коробки net.netfilter.nf_conntrack_checksum=0, в других роутерах чаÑто нет, + и не вÑегда Ñто можно изменить. Чтобы nfqws мог работать через роутер, нужно на нем выÑтавить указанное + значение sysctl в 0. nfqws на Ñамом роутере будет работать и без Ñтой наÑтройки, потому что + чекÑумма локально Ñозданных пакетов не проверÑетÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð°. + ЕÑли роутер за другим NAT, например провайдерÑким, и он не пропуÑкает invalid packets + вы ничего не Ñможете Ñ Ñтим Ñделать. Ðо обычно провайдеры вÑе же пропуÑкают badsum. + Ðа некоторых адаптерах/Ñвитчах/драйверах принудительно включен rx-checksum offload, badsum пакеты отÑекаютÑÑ + еще до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð² ОС. Ð’ Ñтом Ñлучае еÑли что-то и можно Ñделать, то только модифицировать драйвер, + что предÑтавлÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡ÐµÐ¹ крайне нетривиальной. УÑтановлено, что так ÑÐµÐ±Ñ Ð²ÐµÐ´ÑƒÑ‚ некоторые роутеры на базе mediatek. + badsum пакеты уходÑÑ‚ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ñкой ОС, но роутером не видÑÑ‚ÑÑ Ð² br-lan через tcpdump. + При Ñтом еÑли nfqws выполнÑетÑÑ Ð½Ð° Ñамом роутере, обход может работать. badsum нормально уходÑÑ‚ Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ интерфейÑа. +* Пакеты Ñ badseq будут навернÑка отброшены принимающим узлом, но так же и DPI, еÑли он ориентируетÑÑ + на sequence numbers. По умолчанию Ñмещение seq выбираетÑÑ -10000. Практика показала, что некоторые DPI + не пропуÑкают seq вне определенного окна. Однако, такое небольшое Ñмещение может вызвать проблемы + при ÑущеÑтвенной потоковой передаче и потере пакетов. ЕÑли вы иÑпользуете --dpi-desync-any-protocol, + может понадобитÑÑ ÑƒÑтановить badseq increment 0x80000000. Это обеÑпечит надежную гарантию, + что поддельный пакет не вклинитÑÑ Ð² tcp window на Ñервере. Так же было замечено, что badseq ломает логику + некоторых DPI при анализе http, Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ Ð·Ð°Ð²Ð¸Ñание ÑоединениÑ. Причем на тех же DPI TLS Ñ badseq работает нормально. +* TTL казалоÑÑŒ бы - лучший вариант, но он требует индивидуальной наÑтройки под каждого провайдера. + ЕÑли DPI находитÑÑ Ð´Ð°Ð»ÑŒÑˆÐµ локальных Ñайтов провайдера, то вы можете отрезать Ñебе доÑтуп к ним. + Ð¡Ð¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ ÑƒÑугублÑетÑÑ Ð½Ð°Ð»Ð¸Ñ‡Ð¸ÐµÐ¼ ТСПУ на магиÑтралах, что вынуждает делать TTL доÑтаточно выÑоким, ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð²Ð°Ñ + риÑк Ð¿Ñ€Ð¾Ð±Ð¾Ñ Ñ„ÐµÐ¹ÐºÐ° до Ñервера. + Ðеобходим ip exclude list, заполнÑемый вручную. ВмеÑте Ñ ttl можно применÑÑ‚ÑŒ md5sig. Это ничего не иÑпортит, + зато дает неплохой ÑˆÐ°Ð½Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñайтов, до которых "плохой" пакет дойдет по TTL. + ЕÑли не удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ автоматичеÑкое решение, воÑпользуйтеÑÑŒ файлом zapret-hosts-user-exclude.txt. + Ðекоторые Ñтоковые прошивки роутеров фикÑируют иÑходÑщий TTL, без Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñтой опции через них работать не будет. + КÐКИМ СТОИТ ВЫБИРÐТЬ TTL : найдите минимальное значение, при котором обход еще работает. + Это и будет номер хопа вашего DPI. +* hopbyhop отноÑитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к ipv6. ДобавлÑетÑÑ ipv6 extenstion header "hop-by-hop options". + Ð’ варианте hopbyhop2 добавлÑÑŽÑ‚ÑÑ 2 хедера, что ÑвлÑетÑÑ Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸ÐµÐ¼ Ñтандарта и гарантированно отбраÑываетÑÑ + Ñтеком протоколов во вÑех ОС. Один хедер hop-by-hop принимаетÑÑ Ð²Ñеми ОС, однако на некоторых каналах/провайдерах + такие пакеты могут фильтроватьÑÑ Ð¸ не доходить. РаÑчет идет на то, что DPI проанализирует пакет Ñ hop-by-hop, + но он либо не дойдет до адреÑата вÑилу фильтров провайдера, либо будет отброшен Ñервером, потому что хедера два. +* datanoack выÑылает фейки Ñо ÑнÑтым tcp флагом ACK. Сервера такое не принимают, а DPI может принÑÑ‚ÑŒ. + Эта техника может ломать NAT и не вÑегда работает Ñ iptables, еÑли иÑпользуетÑÑ masquerade, даже Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ + ÑиÑтемы (почти вÑегда на роутерах ipv4). Ðа ÑиÑтемах c iptables без masquerade и на nftables работает без + ограничений. ЭкÑпериментально выÑÑнено, что многие провайдерÑкие NAT не отбраÑывают Ñти пакеты, потому + работает даже Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¼ провайдерÑким IP. Ðо linux NAT оно не пройдет, так что за домашним роутером Ñта + техника не Ñработает, но может Ñработать Ñ Ð½ÐµÐ³Ð¾. +* autottl. Суть режима в автоматичеÑком определении TTL, чтобы он почти навернÑка прошел DPI и немного не дошел до + Ñервера. БерутÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ TTL 64,128,255, ÑмотритÑÑ Ð²Ñ…Ð¾Ð´Ñщий пакет + (да, требуетÑÑ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ первый входÑщий пакет на nfqws !). + ВычиÑлÑетÑÑ Ð´Ð»Ð¸Ð½Ð° пути, отнимаетÑÑ delta (1 по умолчанию). ЕÑли TTL вне диапазона (min,max - 3,20 по умолчанию), + то берутÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ min,max, чтобы впиÑатьÑÑ Ð² диапазон. ЕÑли при Ñтом полученный TTL больше длины пути, + то автоматизм не Ñработал и берутÑÑ Ñ„Ð¸ÐºÑированные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ TTL Ð´Ð»Ñ Ð°Ñ‚Ð°ÐºÐ¸. + Техника позволÑет решить вопроÑ, когда вÑÑ Ñеть перегорожена шлагбаумами (DPI, ТСПУ) везде где только можно, + Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¼Ð°Ð³Ð¸Ñтралов. Ðо потенциально может давать Ñбои. + Ðапример, при аÑимметрии входÑщего и иÑходÑщего канала до конкретного Ñервера. + Ðа каких-то провайдерах Ñта техника будет работать неплохо, на других доÑтавит больше проблем, чем пользы. + Где-то может потребоватьÑÑ Ñ‚ÑŽÐ½Ð¸Ð½Ð³ параметров. Лучше иÑпользовать Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ ограничителем. + +Режимы Ð´ÑƒÑ€ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ ÑочетатьÑÑ Ð² любых комбинациÑÑ…. --dpi-desync-fooling берет множеÑтво значений через запÑтую. + +Ð”Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð² fake, rst, rstack поÑле фейка отправлÑем оригинальный пакет. + +Режим disorder делит оригинальный пакет на 2 чаÑти и отправлÑет Ñледующую комбинацию в указанном порÑдке : +1. 2-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета +2. Ð¿Ð¾Ð´Ð´ÐµÐ»ÑŒÐ½Ð°Ñ 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета, поле данных заполнено нулÑми +3. 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета +4. Ð¿Ð¾Ð´Ð´ÐµÐ»ÑŒÐ½Ð°Ñ 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета, поле данных заполнено нулÑми. отÑылка 2-й раз. +Оригинальный пакет дропаетÑÑ Ð²Ñегда. Параметр --dpi-desync-split-pos позволÑет указать байтовую позицию, на которой +проиÑходит разбивка. По умолчанию - 2. ЕÑли Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ длины пакета, Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ñ‹Ð±Ð¸Ñ€Ð°ÐµÑ‚ÑÑ 1. +Этой поÑледовательноÑтью Ð´Ð»Ñ DPI макÑимально уÑложнÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° реконÑтрукции начального ÑообщениÑ, +по которому принимаетÑÑ Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ о блокировке. Ðекоторым DPI хватит и tcp Ñегментов в неправильном порÑдке, +поддельные чаÑти Ñделаны Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ надежноÑти и более Ñложных алгоритмов реконÑтрукции. +Режим disorder2 отключает отправку поддельных чаÑтей. + +Режим split очень похож на disorder, только нет Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ€Ñдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ñегментов : +1. Ð¿Ð¾Ð´Ð´ÐµÐ»ÑŒÐ½Ð°Ñ 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета, поле данных заполнено нулÑми +2. 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета +3. Ð¿Ð¾Ð´Ð´ÐµÐ»ÑŒÐ½Ð°Ñ 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета, поле данных заполнено нулÑми. отÑылка 2-й раз. +4. 2-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета +Режим split2 отключает отправку поддельных чаÑтей. +Он может быть иÑпользован как более быÑÑ‚Ñ€Ð°Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð° --wsize. + +disorder2 и split2 не предполагают отÑылку фейк пакетов, поÑтому опции ttl и fooling неактуальны. + +seqovl добавлÑет в начало первой отÑылаемой чаÑти оригинального пакета (1 чаÑÑ‚ÑŒ Ð´Ð»Ñ split и 2 чаÑÑ‚ÑŒ Ð´Ð»Ñ disorder) +seqovl байт Ñо Ñмещенным в Ð¼Ð¸Ð½ÑƒÑ sequence number на величину seqovl. +Ð’ Ñлучае split2 раÑчет идет на то, что предыдущий отÑыл, еÑли он был, уже попал в Ñокет Ñерверного приложениÑ, +поÑтому Ð½Ð¾Ð²Ð°Ñ Ð¿Ñ€Ð¸ÑˆÐµÐ´ÑˆÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ лишь чаÑтично находитÑÑ Ð² пределах текущего окна (in-window). +Спереди Ñ„ÐµÐ¹ÐºÐ¾Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ отбраÑываетÑÑ, а оÑтавшаÑÑÑ Ñ‡Ð°ÑÑ‚ÑŒ Ñодержит оригинал и начинаетÑÑ Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° window, +поÑтому попадает в Ñокет. +Серверное приложение получает вÑе, что реально отÑылает клиент, отбраÑÑ‹Ð²Ð°Ñ Ñ„ÐµÐ¹ÐºÐ¾Ð²ÑƒÑŽ out-of-window чаÑÑ‚ÑŒ. +Ðо DPI не может Ñтого понÑÑ‚ÑŒ, поÑтому у него проиÑходит sequence деÑинхронизациÑ. + +Ð”Ð»Ñ disorder2 overlap идет на 2-ÑŽ чаÑÑ‚ÑŒ пакета. ОбÑзательно, чтобы seqovl был меньше split_pos, иначе +вÑе отоÑланное будет передано в Ñокет Ñразу же, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñ„ÐµÐ¹Ðº, Ð»Ð¾Ð¼Ð°Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð» прикладного уровнÑ. +При Ñоблюдении Ñтого уÑÐ»Ð¾Ð²Ð¸Ñ 2-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета ÑвлÑетÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñтью in-window, +поÑтому ÑÐµÑ€Ð²ÐµÑ€Ð½Ð°Ñ ÐžÐ¡ принимает ее целиком, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñ„ÐµÐ¹Ðº. Ðо поÑкольку Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ данных из 1 пакета +еще не принÑта, то фейк и реальные данные оÑтаютÑÑ Ð² памÑти Ñдра, не отправлÑÑÑÑŒ в Ñерверное приложение. +Как только приходит 1-Ñ Ñ‡Ð°ÑÑ‚ÑŒ пакета, она перепиÑывает фейковую чаÑÑ‚ÑŒ в памÑти Ñдра. +Ядро получает данные из 1 и 2 чаÑти, поÑтому далее идет отправка в Ñокет приложениÑ. +Таково поведение вÑех unix ОС, кроме solaris - оÑтавлÑÑ‚ÑŒ поÑледние принÑтые данные. +Windows оÑтавлÑет Ñтарые данные, поÑтому disorder Ñ seqovl будет приводить к завиÑаниÑм ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ +при работе Ñ Windows Ñерверами. Solaris практичеÑки мертв, windows Ñерверов очень немного. +Можно иÑпользовать лиÑÑ‚Ñ‹ при необходимоÑти. +Метод позволÑет обойтиÑÑŒ без fooling и TTL. Фейки перемешаны Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¼ данными. +split/disorder вмеÑто split2/disorder2 по-прежнему добавлÑÑŽÑ‚ дополнительные отдельные фейки. + +Режимы деÑинхронизации hopbyhop, destopt и ipfrag1 (не путать Ñ fooling !) отноÑÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к ipv6 и заключаетÑÑ +в добавлении хедера "hop-by-hop options", "destination options" или "fragment" во вÑе пакеты, попадающие под деÑинхронизацию. +ЗдеÑÑŒ надо обÑзательно понимать, что добавление хедера увеличивает размер пакета, потому не может быть применено +к пакетам макÑимального размера. Это имеет меÑто при передаче больших Ñообщений. +Ð’ Ñлучае невозможноÑти отоÑлать пакет дурение будет отменено, пакет будет выÑлан в оригинале. +РаÑчет идет на то, что DPI увидит 0 в поле next header оÑновного заголовка ipv6 и не будет Ñкакать по +extension хедерам в поиÑках транÑпортного хедера. Таким образом не поймет, что Ñто tcp или udp, и пропуÑтит пакет +без анализа. Возможно, какие-то DPI на Ñто купÑÑ‚ÑÑ. +Может ÑочетатьÑÑ Ñ Ð»ÑŽÐ±Ñ‹Ð¼Ð¸ режимами 2-й фазы, кроме варианта "ipfrag1+ipfrag2". +Ðапример, "hopbyhop,split2" означает разбить tcp пакет на 2 Ñегмента, в каждый из них добавить hop-by-hop. +При "hopbyhop,ipfrag2" поÑледовательноÑÑ‚ÑŒ хедеров будет : ipv6,hop-by-hop,fragment,tcp/udp. +Режим "ipfrag1" может Ñрабатывать не вÑегда без Ñпециальной подготовки. См. раздел "IP фрагментациÑ". + +ЕÑÑ‚ÑŒ DPI, которые анализируют ответы от Ñервера, в чаÑтноÑти Ñертификат из ServerHello, где пропиÑаны домены. +Подтверждением доÑтавки ClientHello ÑвлÑетÑÑ ACK пакет от Ñервера Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ ACK sequence, ÑоответÑтвующим длине ClientHello+1. +Ð’ варианте disorder обычно приходит Ñперва чаÑтичное подтверждение (SACK), потом полный ACK. +ЕÑли вмеÑто ACK или SACK идет RST пакет Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ задержкой, то DPI Ð²Ð°Ñ Ð¾Ñ‚Ñекает еще на Ñтапе вашего запроÑа. +ЕÑли RST идет поÑле полного ACK ÑпуÑÑ‚Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÑƒ, равную примерно пингу до Ñервера, +тогда вероÑтно DPI реагирует на ответ Ñервера. +DPI может отÑтать от потока, еÑли ClientHello его удовлетворил и не проверÑÑ‚ÑŒ ServerHello. +Тогда вам повезло. Вариант fake может Ñработать. +ЕÑли же он не отÑтает и упорно проверÑет ServerHello, то можно попробовать заÑтавить Ñервер выÑылать ServerHello чаÑÑ‚Ñми +через параметр --wssize (Ñм. conntrack). +ЕÑли и Ñто не помогает, то Ñделать Ñ Ñтим что-либо врÑд ли возможно без помощи Ñо Ñтороны Ñервера. +Лучшее решение - включить на Ñервере поддержку 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 1:6 -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 1:6 -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 1:6 : +1 - Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ методов деÑинхронизации 0-й фазы и wssize +2 - иногда данные идут в 3-м пакете 3-way handshake +3 - ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð° одного пакета запроÑа +4-6 - на Ñлучай ретранÑмиÑÑии или запроÑа длиной в неÑколько пакетов (TLSClientHello Ñ kyber, например) + +КОМБИÐИРОВÐÐИЕ МЕТОДОВ ДЕСИÐХРОÐИЗÐЦИИ +Ð’ параметре dpi-desync можно указать до 3 режимов через запÑтую. +0 фаза предполагает работу на Ñтапе уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ. Может быть synack или syndata. +Ðа 0 фазу не дейÑтвует фильтр по hostlist. +ПоÑледующие режимы отрабатывают на пакетах Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸. +Режим 1-й фазы может быть fake,rst,rstack. Режим 2-й фазы может быть disorder,disorder2,split,split2,ipfrag2. +Может быть полезно, когда у провайдера Ñтоит не один DPI. + +РЕЖИМ SYNACK +Ð’ документации по geneva Ñто называетÑÑ "TCB turnaround". Попытка ввеÑти DPI в заблуждение отноÑительно +ролей клиента и Ñервера. +!!! ПоÑкольку режим нарушает работу NAT, техника может Ñработать только еÑли между атакующим уÑтройÑтвом +и DPI нет NAT. Ðтака не Ñработает через NAT роутер, но может Ñработать Ñ Ð½ÐµÐ³Ð¾. +Ð”Ð»Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ атаки в linux обÑзательно требуетÑÑ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ñтандартное правило firewall, +дропающее инвалидные пакеты в цепочке OUTPUT. Ðапример : -A OUTPUT -m state --state INVALID -j DROP +Ð’ openwrt можно отключить drop INVALID в OUTPUT и FORWARD через опцию в /etc/config/firewall : + +config zone + option name 'wan' + ......... + option masq_allow_invalid '1' + +К Ñожалению, отключить только в OUTPUT таким образом нельзÑ. Ðо можно Ñделать иначе. ВпиÑать в /etc/firewall.user : + +iptables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT +ip6tables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT + +Лучше делать так, потому что отÑутÑтвие дропа INVALID в FORWARD может привеÑти к нежелательным утечкам пакетов из LAN. +ЕÑли не принÑÑ‚ÑŒ Ñти меры, отÑылка SYN,ACK Ñегмента вызовет ошибку и Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ прервана. +ОÑтальные режимы тоже не Ñработают. ЕÑли поймете, что вам synack не нужен, обÑзательно верните правило дропа INVALID. + +РЕЖИМ SYNDATA +Тут вÑе проÑто. ДобавлÑÑŽÑ‚ÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ в пакет SYN. Ð’Ñе ОС их игнорируют, еÑли не иÑпользуетÑÑ TCP fast open (TFO), +а DPI может воÑпринÑÑ‚ÑŒ, не разобравшиÑÑŒ еÑÑ‚ÑŒ там TFO или нет. +Оригинальные ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ TFO не трогаютÑÑ, поÑкольку Ñто их точно Ñломает. +Без уточнÑющего параметра добавлÑÑŽÑ‚ÑÑ 16 нулевых байтов. + +ВИРТУÐЛЬÐЫЕ ÐœÐШИÐЫ +Изнутри VM от virtualbox и vmware в режиме NAT не работают многие техники пакетной магии nfqws. +Принудительно заменÑетÑÑ ttl, не проходÑÑ‚ фейк пакеты. Ðеобходимо наÑтроить Ñеть в режиме bridge. + +CONNTRACK +nfqws оÑнащен ограниченной реализацией ÑÐ»ÐµÐ¶ÐµÐ½Ð¸Ñ Ð·Ð° ÑоÑтоÑнием tcp Ñоединений (conntrack). +Он включаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ некоторых методов противодейÑÑ‚Ð²Ð¸Ñ DPI. +conntrack ÑпоÑобен Ñледить за фазой ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ : SYN,ESTABLISHED,FIN, количеÑтвом пакетов в каждую Ñторону, +sequence numbers. conntrack ÑпоÑобен "кормитьÑÑ" пакетами в обе или только в одну Ñторону. +Соединение попадает в таблицу при обнаружении пакетов Ñ Ð²Ñ‹Ñтавленными флагами SYN или SYN,ACK. +ПоÑтому еÑли необходим conntrack, в правилах Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ iptables Ñоединение должно идти на nfqws Ñ Ñамого первого +пакета, Ñ…Ð¾Ñ‚Ñ Ð·Ð°Ñ‚ÐµÐ¼ может обрыватьÑÑ Ð¿Ð¾ фильтру connbytes. +Ð”Ð»Ñ UDP инициатором Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð² таблицу ÑвлÑетÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¹ UDP пакет. Он же и определÑет направление потока. +СчитаетÑÑ, что первый UDP пакет иÑходит от клиента к Ñерверу. Далее вÑе пакеты Ñ Ñовпадающими +src_ip,src_port,dst_ip,dst_port ÑчитаютÑÑ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ‰Ð¸Ð¼Ð¸ Ñтому потоку до иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ неактивноÑти. +conntrack - проÑтенький, он не пиÑалÑÑ Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ вÑевозможных атак на Ñоединение, он не проверÑет +пакеты на валидноÑÑ‚ÑŒ sequence numbers или чекÑумму. Его задача - лишь обÑлуживание нужд nfqws, он обычно +кормитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ иÑходÑщим трафиком, потому нечувÑтвителен к подменам Ñо Ñтороны внешней Ñети. +Соединение удалÑетÑÑ Ð¸Ð· таблицы, как только отпадает нужда в Ñлежении за ним или по таймауту неактивноÑти. +СущеÑтвуют отдельные таймауты на каждую фазу ÑоединениÑ. Они могут быть изменены параметром --ctrack-timeouts. + +--wssize позволÑет изменить Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° размер tcp window Ð´Ð»Ñ Ñервера, чтобы он поÑлал Ñледующие ответы разбитыми на чаÑти. +Чтобы Ñто подейÑтвовало на вÑе Ñерверные ОС, необходимо менÑÑ‚ÑŒ window size в каждом иÑходÑщем Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° пакете до отÑылки ÑообщениÑ, +ответ на который должен быть разбит (например, TLS ClientHello). Именно поÑтому и необходим conntrack, чтобы +знать когда надо оÑтановитьÑÑ. ЕÑли не оÑтановитьÑÑ Ð¸ вÑе Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтанавливать низкий wssize, ÑкороÑÑ‚ÑŒ упадет катаÑтрофичеÑки. +Ð’ linux Ñто может быть купировано через connbytes, но в BSD ÑиÑтемах такой возможноÑти нет. +Ð’ Ñлучае http(s) оÑтанавливаемÑÑ Ñразу поÑле отÑылки первого http запроÑа или TLS ClientHello. +ЕÑли вы имеете дело Ñ Ð½Ðµ http(s), то вам потребуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ --wssize-cutoff. Он уÑтанавливает предел, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ дейÑтвие +wssize прекращаетÑÑ. ÐŸÑ€ÐµÑ„Ð¸ÐºÑ d перед номером означает учитывать только пакеты Ñ data payload, Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ s - relative sequence number, +проще Ð³Ð¾Ð²Ð¾Ñ€Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтво переданных клиентом байтов + 1. +ЕÑли проÑкочит пакет Ñ http request или TLS ClientHello, дейÑтвие wssize прекращаетÑÑ Ñразу же, не дожидаÑÑÑŒ wssize-cutoff. +ЕÑли ваш протокол Ñклонен к долгому бездейÑтвию, Ñледует увеличить таймаут фазы ESTABLISHED через параметр --ctrack-timeouts. +Таймаут по умолчанию низкий - вÑего 5 минут. +Ðе забывайте, что nfqws кормитÑÑ Ð¿Ñ€Ð¸Ñ…Ð¾Ð´Ñщими на него пакетами. ЕÑли вы ограничили поÑтупление пакетов через connbytes, +то в таблице могут оÑтатьÑÑ Ð¿Ð¾Ð²Ð¸Ñшие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² фазе ESTABLISHED, которые отвалÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ по таймауту. +Ð”Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾Ñтики ÑоÑтоÑÐ½Ð¸Ñ conntrack пошлите Ñигнал SIGUSR1 процеÑÑу nfqws : killall -SIGUSR1 nfqws. +Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° будет выведена nfqws в stdout. + +Обычно в SYN пакете клиент отÑылает кроме window size еще и TCP extension "scaling factor". +scaling factor предÑтавлÑет из ÑÐµÐ±Ñ Ñтепень двойки, на которую умножаетÑÑ window size : 0=>1, 1=>2, 2=>4, ..., 8=>256, ... +Ð’ параметре wssize scaling factor указываетÑÑ Ñ‡ÐµÑ€ÐµÐ· двоеточие. +Scaling factor может только ÑнижатьÑÑ, увеличение заблокировано, чтобы не допуÑтить превышение размера окна Ñо Ñтороны Ñервера. +Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ñервера к фрагментации ServerHello, чтобы избежать проÑекание имени Ñервера из Ñертификата Ñервера на DPI, +лучше вÑего иÑпользовать --wssize=1:6 . ОÑновное правило - делать scale_factor как можно больше, чтобы поÑле воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ +window size итоговый размер окна Ñтал макÑимально возможным. ЕÑли вы Ñделаете 64:0, будет очень медленно. +С другой Ñтороны Ð½ÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð¿ÑƒÑтить, чтобы ответ Ñервера Ñтал доÑтаточно большим, чтобы DPI нашел там иÑкомое. + +--wssize не работает в профилÑÑ… Ñ Ñ…Ð¾ÑтлиÑтами, поÑкольку он дейÑтвует Ñ Ñамого начала ÑоединениÑ, когда еще Ð½ÐµÐ»ÑŒÐ·Ñ +принÑÑ‚ÑŒ решение о попадании в лиÑÑ‚. Однако, профиль Ñ auto hostlist может Ñодержать --wssize. +--wssize может замедлÑÑ‚ÑŒ ÑкороÑÑ‚ÑŒ и/или увеличивать Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° Ñайтов, поÑтому еÑли еÑÑ‚ÑŒ другие работающие ÑпоÑобы +обхода DPI, лучше применÑÑ‚ÑŒ их. + +--dpi-desync-cutoff позволÑет задать предел, при доÑтижении которого прекращаетÑÑ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ dpi-desync. +ДоÑтупны префикÑÑ‹ n,d,s по аналогии Ñ --wssize-cutoff. +Полезно ÑовмеÑтно Ñ --dpi-desync-any-protocol=1. +Ðа Ñклонных к бездейÑтвию ÑоединениÑÑ… Ñледует изменить таймауты conntrack. +ЕÑли Ñоединение выпало из conntrack и задана Ð¾Ð¿Ñ†Ð¸Ñ --dpi-desync-cutoff, dpi desync применÑÑ‚ÑŒÑÑ Ð½Ðµ будет. + +РЕÐССЕМБЛИÐГ +nfqws поддерживает реаÑÑемблинг некоторых видов запроÑов. +Ðа текущий момент Ñто TLS и QUIC ClientHello. Они бывает длинными, еÑли в chrome включить поÑÑ‚-квантовую +криптографию tls-kyber, и занимают как правило 2 или 3 пакета. kyber включен по умолчанию, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ chromium 124. +chrome рандомизирует фингерпринт TLS. SNI может оказатьÑÑ ÐºÐ°Ðº в начале, так и в конце, то еÑÑ‚ÑŒ +попаÑÑ‚ÑŒ любой пакет. stateful DPI обычно реаÑÑемблирует Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñ†ÐµÐ»Ð¸ÐºÐ¾Ð¼, и только потом +принимает решение о блокировке. +Ð’ Ñлучае Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ TLS или QUIC пакета Ñ Ñ‡Ð°Ñтичным ClientHello начинаетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑ Ñборки, а пакеты +задерживаютÑÑ Ð¸ не отÑылаютÑÑ Ð´Ð¾ ее окончаниÑ. По окончании Ñборки пакеты проходит через деÑинхронизацию +на оÑновании полноÑтью Ñобранного ClientHello. +При любой ошибке в процеÑÑе Ñборки задержанные пакеты немедленно отÑылаютÑÑ Ð² Ñеть, а деÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÐ½ÑетÑÑ. + +ЕÑÑ‚ÑŒ ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° вÑех вариантов tcp Ñплита Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ñегментного TLS. +ЕÑли указать позицию Ñплита больше длины первого пакета или иÑпользовать --dpi-desync-split-tls, +то разбивка проиÑходит не обÑзательно первого пакета, а того, на который пришлаÑÑŒ Ð¸Ñ‚Ð¾Ð³Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ. +ЕÑли, допуÑтим, клиент поÑлал TLS ClientHello длиной 2000, а SNI начинаетÑÑ Ñ 1700, +и заданы опции fake,split2, то перед первым пакетом идет fake, затем первый пакет в оригинале, +а поÑледний пакет разбиваетÑÑ Ð½Ð° 2 Ñегмента. Ð’ итоге имеем фейк в начале и 3 реальных Ñегмента. + +ПОДДЕРЖКРUDP +Ðтаки на udp более ограничены в возможноÑÑ‚ÑÑ…. udp Ð½ÐµÐ»ÑŒÐ·Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ иначе, чем на уровне ip. +Ð”Ð»Ñ UDP дейÑтвуют только режимы деÑинхронизации fake,hopbyhop,destopt,ipfrag1,ipfrag2,udplen,tamper. +Возможно Ñочетание fake,hopbyhop,destopt Ñ ipfrag2, fake,fakeknown Ñ udplen и tamper. +udplen увеличивает размер udp пакета на указанное в --dpi-desync-udplen-increment количеÑтво байтов. +Паддинг заполнÑетÑÑ Ð½ÑƒÐ»Ñми по умолчанию, но можно задать Ñвой паттерн. +Предназначено Ð´Ð»Ñ Ð¾Ð±Ð¼Ð°Ð½Ð° DPI, ориентирующегоÑÑ Ð½Ð° размеры пакетов. +Может Ñработать, еÑли пользовательÑкий протокол не привÑзан жеÑтко к размеру udp пейлоада. +Режим tamper означает модификацию пакетов извеÑтных протоколов оÑобенным Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð° образом. +Ðа текущий момент работает только Ñ DHT. +ПоддерживаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ пакетов QUIC Initial Ñ Ñ€Ð°Ñшифровкой Ñодержимого и имени хоÑта, то еÑÑ‚ÑŒ параметр +--hostlist будет работать. +ОпределÑÑŽÑ‚ÑÑ Ð¿Ð°ÐºÐµÑ‚Ñ‹ wireguard handshake initiation и DHT (начинаетÑÑ Ñ 'd1', кончаетÑÑ 'e'). +Ð”Ð»Ñ Ð´ÐµÑинхронизации других протоколов обÑзательно указывать --dpi-desync-any-protocol. +Реализован conntrack Ð´Ð»Ñ udp. Можно пользоватьÑÑ --dpi-desync-cutoff. Таймаут conntrack Ð´Ð»Ñ udp +можно изменить 4-м параметром в --ctrack-timeouts. +Ðтака fake полезна только Ð´Ð»Ñ stateful DPI, она беÑполезна Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° на уровне отдельных пакетов. +По умолчанию fake наполнение - 64 нулÑ. Можно указать файл в --dpi-desync-fake-unknown-udp. + +IP ФРÐГМЕÐТÐЦИЯ +Ð¡Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñеть практичеÑки не пропуÑкает фрагментированные tcp на уровне ip. +Ðа udp Ñ Ñтим дело получше, поÑкольку некоторые udp протоколы могут опиратьÑÑ Ð½Ð° Ñтот механизм (IKE Ñтарых верÑий). +Однако, кое-где бывает, что режут и фрагментированный udp. +Роутеры на базе linux могут Ñамопроизвольно Ñобирать или перефрагментировать пакеты. +ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ð¸ задаетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ Ð´Ð»Ñ tcp и udp. По умолчанию 24 и 8 ÑоответÑтвенно, должна быть кратна 8. +Смещение ÑчитаетÑÑ Ñ Ñ‚Ñ€Ð°Ð½Ñпортного заголовка. + +СущеÑтвует Ñ€Ñд моментов вокруг работы Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ на Linux, без Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… может ничего не получитьÑÑ. + +ipv4 : Linux дает отÑылать ipv4 фрагменты, но Ñтандартные наÑтройки iptables в цепочке OUTPUT могут вызывать ошибки отправки. + +ipv6 : Ðет ÑпоÑоба Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð³Ð°Ñ€Ð°Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾ отоÑлать фрагменты без дефрагментации в conntrack. +Ðа разных ÑиÑтемах получаетÑÑ Ð¿Ð¾-разному. Где-то нормально уходÑÑ‚, где-то пакеты дефрагментируютÑÑ. +Ð”Ð»Ñ Ñдер <4.16 похоже, что нет иного ÑпоÑоба решить Ñту проблему, кроме как выгрузить модуль nf_conntrack, +который подтÑгивает завиÑимоÑÑ‚ÑŒ nf_defrag_ipv6. Он то как раз и выполнÑет дефрагментацию. +Ð”Ð»Ñ Ñдер 4.16+ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ñ‡ÑƒÑ‚ÑŒ лучше. Из дефрагментации иÑключаютÑÑ Ð¿Ð°ÐºÐµÑ‚Ñ‹ в ÑоÑтоÑнии NOTRACK. +Чтобы не загромождать опиÑание, Ñмотрите пример Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñтой проблемы в blockcheck.sh. + +Иногда требуетÑÑ Ð¿Ð¾Ð´Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ модуль ip6table_raw Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ raw_before_defrag=1. +Ð’ openwrt параметры модулей указываютÑÑ Ñ‡ÐµÑ€ÐµÐ· пробел поÑле их названий в файлах /etc/modules.d. +Ð’ традиционных ÑиÑтемах поÑмотрите иÑпользуетÑÑ Ð»Ð¸ iptables-legacy или iptables-nft. ЕÑли legacy, то нужно Ñоздать файл +/etc/modprobe.d/ip6table_raw.conf Ñ Ñодержимым : +options ip6table_raw raw_before_defrag=1 +Ð’ некоторых традиционных диÑтрибутивах можно изменить текущий ip6tables через : update-alternatives --config ip6tables +ЕÑли вы хотите оÑтаватьÑÑ Ð½Ð° iptables-nft, вам придетÑÑ Ð¿ÐµÑ€ÐµÑобрать патченную верÑию. Патч ÑовÑем небольшой. +Ð’ nft.c найдите фрагмент : + { + .name = "PREROUTING", + .type = "filter", + .prio = -300, /* NF_IP_PRI_RAW */ + .hook = NF_INET_PRE_ROUTING, + }, + { + .name = "OUTPUT", + .type = "filter", + .prio = -300, /* NF_IP_PRI_RAW */ + .hook = NF_INET_LOCAL_OUT, + }, +и замените везде -300 на -450. + +Это нужно Ñделать вручную, никакой автоматики в blockcheck.sh нет. + +Либо можно раз и навÑегда избавитьÑÑ Ð¾Ñ‚ Ñтой проблемы, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ nftables. Там можно Ñоздать netfilter hook +Ñ Ð»ÑŽÐ±Ñ‹Ð¼ приоритетом. ИÑпользуйте приоритет -401 и ниже. + +При иÑпользовании iptables и NAT, похоже, что нет ÑпоÑоба прицепить обработчик очереди поÑле NAT. +Пакет попадает в nfqws Ñ source адреÑом внутренней Ñети, затем фрагментируетÑÑ Ð¸ уже не обрабатываетÑÑ NAT. +Так и уходит во внешюю Ñеть Ñ src ip 192.168.x.x. Следовательно, метод не Ñрабатывает. +Видимо единÑтвенный рабочий метод - отказатьÑÑ Ð¾Ñ‚ iptables и иÑпользовать nftables. +Хук должен быть Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ 101 или выше. + +ÐœÐОЖЕСТВЕÐÐЫЕ СТРÐТЕГИИ +nfqws ÑпоÑобен по-разному реагировать на различные запроÑÑ‹ и применÑÑ‚ÑŒ разные Ñтратегии дурениÑ. +Это реализовано поÑредÑтвом поддержки множеÑтва профилей дурениÑ. +Профили разделÑÑŽÑ‚ÑÑ Ð² командной Ñтроке параметром --new. Первый профиль ÑоздаетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки. +Ð”Ð»Ñ Ð½ÐµÐ³Ð¾ не нужно --new. Каждый профиль имеет фильтр. По умолчанию он пуÑÑ‚, то еÑÑ‚ÑŒ профиль удовлетворÑет +любым уÑловиÑм. +Фильтр может Ñодержать жеÑткие параметры : верÑÐ¸Ñ ip протокола или порты tcp/udp. +Они вÑегда однозначно идентифицируютÑÑ Ð´Ð°Ð¶Ðµ на нулевой фазе деÑинхронизации, когда еще хоÑÑ‚ неизвеÑтен. +Ð’ качеÑтве фильтра могут выÑтупать и хоÑÑ‚-лиÑÑ‚Ñ‹. Они могут ÑочетатьÑÑ Ñ Ð¶ÐµÑткими параметрами. +При поÑтуплении запроÑа идет проверка профилей в порÑдке от первого до поÑледнего до +доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð¼. +ЖеÑткие параметры фильтра ÑверÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¼Ð¸. При неÑовпадении идет Ñразу же переход к Ñледующему профилю. +ЕÑли какой-то профиль удовлетворÑет жеÑткому фильтру и Ñодержит авто-хоÑтлиÑÑ‚, он выбираетÑÑ Ñразу. +ЕÑли профиль удовлетворÑет жеÑткому фильтру, Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ задан хоÑтлиÑÑ‚, и у Ð½Ð°Ñ ÐµÑ‰Ðµ нет имени хоÑта, +идет переход к Ñледующему профилю. Ð’ противном Ñлучае идет проверка по хоÑтлиÑтам Ñтого профилÑ. +ЕÑли Ð¸Ð¼Ñ Ñ…Ð¾Ñта удовлетворÑет лиÑтам, выбираетÑÑ Ñтот профиль. Иначе идет переход к Ñледующему. +Может так ÑлучитьÑÑ, что до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ хоÑта Ñоединение идет по одному профилю, а при получении +хоÑта профиль менÑетÑÑ Ð½Ð° лету. ПоÑтому еÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ параметры Ð´ÑƒÑ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ фазы, тщательно +продумывайте что может произойти при переключении Ñтратегии. Смотрите debug log, чтобы лучше +понÑÑ‚ÑŒ что делает nfqws. +ÐÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»ÐµÐ¹ идет Ñ 1 до N. ПоÑледним в цепочке ÑоздаетÑÑ Ð¿ÑƒÑтой профиль Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ 0. +Он иÑпользуетÑÑ, когда никакие уÑÐ»Ð¾Ð²Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð² не Ñовпали. + +Ð’ÐЖÐО : множеÑтвенные Ñтратегии ÑоздавалиÑÑŒ только Ð´Ð»Ñ Ñлучаев, когда невозможно обьединить +имеющиеÑÑ Ñтратегии Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… реÑурÑов. Копирование Ñтратегий из blockcheck Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñайтов +во множеÑтво профилей без Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÐºÐ°Ðº они работают приведет к нагромождению параметров, которые вÑе равно +не покроют вÑе возможные заблокированные реÑурÑÑ‹. Ð’Ñ‹ только увÑзните в Ñтой каше. + + +tpws +----- + +tpws - Ñто transparent proxy. + --debug=0|1|2|syslog|@ ; 0,1,2 = логирование на коÑоль : 0=тихо, 1(default)=подробно, 2=отладка. + --debug-level=0|1|2 ; указать уровень Ð»Ð¾Ð³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ syslog и @ + --daemon ; демонизировать прогу + --pidfile= ; Ñохранить PID в файл + --user= ; менÑÑ‚ÑŒ uid процеÑÑа + --uid=uid[:gid] ; менÑÑ‚ÑŒ uid процеÑÑа + --bind-addr ; на каком адреÑе Ñлушать. может быть ipv4 или ipv6 Ð°Ð´Ñ€ÐµÑ + ; еÑли указан ipv6 link local, то требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ он интерфейÑа : fe80::1%br-lan + --bind-linklocal=no|unwanted|prefer|force + ; no : биндатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на global ipv6 + ; unwanted (default) : предпочтительно global, еÑли нет - LL + ; prefer : предпочтительно LL, еÑли нет - global + ; force : биндатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на LL + --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=unwanted : ÑоглаÑитьÑÑ Ð½Ð° LL поÑле N Ñекунд + ; --bind-linklocal=prefer : ÑоглаÑитьÑÑ Ð½Ð° global address поÑле N Ñекунд + --bind-wait-only ; подождать вÑе бинды и выйти. результат 0 в Ñлучае уÑпеха, иначе не 0. + --connect-bind-addr ; Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ адреÑа подключатьÑÑ Ð²Ð¾ внешнюю Ñеть. может быть ipv4 или ipv6 Ð°Ð´Ñ€ÐµÑ + ; еÑли указан ipv6 link local, то требуетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ он интерфейÑа : fe80::1%br-lan + ; Ð¾Ð¿Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ повторÑÑ‚ÑŒÑÑ Ð´Ð»Ñ v4 и v6 адреÑов + ; Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ðµ отменÑет правил маршрутизации ! выбор интерфейÑа определÑетÑÑ Ð»Ð¸ÑˆÑŒ правилами маршрутизации, кроме ÑÐ»ÑƒÑ‡Ð°Ñ v6 link local. + --socks ; вмеÑто прозрачного прокÑи реализовать socks4/5 proxy + --no-resolve ; запретить реÑолвинг имен через socks5 + --resolve-threads ; количеÑтво потоков реÑолвера + --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 + --nosplice ; не иÑпользовать splice на linux ÑиÑтемах + --skip-nodelay ; не уÑтанавливать в иÑходÑщих ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ TCP_NODELAY. неÑовмеÑтимо Ñо split. + --local-tcp-user-timeout= ; таймаут Ñоединений client-proxy (по умолчанию : 10 Ñек, 0 = оÑтавить ÑиÑтемное значение) + --remote-tcp-user-timeout= ; таймаут Ñоединений proxy-target (по умолчанию : 20 Ñек, 0 = оÑтавить ÑиÑтемное значение) + + --split-http-req=method|host ; ÑпоÑоб Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ http запроÑов на Ñегменты : около метода (GET,POST) или около заголовка Host + --split-pos= ; делить вÑе поÑылы на Ñегменты в указанной позиции. единÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ, Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð°Ñ Ð½Ð° не-http. при указании split-http-req он имеет преимущеÑтво на http. + --split-any-protocol ; применÑÑ‚ÑŒ split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello + --disorder[=http|tls] ; путем манипулÑций Ñ Ñокетом вынуждает отправлÑÑ‚ÑŒ первым второй Ñегмент разделенного запроÑа + --oob[=http|tls] ; отправить байт out-of-band data (OOB) в конце первой чаÑти Ñплита + --oob-data=|0xHEX ; переопределить байт OOB. по умолчанию 0x00. + --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 + --tlsrec=sni|sniext ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 Ñимволами hostname в SNI или между байтами длины SNI extension. ЕÑли SNI нет - отмена. + --tlsrec-pos= ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, еÑли длина Ñлишком Ð¼ÐµÐ»ÐºÐ°Ñ - на позиции 1. + --mss= ; уÑтановить MSS Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð°. может заÑтавить Ñервер разбивать ответы, но ÑущеÑтвенно Ñнижает ÑкороÑÑ‚ÑŒ + --mss-pf=[~]port1[-port2] ; применÑÑ‚ÑŒ MSS только к портам назначениÑ, подпадающим под фильтр. ~ означает инверÑию + --tamper-start=[n] ; начинать дурение только Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ байтовой позиции или номера блока иÑходÑшего потока (ÑчитаетÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° принÑтого блока) + --tamper-cutoff=[n] ; закончить дурение на указанной байтовой позиции или номере блока иÑходÑщего потока (ÑчитаетÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° принÑтого блока) + --hostlist= ; дейÑтвовать только над доменами, входÑщими в ÑпиÑок из filename. поддомены автоматичеÑки учитываютÑÑ. + ; в файле должен быть хоÑÑ‚ на каждой Ñтроке. + ; ÑпиÑок читаетÑÑ 1 раз при Ñтарте и хранитÑÑ Ð² памÑти в виде иерархичеÑкой Ñтруктуры Ð´Ð»Ñ Ð±Ñ‹Ñтрого поиÑка. + ; по Ñигналу HUP ÑпиÑок будет перечитан при Ñледующем принÑтом Ñоединении + ; ÑпиÑок может быть запакован в gzip. формат автоматичеÑки раÑпознаетÑÑ Ð¸ разжимаетÑÑ + ; ÑпиÑков может быть множеÑтво, они объединÑÑŽÑ‚ÑÑ. пуÑтой общий лиÑÑ‚ = его отÑутÑтвие + ; хоÑÑ‚Ñ‹ извлекаютÑÑ Ð¸Ð· Host: хедера обычных http запроÑов и из SNI в TLS ClientHello. + --hostlist-exclude= ; не применÑÑ‚ÑŒ дурение к доменам из лиÑта. может быть множеÑтво лиÑтов, они объединÑÑŽÑ‚ÑÑ + --hostlist-auto= ; обнаруживать автоматичеÑки блокировки и заполнÑÑ‚ÑŒ автоматичеÑкий hostlist (требует Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ñщего трафика) + --hostlist-auto-fail-threshold= ; Ñколько раз нужно обнаружить Ñитуацию, похожую на блокировку, чтобы добавить хоÑÑ‚ в лиÑÑ‚ (по умолчанию: 3) + --hostlist-auto-fail-time= ; вÑе Ñти Ñитуации должны быть в пределах указанного количеÑтва Ñекунд (по умолчанию: 60) + --hostlist-auto-debug= ; лог положительных решений по autohostlist. позволÑет разобратьÑÑ Ð¿Ð¾Ñ‡ÐµÐ¼Ñƒ там поÑвлÑÑŽÑ‚ÑÑ Ñ…Ð¾ÑÑ‚Ñ‹. + --new ; начало новой Ñтратегии + --filter-l3=ipv4|ipv6 ; фильтр верÑии ip Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтратегии + --filter-tcp=[~]port1[-port2] ; фильтр портов tcp Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтратегии. ~ означает инверÑию. + + +--debug позволÑет выводить подробный лог дейÑтвий на конÑоль, в syslog или в файл. +Может быть важен порÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñ†Ð¸Ð¹. --debug лучше вÑего указывать в Ñамом начале. +Опции анализируютÑÑ Ð¿Ð¾Ñледовательно. ЕÑли ошибка будет при проверке опции, а до анализа --debug еще дело не дошло, +то ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ будут выведены в файл или syslog. +--debug=0|1|2 позволÑÑŽÑ‚ Ñразу в одном параметре включить логирование на конÑоль и указать уровень. +Сохранено Ð´Ð»Ñ ÑовмеÑтимоÑти Ñ Ð±Ð¾Ð»ÐµÐµ Ñтарыми верÑиÑми. Ð”Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° ÑƒÑ€Ð¾Ð²Ð½Ñ Ð² режиме syslog или file иÑпользуйте +отдельный параметр --debug-level. ЕÑли в Ñтих режимах --debug не указывать уровень через --debug-level, то +автоматичеÑки назначаетÑÑ ÑƒÑ€Ð¾Ð²ÐµÐ½ÑŒ 1. +При логировании в файл процеÑÑ Ð½Ðµ держит файл открытым. Ради каждой запиÑи файл открываетÑÑ Ð¸ потом закрываетÑÑ. +Так что файл можно удалить в любой момент, и он будет Ñоздан заново при первом же Ñообщении в лог. +Ðо имейте в виду, что еÑли вы запуÑкаете процеÑÑ Ð¿Ð¾Ð´ root, то будет Ñменен UID на не-root. +Ð’ начале на лог файл менÑетÑÑ owner, иначе запиÑÑŒ будет невозможна. ЕÑли вы потом удалите файл, +и у процеÑÑа не будет прав на Ñоздание файла в его директории, лог больше не будет веÑтиÑÑŒ. +ВмеÑто ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑƒÑ‡ÑˆÐµ иÑпользовать truncate. +Ð’ шелле Ñто можно Ñделать через команду ": >filename" + +Параметры манипулÑции могут ÑочетатьÑÑ Ð² любых комбинациÑÑ…. + +Ð’ Ñлучае 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. +Выбор режима иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ link local ipv6 адреÑов (fe80::/8) : +--bind-iface6 --bind-linklocal=no : Ñначала приватный Ð°Ð´Ñ€ÐµÑ fc00::/7, затем глобальный Ð°Ð´Ñ€ÐµÑ +--bind-iface6 --bind-linklocal=unwanted : Ñначала приватный Ð°Ð´Ñ€ÐµÑ fc00::/7, затем глобальный адреÑ, затем link local. +--bind-iface6 --bind-linklocal=prefer : Ñначала link local, затем приватный Ð°Ð´Ñ€ÐµÑ fc00::/7, затем глобальный адреÑ. +--bind-iface6 --bind-linklocal=force : только link local +ЕÑли не указано ни одного бинда, то ÑоздаетÑÑ Ð±Ð¸Ð½Ð´ по умолчанию на вÑе адреÑа вÑех интерфейÑов. +Ð”Ð»Ñ Ð±Ð¸Ð½Ð´Ð° на конкретный link-local address делаем так : --bind-iface6=fe80::aaaa:bbbb:cccc:dddd%iface-name +Параметры --bind-wait* могут помочь в ÑитуациÑÑ…, когда нужно взÑÑ‚ÑŒ IP Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа, но его еще нет, он не поднÑÑ‚ +или не Ñконфигурирован. +Ð’ разных ÑиÑтемах ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ifup ловÑÑ‚ÑÑ Ð¿Ð¾-разному и не гарантируют, что Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÑƒÐ¶Ðµ получил IP Ð°Ð´Ñ€ÐµÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð³Ð¾ типа. +Ð’ общем Ñлучае не ÑущеÑтвует единого механизма повеÑитьÑÑ Ð½Ð° Ñобытие типа "на интерфейÑе X поÑвилÑÑ link local address". +Ð”Ð»Ñ Ð±Ð¸Ð½Ð´Ð° на извеÑтный ip, когда еще Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð½Ðµ Ñконфигурирован, нужно делать так : --bind-addr=192.168.5.3 --bind-wait-ip=20 +Ð’ режиме transparent бинд возможен на любой неÑущеÑтвующий адреÑ, в режиме socks - только на ÑущеÑтвующий. + +Параметры 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 поддерживает Ñту возможноÑÑ‚ÑŒ аÑинхронно, не Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑинг других Ñоединений, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ +многопоточный пул реÑолверов. КоличеÑтво потоков определÑетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки в завиÑимоÑти от "--maxconn", +но можно задать и вручную через параметр "--resolver-threads". +Ð—Ð°Ð¿Ñ€Ð¾Ñ Ðº socks выÑтавлÑетÑÑ Ð½Ð° паузу, пока домен не будет преобразован в ip Ð°Ð´Ñ€ÐµÑ Ð² одном из потоков +реÑолвера. Ожидание может быть более длинным, еÑли вÑе потоки занÑÑ‚Ñ‹. +ЕÑли задан параметр "--no-resolve", то Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ именам хоÑтов запрещаютÑÑ, а пул реÑолверов не ÑоздаетÑÑ. +Тем Ñамым ÑкономÑÑ‚ÑÑ Ñ€ÐµÑурÑÑ‹. + +Параметр --hostpad= добавлÑет паддинг-хедеров перед Host: на указанное количеÑтво байтов. +ЕÑли размер Ñлишком большой, то идет разбивка на разные хедеры по 2K. +Общий буфер приема http запроÑа - 64K, больший паддинг не поддерживаетÑÑ, да и http Ñервера +такое уже не принимают. +Полезно против DPI, выполнÑющих реаÑÑемблинг TCP Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ð¼ буфером. +ЕÑли техника работает, то поÑле некоторого количеÑтва bytes http Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð°Ñ‡Ð½ÐµÑ‚ проходить до Ñайта. +ЕÑли при Ñтом критичеÑкий размер padding около MTU, значит Ñкорее вÑего DPI не выполнÑет реаÑÑемблинг пакетов, и лучше будет иÑпользовать обычные опции --split-… +ЕÑли вÑе же реаÑÑемблинг выполнÑетÑÑ, то критичеÑкий размер будет около размера буфера DPI. Он может быть 4K или 8K, возможны и другие значениÑ. + +--disorder - Ñто попытка Ñимулировать режим disorder2 nfqws, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¾ÑобенноÑти ОС по реализации stream Ñокетов. +Однако, в отличие от nfqws, здеÑÑŒ не требуютÑÑ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð½Ñ‹Ðµ привилегии. +Реализовано Ñто Ñледующим образом. У Ñокета еÑÑ‚ÑŒ возможноÑÑ‚ÑŒ выÑтавить TTL. Ð’Ñе пакеты будут отправлÑÑ‚ÑŒÑÑ Ñ Ð½Ð¸Ð¼. +Перед отправкой первого Ñегмента Ñтавим TTL=1. Пакет будет дропнут на первом же роутере, он не дойдет ни до DPI, ни до Ñервера. +Затем возвращаем TTL в значение по умолчанию. ОС отÑылает второй Ñегмент, и он уже доходит до Ñервера. +Сервер возвращает SACK, потому что не получил первый куÑок, и ОС его отправлÑет повторно, но здеÑÑŒ уже мы ничего не делаем. +Этот режим работает как ожидаетÑÑ Ð½Ð° Linux и MacOS. Однако, на FreeBSD и OpenBSD он работает не так хорошо. +Ядро Ñтих ОС отÑылает ретранÑмиÑÑию в виде полного пакета. Потому выходит, что до Ñервера идет Ñначала второй куÑок, +а потом полный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð±ÐµÐ· Ñплита. Ðа него может отреагировать DPI штатным образом. +--disorder ÑвлÑетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ флагом к любому Ñплиту. Сам по Ñебе он не делает ничего. + +--tlsrec и --tlsrec-pos позволÑÑŽÑ‚ внутри одного tcp Ñегмента разрезать TLS ClientHello на 2 TLS records. +--tlsrec=sni режет между 1 и 2 Ñимволами hostname в SNI, Ð´ÐµÐ»Ð°Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ бинарный поиÑк паттерна без анализа +Ñтруктуры данных. Ð’ Ñлучае отÑутÑÑ‚Ð²Ð¸Ñ SNI разбиение отменÑетÑÑ. +--tlsrec-pos режет на указанной позиции. ЕÑли длина блока данных TLS меньше указанной позиции, режем на позиции 1. +Параметр ÑочетаетÑÑ Ñ --split-pos. Ð’ Ñтом Ñлучае проиÑходит Ñначала разделение на уровне TLS record layer, потом на уровне TCP. +Ð¡Ð°Ð¼Ð°Ñ Ð¸Ð·Ð¾Ñ‰Ñ€Ñ‘Ð½Ð½Ð°Ñ Ð°Ñ‚Ð°ÐºÐ° --tlsrec, --split-pos и --disorder вмеÑте. +--tlsrec ломает значительное количеÑтво Ñайтов. Криптобиблиотеки (openssl, ...) на оконечных http Ñерверах +без проблем принимают разделенные tls Ñегменты, но мидлбокÑÑ‹ - не вÑегда. К мидлбокÑам можно отнеÑти CDN +или ÑиÑтемы ddos-защиты. ПоÑтому применение --tlsrec без ограничителей врÑд ли целеÑообразно. +Ð’ РФ --tlsrec обычно не работает Ñ TLS 1.2, потому что цензор парÑит Ñертификат Ñервера из ServerHello. +Работает только Ñ TLS 1.3, поÑкольку там Ñта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑˆÐ¸Ñ„Ñ€ÑƒÐµÑ‚ÑÑ. +Впрочем, ÑÐµÐ¹Ñ‡Ð°Ñ Ñайтов, не поддерживающих TLS 1.3, оÑталоÑÑŒ немного. + +--mss уÑтанавливает опцию Ñокета TCP_MAXSEG. Клиент выдает Ñто значение в tcp опциÑÑ… SYN пакета. +Сервер в ответ в SYN,ACK выдает Ñвой MSS. Ðа практике Ñервера обычно Ñнижают размеры отÑылаемых ими пакетов, но они +вÑе равно не впиÑываютÑÑ Ð² низкий MSS, указанный клиентом. Обычно чем больше указал клиент, тем больше +шлет Ñервер. Ðа TLS 1.2 еÑли Ñервер разбил Ð·Ð°Ð±Ñ€Ð¾Ñ Ñ‚Ð°Ðº, чтобы домен из Ñертификата не попал в первый пакет, +Ñто может обмануть DPI, Ñекущий ответ Ñервера. +Схема может значительно Ñнизить ÑкороÑÑ‚ÑŒ и Ñработать не на вÑех Ñайтах. +С фильтром по hostlist ÑовмеÑтимо только в режиме socks при включенном удаленном реÑолвинге хоÑтов. +(firefox network.proxy.socks_remote_dns). Это единÑтвенный вариант, когда tpws может узнать Ð¸Ð¼Ñ Ñ…Ð¾Ñта +еще на Ñтапе уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ. +ПрименÑÑ Ð´Ð°Ð½Ð½ÑƒÑŽ опцию к Ñайтам TLS1.3, еÑли броузер тоже поддерживает TLS1.3, то вы делаете только хуже. +Ðо нет ÑпоÑоба автоматичеÑки узнать когда надо применÑÑ‚ÑŒ, когда нет, поÑкольку MSS идет только в +3-way handshake еще до обмена данными, а верÑию TLS можно узнать только по ответу Ñервера, который +может привеÑти к реакции DPI. +ИÑпользовать только когда нет ничего лучше или Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… реÑурÑов. +Ð”Ð»Ñ http иÑпользовать ÑмыÑла нет, поÑтому заводите отдельный desync profile Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð¼ по порту 443. +Работает только на linux, не работает на BSD и MacOS. + +--skip-nodelay может быть полезен, чтобы привеÑти MTU к MTU ÑиÑтемы, на которой работает tpws. +Это может быть полезно Ð´Ð»Ñ ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°ÐºÑ‚Ð° иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ VPN. Пониженный MTU - 1 из ÑпоÑобов Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ +подозрительного подключениÑ. С tcp proxy ваши ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ð¼Ñ‹ от тех, что Ñделал бы Ñам шлюз. + +--local-tcp-user-timeout и --remote-tcp-user-timeout уÑтанавливают значение таймаута в Ñекундах +Ð´Ð»Ñ Ñоединений клиент-прокÑи и прокÑи-Ñервер. Этот таймаут ÑоответÑтвует опции Ñокета linux +TCP_USER_TIMEOUT. Под таймаутом подразумеваетÑÑ Ð²Ñ€ÐµÐ¼Ñ, в течение которого буферизированные данные +не переданы или на переданные данные не получено подтверждение (ACK) от другой Ñтороны. +Этот таймаут никак не каÑаетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ отÑутÑÑ‚Ð²Ð¸Ñ ÐºÐ°ÐºÐ¾Ð¹-либо передачи через Ñокет лишь потому, +что данных Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ нет. Полезно Ð´Ð»Ñ ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ð´Ð²Ð¸Ñших Ñоединений. +ПоддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на Linux и MacOS. + +ÐœÐОЖЕСТВЕÐÐЫЕ СТРÐТЕГИИ +Работают аналогично nfqws, кроме некоторых моментов. +Ðет параметра --filter-udp, поÑкольку tpws udp не поддерживает. +Методы нулевой фазы (--mss) могут работать по хоÑтлиÑту в одном единÑтвенном Ñлучае : +еÑли иÑпользуетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ socks и удаленный реÑолвинг хоÑтов через прокÑи. +То еÑÑ‚ÑŒ работоÑпоÑобноÑÑ‚ÑŒ вашей наÑтройки в одном и том же режиме может завиÑеть от того, +применÑет ли клиент удаленный реÑолвинг. Это может быть неочевидно. +Ð’ одной программе работает, в другой - нет. +ЕÑли вы иÑпользуете профиль Ñ Ñ…Ð¾ÑтлиÑтом , и вам нужен mss, укажите mss в профиле Ñ Ñ…Ð¾ÑтлиÑтом, +Ñоздайте еще один профиль без хоÑтлиÑта, еÑли его еще нет, и в нем еще раз укажите mss. +Тогда при любом раÑкладе будет выполнÑÑ‚ÑŒÑÑ mss. +ИÑпользуйте `curl --socks5` и `curl --socks5-hostname` Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ вашей Ñтратегии. +Смотрите вывод --debug, чтобы убедитьÑÑ Ð² правильноÑти наÑтроек. + +СпоÑобы Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑпиÑка заблокированных IP +------------------------------------------- + +!!! nftables не могут работать Ñ ipset-ами. СобÑтвенный аналогичный механизм требует огромного количеÑтво RAM +!!! Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ больших лиÑтов. Ðапример, Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð½Ð° 100K запиÑей в nfset не хватает даже 256 Mb. +!!! ЕÑли вам нужны большие лиÑÑ‚Ñ‹ на домашних роутерах, откатывайтеÑÑŒ на iptables+ipset. + +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 (ÑобÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°). + +3) ipset/get_reestr_preresolved.sh. то же Ñамое, что и 2), только беретÑÑ ÑƒÐ¶Ðµ зареÑолвленый ÑпиÑок +Ñо Ñтороннего реÑурÑа. + +4) ipset/get_reestr_preresolved_smart.sh. то же Ñамое, что и 3), Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ вÑего диапазона некоторых +автономных ÑиÑтем (прыгающие IP адреÑа из cloudflare, facebook, ...) и некоторых поддоменов блокируемых Ñайтов + +Cкрипты Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ get_antifilter_* оперируют ÑпиÑками адреÑов и маÑок подÑетей Ñ Ñайтов antifilter.network и antifilter.download : + +5) ipset/get_antifilter_ip.sh. получает лиÑÑ‚ https://antifilter.download/list/ip.lst. + +6) ipset/get_antifilter_ipsmart.sh. получает лиÑÑ‚ https://antifilter.network/download/ipsmart.lst. +ÑƒÐ¼Ð½Ð°Ñ ÑÑƒÐ¼Ð¼Ð°Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… адреÑов из ip.lst по маÑкам от /32 до /22 + +7) ipset/get_antifilter_ipsum.sh. получает лиÑÑ‚ https://antifilter.download/list/ipsum.lst. +ÑÑƒÐ¼Ð¼Ð°Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ñ… адреÑов из ip.lst по маÑке /24 + +8) ipset/get_antifilter_ipresolve.sh. получает лиÑÑ‚ https://antifilter.download/list/ipresolve.lst. +пре-реÑолвленный ÑпиÑок, аналогичный получаемый при помощи get_reestr_resolve. только ipv4. + +9) ipset/get_antifilter_allyouneed.sh. получает лиÑÑ‚ https://antifilter.download/list/allyouneed.lst. +Суммарный ÑпиÑок префикÑов, Ñозданный из ipsum.lst и subnet.lst. + +Ð’Ñе варианты раÑÑмотренных Ñкриптов автоматичеÑки Ñоздают и заполнÑÑŽÑ‚ ipset. +Варианты 2-9 дополнительно вызывают вариант 1. + +10) ipset/get_config.sh. Ñтот Ñкрипт вызывает то, что пропиÑано в переменной GETLIST из файла config +ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ определена, то реÑолвÑÑ‚ÑÑ Ð»Ð¸ÑˆÑŒ лиÑÑ‚Ñ‹ Ð´Ð»Ñ ipset nozapret/nozapret6. + +ЛиÑÑ‚Ñ‹ РКРвÑе Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑŽÑ‚ÑÑ. Возникают новые тенденции. Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº RAM могут менÑÑ‚ÑŒÑÑ. +ПоÑтому необходима нечаÑтаÑ, но вÑе же регулÑÑ€Ð½Ð°Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ Ñ‡Ñ‚Ð¾ же вообще у Ð²Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ñходит на роутере. +Или вы можете узнать о проблеме лишь когда у Ð²Ð°Ñ Ð½Ð°Ñ‡Ð½ÐµÑ‚ поÑтоÑнно пропадать wifi, и вам придетÑÑ +его перезагружать каждые 2 чаÑа (метод кувалды). + +Самые щадÑщие варианты по RAM - get_antifilter_allyouneed.sh, get_antifilter_ipsum.sh. + +ЛиÑÑ‚Ñ‹ 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 Ñо ÑпиÑком доменов. +Оба демона принимают неограниченное количеÑтво лиÑтов include (--hostlist) и exclude (--hostlist-exclude). +Ð’Ñе лиÑÑ‚Ñ‹ одного типа объединÑÑŽÑ‚ÑÑ, и таким образом оÑтаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ 2 лиÑта. +Прежде вÑего проверÑетÑÑ exclude list. При вхождении в него проиÑходит отказ от дурениÑ. +Далее при наличии include list проверÑетÑÑ Ð´Ð¾Ð¼ÐµÐ½ на вхождение в него. При невхождении в ÑпиÑок отказ от дурениÑ. +ПуÑтой ÑпиÑок приравниваетÑÑ Ðº его отÑутÑтвию. +Ð’ иных ÑлучаÑÑ… проиÑходит дурение. +Ðет ни одного ÑпиÑка - дурение вÑегда. +ЕÑÑ‚ÑŒ только exclude ÑпиÑок - дурение вÑех, кроме. +ЕÑÑ‚ÑŒ только include ÑпиÑок - дурение только их. +ЕÑÑ‚ÑŒ оба - дурение только include, кроме exclude. + +Ð’ ÑиÑтеме запуÑка Ñто обыграно Ñледующим образом. +ПриÑутÑтвуют 2 include ÑпиÑка : +ipset/zapret-hosts-users.txt.gz или ipset/zapret-hosts-users.txt +ipset/zapret-hosts.txt.gz или ipset/zapret-hosts.txt +и 1 exclude ÑпиÑок +ipset/zapret-hosts-users-exclude.txt.gz или ipset/zapret-hosts-users-exclude.txt + +При режиме фильтрации MODE_FILTER=hostlist ÑиÑтема запуÑка передает nfqws или tpws вÑе лиÑÑ‚Ñ‹, файлы которых приÑутÑтвуют. +ЕÑли вдруг лиÑÑ‚Ñ‹ include приÑутÑтвуют, но вÑе они пуÑтые, то работа аналогична отÑутÑтвию include лиÑта. +Файл еÑÑ‚ÑŒ, но не ÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° Ñто дуритÑÑ Ð²Ñе, кроме exclude. +ЕÑли вам нужен именно такой режим - не обÑзательно удалÑÑ‚ÑŒ zapret-hosts-users.txt. ДоÑтаточно Ñделать его пуÑтым. + +Поддомены учитываютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки. Ðапример, Ñтрочка "ru" вноÑит в ÑпиÑок "*.ru". Строчка "*.ru" в ÑпиÑке не Ñработает. + +СпиÑок доменов РКРможет быть получен Ñкриптами ipset/get_reestr_hostlist.sh или ipset/get_antizapret_domains.sh +- кладетÑÑ Ð² ipset/zapret-hosts.txt.gz. + +Чтобы обновить ÑпиÑки, перезапуÑкать nfqws или tpws не нужно. ОбновлÑете файлы, затем даете Ñигнал HUP. +По HUP лиÑÑ‚Ñ‹ будут перечитаны. ЕÑли вдруг какого-то лиÑта не окажетÑÑ, процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. +Скрипты Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð»Ð¸Ñтов из ipset Ñами выдают HUP в конце. + +При фильтрации по именам доменов демон должен запуÑкатьÑÑ Ð±ÐµÐ· фильтрации по ipset. +tpws и nfqws решают нужно ли применÑÑ‚ÑŒ дурение в завиÑимоÑти от хоÑта, полученного из протокола прикладного ÑƒÑ€Ð¾Ð²Ð½Ñ (http, tls, quic). +При иÑпользовании больших ÑпиÑков, в том чиÑле ÑпиÑка РКÐ, оцените объем RAM на роутере ! +ЕÑли поÑле запуÑка демона RAM под завÑзку или ÑлучаютÑÑ oom, значит нужно отказатьÑÑ Ð¾Ñ‚ таких больших ÑпиÑков. + + +Режим фильтрации autohostlist +----------------------------- + +Этот режим позволÑет проанализировать как запроÑÑ‹ Ñо Ñтороны клиента, так и ответы от Ñервера. +ЕÑли хоÑÑ‚ еще не находитÑÑ Ð½Ð¸ в каких лиÑтах и обнаруживаетÑÑ ÑитуациÑ, Ð¿Ð¾Ñ…Ð¾Ð¶Ð°Ñ Ð½Ð° блокировку, +проиÑходит автоматичеÑкое добавление хоÑта в ÑпиÑок autohostlist как в памÑти, так и в файле. +nfqws или tpws Ñами ведут Ñтот файл. +Чтобы какой-то хоÑÑ‚ не Ñмог попаÑÑŒ в autohostlist иÑпользуйте hostlist-exclude. +ЕÑли он вÑе-же туда попал - удалите запиÑÑŒ из файла вручную. ПроцеÑÑÑ‹ автоматичеÑки перечитают файл. +tpws/nfqws Ñами назначают владельцем файла юзера, под которым они работают поÑле ÑброÑа привилегий, +чтобы иметь возможноÑÑ‚ÑŒ обновлÑÑ‚ÑŒ лиÑÑ‚. + +Ð’ Ñлучае nfqws данный режим требует Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² том чиÑле и входÑщего трафика. +Крайне рекомендовано иÑпользовать ограничитель connbytes, чтобы nfqws не обрабатывал гигабайты. +По Ñтой же причине не рекомендуетÑÑ Ð¸Ñпользование режима на BSD ÑиÑтемах. Там нет фильтра connbytes. + +Ðа linux ÑиÑтемах при иÑпользовании nfqws и фильтра connbytes может понадобитÑÑ : +sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1 +Было замечено, что некоторые DPI в РоÑÑии возвращают RST Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¼ ACK. Это принимаетÑÑ tcp/ip Ñтеком +linux, но через раз приобретает ÑÑ‚Ð°Ñ‚ÑƒÑ INVALID в conntrack. ПоÑтому правила Ñ connbytes Ñрабатывают +через раз, не переÑÑ‹Ð»Ð°Ñ RST пакет nfqws. + +Как вообще могут веÑти ÑÐµÐ±Ñ DPI, получив "плохой запроÑ" и принÑв решение о блокировке : + +1) ЗавиÑание : проÑто отмораживаетÑÑ, Ð±Ð»Ð¾ÐºÐ¸Ñ€ÑƒÑ Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ пакетов по TCP каналу. +2) RST : отправлÑет RST клиенту и/или Ñерверу +3) Редирект : (только Ð´Ð»Ñ http) отправлÑет редирект на Ñайт-заглушку +4) Подмена Ñертификата : (только Ð´Ð»Ñ https) полный перехват TLS ÑеанÑа Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ¾Ð¹ вÑунуть что-то +Ñвое клиенту. ПрименÑетÑÑ Ð½ÐµÑ‡Ð°Ñто, поÑкольку броузеры на такое ругаютÑÑ. + +nfqws и tpws могут Ñечь варианты 1-3, 4 они не раÑпознают. +Ð’Ñилу Ñпецифики работы Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ñ‹Ð¼Ð¸ пакетами или Ñ TCP каналом tpws и nfqws раÑпознают Ñти Ñитуации +по-разному. +Что ÑчитаетÑÑ Ñитуацией, похожей на блокировку : +1) [nfqws] ÐеÑколько ретранÑмиÑÑий первого запроÑа в TCP ÑеанÑе, в котором имеетÑÑ host. +2) [nfqws,tpws] RST, пришедший в ответ на первый Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñ Ñ…Ð¾Ñтом. +3) [nfqws,tpws] HTTP редирект, пришедший в ответ на первый Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñ Ñ…Ð¾Ñтом, на глобальный Ð°Ð´Ñ€ÐµÑ +Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼ 2 уровнÑ, не Ñовпадающим Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼ 2 ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ запроÑа. +4) [tpws] закрытие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ поÑле отправки первого запроÑа Ñ Ñ…Ð¾Ñтом, еÑли не было на него +ответа Ñо Ñтороны Ñервера. Это обычно ÑлучаетÑÑ Ð¿Ð¾ таймауту, когда нет ответа (Ñлучай "завиÑание"). + +Чтобы Ñнизить вероÑтноÑÑ‚ÑŒ ложных Ñрабатываний, имеетÑÑ Ñчетчик Ñитуаций, похожих на блокировку. +ЕÑли за определенное Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð¾Ð¹Ð´ÐµÑ‚ более определенного их количеÑтва, хоÑÑ‚ ÑчитаетÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ +и заноÑитÑÑ Ð² autohostlist. По нему Ñразу же начинает работать ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð¿Ð¾ обходу блокировки. +ЕÑли в процеÑÑе Ñчета вебÑайт отвечает без признаков блокировки, Ñчетчик ÑбраÑываетÑÑ. +ВероÑтно, Ñто был временный Ñбой Ñайта. + +Ðа практике работа Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼ режимом выглÑдит так. +Первый раз пользователь заходит на Ñайт и получает заглушку, ÑÐ±Ñ€Ð¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ броузер подвиÑает, +вываливаÑÑÑŒ по таймауту Ñ Ñообщением о невозможноÑти загрузить Ñтраницу. +Ðадо долбить F5, Ð¿Ñ€Ð¸Ð½ÑƒÐ¶Ð´Ð°Ñ Ð±Ñ€Ð¾ÑƒÐ·ÐµÑ€ повторÑÑ‚ÑŒ попытки. ПоÑле некоторой попытки Ñайт +начинает работать, и дальше он будет работать вÑегда. + +С Ñтим режимом можно иÑпользовать техники обхода, ломающие значительное количеÑтво Ñайтов. +ЕÑли Ñайт не ведет ÑÐµÐ±Ñ ÐºÐ°Ðº заблокированный, значит обход применен не будет. +Ð’ противном Ñлучае терÑÑ‚ÑŒ вÑе равно нечего. +Однако, могут быть временные Ñбои Ñервера, приводÑщие к Ñитуации, аналогичной блокировке. +Могут проиÑходит ложные ÑрабатываниÑ. ЕÑли такое произошло, ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ начать ломать +незаблокированный Ñайт. Эту Ñитуацию, увы, придетÑÑ Ð²Ð°Ð¼ контролировать вручную. +ЗаноÑите такие домены в ipset/zapret-hosts-user-exclude.txt, чтобы избежать повторениÑ. +Чтобы впоÑледÑтвии разобратьÑÑ Ð¿Ð¾Ñ‡ÐµÐ¼Ñƒ домен был занеÑен в лиÑÑ‚, можно включить autohostlist debug log. +Он полезен тем, что работает без поÑтоÑнного проÑмотра вывода nfqws в режиме debug. +Ð’ лог заноÑÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ оÑновные ÑобытиÑ, ведущие к занеÑению хоÑта в лиÑÑ‚. +По логу можно понÑÑ‚ÑŒ как избежать ложных Ñрабатываний и подходит ли вообще вам Ñтот режим. + +Можно иÑпользовать один autohostlist Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтвом процеÑÑов. Ð’Ñе процеÑÑÑ‹ проверÑÑŽÑ‚ Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ файла. +ЕÑли файл был изменен в другом процеÑÑе, то проиÑходит перечитывание вÑех include лиÑтов, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ autohostlist. +Ð’Ñе процеÑÑÑ‹ должны работать под одним uid, чтобы были права доÑтупа на файл. + +Скрипты zapret ведут autohostlist в ipset/zapret-hosts-auto.txt. +install_easy.sh при апгрейде zapret ÑохранÑет Ñтот файл. +Режим autohostlist включает в ÑÐµÐ±Ñ Ñ€ÐµÐ¶Ð¸Ð¼ hostlist. +Можно веÑти ipset/zapret-hosts-user.txt, ipset/zapret-hosts-user-exclude.txt. + + +Проверка провайдера +------------------- + +Перед наÑтройкой нужно провеÑти иÑÑледование какую бÑку уÑтроил вам ваш провайдер. + +Ðужно выÑÑнить не подменÑет ли он DNS и какой метод обхода DPI работает. +Ð’ Ñтом вам поможет Ñкрипт blockcheck.sh. + +ЕÑли 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. +Еще один Ñффективный вариант - иÑпользовать реÑолвер от yandex 77.88.8.88 на неÑтандартном порту 1253. +Многие провайдеры не анализируют Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº DNS на неÑтандартных портах. + +Следует прогнать blockcheck по неÑкольким заблокированным Ñайтам и выÑвить общий характер блокировок. +Разные Ñайты могут быть заблокированы по-разному, нужно иÑкать такую технику, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÐµÑ‚ на большинÑтве. +Чтобы запиÑать вывод blockcheck.sh в файл, выполните : ./blockcheck.sh | tee /tmp/blockcheck.txt + +Проанализируйте какие методы Ð´ÑƒÑ€ÐµÐ½Ð¸Ñ DPI работают, в ÑоответÑтвии Ñ Ð½Ð¸Ð¼Ð¸ наÑтройте /opt/zapret/config. + +Имейте в виду, что у провайдеров может быть неÑколько DPI или запроÑÑ‹ могут идти через разные каналы +по методу баланÑировки нагрузки. БаланÑировка может означать, что на разных ветках разные DPI или +они находÑÑ‚ÑÑ Ð½Ð° разных хопах. Ð¢Ð°ÐºÐ°Ñ ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ выражатьÑÑ Ð² неÑтабильноÑти работы обхода. +Дернули неÑколько раз curl. То работает, то connection reset или редирект. blockcheck.sh выдает +Ñтранноватые результаты. То split работает на 2-м. хопе, то на 4-м. ДоÑтоверноÑÑ‚ÑŒ результата вызывает ÑомнениÑ. +Ð’ Ñтом Ñлучае задайте неÑколько повторов одного и того же теÑта. ТеÑÑ‚ будет ÑчитатьÑÑ ÑƒÑпешным только, +еÑли вÑе попытки пройдут уÑпешно. + +При иÑпользовании autottl Ñледует протеÑтировать как можно больше разных доменов. Эта техника +может на одних провайдерах работать Ñтабильно, на других потребуетÑÑ Ð²Ñ‹ÑÑнить при каких параметрах +она Ñтабильна, на третьих полный хаоÑ, и проще отказатьÑÑ. + +Blockcheck имеет 3 ÑƒÑ€Ð¾Ð²Ð½Ñ ÑканированиÑ. +Цель режима quick - макÑимально быÑтро найти хоть что-то работающее. +standard дает возможноÑÑ‚ÑŒ провеÑти иÑÑледование как и на что реагирует DPI в плане методов обхода. +force дает макÑимум проверок даже в ÑлучаÑÑ…, когда реÑÑƒÑ€Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÐµÑ‚ без обхода или Ñ Ð±Ð¾Ð»ÐµÐµ проÑтыми ÑтратегиÑми. + +СКÐРПОРТОВ +ЕÑли в ÑиÑтеме приÑутÑтвует ÑовмеÑтимый netcat (ncat от nmap или openbsd ncat. в openwrt по умолчанию нет.), +то выполнÑетÑÑ Ñканирование портов http или https вÑех IP адреÑов домена. +ЕÑли ни один IP не отвечает, то результат очевиден. Можно оÑтанавливать Ñканирование. +ÐвтоматичеÑки оно не оÑтановитÑÑ, потому что netcat-Ñ‹ недоÑтаточно подробно информируют о причинах ошибки. +ЕÑли доÑтупна только чаÑÑ‚ÑŒ IP, то можно ожидать хаотичных Ñбоев, Ñ‚.к. подключение идет к Ñлучайному адреÑу +из ÑпиÑка. + +ПРОВЕРКРÐРЧÐСТИЧÐЫЙ IP block +Под чаÑтичным блоком подразумеваетÑÑ ÑитуациÑ, когда коннект на порты еÑÑ‚ÑŒ, но по определенному транÑпортному +или прикладному протоколу вÑегда идет Ñ€ÐµÐ°ÐºÑ†Ð¸Ñ DPI вне завиÑимоÑти от запрашиваемого домена. +Эта проверка так же не выдаÑÑ‚ автоматичеÑкого вердикта/решениÑ, потому что может быть очень много вариаций. +ВмеÑто Ñтого анализ проиÑходÑщего возложен на Ñамого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ тех, кто будет читать лог. +Суть Ñтой проверки в попытке дернуть неблокированный IP Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ доменом и наоборот, Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÑ +при Ñтом реакцию DPI. Ð ÐµÐ°ÐºÑ†Ð¸Ñ DPI обычно проÑвлÑетÑÑ Ð² виде таймаута (завиÑание запроÑа), connection reset +или http redirect на заглушку. Любой другой вариант Ñкорее вÑего говорит об отÑутÑтвии реакции DPI. +Ð’ чаÑтноÑти, любые http коды, кроме редиректа, ведущего именно на заглушку, а не куда-то еще. +Ðа TLS - ошибки handshake без задержек. +Ошибка Ñертификата может говорить как о реакции DPI Ñ MiTM атакой (подмена Ñертификата), так и +о том, что принимающий Ñервер неблокированного домена вÑе равно принимает ваш TLS handshake Ñ Ñ‡ÑƒÐ¶Ð¸Ð¼ доменом, +пытаÑÑÑŒ при Ñтом выдать Ñертификат без запрошенного домена. ТребуетÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ анализ. +ЕÑли на заблокированный домен еÑÑ‚ÑŒ Ñ€ÐµÐ°ÐºÑ†Ð¸Ñ Ð½Ð° вÑех IP адреÑах, значит еÑÑ‚ÑŒ блокировка по домену. +ЕÑли на неблокированный домен еÑÑ‚ÑŒ Ñ€ÐµÐ°ÐºÑ†Ð¸Ñ Ð½Ð° IP адреÑах блокированного домена, значит имеет меÑто блок по IP. +СоответÑтвенно, еÑли еÑÑ‚ÑŒ и то, и другое, значит еÑÑ‚ÑŒ и блок по IP, и блок по домену. +Ðеблокированный домен первым делом проверÑетÑÑ Ð½Ð° доÑтупноÑÑ‚ÑŒ на оригинальном адреÑе. +При недоÑтупноÑти теÑÑ‚ отменÑетÑÑ, поÑкольку он будет неинформативен. + +ЕÑли выÑÑнено, что еÑÑ‚ÑŒ чаÑтичный блок по IP на DPI, то Ñкорее вÑего вÑе оÑтальные теÑÑ‚Ñ‹ будут провалены +вне завиÑимоÑти от Ñтратегий обхода. Ðо бывают и некоторые иÑключениÑ. Ðапример, пробитие через ipv6 +option headers. Или Ñделать так, чтобы он не мог раÑпознать протокол прикладного уровнÑ. +Дальнейшие теÑÑ‚Ñ‹ могут быть не лишены ÑмыÑла. + +ПРИМЕРЫ БЛОКИРОВКИ ТОЛЬКО ПО ДОМЕÐУ БЕЗ БЛОКРПО IP + +> testing iana.org on it's original ip +!!!!! AVAILABLE !!!!! +> testing rutracker.org on 192.0.43.8 (iana.org) +curl: (28) Operation timed out after 1002 milliseconds with 0 bytes received +> testing iana.org on 172.67.182.196 (rutracker.org) +HTTP/1.1 409 Conflict +> testing iana.org on 104.21.32.39 (rutracker.org) +HTTP/1.1 409 Conflict + +> testing iana.org on it's original ip +!!!!! AVAILABLE !!!!! +> testing rutracker.org on 192.0.43.8 (iana.org) +curl: (28) Connection timed out after 1001 milliseconds +> testing iana.org on 172.67.182.196 (rutracker.org) +curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure +> testing iana.org on 104.21.32.39 (rutracker.org) +curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure + +> testing iana.org on it's original ip +!!!!! AVAILABLE !!!!! +> testing rutracker.org on 192.0.43.8 (iana.org) +HTTP/1.1 307 Temporary Redirect +Location: https://www.gblnet.net/blocked.php +> testing iana.org on 172.67.182.196 (rutracker.org) +HTTP/1.1 409 Conflict +> testing iana.org on 104.21.32.39 (rutracker.org) +HTTP/1.1 409 Conflict + +> testing iana.org on it's original ip +!!!!! AVAILABLE !!!!! +> testing rutracker.org on 192.0.43.8 (iana.org) +curl: (35) Recv failure: Connection reset by peer +> testing iana.org on 172.67.182.196 (rutracker.org) +curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure +> testing iana.org on 104.21.32.39 (rutracker.org) +curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure + + +ПРИМЕР ПОЛÐОГО IP БЛОКРИЛИ БЛОКРTCP ПОРТРПРИ ОТСУТСТВИИ БЛОКРПО ДОМЕÐУ + +* port block tests ipv4 startmail.com:80 +ncat -z -w 1 145.131.90.136 80 +145.131.90.136 does not connect. netcat code 1 +ncat -z -w 1 145.131.90.152 80 +145.131.90.152 does not connect. netcat code 1 + +* curl_test_http ipv4 startmail.com +- checking without DPI bypass +curl: (28) Connection timed out after 2002 milliseconds +UNAVAILABLE code=28 + +- IP block tests (requires manual interpretation) +> testing iana.org on it's original ip +!!!!! AVAILABLE !!!!! +> testing startmail.com on 192.0.43.8 (iana.org) +HTTP/1.1 302 Found +Location: https://www.iana.org/ +> testing iana.org on 145.131.90.136 (startmail.com) +curl: (28) Connection timed out after 2002 milliseconds +> testing iana.org on 145.131.90.152 (startmail.com) +curl: (28) Connection timed out after 2002 milliseconds + + +Выбор параметров +---------------- + +Файл /opt/zapret/config иÑпользуетÑÑ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ компонентами ÑиÑтемы и Ñодержит оÑновные наÑтройки. +Его нужно проÑмотреть и при необходимоÑти отредактировать. + +Ðа linux ÑиÑтемах можно выбрать иÑпользовать iptables или nftables. +По умолчанию на традиционных linux выбираетÑÑ nftables, еÑли уÑтановлен nft. +Ðа openwrt по умолчанию выбираетÑÑ nftables на новых верÑиÑÑ… Ñ firewall4. + +FWTYPE=iptables + +ОÑновной режим : +tpws - tpws в режиме transparent +tpws-socks - tpws в режиме socks + вешаетÑÑ Ð½Ð° localhost и LAN Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ (еÑли задан IFACE_LAN или еÑли ÑиÑтема - OpenWRT). порт 988 +nfqws - 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 + +ПрименÑÑ‚ÑŒ ли дурение к QUIC : + +MODE_QUIC=0 + +Режим фильтрации хоÑтов : +none - применÑÑ‚ÑŒ дурение ко вÑем хоÑтам +ipset - ограничить дурение ipset-ом zapret/zapret6 +hostlist - ограничить дурение ÑпиÑком хоÑтов из файла +autohostlist - режим hostlist + раÑпознавание блокировок и Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого лиÑта + +MODE_FILTER=none + +Опции tpws : + +TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3" + +Дополнительный низкоприоритетный профиль деÑинхронизации Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð² Ñ MODE_FILTER=hostlist. +ПоÑле реализации поддержки множеÑтвенных профилей режимы нулевой фазы деÑинхронизации больше не применÑÑŽÑ‚ÑÑ Ñ Ñ…Ð¾ÑтлиÑтом ! +Ð”Ð»Ñ Ð¸Ñ… Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ профиль без хоÑтлиÑÑ‚ фильтра. + +#TPWS_OPT_SUFFIX="--mss 88" + +Опции nfqws Ð´Ð»Ñ Ð°Ñ‚Ð°ÐºÐ¸ деÑинхронизации DPI : + +DESYNC_MARK=0x40000000 +DESYNC_MARK_POSTNAT=0x20000000 +NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" + +Задание раздельных опций nfqws Ð´Ð»Ñ http и https и Ð´Ð»Ñ Ð²ÐµÑ€Ñий ip протоколов 4,6 : + +NFQWS_OPT_DESYNC_HTTP="--dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" +NFQWS_OPT_DESYNC_HTTPS="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" +NFQWS_OPT_DESYNC_HTTP6="--dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none" +NFQWS_OPT_DESYNC_HTTPS6="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none" + +ЕÑли какаÑ-то из переменных NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS не определена, +беретÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ NFQWS_OPT_DESYNC. +ЕÑли какаÑ-то из переменных NFQWS_OPT_DESYNC_HTTP6/NFQWS_OPT_DESYNC_HTTPS6 не определена, +беретÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS. + +Дополнительный низкоприоритетный профиль деÑинхронизации Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð² Ñ MODE_FILTER=hostlist. +ПоÑле реализации поддержки множеÑтвенных профилей режимы нулевой фазы деÑинхронизации больше не применÑÑŽÑ‚ÑÑ Ñ Ñ…Ð¾ÑтлиÑтом ! +Ð”Ð»Ñ Ð¸Ñ… Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ профиль без хоÑтлиÑÑ‚ фильтра. +#NFQWS_OPT_DESYNC_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTP_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTPS_SUFFIX="--wssize 1:6" +#NFQWS_OPT_DESYNC_HTTP6_SUFFIX="--dpi-desync=syndata" +#NFQWS_OPT_DESYNC_HTTPS6_SUFFIX="--wssize 1:6" + +Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию заполнÑÑŽÑ‚ÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñ‡Ð½Ð¾ NFQWS_OPT_*. + +Опции Ð´ÑƒÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ QUIC : +NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake" +NFQWS_OPT_DESYNC_QUIC6="--dpi-desync=hopbyhop" +ЕÑли NFQWS_OPT_DESYNC_QUIC6 не задано, то беретÑÑ NFQWS_OPT_DESYNC_QUIC. + +ÐаÑтройка ÑиÑтемы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ñ‡Ð½Ñ‹Ð¼ traffic offload (только еÑли поддерживаетÑÑ) +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-ов и nfset-ов + +SET_MAXELEM=262144 +IPSET_OPT="hashsize 262144 maxelem 2097152" + +Хук, позволÑющий внеÑти ip адреÑа динамичеÑки. $1 = Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ +ÐдреÑа выводÑÑ‚ÑÑ Ð² stdout. Ð’ Ñлучае nfset автоматичеÑки решаетÑÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° возможного переÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¾Ð². +IPSET_HOOK="/etc/zapret.ipset.hook" + +ПРО РУГÐÐЬ в 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" + +ÐаÑтройка режима autohostlist. +AUTOHOSTLIST_RETRANS_THRESHOLD=3 +AUTOHOSTLIST_FAIL_THRESHOLD=2 +AUTOHOSTLIST_FAIL_TIME=60 +AUTOHOSTLIST_DEBUG=0 + +Включить или выключить Ñжатие больших лиÑтов в Ñкриптах 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 ÑущеÑтвует Ñеть по умолчанию 'lan'. Только трафик Ñ Ñтой Ñети будет перенаправлен на tpws. +Ðо возможно задать другие Ñети или ÑпиÑок Ñетей : +OPENWRT_LAN="lan lan2 lan3" + +Ð’ openwrt в качеÑтве wan берутÑÑ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹ÑÑ‹, имеющие default route. Отдельно Ð´Ð»Ñ ipv4 и ipv6. +Это можно переопределить : +OPENWRT_WAN4="wan4 vpn" +OPENWRT_WAN6="wan6 vpn6" + +Параметр INIT_APPLY_FW=1 разрешает init Ñкрипту ÑамоÑтоÑтельно применÑÑ‚ÑŒ правила iptables. +При иных значениÑÑ… или еÑли параметр закомментирован, правила применены не будут. +Это полезно, еÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ ÑиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼, в наÑтройки которой и Ñледует прикрутить правила. +Ðа openwrt неприменимо при иÑпользовании firewall3+iptables. + +Следующие наÑтройки не актуальны Ð´Ð»Ñ openwrt : + +ЕÑли ваша ÑиÑтема работает как роутер, то нужно впиÑать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ñ… и внешних интерфейÑов : +IFACE_LAN=eth0 +IFACE_WAN=eth1 +IFACE_WAN6="henet ipsec0" +ÐеÑколько интерфейÑов могут быть впиÑаны через пробел. +ЕÑли IFACE_WAN6 не задан, то беретÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ IFACE_WAN. + +Ð’ÐЖÐО : наÑтройка маршрутизации, маÑкарада и Ñ‚.д. не входит в задачу zapret. +ВключаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ режимы, обеÑпечивающие перехват транзитного трафика. +Возможно определить неÑколько интерфейÑов Ñледующим образом : IFACE_LAN="eth0 eth1 eth2" + +Прикручивание к ÑиÑтеме ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼ или Ñвоей ÑиÑтеме запуÑка +---------------------------------------------------------------------- + +ЕÑли вы иÑпользуете какую-то ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼, то она может вÑтупать в конфликт +Ñ Ð¸Ð¼ÐµÑŽÑ‰Ð¸Ð¼ÑÑ Ñкриптом запуÑка. При повторном применении правил она могла бы поломать наÑтройки 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 restart_fw + +Ртак можно запуÑтить или оÑтановить демоны отдельно от фаервола : + + /opt/zapret/init.d/sysv/zapret start_daemons + /opt/zapret/init.d/sysv/zapret stop_daemons + /opt/zapret/init.d/sysv/zapret restart_daemons + +nftables ÑводÑÑ‚ практичеÑки на нет конфликты между разными ÑиÑтемами управлениÑ, поÑкольку позволÑÑŽÑ‚ +иÑпользовать незавиÑимые таблицы и хуки. ИÑпользуетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð°Ñ nf-таблица "zapret". +ЕÑли ваша ÑиÑтема ее не будет трогать, Ñкорее вÑего вÑе будет нормально. + +Ð”Ð»Ñ nftables предуÑмотрено неÑколько дополнительных вызовов : + +ПоÑмотреть set-Ñ‹ интерфейÑов, отноÑÑщихÑÑ Ðº lan, wan и wan6. По ним идет завертывание трафика. +Ртак же таблицу flow table Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ интерфейÑов ingress hook. + /opt/zapret/init.d/sysv/zapret list_ifsets + +Обновить set-Ñ‹ интерфейÑов, отноÑÑщихÑÑ Ðº lan, wan и wan6. +Ð”Ð»Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ñ… linux ÑпиÑок интерфейÑов беретÑÑ Ð¸Ð· переменных конфига IFACE_LAN, IFACE_WAN. +Ð”Ð»Ñ openwrt определÑетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки. МножеÑтво lanif может быть раÑширено параметром OPENWRT_LAN. +Ð’Ñе интерфейÑÑ‹ lan и wan так же добавлÑÑŽÑ‚ÑÑ Ð² ingress hook от flow table. + /opt/zapret/init.d/sysv/zapret reload_ifsets + +ПроÑмотр таблицы без Ñодержимого set-ов. Вызывает nft -t list table inet zapret + /opt/zapret/init.d/sysv/zapret list_table + +Так же возможно прицепитьÑÑ Ñвоим Ñкриптом к любой Ñтадии Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ ÑнÑÑ‚Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð° Ñо Ñтороны zapret Ñкриптов : + +INIT_FW_PRE_UP_HOOK="/etc/firewall.zapret.hook.pre_up" +INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up" +INIT_FW_PRE_DOWN_HOOK="/etc/firewall.zapret.hook.pre_down" +INIT_FW_POST_DOWN_HOOK="/etc/firewall.zapret.hook.post_down" + +Эти наÑтройки доÑтупны в config. +Может быть полезно, еÑли вам нужно иÑпользовать nftables set-Ñ‹, например ipban/ipban6. +nfset-Ñ‹ принадлежат только одной таблице, Ñледовательно вам придетÑÑ Ð¿Ð¸Ñать правила Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ zapret, +а значит нужно ÑинхронизироватьÑÑ Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼/ÑнÑтием правил Ñо Ñтороны zapret Ñкриптов. + + +Вариант custom +-------------- + +custom код вынеÑен в отдельные shell includes. +ПоддерживаетÑÑ Ñтарый вариант в +/opt/zapret/init.d/sysv/custom +/opt/zapret/init.d/openwrt/custom +/opt/zapret/init.d/macos/custom +Он ÑчитаетÑÑ ÑƒÑтаревшим. Ðктуальный вариант - помещать отдельные Ñкрипты там же, но в директорию "custom.d". +Она будет проÑканирована Ñтандартным образом, Ñ‚.е. в алфавитном порÑдке, и каждый Ñкрипт будет применен. +РÑдом имеетÑÑ "custom.d.examples". Это готовые Ñкрипты, который можно копировать в "custom.d". +ОÑобо Ñтоит отметить "10-inherit-*". Они наÑледуют Ñтандартные режимы nfqws/tpws/tpws-socks. +Полезно, чтобы не пиÑать код заново. ДоÑтаточно лишь Ñкопировать ÑоответÑтвующий файл. + +Ð”Ð»Ñ linux пишетÑÑ ÐºÐ¾Ð´ в функции +zapret_custom_daemons +zapret_custom_firewall +zapret_custom_firewall_nft + +Ð”Ð»Ñ macos +zapret_custom_daemons +zapret_custom_firewall_v4 +zapret_custom_firewall_v6 + +zapret_custom_daemons поднимает демоны nfqws/tpws в нужном вам количеÑтве и Ñ Ð½ÑƒÐ¶Ð½Ñ‹Ð¼Ð¸ вам параметрами. +ОÑобо обратите внимание на номер демона в функциÑÑ… "run_daemon" и "do_daemon". +Они должны быть уникальными во вÑех Ñкриптах. При накладке будет ошибка. +Так же Ñледует избегать переÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² портов tpws и очередей nfqws. +При переÑечении какой-то из демонов не запуÑтитÑÑ. +Чтобы как-то нивелировать Ñту проблему, в examples иÑпользуетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ DNUM. +Ðа ее базе ÑчитаетÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ номеров очередей (5 шт), которые иÑпользует Ñтот Ñкрипт. +При таком подходе доÑтаточно, чтобы DNUM был везде уникален. +ПоÑкольку номера очереди и портов имеют нумерацию до 65536, можно иÑпользовать DNUM до 13106. +Однако, Ñледует оÑтавить номера очереди 200-299 Ð´Ð»Ñ Ñтандартных режимов и не иÑпользовать их. + +custom Ñкрипты могут иÑпользовать переменные из config. Можно помещать в config Ñвои переменные +и иÑпользовать их в Ñкриптах. +Можно иÑпользовать функции-хелперы. Они ÑвлÑÑŽÑ‚ÑÑ Ñ‡Ð°Ñтью общего проÑтранÑтва функций shell. +Полезные функции можно взÑÑ‚ÑŒ из примеров Ñкриптов. Так же Ñмотрите "common/*.sh". +ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñ…ÐµÐ»Ð¿ÐµÑ€ функции, вы избавитеÑÑŒ от необходимоÑти учитывать вÑе возможные Ñлучаи +типа наличиÑ/отÑутÑÑ‚Ð²Ð¸Ñ ipv6, ÑвлÑетÑÑ Ð»Ð¸ ÑиÑтема роутером, имена интерфейÑов, ... +Хелперы Ñто учитывают, вам нужно ÑоÑредоточитьÑÑ Ð»Ð¸ÑˆÑŒ на фильтрах {ip,nf}tables и +параметрах демонов. + +Код Ð´Ð»Ñ openwrt и sysv немного отличаетÑÑ. Ð’ sysv нужно обрабатывать и запуÑк, и оÑтановку демонов. +ЗапуÑк Ñто или оÑтановка передаетÑÑ Ð² параметре $1 (0 или 1). +Ð’ openwrt за оÑтановку отвечает procd. + +Ð”Ð»Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð° в linux каÑтом пишетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ Ð´Ð»Ñ iptables и nftables. Ð’Ñе очень похоже, но отличаетÑÑ +напиÑание фильтров и Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€ хелперов. ЕÑли вам не нужны iptables или nftables - +можете не пиÑать ÑоответÑтвующую функцию. + +Ð’ macos firewall-функции ничего Ñами никуда не заноÑÑÑ‚. Их задача - лишь выдать текÑÑ‚ в stdout, +Ñодержащий правила Ð´Ð»Ñ pf-ÑкорÑ. ОÑтальное Ñделает обертка. + + +ПроÑÑ‚Ð°Ñ ÑƒÑтановка +----------------- + +install_easy.sh автоматизирует ручные варианты процедур уÑтановки (Ñм manual_setup.txt). +Он поддерживает OpenWRT, linux ÑиÑтемы на базе systemd или openrc и MacOS. + +Ð”Ð»Ñ Ð±Ð¾Ð»ÐµÐµ гибкой наÑтройки перед запуÑком инÑталлÑтора Ñледует выполнить раздел "Выбор параметров". + +ЕÑли ÑиÑтема запуÑка поддерживаетÑÑ, но иÑпользуетÑÑ Ð½Ðµ поддерживаемый инÑталлÑтором менеджер пакетов +или Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð¾Ð² не ÑоответÑтвуют пропиÑанным в инÑталлÑтор, пакеты нужно уÑтановить вручную. +Ð’Ñегда требуетÑÑ curl. ipset - только Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° iptables, Ð´Ð»Ñ nftables - не нужен. + +Ð”Ð»Ñ ÑовÑем обрезанных диÑтрибутивов (alpine) требуетÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ уÑтановить iptables и ip6tables, либо nftables. + +Ð’ комплекте идут ÑтатичеÑкие бинарники Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð½Ñтва архитектур. Какой-то из них подойдет +Ñ Ð²ÐµÑ€Ð¾ÑтноÑтью 99%. Ðо еÑли у Ð²Ð°Ñ ÑкзотичеÑÐºÐ°Ñ ÑиÑтема, инÑталлÑтор попробует Ñобрать бинарники Ñам +через make. Ð”Ð»Ñ Ñтого нужны gcc, make и необходимые -dev пакеты. Можно форÑировать режим +компилÑции Ñледующим вызовом : + + install_easy.sh make + +Под openwrt вÑе уже Ñразу готово Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑтемы в качеÑтве роутера. +Имена интерфейÑов WAN и LAN извеÑтны из наÑтроек ÑиÑтемы. +Под другими ÑиÑтемами роутер вы наÑтраиваете ÑамоÑтоÑтельно. инÑталлÑтор в Ñто не вмешиваетÑÑ. +инÑталлÑтор в завиÑимоÑти от выбранного режима может ÑпроÑить LAN и WAN интерфейÑÑ‹. +Ðужно понимать, что заворот проходÑщего трафика на tpws в прозрачном режиме проиÑходит до Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ð¸, +Ñледовательно возможна Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ LAN и невозможна по WAN. +Решение о завороте на tpws локального иÑходÑщего трафика принимаетÑÑ Ð¿Ð¾Ñле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ð¸, +Ñледовательно ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ : LAN не имеет ÑмыÑла, Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ WAN возможна. +Заворот на nfqws проиÑходит вÑегда поÑле маршрутизации, поÑтому к нему применима только Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ WAN. +ВозможноÑÑ‚ÑŒ Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ° в том или ином направлении наÑтраиваетÑÑ Ð²Ð°Ð¼Ð¸ в процеÑÑе конфигурации роутера. + +ДеинÑталлÑÑ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ñ‡ÐµÑ€ÐµÐ· uninstall_easy.sh + + +ПроÑÑ‚Ð°Ñ ÑƒÑтановка на openwrt +---------------------------- + +Работает только еÑли у Ð²Ð°Ñ Ð½Ð° роутере доÑтаточно меÑта. + +Копируем zapret на роутер в /tmp. + +ЗапуÑкаем уÑтановщик : + sh /tmp/zapret/install_easy.sh +Он Ñкопирует в /opt/zapret только необходимый минимум файлов. + +ПоÑле уÑпешной уÑтановки можно удалить zapret из tmp Ð´Ð»Ñ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ RAM : + rm -r /tmp/zapret + +Ð”Ð»Ñ Ð±Ð¾Ð»ÐµÐµ гибкой наÑтройки перед запуÑком инÑталлÑтора Ñледует выполнить раздел "Выбор параметров". + +СиÑтема проÑтой инÑталÑции заточена на любое умышленное или неумышленное изменение прав доÑтупа на файлы. +УÑтойчива к репаку под windows. ПоÑле ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² /opt права будут принудительно воÑÑтановлены. + +Android +------- + +Без рута забудьте про nfqws и tpws в режиме transparent proxy. tpws будет работать только в режиме --socks. + +Ядра Android имеют поддержку 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 + +nfqws может иметь такой глюк. При запуÑке Ñ uid по умолчанию (0x7FFFFFFF) при уÑловии работы на Ñотовом интерфейÑе +и отключенном кабеле внешнего Ð¿Ð¸Ñ‚Ð°Ð½Ð¸Ñ ÑиÑтема может чаÑтично виÑнуть. ПереÑтает работать тач и кнопки, +но Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° Ñкране может продолжатьÑÑ. ЕÑли Ñкран был погашен, то включить его кнопкой power невозможно. +Это, видимо, ÑвÑзано Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼ в suspend процеÑÑов Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼ UID. UID ÑоответÑтвует приложению или +ÑиÑтемному ÑервиÑу. По UID android определÑет политику power saving. +Так же возможно, что глюк ÑвÑзан Ñ ÐºÑ€Ð¸Ð²Ñ‹Ð¼ драйвером Ñотового интерфейÑа от китайцев, поÑкольку при иÑпользовании +wifi такого не наблюдаетÑÑ. suspend обработчика nfqueue на обычном linux не вызывает подобных фатальных поÑледÑтвий. +Изменение UID на низкий (--uid 1 подойдет) позволÑет решить Ñту проблему. +Глюк был замечен на android 8.1 на девайÑе, оÑнованном на платформе mediatek. + +Ответ на Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÑƒÐ´Ð° помеÑтить 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 + +Как найти Ñтратегию обхода Ñотового оператора : проще вÑего раздать инет на комп Ñ linux. +Можно запиÑать live image linux на флÑшку и загрузитьÑÑ Ñ Ð½ÐµÐµ или запуÑтить виртуалку Ñ linux +и проброÑить в нее usb уÑтройÑтво от режима модема Ñ Ñ‚ÐµÐ»ÐµÑ„Ð¾Ð½Ð°. +Ðа компе Ñ linux прогнать Ñтандартную процедуру blockcheck. При переноÑе правил на телефон уменьшить TTL на 1, +еÑли правила Ñ TTL приÑутÑтвуют в Ñтратегии. +Можно развернуть rootfs какого-нибудь диÑтрибутива linux прÑмо на телефоне, Ð¸Ð¼ÐµÑ Ñ€ÑƒÑ‚Ð°. +Это лучше вÑего делать Ñ ÐºÐ¾Ð¼Ð¿Ð° через adb shell. +ЕÑли компа нет, то Ñто единÑтвенный вариант, Ñ…Ð¾Ñ‚Ñ Ð¸ неудобный. +Подойдет что-то легковеÑное, например, alpine или даже openwrt. +ЕÑли Ñто не ÑмулÑтор android, то универÑÐ°Ð»ÑŒÐ½Ð°Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° - arm (любой вариант). +ЕÑли вы точно знаете, что ОС у Ð²Ð°Ñ 64-разрÑднаÑ, то лучше вмеÑто arm - aarch64. + +mount --bind /dev /data/linux/dev +mount --bind /proc /data/linux/proc +mount --bind /sys /data/linux/sys +chroot /data/linux + +Первым делом вам нужно будет один раз наÑтроить DNS. Сам он не заведетÑÑ. + +echo nameserver 1.1.1.1 >/etc/resolv.conf + +Далее нужно ÑредÑтвами пакетного менеджера уÑтановить iptables-legacy. ОбÑзательно ÐЕ iptables-nft, +который как правило приÑутÑтвует по умолчанию. Ð’ Ñдре android нет nftables. +ls -la $(which iptables) +Линк должен указывать на legacy вариант. +ЕÑли нет, значит уÑтанавливайте нужные пакеты вашего диÑтрибутива, и убеждайтеÑÑŒ в правильноÑти ÑÑылок. +iptables -S +Так можно проверить, что ваш iptables увидел то, что туда наÑовал android. iptables-nft выдаÑÑ‚ ошибку. +Далее качаем zapret в /opt/zapret. Обычные дейÑÑ‚Ð²Ð¸Ñ Ñ install_prereq.sh, install_bin.sh, blockcheck.sh. + +Учтите, что Ñтратегии обхода Ñотового оператора и домашнего wifi вероÑтно будут разные. +Выделить Ñотового оператора легко через параметр iptables -o <Ð¸Ð¼Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа>. Ð˜Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть, например, ccmni0. +Его легко увидеть через ifconfig. +Wifi Ñеть - обычно wlan0. + +Переключать blockcheck между оператором и wifi можно вмеÑте Ñо вÑем инетом - включив или выключив wifi. +ЕÑли найдете Ñтратегию Ð´Ð»Ñ wifi и впишите ее в автоÑтарт, то при подключении к другому wifi +она может не Ñработать или вовÑе что-то поломать, потому подумайте Ñтоит ли. +Может быть лучше Ñделать Ñкрипты типа "запуÑтить обход домашнего wifi", "ÑнÑÑ‚ÑŒ обход домашнего wifi", +и пользоватьÑÑ Ð¸Ð¼Ð¸ по необходимоÑти из терминала. +Ðо домашний wifi лучше вÑе-же обходить на роутере. + + +Мобильные модемы и роутеры 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 +------- + +ОпиÑано в docs/windows.txt + + +Другие прошивки +--------------- + +Ð”Ð»Ñ ÑтатичеÑких бинариков не имеет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð° чем они запущены : PC, android, приÑтавка, роутер, любой другой девайÑ. +Подойдет Ð»ÑŽÐ±Ð°Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ°, диÑтрибутив linux. СтатичеÑкие бинарники запуÑÑ‚ÑÑ‚ÑÑ Ð½Ð° вÑем. +Им нужно только Ñдро Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ð¼Ð¸ опциÑми Ñборки или модулÑми. +Ðо кроме бинариков в проекте иÑпользуютÑÑ ÐµÑ‰Ðµ и Ñкрипты, в которых задейÑтвуютÑÑ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ +Ñтандартные программы. + +ОÑновные причины почему Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ñто так взÑÑ‚ÑŒ и уÑтановить Ñту ÑиÑтему на что угодно : + * отÑутÑтвие доÑтупа к девайÑу через shell + * отÑутÑтвие рута + * отÑутÑтвие раздела r/w Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи и ÑнергонезавиÑимого Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² + * отÑутÑтвие возможноÑти поÑтавить что-то в автозапуÑк + * отÑутÑтвие cron + * неотключаемый flow offload или Ð´Ñ€ÑƒÐ³Ð°Ñ Ð¿Ñ€Ð¾Ð¿Ñ€Ð¸ÐµÑ‚Ð°Ñ€Ñ‰Ð¸Ð½Ð° в netfilter + * недоÑтаток модулей Ñдра или опций его Ñборки + * недоÑтаток модулей 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. +С их помощью можно компенÑировать недоÑтаток ПО оÑновной прошивки, за иÑключением Ñдра. + +Можно попытатьÑÑ Ð¸Ñпользовать sysv init script таким образом, как Ñто опиÑано в разделе +"Прикручивание к ÑиÑтеме ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°ÐµÑ€Ð²Ð¾Ð»Ð¾Ð¼ или Ñвоей ÑиÑтеме запуÑка". +Ð’ Ñлучае ругани на отÑутÑтвие каких-то базовых программ, их Ñледует воÑполнить поÑредÑтвом entware. +Перед запуÑком Ñкрипта путь к дополнительным программам должен быть помещен в PATH. + +Подробное опиÑание наÑтроек Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… прошивок выходит за рамки данного проекта. + +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 и Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñофта + * flow offload предÑказуемо, Ñтандартно и выборочно управлÑем, а так же отключаем + * в репозитории еÑÑ‚ÑŒ вÑе модули Ñдра, их можно доуÑтановить через opkg. Ñдро переÑобирать не нужно. + * в репозитории еÑÑ‚ÑŒ вÑе модули iptables, их можно доуÑтановить через opkg + * в репозитории еÑÑ‚ÑŒ огромное количеÑтво Ñтандартных программ и дополнительного Ñофта + * наличие SDK, позволÑющего Ñобрать недоÑтающее + + +Обход блокировки через Ñторонний хоÑÑ‚ +------------------------------------- + +ЕÑли не работает автономный обход, приходитÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÑÑ‚ÑŒ трафик через Ñторонний хоÑÑ‚. +ПредлагаетÑÑ Ð¸Ñпользовать прозрачный редирект через socks5 поÑредÑтвом iptables+redsocks, либо iptables+iproute+vpn. +ÐаÑтройка варианта Ñ redsocks на openwrt опиÑана в redsocks.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/redsocks.txt b/docs/redsocks.txt new file mode 100644 index 0000000..c3bc990 --- /dev/null +++ b/docs/redsocks.txt @@ -0,0 +1,196 @@ +Данный мануал пишетÑÑ Ð½Ðµ как копипаÑÑ‚Ð½Ð°Ñ Ð¸Ð½ÑтрукциÑ, а как помощь уже Ñоображающему. +ЕÑли вы не знаете оÑнов Ñетей, linux, openwrt, а пытаетеÑÑŒ что-то ÑкопипаÑтить отÑюда без малейшего +Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÑмыÑла, то маловероÑтно, что у Ð²Ð°Ñ Ñ‡Ñ‚Ð¾-то заработает. Ðе тратье Ñвое Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ð¿Ñ€Ð°Ñно. +Цель - донеÑти принципы как Ñто наÑтраиваетÑÑ Ð²Ð¾Ð¾Ð±Ñ‰Ðµ, а не указать какую буковку где впиÑать. + + +Прозрачный выборочный заворот tcp Ñоединений на роутере через socks + +Tor поддерживает "из коробки" режим transparent proxy. Это можно иÑпользовать в теории, но практичеÑки - только на роутерах Ñ 128 мб памÑти и выше. И тор еще и тормозной. +Другой вариант напрашиваетÑÑ, еÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ доÑтуп к какой-нибудь unix ÑиÑтеме Ñ SSH, где Ñайты не блокируютÑÑ. Ðапример, у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ VPS вне РоÑÑии. +ПонÑтийно требуютÑÑ Ñледующие шаги : +1) ВыделÑÑ‚ÑŒ IP, на которые надо прокÑировать трафик. У Ð½Ð°Ñ ÑƒÐ¶Ðµ имеетÑÑ ipset "zapret", Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ отработана. +2) Сделать так, чтобы вÑе Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸ загрузке ÑиÑтемы на некотором порту возникал socks. +3) УÑтановить transparent ÑокÑификатор. Redsocks прекраÑно подошел на Ñту роль. +4) Завернуть через iptables или nftables трафик Ñ Ð¿Ð¾Ñ€Ñ‚Ð° Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ 443 и на ip адреÑа из ipset/nfset 'zapret' на ÑокÑификатор +Тоже Ñамое Ñделать Ñ ipset/nfset 'ipban' Ð´Ð»Ñ Ð²Ñех tcp портов. +Буду раÑÑматривать ÑиÑтему на базе openwrt, где уже уÑтановлена ÑиÑтема обхода dpi "zapret". +ЕÑли вам не нужны функции обхода DPI, можно выбрать режим MODE=filter. + + +* Сделать так, чтобы вÑе Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸ загрузке ÑиÑтемы на некотором порту возникал 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.127; + local_port = 1099; + ip = 127.0.0.1; + port = 1098; + type = socks5; +} +--------------------------- + +ПоÑле чего перезапуÑкаем : /etc/init.d/redsocks restart +Смотрим поÑвилÑÑ Ð»Ð¸ лиÑтенер : netstat -tnlp | grep 1099 + +Ð’ zapret Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ DNAT на Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ lo иÑпользуетÑÑ 127.0.0.127. +Ко вÑем оÑтальным адреÑам из 127.0.0.0/8 DNAT может быть заблокирован. Читайте readme.txt про route_localnet. + +* Завертывание Ñоединений через iptables + +!! ВерÑии OpenWRT до 21.02 включительно иÑпользуют iptables + fw3. Более новые перешили на nftables по умолчанию. +!! Ð’ новых OpenWRT можно ÑнеÑти firewall4 и nftables, заменив их на firewall3 + iptables +!! ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к openwrt, где иÑпользуетÑÑ iptables. + +Будем завертывать любые tcp ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ip из ipset "ipban" и https на ip из ipset "zapret", за иÑключением ip из ipset "nozapret". + +--- /etc/firewall.user ----- +SOXIFIER_PORT=1099 + +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan4_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 -m set ! --match-set nozapret dst -j REDIRECT --to-port $SOXIFIER_PORT + ipt OUTPUT -t nat -o $ext_device -p tcp -m set --match-set ipban dst -m set ! --match-set nozapret dst -j REDIRECT --to-port $SOXIFIER_PORT +done + +prepare_route_localnet + +ipt prerouting_lan_rule -t nat -p tcp --dport 443 -m set --match-set zapret dst -m set ! --match-set nozapret -j DNAT --to $TPWS_LOCALHOST4:$SOXIFIER_PORT +ipt prerouting_lan_rule -t nat -p tcp -m set --match-set ipban dst -m set ! --match-set nozapret -j DNAT --to $TPWS_LOCALHOST4:$SOXIFIER_PORT +---------------------------- + +ВнеÑти параметр "reload" в указанное меÑто : +--- /etc/config/firewall --- +config include + option path '/etc/firewall.user' + option reload '1' +---------------------------- + +ПерезапуÑк firewall : /etc/init.d/firewall restart + + +* Завертывание Ñоединений через nftables + +!! Только Ð´Ð»Ñ Ð²ÐµÑ€Ñий OpenWRT Ñтарше 21.02 + +nftables не могут иÑпользовать ipset. ВмеÑто ipset ÑущеÑтвует аналог - nfset. +nfset ÑвлÑетÑÑ Ñ‡Ð°Ñтью таблицы nftable и принадлежит только к ней. ÐдреÑÐ°Ñ†Ð¸Ñ nfset из другой nftable невозможна. +Скрипты ipset/* в Ñлучае nftables иÑпользуют nfset-Ñ‹ в таблице zapret. +Чтобы иÑпользовать Ñти nfset-Ñ‹ в Ñвоих правилах, необходимо ÑинхронизироватьÑÑ Ñ Ð¸Ñ… Ñозданием и вноÑить Ñвои цепочки в nftable "zapret". +Ð”Ð»Ñ Ñтого ÑущеÑтвуют хуки - Ñкрипты, вызываемые из zapret на определенных ÑтадиÑÑ… инициализации фаервола. + +РаÑкоментируейте в /opt/zapret/config Ñтрочку +INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up" + +Создайте файл /etc/firewall.zapret.hook.post_up и приÑвойте ему chmod 755. + +--- /etc/firewall.zapret.hook.post_up --- +#!/bin/sh + +SOXIFIER_PORT=1099 + +. /opt/zapret/init.d/openwrt/functions + +cat << EOF | nft -f - 2>/dev/null + delete chain inet $ZAPRET_NFT_TABLE my_output + delete chain inet $ZAPRET_NFT_TABLE my_prerouting +EOF + +prepare_route_localnet + +cat << EOF | nft -f - + add chain inet $ZAPRET_NFT_TABLE my_output { type nat hook output priority -102; } + flush chain inet $ZAPRET_NFT_TABLE my_output + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif meta l4proto tcp ip daddr @ipban ip daddr != @nozapret dnat to $TPWS_LOCALHOST4:$SOXIFIER_PORT + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret dnat to $TPWS_LOCALHOST4:$SOXIFIER_PORT + + add chain inet $ZAPRET_NFT_TABLE my_prerouting { type nat hook prerouting priority -102; } + flush chain inet $ZAPRET_NFT_TABLE my_prerouting + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif meta l4proto tcp ip daddr @ipban ip daddr != @nozapret dnat to $TPWS_LOCALHOST4:$SOXIFIER_PORT + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret dnat to $TPWS_LOCALHOST4:$SOXIFIER_PORT +EOF +---------------------------- + +ПерезапуÑк firewall : /etc/init.d/zapret restart_fw + + +* Проверка + +Ð’Ñе, теперь можно проверÑÑ‚ÑŒ : +/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 +# должно выдать Ñтраницу diff --git a/docs/windows.eng.md b/docs/windows.eng.md new file mode 100644 index 0000000..e624bec --- /dev/null +++ b/docs/windows.eng.md @@ -0,0 +1,161 @@ +### tpws + +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 -d tpws --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). + +`--oob` , `--mss` and `--disorder` do not work. +RST detection in autohostlist scheme may not work. +WSL may glitch with splice. `--nosplice` may be required. + + +### winws + +`winws` is `nfqws` version for windows. It's based on `windivert`. Most functions are working. +Large ip filters (ipsets) are not possible. Forwarded traffic and connection sharing are not supported. +Administrator rights are required. + +Working with packet filter consists of two parts + +1. In-kernel packet selection and passing selected packets to a packet filter in user mode. +In *nix it's done by `iptables`, `nftables`, `pf`, `ipfw`. +2. User mode packet filter processes packets and does DPI bypass magic. + +Windows does not have part 1. No `iptables` exist. That's why 3rd party packet redirector is used. +It's called `windivert`. It works starting from `windows 7`. Kernel driver is signed but it may require to disable secure boot +or update windows 7. Read below for windows 7 windivert signing info. + +Task of `iptables` is done inside `winws` through `windivert` filters. `Windivert` has it's own [filter language](https://reqrypt.org/windivert-doc.html#filter_language). +`winws` can automate filter construction using simple ip version and port filter. Raw filters are also supported. + +``` + --wf-iface=[:] ; numeric network interface and subinterface indexes + --wf-l3=ipv4|ipv6 ; L3 protocol filter. multiple comma separated values allowed. + --wf-tcp=[~]port1[-port2] ; TCP port filter. ~ means negation. multiple comma separated values allowed. + --wf-udp=[~]port1[-port2] ; UDP port filter. ~ means negation. multiple comma separated values allowed. + --wf-raw=|@ ; raw windivert filter string or filename + --wf-save= ; save windivert filter string to a file and exit + --ssid-filter=ssid1[,ssid2,ssid3,...] ; enable winws only if any of specified wifi SSIDs connected + --nlm-filter=net1[,net2,net3,...] ; enable winws only if any of specified NLM network is connected. names and GUIDs are accepted. + --nlm-list[=all] ; list Network List Manager (NLM) networks. connected only or all. +``` + +`--wf-l3`, `--wf-tcp`, `--wf-udp` can take multiple comma separated arguments. + +Interface indexes can be discovered using this command : `netsh int ip show int` + +If you can't find index this way use `winws --debug` to see index there. Subinterface index is almost always 0 and you can omit it. + +Multiple `winws` processes are allowed. However, it's discouraged to intersect their filters. + +`--ssid-filter` allows to enable `winws` only if specified wifi networks are connected. `winws` auto detects SSID appearance and disappearance. +SSID names must be written in the same case as the system sees them. This option does not analyze routing and does not detect where traffic actually goes. +If multiple connections are available, the only thing that triggers `winws` operation is wifi connection presence. That's why it's a good idea to add also `--wf-iface` filter to not break ethernet, for example. + +`--nlm-filter` is like `--ssid-filter` but works with names or GUIDs from Network List Manager. NLM names are those you see in Control Panel "Network and Sharing Center". +NLM networks are adapter independent. Usually MAC address of the default router is used to distinugish networks. NLM works with any type of adapters : ethernet, wifi, vpn and others. +That's why NLM is more universal than `ssid-filter`. + +`Cygwin` shell does not run binaries if their directory has it's own copy of `cygwin1.dll`. +That's why exists separate standalone version in `binaries/win64/zapret-tpws`. +`Cygwin` is required for `blockcheck.sh` support but `winws` itself can be run standalone without cygwin. + +How to get `windows 7` and `winws` compatible `cygwin` : +``` +curl -O https://www.cygwin.com/setup-x86_64.exe +setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215 +``` +You must choose to install `curl`. To compile from sources install `gcc-core`,`make`,`zlib-devel`. + +`winws` requires `cygwin1.dll`, `windivert.dll`, `windivert64.sys`. You can take them from `binaries/win64/zapret-winws`. + +It's possible to build x86 32-bit version but this version is not shipped. You have to build it yourself. +32-bit `windivert` can be downloaded from it's developer github. Required version is 2.2.2. +There's no `arm64` signed `windivert` driver and no `cygwin`. +But it's possible to use unsigned driver version in test mode and user mode components with x64 emulation. +x64 emulation requires `windows 11` and not supported in `windows 10`. + +### windows 7 windivert signing + +Requirements for windows driver signing have changed in 2021. +Official free updates of windows 7 ended in 2020. +After 2020 for the years paid updates were available (ESU). +One of the updates from ESU enables signatures used in windivert 2.2.2-A. +There are several options : + +1. Take `windivert64.sys` and `windivert.dll` version `2.2.0-C` or `2.2.0-D` from [here](https://reqrypt.org/download). +Replace these 2 files in every location they are present. +In `zapret-win-bundle` they are in `zapret-winws` и `blockcheck/zapret/nfq` folders. +However this option still requires 10+ year old patch that enables SHA256 signatures. + +2. [Hack ESU](https://hackandpwn.com/windows-7-esu-patching) + +3. Use `UpdatePack7R2` from simplix : https://blog.simplix.info +If you are in Russia or Belarus temporary change region in Control Panel. + +### blockcheck + +`blockcheck.sh` is written in posix shell and uses some standard posix utilites. +Windows does not have them. To execute `blockcheck.sh` use `cygwin` command prompt run as administrator. +It's not possible to use `WSL`. It's not the same as `cygwin`. +First run once `install_bin.sh` then `blockcheck.sh`. + +Backslashes in windows paths shoud be doubled. Or use cygwin path notation. +``` +cd "C:\\Users\\vasya" +cd "C:/Users/vasya" +cd "/cygdrive/c/Users/vasya" +``` +`Cygwin` is required only for `blockcheck.sh`. Standalone `winws` can be run without it. + + +### auto start + +To start `winws` with windows use windows task scheduler. There are `task_*.cmd` batch files in `binaries/win64/zapret-winws`. +They create, remove, start and stop scheduled task `winws1`. They must be run as administrator. + +Edit `task_create.cmd` and write your `winws` parameters to `%WINWS1%` variable. If you need multiple `winws` instances +clone the code in all cmd files to support multiple tasks `winws1,winws2,winws3,...`. + +Tasks can also be controlled from GUI `taskschd.msc`. + +Also you can use windows services the same way with `service_*.cmd`. + + +### zapret-win-bundle + +To make your life easier there's ready to use [bundle](https://github.com/bol-van/zapret-win-bundle) with `cygwin`,`blockcheck` and `winws`. + +* `/zapret-winws` - standalone version of `winws` for everyday use. does not require any other folders. +* `/zapret-winws/_CMD_ADMIN.cmd` - open `cmd` as administrator in the current folder +* `/blockcheck/blockcheck.cmd` - run `blockcheck` with logging to `blockcheck/blockcheck.log` +* `/cygwin/cygwin.cmd` - run `cygwin` shell as current user +* `/cygwin/cygwin-admin.cmd` - run `cygwin` shell as administrator + +There're aliases in cygwin shell for `winws`,`blockcheck`,`ip2net`,`mdig`. No need to mess with paths. +It's possible to send signals to `winws` using standard unix utilites : `pidof,kill,killall,pgrep,pkill`. +`Cygwin` shares common process list per `cygwin1.dll` copy. If you run a `winws` from `zapret-winws` +you won't be able to `kill` it because this folder contain its own copy of `cygwin1.dll`. + +It's possible to use `cygwin` shell to make `winws` debug log. Use `tee` command like this : + +``` +winws --debug --wf-tcp=80,443 | tee winws.log +unix2dos winws.log +``` + +`winws.log` will be in `cygwin/home/`. `unix2dos` helps with `windows 7` notepad. It's not necessary in `Windows 10` and later. diff --git a/docs/windows.txt b/docs/windows.txt new file mode 100644 index 0000000..b71d7ff --- /dev/null +++ b/docs/windows.txt @@ -0,0 +1,222 @@ +tpws +---- + +ЗапуÑк tpws возможен только в Linux варианте под WSL. +Ðативного варианта под Windows нет, поÑкольку он иÑпользует epoll, которого под windows не ÑущеÑтвует. + +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 -d tpws --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). + +Ðе работают функции --oob и --mss из-за ограничений реализации WSL. +--disorder не работает из-за оÑобенноÑтей tcp/ip Ñтека windows. +Может не Ñрабатывать детект RST в autohostlist. +WSL может глючить Ñо splice, Ð¿Ñ€Ð¸Ð²Ð¾Ð´Ñ Ðº зацикливанию процеÑÑа. Может потребоватьÑÑ --nosplice. +Ðе поддерживаетÑÑ tcp user timeout. +Чтобы избавитьÑÑ Ð¾Ñ‚ иÑообщений об ошибке добавлÑйте "--local-tcp-user-timeout=0 --remote-tcp-user-timeout=0". +Эти ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ информативные, на работу они не влиÑÑŽÑ‚. + + +winws +----- + +Это вариант пакетного фильтра nfqws Ð´Ð»Ñ Windows, поÑтроенный на базе windivert. +Ð’Ñе функции работоÑпоÑобны, однако функционал ipset отÑутÑтвует. Фильтры по большому количеÑтву IP адреÑов невозможны. +Работа Ñ Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ñщим трафиком, например в Ñлучае "раÑшариваниÑ" ÑоединениÑ, не проверÑлаÑÑŒ и не гарантируетÑÑ. +Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ windivert требуютÑÑ Ð¿Ñ€Ð°Ð²Ð° админиÑтратора. +СпецифичеÑкие Ð´Ð»Ñ unix параметры, такие как --uid, --user и тд, иÑключены. Ð’Ñе оÑтальные параметры аналогичны nfqws и dvtws. + +Работа Ñ Ð¿Ð°ÐºÐµÑ‚Ð½Ñ‹Ð¼ фильтром оÑнована на двух дейÑтвиÑÑ…. +Первое - выделение перенаправлÑемого трафика в режиме Ñдра и передача его пакетному фильтру в user mode. +Второе - ÑобÑтвенно обработка перенаправленных пакетов в пакетном фильтре. + +Ð’ windows отÑутÑтвуют вÑтроенные ÑредÑтва Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ°, такие как iptables, nftables, pf или ipfw. +ПоÑтому иÑпользуетÑÑ Ñторонний драйвер Ñдра windivert. Он работает, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ windows 7. Ðа ÑиÑтемах Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ +secure boot могут быть проблемы из-за подпиÑи драйвера. Ð’ Ñтом Ñлучае отключите secureboot или включите режим testsigning. +Ðа windows 7 вероÑтно будут проблемы Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¾Ð¹ windivert. Читайте ниже ÑоответÑтвующий раздел. + +Задача iptables в winws решаетÑÑ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¼Ð¸ ÑредÑтвами через фильтры windivert. +У windivert ÑущеÑтвует ÑобÑтвенный Ñзык фильтров, похожий на Ñзык фильтров wireshark. +Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ фильтрам windivert : https://reqrypt.org/windivert-doc.html#filter_language +Чтобы не пиÑать Ñложные фильтры вручную, предуÑмотрены различные упрощенные варианты автоматичеÑкого поÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð². + + --wf-iface=[.] ; чиÑловые индекÑÑ‹ интерфейÑа и Ñуб-интерфейÑа + --wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6. + --wf-tcp=[~]port1[-port2] ; фильтр портов Ð´Ð»Ñ tcp. ~ означает отрицание + --wf-udp=[~]port1[-port2] ; фильтр портов Ð´Ð»Ñ udp. ~ означает отрицание + --wf-raw=|@ ; задать напрÑмую фильтр windivert из параметра или из файла. имени файла предшеÑтвует Ñимвол @. + --wf-save= ; Ñохранить ÑконÑтруированный фильтр windivert в файл Ð´Ð»Ñ Ð¿Ð¾Ñледующей правки вручную + --ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена Ð»ÑŽÐ±Ð°Ñ Ð¸Ð· указанных wifi Ñетей + --nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена Ð»ÑŽÐ±Ð°Ñ Ð¸Ð· указанных Ñетей NLM + --nlm-list[=all] ; вывеÑти ÑпиÑок Ñетей NLM. по умолчанию только подключенных, all - вÑех. +Параметры --wf-l3, --wf-tcp, --wf-udp могут брать неÑколько значений через запÑтую. + +Ðомера интерфейÑов можно узнать так : netsh int ip show int. +Ðекоторых типы Ñоединений там не увидеть. Ð’ Ñтом Ñлучае запуÑкайте winws Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --debug и Ñмотрите IfIdx там. +SubInterface иÑпользуетÑÑ windivert, но практичеÑки вÑегда 0, его можно не указывать. ВероÑтно он нужен в редких ÑлучаÑÑ…. + +КонÑтруктор фильтров автоматичеÑки включает входÑщие tcp пакеты Ñ tcp synack и tcp rst Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ работы функций +autottl и autohostlist. При включении autohostlist так же перенаправлÑÑŽÑ‚ÑÑ Ð¿Ð°ÐºÐµÑ‚Ñ‹ данных Ñ http redirect Ñ ÐºÐ¾Ð´Ð°Ð¼Ð¸ 302 и 307. +Ð’Ñегда добавлÑетÑÑ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€ на иÑключение не-интернет адреÑов ipv4 и ipv6. +Ð”Ð»Ñ Ñложных неÑтандартных Ñценариев могут потребоватьÑÑ Ñвои фильтры. Логично будет начать Ñо Ñтандартного шаблона, +Ñохраненного через --wf-save. Ðужно править файл и подÑовывать его в параметре --wf-raw. МакÑимальный размер фильтра - 8 Kb. + +Можно запуÑкать неÑколько процеÑÑов winws Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ ÑтратегиÑми. Однако, не Ñледует делать переÑекающиеÑÑ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ñ‹. + +Ð’ --ssid-filter можно через запÑтую задать неограниченное количеÑтво имен wifi Ñетей (SSID). ЕÑли задана Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одна Ñеть, +то winws включаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾, еÑли подключен указанный SSID. ЕÑли SSID иÑчезает, winws отключаетÑÑ. ЕÑли SSID поÑвлÑетÑÑ Ñнова, +winws включаетÑÑ. Это нужно, чтобы можно было применÑÑ‚ÑŒ раздельное дурение к каждой отдельной wifi Ñети. +ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñетей должны быть напиÑаны в том региÑтре, в котором их видит ÑиÑтема. Сравнение идет Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра ! +При Ñтом нет никаких проверок куда реально идет трафик. ЕÑли одновременно подключен, допуÑтим, ethernet, +и трафик идет туда, то дурение включаетÑÑ Ð¸ выключаетÑÑ Ð¿Ñ€Ð¾Ñто по факту Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ wifi Ñети, на которую трафик может и не идти. +И Ñто может Ñломать дурение на ethernet. ПоÑтому полезно так же будет добавить фильтр --wf-iface на Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа wifi адаптера, +чтобы не трогать другой трафик. + +--nlm-filter аналогичен --ssid-filter, но работает Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ или GUIDами Ñетей Network List Manager (NLM). +Это те Ñети, которые вы видите в панели ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² разделе "Центр ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑетÑми и общим доÑтупом". +Под Ñетью подразумеваетÑÑ Ð½Ðµ конкретный адаптер, а именно Ñетевое окружение конкретного подключениÑ. +Обычно проверÑетÑÑ mac Ð°Ð´Ñ€ÐµÑ ÑˆÐ»ÑŽÐ·Ð°. К Ñети можно подключитьÑÑ Ñ‡ÐµÑ€ÐµÐ· любой адаптер, и она оÑтанетÑÑ Ñ‚Ð¾Ð¹ же Ñамой. +ЕÑли подключитьÑÑ, допуÑтим, к разными роутерам по кабелю, то будут разные Ñети. +РеÑли к одному роутеру через 2 разных Ñетевых карточки на том же компе - будет одна Ñеть. +NLM абÑтрагирует типы Ñетевых адаптеров. Он работает как Ñ wifi, так и Ñ ethernet и любыми другими. +ПоÑтому Ñто более универÑальный метод, чем ssid фильтр. +Однако, еÑÑ‚ÑŒ и неприÑÑ‚Ð½Ð°Ñ Ñторона. Ð’ windows 7 вы легко могли ткнуть на иконку Ñети и выбрать тип : private или public. +Там же вы могли поÑмотреть ÑпиÑок Ñетей и обьединить их. Чтобы, допуÑтим, вы могли подключатьÑÑ Ð¿Ð¾ кабелю и wifi +к одному роутеру, и ÑиÑтема Ñти Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð²Ð¾Ñпринимала как одну Ñеть. +Ð’ Ñледующих верÑиÑÑ… windows они Ñти возможноÑти Ñильно порезали. Похоже нет вÑтроенных ÑредÑтв полноценно управлÑÑ‚ÑŒ +network locations в win10/11. Кое-что еÑÑ‚ÑŒ в powershell. +Можно поковырÑÑ‚ÑŒÑÑ Ð½Ð°Ð¿Ñ€Ñмую в рееÑтре здеÑÑŒ : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList +Ðужно менÑÑ‚ÑŒ ProfileGUID в Signatures\Unmanaged. Имена можно поменÑÑ‚ÑŒ в Profiles. +ЕÑÑ‚ÑŒ кое-какие Ñторонние утилиты. Кое-что находитÑÑ, позволÑющее поÑмотреть и удалить network profiles, но не обьединить. +Факт, что в ms они Ñто Ñильно иÑпортили. Движок network list вÑе тот же, и он ÑпоÑобен на вÑе то, что было в win7. +Можно не боротьÑÑ Ñ Ñтой проблемой, а проÑто указывать через запÑтую те Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñетей или GUIDÑ‹, которые выбрала ÑиÑтема. +Или еÑли у Ð²Ð°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ wifi, то иÑпользовать --ssid-filter. Там Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ еÑÑ‚ÑŒ гарантиÑ, что SSID ÑоответÑтвуют реальноÑти, +а ÑиÑтема их не назвала как-то по-Ñвоему. + +ЕÑли в путÑÑ… приÑутÑтвуют национальные Ñимволы, то при вызове winws из cmd или bat кодировку нужно иÑпользовать OEM. +Ð”Ð»Ñ Ñ€ÑƒÑÑкого Ñзыка Ñто 866. Пути Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°Ð¼Ð¸ нужно брать в кавычки. + +СущеÑтвует неочевидный момент, каcаемый запуÑка winws из cygwin шелла. ЕÑли в директории, где находитÑÑ nfqws, находитÑÑ +ÐºÐ¾Ð¿Ð¸Ñ cygwin1.dll, winws не запуÑтитÑÑ. ПоÑтому в binaries/win64 ÑущеÑтвует Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ zapret-winws, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ +комплект Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка без cygwin. Его вы и берете Ð´Ð»Ñ Ð¿Ð¾Ð²Ñедневного иÑпользованиÑ. +ЕÑли нужен запуÑк под cygwin, то Ñледует запуÑкать из binaries/win64. Это нужно Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ blockcheck. +Из cygwin шелла можно поÑылать winws Ñигналы через kill точно так же, как в *nix. + +Как получить ÑовмеÑтимый Ñ windows 7 и winws cygwin : +curl -O https://www.cygwin.com/setup-x86_64.exe +setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215 +Следует выбрать уÑтановку curl. + +Ð”Ð»Ñ Ñборки из иÑходников требуетÑÑ gcc-core,make,zlib-devel. +Собирать из директории nfq командой "make cygwin". +winws требует cygwin1.dll, windivert.dll, windivert64.sys. Их можно взÑÑ‚ÑŒ из binaries/win64/zapret-winws. +ВерÑию Ð´Ð»Ñ 32-битных x86 windows Ñобрать можно, но такие ÑиÑтемы уже уходÑÑ‚ в прошлое, поÑтому еÑли надо - Ñобирайте Ñами. +32-битный windivert можно взÑÑ‚ÑŒ Ñ Ñайта разработчика. ТребуетÑÑ Ð²ÐµÑ€ÑÐ¸Ñ 2.2.2. + +Ð”Ð»Ñ arm64 windows нет подпиÑанного драйвера windivert и нет cygwin. +Однако, ÑмулÑÑ†Ð¸Ñ x64 windows 11 позволÑет иÑпользовать вÑе, кроме WinDivert64.sys без изменений. +Ðо при Ñтом надо заменить WinDivert64.sys на неподпиÑанную arm64 верÑию и уÑтановить режим testsigning. + +Windows 7 и windivert +--------------------- + +Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº подпиÑи драйверов windows изменилиÑÑŒ в 2021 году. +Официальные беÑплатные Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ windows 7 закончилиÑÑŒ в 2020. +ПоÑле Ñтого неÑколько лет продолжали идти платные Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ программе ESU. +Именно в Ñтих ESU обновлениÑÑ… находитÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ Ñдра windows 7, позволÑющиее загрузить драйвер +windivert 2.2.2-A, который идет в поÑтавке zapret. +ПоÑтому варианты Ñледующие : + +1) ВзÑÑ‚ÑŒ windivert64.sys и windivert.dll верÑии 2.2.0-C или 2.2.0-D отÑюда : https://reqrypt.org/download +и заменить Ñти 2 файла. +Ð’ zapret-win-bundle еÑÑ‚ÑŒ отдельных 2 меÑта, где находитÑÑ winws : zapret-winws и blockcheck/zapret/nfq. +Ðадо менÑÑ‚ÑŒ в обоих меÑтах. +Этот вариант проверен и должен работать. Тем не менее патч 10 летней давноÑти, который включает SHA256 +Ñигнатуры, вÑе еще необходим. + +2) Взломать ESU : +https://hackandpwn.com/windows-7-esu-patching/ +http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html +и обновить ÑиÑтему + +3) ИÑпользовать UpdatePack7R2 от simplix : https://blog.simplix.info +Ðо Ñ Ñтим паком еÑÑ‚ÑŒ проблема. Ðвтор из Украины, он очень обиделÑÑ Ð½Ð° руÑÑких. +ЕÑли в панели ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтоит регион RU или BY, поÑвлÑетÑÑ Ð½ÐµÐ¿Ñ€Ð¸Ñтный диалог. +Чтобы Ñту проблему обойти, можно поÑтавить временно любой другой регион, потом вернуть. +Так же нет никаких гарантий, что автор не наÑовал туда какой-то зловредный код. +ИÑпользовать на Ñвой Ñтрах и риÑк. +Более безопаÑный вариант - Ñкачать поÑледнюю нормальную довоенную верÑию : 22.2.10 +https://nnmclub.to/forum/viewtopic.php?t=1530323 +Ее доÑтаточно, чтобы windivert 2.2.2-A заработал на windows 7. + +blockcheck +---------- + +blockcheck.sh напиÑан на posix shell и требует некоторых Ñтандартных утилит posix. Ð’ windows, еÑтеÑтвенно, Ñтого нет. +Потому проÑто так запуÑтить blockcheck.sh невозможно. +Ð”Ð»Ñ Ñтого требуетÑÑ Ñкачать и уÑтановить cygwin так , как опиÑано в предыдущем разделе. +Следует запуÑтить от имени админиÑтратора cygwin shell через cygwin.bat. +Ð’ нем нужно пройти в директорию Ñ zapret. +Обратные ÑлÑши путей windows нужно удваивать, менÑÑ‚ÑŒ на прÑмые ÑлÑши, либо иÑпользовать отображение на unix path. +Корректный вариант 1 : cd "C:\\Users\\vasya" +Корректный вариант 2 : cd "C:/Users/vasya" +Корректный вариант 3 : cd "/cygdrive/c/Users/vasya" +Далее вÑе как в *nix : 1 раз ./install_bin.sh , затем ./blockcheck.sh. +WSL иÑпользовать нельзÑ, Ñто не то же Ñамое. + +cygwin Ð´Ð»Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¹ работы winws не нужен. Разве что вы хотите поÑылать winws SIGHUP Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‡Ð¸Ñ‚ÐºÐ¸ лиÑтов без перезапуÑка. + +автозапуÑк winws +---------------- + +Ð”Ð»Ñ Ð·Ð°Ð¿ÑƒÑка winws вмеÑте Ñ windows еÑÑ‚ÑŒ 2 варианта. Планировщик задач или Ñлужбы windows. + +Можно Ñоздавать задачи и управлÑÑ‚ÑŒ ими через конÑольную программу schtasks. +Ð’ директории binaries/win64/winws подготовлены файлы task_*.cmd . +Ð’ них реализовано Ñоздание, удаление, Ñтарт и Ñтоп одной копии процеÑÑа winws Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ из переменной %WINWS1%. +ИÑправьте параметры на нужную вам Ñтратегию. ЕÑли Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… фильтров применÑетÑÑ Ñ€Ð°Ð·Ð½Ð°Ñ ÑтратегиÑ, размножьте код +Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡ winws1,winws2,winws3,... + +Ðналогично наÑтраиваетÑÑ Ð²Ð°Ñ€Ð¸Ð°Ð½Ñ‚ запуÑка через Ñлужбы windows. Смотрите service_*.cmd. + +Ð’Ñе батники требуетÑÑ Ð·Ð°Ð¿ÑƒÑкать от имени админиÑтратора. + +УправлÑÑ‚ÑŒ задачами можно так же из графичеÑкой программы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼ taskschd.msc + +zapret-win-bundle +----------------- + +Можно не возитьÑÑ Ñ cygwin, а взÑÑ‚ÑŒ готовый пакет, включающий в ÑÐµÐ±Ñ cygwin и blockcheck : https://github.com/bol-van/zapret-win-bundle +Там Ñделан макÑимум удобÑтв Ð´Ð»Ñ ÑоÑÑ€ÐµÐ´Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð° Ñамом zapret, иÑÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ð¾Ð·Ð½ÑŽ Ñ ÑƒÑтановкой cygwin, +заходами в директории, запуÑками под админиÑтратором и прочими Ñугубо техничеÑкими моментами, в которых могут быть +ошибки и непониманиÑ, а новичок без базиÑа знаний может и вовÑе запутатьÑÑ. + +/zapret-winws - здеÑÑŒ вÑе, что нужно Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка winws в повÑедневном рабочем режиме. оÑтальное не нужно. +/zapret-winws/_CMD_ADMIN.cmd - получить командную Ñтроку cmd в Ñтой директории от имени админиÑтратора Ð´Ð»Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ winws +Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, вводимыми вручную +/blockcheck/blockcheck.cmd - доÑтаточно кликнуть по нему, чтобы пошел blockcheck Ñ Ð·Ð°Ð¿Ð¸Ñью лога в blockcheck/blockcheck.log +/cygwin/cygwin.cmd - запуÑк Ñреды cygwin bash под текущим пользователем +/cygwin/cygwin-admin.cmd - запуÑк Ñреды cygwin bash под админиÑтратором + +Ð’ Ñреде cygwin уже наÑтроены alias-Ñ‹ на winws,blockcheck,ip2net,mdig. С путÑми возитьÑÑ Ð½Ðµ нужно ! +Из cygwin можно не только теÑтировать winws, но и поÑылать Ñигналы. +ДоÑтупны команды pidof,kill,killall,pgrep,pkill. +Ðо важно понимать, что таким образом не выйдет поÑылать Ñигналы winws, запущенному из zapret-winws, +поÑкольку там Ñвой cygwin1.dll, и они не разделÑÑŽÑ‚ общее проÑтранÑтво процеÑÑов unix. +zapret-winws - Ñто отдельный комплект Ð´Ð»Ñ Ð¿Ð¾Ð²Ñедневного иÑпользованиÑ, не требующий что-то еще, но и не ÑвÑзанный Ñо Ñредой cygwin. + +Среду cygwin можно иÑпользовать Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи в файл дебаг-лога winws. Ð”Ð»Ñ Ñтого пользуйтеÑÑŒ командой tee. +winws --debug --wf-tcp=80,443 | tee winws.log +winws.log будет в cygwin/home/<имÑ_пользователÑ> +ЕÑли у Ð²Ð°Ñ windows 7, то блокнот не поймет переводы Ñтрок в Ñтиле unix. ВоÑпользуйтеÑÑŒ командой +unix2dos winws.log 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..878aa44 --- /dev/null +++ b/docs/wireguard/wireguard-mod.txt @@ -0,0 +1,250 @@ +!!! Эта инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð½Ð°Ð¿Ð¸Ñана еще до Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ wireguard в Ñдро linux. +!!! ПроцеÑÑ Ñборки Ð´Ð»Ñ in-tree модулей отличаетÑÑ. +!!! Цель данного чтива - дать идею Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñтов как можно иÑправить иÑходники wireguard +!!! Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð´Ð¾Ð»ÐµÐ½Ð¸Ñ DPI. Ðвтор не преÑледует цели поддерживать готовые патчи Ð´Ð»Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ… верÑий. +!!! ВмеÑто патчинга гораздо проще иÑпользовать навеÑное решение ipobfs. + +ПоÑвÑщено возможной блокировке в РФ 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..6d36f91 --- /dev/null +++ b/docs/wireguard/wireguard_iproute_openwrt.txt @@ -0,0 +1,645 @@ +Данный мануал пишетÑÑ Ð½Ðµ как копипаÑÑ‚Ð½Ð°Ñ Ð¸Ð½ÑтрукциÑ, а как помощь уже Ñоображающему. +ЕÑли вы не знаете оÑнов Ñетей, linux, openwrt, а пытаетеÑÑŒ что-то ÑкопипаÑтить отÑюда без малейшего +Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÑмыÑла, то маловероÑтно, что у Ð²Ð°Ñ Ñ‡Ñ‚Ð¾-то заработает. Ðе тратье Ñвое Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ð¿Ñ€Ð°Ñно. +Цель - донеÑти принципы как Ñто наÑтраиваетÑÑ Ð²Ð¾Ð¾Ð±Ñ‰Ðµ, а не указать какую буковку где впиÑать. + + +ЕÑÑ‚ÑŒ возможноÑÑ‚ÑŒ поднÑÑ‚ÑŒ Ñвой 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. + +ПонÑтийно необходимо выполнить Ñледующие шаги : +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. + +--- ЕÑли нет Ñвоего Ñервера --- + +Ðо еÑÑ‚ÑŒ конфиг от VPN провайдера или от друга "ВаÑи", который захотел Ñ Ð²Ð°Ð¼Ð¸ поделитьÑÑ. +Тогда вам не надо наÑтраивать Ñервер, задача упрощаетÑÑ. ДелаетÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ вариант наÑтройки +без masquerade (Ñм ниже). +Из конфига вытаÑкиваете приватный ключ Ñвоего пира и публичный ключ Ñервера, ip/host/port Ñервера, +иÑпользуете их в наÑтройках openwrt вмеÑто Ñгенеренных ÑамоÑтоÑтельно. + +--- ПоднÑтие Ñервера --- + +Wireguard был включен в Ñдро linux Ñ Ð²ÐµÑ€Ñии 5.6. +ЕÑли у Ð²Ð°Ñ Ñдро >=5.6, то доÑтаточно уÑтановить пакет wireguard-tools. Он Ñодержит user-mode компоненты wireguard. +ПоÑмотрите, возможно в вашем диÑтрибутиве Ñдро по умолчанию более Ñтарое, но в репозитории +имеютÑÑ Ð±Ñкпорты новых верÑий. Лучше будет обновить Ñдро из репозиториÑ. + +Ð’ репозитории может быть пакет wireguard-dkms. Это автоматизированное ÑредÑтво Ñборки +wireguard Ñ Ð¸Ñходников, в том чиÑле модуль Ñдра. Можно пользоватьÑÑ Ð¸Ð¼. + +Иначе вам придетÑÑ Ñобрать wireguard Ñамому. Ядро должно быть не ниже 3.10. +Ðа Ñервере должны быть уÑтановлены заголовки Ñдра (linux-headers-...) и компилÑтор gcc. + +# git clone --depth 1 https://git.zx2c4.com/wireguard-linux-compat +# cd wireguard-linux-compat/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-tools + +ДобавлÑем запиÑи в конфиги. + +--/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 Ñервера. + Конечно, оно Ñкорее вÑего заработает и так, потому что первый пакет пойдет от клиента к Ñерверу и тем Ñамым ÑоздаÑÑ‚ + запиÑÑŒ в conntrack. Ð’Ñе дальнейшие пакеты в обе Ñтороны подпадут под ÑоÑтоÑние ESTABLISHED и будут пропущены. + ЗапиÑÑŒ будет поддерживатьÑÑ Ð·Ð° Ñчет периодичеÑких запроÑов keep alive. Ðо еÑли вы вдруг уберете keep alive или + выÑтавите таймаут, превышающий udp таймаут в conntrack, то могут начатьÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¸, виÑÑ‹ и переподключениÑ. + ЕÑли же в фаерволе проткнута дырка, то пакеты от Ñервера не будут заблокированы ни при каких обÑтоÑтельÑтвах. + +# /etc/init.d/firewall restart +# ifup wgvps +# ifconfig wgvps +# ping 192.168.254.1 + +ЕÑли вÑе хорошо, должны ходить пинги. +С Ñервера не помешает : +# ping 192.168.254.3 + + +--- Подготовка zapret --- + +Выполните install_easy.sh. Он наÑтроит режим обхода DPI. ЕÑли обход DPI не нужен - выберите MODE=filter. +Так же инÑталÑтор зареÑолвит домены из ipset/zapret-hosts-user-ipban.txt и внеÑет крон-джоб Ð´Ð»Ñ Ð¿ÐµÑ€Ð¸Ð¾Ð´Ð¸Ñ‡ÐµÑкого Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ip. + +ЕÑли вы иÑпользуете в Ñвоих правилах ipset zapret, то он реÑолвитÑÑ Ð¸ обновлÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾, еÑли выбран режим фильтрации обхода DPI по ipset. +По Ñути он вам нужен иÑключительно, еÑли обход DPI не помогает. Ðапример, удаетÑÑ ÐºÐ°Ðº-то пробить http, но не удаетÑÑ Ð¿Ñ€Ð¾Ð±Ð¸Ñ‚ÑŒ https. +И при Ñтом вы хотите, чтобы на VPN направлÑлиÑÑŒ только ip из Ñкачанного ip лиÑта, в добавок к зареÑолвленному ipset/zapret-hosts-user.txt. +Именно Ñтот Ñлучай и раÑÑмотрен в данном примере. ЕÑли Ñто не так, то убирайте правила Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð¼ 443 из нижеприведенных правил iptables/nftables. +ЕÑли не хотите ограничиватьÑÑ Ð»Ð¸Ñтом, и хотите направлÑÑ‚ÑŒ вÑе на порт 443, то уберите фильтры из правил iptables/nftables, +ÑвÑзанные Ñ ipset/nfset "zapret". + +Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ именам доменов (MODE_FILTER=hostlist) невозможна ÑредÑтвами iptables/nftables. Она производитÑÑ Ð¸Ñключительно в tpws и nfqws +по результатам анализа протокола прикладного уровнÑ, иногда доÑтаточно Ñложного, ÑвÑзанного Ñ Ð´ÐµÑˆÐ¸Ñ„Ñ€Ð¾Ð²ÐºÐ¾Ð¹ пакета (QUIC). +СкачиваютÑÑ Ð»Ð¸ÑÑ‚Ñ‹ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ доменов, не ip адреÑами. ipset/zapret-hosts-user.txt не реÑолвитÑÑ, а иÑпользуетÑÑ ÐºÐ°Ðº hostlist. +Потому вам Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ñчитывать на ipset zapret. +Тем не менее при выборе Ñтого режима фильтрации , либо вовÑе при ее отÑутÑтвии (MODE_FILTER=none), ipset/zapret-hosts-user-ipban.txt +вÑе равно реÑолвитÑÑ. Ð’Ñ‹ вÑегда можете раÑчитывать на ipset/nfset "ipban", "nozapret". + +"nozapret" - Ñто ipset/nfset, ÑвÑзанный Ñ ÑиÑтемой иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ip. Сюда загонÑетÑÑ Ð²Ñе из ipset/zapret-hosts-user-exclude.txt поÑле реÑолвинга. +Его учет крайне желателен, чтобы вдруг из Ñкачанного лиÑта не проÑочилиÑÑŒ запиÑи, например, 192.168.0.0/16 и не заÑтавили лезть туда через VPN. +Ð¥Ð¾Ñ‚Ñ Ñкрипты Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð»Ð¸Ñтов и пытаютÑÑ Ð¾Ñ‚Ñечь IP локалок, но так будет намного надежнее. + +--- Маркировка трафика --- + +Завернем на vpn вÑе из ipset zapret на tcp:443 и вÑе из ipban. +OUTPUT отноÑитÑÑ Ðº иÑходÑщим Ñ Ñ€Ð¾ÑƒÑ‚ÐµÑ€Ð° пакетам, PREROUTING - ко вÑем оÑтальным. +ЕÑли Ñ Ñамого роутера ничего заруливать не надо, можно опуÑтить чаÑÑ‚ÑŒ, отвечающую за OUTPUT. + +--/etc/firewall.user---------------------------- +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan4_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 -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret 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 -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800 +------------------------------------------------ + +# /etc/init.d/firewall restart + +--- Маркировка трафика nftables --- + +Ð’ новых openwrt по умолчанию уÑтановлен nftables, iptables отÑутÑтвует. +ЕÑÑ‚ÑŒ вариант ÑнеÑти nftables + fw4 и заменить их на iptables + fw3. +Веб Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ luci понимает прозрачно и fw3, и fw4. Однако, при уÑтановке iptables и fw3 новые пакеты +будут уÑтанавливатьÑÑ Ð±ÐµÐ· ÑÐ¶Ð°Ñ‚Ð¸Ñ squashfs. УбедитеÑÑŒ, что у Ð²Ð°Ñ Ð´Ð¾Ñтаточно меÑта. +Либо Ñразу наÑтраивайте образ через image builder. + +Фаервол fw4 работает в одноименной nftable - "inet fw4". "inet" означает, что таблица принимает и ipv4, и ipv6. +ПоÑкольку Ð´Ð»Ñ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ трафика иÑпользуетÑÑ nfset, принадлежащий таблице zapret, цепочки необходимо помещать в ту же таблицу. +Ð”Ð»Ñ Ñинхронизации лучше вÑего иÑпользовать хук +INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up" +Параметр нужно раÑкоментировать в /opt/zapret/config. Далее надо Ñоздать указанный файл и дать ему chmod 755. + +--/etc/firewall.zapret.hook.post_up---------------------------- +#!/bin/sh + +ZAPRET_NFT_TABLE=zapret + +cat << EOF | nft -f - 2>/dev/null + delete chain inet $ZAPRET_NFT_TABLE my_output + delete chain inet $ZAPRET_NFT_TABLE my_prerouting +EOF + +cat << EOF | nft -f - + add chain inet $ZAPRET_NFT_TABLE my_output { type route hook output priority mangle; } + flush chain inet $ZAPRET_NFT_TABLE my_output + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif ip daddr @ipban ip daddr != @nozapret meta mark set mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret meta mark set mark or 0x800 + + add chain inet $ZAPRET_NFT_TABLE my_prerouting { type filter hook prerouting priority mangle; } + flush chain inet $ZAPRET_NFT_TABLE my_prerouting + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif ip daddr @ipban ip daddr != @nozapret meta mark set mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret meta mark set mark or 0x800 +EOF +------------------------------------------------ + +# /etc/init.d/zapret restart_fw + +Проверка правил : +# /etc/init.d/zapret list_table +или +# nft -t list table inet zapret + +Должны быть цепочки my_prerouting и my_output. + +Проверка Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ nfsets : +# nft list set inet zapret zapret +# nft list set inet zapret ipban +# nft list set inet zapret nozapret + +Проверка Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтв lanif, wanif, wanif6, link_local : +# /etc/init.d/zapret list_ifsets + +Должны приÑутÑтвовать имена интерфейÑов во множеÑтвах lanif, wanif. +wanif6 заполнÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при включении ipv6. +link_local нужен только Ð´Ð»Ñ tpws при включении ipv6. + +--- По поводу двойного NAT --- + +Ð’ опиÑанной конфигурации nat выполнÑетÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ‹ : на роутере-клиенте проиÑходит замена адреÑа иÑточника из LAN +на 192.168.254.3 и на Ñервере замена 192.168.254.3 на внешний Ð°Ð´Ñ€ÐµÑ Ñервера в инете. +Зачем так делать ? ИÑключительно Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтоты наÑтройки. Или на Ñлучай, еÑли Ñервер wireguard не находитÑÑ Ð¿Ð¾Ð´ вашим контролем. +Делать Ð´Ð»Ñ Ð²Ð°Ñ Ð½Ð¸Ð¶ÐµÐ¾Ð¿Ð¸Ñанные наÑтройки никто не будет Ñ Ð²ÐµÑ€Ð¾ÑтноÑтью, близкой к 100%. +ЕÑли Ñервер wireguard - ваш, и вы готовы чуток еще поднапрÑчьÑÑ Ð¸ не хотите двойного 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, что и требовалоÑÑŒ. + +Ðльтернативное решение - иÑпользовать на VPSке Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñа портов не только DNAT, но и SNAT/MASQUERADE. Тогда source address +будет заменен на 192.168.254.1. Он по таблице маршрутизации пойдет на wgvps. Ðо в Ñтом Ñлучае клиентÑкие программы, +на которые оÑущеÑтвлÑетÑÑ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð², не будут видеть реальный IP подключенца. + +--/etc/firewall.user---------------------------- +. /opt/zapret/init.d/openwrt/functions + +create_ipset no-update + +network_find_wan4_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 -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret 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 -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret 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-mark 0x800/0x800 +------------------------------------------------ + +# /etc/init.d/firewall restart + +Вариант nftables : + +--/etc/firewall.zapret.hook.post_up---------------------------- +#!/bin/sh + +ZAPRET_NFT_TABLE=zapret +DEVICE=wgvps + +cat << EOF | nft -f - 2>/dev/null + delete chain inet $ZAPRET_NFT_TABLE my_output + delete chain inet $ZAPRET_NFT_TABLE my_prerouting + delete chain inet $ZAPRET_NFT_TABLE my_nat +EOF + +cat << EOF | nft -f - + add chain inet $ZAPRET_NFT_TABLE my_output { type route hook output priority mangle; } + flush chain inet $ZAPRET_NFT_TABLE my_output + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif ip daddr @ipban ip daddr != @nozapret meta mark set mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret meta mark set mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_output oifname @wanif meta mark set mark or 0x1000 + + add chain inet $ZAPRET_NFT_TABLE my_prerouting { type filter hook prerouting priority mangle; } + flush chain inet $ZAPRET_NFT_TABLE my_prerouting + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname $DEVICE ct state new ct mark set ct mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname != $DEVICE meta mark set ct mark and 0x800 + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif ip daddr @ipban ip daddr != @nozapret meta mark set mark or 0x800 + add rule inet $ZAPRET_NFT_TABLE my_prerouting iifname @lanif tcp dport 443 ip daddr @zapret ip daddr != @nozapret meta mark set mark or 0x800 + + add chain inet $ZAPRET_NFT_TABLE my_nat { type nat hook postrouting priority 100 ; } + flush chain inet $ZAPRET_NFT_TABLE my_nat + add rule inet $ZAPRET_NFT_TABLE my_nat oifname $DEVICE mark and 0x1000 == 0x1000 masquerade +EOF +------------------------------------------------ + +# /etc/init.d/zapret restart_fw + +К Ñожалению, здеÑÑŒ возможноÑти nftables немного хромают. Полноценного Ñквивалента CONNMARK --restore-mark --nfmask +не ÑущеÑтвует. Оригинал iptables предполагал копирование одного бита 0x800 из connmark в mark. +Лучшее, что можно Ñделать в nftables, Ñто копирование одного бита Ñ Ð·Ð°Ð½ÑƒÐ»ÐµÐ½Ð¸ÐµÐ¼ вÑех оÑтальных. +Сложные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° "meta mark set mark and ~0x800 or (ct mark and 0x800)" nft не понимает. +Об Ñтом же говорит попытка перевода через iptables-translate. + +Ð¡ÐµÐ¹Ñ‡Ð°Ñ ÑƒÐ¶Ðµ можно Ñ 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' +------------------------------------------------ + +# /etc/init.d/firewall restart +# /etc/init.d/zapret restart_fw + +--/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 PREROUTING -i eth0 -p udp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 + 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 PREROUTING -i eth0 -p udp -m multiport --dports 5001,5201 -j DNAT --to-destination 192.168.2.2 +---------------------------------------------- + +# 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' +------------------------------------------------ + +# /etc/init.d/firewall 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' +------------------------------------------------ + +/etc/init.d/firewall 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 diff --git a/files/fake/dht_find_node.bin b/files/fake/dht_find_node.bin new file mode 100644 index 0000000000000000000000000000000000000000..ba9117de3c45e71b26c960ae1515ae397076888c GIT binary patch literal 98 zcmYc>v`S1dvdT;`GO${!>Dbb;`8!TfV>h5tA5rTL!&CigN9a>K-p9Plp`j0 literal 0 HcmV?d00001 diff --git a/files/fake/dht_get_peers.bin b/files/fake/dht_get_peers.bin new file mode 100644 index 0000000..916bc10 --- /dev/null +++ b/files/fake/dht_get_peers.bin @@ -0,0 +1,2 @@ +d1:ad2:id20:.+NA-¢ÔutÚÛE–wΑiJ·9:info_hash20:; +ÂÅÙ侧¾“äÙOÁ£2IÂe1:q9:get_peers1:t2:äâ1:v4:LT1:y1:qe \ No newline at end of file diff --git a/files/fake/dtls_clienthello_w3_org.bin b/files/fake/dtls_clienthello_w3_org.bin new file mode 100644 index 0000000000000000000000000000000000000000..8d90faf51272dfe4526dafd077fee2cf09de4243 GIT binary patch literal 226 zcmWgp_n!dSXI#54111AFmTe-1beo;D*!@|tK$i%?Kzyrjx4B`xO43Z2I49Y-- zVn8eo#Jmg!40dpzOw7!TOpMG-OiV0H ItW0c70Fc2gFaQ7m literal 0 HcmV?d00001 diff --git a/files/fake/http_iana_org.bin b/files/fake/http_iana_org.bin new file mode 100644 index 0000000..ce1d420 --- /dev/null +++ b/files/fake/http_iana_org.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/quic_initial_facebook_com.bin b/files/fake/quic_initial_facebook_com.bin new file mode 100644 index 0000000000000000000000000000000000000000..5d21a5927a7b06adfb99ddfc48d9590c8a596464 GIT binary patch literal 1200 zcmV;h1W)_V000016gruq*wYT$J`J?I59H{X2d>QDOccila+`}`c8!_0eOUUwEEmfI z6uX|y0v#Oyw!GnYUNw7iI>yjsW#TDHKRry0j!m+*O~Jd6rS>=-#eRr_NI^R&1lS9d1WDSR3D&^DS1M=NFCCNO!Si+wlQFW z$istR@*ZM|k92~$1pHaEDuKU{MjmTJV$i($M^jkPs{+QixUoRW*FlB8iN0r$qG=<5 zDtHBURbwyi9OeoI(uhB{Z(y?8>4SdcebN|-yC0=kek?|301Y58hhb{3u{I@Sj)iyM<&! z!Af|P?*4ZNFn>86>gaUqt{P=1$Nyx<3;xiAsP6a-07+v)@=ll+h7ZHX85S0 zPkus0@cQd{?G7S>(gG?)-^M9=mq3MEo*%HKlST15%)#Z34njYiE6R;AoPOc4HGMT# zta~c_bQWz%X&JArvmf8Y%uiw4fkjKwLa}R)cM|sI3Aknu9~&^eDAjd2s<0eSdtq$^ zqYW3IRP_H7bMJYR0WIO`Ir@CC`gT!$ z9ResO_!0bsY*_~Ou8x!`^srkZmZjdkB4k7?b>1xeC=o2`8&2+U#B1B9kT@ zHPy>^^>{`x0TM2vOt1(O52Jr7(!yVQBFeaJDL{Pm4GOhHn8}|G9bW%J0Fx%H9LacU zeQ447xe+<%q7m3~)GW{FCGT3xfZZc_Zl*XRPB3Lj7c9`zJlk~eL`g4c6&y@bbF~Pp zKf|sN$^RH{kzrFGe>)BMJ?E>u=2uuRSC~Vi`f?r$^N>tewY5>a5oW(uMtm8As-jr& z?+-KV#9otVD>S+5JRdG7g3=8E3hsw5J$^-@H*dmk&N?v6@=M)FSnu2P8F*ceOdt^*~Nk0Xtk7tr!VA-rKE43bM>gKEP} z5<>k&<&aCov+#3>1gFh{#ZqJ_Qw&vvUva4`BtR%d3<-4~NTFM_<$oNh3|I$| zRP1|AnF>;sOpPaVWK-md7r$Z^HtBL4@4BGeC{0`)+>_M=}y@j_WkZSxc2Oi=g-3J(Zg2o(=y3W>1m8iGARnCJrHtNj Oz&ejo+=e$P_+sWMkxVZD literal 0 HcmV?d00001 diff --git a/files/fake/quic_initial_facebook_com_quiche.bin b/files/fake/quic_initial_facebook_com_quiche.bin new file mode 100644 index 0000000000000000000000000000000000000000..84dceabb6676148afae10e33afac59ac0ce3a584 GIT binary patch literal 1200 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 OadevX!I|^r!a%=2%2Ia# literal 0 HcmV?d00001 diff --git a/files/fake/quic_initial_rutracker_org_kyber_1.bin b/files/fake/quic_initial_rutracker_org_kyber_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..9a16d987978b018a7900ced331c405b9d63e1bc8 GIT binary patch literal 1230 zcmV;<1Tp)|000012ysIPQ5%p*%>V#Iy!#f$*^4{9?|uXET6T@S)>`3W{=) zVCdnV(NZ}V+z{Y8@tO2rv-Zp_qTWBr&6w#X^O6$@Xdj?bo9@eIl3+qoOnra9<=^r-nS2!=49k5c_jv}DUJd>X$xOgUOdJWH8W)}TZcOr^ zqVo2~4Rxe0KXzJ|AS<(61)8a$3fW0o&2HownewVJcPtYkMJQ1ydcY4as30UZcC{1L zsBr&}1YDD7m=O9ei#n=^!WA3WxeBYFHJ8o(5Fv=nG^Za2z(91qsav6TkeyS1bC;3! ziN8;`;;YHlUekK&33Pi*)8sBBsmtTHnwUemG}YzpP0nd10=8!Us-xs-xd+#Q6*JKJ znOnhIsz!=riiWisPxCXrPn9u0G*_7CQH+sJ2Vzj(UqxQRK}LjKRHXgPiwFh4d(N-W zq%^Fc+aB_2UkY>$iVUD_G+|HP{a;NSwR+ta+umoeUGq<3MagHPQ0_w)tt!YCeqKSM zw9V7_zuuixK76phrRKt%K;7&l%1zpf?rWn*?WP9CS!xK}HL>SaE!^PxMKclCkh~aw zNX#S%>r?d%1H2QzPzHLXMl1`Zz)I{Ev&BFVJiU<-%5+-KK-aN}dcLq(R+I(Pnw2aI z7{t^U!}@Y!hAa1}j^Uyt1Pw(du}&jq|F_7`0NiIt4P|(&R=q_BF1odjs(^43mMBNIU2pQPF;e_$}33yRm=J!8I)W8YLJ--yqDAv$HuOQ+0unqM!Y?Vk~jQ{`u literal 0 HcmV?d00001 diff --git a/files/fake/quic_initial_rutracker_org_kyber_2.bin b/files/fake/quic_initial_rutracker_org_kyber_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..f3a721b7ed48e68f8e3dfcf8b573d4fc65bdd1d8 GIT binary patch literal 1230 zcmV;<1Tp){000012ysIPQ5%p*%>V#Iyl5F|ez2ut7E3~Gksw+$8{-8xVu@JEvK<>x zRY|^GA~TiKuQPQiE_63clk;h%!3BN11F!*@2p3sLfjNofq~osGP_^Vyx2F6lJ{aO;oPPTQGVz0hAT z3|diTnwSyP+O67PIlb1t4=qc0L_D?s5*CCAq~s7th+0{nXcaengR92iBEa5Nvj5(BAtb>RkB+Vlpw zPMd*$-mZsQQd6fOi{bf^+l2EeWdHo($1yeMZwsA-uZeyQ^Z|wUOI%C3twKOFGXMD~ zZlYuhKegAQ>ijfcZydVsb>tSq0)jX8-R5;#aZYl@Ci~3Ev>j%AK923y`bMZzsU>&( z0g(!X!5S(hbrui`9GHORL_a;59PD9|!pnui`PR=1Aos?qE^WKdZzq|BXh6dxwY~fr zj0Dyoa#48U!&#h@t_^2U0X5}uih3Kfy$K3AgkQRy&Py-g`;!QnP;OAp?G45cD+dWp zr2PCv6{u7A31kUdv+#L~+_--FhFH1=XrfKdQN3kBM|u2y#t74W-Wu5clZY9^AFjc= zl){tBlI0)qxeGDQJvt1^oc{xkpA!DFQcOSAXf9<)>y}+BTi%$d^v=Tt#xIg5KwAl4 zAvjvjU~E1Sl+27yJqJf$&i#MT`yu3?=k7^sv`h?dMJ4>xMw~;hRIm~EpQ2#?m#Beb z+PIXHQz4yk{(S_+jLqX5uBlS#J87MwV%B|Y~T*~PK^m;9l5PmXL zv}(fzE-iYJHXKpgFT9u{zMv_0PPxNU*a5rgG_cPN=&opIq&PeK+Mi1CvN=Y|0(+3h z2Nn`%S}v{@_Rww?9AZc&z9? zGNERe@%j8!H#sfK>}9H3@(i1=Ec{1+lDK#*MTtO`e%lQ#(akbFe&u!fz{7I+mYLyr zkh62>B+QmI#vfEEW4pUHzBFO|Ct>xB``RNR;+onm9OFQ;uo6^J$m|;>-D$qW zK$(*I|H+?Cf^?@QiRhkvU*xzoWdEZ>RaP6)u8MuREae`QEOE@`VeEvL9Wx)r@Vr=7 zCvsn8dgkGa9>$ldR3F9P>-wAVwf#)ET~EhTrb_F8q(!q(lb9_puf0Cx&r+l$;xohTi h>ULVQnx^{0&9_hQc(F`iH87!!g3%Bd4FTLC008NC7P9~V literal 0 HcmV?d00001 diff --git a/files/fake/quic_initial_www_google_com.bin b/files/fake/quic_initial_www_google_com.bin new file mode 100644 index 0000000000000000000000000000000000000000..80a07cc8870c88be6d8ac7f9bf9dc9bb1979468b GIT binary patch literal 1200 zcmV;h1W)_J000012zck1M!WNQga80Up0eT_O^eJg$v*FaNtH@lrZ!8F85?~L=|4FC zk&^uu@3*1@yE;Nr+phxdvmjKlDvv)J(yS~3><6w zEp#coJfYUm9CGLZ~DKk^PzBnc1%f|fM8tBsxh*3hcADV z^CU8<{XVqh;7whf0$D!%XlMGTw798<*&-QJ!J_F4aM6Bx6zTZRd8tC1&6A?yHRR@V z*(Y6i13lm}>32F&=^G*!oie_jmxN)fv~C)yRenn~>%$c!gCi?1$YU~52E7>9OR|Sm z*0or11T~hM0jX)6M$%)CyQ}2u+gTPF+39I^(olCjZ|S`FNZIz}o)#b)O`EEWD&X)8 zD*dxPl59gAxb#Z3@fjs3yr%)0G$8EX4eO0kwYPK?fVME93!RHm-IjwaEHlyOY$UAS z{-}PnuMtXZ1oyFzaHYi8wq0%YZT;bX@31QPpE;duWeOLIey~ZX({>Ct)#s~nnhkyg*!711_$gJmQ;g6N?g|dE*sv|JA3izy z`WHxH{1S6cV)gmesLpz!3FW>#E;01f9ec}Cg*NAeT5z}|OVuqL`24o6^a-?V+mF*w z3qPYBq?4tc`GvPoX}H_!HLWNemb3d@-DH`AHC0J+!`aiI!Emr{8hgF5EJH9)0BV{>t4FO7*Rn83&5KIgU<<>6KLttmv1oYA4 z=|Qj2Xr}J3MOQM@D{!=(O6=H0PX(AxaHfuc;q&mm6Vt28(`Z@~;(wo0Y%3HWd~aSl z#&4OA#_}K!cZ%ml1$@I>#6AZw$cQNc^h7W*BMq7~M7ltAZU;k10h-}sc%+cuBv6GG zu)B$*t&^YX_t`}*mbbnz$4fW~M3li?vQy=t9K+{XI^~X8D9^1+9dPY=(HU+JS5O)2G_una37W{$E@A=Y6 zz6l_Y^XKXZ?u$rOQPL8qadZWlusq6)AxNH-W5i0Hb>l zMxnwI0H0_{axGEA-0IMAcn{0>x(qs#vJ}YC{N&g*WJ!#t0}~F^x&%%+5@#2PtFl)EW9rnwIqJO$|OVm&@0-}$W~0{Gnz$OG;cp&Tq2 zMXteAz3Hl3v5Fi!8N~1O&=t>LMTGs3>>=xCX^3nz6qv9yY?hxf9q#kwo2nFg@9 z`IM}DtVEY8&Qf=x{;H3I51HJWQ|}!(OwswAQR!y&rYZYIl3-dFP=o z@DzlxL&8>!4A<9HaKC|naSThcsV3`W*%yQFl?EC}rZsGxY~S>-Pd@;atKmb-Z|@ej#_j)DfoMb!>R4u@8wGswlOC? z{O6YMcSv{FPS=`){ht(C4{Q-C-mv_Xyi_}{T_%Hql$0=|Fq1Iz0qq0&2Xqb?oLPBh z#R1_1A`EjF<}&Crm;x=DylWQ&!+#)y!6lP{m4TTl!-zqbfr*ikL5P8YfeQ#Zs;U@d z8N?YR7^H#H3`{^(tc*Z82A~)N120gW01Gn*3kxGFGY2axBL^EBBLg?k1O^6e26nbz zznEE=nHiM98bld{85jhT@=Ns6^NUN1b4t@Q^@>UvjDadOfwlm($TBE=a@*lJe|eOB z!j!<|Otbblz1F~5E{|Di{+qj$XVgwtWe{NCW8eY0lOv;~q(I+L&k&+jl;JqolA%uk E02%L3Bme*a literal 0 HcmV?d00001 diff --git a/files/fake/tls_clienthello_iana_org.bin b/files/fake/tls_clienthello_iana_org.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%`vofmQ*E&)`46kandPM&R7vsEb|dSvN=KE(Et_pA=LM> zDOp!{JK2LqwlhR24l66pNvx~Ibs?2L0Tt#7D~H+T6t?d=fd};dltiXSfpkot)u?}t z%7R#A9~Io~2zJMbC-1}%fX`j0Mp{*9;`f8q7ytzT1pxp60000001^NY000egb#!uJV{2t{E^l&Y{{a92 z001)t?*#1{8UO(RW0?fN0?6E0Cv@q`9_G~tFm{O@8k4UxJuWE0F$CKog{*^Y3wSeY z(t|`pUNrX(VB(T1T8+_cthR%DxZ7~nYNt5LevxSm5#SheQV0O#8$OUzbXhQoNX0sM zv(TKB_hhpJ)p)h*T<}FWYZMdK>0J(+v1t&Nb>Pe$@n@ghU!WvAMwJK)roTQKS-`1~ zH90;|HjRfc!{e}v?wC{l`b^NLUTS5TYx-%I1O_zHz1GDReMyO2GR^*se2R%w%_{(I zDXkWK4+1HQw4*oINpQC)6m9TL$)dsSGD}PagD+E{CW~E;x0uIBj!_hvORK)nYblNQ9b`MEITs-=F~L?6Nj_Ey?^UC)G)2B)Y7urt0{p0kIa(EHy=lY?)#Dp(375d8 zIuCG(1DMOLWlCP$dLKrd^eh{_$Tp9-6eyH=Qs8nH%nC%XRxI19BWF#4=|QOEj^%}7 z@i!zW%9Q^Hxov@-Ge93a7y$0@DpGlW@*8)*OdAW7n#J`RDx#tRBn+TC4&DKffVNKJ zS#Z{&c7i!XF#`*kY&20o8lZ?jQlQNbS*qN7lPMF*jyp42hI z{|FO~(=Y>2bL%OK&3Q}c8+@hIQ)lomx&Vv==ncamnyiD0gp$v>I}My$%ldK*Tf3<# zlz`d@K5SGFMLB>!I*{KBPp(W1UC}9?L7>uO!C~cs9kUsZC0hujM8dQd4!S0KJB?(B z3<|@zqZu>x90==2s(8a~y~Hq@s}>5y%Jm`{qKG%`b!|KGT#*ux2gqzxVLr`BP&%o= z5rrYNkQu5Xo%vvoc~BBT1_Im|RURy~r>r=hMY?^KuCt}Alu>zCvP5=Pw+qU0-IS{? z3&3r)HGT+?WATsG0+ml=X}2b>-l`jDQpBVxANx9W4dV!S=8+yJLOdzMN^+WK*Hp;h zHhvLy@kzp3m?2o%NXxXOHiJcOx}Z6xpV}Id{aIH2_pJ}(82c5zUHW@VX$q-Q9Tw6| z_4UT}d^}W&#RJr>jzcKY*FNWjtzs(=N2_^>vn`>yQ#$0viI%x-RT<+1Hfj-hySy#K zu+Cyzq}RH<=F&4@j6nXYxN$(Gtktj%1a6}kR$9X`dU^;fMXCh(%<$+~G}wMlwmu(2 zP%&JDZKRo9ka)0DY`Nnhs}l|7TLj>#vlVua3>jDaRsoiJf8c;YN8pDRDgml{D%|_R zdn^fV?8X7uWZ>K)VCuvY8F*>|XfOu8=oBAP_c6DOhQH&we>^#JHNo$8zU1XsO9qB_ zBF1StE4@ZSq=a2dmuy_B7L)iK2%xTxT*#W^DfGlC-6TZl8DO|Pd^6u}db2Rj%U z!nn*DLlA0@H(#47^D0h6ugWNM1uSgn#fR{o+L~I-QEVA50384zQ-XEZG|{7-!2_^? z9J!PxpS7_(+2{hup_!=3i{o4c02crN04o3o23lGJ1Oo#A5&!^1X#fQP0|IC=02=@U d0ssO45C9GU3<78}2xxS4a4#_~F$xL*0RXt?{JsDH literal 0 HcmV?d00001 diff --git a/files/fake/tls_clienthello_sberbank_ru.bin b/files/fake/tls_clienthello_sberbank_ru.bin new file mode 100644 index 0000000000000000000000000000000000000000..59571bb1dfc0924e8029e1389b2328dba0020f7f GIT binary patch literal 517 zcmWe*W@KVuWMKTm%xrb;#C9Gh-BOh)2{wMk*OW^e-|h+7{3Ja$O7drE*ONYlyTVbA z%w)}4lY|nI)*dtDb2+hm^TfGAmu5|}Sfa3tyM#eOOG}thm`RxVfc63X13Cu`&a6DM z;(+i05r#Poa~bp*Oo0|n_VQw2U=U#7W8h)RFyhE4DJjr5)H4K%i8F{YFbL)6J=xY79}O-W$P7{G8i*xGic751#~8ZEQ7+`)la9oHhes}!?|}&=>FG!L2KtL9Y6GV z?j6?Ot*%;~91O}pv!ofAnHZQ{G8tHbj0__NZU!cxZXuuyD+4Q#1q56`$N@A}7HF{q z&<1ukD=TIeW@ZLmpjyWNK&OJ7#K6D{)F!~f%)!FK$jZ#Y%F4*W#>RN-7D!r@;V9Us Hp-un*`=U|c literal 0 HcmV?d00001 diff --git a/files/fake/tls_clienthello_vk_com.bin b/files/fake/tls_clienthello_vk_com.bin new file mode 100644 index 0000000000000000000000000000000000000000..ec908c2bfffc29500a938f1d4ef180321393b9ca GIT binary patch literal 517 zcmWe*W@KVuWMKTm%skEWrTZ>trEL{~oEtKkvRo(L-X8Q)H8vse;Nkq7CwG4 z+ZfM$7#MgNgct-^m^oNj7+IM)SXmi4*w`3dG8tGIn3*z+ z7_=GK*>>$>W?^Oqs^wgvI<|94=60DIsUYVv?AirVEXr^ZZ1->?0LGk5Q2+n{ literal 0 HcmV?d00001 diff --git a/files/fake/tls_clienthello_vk_com_kyber.bin b/files/fake/tls_clienthello_vk_com_kyber.bin new file mode 100644 index 0000000000000000000000000000000000000000..92c639e39c7e012a239f30405744059e73d739ca GIT binary patch literal 1812 zcmV+v2kZD20|5sQ0RRUJ0|U5*L&>8durC^rtjuu{+?pZrU{1kk2jl7ua2iZ;PB|c) z*}x<1`s4b-4To7$a=|)97TobQ%eInL&-^N7)HJ97AQ~DI0TTif1Hdc5FTgCoFwCjU zsK67z6abt6od7QYH30wyqMDij07Pj31posAXfgl_01N;MdU|7-0384q02lxT00jX6 z00000D*y)u3JL=R0|NjX00RO50ss;K001oj0s#U40RRC201E&D0RR9H01f~Q0%$S_ zXmoUNFEK7L0000B00{s926k&MV{dH$4FD1V5Cj7V1Ox#E0|*5L0SE>L0RR^O001KZ z0R9aD8UO$R00Eri2T!2kbXPc_m?>2if}4-asi;KnmyY5?$Yts+1E zOwRv`{uOi2(Jr}Xc*7Vo_UN+Soa>(Lp2~oGX(Dh?Rt6u0RUr}1i-ASkt(0Sy=0j* zO6N*G^Q{a~_L8iqVwy4K{SoSh#zpJ-uqXwi?MN}g4abg#l+c_u}`3F4&ipKjnUezek_=cY*n|c+- z@6xg8#JWBpe_C9$|I~1O@S4Ao$IV#K^Hj8?{x{9~PF*YJIgyDr~ zk_;(I2|_76wH#@HP+98JB0qbj-n+1~#whiAXal^=L2%GwaTruH_R05n zW^%-jvO*S15w<-+WeGHpUGoN`9-1XVX+6>C1-^T?@_BIL;fVrQiUOMTZ$Bs#*j zV&O9J(O^TFp)J5+nkWNxU>T=6C_fUJW;vky0EYQ`aUkM&`XiRN%rD3`lh43}2wPn! zEPtgpctyyG+YnT=>1%{nGp`{zA_za#af}|YAcpf(8bG(3qB4l$3b#qYh2YAD0*}uY zhufqoBd0NE=_&kjs`+yyR`^Na;3Gj-0kXrluBv)yBc`0t0tFi_vPuHhFmdX(8Y0{= z1Nck9hR;4l3HgP>tmC#?7g|@<8IHSRpT{r2e8MK&JE~hPs!F;s*GDjBe9?5G4f`oB zwS|6ieLbX{#~@9B*OcJPd2IN>J37Yi^?NO_hzn2zvtupPC!@qbjD@my<|r=_iOk?} zPo6wTPb-X$2?!(tHz+)2wGw3v@R>LPhK7MWX#->#B~7_hx>@USzS@)nx@6)!&Gfrh z!hn++e3MYxU-3sHn(TPAhnu@2w?J98f+1~hON|U>%p3Vaxhqp|n#|IGt1f0;s251Hq9;Y9r7sYwZ zV>=f;z%l{V#Xq*gTsm=Tas|Rxws!}W0wc0G#b?aroR{hvfd}Uq85)rAd6=VcKRD7X zza%c_0=)x>OYt!@jF~&Bt31KTh~PH>HBs-7~eOF;C{903dtmw*g$>&{*(f>}xhB`m%sM@ld})-}|R!kF}-b?`#SR0098r C+Z{as literal 0 HcmV?d00001 diff --git a/files/fake/tls_clienthello_www_google_com.bin b/files/fake/tls_clienthello_www_google_com.bin new file mode 100644 index 0000000000000000000000000000000000000000..c740462fc090942b1afd571681339ec26af65fd1 GIT binary patch literal 652 zcmV;70(1Qq0|5eu0RRGn0|Q?bW6K8W9Nj>6^^8PNZUOV7gRH{hGiiqGsb?WDy(b{K z&N2J~>0wK(Lah`S`JmOrM)_q5vpA`<}<0}}$kE5I+zsm!RrEWj|p z3cv}#6TlPzoB*8wF90_;aCRtcpHtubr&`D*y!q0|WyD01W^b02TxT1p@{H2m}ZP2nGZJ1px*D z0s{g802}}UKmq;@0T}=Q0RRDi03eHZZztxRuIju?4>)}17B{htF$ibYqheaY#Qj1U zT1f!!CNfXelbZ62w|apnnq4pmn0BubVPo1+DBPj~PrZ^PfUGj&3^MKk2g(VBxSPw~(8lO#%$$^b zza@}hE8(I6_}NsOlGm$)x+EZH zH8^$WGMUf(xX!H-(qW-}cajp|m_^3w2pT5+knS7m{a(CM9&laCU_?^X!w!Gv5wzwI m^PjJHE7{XZU8nG0K_nbN^BS-KSy&t6d(KT=p9Zv`p3SHaW%m^T literal 0 HcmV?d00001 diff --git a/files/fake/wireguard_initiation.bin b/files/fake/wireguard_initiation.bin new file mode 100644 index 0000000000000000000000000000000000000000..80558634c7c372f32ea0a866c09e9084a51a8e0c GIT binary patch literal 148 zcmZQ%U|?XiUtnKpB>8B=!70fNv&{NVd9%l6C#+rnOkhVt#vEbJ6VZV}HV%sMjNg0e zveuWiU2yxhB%SG!VX3q^I~%jgo_YK&&$n4vu%A2q$>Q$I`@V->D#b)Hx}VE)NP6vD t`A2@?7nVgypD(RDDw_Y^MQQc5FYBE8UjF25RQ4wYfGUtq64J#AHrWZRji7j(N)Cvd#I#jkZE^|@sXgE!yOWqJh}@pleg muFSYtwo=8|UE$xVKQGJ`ug~w6nzrz0WSi4wL2sZ@C;$M9)FBiA literal 0 HcmV?d00001 diff --git a/files/fake/zero_1024.bin b/files/fake/zero_1024.bin new file mode 100644 index 0000000000000000000000000000000000000000..06d7405020018ddf3cacee90fd4af10487da3d20 GIT binary patch literal 1024 ScmZQz7zLvtFd70QH3R?z00031 literal 0 HcmV?d00001 diff --git a/files/fake/zero_256.bin b/files/fake/zero_256.bin new file mode 100644 index 0000000000000000000000000000000000000000..65f57c2ee985713476ac0b6e3483e6fe472e2176 GIT binary patch literal 256 LcmZQz7})>-0RR92 literal 0 HcmV?d00001 diff --git a/files/fake/zero_512.bin b/files/fake/zero_512.bin new file mode 100644 index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 GIT binary patch literal 512 NcmZQz7zHCa1ONg600961 literal 0 HcmV?d00001 diff --git a/files/huawei/E8372/run-zapret-hostlist b/files/huawei/E8372/run-zapret-hostlist new file mode 100755 index 0000000..7f37d58 --- /dev/null +++ b/files/huawei/E8372/run-zapret-hostlist @@ -0,0 +1,35 @@ +#!/system/bin/busybox sh + +# download hostlist from http(s) (need curl, its absent by default), +# feed it to zapret. save flash write cycles + +u="https://your.host.com/censorship/hoslist.txt" + +SCRIPT=$(readlink -f "$0") +EXEDIR=$(dirname "$SCRIPT") + +d=/data/censorship +[ -d $d ] || mkdir $d +f=$d/hostlist.txt +t=/hostlist.txt + +curl -k --fail --max-time 10 -o "$t" "$u" && { + if [ -s "$t" ]; then + m1=$(md5sum "$t" | cut -d ' ' -f 1) + m2=$(md5sum "$f" | cut -d ' ' -f 1) + echo $m1 $m2 + if [ -z "$m2" ] || [ "$m1" != "$m2" ]; then + echo updating hostlist + cp -f "$t" "$f" + else + echo hostlist was not changed. keeping old copy + fi + else + echo downloaded hostlist is empty. disabling zapret + rm "$f" + fi +} + +rm -f "$t" +"$EXEDIR/unzapret" +[ -s "$f" ] && exec "$EXEDIR/zapret" "--hostlist=$f" diff --git a/files/huawei/E8372/run-zapret-ip b/files/huawei/E8372/run-zapret-ip new file mode 100755 index 0000000..803e984 --- /dev/null +++ b/files/huawei/E8372/run-zapret-ip @@ -0,0 +1,39 @@ +#!/system/bin/busybox sh + +# download hostlist from http(s) (need curl, its absent by default), +# resolve to ip list, feed to zapret-ip. save flash write cycles + +u="https://your.host.com/censorship/hoslist.txt" + +SCRIPT=$(readlink -f "$0") +EXEDIR=$(dirname "$SCRIPT") + +d=/data/censorship +[ -d $d ] || mkdir $d +f=$d/hostlist.txt +t=/hostlist.txt +i=/iplist.txt + +curl -k --fail --max-time 10 -o "$t" "$u" && { + if [ -s "$t" ]; then + m1=$(md5sum "$t" | cut -d ' ' -f 1) + m2=$(md5sum "$f" | cut -d ' ' -f 1) + echo $m1 $m2 + if [ -z "$m2" ] || [ "$m1" != "$m2" ]; then + echo updating hostlist + cp -f "$t" "$f" + else + echo hostlist was not changed. keeping old copy + fi + else + echo downloaded hostlist is empty. disabling zapret + rm "$f" + fi +} + +rm -f "$t" +"$EXEDIR/unzapret-ip" +[ -s "$f" ] && { + mdig --threads=10 --family=4 <"$f" >"$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/custom.d.examples/10-inherit-tpws b/init.d/macos/custom.d.examples/10-inherit-tpws new file mode 100644 index 0000000..a4c08c5 --- /dev/null +++ b/init.d/macos/custom.d.examples/10-inherit-tpws @@ -0,0 +1,18 @@ +# this custom script applies tpws mode as it would be with MODE=tpws + +OVERRIDE=tpws + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_daemons $1 +} +zapret_custom_firewall_v4() +{ + MODE_OVERRIDE=$OVERRIDE pf_anchor_zapret_v4 +} +zapret_custom_firewall_v6() +{ + MODE_OVERRIDE=$OVERRIDE pf_anchor_zapret_v6 +} diff --git a/init.d/macos/custom.d.examples/10-inherit-tpws-socks b/init.d/macos/custom.d.examples/10-inherit-tpws-socks new file mode 100644 index 0000000..bdcda12 --- /dev/null +++ b/init.d/macos/custom.d.examples/10-inherit-tpws-socks @@ -0,0 +1,18 @@ +# this custom script applies tpws-socks mode as it would be with MODE=tpws-socks + +OVERRIDE=tpws-socks + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_daemons $1 +} +zapret_custom_firewall_v4() +{ + MODE_OVERRIDE=$OVERRIDE pf_anchor_zapret_v4 +} +zapret_custom_firewall_v6() +{ + MODE_OVERRIDE=$OVERRIDE pf_anchor_zapret_v6 +} diff --git a/init.d/macos/custom.d.examples/50-extra-tpws b/init.d/macos/custom.d.examples/50-extra-tpws new file mode 100644 index 0000000..dfe6d10 --- /dev/null +++ b/init.d/macos/custom.d.examples/50-extra-tpws @@ -0,0 +1,30 @@ +# this script is an example describing how to run tpws on a custom port + +DNUM=100 +TPPORT_MY=${TPPORT_MY:-987} +TPWS_OPT_MY=${TPWS_OPT_MY:-987} +TPWS_OPT_SUFFIX_MY="${TPWS_OPT_SUFFIX_MY:-}" +DPORTS_MY=${DPORTS_MY:-20443,20444,30000-30009} + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + local opt="--user=root --port=$TPPORT_MY" + tpws_apply_binds opt + opt="$opt $TPWS_OPT_MY" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX_MY" + do_daemon $1 $DNUM "$TPWS" "$opt" +} + +# custom firewall functions echo rules for zapret-v4 and zapret-v6 anchors +# they come after automated table definitions. so you can use ... + +zapret_custom_firewall_v4() +{ + pf_anchor_zapret_v4_tpws $TPPORT_MY $(replace_char - : $DPORTS_MY) +} +zapret_custom_firewall_v6() +{ + pf_anchor_zapret_v6_tpws $TPPORT_MY $(replace_char - : $DPORTS_MY) +} diff --git a/init.d/macos/custom.d/.keep b/init.d/macos/custom.d/.keep new file mode 100644 index 0000000..e69de29 diff --git a/init.d/macos/functions b/init.d/macos/functions new file mode 100644 index 0000000..d004dc2 --- /dev/null +++ b/init.d/macos/functions @@ -0,0 +1,211 @@ +# init script functions library for macos + +ZAPRET_BASE=${ZAPRET_BASE:-/opt/zapret} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/pf.sh" +. "$ZAPRET_BASE/common/list.sh" +. "$ZAPRET_BASE/common/custom.sh" +CUSTOM_DIR="$ZAPRET_RW/init.d/macos" + +IPSET_DIR=$ZAPRET_BASE/ipset +. "$IPSET_DIR/def.sh" + +PIDDIR=/var/run +[ -n "$TPPORT" ] || TPPORT=988 +[ -n "$WS_USER" ] || WS_USER=daemon +TPWS_WAIT="--bind-wait-ifup=30 --bind-wait-ip=30" +TPWS_WAIT_SOCKS6="$TPWS_WAIT --bind-wait-ip-linklocal=30" +[ -n "$TPWS" ] || TPWS="$ZAPRET_BASE/tpws/tpws" + +CUSTOM_SCRIPT="$ZAPRET_BASE/init.d/macos/custom" +[ -f "$CUSTOM_SCRIPT" ] && . "$CUSTOM_SCRIPT" + +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 "$@" +} + +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\"" +} +tpws_apply_socks_binds() +{ + local o + + [ "$DISABLE_IPV4" = "1" ] || o="--bind-addr=127.0.0.1" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-addr=::1" + + for lan in $IFACE_LAN; do + [ "$DISABLE_IPV4" = "1" ] || o="$o --bind-iface4=$lan $TPWS_WAIT" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-iface6=$lan --bind-linklocal=unwanted $TPWS_WAIT_SOCKS6" + 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" ] && { + for lan in $IFACE_LAN; do + wait_interface_ll $lan >&2 || { + echo "wait interface failed on $lan" + return 1 + } + done + } + return 0 +} +get_ipv6_linklocal() +{ + ifconfig $1 | sed -nEe 's/^.*inet6 (fe80:[a-f0-9:]+).*/\1/p' +} + + +zapret_do_firewall() +{ + # $1 - 1 - add, 0 - del + + [ "$1" = 1 -a -n "$INIT_FW_PRE_UP_HOOK" ] && $INIT_FW_PRE_UP_HOOK + [ "$1" = 0 -a -n "$INIT_FW_PRE_DOWN_HOOK" ] && $INIT_FW_PRE_DOWN_HOOK + + case "${MODE_OVERRIDE:-$MODE}" in + tpws|filter|custom) + if [ "$1" = "1" ] ; then + pf_anchor_root || return 1 + pf_anchors_create + pf_anchors_load || return 1 + pf_enable + else + pf_anchors_clear + fi + ;; + esac + + [ "$1" = 1 -a -n "$INIT_FW_POST_UP_HOOK" ] && $INIT_FW_POST_UP_HOOK + [ "$1" = 0 -a -n "$INIT_FW_POST_DOWN_HOOK" ] && $INIT_FW_POST_DOWN_HOOK + + 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_OVERRIDE:-$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" + tpws_apply_binds opt + opt="$opt $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + do_daemon $1 1 "$TPWS" "$opt" + ;; + tpws-socks) + [ "$1" = "1" ] && [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && { + echo "both ipv4 and ipv6 are disabled. nothing to do" + return 0 + } + opt="--socks --user=$WS_USER --port=$TPPORT" + tpws_apply_socks_binds opt + opt="$opt $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + do_daemon $1 1 "$TPWS" "$opt" + ;; + filter) + ;; + custom) + custom_runner zapret_custom_daemons $1 + ;; + *) + echo "unsupported MODE=$MODE" + return 1 + ;; + esac + + return 0 +} +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..17f7897 --- /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|start_fw) + zapret_apply_firewall + ;; + stop-fw|stop_fw) + zapret_unapply_firewall + ;; + restart-fw|stop_fw) + zapret_restart_firewall + ;; + reload-fw-tables|reload_fw_tables) + pf_table_reload + ;; + + start-daemons|start_daemons) + zapret_run_daemons + ;; + stop-daemons|stop_daemons) + zapret_stop_daemons + ;; + restart-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/openrc/zapret b/init.d/openrc/zapret new file mode 100755 index 0000000..3a1ca58 --- /dev/null +++ b/init.d/openrc/zapret @@ -0,0 +1,69 @@ +#!/sbin/openrc-run + +# zapret openrc to sysv adapter +# on some systems (alpine) for unknown reason non-openrc-run scripts are not started from /etc/init.d + +EXEDIR=$(dirname "$RC_SERVICE") +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE="$EXEDIR/../.." +ZAPRET_INIT="$ZAPRET_BASE/init.d/sysv/zapret" + +extra_commands="start_fw stop_fw restart_fw start_daemons stop_daemons restart_daemons reload_ifsets list_ifsets list_table" +description="extra commands :" +description_stop_fw="Stop zapret firewall" +description_start_fw="Start zapret firewall" +description_restart_fw="Restart zapret firewall" +description_reload_ifsets="Reload interface lists (nftables only)" +description_list_ifsets="Display interface lists (nftables only)" +description_list_table="Display zapret nftable (nftables only)" +description_stop_daemons="Stop zapret daemons only" +description_start_daemons="Start zapret daemons only" +description_restart_daemons="Restart zapret firewall only" + +depend() { + rc-service -e networking && need networking +} +start() +{ + "$ZAPRET_INIT" start +} +stop() +{ + "$ZAPRET_INIT" stop +} +start_fw() +{ + "$ZAPRET_INIT" start_fw +} +stop_fw() +{ + "$ZAPRET_INIT" stop_fw +} +restart_fw() +{ + "$ZAPRET_INIT" restart_fw +} +start_daemons() +{ + "$ZAPRET_INIT" start_daemons +} +stop_daemons() +{ + "$ZAPRET_INIT" stop_daemons +} +restart_daemons() +{ + "$ZAPRET_INIT" restart_daemons +} +reload_ifsets() +{ + "$ZAPRET_INIT" reload_ifsets +} +list_ifsets() +{ + "$ZAPRET_INIT" list_ifsets +} +list_table() +{ + "$ZAPRET_INIT" list_table +} diff --git a/init.d/openwrt/90-zapret b/init.d/openwrt/90-zapret new file mode 100644 index 0000000..8cb05f5 --- /dev/null +++ b/init.d/openwrt/90-zapret @@ -0,0 +1,63 @@ +#!/bin/sh + +ZAPRET=/etc/init.d/zapret + +check_lan() +{ + IS_LAN= + [ -n "$OPENWRT_LAN" ] || OPENWRT_LAN=lan + for lan in $OPENWRT_LAN; do + [ "$INTERFACE" = "$lan" ] && { + IS_LAN=1 + break + } + done +} +check_need_to_reload_tpws6() +{ + # tpws6 dnat target nft map can only be reloaded within firewall apply procedure + # interface ifsets (wanif, wanif6, lanif) can be reloaded independently + check_lan + RELOAD_TPWS6= + [ "$ACTION" = "ifup" -a "$DISABLE_IPV6" != 1 -a -n "$IS_LAN" ] && [ "$MODE" = "tpws" -o "$MODE" = "custom" ] && RELOAD_TPWS6=1 +} + + +[ -n "$INTERFACE" ] && [ "$ACTION" = ifup -o "$ACTION" = ifdown ] && [ -x "$ZAPRET" ] && "$ZAPRET" enabled && { + SCRIPT=$(readlink "$ZAPRET") + if [ -n "$SCRIPT" ]; then + EXEDIR=$(dirname "$SCRIPT") + ZAPRET_BASE=$(readlink -f "$EXEDIR/../..") + else + ZAPRET_BASE=/opt/zapret + fi + ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} + ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} + . "$ZAPRET_CONFIG" + + check_need_to_reload_tpws6 + [ -n "$RELOAD_TPWS6" ] && { + logger -t zapret restarting daemons due to $ACTION of $INTERFACE to update tpws6 dnat target + "$ZAPRET" restart_daemons + } + . "$ZAPRET_BASE/common/base.sh" + . "$ZAPRET_BASE/common/fwtype.sh" + linux_fwtype + case "$FWTYPE" in + nftables) + if [ -n "$RELOAD_TPWS6" ] ; then + logger -t zapret reloading nftables due to $ACTION of $INTERFACE to update tpws6 dnat target + "$ZAPRET" restart_fw + else + logger -t zapret reloading nftables ifsets due to $ACTION of $INTERFACE + "$ZAPRET" reload_ifsets + fi + ;; + iptables) + openwrt_fw3 || { + logger -t zapret reloading iptables due to $ACTION of $INTERFACE + "$ZAPRET" restart_fw + } + ;; + esac +} diff --git a/init.d/openwrt/custom.d.examples/10-inherit-nfqws b/init.d/openwrt/custom.d.examples/10-inherit-nfqws new file mode 100644 index 0000000..b156402 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/10-inherit-nfqws @@ -0,0 +1,22 @@ +# this custom script applies nfqws mode as it would be with MODE=nfqws + +OVERRIDE=nfqws + +zapret_custom_daemons() +{ + # stop logic is managed by procd + + MODE_OVERRIDE=$OVERRIDE start_daemons_procd +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/openwrt/custom.d.examples/10-inherit-tpws b/init.d/openwrt/custom.d.examples/10-inherit-tpws new file mode 100644 index 0000000..ae2bdf9 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/10-inherit-tpws @@ -0,0 +1,22 @@ +# this custom script applies tpws mode as it would be with MODE=tpws + +OVERRIDE=tpws + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE start_daemons_procd +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/openwrt/custom.d.examples/10-inherit-tpws-socks b/init.d/openwrt/custom.d.examples/10-inherit-tpws-socks new file mode 100644 index 0000000..8336b72 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/10-inherit-tpws-socks @@ -0,0 +1,22 @@ +# this custom script applies tpws-socks mode as it would be with MODE=tpws-socks + +OVERRIDE=tpws-socks + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE start_daemons_procd +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/openwrt/custom.d.examples/50-dht4all b/init.d/openwrt/custom.d.examples/50-dht4all new file mode 100644 index 0000000..3126658 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/50-dht4all @@ -0,0 +1,39 @@ +# this custom script runs desync to DHT packets with udp payload length 101..399 , without ipset/hostlist filtering +# need to add to config : NFQWS_OPT_DESYNC_DHT="--dpi-desync=fake --dpi-desync-ttl=5" + +DNUM=101 +QNUM2=$(($DNUM * 5)) + +zapret_custom_daemons() +{ + # stop logic is managed by procd + + local opt="--qnum=$QNUM2 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_DHT" + run_daemon $DNUM $NFQWS "$opt" +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f uf4 uf6 + local first_packet_only="$ipt_connbytes 1:1" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + f='-p udp -m length --length 109:407 -m u32 --u32' + uf4='0>>22&0x3C@8>>16=0x6431' + uf6='48>>16=0x6431' + fw_nfqws_post $1 "$f $uf4 $desync $first_packet_only" "$f $uf6 $desync $first_packet_only" $QNUM2 + +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packet_only="$nft_connbytes 1" + local desync="mark and $DESYNC_MARK == 0" + + f="meta length 109-407 meta l4proto udp @th,64,16 0x6431" + nft_fw_nfqws_post "$f $desync $first_packet_only" "$f $desync $first_packet_only" $QNUM2 +} + diff --git a/init.d/openwrt/custom.d.examples/50-discord b/init.d/openwrt/custom.d.examples/50-discord new file mode 100644 index 0000000..92d1400 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/50-discord @@ -0,0 +1,69 @@ +# this custom script in addition to MODE=nfqws runs desync of some udp packets to discord subnets +# idea taken from community. not tested and not optimized by author. + +# can override in config : +NFQWS_OPT_DESYNC_DISCORD="${NFQWS_OPT_DESYNC_DISCORD:---dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-any-protocol}" +DISCORD_PORTS=${DISCORD_PORTS:-50000-65535} +DISCORD_SUBNETS="${DISCORD_SUBNETS:-5.200.14.249 18.165.140.0/25 23.227.38.74 34.0.48.0/24 34.0.49.64/26 34.0.50.0/25 34.0.51.0/24 34.0.52.0/22 34.0.56.0/23 34.0.59.0/24 34.0.60.0/24 34.0.62.128/25 34.0.63.228 34.0.64.0/23 34.0.66.130 34.0.82.140 34.0.129.128/25 34.0.130.0/24 34.0.131.130 34.0.132.139 34.0.133.75 34.0.134.0/24 34.0.135.251 34.0.136.51 34.0.137.0/24 34.0.139.0/24 34.0.140.0/23 34.0.142.0/25 34.0.144.0/23 34.0.146.0/24 34.0.148.25 34.0.149.101 34.0.151.0/25 34.0.153.0/24 34.0.155.0/24 34.0.156.101 34.0.157.0/25 34.0.158.247 34.0.159.188 34.0.192.0/25 34.0.193.0/24 34.0.194.0/24 34.0.195.172 34.0.196.200/29 34.0.197.81 34.0.198.25 34.0.199.0/24 34.0.200.0/24 34.0.201.81 34.0.202.34 34.0.203.0/24 34.0.204.0/23 34.0.206.0/25 34.0.207.0/25 34.0.208.195 34.0.209.0/24 34.0.210.20 34.0.211.0/26 34.0.212.0/24 34.0.213.64/26 34.0.215.128/25 34.0.216.238 34.0.217.0/24 34.0.218.83 34.0.220.103 34.0.221.0/24 34.0.222.193 34.0.223.68 34.0.227.0/24 34.0.240.0/21 34.0.248.0/23 34.0.250.0/24 34.0.251.0/25 34.1.216.0/24 34.1.221.166 35.207.64.0/23 35.207.67.116 35.207.71.0/24 35.207.72.32 35.207.73.0/24 35.207.74.0/24 35.207.75.128/25 35.207.76.128/26 35.207.77.0/24 35.207.78.129 35.207.79.0/24 35.207.80.76 35.207.81.248/30 35.207.82.0/23 35.207.84.0/24 35.207.85.160 35.207.86.41 35.207.87.184 35.207.89.188 35.207.91.146 35.207.92.230 35.207.95.0/24 35.207.97.174 35.207.99.134 35.207.100.64/26 35.207.101.130 35.207.103.64/26 35.207.104.0/24 35.207.106.128/26 35.207.107.19 35.207.108.192/27 35.207.109.185 35.207.110.0/24 35.207.111.174 35.207.114.16 35.207.115.163 35.207.116.51 35.207.117.0/24 35.207.121.204 35.207.122.0/25 35.207.124.145 35.207.125.116 35.207.126.30 35.207.129.0/24 35.207.131.128/27 35.207.132.247 35.207.135.147 35.207.136.69 35.207.137.0/24 35.207.139.0/24 35.207.140.241 35.207.141.119 35.207.142.0/24 35.207.143.96/27 35.207.144.0/25 35.207.145.0/24 35.207.146.89 35.207.147.0/24 35.207.149.0/24 35.207.150.0/24 35.207.151.61 35.207.153.117 35.207.154.0/24 35.207.155.128/25 35.207.156.254 35.207.157.7 35.207.158.192 35.207.160.160 35.207.162.239 35.207.163.0/24 35.207.164.0/25 35.207.165.147 35.207.166.0/25 35.207.167.0/24 35.207.168.116 35.207.170.0/23 35.207.172.0/24 35.207.174.55 35.207.176.128/25 35.207.178.0/24 35.207.180.152 35.207.181.76 35.207.182.125 35.207.184.101 35.207.185.192 35.207.186.128/25 35.207.187.228 35.207.188.0/24 35.207.189.0/25 35.207.190.194 35.207.191.64/26 35.207.193.165 35.207.195.75 35.207.196.0/24 35.207.198.0/23 35.207.201.186 35.207.202.169 35.207.205.211 35.207.207.4 35.207.209.0/25 35.207.210.191 35.207.211.253 35.207.213.97 35.207.214.0/24 35.207.220.147 35.207.221.58 35.207.222.105 35.207.224.151 35.207.225.210 35.207.227.0/24 35.207.229.212 35.207.232.26 35.207.234.182 35.207.238.0/24 35.207.240.0/24 35.207.245.0/24 35.207.249.0/24 35.207.250.212 35.207.251.0/27 35.212.4.134 35.212.12.148 35.212.88.11 35.212.102.50 35.212.111.0/26 35.212.117.247 35.212.120.122 35.213.0.0/24 35.213.2.8 35.213.4.185 35.213.6.118 35.213.7.128/25 35.213.8.168 35.213.10.0/24 35.213.11.21 35.213.12.224/27 35.213.13.19 35.213.14.217 35.213.16.67 35.213.17.235 35.213.23.166 35.213.25.164 35.213.26.62 35.213.27.252 35.213.32.0/24 35.213.33.74 35.213.34.204 35.213.37.81 35.213.38.186 35.213.39.253 35.213.42.0/24 35.213.43.79 35.213.45.0/24 35.213.46.136 35.213.49.17 35.213.50.0/24 35.213.51.213 35.213.52.0/25 35.213.53.0/24 35.213.54.0/24 35.213.56.0/25 35.213.59.0/24 35.213.61.58 35.213.65.0/24 35.213.67.0/24 35.213.68.192/26 35.213.70.151 35.213.72.128/25 35.213.73.245 35.213.74.131 35.213.78.0/24 35.213.79.137 35.213.80.0/25 35.213.83.128/25 35.213.84.245 35.213.85.0/24 35.213.88.145 35.213.89.80/28 35.213.90.0/24 35.213.91.195 35.213.92.0/24 35.213.93.254 35.213.94.78 35.213.95.145 35.213.96.87 35.213.98.0/24 35.213.99.126 35.213.101.214 35.213.102.0/24 35.213.105.0/24 35.213.106.128/25 35.213.107.158 35.213.109.0/24 35.213.110.40 35.213.111.0/25 35.213.115.0/25 35.213.120.0/24 35.213.122.0/24 35.213.124.89 35.213.125.40 35.213.126.185 35.213.127.0/24 35.213.128.0/22 35.213.132.0/23 35.213.134.140 35.213.135.0/24 35.213.136.0/23 35.213.138.128/25 35.213.139.0/24 35.213.140.0/25 35.213.141.164 35.213.142.128/25 35.213.143.0/24 35.213.144.0/22 35.213.148.0/23 35.213.150.0/24 35.213.152.0/23 35.213.154.137 35.213.155.134 35.213.156.144 35.213.157.0/24 35.213.158.64/26 35.213.160.90 35.213.161.253 35.213.162.0/25 35.213.163.0/24 35.213.164.0/23 35.213.166.106 35.213.167.160/27 35.213.168.0/24 35.213.169.179 35.213.170.0/24 35.213.171.201 35.213.172.159 35.213.173.0/24 35.213.174.128/25 35.213.175.128/26 35.213.176.0/24 35.213.177.0/25 35.213.179.139 35.213.180.0/24 35.213.181.0/25 35.213.182.0/23 35.213.184.0/23 35.213.186.70 35.213.187.0/24 35.213.188.128/25 35.213.190.158 35.213.191.0/24 35.213.192.240/31 35.213.193.74 35.213.194.0/25 35.213.195.178 35.213.196.38 35.213.197.68 35.213.198.0/23 35.213.200.0/23 35.213.202.0/25 35.213.203.195 35.213.204.32/27 35.213.205.170 35.213.207.128/25 35.213.208.85 35.213.210.0/24 35.213.211.176/29 35.213.212.0/24 35.213.213.225 35.213.214.0/25 35.213.215.255 35.213.217.0/24 35.213.218.248 35.213.219.0/25 35.213.220.211 35.213.221.0/24 35.213.222.215 35.213.223.0/24 35.213.225.0/24 35.213.227.227 35.213.229.17 35.213.230.89 35.213.231.0/24 35.213.233.0/24 35.213.234.134 35.213.236.0/24 35.213.237.212 35.213.238.0/24 35.213.240.212 35.213.241.0/24 35.213.242.10 35.213.243.219 35.213.244.146 35.213.245.119 35.213.246.0/23 35.213.249.79 35.213.250.0/24 35.213.251.74 35.213.252.0/24 35.213.253.155 35.213.254.89 35.214.128.248 35.214.129.220 35.214.130.217 35.214.131.144 35.214.132.189 35.214.133.0/24 35.214.134.163 35.214.137.0/24 35.214.138.0/25 35.214.140.0/24 35.214.142.0/24 35.214.143.41 35.214.144.26 35.214.145.200 35.214.146.9 35.214.147.135 35.214.148.89 35.214.149.110 35.214.151.128/25 35.214.152.0/24 35.214.156.115 35.214.158.181 35.214.159.128/25 35.214.160.128/25 35.214.161.217 35.214.162.0/24 35.214.163.28 35.214.165.102 35.214.167.77 35.214.169.0/24 35.214.170.2 35.214.171.0/25 35.214.172.128/25 35.214.173.0/24 35.214.175.0/24 35.214.177.183 35.214.179.46 35.214.180.0/23 35.214.184.179 35.214.185.28 35.214.186.3 35.214.187.0/24 35.214.191.0/24 35.214.192.128/25 35.214.193.0/24 35.214.194.128/25 35.214.195.0/25 35.214.196.64/26 35.214.197.0/24 35.214.198.7 35.214.199.224 35.214.201.0/25 35.214.203.155 35.214.204.0/23 35.214.207.0/24 35.214.208.128/25 35.214.209.64 35.214.210.0/24 35.214.211.3 35.214.212.64/26 35.214.213.0/25 35.214.214.0/24 35.214.215.64/26 35.214.216.0/23 35.214.218.140 35.214.219.0/24 35.214.220.149 35.214.221.0/24 35.214.222.149 35.214.223.0/24 35.214.224.71 35.214.225.0/24 35.214.226.0/23 35.214.228.0/23 35.214.231.187 35.214.233.8 35.214.235.38 35.214.237.0/24 35.214.238.0/25 35.214.239.0/24 35.214.240.87 35.214.241.0/24 35.214.243.21 35.214.244.0/24 35.214.245.16/28 35.214.246.106 35.214.248.119 35.214.249.154 35.214.250.0/24 35.214.251.128/25 35.214.252.187 35.214.253.0/24 35.214.255.154 35.215.72.85 35.215.73.65 35.215.83.0 35.215.108.111 35.215.115.120 35.215.126.35 35.215.127.34 35.215.128.0/21 35.215.136.0/26 35.215.137.0/24 35.215.138.0/23 35.215.140.0/24 35.215.141.64/27 35.215.142.0/24 35.215.143.83 35.215.144.128/25 35.215.145.0/24 35.215.146.0/24 35.215.147.86 35.215.148.0/23 35.215.150.0/26 35.215.151.0/24 35.215.152.0/24 35.215.153.128/25 35.215.154.240/28 35.215.155.20 35.215.156.0/24 35.215.158.0/23 35.215.160.192/26 35.215.161.0/24 35.215.163.0/24 35.215.164.0/24 35.215.165.236 35.215.166.128/25 35.215.167.128/25 35.215.168.0/24 35.215.169.12 35.215.170.0/23 35.215.172.0/22 35.215.176.0/24 35.215.177.72 35.215.178.0/24 35.215.179.161 35.215.180.0/22 35.215.184.253 35.215.185.64/26 35.215.186.0/25 35.215.187.0/24 35.215.188.0/23 35.215.190.0/24 35.215.191.61 35.215.192.0/23 35.215.194.192/28 35.215.195.0/24 35.215.196.0/25 35.215.197.0/25 35.215.198.230 35.215.199.204 35.215.200.0/23 35.215.202.0/24 35.215.203.0/25 35.215.204.128/25 35.215.205.0/25 35.215.206.0/23 35.215.208.0/24 35.215.209.0/25 35.215.210.0/23 35.215.212.0/22 35.215.216.0/22 35.215.221.0/24 35.215.222.128/25 35.215.223.126 35.215.224.0/23 35.215.226.0/24 35.215.227.0/25 35.215.228.0/24 35.215.229.64 35.215.230.89 35.215.231.0/24 35.215.232.0/24 35.215.233.0/25 35.215.234.37 35.215.235.0/24 35.215.238.0/25 35.215.239.119 35.215.240.0/24 35.215.241.128/25 35.215.242.0/25 35.215.243.0/24 35.215.244.0/23 35.215.246.222 35.215.247.0/24 35.215.248.0/22 35.215.252.0/24 35.215.253.118 35.215.254.0/23 35.217.0.0/24 35.217.1.64/26 35.217.2.5 35.217.3.0/24 35.217.4.72 35.217.5.0/25 35.217.6.0/24 35.217.8.0/25 35.217.9.0/24 35.217.11.186 35.217.12.0/24 35.217.14.192/26 35.217.15.65 35.217.16.75 35.217.17.128/25 35.217.18.0/24 35.217.19.183 35.217.20.0/24 35.217.21.128/25 35.217.22.128/25 35.217.23.128/25 35.217.24.0/24 35.217.25.81 35.217.26.0/24 35.217.27.128/25 35.217.28.128/25 35.217.29.0/24 35.217.30.0/25 35.217.31.0/25 35.217.32.128/25 35.217.33.0/24 35.217.35.128/25 35.217.36.0/23 35.217.38.179 35.217.39.186 35.217.40.176 35.217.41.204 35.217.43.0/24 35.217.45.248 35.217.46.0/24 35.217.47.128/25 35.217.48.195 35.217.49.160/27 35.217.50.0/25 35.217.51.0/24 35.217.52.117 35.217.53.128/25 35.217.54.0/25 35.217.55.96/27 35.217.56.6 35.217.57.184 35.217.58.0/24 35.217.59.64/26 35.217.60.0/24 35.217.61.128/25 35.217.62.0/24 35.217.63.128/25 35.219.225.149 35.219.226.57 35.219.227.0/24 35.219.228.37 35.219.229.128/25 35.219.230.0/23 35.219.235.0/24 35.219.236.198 35.219.238.115 35.219.239.0/24 35.219.241.0/24 35.219.242.221 35.219.243.191 35.219.244.1 35.219.245.0/24 35.219.246.159 35.219.247.0/26 35.219.248.0/24 35.219.249.126 35.219.251.186 35.219.252.0/23 35.219.254.0/24 64.233.161.207 64.233.162.207 64.233.163.207 64.233.164.207 64.233.165.207 66.22.196.0/26 66.22.197.0/24 66.22.198.0/26 66.22.199.0/24 66.22.200.0/26 66.22.202.0/26 66.22.204.0/24 66.22.206.0/24 66.22.208.0/25 66.22.210.0/26 66.22.212.0/24 66.22.214.0/24 66.22.216.0/23 66.22.220.0/25 66.22.221.0/24 66.22.222.0/23 66.22.224.0/25 66.22.225.0/26 66.22.226.0/25 66.22.227.0/25 66.22.228.0/22 66.22.233.0/24 66.22.234.0/24 66.22.236.0/23 66.22.238.0/24 66.22.240.0/22 66.22.244.0/23 66.22.248.0/24 74.125.131.207 74.125.205.207 104.17.51.93 104.17.117.93 104.18.4.161 104.18.5.161 104.18.8.105 104.18.9.105 104.18.30.128 104.18.31.128 104.21.2.204 104.21.25.51 104.21.40.151 104.21.59.128 104.21.72.221 104.21.82.160 108.177.14.207 138.128.140.240/28 142.250.150.207 142.251.1.207 162.159.128.232/30 162.159.129.232/30 162.159.130.232/30 162.159.133.232/30 162.159.134.232/30 162.159.135.232/30 162.159.136.232/30 162.159.137.232/30 162.159.138.232/30 172.65.202.19 172.66.41.34 172.66.42.222 172.67.152.224/28 172.67.155.163 172.67.159.89 172.67.177.131 172.67.222.182 173.194.73.207 173.194.220.207 173.194.221.207 173.194.222.207 188.114.96.2 188.114.97.2 188.114.98.224 188.114.99.224 204.11.56.48 209.85.233.207}" + +DNUM=105 +QNUM_DISCORD=$(($DNUM * 5)) +DISCORD_SET_NAME=discord + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt="--qnum=$QNUM_DISCORD $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_DISCORD" + run_daemon $DNUM $NFQWS "$opt" +} + +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f + local first_packets_only="$ipt_connbytes 1:1" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + local DISCORD_PORTS_IPT=$(replace_char - : $DISCORD_PORTS) + local dest_set="-m set --match-set $DISCORD_SET_NAME dst" + local subnet + + local DISABLE_IPV6=1 + + [ "$1" = 1 ] && { + ipset create $DISCORD_SET_NAME hash:net hashsize 8192 maxelem 4096 2>/dev/null + ipset flush $DISCORD_SET_NAME + for subnet in $DISCORD_SUBNETS; do + echo add $DISCORD_SET_NAME $subnet + done | ipset -! restore + } + + f="-p udp -m multiport --dports $DISCORD_PORTS_IPT" + fw_nfqws_post $1 "$f $desync $first_packets_only $dest_set" "" $QNUM_DISCORD + + [ "$1" = 1 ] || { + ipset destroy $DISCORD_SET_NAME + } +} + +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packets_only="$nft_connbytes 1" + local desync="mark and $DESYNC_MARK == 0" + local dest_set="ip daddr @$DISCORD_SET_NAME" + local subnets + + local DISABLE_IPV6=1 + + make_comma_list subnets $DISCORD_SUBNETS + nft_create_set $DISCORD_SET_NAME "type ipv4_addr; size 4096; auto-merge; flags interval;" + nft_flush_set $DISCORD_SET_NAME + nft_add_set_element $DISCORD_SET_NAME "$subnets" + + f="udp dport {$DISCORD_PORTS}" + nft_fw_nfqws_post "$f $desync $first_packets_only $dest_set" "" $QNUM_DISCORD +} diff --git a/init.d/openwrt/custom.d.examples/50-quic4all b/init.d/openwrt/custom.d.examples/50-quic4all new file mode 100644 index 0000000..7445344 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/50-quic4all @@ -0,0 +1,37 @@ +# this custom script runs desync to all QUIC initial packets, without ipset/hostlist filtering +# need to add to config : NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake" +# NOTE : do not use TTL fooling. chromium QUIC engine breaks sessions if TTL expired in transit received + +DNUM=102 +QNUM2=$(($DNUM * 5)) + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt="--qnum=$QNUM2 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC" + run_daemon $DNUM $NFQWS "$opt" +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f + local first_packets_only="$ipt_connbytes 1:3" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + f="-p udp -m multiport --dports $QUIC_PORTS_IPT" + fw_nfqws_post $1 "$f $desync $first_packets_only" "$f $desync $first_packets_only" $QNUM2 + +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packets_only="$nft_connbytes 1-3" + local desync="mark and $DESYNC_MARK == 0" + + f="udp dport {$QUIC_PORTS}" + nft_fw_nfqws_post "$f $desync $first_packets_only" "$f $desync $first_packets_only" $QNUM2 +} diff --git a/init.d/openwrt/custom.d.examples/50-tpws4http-nfqws4https b/init.d/openwrt/custom.d.examples/50-tpws4http-nfqws4https new file mode 100644 index 0000000..df18da8 --- /dev/null +++ b/init.d/openwrt/custom.d.examples/50-tpws4http-nfqws4https @@ -0,0 +1,71 @@ +# 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, NFQWS_OPT_DESYNC_HTTPS + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + run_tpws 1 "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="--qnum=$QNUM $NFQWS_OPT_DESYNC_HTTPS" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS_SUFFIX" + run_daemon 2 $NFQWS "$opt" + } +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f4 f6 + local first_packet_only="$ipt_connbytes 1:$(first_packets_for_mode)" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="-p tcp -m multiport --dports $HTTP_PORTS_IPT" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws $1 "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="-p tcp -m multiport --dports $HTTPS_PORTS_IPT $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + # for modes that require incoming traffic + fw_reverse_nfqws_rule $1 "$f4" "$f6" $QNUM + } +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f4 f6 + local first_packet_only="$nft_connbytes 1-$(first_packets_for_mode)" + local desync="mark and $DESYNC_MARK == 0" + + [ "$MODE_HTTP" = "1" ] && { + f4="tcp dport {$HTTP_PORTS}" + f6=$f4 + nft_filter_apply_ipset_target f4 f6 + nft_fw_tpws "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="tcp dport {$HTTPS_PORTS} $first_packet_only" + f6=$f4 + nft_filter_apply_ipset_target f4 f6 + nft_fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + # for modes that require incoming traffic + nft_fw_reverse_nfqws_rule "$f4" "$f6" $QNUM + } +} diff --git a/init.d/openwrt/custom.d/.keep b/init.d/openwrt/custom.d/.keep new file mode 100644 index 0000000..e69de29 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..3c1e8d0 --- /dev/null +++ b/init.d/openwrt/functions @@ -0,0 +1,282 @@ +. /lib/functions/network.sh + +ZAPRET_BASE=${ZAPRET_BASE:-/opt/zapret} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/queue.sh" +. "$ZAPRET_BASE/common/linux_iphelper.sh" +. "$ZAPRET_BASE/common/ipt.sh" +. "$ZAPRET_BASE/common/nft.sh" +. "$ZAPRET_BASE/common/linux_fw.sh" +. "$ZAPRET_BASE/common/list.sh" +. "$ZAPRET_BASE/common/custom.sh" +CUSTOM_DIR="$ZAPRET_RW/init.d/openwrt" + +[ -n "$QNUM" ] || QNUM=200 +[ -n "$TPPORT" ] || TPPORT=988 +[ -n "$WS_USER" ] || WS_USER=daemon +[ -n "$DESYNC_MARK" ] || DESYNC_MARK=0x40000000 +[ -n "$DESYNC_MARK_POSTNAT" ] || DESYNC_MARK_POSTNAT=0x20000000 +[ -n "$OPENWRT_LAN" ] || OPENWRT_LAN=lan + +TPWS_LOCALHOST4=127.0.0.127 + +# max wait time for the link local ipv6 on the LAN interface +LINKLOCAL_WAIT_SEC=5 + +IPSET_CR="$ZAPRET_BASE/ipset/create_ipset.sh" + +IPSET_EXCLUDE="-m set ! --match-set nozapret" +IPSET_EXCLUDE6="-m set ! --match-set nozapret6" + +apply_unspecified_desync_modes + + +# 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_wan4_all() +{ + if [ -n "$OPENWRT_WAN4" ]; then + eval $1="\$OPENWRT_WAN4" + else + __network_ifstatus "$1" "" "[@.route[@.target='0.0.0.0' && !@.table]].interface" "" 10 2>/dev/null && return + network_find_wan $1 + fi +} +network_find_wan_all() +{ + network_find_wan4_all "$@" +} +network_find_wan6_all() +{ + if [ -n "$OPENWRT_WAN6" ]; then + eval $1="\$OPENWRT_WAN6" + else + __network_ifstatus "$1" "" "[@.route[@.target='::' && !@.table]].interface" "" 10 2>/dev/null && return + network_find_wan6 $1 + fi +} +network_find_wanX_devices() +{ + # $1 - ip version: 4 or 6 + # $2 - variable to put result to + local ifaces + network_find_wan${1}_all ifaces + call_for_multiple_items network_get_device $2 "$ifaces" +} + + +dnat6_target() +{ + # $1 - lan network name + # $2 - var to store target ip6 + + network_is_up $1 || { + [ -n "$2" ] && eval $2='' + return + } + + local DEVICE + network_get_device DEVICE $1 + + _dnat6_target $DEVICE $2 +} + +set_route_localnet() +{ + # $1 - 1 = enable, 0 = disable + + local DLAN + call_for_multiple_items network_get_device DLAN "$OPENWRT_LAN" + _set_route_localnet $1 $DLAN +} + + +fw_nfqws_prepost_x() +{ + # $1 - 1 - add, 0 - del + # $2 - filter + # $3 - queue number + # $4 - 4/6 + # $5 - post/pre + + local ifaces DWAN + network_find_wan${4}_all ifaces + call_for_multiple_items network_get_device DWAN "$ifaces" + + [ -n "$DWAN" ] && _fw_nfqws_${5}${4} $1 "$2" $3 "$(unique $DWAN)" +} +fw_nfqws_post4() +{ + fw_nfqws_prepost_x $1 "$2" $3 4 post +} +fw_nfqws_post6() +{ + fw_nfqws_prepost_x $1 "$2" $3 6 post +} +fw_nfqws_pre4() +{ + fw_nfqws_prepost_x $1 "$2" $3 4 pre +} +fw_nfqws_pre6() +{ + fw_nfqws_prepost_x $1 "$2" $3 6 pre +} +fw_tpws_x() +{ + # $1 - 1 - add, 0 - del + # $2 - filter + # $3 - tpws port + # $4 - ip version : 4 or 6 + + local ifaces DLAN DWAN + + call_for_multiple_items network_get_device DLAN "$OPENWRT_LAN" + + network_find_wan${4}_all ifaces + call_for_multiple_items network_get_device DWAN "$ifaces" + + [ -n "$DWAN" ] && _fw_tpws${4} $1 "$2" $3 "$DLAN" "$(unique $DWAN)" +} +fw_tpws4() +{ + fw_tpws_x $1 "$2" $3 4 +} +fw_tpws6() +{ + fw_tpws_x $1 "$2" $3 6 +} + + +create_ipset() +{ + echo "Creating ip list table (firewall type $FWTYPE)" + "$IPSET_CR" "$@" +} + +list_nfqws_rules() +{ + # $1 = '' for ipv4, '6' for ipv6 + ip$1tables -S POSTROUTING -t mangle | \ + grep -E "NFQUEUE --queue-num $QNUM --queue-bypass|NFQUEUE --queue-num $(($QNUM+1)) --queue-bypass|NFQUEUE --queue-num $(($QNUM+2)) --queue-bypass|NFQUEUE --queue-num $(($QNUM+3)) --queue-bypass|NFQUEUE --queue-num $(($QNUM+10)) --queue-bypass|NFQUEUE --queue-num $(($QNUM+11)) --queue-bypass" | \ + sed -re 's/^-A POSTROUTING (.*) -j NFQUEUE.*$/\1/' -e "s/-m mark ! --mark $DESYNC_MARK\/$DESYNC_MARK//" +} +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_unexempt_v() +{ + # $1 = '' for ipv4, '6' for ipv6 + local DWAN + network_find_wanX_devices ${1:-4} DWAN + for i in $DWAN; do ipt$1_del FORWARD -o $i -j forwarding_rule_zapret ; done + ip$1tables -F forwarding_rule_zapret 2>/dev/null + ip$1tables -X forwarding_rule_zapret 2>/dev/null +} +flow_offloading_exempt_v() +{ + # $1 = '' for ipv4, '6' for ipv6 + is_ipt_flow_offload_avail $1 || return 0 + + flow_offloading_unexempt_v $1 + + [ "$FLOWOFFLOAD" = 'software' -o "$FLOWOFFLOAD" = 'hardware' ] && { + ip$1tables -N forwarding_rule_zapret + + # remove outgoing interface + list_nfqws_rules $1 | sed -re 's/-o +[^ ]+//g' | + while read rule; do + apply_flow_offloading_exempt_rule "$1" $rule + done + + apply_flow_offloading_enable_rule $1 + + # only outgoing to WAN packets trigger flow offloading + local DWAN + network_find_wanX_devices ${1:-4} DWAN + for i in $DWAN; do ipt$1 FORWARD -o $i -j forwarding_rule_zapret; done + } + return 0 +} +flow_offloading_exempt() +{ + [ "$DISABLE_IPV4" = "1" ] || flow_offloading_exempt_v + [ "$DISABLE_IPV6" = "1" ] || flow_offloading_exempt_v 6 +} +flow_offloading_unexempt() +{ + [ "$DISABLE_IPV4" = "1" ] || flow_offloading_unexempt_v + [ "$DISABLE_IPV6" = "1" ] || flow_offloading_unexempt_v 6 +} + + + +nft_fill_ifsets_overload() +{ + local ifaces DLAN DWAN DWAN6 PDLAN PDWAN PDWAN6 + + call_for_multiple_items network_get_device DLAN "$OPENWRT_LAN" + call_for_multiple_items network_get_physdev PDLAN "$OPENWRT_LAN" + + network_find_wan4_all ifaces + call_for_multiple_items network_get_device DWAN "$ifaces" + call_for_multiple_items network_get_physdev PDWAN "$ifaces" + + network_find_wan6_all ifaces + call_for_multiple_items network_get_device DWAN6 "$ifaces" + call_for_multiple_items network_get_physdev PDWAN6 "$ifaces" + + nft_fill_ifsets "$DLAN" "$DWAN" "$DWAN6" "$PDLAN" "$PDWAN" "$PDWAN6" +} + +nft_fw_tpws4() +{ + _nft_fw_tpws4 "$1" $2 always_apply_wan_filter +} +nft_fw_tpws6() +{ + local DLAN + call_for_multiple_items network_get_device DLAN "$OPENWRT_LAN" + _nft_fw_tpws6 "$1" $2 "$DLAN" always_apply_wan_filter +} +nft_fw_nfqws_post4() +{ + _nft_fw_nfqws_post4 "$1" $2 always_apply_wan_filter +} +nft_fw_nfqws_post6() +{ + _nft_fw_nfqws_post6 "$1" $2 always_apply_wan_filter +} +nft_fw_nfqws_pre4() +{ + _nft_fw_nfqws_pre4 "$1" $2 always_apply_wan_filter +} +nft_fw_nfqws_pre6() +{ + _nft_fw_nfqws_pre6 "$1" $2 always_apply_wan_filter +} diff --git a/init.d/openwrt/zapret b/init.d/openwrt/zapret new file mode 100755 index 0000000..c62760d --- /dev/null +++ b/init.d/openwrt/zapret @@ -0,0 +1,240 @@ +#!/bin/sh /etc/rc.common + +USE_PROCD=1 +# after network +START=21 + +my_extra_command() { + local cmd="$1" + local help="$2" + + local extra="$(printf "%-16s%s" "${cmd}" "${help}")" + EXTRA_HELP="${EXTRA_HELP} ${extra} +" + EXTRA_COMMANDS="${EXTRA_COMMANDS} ${cmd}" +} +my_extra_command stop_fw "Stop zapret firewall (noop in iptables+fw3 case)" +my_extra_command start_fw "Start zapret firewall (noop in iptables+fw3 case)" +my_extra_command restart_fw "Restart zapret firewall (noop in iptables+fw3 case)" +my_extra_command reload_ifsets "Reload interface lists (nftables only)" +my_extra_command list_ifsets "Display interface lists (nftables only)" +my_extra_command list_table "Display zapret nftable (nftables only)" +my_extra_command stop_daemons "Stop zapret daemons only (=stop in iptables+fw3 case)" +my_extra_command start_daemons "Start zapret daemons only (=start in iptables+fw3 case)" +my_extra_command restart_daemons "Restart zapret firewall only (=restart in iptables+fw3 case)" + +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 old openwrt 21.x- with iptables firewall rules are configured separately +# !!!!! in new openwrt >21.x with nftables firewall is configured here + +PIDDIR=/var/run + +[ -n "$NFQWS" ] || NFQWS="$ZAPRET_BASE/nfq/nfqws" +NFQWS_OPT_BASE="--user=$WS_USER --dpi-desync-fwmark=$DESYNC_MARK" + +[ -n "$TPWS" ] || TPWS="$ZAPRET_BASE/tpws/tpws" +TPWS_OPT_BASE="--user=$WS_USER" +TPWS_OPT_BASE4="--bind-addr=$TPWS_LOCALHOST4" +TPWS_OPT_BASE6="--bind-addr=::1" +TPWS_WAIT="--bind-wait-ifup=30 --bind-wait-ip=30" +TPWS_WAIT_SOCKS6="$TPWS_WAIT --bind-wait-ip-linklocal=30" +TPWS_OPT_BASE6_PRE="--bind-linklocal=prefer $TPWS_WAIT --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" + for lan in $OPENWRT_LAN; do + network_get_device DEVICE $lan + [ -n "$DEVICE" ] && OPT="$OPT --bind-iface6=$DEVICE $TPWS_OPT_BASE6_PRE" + done + } + run_daemon $1 "$TPWS" "$OPT $2" +} +run_tpws_socks() +{ + [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && return 0 + + local opt="$TPWS_OPT_BASE --socks" + + tpws_apply_socks_binds opt + run_daemon $1 "$TPWS" "$opt $2" +} + +stop_tpws() +{ + stop_daemon $1 "$TPWS" +} + + +tpws_apply_socks_binds() +{ + local o + + [ "$DISABLE_IPV4" = "1" ] || o="--bind-addr=127.0.0.1" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-addr=::1" + + for lan in $OPENWRT_LAN; do + network_get_device DEVICE $lan + [ -n "$DEVICE" ] || continue + [ "$DISABLE_IPV4" = "1" ] || o="$o --bind-iface4=$DEVICE $TPWS_WAIT" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-iface6=$DEVICE --bind-linklocal=unwanted $TPWS_WAIT_SOCKS6" + done + eval $1="\"\$$1 $o\"" +} + + +start_daemons_procd() +{ + local opt qn qns qn6 qns6 + + case "${MODE_OVERRIDE:-$MODE}" in + tpws) + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + run_tpws 1 "$opt" + ;; + tpws-socks) + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + run_tpws_socks 1 "$opt" + ;; + nfqws) + # quite complex but we need to minimize nfqws processes to save RAM + get_nfqws_qnums qn qns qn6 qns6 + [ -z "$qn" ] || { + opt="--qnum=$qn $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_HTTP" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTP_SUFFIX" + run_daemon 1 "$NFQWS" "$opt" + } + [ -z "$qns" ] || [ "$qns" = "$qn" ] || { + opt="--qnum=$qns $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_HTTPS" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS_SUFFIX" + run_daemon 2 "$NFQWS" "$opt" + } + [ -z "$qn6" ] || [ "$qn6" = "$qn" ] || [ "$qn6" = "$qns" ] || { + opt="--qnum=$qn6 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_HTTP6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTP6_SUFFIX" + run_daemon 3 "$NFQWS" "$opt" + } + [ -z "$qns6" ] || [ "$qns6" = "$qn" ] || [ "$qns6" = "$qns" ] || [ "$qns6" = "$qn6" ] || { + opt="--qnum=$qns6 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_HTTPS6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS6_SUFFIX" + run_daemon 4 "$NFQWS" "$opt" + } + get_nfqws_qnums_quic qn qn6 + [ -z "$qn" ] || { + opt="--qnum=$qn $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_QUIC_SUFFIX" + run_daemon 10 "$NFQWS" "$opt" + } + [ -z "$qn6" ] || [ "$qn6" = "$qn" ] || { + opt="--qnum=$qn6 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_QUIC6_SUFFIX" + run_daemon 11 "$NFQWS" "$opt" + } + ;; + custom) + custom_runner zapret_custom_daemons $1 + ;; + esac + + return 0 +} +start_daemons() +{ + rc_procd start_daemons_procd "$@" +} +stop_daemons() +{ + local svc="$(basename ${basescript:-$initscript})" + procd_running "$svc" "$1" && procd_kill "$svc" "$1" +} +restart_daemons() +{ + stop_daemons + start_daemons +} + +start_fw() +{ + zapret_apply_firewall +} +stop_fw() +{ + zapret_unapply_firewall +} +restart_fw() +{ + stop_fw + start_fw +} +reload_ifsets() +{ + zapret_reload_ifsets +} +list_ifsets() +{ + zapret_list_ifsets +} +list_table() +{ + zapret_list_table +} + +start_service() +{ + start_daemons_procd + [ "$INIT_APPLY_FW" != "1" ] || { + linux_fwtype + openwrt_fw3_integration || start_fw + } +} + +stop_service() +{ + # this procedure is called from stop() + # stop() already stop daemons + [ "$INIT_APPLY_FW" != "1" ] || { + linux_fwtype + openwrt_fw3_integration || stop_fw + } +} diff --git a/init.d/pfsense/zapret.sh b/init.d/pfsense/zapret.sh new file mode 100755 index 0000000..9c434ac --- /dev/null +++ b/init.d/pfsense/zapret.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# this file should be placed to /usr/local/etc/rc.d and chmod 755 + +# prepare system + +kldload ipfw +kldload ipdivert + +# for older pfsense versions. newer do not have these sysctls +sysctl net.inet.ip.pfil.outbound=ipfw,pf +sysctl net.inet.ip.pfil.inbound=ipfw,pf +sysctl net.inet6.ip6.pfil.outbound=ipfw,pf +sysctl net.inet6.ip6.pfil.inbound=ipfw,pf + +# required for newer pfsense versions (2.6.0 tested) to return ipfw to functional state +pfctl -d ; pfctl -e + +# add ipfw rules and start daemon + +ipfw delete 100 +ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg +pkill ^dvtws$ +dvtws --daemon --port 989 --dpi-desync=split2 diff --git a/init.d/runit/zapret/finish b/init.d/runit/zapret/finish new file mode 100755 index 0000000..2781ad3 --- /dev/null +++ b/init.d/runit/zapret/finish @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/zapret/init.d/sysv/zapret stop diff --git a/init.d/runit/zapret/run b/init.d/runit/zapret/run new file mode 100755 index 0000000..f216e93 --- /dev/null +++ b/init.d/runit/zapret/run @@ -0,0 +1,3 @@ +#!/bin/sh +/opt/zapret/init.d/sysv/zapret start +exec chpst -b zapret sleep infinity diff --git a/init.d/s6/zapret/down b/init.d/s6/zapret/down new file mode 100644 index 0000000..aaab911 --- /dev/null +++ b/init.d/s6/zapret/down @@ -0,0 +1,2 @@ +#!/bin/execlineb -P +exec /opt/zapret/init.d/sysv/zapret stop diff --git a/init.d/s6/zapret/type b/init.d/s6/zapret/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/init.d/s6/zapret/type @@ -0,0 +1 @@ +oneshot diff --git a/init.d/s6/zapret/up b/init.d/s6/zapret/up new file mode 100644 index 0000000..42a1210 --- /dev/null +++ b/init.d/s6/zapret/up @@ -0,0 +1,2 @@ +#!/bin/execlineb -P +exec /opt/zapret/init.d/sysv/zapret start 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.d.examples/10-inherit-nfqws b/init.d/sysv/custom.d.examples/10-inherit-nfqws new file mode 100644 index 0000000..6002969 --- /dev/null +++ b/init.d/sysv/custom.d.examples/10-inherit-nfqws @@ -0,0 +1,22 @@ +# this custom script applies nfqws mode as it would be with MODE=nfqws + +OVERRIDE=nfqws + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_daemons $1 +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/sysv/custom.d.examples/10-inherit-tpws b/init.d/sysv/custom.d.examples/10-inherit-tpws new file mode 100644 index 0000000..c1b183e --- /dev/null +++ b/init.d/sysv/custom.d.examples/10-inherit-tpws @@ -0,0 +1,22 @@ +# this custom script applies tpws mode as it would be with MODE=tpws + +OVERRIDE=tpws + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_daemons $1 +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/sysv/custom.d.examples/10-inherit-tpws-socks b/init.d/sysv/custom.d.examples/10-inherit-tpws-socks new file mode 100644 index 0000000..7fcb0e2 --- /dev/null +++ b/init.d/sysv/custom.d.examples/10-inherit-tpws-socks @@ -0,0 +1,22 @@ +# this custom script applies tpws-socks mode as it would be with MODE=tpws-socks + +OVERRIDE=tpws-socks + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_daemons $1 +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + MODE_OVERRIDE=$OVERRIDE zapret_do_firewall_rules_ipt $1 +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + MODE_OVERRIDE=$OVERRIDE zapret_apply_firewall_rules_nft +} diff --git a/init.d/sysv/custom.d.examples/50-dht4all b/init.d/sysv/custom.d.examples/50-dht4all new file mode 100644 index 0000000..735b2c5 --- /dev/null +++ b/init.d/sysv/custom.d.examples/50-dht4all @@ -0,0 +1,39 @@ +# this custom script runs desync to DHT packets with udp payload length 101..399 , without ipset/hostlist filtering +# need to add to config : NFQWS_OPT_DESYNC_DHT="--dpi-desync=fake --dpi-desync-ttl=5" + +DNUM=101 +QNUM2=$(($DNUM * 5)) + +zapret_custom_daemons() +{ + # stop logic is managed by procd + + local opt="--qnum=$QNUM2 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_DHT" + do_nfqws $1 $DNUM "$opt" +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f uf4 uf6 + local first_packet_only="$ipt_connbytes 1:1" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + f='-p udp -m length --length 109:407 -m u32 --u32' + uf4='0>>22&0x3C@8>>16=0x6431' + uf6='48>>16=0x6431' + fw_nfqws_post $1 "$f $uf4 $desync $first_packet_only" "$f $uf6 $desync $first_packet_only" $QNUM2 + +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packet_only="$nft_connbytes 1" + local desync="mark and $DESYNC_MARK == 0" + + f="meta length 109-407 meta l4proto udp @th,64,16 0x6431" + nft_fw_nfqws_post "$f $desync $first_packet_only" "$f $desync $first_packet_only" $QNUM2 +} + diff --git a/init.d/sysv/custom.d.examples/50-discord b/init.d/sysv/custom.d.examples/50-discord new file mode 100644 index 0000000..487b4cd --- /dev/null +++ b/init.d/sysv/custom.d.examples/50-discord @@ -0,0 +1,69 @@ +# this custom script in addition to MODE=nfqws runs desync of some udp packets to discord subnets +# idea taken from community. not tested and not optimized by author. + +# can override in config : +NFQWS_OPT_DESYNC_DISCORD="${NFQWS_OPT_DESYNC_DISCORD:---dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-any-protocol}" +DISCORD_PORTS=${DISCORD_PORTS:-50000-65535} +DISCORD_SUBNETS="${DISCORD_SUBNETS:-5.200.14.249 18.165.140.0/25 23.227.38.74 34.0.48.0/24 34.0.49.64/26 34.0.50.0/25 34.0.51.0/24 34.0.52.0/22 34.0.56.0/23 34.0.59.0/24 34.0.60.0/24 34.0.62.128/25 34.0.63.228 34.0.64.0/23 34.0.66.130 34.0.82.140 34.0.129.128/25 34.0.130.0/24 34.0.131.130 34.0.132.139 34.0.133.75 34.0.134.0/24 34.0.135.251 34.0.136.51 34.0.137.0/24 34.0.139.0/24 34.0.140.0/23 34.0.142.0/25 34.0.144.0/23 34.0.146.0/24 34.0.148.25 34.0.149.101 34.0.151.0/25 34.0.153.0/24 34.0.155.0/24 34.0.156.101 34.0.157.0/25 34.0.158.247 34.0.159.188 34.0.192.0/25 34.0.193.0/24 34.0.194.0/24 34.0.195.172 34.0.196.200/29 34.0.197.81 34.0.198.25 34.0.199.0/24 34.0.200.0/24 34.0.201.81 34.0.202.34 34.0.203.0/24 34.0.204.0/23 34.0.206.0/25 34.0.207.0/25 34.0.208.195 34.0.209.0/24 34.0.210.20 34.0.211.0/26 34.0.212.0/24 34.0.213.64/26 34.0.215.128/25 34.0.216.238 34.0.217.0/24 34.0.218.83 34.0.220.103 34.0.221.0/24 34.0.222.193 34.0.223.68 34.0.227.0/24 34.0.240.0/21 34.0.248.0/23 34.0.250.0/24 34.0.251.0/25 34.1.216.0/24 34.1.221.166 35.207.64.0/23 35.207.67.116 35.207.71.0/24 35.207.72.32 35.207.73.0/24 35.207.74.0/24 35.207.75.128/25 35.207.76.128/26 35.207.77.0/24 35.207.78.129 35.207.79.0/24 35.207.80.76 35.207.81.248/30 35.207.82.0/23 35.207.84.0/24 35.207.85.160 35.207.86.41 35.207.87.184 35.207.89.188 35.207.91.146 35.207.92.230 35.207.95.0/24 35.207.97.174 35.207.99.134 35.207.100.64/26 35.207.101.130 35.207.103.64/26 35.207.104.0/24 35.207.106.128/26 35.207.107.19 35.207.108.192/27 35.207.109.185 35.207.110.0/24 35.207.111.174 35.207.114.16 35.207.115.163 35.207.116.51 35.207.117.0/24 35.207.121.204 35.207.122.0/25 35.207.124.145 35.207.125.116 35.207.126.30 35.207.129.0/24 35.207.131.128/27 35.207.132.247 35.207.135.147 35.207.136.69 35.207.137.0/24 35.207.139.0/24 35.207.140.241 35.207.141.119 35.207.142.0/24 35.207.143.96/27 35.207.144.0/25 35.207.145.0/24 35.207.146.89 35.207.147.0/24 35.207.149.0/24 35.207.150.0/24 35.207.151.61 35.207.153.117 35.207.154.0/24 35.207.155.128/25 35.207.156.254 35.207.157.7 35.207.158.192 35.207.160.160 35.207.162.239 35.207.163.0/24 35.207.164.0/25 35.207.165.147 35.207.166.0/25 35.207.167.0/24 35.207.168.116 35.207.170.0/23 35.207.172.0/24 35.207.174.55 35.207.176.128/25 35.207.178.0/24 35.207.180.152 35.207.181.76 35.207.182.125 35.207.184.101 35.207.185.192 35.207.186.128/25 35.207.187.228 35.207.188.0/24 35.207.189.0/25 35.207.190.194 35.207.191.64/26 35.207.193.165 35.207.195.75 35.207.196.0/24 35.207.198.0/23 35.207.201.186 35.207.202.169 35.207.205.211 35.207.207.4 35.207.209.0/25 35.207.210.191 35.207.211.253 35.207.213.97 35.207.214.0/24 35.207.220.147 35.207.221.58 35.207.222.105 35.207.224.151 35.207.225.210 35.207.227.0/24 35.207.229.212 35.207.232.26 35.207.234.182 35.207.238.0/24 35.207.240.0/24 35.207.245.0/24 35.207.249.0/24 35.207.250.212 35.207.251.0/27 35.212.4.134 35.212.12.148 35.212.88.11 35.212.102.50 35.212.111.0/26 35.212.117.247 35.212.120.122 35.213.0.0/24 35.213.2.8 35.213.4.185 35.213.6.118 35.213.7.128/25 35.213.8.168 35.213.10.0/24 35.213.11.21 35.213.12.224/27 35.213.13.19 35.213.14.217 35.213.16.67 35.213.17.235 35.213.23.166 35.213.25.164 35.213.26.62 35.213.27.252 35.213.32.0/24 35.213.33.74 35.213.34.204 35.213.37.81 35.213.38.186 35.213.39.253 35.213.42.0/24 35.213.43.79 35.213.45.0/24 35.213.46.136 35.213.49.17 35.213.50.0/24 35.213.51.213 35.213.52.0/25 35.213.53.0/24 35.213.54.0/24 35.213.56.0/25 35.213.59.0/24 35.213.61.58 35.213.65.0/24 35.213.67.0/24 35.213.68.192/26 35.213.70.151 35.213.72.128/25 35.213.73.245 35.213.74.131 35.213.78.0/24 35.213.79.137 35.213.80.0/25 35.213.83.128/25 35.213.84.245 35.213.85.0/24 35.213.88.145 35.213.89.80/28 35.213.90.0/24 35.213.91.195 35.213.92.0/24 35.213.93.254 35.213.94.78 35.213.95.145 35.213.96.87 35.213.98.0/24 35.213.99.126 35.213.101.214 35.213.102.0/24 35.213.105.0/24 35.213.106.128/25 35.213.107.158 35.213.109.0/24 35.213.110.40 35.213.111.0/25 35.213.115.0/25 35.213.120.0/24 35.213.122.0/24 35.213.124.89 35.213.125.40 35.213.126.185 35.213.127.0/24 35.213.128.0/22 35.213.132.0/23 35.213.134.140 35.213.135.0/24 35.213.136.0/23 35.213.138.128/25 35.213.139.0/24 35.213.140.0/25 35.213.141.164 35.213.142.128/25 35.213.143.0/24 35.213.144.0/22 35.213.148.0/23 35.213.150.0/24 35.213.152.0/23 35.213.154.137 35.213.155.134 35.213.156.144 35.213.157.0/24 35.213.158.64/26 35.213.160.90 35.213.161.253 35.213.162.0/25 35.213.163.0/24 35.213.164.0/23 35.213.166.106 35.213.167.160/27 35.213.168.0/24 35.213.169.179 35.213.170.0/24 35.213.171.201 35.213.172.159 35.213.173.0/24 35.213.174.128/25 35.213.175.128/26 35.213.176.0/24 35.213.177.0/25 35.213.179.139 35.213.180.0/24 35.213.181.0/25 35.213.182.0/23 35.213.184.0/23 35.213.186.70 35.213.187.0/24 35.213.188.128/25 35.213.190.158 35.213.191.0/24 35.213.192.240/31 35.213.193.74 35.213.194.0/25 35.213.195.178 35.213.196.38 35.213.197.68 35.213.198.0/23 35.213.200.0/23 35.213.202.0/25 35.213.203.195 35.213.204.32/27 35.213.205.170 35.213.207.128/25 35.213.208.85 35.213.210.0/24 35.213.211.176/29 35.213.212.0/24 35.213.213.225 35.213.214.0/25 35.213.215.255 35.213.217.0/24 35.213.218.248 35.213.219.0/25 35.213.220.211 35.213.221.0/24 35.213.222.215 35.213.223.0/24 35.213.225.0/24 35.213.227.227 35.213.229.17 35.213.230.89 35.213.231.0/24 35.213.233.0/24 35.213.234.134 35.213.236.0/24 35.213.237.212 35.213.238.0/24 35.213.240.212 35.213.241.0/24 35.213.242.10 35.213.243.219 35.213.244.146 35.213.245.119 35.213.246.0/23 35.213.249.79 35.213.250.0/24 35.213.251.74 35.213.252.0/24 35.213.253.155 35.213.254.89 35.214.128.248 35.214.129.220 35.214.130.217 35.214.131.144 35.214.132.189 35.214.133.0/24 35.214.134.163 35.214.137.0/24 35.214.138.0/25 35.214.140.0/24 35.214.142.0/24 35.214.143.41 35.214.144.26 35.214.145.200 35.214.146.9 35.214.147.135 35.214.148.89 35.214.149.110 35.214.151.128/25 35.214.152.0/24 35.214.156.115 35.214.158.181 35.214.159.128/25 35.214.160.128/25 35.214.161.217 35.214.162.0/24 35.214.163.28 35.214.165.102 35.214.167.77 35.214.169.0/24 35.214.170.2 35.214.171.0/25 35.214.172.128/25 35.214.173.0/24 35.214.175.0/24 35.214.177.183 35.214.179.46 35.214.180.0/23 35.214.184.179 35.214.185.28 35.214.186.3 35.214.187.0/24 35.214.191.0/24 35.214.192.128/25 35.214.193.0/24 35.214.194.128/25 35.214.195.0/25 35.214.196.64/26 35.214.197.0/24 35.214.198.7 35.214.199.224 35.214.201.0/25 35.214.203.155 35.214.204.0/23 35.214.207.0/24 35.214.208.128/25 35.214.209.64 35.214.210.0/24 35.214.211.3 35.214.212.64/26 35.214.213.0/25 35.214.214.0/24 35.214.215.64/26 35.214.216.0/23 35.214.218.140 35.214.219.0/24 35.214.220.149 35.214.221.0/24 35.214.222.149 35.214.223.0/24 35.214.224.71 35.214.225.0/24 35.214.226.0/23 35.214.228.0/23 35.214.231.187 35.214.233.8 35.214.235.38 35.214.237.0/24 35.214.238.0/25 35.214.239.0/24 35.214.240.87 35.214.241.0/24 35.214.243.21 35.214.244.0/24 35.214.245.16/28 35.214.246.106 35.214.248.119 35.214.249.154 35.214.250.0/24 35.214.251.128/25 35.214.252.187 35.214.253.0/24 35.214.255.154 35.215.72.85 35.215.73.65 35.215.83.0 35.215.108.111 35.215.115.120 35.215.126.35 35.215.127.34 35.215.128.0/21 35.215.136.0/26 35.215.137.0/24 35.215.138.0/23 35.215.140.0/24 35.215.141.64/27 35.215.142.0/24 35.215.143.83 35.215.144.128/25 35.215.145.0/24 35.215.146.0/24 35.215.147.86 35.215.148.0/23 35.215.150.0/26 35.215.151.0/24 35.215.152.0/24 35.215.153.128/25 35.215.154.240/28 35.215.155.20 35.215.156.0/24 35.215.158.0/23 35.215.160.192/26 35.215.161.0/24 35.215.163.0/24 35.215.164.0/24 35.215.165.236 35.215.166.128/25 35.215.167.128/25 35.215.168.0/24 35.215.169.12 35.215.170.0/23 35.215.172.0/22 35.215.176.0/24 35.215.177.72 35.215.178.0/24 35.215.179.161 35.215.180.0/22 35.215.184.253 35.215.185.64/26 35.215.186.0/25 35.215.187.0/24 35.215.188.0/23 35.215.190.0/24 35.215.191.61 35.215.192.0/23 35.215.194.192/28 35.215.195.0/24 35.215.196.0/25 35.215.197.0/25 35.215.198.230 35.215.199.204 35.215.200.0/23 35.215.202.0/24 35.215.203.0/25 35.215.204.128/25 35.215.205.0/25 35.215.206.0/23 35.215.208.0/24 35.215.209.0/25 35.215.210.0/23 35.215.212.0/22 35.215.216.0/22 35.215.221.0/24 35.215.222.128/25 35.215.223.126 35.215.224.0/23 35.215.226.0/24 35.215.227.0/25 35.215.228.0/24 35.215.229.64 35.215.230.89 35.215.231.0/24 35.215.232.0/24 35.215.233.0/25 35.215.234.37 35.215.235.0/24 35.215.238.0/25 35.215.239.119 35.215.240.0/24 35.215.241.128/25 35.215.242.0/25 35.215.243.0/24 35.215.244.0/23 35.215.246.222 35.215.247.0/24 35.215.248.0/22 35.215.252.0/24 35.215.253.118 35.215.254.0/23 35.217.0.0/24 35.217.1.64/26 35.217.2.5 35.217.3.0/24 35.217.4.72 35.217.5.0/25 35.217.6.0/24 35.217.8.0/25 35.217.9.0/24 35.217.11.186 35.217.12.0/24 35.217.14.192/26 35.217.15.65 35.217.16.75 35.217.17.128/25 35.217.18.0/24 35.217.19.183 35.217.20.0/24 35.217.21.128/25 35.217.22.128/25 35.217.23.128/25 35.217.24.0/24 35.217.25.81 35.217.26.0/24 35.217.27.128/25 35.217.28.128/25 35.217.29.0/24 35.217.30.0/25 35.217.31.0/25 35.217.32.128/25 35.217.33.0/24 35.217.35.128/25 35.217.36.0/23 35.217.38.179 35.217.39.186 35.217.40.176 35.217.41.204 35.217.43.0/24 35.217.45.248 35.217.46.0/24 35.217.47.128/25 35.217.48.195 35.217.49.160/27 35.217.50.0/25 35.217.51.0/24 35.217.52.117 35.217.53.128/25 35.217.54.0/25 35.217.55.96/27 35.217.56.6 35.217.57.184 35.217.58.0/24 35.217.59.64/26 35.217.60.0/24 35.217.61.128/25 35.217.62.0/24 35.217.63.128/25 35.219.225.149 35.219.226.57 35.219.227.0/24 35.219.228.37 35.219.229.128/25 35.219.230.0/23 35.219.235.0/24 35.219.236.198 35.219.238.115 35.219.239.0/24 35.219.241.0/24 35.219.242.221 35.219.243.191 35.219.244.1 35.219.245.0/24 35.219.246.159 35.219.247.0/26 35.219.248.0/24 35.219.249.126 35.219.251.186 35.219.252.0/23 35.219.254.0/24 64.233.161.207 64.233.162.207 64.233.163.207 64.233.164.207 64.233.165.207 66.22.196.0/26 66.22.197.0/24 66.22.198.0/26 66.22.199.0/24 66.22.200.0/26 66.22.202.0/26 66.22.204.0/24 66.22.206.0/24 66.22.208.0/25 66.22.210.0/26 66.22.212.0/24 66.22.214.0/24 66.22.216.0/23 66.22.220.0/25 66.22.221.0/24 66.22.222.0/23 66.22.224.0/25 66.22.225.0/26 66.22.226.0/25 66.22.227.0/25 66.22.228.0/22 66.22.233.0/24 66.22.234.0/24 66.22.236.0/23 66.22.238.0/24 66.22.240.0/22 66.22.244.0/23 66.22.248.0/24 74.125.131.207 74.125.205.207 104.17.51.93 104.17.117.93 104.18.4.161 104.18.5.161 104.18.8.105 104.18.9.105 104.18.30.128 104.18.31.128 104.21.2.204 104.21.25.51 104.21.40.151 104.21.59.128 104.21.72.221 104.21.82.160 108.177.14.207 138.128.140.240/28 142.250.150.207 142.251.1.207 162.159.128.232/30 162.159.129.232/30 162.159.130.232/30 162.159.133.232/30 162.159.134.232/30 162.159.135.232/30 162.159.136.232/30 162.159.137.232/30 162.159.138.232/30 172.65.202.19 172.66.41.34 172.66.42.222 172.67.152.224/28 172.67.155.163 172.67.159.89 172.67.177.131 172.67.222.182 173.194.73.207 173.194.220.207 173.194.221.207 173.194.222.207 188.114.96.2 188.114.97.2 188.114.98.224 188.114.99.224 204.11.56.48 209.85.233.207}" + +DNUM=105 +QNUM_DISCORD=$(($DNUM * 5)) +DISCORD_SET_NAME=discord + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt="--qnum=$QNUM_DISCORD $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_DISCORD" + do_nfqws $1 $DNUM "$opt" +} + +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f + local first_packets_only="$ipt_connbytes 1:1" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + local DISCORD_PORTS_IPT=$(replace_char - : $DISCORD_PORTS) + local dest_set="-m set --match-set $DISCORD_SET_NAME dst" + local subnet + + local DISABLE_IPV6=1 + + [ "$1" = 1 ] && { + ipset create $DISCORD_SET_NAME hash:net hashsize 8192 maxelem 4096 2>/dev/null + ipset flush $DISCORD_SET_NAME + for subnet in $DISCORD_SUBNETS; do + echo add $DISCORD_SET_NAME $subnet + done | ipset -! restore + } + + f="-p udp -m multiport --dports $DISCORD_PORTS_IPT" + fw_nfqws_post $1 "$f $desync $first_packets_only $dest_set" "" $QNUM_DISCORD + + [ "$1" = 1 ] || { + ipset destroy $DISCORD_SET_NAME + } +} + +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packets_only="$nft_connbytes 1" + local desync="mark and $DESYNC_MARK == 0" + local dest_set="ip daddr @$DISCORD_SET_NAME" + local subnets + + local DISABLE_IPV6=1 + + make_comma_list subnets $DISCORD_SUBNETS + nft_create_set $DISCORD_SET_NAME "type ipv4_addr; size 4096; auto-merge; flags interval;" + nft_flush_set $DISCORD_SET_NAME + nft_add_set_element $DISCORD_SET_NAME "$subnets" + + f="udp dport {$DISCORD_PORTS}" + nft_fw_nfqws_post "$f $desync $first_packets_only $dest_set" "" $QNUM_DISCORD +} diff --git a/init.d/sysv/custom.d.examples/50-quic4all b/init.d/sysv/custom.d.examples/50-quic4all new file mode 100644 index 0000000..5f4b593 --- /dev/null +++ b/init.d/sysv/custom.d.examples/50-quic4all @@ -0,0 +1,37 @@ +# this custom script runs desync to all QUIC initial packets, without ipset/hostlist filtering +# need to add to config : NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake" +# NOTE : do not use TTL fooling. chromium QUIC engine breaks sessions if TTL expired in transit received + +DNUM=102 +QNUM2=$(($DNUM * 5)) + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt="--qnum=$QNUM2 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC" + do_nfqws $1 $DNUM "$opt" +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f + local first_packets_only="$ipt_connbytes 1:3" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + f="-p udp -m multiport --dports $QUIC_PORTS_IPT" + fw_nfqws_post $1 "$f $desync $first_packets_only" "$f $desync $first_packets_only" $QNUM2 + +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f + local first_packets_only="$nft_connbytes 1-3" + local desync="mark and $DESYNC_MARK == 0" + + f="udp dport {$QUIC_PORTS}" + nft_fw_nfqws_post "$f $desync $first_packets_only" "$f $desync $first_packets_only" $QNUM2 +} diff --git a/init.d/sysv/custom.d.examples/50-tpws4http-nfqws4https b/init.d/sysv/custom.d.examples/50-tpws4http-nfqws4https new file mode 100644 index 0000000..95042c0 --- /dev/null +++ b/init.d/sysv/custom.d.examples/50-tpws4http-nfqws4https @@ -0,0 +1,71 @@ +# 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, NFQWS_OPT_DESYNC_HTTPS + +zapret_custom_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt + + [ "$MODE_HTTP" = "1" ] && { + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + do_tpws $1 1 "$opt" + } + + [ "$MODE_HTTPS" = "1" ] && { + opt="--qnum=$QNUM $NFQWS_OPT_DESYNC_HTTPS" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS_SUFFIX" + do_nfqws $1 2 "$opt" + } +} +zapret_custom_firewall() +{ + # $1 - 1 - run, 0 - stop + + local f4 f6 + local first_packet_only="$ipt_connbytes 1:$(first_packets_for_mode)" + local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK" + + [ "$MODE_HTTP" = "1" ] && { + f4="-p tcp -m multiport --dports $HTTP_PORTS_IPT" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_tpws $1 "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="-p tcp -m multiport --dports $HTTPS_PORTS_IPT $first_packet_only" + f6=$f4 + filter_apply_ipset_target f4 f6 + fw_nfqws_post $1 "$f4 $desync" "$f6 $desync" $QNUM + # for modes that require incoming traffic + fw_reverse_nfqws_rule $1 "$f4" "$f6" $QNUM + } +} +zapret_custom_firewall_nft() +{ + # stop logic is not required + + local f4 f6 + local first_packet_only="$nft_connbytes 1-$(first_packets_for_mode)" + local desync="mark and $DESYNC_MARK == 0" + + [ "$MODE_HTTP" = "1" ] && { + f4="tcp dport {$HTTP_PORTS}" + f6=$f4 + nft_filter_apply_ipset_target f4 f6 + nft_fw_tpws "$f4" "$f6" $TPPORT + } + + [ "$MODE_HTTPS" = "1" ] && { + f4="tcp dport {$HTTPS_PORTS} $first_packet_only" + f6=$f4 + nft_filter_apply_ipset_target f4 f6 + nft_fw_nfqws_post "$f4 $desync" "$f6 $desync" $QNUM + # for modes that require incoming traffic + nft_fw_reverse_nfqws_rule "$f4" "$f6" $QNUM + } +} diff --git a/init.d/sysv/custom.d/.keep b/init.d/sysv/custom.d/.keep new file mode 100644 index 0000000..e69de29 diff --git a/init.d/sysv/functions b/init.d/sysv/functions new file mode 100644 index 0000000..9caa569 --- /dev/null +++ b/init.d/sysv/functions @@ -0,0 +1,357 @@ +# init script functions library for desktop linux systems + +ZAPRET_BASE=${ZAPRET_BASE:-/opt/zapret} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/queue.sh" +. "$ZAPRET_BASE/common/linux_iphelper.sh" +. "$ZAPRET_BASE/common/ipt.sh" +. "$ZAPRET_BASE/common/nft.sh" +. "$ZAPRET_BASE/common/linux_fw.sh" +. "$ZAPRET_BASE/common/list.sh" +. "$ZAPRET_BASE/common/custom.sh" +CUSTOM_DIR="$ZAPRET_RW/init.d/sysv" + + +user_exists() +{ + id -u $1 >/dev/null 2>/dev/null +} +useradd_compat() +{ + # $1 - username + # skip for readonly systems + [ -w "/etc" ] && { + if exists useradd ; then + useradd --no-create-home --system --shell /bin/false $1 + elif is_linked_to_busybox adduser ; then + # some systems may miss nogroup group in /etc/group + # adduser fails if it's absent and no group is specified + addgroup nogroup 2>/dev/null + # busybox has special adduser syntax + adduser -S -H -D $1 + elif exists adduser; then + adduser --no-create-home --system --disabled-login $1 + fi + } + user_exists $1 +} +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 + user_exists $WS_USER || { + # fallback to daemon if we cant add WS_USER + useradd_compat $WS_USER || { + for user in daemon nobody; do + user_exists $user && { + WS_USER=$user + return 0 + } + done + return 1 + } + } +} + +# this complex user selection allows to survive in any locked/readonly/minimalistic environment +[ -n "$WS_USER" ] || WS_USER=tpws +if prepare_user; then + USEROPT="--user=$WS_USER" +else + WS_USER=1 + USEROPT="--uid $WS_USER:$WS_USER" +fi + +PIDDIR=/var/run +IPSET_CR="$ZAPRET_BASE/ipset/create_ipset.sh" + +[ -n "$DESYNC_MARK" ] || DESYNC_MARK=0x40000000 +[ -n "$DESYNC_MARK_POSTNAT" ] || DESYNC_MARK_POSTNAT=0x20000000 + +[ -n "$QNUM" ] || QNUM=200 +[ -n "$NFQWS" ] || NFQWS="$ZAPRET_BASE/nfq/nfqws" +NFQWS_OPT_BASE="$USEROPT --dpi-desync-fwmark=$DESYNC_MARK" +apply_unspecified_desync_modes + +[ -n "$TPPORT" ] || TPPORT=988 +[ -n "$TPWS" ] || TPWS="$ZAPRET_BASE/tpws/tpws" +TPWS_LOCALHOST4=127.0.0.127 + +TPWS_OPT_BASE="$USEROPT" +TPWS_OPT_BASE4="--bind-addr=$TPWS_LOCALHOST4" +TPWS_OPT_BASE6="--bind-addr=::1" +TPWS_WAIT="--bind-wait-ifup=30 --bind-wait-ip=30" +TPWS_WAIT_SOCKS6="$TPWS_WAIT --bind-wait-ip-linklocal=30" +# 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 $TPWS_WAIT --bind-wait-ip-linklocal=3" + +# max wait time for the link local ipv6 on the LAN interface +LINKLOCAL_WAIT_SEC=5 + +IPSET_EXCLUDE="-m set ! --match-set nozapret" +IPSET_EXCLUDE6="-m set ! --match-set nozapret6" + + +dnat6_target() +{ + _dnat6_target "$@" +} +set_route_localnet() +{ + _set_route_localnet $1 "$IFACE_LAN" +} + +fw_nfqws_post4() +{ + _fw_nfqws_post4 $1 "$2" $3 "$IFACE_WAN" +} +fw_nfqws_post6() +{ + _fw_nfqws_post6 $1 "$2" $3 "${IFACE_WAN6:-$IFACE_WAN}" +} +fw_nfqws_pre4() +{ + _fw_nfqws_pre4 $1 "$2" $3 "$IFACE_WAN" +} +fw_nfqws_pre6() +{ + _fw_nfqws_pre6 $1 "$2" $3 "${IFACE_WAN6:-$IFACE_WAN}" +} +fw_tpws4() +{ + _fw_tpws4 $1 "$2" $3 "$IFACE_LAN" "$IFACE_WAN" +} +fw_tpws6() +{ + _fw_tpws6 $1 "$2" $3 "$IFACE_LAN" "${IFACE_WAN6:-$IFACE_WAN}" +} +nft_fw_tpws4() +{ + _nft_fw_tpws4 "$1" $2 "$IFACE_WAN" +} +nft_fw_tpws6() +{ + _nft_fw_tpws6 "$1" $2 "$IFACE_LAN" "${IFACE_WAN6:-$IFACE_WAN}" +} +nft_fw_nfqws_post4() +{ + _nft_fw_nfqws_post4 "$1" $2 "$IFACE_WAN" +} +nft_fw_nfqws_post6() +{ + _nft_fw_nfqws_post6 "$1" $2 "${IFACE_WAN6:-$IFACE_WAN}" +} +nft_fw_nfqws_pre4() +{ + _nft_fw_nfqws_pre4 "$1" $2 "$IFACE_WAN" +} +nft_fw_nfqws_pre6() +{ + _nft_fw_nfqws_pre6 "$1" $2 "${IFACE_WAN6:-$IFACE_WAN}" +} +nft_fill_ifsets_overload() +{ + nft_fill_ifsets "$IFACE_LAN" "$IFACE_WAN" "${IFACE_WAN6:-$IFACE_WAN}" +} + + +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 -S -p "$PIDFILE" -m -b -x "$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 -K -p "$PIDFILE" -x "$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 "$@" +} + + +do_tpws() +{ + # $1 : 1 - run, 0 - stop + # $2 : daemon number + # $3 : daemon args + + [ "$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" + for lan in $IFACE_LAN; do + OPT="$OPT --bind-iface6=$lan $TPWS_OPT_BASE6_PRE" + done + } + + do_daemon $1 $2 "$TPWS" "$OPT $3" +} +do_tpws_socks() +{ + # $1 : 1 - run, 0 - stop + # $2 : daemon number + # $3 : daemon args + + [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && return 0 + + local opt="$TPWS_OPT_BASE --socks" + + tpws_apply_socks_binds opt + + do_daemon $1 $2 "$TPWS" "$opt $3" +} + +do_nfqws() +{ + # $1 : 1 - run, 0 - stop + # $2 : daemon number + # $3 : daemon args + + do_daemon $1 $2 "$NFQWS" "$NFQWS_OPT_BASE $3" +} + +tpws_apply_socks_binds() +{ + local o + + [ "$DISABLE_IPV4" = "1" ] || o="--bind-addr=127.0.0.1" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-addr=::1" + + for lan in $IFACE_LAN; do + [ "$DISABLE_IPV4" = "1" ] || o="$o --bind-iface4=$lan $TPWS_WAIT" + [ "$DISABLE_IPV6" = "1" ] || o="$o --bind-iface6=$lan --bind-linklocal=unwanted $TPWS_WAIT_SOCKS6" + done + eval $1="\"\$$1 $o\"" +} + + +create_ipset() +{ + echo "Creating ip list table (firewall type $FWTYPE)" + "$IPSET_CR" "$@" +} + + +zapret_do_daemons() +{ + # $1 - 1 - run, 0 - stop + + local opt qn qns qn6 qns6 + + case "${MODE_OVERRIDE:-$MODE}" in + tpws) + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + do_tpws $1 1 "$opt" + ;; + tpws-socks) + opt="--port=$TPPORT $TPWS_OPT" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$TPWS_OPT_SUFFIX" + do_tpws_socks $1 1 "$opt" + ;; + nfqws) + get_nfqws_qnums qn qns qn6 qns6 + [ -z "$qn" ] || { + opt="--qnum=$qn $NFQWS_OPT_DESYNC_HTTP" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTP_SUFFIX" + do_nfqws $1 1 "$opt" + } + [ -z "$qns" ] || [ "$qns" = "$qn" ] || { + opt="--qnum=$qns $NFQWS_OPT_DESYNC_HTTPS" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS_SUFFIX" + do_nfqws $1 2 "$opt" + } + [ -z "$qn6" ] || [ "$qn6" = "$qn" ] || [ "$qn6" = "$qns" ] || { + opt="--qnum=$qn6 $NFQWS_OPT_DESYNC_HTTP6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTP6_SUFFIX" + do_nfqws $1 3 "$opt" + } + [ -z "$qns6" ] || [ "$qns6" = "$qn" ] || [ "$qns6" = "$qns" ] || [ "$qns6" = "$qn6" ] || { + opt="--qnum=$qns6 $NFQWS_OPT_DESYNC_HTTPS6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_HTTPS6_SUFFIX" + do_nfqws $1 4 "$opt" + } + get_nfqws_qnums_quic qn qn6 + [ -z "$qn" ] || { + opt="--qnum=$qn $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_QUIC_SUFFIX" + do_nfqws $1 10 "$opt" + } + [ -z "$qn6" ] || [ "$qn6" = "$qn" ] || { + opt="--qnum=$qn6 $NFQWS_OPT_BASE $NFQWS_OPT_DESYNC_QUIC6" + filter_apply_hostlist_target opt + filter_apply_suffix opt "$NFQWS_OPT_DESYNC_QUIC6_SUFFIX" + do_nfqws $1 11 "$opt" + } + ;; + custom) + custom_runner zapret_custom_daemons $1 + ;; + esac + + return 0 +} +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..9e247a4 --- /dev/null +++ b/init.d/sysv/zapret @@ -0,0 +1,83 @@ +#!/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 + +do_start() +{ + zapret_run_daemons + [ "$INIT_APPLY_FW" != "1" ] || { zapret_apply_firewall; } +} +do_stop() +{ + zapret_stop_daemons + [ "$INIT_APPLY_FW" != "1" ] || zapret_unapply_firewall +} + +case "$1" in + start) + do_start + ;; + + stop) + do_stop + ;; + + restart) + do_stop + do_start + ;; + + start-fw|start_fw) + zapret_apply_firewall + ;; + stop-fw|stop_fw) + zapret_unapply_firewall + ;; + + restart-fw|restart_fw) + zapret_unapply_firewall + zapret_apply_firewall + ;; + + start-daemons|start_daemons) + zapret_run_daemons + ;; + stop-daemons|stop_daemons) + zapret_stop_daemons + ;; + restart-daemons|restart_daemons) + zapret_stop_daemons + zapret_run_daemons + ;; + + reload-ifsets|reload_ifsets) + zapret_reload_ifsets + ;; + list-ifsets|list_ifsets) + zapret_list_ifsets + ;; + list-table|list_table) + zapret_list_table + ;; + + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|start-fw|stop-fw|restart-fw|start-daemons|stop-daemons|restart-daemons|reload-ifsets|list-ifsets|list-table}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/install_bin.sh b/install_bin.sh new file mode 100755 index 0000000..c4f1f3e --- /dev/null +++ b/install_bin.sh @@ -0,0 +1,102 @@ +#!/bin/sh + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +BINS=binaries +BINDIR="$EXEDIR/$BINS" + +ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"} +. "$ZAPRET_BASE/common/base.sh" + +check_dir() +{ + local dir="$BINDIR/$1" + local exe="$dir/ip2net" + local out + if [ -f "$exe" ]; then + if [ -x "$exe" ]; then + # ash and dash try to execute invalid executables as a script. they interpret binary garbage with possible negative consequences + # bash and zsh do not do this + if exists bash; then + out=$(echo 0.0.0.0 | bash -c "\"$exe"\" 2>/dev/null) + elif exists zsh; then + out=$(echo 0.0.0.0 | zsh -c "\"$exe\"" 2>/dev/null) + else + # find does not use its own shell exec + # it uses execvp(). in musl libc it does not call shell, in glibc it DOES call /bin/sh + # that's why prefer bash or zsh if present. otherwise it's our last chance + out=$(echo 0.0.0.0 | find "$dir" -maxdepth 1 -name ip2net -exec {} \; 2>/dev/null) + fi + [ -n "$out" ] + else + echo >&2 "$exe is not executable. set proper chmod." + return 1 + fi + else + echo >&2 "$exe is absent" + return 2 + fi +} + +# link or copy executables. uncomment either ln or cp, comment other +ccp() +{ + local F="$(basename "$1")" + [ -d "$ZAPRET_BASE/$2" ] || mkdir "$ZAPRET_BASE/$2" + [ -f "$ZAPRET_BASE/$2/$F" ] && rm -f "$ZAPRET_BASE/$2/$F" + ln -fs "../$BINS/$1" "$ZAPRET_BASE/$2" && echo linking : "../$BINS/$1" =\> "$ZAPRET_BASE/$2" + #cp -f "../$BINS/$1" "$ZAPRET_BASE/$2" && echo copying : "../$BINS/$1" =\> "$ZAPRET_BASE/$2" +} + +UNAME=$(uname) +unset PKTWS +case $UNAME in + Linux) + ARCHLIST="my x86_64 x86 aarch64 arm mips64r2-msb mips32r1-lsb mips32r1-msb ppc" + PKTWS=nfqws + ;; + Darwin) + ARCHLIST="my mac64" + ;; + FreeBSD) + ARCHLIST="my freebsd-x64" + PKTWS=dvtws + ;; + CYGWIN*) + UNAME=CYGWIN + ARCHLIST="win64" + PKTWS=winws + ;; + *) + ARCHLIST="my" +esac + +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 + [ -n "$PKTWS" ] && ccp $arch/$PKTWS nfq + [ "$UNAME" = CYGWIN ] || 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..f2ae1c1 --- /dev/null +++ b/install_easy.sh @@ -0,0 +1,911 @@ +#!/bin/sh + +# automated script for easy installing zapret + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +ZAPRET_CONFIG_DEFAULT="$ZAPRET_BASE/config.default" +IPSET_DIR="$ZAPRET_BASE/ipset" + +[ -f "$ZAPRET_CONFIG" ] || { + ZAPRET_CONFIG_DIR="$(dirname "$ZAPRET_CONFIG")" + [ -d "$ZAPRET_CONFIG_DIR" ] || mkdir -p "$ZAPRET_CONFIG_DIR" + cp "$ZAPRET_CONFIG_DEFAULT" "$ZAPRET_CONFIG" +} +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/elevate.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/dialog.sh" +. "$ZAPRET_BASE/common/ipt.sh" +. "$ZAPRET_BASE/common/installer.sh" +. "$ZAPRET_BASE/common/virt.sh" + +# install target +ZAPRET_TARGET=${ZAPRET_TARGET:-/opt/zapret} + +GET_LIST="$IPSET_DIR/get_config.sh" + +[ -n "$TPPORT" ] || TPPORT=988 + +check_readonly_system() +{ + local RO + echo \* checking readonly system + case $SYSTEM in + systemd) + [ -w "$SYSTEMD_SYSTEM_DIR" ] || RO=1 + ;; + openrc) + [ -w "$(dirname "$INIT_SCRIPT")" ] || RO=1 + ;; + esac + [ -z "$RO" ] || { + echo '!!! READONLY SYSTEM DETECTED !!!' + echo '!!! WILL NOT BE ABLE TO CONFIGURE STARTUP !!!' + echo '!!! MANUAL STARTUP CONFIGURATION IS REQUIRED !!!' + ask_yes_no N "do you want to continue" || exitp 5 + } +} + +check_bins() +{ + echo \* checking executables + + fix_perms_bin_test "$EXEDIR" + local arch="$(get_bin_arch)" + local make_target + [ "$FORCE_BUILD" = "1" ] && { + echo forced build mode + if [ "$arch" = "my" ]; then + echo already compiled + else + arch="" + fi + } + if [ -n "$arch" ] ; then + echo found architecture "\"$arch\"" + elif [ -f "$EXEDIR/Makefile" ] && exists make; then + echo trying to compile + [ "$SYSTEM" = "macos" ] && make_target=mac + make -C "$EXEDIR" $make_target || { + echo could not compile + make -C "$EXEDIR" clean + exitp 8 + } + echo compiled + else + echo build tools not found + exitp 8 + fi +} + +call_install_bin() +{ + sh "$EXEDIR/install_bin.sh" $1 +} +get_bin_arch() +{ + call_install_bin getarch +} + +install_binaries() +{ + echo \* installing binaries + + call_install_bin || { + echo compatible binaries not found + exitp 8 + } +} + +select_mode_mode() +{ + local edited v vars MODES="tpws tpws-socks nfqws filter custom" + [ "$SYSTEM" = "macos" ] && MODES="tpws tpws-socks filter custom" + echo + echo select MODE : + ask_list MODE "$MODES" tpws && write_config_var MODE + + case $MODE in + tpws|tpws-socks) + vars="TPWS_OPT TPWS_OPT_SUFFIX" + ;; + nfqws) + vars="NFQWS_OPT_DESYNC NFQWS_OPT_DESYNC_SUFFIX NFQWS_OPT_DESYNC_HTTP NFQWS_OPT_DESYNC_HTTP_SUFFIX NFQWS_OPT_DESYNC_HTTPS NFQWS_OPT_DESYNC_HTTPS_SUFFIX NFQWS_OPT_DESYNC_HTTP6 NFQWS_OPT_DESYNC_HTTP6_SUFFIX NFQWS_OPT_DESYNC_HTTPS6 NFQWS_OPT_DESYNC_HTTPS6_SUFFIX NFQWS_OPT_DESYNC_QUIC NFQWS_OPT_DESYNC_QUIC_SUFFIX NFQWS_OPT_DESYNC_QUIC6 NFQWS_OPT_DESYNC_QUIC6_SUFFIX" + ;; + esac + [ -n "$vars" ] && { + echo + while [ 1=1 ]; do + for var in $vars; do + eval v="\$$var" + echo $var=\"$v\" + done + ask_yes_no N "do you want to edit the options" || { + [ -n "$edited" ] && { + for var in $vars; do + write_config_var $var + done + } + break + } + edit_vars $vars + edited=1 + echo ..edited.. + done + } + [ "$MODE" = custom ] && { + echo + echo "current custom scripts :" + [ -f "$CUSTOM_DIR/custom" ] && echo "legacy custom script $CUSTOM_DIR/custom" + echo "$CUSTOM_DIR/custom.d :" + [ -d "$CUSTOM_DIR/custom.d" ] && ls "$CUSTOM_DIR/custom.d" + echo "Make sure this is ok" + echo + } +} +select_mode_http() +{ + [ "$MODE" != "filter" ] && [ "$MODE" != "tpws-socks" ] && { + 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" ] && [ "$MODE" != "tpws-socks" ] && { + echo + ask_yes_no_var MODE_HTTPS "enable https support" + write_config_var MODE_HTTPS + } +} +select_mode_quic() +{ + [ "$SUBSYS" = "keenetic" ] && { + echo + echo "WARNING ! Keenetic is not officially supported by zapret." + echo "WARNING ! This firmware requires additional manual iptables setup to support udp desync properly." + echo "WARNING ! Keenetic uses proprietary ndmmark to limit MASQUERADE." + echo "WARNING ! Desynced packets may go outside without MASQUERADE with LAN source ip." + echo "WARNING ! To fix this you need to add additional MASQUERADE rule to iptables nat table." + echo "WARNING ! Installer WILL NOT fix it for you automatically." + echo "WARNING ! If you cannot understand what it is all about - do not enable QUIC." + } + [ "$MODE" != "filter" ] && [ "$MODE" != "tpws-socks" ] && [ "$MODE" != "tpws" ] && { + echo + ask_yes_no_var MODE_QUIC "enable quic support" + write_config_var MODE_QUIC + } +} +select_mode_filter() +{ + local filter="none ipset hostlist autohostlist" + [ "$MODE" = "tpws-socks" ] && filter="none hostlist autohostlist" + echo + echo select filtering : + ask_list MODE_FILTER "$filter" none && write_config_var MODE_FILTER +} +select_mode() +{ + select_mode_mode + select_mode_iface + select_mode_http + select_mode_keepalive + select_mode_https + select_mode_quic + 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 + GETLISTS="get_antizapret_domains.sh get_reestr_resolvable_domains.sh get_reestr_hostlist.sh" + GETLIST_DEF="get_antizapret_domains.sh" + else + GETLISTS="get_user.sh get_antifilter_ip.sh get_antifilter_ipsmart.sh get_antifilter_ipsum.sh get_antifilter_ipresolve.sh get_antifilter_allyouneed.sh get_reestr_resolve.sh get_reestr_preresolved.sh get_reestr_preresolved_smart.sh" + GETLIST_DEF="get_antifilter_allyouneed.sh" + fi + ask_list GETLIST "$GETLISTS" "$GETLIST_DEF" && write_config_var GETLIST + return + fi + fi + GETLIST="" + write_config_var GETLIST +} + +ask_config() +{ + select_mode + select_getlist +} + +ask_config_offload() +{ + [ "$FWTYPE" = nftables ] || is_ipt_flow_offload_avail && { + echo + echo flow offloading can greatly increase speed on slow devices and high speed links \(usually 150+ mbits\) + if [ "$SYSTEM" = openwrt ]; then + 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 + else + echo offloading is applicable only to forwarded traffic. it has no effect on outgoing traffic + echo hardware flow offloading is available only on specific supporting hardware. most likely will not work on a generic system + fi + echo offloading breaks traffic shaper + echo select flow offloading : + local options="none software hardware" + local default="none" + [ "$SYSTEM" = openwrt ] && { + options="donttouch none software hardware" + default="donttouch" + } + ask_list FLOWOFFLOAD "$options" $default && write_config_var FLOWOFFLOAD + } +} + +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 + } + } +} + +nft_flow_offload() +{ + [ "$UNAME" = Linux -a "$FWTYPE" = nftables -a "$MODE" != "tpws-socks" ] && [ "$FLOWOFFLOAD" = software -o "$FLOWOFFLOAD" = hardware ] +} + +ask_iface() +{ + # $1 - var to ask + # $2 - additional name for empty string synonim + + local ifs i0 def new + eval def="\$$1" + + [ -n "$2" ] && i0="$2 " + case $SYSTEM in + macos) + ifs="$(ifconfig -l)" + ;; + *) + ifs="$(ls /sys/class/net)" + ;; + esac + [ -z "$def" ] && eval $1="$2" + ask_list $1 "$i0$ifs" && { + eval new="\$$1" + [ "$new" = "$2" ] && eval $1="" + write_config_var $1 + } +} +ask_iface_lan() +{ + echo LAN interface : + local opt + nft_flow_offload || opt=NONE + ask_iface IFACE_LAN $opt +} +ask_iface_wan() +{ + echo WAN interface : + local opt + nft_flow_offload || opt=ANY + ask_iface IFACE_WAN $opt +} + +select_mode_iface() +{ + # openwrt has its own interface management scheme + # filter just creates ip tables, no daemons involved + # nfqws sits in POSTROUTING chain and unable to filter by incoming interface + # tpws redirection works in PREROUTING chain + # in tpws-socks mode IFACE_LAN specifies additional bind interface for the socks listener + # it's not possible to instruct tpws to route outgoing connection to an interface (OS routing table decides) + # custom mode can also benefit from interface names (depends on custom script code) + + if [ "$SYSTEM" = "openwrt" ] || [ "$MODE" = "filter" ]; then return; fi + + case "$MODE" in + tpws-socks) + echo "select LAN interface to allow socks access from your LAN. select NONE for localhost only." + echo "expect socks on tcp port $TPPORT" + ask_iface_lan + ;; + tpws) + echo "select LAN interface to operate in router mode. select NONE for local outgoing traffic only." + 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 + ask_iface_lan + ;; + custom) + echo "select LAN interface for your custom script (how it works depends on your code)" + ask_iface_lan + ;; + *) + nft_flow_offload && { + echo "select LAN interface for nftables flow offloading" + ask_iface_lan + } + ;; + esac + + case "$MODE" in + tpws) + echo "select WAN interface for $MODE operations. select ANY to operate on any interface." + [ -n "$IFACE_LAN" ] && echo "WAN filtering works only for local outgoing traffic !" + ask_iface_wan + ;; + nfqws) + echo "select WAN interface for $MODE operations. select ANY to operate on any interface." + ask_iface_wan + ;; + custom) + echo "select WAN interface for your custom script (how it works depends on your code)" + ask_iface_wan + ;; + *) + nft_flow_offload && { + echo "select WAN interface for nftables flow offloading" + ask_iface_wan + } + ;; + esac +} + +default_files() +{ + # $1 - ro location + # $2 - rw location (can be equal to $1) + [ -d "$2/ipset" ] || mkdir -p "$2/ipset" + [ -f "$2/ipset/zapret-hosts-user-exclude.txt" ] || cp "$1/ipset/zapret-hosts-user-exclude.txt.default" "$2/ipset/zapret-hosts-user-exclude.txt" + [ -f "$2/ipset/zapret-hosts-user.txt" ] || echo nonexistent.domain >> "$2/ipset/zapret-hosts-user.txt" + [ -f "$2/ipset/zapret-hosts-user-ipban.txt" ] || touch "$2/ipset/zapret-hosts-user-ipban.txt" + for dir in openwrt sysv macos; do + [ -d "$1/init.d/$dir" ] && { + [ -d "$2/init.d/$dir" ] || mkdir -p "$2/init.d/$dir" + [ -d "$2/init.d/$dir/custom.d" ] || mkdir -p "$2/init.d/$dir/custom.d" + } + done +} +copy_all() +{ + local dir + + cp -R "$1" "$2" + [ -d "$2/tmp" ] || mkdir "$2/tmp" +} +copy_openwrt() +{ + local ARCH="$(get_bin_arch)" + local BINDIR="$1/binaries/$ARCH" + local file + + [ -d "$2" ] || mkdir -p "$2" + + mkdir "$2/tpws" "$2/nfq" "$2/ip2net" "$2/mdig" "$2/binaries" "$2/binaries/$ARCH" "$2/init.d" "$2/tmp" "$2/files" + cp -R "$1/files/fake" "$2/files" + cp -R "$1/common" "$1/ipset" "$2" + cp -R "$1/init.d/openwrt" "$2/init.d" + cp "$1/config" "$1/config.default" "$1/install_easy.sh" "$1/uninstall_easy.sh" "$1/install_bin.sh" "$1/install_prereq.sh" "$1/blockcheck.sh" "$2" + cp "$BINDIR/tpws" "$BINDIR/nfqws" "$BINDIR/ip2net" "$BINDIR/mdig" "$2/binaries/$ARCH" +} + +fix_perms_bin_test() +{ + [ -d "$1" ] || return + find "$1/binaries" -name ip2net ! -perm -111 -exec chmod +x {} \; +} +fix_perms() +{ + [ -d "$1" ] || return + find "$1" -type d -exec chmod 755 {} \; + find "$1" -type f -exec chmod 644 {} \; + local chow + case "$UNAME" in + Linux) + chow=root:root + ;; + *) + chow=root:wheel + esac + chown -R $chow "$1" + find "$1/binaries" '(' -name tpws -o -name dvtws -o -name nfqws -o -name ip2net -o -name mdig ')' -exec chmod 755 {} \; + for f in \ +install_bin.sh \ +blockcheck.sh \ +install_easy.sh \ +install_prereq.sh \ +files/huawei/E8372/zapret-ip \ +files/huawei/E8372/unzapret-ip \ +files/huawei/E8372/run-zapret-hostlist \ +files/huawei/E8372/unzapret \ +files/huawei/E8372/zapret \ +files/huawei/E8372/run-zapret-ip \ +ipset/get_exclude.sh \ +ipset/clear_lists.sh \ +ipset/get_antifilter_ipresolve.sh \ +ipset/get_reestr_resolvable_domains.sh \ +ipset/get_config.sh \ +ipset/get_reestr_preresolved.sh \ +ipset/get_user.sh \ +ipset/get_antifilter_allyouneed.sh \ +ipset/get_reestr_resolve.sh \ +ipset/create_ipset.sh \ +ipset/get_reestr_hostlist.sh \ +ipset/get_ipban.sh \ +ipset/get_antifilter_ipsum.sh \ +ipset/get_antifilter_ipsmart.sh \ +ipset/get_antizapret_domains.sh \ +ipset/get_reestr_preresolved_smart.sh \ +ipset/get_antifilter_ip.sh \ +init.d/pfsense/zapret.sh \ +init.d/macos/zapret \ +init.d/runit/zapret/run \ +init.d/runit/zapret/finish \ +init.d/openrc/zapret \ +init.d/sysv/zapret \ +init.d/openwrt/zapret \ +uninstall_easy.sh \ + ; do chmod 755 "$1/$f" 2>/dev/null ; done +} + + +_backup_settings() +{ + local i=0 + for f in "$@"; do + # safety check + [ -z "$f" -o "$f" = "/" ] && continue + + [ -f "$ZAPRET_TARGET/$f" ] && cp -f "$ZAPRET_TARGET/$f" "/tmp/zapret-bkp-$i" + [ -d "$ZAPRET_TARGET/$f" ] && cp -rf "$ZAPRET_TARGET/$f" "/tmp/zapret-bkp-$i" + i=$(($i+1)) + done +} +_restore_settings() +{ + local i=0 + for f in "$@"; do + # safety check + [ -z "$f" -o "$f" = "/" ] && continue + + [ -f "/tmp/zapret-bkp-$i" ] && mv -f "/tmp/zapret-bkp-$i" "$ZAPRET_TARGET/$f" || rm -f "/tmp/zapret-bkp-$i" + [ -d "/tmp/zapret-bkp-$i" ] && { + [ -d "$ZAPRET_TARGET/$f" ] && rm -r "$ZAPRET_TARGET/$f" + mv -f "/tmp/zapret-bkp-$i" "$ZAPRET_TARGET/$f" || rm -r "/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/sysv/custom.d" "init.d/openwrt/custom" "init.d/openwrt/custom.d" "init.d/macos/custom" "init.d/macos/custom.d" "ipset/zapret-hosts-user.txt" "ipset/zapret-hosts-user-exclude.txt" "ipset/zapret-hosts-user-ipban.txt" "ipset/zapret-hosts-auto.txt" +} + +check_location() +{ + # $1 - copy function + + echo \* checking location + + # use inodes in case something is linked + if [ -d "$ZAPRET_TARGET" ] && [ $(get_dir_inode "$EXEDIR") = $(get_dir_inode "$ZAPRET_TARGET") ]; then + default_files "$ZAPRET_TARGET" "$ZAPRET_RW" + else + 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 + if [ $(get_dir_inode "$ZAPRET_BASE") = $(get_dir_inode "$ZAPRET_RW") ]; then + ask_yes_no Y "keep config, custom scripts and user lists" && keep=Y + [ "$keep" = "Y" ] && backup_restore_settings 1 + fi + 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" + fix_perms "$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 + fi + echo running from $EXEDIR +} + + +service_install_systemd() +{ + echo \* installing zapret service + + if [ -w "$SYSTEMD_SYSTEM_DIR" ] ; then + 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 + } + else + echo '!!! READONLY SYSTEM DETECTED !!! CANNOT INSTALL SYSTEMD UNITS !!!' + fi +} + +timer_install_systemd() +{ + echo \* installing zapret-list-update timer + + if [ -w "$SYSTEMD_SYSTEM_DIR" ] ; then + "$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 + } + else + echo '!!! READONLY SYSTEM DETECTED !!! CANNOT INSTALL SYSTEMD UNITS !!!' + fi +} + +download_list() +{ + [ -x "$GET_LIST" ] && { + echo \* downloading blocked ip/host list + + # can be txt or txt.gz + "$IPSET_DIR/clear_lists.sh" + "$GET_LIST" + } +} + + +dnstest() +{ + # $1 - dns server. empty for system resolver + nslookup w3.org $1 >/dev/null 2>/dev/null +} +check_dns() +{ + echo \* checking DNS + + dnstest || { + echo -- DNS is not working. It's either misconfigured or blocked or you don't have inet access. + return 1 + } + echo system DNS is working + return 0 +} + + +install_systemd() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret" + CUSTOM_DIR="$ZAPRET_RW/init.d/sysv" + + check_bins + require_root + check_readonly_system + check_location copy_all + check_dns + check_virt + service_stop_systemd + select_fwtype + check_prerequisites_linux + install_binaries + select_ipv6 + ask_config_offload + 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 +} + +_install_sysv() +{ + # $1 - install init script + + CUSTOM_DIR="$ZAPRET_RW/init.d/sysv" + + check_bins + require_root + check_readonly_system + check_location copy_all + check_dns + check_virt + service_stop_sysv + select_fwtype + check_prerequisites_linux + install_binaries + select_ipv6 + ask_config_offload + ask_config + $1 + download_list + crontab_del_quiet + # desktop system. more likely up at daytime + crontab_add 10 22 + service_start_sysv +} + +install_sysv() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret" + _install_sysv install_sysv_init +} + +install_openrc() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/openrc/zapret" + _install_sysv install_openrc_init +} + + +install_linux() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret" + CUSTOM_DIR="$ZAPRET_RW/init.d/sysv" + + check_bins + require_root + check_location copy_all + check_dns + check_virt + select_fwtype + check_prerequisites_linux + install_binaries + select_ipv6 + ask_config_offload + ask_config + download_list + crontab_del_quiet + # desktop system. more likely up at daytime + crontab_add 10 22 + + echo + echo '!!! WARNING. YOUR SETUP IS INCOMPLETE !!!' + echo you must manually add to auto start : $INIT_SCRIPT_SRC start + echo make sure it\'s executed after your custom/firewall iptables configuration + echo "if your system uses sysv init : ln -fs $INIT_SCRIPT_SRC /etc/init.d/zapret ; chkconfig zapret on" +} + + +deoffload_openwrt_firewall() +{ + echo \* checking flow offloading + + [ "$FWTYPE" = "nftables" ] || is_ipt_flow_offload_avail || { + echo unavailable + return + } + + local fo=$(uci -q get firewall.@defaults[0].flow_offloading) + + if [ "$fo" = "1" ] ; then + local mod=0 + printf "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_openwrt() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/openwrt/zapret" + CUSTOM_DIR="$ZAPRET_RW/init.d/openwrt" + 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 + check_virt + + local FWTYPE_OLD=$FWTYPE + + echo \* stopping current firewall rules/daemons + "$INIT_SCRIPT_SRC" stop_fw + "$INIT_SCRIPT_SRC" stop_daemons + + select_fwtype + select_ipv6 + check_prerequisites_openwrt + ask_config + ask_config_tmpdir + ask_config_offload + # stop and reinstall sysv init + install_sysv_init + [ "$FWTYPE_OLD" != "$FWTYPE" -a "$FWTYPE_OLD" = iptables -a -n "$OPENWRT_FW3" ] && remove_openwrt_firewall + # free some RAM + clear_ipset + download_list + crontab_del_quiet + # router system : works 24/7. night is the best time + crontab_add 0 6 + cron_ensure_running + install_openwrt_iface_hook + # in case of nftables or iptables without fw3 sysv init script also controls firewall + [ -n "$OPENWRT_FW3" -a "$FWTYPE" = iptables ] && install_openwrt_firewall + service_start_sysv + deoffload_openwrt_firewall + restart_openwrt_firewall +} + + + +remove_pf_zapret_hooks() +{ + echo \* removing zapret PF hooks + + pf_anchors_clear +} + +macos_fw_reload_trigger_clear() +{ + case "$MODE" in + tpws|tpws-socks|custom) + LISTS_RELOAD= + write_config_var LISTS_RELOAD + ;; + esac +} +macos_fw_reload_trigger_set() +{ + case "$MODE" in + tpws|custom) + LISTS_RELOAD="$INIT_SCRIPT_SRC reload-fw-tables" + write_config_var LISTS_RELOAD + ;; + esac +} + +install_macos() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/macos/zapret" + CUSTOM_DIR="$ZAPRET_RW/init.d/macos" + + # compile before root + check_bins + require_root + check_location copy_all + service_stop_macos + remove_pf_zapret_hooks + install_binaries + check_dns + select_ipv6 + ask_config + service_install_macos + 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 + +umask 0022 +fix_sbin_path +fsleep_setup +check_system + +[ "$SYSTEM" = "macos" ] && . "$EXEDIR/init.d/macos/functions" + +case $SYSTEM in + systemd) + install_systemd + ;; + openrc) + install_openrc + ;; + linux) + install_linux + ;; + openwrt) + install_openwrt + ;; + macos) + install_macos + ;; +esac + + +exitp 0 diff --git a/install_prereq.sh b/install_prereq.sh new file mode 100755 index 0000000..be938cc --- /dev/null +++ b/install_prereq.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +# install prerequisites + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +ZAPRET_CONFIG_DEFAULT="$ZAPRET_BASE/config.default" + +[ -f "$ZAPRET_CONFIG" ] || { + ZAPRET_CONFIG_DIR="$(dirname "$ZAPRET_CONFIG")" + [ -d "$ZAPRET_CONFIG_DIR" ] || mkdir -p "$ZAPRET_CONFIG_DIR" + cp "$ZAPRET_CONFIG_DEFAULT" "$ZAPRET_CONFIG" +} + +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/elevate.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/dialog.sh" +. "$ZAPRET_BASE/common/installer.sh" +. "$ZAPRET_BASE/common/ipt.sh" + +umask 0022 +fix_sbin_path +fsleep_setup +check_system accept_unknown_rc +[ $UNAME = "Linux" ] || { + echo no prerequisites required for $UNAME + exitp 0 +} +require_root + +case $UNAME in + Linux) + select_fwtype + case $SYSTEM in + openwrt) + select_ipv6 + check_prerequisites_openwrt + ;; + *) + check_prerequisites_linux + ;; + esac + ;; +esac + +exitp 0 diff --git a/ip2net/Makefile b/ip2net/Makefile new file mode 100644 index 0000000..97a53d7 --- /dev/null +++ b/ip2net/Makefile @@ -0,0 +1,28 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member +CFLAGS_WIN = -static +LIBS = +LIBS_WIN = -lws2_32 +SRC_FILES = ip2net.c qsort.c + +all: ip2net + +ip2net: $(SRC_FILES) + $(CC) -s $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -o ip2net $(SRC_FILES) $(LDFLAGS) $(LIBS) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o ip2neta $(SRC_FILES) $(LDFLAGS) -target arm64-apple-macos10.8 $(LIBS) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o ip2netx $(SRC_FILES) $(LDFLAGS) -target x86_64-apple-macos10.8 $(LIBS) + strip ip2neta ip2netx + lipo -create -output ip2net ip2netx ip2neta + rm -f ip2netx ip2neta + +win: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_WIN) -o ip2net $(SRC_FILES) $(LDFLAGS) $(LIBS_WIN) + +clean: + rm -f ip2net *.o diff --git a/ip2net/ip2net.c b/ip2net/ip2net.c new file mode 100644 index 0000000..793ee72 --- /dev/null +++ b/ip2net/ip2net.c @@ -0,0 +1,495 @@ +// 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 + +// can be compiled in mingw. msvc not supported because of absent getopt + +#include +#include +#include +#include +#include +#ifdef _WIN32 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x600 +#include +#include +#include +#else +#include +#include +#include +#endif +#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 zct<32 ? ~((1 << zct) - 1) : 0; +} +// 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; +} + + + +#if defined(__GNUC__) && !defined(__llvm__) +__attribute__((optimize ("no-strict-aliasing"))) +#endif +static int cmp6(const void * a, const void * b, void *arg) +{ + // this function is critical for sort performance + // on big endian systems cpu byte order is equal to network byte order + // no conversion required. it's possible to improve speed by using big size compares + // on little endian systems byte conversion also gives better result than byte comparision + // 64-bit archs often have cpu command to reverse byte order + // assume that a and b are properly aligned + +#if defined(__BYTE_ORDER__) && ((__BYTE_ORDER__==__ORDER_BIG_ENDIAN__) || (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__)) + + uint64_t aa,bb; +#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ + aa = __builtin_bswap64(((uint64_t*)((struct in6_addr *)a)->s6_addr)[0]); + bb = __builtin_bswap64(((uint64_t*)((struct in6_addr *)b)->s6_addr)[0]); +#else + aa = ((uint64_t*)((struct in6_addr *)a)->s6_addr)[0]; + bb = ((uint64_t*)((struct in6_addr *)b)->s6_addr)[0]; +#endif + if (aa < bb) + return -1; + else if (aa > bb) + return 1; + else + { +#if __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__ + aa = __builtin_bswap64(((uint64_t*)((struct in6_addr *)a)->s6_addr)[1]); + bb = __builtin_bswap64(((uint64_t*)((struct in6_addr *)b)->s6_addr)[1]); +#else + aa = ((uint64_t*)((struct in6_addr *)a)->s6_addr)[1]; + bb = ((uint64_t*)((struct in6_addr *)b)->s6_addr)[1]; +#endif + return aa < bb ? -1 : aa > bb ? 1 : 0; + } + +#else + // fallback case + 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; +#endif +} + +// 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_make(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); + } +} +static struct in6_addr ip6_mask[129]; +static void mask_from_bitcount6_prepare(void) +{ + for (int zct=0;zct<=128;zct++) mask_from_bitcount6_make(zct, ip6_mask+zct); +} +static inline const struct in6_addr *mask_from_bitcount6(uint32_t zct) +{ + return ip6_mask+zct; +} + + +/* +// this is "correct" solution for strict aliasing feature +// but I don't like this style of coding +// write what I don't mean to force smart optimizer to do what it's best +// it produces better code sometimes but not on all compilers/versions/archs +// sometimes it even generates real memcpy calls (mips32,arm32) +// so I will not do it + +static void ip6_and(const struct in6_addr *a, const struct in6_addr *b, struct in6_addr *result) +{ + uint64_t a_addr[2], b_addr[2]; + memcpy(a_addr, a->s6_addr, 16); + memcpy(b_addr, b->s6_addr, 16); + a_addr[0] &= b_addr[0]; + a_addr[1] &= b_addr[1]; + memcpy(result->s6_addr, a_addr, 16); +} +*/ + +// YES, from my point of view C should work as a portable assembler. It must do what I instruct it to do. +// that's why I disable strict aliasing for this function. I observed gcc can miscompile with O2/O3 setting if inlined and not coded "correct" +// result = a & b +// assume that a and b are properly aligned +#if defined(__GNUC__) && !defined(__llvm__) +__attribute__((optimize ("no-strict-aliasing"))) +#endif +static void ip6_and(const struct in6_addr * restrict a, const struct in6_addr * restrict b, struct in6_addr * restrict result) +{ +#ifdef __SIZEOF_INT128__ + // gcc and clang have 128 bit int types on some 64-bit archs. take some advantage + *((unsigned __int128*)result->s6_addr) = *((unsigned __int128*)a->s6_addr) & *((unsigned __int128*)b->s6_addr); +#else + ((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]; +#endif +} + +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(void) +{ + 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<=0 || 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 + if (sscanf(s + 1, "%u", &zct)==1 && zct!=128) + { + if (zct<128) printf("%s/%u\n", str, zct); + continue; + } + } + else if (d=='-') + { + if (inet_pton(AF_INET6, s+1, &a)) printf("%s-%s\n", str, s+1); + 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); + mask_from_bitcount6_prepare(); + + /* + for(uint32_t i=0;i= params.zct_min; zct--) + { + mask = mask_from_bitcount6(zct); + 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) + // network was found + ip6_and(iplist + pos, mask_from_bitcount6(zct_best), &ip_start); + else + 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] & mask_from_bitcount(zct_best); + else + 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..0508209 --- /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 102400 ]; 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..a88137d --- /dev/null +++ b/ipset/create_ipset.sh @@ -0,0 +1,308 @@ +#!/bin/sh + +# create ipset or ipfw table from resolved ip's +# $1=no-update - do not update ipset, only create if its absent +# $1=clear - clear ipset + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" + +. "$EXEDIR/def.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/nft.sh" + +IPSET_CMD="$TMPDIR/ipset_cmd.txt" +IPSET_SAVERAM_CHUNK_SIZE=20000 +IPSET_SAVERAM_MIN_FILESIZE=131072 + +NFSET_TEMP="$TMPDIR/nfset_temp.txt" +NFSET_SAVERAM_MIN_FILESIZE=16384 +NFSET_SAVERAM_CHUNK_SIZE=1000 + +IPSET_HOOK_TEMP="$TMPDIR/ipset_hook.txt" + +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 - ipset name + sed -nEe "s/^.+$/add $1 &/p" +} +ipset_get_script_from_file() +{ + # $1 - filename + # $2 - ipset name + zzcat "$1" | sort -u | ipset_get_script $2 +} +ipset_restore() +{ + # $1 - ipset name + # $2 - filename + + zzexist "$2" || return + local fsize=$(zzsize "$2") + 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 $1 " + [ "$svram" = "1" ] && T="$T (saveram)" + T="$T : $f" + echo $T + + if [ "$svram" = "1" ]; then + ipset_get_script_from_file "$2" "$1" >"$IPSET_CMD" + ipset_restore_chunked "$IPSET_CMD" $IPSET_SAVERAM_CHUNK_SIZE + rm -f "$IPSET_CMD" + else + ipset_get_script_from_file "$2" "$1" | 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 0 + } + ipset flush $2 + [ "$DO_CLEAR" = "1" ] || { + for f in "$5" "$6" ; do + ipset_restore "$2" "$f" + done + [ -n "$IPSET_HOOK" ] && $IPSET_HOOK $2 | ipset_get_script $2 | ipset -! restore + } + return 0 +} + +nfset_get_script_multi() +{ + # $1 - set name + # $2,$3,... - filenames + + # all in one shot. this allows to merge overlapping ranges + # good but eats lots of RAM + + local set=$1 nonempty N=1 f + + shift + # first we need to make sure at least one element exists or nft will fail + while : + do + eval f=\$$N + [ -n "$f" ] || break + nonempty=$(zzexist "$f" && zzcat "$f" 2>/dev/null | head -n 1) + [ -n "$nonempty" ] && break + N=$(($N+1)) + done + + [ -n "$nonempty" ] && { + echo "add element inet $ZAPRET_NFT_TABLE $set {" + while [ -n "$1" ]; do + zzexist "$1" && zzcat "$1" | sed -nEe "s/^.+$/&,/p" + shift + done + echo "}" + } +} +nfset_restore() +{ + # $1 - set name + # $2,$3,... - filenames + + echo "Adding to nfset $1 : $2 $3 $4 $5" + local hookfile + [ -n "$IPSET_HOOK" ] && { + $IPSET_HOOK $1 >"$IPSET_HOOK_TEMP" + [ -s "$IPSET_HOOK_TEMP" ] && hookfile=$IPSET_HOOK_TEMP + } + nfset_get_script_multi "$@" $hookfile | nft -f - + rm -f "$IPSET_HOOK_TEMP" +} +create_nfset() +{ + # $1 - family + # $2 - set name + # $3 - maxelem + # $4,$5 - list files + + local policy + [ $SAVERAM = "1" ] && policy="policy memory;" + nft_create_set $2 "type ipv${1}_addr; size $3; flags interval; auto-merge; $policy" || { + [ "$NO_UPDATE" = "1" ] && return 0 + nft flush set inet $ZAPRET_NFT_TABLE $2 + } + [ "$DO_CLEAR" = "1" ] || { + nfset_restore $2 $4 $5 + } + 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 0 + } + ipfw -q table $1 flush + shift + shift + [ "$DO_CLEAR" = "1" ] || { + while [ -n "$1" ]; do + echo "Adding to ipfw table $name : $1" + populate_ipfw_table $name "$1" + shift + done + [ -n "$IPSET_HOOK" ] && $IPSET_HOOK $name | add_ipfw_table $name + } + return 0 +} + +print_reloading_backend() +{ + # $1 - backend name + local s="reloading $1 backend" + if [ "$NO_UPDATE" = 1 ]; then + s="$s (no-update)" + elif [ "$DO_CLEAR" = 1 ]; then + s="$s (clear)" + else + s="$s (forced-update)" + fi + echo $s +} + + +oom_adjust_high +get_fwtype + +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 + [ -n "$IPSET_HOOK" ] && $IPSET_HOOK + fi +else + case "$FWTYPE" in + iptables) + # 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 + ;; + nftables) + nft_create_table && { + SAVERAM=0 + RAMSIZE=$($GREP MemTotal /proc/meminfo | $AWK '{print $2}') + [ "$RAMSIZE" -lt "420000" ] && SAVERAM=1 + print_reloading_backend "nftables set" + [ "$DISABLE_IPV4" != "1" ] && { + create_nfset 4 $ZIPSET $SET_MAXELEM "$ZIPLIST" "$ZIPLIST_USER" + create_nfset 4 $ZIPSET_IPBAN $SET_MAXELEM "$ZIPLIST_IPBAN" "$ZIPLIST_USER_IPBAN" + create_nfset 4 $ZIPSET_EXCLUDE $SET_MAXELEM_EXCLUDE "$ZIPLIST_EXCLUDE" + } + [ "$DISABLE_IPV6" != "1" ] && { + create_nfset 6 $ZIPSET6 $SET_MAXELEM "$ZIPLIST6" "$ZIPLIST_USER6" + create_nfset 6 $ZIPSET_IPBAN6 $SET_MAXELEM "$ZIPLIST_IPBAN6" "$ZIPLIST_USER_IPBAN6" + create_nfset 6 $ZIPSET_EXCLUDE6 $SET_MAXELEM_EXCLUDE "$ZIPLIST_EXCLUDE6" + } + true + } + ;; + ipfw) + 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 + ;; + *) + echo no supported ip list backend found + true + ;; + esac + +fi diff --git a/ipset/def.sh b/ipset/def.sh new file mode 100644 index 0000000..174cc35 --- /dev/null +++ b/ipset/def.sh @@ -0,0 +1,270 @@ +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE=${ZAPRET_BASE:-"$(cd "$EXEDIR/.."; pwd)"} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +IPSET_RW_DIR="$ZAPRET_RW/ipset" + +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" + +[ -z "$TMPDIR" ] && TMPDIR=/tmp +[ -z "$GZIP_LISTS" ] && GZIP_LISTS=1 + +[ -z "$SET_MAXELEM" ] && SET_MAXELEM=262144 +[ -z "$IPSET_OPT" ] && IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM" +[ -z "$SET_MAXELEM_EXCLUDE" ] && SET_MAXELEM_EXCLUDE=65536 +[ -z "$IPSET_OPT_EXCLUDE" ] && IPSET_OPT_EXCLUDE="hashsize 1024 maxelem $SET_MAXELEM_EXCLUDE" + +[ -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_RW_DIR/zapret-ip.txt" +ZIPLIST6="$IPSET_RW_DIR/zapret-ip6.txt" +ZIPLIST_EXCLUDE="$IPSET_RW_DIR/zapret-ip-exclude.txt" +ZIPLIST_EXCLUDE6="$IPSET_RW_DIR/zapret-ip-exclude6.txt" +ZIPLIST_USER="$IPSET_RW_DIR/zapret-ip-user.txt" +ZIPLIST_USER6="$IPSET_RW_DIR/zapret-ip-user6.txt" +ZUSERLIST="$IPSET_RW_DIR/zapret-hosts-user.txt" +ZHOSTLIST="$IPSET_RW_DIR/zapret-hosts.txt" + +ZIPSET_IPBAN=ipban +ZIPSET_IPBAN6=ipban6 +ZIPLIST_IPBAN="$IPSET_RW_DIR/zapret-ip-ipban.txt" +ZIPLIST_IPBAN6="$IPSET_RW_DIR/zapret-ip-ipban6.txt" +ZIPLIST_USER_IPBAN="$IPSET_RW_DIR/zapret-ip-user-ipban.txt" +ZIPLIST_USER_IPBAN6="$IPSET_RW_DIR/zapret-ip-user-ipban6.txt" +ZUSERLIST_IPBAN="$IPSET_RW_DIR/zapret-hosts-user-ipban.txt" +ZUSERLIST_EXCLUDE="$IPSET_RW_DIR/zapret-hosts-user-exclude.txt" + + +[ -n "$IP2NET" ] || IP2NET="$ZAPRET_BASE/ip2net/ip2net" +[ -n "$MDIG" ] || MDIG="$ZAPRET_BASE/mdig/mdig" +[ -z "$MDIG_THREADS" ] && MDIG_THREADS=30 + + + +# 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 [ -x /usr/local/bin/grep ] ; then + GREP=/usr/local/bin/grep +elif exists ggrep; then + GREP=$(whichq ggrep) +else + GREP=$(whichq grep) +fi + +# GNU awk is faster +if exists gawk; then + AWK=gawk +else + AWK=awk +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" ] +} +zztest() +{ + gzip -t "$1" 2>/dev/null +} +zzcat() +{ + if [ -f "$1.gz" ]; then + gunzip -c "$1.gz" + elif [ -f "$1" ]; then + if zztest "$1"; then + gunzip -c "$1" + else + cat "$1" + fi + 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" + if [ -f "$f" ]; then + wc -c <"$f" | xargs + else + printf 0 + fi +} + +digger() +{ + # $1 - family (4|6) + # $2 - s=enable mdig stats + if [ -x "$MDIG" ]; then + local cmd + [ "$2" = "s" ] && cmd=--stats=1000 + "$MDIG" --family=$1 --threads=$MDIG_THREADS $cmd + else + local A=A + [ "$1" = "6" ] && A=AAAA + dig $A +short +time=8 +tries=2 -f - | $GREP -E '^[^;].*[^\.]$' + fi +} +filedigger() +{ + # $1 - hostlist + # $2 - family (4|6) + >&2 echo digging $(wc -l <"$1" | xargs) ipv$2 domains : "$1" + zzcat "$1" | digger $2 s +} +flush_dns_cache() +{ + echo clearing all known DNS caches + + if exists killall; then + killall -HUP dnsmasq 2>/dev/null + # MacOS + killall -HUP mDNSResponder 2>/dev/null + elif exists pkill; then + pkill -HUP ^dnsmasq$ + else + echo no mass killer available ! cant flush dnsmasq + fi + + if exists rndc; then + rndc flush + fi + + if exists systemd-resolve; then + systemd-resolve --flush-caches + fi + +} +dnstest() +{ + local ip="$(echo w3.org | digger 46)" + [ -n "$ip" ] +} +dnstest_with_cache_clear() +{ + flush_dns_cache + if dnstest ; then + echo DNS is working + return 0 + else + echo "! DNS is not working" + return 1 + fi +} + + +cut_local() +{ + $GREP -vE '^192\.168\.|^127\.|^10\.' +} +cut_local6() +{ + $GREP -vE '^::|^fc..:|^fd..:|^fe8.:|^fe9.:|^fea.:|^feb.:|^FC..:|^FD..:|^FE8.:|^FE9.:|^FEA.:|^FEB.:' +} + +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 + dnstest_with_cache_clear || return + [ -f "$ZUSERLIST_EXCLUDE" ] && { + [ "$DISABLE_IPV4" != "1" ] && filedigger "$ZUSERLIST_EXCLUDE" 4 | sort -u > "$ZIPLIST_EXCLUDE" + [ "$DISABLE_IPV6" != "1" ] && filedigger "$ZUSERLIST_EXCLUDE" 6 | sort -u > "$ZIPLIST_EXCLUDE6" + } + return 0 +} + +_get_ipban() +{ + [ -f "$ZUSERLIST_IPBAN" ] && { + [ "$DISABLE_IPV4" != "1" ] && filedigger "$ZUSERLIST_IPBAN" 4 | cut_local | sort -u > "$ZIPLIST_USER_IPBAN" + [ "$DISABLE_IPV6" != "1" ] && filedigger "$ZUSERLIST_IPBAN" 6 | cut_local6 | sort -u > "$ZIPLIST_USER_IPBAN6" + } +} +getuser() +{ + getexclude || return + [ -f "$ZUSERLIST" ] && { + [ "$DISABLE_IPV4" != "1" ] && filedigger "$ZUSERLIST" 4 | cut_local | sort -u > "$ZIPLIST_USER" + [ "$DISABLE_IPV6" != "1" ] && filedigger "$ZUSERLIST" 6 | cut_local6 | sort -u > "$ZIPLIST_USER6" + } + _get_ipban + return 0 +} +getipban() +{ + getexclude || return + _get_ipban + return 0 +} + +hup_zapret_daemons() +{ + echo forcing zapret daemons to reload their hostlist + if exists killall; then + 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_allyouneed.sh b/ipset/get_antifilter_allyouneed.sh new file mode 100755 index 0000000..a5b3d22 --- /dev/null +++ b/ipset/get_antifilter_allyouneed.sh @@ -0,0 +1,13 @@ +#!/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.download/list/allyouneed.lst "$ZIPLIST" +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_antifilter_ip.sh b/ipset/get_antifilter_ip.sh new file mode 100755 index 0000000..e2cd085 --- /dev/null +++ b/ipset/get_antifilter_ip.sh @@ -0,0 +1,13 @@ +#!/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.download/list/ip.lst "$ZIPLIST" +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_antifilter_ipresolve.sh b/ipset/get_antifilter_ipresolve.sh new file mode 100755 index 0000000..de08e28 --- /dev/null +++ b/ipset/get_antifilter_ipresolve.sh @@ -0,0 +1,13 @@ +#!/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.download/list/ipresolve.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..9f0d671 --- /dev/null +++ b/ipset/get_antifilter_ipsmart.sh @@ -0,0 +1,13 @@ +#!/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..ccf1c8f --- /dev/null +++ b/ipset/get_antifilter_ipsum.sh @@ -0,0 +1,13 @@ +#!/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.download/list/ipsum.lst "$ZIPLIST" +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_antizapret_domains.sh b/ipset/get_antizapret_domains.sh new file mode 100755 index 0000000..93848ac --- /dev/null +++ b/ipset/get_antizapret_domains.sh @@ -0,0 +1,36 @@ +#!/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 +FAIL= +getipban || FAIL=1 +"$IPSET_DIR/create_ipset.sh" +[ -n "$FAIL" ] && exit + +ZURL=https://antizapret.prostovpn.org:8443/domains-export.txt +ZDOM="$TMPDIR/zapret.txt" + + +curl -H "Accept-Encoding: gzip" -k --fail --max-time 600 --connect-timeout 5 --retry 3 --max-filesize 251658240 "$ZURL" | gunzip - >"$ZDOM" || +{ + echo domain list download failed + exit 2 +} + +dlsize=$(LANG=C wc -c "$ZDOM" | xargs | cut -f 1 -d ' ') +if test $dlsize -lt 102400; then + echo list file is too small. can be bad. + exit 2 +fi + +sort -u "$ZDOM" | zz "$ZHOSTLIST" + +rm -f "$ZDOM" + +hup_zapret_daemons + +exit 0 diff --git a/ipset/get_config.sh b/ipset/get_config.sh new file mode 100755 index 0000000..f751f18 --- /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_ipban.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..adaf8d6 --- /dev/null +++ b/ipset/get_exclude.sh @@ -0,0 +1,13 @@ +#!/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" + +[ "$MODE_FILTER" = hostlist ] && hup_zapret_daemons diff --git a/ipset/get_ipban.sh b/ipset/get_ipban.sh new file mode 100755 index 0000000..2bda981 --- /dev/null +++ b/ipset/get_ipban.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# resolve only ipban user host list + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +getipban + +"$IPSET_DIR/create_ipset.sh" + +[ "$MODE_FILTER" = hostlist ] && hup_zapret_daemons diff --git a/ipset/get_reestr_hostlist.sh b/ipset/get_reestr_hostlist.sh new file mode 100755 index 0000000..6691268 --- /dev/null +++ b/ipset/get_reestr_hostlist.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +ZREESTR="$TMPDIR/zapret.txt" +IPB="$TMPDIR/ipb.txt" +ZURL_REESTR=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +dl_checked() +{ + # $1 - url + # $2 - file + # $3 - minsize + # $4 - maxsize + # $5 - maxtime + curl -k --fail --max-time $5 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$2" "$1" || + { + echo list download failed : $1 + return 2 + } + dlsize=$(LANG=C wc -c "$2" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt $3; then + echo list is too small : $dlsize bytes. can be bad. + return 2 + fi + return 0 +} + +reestr_list() +{ + LANG=C cut -s -f2 -d';' "$ZREESTR" | LANG=C nice -n 5 sed -Ee 's/^\*\.(.+)$/\1/' -ne 's/^[a-z0-9A-Z._-]+$/&/p' | $AWK '{ print tolower($0) }' +} +reestr_extract_ip() +{ + LANG=C nice -n 5 $AWK -F ';' '($1 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}/) && (($2 == "" && $3 == "") || ($1 == $2)) {gsub(/ \| /, RS); print $1}' "$ZREESTR" | LANG=C $AWK '{split($1, a, /\|/); for (i in a) {print a[i]}}' +} + +ipban_fin() +{ + getipban + "$IPSET_DIR/create_ipset.sh" +} + +dl_checked "$ZURL_REESTR" "$ZREESTR" 204800 251658240 600 || { + ipban_fin + exit 2 +} + +reestr_list | sort -u | zz "$ZHOSTLIST" + +reestr_extract_ip <"$ZREESTR" >"$IPB" + +rm -f "$ZREESTR" +[ "$DISABLE_IPV4" != "1" ] && $AWK '/^([0-9]{1,3}\.){3}[0-9]{1,3}($|(\/[0-9]{2}$))/' "$IPB" | cut_local | ip2net4 | zz "$ZIPLIST_IPBAN" +[ "$DISABLE_IPV6" != "1" ] && $AWK '/^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}($|(\/[0-9]{2,3}$))/' "$IPB" | cut_local6 | ip2net6 | zz "$ZIPLIST_IPBAN6" +rm -f "$IPB" + +hup_zapret_daemons + +ipban_fin + +exit 0 diff --git a/ipset/get_reestr_preresolved.sh b/ipset/get_reestr_preresolved.sh new file mode 100755 index 0000000..6e530e7 --- /dev/null +++ b/ipset/get_reestr_preresolved.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +TMPLIST="$TMPDIR/list.txt" + +BASEURL="https://raw.githubusercontent.com/bol-van/rulist/main" +URL4="$BASEURL/reestr_resolved4.txt" +URL6="$BASEURL/reestr_resolved6.txt" +IPB4="$BASEURL/reestr_ipban4.txt" +IPB6="$BASEURL/reestr_ipban6.txt" + +dl() +{ + # $1 - url + # $2 - file + # $3 - minsize + # $4 - maxsize + curl -H "Accept-Encoding: gzip" -k --fail --max-time 120 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$TMPLIST" "$1" || + { + echo list download failed : $1 + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt $3; then + echo list is too small : $dlsize bytes. can be bad. + exit 2 + fi + zzcat "$TMPLIST" | zz "$2" + rm -f "$TMPLIST" +} + +getuser && { + [ "$DISABLE_IPV4" != "1" ] && { + dl "$URL4" "$ZIPLIST" 32768 4194304 + dl "$IPB4" "$ZIPLIST_IPBAN" 8192 1048576 + } + [ "$DISABLE_IPV6" != "1" ] && { + dl "$URL6" "$ZIPLIST6" 8192 4194304 + dl "$IPB6" "$ZIPLIST_IPBAN6" 128 1048576 + } +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_preresolved_smart.sh b/ipset/get_reestr_preresolved_smart.sh new file mode 100755 index 0000000..d31c0b3 --- /dev/null +++ b/ipset/get_reestr_preresolved_smart.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +TMPLIST="$TMPDIR/list.txt" + +BASEURL="https://raw.githubusercontent.com/bol-van/rulist/main" +URL4="$BASEURL/reestr_smart4.txt" +URL6="$BASEURL/reestr_smart6.txt" +IPB4="$BASEURL/reestr_ipban4.txt" +IPB6="$BASEURL/reestr_ipban6.txt" + +dl() +{ + # $1 - url + # $2 - file + # $3 - minsize + # $4 - maxsize + curl -H "Accept-Encoding: gzip" -k --fail --max-time 120 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$TMPLIST" "$1" || + { + echo list download failed : $1 + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt $3; then + echo list is too small : $dlsize bytes. can be bad. + exit 2 + fi + zzcat "$TMPLIST" | zz "$2" + rm -f "$TMPLIST" +} + +getuser && { + [ "$DISABLE_IPV4" != "1" ] && { + dl "$URL4" "$ZIPLIST" 32768 4194304 + dl "$IPB4" "$ZIPLIST_IPBAN" 8192 1048576 + } + [ "$DISABLE_IPV6" != "1" ] && { + dl "$URL6" "$ZIPLIST6" 8192 4194304 + dl "$IPB6" "$ZIPLIST_IPBAN6" 128 1048576 + } +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_resolvable_domains.sh b/ipset/get_reestr_resolvable_domains.sh new file mode 100755 index 0000000..d2defdc --- /dev/null +++ b/ipset/get_reestr_resolvable_domains.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + +TMPLIST="$TMPDIR/list_nethub.txt" + +BASEURL="https://raw.githubusercontent.com/bol-van/rulist/main" +URL="$BASEURL/reestr_hostname_resolvable.txt" +IPB4="$BASEURL/reestr_ipban4.txt" +IPB6="$BASEURL/reestr_ipban6.txt" + +dl() +{ + # $1 - url + # $2 - file + # $3 - minsize + # $4 - maxsize + curl -H "Accept-Encoding: gzip" -k --fail --max-time 120 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$TMPLIST" "$1" || + { + echo list download failed : $1 + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt $3; then + echo list is too small : $dlsize bytes. can be bad. + exit 2 + fi + zzcat "$TMPLIST" | zz "$2" + rm -f "$TMPLIST" +} + +dl "$URL" "$ZHOSTLIST" 65536 67108864 + +hup_zapret_daemons + +[ "$DISABLE_IPV4" != "1" ] && dl "$IPB4" "$ZIPLIST_IPBAN" 8192 1048576 +[ "$DISABLE_IPV6" != "1" ] && dl "$IPB6" "$ZIPLIST_IPBAN6" 128 1048576 + +getipban +"$IPSET_DIR/create_ipset.sh" + +exit 0 diff --git a/ipset/get_reestr_resolve.sh b/ipset/get_reestr_resolve.sh new file mode 100755 index 0000000..924a073 --- /dev/null +++ b/ipset/get_reestr_resolve.sh @@ -0,0 +1,83 @@ +#!/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" +IPB="$TMPDIR/ipb.txt" +ZIPLISTTMP="$TMPDIR/zapret-ip.txt" +#ZURL=https://reestr.rublacklist.net/api/current +ZURL_REESTR=https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv + +dl_checked() +{ + # $1 - url + # $2 - file + # $3 - minsize + # $4 - maxsize + # $5 - maxtime + curl -k --fail --max-time $5 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$2" "$1" || + { + echo list download failed : $1 + return 2 + } + dlsize=$(LANG=C wc -c "$2" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt $3; then + echo list is too small : $dlsize bytes. can be bad. + return 2 + fi + return 0 +} + +reestr_list() +{ + LANG=C cut -s -f2 -d';' "$ZREESTR" | LANG=C nice -n 5 sed -Ee 's/^\*\.(.+)$/\1/' -ne 's/^[a-z0-9A-Z._-]+$/&/p' +} +reestr_extract_ip() +{ + LANG=C nice -n 5 $AWK -F ';' '($1 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}/) && (($2 == "" && $3 == "") || ($1 == $2)) {gsub(/ \| /, RS); print $1}' "$ZREESTR" | LANG=C $AWK '{split($1, a, /\|/); for (i in a) {print a[i]}}' +} + +getuser && { + # both disabled + [ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && exit 0 + + dl_checked "$ZURL_REESTR" "$ZREESTR" 204800 251658240 600 || exit 2 + + echo preparing ipban list .. + + reestr_extract_ip <"$ZREESTR" >"$IPB" + [ "$DISABLE_IPV4" != "1" ] && $AWK '/^([0-9]{1,3}\.){3}[0-9]{1,3}($|(\/[0-9]{2}$))/' "$IPB" | cut_local | ip2net4 | zz "$ZIPLIST_IPBAN" + [ "$DISABLE_IPV6" != "1" ] && $AWK '/^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}($|(\/[0-9]{2,3}$))/' "$IPB" | cut_local6 | ip2net6 | zz "$ZIPLIST_IPBAN6" + rm -f "$IPB" + + echo preparing dig list .. + reestr_list | sort -u >"$ZDIG" + + rm -f "$ZREESTR" + + echo digging started. this can take long ... + + [ "$DISABLE_IPV4" != "1" ] && { + filedigger "$ZDIG" 4 | cut_local >"$ZIPLISTTMP" || { + rm -f "$ZDIG" + exit 1 + } + ip2net4 <"$ZIPLISTTMP" | zz "$ZIPLIST" + rm -f "$ZIPLISTTMP" + } + [ "$DISABLE_IPV6" != "1" ] && { + filedigger "$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.default b/ipset/zapret-hosts-user-exclude.txt.default new file mode 100644 index 0000000..999ccdd --- /dev/null +++ b/ipset/zapret-hosts-user-exclude.txt.default @@ -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/mdig/Makefile b/mdig/Makefile new file mode 100644 index 0000000..58bc4b4 --- /dev/null +++ b/mdig/Makefile @@ -0,0 +1,28 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member +CFLAGS_WIN = -static +LIBS = -lpthread +LIBS_WIN = -lws2_32 +SRC_FILES = *.c + +all: mdig + +mdig: $(SRC_FILES) + $(CC) -s $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -o mdig $(SRC_FILES) $(LDFLAGS) $(LIBS) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o mdiga $(SRC_FILES) $(LDFLAGS) -target arm64-apple-macos10.8 $(LIBS_BSD) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o mdigx $(SRC_FILES) $(LDFLAGS) -target x86_64-apple-macos10.8 $(LIBS_BSD) + strip mdiga mdigx + lipo -create -output mdig mdigx mdiga + rm -f mdigx mdiga + +win: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_WIN) -o mdig $(SRC_FILES) $(LDFLAGS) $(LIBS_WIN) + +clean: + rm -f mdig *.o diff --git a/mdig/mdig.c b/mdig/mdig.c new file mode 100644 index 0000000..047e7b6 --- /dev/null +++ b/mdig/mdig.c @@ -0,0 +1,435 @@ +// 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 +#ifdef _WIN32 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x600 +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#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"; +#ifdef EAI_SYSTEM + case EAI_SYSTEM: + return "EAI_SYSTEM"; +#endif + default: + return "UNKNOWN"; + } +} + +static bool dom_valid(char *dom) +{ + if (!dom || *dom=='.') return false; + for (; *dom; dom++) + if (*dom < 0x20 || (*dom & 0x80) || !(*dom == '.' || *dom == '-' || *dom == '_' || (*dom >= '0' && *dom <= '9') || (*dom >= 'a' && *dom <= 'z') || (*dom >= 'A' && *dom <= 'Z'))) + return false; + return true; +} + +static 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 + FILE *F_log_resolved, *F_log_failed; +} 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, ...) +{ + if (stream) + { + 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", (unsigned int)(tm/3600), (unsigned int)((tm/60)%60), (unsigned int)(tm%60), ct, ct_ok, ct - ct_ok); + } +} + +static void stat_plus(bool 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]; + bool 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))) + { + is_ok = false; + if (*dom) + { + 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)==1) + { + 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 = true; + 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 = true; + } + break; + } + } + else if (glob.verbose) + { + char dom2[sizeof(dom)]; + strcpy(dom2,dom); + invalid_domain_beautify(dom2); + VLOG("invalid domain : %s", dom2); + } + interlocked_fprintf(is_ok ? glob.F_log_resolved : glob.F_log_failed,"%s\n",dom); + } + stat_plus(is_ok); + } + VLOG("ended"); + return NULL; +} + +static int run_threads(void) +{ + 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(void) +{ + 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" + " --log-resolved=\t; log successfully resolved domains to a file\n" + " --log-failed=\t; log failed domains to a file\n" + ); + exit(1); +} +int main(int argc, char **argv) +{ + int r, v, option_index = 0; + char fn1[256],fn2[256]; + + static const struct option long_options[] = { + {"help",no_argument,0,0}, // optidx=0 + {"threads",required_argument,0,0}, // optidx=1 + {"family",required_argument,0,0}, // optidx=2 + {"verbose",no_argument,0,0}, // optidx=3 + {"stats",required_argument,0,0}, // optidx=4 + {"log-resolved",required_argument,0,0}, // optidx=5 + {"log-failed",required_argument,0,0}, // optidx=6 + {NULL,0,NULL,0} + }; + + memset(&glob, 0, sizeof(glob)); + *fn1 = *fn2 = 0; + 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: /* help */ + exithelp(); + break; + case 1: /* 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 2: /* 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 3: /* verbose */ + glob.verbose = '\1'; + break; + case 4: /* stats */ + glob.stats_every = optarg ? atoi(optarg) : 0; + break; + case 5: /* log-resolved */ + strncpy(fn1,optarg,sizeof(fn1)); + fn1[sizeof(fn1)-1] = 0; + break; + case 6: /* log-failed */ + strncpy(fn2,optarg,sizeof(fn2)); + fn2[sizeof(fn2)-1] = 0; + break; + } + } + +#ifdef _WIN32 + WSADATA wsaData; + if (WSAStartup(MAKEWORD(2, 2), &wsaData)) + { + fprintf(stderr,"WSAStartup failed\n"); + return 4; + } +#endif + + if (*fn1) + { + glob.F_log_resolved = fopen(fn1,"wt"); + if (!glob.F_log_resolved) + { + fprintf(stderr,"failed to create %s\n",fn1); + r=5; goto ex; + } + } + if (*fn2) + { + glob.F_log_failed = fopen(fn2,"wt"); + if (!glob.F_log_failed) + { + fprintf(stderr,"failed to create %s\n",fn2); + r=5; goto ex; + } + } + + r = run_threads(); + +ex: + if (glob.F_log_resolved) fclose(glob.F_log_resolved); + if (glob.F_log_failed) fclose(glob.F_log_failed); + + return r; +} diff --git a/nfq/BSDmakefile b/nfq/BSDmakefile new file mode 100644 index 0000000..1717340 --- /dev/null +++ b/nfq/BSDmakefile @@ -0,0 +1,12 @@ +CC ?= cc +CFLAGS += -std=gnu99 -s -O3 -Wno-address-of-packed-member +LIBS = -lz +SRC_FILES = *.c crypto/*.c + +all: dvtws + +dvtws: $(SRC_FILES) + $(CC) $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +clean: + rm -f dvtws diff --git a/nfq/Makefile b/nfq/Makefile new file mode 100644 index 0000000..783f437 --- /dev/null +++ b/nfq/Makefile @@ -0,0 +1,30 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member +CFLAGS_MAC = -mmacosx-version-min=10.8 +CFLAGS_CYGWIN = -Wno-address-of-packed-member -static +LIBS_LINUX = -lnetfilter_queue -lnfnetlink -lz +LIBS_BSD = -lz +LIBS_CYGWIN = -lz -Lwindivert -lwindivert -lwlanapi -lole32 -loleaut32 -luuid +SRC_FILES = *.c crypto/*.c + +all: nfqws + +nfqws: $(SRC_FILES) + $(CC) -s $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS_LINUX) + +bsd: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -o dvtws $(SRC_FILES) $(LDFLAGS) $(LIBS_BSD) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o dvtwsa $(SRC_FILES) $(LDFLAGS) -target arm64-apple-macos10.8 $(LIBS_BSD) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -o dvtwsx $(SRC_FILES) $(LDFLAGS) -target x86_64-apple-macos10.8 $(LIBS_BSD) + strip dvtwsa dvtwsx + lipo -create -output dvtws dvtwsx dvtwsa + rm -f dvtwsx dvtwsa + +cygwin: + $(CC) -s $(CFLAGS) $(CFLAGS_CYGWIN) -o winws $(SRC_FILES) $(LDFLAGS) $(LIBS_CYGWIN) winmanifest.o winicon.o + +clean: + rm -f nfqws dvtws winws.exe diff --git a/nfq/checksum.c b/nfq/checksum.c new file mode 100644 index 0000000..dcc3657 --- /dev/null +++ b/nfq/checksum.c @@ -0,0 +1,159 @@ +#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); +} + +// this function preserves data alignment requirements (otherwise it will be damn slow on mips arch) +// and uses 64-bit arithmetics to improve speed +// taken from linux source code +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) 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); +} + +void udp4_fix_checksum(struct udphdr *udp,size_t len, const struct in_addr *src_addr, const struct in_addr *dest_addr) +{ + udp->uh_sum = 0; + udp->uh_sum = csum_tcpudp_magic(src_addr->s_addr,dest_addr->s_addr,len,IPPROTO_UDP,csum_partial(udp,len)); +} +void udp6_fix_checksum(struct udphdr *udp,size_t len, const struct in6_addr *src_addr, const struct in6_addr *dest_addr) +{ + udp->uh_sum = 0; + udp->uh_sum = csum_ipv6_magic(src_addr,dest_addr,len,IPPROTO_UDP,csum_partial(udp,len)); +} +void udp_fix_checksum(struct udphdr *udp,size_t len,const struct ip *ip,const struct ip6_hdr *ip6hdr) +{ + if (ip) + udp4_fix_checksum(udp, len, &ip->ip_src, &ip->ip_dst); + else if (ip6hdr) + udp6_fix_checksum(udp, len, &ip6hdr->ip6_src, &ip6hdr->ip6_dst); +} diff --git a/nfq/checksum.h b/nfq/checksum.h new file mode 100644 index 0000000..c33831e --- /dev/null +++ b/nfq/checksum.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include + +#define __FAVOR_BSD +#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); + +void udp4_fix_checksum(struct udphdr *udp,size_t len, const struct in_addr *src_addr, const struct in_addr *dest_addr); +void udp6_fix_checksum(struct udphdr *udp,size_t len, const struct in6_addr *src_addr, const struct in6_addr *dest_addr); +void udp_fix_checksum(struct udphdr *udp,size_t len,const struct ip *ip,const struct ip6_hdr *ip6hdr); diff --git a/nfq/conntrack.c b/nfq/conntrack.c new file mode 100644 index 0000000..62a79db --- /dev/null +++ b/nfq/conntrack.c @@ -0,0 +1,405 @@ +#include "conntrack.h" +#include "darkmagic.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(void *elem) +{ + oom = true; +} + +static const char *connstate_s[]={"SYN","ESTABLISHED","FIN"}; + +static void connswap(const t_conn *c, t_conn *c2) +{ + memset(c2,0,sizeof(*c2)); + c2->l3proto = c->l3proto; + c2->l4proto = c->l4proto; + c2->src = c->dst; + c2->dst = c->src; + c2->sport = c->dport; + c2->dport = c->sport; +} + +void ConntrackClearHostname(t_ctrack *track) +{ + if (track->hostname) + { + free(track->hostname); + track->hostname = NULL; + } +} +static void ConntrackClearTrack(t_ctrack *track) +{ + ConntrackClearHostname(track); + ReasmClear(&track->reasm_orig); + rawpacket_queue_destroy(&track->delayed); +} + +static void ConntrackFreeElem(t_conntrack_pool *elem) +{ + ConntrackClearTrack(&elem->track); + free(elem); +} + +static void ConntrackPoolDestroyPool(t_conntrack_pool **pp) +{ + t_conntrack_pool *elem, *tmp; + HASH_ITER(hh, *pp, elem, tmp) { HASH_DEL(*pp, elem); ConntrackFreeElem(elem); } +} +void ConntrackPoolDestroy(t_conntrack *p) +{ + ConntrackPoolDestroyPool(&p->pool); +} + +void ConntrackPoolInit(t_conntrack *p, time_t purge_interval, uint32_t timeout_syn, uint32_t timeout_established, uint32_t timeout_fin, uint32_t timeout_udp) +{ + p->timeout_syn = timeout_syn; + p->timeout_established = timeout_established; + p->timeout_fin = timeout_fin; + p->timeout_udp= timeout_udp; + p->t_purge_interval = purge_interval; + time(&p->t_last_purge); + p->pool = NULL; +} + +void ConntrackExtractConn(t_conn *c, bool bReverse, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr) +{ + memset(c,0,sizeof(*c)); + if (ip) + { + c->l3proto = IPPROTO_IP; + c->dst.ip = bReverse ? ip->ip_src : ip->ip_dst; + c->src.ip = bReverse ? ip->ip_dst : ip->ip_src; + } + else if (ip6) + { + c->l3proto = IPPROTO_IPV6; + c->dst.ip6 = bReverse ? ip6->ip6_src : ip6->ip6_dst; + c->src.ip6 = bReverse ? ip6->ip6_dst : ip6->ip6_src; + } + else + c->l3proto = -1; + extract_ports(tcphdr, udphdr, &c->l4proto, bReverse ? &c->dport : &c->sport, bReverse ? &c->sport : &c->dport); +} + + +static t_conntrack_pool *ConntrackPoolSearch(t_conntrack_pool *p, const t_conn *c) +{ + t_conntrack_pool *t; + HASH_FIND(hh, p, c, sizeof(*c), t); + return t; +} + +static void ConntrackInitTrack(t_ctrack *t) +{ + memset(t,0,sizeof(*t)); + t->scale_orig = t->scale_reply = SCALE_NONE; + time(&t->t_start); + rawpacket_queue_init(&t->delayed); +} +static void ConntrackReInitTrack(t_ctrack *t) +{ + ConntrackClearTrack(t); + ConntrackInitTrack(t); +} + +static t_conntrack_pool *ConntrackNew(t_conntrack_pool **pp, const t_conn *c) +{ + t_conntrack_pool *ctnew; + if (!(ctnew = malloc(sizeof(*ctnew)))) return NULL; + ctnew->conn = *c; + oom = false; + HASH_ADD(hh, *pp, conn, sizeof(*c), ctnew); + if (oom) { free(ctnew); return NULL; } + ConntrackInitTrack(&ctnew->track); + return ctnew; +} + +// non-tcp packets are passed with tcphdr=NULL but len_payload filled +static void ConntrackFeedPacket(t_ctrack *t, bool bReverse, const struct tcphdr *tcphdr, uint32_t len_payload) +{ + uint8_t scale; + + if (bReverse) + { + t->pcounter_reply++; + t->pdcounter_reply+=!!len_payload; + + } + else + { + t->pcounter_orig++; + t->pdcounter_orig+=!!len_payload; + } + + if (tcphdr) + { + if (tcp_syn_segment(tcphdr)) + { + if (t->state!=SYN) ConntrackReInitTrack(t); // erase current entry + t->seq0 = ntohl(tcphdr->th_seq); + } + else if (tcp_synack_segment(tcphdr)) + { + if (t->state!=SYN) ConntrackReInitTrack(t); // erase current entry + if (!t->seq0) t->seq0 = ntohl(tcphdr->th_ack)-1; + t->ack0 = ntohl(tcphdr->th_seq); + } + else if (tcphdr->th_flags & (TH_FIN|TH_RST)) + { + t->state = FIN; + } + else + { + if (t->state==SYN) + { + t->state=ESTABLISHED; + if (!bReverse && !t->ack0) t->ack0 = ntohl(tcphdr->th_ack)-1; + } + } + scale = tcp_find_scale_factor(tcphdr); + if (bReverse) + { + t->pos_orig = t->seq_last = ntohl(tcphdr->th_ack); + t->ack_last = ntohl(tcphdr->th_seq); + t->pos_reply = t->ack_last + len_payload; + t->winsize_reply = ntohs(tcphdr->th_win); + if (scale!=SCALE_NONE) t->scale_reply = scale; + + } + else + { + t->seq_last = ntohl(tcphdr->th_seq); + t->pos_orig = t->seq_last + len_payload; + t->pos_reply = t->ack_last = ntohl(tcphdr->th_ack); + t->winsize_orig = ntohs(tcphdr->th_win); + if (scale!=SCALE_NONE) t->scale_orig = scale; + } + } + else + { + if (bReverse) + { + t->ack_last=t->pos_reply; + t->pos_reply+=len_payload; + } + else + { + t->seq_last=t->pos_orig; + t->pos_orig+=len_payload; + } + } + + time(&t->t_last); +} + +static bool ConntrackPoolDoubleSearchPool(t_conntrack_pool **pp, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, t_ctrack **ctrack, bool *bReverse) +{ + t_conn conn,connswp; + t_conntrack_pool *ctr; + + ConntrackExtractConn(&conn,false,ip,ip6,tcphdr,udphdr); + if ((ctr=ConntrackPoolSearch(*pp,&conn))) + { + if (bReverse) *bReverse = false; + if (ctrack) *ctrack = &ctr->track; + return true; + } + else + { + connswap(&conn,&connswp); + if ((ctr=ConntrackPoolSearch(*pp,&connswp))) + { + if (bReverse) *bReverse = true; + if (ctrack) *ctrack = &ctr->track; + return true; + } + } + return false; +} +bool ConntrackPoolDoubleSearch(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, t_ctrack **ctrack, bool *bReverse) +{ + return ConntrackPoolDoubleSearchPool(&p->pool, ip, ip6, tcphdr, udphdr, ctrack, bReverse); +} + +static bool ConntrackPoolFeedPool(t_conntrack_pool **pp, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, size_t len_payload, t_ctrack **ctrack, bool *bReverse) +{ + t_conn conn, connswp; + t_conntrack_pool *ctr; + bool b_rev; + + ConntrackExtractConn(&conn,false,ip,ip6,tcphdr,udphdr); + if ((ctr=ConntrackPoolSearch(*pp,&conn))) + { + ConntrackFeedPacket(&ctr->track, (b_rev=false), tcphdr, len_payload); + goto ok; + } + else + { + connswap(&conn,&connswp); + if ((ctr=ConntrackPoolSearch(*pp,&connswp))) + { + ConntrackFeedPacket(&ctr->track, (b_rev=true), tcphdr, len_payload); + goto ok; + } + } + b_rev = tcphdr && tcp_synack_segment(tcphdr); + if ((tcphdr && tcp_syn_segment(tcphdr)) || b_rev || udphdr) + { + if ((ctr=ConntrackNew(pp, b_rev ? &connswp : &conn))) + { + ConntrackFeedPacket(&ctr->track, b_rev, tcphdr, len_payload); + goto ok; + } + } + return false; +ok: + if (ctrack) *ctrack = &ctr->track; + if (bReverse) *bReverse = b_rev; + return true; +} +bool ConntrackPoolFeed(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, size_t len_payload, t_ctrack **ctrack, bool *bReverse) +{ + return ConntrackPoolFeedPool(&p->pool,ip,ip6,tcphdr,udphdr,len_payload,ctrack,bReverse); +} + +static bool ConntrackPoolDropPool(t_conntrack_pool **pp, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr) +{ + t_conn conn, connswp; + t_conntrack_pool *t; + ConntrackExtractConn(&conn,false,ip,ip6,tcphdr,udphdr); + if (!(t=ConntrackPoolSearch(*pp,&conn))) + { + connswap(&conn,&connswp); + t=ConntrackPoolSearch(*pp,&connswp); + } + if (!t) return false; + HASH_DEL(*pp, t); ConntrackFreeElem(t); + return true; +} +bool ConntrackPoolDrop(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr) +{ + return ConntrackPoolDropPool(&p->pool,ip,ip6,tcphdr,udphdr); +} + +void ConntrackPoolPurge(t_conntrack *p) +{ + time_t tidle, tnow = time(NULL); + t_conntrack_pool *t, *tmp; + + if ((tnow - p->t_last_purge)>=p->t_purge_interval) + { + HASH_ITER(hh, p->pool , t, tmp) { + tidle = tnow - t->track.t_last; + if ( t->track.b_cutoff || + (t->conn.l4proto==IPPROTO_TCP && ( + (t->track.state==SYN && tidle>=p->timeout_syn) || + (t->track.state==ESTABLISHED && tidle>=p->timeout_established) || + (t->track.state==FIN && tidle>=p->timeout_fin)) + ) || (t->conn.l4proto==IPPROTO_UDP && tidle>=p->timeout_udp) + ) + { + HASH_DEL(p->pool, t); ConntrackFreeElem(t); + } + } + p->t_last_purge = tnow; + } +} + +static void taddr2str(uint8_t l3proto, const t_addr *a, char *buf, size_t bufsize) +{ + if (!inet_ntop(family_from_proto(l3proto), a, buf, bufsize) && bufsize) *buf=0; +} + +static const char *ConntrackProtoName(t_l7proto proto) +{ + switch(proto) + { + case HTTP: return "HTTP"; + case TLS: return "TLS"; + case QUIC: return "QUIC"; + case WIREGUARD: return "WIREGUARD"; + case DHT: return "DHT"; + default: return "UNKNOWN"; + } +} +void ConntrackPoolDump(const t_conntrack *p) +{ + t_conntrack_pool *t, *tmp; + char sa1[40],sa2[40]; + time_t tnow = time(NULL); + HASH_ITER(hh, p->pool, t, tmp) { + taddr2str(t->conn.l3proto, &t->conn.src, sa1, sizeof(sa1)); + taddr2str(t->conn.l3proto, &t->conn.dst, sa2, sizeof(sa2)); + printf("%s [%s]:%u => [%s]:%u : %s : t0=%llu last=t0+%llu now=last+%llu packets_orig=d%llu/n%llu packets_reply=d%llu/n%llu ", + proto_name(t->conn.l4proto), + sa1, t->conn.sport, sa2, t->conn.dport, + t->conn.l4proto==IPPROTO_TCP ? connstate_s[t->track.state] : "-", + (unsigned long long)t->track.t_start, (unsigned long long)(t->track.t_last - t->track.t_start), (unsigned long long)(tnow - t->track.t_last), + (unsigned long long)t->track.pdcounter_orig, (unsigned long long)t->track.pcounter_orig, + (unsigned long long)t->track.pdcounter_reply, (unsigned long long)t->track.pcounter_reply); + if (t->conn.l4proto==IPPROTO_TCP) + printf("seq0=%u rseq=%u pos_orig=%u ack0=%u rack=%u pos_reply=%u wsize_orig=%u:%d wsize_reply=%u:%d", + t->track.seq0, t->track.seq_last - t->track.seq0, t->track.pos_orig - t->track.seq0, + t->track.ack0, t->track.ack_last - t->track.ack0, t->track.pos_reply - t->track.ack0, + t->track.winsize_orig, t->track.scale_orig==SCALE_NONE ? -1 : t->track.scale_orig, + t->track.winsize_reply, t->track.scale_reply==SCALE_NONE ? -1 : t->track.scale_reply); + else + printf("rseq=%u pos_orig=%u rack=%u pos_reply=%u", + t->track.seq_last, t->track.pos_orig, + t->track.ack_last, t->track.pos_reply); + printf(" req_retrans=%u cutoff=%u wss_cutoff=%u d_cutoff=%u hostname=%s l7proto=%s\n", + t->track.req_retrans_counter, t->track.b_cutoff, t->track.b_wssize_cutoff, t->track.b_desync_cutoff, t->track.hostname, ConntrackProtoName(t->track.l7proto)); + }; +} + + +void ReasmClear(t_reassemble *reasm) +{ + if (reasm->packet) + { + free(reasm->packet); + reasm->packet = NULL; + } + reasm->size = reasm->size_present = 0; +} +bool ReasmInit(t_reassemble *reasm, size_t size_requested, uint32_t seq_start) +{ + reasm->packet = malloc(size_requested); + if (!reasm->packet) return false; + reasm->size = size_requested; + reasm->size_present = 0; + reasm->seq = seq_start; + return true; +} +bool ReasmResize(t_reassemble *reasm, size_t new_size) +{ + uint8_t *p = realloc(reasm->packet, new_size); + if (!p) return false; + reasm->packet = p; + reasm->size = new_size; + if (reasm->size_present > new_size) reasm->size_present = new_size; + return true; +} +bool ReasmFeed(t_reassemble *reasm, uint32_t seq, const void *payload, size_t len) +{ + if (reasm->seq!=seq) return false; // fail session if out of sequence + + size_t szcopy; + szcopy = reasm->size - reasm->size_present; + if (lenpacket + reasm->size_present, payload, szcopy); + reasm->size_present += szcopy; + reasm->seq += (uint32_t)szcopy; + + return true; +} +bool ReasmHasSpace(t_reassemble *reasm, size_t len) +{ + return (reasm->size_present+len)<=reasm->size; +} diff --git a/nfq/conntrack.h b/nfq/conntrack.h new file mode 100644 index 0000000..e37a616 --- /dev/null +++ b/nfq/conntrack.h @@ -0,0 +1,125 @@ +#pragma once + + +// this conntrack is not bullet-proof +// its designed to satisfy dpi desync needs only + +#include "packet_queue.h" + +#include +#include +#include +#include +#include +#include + +#define __FAVOR_BSD +#include +#include +#include +#include + + +//#define HASH_BLOOM 20 +#define HASH_NONFATAL_OOM 1 +#undef HASH_FUNCTION +#define HASH_FUNCTION HASH_BER +#include "uthash.h" + +#define RETRANS_COUNTER_STOP ((uint8_t)-1) + +typedef union { + struct in_addr ip; + struct in6_addr ip6; +} t_addr; +typedef struct +{ + t_addr src, dst; + uint16_t sport,dport; + uint8_t l3proto; // IPPROTO_IP, IPPROTO_IPV6 + uint8_t l4proto; // IPPROTO_TCP, IPPROTO_UDP +} t_conn; + +// this structure helps to reassemble continuous packets streams. it does not support out-of-orders +typedef struct { + uint8_t *packet; // allocated for size during reassemble request. requestor must know the message size. + uint32_t seq; // current seq number. if a packet comes with an unexpected seq - it fails reassemble session. + size_t size; // expected message size. success means that we have received exactly 'size' bytes and have them in 'packet' + size_t size_present; // how many bytes already stored in 'packet' +} t_reassemble; + +// SYN - SYN or SYN/ACK received +// ESTABLISHED - any except SYN or SYN/ACK received +// FIN - FIN or RST received +typedef enum {SYN=0, ESTABLISHED, FIN} t_connstate; +typedef enum {UNKNOWN=0, HTTP, TLS, QUIC, WIREGUARD, DHT} t_l7proto; +typedef struct +{ + struct desync_profile *dp; // desync profile cache + bool dp_search_complete; + bool bCheckDone, bCheckResult, bCheckExcluded; // hostlist check result cache + + // common state + time_t t_start, t_last; + uint64_t pcounter_orig, pcounter_reply; // packet counter + uint64_t pdcounter_orig, pdcounter_reply; // data packet counter (with payload) + uint32_t pos_orig, pos_reply; // TCP: seq_last+payload, ack_last+payload UDP: sum of all seen payload lenghts including current + uint32_t seq_last, ack_last; // TCP: last seen seq and ack UDP: sum of all seen payload lenghts NOT including current + + // tcp only state, not used in udp + t_connstate state; + uint32_t seq0, ack0; // starting seq and ack + uint16_t winsize_orig, winsize_reply; // last seen window size + uint8_t scale_orig, scale_reply; // last seen window scale factor. SCALE_NONE if none + + uint8_t req_retrans_counter; // number of request retransmissions + bool req_seq_present,req_seq_finalized,req_seq_abandoned; + uint32_t req_seq_start,req_seq_end; // sequence interval of the request (to track retransmissions) + + uint8_t autottl; + + bool b_cutoff; // mark for deletion + bool b_wssize_cutoff, b_desync_cutoff; + + t_l7proto l7proto; + char *hostname; + bool hostname_ah_check; // should perform autohostlist checks + + t_reassemble reasm_orig; + struct rawpacket_tailhead delayed; +} t_ctrack; + +typedef struct +{ + t_ctrack track; + UT_hash_handle hh; // makes this structure hashable + t_conn conn; // key +} t_conntrack_pool; +typedef struct +{ + // inactivity time to purge an entry in each connection state + uint32_t timeout_syn,timeout_established,timeout_fin,timeout_udp; + time_t t_purge_interval, t_last_purge; + t_conntrack_pool *pool; +} t_conntrack; + +void ConntrackPoolInit(t_conntrack *p, time_t purge_interval, uint32_t timeout_syn, uint32_t timeout_established, uint32_t timeout_fin, uint32_t timeout_udp); +void ConntrackPoolDestroy(t_conntrack *p); +bool ConntrackPoolFeed(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, size_t len_payload, t_ctrack **ctrack, bool *bReverse); +// do not create, do not update. only find existing +bool ConntrackPoolDoubleSearch(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr, t_ctrack **ctrack, bool *bReverse); +bool ConntrackPoolDrop(t_conntrack *p, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr); +void CaonntrackExtractConn(t_conn *c, bool bReverse, const struct ip *ip, const struct ip6_hdr *ip6, const struct tcphdr *tcphdr, const struct udphdr *udphdr); +void ConntrackPoolDump(const t_conntrack *p); +void ConntrackPoolPurge(t_conntrack *p); +void ConntrackClearHostname(t_ctrack *track); + +bool ReasmInit(t_reassemble *reasm, size_t size_requested, uint32_t seq_start); +bool ReasmResize(t_reassemble *reasm, size_t new_size); +void ReasmClear(t_reassemble *reasm); +// false means reassemble session has failed and we should ReasmClear() it +bool ReasmFeed(t_reassemble *reasm, uint32_t seq, const void *payload, size_t len); +// check if it has enough space to buffer 'len' bytes +bool ReasmHasSpace(t_reassemble *reasm, size_t len); +inline static bool ReasmIsEmpty(t_reassemble *reasm) {return !reasm->size;} +inline static bool ReasmIsFull(t_reassemble *reasm) {return !ReasmIsEmpty(reasm) && (reasm->size==reasm->size_present);} diff --git a/nfq/crypto/aes-gcm.c b/nfq/crypto/aes-gcm.c new file mode 100644 index 0000000..1d0a046 --- /dev/null +++ b/nfq/crypto/aes-gcm.c @@ -0,0 +1,13 @@ +#include "aes-gcm.h" + +int aes_gcm_crypt(int mode, uint8_t *output, const uint8_t *input, size_t input_length, const uint8_t *key, const size_t key_len, const uint8_t *iv, const size_t iv_len, const uint8_t *adata, size_t adata_len, uint8_t *atag, size_t atag_len) +{ + int ret = 0; + gcm_context ctx; + + gcm_setkey(&ctx, key, (const uint)key_len); + ret = gcm_crypt_and_tag(&ctx, mode, iv, iv_len, adata, adata_len, input, output, input_length, atag, atag_len); + gcm_zero_ctx(&ctx); + + return ret; +} diff --git a/nfq/crypto/aes-gcm.h b/nfq/crypto/aes-gcm.h new file mode 100644 index 0000000..d836001 --- /dev/null +++ b/nfq/crypto/aes-gcm.h @@ -0,0 +1,6 @@ +#pragma once + +#include "gcm.h" + +// mode : AES_ENCRYPT, AES_DECRYPT +int aes_gcm_crypt(int mode, uint8_t *output, const uint8_t *input, size_t input_length, const uint8_t *key, const size_t key_len, const uint8_t *iv, const size_t iv_len, const uint8_t *adata, size_t adata_len, uint8_t *atag, size_t atag_len); diff --git a/nfq/crypto/aes.c b/nfq/crypto/aes.c new file mode 100644 index 0000000..1ce55ef --- /dev/null +++ b/nfq/crypto/aes.c @@ -0,0 +1,483 @@ +/****************************************************************************** +* +* THIS SOURCE CODE IS HEREBY PLACED INTO THE PUBLIC DOMAIN FOR THE GOOD OF ALL +* +* This is a simple and straightforward implementation of the AES Rijndael +* 128-bit block cipher designed by Vincent Rijmen and Joan Daemen. The focus +* of this work was correctness & accuracy. It is written in 'C' without any +* particular focus upon optimization or speed. It should be endian (memory +* byte order) neutral since the few places that care are handled explicitly. +* +* This implementation of Rijndael was created by Steven M. Gibson of GRC.com. +* +* It is intended for general purpose use, but was written in support of GRC's +* reference implementation of the SQRL (Secure Quick Reliable Login) client. +* +* See: http://csrc.nist.gov/archive/aes/rijndael/wsdindex.html +* +* NO COPYRIGHT IS CLAIMED IN THIS WORK, HOWEVER, NEITHER IS ANY WARRANTY MADE +* REGARDING ITS FITNESS FOR ANY PARTICULAR PURPOSE. USE IT AT YOUR OWN RISK. +* +*******************************************************************************/ + +#include "aes.h" + +static int aes_tables_inited = 0; // run-once flag for performing key + // expasion table generation (see below) +/* + * The following static local tables must be filled-in before the first use of + * the GCM or AES ciphers. They are used for the AES key expansion/scheduling + * and once built are read-only and thread safe. The "gcm_initialize" function + * must be called once during system initialization to populate these arrays + * for subsequent use by the AES key scheduler. If they have not been built + * before attempted use, an error will be returned to the caller. + * + * NOTE: GCM Encryption/Decryption does NOT REQUIRE AES decryption. Since + * GCM uses AES in counter-mode, where the AES cipher output is XORed with + * the GCM input, we ONLY NEED AES encryption. Thus, to save space AES + * decryption is typically disabled by setting AES_DECRYPTION to 0 in aes.h. + */ + // We always need our forward tables +static uchar FSb[256]; // Forward substitution box (FSb) +static uint32_t FT0[256]; // Forward key schedule assembly tables +static uint32_t FT1[256]; +static uint32_t FT2[256]; +static uint32_t FT3[256]; + +#if AES_DECRYPTION // We ONLY need reverse for decryption +static uchar RSb[256]; // Reverse substitution box (RSb) +static uint32_t RT0[256]; // Reverse key schedule assembly tables +static uint32_t RT1[256]; +static uint32_t RT2[256]; +static uint32_t RT3[256]; +#endif /* AES_DECRYPTION */ + +static uint32_t RCON[10]; // AES round constants + +/* + * Platform Endianness Neutralizing Load and Store Macro definitions + * AES wants platform-neutral Little Endian (LE) byte ordering + */ +#define GET_UINT32_LE(n,b,i) { \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); } + +#define PUT_UINT32_LE(n,b,i) { \ + (b)[(i) ] = (uchar) ( (n) ); \ + (b)[(i) + 1] = (uchar) ( (n) >> 8 ); \ + (b)[(i) + 2] = (uchar) ( (n) >> 16 ); \ + (b)[(i) + 3] = (uchar) ( (n) >> 24 ); } + + /* + * AES forward and reverse encryption round processing macros + */ +#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + X0 = *RK++ ^ FT0[ ( Y0 ) & 0xFF ] ^ \ + FT1[ ( Y1 >> 8 ) & 0xFF ] ^ \ + FT2[ ( Y2 >> 16 ) & 0xFF ] ^ \ + FT3[ ( Y3 >> 24 ) & 0xFF ]; \ + \ + X1 = *RK++ ^ FT0[ ( Y1 ) & 0xFF ] ^ \ + FT1[ ( Y2 >> 8 ) & 0xFF ] ^ \ + FT2[ ( Y3 >> 16 ) & 0xFF ] ^ \ + FT3[ ( Y0 >> 24 ) & 0xFF ]; \ + \ + X2 = *RK++ ^ FT0[ ( Y2 ) & 0xFF ] ^ \ + FT1[ ( Y3 >> 8 ) & 0xFF ] ^ \ + FT2[ ( Y0 >> 16 ) & 0xFF ] ^ \ + FT3[ ( Y1 >> 24 ) & 0xFF ]; \ + \ + X3 = *RK++ ^ FT0[ ( Y3 ) & 0xFF ] ^ \ + FT1[ ( Y0 >> 8 ) & 0xFF ] ^ \ + FT2[ ( Y1 >> 16 ) & 0xFF ] ^ \ + FT3[ ( Y2 >> 24 ) & 0xFF ]; \ +} + +#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + X0 = *RK++ ^ RT0[ ( Y0 ) & 0xFF ] ^ \ + RT1[ ( Y3 >> 8 ) & 0xFF ] ^ \ + RT2[ ( Y2 >> 16 ) & 0xFF ] ^ \ + RT3[ ( Y1 >> 24 ) & 0xFF ]; \ + \ + X1 = *RK++ ^ RT0[ ( Y1 ) & 0xFF ] ^ \ + RT1[ ( Y0 >> 8 ) & 0xFF ] ^ \ + RT2[ ( Y3 >> 16 ) & 0xFF ] ^ \ + RT3[ ( Y2 >> 24 ) & 0xFF ]; \ + \ + X2 = *RK++ ^ RT0[ ( Y2 ) & 0xFF ] ^ \ + RT1[ ( Y1 >> 8 ) & 0xFF ] ^ \ + RT2[ ( Y0 >> 16 ) & 0xFF ] ^ \ + RT3[ ( Y3 >> 24 ) & 0xFF ]; \ + \ + X3 = *RK++ ^ RT0[ ( Y3 ) & 0xFF ] ^ \ + RT1[ ( Y2 >> 8 ) & 0xFF ] ^ \ + RT2[ ( Y1 >> 16 ) & 0xFF ] ^ \ + RT3[ ( Y0 >> 24 ) & 0xFF ]; \ +} + + /* + * These macros improve the readability of the key + * generation initialization code by collapsing + * repetitive common operations into logical pieces. + */ +#define ROTL8(x) ( ( x << 8 ) & 0xFFFFFFFF ) | ( x >> 24 ) +#define XTIME(x) ( ( x << 1 ) ^ ( ( x & 0x80 ) ? 0x1B : 0x00 ) ) +#define MUL(x,y) ( ( x && y ) ? pow[(log[x]+log[y]) % 255] : 0 ) +#define MIX(x,y) { y = ( (y << 1) | (y >> 7) ) & 0xFF; x ^= y; } +#define CPY128 { *RK++ = *SK++; *RK++ = *SK++; \ + *RK++ = *SK++; *RK++ = *SK++; } + + /****************************************************************************** + * + * AES_INIT_KEYGEN_TABLES + * + * Fills the AES key expansion tables allocated above with their static + * data. This is not "per key" data, but static system-wide read-only + * table data. THIS FUNCTION IS NOT THREAD SAFE. It must be called once + * at system initialization to setup the tables for all subsequent use. + * + ******************************************************************************/ +void aes_init_keygen_tables(void) +{ + int i, x, y, z; // general purpose iteration and computation locals + int pow[256]; + int log[256]; + + if (aes_tables_inited) return; + + // fill the 'pow' and 'log' tables over GF(2^8) + for (i = 0, x = 1; i < 256; i++) { + pow[i] = x; + log[x] = i; + x = (x ^ XTIME(x)) & 0xFF; + } + // compute the round constants + for (i = 0, x = 1; i < 10; i++) { + RCON[i] = (uint32_t)x; + x = XTIME(x) & 0xFF; + } + // fill the forward and reverse substitution boxes + FSb[0x00] = 0x63; +#if AES_DECRYPTION // whether AES decryption is supported + RSb[0x63] = 0x00; +#endif /* AES_DECRYPTION */ + + for (i = 1; i < 256; i++) { + x = y = pow[255 - log[i]]; + MIX(x, y); + MIX(x, y); + MIX(x, y); + MIX(x, y); + FSb[i] = (uchar)(x ^= 0x63); +#if AES_DECRYPTION // whether AES decryption is supported + RSb[x] = (uchar)i; +#endif /* AES_DECRYPTION */ + + } + // generate the forward and reverse key expansion tables + for (i = 0; i < 256; i++) { + x = FSb[i]; + y = XTIME(x) & 0xFF; + z = (y ^ x) & 0xFF; + + FT0[i] = ((uint32_t)y) ^ ((uint32_t)x << 8) ^ + ((uint32_t)x << 16) ^ ((uint32_t)z << 24); + + FT1[i] = ROTL8(FT0[i]); + FT2[i] = ROTL8(FT1[i]); + FT3[i] = ROTL8(FT2[i]); + +#if AES_DECRYPTION // whether AES decryption is supported + x = RSb[i]; + + RT0[i] = ((uint32_t)MUL(0x0E, x)) ^ + ((uint32_t)MUL(0x09, x) << 8) ^ + ((uint32_t)MUL(0x0D, x) << 16) ^ + ((uint32_t)MUL(0x0B, x) << 24); + + RT1[i] = ROTL8(RT0[i]); + RT2[i] = ROTL8(RT1[i]); + RT3[i] = ROTL8(RT2[i]); +#endif /* AES_DECRYPTION */ + } + aes_tables_inited = 1; // flag that the tables have been generated +} // to permit subsequent use of the AES cipher + +/****************************************************************************** + * + * AES_SET_ENCRYPTION_KEY + * + * This is called by 'aes_setkey' when we're establishing a key for + * subsequent encryption. We give it a pointer to the encryption + * context, a pointer to the key, and the key's length in bytes. + * Valid lengths are: 16, 24 or 32 bytes (128, 192, 256 bits). + * + ******************************************************************************/ +int aes_set_encryption_key(aes_context *ctx, + const uchar *key, + uint keysize) +{ + uint i; // general purpose iteration local + uint32_t *RK = ctx->rk; // initialize our RoundKey buffer pointer + + for (i = 0; i < (keysize >> 2); i++) { + GET_UINT32_LE(RK[i], key, i << 2); + } + + switch (ctx->rounds) + { + case 10: + for (i = 0; i < 10; i++, RK += 4) { + RK[4] = RK[0] ^ RCON[i] ^ + ((uint32_t)FSb[(RK[3] >> 8) & 0xFF]) ^ + ((uint32_t)FSb[(RK[3] >> 16) & 0xFF] << 8) ^ + ((uint32_t)FSb[(RK[3] >> 24) & 0xFF] << 16) ^ + ((uint32_t)FSb[(RK[3]) & 0xFF] << 24); + + RK[5] = RK[1] ^ RK[4]; + RK[6] = RK[2] ^ RK[5]; + RK[7] = RK[3] ^ RK[6]; + } + break; + + case 12: + for (i = 0; i < 8; i++, RK += 6) { + RK[6] = RK[0] ^ RCON[i] ^ + ((uint32_t)FSb[(RK[5] >> 8) & 0xFF]) ^ + ((uint32_t)FSb[(RK[5] >> 16) & 0xFF] << 8) ^ + ((uint32_t)FSb[(RK[5] >> 24) & 0xFF] << 16) ^ + ((uint32_t)FSb[(RK[5]) & 0xFF] << 24); + + RK[7] = RK[1] ^ RK[6]; + RK[8] = RK[2] ^ RK[7]; + RK[9] = RK[3] ^ RK[8]; + RK[10] = RK[4] ^ RK[9]; + RK[11] = RK[5] ^ RK[10]; + } + break; + + case 14: + for (i = 0; i < 7; i++, RK += 8) { + RK[8] = RK[0] ^ RCON[i] ^ + ((uint32_t)FSb[(RK[7] >> 8) & 0xFF]) ^ + ((uint32_t)FSb[(RK[7] >> 16) & 0xFF] << 8) ^ + ((uint32_t)FSb[(RK[7] >> 24) & 0xFF] << 16) ^ + ((uint32_t)FSb[(RK[7]) & 0xFF] << 24); + + RK[9] = RK[1] ^ RK[8]; + RK[10] = RK[2] ^ RK[9]; + RK[11] = RK[3] ^ RK[10]; + + RK[12] = RK[4] ^ + ((uint32_t)FSb[(RK[11]) & 0xFF]) ^ + ((uint32_t)FSb[(RK[11] >> 8) & 0xFF] << 8) ^ + ((uint32_t)FSb[(RK[11] >> 16) & 0xFF] << 16) ^ + ((uint32_t)FSb[(RK[11] >> 24) & 0xFF] << 24); + + RK[13] = RK[5] ^ RK[12]; + RK[14] = RK[6] ^ RK[13]; + RK[15] = RK[7] ^ RK[14]; + } + break; + + default: + return -1; + } + return(0); +} + +#if AES_DECRYPTION // whether AES decryption is supported + +/****************************************************************************** + * + * AES_SET_DECRYPTION_KEY + * + * This is called by 'aes_setkey' when we're establishing a + * key for subsequent decryption. We give it a pointer to + * the encryption context, a pointer to the key, and the key's + * length in bits. Valid lengths are: 128, 192, or 256 bits. + * + ******************************************************************************/ +int aes_set_decryption_key(aes_context *ctx, + const uchar *key, + uint keysize) +{ + int i, j; + aes_context cty; // a calling aes context for set_encryption_key + uint32_t *RK = ctx->rk; // initialize our RoundKey buffer pointer + uint32_t *SK; + int ret; + + cty.rounds = ctx->rounds; // initialize our local aes context + cty.rk = cty.buf; // round count and key buf pointer + + if ((ret = aes_set_encryption_key(&cty, key, keysize)) != 0) + return(ret); + + SK = cty.rk + cty.rounds * 4; + + CPY128 // copy a 128-bit block from *SK to *RK + + for (i = ctx->rounds - 1, SK -= 8; i > 0; i--, SK -= 8) { + for (j = 0; j < 4; j++, SK++) { + *RK++ = RT0[FSb[(*SK) & 0xFF]] ^ + RT1[FSb[(*SK >> 8) & 0xFF]] ^ + RT2[FSb[(*SK >> 16) & 0xFF]] ^ + RT3[FSb[(*SK >> 24) & 0xFF]]; + } + } + CPY128 // copy a 128-bit block from *SK to *RK + memset(&cty, 0, sizeof(aes_context)); // clear local aes context + return(0); +} + +#endif /* AES_DECRYPTION */ + +/****************************************************************************** + * + * AES_SETKEY + * + * Invoked to establish the key schedule for subsequent encryption/decryption + * + ******************************************************************************/ +int aes_setkey(aes_context *ctx, // AES context provided by our caller + int mode, // ENCRYPT or DECRYPT flag + const uchar *key, // pointer to the key + uint keysize) // key length in bytes +{ + // since table initialization is not thread safe, we could either add + // system-specific mutexes and init the AES key generation tables on + // demand, or ask the developer to simply call "gcm_initialize" once during + // application startup before threading begins. That's what we choose. + if (!aes_tables_inited) return (-1); // fail the call when not inited. + + ctx->mode = mode; // capture the key type we're creating + ctx->rk = ctx->buf; // initialize our round key pointer + + switch (keysize) // set the rounds count based upon the keysize + { + case 16: ctx->rounds = 10; break; // 16-byte, 128-bit key + case 24: ctx->rounds = 12; break; // 24-byte, 192-bit key + case 32: ctx->rounds = 14; break; // 32-byte, 256-bit key + default: return(-1); + } + +#if AES_DECRYPTION + if (mode == DECRYPT) // expand our key for encryption or decryption + return(aes_set_decryption_key(ctx, key, keysize)); + else /* ENCRYPT */ +#endif /* AES_DECRYPTION */ + return(aes_set_encryption_key(ctx, key, keysize)); +} + +/****************************************************************************** + * + * AES_CIPHER + * + * Perform AES encryption and decryption. + * The AES context will have been setup with the encryption mode + * and all keying information appropriate for the task. + * + ******************************************************************************/ +int aes_cipher(aes_context *ctx, + const uchar input[16], + uchar output[16]) +{ + int i; + uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; // general purpose locals + + RK = ctx->rk; + + GET_UINT32_LE(X0, input, 0); X0 ^= *RK++; // load our 128-bit + GET_UINT32_LE(X1, input, 4); X1 ^= *RK++; // input buffer in a storage + GET_UINT32_LE(X2, input, 8); X2 ^= *RK++; // memory endian-neutral way + GET_UINT32_LE(X3, input, 12); X3 ^= *RK++; + +#if AES_DECRYPTION // whether AES decryption is supported + + if (ctx->mode == DECRYPT) + { + for (i = (ctx->rounds >> 1) - 1; i > 0; i--) + { + AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); + AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); + } + + AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); + + X0 = *RK++ ^ \ + ((uint32_t)RSb[(Y0) & 0xFF]) ^ + ((uint32_t)RSb[(Y3 >> 8) & 0xFF] << 8) ^ + ((uint32_t)RSb[(Y2 >> 16) & 0xFF] << 16) ^ + ((uint32_t)RSb[(Y1 >> 24) & 0xFF] << 24); + + X1 = *RK++ ^ \ + ((uint32_t)RSb[(Y1) & 0xFF]) ^ + ((uint32_t)RSb[(Y0 >> 8) & 0xFF] << 8) ^ + ((uint32_t)RSb[(Y3 >> 16) & 0xFF] << 16) ^ + ((uint32_t)RSb[(Y2 >> 24) & 0xFF] << 24); + + X2 = *RK++ ^ \ + ((uint32_t)RSb[(Y2) & 0xFF]) ^ + ((uint32_t)RSb[(Y1 >> 8) & 0xFF] << 8) ^ + ((uint32_t)RSb[(Y0 >> 16) & 0xFF] << 16) ^ + ((uint32_t)RSb[(Y3 >> 24) & 0xFF] << 24); + + X3 = *RK++ ^ \ + ((uint32_t)RSb[(Y3) & 0xFF]) ^ + ((uint32_t)RSb[(Y2 >> 8) & 0xFF] << 8) ^ + ((uint32_t)RSb[(Y1 >> 16) & 0xFF] << 16) ^ + ((uint32_t)RSb[(Y0 >> 24) & 0xFF] << 24); + } + else /* ENCRYPT */ + { +#endif /* AES_DECRYPTION */ + + for (i = (ctx->rounds >> 1) - 1; i > 0; i--) + { + AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); + AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); + } + + AES_FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); + + X0 = *RK++ ^ \ + ((uint32_t)FSb[(Y0) & 0xFF]) ^ + ((uint32_t)FSb[(Y1 >> 8) & 0xFF] << 8) ^ + ((uint32_t)FSb[(Y2 >> 16) & 0xFF] << 16) ^ + ((uint32_t)FSb[(Y3 >> 24) & 0xFF] << 24); + + X1 = *RK++ ^ \ + ((uint32_t)FSb[(Y1) & 0xFF]) ^ + ((uint32_t)FSb[(Y2 >> 8) & 0xFF] << 8) ^ + ((uint32_t)FSb[(Y3 >> 16) & 0xFF] << 16) ^ + ((uint32_t)FSb[(Y0 >> 24) & 0xFF] << 24); + + X2 = *RK++ ^ \ + ((uint32_t)FSb[(Y2) & 0xFF]) ^ + ((uint32_t)FSb[(Y3 >> 8) & 0xFF] << 8) ^ + ((uint32_t)FSb[(Y0 >> 16) & 0xFF] << 16) ^ + ((uint32_t)FSb[(Y1 >> 24) & 0xFF] << 24); + + X3 = *RK++ ^ \ + ((uint32_t)FSb[(Y3) & 0xFF]) ^ + ((uint32_t)FSb[(Y0 >> 8) & 0xFF] << 8) ^ + ((uint32_t)FSb[(Y1 >> 16) & 0xFF] << 16) ^ + ((uint32_t)FSb[(Y2 >> 24) & 0xFF] << 24); + +#if AES_DECRYPTION // whether AES decryption is supported + } +#endif /* AES_DECRYPTION */ + + PUT_UINT32_LE(X0, output, 0); + PUT_UINT32_LE(X1, output, 4); + PUT_UINT32_LE(X2, output, 8); + PUT_UINT32_LE(X3, output, 12); + + return(0); +} +/* end of aes.c */ diff --git a/nfq/crypto/aes.h b/nfq/crypto/aes.h new file mode 100644 index 0000000..b04724d --- /dev/null +++ b/nfq/crypto/aes.h @@ -0,0 +1,78 @@ +/****************************************************************************** +* +* THIS SOURCE CODE IS HEREBY PLACED INTO THE PUBLIC DOMAIN FOR THE GOOD OF ALL +* +* This is a simple and straightforward implementation of the AES Rijndael +* 128-bit block cipher designed by Vincent Rijmen and Joan Daemen. The focus +* of this work was correctness & accuracy. It is written in 'C' without any +* particular focus upon optimization or speed. It should be endian (memory +* byte order) neutral since the few places that care are handled explicitly. +* +* This implementation of Rijndael was created by Steven M. Gibson of GRC.com. +* +* It is intended for general purpose use, but was written in support of GRC's +* reference implementation of the SQRL (Secure Quick Reliable Login) client. +* +* See: http://csrc.nist.gov/archive/aes/rijndael/wsdindex.html +* +* NO COPYRIGHT IS CLAIMED IN THIS WORK, HOWEVER, NEITHER IS ANY WARRANTY MADE +* REGARDING ITS FITNESS FOR ANY PARTICULAR PURPOSE. USE IT AT YOUR OWN RISK. +* +*******************************************************************************/ + +#pragma once + +/******************************************************************************/ +#define AES_DECRYPTION 0 // whether AES decryption is supported +/******************************************************************************/ + +#include + +#define AES_ENCRYPT 1 // specify whether we're encrypting +#define AES_DECRYPT 0 // or decrypting + +#if defined(_MSC_VER) +#include +typedef UINT32 uint32_t; +#else +#include +#endif + +typedef unsigned char uchar; // add some convienent shorter types +typedef unsigned int uint; + + +/****************************************************************************** + * AES_INIT_KEYGEN_TABLES : MUST be called once before any AES use + ******************************************************************************/ +void aes_init_keygen_tables(void); + + +/****************************************************************************** + * AES_CONTEXT : cipher context / holds inter-call data + ******************************************************************************/ +typedef struct { + int mode; // 1 for Encryption, 0 for Decryption + int rounds; // keysize-based rounds count + uint32_t *rk; // pointer to current round key + uint32_t buf[68]; // key expansion buffer +} aes_context; + + +/****************************************************************************** + * AES_SETKEY : called to expand the key for encryption or decryption + ******************************************************************************/ +int aes_setkey(aes_context *ctx, // pointer to context + int mode, // 1 or 0 for Encrypt/Decrypt + const uchar *key, // AES input key + uint keysize); // size in bytes (must be 16, 24, 32 for + // 128, 192 or 256-bit keys respectively) + // returns 0 for success + +/****************************************************************************** + * AES_CIPHER : called to encrypt or decrypt ONE 128-bit block of data + ******************************************************************************/ +int aes_cipher(aes_context *ctx, // pointer to context + const uchar input[16], // 128-bit block to en/decipher + uchar output[16]); // 128-bit output result block + // returns 0 for success diff --git a/nfq/crypto/gcm.c b/nfq/crypto/gcm.c new file mode 100644 index 0000000..92a6e8f --- /dev/null +++ b/nfq/crypto/gcm.c @@ -0,0 +1,511 @@ +/****************************************************************************** +* +* THIS SOURCE CODE IS HEREBY PLACED INTO THE PUBLIC DOMAIN FOR THE GOOD OF ALL +* +* This is a simple and straightforward implementation of AES-GCM authenticated +* encryption. The focus of this work was correctness & accuracy. It is written +* in straight 'C' without any particular focus upon optimization or speed. It +* should be endian (memory byte order) neutral since the few places that care +* are handled explicitly. +* +* This implementation of AES-GCM was created by Steven M. Gibson of GRC.com. +* +* It is intended for general purpose use, but was written in support of GRC's +* reference implementation of the SQRL (Secure Quick Reliable Login) client. +* +* See: http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf +* http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/ +* gcm/gcm-revised-spec.pdf +* +* NO COPYRIGHT IS CLAIMED IN THIS WORK, HOWEVER, NEITHER IS ANY WARRANTY MADE +* REGARDING ITS FITNESS FOR ANY PARTICULAR PURPOSE. USE IT AT YOUR OWN RISK. +* +*******************************************************************************/ + +#include "gcm.h" +#include "aes.h" + +/****************************************************************************** + * ==== IMPLEMENTATION WARNING ==== + * + * This code was developed for use within SQRL's fixed environmnent. Thus, it + * is somewhat less "general purpose" than it would be if it were designed as + * a general purpose AES-GCM library. Specifically, it bothers with almost NO + * error checking on parameter limits, buffer bounds, etc. It assumes that it + * is being invoked by its author or by someone who understands the values it + * expects to receive. Its behavior will be undefined otherwise. + * + * All functions that might fail are defined to return 'ints' to indicate a + * problem. Most do not do so now. But this allows for error propagation out + * of internal functions if robust error checking should ever be desired. + * + ******************************************************************************/ + + /* Calculating the "GHASH" + * + * There are many ways of calculating the so-called GHASH in software, each with + * a traditional size vs performance tradeoff. The GHASH (Galois field hash) is + * an intriguing construction which takes two 128-bit strings (also the cipher's + * block size and the fundamental operation size for the system) and hashes them + * into a third 128-bit result. + * + * Many implementation solutions have been worked out that use large precomputed + * table lookups in place of more time consuming bit fiddling, and this approach + * can be scaled easily upward or downward as needed to change the time/space + * tradeoff. It's been studied extensively and there's a solid body of theory and + * practice. For example, without using any lookup tables an implementation + * might obtain 119 cycles per byte throughput, whereas using a simple, though + * large, key-specific 64 kbyte 8-bit lookup table the performance jumps to 13 + * cycles per byte. + * + * And Intel's processors have, since 2010, included an instruction which does + * the entire 128x128->128 bit job in just several 64x64->128 bit pieces. + * + * Since SQRL is interactive, and only processing a few 128-bit blocks, I've + * settled upon a relatively slower but appealing small-table compromise which + * folds a bunch of not only time consuming but also bit twiddling into a simple + * 16-entry table which is attributed to Victor Shoup's 1996 work while at + * Bellcore: "On Fast and Provably Secure MessageAuthentication Based on + * Universal Hashing." See: http://www.shoup.net/papers/macs.pdf + * See, also section 4.1 of the "gcm-revised-spec" cited above. + */ + + /* + * This 16-entry table of pre-computed constants is used by the + * GHASH multiplier to improve over a strictly table-free but + * significantly slower 128x128 bit multiple within GF(2^128). + */ +static const uint64_t last4[16] = { + 0x0000, 0x1c20, 0x3840, 0x2460, 0x7080, 0x6ca0, 0x48c0, 0x54e0, + 0xe100, 0xfd20, 0xd940, 0xc560, 0x9180, 0x8da0, 0xa9c0, 0xb5e0 }; + +/* + * Platform Endianness Neutralizing Load and Store Macro definitions + * GCM wants platform-neutral Big Endian (BE) byte ordering + */ +#define GET_UINT32_BE(n,b,i) { \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); } + +#define PUT_UINT32_BE(n,b,i) { \ + (b)[(i) ] = (uchar) ( (n) >> 24 ); \ + (b)[(i) + 1] = (uchar) ( (n) >> 16 ); \ + (b)[(i) + 2] = (uchar) ( (n) >> 8 ); \ + (b)[(i) + 3] = (uchar) ( (n) ); } + + + /****************************************************************************** + * + * GCM_INITIALIZE + * + * Must be called once to initialize the GCM library. + * + * At present, this only calls the AES keygen table generator, which expands + * the AES keying tables for use. This is NOT A THREAD-SAFE function, so it + * MUST be called during system initialization before a multi-threading + * environment is running. + * + ******************************************************************************/ +int gcm_initialize(void) +{ + aes_init_keygen_tables(); + return(0); +} + + +/****************************************************************************** + * + * GCM_MULT + * + * Performs a GHASH operation on the 128-bit input vector 'x', setting + * the 128-bit output vector to 'x' times H using our precomputed tables. + * 'x' and 'output' are seen as elements of GCM's GF(2^128) Galois field. + * + ******************************************************************************/ +static void gcm_mult(gcm_context *ctx, // pointer to established context + const uchar x[16], // pointer to 128-bit input vector + uchar output[16]) // pointer to 128-bit output vector +{ + int i; + uchar lo, hi, rem; + uint64_t zh, zl; + + lo = (uchar)(x[15] & 0x0f); + hi = (uchar)(x[15] >> 4); + zh = ctx->HH[lo]; + zl = ctx->HL[lo]; + + for (i = 15; i >= 0; i--) { + lo = (uchar)(x[i] & 0x0f); + hi = (uchar)(x[i] >> 4); + + if (i != 15) { + rem = (uchar)(zl & 0x0f); + zl = (zh << 60) | (zl >> 4); + zh = (zh >> 4); + zh ^= (uint64_t)last4[rem] << 48; + zh ^= ctx->HH[lo]; + zl ^= ctx->HL[lo]; + } + rem = (uchar)(zl & 0x0f); + zl = (zh << 60) | (zl >> 4); + zh = (zh >> 4); + zh ^= (uint64_t)last4[rem] << 48; + zh ^= ctx->HH[hi]; + zl ^= ctx->HL[hi]; + } + PUT_UINT32_BE(zh >> 32, output, 0); + PUT_UINT32_BE(zh, output, 4); + PUT_UINT32_BE(zl >> 32, output, 8); + PUT_UINT32_BE(zl, output, 12); +} + + +/****************************************************************************** + * + * GCM_SETKEY + * + * This is called to set the AES-GCM key. It initializes the AES key + * and populates the gcm context's pre-calculated HTables. + * + ******************************************************************************/ +int gcm_setkey(gcm_context *ctx, // pointer to caller-provided gcm context + const uchar *key, // pointer to the AES encryption key + const uint keysize) // size in bytes (must be 16, 24, 32 for + // 128, 192 or 256-bit keys respectively) +{ + int ret, i, j; + uint64_t hi, lo; + uint64_t vl, vh; + unsigned char h[16]; + + memset(ctx, 0, sizeof(gcm_context)); // zero caller-provided GCM context + memset(h, 0, 16); // initialize the block to encrypt + + // encrypt the null 128-bit block to generate a key-based value + // which is then used to initialize our GHASH lookup tables + if ((ret = aes_setkey(&ctx->aes_ctx, AES_ENCRYPT, key, keysize)) != 0) + return(ret); + if ((ret = aes_cipher(&ctx->aes_ctx, h, h)) != 0) + return(ret); + + GET_UINT32_BE(hi, h, 0); // pack h as two 64-bit ints, big-endian + GET_UINT32_BE(lo, h, 4); + vh = (uint64_t)hi << 32 | lo; + + GET_UINT32_BE(hi, h, 8); + GET_UINT32_BE(lo, h, 12); + vl = (uint64_t)hi << 32 | lo; + + ctx->HL[8] = vl; // 8 = 1000 corresponds to 1 in GF(2^128) + ctx->HH[8] = vh; + ctx->HH[0] = 0; // 0 corresponds to 0 in GF(2^128) + ctx->HL[0] = 0; + + for (i = 4; i > 0; i >>= 1) { + uint32_t T = (uint32_t)(vl & 1) * 0xe1000000U; + vl = (vh << 63) | (vl >> 1); + vh = (vh >> 1) ^ ((uint64_t)T << 32); + ctx->HL[i] = vl; + ctx->HH[i] = vh; + } + for (i = 2; i < 16; i <<= 1) { + uint64_t *HiL = ctx->HL + i, *HiH = ctx->HH + i; + vh = *HiH; + vl = *HiL; + for (j = 1; j < i; j++) { + HiH[j] = vh ^ ctx->HH[j]; + HiL[j] = vl ^ ctx->HL[j]; + } + } + return(0); +} + + +/****************************************************************************** + * + * GCM processing occurs four phases: SETKEY, START, UPDATE and FINISH. + * + * SETKEY: + * + * START: Sets the Encryption/Decryption mode. + * Accepts the initialization vector and additional data. + * + * UPDATE: Encrypts or decrypts the plaintext or ciphertext. + * + * FINISH: Performs a final GHASH to generate the authentication tag. + * + ****************************************************************************** + * + * GCM_START + * + * Given a user-provided GCM context, this initializes it, sets the encryption + * mode, and preprocesses the initialization vector and additional AEAD data. + * + ******************************************************************************/ +int gcm_start(gcm_context *ctx, // pointer to user-provided GCM context + int mode, // GCM_ENCRYPT or GCM_DECRYPT + const uchar *iv, // pointer to initialization vector + size_t iv_len, // IV length in bytes (should == 12) + const uchar *add, // ptr to additional AEAD data (NULL if none) + size_t add_len) // length of additional AEAD data (bytes) +{ + int ret; // our error return if the AES encrypt fails + uchar work_buf[16]; // XOR source built from provided IV if len != 16 + const uchar *p; // general purpose array pointer + size_t use_len; // byte count to process, up to 16 bytes + size_t i; // local loop iterator + + // since the context might be reused under the same key + // we zero the working buffers for this next new process + memset(ctx->y, 0x00, sizeof(ctx->y)); + memset(ctx->buf, 0x00, sizeof(ctx->buf)); + ctx->len = 0; + ctx->add_len = 0; + + ctx->mode = mode; // set the GCM encryption/decryption mode + ctx->aes_ctx.mode = AES_ENCRYPT; // GCM *always* runs AES in ENCRYPTION mode + + if (iv_len == 12) { // GCM natively uses a 12-byte, 96-bit IV + memcpy(ctx->y, iv, iv_len); // copy the IV to the top of the 'y' buff + ctx->y[15] = 1; // start "counting" from 1 (not 0) + } + else // if we don't have a 12-byte IV, we GHASH whatever we've been given + { + memset(work_buf, 0x00, 16); // clear the working buffer + PUT_UINT32_BE(iv_len * 8, work_buf, 12); // place the IV into buffer + + p = iv; + while (iv_len > 0) { + use_len = (iv_len < 16) ? iv_len : 16; + for (i = 0; i < use_len; i++) ctx->y[i] ^= p[i]; + gcm_mult(ctx, ctx->y, ctx->y); + iv_len -= use_len; + p += use_len; + } + for (i = 0; i < 16; i++) ctx->y[i] ^= work_buf[i]; + gcm_mult(ctx, ctx->y, ctx->y); + } + if ((ret = aes_cipher(&ctx->aes_ctx, ctx->y, ctx->base_ectr)) != 0) + return(ret); + + ctx->add_len = add_len; + p = add; + while (add_len > 0) { + use_len = (add_len < 16) ? add_len : 16; + for (i = 0; i < use_len; i++) ctx->buf[i] ^= p[i]; + gcm_mult(ctx, ctx->buf, ctx->buf); + add_len -= use_len; + p += use_len; + } + return(0); +} + +/****************************************************************************** + * + * GCM_UPDATE + * + * This is called once or more to process bulk plaintext or ciphertext data. + * We give this some number of bytes of input and it returns the same number + * of output bytes. If called multiple times (which is fine) all but the final + * invocation MUST be called with length mod 16 == 0. (Only the final call can + * have a partial block length of < 128 bits.) + * + ******************************************************************************/ +int gcm_update(gcm_context *ctx, // pointer to user-provided GCM context + size_t length, // length, in bytes, of data to process + const uchar *input, // pointer to source data + uchar *output) // pointer to destination data +{ + int ret; // our error return if the AES encrypt fails + uchar ectr[16]; // counter-mode cipher output for XORing + size_t use_len; // byte count to process, up to 16 bytes + size_t i; // local loop iterator + + ctx->len += length; // bump the GCM context's running length count + + while (length > 0) { + // clamp the length to process at 16 bytes + use_len = (length < 16) ? length : 16; + + // increment the context's 128-bit IV||Counter 'y' vector + for (i = 16; i > 12; i--) if (++ctx->y[i - 1] != 0) break; + + // encrypt the context's 'y' vector under the established key + if ((ret = aes_cipher(&ctx->aes_ctx, ctx->y, ectr)) != 0) + return(ret); + + // encrypt or decrypt the input to the output + if (ctx->mode == AES_ENCRYPT) + { + for (i = 0; i < use_len; i++) { + // XOR the cipher's ouptut vector (ectr) with our input + output[i] = (uchar)(ectr[i] ^ input[i]); + // now we mix in our data into the authentication hash. + // if we're ENcrypting we XOR in the post-XOR (output) + // results, but if we're DEcrypting we XOR in the input + // data + ctx->buf[i] ^= output[i]; + } + } + else + { + for (i = 0; i < use_len; i++) { + // but if we're DEcrypting we XOR in the input data first, + // i.e. before saving to ouput data, otherwise if the input + // and output buffer are the same (inplace decryption) we + // would not get the correct auth tag + + ctx->buf[i] ^= input[i]; + + // XOR the cipher's ouptut vector (ectr) with our input + output[i] = (uchar)(ectr[i] ^ input[i]); + } + } + gcm_mult(ctx, ctx->buf, ctx->buf); // perform a GHASH operation + + length -= use_len; // drop the remaining byte count to process + input += use_len; // bump our input pointer forward + output += use_len; // bump our output pointer forward + } + return(0); +} + +/****************************************************************************** + * + * GCM_FINISH + * + * This is called once after all calls to GCM_UPDATE to finalize the GCM. + * It performs the final GHASH to produce the resulting authentication TAG. + * + ******************************************************************************/ +int gcm_finish(gcm_context *ctx, // pointer to user-provided GCM context + uchar *tag, // pointer to buffer which receives the tag + size_t tag_len) // length, in bytes, of the tag-receiving buf +{ + uchar work_buf[16]; + uint64_t orig_len = ctx->len * 8; + uint64_t orig_add_len = ctx->add_len * 8; + size_t i; + + if (tag_len != 0) memcpy(tag, ctx->base_ectr, tag_len); + + if (orig_len || orig_add_len) { + memset(work_buf, 0x00, 16); + + PUT_UINT32_BE((orig_add_len >> 32), work_buf, 0); + PUT_UINT32_BE((orig_add_len), work_buf, 4); + PUT_UINT32_BE((orig_len >> 32), work_buf, 8); + PUT_UINT32_BE((orig_len), work_buf, 12); + + for (i = 0; i < 16; i++) ctx->buf[i] ^= work_buf[i]; + gcm_mult(ctx, ctx->buf, ctx->buf); + for (i = 0; i < tag_len; i++) tag[i] ^= ctx->buf[i]; + } + return(0); +} + + +/****************************************************************************** + * + * GCM_CRYPT_AND_TAG + * + * This either encrypts or decrypts the user-provided data and, either + * way, generates an authentication tag of the requested length. It must be + * called with a GCM context whose key has already been set with GCM_SETKEY. + * + * The user would typically call this explicitly to ENCRYPT a buffer of data + * and optional associated data, and produce its an authentication tag. + * + * To reverse the process the user would typically call the companion + * GCM_AUTH_DECRYPT function to decrypt data and verify a user-provided + * authentication tag. The GCM_AUTH_DECRYPT function calls this function + * to perform its decryption and tag generation, which it then compares. + * + ******************************************************************************/ +int gcm_crypt_and_tag( + gcm_context *ctx, // gcm context with key already setup + int mode, // cipher direction: GCM_ENCRYPT or GCM_DECRYPT + const uchar *iv, // pointer to the 12-byte initialization vector + size_t iv_len, // byte length if the IV. should always be 12 + const uchar *add, // pointer to the non-ciphered additional data + size_t add_len, // byte length of the additional AEAD data + const uchar *input, // pointer to the cipher data source + uchar *output, // pointer to the cipher data destination + size_t length, // byte length of the cipher data + uchar *tag, // pointer to the tag to be generated + size_t tag_len) // byte length of the tag to be generated +{ /* + assuming that the caller has already invoked gcm_setkey to + prepare the gcm context with the keying material, we simply + invoke each of the three GCM sub-functions in turn... + */ + gcm_start(ctx, mode, iv, iv_len, add, add_len); + gcm_update(ctx, length, input, output); + gcm_finish(ctx, tag, tag_len); + return(0); +} + + +/****************************************************************************** + * + * GCM_AUTH_DECRYPT + * + * This DECRYPTS a user-provided data buffer with optional associated data. + * It then verifies a user-supplied authentication tag against the tag just + * re-created during decryption to verify that the data has not been altered. + * + * This function calls GCM_CRYPT_AND_TAG (above) to perform the decryption + * and authentication tag generation. + * + ******************************************************************************/ +int gcm_auth_decrypt( + gcm_context *ctx, // gcm context with key already setup + const uchar *iv, // pointer to the 12-byte initialization vector + size_t iv_len, // byte length if the IV. should always be 12 + const uchar *add, // pointer to the non-ciphered additional data + size_t add_len, // byte length of the additional AEAD data + const uchar *input, // pointer to the cipher data source + uchar *output, // pointer to the cipher data destination + size_t length, // byte length of the cipher data + const uchar *tag, // pointer to the tag to be authenticated + size_t tag_len) // byte length of the tag <= 16 +{ + uchar check_tag[16]; // the tag generated and returned by decryption + int diff; // an ORed flag to detect authentication errors + size_t i; // our local iterator + /* + we use GCM_DECRYPT_AND_TAG (above) to perform our decryption + (which is an identical XORing to reverse the previous one) + and also to re-generate the matching authentication tag + */ + gcm_crypt_and_tag(ctx, AES_DECRYPT, iv, iv_len, add, add_len, + input, output, length, check_tag, tag_len); + + // now we verify the authentication tag in 'constant time' + for (diff = 0, i = 0; i < tag_len; i++) + diff |= tag[i] ^ check_tag[i]; + + if (diff != 0) { // see whether any bits differed? + memset(output, 0, length); // if so... wipe the output data + return(GCM_AUTH_FAILURE); // return GCM_AUTH_FAILURE + } + return(0); +} + +/****************************************************************************** + * + * GCM_ZERO_CTX + * + * The GCM context contains both the GCM context and the AES context. + * This includes keying and key-related material which is security- + * sensitive, so it MUST be zeroed after use. This function does that. + * + ******************************************************************************/ +void gcm_zero_ctx(gcm_context *ctx) +{ + // zero the context originally provided to us + memset(ctx, 0, sizeof(gcm_context)); +} diff --git a/nfq/crypto/gcm.h b/nfq/crypto/gcm.h new file mode 100644 index 0000000..42adad9 --- /dev/null +++ b/nfq/crypto/gcm.h @@ -0,0 +1,183 @@ +/****************************************************************************** +* +* THIS SOURCE CODE IS HEREBY PLACED INTO THE PUBLIC DOMAIN FOR THE GOOD OF ALL +* +* This is a simple and straightforward implementation of AES-GCM authenticated +* encryption. The focus of this work was correctness & accuracy. It is written +* in straight 'C' without any particular focus upon optimization or speed. It +* should be endian (memory byte order) neutral since the few places that care +* are handled explicitly. +* +* This implementation of AES-GCM was created by Steven M. Gibson of GRC.com. +* +* It is intended for general purpose use, but was written in support of GRC's +* reference implementation of the SQRL (Secure Quick Reliable Login) client. +* +* See: http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf +* http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/ \ +* gcm/gcm-revised-spec.pdf +* +* NO COPYRIGHT IS CLAIMED IN THIS WORK, HOWEVER, NEITHER IS ANY WARRANTY MADE +* REGARDING ITS FITNESS FOR ANY PARTICULAR PURPOSE. USE IT AT YOUR OWN RISK. +* +*******************************************************************************/ +#pragma once + +#define GCM_AUTH_FAILURE 0x55555555 // authentication failure + +#include "aes.h" // gcm_context includes aes_context + +#if defined(_MSC_VER) +#include +typedef unsigned int size_t;// use the right type for length declarations +typedef UINT32 uint32_t; +typedef UINT64 uint64_t; +#else +#include +#endif + + +/****************************************************************************** + * GCM_CONTEXT : GCM context / holds keytables, instance data, and AES ctx + ******************************************************************************/ +typedef struct { + int mode; // cipher direction: encrypt/decrypt + uint64_t len; // cipher data length processed so far + uint64_t add_len; // total add data length + uint64_t HL[16]; // precalculated lo-half HTable + uint64_t HH[16]; // precalculated hi-half HTable + uchar base_ectr[16]; // first counter-mode cipher output for tag + uchar y[16]; // the current cipher-input IV|Counter value + uchar buf[16]; // buf working value + aes_context aes_ctx; // cipher context used +} gcm_context; + + +/****************************************************************************** + * GCM_CONTEXT : MUST be called once before ANY use of this library + ******************************************************************************/ +int gcm_initialize(void); + + +/****************************************************************************** + * GCM_SETKEY : sets the GCM (and AES) keying material for use + ******************************************************************************/ +int gcm_setkey(gcm_context *ctx, // caller-provided context ptr + const uchar *key, // pointer to cipher key + const uint keysize // size in bytes (must be 16, 24, 32 for + // 128, 192 or 256-bit keys respectively) +); // returns 0 for success + + +/****************************************************************************** + * + * GCM_CRYPT_AND_TAG + * + * This either encrypts or decrypts the user-provided data and, either + * way, generates an authentication tag of the requested length. It must be + * called with a GCM context whose key has already been set with GCM_SETKEY. + * + * The user would typically call this explicitly to ENCRYPT a buffer of data + * and optional associated data, and produce its an authentication tag. + * + * To reverse the process the user would typically call the companion + * GCM_AUTH_DECRYPT function to decrypt data and verify a user-provided + * authentication tag. The GCM_AUTH_DECRYPT function calls this function + * to perform its decryption and tag generation, which it then compares. + * + ******************************************************************************/ +int gcm_crypt_and_tag( + gcm_context *ctx, // gcm context with key already setup + int mode, // cipher direction: ENCRYPT (1) or DECRYPT (0) + const uchar *iv, // pointer to the 12-byte initialization vector + size_t iv_len, // byte length if the IV. should always be 12 + const uchar *add, // pointer to the non-ciphered additional data + size_t add_len, // byte length of the additional AEAD data + const uchar *input, // pointer to the cipher data source + uchar *output, // pointer to the cipher data destination + size_t length, // byte length of the cipher data + uchar *tag, // pointer to the tag to be generated + size_t tag_len); // byte length of the tag to be generated + + +/****************************************************************************** + * + * GCM_AUTH_DECRYPT + * + * This DECRYPTS a user-provided data buffer with optional associated data. + * It then verifies a user-supplied authentication tag against the tag just + * re-created during decryption to verify that the data has not been altered. + * + * This function calls GCM_CRYPT_AND_TAG (above) to perform the decryption + * and authentication tag generation. + * + ******************************************************************************/ +int gcm_auth_decrypt( + gcm_context *ctx, // gcm context with key already setup + const uchar *iv, // pointer to the 12-byte initialization vector + size_t iv_len, // byte length if the IV. should always be 12 + const uchar *add, // pointer to the non-ciphered additional data + size_t add_len, // byte length of the additional AEAD data + const uchar *input, // pointer to the cipher data source + uchar *output, // pointer to the cipher data destination + size_t length, // byte length of the cipher data + const uchar *tag, // pointer to the tag to be authenticated + size_t tag_len); // byte length of the tag <= 16 + + +/****************************************************************************** + * + * GCM_START + * + * Given a user-provided GCM context, this initializes it, sets the encryption + * mode, and preprocesses the initialization vector and additional AEAD data. + * + ******************************************************************************/ +int gcm_start(gcm_context *ctx, // pointer to user-provided GCM context + int mode, // ENCRYPT (1) or DECRYPT (0) + const uchar *iv, // pointer to initialization vector + size_t iv_len, // IV length in bytes (should == 12) + const uchar *add, // pointer to additional AEAD data (NULL if none) + size_t add_len); // length of additional AEAD data (bytes) + + +/****************************************************************************** + * + * GCM_UPDATE + * + * This is called once or more to process bulk plaintext or ciphertext data. + * We give this some number of bytes of input and it returns the same number + * of output bytes. If called multiple times (which is fine) all but the final + * invocation MUST be called with length mod 16 == 0. (Only the final call can + * have a partial block length of < 128 bits.) + * + ******************************************************************************/ +int gcm_update(gcm_context *ctx, // pointer to user-provided GCM context + size_t length, // length, in bytes, of data to process + const uchar *input, // pointer to source data + uchar *output); // pointer to destination data + + +/****************************************************************************** + * + * GCM_FINISH + * + * This is called once after all calls to GCM_UPDATE to finalize the GCM. + * It performs the final GHASH to produce the resulting authentication TAG. + * + ******************************************************************************/ +int gcm_finish(gcm_context *ctx, // pointer to user-provided GCM context + uchar *tag, // ptr to tag buffer - NULL if tag_len = 0 + size_t tag_len); // length, in bytes, of the tag-receiving buf + + +/****************************************************************************** + * + * GCM_ZERO_CTX + * + * The GCM context contains both the GCM context and the AES context. + * This includes keying and key-related material which is security- + * sensitive, so it MUST be zeroed after use. This function does that. + * + ******************************************************************************/ +void gcm_zero_ctx(gcm_context *ctx); diff --git a/nfq/crypto/hkdf.c b/nfq/crypto/hkdf.c new file mode 100644 index 0000000..266cb37 --- /dev/null +++ b/nfq/crypto/hkdf.c @@ -0,0 +1,337 @@ +/**************************** hkdf.c ***************************/ +/***************** See RFC 6234 for details. *******************/ +/* Copyright (c) 2011 IETF Trust and the persons identified as */ +/* authors of the code. All rights reserved. */ +/* See sha.h for terms of use and redistribution. */ + +/* + * Description: + * This file implements the HKDF algorithm (HMAC-based + * Extract-and-Expand Key Derivation Function, RFC 5869), + * expressed in terms of the various SHA algorithms. + */ + +#include "sha.h" +#include +#include + + /* + * hkdf + * + * Description: + * This function will generate keying material using HKDF. + * + * Parameters: + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * salt[ ]: [in] + * The optional salt value (a non-secret random value); + * if not provided (salt == NULL), it is set internally + * to a string of HashLen(whichSha) zeros. + * salt_len: [in] + * The length of the salt value. (Ignored if salt == NULL.) + * ikm[ ]: [in] + * Input keying material. + * ikm_len: [in] + * The length of the input keying material. + * info[ ]: [in] + * The optional context and application specific information. + * If info == NULL or a zero-length string, it is ignored. + * info_len: [in] + * The length of the optional context and application specific + * information. (Ignored if info == NULL.) + * okm[ ]: [out] + * Where the HKDF is to be stored. + * okm_len: [in] + * The length of the buffer to hold okm. + * okm_len must be <= 255 * USHABlockSize(whichSha) + * + * Notes: + * Calls hkdfExtract() and hkdfExpand(). + * + * Returns: + * sha Error Code. + * + */ +int hkdf(SHAversion whichSha, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + const unsigned char *info, size_t info_len, + uint8_t okm[], size_t okm_len) +{ + uint8_t prk[USHAMaxHashSize]; + return hkdfExtract(whichSha, salt, salt_len, ikm, ikm_len, prk) || + hkdfExpand(whichSha, prk, USHAHashSize(whichSha), info, + info_len, okm, okm_len); +} + +/* + * hkdfExtract + * + * Description: + * This function will perform HKDF extraction. + * + * Parameters: + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * salt[ ]: [in] + * The optional salt value (a non-secret random value); + * if not provided (salt == NULL), it is set internally + * to a string of HashLen(whichSha) zeros. + * salt_len: [in] + * The length of the salt value. (Ignored if salt == NULL.) + * ikm[ ]: [in] + * Input keying material. + * ikm_len: [in] + * The length of the input keying material. + * prk[ ]: [out] + * Array where the HKDF extraction is to be stored. + * Must be larger than USHAHashSize(whichSha); + * + * Returns: + * sha Error Code. + * + */ +int hkdfExtract(SHAversion whichSha, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + uint8_t prk[USHAMaxHashSize]) +{ + unsigned char nullSalt[USHAMaxHashSize]; + if (salt == 0) { + salt = nullSalt; + salt_len = USHAHashSize(whichSha); + memset(nullSalt, '\0', salt_len); + } + else if (salt_len < 0) { + return shaBadParam; + } + return hmac(whichSha, ikm, ikm_len, salt, salt_len, prk); +} + +/* + * hkdfExpand + * + * Description: + * This function will perform HKDF expansion. + * + * Parameters: + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * prk[ ]: [in] + * The pseudo-random key to be expanded; either obtained + * directly from a cryptographically strong, uniformly + * distributed pseudo-random number generator, or as the + * output from hkdfExtract(). + * prk_len: [in] + * The length of the pseudo-random key in prk; + * should at least be equal to USHAHashSize(whichSHA). + * info[ ]: [in] + * The optional context and application specific information. + * If info == NULL or a zero-length string, it is ignored. + * info_len: [in] + * The length of the optional context and application specific + * information. (Ignored if info == NULL.) + * okm[ ]: [out] + * Where the HKDF is to be stored. + * okm_len: [in] + * The length of the buffer to hold okm. + * okm_len must be <= 255 * USHABlockSize(whichSha) + * + * Returns: + * sha Error Code. + * + */ +int hkdfExpand(SHAversion whichSha, const uint8_t prk[], size_t prk_len, + const unsigned char *info, size_t info_len, + uint8_t okm[], size_t okm_len) +{ + size_t hash_len, N; + unsigned char T[USHAMaxHashSize]; + size_t Tlen, where, i; + + if (info == 0) { + info = (const unsigned char *)""; + info_len = 0; + } + else if (info_len < 0) { + return shaBadParam; + } + if (okm_len <= 0) return shaBadParam; + if (!okm) return shaBadParam; + + hash_len = USHAHashSize(whichSha); + if (prk_len < hash_len) return shaBadParam; + N = okm_len / hash_len; + if ((okm_len % hash_len) != 0) N++; + if (N > 255) return shaBadParam; + + Tlen = 0; + where = 0; + for (i = 1; i <= N; i++) { + HMACContext context; + unsigned char c = i; + int ret = hmacReset(&context, whichSha, prk, prk_len) || + hmacInput(&context, T, Tlen) || + hmacInput(&context, info, info_len) || + hmacInput(&context, &c, 1) || + hmacResult(&context, T); + if (ret != shaSuccess) return ret; + memcpy(okm + where, T, + (i != N) ? hash_len : (okm_len - where)); + where += hash_len; + Tlen = hash_len; + } + return shaSuccess; +} + +/* + * hkdfReset + * + * Description: + * This function will initialize the hkdfContext in preparation + * for key derivation using the modular HKDF interface for + * arbitrary length inputs. + * + * Parameters: + * context: [in/out] + * The context to reset. + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * salt[ ]: [in] + * The optional salt value (a non-secret random value); + * if not provided (salt == NULL), it is set internally + * to a string of HashLen(whichSha) zeros. + * salt_len: [in] + * The length of the salt value. (Ignored if salt == NULL.) + * + * Returns: + * sha Error Code. + * + */ +int hkdfReset(HKDFContext *context, enum SHAversion whichSha, + const unsigned char *salt, size_t salt_len) +{ + unsigned char nullSalt[USHAMaxHashSize]; + if (!context) return shaNull; + + context->whichSha = whichSha; + context->hashSize = USHAHashSize(whichSha); + if (salt == 0) { + salt = nullSalt; + salt_len = context->hashSize; + memset(nullSalt, '\0', salt_len); + } + + return hmacReset(&context->hmacContext, whichSha, salt, salt_len); +} + +/* + * hkdfInput + * + * Description: + * This function accepts an array of octets as the next portion + * of the input keying material. It may be called multiple times. + * + * Parameters: + * context: [in/out] + * The HKDF context to update. + * ikm[ ]: [in] + * An array of octets representing the next portion of + * the input keying material. + * ikm_len: [in] + * The length of ikm. + * + * Returns: + * sha Error Code. + * + */ +int hkdfInput(HKDFContext *context, const unsigned char *ikm, + size_t ikm_len) +{ + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + return hmacInput(&context->hmacContext, ikm, ikm_len); +} + +/* + * hkdfFinalBits + * + * Description: + * This function will add in any final bits of the + * input keying material. + * + * Parameters: + * context: [in/out] + * The HKDF context to update + * ikm_bits: [in] + * The final bits of the input keying material, in the upper + * portion of the byte. (Use 0b###00000 instead of 0b00000### + * to input the three bits ###.) + * ikm_bit_count: [in] + * The number of bits in message_bits, between 1 and 7. + * + * Returns: + * sha Error Code. + */ +int hkdfFinalBits(HKDFContext *context, uint8_t ikm_bits, + unsigned int ikm_bit_count) +{ + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + return hmacFinalBits(&context->hmacContext, ikm_bits, ikm_bit_count); +} + +/* + * hkdfResult + * + * Description: + * This function will finish the HKDF extraction and perform the + * final HKDF expansion. + * + * Parameters: + * context: [in/out] + * The HKDF context to use to calculate the HKDF hash. + * prk[ ]: [out] + * An optional location to store the HKDF extraction. + * Either NULL, or pointer to a buffer that must be + * larger than USHAHashSize(whichSha); + * info[ ]: [in] + * The optional context and application specific information. + * If info == NULL or a zero-length string, it is ignored. + * info_len: [in] + * The length of the optional context and application specific + * information. (Ignored if info == NULL.) + * okm[ ]: [out] + * Where the HKDF is to be stored. + * okm_len: [in] + * The length of the buffer to hold okm. + * okm_len must be <= 255 * USHABlockSize(whichSha) + * + * Returns: + * sha Error Code. + * + */ +int hkdfResult(HKDFContext *context, + uint8_t prk[USHAMaxHashSize], + const unsigned char *info, size_t info_len, + uint8_t okm[], size_t okm_len) +{ + uint8_t prkbuf[USHAMaxHashSize]; + int ret; + + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + if (!okm) return context->Corrupted = shaBadParam; + if (!prk) prk = prkbuf; + + ret = hmacResult(&context->hmacContext, prk) || + hkdfExpand(context->whichSha, prk, context->hashSize, info, + info_len, okm, okm_len); + context->Computed = 1; + return context->Corrupted = ret; +} + diff --git a/nfq/crypto/hmac.c b/nfq/crypto/hmac.c new file mode 100644 index 0000000..9e05325 --- /dev/null +++ b/nfq/crypto/hmac.c @@ -0,0 +1,250 @@ +/**************************** hmac.c ***************************/ +/***************** See RFC 6234 for details. *******************/ +/* Copyright (c) 2011 IETF Trust and the persons identified as */ +/* authors of the code. All rights reserved. */ +/* See sha.h for terms of use and redistribution. */ + +/* + * Description: + * This file implements the HMAC algorithm (Keyed-Hashing for + * Message Authentication, [RFC 2104]), expressed in terms of + * the various SHA algorithms. + */ + +#include "sha.h" +#include + + /* + * hmac + * + * Description: + * This function will compute an HMAC message digest. + * + * Parameters: + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * message_array[ ]: [in] + * An array of octets representing the message. + * Note: in RFC 2104, this parameter is known + * as 'text'. + * length: [in] + * The length of the message in message_array. + * key[ ]: [in] + * The secret shared key. + * key_len: [in] + * The length of the secret shared key. + * digest[ ]: [out] + * Where the digest is to be returned. + * NOTE: The length of the digest is determined by + * the value of whichSha. + * + * Returns: + * sha Error Code. + * + */ + +int hmac(SHAversion whichSha, + const unsigned char *message_array, size_t length, + const unsigned char *key, size_t key_len, + uint8_t digest[USHAMaxHashSize]) +{ + HMACContext context; + return hmacReset(&context, whichSha, key, key_len) || + hmacInput(&context, message_array, length) || + hmacResult(&context, digest); +} + +/* + * hmacReset + * + * Description: + * This function will initialize the hmacContext in preparation + * for computing a new HMAC message digest. + * + * Parameters: + * context: [in/out] + * The context to reset. + * whichSha: [in] + * One of SHA1, SHA224, SHA256, SHA384, SHA512 + * key[ ]: [in] + * The secret shared key. + * key_len: [in] + * The length of the secret shared key. + * + * Returns: + * sha Error Code. + * + */ +int hmacReset(HMACContext *context, enum SHAversion whichSha, + const unsigned char *key, size_t key_len) +{ + size_t i, blocksize, hashsize; + int ret; + + /* inner padding - key XORd with ipad */ + unsigned char k_ipad[USHA_Max_Message_Block_Size]; + + /* temporary buffer when keylen > blocksize */ + unsigned char tempkey[USHAMaxHashSize]; + + if (!context) return shaNull; + context->Computed = 0; + context->Corrupted = shaSuccess; + + blocksize = context->blockSize = USHABlockSize(whichSha); + hashsize = context->hashSize = USHAHashSize(whichSha); + context->whichSha = whichSha; + + /* + * If key is longer than the hash blocksize, + * reset it to key = HASH(key). + */ + if (key_len > blocksize) { + USHAContext tcontext; + int err = USHAReset(&tcontext, whichSha) || + USHAInput(&tcontext, key, key_len) || + USHAResult(&tcontext, tempkey); + if (err != shaSuccess) return err; + + key = tempkey; + key_len = hashsize; + } + + /* + * The HMAC transform looks like: + * + * SHA(K XOR opad, SHA(K XOR ipad, text)) + * + * where K is an n byte key, 0-padded to a total of blocksize bytes, + * ipad is the byte 0x36 repeated blocksize times, + * opad is the byte 0x5c repeated blocksize times, + * and text is the data being protected. + */ + + /* store key into the pads, XOR'd with ipad and opad values */ + for (i = 0; i < key_len; i++) { + k_ipad[i] = key[i] ^ 0x36; + context->k_opad[i] = key[i] ^ 0x5c; + } + /* remaining pad bytes are '\0' XOR'd with ipad and opad values */ + for (; i < blocksize; i++) { + k_ipad[i] = 0x36; + context->k_opad[i] = 0x5c; + } + + /* perform inner hash */ + /* init context for 1st pass */ + ret = USHAReset(&context->shaContext, whichSha) || + /* and start with inner pad */ + USHAInput(&context->shaContext, k_ipad, blocksize); + return context->Corrupted = ret; +} + +/* + * hmacInput + * + * Description: + * This function accepts an array of octets as the next portion + * of the message. It may be called multiple times. + * + * Parameters: + * context: [in/out] + * The HMAC context to update. + * text[ ]: [in] + * An array of octets representing the next portion of + * the message. + * text_len: [in] + * The length of the message in text. + * + * Returns: + * sha Error Code. + * + */ +int hmacInput(HMACContext *context, const unsigned char *text, + size_t text_len) +{ + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + /* then text of datagram */ + return context->Corrupted = + USHAInput(&context->shaContext, text, text_len); +} + +/* + * hmacFinalBits + * + * Description: + * This function will add in any final bits of the message. + * + * Parameters: + * context: [in/out] + * The HMAC context to update. + * message_bits: [in] + * The final bits of the message, in the upper portion of the + * byte. (Use 0b###00000 instead of 0b00000### to input the + * three bits ###.) + * length: [in] + * The number of bits in message_bits, between 1 and 7. + * + * Returns: + * sha Error Code. + */ +int hmacFinalBits(HMACContext *context, + uint8_t bits, unsigned int bit_count) +{ + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + /* then final bits of datagram */ + return context->Corrupted = + USHAFinalBits(&context->shaContext, bits, bit_count); +} + +/* + * hmacResult + * + * Description: + * This function will return the N-byte message digest into the + * Message_Digest array provided by the caller. + * + * Parameters: + * context: [in/out] + * The context to use to calculate the HMAC hash. + * digest[ ]: [out] + * Where the digest is returned. + * NOTE 2: The length of the hash is determined by the value of + * whichSha that was passed to hmacReset(). + * + * Returns: + * sha Error Code. + * + */ +int hmacResult(HMACContext *context, uint8_t *digest) +{ + int ret; + if (!context) return shaNull; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + + /* finish up 1st pass */ + /* (Use digest here as a temporary buffer.) */ + ret = + USHAResult(&context->shaContext, digest) || + + /* perform outer SHA */ + /* init context for 2nd pass */ + USHAReset(&context->shaContext, context->whichSha) || + + /* start with outer pad */ + USHAInput(&context->shaContext, context->k_opad, + context->blockSize) || + + /* then results of 1st hash */ + USHAInput(&context->shaContext, digest, context->hashSize) || + /* finish up 2nd pass */ + USHAResult(&context->shaContext, digest); + + context->Computed = 1; + return context->Corrupted = ret; +} diff --git a/nfq/crypto/sha-private.h b/nfq/crypto/sha-private.h new file mode 100644 index 0000000..4ceba0d --- /dev/null +++ b/nfq/crypto/sha-private.h @@ -0,0 +1,25 @@ +/************************ sha-private.h ************************/ +/***************** See RFC 6234 for details. *******************/ +#pragma once +/* + * These definitions are defined in FIPS 180-3, section 4.1. + * Ch() and Maj() are defined identically in sections 4.1.1, + * 4.1.2, and 4.1.3. + * + * The definitions used in FIPS 180-3 are as follows: + */ + +#ifndef USE_MODIFIED_MACROS +#define SHA_Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) +#define SHA_Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) +#else /* USE_MODIFIED_MACROS */ +/* + * The following definitions are equivalent and potentially faster. + */ + +#define SHA_Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z)) +#define SHA_Maj(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) + +#endif /* USE_MODIFIED_MACROS */ + +#define SHA_Parity(x, y, z) ((x) ^ (y) ^ (z)) diff --git a/nfq/crypto/sha.h b/nfq/crypto/sha.h new file mode 100644 index 0000000..8b3a63b --- /dev/null +++ b/nfq/crypto/sha.h @@ -0,0 +1,278 @@ +/**************************** sha.h ****************************/ +/***************** See RFC 6234 for details. *******************/ +/* + Copyright (c) 2011 IETF Trust and the persons identified as + authors of the code. 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. + - 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. + - Neither the name of Internet Society, IETF or IETF Trust, nor + the names of specific contributors, may be used to endorse or + promote products derived from this software without specific + prior written permission. + 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. +*/ + +#pragma once + +/* + * Description: + * This file implements the Secure Hash Algorithms + * as defined in the U.S. National Institute of Standards + * and Technology Federal Information Processing Standards + * Publication (FIPS PUB) 180-3 published in October 2008 + * and formerly defined in its predecessors, FIPS PUB 180-1 + * and FIP PUB 180-2. + * + * A combined document showing all algorithms is available at + * http://csrc.nist.gov/publications/fips/ + * fips180-3/fips180-3_final.pdf + * + * The five hashes are defined in these sizes: + * SHA-1 20 byte / 160 bit + * SHA-224 28 byte / 224 bit + * SHA-256 32 byte / 256 bit + * SHA-384 48 byte / 384 bit + * SHA-512 64 byte / 512 bit + * + * Compilation Note: + * These files may be compiled with two options: + * USE_32BIT_ONLY - use 32-bit arithmetic only, for systems + * without 64-bit integers + * + * USE_MODIFIED_MACROS - use alternate form of the SHA_Ch() + * and SHA_Maj() macros that are equivalent + * and potentially faster on many systems + * + */ + +#include +#include + +/* + * If you do not have the ISO standard stdint.h header file, then you + * must typedef the following: + * name meaning + * uint64_t unsigned 64-bit integer + * uint32_t unsigned 32-bit integer + * uint8_t unsigned 8-bit integer (i.e., unsigned char) + * int_least16_t integer of >= 16 bits + * + * See stdint-example.h + */ + +#ifndef _SHA_enum_ +#define _SHA_enum_ +/* + * All SHA functions return one of these values. + */ +enum { + shaSuccess = 0, + shaNull, /* Null pointer parameter */ + shaInputTooLong, /* input data too long */ + shaStateError, /* called Input after FinalBits or Result */ + shaBadParam /* passed a bad parameter */ +}; +#endif /* _SHA_enum_ */ + +/* + * These constants hold size information for each of the SHA + * hashing operations + */ +enum { + SHA1_Message_Block_Size = 64, SHA224_Message_Block_Size = 64, + SHA256_Message_Block_Size = 64, + USHA_Max_Message_Block_Size = SHA256_Message_Block_Size, + + SHA1HashSize = 20, SHA224HashSize = 28, SHA256HashSize = 32, + USHAMaxHashSize = SHA256HashSize, + + SHA1HashSizeBits = 160, SHA224HashSizeBits = 224, + SHA256HashSizeBits = 256, USHAMaxHashSizeBits = SHA256HashSizeBits +}; + +/* + * These constants are used in the USHA (Unified SHA) functions. + */ +typedef enum SHAversion { + SHA224, SHA256 +} SHAversion; + +/* + * This structure will hold context information for the SHA-256 + * hashing operation. + */ +typedef struct SHA256Context { + uint32_t Intermediate_Hash[SHA256HashSize/4]; /* Message Digest */ + + uint32_t Length_High; /* Message length in bits */ + uint32_t Length_Low; /* Message length in bits */ + + int_least16_t Message_Block_Index; /* Message_Block array index */ + /* 512-bit message blocks */ + uint8_t Message_Block[SHA256_Message_Block_Size]; + + int Computed; /* Is the hash computed? */ + int Corrupted; /* Cumulative corruption code */ +} SHA256Context; + +/* + * This structure will hold context information for the SHA-224 + * hashing operation. It uses the SHA-256 structure for computation. + */ +typedef struct SHA256Context SHA224Context; + +/* + * This structure holds context information for all SHA + * hashing operations. + */ +typedef struct USHAContext { + int whichSha; /* which SHA is being used */ + union { + SHA224Context sha224Context; SHA256Context sha256Context; + } ctx; + +} USHAContext; + +/* + * This structure will hold context information for the HMAC + * keyed-hashing operation. + */ +typedef struct HMACContext { + int whichSha; /* which SHA is being used */ + int hashSize; /* hash size of SHA being used */ + int blockSize; /* block size of SHA being used */ + USHAContext shaContext; /* SHA context */ + unsigned char k_opad[USHA_Max_Message_Block_Size]; + /* outer padding - key XORd with opad */ + int Computed; /* Is the MAC computed? */ + int Corrupted; /* Cumulative corruption code */ + +} HMACContext; + +/* + * This structure will hold context information for the HKDF + * extract-and-expand Key Derivation Functions. + */ +typedef struct HKDFContext { + int whichSha; /* which SHA is being used */ + HMACContext hmacContext; + int hashSize; /* hash size of SHA being used */ + unsigned char prk[USHAMaxHashSize]; + /* pseudo-random key - output of hkdfInput */ + int Computed; /* Is the key material computed? */ + int Corrupted; /* Cumulative corruption code */ +} HKDFContext; + +/* + * Function Prototypes + */ + + +/* SHA-224 */ +int SHA224Reset(SHA224Context *); +int SHA224Input(SHA224Context *, const uint8_t *bytes, + unsigned int bytecount); +int SHA224FinalBits(SHA224Context *, uint8_t bits, + unsigned int bit_count); +int SHA224Result(SHA224Context *, + uint8_t Message_Digest[SHA224HashSize]); + +/* SHA-256 */ +int SHA256Reset(SHA256Context *); +int SHA256Input(SHA256Context *, const uint8_t *bytes, + unsigned int bytecount); +int SHA256FinalBits(SHA256Context *, uint8_t bits, + unsigned int bit_count); +int SHA256Result(SHA256Context *, + uint8_t Message_Digest[SHA256HashSize]); + +/* Unified SHA functions, chosen by whichSha */ +int USHAReset(USHAContext *context, SHAversion whichSha); +int USHAInput(USHAContext *context, + const uint8_t *bytes, unsigned int bytecount); +int USHAFinalBits(USHAContext *context, + uint8_t bits, unsigned int bit_count); +int USHAResult(USHAContext *context, + uint8_t Message_Digest[USHAMaxHashSize]); +int USHABlockSize(enum SHAversion whichSha); +int USHAHashSize(enum SHAversion whichSha); + +/* + * HMAC Keyed-Hashing for Message Authentication, RFC 2104, + * for all SHAs. + * This interface allows a fixed-length text input to be used. + */ +int hmac(SHAversion whichSha, /* which SHA algorithm to use */ + const unsigned char *text, /* pointer to data stream */ + size_t text_len, /* length of data stream */ + const unsigned char *key, /* pointer to authentication key */ + size_t key_len, /* length of authentication key */ + uint8_t digest[USHAMaxHashSize]); /* caller digest to fill in */ + +/* + * HMAC Keyed-Hashing for Message Authentication, RFC 2104, + * for all SHAs. + * This interface allows any length of text input to be used. + */ +int hmacReset(HMACContext *context, enum SHAversion whichSha, + const unsigned char *key, size_t key_len); +int hmacInput(HMACContext *context, const unsigned char *text, + size_t text_len); +int hmacFinalBits(HMACContext *context, uint8_t bits, + unsigned int bit_count); +int hmacResult(HMACContext *context, + uint8_t digest[USHAMaxHashSize]); + + +/* + * HKDF HMAC-based Extract-and-Expand Key Derivation Function, + * RFC 5869, for all SHAs. + */ +int hkdf(SHAversion whichSha, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + const unsigned char *info, size_t info_len, + uint8_t okm[ ], size_t okm_len); + +int hkdfExtract(SHAversion whichSha, const unsigned char *salt, + size_t salt_len, const unsigned char *ikm, + size_t ikm_len, uint8_t prk[USHAMaxHashSize]); +int hkdfExpand(SHAversion whichSha, const uint8_t prk[ ], + size_t prk_len, const unsigned char *info, + size_t info_len, uint8_t okm[ ], size_t okm_len); + +/* + * HKDF HMAC-based Extract-and-Expand Key Derivation Function, + * RFC 5869, for all SHAs. + * This interface allows any length of text input to be used. + */ +int hkdfReset(HKDFContext *context, enum SHAversion whichSha, + const unsigned char *salt, size_t salt_len); +int hkdfInput(HKDFContext *context, const unsigned char *ikm, + size_t ikm_len); +int hkdfFinalBits(HKDFContext *context, uint8_t ikm_bits, + unsigned int ikm_bit_count); +int hkdfResult(HKDFContext *context, + uint8_t prk[USHAMaxHashSize], + const unsigned char *info, size_t info_len, + uint8_t okm[USHAMaxHashSize], size_t okm_len); diff --git a/nfq/crypto/sha224-256.c b/nfq/crypto/sha224-256.c new file mode 100644 index 0000000..2c9bc9c --- /dev/null +++ b/nfq/crypto/sha224-256.c @@ -0,0 +1,581 @@ +/************************* sha224-256.c ************************/ +/***************** See RFC 6234 for details. *******************/ +/* Copyright (c) 2011 IETF Trust and the persons identified as */ +/* authors of the code. All rights reserved. */ +/* See sha.h for terms of use and redistribution. */ + +/* + * Description: + * This file implements the Secure Hash Algorithms SHA-224 and + * SHA-256 as defined in the U.S. National Institute of Standards + * and Technology Federal Information Processing Standards + * Publication (FIPS PUB) 180-3 published in October 2008 + * and formerly defined in its predecessors, FIPS PUB 180-1 + * and FIP PUB 180-2. + * + * A combined document showing all algorithms is available at + * http://csrc.nist.gov/publications/fips/ + * fips180-3/fips180-3_final.pdf + * + * The SHA-224 and SHA-256 algorithms produce 224-bit and 256-bit + * message digests for a given data stream. It should take about + * 2**n steps to find a message with the same digest as a given + * message and 2**(n/2) to find any two messages with the same + * digest, when n is the digest size in bits. Therefore, this + * algorithm can serve as a means of providing a + * "fingerprint" for a message. + * + * Portability Issues: + * SHA-224 and SHA-256 are defined in terms of 32-bit "words". + * This code uses (included via "sha.h") to define 32- + * and 8-bit unsigned integer types. If your C compiler does not + * support 32-bit unsigned integers, this code is not + * appropriate. + * + * Caveats: + * SHA-224 and SHA-256 are designed to work with messages less + * than 2^64 bits long. This implementation uses SHA224/256Input() + * to hash the bits that are a multiple of the size of an 8-bit + * octet, and then optionally uses SHA224/256FinalBits() + * to hash the final few bits of the input. + */ + +#include "sha.h" +#include "sha-private.h" + +/* Define the SHA shift, rotate left, and rotate right macros */ +#define SHA256_SHR(bits,word) ((word) >> (bits)) +#define SHA256_ROTL(bits,word) \ + (((word) << (bits)) | ((word) >> (32-(bits)))) +#define SHA256_ROTR(bits,word) \ + (((word) >> (bits)) | ((word) << (32-(bits)))) + +/* Define the SHA SIGMA and sigma macros */ +#define SHA256_SIGMA0(word) \ + (SHA256_ROTR( 2,word) ^ SHA256_ROTR(13,word) ^ SHA256_ROTR(22,word)) +#define SHA256_SIGMA1(word) \ + (SHA256_ROTR( 6,word) ^ SHA256_ROTR(11,word) ^ SHA256_ROTR(25,word)) +#define SHA256_sigma0(word) \ + (SHA256_ROTR( 7,word) ^ SHA256_ROTR(18,word) ^ SHA256_SHR( 3,word)) +#define SHA256_sigma1(word) \ + (SHA256_ROTR(17,word) ^ SHA256_ROTR(19,word) ^ SHA256_SHR(10,word)) + +/* + * Add "length" to the length. + * Set Corrupted when overflow has occurred. + */ +static uint32_t addTemp; +#define SHA224_256AddLength(context, length) \ + (addTemp = (context)->Length_Low, (context)->Corrupted = \ + (((context)->Length_Low += (length)) < addTemp) && \ + (++(context)->Length_High == 0) ? shaInputTooLong : \ + (context)->Corrupted ) + +/* Local Function Prototypes */ +static int SHA224_256Reset(SHA256Context *context, uint32_t *H0); +static void SHA224_256ProcessMessageBlock(SHA256Context *context); +static void SHA224_256Finalize(SHA256Context *context, + uint8_t Pad_Byte); +static void SHA224_256PadMessage(SHA256Context *context, + uint8_t Pad_Byte); +static int SHA224_256ResultN(SHA256Context *context, + uint8_t Message_Digest[ ], int HashSize); + +/* Initial Hash Values: FIPS 180-3 section 5.3.2 */ +static uint32_t SHA224_H0[SHA256HashSize/4] = { + 0xC1059ED8, 0x367CD507, 0x3070DD17, 0xF70E5939, + 0xFFC00B31, 0x68581511, 0x64F98FA7, 0xBEFA4FA4 +}; + +/* Initial Hash Values: FIPS 180-3 section 5.3.3 */ +static uint32_t SHA256_H0[SHA256HashSize/4] = { + 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, + 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 +}; + +/* + * SHA224Reset + * + * Description: + * This function will initialize the SHA224Context in preparation + * for computing a new SHA224 message digest. + * + * Parameters: + * context: [in/out] + * The context to reset. + * + * Returns: + * sha Error Code. + */ +int SHA224Reset(SHA224Context *context) +{ + return SHA224_256Reset(context, SHA224_H0); +} + +/* + * SHA224Input + * + * Description: + * This function accepts an array of octets as the next portion + * of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_array[ ]: [in] + * An array of octets representing the next portion of + * the message. + * length: [in] + * The length of the message in message_array. + * + * Returns: + * sha Error Code. + * + */ +int SHA224Input(SHA224Context *context, const uint8_t *message_array, + unsigned int length) +{ + return SHA256Input(context, message_array, length); +} + +/* + * SHA224FinalBits + * + * Description: + * This function will add in any final bits of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_bits: [in] + * The final bits of the message, in the upper portion of the + * byte. (Use 0b###00000 instead of 0b00000### to input the + * three bits ###.) + * length: [in] + * The number of bits in message_bits, between 1 and 7. + * + * Returns: + * sha Error Code. + */ +int SHA224FinalBits(SHA224Context *context, + uint8_t message_bits, unsigned int length) +{ + return SHA256FinalBits(context, message_bits, length); +} + +/* + * SHA224Result + * + * Description: + * This function will return the 224-bit message digest + * into the Message_Digest array provided by the caller. + * NOTE: + * The first octet of hash is stored in the element with index 0, + * the last octet of hash in the element with index 27. + * + * Parameters: + * context: [in/out] + * The context to use to calculate the SHA hash. + * Message_Digest[ ]: [out] + * Where the digest is returned. + * + * Returns: + * sha Error Code. + */ +int SHA224Result(SHA224Context *context, + uint8_t Message_Digest[SHA224HashSize]) +{ + return SHA224_256ResultN(context, Message_Digest, SHA224HashSize); +} + +/* + * SHA256Reset + * + * Description: + * This function will initialize the SHA256Context in preparation + * for computing a new SHA256 message digest. + * + * Parameters: + * context: [in/out] + * The context to reset. + * + * Returns: + * sha Error Code. + */ +int SHA256Reset(SHA256Context *context) +{ + return SHA224_256Reset(context, SHA256_H0); +} + +/* + * SHA256Input + * + * Description: + * This function accepts an array of octets as the next portion + * of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_array[ ]: [in] + * An array of octets representing the next portion of + * the message. + * length: [in] + * The length of the message in message_array. + * + * Returns: + * sha Error Code. + */ +int SHA256Input(SHA256Context *context, const uint8_t *message_array, + unsigned int length) +{ + if (!context) return shaNull; + if (!length) return shaSuccess; + if (!message_array) return shaNull; + if (context->Computed) return context->Corrupted = shaStateError; + if (context->Corrupted) return context->Corrupted; + + while (length--) { + context->Message_Block[context->Message_Block_Index++] = + *message_array; + + if ((SHA224_256AddLength(context, 8) == shaSuccess) && + (context->Message_Block_Index == SHA256_Message_Block_Size)) + SHA224_256ProcessMessageBlock(context); + + message_array++; + } + + return context->Corrupted; + +} + +/* + * SHA256FinalBits + * + * Description: + * This function will add in any final bits of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_bits: [in] + * The final bits of the message, in the upper portion of the + * byte. (Use 0b###00000 instead of 0b00000### to input the + * three bits ###.) + * length: [in] + * The number of bits in message_bits, between 1 and 7. + * + * Returns: + * sha Error Code. + */ +int SHA256FinalBits(SHA256Context *context, + uint8_t message_bits, unsigned int length) +{ + static uint8_t masks[8] = { + /* 0 0b00000000 */ 0x00, /* 1 0b10000000 */ 0x80, + /* 2 0b11000000 */ 0xC0, /* 3 0b11100000 */ 0xE0, + /* 4 0b11110000 */ 0xF0, /* 5 0b11111000 */ 0xF8, + /* 6 0b11111100 */ 0xFC, /* 7 0b11111110 */ 0xFE + }; + static uint8_t markbit[8] = { + /* 0 0b10000000 */ 0x80, /* 1 0b01000000 */ 0x40, + /* 2 0b00100000 */ 0x20, /* 3 0b00010000 */ 0x10, + /* 4 0b00001000 */ 0x08, /* 5 0b00000100 */ 0x04, + /* 6 0b00000010 */ 0x02, /* 7 0b00000001 */ 0x01 + }; + + if (!context) return shaNull; + if (!length) return shaSuccess; + if (context->Corrupted) return context->Corrupted; + if (context->Computed) return context->Corrupted = shaStateError; + if (length >= 8) return context->Corrupted = shaBadParam; + + SHA224_256AddLength(context, length); + SHA224_256Finalize(context, (uint8_t) + ((message_bits & masks[length]) | markbit[length])); + + return context->Corrupted; +} + +/* + * SHA256Result + * + * Description: + * This function will return the 256-bit message digest + * into the Message_Digest array provided by the caller. + * NOTE: + * The first octet of hash is stored in the element with index 0, + * the last octet of hash in the element with index 31. + * + * Parameters: + * context: [in/out] + * The context to use to calculate the SHA hash. + * Message_Digest[ ]: [out] + * Where the digest is returned. + * + * Returns: + * sha Error Code. + */ +int SHA256Result(SHA256Context *context, + uint8_t Message_Digest[SHA256HashSize]) +{ + return SHA224_256ResultN(context, Message_Digest, SHA256HashSize); +} + +/* + * SHA224_256Reset + * + * Description: + * This helper function will initialize the SHA256Context in + * preparation for computing a new SHA-224 or SHA-256 message digest. + * + * Parameters: + * context: [in/out] + * The context to reset. + * H0[ ]: [in] + * The initial hash value array to use. + * + * Returns: + * sha Error Code. + */ +static int SHA224_256Reset(SHA256Context *context, uint32_t *H0) +{ + if (!context) return shaNull; + + context->Length_High = context->Length_Low = 0; + context->Message_Block_Index = 0; + + context->Intermediate_Hash[0] = H0[0]; + context->Intermediate_Hash[1] = H0[1]; + context->Intermediate_Hash[2] = H0[2]; + context->Intermediate_Hash[3] = H0[3]; + context->Intermediate_Hash[4] = H0[4]; + context->Intermediate_Hash[5] = H0[5]; + context->Intermediate_Hash[6] = H0[6]; + context->Intermediate_Hash[7] = H0[7]; + + context->Computed = 0; + context->Corrupted = shaSuccess; + + return shaSuccess; +} + +/* + * SHA224_256ProcessMessageBlock + * + * Description: + * This helper function will process the next 512 bits of the + * message stored in the Message_Block array. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * + * Returns: + * Nothing. + * + * Comments: + * Many of the variable names in this code, especially the + * single character names, were used because those were the + * names used in the Secure Hash Standard. + */ +static void SHA224_256ProcessMessageBlock(SHA256Context *context) +{ + /* Constants defined in FIPS 180-3, section 4.2.2 */ + static const uint32_t K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, + 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, + 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, + 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, + 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, + 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, + 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, + 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, + 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + }; + int t, t4; /* Loop counter */ + uint32_t temp1, temp2; /* Temporary word value */ + uint32_t W[64]; /* Word sequence */ + uint32_t A, B, C, D, E, F, G, H; /* Word buffers */ + + /* + * Initialize the first 16 words in the array W + */ + for (t = t4 = 0; t < 16; t++, t4 += 4) + W[t] = (((uint32_t)context->Message_Block[t4]) << 24) | + (((uint32_t)context->Message_Block[t4 + 1]) << 16) | + (((uint32_t)context->Message_Block[t4 + 2]) << 8) | + (((uint32_t)context->Message_Block[t4 + 3])); + for (t = 16; t < 64; t++) + W[t] = SHA256_sigma1(W[t-2]) + W[t-7] + + SHA256_sigma0(W[t-15]) + W[t-16]; + + A = context->Intermediate_Hash[0]; + B = context->Intermediate_Hash[1]; + C = context->Intermediate_Hash[2]; + D = context->Intermediate_Hash[3]; + E = context->Intermediate_Hash[4]; + F = context->Intermediate_Hash[5]; + G = context->Intermediate_Hash[6]; + H = context->Intermediate_Hash[7]; + + for (t = 0; t < 64; t++) { + temp1 = H + SHA256_SIGMA1(E) + SHA_Ch(E,F,G) + K[t] + W[t]; + temp2 = SHA256_SIGMA0(A) + SHA_Maj(A,B,C); + H = G; + G = F; + F = E; + E = D + temp1; + D = C; + C = B; + B = A; + A = temp1 + temp2; + } + + context->Intermediate_Hash[0] += A; + context->Intermediate_Hash[1] += B; + context->Intermediate_Hash[2] += C; + context->Intermediate_Hash[3] += D; + context->Intermediate_Hash[4] += E; + context->Intermediate_Hash[5] += F; + context->Intermediate_Hash[6] += G; + context->Intermediate_Hash[7] += H; + + context->Message_Block_Index = 0; +} + +/* + * SHA224_256Finalize + * + * Description: + * This helper function finishes off the digest calculations. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * Pad_Byte: [in] + * The last byte to add to the message block before the 0-padding + * and length. This will contain the last bits of the message + * followed by another single bit. If the message was an + * exact multiple of 8-bits long, Pad_Byte will be 0x80. + * + * Returns: + * sha Error Code. + */ +static void SHA224_256Finalize(SHA256Context *context, + uint8_t Pad_Byte) +{ + int i; + SHA224_256PadMessage(context, Pad_Byte); + /* message may be sensitive, so clear it out */ + for (i = 0; i < SHA256_Message_Block_Size; ++i) + context->Message_Block[i] = 0; + context->Length_High = 0; /* and clear length */ + context->Length_Low = 0; + context->Computed = 1; +} + +/* + * SHA224_256PadMessage + * + * Description: + * According to the standard, the message must be padded to the next + * even multiple of 512 bits. The first padding bit must be a '1'. + * The last 64 bits represent the length of the original message. + * All bits in between should be 0. This helper function will pad + * the message according to those rules by filling the + * Message_Block array accordingly. When it returns, it can be + * assumed that the message digest has been computed. + * + * Parameters: + * context: [in/out] + * The context to pad. + * Pad_Byte: [in] + * The last byte to add to the message block before the 0-padding + * and length. This will contain the last bits of the message + * followed by another single bit. If the message was an + * exact multiple of 8-bits long, Pad_Byte will be 0x80. + * + * Returns: + * Nothing. + */ +static void SHA224_256PadMessage(SHA256Context *context, + uint8_t Pad_Byte) +{ + /* + * Check to see if the current message block is too small to hold + * the initial padding bits and length. If so, we will pad the + * block, process it, and then continue padding into a second + * block. + */ + if (context->Message_Block_Index >= (SHA256_Message_Block_Size-8)) { + context->Message_Block[context->Message_Block_Index++] = Pad_Byte; + while (context->Message_Block_Index < SHA256_Message_Block_Size) + context->Message_Block[context->Message_Block_Index++] = 0; + SHA224_256ProcessMessageBlock(context); + } else + context->Message_Block[context->Message_Block_Index++] = Pad_Byte; + + while (context->Message_Block_Index < (SHA256_Message_Block_Size-8)) + context->Message_Block[context->Message_Block_Index++] = 0; + + /* + * Store the message length as the last 8 octets + */ + context->Message_Block[56] = (uint8_t)(context->Length_High >> 24); + context->Message_Block[57] = (uint8_t)(context->Length_High >> 16); + context->Message_Block[58] = (uint8_t)(context->Length_High >> 8); + context->Message_Block[59] = (uint8_t)(context->Length_High); + context->Message_Block[60] = (uint8_t)(context->Length_Low >> 24); + context->Message_Block[61] = (uint8_t)(context->Length_Low >> 16); + context->Message_Block[62] = (uint8_t)(context->Length_Low >> 8); + context->Message_Block[63] = (uint8_t)(context->Length_Low); + + SHA224_256ProcessMessageBlock(context); +} + +/* + * SHA224_256ResultN + * + * Description: + * This helper function will return the 224-bit or 256-bit message + * digest into the Message_Digest array provided by the caller. + * NOTE: + * The first octet of hash is stored in the element with index 0, + * the last octet of hash in the element with index 27/31. + * + * Parameters: + * context: [in/out] + * The context to use to calculate the SHA hash. + * Message_Digest[ ]: [out] + * Where the digest is returned. + * HashSize: [in] + * The size of the hash, either 28 or 32. + * + * Returns: + * sha Error Code. + */ +static int SHA224_256ResultN(SHA256Context *context, + uint8_t Message_Digest[ ], int HashSize) +{ + int i; + + if (!context) return shaNull; + if (!Message_Digest) return shaNull; + if (context->Corrupted) return context->Corrupted; + + if (!context->Computed) + SHA224_256Finalize(context, 0x80); + + for (i = 0; i < HashSize; ++i) + Message_Digest[i] = (uint8_t) + (context->Intermediate_Hash[i>>2] >> 8 * ( 3 - ( i & 0x03 ) )); + + return shaSuccess; +} + diff --git a/nfq/crypto/usha.c b/nfq/crypto/usha.c new file mode 100644 index 0000000..861b4d0 --- /dev/null +++ b/nfq/crypto/usha.c @@ -0,0 +1,191 @@ +/**************************** usha.c ***************************/ +/***************** See RFC 6234 for details. *******************/ +/* Copyright (c) 2011 IETF Trust and the persons identified as */ +/* authors of the code. All rights reserved. */ +/* See sha.h for terms of use and redistribution. */ + +/* + * Description: + * This file implements a unified interface to the SHA algorithms. + */ + +#include "sha.h" + +/* + * USHAReset + * + * Description: + * This function will initialize the SHA Context in preparation + * for computing a new SHA message digest. + * + * Parameters: + * context: [in/out] + * The context to reset. + * whichSha: [in] + * Selects which SHA reset to call + * + * Returns: + * sha Error Code. + * + */ +int USHAReset(USHAContext *context, enum SHAversion whichSha) +{ + if (!context) return shaNull; + context->whichSha = whichSha; + switch (whichSha) { + case SHA224: return SHA224Reset((SHA224Context*)&context->ctx); + case SHA256: return SHA256Reset((SHA256Context*)&context->ctx); + default: return shaBadParam; + } +} + +/* + * USHAInput + * + * Description: + * This function accepts an array of octets as the next portion + * of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_array: [in] + * An array of octets representing the next portion of + * the message. + * length: [in] + * The length of the message in message_array. + * + * Returns: + * sha Error Code. + * + */ +int USHAInput(USHAContext *context, + const uint8_t *bytes, unsigned int bytecount) +{ + if (!context) return shaNull; + switch (context->whichSha) { + case SHA224: + return SHA224Input((SHA224Context*)&context->ctx, bytes, + bytecount); + case SHA256: + return SHA256Input((SHA256Context*)&context->ctx, bytes, + bytecount); + default: return shaBadParam; + } +} + +/* + * USHAFinalBits + * + * Description: + * This function will add in any final bits of the message. + * + * Parameters: + * context: [in/out] + * The SHA context to update. + * message_bits: [in] + * The final bits of the message, in the upper portion of the + * byte. (Use 0b###00000 instead of 0b00000### to input the + * three bits ###.) + * length: [in] + * The number of bits in message_bits, between 1 and 7. + * + * Returns: + * sha Error Code. + */ +int USHAFinalBits(USHAContext *context, + uint8_t bits, unsigned int bit_count) +{ + if (!context) return shaNull; + switch (context->whichSha) { + case SHA224: + return SHA224FinalBits((SHA224Context*)&context->ctx, bits, + bit_count); + case SHA256: + return SHA256FinalBits((SHA256Context*)&context->ctx, bits, + bit_count); + default: return shaBadParam; + } +} + +/* + * USHAResult + * + * Description: + * This function will return the message digest of the appropriate + * bit size, as returned by USHAHashSizeBits(whichSHA) for the + * 'whichSHA' value used in the preceeding call to USHAReset, + * into the Message_Digest array provided by the caller. + * + * Parameters: + * context: [in/out] + * The context to use to calculate the SHA-1 hash. + * Message_Digest: [out] + * Where the digest is returned. + * + * Returns: + * sha Error Code. + * + */ +int USHAResult(USHAContext *context, + uint8_t Message_Digest[USHAMaxHashSize]) +{ + if (!context) return shaNull; + switch (context->whichSha) { + case SHA224: + return SHA224Result((SHA224Context*)&context->ctx, + Message_Digest); + case SHA256: + return SHA256Result((SHA256Context*)&context->ctx, + Message_Digest); + default: return shaBadParam; + } +} + +/* + * USHABlockSize + * + * Description: + * This function will return the blocksize for the given SHA + * algorithm. + * + * Parameters: + * whichSha: + * which SHA algorithm to query + * + * Returns: + * block size + * + */ +int USHABlockSize(enum SHAversion whichSha) +{ + switch (whichSha) { + case SHA224: return SHA224_Message_Block_Size; + default: + case SHA256: return SHA256_Message_Block_Size; + } +} + +/* + * USHAHashSize + * + * Description: + * This function will return the hashsize for the given SHA + * algorithm. + * + * Parameters: + * whichSha: + * which SHA algorithm to query + * + * Returns: + * hash size + * + */ +int USHAHashSize(enum SHAversion whichSha) +{ + switch (whichSha) { + case SHA224: return SHA224HashSize; + default: + case SHA256: return SHA256HashSize; + } +} diff --git a/nfq/darkmagic.c b/nfq/darkmagic.c new file mode 100644 index 0000000..40eeeda --- /dev/null +++ b/nfq/darkmagic.c @@ -0,0 +1,1879 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef IP_NODEFRAG +// for very old toolchains +#define IP_NODEFRAG 22 +#endif + +#include "darkmagic.h" +#include "helpers.h" +#include "params.h" +#include "nfqws.h" + +#ifdef __CYGWIN__ +#include +#include +#endif + +uint32_t net32_add(uint32_t netorder_value, uint32_t cpuorder_increment) +{ + return htonl(ntohl(netorder_value)+cpuorder_increment); +} +uint32_t net16_add(uint16_t netorder_value, uint16_t cpuorder_increment) +{ + return htons(ntohs(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; +} +uint8_t tcp_find_scale_factor(const struct tcphdr *tcp) +{ + uint8_t *scale = tcp_find_option((struct tcphdr*)tcp,3); // tcp option 3 - scale factor + if (scale && scale[1]==3) return scale[2]; + return SCALE_NONE; +} +bool tcp_has_fastopen(const struct tcphdr *tcp) +{ + uint8_t *opt; + // new style RFC7413 + opt = tcp_find_option((struct tcphdr*)tcp, 34); + if (opt) return true; + // old style RFC6994 + opt = tcp_find_option((struct tcphdr*)tcp, 254); + return opt && opt[1]>=4 && opt[2]==0xF9 && opt[3]==0x89; +} + +// n prefix (nsport, nwsize) means network byte order +static void fill_tcphdr( + struct tcphdr *tcp, uint32_t fooling, uint8_t tcp_flags, + uint32_t nseq, uint32_t nack_seq, + uint16_t nsport, uint16_t ndport, + uint16_t nwsize, uint8_t scale_factor, + uint32_t *timestamps, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + uint16_t data_len) +{ + char *tcpopt = (char*)(tcp+1); + uint8_t t=0; + + memset(tcp,0,sizeof(*tcp)); + tcp->th_sport = nsport; + tcp->th_dport = ndport; + if (fooling & FOOL_BADSEQ) + { + tcp->th_seq = net32_add(nseq,badseq_increment); + tcp->th_ack = net32_add(nack_seq,badseq_ack_increment); + } + else + { + tcp->th_seq = nseq; + tcp->th_ack = nack_seq; + } + tcp->th_off = 5; + if ((fooling & FOOL_DATANOACK) && !(tcp_flags & (TH_SYN|TH_RST)) && data_len) + tcp_flags &= ~TH_ACK; + *((uint8_t*)tcp+13)= tcp_flags; + tcp->th_win = nwsize; + if (fooling & 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 & 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 & FOOL_TS)) ? timestamps[1] : -1; + t+=10; + } + if (scale_factor!=SCALE_NONE) + { + tcpopt[t++]=3; + tcpopt[t++]=3; + tcpopt[t++]=scale_factor; + } + while (t&3) tcpopt[t++]=1; // noop + tcp->th_off += t>>2; + tcp->th_sum = 0; +} +static uint16_t tcpopt_len(uint32_t fooling, const uint32_t *timestamps, uint8_t scale_factor) +{ + uint16_t t=0; + if (fooling & FOOL_MD5SIG) t=18; + if ((fooling & FOOL_TS) || timestamps) t+=10; + if (scale_factor!=SCALE_NONE) t+=3; + return (t+3)&~3; +} + +// n prefix (nsport, nwsize) means network byte order +static void fill_udphdr(struct udphdr *udp, uint16_t nsport, uint16_t ndport, uint16_t len_payload) +{ + udp->uh_sport = nsport; + udp->uh_dport = ndport; + udp->uh_ulen = htons(len_payload+sizeof(struct udphdr)); + udp->uh_sum = 0; +} + +static void fill_iphdr(struct ip *ip, const struct in_addr *src, const struct in_addr *dst, uint16_t pktlen, uint8_t proto, uint8_t ttl, uint8_t tos) +{ + ip->ip_tos = tos; + ip->ip_sum = 0; + 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 = proto; + ip->ip_src = *src; + ip->ip_dst = *dst; +} +static void fill_ip6hdr(struct ip6_hdr *ip6, const struct in6_addr *src, const struct in6_addr *dst, uint16_t payloadlen, uint8_t proto, uint8_t ttl, uint32_t flow_label) +{ + ip6->ip6_ctlun.ip6_un1.ip6_un1_flow = htonl(ntohl(flow_label) & 0x0FFFFFFF | 0x60000000); + ip6->ip6_ctlun.ip6_un1.ip6_un1_plen = htons(payloadlen); + ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt = proto; + ip6->ip6_ctlun.ip6_un1.ip6_un1_hlim = ttl; + ip6->ip6_src = *src; + ip6->ip6_dst = *dst; +} + +bool prepare_tcp_segment4( + const struct sockaddr_in *src, const struct sockaddr_in *dst, + uint8_t tcp_flags, + uint32_t nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint8_t tos, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + uint16_t tcpoptlen = tcpopt_len(fooling,timestamps,scale_factor); + uint16_t ip_payload_len = sizeof(struct tcphdr) + tcpoptlen + len; + uint16_t pktlen = sizeof(struct ip) + ip_payload_len; + if (pktlen>*buflen) return false; + + struct ip *ip = (struct ip*)buf; + struct tcphdr *tcp = (struct tcphdr*)(ip+1); + uint8_t *payload = (uint8_t*)(tcp+1)+tcpoptlen; + + fill_iphdr(ip, &src->sin_addr, &dst->sin_addr, pktlen, IPPROTO_TCP, ttl, tos); + fill_tcphdr(tcp,fooling,tcp_flags,nseq,nack_seq,src->sin_port,dst->sin_port,nwsize,scale_factor,timestamps,badseq_increment,badseq_ack_increment,len); + + memcpy(payload,data,len); + tcp4_fix_checksum(tcp,ip_payload_len,&ip->ip_src,&ip->ip_dst); + if (fooling & FOOL_BADSUM) tcp->th_sum^=htons(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 nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint32_t flow_label, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + uint16_t tcpoptlen = tcpopt_len(fooling,timestamps,scale_factor); + uint16_t transport_payload_len = sizeof(struct tcphdr) + tcpoptlen + len; + uint16_t ip_payload_len = transport_payload_len + + 8*!!((fooling & (FOOL_HOPBYHOP|FOOL_HOPBYHOP2))==FOOL_HOPBYHOP) + + 16*!!(fooling & FOOL_HOPBYHOP2) + + 8*!!(fooling & FOOL_DESTOPT) + + 8*!!(fooling & FOOL_IPFRAG1); + uint16_t pktlen = sizeof(struct ip6_hdr) + ip_payload_len; + if (pktlen>*buflen) return false; + + struct ip6_hdr *ip6 = (struct ip6_hdr*)buf; + struct tcphdr *tcp = (struct tcphdr*)(ip6+1); + uint8_t proto = IPPROTO_TCP, *nexttype = NULL; + + if (fooling & (FOOL_HOPBYHOP|FOOL_HOPBYHOP2)) + { + struct ip6_hbh *hbh = (struct ip6_hbh*)tcp; + tcp = (struct tcphdr*)((uint8_t*)tcp+8); + memset(hbh,0,8); + // extra HOPBYHOP header. standard violation + if (fooling & FOOL_HOPBYHOP2) + { + hbh = (struct ip6_hbh*)tcp; + tcp = (struct tcphdr*)((uint8_t*)tcp+8); + memset(hbh,0,8); + } + hbh->ip6h_nxt = IPPROTO_TCP; + nexttype = &hbh->ip6h_nxt; + proto = IPPROTO_HOPOPTS; + } + if (fooling & FOOL_DESTOPT) + { + struct ip6_dest *dest = (struct ip6_dest*)tcp; + tcp = (struct tcphdr*)((uint8_t*)tcp+8); + memset(dest,0,8); + dest->ip6d_nxt = IPPROTO_TCP; + if (nexttype) + *nexttype = IPPROTO_DSTOPTS; + else + proto = IPPROTO_DSTOPTS; + nexttype = &dest->ip6d_nxt; + } + if (fooling & FOOL_IPFRAG1) + { + struct ip6_frag *frag = (struct ip6_frag*)tcp; + tcp = (struct tcphdr*)((uint8_t*)tcp+sizeof(struct ip6_frag)); + frag->ip6f_nxt = IPPROTO_TCP; + frag->ip6f_ident = htonl(1+random()%0xFFFFFFFF); + frag->ip6f_reserved = 0; + frag->ip6f_offlg = 0; + if (nexttype) + *nexttype = IPPROTO_FRAGMENT; + else + proto = IPPROTO_FRAGMENT; + } + + uint8_t *payload = (uint8_t*)(tcp+1)+tcpoptlen; + + fill_ip6hdr(ip6, &src->sin6_addr, &dst->sin6_addr, ip_payload_len, proto, ttl, flow_label); + fill_tcphdr(tcp,fooling,tcp_flags,nseq,nack_seq,src->sin6_port,dst->sin6_port,nwsize,scale_factor,timestamps,badseq_increment,badseq_ack_increment,len); + + memcpy(payload,data,len); + tcp6_fix_checksum(tcp,transport_payload_len,&ip6->ip6_src,&ip6->ip6_dst); + if (fooling & FOOL_BADSUM) tcp->th_sum^=htons(0xBEAF); + + *buflen = pktlen; + return true; +} + +bool prepare_tcp_segment( + const struct sockaddr *src, const struct sockaddr *dst, + uint8_t tcp_flags, + uint32_t nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint8_t tos, uint32_t flow_label, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + 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,nseq,nack_seq,nwsize,scale_factor,timestamps,ttl,tos,fooling,badseq_increment,badseq_ack_increment,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,nseq,nack_seq,nwsize,scale_factor,timestamps,ttl,flow_label,fooling,badseq_increment,badseq_ack_increment,data,len,buf,buflen) : + false; +} + + +// padlen<0 means payload shrinking +bool prepare_udp_segment4( + const struct sockaddr_in *src, const struct sockaddr_in *dst, + uint8_t ttl, + uint8_t tos, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + if ((len+padlen)<=0) padlen=-(int)len+1; // do not allow payload to be less that 1 byte + if ((len+padlen)>0xFFFF) padlen=0xFFFF-len; // do not allow payload size to exceed u16 range + if (padlen<0) + { + len+=padlen; + padlen=0; + } + uint16_t datalen = (uint16_t)(len + padlen); + uint16_t ip_payload_len = sizeof(struct udphdr) + datalen; + uint16_t pktlen = sizeof(struct ip) + ip_payload_len; + if (pktlen>*buflen) return false; + + struct ip *ip = (struct ip*)buf; + struct udphdr *udp = (struct udphdr*)(ip+1); + uint8_t *payload = (uint8_t*)(udp+1); + + + fill_iphdr(ip, &src->sin_addr, &dst->sin_addr, pktlen, IPPROTO_UDP, ttl, tos); + fill_udphdr(udp, src->sin_port, dst->sin_port, datalen); + + memcpy(payload,data,len); + if (padding) + fill_pattern(payload+len,padlen,padding,padding_size); + else + memset(payload+len,0,padlen); + udp4_fix_checksum(udp,ip_payload_len,&ip->ip_src,&ip->ip_dst); + if (fooling & FOOL_BADSUM) udp->uh_sum^=htons(0xBEAF); + + *buflen = pktlen; + return true; +} +bool prepare_udp_segment6( + const struct sockaddr_in6 *src, const struct sockaddr_in6 *dst, + uint8_t ttl, + uint32_t flow_label, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + if ((len+padlen)<=0) padlen=-(int)len+1; // do not allow payload to be less that 1 byte + if ((len+padlen)>0xFFFF) padlen=0xFFFF-len; // do not allow payload size to exceed u16 range + if (padlen<0) + { + len+=padlen; + padlen=0; + } + uint16_t datalen = (uint16_t)(len + padlen); + uint16_t transport_payload_len = sizeof(struct udphdr) + datalen; + uint16_t ip_payload_len = transport_payload_len + + 8*!!((fooling & (FOOL_HOPBYHOP|FOOL_HOPBYHOP2))==FOOL_HOPBYHOP) + + 16*!!(fooling & FOOL_HOPBYHOP2) + + 8*!!(fooling & FOOL_DESTOPT) + + 8*!!(fooling & FOOL_IPFRAG1); + uint16_t pktlen = sizeof(struct ip6_hdr) + ip_payload_len; + if (pktlen>*buflen) return false; + + struct ip6_hdr *ip6 = (struct ip6_hdr*)buf; + struct udphdr *udp = (struct udphdr*)(ip6+1); + uint8_t proto = IPPROTO_UDP, *nexttype = NULL; + + if (fooling & (FOOL_HOPBYHOP|FOOL_HOPBYHOP2)) + { + struct ip6_hbh *hbh = (struct ip6_hbh*)udp; + udp = (struct udphdr*)((uint8_t*)udp+8); + memset(hbh,0,8); + // extra HOPBYHOP header. standard violation + if (fooling & FOOL_HOPBYHOP2) + { + hbh = (struct ip6_hbh*)udp; + udp = (struct udphdr*)((uint8_t*)udp+8); + memset(hbh,0,8); + } + hbh->ip6h_nxt = IPPROTO_UDP; + nexttype = &hbh->ip6h_nxt; + proto = IPPROTO_HOPOPTS; + } + if (fooling & FOOL_DESTOPT) + { + struct ip6_dest *dest = (struct ip6_dest*)udp; + udp = (struct udphdr*)((uint8_t*)udp+8); + memset(dest,0,8); + dest->ip6d_nxt = IPPROTO_UDP; + if (nexttype) + *nexttype = IPPROTO_DSTOPTS; + else + proto = IPPROTO_DSTOPTS; + nexttype = &dest->ip6d_nxt; + } + if (fooling & FOOL_IPFRAG1) + { + struct ip6_frag *frag = (struct ip6_frag*)udp; + udp = (struct udphdr*)((uint8_t*)udp+sizeof(struct ip6_frag)); + frag->ip6f_nxt = IPPROTO_UDP; + frag->ip6f_ident = htonl(1+random()%0xFFFFFFFF); + frag->ip6f_reserved = 0; + frag->ip6f_offlg = 0; + if (nexttype) + *nexttype = IPPROTO_FRAGMENT; + else + proto = IPPROTO_FRAGMENT; + } + + uint8_t *payload = (uint8_t*)(udp+1); + + fill_ip6hdr(ip6, &src->sin6_addr, &dst->sin6_addr, ip_payload_len, proto, ttl, flow_label); + fill_udphdr(udp, src->sin6_port, dst->sin6_port, datalen); + + memcpy(payload,data,len); + if (padding) + fill_pattern(payload+len,padlen,padding,padding_size); + else + memset(payload+len,0,padlen); + udp6_fix_checksum(udp,transport_payload_len,&ip6->ip6_src,&ip6->ip6_dst); + if (fooling & FOOL_BADSUM) udp->uh_sum^=htons(0xBEAF); + + *buflen = pktlen; + return true; +} +bool prepare_udp_segment( + const struct sockaddr *src, const struct sockaddr *dst, + uint8_t ttl, + uint8_t tos, uint32_t flow_label, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen) +{ + return (src->sa_family==AF_INET && dst->sa_family==AF_INET) ? + prepare_udp_segment4((struct sockaddr_in *)src,(struct sockaddr_in *)dst,ttl,tos,fooling,padding,padding_size,padlen,data,len,buf,buflen) : + (src->sa_family==AF_INET6 && dst->sa_family==AF_INET6) ? + prepare_udp_segment6((struct sockaddr_in6 *)src,(struct sockaddr_in6 *)dst,ttl,flow_label,fooling,padding,padding_size,padlen,data,len,buf,buflen) : + false; +} + +bool ip6_insert_simple_hdr(uint8_t type, uint8_t *data_pkt, size_t len_pkt, uint8_t *buf, size_t *buflen) +{ + if ((len_pkt+8)<=*buflen && len_pkt>=sizeof(struct ip6_hdr)) + { + struct ip6_hdr *ip6 = (struct ip6_hdr *)buf; + struct ip6_ext *hdr = (struct ip6_ext*)(ip6+1); + *ip6 = *(struct ip6_hdr*)data_pkt; + memset(hdr,0,8); + memcpy((uint8_t*)hdr+8, data_pkt+sizeof(struct ip6_hdr), len_pkt-sizeof(struct ip6_hdr)); + hdr->ip6e_nxt = ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt; + ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt = type; + ip6->ip6_ctlun.ip6_un1.ip6_un1_plen = net16_add(ip6->ip6_ctlun.ip6_un1.ip6_un1_plen, 8); + *buflen = len_pkt + 8; + return true; + } + return false; +} + +// split ipv4 packet into 2 fragments at data payload position frag_pos +bool ip_frag4( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size) +{ + uint16_t hdrlen, payload_len; + // frag_pos must be 8-byte aligned + if (frag_pos & 7 || pkt_size < sizeof(struct ip)) return false; + payload_len = htons(((struct ip *)pkt)->ip_len); + hdrlen = ((struct ip *)pkt)->ip_hl<<2; + if (payload_len>pkt_size || hdrlen>pkt_size || hdrlen>payload_len) return false; + payload_len -= hdrlen; + if (frag_pos>=payload_len || *pkt1_size<(hdrlen+frag_pos) || *pkt2_size<(hdrlen+payload_len-frag_pos)) return false; + + memcpy(pkt1, pkt, hdrlen+frag_pos); + ((struct ip*)pkt1)->ip_off = htons(IP_MF); + ((struct ip*)pkt1)->ip_len = htons(hdrlen+frag_pos); + if (ident!=(uint32_t)-1) ((struct ip*)pkt1)->ip_id = (uint16_t)ident; + *pkt1_size=hdrlen+frag_pos; + ip4_fix_checksum((struct ip *)pkt1); + + memcpy(pkt2, pkt, hdrlen); + memcpy(pkt2+hdrlen, pkt+hdrlen+frag_pos, payload_len-frag_pos); + ((struct ip*)pkt2)->ip_off = htons((uint16_t)frag_pos>>3 & IP_OFFMASK); + ((struct ip*)pkt2)->ip_len = htons(hdrlen+payload_len-frag_pos); + if (ident!=(uint32_t)-1) ((struct ip*)pkt2)->ip_id = (uint16_t)ident; + *pkt2_size=hdrlen+payload_len-frag_pos; + ip4_fix_checksum((struct ip *)pkt2); + + return true; +} +bool ip_frag6( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size) +{ + size_t payload_len, unfragmentable; + uint8_t *last_header_type; + uint8_t proto; + struct ip6_frag *frag; + const uint8_t *payload; + + if (frag_pos & 7 || pkt_size < sizeof(struct ip6_hdr)) return false; + payload_len = sizeof(struct ip6_hdr) + htons(((struct ip6_hdr*)pkt)->ip6_ctlun.ip6_un1.ip6_un1_plen); + if (pkt_size < payload_len) return false; + + payload = pkt; + proto_skip_ipv6((uint8_t**)&payload, &payload_len, &proto, &last_header_type); + unfragmentable = payload - pkt; + + //printf("pkt_size=%zu FRAG_POS=%zu payload_len=%zu unfragmentable=%zu dh=%zu\n",pkt_size,frag_pos,payload_len,unfragmentable,last_header_type - pkt); + + if (frag_pos>=payload_len || + *pkt1_size<(unfragmentable + sizeof(struct ip6_frag) + frag_pos) || + *pkt2_size<(unfragmentable + sizeof(struct ip6_frag) + payload_len - frag_pos)) + { + return false; + } + + memcpy(pkt1, pkt, unfragmentable); + ((struct ip6_hdr*)pkt1)->ip6_ctlun.ip6_un1.ip6_un1_plen = htons(unfragmentable - sizeof(struct ip6_hdr) + sizeof(struct ip6_frag) + frag_pos); + pkt1[last_header_type - pkt] = IPPROTO_FRAGMENT; + frag = (struct ip6_frag*)(pkt1 + unfragmentable); + frag->ip6f_nxt = proto; + frag->ip6f_reserved = 0; + frag->ip6f_offlg = IP6F_MORE_FRAG; + frag->ip6f_ident = ident; + memcpy(frag+1, pkt + unfragmentable, frag_pos); + *pkt1_size = unfragmentable + sizeof(struct ip6_frag) + frag_pos; + + memcpy(pkt2, pkt, sizeof(struct ip6_hdr)); + ((struct ip6_hdr*)pkt2)->ip6_ctlun.ip6_un1.ip6_un1_plen = htons(unfragmentable - sizeof(struct ip6_hdr) + sizeof(struct ip6_frag) + payload_len - frag_pos); + pkt2[last_header_type - pkt] = IPPROTO_FRAGMENT; + frag = (struct ip6_frag*)(pkt2 + unfragmentable); + frag->ip6f_nxt = proto; + frag->ip6f_reserved = 0; + frag->ip6f_offlg = htons(frag_pos); + frag->ip6f_ident = ident; + memcpy(frag+1, pkt + unfragmentable + frag_pos, payload_len - frag_pos); + *pkt2_size = unfragmentable + sizeof(struct ip6_frag) + payload_len - frag_pos; + + return true; +} +bool ip_frag( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size) +{ + if (proto_check_ipv4(pkt,pkt_size)) + return ip_frag4(pkt,pkt_size,frag_pos,ident,pkt1,pkt1_size,pkt2,pkt2_size); + else if (proto_check_ipv6(pkt,pkt_size)) + return ip_frag6(pkt,pkt_size,frag_pos,ident,pkt1,pkt1_size,pkt2,pkt2_size); + else + return false; +} + +void rewrite_ttl(struct ip *ip, struct ip6_hdr *ip6, uint8_t ttl) +{ + if (ip) ip->ip_ttl = ttl; + if (ip6) ip6->ip6_ctlun.ip6_un1.ip6_un1_hlim = ttl; +} + + +void extract_ports(const struct tcphdr *tcphdr, const struct udphdr *udphdr, uint8_t *proto, uint16_t *sport, uint16_t *dport) +{ + if (sport) *sport = htons(tcphdr ? tcphdr->th_sport : udphdr ? udphdr->uh_sport : 0); + if (dport) *dport = htons(tcphdr ? tcphdr->th_dport : udphdr ? udphdr->uh_dport : 0); + if (proto) *proto = tcphdr ? IPPROTO_TCP : udphdr ? IPPROTO_UDP : -1; +} + +void extract_endpoints(const struct ip *ip,const struct ip6_hdr *ip6hdr,const struct tcphdr *tcphdr,const struct udphdr *udphdr, 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 : udphdr ? udphdr->uh_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 : udphdr ? udphdr->uh_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 : udphdr ? udphdr->uh_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 : udphdr ? udphdr->uh_sport : 0; + si->sin6_addr = ip6hdr->ip6_src; + si->sin6_flowinfo = 0; + si->sin6_scope_id = 0; + } + } +} + +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_ICMPV6: + return "icmp6"; + case IPPROTO_IGMP: + return "igmp"; + case IPPROTO_ESP: + return "esp"; + case IPPROTO_AH: + return "ah"; + case IPPROTO_IPV6: + return "6in4"; + case IPPROTO_IPIP: + return "4in4"; +#ifdef IPPROTO_GRE + case IPPROTO_GRE: + return "gre"; +#endif +#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); +} +uint16_t family_from_proto(uint8_t l3proto) +{ + switch(l3proto) + { + case IPPROTO_IP: return AF_INET; + case IPPROTO_IPV6: return AF_INET6; + default: return -1; + } +} + +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); +} +void str_ip(char *s, size_t s_len, const struct ip *ip) +{ + char ss[35],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 ttl=%u",ss,s_proto,ip->ip_ttl); +} +void print_ip(const struct ip *ip) +{ + char s[66]; + str_ip(s,sizeof(s),ip); + printf("%s",s); +} +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); +} +void str_ip6hdr(char *s, size_t s_len, const struct ip6_hdr *ip6hdr, uint8_t proto) +{ + char ss[83],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 ttl=%u",ss,s_proto,ip6hdr->ip6_hlim); +} +void print_ip6hdr(const struct ip6_hdr *ip6hdr, uint8_t proto) +{ + char s[128]; + str_ip6hdr(s,sizeof(s),ip6hdr,proto); + printf("%s",s); +} +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); +} +void str_udphdr(char *s, size_t s_len, const struct udphdr *udphdr) +{ + snprintf(s,s_len,"sport=%u dport=%u",htons(udphdr->uh_sport),htons(udphdr->uh_dport)); +} +void print_udphdr(const struct udphdr *udphdr) +{ + char s[30]; + str_udphdr(s,sizeof(s),udphdr); + printf("%s",s); +} + + + + +bool proto_check_ipv4(const 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(const 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_udp(const uint8_t *data, size_t len) +{ + return len >= 8 && len>=(data[4]<<8 | data[5]); +} +void proto_skip_udp(uint8_t **data, size_t *len) +{ + *data += 8; + *len -= 8; +} + +bool proto_check_ipv6(const 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, uint8_t **last_header_type) +{ + size_t hdrlen; + uint8_t HeaderType; + + if (proto_type) *proto_type = 0; // put error in advance + + HeaderType = (*data)[6]; // NextHeader field + if (last_header_type) *last_header_type = (*data)+6; + *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; + if (last_header_type) *last_header_type = *data; + // advance to the next header location + *len -= hdrlen; + *data += hdrlen; + } + // we have garbage +} + +void proto_dissect_l3l4( + uint8_t *data, size_t len, + struct ip **ip, struct ip6_hdr **ip6, + uint8_t *proto, + struct tcphdr **tcp, + struct udphdr **udp, + size_t *transport_len, + uint8_t **data_payload, size_t *len_payload) +{ + *ip = NULL; + *ip6 = NULL; + *proto = 0; + *tcp = NULL; + *transport_len = 0; + *udp = NULL; + *data_payload = NULL; + *len_payload = 0; + + if (proto_check_ipv4(data, len)) + { + *ip = (struct ip *) data; + *proto = (*ip)->ip_p; + proto_skip_ipv4(&data, &len); + } + else if (proto_check_ipv6(data, len)) + { + *ip6 = (struct ip6_hdr *) data; + proto_skip_ipv6(&data, &len, proto, NULL); + } + else + { + return; + } + + if (*proto==IPPROTO_TCP && proto_check_tcp(data, len)) + { + *tcp = (struct tcphdr *) data; + *transport_len = len; + + proto_skip_tcp(&data, &len); + + *data_payload = data; + *len_payload = len; + + } + else if (*proto==IPPROTO_UDP && proto_check_udp(data, len)) + { + *udp = (struct udphdr *) data; + *transport_len = len; + + proto_skip_udp(&data, &len); + + *data_payload = data; + *len_payload = len; + } +} + + +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)); +} +bool tcp_syn_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_SYN); +} +bool tcp_ack_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); +} + +void tcp_rewrite_wscale(struct tcphdr *tcp, uint8_t scale_factor) +{ + uint8_t *scale,scale_factor_old; + + if (scale_factor!=SCALE_NONE) + { + scale = tcp_find_option(tcp,3); // tcp option 3 - scale factor + if (scale && scale[1]==3) // length should be 3 + { + scale_factor_old=scale[2]; + // do not allow increasing scale factor + if (scale_factor>=scale_factor_old) + DLOG("Scale factor %u unchanged\n", scale_factor_old); + else + { + scale[2]=scale_factor; + DLOG("Scale factor change %u => %u\n", scale_factor_old, scale_factor); + } + } + } +} +// scale_factor=SCALE_NONE - do not change +void tcp_rewrite_winsize(struct tcphdr *tcp, uint16_t winsize, uint8_t scale_factor) +{ + 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); + + tcp_rewrite_wscale(tcp, scale_factor); +} + + +#ifdef __CYGWIN__ + +static HANDLE w_filter = NULL; +static OVERLAPPED ovl = { .hEvent = NULL }; +static const struct str_list_head *wlan_filter_ssid = NULL, *nlm_filter_net = NULL; +static DWORD logical_net_filter_tick=0; +uint32_t w_win32_error=0; +INetworkListManager* pNetworkListManager=NULL; + +static void guid2str(const GUID *guid, char *str) +{ + snprintf(str,37, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); +} +static bool str2guid(const char* str, GUID *guid) +{ + unsigned int u[11],k; + + if (36 != strlen(str) || 11 != sscanf(str, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", u+0, u+1, u+2, u+3, u+4, u+5, u+6, u+7, u+8, u+9, u+10)) + return false; + guid->Data1 = u[0]; + if ((u[1] & 0xFFFF0000) || (u[2] & 0xFFFF0000)) return false; + guid->Data2 = (USHORT)u[1]; + guid->Data3 = (USHORT)u[2]; + for (k = 0; k < 8; k++) + { + if (u[k+3] & 0xFFFFFF00) return false; + guid->Data4[k] = (UCHAR)u[k+3]; + } + return true; +} + +static const char *sNetworkCards="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards"; +// get adapter name from guid string +static bool AdapterID2Name(const GUID *guid,char *name,DWORD name_len) +{ + char sguid[39],sidx[32],val[256]; + HKEY hkNetworkCards,hkCard; + DWORD dwIndex,dwLen; + bool bRet = false; + WCHAR namew[128]; + DWORD namew_len; + + if (name_len<2) return false; + + if ((w_win32_error = RegOpenKeyExA(HKEY_LOCAL_MACHINE,sNetworkCards,0,KEY_ENUMERATE_SUB_KEYS,&hkNetworkCards)) == ERROR_SUCCESS) + { + guid2str(guid, sguid+1); + sguid[0]='{'; + sguid[37]='}'; + sguid[38]='\0'; + + for (dwIndex=0;;dwIndex++) + { + dwLen=sizeof(sidx)-1; + w_win32_error = RegEnumKeyExA(hkNetworkCards,dwIndex,sidx,&dwLen,NULL,NULL,NULL,NULL); + if (w_win32_error == ERROR_SUCCESS) + { + sidx[dwLen]='\0'; + + if ((w_win32_error = RegOpenKeyExA(hkNetworkCards,sidx,0,KEY_QUERY_VALUE,&hkCard)) == ERROR_SUCCESS) + { + dwLen=sizeof(val)-1; + if ((w_win32_error = RegQueryValueExA(hkCard,"ServiceName",NULL,NULL,val,&dwLen)) == ERROR_SUCCESS) + { + val[dwLen]='\0'; + if (!strcmp(val,sguid)) + { + namew_len = sizeof(namew)-sizeof(WCHAR); + if ((w_win32_error = RegQueryValueExW(hkCard,L"Description",NULL,NULL,(LPBYTE)namew,&namew_len)) == ERROR_SUCCESS) + { + namew[namew_len/sizeof(WCHAR)]=L'\0'; + if (WideCharToMultiByte(CP_UTF8, 0, namew, -1, name, name_len, NULL, NULL)) + bRet = true; + } + } + } + RegCloseKey(hkCard); + } + if (bRet) break; + } + else + break; + } + RegCloseKey(hkNetworkCards); + } + + return bRet; +} + +bool win_dark_init(const struct str_list_head *ssid_filter, const struct str_list_head *nlm_filter) +{ + win_dark_deinit(); + if (LIST_EMPTY(ssid_filter)) ssid_filter=NULL; + if (LIST_EMPTY(nlm_filter)) nlm_filter=NULL; + if (nlm_filter) + { + if (SUCCEEDED(w_win32_error = CoInitialize(NULL))) + { + if (FAILED(w_win32_error = CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, (LPVOID*)&pNetworkListManager))) + { + CoUninitialize(); + return false; + } + } + else + return false; + } + nlm_filter_net = nlm_filter; + wlan_filter_ssid = ssid_filter; + return true; +} +bool win_dark_deinit(void) +{ + if (pNetworkListManager) + { + pNetworkListManager->lpVtbl->Release(pNetworkListManager); + pNetworkListManager = NULL; + } + if (nlm_filter_net) CoUninitialize(); + wlan_filter_ssid = nlm_filter_net = NULL; +} + + +bool nlm_list(bool bAll) +{ + bool bRet = true; + + if (SUCCEEDED(w_win32_error = CoInitialize(NULL))) + { + INetworkListManager* pNetworkListManager; + if (SUCCEEDED(w_win32_error = CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, (LPVOID*)&pNetworkListManager))) + { + IEnumNetworks* pEnumNetworks; + if (SUCCEEDED(w_win32_error = pNetworkListManager->lpVtbl->GetNetworks(pNetworkListManager, NLM_ENUM_NETWORK_ALL, &pEnumNetworks))) + { + INetwork *pNet; + INetworkConnection *pConn; + IEnumNetworkConnections *pEnumConnections; + VARIANT_BOOL bIsConnected, bIsConnectedInet; + NLM_NETWORK_CATEGORY category; + GUID idNet, idAdapter; + BSTR bstrName; + char Name[128],Name2[128]; + int connected; + for (connected = 1; connected >= !bAll; connected--) + { + for (;;) + { + if (FAILED(w_win32_error = pEnumNetworks->lpVtbl->Next(pEnumNetworks, 1, &pNet, NULL))) + { + bRet = false; + break; + } + if (w_win32_error != S_OK) break; + if (SUCCEEDED(w_win32_error = pNet->lpVtbl->get_IsConnected(pNet, &bIsConnected)) && + SUCCEEDED(w_win32_error = pNet->lpVtbl->get_IsConnectedToInternet(pNet, &bIsConnectedInet)) && + SUCCEEDED(w_win32_error = pNet->lpVtbl->GetNetworkId(pNet, &idNet)) && + SUCCEEDED(w_win32_error = pNet->lpVtbl->GetCategory(pNet, &category)) && + SUCCEEDED(w_win32_error = pNet->lpVtbl->GetName(pNet, &bstrName))) + { + if (!!bIsConnected == connected) + { + if (WideCharToMultiByte(CP_UTF8, 0, bstrName, -1, Name, sizeof(Name), NULL, NULL)) + { + printf("Name : %s", Name); + if (bIsConnected) printf(" (connected)"); + if (bIsConnectedInet) printf(" (inet)"); + printf(" (%s)\n", + category==NLM_NETWORK_CATEGORY_PUBLIC ? "public" : + category==NLM_NETWORK_CATEGORY_PRIVATE ? "private" : + category==NLM_NETWORK_CATEGORY_DOMAIN_AUTHENTICATED ? "domain" : + "unknown"); + guid2str(&idNet, Name); + printf("NetID : %s\n", Name); + if (connected && SUCCEEDED(w_win32_error = pNet->lpVtbl->GetNetworkConnections(pNet, &pEnumConnections))) + { + while ((w_win32_error = pEnumConnections->lpVtbl->Next(pEnumConnections, 1, &pConn, NULL))==S_OK) + { + if (SUCCEEDED(w_win32_error = pConn->lpVtbl->GetAdapterId(pConn,&idAdapter))) + { + guid2str(&idAdapter, Name); + if (AdapterID2Name(&idAdapter,Name2,sizeof(Name2))) + printf("Adapter : %s (%s)\n", Name2, Name); + else + printf("Adapter : %s\n", Name); + } + pConn->lpVtbl->Release(pConn); + } + pEnumConnections->lpVtbl->Release(pEnumConnections); + } + printf("\n"); + } + else + { + w_win32_error = HRESULT_FROM_WIN32(GetLastError()); + bRet = false; + } + } + SysFreeString(bstrName); + } + else + bRet = false; + pNet->lpVtbl->Release(pNet); + if (!bRet) break; + } + if (!bRet) break; + pEnumNetworks->lpVtbl->Reset(pEnumNetworks); + } + pEnumNetworks->lpVtbl->Release(pEnumNetworks); + } + else + bRet = false; + pNetworkListManager->lpVtbl->Release(pNetworkListManager); + } + else + bRet = false; + } + else + bRet = false; + + CoUninitialize(); + return bRet; +} + +static bool nlm_filter_match(const struct str_list_head *nlm_list) +{ + // no filter given. always matches. + if (!nlm_list || LIST_EMPTY(nlm_list)) + { + w_win32_error = 0; + return true; + } + + bool bRet = true, bMatch = false; + IEnumNetworks* pEnum; + + if (SUCCEEDED(w_win32_error = pNetworkListManager->lpVtbl->GetNetworks(pNetworkListManager, NLM_ENUM_NETWORK_CONNECTED, &pEnum))) + { + INetwork* pNet; + GUID idNet,g; + BSTR bstrName; + char Name[128]; + struct str_list *nlm; + for (;;) + { + if (FAILED(w_win32_error = pEnum->lpVtbl->Next(pEnum, 1, &pNet, NULL))) + { + bRet = false; + break; + } + if (w_win32_error != S_OK) break; + if (SUCCEEDED(w_win32_error = pNet->lpVtbl->GetNetworkId(pNet, &idNet)) && + SUCCEEDED(w_win32_error = pNet->lpVtbl->GetName(pNet, &bstrName))) + { + if (WideCharToMultiByte(CP_UTF8, 0, bstrName, -1, Name, sizeof(Name), NULL, NULL)) + { + LIST_FOREACH(nlm, nlm_list, next) + { + bMatch = !strcmp(Name,nlm->str) || str2guid(nlm->str,&g) && !memcmp(&idNet,&g,sizeof(GUID)); + if (bMatch) break; + } + } + else + { + w_win32_error = HRESULT_FROM_WIN32(GetLastError()); + bRet = false; + } + SysFreeString(bstrName); + } + else + bRet = false; + pNet->lpVtbl->Release(pNet); + if (!bRet || bMatch) break; + } + pEnum->lpVtbl->Release(pEnum); + } + else + bRet = false; + return bRet && bMatch; +} + +static bool wlan_filter_match(const struct str_list_head *ssid_list) +{ + DWORD dwCurVersion; + HANDLE hClient = NULL; + PWLAN_INTERFACE_INFO_LIST pIfList = NULL; + PWLAN_INTERFACE_INFO pIfInfo; + PWLAN_CONNECTION_ATTRIBUTES pConnectInfo; + DWORD connectInfoSize, k; + bool bRes; + struct str_list *ssid; + size_t len; + + // no filter given. always matches. + if (!ssid_list || LIST_EMPTY(ssid_list)) + { + w_win32_error = 0; + return true; + } + + w_win32_error = WlanOpenHandle(2, NULL, &dwCurVersion, &hClient); + if (w_win32_error != ERROR_SUCCESS) goto fail; + w_win32_error = WlanEnumInterfaces(hClient, NULL, &pIfList); + if (w_win32_error != ERROR_SUCCESS) goto fail; + for (k = 0; k < pIfList->dwNumberOfItems; k++) + { + pIfInfo = pIfList->InterfaceInfo + k; + if (pIfInfo->isState == wlan_interface_state_connected) + { + w_win32_error = WlanQueryInterface(hClient, + &pIfInfo->InterfaceGuid, + wlan_intf_opcode_current_connection, + NULL, + &connectInfoSize, + (PVOID *)&pConnectInfo, + NULL); + if (w_win32_error != ERROR_SUCCESS) goto fail; + +// printf("%s\n", pConnectInfo->wlanAssociationAttributes.dot11Ssid.ucSSID); + + LIST_FOREACH(ssid, ssid_list, next) + { + len = strlen(ssid->str); + if (len==pConnectInfo->wlanAssociationAttributes.dot11Ssid.uSSIDLength && !memcmp(ssid->str,pConnectInfo->wlanAssociationAttributes.dot11Ssid.ucSSID,len)) + { + WlanFreeMemory(pConnectInfo); + goto found; + } + } + + WlanFreeMemory(pConnectInfo); + } + } + w_win32_error = 0; +fail: + bRes = false; +ex: + if (pIfList) WlanFreeMemory(pIfList); + if (hClient) WlanCloseHandle(hClient, 0); + return bRes; +found: + w_win32_error = 0; + bRes = true; + goto ex; +} + +bool logical_net_filter_match(void) +{ + return wlan_filter_match(wlan_filter_ssid) && nlm_filter_match(nlm_filter_net); +} + +static bool logical_net_filter_match_rate_limited(void) +{ + DWORD dwTick = GetTickCount() / 1000; + if (logical_net_filter_tick == dwTick) return true; + logical_net_filter_tick = dwTick; + return logical_net_filter_match(); +} + +static HANDLE windivert_init_filter(const char *filter, UINT64 flags) +{ + LPSTR errormessage = NULL; + HANDLE h, hMutex; + const char *mutex_name = "Global\\winws_windivert_mutex"; + + // windivert driver start in windivert.dll has race conditions + hMutex = CreateMutexA(NULL,TRUE,mutex_name); + if (hMutex && GetLastError()==ERROR_ALREADY_EXISTS) + WaitForSingleObject(hMutex,INFINITE); + h = WinDivertOpen(filter, WINDIVERT_LAYER_NETWORK, 0, flags); + w_win32_error = GetLastError(); + + if (hMutex) + { + ReleaseMutex(hMutex); + CloseHandle(hMutex); + SetLastError(w_win32_error); + } + + if (h != INVALID_HANDLE_VALUE) return h; + + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, w_win32_error, MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), (LPSTR)&errormessage, 0, NULL); + DLOG_ERR("windivert: error opening filter: %s", errormessage); + LocalFree(errormessage); + if (w_win32_error == ERROR_INVALID_IMAGE_HASH) + DLOG_ERR("windivert: try to disable secure boot and install OS patches\n"); + + return NULL; +} +void rawsend_cleanup(void) +{ + if (w_filter) + { + CancelIoEx(w_filter,&ovl); + WinDivertClose(w_filter); + w_filter=NULL; + } + if (ovl.hEvent) + { + CloseHandle(ovl.hEvent); + ovl.hEvent=NULL; + } +} +bool windivert_init(const char *filter) +{ + rawsend_cleanup(); + w_filter = windivert_init_filter(filter, 0); + if (w_filter) + { + ovl.hEvent = CreateEventW(NULL,FALSE,FALSE,NULL); + if (!ovl.hEvent) + { + w_win32_error = GetLastError(); + rawsend_cleanup(); + return false; + } + return true; + } + return false; +} + +static bool windivert_recv_filter(HANDLE hFilter, uint8_t *packet, size_t *len, WINDIVERT_ADDRESS *wa) +{ + UINT recv_len; + DWORD err; + DWORD rd; + char c; + + if (bQuit) + { + errno=EINTR; + return false; + } + if (!logical_net_filter_match_rate_limited()) + { + errno=ENODEV; + return false; + } + usleep(0); + if (WinDivertRecvEx(hFilter, packet, *len, &recv_len, 0, wa, NULL, &ovl)) + { + *len = recv_len; + return true; + } + for(;;) + { + w_win32_error = GetLastError(); + switch(w_win32_error) + { + case ERROR_IO_PENDING: + // make signals working + while (WaitForSingleObject(ovl.hEvent,50)==WAIT_TIMEOUT) + { + if (bQuit) + { + errno=EINTR; + return false; + } + if (!logical_net_filter_match_rate_limited()) + { + errno=ENODEV; + return false; + } + usleep(0); + } + if (!GetOverlappedResult(hFilter,&ovl,&rd,TRUE)) + continue; + *len = rd; + return true; + case ERROR_INSUFFICIENT_BUFFER: + errno = ENOBUFS; + break; + case ERROR_NO_DATA: + errno = ESHUTDOWN; + break; + default: + errno = EIO; + } + break; + } + return false; +} +bool windivert_recv(uint8_t *packet, size_t *len, WINDIVERT_ADDRESS *wa) +{ + return windivert_recv_filter(w_filter,packet,len,wa); +} + +static bool windivert_send_filter(HANDLE hFilter, const uint8_t *packet, size_t len, const WINDIVERT_ADDRESS *wa) +{ + bool b = WinDivertSend(hFilter,packet,(UINT)len,NULL,wa); + w_win32_error = GetLastError(); + return b; +} +bool windivert_send(const uint8_t *packet, size_t len, const WINDIVERT_ADDRESS *wa) +{ + return windivert_send_filter(w_filter,packet,len,wa); +} + +bool rawsend(const struct sockaddr* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len) +{ + WINDIVERT_ADDRESS wa; + + memset(&wa,0,sizeof(wa)); + // pseudo interface id IfIdx.SubIfIdx + if (sscanf(ifout,"%u.%u",&wa.Network.IfIdx,&wa.Network.SubIfIdx)!=2) + { + errno = EINVAL; + return false; + } + wa.Outbound=1; + wa.IPChecksum=1; + wa.TCPChecksum=1; + wa.UDPChecksum=1; + wa.IPv6 = (dst->sa_family==AF_INET6); + + return windivert_send(data,len,&wa); +} + +#else // *nix + +static int rawsend_sock4=-1, rawsend_sock6=-1; +static bool b_bind_fix4=false, b_bind_fix6=false; +static void rawsend_clean_sock(int *sock) +{ + if (sock && *sock!=-1) + { + close(*sock); + *sock=-1; + } +} +void rawsend_cleanup(void) +{ + 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 +int socket_divert(sa_family_t family) +{ + int fd; + +#ifdef __FreeBSD__ + // freebsd14+ way + // don't want to use ifdefs with os version to make binaries compatible with all versions + fd = socket(PF_DIVERT, SOCK_RAW, 0); + if (fd==-1 && (errno==EPROTONOSUPPORT || errno==EAFNOSUPPORT || errno==EPFNOSUPPORT)) +#endif + // freebsd13- or openbsd way + fd = socket(family, SOCK_RAW, IPPROTO_DIVERT); + return fd; +} +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_divert(family); + if (fd!=-1 && !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; + +#ifdef __FreeBSD__ + // since FreeBSD 14 it requires hardcoded ipv4 values, although can also send ipv6 frames + family = AF_INET; + slen = sizeof(struct sockaddr_in); +#else + // OpenBSD requires correct family and size + switch(family) + { + case AF_INET: + slen = sizeof(struct sockaddr_in); + break; + case AF_INET6: + slen = sizeof(struct sockaddr_in6); + break; + default: + return -1; + } +#endif + memset(&sa,0,slen); + sa.ss_family = family; + 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 bool set_socket_fwmark(int sock, uint32_t fwmark) +{ +#ifdef BSD +#ifdef SO_USER_COOKIE + if (setsockopt(sock, SOL_SOCKET, SO_USER_COOKIE, &fwmark, sizeof(fwmark)) == -1) + { + DLOG_PERROR("rawsend: setsockopt(SO_USER_COOKIE)"); + return false; + } +#endif +#elif defined(__linux__) + if (setsockopt(sock, SOL_SOCKET, SO_MARK, &fwmark, sizeof(fwmark)) == -1) + { + DLOG_PERROR("rawsend: setsockopt(SO_MARK)"); + return false; + } + +#endif + return true; +} + +static int rawsend_socket(sa_family_t family) +{ + 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 = 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) + { + DLOG_PERROR("rawsend: socket()"); + return -1; + } +#ifdef __linux__ + if (setsockopt(*sock, SOL_SOCKET, SO_PRIORITY, &pri, sizeof(pri)) == -1) + { + DLOG_PERROR("rawsend: setsockopt(SO_PRIORITY)"); + goto exiterr; + } + if (family==AF_INET && setsockopt(*sock, IPPROTO_IP, IP_NODEFRAG, &yes, sizeof(yes)) == -1) + { + DLOG_PERROR("rawsend: setsockopt(IP_NODEFRAG)"); + goto exiterr; + } + if (family==AF_INET && setsockopt(*sock, IPPROTO_IP, IP_FREEBIND, &yes, sizeof(yes)) == -1) + { + DLOG_PERROR("rawsend: setsockopt(IP_FREEBIND)"); + goto exiterr; + } + if (family==AF_INET6 && setsockopt(*sock, SOL_IPV6, IPV6_FREEBIND, &yes, sizeof(yes)) == -1) + { + //DLOG_PERROR("rawsend: setsockopt(IPV6_FREEBIND)"); + // dont error because it's supported only from kernel 4.15 + } +#endif + } + return *sock; +exiterr: + rawsend_clean_sock(sock); + return -1; +} +bool rawsend_preinit(bool bind_fix4, bool bind_fix6) +{ + b_bind_fix4 = bind_fix4; + b_bind_fix6 = bind_fix6; + // allow ipv6 disabled systems + return rawsend_socket(AF_INET)!=-1 && (rawsend_socket(AF_INET6)!=-1 || errno==EAFNOSUPPORT); +} +bool rawsend(const struct sockaddr* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len) +{ + ssize_t bytes; + int sock=rawsend_socket(dst->sa_family); + if (sock==-1) return false; + if (!set_socket_fwmark(sock,fwmark)) 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 + +#if defined(BSD) + bytes = rawsend_sendto_divert(dst->sa_family,sock,data,len); + if (bytes==-1) + { + DLOG_PERROR("rawsend: sendto_divert"); + return false; + } + return true; + +#else + +#ifdef __linux__ + struct sockaddr_storage sa_src; + switch(dst->sa_family) + { + case AF_INET: + if (!b_bind_fix4) goto nofix; + extract_endpoints(data,NULL,NULL,NULL, &sa_src, NULL); + break; + case AF_INET6: + if (!b_bind_fix6) goto nofix; + extract_endpoints(NULL,data,NULL,NULL, &sa_src, NULL); + break; + default: + return false; // should not happen + } + //printf("family %u dev %s bind : ", dst->sa_family, ifout); print_sockaddr((struct sockaddr *)&sa_src); printf("\n"); + if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, ifout, ifout ? strlen(ifout)+1 : 0) == -1) + { + DLOG_PERROR("rawsend: setsockopt(SO_BINDTODEVICE)"); + return false; + } + if (bind(sock, (const struct sockaddr*)&sa_src, dst->sa_family==AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6))) + { + DLOG_PERROR("rawsend: bind (ignoring)"); + // do not fail. this can happen regardless of IP_FREEBIND + // rebind to any address + memset(&sa_src,0,sizeof(sa_src)); + sa_src.ss_family = dst->sa_family; + if (bind(sock, (const struct sockaddr*)&sa_src, dst->sa_family==AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6))) + { + DLOG_PERROR("rawsend: bind to any"); + return false; + } + } +nofix: +#endif + + // normal raw socket sendto + bytes = sendto(sock, data, len, 0, (struct sockaddr*)&dst2, salen); + if (bytes==-1) + { + DLOG_PERROR("rawsend: sendto"); + return false; + } + return true; +#endif +} + +#endif // not CYGWIN + +bool rawsend_rp(const struct rawpacket *rp) +{ + return rawsend((struct sockaddr*)&rp->dst,rp->fwmark,rp->ifout,rp->packet,rp->len); +} +bool rawsend_queue(struct rawpacket_tailhead *q) +{ + struct rawpacket *rp; + bool b; + for (b=true; (rp=rawpacket_dequeue(q)) ; rawpacket_free(rp)) + b &= rawsend_rp(rp); + return b; +} + + +// return guessed fake ttl value. 0 means unsuccessfull, should not perform autottl fooling +// ttl = TTL of incoming packet +uint8_t autottl_guess(uint8_t ttl, const autottl *attl) +{ + uint8_t orig, path, fake; + + // 18.65.168.125 ( cloudfront ) 255 + // 157.254.246.178 128 + // 1.1.1.1 64 + // guess original ttl. consider path lengths less than 32 hops + if (ttl>223) + orig=255; + else if (ttl<128 && ttl>96) + orig=128; + else if (ttl<64 && ttl>32) + orig=64; + else + return 0; + + path = orig - ttl; + + fake = path > attl->delta ? path - attl->delta : attl->min; + if (fakemin) fake=attl->min; + else if (fake>attl->max) fake=attl->max; + + if (fake>=path) return 0; + + return fake; +} + +void do_nat(bool bOutbound, struct ip *ip, struct ip6_hdr *ip6, struct tcphdr *tcphdr, struct udphdr *udphdr, const struct sockaddr_in *target4, const struct sockaddr_in6 *target6) +{ + uint16_t nport; + + if (ip && target4) + { + nport = target4->sin_port; + if (bOutbound) + ip->ip_dst = target4->sin_addr; + else + ip->ip_src = target4->sin_addr; + ip4_fix_checksum(ip); + } + else if (ip6 && target6) + { + nport = target6->sin6_port; + if (bOutbound) + ip6->ip6_dst = target6->sin6_addr; + else + ip6->ip6_src = target6->sin6_addr; + } + else + return; + if (nport) + { + if (tcphdr) + { + if (bOutbound) + tcphdr->th_dport = nport; + else + tcphdr->th_sport = nport; + } + if (udphdr) + { + if (bOutbound) + udphdr->uh_dport = nport; + else + udphdr->uh_sport = nport; + } + } +} + + +void verdict_tcp_csum_fix(uint8_t verdict, struct tcphdr *tcphdr, size_t transport_len, struct ip *ip, struct ip6_hdr *ip6hdr) +{ + if (!(verdict & VERDICT_NOCSUM)) + { + // always fix csum for windivert. original can be partial or bad + #ifndef __CYGWIN__ + #ifdef __FreeBSD__ + // FreeBSD tend to pass ipv6 frames with wrong checksum + if ((verdict & VERDICT_MASK)==VERDICT_MODIFY || ip6hdr) + #else + // if original packet was tampered earlier it needs checksum fixed + if ((verdict & VERDICT_MASK)==VERDICT_MODIFY) + #endif + #endif + tcp_fix_checksum(tcphdr,transport_len,ip,ip6hdr); + } +} +void verdict_udp_csum_fix(uint8_t verdict, struct udphdr *udphdr, size_t transport_len, struct ip *ip, struct ip6_hdr *ip6hdr) +{ + if (!(verdict & VERDICT_NOCSUM)) + { + // always fix csum for windivert. original can be partial or bad + #ifndef __CYGWIN__ + #ifdef __FreeBSD__ + // FreeBSD tend to pass ipv6 frames with wrong checksum + if ((verdict & VERDICT_MASK)==VERDICT_MODIFY || ip6hdr) + #else + // if original packet was tampered earlier it needs checksum fixed + if ((verdict & VERDICT_MASK)==VERDICT_MODIFY) + #endif + #endif + udp_fix_checksum(udphdr,transport_len,ip,ip6hdr); + } +} diff --git a/nfq/darkmagic.h b/nfq/darkmagic.h new file mode 100644 index 0000000..90f6701 --- /dev/null +++ b/nfq/darkmagic.h @@ -0,0 +1,243 @@ +#pragma once + +#include "checksum.h" +#include "packet_queue.h" +#include "pools.h" + +#include +#include +#include +#include +#include +#include + +#define __FAVOR_BSD +#include +#include +#include +#include + +#ifndef IPV6_FREEBIND +#define IPV6_FREEBIND 78 +#endif + +#ifdef __CYGWIN__ +#include "windivert/windivert.h" +#endif + +#ifndef IPPROTO_DIVERT +#define IPPROTO_DIVERT 258 +#endif + +#ifndef AF_DIVERT +#define AF_DIVERT 44 /* divert(4) */ +#endif +#ifndef PF_DIVERT +#define PF_DIVERT AF_DIVERT +#endif + +// returns netorder value +uint32_t net32_add(uint32_t netorder_value, uint32_t cpuorder_increment); +uint32_t net16_add(uint16_t netorder_value, uint16_t cpuorder_increment); + +#define FOOL_NONE 0x00 +#define FOOL_MD5SIG 0x01 +#define FOOL_BADSUM 0x02 +#define FOOL_TS 0x04 +#define FOOL_BADSEQ 0x08 +#define FOOL_HOPBYHOP 0x10 +#define FOOL_HOPBYHOP2 0x20 +#define FOOL_DESTOPT 0x40 +#define FOOL_IPFRAG1 0x80 +#define FOOL_DATANOACK 0x100 + +#define SCALE_NONE ((uint8_t)-1) + +#define VERDICT_PASS 0 +#define VERDICT_MODIFY 1 +#define VERDICT_DROP 2 +#define VERDICT_MASK 3 +#define VERDICT_NOCSUM 4 + +#define IP4_TOS(ip_header) (ip_header ? ip_header->ip_tos : 0) +#define IP6_FLOW(ip6_header) (ip6_header ? ip6_header->ip6_ctlun.ip6_un1.ip6_un1_flow : 0) + +// 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 nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint8_t tos, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + 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 nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint32_t flow_label, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + 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 nseq, uint32_t nack_seq, + uint16_t nwsize, + uint8_t scale_factor, + uint32_t *timestamps, + uint8_t ttl, + uint8_t tos, uint32_t flow_label, + uint32_t fooling, + uint32_t badseq_increment, + uint32_t badseq_ack_increment, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); + + +bool prepare_udp_segment4( + const struct sockaddr_in *src, const struct sockaddr_in *dst, + uint8_t ttl, + uint8_t tos, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); +bool prepare_udp_segment6( + const struct sockaddr_in6 *src, const struct sockaddr_in6 *dst, + uint8_t ttl, + uint32_t flow_label, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); +bool prepare_udp_segment( + const struct sockaddr *src, const struct sockaddr *dst, + uint8_t ttl, + uint8_t tos, uint32_t flow_label, + uint32_t fooling, + const uint8_t *padding, size_t padding_size, + int padlen, + const void *data, uint16_t len, + uint8_t *buf, size_t *buflen); + +bool ip6_insert_simple_hdr(uint8_t type, uint8_t *data_pkt, size_t len_pkt, uint8_t *buf, size_t *buflen); + +// ipv4: ident==-1 - copy ip_id from original ipv4 packet +bool ip_frag4( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size); +bool ip_frag6( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size); +bool ip_frag( + const uint8_t *pkt, size_t pkt_size, + size_t frag_pos, uint32_t ident, + uint8_t *pkt1, size_t *pkt1_size, + uint8_t *pkt2, size_t *pkt2_size); + +void rewrite_ttl(struct ip *ip, struct ip6_hdr *ip6, uint8_t ttl); + +void extract_ports(const struct tcphdr *tcphdr, const struct udphdr *udphdr, uint8_t *proto, uint16_t *sport, uint16_t *dport); +void extract_endpoints(const struct ip *ip,const struct ip6_hdr *ip6hdr,const struct tcphdr *tcphdr,const struct udphdr *udphdr, 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); +uint8_t tcp_find_scale_factor(const struct tcphdr *tcp); +bool tcp_has_fastopen(const struct tcphdr *tcp); + +#ifdef __CYGWIN__ +extern uint32_t w_win32_error; + +bool win_dark_init(const struct str_list_head *ssid_filter, const struct str_list_head *nlm_filter); +bool win_dark_deinit(void); +bool logical_net_filter_match(void); +bool nlm_list(bool bAll); +bool windivert_init(const char *filter); +bool windivert_recv(uint8_t *packet, size_t *len, WINDIVERT_ADDRESS *wa); +bool windivert_send(const uint8_t *packet, size_t len, const WINDIVERT_ADDRESS *wa); +#else +// should pre-do it if dropping privileges. otherwise its not necessary +bool rawsend_preinit(bool bind_fix4, bool bind_fix6); +#endif + +// auto creates internal socket and uses it for subsequent calls +bool rawsend(const struct sockaddr* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len); +bool rawsend_rp(const struct rawpacket *rp); +// return trues if all packets were send successfully +bool rawsend_queue(struct rawpacket_tailhead *q); +// cleans up socket autocreated by rawsend +void rawsend_cleanup(void); + +#ifdef BSD +int socket_divert(sa_family_t family); +#endif + +const char *proto_name(uint8_t proto); +uint16_t family_from_proto(uint8_t l3proto); +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); +void print_udphdr(const struct udphdr *udphdr); +void str_ip(char *s, size_t s_len, const struct ip *ip); +void str_ip6hdr(char *s, size_t s_len, const struct ip6_hdr *ip6hdr, uint8_t proto); +void str_srcdst_ip6(char *s, size_t s_len, const void *saddr,const void *daddr); +void str_tcphdr(char *s, size_t s_len, const struct tcphdr *tcphdr); +void str_udphdr(char *s, size_t s_len, const struct udphdr *udphdr); + +bool proto_check_ipv4(const uint8_t *data, size_t len); +void proto_skip_ipv4(uint8_t **data, size_t *len); +bool proto_check_ipv6(const uint8_t *data, size_t len); +void proto_skip_ipv6(uint8_t **data, size_t *len, uint8_t *proto_type, uint8_t **last_header_type); +bool proto_check_tcp(const uint8_t *data, size_t len); +void proto_skip_tcp(uint8_t **data, size_t *len); +bool proto_check_udp(const uint8_t *data, size_t len); +void proto_skip_udp(uint8_t **data, size_t *len); +void proto_dissect_l3l4( + uint8_t *data, size_t len, + struct ip **ip, struct ip6_hdr **ip6, + uint8_t *proto, + struct tcphdr **tcp, + struct udphdr **udp, + size_t *transport_len, + uint8_t **data_payload, size_t *len_payload); + +bool tcp_synack_segment(const struct tcphdr *tcphdr); +bool tcp_syn_segment(const struct tcphdr *tcphdr); +bool tcp_ack_segment(const struct tcphdr *tcphdr); +// scale_factor=SCALE_NONE - do not change +void tcp_rewrite_wscale(struct tcphdr *tcp, uint8_t scale_factor); +void tcp_rewrite_winsize(struct tcphdr *tcp, uint16_t winsize, uint8_t scale_factor); + +typedef struct +{ + uint8_t delta, min, max; +} autottl; +#define AUTOTTL_DEFAULT_DELTA 1 +#define AUTOTTL_DEFAULT_MIN 3 +#define AUTOTTL_DEFAULT_MAX 20 +#define AUTOTTL_ENABLED(a) (!!(a).delta) +#define AUTOTTL_SET_DEFAULT(a) {(a).delta=AUTOTTL_DEFAULT_DELTA; (a).min=AUTOTTL_DEFAULT_MIN; (a).max=AUTOTTL_DEFAULT_MAX;} + +uint8_t autottl_guess(uint8_t ttl, const autottl *attl); +void do_nat(bool bOutbound, struct ip *ip, struct ip6_hdr *ip6, struct tcphdr *tcphdr, struct udphdr *udphdr, const struct sockaddr_in *target4, const struct sockaddr_in6 *target6); + +void verdict_tcp_csum_fix(uint8_t verdict, struct tcphdr *tcphdr, size_t transport_len, struct ip *ip, struct ip6_hdr *ip6hdr); +void verdict_udp_csum_fix(uint8_t verdict, struct udphdr *udphdr, size_t transport_len, struct ip *ip, struct ip6_hdr *ip6hdr); diff --git a/nfq/desync.c b/nfq/desync.c new file mode 100644 index 0000000..e1181e6 --- /dev/null +++ b/nfq/desync.c @@ -0,0 +1,1964 @@ +#define _GNU_SOURCE + +#include "desync.h" +#include "protocol.h" +#include "params.h" +#include "helpers.h" +#include "hostlist.h" +#include "conntrack.h" + +#include + + +const char *fake_http_request_default = "GET / HTTP/1.1\r\nHost: www.iana.org\r\n" + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0\r\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n" + "Accept-Encoding: gzip, deflate, br\r\n\r\n"; + +// random : +11 size 32 +// random : +44 size 32 +// sni : gatech.edu +125 size 11 +const uint8_t fake_tls_clienthello_default[648] = { +0x16,0x03,0x01,0x02,0x83,0x01,0x00,0x02,0x7f,0x03,0x03,0x98,0xfb,0x69,0x1d,0x31, +0x66,0xc4,0xd8,0x07,0x25,0x2b,0x74,0x47,0x01,0x44,0x09,0x08,0xcf,0x13,0x67,0xe0, +0x46,0x19,0x1f,0xcb,0xee,0xe6,0x8e,0x33,0xb9,0x91,0xa0,0x20,0xf2,0xed,0x56,0x73, +0xa4,0x0a,0xce,0xa6,0xad,0xd2,0xfd,0x71,0xb8,0xb9,0xfd,0x06,0x0e,0xdd,0xf0,0x57, +0x37,0x7d,0x96,0xb5,0x80,0x6e,0x54,0xe2,0x15,0xce,0x5f,0xff,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,0x9c,0x00,0x9d,0x00,0x2f,0x00,0x35, +0x01,0x00,0x02,0x14,0x00,0x00,0x00,0x0f,0x00,0x0d,0x00,0x00,0x0a,0x67,0x61,0x74, +0x65,0x63,0x68,0x2e,0x65,0x64,0x75,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,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,0x22,0x00,0x0a,0x00,0x08,0x04,0x03,0x05,0x03,0x06,0x03,0x02, +0x03,0x00,0x33,0x00,0x6b,0x00,0x69,0x00,0x1d,0x00,0x20,0x72,0xe5,0xce,0x58,0x31, +0x3c,0x08,0xaa,0x2f,0xa8,0x40,0xe7,0x7a,0xdf,0x46,0x5b,0x63,0x62,0xc7,0xfa,0x49, +0x18,0xac,0xa1,0x00,0x7c,0x42,0xc5,0x02,0x94,0x5c,0x44,0x00,0x17,0x00,0x41,0x04, +0x8f,0x3e,0x5f,0xd4,0x7f,0x37,0x47,0xd3,0x33,0x70,0x38,0x7f,0x11,0x35,0xc1,0x55, +0x8a,0x6c,0xc7,0x5a,0xd4,0xf7,0x31,0xbb,0x9e,0xee,0xd1,0x8f,0x74,0xdd,0x9b,0xbb, +0x91,0xa1,0x72,0xda,0xeb,0xf6,0xc6,0x82,0x84,0xfe,0xb7,0xfd,0x7b,0xe1,0x9f,0xd2, +0xb9,0x3e,0x83,0xa6,0x9c,0xac,0x81,0xe2,0x00,0xd5,0x19,0x55,0x91,0xa7,0x0c,0x29, +0x00,0x2b,0x00,0x05,0x04,0x03,0x04,0x03,0x03,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,0x1c,0x00,0x02,0x40,0x01,0xfe,0x0d,0x01,0x19,0x00, +0x00,0x01,0x00,0x01,0xfe,0x00,0x20,0xae,0x8b,0x30,0x3c,0xf0,0xa9,0x0d,0xa1,0x69, +0x95,0xb8,0xe2,0xed,0x08,0x6d,0x48,0xdf,0xf7,0x5b,0x9d,0x66,0xef,0x15,0x97,0xbc, +0x2c,0x99,0x91,0x12,0x7a,0x35,0xd0,0x00,0xef,0xb1,0x8d,0xff,0x61,0x57,0x52,0xef, +0xd6,0xea,0xbf,0xf3,0x6d,0x78,0x14,0x38,0xff,0xeb,0x58,0xe8,0x9d,0x59,0x4b,0xd5, +0x9f,0x59,0x12,0xf9,0x03,0x9a,0x20,0x37,0x85,0x77,0xb1,0x4c,0xd8,0xef,0xa6,0xc8, +0x54,0x8d,0x07,0x27,0x95,0xce,0xd5,0x37,0x4d,0x69,0x18,0xd4,0xfd,0x5e,0xdf,0x64, +0xcc,0x10,0x2f,0x7f,0x0e,0xc9,0xfd,0xd4,0xd0,0x18,0x61,0x1b,0x57,0x8f,0x41,0x7f, +0x6f,0x4f,0x5c,0xad,0x04,0xc6,0x5e,0x74,0x54,0x87,0xba,0x28,0xe6,0x11,0x0b,0x9d, +0x3f,0x0b,0x6d,0xf4,0x2d,0xfc,0x31,0x4e,0xfd,0x49,0xe7,0x15,0x96,0xaf,0xee,0x9a, +0x48,0x1b,0xae,0x5e,0x7c,0x20,0xbe,0xb4,0xec,0x68,0xb6,0x74,0x22,0xa0,0xec,0xff, +0x19,0x96,0xe4,0x10,0x8f,0x3c,0x91,0x88,0xa1,0xcc,0x78,0xef,0x4e,0x0e,0xe3,0xb6, +0x57,0x8c,0x33,0xef,0xaa,0xb0,0x1d,0x45,0x1c,0x02,0x4c,0xe2,0x80,0x30,0xe8,0x48, +0x7a,0x09,0x71,0x94,0x7c,0xb6,0x75,0x81,0x1c,0xae,0xe3,0x3f,0xde,0xea,0x2b,0x45, +0xcc,0xe3,0x64,0x09,0xf7,0x60,0x26,0x0c,0x7d,0xad,0x55,0x65,0xb6,0xf5,0x85,0x04, +0x64,0x2f,0x97,0xd0,0x6a,0x06,0x36,0xcd,0x25,0xda,0x51,0xab,0xd6,0xf7,0x5e,0xeb, +0xd4,0x03,0x39,0xa4,0xc4,0x2a,0x9c,0x17,0xe8,0xb0,0x9f,0xc0,0xd3,0x8c,0x76,0xdd, +0xa1,0x0b,0x76,0x9f,0x23,0xfa,0xed,0xfb,0xd7,0x78,0x0f,0x00,0xf7,0x45,0x03,0x04, +0x84,0x66,0x6b,0xec,0xc7,0xed,0xbc,0xe4 +}; + +static const char * tld[]={"com","org","net","edu","gov","biz"}; +void randomize_default_tls_payload(uint8_t *p) +{ + fill_random_bytes(p+11,32); + fill_random_bytes(p+44,32); + fill_random_az(p+125,1); + fill_random_az09(p+126,5); + memcpy(p+132,tld[random()%(sizeof(tld)/sizeof(*tld))],3); +} + +#define PKTDATA_MAXDUMP 32 +#define IP_MAXDUMP 80 + +static uint8_t zeropkt[DPI_DESYNC_MAX_FAKE_LEN]; + +void desync_init(void) +{ + memset(zeropkt, 0, sizeof(zeropkt)); +} + +bool desync_valid_zero_stage(enum dpi_desync_mode mode) +{ + return mode==DESYNC_SYNACK || mode==DESYNC_SYNDATA; +} +bool desync_valid_first_stage(enum dpi_desync_mode mode) +{ + return mode==DESYNC_FAKE || mode==DESYNC_FAKE_KNOWN || mode==DESYNC_RST || mode==DESYNC_RSTACK || mode==DESYNC_HOPBYHOP || mode==DESYNC_DESTOPT || mode==DESYNC_IPFRAG1; +} +bool desync_only_first_stage(enum dpi_desync_mode mode) +{ + return false; +} +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 || mode==DESYNC_IPFRAG2 || mode==DESYNC_UDPLEN || mode==DESYNC_TAMPER; +} +bool desync_valid_second_stage_tcp(enum dpi_desync_mode mode) +{ + return mode==DESYNC_NONE || mode==DESYNC_DISORDER || mode==DESYNC_DISORDER2 || mode==DESYNC_SPLIT || mode==DESYNC_SPLIT2 || mode==DESYNC_IPFRAG2; +} +bool desync_valid_second_stage_udp(enum dpi_desync_mode mode) +{ + return mode==DESYNC_NONE || mode==DESYNC_UDPLEN || mode==DESYNC_TAMPER || mode==DESYNC_IPFRAG2; +} +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,"fakeknown")) + return DESYNC_FAKE_KNOWN; + else if (!strcmp(s,"rst")) + return DESYNC_RST; + else if (!strcmp(s,"rstack")) + return DESYNC_RSTACK; + else if (!strcmp(s,"synack")) + return DESYNC_SYNACK; + else if (!strcmp(s,"syndata")) + return DESYNC_SYNDATA; + 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; + else if (!strcmp(s,"ipfrag2")) + return DESYNC_IPFRAG2; + else if (!strcmp(s,"hopbyhop")) + return DESYNC_HOPBYHOP; + else if (!strcmp(s,"destopt")) + return DESYNC_DESTOPT; + else if (!strcmp(s,"ipfrag1")) + return DESYNC_IPFRAG1; + else if (!strcmp(s,"udplen")) + return DESYNC_UDPLEN; + else if (!strcmp(s,"tamper")) + return DESYNC_TAMPER; + return DESYNC_INVALID; +} + +static bool dp_match_l3l4(struct desync_profile *dp, bool ipv6, uint16_t tcp_port, uint16_t udp_port) +{ + return \ + ((!ipv6 && dp->filter_ipv4) || (ipv6 && dp->filter_ipv6)) && + (!tcp_port || pf_in_range(tcp_port,&dp->pf_tcp)) && + (!udp_port || pf_in_range(udp_port,&dp->pf_udp)); +} +static bool dp_match( + struct desync_profile *dp, bool ipv6, uint16_t tcp_port, uint16_t udp_port, const char *hostname, + bool *bCheckDone, bool *bCheckResult, bool *bExcluded) +{ + if (bCheckDone) *bCheckDone = false; + if (dp_match_l3l4(dp,ipv6,tcp_port,udp_port)) + { + // autohostlist profile matching l3/l4 filter always win + if (*dp->hostlist_auto_filename) return true; + + if (dp->hostlist || dp->hostlist_exclude) + { + // without known hostname first profile matching l3/l4 filter and without hostlist filter wins + if (hostname) + { + if (bCheckDone) *bCheckDone = true; + bool b; + b = HostlistCheck(dp, hostname, bExcluded); + if (bCheckResult) *bCheckResult = b; + return b; + } + } + else + // profile without hostlist filter wins + return true; + } + return false; +} +static struct desync_profile *dp_find( + struct desync_profile_list_head *head, bool ipv6, uint16_t tcp_port, uint16_t udp_port, const char *hostname, + bool *bCheckDone, bool *bCheckResult, bool *bExcluded) +{ + struct desync_profile_list *dpl; + DLOG("desync profile search for hostname='%s' ipv6=%u tcp_port=%u udp_port=%u\n", hostname ? hostname : "", ipv6, tcp_port, udp_port); + if (bCheckDone) *bCheckDone = false; + LIST_FOREACH(dpl, head, next) + { + if (dp_match(&dpl->dp,ipv6,tcp_port,udp_port,hostname,bCheckDone,bCheckResult,bExcluded)) + { + DLOG("desync profile %d matches\n",dpl->dp.n); + return &dpl->dp; + } + } + DLOG("desync profile not found\n"); + return NULL; +} + +// auto creates internal socket and uses it for subsequent calls +static bool rawsend_rep(int repeats, const struct sockaddr* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len) +{ + for (int i=0;ipcounter_orig; + case 'd': return ctrack->pdcounter_orig; + case 's': return ctrack->seq_last - ctrack->seq0; + default: return 0; + } +} +static bool cutoff_test(const t_ctrack *ctrack, uint64_t cutoff, char mode) +{ + return cutoff && cutoff_get_limit(ctrack, mode)>=cutoff; +} +static void maybe_cutoff(t_ctrack *ctrack, uint8_t proto) +{ + if (ctrack && ctrack->dp) + { + if (proto==IPPROTO_TCP) + ctrack->b_wssize_cutoff |= cutoff_test(ctrack, ctrack->dp->wssize_cutoff, ctrack->dp->wssize_cutoff_mode); + ctrack->b_desync_cutoff |= cutoff_test(ctrack, ctrack->dp->desync_cutoff, ctrack->dp->desync_cutoff_mode); + + // in MULTI STRATEGY concept conntrack entry holds desync profile + // we do not want to remove conntrack entries ASAP anymore + + /* + // we do not need conntrack entry anymore if all cutoff conditions are either not defined or reached + // do not drop udp entry because it will be recreated when next packet arrives + if (proto==IPPROTO_TCP) + ctrack->b_cutoff |= \ + (!ctrack->dp->wssize || ctrack->b_wssize_cutoff) && + (!ctrack->dp->desync_cutoff || ctrack->b_desync_cutoff) && + (!ctrack->hostname_ah_check || ctrack->req_retrans_counter==RETRANS_COUNTER_STOP) && + ReasmIsEmpty(&ctrack->reasm_orig); + */ + } +} +static void wssize_cutoff(t_ctrack *ctrack) +{ + if (ctrack) + { + ctrack->b_wssize_cutoff = true; + maybe_cutoff(ctrack, IPPROTO_TCP); + } +} +static void forced_wssize_cutoff(t_ctrack *ctrack) +{ + if (ctrack && ctrack->dp && ctrack->dp->wssize && !ctrack->b_wssize_cutoff) + { + DLOG("forced wssize-cutoff\n"); + wssize_cutoff(ctrack); + } +} + +static void ctrack_stop_retrans_counter(t_ctrack *ctrack) +{ + if (ctrack && ctrack->hostname_ah_check) + { + ctrack->req_retrans_counter = RETRANS_COUNTER_STOP; + maybe_cutoff(ctrack, IPPROTO_TCP); + } +} + +static void auto_hostlist_reset_fail_counter(struct desync_profile *dp, const char *hostname) +{ + if (hostname) + { + hostfail_pool *fail_counter; + + fail_counter = HostFailPoolFind(dp->hostlist_auto_fail_counters, hostname); + if (fail_counter) + { + HostFailPoolDel(&dp->hostlist_auto_fail_counters, fail_counter); + DLOG("auto hostlist (profile %d) : %s : fail counter reset. website is working.\n", dp->n, hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : fail counter reset. website is working.", hostname, dp->n); + } + } +} + +// return true if retrans trigger fires +static bool auto_hostlist_retrans(t_ctrack *ctrack, uint8_t l4proto, int threshold) +{ + if (ctrack && ctrack->dp && ctrack->hostname_ah_check && ctrack->req_retrans_counter!=RETRANS_COUNTER_STOP) + { + if (l4proto==IPPROTO_TCP) + { + if (!ctrack->req_seq_finalized || ctrack->req_seq_abandoned) + return false; + if (!seq_within(ctrack->seq_last, ctrack->req_seq_start, ctrack->req_seq_end)) + { + DLOG("req retrans : tcp seq %u not within the req range %u-%u. stop tracking.\n", ctrack->seq_last, ctrack->req_seq_start, ctrack->req_seq_end); + ctrack_stop_retrans_counter(ctrack); + auto_hostlist_reset_fail_counter(ctrack->dp, ctrack->hostname); + return false; + } + } + ctrack->req_retrans_counter++; + if (ctrack->req_retrans_counter >= threshold) + { + DLOG("req retrans threshold reached : %u/%u\n",ctrack->req_retrans_counter, threshold); + ctrack_stop_retrans_counter(ctrack); + return true; + } + DLOG("req retrans counter : %u/%u\n",ctrack->req_retrans_counter, threshold); + } + return false; +} +static void auto_hostlist_failed(struct desync_profile *dp, const char *hostname) +{ + hostfail_pool *fail_counter; + + fail_counter = HostFailPoolFind(dp->hostlist_auto_fail_counters, hostname); + if (!fail_counter) + { + fail_counter = HostFailPoolAdd(&dp->hostlist_auto_fail_counters, hostname, dp->hostlist_auto_fail_time); + if (!fail_counter) + { + fprintf(stderr, "HostFailPoolAdd: out of memory\n"); + return; + } + } + fail_counter->counter++; + DLOG("auto hostlist (profile %d) : %s : fail counter %d/%d\n", dp->n, hostname, fail_counter->counter, dp->hostlist_auto_fail_threshold); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : fail counter %d/%d", hostname, dp->n, fail_counter->counter, dp->hostlist_auto_fail_threshold); + if (fail_counter->counter >= dp->hostlist_auto_fail_threshold) + { + DLOG("auto hostlist (profile %d) : fail threshold reached. about to add %s to auto hostlist\n", dp->n, hostname); + HostFailPoolDel(&dp->hostlist_auto_fail_counters, fail_counter); + + DLOG("auto hostlist (profile %d) : rechecking %s to avoid duplicates\n", dp->n, hostname); + bool bExcluded=false; + if (!HostlistCheck(dp, hostname, &bExcluded) && !bExcluded) + { + DLOG("auto hostlist (profile %d) : adding %s to %s\n", dp->n, hostname, dp->hostlist_auto_filename); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : adding to %s", hostname, dp->n, dp->hostlist_auto_filename); + if (!StrPoolAddStr(&dp->hostlist, hostname)) + { + fprintf(stderr, "StrPoolAddStr out of memory\n"); + return; + } + if (!append_to_list_file(dp->hostlist_auto_filename, hostname)) + { + DLOG_PERROR("write to auto hostlist:"); + return; + } + dp->hostlist_auto_mod_time = file_mod_time(dp->hostlist_auto_filename); + } + else + { + DLOG("auto hostlist (profile %d) : NOT adding %s\n", dp->n, hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : NOT adding, duplicate detected", hostname, dp->n); + } + } +} + +static void process_retrans_fail(t_ctrack *ctrack, uint8_t proto) +{ + if (ctrack && ctrack->dp && ctrack->hostname && auto_hostlist_retrans(ctrack, proto, ctrack->dp->hostlist_auto_retrans_threshold)) + { + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : tcp retrans threshold reached", ctrack->hostname, ctrack->dp->n); + auto_hostlist_failed(ctrack->dp, ctrack->hostname); + } +} + +static bool send_delayed(t_ctrack *ctrack) +{ + if (!rawpacket_queue_empty(&ctrack->delayed)) + { + DLOG("SENDING %u delayed packets\n", rawpacket_queue_count(&ctrack->delayed)); + return rawsend_queue(&ctrack->delayed); + } + return true; +} + + +static bool reasm_start(t_ctrack *ctrack, t_reassemble *reasm, uint8_t proto, size_t sz, size_t szMax, const uint8_t *data_payload, size_t len_payload) +{ + ReasmClear(reasm); + if (sz<=szMax) + { + uint32_t seq = (proto==IPPROTO_TCP) ? ctrack->seq_last : 0; + if (ReasmInit(reasm,sz,seq)) + { + ReasmFeed(reasm,seq,data_payload,len_payload); + DLOG("starting reassemble. now we have %zu/%zu\n",reasm->size_present,reasm->size); + return true; + } + else + DLOG("reassemble init failed. out of memory\n"); + } + else + DLOG("unexpected large payload for reassemble: size=%zu\n",sz); + return false; +} +static bool reasm_orig_start(t_ctrack *ctrack, uint8_t proto, size_t sz, size_t szMax, const uint8_t *data_payload, size_t len_payload) +{ + return reasm_start(ctrack,&ctrack->reasm_orig,proto,sz,szMax,data_payload,len_payload); +} +static bool reasm_feed(t_ctrack *ctrack, t_reassemble *reasm, uint8_t proto, const uint8_t *data_payload, size_t len_payload) +{ + if (ctrack && !ReasmIsEmpty(reasm)) + { + uint32_t seq = (proto==IPPROTO_TCP) ? ctrack->seq_last : (uint32_t)reasm->size_present; + if (ReasmFeed(reasm, seq, data_payload, len_payload)) + { + DLOG("reassemble : feeding data payload size=%zu. now we have %zu/%zu\n", len_payload,reasm->size_present,reasm->size); + return true; + } + else + { + ReasmClear(reasm); + DLOG("reassemble session failed\n"); + send_delayed(ctrack); + } + } + return false; +} +static bool reasm_orig_feed(t_ctrack *ctrack, uint8_t proto, const uint8_t *data_payload, size_t len_payload) +{ + return reasm_feed(ctrack, &ctrack->reasm_orig, proto, data_payload, len_payload); +} +static void reasm_orig_stop(t_ctrack *ctrack, const char *dlog_msg) +{ + if (ctrack) + { + if (!ReasmIsEmpty(&ctrack->reasm_orig)) + { + DLOG("%s",dlog_msg); + ReasmClear(&ctrack->reasm_orig); + } + send_delayed(ctrack); + } +} +static void reasm_orig_cancel(t_ctrack *ctrack) +{ + reasm_orig_stop(ctrack, "reassemble session cancelled\n"); +} +static void reasm_orig_fin(t_ctrack *ctrack) +{ + reasm_orig_stop(ctrack, "reassemble session finished\n"); +} + + +static uint8_t ct_new_postnat_fix(const t_ctrack *ctrack, struct ip *ip, struct ip6_hdr *ip6, uint8_t proto, struct udphdr *udp, struct tcphdr *tcp, size_t *len_pkt) +{ +#ifdef __linux__ + // if used in postnat chain, dropping initial packet will cause conntrack connection teardown + // so we need to workaround this. + // we can't use low ttl because TCP/IP stack listens to ttl expired ICMPs and notify socket + // we also can't use fooling because DPI would accept fooled packets + if (ctrack && ctrack->pcounter_orig==1) + { + DLOG("applying linux postnat conntrack workaround\n"); + if (proto==IPPROTO_UDP && udp && len_pkt) + { + // make malformed udp packet with zero length and invalid checksum + udp->uh_ulen = 0; // invalid length. must be >=8 + udp_fix_checksum(udp,sizeof(struct udphdr),ip,ip6); + udp->uh_sum ^= htons(0xBEAF); + // truncate packet + *len_pkt = (uint8_t*)udp - (ip ? (uint8_t*)ip : (uint8_t*)ip6) + sizeof(struct udphdr); + if (ip) + { + ip->ip_len = htons((uint16_t)*len_pkt); + ip4_fix_checksum(ip); + } + else if (ip6) + ip6->ip6_ctlun.ip6_un1.ip6_un1_plen = (uint16_t)htons(sizeof(struct udphdr)); + } + else if (proto==IPPROTO_TCP && tcp) + { + // only SYN here is expected + // make flags invalid and also corrupt checksum + tcp->th_flags = 0; + } + if (ip) ip->ip_sum ^= htons(0xBEAF); + return VERDICT_MODIFY | VERDICT_NOCSUM; + } +#endif + return VERDICT_DROP; +} + +static uint8_t ct_new_postnat_fix_tcp(const t_ctrack *ctrack, struct ip *ip, struct ip6_hdr *ip6, struct tcphdr *tcphdr) +{ + return ct_new_postnat_fix(ctrack,ip,ip6,IPPROTO_TCP,NULL,tcphdr,NULL); +} +static uint8_t ct_new_postnat_fix_udp(const t_ctrack *ctrack, struct ip *ip, struct ip6_hdr *ip6, struct udphdr *udphdr, size_t *len_pkt) +{ + return ct_new_postnat_fix(ctrack,ip,ip6,IPPROTO_UDP,udphdr,NULL,len_pkt); +} + + +static bool check_desync_interval(const struct desync_profile *dp, const t_ctrack *ctrack) +{ + if (dp) + { + if (dp->desync_start) + { + if (ctrack) + { + if (!cutoff_test(ctrack, dp->desync_start, dp->desync_start_mode)) + { + DLOG("desync-start not reached (mode %c): %llu/%u . not desyncing\n", dp->desync_start_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->desync_start_mode), dp->desync_start); + return false; + } + DLOG("desync-start reached (mode %c): %llu/%u\n", dp->desync_start_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->desync_start_mode), dp->desync_start); + } + else + { + DLOG("not desyncing. desync-start is set but conntrack entry is missing\n"); + return false; + } + } + if (dp->desync_cutoff) + { + if (ctrack) + { + if (ctrack->b_desync_cutoff) + { + DLOG("desync-cutoff reached (mode %c): %llu/%u . not desyncing\n", dp->desync_cutoff_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->desync_cutoff_mode), dp->desync_cutoff); + return false; + } + DLOG("desync-cutoff not reached (mode %c): %llu/%u\n", dp->desync_cutoff_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->desync_cutoff_mode), dp->desync_cutoff); + } + else + { + DLOG("not desyncing. desync-cutoff is set but conntrack entry is missing\n"); + return false; + } + } + } + return true; +} +static bool process_desync_interval(const struct desync_profile *dp, t_ctrack *ctrack) +{ + if (check_desync_interval(dp, ctrack)) + return true; + else + { + reasm_orig_cancel(ctrack); + return false; + } +} + +static bool replay_queue(struct rawpacket_tailhead *q); + +static size_t pos_normalize(size_t split_pos, size_t reasm_offset, size_t len_payload) +{ + size_t rsplit_pos = split_pos; + // normalize split pos to current packet + split_pos=(split_pos>reasm_offset && (split_pos-reasm_offset) %zu\n",rsplit_pos,split_pos); + else + DLOG("split pos %zu is outside of this packet %zu-%zu\n",rsplit_pos,reasm_offset,reasm_offset+len_payload); + } + } + return split_pos; +} + + +static uint8_t dpi_desync_tcp_packet_play(bool replay, size_t reasm_offset, uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt, struct ip *ip, struct ip6_hdr *ip6hdr, struct tcphdr *tcphdr, size_t transport_len, uint8_t *data_payload, size_t len_payload) +{ + uint8_t verdict=VERDICT_PASS; + + // additional safety check + if (!!ip == !!ip6hdr) return verdict; + + struct desync_profile *dp = NULL; + + t_ctrack *ctrack=NULL, *ctrack_replay=NULL; + bool bReverse=false; + + struct sockaddr_storage src, dst; + uint8_t pkt1[DPI_DESYNC_MAX_FAKE_LEN+100], pkt2[DPI_DESYNC_MAX_FAKE_LEN+100]; + size_t pkt1_len, pkt2_len; + uint8_t ttl_orig,ttl_fake,flags_orig,scale_factor; + uint32_t *timestamps; + t_l7proto l7proto = UNKNOWN; + + ttl_orig = ip ? ip->ip_ttl : ip6hdr->ip6_ctlun.ip6_un1.ip6_un1_hlim; + uint32_t desync_fwmark = fwmark | params.desync_fwmark; + + if (replay) + { + // in replay mode conntrack_replay is not NULL and ctrack is NULL + + //ConntrackPoolDump(¶ms.conntrack); + if (!ConntrackPoolDoubleSearch(¶ms.conntrack, ip, ip6hdr, tcphdr, NULL, &ctrack_replay, &bReverse) || bReverse) + return verdict; + + dp = ctrack_replay->dp; + if (dp) + DLOG("using cached desync profile %d\n",dp->n); + else if (!ctrack_replay->dp_search_complete) + { + dp = ctrack_replay->dp = dp_find(¶ms.desync_profiles, !!ip6hdr, ntohs(bReverse ? tcphdr->th_sport : tcphdr->th_dport), 0, ctrack_replay->hostname, NULL, NULL, NULL); + ctrack_replay->dp_search_complete = true; + } + + if (!dp) + { + DLOG("matching desync profile not found\n"); + return verdict; + } + } + else + { + // in real mode ctrack may be NULL or not NULL, conntrack_replay is equal to ctrack + + ConntrackPoolPurge(¶ms.conntrack); + if (ConntrackPoolFeed(¶ms.conntrack, ip, ip6hdr, tcphdr, NULL, len_payload, &ctrack, &bReverse)) + { + dp = ctrack->dp; + ctrack_replay = ctrack; + } + if (dp) + DLOG("using cached desync profile %d\n",dp->n); + else if (!ctrack || !ctrack->dp_search_complete) + { + dp = dp_find(¶ms.desync_profiles, !!ip6hdr, ntohs(bReverse ? tcphdr->th_sport : tcphdr->th_dport), 0, ctrack ? ctrack->hostname : NULL, NULL, NULL, NULL); + if (ctrack) + { + ctrack->dp = dp; + ctrack->dp_search_complete = true; + } + } + if (!dp) + { + DLOG("matching desync profile not found\n"); + return verdict; + } + maybe_cutoff(ctrack, IPPROTO_TCP); + + HostFailPoolPurgeRateLimited(&dp->hostlist_auto_fail_counters); + + //ConntrackPoolDump(¶ms.conntrack); + + if (dp->wsize && tcp_synack_segment(tcphdr)) + { + tcp_rewrite_winsize(tcphdr, dp->wsize, dp->wscale); + verdict=VERDICT_MODIFY; + } + + if (bReverse) + { + if (ctrack && !ctrack->autottl && ctrack->pcounter_reply==1) + { + autottl *attl = ip ? &dp->desync_autottl : &dp->desync_autottl6; + if (AUTOTTL_ENABLED(*attl)) + { + ctrack->autottl = autottl_guess(ttl_orig, attl); + if (ctrack->autottl) + DLOG("autottl: guessed %u\n",ctrack->autottl); + else + DLOG("autottl: could not guess\n"); + } + } + + // process reply packets for auto hostlist mode + // by looking at RSTs or HTTP replies we decide whether original request looks like DPI blocked + // we only process first-sequence replies. do not react to subsequent redirects or RSTs + if (ctrack && ctrack->hostname && ctrack->hostname_ah_check && (ctrack->ack_last-ctrack->ack0)==1) + { + bool bFail=false; + if (tcphdr->th_flags & TH_RST) + { + DLOG("incoming RST detected for hostname %s\n", ctrack->hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : incoming RST", ctrack->hostname, ctrack->dp->n); + bFail = true; + } + else if (len_payload && ctrack->l7proto==HTTP) + { + if (IsHttpReply(data_payload,len_payload)) + { + DLOG("incoming HTTP reply detected for hostname %s\n", ctrack->hostname); + bFail = HttpReplyLooksLikeDPIRedirect(data_payload, len_payload, ctrack->hostname); + if (bFail) + { + DLOG("redirect to another domain detected. possibly DPI redirect.\n"); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : redirect to another domain", ctrack->hostname, ctrack->dp->n); + } + else + DLOG("local or in-domain redirect detected. it's not a DPI redirect.\n"); + } + else + { + // received not http reply. do not monitor this connection anymore + DLOG("incoming unknown HTTP data detected for hostname %s\n", ctrack->hostname); + } + } + if (bFail) + auto_hostlist_failed(dp, ctrack->hostname); + else + if (len_payload) + auto_hostlist_reset_fail_counter(dp, ctrack->hostname); + if (tcphdr->th_flags & TH_RST) + ConntrackClearHostname(ctrack); // do not react to further dup RSTs + } + + return verdict; // nothing to do. do not waste cpu + } + + if (dp->wssize) + { + if (ctrack) + { + if (ctrack->b_wssize_cutoff) + { + DLOG("wssize-cutoff reached (mode %c): %llu/%u . not changing wssize.\n", dp->wssize_cutoff_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->wssize_cutoff_mode), dp->wssize_cutoff); + } + else + { + if (dp->wssize_cutoff) DLOG("wssize-cutoff not reached (mode %c): %llu/%u\n", dp->wssize_cutoff_mode, (unsigned long long)cutoff_get_limit(ctrack,dp->wssize_cutoff_mode), dp->wssize_cutoff); + tcp_rewrite_winsize(tcphdr, dp->wssize, dp->wsscale); + verdict=VERDICT_MODIFY; + } + } + else + { + DLOG("not changing wssize. wssize is set but conntrack entry is missing\n"); + } + } + } // !replay + + ttl_fake = (ctrack_replay && ctrack_replay->autottl) ? ctrack_replay->autottl : (ip6hdr ? (dp->desync_ttl6 ? dp->desync_ttl6 : ttl_orig) : (dp->desync_ttl ? dp->desync_ttl : ttl_orig)); + flags_orig = *((uint8_t*)tcphdr+13); + scale_factor = tcp_find_scale_factor(tcphdr); + timestamps = tcp_find_timestamps(tcphdr); + extract_endpoints(ip, ip6hdr, tcphdr, NULL, &src, &dst); + + if (!replay) + { + if (tcp_syn_segment(tcphdr)) + { + switch (dp->desync_mode0) + { + case DESYNC_SYNACK: + pkt1_len = sizeof(pkt1); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, TH_SYN|TH_ACK, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_fake,IP4_TOS(ip),IP6_FLOW(ip6hdr), + dp->desync_fooling_mode,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + NULL, 0, pkt1, &pkt1_len)) + { + return verdict; + } + DLOG("sending fake SYNACK\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + break; + case DESYNC_SYNDATA: + // make sure we are not breaking TCP fast open + if (tcp_has_fastopen(tcphdr)) + { + DLOG("received SYN with TCP fast open option. syndata desync is not applied.\n"); + break; + } + if (len_payload) + { + DLOG("received SYN with data payload. syndata desync is not applied.\n"); + break; + } + pkt1_len = sizeof(pkt1); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + 0,0,0, dp->fake_syndata,dp->fake_syndata_size, pkt1,&pkt1_len)) + { + return verdict; + } + DLOG("sending SYN with fake data : "); + hexdump_limited_dlog(dp->fake_syndata,dp->fake_syndata_size,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + verdict = ct_new_postnat_fix_tcp(ctrack, ip, ip6hdr, tcphdr); + break; + default: + break; + } + // can do nothing else with SYN packet + return verdict; + } + + // start and cutoff limiters + if (!process_desync_interval(dp, ctrack)) return verdict; + } // !replay + + if (!(tcphdr->th_flags & TH_SYN) && len_payload) + { + const uint8_t *fake; + size_t fake_size; + char host[256]; + bool bHaveHost=false; + uint8_t *p, *phost; + const uint8_t *rdata_payload = data_payload; + size_t rlen_payload = len_payload; + size_t split_pos; + + if (replay) + { + rdata_payload = ctrack_replay->reasm_orig.packet; + rlen_payload = ctrack_replay->reasm_orig.size_present; + } + else if (reasm_orig_feed(ctrack,IPPROTO_TCP,data_payload,len_payload)) + { + rdata_payload = ctrack->reasm_orig.packet; + rlen_payload = ctrack->reasm_orig.size_present; + } + + process_retrans_fail(ctrack, IPPROTO_TCP); + + if (IsHttp(rdata_payload,rlen_payload)) + { + DLOG("packet contains HTTP request\n"); + l7proto = HTTP; + if (ctrack && !ctrack->l7proto) ctrack->l7proto = l7proto; + + // we do not reassemble http + reasm_orig_cancel(ctrack); + forced_wssize_cutoff(ctrack); + + bHaveHost=HttpExtractHost(rdata_payload,rlen_payload,host,sizeof(host)); + if (!bHaveHost) + { + DLOG("not applying tampering to HTTP without Host:\n"); + return verdict; + } + if (ctrack) + { + // we do not reassemble http + if (!ctrack->req_seq_present) + { + ctrack->req_seq_start=ctrack->seq_last; + ctrack->req_seq_end=ctrack->pos_orig-1; + ctrack->req_seq_present=ctrack->req_seq_finalized=true; + DLOG("req retrans : tcp seq interval %u-%u\n",ctrack->req_seq_start,ctrack->req_seq_end); + } + } + } + else if (IsTLSClientHello(rdata_payload,rlen_payload,TLS_PARTIALS_ENABLE)) + { + bool bReqFull = IsTLSRecordFull(rdata_payload,rlen_payload); + DLOG(bReqFull ? "packet contains full TLS ClientHello\n" : "packet contains partial TLS ClientHello\n"); + l7proto = TLS; + + bHaveHost=TLSHelloExtractHost(rdata_payload,rlen_payload,host,sizeof(host),TLS_PARTIALS_ENABLE); + + if (ctrack) + { + if (!ctrack->l7proto) ctrack->l7proto = l7proto; + // do not reasm retransmissions + if (!bReqFull && ReasmIsEmpty(&ctrack->reasm_orig) && !ctrack->req_seq_abandoned && + !(ctrack->req_seq_finalized && seq_within(ctrack->seq_last, ctrack->req_seq_start, ctrack->req_seq_end))) + { + // do not reconstruct unexpected large payload (they are feeding garbage ?) + if (!reasm_orig_start(ctrack,IPPROTO_TCP,TLSRecordLen(data_payload),16384,data_payload,len_payload)) + { + reasm_orig_cancel(ctrack); + return verdict; + } + + } + if (!ctrack->req_seq_finalized) + { + if (!ctrack->req_seq_present) + { + // lower bound of request seq interval + ctrack->req_seq_start=ctrack->seq_last; + ctrack->req_seq_present=true; + } + // upper bound of request seq interval + // it can grow on every packet until request is complete. then interval is finalized and never touched again. + ctrack->req_seq_end=ctrack->pos_orig-1; + DLOG("req retrans : seq interval %u-%u\n",ctrack->req_seq_start,ctrack->req_seq_end); + ctrack->req_seq_finalized |= bReqFull; + } + if (bReqFull || ReasmIsEmpty(&ctrack->reasm_orig)) forced_wssize_cutoff(ctrack); + + if (!ReasmIsEmpty(&ctrack->reasm_orig)) + { + verdict_tcp_csum_fix(verdict, tcphdr, transport_len, ip, ip6hdr); + if (rawpacket_queue(&ctrack->delayed, &dst, desync_fwmark, ifout, data_pkt, *len_pkt, len_payload)) + { + DLOG("DELAY desync until reasm is complete (#%u)\n", rawpacket_queue_count(&ctrack->delayed)); + } + else + { + fprintf(stderr, "rawpacket_queue failed !'\n"); + reasm_orig_cancel(ctrack); + return verdict; + } + if (ReasmIsFull(&ctrack->reasm_orig)) + { + replay_queue(&ctrack->delayed); + reasm_orig_fin(ctrack); + } + return VERDICT_DROP; + } + } + + if (dp->desync_skip_nosni && !bHaveHost) + { + DLOG("not applying tampering to TLS ClientHello without hostname in the SNI\n"); + reasm_orig_cancel(ctrack); + return verdict; + } + } + + if (ctrack && ctrack->req_seq_finalized) + { + uint32_t dseq = ctrack->seq_last - ctrack->req_seq_end; + // do not react to 32-bit overflowed sequence numbers. allow 16 Mb grace window then cutoff. + if (dseq>=0x1000000 && !(dseq & 0x80000000)) ctrack->req_seq_abandoned=true; + } + + if (bHaveHost) + { + bool bCheckDone=false, bCheckResult=false, bCheckExcluded=false; + DLOG("hostname: %s\n",host); + if (ctrack_replay) + { + if (!ctrack_replay->hostname) + { + ctrack_replay->hostname=strdup(host); + if (!ctrack_replay->hostname) + { + DLOG_ERR("hostname dup : out of memory"); + reasm_orig_cancel(ctrack); + return verdict; + } + DLOG("we have hostname now. searching desync profile again.\n"); + struct desync_profile *dp_prev = dp; + dp = ctrack_replay->dp = dp_find(¶ms.desync_profiles, !!ip6hdr, ntohs(bReverse ? tcphdr->th_sport : tcphdr->th_dport), 0, ctrack_replay->hostname, &ctrack_replay->bCheckDone, &ctrack_replay->bCheckResult, &ctrack_replay->bCheckExcluded); + ctrack_replay->dp_search_complete = true; + if (!dp) + { + reasm_orig_cancel(ctrack); + return verdict; + } + if (dp!=dp_prev) + { + DLOG("desync profile changed by revealed hostname !\n"); + // re-evaluate start/cutoff limiters + if (!replay) + { + maybe_cutoff(ctrack, IPPROTO_TCP); + if (!process_desync_interval(dp, ctrack)) + { + reasm_orig_cancel(ctrack); + return verdict; + } + } + } + } + bCheckDone = ctrack_replay->bCheckDone; + bCheckResult = ctrack_replay->bCheckResult; + bCheckExcluded = ctrack_replay->bCheckExcluded; + } + if (dp->hostlist || dp->hostlist_exclude) + { + if (!bCheckDone) + bCheckResult = HostlistCheck(dp, host, &bCheckExcluded); + if (bCheckResult) + ctrack_stop_retrans_counter(ctrack_replay); + else + { + if (ctrack_replay) + { + ctrack_replay->hostname_ah_check = *dp->hostlist_auto_filename && !bCheckExcluded; + if (!ctrack_replay->hostname_ah_check) + ctrack_stop_retrans_counter(ctrack_replay); + } + DLOG("not applying tampering to this request\n"); + reasm_orig_cancel(ctrack); + return verdict; + } + } + } + + // desync profile may have changed after hostname was revealed + switch(l7proto) + { + case HTTP: + fake = dp->fake_http; + fake_size = dp->fake_http_size; + split_pos = HttpPos(dp->desync_split_http_req, dp->desync_split_pos, rdata_payload, rlen_payload); + break; + case TLS: + fake = dp->fake_tls; + fake_size = dp->fake_tls_size; + split_pos = TLSPos(dp->desync_split_tls, dp->desync_split_pos, rdata_payload, rlen_payload, 0); + break; + default: + fake = dp->fake_unknown; + fake_size = dp->fake_unknown_size; + split_pos=dp->desync_split_pos; + break; + } + + // we do not need reasm buffer anymore + reasm_orig_cancel(ctrack); + rdata_payload=NULL; + + if (l7proto==UNKNOWN) + { + if (!dp->desync_any_proto) return verdict; + DLOG("applying tampering to unknown protocol\n"); + } + + ttl_fake = (ctrack_replay && ctrack_replay->autottl) ? ctrack_replay->autottl : (ip6hdr ? (dp->desync_ttl6 ? dp->desync_ttl6 : ttl_orig) : (dp->desync_ttl ? dp->desync_ttl : ttl_orig)); + + if ((l7proto == HTTP) && (dp->hostcase || dp->hostnospace || dp->domcase) && (phost = (uint8_t*)memmem(data_payload, len_payload, "\r\nHost: ", 8))) + { + if (dp->hostcase) + { + DLOG("modifying Host: => %c%c%c%c:\n", dp->hostspell[0], dp->hostspell[1], dp->hostspell[2], dp->hostspell[3]); + memcpy(phost + 2, dp->hostspell, 4); + verdict=VERDICT_MODIFY; + } + if (dp->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); + verdict=VERDICT_MODIFY; + } + uint8_t *pua; + if (dp->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 = ' '; + } + verdict=VERDICT_MODIFY; + } + } + + if (dp->desync_mode==DESYNC_NONE) return verdict; + + if (params.debug) + { + char s1[48],s2[48]; + ntop46_port((struct sockaddr *)&src, s1, sizeof(s1)); + ntop46_port((struct sockaddr *)&dst, s2, sizeof(s2)); + DLOG("dpi desync src=%s dst=%s\n",s1,s2); + } + + if (!split_pos || split_pos>rlen_payload) split_pos=1; + split_pos=pos_normalize(split_pos,reasm_offset,len_payload); + + enum dpi_desync_mode desync_mode = dp->desync_mode; + uint32_t fooling_orig = FOOL_NONE; + bool b; + pkt1_len = sizeof(pkt1); + b = false; + switch(desync_mode) + { + case DESYNC_FAKE_KNOWN: + if (reasm_offset) + { + desync_mode = dp->desync_mode2; + break; + } + if (l7proto==UNKNOWN) + { + DLOG("not applying fake because of unknown protocol\n"); + desync_mode = dp->desync_mode2; + break; + } + case DESYNC_FAKE: + if (reasm_offset) break; + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_fake,IP4_TOS(ip),IP6_FLOW(ip6hdr), + dp->desync_fooling_mode,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + fake, fake_size, pkt1, &pkt1_len)) + { + return verdict; + } + DLOG("sending fake request : "); + hexdump_limited_dlog(fake,fake_size,PKTDATA_MAXDUMP); DLOG("\n"); + b = true; + break; + case DESYNC_RST: + case DESYNC_RSTACK: + if (reasm_offset) break; + 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, scale_factor, timestamps, + ttl_fake,IP4_TOS(ip),IP6_FLOW(ip6hdr), + dp->desync_fooling_mode,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + NULL, 0, pkt1, &pkt1_len)) + { + return verdict; + } + DLOG("sending fake RST/RSTACK\n"); + b = true; + break; + case DESYNC_HOPBYHOP: + case DESYNC_DESTOPT: + case DESYNC_IPFRAG1: + fooling_orig = (desync_mode==DESYNC_HOPBYHOP) ? FOOL_HOPBYHOP : (desync_mode==DESYNC_DESTOPT) ? FOOL_DESTOPT : FOOL_IPFRAG1; + desync_mode = dp->desync_mode2; + if (ip6hdr && (desync_mode==DESYNC_NONE || !desync_valid_second_stage_tcp(desync_mode) || + (!split_pos && (desync_mode==DESYNC_SPLIT || desync_mode==DESYNC_SPLIT2 || desync_mode==DESYNC_DISORDER || desync_mode==DESYNC_DISORDER2)))) + { + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,0,0, + data_payload, len_payload, pkt1, &pkt1_len)) + { + return verdict; + } + DLOG("resending original packet with extension header\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + // this mode is final, no other options available + return VERDICT_DROP; + } + default: + pkt1_len=0; + break; + } + + if (b) + { + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + if (dp->desync_mode2==DESYNC_NONE || !desync_valid_second_stage_tcp(dp->desync_mode2)) + { + DLOG("reinjecting original packet. len=%zu len_payload=%zu\n", *len_pkt, len_payload); + verdict_tcp_csum_fix(verdict, tcphdr, transport_len, ip, ip6hdr); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , data_pkt, *len_pkt)) + return verdict; + return VERDICT_DROP; + } + desync_mode = dp->desync_mode2; + } + + pkt1_len = sizeof(pkt1); + switch(desync_mode) + { + case DESYNC_DISORDER: + case DESYNC_DISORDER2: + if (split_pos) + { + uint8_t fakeseg[DPI_DESYNC_MAX_FAKE_LEN+100], *seg; + size_t seg_len; + + if (dp->desync_seqovl>=split_pos) + { + DLOG("seqovl>=split_pos. desync is not possible.\n"); + return verdict; + } + + if (split_posdesync_seqovl) + { + seg_len = len_payload-split_pos+dp->desync_seqovl; + if (seg_len>sizeof(fakeseg)) + { + DLOG("seqovl is too large\n"); + return verdict; + } + fill_pattern(fakeseg,dp->desync_seqovl,dp->seqovl_pattern,sizeof(dp->seqovl_pattern)); + memcpy(fakeseg+dp->desync_seqovl,data_payload+split_pos,len_payload-split_pos); + seg = fakeseg; + } + else + { + seg = data_payload+split_pos; + seg_len = len_payload-split_pos; + } + + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, net32_add(net32_add(tcphdr->th_seq,split_pos),-dp->desync_seqovl), tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + seg, seg_len, pkt1, &pkt1_len)) + return verdict; + DLOG("sending 2nd out-of-order tcp segment %zu-%zu len=%zu seqovl=%u : ",split_pos,len_payload-1, len_payload-split_pos, dp->desync_seqovl); + hexdump_limited_dlog(seg,seg_len,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + } + + + if (desync_mode==DESYNC_DISORDER) + { + seg_len = sizeof(fakeseg); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_fake,IP4_TOS(ip),IP6_FLOW(ip6hdr), + dp->desync_fooling_mode,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + zeropkt, split_pos, fakeseg, &seg_len)) + return verdict; + 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,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , fakeseg, seg_len)) + return verdict; + } + + pkt1_len = sizeof(pkt1); + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, tcphdr->th_seq, tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + data_payload, split_pos, pkt1, &pkt1_len)) + return verdict; + DLOG("sending 1st out-of-order tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos); + hexdump_limited_dlog(data_payload,split_pos,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + + 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,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , fakeseg, seg_len)) + return verdict; + } + + return VERDICT_DROP; + } + break; + case DESYNC_SPLIT: + case DESYNC_SPLIT2: + if (split_pos) + { + uint8_t fakeseg[DPI_DESYNC_MAX_FAKE_LEN+100],ovlseg[DPI_DESYNC_MAX_FAKE_LEN+100], *seg; + size_t fakeseg_len,seg_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, scale_factor, timestamps, + ttl_fake,IP4_TOS(ip),IP6_FLOW(ip6hdr), + dp->desync_fooling_mode,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + zeropkt, split_pos, fakeseg, &fakeseg_len)) + return verdict; + DLOG("sending fake(1) 1st tcp segment 0-%zu len=%zu : ",split_pos-1, split_pos); + hexdump_limited_dlog(zeropkt,split_pos,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , fakeseg, fakeseg_len)) + return verdict; + } + + if (dp->desync_seqovl) + { + seg_len = split_pos+dp->desync_seqovl; + if (seg_len>sizeof(ovlseg)) + { + DLOG("seqovl is too large"); + return verdict; + } + fill_pattern(ovlseg,dp->desync_seqovl,dp->seqovl_pattern,sizeof(dp->seqovl_pattern)); + memcpy(ovlseg+dp->desync_seqovl,data_payload,split_pos); + seg = ovlseg; + } + else + { + seg = data_payload; + seg_len = split_pos; + } + + if (!prepare_tcp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, flags_orig, net32_add(tcphdr->th_seq,-dp->desync_seqovl), tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + seg, seg_len, pkt1, &pkt1_len)) + return verdict; + DLOG("sending 1st tcp segment 0-%zu len=%zu seqovl=%u : ",split_pos-1, split_pos, dp->desync_seqovl); + hexdump_limited_dlog(seg,seg_len,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + + 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,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , fakeseg, fakeseg_len)) + return verdict; + } + if (split_posth_seq,split_pos), tcphdr->th_ack, tcphdr->th_win, scale_factor, timestamps, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,dp->desync_badseq_increment,dp->desync_badseq_ack_increment, + data_payload+split_pos, len_payload-split_pos, pkt1, &pkt1_len)) + return verdict; + 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,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + } + + return VERDICT_DROP; + } + break; + case DESYNC_IPFRAG2: + if (!reasm_offset) + { + verdict_tcp_csum_fix(verdict, tcphdr, transport_len, ip, ip6hdr); + + uint8_t pkt3[DPI_DESYNC_MAX_FAKE_LEN+100], *pkt_orig; + size_t pkt_orig_len; + + size_t ipfrag_pos = (dp->desync_ipfrag_pos_tcp && dp->desync_ipfrag_pos_tcpdesync_ipfrag_pos_tcp : 24; + uint32_t ident = ip ? ip->ip_id ? ip->ip_id : htons(1+random()%0xFFFF) : htonl(1+random()%0xFFFFFFFF); + + pkt1_len = sizeof(pkt1); + pkt2_len = sizeof(pkt2); + + if (ip6hdr && (fooling_orig==FOOL_HOPBYHOP || fooling_orig==FOOL_DESTOPT)) + { + pkt_orig_len = sizeof(pkt3); + if (!ip6_insert_simple_hdr(fooling_orig==FOOL_HOPBYHOP ? IPPROTO_HOPOPTS : IPPROTO_DSTOPTS, data_pkt, *len_pkt, pkt3, &pkt_orig_len)) + return verdict; + pkt_orig = pkt3; + } + else + { + pkt_orig = data_pkt; + pkt_orig_len = *len_pkt; + } + + if (!ip_frag(pkt_orig, pkt_orig_len, ipfrag_pos, ident, pkt1, &pkt1_len, pkt2, &pkt2_len)) + return verdict; + + DLOG("sending 1st ip fragment 0-%zu ip_payload_len=%zu : ", ipfrag_pos-1, ipfrag_pos); + hexdump_limited_dlog(pkt1,pkt1_len,IP_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + + DLOG("sending 2nd ip fragment %zu-%zu ip_payload_len=%zu : ", ipfrag_pos, transport_len-1, transport_len-ipfrag_pos); + hexdump_limited_dlog(pkt2,pkt2_len,IP_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt2, pkt2_len)) + return verdict; + + return VERDICT_DROP; + } + default: + break; + } + + } + + return verdict; +} + +// return : true - should continue, false - should stop with verdict +static bool quic_reasm_cancel(t_ctrack *ctrack, const char *reason) +{ + reasm_orig_cancel(ctrack); + if (ctrack && ctrack->dp && ctrack->dp->desync_any_proto) + { + DLOG("%s. applying tampering because desync_any_proto is set\n",reason); + return true; + } + else + { + DLOG("%s. not applying tampering because desync_any_proto is not set\n",reason); + return false; + } +} + +static uint8_t dpi_desync_udp_packet_play(bool replay, size_t reasm_offset, uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt, struct ip *ip, struct ip6_hdr *ip6hdr, struct udphdr *udphdr, size_t transport_len, uint8_t *data_payload, size_t len_payload) +{ + uint8_t verdict=VERDICT_PASS; + + // additional safety check + if (!!ip == !!ip6hdr) return verdict; + + // no need to desync middle packets in reasm session + if (reasm_offset) return verdict; + + struct desync_profile *dp = NULL; + + t_ctrack *ctrack=NULL, *ctrack_replay=NULL; + bool bReverse=false; + + struct sockaddr_storage src, dst; + uint8_t pkt1[DPI_DESYNC_MAX_FAKE_LEN+100], pkt2[DPI_DESYNC_MAX_FAKE_LEN+100]; + size_t pkt1_len, pkt2_len; + uint8_t ttl_orig,ttl_fake; + t_l7proto l7proto = UNKNOWN; + + if (replay) + { + // in replay mode conntrack_replay is not NULL and ctrack is NULL + + //ConntrackPoolDump(¶ms.conntrack); + if (!ConntrackPoolDoubleSearch(¶ms.conntrack, ip, ip6hdr, NULL, udphdr, &ctrack_replay, &bReverse) || bReverse) + return verdict; + + dp = ctrack_replay->dp; + if (dp) + DLOG("using cached desync profile %d\n",dp->n); + else if (!ctrack_replay->dp_search_complete) + { + dp = ctrack_replay->dp = dp_find(¶ms.desync_profiles, !!ip6hdr, 0, ntohs(bReverse ? udphdr->uh_sport : udphdr->uh_dport), ctrack_replay->hostname, NULL, NULL, NULL); + ctrack_replay->dp_search_complete = true; + } + if (!dp) + { + DLOG("matching desync profile not found\n"); + return verdict; + } + } + else + { + // in real mode ctrack may be NULL or not NULL, conntrack_replay is equal to ctrack + + ConntrackPoolPurge(¶ms.conntrack); + if (ConntrackPoolFeed(¶ms.conntrack, ip, ip6hdr, NULL, udphdr, len_payload, &ctrack, &bReverse)) + { + dp = ctrack->dp; + ctrack_replay = ctrack; + } + if (dp) + DLOG("using cached desync profile %d\n",dp->n); + else if (!ctrack || !ctrack->dp_search_complete) + { + dp = dp_find(¶ms.desync_profiles, !!ip6hdr, 0, ntohs(bReverse ? udphdr->uh_sport : udphdr->uh_dport), ctrack ? ctrack->hostname : NULL, NULL, NULL, NULL); + if (ctrack) + { + ctrack->dp = dp; + ctrack->dp_search_complete = true; + } + } + if (!dp) + { + DLOG("matching desync profile not found\n"); + return verdict; + } + maybe_cutoff(ctrack, IPPROTO_UDP); + + HostFailPoolPurgeRateLimited(&dp->hostlist_auto_fail_counters); + //ConntrackPoolDump(¶ms.conntrack); + } + + if (bReverse) return verdict; // nothing to do. do not waste cpu + + // start and cutoff limiters + if (!replay && !process_desync_interval(dp, ctrack)) return verdict; + + uint32_t desync_fwmark = fwmark | params.desync_fwmark; + ttl_orig = ip ? ip->ip_ttl : ip6hdr->ip6_ctlun.ip6_un1.ip6_un1_hlim; + ttl_fake = ip6hdr ? dp->desync_ttl6 ? dp->desync_ttl6 : ttl_orig : dp->desync_ttl ? dp->desync_ttl : ttl_orig; + extract_endpoints(ip, ip6hdr, NULL, udphdr, &src, &dst); + + if (len_payload) + { + const uint8_t *fake; + size_t fake_size; + bool b; + char host[256]; + bool bHaveHost=false; + + if (IsQUICInitial(data_payload,len_payload)) + { + DLOG("packet contains QUIC initial\n"); + l7proto = QUIC; + if (ctrack && !ctrack->l7proto) ctrack->l7proto = l7proto; + + uint8_t clean[16384], *pclean; + size_t clean_len; + + if (replay) + { + clean_len = ctrack_replay->reasm_orig.size_present; + pclean = ctrack_replay->reasm_orig.packet; + } + else + { + clean_len = sizeof(clean); + pclean = QUICDecryptInitial(data_payload,len_payload,clean,&clean_len) ? clean : NULL; + } + if (pclean) + { + if (ctrack && !ReasmIsEmpty(&ctrack->reasm_orig)) + { + if (ReasmHasSpace(&ctrack->reasm_orig, clean_len)) + { + reasm_orig_feed(ctrack,IPPROTO_UDP,clean,clean_len); + pclean = ctrack->reasm_orig.packet; + clean_len = ctrack->reasm_orig.size_present; + } + else + { + DLOG("QUIC reasm is too long. cancelling.\n"); + reasm_orig_cancel(ctrack); + return verdict; // cannot be first packet + } + } + + uint8_t defrag[16384]; + size_t hello_offset, hello_len, defrag_len = sizeof(defrag); + if (QUICDefragCrypto(pclean,clean_len,defrag,&defrag_len)) + { + bool bIsHello = IsQUICCryptoHello(defrag, defrag_len, &hello_offset, &hello_len); + bool bReqFull = bIsHello ? IsTLSHandshakeFull(defrag+hello_offset,hello_len) : false; + + DLOG(bIsHello ? bReqFull ? "packet contains full TLS ClientHello\n" : "packet contains partial TLS ClientHello\n" : "packet does not contain TLS ClientHello\n"); + + if (ctrack) + { + if (bIsHello && !bReqFull && ReasmIsEmpty(&ctrack->reasm_orig)) + { + // preallocate max buffer to avoid reallocs that cause memory copy + if (!reasm_orig_start(ctrack,IPPROTO_UDP,16384,16384,clean,clean_len)) + { + reasm_orig_cancel(ctrack); + return verdict; + } + } + if (!ReasmIsEmpty(&ctrack->reasm_orig)) + { + verdict_udp_csum_fix(verdict, udphdr, transport_len, ip, ip6hdr); + if (rawpacket_queue(&ctrack->delayed, &dst, desync_fwmark, ifout, data_pkt, *len_pkt, len_payload)) + { + DLOG("DELAY desync until reasm is complete (#%u)\n", rawpacket_queue_count(&ctrack->delayed)); + } + else + { + fprintf(stderr, "rawpacket_queue failed !'\n"); + reasm_orig_cancel(ctrack); + return verdict; + } + if (bReqFull) + { + replay_queue(&ctrack->delayed); + reasm_orig_fin(ctrack); + } + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + } + } + + if (bIsHello) + { + bHaveHost = TLSHelloExtractHostFromHandshake(defrag + hello_offset, hello_len, host, sizeof(host), TLS_PARTIALS_ENABLE); + if (!bHaveHost && dp->desync_skip_nosni) + { + reasm_orig_cancel(ctrack); + DLOG("not applying tampering to QUIC ClientHello without hostname in the SNI\n"); + return verdict; + } + } + else + { + if (!quic_reasm_cancel(ctrack,"QUIC initial without ClientHello")) return verdict; + } + } + else + { + // defrag failed + if (!quic_reasm_cancel(ctrack,"QUIC initial defrag CRYPTO failed")) return verdict; + } + } + else + { + // decrypt failed + if (!quic_reasm_cancel(ctrack,"QUIC initial decryption failed")) return verdict; + } + } + else // not QUIC initial + { + // received payload without host. it means we are out of the request retransmission phase. stop counter + ctrack_stop_retrans_counter(ctrack); + + reasm_orig_cancel(ctrack); + + if (IsWireguardHandshakeInitiation(data_payload,len_payload)) + { + DLOG("packet contains wireguard handshake initiation\n"); + l7proto = WIREGUARD; + if (ctrack && !ctrack->l7proto) ctrack->l7proto = l7proto; + } + else if (IsDhtD1(data_payload,len_payload)) + { + DLOG("packet contains DHT d1...e\n"); + l7proto = DHT; + if (ctrack && !ctrack->l7proto) ctrack->l7proto = l7proto; + } + else + { + if (!dp->desync_any_proto) return verdict; + DLOG("applying tampering to unknown protocol\n"); + } + } + + if (bHaveHost) + { + bool bCheckDone=false, bCheckResult=false, bCheckExcluded=false; + DLOG("hostname: %s\n",host); + if (ctrack_replay) + { + if (!ctrack_replay->hostname) + { + ctrack_replay->hostname=strdup(host); + if (!ctrack_replay->hostname) + { + DLOG_ERR("hostname dup : out of memory"); + return verdict; + } + DLOG("we have hostname now. searching desync profile again.\n"); + struct desync_profile *dp_prev = dp; + dp = ctrack_replay->dp = dp_find(¶ms.desync_profiles, !!ip6hdr, 0, ntohs(bReverse ? udphdr->uh_sport : udphdr->uh_dport), ctrack_replay->hostname, &ctrack_replay->bCheckDone, &ctrack_replay->bCheckResult, &ctrack_replay->bCheckExcluded); + ctrack_replay->dp_search_complete = true; + if (!dp) return verdict; + if (dp!=dp_prev) + { + DLOG("desync profile changed by reavealed hostname !\n"); + // re-evaluate start/cutoff limiters + if (!replay) + { + maybe_cutoff(ctrack, IPPROTO_UDP); + if (!process_desync_interval(dp, ctrack)) return verdict; + } + } + } + bCheckDone = ctrack_replay->bCheckDone; + bCheckResult = ctrack_replay->bCheckResult; + bCheckExcluded = ctrack_replay->bCheckExcluded; + } + if (dp->hostlist || dp->hostlist_exclude) + { + bool bCheckExcluded; + if (!bCheckDone) + bCheckResult = HostlistCheck(dp, host, &bCheckExcluded); + if (!bCheckResult) + { + if (ctrack_replay) + { + ctrack_replay->hostname_ah_check = *dp->hostlist_auto_filename && !bCheckExcluded; + if (ctrack_replay->hostname_ah_check) + { + // first request is not retrans + if (ctrack_replay->hostname) + process_retrans_fail(ctrack_replay, IPPROTO_UDP); + else + ctrack_replay->hostname=strdup(host); + } + } + DLOG("not applying tampering to this request\n"); + return verdict; + } + } + } + + // desync profile may have changed after hostname was revealed + switch(l7proto) + { + case QUIC: + fake = dp->fake_quic; + fake_size = dp->fake_quic_size; + break; + case WIREGUARD: + fake = dp->fake_wg; + fake_size = dp->fake_wg_size; + break; + case DHT: + fake = dp->fake_dht; + fake_size = dp->fake_dht_size; + break; + default: + fake = dp->fake_unknown_udp; + fake_size = dp->fake_unknown_udp_size; + break; + } + ttl_fake = ip6hdr ? dp->desync_ttl6 ? dp->desync_ttl6 : ttl_orig : dp->desync_ttl ? dp->desync_ttl : ttl_orig; + + enum dpi_desync_mode desync_mode = dp->desync_mode; + uint32_t fooling_orig = FOOL_NONE; + + if (params.debug) + { + char s1[48],s2[48]; + ntop46_port((struct sockaddr *)&src, s1, sizeof(s1)); + ntop46_port((struct sockaddr *)&dst, s2, sizeof(s2)); + DLOG("dpi desync src=%s dst=%s\n",s1,s2); + } + + pkt1_len = sizeof(pkt1); + b = false; + switch(desync_mode) + { + case DESYNC_FAKE_KNOWN: + if (l7proto==UNKNOWN) + { + DLOG("not applying fake because of unknown protocol\n"); + desync_mode = dp->desync_mode2; + break; + } + case DESYNC_FAKE: + if (!prepare_udp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, ttl_fake, IP4_TOS(ip),IP6_FLOW(ip6hdr), dp->desync_fooling_mode, NULL, 0, 0, fake, fake_size, pkt1, &pkt1_len)) + return verdict; + DLOG("sending fake request : "); + hexdump_limited_dlog(fake,fake_size,PKTDATA_MAXDUMP); DLOG("\n"); + if (!rawsend_rep(dp->desync_repeats,(struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + b = true; + break; + case DESYNC_HOPBYHOP: + case DESYNC_DESTOPT: + case DESYNC_IPFRAG1: + fooling_orig = (desync_mode==DESYNC_HOPBYHOP) ? FOOL_HOPBYHOP : (desync_mode==DESYNC_DESTOPT) ? FOOL_DESTOPT : FOOL_IPFRAG1; + if (ip6hdr && (dp->desync_mode2==DESYNC_NONE || !desync_valid_second_stage_udp(dp->desync_mode2))) + { + if (!prepare_udp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, + ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), + fooling_orig,NULL,0,0, + data_payload, len_payload, pkt1, &pkt1_len)) + { + return verdict; + } + DLOG("resending original packet with extension header\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + // this mode is final, no other options available + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + } + desync_mode = dp->desync_mode2; + break; + default: + pkt1_len=0; + break; + } + + if (b) + { + if (dp->desync_mode2==DESYNC_NONE || !desync_valid_second_stage_udp(dp->desync_mode2)) + { + DLOG("reinjecting original packet. len=%zu len_payload=%zu\n", *len_pkt, len_payload); + verdict_udp_csum_fix(verdict, udphdr, transport_len, ip, ip6hdr); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , data_pkt, *len_pkt)) + return verdict; + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + } + desync_mode = dp->desync_mode2; + } + + switch(desync_mode) + { + case DESYNC_UDPLEN: + pkt1_len = sizeof(pkt1); + if (!prepare_udp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), fooling_orig, dp->udplen_pattern, sizeof(dp->udplen_pattern), dp->udplen_increment, data_payload, len_payload, pkt1, &pkt1_len)) + { + DLOG("could not construct packet with modified length. too large ?\n"); + return verdict; + } + DLOG("resending original packet with increased by %d length\n", dp->udplen_increment); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + case DESYNC_TAMPER: + if (IsDhtD1(data_payload,len_payload)) + { + size_t szbuf,szcopy; + memcpy(pkt2,"d2:001:x",8); + pkt2_len=8; + szbuf=sizeof(pkt2)-pkt2_len; + szcopy=len_payload-1; + if (szcopy>szbuf) + { + DLOG("packet is too long to tamper"); + return verdict; + } + memcpy(pkt2+pkt2_len,data_payload+1,szcopy); + pkt2_len+=szcopy; + pkt1_len = sizeof(pkt1); + if (!prepare_udp_segment((struct sockaddr *)&src, (struct sockaddr *)&dst, ttl_orig,IP4_TOS(ip),IP6_FLOW(ip6hdr), fooling_orig, NULL, 0 , 0, pkt2, pkt2_len, pkt1, &pkt1_len)) + { + DLOG("could not construct packet with modified length. too large ?\n"); + return verdict; + } + DLOG("resending tampered DHT\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + } + else + { + DLOG("payload is not tamperable\n"); + return verdict; + } + case DESYNC_IPFRAG2: + { + verdict_udp_csum_fix(verdict, udphdr, transport_len, ip, ip6hdr); + + uint8_t pkt3[DPI_DESYNC_MAX_FAKE_LEN+100], *pkt_orig; + size_t pkt_orig_len; + + size_t ipfrag_pos = (dp->desync_ipfrag_pos_udp && dp->desync_ipfrag_pos_udpdesync_ipfrag_pos_udp : sizeof(struct udphdr); + // freebsd do not set ip.id + uint32_t ident = ip ? ip->ip_id ? ip->ip_id : htons(1+random()%0xFFFF) : htonl(1+random()%0xFFFFFFFF); + + pkt1_len = sizeof(pkt1); + pkt2_len = sizeof(pkt2); + + if (ip6hdr && (fooling_orig==FOOL_HOPBYHOP || fooling_orig==FOOL_DESTOPT)) + { + pkt_orig_len = sizeof(pkt3); + if (!ip6_insert_simple_hdr(fooling_orig==FOOL_HOPBYHOP ? IPPROTO_HOPOPTS : IPPROTO_DSTOPTS, data_pkt, *len_pkt, pkt3, &pkt_orig_len)) + return verdict; + pkt_orig = pkt3; + } + else + { + pkt_orig = data_pkt; + pkt_orig_len = *len_pkt; + } + + if (!ip_frag(pkt_orig, pkt_orig_len, ipfrag_pos, ident, pkt1, &pkt1_len, pkt2, &pkt2_len)) + return verdict; + + DLOG("sending 1st ip fragment 0-%zu ip_payload_len=%zu : ", ipfrag_pos-1, ipfrag_pos); + hexdump_limited_dlog(pkt1,pkt1_len,IP_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len)) + return verdict; + + DLOG("sending 2nd ip fragment %zu-%zu ip_payload_len=%zu : ", ipfrag_pos, transport_len-1, transport_len-ipfrag_pos); + hexdump_limited_dlog(pkt2,pkt2_len,IP_MAXDUMP); DLOG("\n"); + if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt2, pkt2_len)) + return verdict; + + return ct_new_postnat_fix_udp(ctrack, ip, ip6hdr, udphdr, len_pkt); + } + default: + break; + } + + } + + return verdict; +} + + +static void packet_debug(bool replay, uint8_t proto, const struct ip *ip, const struct ip6_hdr *ip6hdr, const struct tcphdr *tcphdr, const struct udphdr *udphdr, const uint8_t *data_payload, size_t len_payload) +{ + if (params.debug) + { + if (replay) DLOG("REPLAY "); + if (ip) + { + char s[66]; + str_ip(s,sizeof(s),ip); + DLOG("IP4: %s",s); + } + else if (ip6hdr) + { + char s[128]; + str_ip6hdr(s,sizeof(s),ip6hdr, proto); + DLOG("IP6: %s",s); + } + if (tcphdr) + { + char s[80]; + str_tcphdr(s,sizeof(s),tcphdr); + DLOG(" %s\n",s); + if (len_payload) { DLOG("TCP: "); hexdump_limited_dlog(data_payload, len_payload, 32); DLOG("\n"); } + + } + else if (udphdr) + { + char s[30]; + str_udphdr(s,sizeof(s),udphdr); + DLOG(" %s\n",s); + if (len_payload) { DLOG("UDP: "); hexdump_limited_dlog(data_payload, len_payload, 32); DLOG("\n"); } + } + else + DLOG("\n"); + } +} + + +static uint8_t dpi_desync_packet_play(bool replay, size_t reasm_offset, uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt) +{ + struct ip *ip; + struct ip6_hdr *ip6hdr; + struct tcphdr *tcphdr; + struct udphdr *udphdr; + size_t transport_len; + uint8_t *data_payload,proto; + size_t len_payload; + uint8_t verdict = VERDICT_PASS; + + proto_dissect_l3l4(data_pkt,*len_pkt,&ip,&ip6hdr,&proto,&tcphdr,&udphdr,&transport_len,&data_payload,&len_payload); + if (!!ip != !!ip6hdr) + { + packet_debug(replay, proto, ip, ip6hdr, tcphdr, udphdr, data_payload, len_payload); + switch(proto) + { + case IPPROTO_TCP: + if (tcphdr) + { + verdict = dpi_desync_tcp_packet_play(replay, reasm_offset, fwmark, ifout, data_pkt, len_pkt, ip, ip6hdr, tcphdr, transport_len, data_payload, len_payload); + verdict_tcp_csum_fix(verdict, tcphdr, transport_len, ip, ip6hdr); + } + break; + case IPPROTO_UDP: + if (udphdr) + { + verdict = dpi_desync_udp_packet_play(replay, reasm_offset, fwmark, ifout, data_pkt, len_pkt, ip, ip6hdr, udphdr, transport_len, data_payload, len_payload); + verdict_udp_csum_fix(verdict, udphdr, transport_len, ip, ip6hdr); + } + break; + } + } + return verdict; +} +uint8_t dpi_desync_packet(uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt) +{ + return dpi_desync_packet_play(false, 0, fwmark, ifout, data_pkt, len_pkt); +} + + + +static bool replay_queue(struct rawpacket_tailhead *q) +{ + struct rawpacket *rp; + size_t offset; + unsigned int i; + bool b = true; + for (i=1,offset=0 ; (rp=rawpacket_dequeue(q)) ; offset+=rp->len_payload, rawpacket_free(rp), i++) + { + DLOG("REPLAYING delayed packet #%u offset %zu\n",i,offset); + uint8_t verdict = dpi_desync_packet_play(true, offset, rp->fwmark, rp->ifout, rp->packet, &rp->len); + switch(verdict & VERDICT_MASK) + { + case VERDICT_MODIFY: + DLOG("SENDING delayed packet #%u modified\n", i); + b &= rawsend_rp(rp); + break; + case VERDICT_PASS: + DLOG("SENDING delayed packet #%u unmodified\n", i); + b &= rawsend_rp(rp); + break; + case VERDICT_DROP: + DLOG("DROPPING delayed packet #%u\n", i); + break; + } + } + return b; +} diff --git a/nfq/desync.h b/nfq/desync.h new file mode 100644 index 0000000..4aa42aa --- /dev/null +++ b/nfq/desync.h @@ -0,0 +1,56 @@ +#pragma once + +#include "darkmagic.h" + +#include +#include + +#define __FAVOR_BSD +#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 9216 + +enum dpi_desync_mode { + DESYNC_NONE=0, + DESYNC_INVALID, + DESYNC_FAKE, + DESYNC_FAKE_KNOWN, + DESYNC_RST, + DESYNC_RSTACK, + DESYNC_SYNACK, + DESYNC_SYNDATA, + DESYNC_DISORDER, + DESYNC_DISORDER2, + DESYNC_SPLIT, + DESYNC_SPLIT2, + DESYNC_IPFRAG2, + DESYNC_HOPBYHOP, + DESYNC_DESTOPT, + DESYNC_IPFRAG1, + DESYNC_UDPLEN, + DESYNC_TAMPER +}; + +extern const char *fake_http_request_default; +extern const uint8_t fake_tls_clienthello_default[648]; +void randomize_default_tls_payload(uint8_t *p); + +enum dpi_desync_mode desync_mode_from_string(const char *s); +bool desync_valid_zero_stage(enum dpi_desync_mode mode); +bool desync_valid_first_stage(enum dpi_desync_mode mode); +bool desync_only_first_stage(enum dpi_desync_mode mode); +bool desync_valid_second_stage(enum dpi_desync_mode mode); +bool desync_valid_second_stage_tcp(enum dpi_desync_mode mode); +bool desync_valid_second_stage_udp(enum dpi_desync_mode mode); + +void desync_init(void); +uint8_t dpi_desync_packet(uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt); 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..01d0558 --- /dev/null +++ b/nfq/helpers.c @@ -0,0 +1,387 @@ +#define _GNU_SOURCE + +#include "helpers.h" + +#include +#include +#include +#include +#include +#include + +#include "params.h" + +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 < size; k++) DLOG("%02X ", data[k]); + DLOG(bcut ? "... : " : ": "); + for (k = 0; k < size; k++) DLOG("%c", data[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; +} +bool save_file(const char *filename, const void *buffer, size_t buffer_size) +{ + FILE *F; + + F = fopen(filename, "wb"); + if (!F) return false; + + fwrite(buffer, 1, buffer_size, F); + if (ferror(F)) + { + fclose(F); + return false; + } + + fclose(F); + return true; +} +bool append_to_list_file(const char *filename, const char *s) +{ + FILE *F = fopen(filename,"at"); + if (!F) return false; + bool bOK = fprintf(F,"%s\n",s)>0; + fclose(F); + return bOK; +} + + +void ntop46(const struct sockaddr *sa, char *str, size_t len) +{ + if (!len) return; + *str = 0; + switch (sa->sa_family) + { + case AF_INET: + inet_ntop(sa->sa_family, &((struct sockaddr_in*)sa)->sin_addr, str, len); + break; + case AF_INET6: + inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, str, len); + break; + default: + snprintf(str, len, "UNKNOWN_FAMILY_%d", sa->sa_family); + } +} +void ntop46_port(const struct sockaddr *sa, char *str, size_t len) +{ + char ip[40]; + ntop46(sa, ip, sizeof(ip)); + switch (sa->sa_family) + { + case AF_INET: + snprintf(str, len, "%s:%u", ip, ntohs(((struct sockaddr_in*)sa)->sin_port)); + break; + case AF_INET6: + snprintf(str, len, "[%s]:%u", ip, ntohs(((struct sockaddr_in6*)sa)->sin6_port)); + break; + default: + snprintf(str, len, "%s", ip); + } +} +void print_sockaddr(const struct sockaddr *sa) +{ + char ip_port[48]; + + ntop46_port(sa, ip_port, sizeof(ip_port)); + printf("%s", ip_port); +} + +bool pton4_port(const char *s, struct sockaddr_in *sa) +{ + char ip[16],*p; + size_t l; + unsigned int u; + + p = strchr(s,':'); + if (!p) return false; + l = p-s; + if (l<7 || l>15) return false; + memcpy(ip,s,l); + ip[l]=0; + p++; + + sa->sin_family = AF_INET; + if (inet_pton(AF_INET,ip,&sa->sin_addr)!=1 || sscanf(p,"%u",&u)!=1 || !u || u>0xFFFF) return false; + sa->sin_port = htons((uint16_t)u); + + return true; +} +bool pton6_port(const char *s, struct sockaddr_in6 *sa) +{ + char ip[40],*p; + size_t l; + unsigned int u; + + if (*s++!='[') return false; + p = strchr(s,']'); + if (!p || p[1]!=':') return false; + l = p-s; + if (l<2 || l>39) return false; + p+=2; + memcpy(ip,s,l); + ip[l]=0; + + sa->sin6_family = AF_INET6; + if (inet_pton(AF_INET6,ip,&sa->sin6_addr)!=1 || sscanf(p,"%u",&u)!=1 || !u || u>0xFFFF) return false; + sa->sin6_port = htons((uint16_t)u); + sa->sin6_flowinfo = 0; + sa->sin6_scope_id = 0; + + return true; +} + + +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) + { + DLOG_PERROR("setsockopt (SO_RCVBUF)"); + close(fd); + return false; + } + if (sndbuf && setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(int)) < 0) + { + DLOG_PERROR("setsockopt (SO_SNDBUF)"); + close(fd); + return false; + } + dbgprint_socket_buffers(fd); + return true; +} + +uint64_t pntoh64(const void *p) +{ + return (uint64_t)*((const uint8_t *)(p)+0) << 56 | + (uint64_t)*((const uint8_t *)(p)+1) << 48 | + (uint64_t)*((const uint8_t *)(p)+2) << 40 | + (uint64_t)*((const uint8_t *)(p)+3) << 32 | + (uint64_t)*((const uint8_t *)(p)+4) << 24 | + (uint64_t)*((const uint8_t *)(p)+5) << 16 | + (uint64_t)*((const uint8_t *)(p)+6) << 8 | + (uint64_t)*((const uint8_t *)(p)+7) << 0; +} +void phton64(uint8_t *p, uint64_t v) +{ + p[0] = (uint8_t)(v >> 56); + p[1] = (uint8_t)(v >> 48); + p[2] = (uint8_t)(v >> 40); + p[3] = (uint8_t)(v >> 32); + p[4] = (uint8_t)(v >> 24); + p[5] = (uint8_t)(v >> 16); + p[6] = (uint8_t)(v >> 8); + p[7] = (uint8_t)(v >> 0); +} + +bool seq_within(uint32_t s, uint32_t s1, uint32_t s2) +{ + return (s2>=s1 && s>=s1 && s<=s2) || (s2=s1)); +} + +bool ipv6_addr_is_zero(const struct in6_addr *a) +{ + return !memcmp(a,"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",16); +} + + +#define INVALID_HEX_DIGIT ((uint8_t)-1) +static inline uint8_t parse_hex_digit(char c) +{ + return (c>='0' && c<='9') ? c-'0' : (c>='a' && c<='f') ? c-'a'+0xA : (c>='A' && c<='F') ? c-'A'+0xA : INVALID_HEX_DIGIT; +} +static inline bool parse_hex_byte(const char *s, uint8_t *pbyte) +{ + uint8_t u,l; + u = parse_hex_digit(s[0]); + l = parse_hex_digit(s[1]); + if (u==INVALID_HEX_DIGIT || l==INVALID_HEX_DIGIT) + { + *pbyte=0; + return false; + } + else + { + *pbyte=(u<<4) | l; + return true; + } +} +bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size) +{ + uint8_t *pe = pbuf+*size; + *size=0; + while(pbufpatsize ? patsize : bufsize; + memcpy(buf,pattern,size); + buf += size; + bufsize -= size; + } +} + +int fprint_localtime(FILE *F) +{ + struct tm t; + time_t now; + + time(&now); + localtime_r(&now,&t); + return fprintf(F, "%02d.%02d.%04d %02d:%02d:%02d", t.tm_mday, t.tm_mon + 1, t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec); +} + +time_t file_mod_time(const char *filename) +{ + struct stat st; + return stat(filename,&st)==-1 ? 0 : st.st_mtime; +} + +bool pf_in_range(uint16_t port, const port_filter *pf) +{ + return port && (((!pf->from && !pf->to) || (port>=pf->from && port<=pf->to)) ^ pf->neg); +} +bool pf_parse(const char *s, port_filter *pf) +{ + unsigned int v1,v2; + char c; + + if (!s) return false; + if (*s=='~') + { + pf->neg=true; + s++; + } + else + pf->neg=false; + if (sscanf(s,"%u-%u%c",&v1,&v2,&c)==2) + { + if (v1>65535 || v2>65535 || v1>v2) return false; + pf->from=(uint16_t)v1; + pf->to=(uint16_t)v2; + } + else if (sscanf(s,"%u%c",&v1,&c)==1) + { + if (v1>65535) return false; + pf->to=pf->from=(uint16_t)v1; + } + else + return false; + // deny all case + if (!pf->from && !pf->to) pf->neg=true; + return true; +} +bool pf_is_empty(const port_filter *pf) +{ + return !pf->neg && !pf->from && !pf->to; +} + +void fill_random_bytes(uint8_t *p,size_t sz) +{ + size_t k,sz16 = sz>>1; + for(k=0;k +#include +#include +#include +#include +#include +#include +#include + +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); +bool save_file(const char *filename, const void *buffer, size_t buffer_size); +bool append_to_list_file(const char *filename, const char *s); + +void print_sockaddr(const struct sockaddr *sa); +void ntop46(const struct sockaddr *sa, char *str, size_t len); +void ntop46_port(const struct sockaddr *sa, char *str, size_t len); +bool pton4_port(const char *s, struct sockaddr_in *sa); +bool pton6_port(const char *s, struct sockaddr_in6 *sa); + +bool seq_within(uint32_t s, uint32_t s1, uint32_t s2); + +void dbgprint_socket_buffers(int fd); +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf); + +uint64_t pntoh64(const void *p); +void phton64(uint8_t *p, uint64_t v); + +bool ipv6_addr_is_zero(const struct in6_addr *a); + +static inline uint16_t pntoh16(const uint8_t *p) { + return ((uint16_t)p[0] << 8) | (uint16_t)p[1]; +} +static inline void phton16(uint8_t *p, uint16_t v) { + p[0] = (uint8_t)(v >> 8); + p[1] = v & 0xFF; +} +static inline uint32_t pntoh32(const uint8_t *p) { + return ((uint32_t)p[0] << 24) | ((uint32_t)p[1] << 16) | ((uint32_t)p[2] << 8) | (uint32_t)p[3]; +} + +bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size); +void fill_pattern(uint8_t *buf,size_t bufsize,const void *pattern,size_t patsize); + +int fprint_localtime(FILE *F); + +time_t file_mod_time(const char *filename); + +typedef struct +{ + uint16_t from,to; + bool neg; +} port_filter; +bool pf_in_range(uint16_t port, const port_filter *pf); +bool pf_parse(const char *s, port_filter *pf); +bool pf_is_empty(const port_filter *pf); + +void fill_random_bytes(uint8_t *p,size_t sz); +void fill_random_az(uint8_t *p,size_t sz); +void fill_random_az09(uint8_t *p,size_t sz); + +bool cd_to_exe_dir(const char *argv0); diff --git a/nfq/hostlist.c b/nfq/hostlist.c new file mode 100644 index 0000000..03ed441 --- /dev/null +++ b/nfq/hostlist.c @@ -0,0 +1,205 @@ +#include +#include "hostlist.h" +#include "gzip.h" +#include "helpers.h" + +// inplace tolower() and add to pool +static bool addpool(strpool **hostlist, char **s, const char *end) +{ + char *p; + + // advance until eol lowering all chars + for (p = *s; pstr)) return false; + } + return true; +} + +bool NonEmptyHostlist(strpool **hostlist) +{ + // add impossible hostname if the list is empty + return *hostlist ? true : StrPoolAddStrLen(hostlist, "@&()", 4); +} + + +bool SearchHostList(strpool *hostlist, const char *host) +{ + if (hostlist) + { + const char *p = host; + bool bInHostList; + while (p) + { + bInHostList = StrPoolCheckStr(hostlist, p); + DLOG("Hostlist check for %s : %s\n", p, bInHostList ? "positive" : "negative"); + if (bInHostList) return true; + p = strchr(p, '.'); + if (p) p++; + } + } + return false; +} + +// return : true = apply fooling, false = do not apply +static bool HostlistCheck_(strpool *hostlist, strpool *hostlist_exclude, const char *host, bool *excluded) +{ + if (excluded) *excluded = false; + if (hostlist_exclude) + { + DLOG("Checking exclude hostlist\n"); + if (SearchHostList(hostlist_exclude, host)) + { + if (excluded) *excluded = true; + return false; + } + } + if (hostlist) + { + DLOG("Checking include hostlist\n"); + return SearchHostList(hostlist, host); + } + return true; +} + +static bool LoadIncludeHostListsForProfile(struct desync_profile *dp) +{ + if (!LoadHostLists(&dp->hostlist, &dp->hostlist_files)) + return false; + if (*dp->hostlist_auto_filename) + { + dp->hostlist_auto_mod_time = file_mod_time(dp->hostlist_auto_filename); + NonEmptyHostlist(&dp->hostlist); + } + return true; +} + +// return : true = apply fooling, false = do not apply +bool HostlistCheck(struct desync_profile *dp, const char *host, bool *excluded) +{ + DLOG("* Hostlist check for profile %d\n",dp->n); + if (*dp->hostlist_auto_filename) + { + time_t t = file_mod_time(dp->hostlist_auto_filename); + if (t!=dp->hostlist_auto_mod_time) + { + DLOG_CONDUP("Autohostlist '%s' from profile %d was modified. Reloading include hostlists for this profile.\n",dp->hostlist_auto_filename, dp->n); + if (!LoadIncludeHostListsForProfile(dp)) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + dp->hostlist_auto_mod_time = t; + NonEmptyHostlist(&dp->hostlist); + } + } + return HostlistCheck_(dp->hostlist, dp->hostlist_exclude, host, excluded); +} + +bool LoadIncludeHostLists() +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + if (!LoadIncludeHostListsForProfile(&dpl->dp)) + return false; + return true; +} +bool LoadExcludeHostLists() +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + if (!LoadHostLists(&dpl->dp.hostlist_exclude, &dpl->dp.hostlist_exclude_files)) + return false; + return true; +} diff --git a/nfq/hostlist.h b/nfq/hostlist.h new file mode 100644 index 0000000..0bdb94a --- /dev/null +++ b/nfq/hostlist.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include "pools.h" +#include "params.h" + +bool AppendHostList(strpool **hostlist, char *filename); +bool LoadHostLists(strpool **hostlist, struct str_list_head *file_list); +bool LoadIncludeHostLists(); +bool LoadExcludeHostLists(); +bool NonEmptyHostlist(strpool **hostlist); +bool SearchHostList(strpool *hostlist, const char *host); +// return : true = apply fooling, false = do not apply +bool HostlistCheck(struct desync_profile *dp,const char *host, bool *excluded); \ No newline at end of file diff --git a/nfq/nfqws.c b/nfq/nfqws.c new file mode 100644 index 0000000..7fea2b3 --- /dev/null +++ b/nfq/nfqws.c @@ -0,0 +1,1831 @@ +#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 "gzip.h" +#include "pools.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __CYGWIN__ +#include "win.h" +#endif + +#ifdef __linux__ +#include +#define NF_DROP 0 +#define NF_ACCEPT 1 +#endif + +#define CTRACK_T_SYN 60 +#define CTRACK_T_FIN 60 +#define CTRACK_T_EST 300 +#define CTRACK_T_UDP 60 + +struct params_s params; +#ifdef __CYGWIN__ +bool bQuit=false; +#endif + +static bool bHup = false; +static void onhup(int sig) +{ + printf("HUP received !\n"); + printf("Will reload hostlist on next request (if any)\n"); + bHup = true; +} +// should be called in normal execution +static void dohup(void) +{ + if (bHup) + { + if (!LoadIncludeHostLists() || !LoadExcludeHostLists()) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + bHup = false; + } +} + +static void onusr1(int sig) +{ + printf("\nCONNTRACK DUMP\n"); + ConntrackPoolDump(¶ms.conntrack); + printf("\n"); +} +static void onusr2(int sig) +{ + printf("\nHOSTFAIL POOL DUMP\n"); + + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + { + printf("\nDESYNC PROFILE %d\n",dpl->dp.n); + HostFailPoolDump(dpl->dp.hostlist_auto_fail_counters); + } + + printf("\n"); +} + +static void pre_desync(void) +{ + signal(SIGHUP, onhup); + signal(SIGUSR1, onusr1); + signal(SIGUSR2, onusr2); + + desync_init(); +} + + +static uint8_t processPacketData(uint32_t *mark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt) +{ +#ifdef __linux__ + if (*mark & params.desync_fwmark) + { + DLOG("ignoring generated packet\n"); + return VERDICT_PASS; + } +#endif + return dpi_desync_packet(*mark, ifout, data_pkt, len_pkt); +} + + +#ifdef __linux__ +static int nfq_cb(struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, struct nfq_data *nfa, void *cookie) +{ + int id, ilen; + size_t len; + struct nfqnl_msg_packet_hdr *ph; + uint8_t *data; + uint32_t ifidx; + char ifout[IFNAMSIZ+1]; + + ph = nfq_get_msg_packet_hdr(nfa); + id = ph ? ntohl(ph->packet_id) : 0; + + uint32_t mark = nfq_get_nfmark(nfa); + ilen = nfq_get_payload(nfa, &data); + + *ifout=0; + if (params.bind_fix4 || params.bind_fix6) + { + char ifin[IFNAMSIZ+1]; + uint32_t ifidx_in; + + ifidx = nfq_get_outdev(nfa); + if (ifidx) if_indextoname(ifidx,ifout); + *ifin=0; + ifidx_in = nfq_get_indev(nfa); + if (ifidx_in) if_indextoname(ifidx_in,ifin); + + DLOG("packet: id=%d len=%d mark=%08X ifin=%s(%u) ifout=%s(%u)\n", id, ilen, mark, ifin, ifidx_in, ifout, ifidx); + } + else + // save some syscalls + DLOG("packet: id=%d len=%d mark=%08X\n", id, ilen, mark); + if (ilen >= 0) + { + len = ilen; + uint8_t verdict = processPacketData(&mark, ifout, data, &len); + switch(verdict & VERDICT_MASK) + { + case VERDICT_MODIFY: + DLOG("packet: id=%d pass modified. len=%zu\n", id, len); + return nfq_set_verdict2(qh, id, NF_ACCEPT, mark, (uint32_t)len, data); + case VERDICT_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(void) +{ + struct nfq_handle *h = NULL; + struct nfq_q_handle *qh = NULL; + int fd,rv; + uint8_t buf[16384] __attribute__((aligned)); + + DLOG_CONDUP("opening library handle\n"); + h = nfq_open(); + if (!h) { + DLOG_PERROR("nfq_open()"); + goto exiterr; + } + + DLOG_CONDUP("unbinding existing nf_queue handler for AF_INET (if any)\n"); + if (nfq_unbind_pf(h, AF_INET) < 0) { + DLOG_PERROR("nfq_unbind_pf()"); + goto exiterr; + } + + DLOG_CONDUP("binding nfnetlink_queue as nf_queue handler for AF_INET\n"); + if (nfq_bind_pf(h, AF_INET) < 0) { + DLOG_PERROR("nfq_bind_pf()"); + goto exiterr; + } + + DLOG_CONDUP("binding this socket to queue '%u'\n", params.qnum); + qh = nfq_create_queue(h, params.qnum, &nfq_cb, ¶ms); + if (!qh) { + DLOG_PERROR("nfq_create_queue()"); + goto exiterr; + } + + DLOG_CONDUP("setting copy_packet mode\n"); + if (nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff) < 0) { + DLOG_PERROR("can't set packet_copy mode"); + goto exiterr; + } + if (nfq_set_queue_maxlen(qh, Q_MAXLEN) < 0) { + DLOG_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)) + { + DLOG_ERR("can't set queue flags. its OK on linux <3.6\n"); + // dot not fail. not supported on old linuxes <3.6 + } + + DLOG_CONDUP("initializing raw sockets bind-fix4=%u bind-fix6=%u\n",params.bind_fix4,params.bind_fix6); + if (!rawsend_preinit(params.bind_fix4,params.bind_fix6)) + goto exiterr; + +#ifndef __CYGWIN__ + sec_harden(); + + if (params.droproot && !droproot(params.uid, params.gid)) + goto exiterr; + + print_id(); +#endif + + pre_desync(); + + 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)) > 0) + { + dohup(); + int r = nfq_handle_packet(h, (char *)buf, rv); + if (r) DLOG_ERR("nfq_handle_packet error %d\n", r); + } + DLOG_ERR("recv: errno %d\n",errno); + DLOG_PERROR("recv"); + // do not fail on ENOBUFS + } while(errno==ENOBUFS); + + DLOG_CONDUP("unbinding from queue %u\n", params.qnum); + nfq_destroy_queue(qh); + +#ifdef INSANE + /* normally, applications SHOULD NOT issue this command, since + * it detaches other programs/sockets from AF_INET, too ! */ + DLOG_CONDUP("unbinding from AF_INET\n"); + nfq_unbind_pf(h, AF_INET); +#endif + + DLOG_CONDUP("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(void) +{ + 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; + 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; + + DLOG_CONDUP("creating divert4 socket\n"); + fd[0] = socket_divert(AF_INET); + if (fd[0] == -1) { + DLOG_PERROR("socket (DIVERT4)"); + goto exiterr; + } + DLOG_CONDUP("binding divert4 socket\n"); + if (bind(fd[0], (struct sockaddr*)&bp4, sizeof(bp4)) < 0) + { + DLOG_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); + + DLOG_CONDUP("creating divert6 socket\n"); + fd[1] = socket_divert(AF_INET6); + if (fd[1] == -1) { + DLOG_PERROR("socket (DIVERT6)"); + goto exiterr; + } + DLOG_CONDUP("binding divert6 socket\n"); + if (bind(fd[1], (struct sockaddr*)&bp6, sizeof(bp6)) < 0) + { + DLOG_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; + + DLOG_CONDUP("initializing raw sockets\n"); + if (!rawsend_preinit(false,false)) + goto exiterr; + + if (params.droproot && !droproot(params.uid, params.gid)) + goto exiterr; + print_id(); + + pre_desync(); + + for(;;) + { + FD_ZERO(&fdset); + for(i=0;i0) + { + uint32_t mark=0; + uint8_t verdict; + size_t len = rd; + + DLOG("packet: id=%u len=%zu\n", id, len); + verdict = processPacketData(&mark, NULL, buf, &len); + switch (verdict & VERDICT_MASK) + { + case VERDICT_PASS: + case VERDICT_MODIFY: + if ((verdict & VERDICT_MASK)==VERDICT_PASS) + DLOG("packet: id=%u reinject unmodified\n", id); + else + DLOG("packet: id=%u reinject modified len=%zu\n", id, len); + wr = sendto(fd[i], buf, len, 0, (struct sockaddr*)&sa_from, socklen); + if (wr<0) + DLOG_PERROR("reinject sendto"); + else if (wr!=len) + DLOG_ERR("reinject sendto: not all data was reinjected. received %zu, sent %zd\n", len, 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; +} + + +#elif defined (__CYGWIN__) + +static int win_main(const char *windivert_filter) +{ + size_t len; + unsigned int id; + uint8_t verdict; + bool bOutbound; + uint8_t packet[16384]; + uint32_t mark; + WINDIVERT_ADDRESS wa; + char ifout[22]; + + pre_desync(); + + if (!win_dark_init(¶ms.ssid_filter, ¶ms.nlm_filter)) + { + DLOG_ERR("win_dark_init failed. win32 error %u (0x%08X)\n", w_win32_error, w_win32_error); + return w_win32_error; + } + + for(;;) + { + if (!logical_net_filter_match()) + { + DLOG_CONDUP("logical network is not present. waiting it to appear.\n"); + fflush(stdout); + do + { + if (bQuit) + { + DLOG("QUIT requested\n"); + win_dark_deinit(); + return 0; + } + usleep(500000); + } + while (!logical_net_filter_match()); + DLOG_CONDUP("logical network now present\n"); + fflush(stdout); + } + + if (!windivert_init(windivert_filter)) + { + win_dark_deinit(); + return w_win32_error; + } + + DLOG_CONDUP("windivert initialized. capture is started.\n"); + + // cygwin auto flush fails when piping + fflush(stdout); + fflush(stderr); + + for (id=0;;id++) + { + len = sizeof(packet); + if (!windivert_recv(packet, &len, &wa)) + { + if (errno==ENOBUFS) + { + DLOG("windivert: ignoring too large packet\n"); + continue; // too large packet + } + else if (errno==ENODEV) + { + DLOG_CONDUP("logical network disappeared. deinitializing windivert.\n"); + rawsend_cleanup(); + break; + } + else if (errno==EINTR) + { + DLOG("QUIT requested\n"); + win_dark_deinit(); + return 0; + } + DLOG_ERR("windivert: recv failed. errno %d\n", errno); + win_dark_deinit(); + return w_win32_error; + } + *ifout=0; + if (wa.Outbound) snprintf(ifout,sizeof(ifout),"%u.%u", wa.Network.IfIdx, wa.Network.SubIfIdx); + DLOG("packet: id=%u len=%zu %s IPv6=%u IPChecksum=%u TCPChecksum=%u UDPChecksum=%u IfIdx=%u.%u\n", id, len, wa.Outbound ? "outbound" : "inbound", wa.IPv6, wa.IPChecksum, wa.TCPChecksum, wa.UDPChecksum, wa.Network.IfIdx, wa.Network.SubIfIdx); + if (wa.Impostor) + { + DLOG("windivert: passing impostor packet\n"); + verdict = VERDICT_PASS; + } + else if (wa.Loopback) + { + DLOG("windivert: passing loopback packet\n"); + verdict = VERDICT_PASS; + } + else + { + mark=0; + // pseudo interface id IfIdx.SubIfIdx + verdict = processPacketData(&mark, ifout, packet, &len); + } + switch (verdict & VERDICT_MASK) + { + case VERDICT_PASS: + case VERDICT_MODIFY: + if ((verdict & VERDICT_MASK)==VERDICT_PASS) + DLOG("packet: id=%u reinject unmodified\n", id); + else + DLOG("packet: id=%u reinject modified len=%zu\n", id, len); + if (!windivert_send(packet, len, &wa)) + DLOG_ERR("windivert: reinject of packet id=%u failed\n", id); + break; + default: + DLOG("packet: id=%u drop\n", id); + } + + // cygwin auto flush fails when piping + fflush(stdout); + fflush(stderr); + } + } + win_dark_deinit(); + return 0; +} + +#endif // multiple OS divert handlers + + + +static bool parse_ws_scale_factor(char *s, uint16_t *wsize, uint8_t *wscale) +{ + int v; + char *p; + + if ((p = strchr(s,':'))) *p++=0; + v = atoi(s); + if (v < 0 || v>65535) + { + DLOG_ERR("bad wsize\n"); + return false; + } + *wsize=(uint16_t)v; + if (p && *p) + { + v = atoi(p); + if (v < 0 || v>255) + { + DLOG_ERR("bad wscale\n"); + return false; + } + *wscale = (uint8_t)v; + } + return true; +} + + + +static void cleanup_params(void) +{ + ConntrackPoolDestroy(¶ms.conntrack); + + dp_list_destroy(¶ms.desync_profiles); + +#ifdef __CYGWIN__ + strlist_destroy(¶ms.ssid_filter); + strlist_destroy(¶ms.nlm_filter); +#endif +} +static void exit_clean(int code) +{ + cleanup_params(); + exit(code); +} + +static bool parse_cutoff(const char *opt, unsigned int *value, char *mode) +{ + *mode = (*opt=='n' || *opt=='d' || *opt=='s') ? *opt++ : 'n'; + return sscanf(opt, "%u", value)>0; +} +static bool parse_badseq_increment(const char *opt, uint32_t *value) +{ + if (((opt[0]=='0' && opt[1]=='x') || (opt[0]=='-' && opt[1]=='0' && opt[2]=='x')) && sscanf(opt+2+(opt[0]=='-'), "%X", (int32_t*)value)>0) + { + if (opt[0]=='-') *value = -*value; + return true; + } + else + { + return sscanf(opt, "%d", (int32_t*)value)>0; + } +} +static void load_file_or_exit(const char *filename, void *buf, size_t *size) +{ + if (filename[0]=='0' && filename[1]=='x') + { + if (!parse_hex_str(filename+2,buf,size) || !*size) + { + DLOG_ERR("invalid hex string: %s\n",filename+2); + exit_clean(1); + } + DLOG("read %zu bytes from hex string\n",*size); + } + else + { + if (!load_file_nonempty(filename,buf,size)) + { + DLOG_ERR("could not read %s\n",filename); + exit_clean(1); + } + DLOG("read %zu bytes from %s\n",*size,filename); + } +} + +bool parse_autottl(const char *s, autottl *t) +{ + unsigned int delta,min,max; + AUTOTTL_SET_DEFAULT(*t); + if (s) + { + max = t->max; + switch (sscanf(s,"%u:%u-%u",&delta,&min,&max)) + { + case 3: + if ((delta && !max) || max>255) return false; + t->max=(uint8_t)max; + case 2: + if ((delta && !min) || min>255 || min>max) return false; + t->min=(uint8_t)min; + case 1: + if (delta>255) return false; + t->delta=(uint8_t)delta; + break; + default: + return false; + } + } + return true; +} + +static bool wf_make_l3(char *opt, bool *ipv4, bool *ipv6) +{ + char *e,*p,c; + + for (p=opt,*ipv4=*ipv6=false ; p ; ) + { + if ((e = strchr(p,','))) + { + c=*e; + *e=0; + } + + if (!strcmp(p,"ipv4")) + *ipv4 = true; + else if (!strcmp(p,"ipv6")) + *ipv6 = true; + else return false; + + if (e) + { + *e++=c; + } + p = e; + } + return true; +} +#ifdef __CYGWIN__ +static bool wf_make_pf(char *opt, const char *l4, const char *portname, char *buf, size_t len) +{ + char *e,*p,c,s1[64]; + port_filter pf; + int n; + + if (len<3) return false; + + for (n=0,p=opt,*buf='(',buf[1]=0 ; p ; n++) + { + if ((e = strchr(p,','))) + { + c=*e; + *e=0; + } + if (!pf_parse(p,&pf)) return false; + + if (pf.from==pf.to) + snprintf(s1, sizeof(s1), "(%s.%s %s %u)", l4, portname, pf.neg ? "!=" : "==", pf.from); + else + snprintf(s1, sizeof(s1), "(%s.%s %s %u %s %s.%s %s %u)", l4, portname, pf.neg ? "<" : ">=", pf.from, pf.neg ? "or" : "and" , l4, portname, pf.neg ? ">" : "<=", pf.to); + if (n) strncat(buf," or ",len-strlen(buf)-1); + strncat(buf, s1, len-strlen(buf)-1); + + if (e) + { + *e++=c; + } + p = e; + } + strncat(buf, ")", len-strlen(buf)-1); + return true; +} + +#define DIVERT_NO_LOCALNETSv4_DST "(" \ + "(ip.DstAddr < 127.0.0.1 or ip.DstAddr > 127.255.255.255) and " \ + "(ip.DstAddr < 10.0.0.0 or ip.DstAddr > 10.255.255.255) and " \ + "(ip.DstAddr < 192.168.0.0 or ip.DstAddr > 192.168.255.255) and " \ + "(ip.DstAddr < 172.16.0.0 or ip.DstAddr > 172.31.255.255) and " \ + "(ip.DstAddr < 169.254.0.0 or ip.DstAddr > 169.254.255.255))" +#define DIVERT_NO_LOCALNETSv4_SRC "(" \ + "(ip.SrcAddr < 127.0.0.1 or ip.SrcAddr > 127.255.255.255) and " \ + "(ip.SrcAddr < 10.0.0.0 or ip.SrcAddr > 10.255.255.255) and " \ + "(ip.SrcAddr < 192.168.0.0 or ip.SrcAddr > 192.168.255.255) and " \ + "(ip.SrcAddr < 172.16.0.0 or ip.SrcAddr > 172.31.255.255) and " \ + "(ip.SrcAddr < 169.254.0.0 or ip.SrcAddr > 169.254.255.255))" + +#define DIVERT_NO_LOCALNETSv6_DST "(" \ + "(ipv6.DstAddr > ::1) and " \ + "(ipv6.DstAddr < 2001::0 or ipv6.DstAddr >= 2001:1::0) and " \ + "(ipv6.DstAddr < fc00::0 or ipv6.DstAddr >= fe00::0) and " \ + "(ipv6.DstAddr < fe80::0 or ipv6.DstAddr >= fec0::0) and " \ + "(ipv6.DstAddr < ff00::0 or ipv6.DstAddr >= ffff::0))" +#define DIVERT_NO_LOCALNETSv6_SRC "(" \ + "(ipv6.SrcAddr > ::1) and " \ + "(ipv6.SrcAddr < 2001::0 or ipv6.SrcAddr >= 2001:1::0) and " \ + "(ipv6.SrcAddr < fc00::0 or ipv6.SrcAddr >= fe00::0) and " \ + "(ipv6.SrcAddr < fe80::0 or ipv6.SrcAddr >= fec0::0) and " \ + "(ipv6.SrcAddr < ff00::0 or ipv6.SrcAddr >= ffff::0))" + +#define DIVERT_NO_LOCALNETS_SRC "(" DIVERT_NO_LOCALNETSv4_SRC " or " DIVERT_NO_LOCALNETSv6_SRC ")" +#define DIVERT_NO_LOCALNETS_DST "(" DIVERT_NO_LOCALNETSv4_DST " or " DIVERT_NO_LOCALNETSv6_DST ")" + +#define DIVERT_TCP_INBOUNDS "(tcp.Ack and tcp.Syn or tcp.Rst or tcp.Fin)" + +// HTTP/1.? 30(2|7) +#define DIVERT_HTTP_REDIRECT "tcp.PayloadLength>=12 and tcp.Payload32[0]==0x48545450 and tcp.Payload16[2]==0x2F31 and tcp.Payload[6]==0x2E and tcp.Payload16[4]==0x2033 and tcp.Payload[10]==0x30 and (tcp.Payload[11]==0x32 or tcp.Payload[11]==0x37)" + +#define DIVERT_PROLOG "!impostor and !loopback" + +static bool wf_make_filter( + char *wf, size_t len, + unsigned int IfIdx,unsigned int SubIfIdx, + bool ipv4, bool ipv6, + const char *pf_tcp_src, const char *pf_tcp_dst, + const char *pf_udp_src, const char *pf_udp_dst) +{ + char pf_dst_buf[512],iface[64]; + const char *pf_dst; + const char *f_tcpin = *pf_tcp_src ? dp_list_have_autohostlist(¶ms.desync_profiles) ? "(" DIVERT_TCP_INBOUNDS " or (" DIVERT_HTTP_REDIRECT "))" : DIVERT_TCP_INBOUNDS : ""; + + snprintf(iface,sizeof(iface)," ifIdx=%u and subIfIdx=%u and",IfIdx,SubIfIdx); + + if (!*pf_tcp_src && !*pf_udp_src) return false; + if (*pf_tcp_src && *pf_udp_src) + { + snprintf(pf_dst_buf,sizeof(pf_dst_buf),"(%s or %s)",pf_tcp_dst,pf_udp_dst); + pf_dst = pf_dst_buf; + } + else + pf_dst = *pf_tcp_dst ? pf_tcp_dst : pf_udp_dst; + snprintf(wf,len, + DIVERT_PROLOG " and%s%s\n ((outbound and %s%s)\n or\n (inbound and tcp%s%s%s%s%s%s%s))", + IfIdx ? iface : "", + ipv4 ? ipv6 ? "" : " ip and" : " ipv6 and", + pf_dst, + ipv4 ? ipv6 ? " and " DIVERT_NO_LOCALNETS_DST : " and " DIVERT_NO_LOCALNETSv4_DST : " and " DIVERT_NO_LOCALNETSv6_DST, + *pf_tcp_src ? "" : " and false", + *f_tcpin ? " and " : "", + *f_tcpin ? f_tcpin : "", + *pf_tcp_src ? " and " : "", + *pf_tcp_src ? pf_tcp_src : "", + *pf_tcp_src ? " and " : "", + *pf_tcp_src ? ipv4 ? ipv6 ? DIVERT_NO_LOCALNETS_SRC : DIVERT_NO_LOCALNETSv4_SRC : DIVERT_NO_LOCALNETSv6_SRC : "" + ); + + return true; +} + +static unsigned int hash_jen(const void *data,unsigned int len) +{ + unsigned int hash; + HASH_JEN(data,len,hash); + return hash; +} + +#endif + + +static void exithelp(void) +{ + printf( + " --debug=0|1|syslog|@\n" +#ifdef __linux__ + " --qnum=\n" +#elif defined(BSD) + " --port=\t\t\t\t\t; divert port\n" +#endif + " --daemon\t\t\t\t\t; daemonize\n" + " --pidfile=\t\t\t\t; write pid to file\n" +#ifndef __CYGWIN__ + " --user=\t\t\t\t; drop root privs\n" + " --uid=uid[:gid]\t\t\t\t; drop root privs\n" +#endif +#ifdef __linux__ + " --bind-fix4\t\t\t\t\t; apply outgoing interface selection fix for generated ipv4 packets\n" + " --bind-fix6\t\t\t\t\t; apply outgoing interface selection fix for generated ipv6 packets\n" +#endif + " --ctrack-timeouts=S:E:F[:U]\t\t\t; internal conntrack timeouts for TCP SYN, ESTABLISHED, FIN stages, UDP timeout. default %u:%u:%u:%u\n" +#ifdef __CYGWIN__ + "\nWINDIVERT FILTER:\n" + " --wf-iface=[.]\t\t\t; numeric network interface and subinterface indexes\n" + " --wf-l3=ipv4|ipv6\t\t\t\t; L3 protocol filter. multiple comma separated values allowed.\n" + " --wf-tcp=[~]port1[-port2]\t\t\t; TCP port filter. ~ means negation. multiple comma separated values allowed.\n" + " --wf-udp=[~]port1[-port2]\t\t\t; UDP port filter. ~ means negation. multiple comma separated values allowed.\n" + " --wf-raw=|@\t\t\t; raw windivert filter string or filename\n" + " --wf-save=\t\t\t\t; save windivert filter string to a file and exit\n" + "\nLOGICAL NETWORK FILTER:\n" + " --ssid-filter=ssid1[,ssid2,ssid3,...]\t\t; enable winws only if any of specified wifi SSIDs connected\n" + " --nlm-filter=net1[,net2,net3,...]\t\t; enable winws only if any of specified NLM network is connected. names and GUIDs are accepted.\n" + " --nlm-list[=all]\t\t\t\t; list Network List Manager (NLM) networks. connected only or all.\n" +#endif + "\nMULTI-STRATEGY:\n" + " --new\t\t\t\t\t\t; begin new strategy\n" + " --filter-l3=ipv4|ipv6\t\t\t\t; L3 protocol filter. multiple comma separated values allowed.\n" + " --filter-tcp=[~]port1[-port2]\t\t\t; TCP port filter. ~ means negation. setting tcp and not setting udp filter denies udp.\n" + " --filter-udp=[~]port1[-port2]\t\t\t; UDP port filter. ~ means negation. setting udp and not setting tcp filter denies tcp.\n" + "\nHOSTLIST FILTER:\n" + " --hostlist=\t\t\t\t; apply dpi desync only to the listed hosts (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)\n" + " --hostlist-exclude=\t\t\t; do not apply dpi desync to the listed hosts (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)\n" + " --hostlist-auto=\t\t\t; detect DPI blocks and build hostlist automatically\n" + " --hostlist-auto-fail-threshold=\t\t; how many failed attempts cause hostname to be added to auto hostlist (default : %d)\n" + " --hostlist-auto-fail-time=\t\t; all failed attemps must be within these seconds (default : %d)\n" + " --hostlist-auto-retrans-threshold=\t; how many request retransmissions cause attempt to fail (default : %d)\n" + " --hostlist-auto-debug=\t\t; debug auto hostlist positives\n" + "\nTAMPER:\n" + " --wsize=[:]\t\t; set window size. 0 = do not modify. OBSOLETE !\n" + " --wssize=[:]\t; set window size for server. 0 = do not modify. default scale_factor = 0.\n" + " --wssize-cutoff=[n|d|s]N\t\t\t; apply server wsize only to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N\n" + " --hostcase\t\t\t\t\t; change Host: => host:\n" + " --hostspell\t\t\t\t\t; exact spelling of \"Host\" header. must be 4 chars. default is \"host\"\n" + " --hostnospace\t\t\t\t\t; remove space after Host: and add it to User-Agent: to preserve packet size\n" + " --domcase\t\t\t\t\t; mix domain case : Host: TeSt.cOm\n" + " --dpi-desync=[,][,]\t; try to desync dpi state. modes : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper\n" +#ifdef __linux__ + " --dpi-desync-fwmark=\t\t; override fwmark for desync packet. default = 0x%08X (%u)\n" +#elif defined(SO_USER_COOKIE) + " --dpi-desync-sockarg=\t\t; override sockarg (SO_USER_COOKIE) for desync packet. default = 0x%08X (%u)\n" +#endif + " --dpi-desync-ttl=\t\t\t\t; set ttl for desync packet\n" + " --dpi-desync-ttl6=\t\t\t; set ipv6 hop limit for desync packet. by default ttl value is used.\n" + " --dpi-desync-autottl=[[:[-]]]\t; auto ttl mode for both ipv4 and ipv6. default: %u:%u-%u\n" + " --dpi-desync-autottl6=[[:[-]]] ; overrides --dpi-desync-autottl for ipv6 only\n" + " --dpi-desync-fooling=[,]\t\t; can use multiple comma separated values. modes : none md5sig ts badseq badsum datanoack hopbyhop hopbyhop2\n" + " --dpi-desync-repeats=\t\t\t; send every desync packet N times\n" + " --dpi-desync-skip-nosni=0|1\t\t\t; 1(default)=do not act on ClientHello without SNI (ESNI ?)\n" + " --dpi-desync-split-pos=<1..%u>\t\t; data payload split position\n" + " --dpi-desync-split-http-req=method|host\t; split at specified logical part of plain http request\n" + " --dpi-desync-split-tls=sni|sniext\t\t; split at specified logical part of TLS ClientHello\n" + " --dpi-desync-split-seqovl=\t\t; use sequence overlap before first sent original split segment\n" + " --dpi-desync-split-seqovl-pattern=|0xHEX ; pattern for the fake part of overlap\n" + " --dpi-desync-ipfrag-pos-tcp=<8..%u>\t\t; ip frag position starting from the transport header. multiple of 8, default %u.\n" + " --dpi-desync-ipfrag-pos-udp=<8..%u>\t\t; ip frag position starting from the transport header. multiple of 8, default %u.\n" + " --dpi-desync-badseq-increment=\t; badseq fooling seq signed increment. default %d\n" + " --dpi-desync-badack-increment=\t; badseq fooling ackseq signed increment. default %d\n" + " --dpi-desync-any-protocol=0|1\t\t\t; 0(default)=desync only http and tls 1=desync any nonempty data packet\n" + " --dpi-desync-fake-http=|0xHEX\t; file containing fake http request\n" + " --dpi-desync-fake-tls=|0xHEX\t\t; file containing fake TLS ClientHello (for https)\n" + " --dpi-desync-fake-unknown=|0xHEX\t; file containing unknown protocol fake payload\n" + " --dpi-desync-fake-syndata=|0xHEX\t; file containing SYN data payload\n" + " --dpi-desync-fake-quic=|0xHEX\t; file containing fake QUIC Initial\n" + " --dpi-desync-fake-wireguard=|0xHEX\t; file containing fake wireguard handshake initiation\n" + " --dpi-desync-fake-dht=|0xHEX\t\t; file containing DHT protocol fake payload (d1...e)\n" + " --dpi-desync-fake-unknown-udp=|0xHEX\t; file containing unknown udp protocol fake payload\n" + " --dpi-desync-udplen-increment=\t\t; increase or decrease udp packet length by N bytes (default %u). negative values decrease length.\n" + " --dpi-desync-udplen-pattern=|0xHEX\t; udp tail fill pattern\n" + " --dpi-desync-start=[n|d|s]N\t\t\t; apply dpi desync only to packet numbers (n, default), data packet numbers (d), relative sequence (s) greater or equal than N\n" + " --dpi-desync-cutoff=[n|d|s]N\t\t\t; apply dpi desync only to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N\n", + CTRACK_T_SYN, CTRACK_T_EST, CTRACK_T_FIN, CTRACK_T_UDP, + HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT, HOSTLIST_AUTO_FAIL_TIME_DEFAULT, HOSTLIST_AUTO_RETRANS_THRESHOLD_DEFAULT, +#if defined(__linux__) || defined(SO_USER_COOKIE) + DPI_DESYNC_FWMARK_DEFAULT,DPI_DESYNC_FWMARK_DEFAULT, +#endif + AUTOTTL_DEFAULT_DELTA,AUTOTTL_DEFAULT_MIN,AUTOTTL_DEFAULT_MAX, + DPI_DESYNC_MAX_FAKE_LEN, + DPI_DESYNC_MAX_FAKE_LEN, IPFRAG_UDP_DEFAULT, + DPI_DESYNC_MAX_FAKE_LEN, IPFRAG_TCP_DEFAULT, + BADSEQ_INCREMENT_DEFAULT, BADSEQ_ACK_INCREMENT_DEFAULT, + UDPLEN_INCREMENT_DEFAULT + ); + exit(1); +} +static void exithelp_clean(void) +{ + cleanup_params(); + exithelp(); +} + +bool parse_httpreqpos(const char *s, enum httpreqpos *pos) +{ + if (!strcmp(s, "method")) + *pos = httpreqpos_method; + else if (!strcmp(s, "host")) + *pos = httpreqpos_host; + else + return false; + return true; +} +bool parse_tlspos(const char *s, enum tlspos *pos) +{ + if (!strcmp(s, "sni")) + *pos = tlspos_sni; + else if (!strcmp(s, "sniext")) + *pos = tlspos_sniext; + else + return false; + return true; +} + +int main(int argc, char **argv) +{ +#ifdef __CYGWIN__ + if (service_run(argc, argv)) + { + // we were running as service. now exit. + return 0; + } +#endif + int result, v; + int option_index = 0; + bool daemon = false; + char pidfile[256]; +#ifdef __CYGWIN__ + char windivert_filter[8192], wf_pf_tcp_src[256], wf_pf_tcp_dst[256], wf_pf_udp_src[256], wf_pf_udp_dst[256], wf_save_file[256]; + bool wf_ipv4=true, wf_ipv6=true; + unsigned int IfIdx=0, SubIfIdx=0; + unsigned int hash_wf_tcp=0,hash_wf_udp=0,hash_wf_raw=0,hash_ssid_filter=0,hash_nlm_filter=0; + *windivert_filter = *wf_pf_tcp_src = *wf_pf_tcp_dst = *wf_pf_udp_src = *wf_pf_udp_dst = *wf_save_file = 0; +#endif + + srandom(time(NULL)); + + memset(¶ms, 0, sizeof(params)); + *pidfile = 0; + + struct desync_profile_list *dpl; + struct desync_profile *dp; + int desync_profile_count=0; + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + dp = &dpl->dp; + dp->n = ++desync_profile_count; + +#ifdef __linux__ + params.qnum = -1; +#elif defined(BSD) + params.port = 0; +#endif + params.desync_fwmark = DPI_DESYNC_FWMARK_DEFAULT; + params.ctrack_t_syn = CTRACK_T_SYN; + params.ctrack_t_est = CTRACK_T_EST; + params.ctrack_t_fin = CTRACK_T_FIN; + params.ctrack_t_udp = CTRACK_T_UDP; + +#ifdef __CYGWIN__ + LIST_INIT(¶ms.ssid_filter); + LIST_INIT(¶ms.nlm_filter); +#else + if (can_drop_root()) // are we root ? + { + params.uid = params.gid = 0x7FFFFFFF; // default uid:gid + params.droproot = true; + } +#endif + + 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 +#ifndef __CYGWIN__ + {"user",required_argument,0,0 }, // optidx=4 + {"uid",required_argument,0,0 }, // optidx=5 +#else + {"disabled_argument_2",no_argument,0,0}, // optidx=4 + {"disabled_argument_3",no_argument,0,0}, // optidx=5 +#endif + {"wsize",required_argument,0,0}, // optidx=6 + {"wssize",required_argument,0,0}, // optidx=7 + {"wssize-cutoff",required_argument,0,0},// optidx=8 + {"ctrack-timeouts",required_argument,0,0},// optidx=9 + {"hostcase",no_argument,0,0}, // optidx=10 + {"hostspell",required_argument,0,0}, // optidx=11 + {"hostnospace",no_argument,0,0}, // optidx=12 + {"domcase",no_argument,0,0 }, // optidx=13 + {"dpi-desync",required_argument,0,0}, // optidx=14 +#ifdef __linux__ + {"dpi-desync-fwmark",required_argument,0,0}, // optidx=15 +#elif defined(SO_USER_COOKIE) + {"dpi-desync-sockarg",required_argument,0,0}, // optidx=15 +#else + {"disabled_argument_4",no_argument,0,0}, // optidx=15 +#endif + {"dpi-desync-ttl",required_argument,0,0}, // optidx=16 + {"dpi-desync-ttl6",required_argument,0,0}, // optidx=17 + {"dpi-desync-autottl",optional_argument,0,0}, // optidx=18 + {"dpi-desync-autottl6",optional_argument,0,0}, // optidx=19 + {"dpi-desync-fooling",required_argument,0,0}, // optidx=20 + {"dpi-desync-repeats",required_argument,0,0}, // optidx=21 + {"dpi-desync-skip-nosni",optional_argument,0,0},// optidx=22 + {"dpi-desync-split-pos",required_argument,0,0},// optidx=23 + {"dpi-desync-split-http-req",required_argument,0,0 },// optidx=24 + {"dpi-desync-split-tls",required_argument,0,0 },// optidx=25 + {"dpi-desync-split-seqovl",required_argument,0,0 },// optidx=26 + {"dpi-desync-split-seqovl-pattern",required_argument,0,0 },// optidx=27 + {"dpi-desync-ipfrag-pos-tcp",required_argument,0,0},// optidx=28 + {"dpi-desync-ipfrag-pos-udp",required_argument,0,0},// optidx=29 + {"dpi-desync-badseq-increment",required_argument,0,0},// optidx=30 + {"dpi-desync-badack-increment",required_argument,0,0},// optidx=31 + {"dpi-desync-any-protocol",optional_argument,0,0},// optidx=32 + {"dpi-desync-fake-http",required_argument,0,0},// optidx=33 + {"dpi-desync-fake-tls",required_argument,0,0},// optidx=34 + {"dpi-desync-fake-unknown",required_argument,0,0},// optidx=35 + {"dpi-desync-fake-syndata",required_argument,0,0},// optidx=36 + {"dpi-desync-fake-quic",required_argument,0,0},// optidx=37 + {"dpi-desync-fake-wireguard",required_argument,0,0},// optidx=38 + {"dpi-desync-fake-dht",required_argument,0,0},// optidx=39 + {"dpi-desync-fake-unknown-udp",required_argument,0,0},// optidx=40 + {"dpi-desync-udplen-increment",required_argument,0,0},// optidx=41 + {"dpi-desync-udplen-pattern",required_argument,0,0},// optidx=42 + {"dpi-desync-cutoff",required_argument,0,0},// optidx=43 + {"dpi-desync-start",required_argument,0,0},// optidx=43 + {"hostlist",required_argument,0,0}, // optidx=44 + {"hostlist-exclude",required_argument,0,0}, // optidx=45 + {"hostlist-auto",required_argument,0,0}, // optidx=46 + {"hostlist-auto-fail-threshold",required_argument,0,0}, // optidx=48 + {"hostlist-auto-fail-time",required_argument,0,0}, // optidx=49 + {"hostlist-auto-retrans-threshold",required_argument,0,0}, // optidx=50 + {"hostlist-auto-debug",required_argument,0,0}, // optidx=51 + {"new",no_argument,0,0}, // optidx=52 + {"filter-l3",required_argument,0,0}, // optidx=53 + {"filter-tcp",required_argument,0,0}, // optidx=54 + {"filter-udp",required_argument,0,0}, // optidx=55 +#ifdef __linux__ + {"bind-fix4",no_argument,0,0}, // optidx=56 + {"bind-fix6",no_argument,0,0}, // optidx=57 +#elif defined(__CYGWIN__) + {"wf-iface",required_argument,0,0}, // optidx=56 + {"wf-l3",required_argument,0,0}, // optidx=57 + {"wf-tcp",required_argument,0,0}, // optidx=58 + {"wf-udp",required_argument,0,0}, // optidx=59 + {"wf-raw",required_argument,0,0}, // optidx=60 + {"wf-save",required_argument,0,0}, // optidx=61 + {"ssid-filter",required_argument,0,0}, // optidx=62 + {"nlm-filter",required_argument,0,0}, // optidx=63 + {"nlm-list",optional_argument,0,0}, // optidx=64 +#endif + {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 */ + if (optarg) + { + if (*optarg=='@') + { + strncpy(params.debug_logfile,optarg+1,sizeof(params.debug_logfile)); + params.debug_logfile[sizeof(params.debug_logfile)-1] = 0; + FILE *F = fopen(params.debug_logfile,"wt"); + if (!F) + { + fprintf(stderr, "cannot create %s\n", params.debug_logfile); + exit_clean(1); + } +#ifndef __CYGWIN__ + if (params.droproot && chown(params.debug_logfile, params.uid, -1)) + fprintf(stderr, "could not chown %s. log file may not be writable after privilege drop\n", params.debug_logfile); +#endif + params.debug = true; + params.debug_target = LOG_TARGET_FILE; + } + else if (!strcmp(optarg,"syslog")) + { + params.debug = true; + params.debug_target = LOG_TARGET_SYSLOG; + openlog(progname,LOG_PID,LOG_USER); + } + else + { + params.debug = !!atoi(optarg); + params.debug_target = LOG_TARGET_CONSOLE; + } + } + else + { + params.debug = true; + params.debug_target = LOG_TARGET_CONSOLE; + } + break; +#ifndef __CYGWIN__ + case 1: /* qnum or port */ +#ifdef __linux__ + params.qnum = atoi(optarg); + if (params.qnum < 0 || params.qnum>65535) + { + DLOG_ERR("bad qnum\n"); + exit_clean(1); + } +#elif defined(BSD) + { + int i = atoi(optarg); + if (i <= 0 || i > 65535) + { + DLOG_ERR("bad port number\n"); + exit_clean(1); + } + params.port = (uint16_t)i; + } +#endif + break; +#endif + case 2: /* daemon */ + daemon = true; + break; + case 3: /* pidfile */ + strncpy(pidfile, optarg, sizeof(pidfile)); + pidfile[sizeof(pidfile) - 1] = '\0'; + break; +#ifndef __CYGWIN__ + case 4: /* user */ + { + struct passwd *pwd = getpwnam(optarg); + if (!pwd) + { + DLOG_ERR("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)<1) + { + DLOG_ERR("--uid should be : uid[:gid]\n"); + exit_clean(1); + } + break; +#endif + case 6: /* wsize */ + if (!parse_ws_scale_factor(optarg,&dp->wsize,&dp->wscale)) + exit_clean(1); + break; + case 7: /* wssize */ + if (!parse_ws_scale_factor(optarg,&dp->wssize,&dp->wsscale)) + exit_clean(1); + break; + case 8: /* wssize-cutoff */ + if (!parse_cutoff(optarg, &dp->wssize_cutoff, &dp->wssize_cutoff_mode)) + { + DLOG_ERR("invalid wssize-cutoff value\n"); + exit_clean(1); + } + break; + case 9: /* ctrack-timeouts */ + if (sscanf(optarg, "%u:%u:%u:%u", ¶ms.ctrack_t_syn, ¶ms.ctrack_t_est, ¶ms.ctrack_t_fin, ¶ms.ctrack_t_udp)<3) + { + DLOG_ERR("invalid ctrack-timeouts value\n"); + exit_clean(1); + } + break; + case 10: /* hostcase */ + dp->hostcase = true; + break; + case 11: /* hostspell */ + if (strlen(optarg) != 4) + { + DLOG_ERR("hostspell must be exactly 4 chars long\n"); + exit_clean(1); + } + dp->hostcase = true; + memcpy(dp->hostspell, optarg, 4); + break; + case 12: /* hostnospace */ + dp->hostnospace = true; + break; + case 13: /* domcase */ + dp->domcase = true; + break; + case 14: /* dpi-desync */ + { + char *mode=optarg,*mode2,*mode3; + mode2 = mode ? strchr(mode,',') : NULL; + if (mode2) *mode2++=0; + mode3 = mode2 ? strchr(mode2,',') : NULL; + if (mode3) *mode3++=0; + + dp->desync_mode0 = desync_mode_from_string(mode); + if (desync_valid_zero_stage(dp->desync_mode0)) + { + mode = mode2; + mode2 = mode3; + mode3 = NULL; + } + else + { + dp->desync_mode0 = DESYNC_NONE; + } + dp->desync_mode = desync_mode_from_string(mode); + dp->desync_mode2 = desync_mode_from_string(mode2); + if (dp->desync_mode0==DESYNC_INVALID || dp->desync_mode==DESYNC_INVALID || dp->desync_mode2==DESYNC_INVALID) + { + DLOG_ERR("invalid dpi-desync mode\n"); + exit_clean(1); + } + if (mode3) + { + DLOG_ERR("invalid desync combo : %s+%s+%s\n",mode,mode2,mode3); + exit_clean(1); + } + if (dp->desync_mode2 && (desync_only_first_stage(dp->desync_mode) || !(desync_valid_first_stage(dp->desync_mode) && desync_valid_second_stage(dp->desync_mode2)))) + { + DLOG_ERR("invalid desync combo : %s+%s\n", mode,mode2); + exit_clean(1); + } + #if defined(__OpenBSD__) + if (dp->desync_mode==DESYNC_IPFRAG2 || dp->desync_mode2==DESYNC_IPFRAG2) + { + DLOG_ERR("OpenBSD has checksum issues with fragmented packets. ipfrag disabled.\n"); + exit_clean(1); + } + #endif + } + break; +#ifndef __CYGWIN__ + case 15: /* 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)<=0) sscanf(optarg, "%u", ¶ms.desync_fwmark); + if (!params.desync_fwmark) + { + DLOG_ERR("fwmark/sockarg should be decimal or 0xHEX and should not be zero\n"); + exit_clean(1); + } +#else + DLOG_ERR("fmwark/sockarg not supported in this OS\n"); + exit_clean(1); +#endif + break; +#endif + case 16: /* dpi-desync-ttl */ + dp->desync_ttl = (uint8_t)atoi(optarg); + break; + case 17: /* dpi-desync-ttl6 */ + dp->desync_ttl6 = (uint8_t)atoi(optarg); + break; + case 18: /* dpi-desync-autottl */ + if (!parse_autottl(optarg, &dp->desync_autottl)) + { + DLOG_ERR("dpi-desync-autottl value error\n"); + exit_clean(1); + } + break; + case 19: /* dpi-desync-autottl6 */ + if (!parse_autottl(optarg, &dp->desync_autottl6)) + { + DLOG_ERR("dpi-desync-autottl6 value error\n"); + exit_clean(1); + } + break; + case 20: /* dpi-desync-fooling */ + { + char *e,*p = optarg; + while (p) + { + e = strchr(p,','); + if (e) *e++=0; + if (!strcmp(p,"md5sig")) + dp->desync_fooling_mode |= FOOL_MD5SIG; + else if (!strcmp(p,"ts")) + dp->desync_fooling_mode |= FOOL_TS; + else if (!strcmp(p,"badsum")) + { + #ifdef __OpenBSD__ + DLOG_CONDUP("\nWARNING !!! OpenBSD may forcibly recompute tcp/udp checksums !!! In this case badsum fooling will not work.\nYou should check tcp checksum correctness in tcpdump manually before using badsum.\n\n"); + #endif + dp->desync_fooling_mode |= FOOL_BADSUM; + } + else if (!strcmp(p,"badseq")) + dp->desync_fooling_mode |= FOOL_BADSEQ; + else if (!strcmp(p,"datanoack")) + dp->desync_fooling_mode |= FOOL_DATANOACK; + else if (!strcmp(p,"hopbyhop")) + dp->desync_fooling_mode |= FOOL_HOPBYHOP; + else if (!strcmp(p,"hopbyhop2")) + dp->desync_fooling_mode |= FOOL_HOPBYHOP2; + else if (strcmp(p,"none")) + { + DLOG_ERR("dpi-desync-fooling allowed values : none,md5sig,ts,badseq,badsum,datanoack,hopbyhop,hopbyhop2\n"); + exit_clean(1); + } + p = e; + } + } + break; + case 21: /* dpi-desync-repeats */ + if (sscanf(optarg,"%u",&dp->desync_repeats)<1 || !dp->desync_repeats || dp->desync_repeats>20) + { + DLOG_ERR("dpi-desync-repeats must be within 1..20\n"); + exit_clean(1); + } + break; + case 22: /* dpi-desync-skip-nosni */ + dp->desync_skip_nosni = !optarg || atoi(optarg); + break; + case 23: /* dpi-desync-split-pos */ + if (sscanf(optarg,"%u",&dp->desync_split_pos)<1 || dp->desync_split_pos<1) + { + DLOG_ERR("dpi-desync-split-pos is not valid\n"); + exit_clean(1); + } + break; + case 24: /* dpi-desync-split-http-req */ + if (!parse_httpreqpos(optarg, &dp->desync_split_http_req)) + { + DLOG_ERR("Invalid argument for dpi-desync-split-http-req\n"); + exit_clean(1); + } + break; + case 25: /* dpi-desync-split-tls */ + if (!parse_tlspos(optarg, &dp->desync_split_tls)) + { + DLOG_ERR("Invalid argument for dpi-desync-split-tls\n"); + exit_clean(1); + } + break; + case 26: /* dpi-desync-split-seqovl */ + if (sscanf(optarg,"%u",&dp->desync_seqovl)<1) + { + DLOG_ERR("dpi-desync-split-seqovl is not valid\n"); + exit_clean(1); + } + break; + case 27: /* dpi-desync-split-seqovl-pattern */ + { + char buf[sizeof(dp->seqovl_pattern)]; + size_t sz=sizeof(buf); + load_file_or_exit(optarg,buf,&sz); + fill_pattern(dp->seqovl_pattern,sizeof(dp->seqovl_pattern),buf,sz); + } + break; + case 28: /* dpi-desync-ipfrag-pos-tcp */ + if (sscanf(optarg,"%u",&dp->desync_ipfrag_pos_tcp)<1 || dp->desync_ipfrag_pos_tcp<1 || dp->desync_ipfrag_pos_tcp>DPI_DESYNC_MAX_FAKE_LEN) + { + DLOG_ERR("dpi-desync-ipfrag-pos-tcp must be within 1..%u range\n",DPI_DESYNC_MAX_FAKE_LEN); + exit_clean(1); + } + if (dp->desync_ipfrag_pos_tcp & 7) + { + DLOG_ERR("dpi-desync-ipfrag-pos-tcp must be multiple of 8\n"); + exit_clean(1); + } + break; + case 29: /* dpi-desync-ipfrag-pos-udp */ + if (sscanf(optarg,"%u",&dp->desync_ipfrag_pos_udp)<1 || dp->desync_ipfrag_pos_udp<1 || dp->desync_ipfrag_pos_udp>DPI_DESYNC_MAX_FAKE_LEN) + { + DLOG_ERR("dpi-desync-ipfrag-pos-udp must be within 1..%u range\n",DPI_DESYNC_MAX_FAKE_LEN); + exit_clean(1); + } + if (dp->desync_ipfrag_pos_udp & 7) + { + DLOG_ERR("dpi-desync-ipfrag-pos-udp must be multiple of 8\n"); + exit_clean(1); + } + break; + case 30: /* dpi-desync-badseq-increments */ + if (!parse_badseq_increment(optarg,&dp->desync_badseq_increment)) + { + DLOG_ERR("dpi-desync-badseq-increment should be signed decimal or signed 0xHEX\n"); + exit_clean(1); + } + break; + case 31: /* dpi-desync-badack-increment */ + if (!parse_badseq_increment(optarg,&dp->desync_badseq_ack_increment)) + { + DLOG_ERR("dpi-desync-badack-increment should be signed decimal or signed 0xHEX\n"); + exit_clean(1); + } + break; + case 32: /* dpi-desync-any-protocol */ + dp->desync_any_proto = !optarg || atoi(optarg); + break; + case 33: /* dpi-desync-fake-http */ + dp->fake_http_size = sizeof(dp->fake_http); + load_file_or_exit(optarg,dp->fake_http,&dp->fake_http_size); + break; + case 34: /* dpi-desync-fake-tls */ + dp->fake_tls_size = sizeof(dp->fake_tls); + load_file_or_exit(optarg,dp->fake_tls,&dp->fake_tls_size); + break; + case 35: /* dpi-desync-fake-unknown */ + dp->fake_unknown_size = sizeof(dp->fake_unknown); + load_file_or_exit(optarg,dp->fake_unknown,&dp->fake_unknown_size); + break; + case 36: /* dpi-desync-fake-syndata */ + dp->fake_syndata_size = sizeof(dp->fake_syndata); + load_file_or_exit(optarg,dp->fake_syndata,&dp->fake_syndata_size); + break; + case 37: /* dpi-desync-fake-quic */ + dp->fake_quic_size = sizeof(dp->fake_quic); + load_file_or_exit(optarg,dp->fake_quic,&dp->fake_quic_size); + break; + case 38: /* dpi-desync-fake-wireguard */ + dp->fake_wg_size = sizeof(dp->fake_wg); + load_file_or_exit(optarg,dp->fake_wg,&dp->fake_wg_size); + break; + case 39: /* dpi-desync-fake-dht */ + dp->fake_dht_size = sizeof(dp->fake_dht); + load_file_or_exit(optarg,dp->fake_dht,&dp->fake_dht_size); + break; + case 40: /* dpi-desync-fake-unknown-udp */ + dp->fake_unknown_udp_size = sizeof(dp->fake_unknown_udp); + load_file_or_exit(optarg,dp->fake_unknown_udp,&dp->fake_unknown_udp_size); + break; + case 41: /* dpi-desync-udplen-increment */ + if (sscanf(optarg,"%d",&dp->udplen_increment)<1 || dp->udplen_increment>0x7FFF || dp->udplen_increment<-0x8000) + { + DLOG_ERR("dpi-desync-udplen-increment must be integer within -32768..32767 range\n"); + exit_clean(1); + } + break; + case 42: /* dpi-desync-udplen-pattern */ + { + char buf[sizeof(dp->udplen_pattern)]; + size_t sz=sizeof(buf); + load_file_or_exit(optarg,buf,&sz); + fill_pattern(dp->udplen_pattern,sizeof(dp->udplen_pattern),buf,sz); + } + break; + case 43: /* desync-cutoff */ + if (!parse_cutoff(optarg, &dp->desync_cutoff, &dp->desync_cutoff_mode)) + { + DLOG_ERR("invalid desync-cutoff value\n"); + exit_clean(1); + } + break; + case 44: /* desync-start */ + if (!parse_cutoff(optarg, &dp->desync_start, &dp->desync_start_mode)) + { + DLOG_ERR("invalid desync-start value\n"); + exit_clean(1); + } + break; + case 45: /* hostlist */ + if (!strlist_add(&dp->hostlist_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + break; + case 46: /* hostlist-exclude */ + if (!strlist_add(&dp->hostlist_exclude_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + break; + case 47: /* hostlist-auto */ + if (*dp->hostlist_auto_filename) + { + DLOG_ERR("only one auto hostlist per profile is supported\n"); + exit_clean(1); + } + { + FILE *F = fopen(optarg,"at"); + if (!F) + { + DLOG_ERR("cannot create %s\n", optarg); + exit_clean(1); + } + bool bGzip = is_gzip(F); + fclose(F); + if (bGzip) + { + DLOG_ERR("gzipped auto hostlists are not supported\n"); + exit_clean(1); + } +#ifndef __CYGWIN__ + if (params.droproot && chown(optarg, params.uid, -1)) + DLOG_ERR("could not chown %s. auto hostlist file may not be writable after privilege drop\n", optarg); +#endif + } + if (!strlist_add(&dp->hostlist_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + strncpy(dp->hostlist_auto_filename, optarg, sizeof(dp->hostlist_auto_filename)); + dp->hostlist_auto_filename[sizeof(dp->hostlist_auto_filename) - 1] = '\0'; + break; + case 48: /* hostlist-auto-fail-threshold */ + dp->hostlist_auto_fail_threshold = (uint8_t)atoi(optarg); + if (dp->hostlist_auto_fail_threshold<1 || dp->hostlist_auto_fail_threshold>20) + { + DLOG_ERR("auto hostlist fail threshold must be within 1..20\n"); + exit_clean(1); + } + break; + case 49: /* hostlist-auto-fail-time */ + dp->hostlist_auto_fail_time = (uint8_t)atoi(optarg); + if (dp->hostlist_auto_fail_time<1) + { + DLOG_ERR("auto hostlist fail time is not valid\n"); + exit_clean(1); + } + break; + case 50: /* hostlist-auto-retrans-threshold */ + dp->hostlist_auto_retrans_threshold = (uint8_t)atoi(optarg); + if (dp->hostlist_auto_retrans_threshold<2 || dp->hostlist_auto_retrans_threshold>10) + { + DLOG_ERR("auto hostlist fail threshold must be within 2..10\n"); + exit_clean(1); + } + break; + case 51: /* hostlist-auto-debug */ + { + FILE *F = fopen(optarg,"a+t"); + if (!F) + { + DLOG_ERR("cannot create %s\n", optarg); + exit_clean(1); + } + fclose(F); +#ifndef __CYGWIN__ + if (params.droproot && chown(optarg, params.uid, -1)) + DLOG_ERR("could not chown %s. auto hostlist debug log may not be writable after privilege drop\n", optarg); +#endif + strncpy(params.hostlist_auto_debuglog, optarg, sizeof(params.hostlist_auto_debuglog)); + params.hostlist_auto_debuglog[sizeof(params.hostlist_auto_debuglog) - 1] = '\0'; + } + break; + + case 52: /* new */ + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + dp = &dpl->dp; + dp->n = ++desync_profile_count; + break; + case 53: /* filter-l3 */ + if (!wf_make_l3(optarg,&dp->filter_ipv4,&dp->filter_ipv6)) + { + DLOG_ERR("bad value for --filter-l3\n"); + exit_clean(1); + } + break; + case 54: /* filter-tcp */ + if (!pf_parse(optarg,&dp->pf_tcp)) + { + DLOG_ERR("Invalid port filter : %s\n",optarg); + exit_clean(1); + } + // deny udp if not set + if (pf_is_empty(&dp->pf_udp)) dp->pf_udp.neg=true; + break; + case 55: /* filter-udp */ + if (!pf_parse(optarg,&dp->pf_udp)) + { + DLOG_ERR("Invalid port filter : %s\n",optarg); + exit_clean(1); + } + // deny tcp if not set + if (pf_is_empty(&dp->pf_tcp)) dp->pf_tcp.neg=true; + break; + +#ifdef __linux__ + case 56: /* bind-fix4 */ + params.bind_fix4 = true; + break; + case 57: /* bind-fix6 */ + params.bind_fix6 = true; + break; +#elif defined(__CYGWIN__) + case 56: /* wf-iface */ + if (!sscanf(optarg,"%u.%u",&IfIdx,&SubIfIdx)) + { + DLOG_ERR("bad value for --wf-iface\n"); + exit_clean(1); + } + break; + case 57: /* wf-l3 */ + if (!wf_make_l3(optarg,&wf_ipv4,&wf_ipv6)) + { + DLOG_ERR("bad value for --wf-l3\n"); + exit_clean(1); + } + break; + case 58: /* wf-tcp */ + hash_wf_tcp=hash_jen(optarg,strlen(optarg)); + if (!wf_make_pf(optarg,"tcp","SrcPort",wf_pf_tcp_src,sizeof(wf_pf_tcp_src)) || + !wf_make_pf(optarg,"tcp","DstPort",wf_pf_tcp_dst,sizeof(wf_pf_tcp_dst))) + { + DLOG_ERR("bad value for --wf-tcp\n"); + exit_clean(1); + } + break; + case 59: /* wf-udp */ + hash_wf_udp=hash_jen(optarg,strlen(optarg)); + if (!wf_make_pf(optarg,"udp","SrcPort",wf_pf_udp_src,sizeof(wf_pf_udp_src)) || + !wf_make_pf(optarg,"udp","DstPort",wf_pf_udp_dst,sizeof(wf_pf_udp_dst))) + { + DLOG_ERR("bad value for --wf-udp\n"); + exit_clean(1); + } + break; + case 60: /* wf-raw */ + hash_wf_raw=hash_jen(optarg,strlen(optarg)); + if (optarg[0]=='@') + { + size_t sz = sizeof(windivert_filter)-1; + load_file_or_exit(optarg+1,windivert_filter,&sz); + windivert_filter[sz] = 0; + } + else + { + strncpy(windivert_filter, optarg, sizeof(windivert_filter)); + windivert_filter[sizeof(windivert_filter) - 1] = '\0'; + } + break; + case 61: /* wf-save */ + strncpy(wf_save_file, optarg, sizeof(wf_save_file)); + wf_save_file[sizeof(wf_save_file) - 1] = '\0'; + break; + case 62: /* ssid-filter */ + hash_ssid_filter=hash_jen(optarg,strlen(optarg)); + { + char *e,*p = optarg; + while (p) + { + e = strchr(p,','); + if (e) *e++=0; + if (*p && !strlist_add(¶ms.ssid_filter, p)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + p = e; + + } + } + break; + case 63: /* nlm-filter */ + hash_nlm_filter=hash_jen(optarg,strlen(optarg)); + { + char *e,*p = optarg; + while (p) + { + e = strchr(p,','); + if (e) *e++=0; + if (*p && !strlist_add(¶ms.nlm_filter, p)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + p = e; + + } + } + break; + case 64: /* nlm-list */ + if (!nlm_list(optarg && !strcmp(optarg,"all"))) + { + DLOG_ERR("could not get list of NLM networks\n"); + exit_clean(1); + } + exit_clean(0); + +#endif + } + } + +#ifdef __linux__ + if (params.qnum<0) + { + DLOG_ERR("Need queue number (--qnum)\n"); + exit_clean(1); + } +#elif defined(BSD) + if (!params.port) + { + DLOG_ERR("Need divert port (--port)\n"); + exit_clean(1); + } +#elif defined(__CYGWIN__) + if (!*windivert_filter) + { + if (!*wf_pf_tcp_src && !*wf_pf_udp_src) + { + DLOG_ERR("windivert filter : must specify port filter\n"); + exit_clean(1); + } + if (!wf_make_filter(windivert_filter, sizeof(windivert_filter), IfIdx, SubIfIdx, wf_ipv4, wf_ipv6, wf_pf_tcp_src, wf_pf_tcp_dst, wf_pf_udp_src, wf_pf_udp_dst)) + { + DLOG_ERR("windivert filter : could not make filter\n"); + exit_clean(1); + } + } + DLOG("windivert filter size: %zu\nwindivert filter:\n%s\n",strlen(windivert_filter),windivert_filter); + if (*wf_save_file) + { + if (save_file(wf_save_file,windivert_filter,strlen(windivert_filter))) + { + DLOG_ERR("windivert filter: raw filter saved to %s\n", wf_save_file); + exit_clean(0); + } + else + { + DLOG_ERR("windivert filter: could not save raw filter to %s\n", wf_save_file); + exit_clean(1); + } + } + HANDLE hMutexArg; + { + char mutex_name[128]; + snprintf(mutex_name,sizeof(mutex_name),"Global\\winws_arg_%u_%u_%u_%u_%u_%u_%u_%u_%u",hash_wf_tcp,hash_wf_udp,hash_wf_raw,hash_ssid_filter,hash_nlm_filter,IfIdx,SubIfIdx,wf_ipv4,wf_ipv6); + + hMutexArg = CreateMutexA(NULL,TRUE,mutex_name); + if (hMutexArg && GetLastError()==ERROR_ALREADY_EXISTS) + { + CloseHandle(hMutexArg); hMutexArg = NULL; + DLOG_ERR("A copy of winws is already running with the same filter\n"); + goto exiterr; + } + + } +#endif + + DLOG("adding low-priority default empty desync profile\n"); + // add default empty profile + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + + DLOG_CONDUP("we have %d user defined desync profile(s) and default low priority profile 0\n",desync_profile_count); + + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + { + dp = &dpl->dp; + // not specified - use desync_ttl value instead + if (dp->desync_ttl6 == 0xFF) dp->desync_ttl6=dp->desync_ttl; + if (!AUTOTTL_ENABLED(dp->desync_autottl6)) dp->desync_autottl6 = dp->desync_autottl; + if (AUTOTTL_ENABLED(dp->desync_autottl)) + DLOG("[profile %d] autottl ipv4 %u:%u-%u\n",v,dp->desync_autottl.delta,dp->desync_autottl.min,dp->desync_autottl.max); + if (AUTOTTL_ENABLED(dp->desync_autottl6)) + DLOG("[profile %d] autottl ipv6 %u:%u-%u\n",v,dp->desync_autottl6.delta,dp->desync_autottl6.min,dp->desync_autottl6.max); + if (dp->desync_split_tls==tlspos_none && dp->desync_split_pos) dp->desync_split_tls=tlspos_pos; + if (dp->desync_split_http_req==httpreqpos_none && dp->desync_split_pos) dp->desync_split_http_req=httpreqpos_pos; + } + + if (!LoadIncludeHostLists()) + { + DLOG_ERR("Include hostlists load failed\n"); + exit_clean(1); + } + if (!LoadExcludeHostLists()) + { + DLOG_ERR("Exclude hostlists load failed\n"); + exit_clean(1); + } + + if (daemon) daemonize(); + + if (*pidfile && !writepid(pidfile)) + { + DLOG_ERR("could not write pidfile\n"); + goto exiterr; + } + + DLOG("initializing conntrack with timeouts tcp=%u:%u:%u udp=%u\n", params.ctrack_t_syn, params.ctrack_t_est, params.ctrack_t_fin, params.ctrack_t_udp); + ConntrackPoolInit(¶ms.conntrack, 10, params.ctrack_t_syn, params.ctrack_t_est, params.ctrack_t_fin, params.ctrack_t_udp); + +#ifdef __linux__ + result = nfq_main(); +#elif defined(BSD) + result = dvt_main(); +#elif defined(__CYGWIN__) + result = win_main(windivert_filter); +#else + #error unsupported OS +#endif +ex: + rawsend_cleanup(); + cleanup_params(); +#ifdef __CYGWIN__ + if (hMutexArg) + { + ReleaseMutex(hMutexArg); + CloseHandle(hMutexArg); + } +#endif + return result; +exiterr: + result = 1; + goto ex; +} diff --git a/nfq/nfqws.h b/nfq/nfqws.h new file mode 100644 index 0000000..86aa882 --- /dev/null +++ b/nfq/nfqws.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +#ifdef __CYGWIN__ +extern bool bQuit; +#endif +int main(int argc, char *argv[]); diff --git a/nfq/packet_queue.c b/nfq/packet_queue.c new file mode 100644 index 0000000..ff5ee73 --- /dev/null +++ b/nfq/packet_queue.c @@ -0,0 +1,68 @@ +#include +#include + +#include "packet_queue.h" + +void rawpacket_queue_init(struct rawpacket_tailhead *q) +{ + TAILQ_INIT(q); +} +void rawpacket_free(struct rawpacket *rp) +{ + if (rp) free(rp->packet); + free(rp); +} +struct rawpacket *rawpacket_dequeue(struct rawpacket_tailhead *q) +{ + struct rawpacket *rp; + rp = TAILQ_FIRST(q); + if (rp) TAILQ_REMOVE(q, rp, next); + return rp; +} +void rawpacket_queue_destroy(struct rawpacket_tailhead *q) +{ + struct rawpacket *rp; + while((rp = rawpacket_dequeue(q))) rawpacket_free(rp); +} + +struct rawpacket *rawpacket_queue(struct rawpacket_tailhead *q,const struct sockaddr_storage* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len,size_t len_payload) +{ + struct rawpacket *rp = malloc(sizeof(struct rawpacket)); + if (!rp) return NULL; + + rp->packet = malloc(len); + if (!rp->packet) + { + free(rp); + return NULL; + } + + rp->dst = *dst; + rp->fwmark = fwmark; + if (ifout) + { + strncpy(rp->ifout,ifout,sizeof(rp->ifout)); + rp->ifout[sizeof(rp->ifout)-1]=0; + } + else + rp->ifout[0]=0; + memcpy(rp->packet,data,len); + rp->len=len; + rp->len_payload=len_payload; + + TAILQ_INSERT_TAIL(q, rp, next); + + return rp; +} + +unsigned int rawpacket_queue_count(const struct rawpacket_tailhead *q) +{ + const struct rawpacket *rp; + unsigned int ct=0; + TAILQ_FOREACH(rp, q, next) ct++; + return ct; +} +bool rawpacket_queue_empty(const struct rawpacket_tailhead *q) +{ + return !TAILQ_FIRST(q); +} diff --git a/nfq/packet_queue.h b/nfq/packet_queue.h new file mode 100644 index 0000000..fb57798 --- /dev/null +++ b/nfq/packet_queue.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include +#include +#include + +struct rawpacket +{ + struct sockaddr_storage dst; + char ifout[IFNAMSIZ+1]; + uint32_t fwmark; + size_t len, len_payload; + uint8_t *packet; + TAILQ_ENTRY(rawpacket) next; +}; +TAILQ_HEAD(rawpacket_tailhead, rawpacket); + +void rawpacket_queue_init(struct rawpacket_tailhead *q); +void rawpacket_queue_destroy(struct rawpacket_tailhead *q); +bool rawpacket_queue_empty(const struct rawpacket_tailhead *q); +unsigned int rawpacket_queue_count(const struct rawpacket_tailhead *q); +struct rawpacket *rawpacket_queue(struct rawpacket_tailhead *q,const struct sockaddr_storage* dst,uint32_t fwmark,const char *ifout,const void *data,size_t len,size_t len_payload); +struct rawpacket *rawpacket_dequeue(struct rawpacket_tailhead *q); +void rawpacket_free(struct rawpacket *rp); diff --git a/nfq/params.c b/nfq/params.c new file mode 100644 index 0000000..e6ad407 --- /dev/null +++ b/nfq/params.c @@ -0,0 +1,232 @@ +#include "params.h" + +#include +#include +#include + +#include "pools.h" +#include "desync.h" + +#ifdef BSD +const char *progname = "dvtws"; +#elif defined(__CYGWIN__) +const char *progname = "winws"; +#elif defined(__linux__) +const char *progname = "nfqws"; +#else +#error UNKNOWN_SYSTEM_TIME +#endif + + +int DLOG_FILE(FILE *F, const char *format, va_list args) +{ + return vfprintf(F, format, args); +} +int DLOG_CON(const char *format, int syslog_priority, va_list args) +{ + return DLOG_FILE(syslog_priority==LOG_ERR ? stderr : stdout, format, args); +} +int DLOG_FILENAME(const char *filename, const char *format, va_list args) +{ + int r; + FILE *F = fopen(filename,"at"); + if (F) + { + r = DLOG_FILE(F, format, args); + fclose(F); + } + else + r=-1; + return r; +} + +static char syslog_buf[1024]; +static size_t syslog_buf_sz=0; +static void syslog_buffered(int priority, const char *format, va_list args) +{ + if (vsnprintf(syslog_buf+syslog_buf_sz,sizeof(syslog_buf)-syslog_buf_sz,format,args)>0) + { + syslog_buf_sz=strlen(syslog_buf); + // log when buffer is full or buffer ends with \n + if (syslog_buf_sz>=(sizeof(syslog_buf)-1) || (syslog_buf_sz && syslog_buf[syslog_buf_sz-1]=='\n')) + { + syslog(priority,"%s",syslog_buf); + syslog_buf_sz = 0; + } + } +} + +static int DLOG_VA(const char *format, int syslog_priority, bool condup, va_list args) +{ + int r=0; + va_list args2; + + if (condup && !(params.debug && params.debug_target==LOG_TARGET_CONSOLE)) + { + va_copy(args2,args); + DLOG_CON(format,syslog_priority,args2); + } + if (params.debug) + { + switch(params.debug_target) + { + case LOG_TARGET_CONSOLE: + r = DLOG_CON(format,syslog_priority,args); + break; + case LOG_TARGET_FILE: + r = DLOG_FILENAME(params.debug_logfile,format,args); + break; + case LOG_TARGET_SYSLOG: + // skip newlines + syslog_buffered(syslog_priority,format,args); + r = 1; + break; + default: + break; + } + } + return r; +} + +int DLOG(const char *format, ...) +{ + int r; + va_list args; + va_start(args, format); + r = DLOG_VA(format, LOG_DEBUG, false, args); + va_end(args); + return r; +} +int DLOG_CONDUP(const char *format, ...) +{ + int r; + va_list args; + va_start(args, format); + r = DLOG_VA(format, LOG_DEBUG, true, args); + va_end(args); + return r; +} +int DLOG_ERR(const char *format, ...) +{ + int r; + va_list args; + va_start(args, format); + r = DLOG_VA(format, LOG_ERR, true, args); + va_end(args); + return r; +} +int DLOG_PERROR(const char *s) +{ + return DLOG_ERR("%s: %s\n", s, strerror(errno)); +} + + +int LOG_APPEND(const char *filename, const char *format, va_list args) +{ + int r; + FILE *F = fopen(filename,"at"); + if (F) + { + fprint_localtime(F); + fprintf(F, " : "); + r = vfprintf(F, format, args); + fprintf(F, "\n"); + fclose(F); + } + else + r=-1; + return r; +} + +int HOSTLIST_DEBUGLOG_APPEND(const char *format, ...) +{ + if (*params.hostlist_auto_debuglog) + { + int r; + va_list args; + + va_start(args, format); + r = LOG_APPEND(params.hostlist_auto_debuglog, format, args); + va_end(args); + return r; + } + else + return 0; +} + + +struct desync_profile_list *dp_list_add(struct desync_profile_list_head *head) +{ + struct desync_profile_list *entry = calloc(1,sizeof(struct desync_profile_list)); + if (!entry) return NULL; + + LIST_INIT(&entry->dp.hostlist_files); + LIST_INIT(&entry->dp.hostlist_exclude_files); + memcpy(entry->dp.hostspell, "host", 4); // default hostspell + entry->dp.desync_skip_nosni = true; + entry->dp.desync_split_pos = 2; + entry->dp.desync_ipfrag_pos_udp = IPFRAG_UDP_DEFAULT; + entry->dp.desync_ipfrag_pos_tcp = IPFRAG_TCP_DEFAULT; + entry->dp.desync_repeats = 1; + entry->dp.fake_tls_size = sizeof(fake_tls_clienthello_default); + memcpy(entry->dp.fake_tls,fake_tls_clienthello_default,entry->dp.fake_tls_size); + randomize_default_tls_payload(entry->dp.fake_tls); + entry->dp.fake_http_size = strlen(fake_http_request_default); + memcpy(entry->dp.fake_http,fake_http_request_default,entry->dp.fake_http_size); + entry->dp.fake_quic_size = 620; // must be 601+ for TSPU hack + entry->dp.fake_quic[0] = 0x40; // russian TSPU QUIC short header fake + entry->dp.fake_wg_size = 64; + entry->dp.fake_dht_size = 64; + entry->dp.fake_unknown_size = 256; + entry->dp.fake_syndata_size = 16; + entry->dp.fake_unknown_udp_size = 64; + entry->dp.wscale=-1; // default - dont change scale factor (client) + entry->dp.desync_ttl6 = 0xFF; // unused + entry->dp.desync_badseq_increment = BADSEQ_INCREMENT_DEFAULT; + entry->dp.desync_badseq_ack_increment = BADSEQ_ACK_INCREMENT_DEFAULT; + entry->dp.wssize_cutoff_mode = entry->dp.desync_start_mode = entry->dp.desync_cutoff_mode = 'n'; // packet number by default + entry->dp.udplen_increment = UDPLEN_INCREMENT_DEFAULT; + entry->dp.hostlist_auto_fail_threshold = HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT; + entry->dp.hostlist_auto_fail_time = HOSTLIST_AUTO_FAIL_TIME_DEFAULT; + entry->dp.hostlist_auto_retrans_threshold = HOSTLIST_AUTO_RETRANS_THRESHOLD_DEFAULT; + entry->dp.filter_ipv4 = entry->dp.filter_ipv6 = true; + + // add to the tail + struct desync_profile_list *dpn,*dpl=LIST_FIRST(¶ms.desync_profiles); + if (dpl) + { + while ((dpn=LIST_NEXT(dpl,next))) dpl = dpn; + LIST_INSERT_AFTER(dpl, entry, next); + } + else + LIST_INSERT_HEAD(¶ms.desync_profiles, entry, next); + + return entry; +} +static void dp_entry_destroy(struct desync_profile_list *entry) +{ + strlist_destroy(&entry->dp.hostlist_files); + strlist_destroy(&entry->dp.hostlist_exclude_files); + StrPoolDestroy(&entry->dp.hostlist_exclude); + StrPoolDestroy(&entry->dp.hostlist); + HostFailPoolDestroy(&entry->dp.hostlist_auto_fail_counters); + free(entry); +} +void dp_list_destroy(struct desync_profile_list_head *head) +{ + struct desync_profile_list *entry; + while ((entry = LIST_FIRST(head))) + { + LIST_REMOVE(entry, next); + dp_entry_destroy(entry); + } +} +bool dp_list_have_autohostlist(struct desync_profile_list_head *head) +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, head, next) + if (*dpl->dp.hostlist_auto_filename) + return true; + return false; +} + diff --git a/nfq/params.h b/nfq/params.h new file mode 100644 index 0000000..b9dd395 --- /dev/null +++ b/nfq/params.h @@ -0,0 +1,123 @@ +#pragma once + +#include "pools.h" +#include "conntrack.h" +#include "desync.h" +#include "protocol.h" +#include "helpers.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#define TLS_PARTIALS_ENABLE true + +#define Q_RCVBUF (128*1024) // in bytes +#define Q_SNDBUF (64*1024) // in bytes +#define RAW_SNDBUF (64*1024) // in bytes + +#define Q_MAXLEN 1024 // in packets + +#define BADSEQ_INCREMENT_DEFAULT -10000 +#define BADSEQ_ACK_INCREMENT_DEFAULT -66000 + +#define IPFRAG_UDP_DEFAULT 8 +#define IPFRAG_TCP_DEFAULT 32 + +#define UDPLEN_INCREMENT_DEFAULT 2 + +#define HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT 3 +#define HOSTLIST_AUTO_FAIL_TIME_DEFAULT 60 +#define HOSTLIST_AUTO_RETRANS_THRESHOLD_DEFAULT 3 + +enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG }; + +struct desync_profile +{ + int n; // number of the profile + + uint16_t wsize,wssize; + uint8_t wscale,wsscale; + char wssize_cutoff_mode; // n - packets, d - data packets, s - relative sequence + unsigned int wssize_cutoff; + + bool hostcase, hostnospace, domcase; + char hostspell[4]; + enum dpi_desync_mode desync_mode0,desync_mode,desync_mode2; + bool desync_retrans,desync_skip_nosni,desync_any_proto; + unsigned int desync_repeats,desync_split_pos,desync_seqovl,desync_ipfrag_pos_tcp,desync_ipfrag_pos_udp; + enum httpreqpos desync_split_http_req; + enum tlspos desync_split_tls; + char desync_start_mode, desync_cutoff_mode; // n - packets, d - data packets, s - relative sequence + unsigned int desync_start, desync_cutoff; + uint8_t desync_ttl, desync_ttl6; + autottl desync_autottl, desync_autottl6; + uint32_t desync_fooling_mode; + uint32_t desync_badseq_increment, desync_badseq_ack_increment; + uint8_t fake_http[1460],fake_tls[1460],fake_unknown[1460],fake_syndata[1460],seqovl_pattern[1460]; + uint8_t fake_unknown_udp[1472],udplen_pattern[1472],fake_quic[1472],fake_wg[1472],fake_dht[1472]; + size_t fake_http_size,fake_tls_size,fake_quic_size,fake_wg_size,fake_dht_size,fake_unknown_size,fake_syndata_size,fake_unknown_udp_size; + int udplen_increment; + + bool filter_ipv4,filter_ipv6; + port_filter pf_tcp,pf_udp; + strpool *hostlist, *hostlist_exclude; + struct str_list_head hostlist_files, hostlist_exclude_files; + char hostlist_auto_filename[PATH_MAX]; + int hostlist_auto_fail_threshold, hostlist_auto_fail_time, hostlist_auto_retrans_threshold; + time_t hostlist_auto_mod_time; + hostfail_pool *hostlist_auto_fail_counters; +}; + +struct desync_profile_list { + struct desync_profile dp; + LIST_ENTRY(desync_profile_list) next; +}; +LIST_HEAD(desync_profile_list_head, desync_profile_list); +struct desync_profile_list *dp_list_add(struct desync_profile_list_head *head); +void dp_list_destroy(struct desync_profile_list_head *head); +bool dp_list_have_autohostlist(struct desync_profile_list_head *head); + +struct params_s +{ + enum log_target debug_target; + char debug_logfile[PATH_MAX]; + bool debug; + +#ifdef __linux__ + int qnum; +#elif defined(BSD) + uint16_t port; // divert port +#endif + char bind_fix4,bind_fix6; + uint32_t desync_fwmark; // unused in BSD + + struct desync_profile_list_head desync_profiles; + +#ifdef __CYGWIN__ + struct str_list_head ssid_filter,nlm_filter; +#else + bool droproot; + uid_t uid; + gid_t gid; +#endif + + char hostlist_auto_debuglog[PATH_MAX]; + + unsigned int ctrack_t_syn, ctrack_t_est, ctrack_t_fin, ctrack_t_udp; + t_conntrack conntrack; +}; + +extern struct params_s params; +extern const char *progname; + +int DLOG(const char *format, ...); +int DLOG_ERR(const char *format, ...); +int DLOG_PERROR(const char *s); +int DLOG_CONDUP(const char *format, ...); +int HOSTLIST_DEBUGLOG_APPEND(const char *format, ...); diff --git a/nfq/pools.c b/nfq/pools.c new file mode 100644 index 0000000..785b04d --- /dev/null +++ b/nfq/pools.c @@ -0,0 +1,153 @@ +#define _GNU_SOURCE +#include "pools.h" +#include +#include +#include + +#define DESTROY_STR_POOL(etype, ppool) \ + etype *elem, *tmp; \ + HASH_ITER(hh, *ppool, elem, tmp) { \ + free(elem->str); \ + HASH_DEL(*ppool, elem); \ + free(elem); \ + } + +#define ADD_STR_POOL(etype, ppool, keystr, keystr_len) \ + etype *elem; \ + if (!(elem = (etype*)malloc(sizeof(etype)))) \ + return false; \ + if (!(elem->str = malloc(keystr_len + 1))) \ + { \ + free(elem); \ + return false; \ + } \ + memcpy(elem->str, keystr, keystr_len); \ + elem->str[keystr_len] = 0; \ + oom = false; \ + HASH_ADD_KEYPTR(hh, *ppool, elem->str, strlen(elem->str), elem); \ + if (oom) \ + { \ + free(elem->str); \ + free(elem); \ + return false; \ + } + + +#undef uthash_nonfatal_oom +#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) +static bool oom = false; +static void ut_oom_recover(void *elem) +{ + oom = true; +} + +// for not zero terminated strings +bool StrPoolAddStrLen(strpool **pp, const char *s, size_t slen) +{ + ADD_STR_POOL(strpool, pp, s, slen) + return true; +} +// for zero terminated strings +bool StrPoolAddStr(strpool **pp, const char *s) +{ + return StrPoolAddStrLen(pp, s, strlen(s)); +} + +bool StrPoolCheckStr(strpool *p, const char *s) +{ + strpool *elem; + HASH_FIND_STR(p, s, elem); + return elem != NULL; +} + +void StrPoolDestroy(strpool **pp) +{ + DESTROY_STR_POOL(strpool, pp) +} + + + +void HostFailPoolDestroy(hostfail_pool **pp) +{ + DESTROY_STR_POOL(hostfail_pool, pp) +} +hostfail_pool * HostFailPoolAdd(hostfail_pool **pp,const char *s,int fail_time) +{ + size_t slen = strlen(s); + ADD_STR_POOL(hostfail_pool, pp, s, slen) + elem->expire = time(NULL) + fail_time; + elem->counter = 0; + return elem; +} +hostfail_pool *HostFailPoolFind(hostfail_pool *p,const char *s) +{ + hostfail_pool *elem; + HASH_FIND_STR(p, s, elem); + return elem; +} +void HostFailPoolDel(hostfail_pool **p, hostfail_pool *elem) +{ + HASH_DEL(*p, elem); + free(elem); +} +void HostFailPoolPurge(hostfail_pool **pp) +{ + hostfail_pool *elem, *tmp; + time_t now = time(NULL); + HASH_ITER(hh, *pp, elem, tmp) + { + if (now >= elem->expire) + { + free(elem->str); + HASH_DEL(*pp, elem); + free(elem); + } + } +} +static time_t host_fail_purge_prev=0; +void HostFailPoolPurgeRateLimited(hostfail_pool **pp) +{ + time_t now = time(NULL); + // do not purge too often to save resources + if (host_fail_purge_prev != now) + { + HostFailPoolPurge(pp); + host_fail_purge_prev = now; + } +} +void HostFailPoolDump(hostfail_pool *p) +{ + hostfail_pool *elem, *tmp; + time_t now = time(NULL); + HASH_ITER(hh, p, elem, tmp) + printf("host=%s counter=%d time_left=%lld\n",elem->str,elem->counter,(long long int)elem->expire-now); +} + + +bool strlist_add(struct str_list_head *head, const char *filename) +{ + struct str_list *entry = malloc(sizeof(struct str_list)); + if (!entry) return false; + entry->str = strdup(filename); + if (!entry->str) + { + free(entry); + return false; + } + LIST_INSERT_HEAD(head, entry, next); + return true; +} +static void strlist_entry_destroy(struct str_list *entry) +{ + if (entry->str) free(entry->str); + free(entry); +} +void strlist_destroy(struct str_list_head *head) +{ + struct str_list *entry; + while ((entry = LIST_FIRST(head))) + { + LIST_REMOVE(entry, next); + strlist_entry_destroy(entry); + } +} diff --git a/nfq/pools.h b/nfq/pools.h new file mode 100644 index 0000000..154d541 --- /dev/null +++ b/nfq/pools.h @@ -0,0 +1,45 @@ +#pragma once + +#include +#include +#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 **pp); +bool StrPoolAddStr(strpool **pp,const char *s); +bool StrPoolAddStrLen(strpool **pp,const char *s,size_t slen); +bool StrPoolCheckStr(strpool *p,const char *s); + +struct str_list { + char *str; + LIST_ENTRY(str_list) next; +}; +LIST_HEAD(str_list_head, str_list); + +typedef struct hostfail_pool { + char *str; /* key */ + int counter; /* value */ + time_t expire; /* when to expire record (unixtime) */ + UT_hash_handle hh; /* makes this structure hashable */ +} hostfail_pool; + +void HostFailPoolDestroy(hostfail_pool **pp); +hostfail_pool *HostFailPoolAdd(hostfail_pool **pp,const char *s,int fail_time); +hostfail_pool *HostFailPoolFind(hostfail_pool *p,const char *s); +void HostFailPoolDel(hostfail_pool **pp, hostfail_pool *elem); +void HostFailPoolPurge(hostfail_pool **pp); +void HostFailPoolPurgeRateLimited(hostfail_pool **pp); +void HostFailPoolDump(hostfail_pool *p); + +bool strlist_add(struct str_list_head *head, const char *filename); +void strlist_destroy(struct str_list_head *head); diff --git a/nfq/protocol.c b/nfq/protocol.c new file mode 100644 index 0000000..b83607e --- /dev/null +++ b/nfq/protocol.c @@ -0,0 +1,771 @@ +#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 }; +const char *HttpMethod(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 *method; + } + return NULL; +} +bool IsHttp(const uint8_t *data, size_t len) +{ + return !!HttpMethod(data,len); +} + +static bool IsHostAt(const uint8_t *p) +{ + return \ + p[0]=='\n' && + (p[1]=='H' || p[1]=='h') && + (p[2]=='o' || p[2]=='O') && + (p[3]=='s' || p[3]=='S') && + (p[4]=='t' || p[4]=='T') && + p[5]==':'; +} +static uint8_t *FindHostIn(uint8_t *buf, size_t bs) +{ + size_t pos; + if (bs<6) return NULL; + bs-=6; + for(pos=0;pos<=bs;pos++) + if (IsHostAt(buf+pos)) + return buf+pos; + + return NULL; +} +static const uint8_t *FindHostInConst(const uint8_t *buf, size_t bs) +{ + size_t pos; + if (bs<6) return NULL; + bs-=6; + for(pos=0;pos<=bs;pos++) + if (IsHostAt(buf+pos)) + return buf+pos; + + return NULL; +} +// pHost points to "Host: ..." +bool HttpFindHost(uint8_t **pHost,uint8_t *buf,size_t bs) +{ + if (!*pHost) + { + *pHost = FindHostIn(buf, bs); + if (*pHost) (*pHost)++; + } + return !!*pHost; +} +bool HttpFindHostConst(const uint8_t **pHost,const uint8_t *buf,size_t bs) +{ + if (!*pHost) + { + *pHost = FindHostInConst(buf, bs); + if (*pHost) (*pHost)++; + } + return !!*pHost; +} + +bool IsHttpReply(const uint8_t *data, size_t len) +{ + // HTTP/1.x 200\r\n + return len>14 && !memcmp(data,"HTTP/1.",7) && (data[7]=='0' || data[7]=='1') && data[8]==' ' && + data[9]>='0' && data[9]<='9' && + data[10]>='0' && data[10]<='9' && + data[11]>='0' && data[11]<='9'; +} +int HttpReplyCode(const uint8_t *data, size_t len) +{ + return (data[9]-'0')*100 + (data[10]-'0')*10 + (data[11]-'0'); +} +bool HttpExtractHeader(const uint8_t *data, size_t len, const char *header, char *buf, size_t len_buf) +{ + const uint8_t *p, *s, *e = data + len; + + p = (uint8_t*)strncasestr((char*)data, header, len); + if (!p) return false; + p += strlen(header); + while (p < e && (*p == ' ' || *p == '\t')) p++; + s = p; + while (s < e && (*s != '\r' && *s != '\n' && *s != ' ' && *s != '\t')) s++; + if (s > p) + { + size_t slen = s - p; + if (buf && len_buf) + { + if (slen >= len_buf) slen = len_buf - 1; + for (size_t i = 0; i < slen; i++) buf[i] = tolower(p[i]); + buf[slen] = 0; + } + return true; + } + return false; +} +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host) +{ + return HttpExtractHeader(data, len, "\nHost:", host, len_host); +} +const char *HttpFind2ndLevelDomain(const char *host) +{ + const char *p=NULL; + if (*host) + { + for (p = host + strlen(host)-1; p>host && *p!='.'; p--); + if (*p=='.') for (p--; p>host && *p!='.'; p--); + if (*p=='.') p++; + } + return p; +} +// DPI redirects are global redirects to another domain +bool HttpReplyLooksLikeDPIRedirect(const uint8_t *data, size_t len, const char *host) +{ + char loc[256],*redirect_host, *p; + int code; + + if (!host || !*host) return false; + + code = HttpReplyCode(data,len); + + if ((code!=302 && code!=307) || !HttpExtractHeader(data,len,"\nLocation:",loc,sizeof(loc))) return false; + + // something like : https://censor.net/badpage.php?reason=denied&source=RKN + + if (!strncmp(loc,"http://",7)) + redirect_host=loc+7; + else if (!strncmp(loc,"https://",8)) + redirect_host=loc+8; + else + return false; + + // somethinkg like : censor.net/badpage.php?reason=denied&source=RKN + + for(p=redirect_host; *p && *p!='/' ; p++); + *p=0; + if (!*redirect_host) return false; + + // somethinkg like : censor.net + + // extract 2nd level domains + + const char *dhost = HttpFind2ndLevelDomain(host); + const char *drhost = HttpFind2ndLevelDomain(redirect_host); + + return strcasecmp(dhost, drhost)!=0; +} +size_t HttpPos(enum httpreqpos tpos_type, size_t hpos_pos, const uint8_t *http, size_t sz) +{ + const uint8_t *method, *host=NULL; + int i; + + switch(tpos_type) + { + case httpreqpos_method: + // recognize some tpws pre-applied hacks + method=http; + if (sz<10) break; + if (*method=='\n' || *method=='\r') method++; + if (*method=='\n' || *method=='\r') method++; + for (i=0;i<7;i++) if (*method>='A' && *method<='Z') method++; + if (i<3 || *method!=' ') break; + return method-http-1; + case httpreqpos_host: + if (HttpFindHostConst(&host,http,sz) && (host-http+7)= 6 && data[0] == 0x16 && data[1] == 0x03 && data[2] <= 0x03 && data[5] == 0x01 && (bPartialIsOK || TLSRecordLen(data) <= len); +} + +size_t TLSHandshakeLen(const uint8_t *data) +{ + return data[1] << 16 | data[2] << 8 | data[3]; // HandshakeProtocol length +} +bool IsTLSHandshakeClientHello(const uint8_t *data, size_t len) +{ + return len>=4 && data[0]==0x01 && TLSHandshakeLen(data)>0; +} +bool IsTLSHandshakeFull(const uint8_t *data, size_t len) +{ + return (4+TLSHandshakeLen(data))<=len; +} + + +// bPartialIsOK=true - accept partial packets not containing the whole TLS message +bool TLSFindExtInHandshake(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK) +{ + // +0 + // u8 HandshakeType: ClientHello + // u24 Length + // u16 Version + // c[32] random + // u8 SessionIDLength + // + // u16 CipherSuitesLength + // + // u8 CompressionMethodsLength + // + // u16 ExtensionsLength + + size_t l; + + if (!bPartialIsOK && !IsTLSHandshakeFull(data,len)) return false; + + l = 1 + 3 + 2 + 32; + // SessionIDLength + if (len < (l + 1)) return false; + l += data[l] + 1; + // CipherSuitesLength + if (len < (l + 2)) return false; + l += pntoh16(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 = pntoh16(data); + data += 2; len -= 2; + + if (bPartialIsOK) + { + if (len < l) l = len; + } + else + { + if (len < l) return false; + } + + while (l >= 4) + { + uint16_t etype = pntoh16(data); + size_t elen = pntoh16(data + 2); + data += 4; l -= 4; + if (l < elen) break; + if (etype == type) + { + if (ext && len_ext) + { + *ext = data; + *len_ext = elen; + } + return true; + } + data += elen; l -= elen; + } + + return false; +} +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK) +{ + // +0 + // u8 ContentType: Handshake + // u16 Version: TLS1.0 + // u16 Length + size_t reclen; + if (!IsTLSClientHello(data, len, bPartialIsOK)) return false; + reclen=TLSRecordLen(data); + if (reclen= len_host) slen = len_host - 1; + for (size_t i = 0; i < slen; i++) host[i] = tolower(ext[i]); + host[slen] = 0; + } + return true; +} +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK) +{ + const uint8_t *ext; + size_t elen; + + if (!TLSFindExt(data, len, 0, &ext, &elen, bPartialIsOK)) return false; + return TLSExtractHostFromExt(ext, elen, host, len_host); +} +bool TLSHelloExtractHostFromHandshake(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK) +{ + const uint8_t *ext; + size_t elen; + + if (!TLSFindExtInHandshake(data, len, 0, &ext, &elen, bPartialIsOK)) return false; + return TLSExtractHostFromExt(ext, elen, host, len_host); +} +size_t TLSPos(enum tlspos tpos_type, size_t tpos_pos, const uint8_t *tls, size_t sz, uint8_t type) +{ + size_t elen; + const uint8_t *ext; + switch(tpos_type) + { + case tlspos_sni: + case tlspos_sniext: + if (TLSFindExt(tls,sz,0,&ext,&elen,false)) + return (tpos_type==tlspos_sni) ? ext-tls+6 : ext-tls+1; + // fall through + case tlspos_pos: + return tpos_pos> 6) + { + case 0: /* 0b00 => 1 byte length (6 bits Usable) */ + if (value) *value = *tvb & 0x3F; + return 1; + case 1: /* 0b01 => 2 bytes length (14 bits Usable) */ + if (value) *value = pntoh16(tvb) & 0x3FFF; + return 2; + case 2: /* 0b10 => 4 bytes length (30 bits Usable) */ + if (value) *value = pntoh32(tvb) & 0x3FFFFFFF; + return 4; + case 3: /* 0b11 => 8 bytes length (62 bits Usable) */ + if (value) *value = pntoh64(tvb) & 0x3FFFFFFFFFFFFFFF; + return 8; + } + // impossible case + if (*value) *value = 0; + return 0; +} +static uint8_t tvb_get_size(uint8_t tvb) +{ + return 1 << (tvb >> 6); +} + +bool IsQUICCryptoHello(const uint8_t *data, size_t len, size_t *hello_offset, size_t *hello_len) +{ + size_t offset = 1; + uint64_t coff, clen; + if (len < 3 || *data != 6) return false; + if ((offset+tvb_get_size(data[offset])) >= len) return false; + offset += tvb_get_varint(data + offset, &coff); + // offset must be 0 if it's a full segment, not just a chunk + if (coff || (offset+tvb_get_size(data[offset])) >= len) return false; + offset += tvb_get_varint(data + offset, &clen); + if ((offset + clen) > len || !IsTLSHandshakeClientHello(data+offset,clen)) return false; + if (hello_offset) *hello_offset = offset; + if (hello_len) *hello_len = (size_t)clen; + return true; +} + +/* Returns the QUIC draft version or 0 if not applicable. */ +uint8_t QUICDraftVersion(uint32_t version) +{ + /* IETF Draft versions */ + if ((version >> 8) == 0xff0000) { + return (uint8_t)version; + } + /* Facebook mvfst, based on draft -22. */ + if (version == 0xfaceb001) { + return 22; + } + /* Facebook mvfst, based on draft -27. */ + if (version == 0xfaceb002 || version == 0xfaceb00e) { + return 27; + } + /* GQUIC Q050, T050 and T051: they are not really based on any drafts, + * but we must return a sensible value */ + if (version == 0x51303530 || + version == 0x54303530 || + version == 0x54303531) { + return 27; + } + /* https://tools.ietf.org/html/draft-ietf-quic-transport-32#section-15 + "Versions that follow the pattern 0x?a?a?a?a are reserved for use in + forcing version negotiation to be exercised" + It is tricky to return a correct draft version: such number is primarily + used to select a proper salt (which depends on the version itself), but + we don't have a real version here! Let's hope that we need to handle + only latest drafts... */ + if ((version & 0x0F0F0F0F) == 0x0a0a0a0a) { + return 29; + } + /* QUIC (final?) constants for v1 are defined in draft-33, but draft-34 is the + final draft version */ + if (version == 0x00000001) { + return 34; + } + /* QUIC Version 2 */ + /* TODO: for the time being use 100 as a number for V2 and let see how v2 drafts evolve */ + if (version == 0x709A50C4) { + return 100; + } + return 0; +} + +static bool is_quic_draft_max(uint32_t draft_version, uint8_t max_version) +{ + return draft_version && draft_version <= max_version; +} +static bool is_quic_v2(uint32_t version) +{ + return version == 0x6b3343cf; +} + +static bool quic_hkdf_expand_label(const uint8_t *secret, uint8_t secret_len, const char *label, uint8_t *out, size_t out_len) +{ + uint8_t hkdflabel[64]; + + size_t label_size = strlen(label); + if (label_size > 255) return false; + size_t hkdflabel_size = 2 + 1 + label_size + 1; + if (hkdflabel_size > sizeof(hkdflabel)) return false; + + phton16(hkdflabel, out_len); + hkdflabel[2] = (uint8_t)label_size; + memcpy(hkdflabel + 3, label, label_size); + hkdflabel[3 + label_size] = 0; + return !hkdfExpand(SHA256, secret, secret_len, hkdflabel, hkdflabel_size, out, out_len); +} + +static bool quic_derive_initial_secret(const quic_cid_t *cid, uint8_t *client_initial_secret, uint32_t version) +{ + /* + * https://tools.ietf.org/html/draft-ietf-quic-tls-29#section-5.2 + * + * initial_salt = 0xafbfec289993d24c9e9786f19c6111e04390a899 + * initial_secret = HKDF-Extract(initial_salt, client_dst_connection_id) + * + * client_initial_secret = HKDF-Expand-Label(initial_secret, + * "client in", "", Hash.length) + * server_initial_secret = HKDF-Expand-Label(initial_secret, + * "server in", "", Hash.length) + * + * Hash for handshake packets is SHA-256 (output size 32). + */ + static const uint8_t handshake_salt_draft_22[20] = { + 0x7f, 0xbc, 0xdb, 0x0e, 0x7c, 0x66, 0xbb, 0xe9, 0x19, 0x3a, + 0x96, 0xcd, 0x21, 0x51, 0x9e, 0xbd, 0x7a, 0x02, 0x64, 0x4a + }; + static const uint8_t handshake_salt_draft_23[20] = { + 0xc3, 0xee, 0xf7, 0x12, 0xc7, 0x2e, 0xbb, 0x5a, 0x11, 0xa7, + 0xd2, 0x43, 0x2b, 0xb4, 0x63, 0x65, 0xbe, 0xf9, 0xf5, 0x02, + }; + static const uint8_t handshake_salt_draft_29[20] = { + 0xaf, 0xbf, 0xec, 0x28, 0x99, 0x93, 0xd2, 0x4c, 0x9e, 0x97, + 0x86, 0xf1, 0x9c, 0x61, 0x11, 0xe0, 0x43, 0x90, 0xa8, 0x99 + }; + static const uint8_t handshake_salt_v1[20] = { + 0x38, 0x76, 0x2c, 0xf7, 0xf5, 0x59, 0x34, 0xb3, 0x4d, 0x17, + 0x9a, 0xe6, 0xa4, 0xc8, 0x0c, 0xad, 0xcc, 0xbb, 0x7f, 0x0a + }; + static const uint8_t hanshake_salt_draft_q50[20] = { + 0x50, 0x45, 0x74, 0xEF, 0xD0, 0x66, 0xFE, 0x2F, 0x9D, 0x94, + 0x5C, 0xFC, 0xDB, 0xD3, 0xA7, 0xF0, 0xD3, 0xB5, 0x6B, 0x45 + }; + static const uint8_t hanshake_salt_draft_t50[20] = { + 0x7f, 0xf5, 0x79, 0xe5, 0xac, 0xd0, 0x72, 0x91, 0x55, 0x80, + 0x30, 0x4c, 0x43, 0xa2, 0x36, 0x7c, 0x60, 0x48, 0x83, 0x10 + }; + static const uint8_t hanshake_salt_draft_t51[20] = { + 0x7a, 0x4e, 0xde, 0xf4, 0xe7, 0xcc, 0xee, 0x5f, 0xa4, 0x50, + 0x6c, 0x19, 0x12, 0x4f, 0xc8, 0xcc, 0xda, 0x6e, 0x03, 0x3d + }; + static const uint8_t handshake_salt_v2[20] = { + 0x0d, 0xed, 0xe3, 0xde, 0xf7, 0x00, 0xa6, 0xdb, 0x81, 0x93, + 0x81, 0xbe, 0x6e, 0x26, 0x9d, 0xcb, 0xf9, 0xbd, 0x2e, 0xd9 + }; + + int err; + const uint8_t *salt; + uint8_t secret[USHAMaxHashSize]; + uint8_t draft_version = QUICDraftVersion(version); + + if (version == 0x51303530) { + salt = hanshake_salt_draft_q50; + } + else if (version == 0x54303530) { + salt = hanshake_salt_draft_t50; + } + else if (version == 0x54303531) { + salt = hanshake_salt_draft_t51; + } + else if (is_quic_draft_max(draft_version, 22)) { + salt = handshake_salt_draft_22; + } + else if (is_quic_draft_max(draft_version, 28)) { + salt = handshake_salt_draft_23; + } + else if (is_quic_draft_max(draft_version, 32)) { + salt = handshake_salt_draft_29; + } + else if (is_quic_draft_max(draft_version, 34)) { + salt = handshake_salt_v1; + } + else { + salt = handshake_salt_v2; + } + + err = hkdfExtract(SHA256, salt, 20, cid->cid, cid->len, secret); + if (err) return false; + + if (client_initial_secret && !quic_hkdf_expand_label(secret, SHA256HashSize, "tls13 client in", client_initial_secret, SHA256HashSize)) + return false; + + return true; +} +bool QUICIsLongHeader(const uint8_t *data, size_t len) +{ + return len>=9 && !!(*data & 0x80); +} +uint32_t QUICExtractVersion(const uint8_t *data, size_t len) +{ + // long header, fixed bit, type=initial + return QUICIsLongHeader(data, len) ? ntohl(*(uint32_t*)(data + 1)) : 0; +} +bool QUICExtractDCID(const uint8_t *data, size_t len, quic_cid_t *cid) +{ + if (!QUICIsLongHeader(data,len) || !data[5] || data[5] > QUIC_MAX_CID_LENGTH || (6+data[5])>len) return false; + cid->len = data[5]; + memcpy(&cid->cid, data + 6, data[5]); + return true; +} +bool QUICDecryptInitial(const uint8_t *data, size_t data_len, uint8_t *clean, size_t *clean_len) +{ + uint32_t ver = QUICExtractVersion(data, data_len); + if (!ver) return false; + + quic_cid_t dcid; + if (!QUICExtractDCID(data, data_len, &dcid)) return false; + + uint8_t client_initial_secret[SHA256HashSize]; + if (!quic_derive_initial_secret(&dcid, client_initial_secret, ver)) return false; + + uint8_t aeskey[16], aesiv[12], aeshp[16]; + bool v1_label = !is_quic_v2(ver); + if (!quic_hkdf_expand_label(client_initial_secret, SHA256HashSize, v1_label ? "tls13 quic key" : "tls13 quicv2 key", aeskey, sizeof(aeskey)) || + !quic_hkdf_expand_label(client_initial_secret, SHA256HashSize, v1_label ? "tls13 quic iv" : "tls13 quicv2 iv", aesiv, sizeof(aesiv)) || + !quic_hkdf_expand_label(client_initial_secret, SHA256HashSize, v1_label ? "tls13 quic hp" : "tls13 quicv2 hp", aeshp, sizeof(aeshp))) + { + return false; + } + + uint64_t payload_len,token_len; + size_t pn_offset; + pn_offset = 1 + 4 + 1 + data[5]; + if (pn_offset >= data_len) return false; + pn_offset += 1 + data[pn_offset]; + if ((pn_offset + tvb_get_size(data[pn_offset])) >= data_len) return false; + pn_offset += tvb_get_varint(data + pn_offset, &token_len); + pn_offset += token_len; + if ((pn_offset + tvb_get_size(data[pn_offset])) >= data_len) return false; + pn_offset += tvb_get_varint(data + pn_offset, &payload_len); + if (payload_len<20 || (pn_offset + payload_len)>data_len) return false; + + aes_init_keygen_tables(); + + uint8_t sample_enc[16]; + aes_context ctx; + if (aes_setkey(&ctx, 1, aeshp, sizeof(aeshp)) || aes_cipher(&ctx, data + pn_offset + 4, sample_enc)) return false; + + uint8_t mask[5]; + memcpy(mask, sample_enc, sizeof(mask)); + + uint8_t packet0 = data[0] ^ (mask[0] & 0x0f); + uint8_t pkn_len = (packet0 & 0x03) + 1; + + uint8_t pkn_bytes[4]; + memcpy(pkn_bytes, data + pn_offset, pkn_len); + uint32_t pkn = 0; + for (uint8_t i = 0; i < pkn_len; i++) pkn |= (uint32_t)(pkn_bytes[i] ^ mask[1 + i]) << (8 * (pkn_len - 1 - i)); + + phton64(aesiv + sizeof(aesiv) - 8, pntoh64(aesiv + sizeof(aesiv) - 8) ^ pkn); + + size_t cryptlen = payload_len - pkn_len - 16; + if (cryptlen > *clean_len) return false; + *clean_len = cryptlen; + const uint8_t *decrypt_begin = data + pn_offset + pkn_len; + + uint8_t atag[16],header[256]; + size_t header_len = pn_offset + pkn_len; + if (header_len > sizeof(header)) return false; // not likely header will be so large + memcpy(header, data, header_len); + header[0] = packet0; + for(uint8_t i = 0; i < pkn_len; i++) header[header_len - 1 - i] = (uint8_t)(pkn >> (8 * i)); + + if (aes_gcm_crypt(AES_DECRYPT, clean, decrypt_begin, cryptlen, aeskey, sizeof(aeskey), aesiv, sizeof(aesiv), header, header_len, atag, sizeof(atag))) + return false; + + // check if message was decrypted correctly : good keys , no data corruption + return !memcmp(data + pn_offset + pkn_len + cryptlen, atag, 16); +} + +bool QUICDefragCrypto(const uint8_t *clean,size_t clean_len, uint8_t *defrag,size_t *defrag_len) +{ + // Crypto frame can be split into multiple chunks + // chromium randomly splits it and pads with zero/one bytes to force support the standard + // mozilla does not split + + if (*defrag_len<10) return false; + uint8_t *defrag_data = defrag+10; + size_t defrag_data_len = *defrag_len-10; + + uint8_t ft; + uint64_t offset,sz,szmax=0,zeropos=0,pos=0; + bool found=false; + + while(pos1) // 00 - padding, 01 - ping + { + if (ft!=6) return false; // dont want to know all possible frame type formats + + if (pos>=clean_len) return false; + + if ((pos+tvb_get_size(clean[pos])>=clean_len)) return false; + pos += tvb_get_varint(clean+pos, &offset); + + if ((pos+tvb_get_size(clean[pos])>clean_len)) return false; + pos += tvb_get_varint(clean+pos, &sz); + if ((pos+sz)>clean_len) return false; + + if ((offset+sz)>defrag_data_len) return false; + if (zeropos < offset) + // make sure no uninitialized gaps exist in case of not full fragment coverage + memset(defrag_data+zeropos,0,offset-zeropos); + if ((offset+sz) > zeropos) + zeropos=offset+sz; + memcpy(defrag_data+offset,clean+pos,sz); + if ((offset+sz) > szmax) szmax = offset+sz; + + found=true; + pos+=sz; + } + } + if (found) + { + defrag[0] = 6; + defrag[1] = 0; // offset + // 2..9 - length 64 bit + // +10 - data start + phton64(defrag+2,szmax); + defrag[2] |= 0xC0; // 64 bit value + *defrag_len = (size_t)(szmax+10); + } + return found; +} + +bool QUICExtractHostFromInitial(const uint8_t *data, size_t data_len, char *host, size_t len_host, bool *bDecryptOK, bool *bIsCryptoHello) +{ + if (bIsCryptoHello) *bIsCryptoHello=false; + if (bDecryptOK) *bDecryptOK=false; + + uint8_t clean[1500]; + size_t clean_len = sizeof(clean); + if (!QUICDecryptInitial(data,data_len,clean,&clean_len)) return false; + + if (bDecryptOK) *bDecryptOK=true; + + uint8_t defrag[1500]; + size_t defrag_len = sizeof(defrag); + if (!QUICDefragCrypto(clean,clean_len,defrag,&defrag_len)) return false; + + size_t hello_offset, hello_len; + if (!IsQUICCryptoHello(defrag, defrag_len, &hello_offset, &hello_len)) return false; + if (bIsCryptoHello) *bIsCryptoHello=true; + + return TLSHelloExtractHostFromHandshake(defrag + hello_offset, hello_len, host, len_host, true); +} + +bool IsQUICInitial(const uint8_t *data, size_t len) +{ + // too small packets are not likely to be initials with client hello + // long header, fixed bit + if (len < 256 || (data[0] & 0xC0)!=0xC0) return false; + + uint32_t ver = QUICExtractVersion(data,len); + if (QUICDraftVersion(ver) < 11) return false; + + // quic v1 : initial packets are 00b + // quic v2 : initial packets are 01b + if ((data[0] & 0x30) != (is_quic_v2(ver) ? 0x10 : 0x00)) return false; + + uint64_t offset=5, sz; + + // DCID. must be present + if (!data[offset] || data[offset] > QUIC_MAX_CID_LENGTH) return false; + offset += 1 + data[offset]; + + // SCID + if (data[offset] > QUIC_MAX_CID_LENGTH) return false; + offset += 1 + data[offset]; + + // token length + offset += tvb_get_varint(data + offset, &sz); + offset += sz; + if (offset >= len) return false; + + // payload length + if ((offset + tvb_get_size(data[offset])) > len) return false; + tvb_get_varint(data + offset, &sz); + offset += sz; + if (offset > len) return false; + + // client hello cannot be too small. likely ACK + return sz>=96; +} + + + +bool IsWireguardHandshakeInitiation(const uint8_t *data, size_t len) +{ + return len==148 && data[0]==1 && data[1]==0 && data[2]==0 && data[3]==0; +} +bool IsDhtD1(const uint8_t *data, size_t len) +{ + return len>=7 && data[0]=='d' && data[1]=='1' && data[len-1]=='e'; +} diff --git a/nfq/protocol.h b/nfq/protocol.h new file mode 100644 index 0000000..2264f81 --- /dev/null +++ b/nfq/protocol.h @@ -0,0 +1,59 @@ +#pragma once + +#include +#include +#include +#include "crypto/sha.h" +#include "crypto/aes-gcm.h" +#include "helpers.h" + +extern const char *http_methods[9]; +const char *HttpMethod(const uint8_t *data, size_t len); +bool IsHttp(const uint8_t *data, size_t len); +bool HttpFindHost(uint8_t **pHost,uint8_t *buf,size_t bs); +bool HttpFindHostConst(const uint8_t **pHost,const uint8_t *buf,size_t bs); +// header must be passed like this : "\nHost:" +bool HttpExtractHeader(const uint8_t *data, size_t len, const char *header, char *buf, size_t len_buf); +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); +bool IsHttpReply(const uint8_t *data, size_t len); +const char *HttpFind2ndLevelDomain(const char *host); +// must be pre-checked by IsHttpReply +int HttpReplyCode(const uint8_t *data, size_t len); +// must be pre-checked by IsHttpReply +bool HttpReplyLooksLikeDPIRedirect(const uint8_t *data, size_t len, const char *host); +enum httpreqpos { httpreqpos_none = 0, httpreqpos_method, httpreqpos_host, httpreqpos_pos }; +size_t HttpPos(enum httpreqpos tpos_type, size_t hpos_pos, const uint8_t *http, size_t sz); + +uint16_t TLSRecordDataLen(const uint8_t *data); +size_t TLSRecordLen(const uint8_t *data); +bool IsTLSRecordFull(const uint8_t *data, size_t len); +bool IsTLSClientHello(const uint8_t *data, size_t len, bool bPartialIsOK); +size_t TLSHandshakeLen(const uint8_t *data); +bool IsTLSHandshakeClientHello(const uint8_t *data, size_t len); +bool IsTLSHandshakeFull(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 bPartialIsOK); +bool TLSFindExtInHandshake(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK); +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK); +bool TLSHelloExtractHostFromHandshake(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK); +enum tlspos { tlspos_none = 0, tlspos_sni, tlspos_sniext, tlspos_pos }; +size_t TLSPos(enum tlspos tpos_type, size_t tpos_pos, const uint8_t *tls, size_t sz, uint8_t type); + +bool IsWireguardHandshakeInitiation(const uint8_t *data, size_t len); +bool IsDhtD1(const uint8_t *data, size_t len); + +#define QUIC_MAX_CID_LENGTH 20 +typedef struct quic_cid { + uint8_t len; + uint8_t cid[QUIC_MAX_CID_LENGTH]; +} quic_cid_t; + +bool IsQUICInitial(const uint8_t *data, size_t len); +bool IsQUICCryptoHello(const uint8_t *data, size_t len, size_t *hello_offset, size_t *hello_len); +bool QUICIsLongHeader(const uint8_t *data, size_t len); +uint32_t QUICExtractVersion(const uint8_t *data, size_t len); +uint8_t QUICDraftVersion(uint32_t version); +bool QUICExtractDCID(const uint8_t *data, size_t len, quic_cid_t *cid); + +bool QUICDecryptInitial(const uint8_t *data, size_t data_len, uint8_t *clean, size_t *clean_len); +bool QUICDefragCrypto(const uint8_t *clean,size_t clean_len, uint8_t *defrag,size_t *defrag_len); +bool QUICExtractHostFromInitial(const uint8_t *data, size_t data_len, char *host, size_t len_host, bool *bDecryptOK, bool *bIsCryptoHello); diff --git a/nfq/sec.c b/nfq/sec.c new file mode 100644 index 0000000..b6f8e66 --- /dev/null +++ b/nfq/sec.c @@ -0,0 +1,391 @@ +#define _GNU_SOURCE + +#include +#include +#include "sec.h" +#include +#include +#include + +#include "params.h" + +#ifdef __linux__ + +#include +#include +#include +#include +// __X32_SYSCALL_BIT defined in linux/unistd.h +#include +#include +#include + +/************ SECCOMP ************/ + +// block most of the undesired syscalls to harden against code execution +static long blocked_syscalls[] = { +#ifdef SYS_execv +SYS_execv, +#endif +SYS_execve, +#ifdef SYS_execveat +SYS_execveat, +#endif +#ifdef SYS_exec_with_loader +SYS_exec_with_loader, +#endif +#ifdef SYS_clone +SYS_clone, +#endif +#ifdef SYS_clone2 +SYS_clone2, +#endif +#ifdef SYS_clone3 +SYS_clone3, +#endif +#ifdef SYS_osf_execve +SYS_osf_execve, +#endif +#ifdef SYS_fork +SYS_fork, +#endif +#ifdef SYS_vfork +SYS_vfork, +#endif +#ifdef SYS_uselib +SYS_uselib, +#endif +#ifdef SYS_unlink +SYS_unlink, +#endif +SYS_unlinkat, +#ifdef SYS_chmod +SYS_chmod, +#endif +SYS_fchmod,SYS_fchmodat, +#ifdef SYS_chown +SYS_chown, +#endif +#ifdef SYS_chown32 +SYS_chown32, +#endif +SYS_fchown, +#ifdef SYS_fchown32 +SYS_fchown32, +#endif +#ifdef SYS_lchown +SYS_lchown, +#endif +#ifdef SYS_lchown32 +SYS_lchown32, +#endif +SYS_fchownat, +#ifdef SYS_symlink +SYS_symlink, +#endif +SYS_symlinkat, +#ifdef SYS_link +SYS_link, +#endif +SYS_linkat, +#ifdef SYS_pkey_mprotect +SYS_pkey_mprotect, +#endif +SYS_mprotect, +SYS_truncate, +#ifdef SYS_truncate64 +SYS_truncate64, +#endif +SYS_ftruncate, +#ifdef SYS_ftruncate64 +SYS_ftruncate64, +#endif +#ifdef SYS_mknod +SYS_mknod, +#endif +SYS_mknodat, +#ifdef SYS_mkdir +SYS_mkdir, +#endif +SYS_mkdirat, +#ifdef SYS_rmdir +SYS_rmdir, +#endif +#ifdef SYS_rename +SYS_rename, +#endif +#ifdef SYS_renameat2 +SYS_renameat2, +#endif +#ifdef SYS_renameat +SYS_renameat, +#endif +#ifdef SYS_readdir +SYS_readdir, +#endif +#ifdef SYS_getdents +SYS_getdents, +#endif +#ifdef SYS_getdents64 +SYS_getdents64, +#endif +#ifdef SYS_process_vm_readv +SYS_process_vm_readv, +#endif +#ifdef SYS_process_vm_writev +SYS_process_vm_writev, +#endif +#ifdef SYS_process_madvise +SYS_process_madvise, +#endif +#ifdef SYS_tkill +SYS_tkill, +#endif +#ifdef SYS_tgkill +SYS_tgkill, +#endif +SYS_kill, SYS_ptrace +}; +#define BLOCKED_SYSCALL_COUNT (sizeof(blocked_syscalls)/sizeof(*blocked_syscalls)) + +static void set_filter(struct sock_filter *filter, __u16 code, __u8 jt, __u8 jf, __u32 k) +{ + filter->code = code; + filter->jt = jt; + filter->jf = jf; + filter->k = k; +} +// deny all blocked syscalls +static bool set_seccomp(void) +{ +#ifdef __X32_SYSCALL_BIT + #define SECCOMP_PROG_SIZE (6 + BLOCKED_SYSCALL_COUNT) +#else + #define SECCOMP_PROG_SIZE (5 + BLOCKED_SYSCALL_COUNT) +#endif + struct sock_filter sockf[SECCOMP_PROG_SIZE]; + struct sock_fprog prog = { .len = SECCOMP_PROG_SIZE, .filter = sockf }; + int i,idx=0; + + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, arch_nr); +#ifdef __X32_SYSCALL_BIT + // x86 only + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 3 + BLOCKED_SYSCALL_COUNT, ARCH_NR); // fail + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JGT + BPF_K, 1 + BLOCKED_SYSCALL_COUNT, 0, __X32_SYSCALL_BIT - 1); // fail +#else + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 2 + BLOCKED_SYSCALL_COUNT, ARCH_NR); // fail + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); +#endif + +/* + // ! THIS IS NOT WORKING BECAUSE perror() in glibc dups() stderr + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 3, SYS_write); // special check for write call + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_arg(0)); // fd + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JGT + BPF_K, 2 + BLOCKED_SYSCALL_COUNT, 0, 2); // 1 - stdout, 2 - stderr. greater are bad + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); // reload syscall_nr +*/ + for(i=0 ; i= 0; +} + +bool sec_harden(void) +{ + if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) + { + DLOG_PERROR("PR_SET_NO_NEW_PRIVS(prctl)"); + return false; + } +#if ARCH_NR!=0 + if (!set_seccomp()) + { + DLOG_PERROR("seccomp"); + if (errno==EINVAL) DLOG_ERR("seccomp: this can be safely ignored if kernel does not support seccomp\n"); + return false; + } +#endif + return true; +} + + + + +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(void) +{ + 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(void) +{ + uint64_t caps = (1< +#include + +#ifdef __linux__ + +#include +#include +#include + +bool checkpcap(uint64_t caps); +bool setpcap(uint64_t caps); +int getmaxcap(void); +bool dropcaps(void); + +#define syscall_nr (offsetof(struct seccomp_data, nr)) +#define arch_nr (offsetof(struct seccomp_data, arch)) +#define syscall_arg(x) (offsetof(struct seccomp_data, args[x])) + +#if defined(__aarch64__) + +# define ARCH_NR AUDIT_ARCH_AARCH64 + +#elif defined(__amd64__) + +# define ARCH_NR AUDIT_ARCH_X86_64 + +#elif defined(__arm__) && (defined(__ARM_EABI__) || defined(__thumb__)) + +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_ARM +# else +# define ARCH_NR AUDIT_ARCH_ARMEB +# endif + +#elif defined(__i386__) + +# define ARCH_NR AUDIT_ARCH_I386 + +#elif defined(__mips__) + +#if _MIPS_SIM == _MIPS_SIM_ABI32 +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_MIPSEL +# else +# define ARCH_NR AUDIT_ARCH_MIPS +# endif +#elif _MIPS_SIM == _MIPS_SIM_ABI64 +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_MIPSEL64 +# else +# define ARCH_NR AUDIT_ARCH_MIPS64 +# endif +#else +# error "Unsupported mips abi" +#endif + +#elif defined(__PPC64__) + +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_PPC64LE +# else +# define ARCH_NR AUDIT_ARCH_PPC64 +# endif + +#elif defined(__PPC__) + +# define ARCH_NR AUDIT_ARCH_PPC + +#elif __riscv && __riscv_xlen == 64 + +# define ARCH_NR AUDIT_ARCH_RISCV64 + +#else + +# error "Platform does not support seccomp filter yet" + +#endif + +#endif + + +#ifndef __CYGWIN__ +bool sec_harden(void); +bool can_drop_root(void); +bool droproot(uid_t uid, gid_t gid); +void print_id(void); +#endif + +void daemonize(void); +bool writepid(const char *filename); diff --git a/nfq/uthash.h b/nfq/uthash.h new file mode 100644 index 0000000..9a396b6 --- /dev/null +++ b/nfq/uthash.h @@ -0,0 +1,1136 @@ +/* +Copyright (c) 2003-2021, Troy D. Hanson http://troydhanson.github.io/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.3.0 + +#include /* memcmp, memset, strlen */ +#include /* ptrdiff_t */ +#include /* exit */ + +#if defined(HASH_DEFINE_OWN_STDINT) && HASH_DEFINE_OWN_STDINT +/* This codepath is provided for backward compatibility, but I plan to remove it. */ +#warning "HASH_DEFINE_OWN_STDINT is deprecated; please use HASH_NO_STDINT instead" +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#elif defined(HASH_NO_STDINT) && HASH_NO_STDINT +#else +#include /* uint8_t, uint32_t */ +#endif + +/* 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 + +#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_strlen +#define uthash_strlen(s) strlen(s) +#endif + +#ifndef HASH_FUNCTION +#define HASH_FUNCTION(keyptr,keylen,hashv) HASH_JEN(keyptr, keylen, hashv) +#endif + +#ifndef HASH_KEYCMP +#define HASH_KEYCMP(a,b,n) memcmp(a,b,n) +#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*)(void*)(((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_FUNCTION(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 { \ + (out) = NULL; \ + if (head) { \ + 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 = (const void*) (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 +#include /* fprintf, stderr */ +#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 + +/* 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]; /* FALLTHROUGH */ \ + default: ; \ + } \ + 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; \ + break; \ + default: ; \ + } \ + \ + /* 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) + +/* 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 (HASH_KEYCMP((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( \ + sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ + if (!_he_new_buckets) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero(_he_new_buckets, \ + sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ + (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++; \ + if (_he_newbkt->count > _he_newbkt->expand_mult * (tbl)->ideal_chain_maxlen) { \ + _he_newbkt->expand_mult++; \ + } \ + } \ + _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*)(void*)(((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 */ + const 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/nfq/win.c b/nfq/win.c new file mode 100644 index 0000000..e135324 --- /dev/null +++ b/nfq/win.c @@ -0,0 +1,80 @@ +#ifdef __CYGWIN__ + +#include + +#include "win.h" +#include "nfqws.h" + +#define SERVICE_NAME "winws" + +static SERVICE_STATUS ServiceStatus; +static SERVICE_STATUS_HANDLE hStatus = NULL; +static int service_argc = 0; +static char **service_argv = NULL; + +void service_main(int argc __attribute__((unused)), char *argv[] __attribute__((unused))); + +bool service_run(int argc, char *argv[]) +{ + SERVICE_TABLE_ENTRY ServiceTable[] = { + {SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)service_main}, + {NULL, NULL} + }; + + service_argc = argc; + service_argv = argv; + + return StartServiceCtrlDispatcherA(ServiceTable); +} + +static void service_set_status(DWORD state) +{ + ServiceStatus.dwCurrentState = state; + SetServiceStatus(hStatus, &ServiceStatus); +} + +// Control handler function +void service_controlhandler(DWORD request) +{ + switch (request) + { + case SERVICE_CONTROL_STOP: + case SERVICE_CONTROL_SHUTDOWN: + bQuit = true; + ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING; + break; + } + SetServiceStatus(hStatus, &ServiceStatus); +} + +void service_main(int argc __attribute__((unused)), char *argv[] __attribute__((unused))) +{ + ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + ServiceStatus.dwCurrentState = SERVICE_RUNNING; + ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + ServiceStatus.dwWin32ExitCode = 0; + ServiceStatus.dwServiceSpecificExitCode = 0; + ServiceStatus.dwCheckPoint = 1; + ServiceStatus.dwWaitHint = 0; + + hStatus = RegisterServiceCtrlHandlerA( + SERVICE_NAME, + (LPHANDLER_FUNCTION)service_controlhandler); + if (hStatus == (SERVICE_STATUS_HANDLE)0) + { + // Registering Control Handler failed + return; + } + + SetServiceStatus(hStatus, &ServiceStatus); + + // Calling main with saved argc & argv + ServiceStatus.dwWin32ExitCode = (DWORD)main(service_argc, service_argv); + + ServiceStatus.dwCurrentState = SERVICE_STOPPED; + SetServiceStatus(hStatus, &ServiceStatus); + return; +} + + +#endif diff --git a/nfq/win.h b/nfq/win.h new file mode 100644 index 0000000..13a0980 --- /dev/null +++ b/nfq/win.h @@ -0,0 +1,10 @@ +#pragma once + +#ifdef __CYGWIN__ + +#include + +bool service_run(); + +#endif + diff --git a/nfq/windivert/libwindivert.a b/nfq/windivert/libwindivert.a new file mode 100644 index 0000000000000000000000000000000000000000..99f3d351997ac4994a5e13b50989b6340a2f705f GIT binary patch literal 25372 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. + * + * WinDivert is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program 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 General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __WINDIVERT_H +#define __WINDIVERT_H + +#ifndef WINDIVERT_KERNEL +#include +#endif /* WINDIVERT_KERNEL */ + +#ifndef WINDIVERTEXPORT +#define WINDIVERTEXPORT extern __declspec(dllimport) +#endif /* WINDIVERTEXPORT */ + +#ifdef __MINGW32__ +#define __in +#define __in_opt +#define __out +#define __out_opt +#define __inout +#define __inout_opt +#include +#define INT8 int8_t +#define UINT8 uint8_t +#define INT16 int16_t +#define UINT16 uint16_t +#define INT32 int32_t +#define UINT32 uint32_t +#define INT64 int64_t +#define UINT64 uint64_t +#endif /* __MINGW32__ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************/ +/* WINDIVERT API */ +/****************************************************************************/ + +/* + * WinDivert layers. + */ +typedef enum +{ + WINDIVERT_LAYER_NETWORK = 0, /* Network layer. */ + WINDIVERT_LAYER_NETWORK_FORWARD = 1,/* Network layer (forwarded packets) */ + WINDIVERT_LAYER_FLOW = 2, /* Flow layer. */ + WINDIVERT_LAYER_SOCKET = 3, /* Socket layer. */ + WINDIVERT_LAYER_REFLECT = 4, /* Reflect layer. */ +} WINDIVERT_LAYER, *PWINDIVERT_LAYER; + +/* + * WinDivert NETWORK and NETWORK_FORWARD layer data. + */ +typedef struct +{ + UINT32 IfIdx; /* Packet's interface index. */ + UINT32 SubIfIdx; /* Packet's sub-interface index. */ +} WINDIVERT_DATA_NETWORK, *PWINDIVERT_DATA_NETWORK; + +/* + * WinDivert FLOW layer data. + */ +typedef struct +{ + UINT64 EndpointId; /* Endpoint ID. */ + UINT64 ParentEndpointId; /* Parent endpoint ID. */ + UINT32 ProcessId; /* Process ID. */ + UINT32 LocalAddr[4]; /* Local address. */ + UINT32 RemoteAddr[4]; /* Remote address. */ + UINT16 LocalPort; /* Local port. */ + UINT16 RemotePort; /* Remote port. */ + UINT8 Protocol; /* Protocol. */ +} WINDIVERT_DATA_FLOW, *PWINDIVERT_DATA_FLOW; + +/* + * WinDivert SOCKET layer data. + */ +typedef struct +{ + UINT64 EndpointId; /* Endpoint ID. */ + UINT64 ParentEndpointId; /* Parent Endpoint ID. */ + UINT32 ProcessId; /* Process ID. */ + UINT32 LocalAddr[4]; /* Local address. */ + UINT32 RemoteAddr[4]; /* Remote address. */ + UINT16 LocalPort; /* Local port. */ + UINT16 RemotePort; /* Remote port. */ + UINT8 Protocol; /* Protocol. */ +} WINDIVERT_DATA_SOCKET, *PWINDIVERT_DATA_SOCKET; + +/* + * WinDivert REFLECTION layer data. + */ +typedef struct +{ + INT64 Timestamp; /* Handle open time. */ + UINT32 ProcessId; /* Handle process ID. */ + WINDIVERT_LAYER Layer; /* Handle layer. */ + UINT64 Flags; /* Handle flags. */ + INT16 Priority; /* Handle priority. */ +} WINDIVERT_DATA_REFLECT, *PWINDIVERT_DATA_REFLECT; + +/* + * WinDivert address. + */ +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4201) +#endif +typedef struct +{ + INT64 Timestamp; /* Packet's timestamp. */ + UINT32 Layer:8; /* Packet's layer. */ + UINT32 Event:8; /* Packet event. */ + UINT32 Sniffed:1; /* Packet was sniffed? */ + UINT32 Outbound:1; /* Packet is outound? */ + UINT32 Loopback:1; /* Packet is loopback? */ + UINT32 Impostor:1; /* Packet is impostor? */ + UINT32 IPv6:1; /* Packet is IPv6? */ + UINT32 IPChecksum:1; /* Packet has valid IPv4 checksum? */ + UINT32 TCPChecksum:1; /* Packet has valid TCP checksum? */ + UINT32 UDPChecksum:1; /* Packet has valid UDP checksum? */ + UINT32 Reserved1:8; + UINT32 Reserved2; + union + { + WINDIVERT_DATA_NETWORK Network; /* Network layer data. */ + WINDIVERT_DATA_FLOW Flow; /* Flow layer data. */ + WINDIVERT_DATA_SOCKET Socket; /* Socket layer data. */ + WINDIVERT_DATA_REFLECT Reflect; /* Reflect layer data. */ + UINT8 Reserved3[64]; + }; +} WINDIVERT_ADDRESS, *PWINDIVERT_ADDRESS; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +/* + * WinDivert events. + */ +typedef enum +{ + WINDIVERT_EVENT_NETWORK_PACKET = 0, /* Network packet. */ + WINDIVERT_EVENT_FLOW_ESTABLISHED = 1, + /* Flow established. */ + WINDIVERT_EVENT_FLOW_DELETED = 2, /* Flow deleted. */ + WINDIVERT_EVENT_SOCKET_BIND = 3, /* Socket bind. */ + WINDIVERT_EVENT_SOCKET_CONNECT = 4, /* Socket connect. */ + WINDIVERT_EVENT_SOCKET_LISTEN = 5, /* Socket listen. */ + WINDIVERT_EVENT_SOCKET_ACCEPT = 6, /* Socket accept. */ + WINDIVERT_EVENT_SOCKET_CLOSE = 7, /* Socket close. */ + WINDIVERT_EVENT_REFLECT_OPEN = 8, /* WinDivert handle opened. */ + WINDIVERT_EVENT_REFLECT_CLOSE = 9, /* WinDivert handle closed. */ +} WINDIVERT_EVENT, *PWINDIVERT_EVENT; + +/* + * WinDivert flags. + */ +#define WINDIVERT_FLAG_SNIFF 0x0001 +#define WINDIVERT_FLAG_DROP 0x0002 +#define WINDIVERT_FLAG_RECV_ONLY 0x0004 +#define WINDIVERT_FLAG_READ_ONLY WINDIVERT_FLAG_RECV_ONLY +#define WINDIVERT_FLAG_SEND_ONLY 0x0008 +#define WINDIVERT_FLAG_WRITE_ONLY WINDIVERT_FLAG_SEND_ONLY +#define WINDIVERT_FLAG_NO_INSTALL 0x0010 +#define WINDIVERT_FLAG_FRAGMENTS 0x0020 + +/* + * WinDivert parameters. + */ +typedef enum +{ + WINDIVERT_PARAM_QUEUE_LENGTH = 0, /* Packet queue length. */ + WINDIVERT_PARAM_QUEUE_TIME = 1, /* Packet queue time. */ + WINDIVERT_PARAM_QUEUE_SIZE = 2, /* Packet queue size. */ + WINDIVERT_PARAM_VERSION_MAJOR = 3, /* Driver version (major). */ + WINDIVERT_PARAM_VERSION_MINOR = 4, /* Driver version (minor). */ +} WINDIVERT_PARAM, *PWINDIVERT_PARAM; +#define WINDIVERT_PARAM_MAX WINDIVERT_PARAM_VERSION_MINOR + +/* + * WinDivert shutdown parameter. + */ +typedef enum +{ + WINDIVERT_SHUTDOWN_RECV = 0x1, /* Shutdown recv. */ + WINDIVERT_SHUTDOWN_SEND = 0x2, /* Shutdown send. */ + WINDIVERT_SHUTDOWN_BOTH = 0x3, /* Shutdown recv and send. */ +} WINDIVERT_SHUTDOWN, *PWINDIVERT_SHUTDOWN; +#define WINDIVERT_SHUTDOWN_MAX WINDIVERT_SHUTDOWN_BOTH + +#ifndef WINDIVERT_KERNEL + +/* + * Open a WinDivert handle. + */ +WINDIVERTEXPORT HANDLE WinDivertOpen( + __in const char *filter, + __in WINDIVERT_LAYER layer, + __in INT16 priority, + __in UINT64 flags); + +/* + * Receive (read) a packet from a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertRecv( + __in HANDLE handle, + __out_opt VOID *pPacket, + __in UINT packetLen, + __out_opt UINT *pRecvLen, + __out_opt WINDIVERT_ADDRESS *pAddr); + +/* + * Receive (read) a packet from a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertRecvEx( + __in HANDLE handle, + __out_opt VOID *pPacket, + __in UINT packetLen, + __out_opt UINT *pRecvLen, + __in UINT64 flags, + __out WINDIVERT_ADDRESS *pAddr, + __inout_opt UINT *pAddrLen, + __inout_opt LPOVERLAPPED lpOverlapped); + +/* + * Send (write/inject) a packet to a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertSend( + __in HANDLE handle, + __in const VOID *pPacket, + __in UINT packetLen, + __out_opt UINT *pSendLen, + __in const WINDIVERT_ADDRESS *pAddr); + +/* + * Send (write/inject) a packet to a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertSendEx( + __in HANDLE handle, + __in const VOID *pPacket, + __in UINT packetLen, + __out_opt UINT *pSendLen, + __in UINT64 flags, + __in const WINDIVERT_ADDRESS *pAddr, + __in UINT addrLen, + __inout_opt LPOVERLAPPED lpOverlapped); + +/* + * Shutdown a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertShutdown( + __in HANDLE handle, + __in WINDIVERT_SHUTDOWN how); + +/* + * Close a WinDivert handle. + */ +WINDIVERTEXPORT BOOL WinDivertClose( + __in HANDLE handle); + +/* + * Set a WinDivert handle parameter. + */ +WINDIVERTEXPORT BOOL WinDivertSetParam( + __in HANDLE handle, + __in WINDIVERT_PARAM param, + __in UINT64 value); + +/* + * Get a WinDivert handle parameter. + */ +WINDIVERTEXPORT BOOL WinDivertGetParam( + __in HANDLE handle, + __in WINDIVERT_PARAM param, + __out UINT64 *pValue); + +#endif /* WINDIVERT_KERNEL */ + +/* + * WinDivert constants. + */ +#define WINDIVERT_PRIORITY_HIGHEST 30000 +#define WINDIVERT_PRIORITY_LOWEST (-WINDIVERT_PRIORITY_HIGHEST) +#define WINDIVERT_PARAM_QUEUE_LENGTH_DEFAULT 4096 +#define WINDIVERT_PARAM_QUEUE_LENGTH_MIN 32 +#define WINDIVERT_PARAM_QUEUE_LENGTH_MAX 16384 +#define WINDIVERT_PARAM_QUEUE_TIME_DEFAULT 2000 /* 2s */ +#define WINDIVERT_PARAM_QUEUE_TIME_MIN 100 /* 100ms */ +#define WINDIVERT_PARAM_QUEUE_TIME_MAX 16000 /* 16s */ +#define WINDIVERT_PARAM_QUEUE_SIZE_DEFAULT 4194304 /* 4MB */ +#define WINDIVERT_PARAM_QUEUE_SIZE_MIN 65535 /* 64KB */ +#define WINDIVERT_PARAM_QUEUE_SIZE_MAX 33554432 /* 32MB */ +#define WINDIVERT_BATCH_MAX 0xFF /* 255 */ +#define WINDIVERT_MTU_MAX (40 + 0xFFFF) + +/****************************************************************************/ +/* WINDIVERT HELPER API */ +/****************************************************************************/ + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4214) +#endif + +/* + * IPv4/IPv6/ICMP/ICMPv6/TCP/UDP header definitions. + */ +typedef struct +{ + UINT8 HdrLength:4; + UINT8 Version:4; + UINT8 TOS; + UINT16 Length; + UINT16 Id; + UINT16 FragOff0; + UINT8 TTL; + UINT8 Protocol; + UINT16 Checksum; + UINT32 SrcAddr; + UINT32 DstAddr; +} WINDIVERT_IPHDR, *PWINDIVERT_IPHDR; + +#define WINDIVERT_IPHDR_GET_FRAGOFF(hdr) \ + (((hdr)->FragOff0) & 0xFF1F) +#define WINDIVERT_IPHDR_GET_MF(hdr) \ + ((((hdr)->FragOff0) & 0x0020) != 0) +#define WINDIVERT_IPHDR_GET_DF(hdr) \ + ((((hdr)->FragOff0) & 0x0040) != 0) +#define WINDIVERT_IPHDR_GET_RESERVED(hdr) \ + ((((hdr)->FragOff0) & 0x0080) != 0) + +#define WINDIVERT_IPHDR_SET_FRAGOFF(hdr, val) \ + do \ + { \ + (hdr)->FragOff0 = (((hdr)->FragOff0) & 0x00E0) | \ + ((val) & 0xFF1F); \ + } \ + while (FALSE) +#define WINDIVERT_IPHDR_SET_MF(hdr, val) \ + do \ + { \ + (hdr)->FragOff0 = (((hdr)->FragOff0) & 0xFFDF) | \ + (((val) & 0x0001) << 5); \ + } \ + while (FALSE) +#define WINDIVERT_IPHDR_SET_DF(hdr, val) \ + do \ + { \ + (hdr)->FragOff0 = (((hdr)->FragOff0) & 0xFFBF) | \ + (((val) & 0x0001) << 6); \ + } \ + while (FALSE) +#define WINDIVERT_IPHDR_SET_RESERVED(hdr, val) \ + do \ + { \ + (hdr)->FragOff0 = (((hdr)->FragOff0) & 0xFF7F) | \ + (((val) & 0x0001) << 7); \ + } \ + while (FALSE) + +typedef struct +{ + UINT8 TrafficClass0:4; + UINT8 Version:4; + UINT8 FlowLabel0:4; + UINT8 TrafficClass1:4; + UINT16 FlowLabel1; + UINT16 Length; + UINT8 NextHdr; + UINT8 HopLimit; + UINT32 SrcAddr[4]; + UINT32 DstAddr[4]; +} WINDIVERT_IPV6HDR, *PWINDIVERT_IPV6HDR; + +#define WINDIVERT_IPV6HDR_GET_TRAFFICCLASS(hdr) \ + ((((hdr)->TrafficClass0) << 4) | ((hdr)->TrafficClass1)) +#define WINDIVERT_IPV6HDR_GET_FLOWLABEL(hdr) \ + ((((UINT32)(hdr)->FlowLabel0) << 16) | ((UINT32)(hdr)->FlowLabel1)) + +#define WINDIVERT_IPV6HDR_SET_TRAFFICCLASS(hdr, val) \ + do \ + { \ + (hdr)->TrafficClass0 = ((UINT8)(val) >> 4); \ + (hdr)->TrafficClass1 = (UINT8)(val); \ + } \ + while (FALSE) +#define WINDIVERT_IPV6HDR_SET_FLOWLABEL(hdr, val) \ + do \ + { \ + (hdr)->FlowLabel0 = (UINT8)((val) >> 16); \ + (hdr)->FlowLabel1 = (UINT16)(val); \ + } \ + while (FALSE) + +typedef struct +{ + UINT8 Type; + UINT8 Code; + UINT16 Checksum; + UINT32 Body; +} WINDIVERT_ICMPHDR, *PWINDIVERT_ICMPHDR; + +typedef struct +{ + UINT8 Type; + UINT8 Code; + UINT16 Checksum; + UINT32 Body; +} WINDIVERT_ICMPV6HDR, *PWINDIVERT_ICMPV6HDR; + +typedef struct +{ + UINT16 SrcPort; + UINT16 DstPort; + UINT32 SeqNum; + UINT32 AckNum; + UINT16 Reserved1:4; + UINT16 HdrLength:4; + UINT16 Fin:1; + UINT16 Syn:1; + UINT16 Rst:1; + UINT16 Psh:1; + UINT16 Ack:1; + UINT16 Urg:1; + UINT16 Reserved2:2; + UINT16 Window; + UINT16 Checksum; + UINT16 UrgPtr; +} WINDIVERT_TCPHDR, *PWINDIVERT_TCPHDR; + +typedef struct +{ + UINT16 SrcPort; + UINT16 DstPort; + UINT16 Length; + UINT16 Checksum; +} WINDIVERT_UDPHDR, *PWINDIVERT_UDPHDR; + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +/* + * Flags for WinDivertHelperCalcChecksums() + */ +#define WINDIVERT_HELPER_NO_IP_CHECKSUM 1 +#define WINDIVERT_HELPER_NO_ICMP_CHECKSUM 2 +#define WINDIVERT_HELPER_NO_ICMPV6_CHECKSUM 4 +#define WINDIVERT_HELPER_NO_TCP_CHECKSUM 8 +#define WINDIVERT_HELPER_NO_UDP_CHECKSUM 16 + +#ifndef WINDIVERT_KERNEL + +/* + * Hash a packet. + */ +WINDIVERTEXPORT UINT64 WinDivertHelperHashPacket( + __in const VOID *pPacket, + __in UINT packetLen, + __in UINT64 seed +#ifdef __cplusplus + = 0 +#endif +); + +/* + * Parse IPv4/IPv6/ICMP/ICMPv6/TCP/UDP headers from a raw packet. + */ +WINDIVERTEXPORT BOOL WinDivertHelperParsePacket( + __in const VOID *pPacket, + __in UINT packetLen, + __out_opt PWINDIVERT_IPHDR *ppIpHdr, + __out_opt PWINDIVERT_IPV6HDR *ppIpv6Hdr, + __out_opt UINT8 *pProtocol, + __out_opt PWINDIVERT_ICMPHDR *ppIcmpHdr, + __out_opt PWINDIVERT_ICMPV6HDR *ppIcmpv6Hdr, + __out_opt PWINDIVERT_TCPHDR *ppTcpHdr, + __out_opt PWINDIVERT_UDPHDR *ppUdpHdr, + __out_opt PVOID *ppData, + __out_opt UINT *pDataLen, + __out_opt PVOID *ppNext, + __out_opt UINT *pNextLen); + +/* + * Parse an IPv4 address. + */ +WINDIVERTEXPORT BOOL WinDivertHelperParseIPv4Address( + __in const char *addrStr, + __out_opt UINT32 *pAddr); + +/* + * Parse an IPv6 address. + */ +WINDIVERTEXPORT BOOL WinDivertHelperParseIPv6Address( + __in const char *addrStr, + __out_opt UINT32 *pAddr); + +/* + * Format an IPv4 address. + */ +WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv4Address( + __in UINT32 addr, + __out char *buffer, + __in UINT bufLen); + +/* + * Format an IPv6 address. + */ +WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv6Address( + __in const UINT32 *pAddr, + __out char *buffer, + __in UINT bufLen); + +/* + * Calculate IPv4/IPv6/ICMP/ICMPv6/TCP/UDP checksums. + */ +WINDIVERTEXPORT BOOL WinDivertHelperCalcChecksums( + __inout VOID *pPacket, + __in UINT packetLen, + __out_opt WINDIVERT_ADDRESS *pAddr, + __in UINT64 flags); + +/* + * Decrement the TTL/HopLimit. + */ +WINDIVERTEXPORT BOOL WinDivertHelperDecrementTTL( + __inout VOID *pPacket, + __in UINT packetLen); + +/* + * Compile the given filter string. + */ +WINDIVERTEXPORT BOOL WinDivertHelperCompileFilter( + __in const char *filter, + __in WINDIVERT_LAYER layer, + __out_opt char *object, + __in UINT objLen, + __out_opt const char **errorStr, + __out_opt UINT *errorPos); + +/* + * Evaluate the given filter string. + */ +WINDIVERTEXPORT BOOL WinDivertHelperEvalFilter( + __in const char *filter, + __in const VOID *pPacket, + __in UINT packetLen, + __in const WINDIVERT_ADDRESS *pAddr); + +/* + * Format the given filter string. + */ +WINDIVERTEXPORT BOOL WinDivertHelperFormatFilter( + __in const char *filter, + __in WINDIVERT_LAYER layer, + __out char *buffer, + __in UINT bufLen); + +/* + * Byte ordering. + */ +WINDIVERTEXPORT UINT16 WinDivertHelperNtohs( + __in UINT16 x); +WINDIVERTEXPORT UINT16 WinDivertHelperHtons( + __in UINT16 x); +WINDIVERTEXPORT UINT32 WinDivertHelperNtohl( + __in UINT32 x); +WINDIVERTEXPORT UINT32 WinDivertHelperHtonl( + __in UINT32 x); +WINDIVERTEXPORT UINT64 WinDivertHelperNtohll( + __in UINT64 x); +WINDIVERTEXPORT UINT64 WinDivertHelperHtonll( + __in UINT64 x); +WINDIVERTEXPORT void WinDivertHelperNtohIPv6Address( + __in const UINT *inAddr, + __out UINT *outAddr); +WINDIVERTEXPORT void WinDivertHelperHtonIPv6Address( + __in const UINT *inAddr, + __out UINT *outAddr); + +/* + * Old names to be removed in the next version. + */ +WINDIVERTEXPORT void WinDivertHelperNtohIpv6Address( + __in const UINT *inAddr, + __out UINT *outAddr); +WINDIVERTEXPORT void WinDivertHelperHtonIpv6Address( + __in const UINT *inAddr, + __out UINT *outAddr); + +#endif /* WINDIVERT_KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* __WINDIVERT_H */ diff --git a/nfq/winicon.o b/nfq/winicon.o new file mode 100644 index 0000000000000000000000000000000000000000..36180cb4fc5c6a4e9e9f7ad60566392f0bcbf020 GIT binary patch literal 4566 zcmeHLYitx%6h1R^XJ==2w~wW4(^6nT5Xwp^F(_hdYf_#8$}=ET!AdKo(NstaEwL>R z3EEgl#2-L35XBfpBWMirLxEt3JW7QGEsqxX0U;PI(sp;*$MM|RE^N#6>Gqf2^vr#I z=X~d!duC=ktF{Ti+p&0n(1=0W+I4GR(^o^6657k4;X&$o6G^fmJ)4goH4!A5I033- zsGmnYbrDU_?N2sXR~f+02qYhJU#jVEbr<-3v@gRVm`O4lrqT@H8D_$lr2 zP2%}uBaOm7)cy7aV@EQuk#`p=J z+Y>qMm%+kUJ#e@Vp{N4kDn1l;9+Bm5LeOlDgd42e(rjm8{wo1!@IAyu>cHx9WS`Wb zG-nmhWtpzi{bfBY%J=B@&fM)_Q)obx$(E3i=lRFBG#DAlMUsX}6aOX0-{{*91Fb`CL97j2gf2JMnKm zfMARFL!5mx@hhOHHN@|Q13z`hSJ;sP^|l@~~F;;^zV9=dlQv$%nlsQAimTfOyA#-3RWAVs3*E zzcTb8TKNy3Cp&x%#R-`~s=uT98St}EEqCFaJp)>Qy!PZ>Kl1zE57xLH#I1l?s|1VH z4Ld$Fj6Is?Fa1ijU-TZY{aeJHs>g1zoq(KNFPv{4aDE<(c)^FPU~7=#_L1;cX98Gl zhrmAA4d2!q`VjT=KkGwj#tM4=I4 zjAYqrWcyF|<@uWjmy1!1+?+>4(Y7dyI@!m%qo{(6)V4?dj#(q1(hz&IDW3Cg%aUI!g_A^xt z(D?-DS#gH&rU;#$hAUHsB;Bvx_$H1S;T(EzS8WxJca3Qw<-$G~DC9cDg?Tt6Ig$VFS=??a6s@ zioYQLC5(%U@ewYgD{MFGF`_8?wr?)QvbBZC7~}U~VmJ8kRx)E!TS@UsT)JouN}|Z` z|Jd+mUwX4y`C-=dY(LLI#+0W$iekD<`l0u}u_2dYGF^S{*@@nY(lt17f(xw{^@K6B zSF33EQ|-H;^FH)CpMpk`Y+&YL|AWts8Z zr-gC->FF#BRkPye`K;Z(5f|ppK;jFMt!LWp&7?fJiwc%u&9)6#`|d{K&Ouu9%d)tp zKb)O)$cJT=hZfhk(cbZ{u{VUjsc6rq@EysfhQ4P3rtEB~EAPD+T|eA?U8}Y!5(! QeGf;G-)cCDK046#ANCkE0{{R3 literal 0 HcmV?d00001 diff --git a/nfq/winmanifest.o b/nfq/winmanifest.o new file mode 100644 index 0000000000000000000000000000000000000000..0ca3b2f7a4c8004b7859ca5950084614780b7562 GIT binary patch literal 1364 zcmb_cQE$^Q5Kgu6(qF)%$-5gncG6@@yCDH$5)w#^!K)LWH%m!e?6lj2ka*%p@Jo5b zZt2!ZP|&oKY@N^Foxk(hC%=!PAoC|tw9yWuiFLMFTQ}3s!zik}$~`7Xz@0?oB$K@-F`bYYLEjju`-@rp;p`PI zV&n$VOVOGhX7LTU_;^09gmci~L+aI~+5<1~v*rgjzdu9GJ7>k3OcXZG!tsZVROK-67dFhV;`OfNzE(OkH>3OJH;sR2MManrz(@d32JPwayFApwKl@`Eo#_AGt&MB@%*$Bz@R_5bPhYCF_$icl%8M@*@ H6x!G?{WN_S literal 0 HcmV?d00001 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..568f67b --- /dev/null +++ b/tpws/BSDmakefile @@ -0,0 +1,12 @@ +CC ?= cc +CFLAGS += -std=gnu99 -s -O3 +LIBS = -lz -lpthread +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..52b72f7 --- /dev/null +++ b/tpws/Makefile @@ -0,0 +1,23 @@ +CC ?= gcc +CFLAGS += -std=gnu99 -O3 +CFLAGS_BSD = -Wno-address-of-packed-member +LIBS = -lz -lpthread +SRC_FILES = *.c + +all: tpws + +tpws: $(SRC_FILES) + $(CC) -s $(CFLAGS) -o $@ $(SRC_FILES) $(LDFLAGS) $(LIBS) + +bsd: $(SRC_FILES) + $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -Iepoll-shim/include -o tpws $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + +mac: $(SRC_FILES) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -Iepoll-shim/include -Imacos -o tpwsa -target arm64-apple-macos10.8 $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) $(CFLAGS_BSD) -Iepoll-shim/include -Imacos -o tpwsx -target x86_64-apple-macos10.8 $(SRC_FILES) epoll-shim/src/*.c $(LDFLAGS) $(LIBS) + strip tpwsa tpwsx + lipo -create -output tpws tpwsx tpwsa + rm -f tpwsx tpwsa + +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..ce208f7 --- /dev/null +++ b/tpws/helpers.c @@ -0,0 +1,289 @@ +#define _GNU_SOURCE + +#include "helpers.h" +#include +#include +#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; +} + +bool append_to_list_file(const char *filename, const char *s) +{ + FILE *F = fopen(filename,"at"); + if (!F) return false; + bool bOK = fprintf(F,"%s\n",s)>0; + fclose(F); + return bOK; +} + +void ntop46(const struct sockaddr *sa, char *str, size_t len) +{ + if (!len) return; + *str=0; + switch (sa->sa_family) + { + case AF_INET: + inet_ntop(sa->sa_family, &((struct sockaddr_in*)sa)->sin_addr, str, len); + break; + case AF_INET6: + inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, str, len); + break; + default: + snprintf(str,len,"UNKNOWN_FAMILY_%d",sa->sa_family); + } +} +void ntop46_port(const struct sockaddr *sa, char *str, size_t len) +{ + char ip[40]; + ntop46(sa,ip,sizeof(ip)); + switch (sa->sa_family) + { + case AF_INET: + snprintf(str,len,"%s:%u",ip,ntohs(((struct sockaddr_in*)sa)->sin_port)); + break; + case AF_INET6: + snprintf(str,len,"[%s]:%u",ip,ntohs(((struct sockaddr_in6*)sa)->sin6_port)); + break; + default: + snprintf(str,len,"%s",ip); + } +} +void print_sockaddr(const struct sockaddr *sa) +{ + char ip_port[48]; + + ntop46_port(sa,ip_port,sizeof(ip_port)); + printf("%s",ip_port); +} + + +// -1 = error, 0 = not local, 1 = local +bool check_local_ip(const struct sockaddr *saddr) +{ + struct ifaddrs *addrs,*a; + + if (is_localnet(saddr)) + return true; + + 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 = IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr); + 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; +} + +void sacopy(struct sockaddr_storage *sa_dest, const struct sockaddr *sa) +{ + switch(sa->sa_family) + { + case AF_INET: + memcpy(sa_dest,sa,sizeof(struct sockaddr_in)); + break; + case AF_INET6: + memcpy(sa_dest,sa,sizeof(struct sockaddr_in6)); + break; + default: + sa_dest->ss_family = 0; + } +} + +bool is_localnet(const struct sockaddr *a) +{ + // match 127.0.0.0/8, 0.0.0.0, ::1, ::0, :ffff:127.0.0.0/104, :ffff:0.0.0.0 + return (a->sa_family==AF_INET && (IN_LOOPBACK(ntohl(((struct sockaddr_in *)a)->sin_addr.s_addr)) || + INADDR_ANY == ntohl((((struct sockaddr_in *)a)->sin_addr.s_addr)))) || + (a->sa_family==AF_INET6 && (IN6_IS_ADDR_LOOPBACK(&((struct sockaddr_in6 *)a)->sin6_addr) || + IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)a)->sin6_addr) || + (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)a)->sin6_addr) && (IN_LOOPBACK(ntohl(IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr))) || + INADDR_ANY == ntohl(IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr)))))); +} +bool is_linklocal(const struct sockaddr_in6 *a) +{ + // fe80::/10 + return a->sin6_addr.s6_addr[0]==0xFE && (a->sin6_addr.s6_addr[1] & 0xC0)==0x80; +} +bool is_private6(const struct sockaddr_in6* a) +{ + // fc00::/7 + return (a->sin6_addr.s6_addr[0] & 0xFE) == 0xFC; +} + + + +bool set_keepalive(int fd) +{ + int yes=1; + return setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(int))!=-1; +} +bool set_ttl(int fd, int ttl) +{ + return setsockopt(fd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl))!=-1; +} +bool set_hl(int fd, int hl) +{ + return setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &hl, sizeof(hl))!=-1; +} +bool set_ttl_hl(int fd, int ttl) +{ + bool b1,b2; + // try to set both but one may fail if family is wrong + b1=set_ttl(fd, ttl); + b2=set_hl(fd, ttl); + return b1 || b2; +} +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; +} + +int fprint_localtime(FILE *F) +{ + struct tm t; + time_t now; + + time(&now); + localtime_r(&now,&t); + return fprintf(F, "%02d.%02d.%04d %02d:%02d:%02d", t.tm_mday, t.tm_mon + 1, t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec); +} + +time_t file_mod_time(const char *filename) +{ + struct stat st; + return stat(filename,&st)==-1 ? 0 : st.st_mtime; +} + +bool pf_in_range(uint16_t port, const port_filter *pf) +{ + return port && (((!pf->from && !pf->to) || (port>=pf->from && port<=pf->to)) ^ pf->neg); +} +bool pf_parse(const char *s, port_filter *pf) +{ + unsigned int v1,v2; + char c; + + if (!s) return false; + if (*s=='~') + { + pf->neg=true; + s++; + } + else + pf->neg=false; + if (sscanf(s,"%u-%u%c",&v1,&v2,&c)==2) + { + if (v1>65535 || v2>65535 || v1>v2) return false; + pf->from=(uint16_t)v1; + pf->to=(uint16_t)v2; + } + else if (sscanf(s,"%u%c",&v1,&c)==1) + { + if (v1>65535) return false; + pf->to=pf->from=(uint16_t)v1; + } + else + return false; + // deny all case + if (!pf->from && !pf->to) pf->neg=true; + return true; +} +bool pf_is_empty(const port_filter *pf) +{ + return !pf->neg && !pf->from && !pf->to; +} diff --git a/tpws/helpers.h b/tpws/helpers.h new file mode 100644 index 0000000..17ace35 --- /dev/null +++ b/tpws/helpers.h @@ -0,0 +1,73 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +char *strncasestr(const char *s,const char *find, size_t slen); + +bool append_to_list_file(const char *filename, const char *s); + +void ntop46(const struct sockaddr *sa, char *str, size_t len); +void ntop46_port(const struct sockaddr *sa, char *str, size_t len); +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); + +void sacopy(struct sockaddr_storage *sa_dest, const struct sockaddr *sa); + +bool is_localnet(const struct sockaddr *a); +bool is_linklocal(const struct sockaddr_in6* a); +bool is_private6(const struct sockaddr_in6* a); + +bool set_keepalive(int fd); +bool set_ttl(int fd, int ttl); +bool set_hl(int fd, int hl); +bool set_ttl_hl(int fd, int ttl); +int get_so_error(int fd); + +// alignment-safe functions +static inline uint16_t pntoh16(const uint8_t *p) { + return ((uint16_t)p[0] << 8) | (uint16_t)p[1]; +} +static inline void phton16(uint8_t *p, uint16_t v) { + p[0] = (uint8_t)(v>>8); + p[1] = (uint8_t)v; +} + +int fprint_localtime(FILE *F); + +time_t file_mod_time(const char *filename); + +typedef struct +{ + uint16_t from,to; + bool neg; +} port_filter; +bool pf_in_range(uint16_t port, const port_filter *pf); +bool pf_parse(const char *s, port_filter *pf); +bool pf_is_empty(const port_filter *pf); + +#ifndef IN_LOOPBACK +#define IN_LOOPBACK(a) ((((uint32_t) (a)) & 0xff000000) == 0x7f000000) +#endif + +#ifdef __GNUC__ +#define IN6_EXTRACT_MAP4(a) \ + (__extension__ \ + ({ const struct in6_addr *__a = (const struct in6_addr *) (a); \ + (((const uint32_t *) (__a))[3]); })) +#else +#define IN6_EXTRACT_MAP4(a) (((const uint32_t *) (a))[3]) +#endif diff --git a/tpws/hostlist.c b/tpws/hostlist.c new file mode 100644 index 0000000..7a8b8b4 --- /dev/null +++ b/tpws/hostlist.c @@ -0,0 +1,206 @@ +#include +#include "hostlist.h" +#include "gzip.h" +#include "params.h" +#include "helpers.h" + +// inplace tolower() and add to pool +static bool addpool(strpool **hostlist, char **s, const char *end) +{ + char *p; + + // advance until eol lowering all chars + for (p = *s; pstr)) return false; + } + return true; +} + +bool NonEmptyHostlist(strpool **hostlist) +{ + // add impossible hostname if the list is empty + return *hostlist ? true : StrPoolAddStrLen(hostlist, "@&()", 4); +} + + +bool SearchHostList(strpool *hostlist, const char *host) +{ + if (hostlist) + { + const char *p = host; + bool bInHostList; + while (p) + { + bInHostList = StrPoolCheckStr(hostlist, p); + VPRINT("Hostlist check for %s : %s\n", p, bInHostList ? "positive" : "negative"); + if (bInHostList) return true; + p = strchr(p, '.'); + if (p) p++; + } + } + return false; +} + +// return : true = apply fooling, false = do not apply +static bool HostlistCheck_(strpool *hostlist, strpool *hostlist_exclude, const char *host, bool *excluded) +{ + if (excluded) *excluded = false; + if (hostlist_exclude) + { + VPRINT("Checking exclude hostlist\n"); + if (SearchHostList(hostlist_exclude, host)) + { + if (excluded) *excluded = true; + return false; + } + } + if (hostlist) + { + VPRINT("Checking include hostlist\n"); + return SearchHostList(hostlist, host); + } + return true; +} + +static bool LoadIncludeHostListsForProfile(struct desync_profile *dp) +{ + if (!LoadHostLists(&dp->hostlist, &dp->hostlist_files)) + return false; + if (*dp->hostlist_auto_filename) + { + dp->hostlist_auto_mod_time = file_mod_time(dp->hostlist_auto_filename); + NonEmptyHostlist(&dp->hostlist); + } + return true; +} + +// return : true = apply fooling, false = do not apply +bool HostlistCheck(struct desync_profile *dp, const char *host, bool *excluded) +{ + VPRINT("* Hostlist check for profile %d\n",dp->n); + if (*dp->hostlist_auto_filename) + { + time_t t = file_mod_time(dp->hostlist_auto_filename); + if (t!=dp->hostlist_auto_mod_time) + { + DLOG_CONDUP("Autohostlist '%s' from profile %d was modified. Reloading include hostlists for this profile.\n",dp->hostlist_auto_filename, dp->n); + if (!LoadIncludeHostListsForProfile(dp)) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + dp->hostlist_auto_mod_time = t; + NonEmptyHostlist(&dp->hostlist); + } + } + return HostlistCheck_(dp->hostlist, dp->hostlist_exclude, host, excluded); +} + +bool LoadIncludeHostLists() +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + if (!LoadIncludeHostListsForProfile(&dpl->dp)) + return false; + return true; +} +bool LoadExcludeHostLists() +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + if (!LoadHostLists(&dpl->dp.hostlist_exclude, &dpl->dp.hostlist_exclude_files)) + return false; + return true; +} diff --git a/tpws/hostlist.h b/tpws/hostlist.h new file mode 100644 index 0000000..0bdb94a --- /dev/null +++ b/tpws/hostlist.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include "pools.h" +#include "params.h" + +bool AppendHostList(strpool **hostlist, char *filename); +bool LoadHostLists(strpool **hostlist, struct str_list_head *file_list); +bool LoadIncludeHostLists(); +bool LoadExcludeHostLists(); +bool NonEmptyHostlist(strpool **hostlist); +bool SearchHostList(strpool *hostlist, const char *host); +// return : true = apply fooling, false = do not apply +bool HostlistCheck(struct desync_profile *dp,const char *host, bool *excluded); \ No newline at end of file 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.c b/tpws/params.c new file mode 100644 index 0000000..d31aac0 --- /dev/null +++ b/tpws/params.c @@ -0,0 +1,193 @@ +#include "params.h" +#include +#include +#include + +int DLOG_FILE(FILE *F, const char *format, va_list args) +{ + return vfprintf(F, format, args); +} +int DLOG_CON(const char *format, int syslog_priority, va_list args) +{ + return DLOG_FILE(syslog_priority==LOG_ERR ? stderr : stdout, format, args); +} +int DLOG_FILENAME(const char *filename, const char *format, va_list args) +{ + int r; + FILE *F = fopen(filename,"at"); + if (F) + { + r = DLOG_FILE(F, format, args); + fclose(F); + } + else + r=-1; + return r; +} + +static char syslog_buf[1024]; +static size_t syslog_buf_sz=0; +static void syslog_buffered(int priority, const char *format, va_list args) +{ + if (vsnprintf(syslog_buf+syslog_buf_sz,sizeof(syslog_buf)-syslog_buf_sz,format,args)>0) + { + syslog_buf_sz=strlen(syslog_buf); + // log when buffer is full or buffer ends with \n + if (syslog_buf_sz>=(sizeof(syslog_buf)-1) || (syslog_buf_sz && syslog_buf[syslog_buf_sz-1]=='\n')) + { + syslog(priority,"%s",syslog_buf); + syslog_buf_sz = 0; + } + } +} + +static int DLOG_VA(const char *format, int syslog_priority, bool condup, int level, va_list args) +{ + int r=0; + va_list args2; + + if (condup && !(params.debug>=level && params.debug_target==LOG_TARGET_CONSOLE)) + { + va_copy(args2,args); + DLOG_CON(format,syslog_priority,args2); + } + if (params.debug>=level) + { + switch(params.debug_target) + { + case LOG_TARGET_CONSOLE: + r = DLOG_CON(format,syslog_priority,args); + break; + case LOG_TARGET_FILE: + r = DLOG_FILENAME(params.debug_logfile,format,args); + break; + case LOG_TARGET_SYSLOG: + // skip newlines + syslog_buffered(syslog_priority,format,args); + r = 1; + break; + default: + break; + } + } + return r; +} + +int DLOG(const char *format, int level, ...) +{ + int r; + va_list args; + va_start(args, level); + r = DLOG_VA(format, LOG_DEBUG, false, level, args); + va_end(args); + return r; +} +int DLOG_CONDUP(const char *format, ...) +{ + int r; + va_list args; + va_start(args, format); + r = DLOG_VA(format, LOG_DEBUG, true, 1, args); + va_end(args); + return r; +} +int DLOG_ERR(const char *format, ...) +{ + int r; + va_list args; + va_start(args, format); + r = DLOG_VA(format, LOG_ERR, true, 1, args); + va_end(args); + return r; +} +int DLOG_PERROR(const char *s) +{ + return DLOG_ERR("%s: %s\n", s, strerror(errno)); +} + + +int LOG_APPEND(const char *filename, const char *format, va_list args) +{ + int r; + FILE *F = fopen(filename,"at"); + if (F) + { + fprint_localtime(F); + fprintf(F, " : "); + r = vfprintf(F, format, args); + fprintf(F, "\n"); + fclose(F); + } + else + r=-1; + return r; +} + +int HOSTLIST_DEBUGLOG_APPEND(const char *format, ...) +{ + if (*params.hostlist_auto_debuglog) + { + int r; + va_list args; + + va_start(args, format); + r = LOG_APPEND(params.hostlist_auto_debuglog, format, args); + va_end(args); + return r; + } + else + return 0; +} + + +struct desync_profile_list *dp_list_add(struct desync_profile_list_head *head) +{ + struct desync_profile_list *entry = calloc(1,sizeof(struct desync_profile_list)); + if (!entry) return NULL; + + LIST_INIT(&entry->dp.hostlist_files); + LIST_INIT(&entry->dp.hostlist_exclude_files); + entry->dp.filter_ipv4 = entry->dp.filter_ipv6 = true; + + memcpy(entry->dp.hostspell, "host", 4); // default hostspell + entry->dp.hostlist_auto_fail_threshold = HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT; + entry->dp.hostlist_auto_fail_time = HOSTLIST_AUTO_FAIL_TIME_DEFAULT; + + // add to the tail + struct desync_profile_list *dpn,*dpl=LIST_FIRST(¶ms.desync_profiles); + if (dpl) + { + while ((dpn=LIST_NEXT(dpl,next))) dpl = dpn; + LIST_INSERT_AFTER(dpl, entry, next); + } + else + LIST_INSERT_HEAD(¶ms.desync_profiles, entry, next); + + return entry; +} +static void dp_entry_destroy(struct desync_profile_list *entry) +{ + strlist_destroy(&entry->dp.hostlist_files); + strlist_destroy(&entry->dp.hostlist_exclude_files); + StrPoolDestroy(&entry->dp.hostlist_exclude); + StrPoolDestroy(&entry->dp.hostlist); + HostFailPoolDestroy(&entry->dp.hostlist_auto_fail_counters); + free(entry); +} +void dp_list_destroy(struct desync_profile_list_head *head) +{ + struct desync_profile_list *entry; + while ((entry = LIST_FIRST(head))) + { + LIST_REMOVE(entry, next); + dp_entry_destroy(entry); + } +} +bool dp_list_have_autohostlist(struct desync_profile_list_head *head) +{ + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, head, next) + if (*dpl->dp.hostlist_auto_filename) + return true; + return false; +} diff --git a/tpws/params.h b/tpws/params.h new file mode 100644 index 0000000..3764fc7 --- /dev/null +++ b/tpws/params.h @@ -0,0 +1,124 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include "tpws.h" +#include "pools.h" +#include "helpers.h" +#include "protocol.h" + +#define HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT 3 +#define HOSTLIST_AUTO_FAIL_TIME_DEFAULT 60 + +enum bindll { unwanted=0, no, prefer, force }; + +#define MAX_BINDS 32 +struct bind_s +{ + char bindaddr[64],bindiface[IF_NAMESIZE]; + bool bind_if6; + enum bindll bindll; + int bind_wait_ifup,bind_wait_ip,bind_wait_ip_ll; +}; + +enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG }; + +struct desync_profile +{ + int n; // number of the profile + + bool hostcase, hostdot, hosttab, hostnospace, methodspace, methodeol, unixeol, domcase; + int hostpad; + char hostspell[4]; + enum httpreqpos split_http_req; + enum tlspos tlsrec; + int tlsrec_pos; + enum tlspos split_tls; + bool split_any_protocol; + int split_pos; + bool disorder, disorder_http, disorder_tls; + bool oob, oob_http, oob_tls; + uint8_t oob_byte; + + int mss; + + bool tamper_start_n,tamper_cutoff_n; + unsigned int tamper_start,tamper_cutoff; + + bool filter_ipv4,filter_ipv6; + port_filter pf_tcp; + + strpool *hostlist, *hostlist_exclude; + struct str_list_head hostlist_files, hostlist_exclude_files; + char hostlist_auto_filename[PATH_MAX]; + int hostlist_auto_fail_threshold, hostlist_auto_fail_time; + time_t hostlist_auto_mod_time; + hostfail_pool *hostlist_auto_fail_counters; +}; + +struct desync_profile_list { + struct desync_profile dp; + LIST_ENTRY(desync_profile_list) next; +}; +LIST_HEAD(desync_profile_list_head, desync_profile_list); +struct desync_profile_list *dp_list_add(struct desync_profile_list_head *head); +void dp_list_destroy(struct desync_profile_list_head *head); +bool dp_list_have_autohostlist(struct desync_profile_list_head *head); + +struct params_s +{ + int debug; + enum log_target debug_target; + char debug_logfile[PATH_MAX]; + + struct bind_s binds[MAX_BINDS]; + int binds_last; + bool bind_wait_only; + uint16_t port; + struct sockaddr_in connect_bind4; + struct sockaddr_in6 connect_bind6; + char connect_bind6_ifname[IF_NAMESIZE]; + + uint8_t proxy_type; + bool no_resolve; + bool skip_nodelay; + bool droproot; + uid_t uid; + gid_t gid; + bool daemon; + char pidfile[256]; + int maxconn,resolver_threads,maxfiles,max_orphan_time; + int local_rcvbuf,local_sndbuf,remote_rcvbuf,remote_sndbuf; +#if defined(__linux__) || defined(__APPLE__) + int tcp_user_timeout_local,tcp_user_timeout_remote; +#endif + +#if defined(BSD) + bool pf_enable; +#endif +#ifdef SPLICE_PRESENT + bool nosplice; +#endif + + int ttl_default; + char hostlist_auto_debuglog[PATH_MAX]; + + bool tamper; // any tamper option is set + bool tamper_lim; // tamper-start or tamper-cutoff set in any profile + struct desync_profile_list_head desync_profiles; +}; + +extern struct params_s params; + +int DLOG(const char *format, int level, ...); +int DLOG_CONDUP(const char *format, ...); +int DLOG_ERR(const char *format, ...); +int DLOG_PERROR(const char *s); +int HOSTLIST_DEBUGLOG_APPEND(const char *format, ...); + +#define VPRINT(format, ...) DLOG(format, 1, ##__VA_ARGS__) +#define DBGPRINT(format, ...) DLOG(format, 2, ##__VA_ARGS__) diff --git a/tpws/pools.c b/tpws/pools.c new file mode 100644 index 0000000..785b04d --- /dev/null +++ b/tpws/pools.c @@ -0,0 +1,153 @@ +#define _GNU_SOURCE +#include "pools.h" +#include +#include +#include + +#define DESTROY_STR_POOL(etype, ppool) \ + etype *elem, *tmp; \ + HASH_ITER(hh, *ppool, elem, tmp) { \ + free(elem->str); \ + HASH_DEL(*ppool, elem); \ + free(elem); \ + } + +#define ADD_STR_POOL(etype, ppool, keystr, keystr_len) \ + etype *elem; \ + if (!(elem = (etype*)malloc(sizeof(etype)))) \ + return false; \ + if (!(elem->str = malloc(keystr_len + 1))) \ + { \ + free(elem); \ + return false; \ + } \ + memcpy(elem->str, keystr, keystr_len); \ + elem->str[keystr_len] = 0; \ + oom = false; \ + HASH_ADD_KEYPTR(hh, *ppool, elem->str, strlen(elem->str), elem); \ + if (oom) \ + { \ + free(elem->str); \ + free(elem); \ + return false; \ + } + + +#undef uthash_nonfatal_oom +#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) +static bool oom = false; +static void ut_oom_recover(void *elem) +{ + oom = true; +} + +// for not zero terminated strings +bool StrPoolAddStrLen(strpool **pp, const char *s, size_t slen) +{ + ADD_STR_POOL(strpool, pp, s, slen) + return true; +} +// for zero terminated strings +bool StrPoolAddStr(strpool **pp, const char *s) +{ + return StrPoolAddStrLen(pp, s, strlen(s)); +} + +bool StrPoolCheckStr(strpool *p, const char *s) +{ + strpool *elem; + HASH_FIND_STR(p, s, elem); + return elem != NULL; +} + +void StrPoolDestroy(strpool **pp) +{ + DESTROY_STR_POOL(strpool, pp) +} + + + +void HostFailPoolDestroy(hostfail_pool **pp) +{ + DESTROY_STR_POOL(hostfail_pool, pp) +} +hostfail_pool * HostFailPoolAdd(hostfail_pool **pp,const char *s,int fail_time) +{ + size_t slen = strlen(s); + ADD_STR_POOL(hostfail_pool, pp, s, slen) + elem->expire = time(NULL) + fail_time; + elem->counter = 0; + return elem; +} +hostfail_pool *HostFailPoolFind(hostfail_pool *p,const char *s) +{ + hostfail_pool *elem; + HASH_FIND_STR(p, s, elem); + return elem; +} +void HostFailPoolDel(hostfail_pool **p, hostfail_pool *elem) +{ + HASH_DEL(*p, elem); + free(elem); +} +void HostFailPoolPurge(hostfail_pool **pp) +{ + hostfail_pool *elem, *tmp; + time_t now = time(NULL); + HASH_ITER(hh, *pp, elem, tmp) + { + if (now >= elem->expire) + { + free(elem->str); + HASH_DEL(*pp, elem); + free(elem); + } + } +} +static time_t host_fail_purge_prev=0; +void HostFailPoolPurgeRateLimited(hostfail_pool **pp) +{ + time_t now = time(NULL); + // do not purge too often to save resources + if (host_fail_purge_prev != now) + { + HostFailPoolPurge(pp); + host_fail_purge_prev = now; + } +} +void HostFailPoolDump(hostfail_pool *p) +{ + hostfail_pool *elem, *tmp; + time_t now = time(NULL); + HASH_ITER(hh, p, elem, tmp) + printf("host=%s counter=%d time_left=%lld\n",elem->str,elem->counter,(long long int)elem->expire-now); +} + + +bool strlist_add(struct str_list_head *head, const char *filename) +{ + struct str_list *entry = malloc(sizeof(struct str_list)); + if (!entry) return false; + entry->str = strdup(filename); + if (!entry->str) + { + free(entry); + return false; + } + LIST_INSERT_HEAD(head, entry, next); + return true; +} +static void strlist_entry_destroy(struct str_list *entry) +{ + if (entry->str) free(entry->str); + free(entry); +} +void strlist_destroy(struct str_list_head *head) +{ + struct str_list *entry; + while ((entry = LIST_FIRST(head))) + { + LIST_REMOVE(entry, next); + strlist_entry_destroy(entry); + } +} diff --git a/tpws/pools.h b/tpws/pools.h new file mode 100644 index 0000000..ab58968 --- /dev/null +++ b/tpws/pools.h @@ -0,0 +1,46 @@ +#pragma once + +#include +#include +#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 **pp); +bool StrPoolAddStr(strpool **pp,const char *s); +bool StrPoolAddStrLen(strpool **pp,const char *s,size_t slen); +bool StrPoolCheckStr(strpool *p,const char *s); + +struct str_list { + char *str; + LIST_ENTRY(str_list) next; +}; +LIST_HEAD(str_list_head, str_list); + + +typedef struct hostfail_pool { + char *str; /* key */ + int counter; /* value */ + time_t expire; /* when to expire record (unixtime) */ + UT_hash_handle hh; /* makes this structure hashable */ +} hostfail_pool; + +void HostFailPoolDestroy(hostfail_pool **pp); +hostfail_pool *HostFailPoolAdd(hostfail_pool **pp,const char *s,int fail_time); +hostfail_pool *HostFailPoolFind(hostfail_pool *p,const char *s); +void HostFailPoolDel(hostfail_pool **pp, hostfail_pool *elem); +void HostFailPoolPurge(hostfail_pool **pp); +void HostFailPoolPurgeRateLimited(hostfail_pool **pp); +void HostFailPoolDump(hostfail_pool *p); + +bool strlist_add(struct str_list_head *head, const char *filename); +void strlist_destroy(struct str_list_head *head); diff --git a/tpws/protocol.c b/tpws/protocol.c new file mode 100644 index 0000000..190277d --- /dev/null +++ b/tpws/protocol.c @@ -0,0 +1,347 @@ +#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 }; +const char *HttpMethod(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 *method; + } + return NULL; +} +bool IsHttp(const uint8_t *data, size_t len) +{ + return !!HttpMethod(data,len); +} + +static bool IsHostAt(const uint8_t *p) +{ + return \ + p[0]=='\n' && + (p[1]=='H' || p[1]=='h') && + (p[2]=='o' || p[2]=='O') && + (p[3]=='s' || p[3]=='S') && + (p[4]=='t' || p[4]=='T') && + p[5]==':'; +} +static uint8_t *FindHostIn(uint8_t *buf, size_t bs) +{ + size_t pos; + if (bs<6) return NULL; + bs-=6; + for(pos=0;pos<=bs;pos++) + if (IsHostAt(buf+pos)) + return buf+pos; + + return NULL; +} +static const uint8_t *FindHostInConst(const uint8_t *buf, size_t bs) +{ + size_t pos; + if (bs<6) return NULL; + bs-=6; + for(pos=0;pos<=bs;pos++) + if (IsHostAt(buf+pos)) + return buf+pos; + + return NULL; +} +// pHost points to "Host: ..." +bool HttpFindHost(uint8_t **pHost,uint8_t *buf,size_t bs) +{ + if (!*pHost) + { + *pHost = FindHostIn(buf, bs); + if (*pHost) (*pHost)++; + } + return !!*pHost; +} +bool HttpFindHostConst(const uint8_t **pHost,const uint8_t *buf,size_t bs) +{ + if (!*pHost) + { + *pHost = FindHostInConst(buf, bs); + if (*pHost) (*pHost)++; + } + return !!*pHost; +} +bool IsHttpReply(const uint8_t *data, size_t len) +{ + // HTTP/1.x 200\r\n + return len>14 && !memcmp(data,"HTTP/1.",7) && (data[7]=='0' || data[7]=='1') && data[8]==' ' && + data[9]>='0' && data[9]<='9' && + data[10]>='0' && data[10]<='9' && + data[11]>='0' && data[11]<='9'; +} +int HttpReplyCode(const uint8_t *data, size_t len) +{ + return (data[9]-'0')*100 + (data[10]-'0')*10 + (data[11]-'0'); +} +bool HttpExtractHeader(const uint8_t *data, size_t len, const char *header, char *buf, size_t len_buf) +{ + const uint8_t *p, *s, *e = data + len; + + p = (uint8_t*)strncasestr((char*)data, header, len); + if (!p) return false; + p += strlen(header); + while (p < e && (*p == ' ' || *p == '\t')) p++; + s = p; + while (s < e && (*s != '\r' && *s != '\n' && *s != ' ' && *s != '\t')) s++; + if (s > p) + { + size_t slen = s - p; + if (buf && len_buf) + { + if (slen >= len_buf) slen = len_buf - 1; + for (size_t i = 0; i < slen; i++) buf[i] = tolower(p[i]); + buf[slen] = 0; + } + return true; + } + return false; +} +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host) +{ + return HttpExtractHeader(data, len, "\nHost:", host, len_host); +} +const char *HttpFind2ndLevelDomain(const char *host) +{ + const char *p=NULL; + if (*host) + { + for (p = host + strlen(host)-1; p>host && *p!='.'; p--); + if (*p=='.') for (p--; p>host && *p!='.'; p--); + if (*p=='.') p++; + } + return p; +} +// DPI redirects are global redirects to another domain +bool HttpReplyLooksLikeDPIRedirect(const uint8_t *data, size_t len, const char *host) +{ + char loc[256],*redirect_host, *p; + int code; + + if (!host || !*host) return false; + + code = HttpReplyCode(data,len); + + if ((code!=302 && code!=307) || !HttpExtractHeader(data,len,"\nLocation:",loc,sizeof(loc))) return false; + + // something like : https://censor.net/badpage.php?reason=denied&source=RKN + + if (!strncmp(loc,"http://",7)) + redirect_host=loc+7; + else if (!strncmp(loc,"https://",8)) + redirect_host=loc+8; + else + return false; + + // somethinkg like : censor.net/badpage.php?reason=denied&source=RKN + + for(p=redirect_host; *p && *p!='/' ; p++); + *p=0; + if (!*redirect_host) return false; + + // somethinkg like : censor.net + + // extract 2nd level domains + + const char *dhost = HttpFind2ndLevelDomain(host); + const char *drhost = HttpFind2ndLevelDomain(redirect_host); + + return strcasecmp(dhost, drhost)!=0; +} +size_t HttpPos(enum httpreqpos tpos_type, size_t hpos_pos, const uint8_t *http, size_t sz) +{ + const uint8_t *method, *host=NULL; + int i; + + switch(tpos_type) + { + case httpreqpos_method: + // recognize some tpws pre-applied hacks + method=http; + if (sz<10) break; + if (*method=='\n' || *method=='\r') method++; + if (*method=='\n' || *method=='\r') method++; + for (i=0;i<7;i++) if (*method>='A' && *method<='Z') method++; + if (i<3 || *method!=' ') break; + return method-http-1; + case httpreqpos_host: + if (HttpFindHostConst(&host,http,sz) && (host-http+7)= 6 && data[0] == 0x16 && data[1] == 0x03 && data[2] <= 0x03 && data[5] == 0x01 && (bPartialIsOK || TLSRecordLen(data) <= len); +} + +// bPartialIsOK=true - accept partial packets not containing the whole TLS message +bool TLSFindExtInHandshake(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK) +{ + // +0 + // u8 HandshakeType: ClientHello + // u24 Length + // u16 Version + // c[32] random + // u8 SessionIDLength + // + // u16 CipherSuitesLength + // + // u8 CompressionMethodsLength + // + // u16 ExtensionsLength + + size_t l, ll; + + l = 1 + 3 + 2 + 32; + // SessionIDLength + if (len < (l + 1)) return false; + if (!bPartialIsOK) + { + ll = data[1] << 16 | data[2] << 8 | data[3]; // HandshakeProtocol length + if (len < (ll + 4)) return false; + } + l += data[l] + 1; + // CipherSuitesLength + if (len < (l + 2)) return false; + l += pntoh16(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 = pntoh16(data); + data += 2; len -= 2; + + if (bPartialIsOK) + { + if (len < l) l = len; + } + else + { + if (len < l) return false; + } + + while (l >= 4) + { + uint16_t etype = pntoh16(data); + size_t elen = pntoh16(data + 2); + data += 4; l -= 4; + if (l < elen) break; + if (etype == type) + { + if (ext && len_ext) + { + *ext = data; + *len_ext = elen; + } + return true; + } + data += elen; l -= elen; + } + + return false; +} +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK) +{ + // +0 + // u8 ContentType: Handshake + // u16 Version: TLS1.0 + // u16 Length + size_t reclen; + if (!IsTLSClientHello(data, len, bPartialIsOK)) return false; + reclen=TLSRecordLen(data); + if (reclen= len_host) slen = len_host - 1; + for (size_t i = 0; i < slen; i++) host[i] = tolower(ext[i]); + host[slen] = 0; + } + return true; +} +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK) +{ + const uint8_t *ext; + size_t elen; + + if (!TLSFindExt(data, len, 0, &ext, &elen, bPartialIsOK)) return false; + return TLSExtractHostFromExt(ext, elen, host, len_host); +} +bool TLSHelloExtractHostFromHandshake(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK) +{ + const uint8_t *ext; + size_t elen; + + if (!TLSFindExtInHandshake(data, len, 0, &ext, &elen, bPartialIsOK)) return false; + return TLSExtractHostFromExt(ext, elen, host, len_host); +} +size_t TLSPos(enum tlspos tpos_type, size_t tpos_pos, const uint8_t *tls, size_t sz, uint8_t type) +{ + size_t elen; + const uint8_t *ext; + switch(tpos_type) + { + case tlspos_sni: + case tlspos_sniext: + if (TLSFindExt(tls,sz,0,&ext,&elen,false)) + return (tpos_type==tlspos_sni) ? ext-tls+6 : ext-tls+1; + // fall through + case tlspos_pos: + return tpos_pos +#include +#include + +extern const char *http_methods[9]; +const char *HttpMethod(const uint8_t *data, size_t len); +bool IsHttp(const uint8_t *data, size_t len); +bool HttpFindHost(uint8_t **pHost,uint8_t *buf,size_t bs); +bool HttpFindHostConst(const uint8_t **pHost,const uint8_t *buf,size_t bs); +// header must be passed like this : "\nHost:" +bool HttpExtractHeader(const uint8_t *data, size_t len, const char *header, char *buf, size_t len_buf); +bool HttpExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host); +bool IsHttpReply(const uint8_t *data, size_t len); +const char *HttpFind2ndLevelDomain(const char *host); +// must be pre-checked by IsHttpReply +int HttpReplyCode(const uint8_t *data, size_t len); +// must be pre-checked by IsHttpReply +bool HttpReplyLooksLikeDPIRedirect(const uint8_t *data, size_t len, const char *host); +enum httpreqpos { httpreqpos_none = 0, httpreqpos_method, httpreqpos_host, httpreqpos_pos }; +size_t HttpPos(enum httpreqpos tpos_type, size_t hpos_pos, const uint8_t *http, size_t sz); + +uint16_t TLSRecordDataLen(const uint8_t *data); +size_t TLSRecordLen(const uint8_t *data); +bool IsTLSRecordFull(const uint8_t *data, size_t len); +bool IsTLSClientHello(const uint8_t *data, size_t len, bool bPartialIsOK); +bool TLSFindExt(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK); +bool TLSFindExtInHandshake(const uint8_t *data, size_t len, uint16_t type, const uint8_t **ext, size_t *len_ext, bool bPartialIsOK); +bool TLSHelloExtractHost(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK); +bool TLSHelloExtractHostFromHandshake(const uint8_t *data, size_t len, char *host, size_t len_host, bool bPartialIsOK); +enum tlspos { tlspos_none = 0, tlspos_sni, tlspos_sniext, tlspos_pos }; +size_t TLSPos(enum tlspos tpos_type, size_t tpos_pos, const uint8_t *tls, size_t sz, uint8_t type); diff --git a/tpws/redirect.c b/tpws/redirect.c new file mode 100644 index 0000000..ecfc8b2 --- /dev/null +++ b/tpws/redirect.c @@ -0,0 +1,230 @@ +#include "redirect.h" +#include +#include +#include +#include +#include +#include +#include + +#include "params.h" +#include "helpers.h" + +#ifdef __linux__ + #include + #ifndef IP6T_SO_ORIGINAL_DST + #define IP6T_SO_ORIGINAL_DST 80 + #endif +#endif + + +#if defined(BSD) + +#include +#include + +static int redirector_fd=-1; + +void redir_close(void) +{ + if (redirector_fd!=-1) + { + close(redirector_fd); + redirector_fd = -1; + DBGPRINT("closed redirector\n"); + } +} +static bool redir_open_private(const char *fname, int flags) +{ + redir_close(); + redirector_fd = open(fname, flags); + if (redirector_fd < 0) + { + DLOG_PERROR("redir_openv_private"); + return false; + } + DBGPRINT("opened redirector %s\n",fname); + return true; +} +bool redir_init(void) +{ + return params.pf_enable ? redir_open_private("/dev/pf", O_RDONLY) : true; +} + +static bool destination_from_pf(const struct sockaddr *accept_sa, struct sockaddr_storage *orig_dst) +{ + struct pfioc_natlook nl; + struct sockaddr_storage asa2; + + if (redirector_fd==-1) return false; + + if (params.debug>=2) + { + char s[48],s2[48]; + *s=0; ntop46_port(accept_sa, s, sizeof(s)); + *s2=0; ntop46_port((struct sockaddr *)orig_dst, s2, sizeof(s2)); + DBGPRINT("destination_from_pf %s %s\n",s,s2); + } + + saconvmapped(orig_dst); + if (accept_sa->sa_family==AF_INET6 && orig_dst->ss_family==AF_INET) + { + memcpy(&asa2,accept_sa,sizeof(struct sockaddr_in6)); + saconvmapped(&asa2); + accept_sa = (struct sockaddr*)&asa2; + } + + if (params.debug>=2) + { + char s[48],s2[48]; + *s=0; ntop46_port(accept_sa, s, sizeof(s)); + *s2=0; ntop46_port((struct sockaddr *)orig_dst, s2, sizeof(s2)); + DBGPRINT("destination_from_pf (saconvmapped) %s %s\n",s,s2); + } + + if (accept_sa->sa_family!=orig_dst->ss_family) + { + DBGPRINT("accept_sa and orig_dst sa_family mismatch : %d %d\n", 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.daddr.v4.s_addr = sin->sin_addr.s_addr; + nl.saddr.v4.s_addr = ((struct sockaddr_in*)accept_sa)->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.daddr.v6 = sin6->sin6_addr; + nl.saddr.v6 = ((struct sockaddr_in6*)accept_sa)->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\n",orig_dst->ss_family); + return false; + } + + if (ioctl(redirector_fd, DIOCNATLOOK, &nl) < 0) + { + DLOG_PERROR("ioctl(DIOCNATLOOK) failed"); + return false; + } + DBGPRINT("destination_from_pf : got orig dest addr from pf\n"); + + 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\n",nl.af); + return false; + } + + return true; +} + + +#else + +bool redir_init(void) {return true;} +void redir_close(void) {}; + +#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 !\n"); +#endif + // TPROXY : socket is bound to original destination + r=getsockname(sockfd, (struct sockaddr*) orig_dst, &addrlen); + if (r<0) + { + DLOG_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 BSD + if (params.pf_enable && !destination_from_pf(accept_sa, orig_dst)) + DBGPRINT("pf filter destination_from_pf failed\n"); +#endif +#ifdef __linux__ + } +#endif + if (saconvmapped(orig_dst)) + DBGPRINT("Original destination : converted ipv6 mapped address to ipv4\n"); + + 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\n", 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\n", 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..ee46267 --- /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); +void redir_close(void); diff --git a/tpws/resolver.c b/tpws/resolver.c new file mode 100644 index 0000000..b9c204f --- /dev/null +++ b/tpws/resolver.c @@ -0,0 +1,264 @@ +#define _GNU_SOURCE + +#include "resolver.h" +#include "params.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SIG_BREAK SIGUSR1 + +#ifdef __APPLE__ + static const char *sem_name="/tpws_resolver"; +#endif + +TAILQ_HEAD(resolve_tailhead, resolve_item); + +typedef struct +{ + int fd_signal_pipe; + sem_t *sem; +#ifndef __APPLE__ + sem_t _sem; +#endif + struct resolve_tailhead resolve_list; + pthread_mutex_t resolve_list_lock; + int threads; + pthread_t *thread; + bool bInit, bStop; +} t_resolver; +static t_resolver resolver = { .bInit = false }; + +#define rlist_lock pthread_mutex_lock(&resolver.resolve_list_lock) +#define rlist_unlock pthread_mutex_unlock(&resolver.resolve_list_lock) + +static void resolver_clear_list(void) +{ + struct resolve_item *ri; + + for (;;) + { + ri = TAILQ_FIRST(&resolver.resolve_list); + if (!ri) break; + TAILQ_REMOVE(&resolver.resolve_list, ri, next); + free(ri); + } +} + +int resolver_thread_count(void) +{ + return resolver.bInit ? resolver.threads : 0; +} + +static void *resolver_thread(void *arg) +{ + int r; + sigset_t signal_mask; + + sigemptyset(&signal_mask); + sigaddset(&signal_mask, SIG_BREAK); + + //printf("resolver_thread %d start\n",syscall(SYS_gettid)); + for(;;) + { + if (resolver.bStop) break; + r = sem_wait(resolver.sem); + if (resolver.bStop) break; + if (r) + { + if (errno!=EINTR) + { + DLOG_PERROR("sem_wait (resolver_thread)"); + break; // fatal err + } + } + else + { + struct resolve_item *ri; + ssize_t wr; + + rlist_lock; + ri = TAILQ_FIRST(&resolver.resolve_list); + if (ri) TAILQ_REMOVE(&resolver.resolve_list, ri, next); + rlist_unlock; + + if (ri) + { + struct addrinfo *ai,hints; + char sport[6]; + + //printf("THREAD %d GOT JOB %s\n", syscall(SYS_gettid), ri->dom); + snprintf(sport,sizeof(sport),"%u",ri->port); + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_socktype = SOCK_STREAM; + // unfortunately getaddrinfo cannot be interrupted with a signal. we cannot cancel a query + ri->ga_res = getaddrinfo(ri->dom,sport,&hints,&ai); + if (!ri->ga_res) + { + memcpy(&ri->ss, ai->ai_addr, ai->ai_addrlen); + freeaddrinfo(ai); + } + //printf("THREAD %d END JOB %s FIRST=%p\n", syscall(SYS_gettid), ri->dom, TAILQ_FIRST(&resolver.resolve_list)); + + // never interrupt this + pthread_sigmask(SIG_BLOCK, &signal_mask, NULL); + wr = write(resolver.fd_signal_pipe,&ri,sizeof(void*)); + if (wr<0) + { + free(ri); + DLOG_PERROR("write resolve_pipe"); + } + else if (wr!=sizeof(void*)) + { + // partial pointer write is FATAL. in any case it will cause pointer corruption and coredump + free(ri); + DLOG_ERR("write resolve_pipe : not full write\n"); + exit(1000); + } + pthread_sigmask(SIG_UNBLOCK, &signal_mask, NULL); + } + } + } + //printf("resolver_thread %d exit\n",syscall(SYS_gettid)); + return NULL; +} + +static void sigbreak(int sig) +{ +} + +void resolver_deinit(void) +{ + if (resolver.bInit) + { + resolver.bStop = true; + + // wait all threads to terminate + for (int t = 0; t < resolver.threads; t++) + pthread_kill(resolver.thread[t], SIGUSR1); + for (int t = 0; t < resolver.threads; t++) + { + pthread_kill(resolver.thread[t], SIGUSR1); + pthread_join(resolver.thread[t], NULL); + } + + pthread_mutex_destroy(&resolver.resolve_list_lock); + free(resolver.thread); + + #ifdef __APPLE__ + sem_close(resolver.sem); + #else + sem_destroy(resolver.sem); + #endif + + resolver_clear_list(); + + memset(&resolver,0,sizeof(resolver)); + } +} + +bool resolver_init(int threads, int fd_signal_pipe) +{ + int t; + struct sigaction action; + + if (threads<1 || resolver.bInit) return false; + + memset(&resolver,0,sizeof(resolver)); + resolver.bInit = true; + +#ifdef __APPLE__ + // MacOS does not support unnamed semaphores + + char sn[64]; + snprintf(sn,sizeof(sn),"%s_%d",sem_name,getpid()); + resolver.sem = sem_open(sn,O_CREAT,0600,0); + if (resolver.sem==SEM_FAILED) + { + DLOG_PERROR("sem_open"); + goto ex; + } + // unlink immediately to remove tails + sem_unlink(sn); +#else + if (sem_init(&resolver._sem,0,0)==-1) + { + DLOG_PERROR("sem_init"); + goto ex; + } + resolver.sem = &resolver._sem; +#endif + + if (pthread_mutex_init(&resolver.resolve_list_lock, NULL)) goto ex; + + resolver.fd_signal_pipe = fd_signal_pipe; + TAILQ_INIT(&resolver.resolve_list); + + // start as many threads as we can up to specified number + resolver.thread = malloc(sizeof(pthread_t)*threads); + if (!resolver.thread) goto ex; + + memset(&action,0,sizeof(action)); + action.sa_handler = sigbreak; + sigaction(SIG_BREAK, &action, NULL); + + + pthread_attr_t attr; + if (pthread_attr_init(&attr)) goto ex; + // set minimum thread stack size + + if (pthread_attr_setstacksize(&attr,PTHREAD_STACK_MIN>20480 ? PTHREAD_STACK_MIN : 20480)) + { + pthread_attr_destroy(&attr); + goto ex; + } + + for(t=0, resolver.threads=threads ; tdom,dom,sizeof(ri->dom)); + ri->dom[sizeof(ri->dom)-1] = 0; + ri->port = port; + ri->ptr = ptr; + + rlist_lock; + TAILQ_INSERT_TAIL(&resolver.resolve_list, ri, next); + rlist_unlock; + if (sem_post(resolver.sem)<0) + { + DLOG_PERROR("resolver_queue sem_post"); + free(ri); + return NULL; + } + return ri; +} diff --git a/tpws/resolver.h b/tpws/resolver.h new file mode 100644 index 0000000..3151717 --- /dev/null +++ b/tpws/resolver.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include +#include +#include +#include + +struct resolve_item +{ + char dom[256]; // request dom + struct sockaddr_storage ss; // resolve result + int ga_res; // getaddrinfo result code + uint16_t port; // request port + void *ptr; + TAILQ_ENTRY(resolve_item) next; +}; + +struct resolve_item *resolver_queue(const char *dom, uint16_t port, void *ptr); +void resolver_deinit(void); +bool resolver_init(int threads, int fd_signal_pipe); +int resolver_thread_count(void); diff --git a/tpws/sec.c b/tpws/sec.c new file mode 100644 index 0000000..873c875 --- /dev/null +++ b/tpws/sec.c @@ -0,0 +1,360 @@ +#define _GNU_SOURCE + +#include +#include +#include "sec.h" +#include +#include +#include + +#ifdef __linux__ + +#include +#include +#include +#include +// __X32_SYSCALL_BIT defined in linux/unistd.h +#include +#include +#include + +/************ SECCOMP ************/ + +// block most of the undesired syscalls to harden against code execution +static long blocked_syscalls[] = { +#ifdef SYS_execv +SYS_execv, +#endif +SYS_execve, +#ifdef SYS_execveat +SYS_execveat, +#endif +#ifdef SYS_exec_with_loader +SYS_exec_with_loader, +#endif +#ifdef SYS_osf_execve +SYS_osf_execve, +#endif +#ifdef SYS_uselib +SYS_uselib, +#endif +#ifdef SYS_unlink +SYS_unlink, +#endif +SYS_unlinkat, +#ifdef SYS_chmod +SYS_chmod, +#endif +SYS_fchmod,SYS_fchmodat, +#ifdef SYS_chown +SYS_chown, +#endif +#ifdef SYS_chown32 +SYS_chown32, +#endif +SYS_fchown, +#ifdef SYS_fchown32 +SYS_fchown32, +#endif +#ifdef SYS_lchown +SYS_lchown, +#endif +#ifdef SYS_lchown32 +SYS_lchown32, +#endif +SYS_fchownat, +#ifdef SYS_symlink +SYS_symlink, +#endif +SYS_symlinkat, +#ifdef SYS_link +SYS_link, +#endif +SYS_linkat, +SYS_truncate, +#ifdef SYS_truncate64 +SYS_truncate64, +#endif +SYS_ftruncate, +#ifdef SYS_ftruncate64 +SYS_ftruncate64, +#endif +#ifdef SYS_mknod +SYS_mknod, +#endif +SYS_mknodat, +#ifdef SYS_mkdir +SYS_mkdir, +#endif +SYS_mkdirat, +#ifdef SYS_rmdir +SYS_rmdir, +#endif +#ifdef SYS_rename +SYS_rename, +#endif +#ifdef SYS_renameat2 +SYS_renameat2, +#endif +#ifdef SYS_renameat +SYS_renameat, +#endif +#ifdef SYS_readdir +SYS_readdir, +#endif +#ifdef SYS_getdents +SYS_getdents, +#endif +#ifdef SYS_getdents64 +SYS_getdents64, +#endif +#ifdef SYS_process_vm_readv +SYS_process_vm_readv, +#endif +#ifdef SYS_process_vm_writev +SYS_process_vm_writev, +#endif +#ifdef SYS_process_madvise +SYS_process_madvise, +#endif +SYS_kill, SYS_ptrace +}; +#define BLOCKED_SYSCALL_COUNT (sizeof(blocked_syscalls)/sizeof(*blocked_syscalls)) + +static void set_filter(struct sock_filter *filter, __u16 code, __u8 jt, __u8 jf, __u32 k) +{ + filter->code = code; + filter->jt = jt; + filter->jf = jf; + filter->k = k; +} +// deny all blocked syscalls +static bool set_seccomp(void) +{ +#ifdef __X32_SYSCALL_BIT + #define SECCOMP_PROG_SIZE (6 + BLOCKED_SYSCALL_COUNT) +#else + #define SECCOMP_PROG_SIZE (5 + BLOCKED_SYSCALL_COUNT) +#endif + struct sock_filter sockf[SECCOMP_PROG_SIZE]; + struct sock_fprog prog = { .len = SECCOMP_PROG_SIZE, .filter = sockf }; + int i,idx=0; + + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, arch_nr); +#ifdef __X32_SYSCALL_BIT + // x86 only + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 3 + BLOCKED_SYSCALL_COUNT, ARCH_NR); // fail + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JGT + BPF_K, 1 + BLOCKED_SYSCALL_COUNT, 0, __X32_SYSCALL_BIT - 1); // fail +#else + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 2 + BLOCKED_SYSCALL_COUNT, ARCH_NR); // fail + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); +#endif + +/* + // ! THIS IS NOT WORKING BECAUSE perror() in glibc dups() stderr + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JEQ + BPF_K, 0, 3, SYS_write); // special check for write call + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_arg(0)); // fd + set_filter(&prog.filter[idx++], BPF_JMP + BPF_JGT + BPF_K, 2 + BLOCKED_SYSCALL_COUNT, 0, 2); // 1 - stdout, 2 - stderr. greater are bad + set_filter(&prog.filter[idx++], BPF_LD + BPF_W + BPF_ABS, 0, 0, syscall_nr); // reload syscall_nr +*/ + for(i=0 ; i= 0; +} + +bool sec_harden(void) +{ + if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) + { + DLOG_PERROR("PR_SET_NO_NEW_PRIVS(prctl)"); + return false; + } +#if ARCH_NR!=0 + if (!set_seccomp()) + { + DLOG_PERROR("seccomp"); + if (errno==EINVAL) DLOG_ERR("seccomp: this can be safely ignored if kernel does not support seccomp\n"); + return false; + } +#endif + return true; +} + + + + +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(void) +{ + 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(void) +{ + uint64_t caps = 0; + int maxcap = getmaxcap(); + + if (setpcap(caps|(1< +#include + +#ifdef __linux__ + +#include +#include +#include + +bool checkpcap(uint64_t caps); +bool setpcap(uint64_t caps); +int getmaxcap(void); +bool dropcaps(void); + +#define syscall_nr (offsetof(struct seccomp_data, nr)) +#define arch_nr (offsetof(struct seccomp_data, arch)) +#define syscall_arg(x) (offsetof(struct seccomp_data, args[x])) + +#if defined(__aarch64__) + +# define ARCH_NR AUDIT_ARCH_AARCH64 + +#elif defined(__amd64__) + +# define ARCH_NR AUDIT_ARCH_X86_64 + +#elif defined(__arm__) && (defined(__ARM_EABI__) || defined(__thumb__)) + +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_ARM +# else +# define ARCH_NR AUDIT_ARCH_ARMEB +# endif + +#elif defined(__i386__) + +# define ARCH_NR AUDIT_ARCH_I386 + +#elif defined(__mips__) + +#if _MIPS_SIM == _MIPS_SIM_ABI32 +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_MIPSEL +# else +# define ARCH_NR AUDIT_ARCH_MIPS +# endif +#elif _MIPS_SIM == _MIPS_SIM_ABI64 +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_MIPSEL64 +# else +# define ARCH_NR AUDIT_ARCH_MIPS64 +# endif +#else +# error "Unsupported mips abi" +#endif + +#elif defined(__PPC64__) + +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ARCH_NR AUDIT_ARCH_PPC64LE +# else +# define ARCH_NR AUDIT_ARCH_PPC64 +# endif + +#elif defined(__PPC__) + +# define ARCH_NR AUDIT_ARCH_PPC + +#elif __riscv && __riscv_xlen == 64 + +# define ARCH_NR AUDIT_ARCH_RISCV64 + +#else + +# error "Platform does not support seccomp filter yet" + +#endif + +#endif + +bool sec_harden(void); +bool can_drop_root(); +bool droproot(uid_t uid, gid_t gid); +void print_id(void); +void daemonize(void); +bool writepid(const char *filename); diff --git a/tpws/socks.h b/tpws/socks.h new file mode 100644 index 0000000..5c9feb0 --- /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/tamper.c b/tpws/tamper.c new file mode 100644 index 0000000..8fc33ca --- /dev/null +++ b/tpws/tamper.c @@ -0,0 +1,461 @@ +#define _GNU_SOURCE + +#include "tamper.h" +#include "hostlist.h" +#include "protocol.h" +#include "helpers.h" +#include +#include + +static bool dp_match_l3l4(struct desync_profile *dp, bool ipv6, uint16_t tcp_port) +{ + return \ + ((!ipv6 && dp->filter_ipv4) || (ipv6 && dp->filter_ipv6)) && + (!tcp_port || pf_in_range(tcp_port,&dp->pf_tcp)); +} +static bool dp_match(struct desync_profile *dp, bool ipv6, uint16_t tcp_port, const char *hostname) +{ + if (dp_match_l3l4(dp,ipv6,tcp_port)) + { + // autohostlist profile matching l3/l4 filter always win + if (*dp->hostlist_auto_filename) return true; + + if (dp->hostlist || dp->hostlist_exclude) + { + // without known hostname first profile matching l3/l4 filter and without hostlist filter wins + if (hostname) + return HostlistCheck(dp, hostname, NULL); + } + else + // profile without hostlist filter wins + return true; + } + return false; +} +static struct desync_profile *dp_find(struct desync_profile_list_head *head, bool ipv6, uint16_t tcp_port, const char *hostname) +{ + struct desync_profile_list *dpl; + VPRINT("desync profile search for hostname='%s' ipv6=%u tcp_port=%u\n", hostname ? hostname : "", ipv6, tcp_port); + LIST_FOREACH(dpl, head, next) + { + if (dp_match(&dpl->dp,ipv6,tcp_port,hostname)) + { + VPRINT("desync profile %d matches\n",dpl->dp.n); + return &dpl->dp; + } + } + VPRINT("desync profile not found\n"); + return NULL; +} +void apply_desync_profile(t_ctrack *ctrack, const struct sockaddr *dest) +{ + ctrack->dp = dp_find(¶ms.desync_profiles, dest->sa_family==AF_INET6, saport(dest), ctrack->hostname); +} + + + +// segment buffer has at least 5 extra bytes to extend data block +void tamper_out(t_ctrack *ctrack, const struct sockaddr *dest, uint8_t *segment,size_t segment_buffer_size,size_t *size, size_t *split_pos, uint8_t *split_flags) +{ + uint8_t *p, *pp, *pHost = NULL; + size_t method_len = 0, pos; + size_t tpos, spos; + const char *method; + bool bHaveHost = false; + char *pc, Host[256]; + t_l7proto l7proto; + + DBGPRINT("tamper_out\n"); + + if (params.debug) + { + char ip_port[48]; + ntop46_port(dest,ip_port,sizeof(ip_port)); + VPRINT("tampering tcp segment with size %zu to %s\n", *size, ip_port); + if (ctrack->dp) VPRINT("using cached desync profile %d\n",ctrack->dp->n); + if (ctrack->hostname) VPRINT("connection hostname: %s\n", ctrack->hostname); + } + + if (dest->sa_family!=AF_INET && dest->sa_family!=AF_INET6) + { + DLOG_ERR("tamper_out dest family unknown\n"); + return; + } + + *split_pos=0; + *split_flags=0; + + if ((method = HttpMethod(segment,*size))) + { + method_len = strlen(method)-2; + VPRINT("Data block looks like http request start : %s\n", method); + l7proto=HTTP; + if (HttpFindHost(&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'; + bHaveHost = true; + for(pc = Host; *pc; pc++) *pc=tolower(*pc); + } + } + else if (IsTLSClientHello(segment,*size,false)) + { + VPRINT("Data block contains TLS ClientHello\n"); + l7proto=TLS; + bHaveHost=TLSHelloExtractHost((uint8_t*)segment,*size,Host,sizeof(Host),false); + } + else + { + VPRINT("Data block contains unknown payload\n"); + l7proto = UNKNOWN; + } + + if (ctrack->l7proto==UNKNOWN) ctrack->l7proto=l7proto; + + if (bHaveHost) + { + VPRINT("request hostname: %s\n", Host); + if (!ctrack->hostname) + { + if (!(ctrack->hostname=strdup(Host))) + { + DLOG_ERR("strdup hostname : out of memory\n"); + return; + } + + struct desync_profile *dp_prev = ctrack->dp; + apply_desync_profile(ctrack, dest); + if (ctrack->dp!=dp_prev) + VPRINT("desync profile changed by revealed hostname !\n"); + else if (*ctrack->dp->hostlist_auto_filename) + { + bool bHostExcluded; + if (!HostlistCheck(ctrack->dp, Host, &bHostExcluded)) + { + ctrack->b_ah_check = !bHostExcluded; + VPRINT("Not acting on this request\n"); + return; + } + } + } + } + + if (!ctrack->dp) return; + + switch(l7proto) + { + case HTTP: + if (ctrack->dp->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 %td. Stop replacing.\n", pp - segment); + break; + } + pp = p; + } + pHost = NULL; // invalidate + } + if (ctrack->dp->methodeol && (*size+1+!ctrack->dp->unixeol)<=segment_buffer_size) + { + VPRINT("Adding EOL before method\n"); + if (ctrack->dp->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 (ctrack->dp->methodspace && *sizedp->hostdot || ctrack->dp->hosttab) && *sizedp->hostdot ? "dot" : "tab", pos); + memmove(p + 1, p, *size - pos); + *p = ctrack->dp->hostdot ? '.' : '\t'; // insert dot or tab + (*size)++; // block will grow by 1 byte + } + } + if (ctrack->dp->domcase && HttpFindHost(&pHost,segment,*size)) + { + p = pHost + 5; + pos = p - segment; + VPRINT("Mixing domain case at pos %zu\n",pos); + for (; p < (segment + *size) && *p != '\r' && *p != '\n'; p++) + *p = (((size_t)p) & 1) ? tolower(*p) : toupper(*p); + } + if (ctrack->dp->hostnospace && HttpFindHost(&pHost,segment,*size) && (pHost+5)<(segment+*size) && pHost[5] == ' ') + { + p = pHost + 6; + pos = p - segment; + VPRINT("Removing space before host name at pos %zu\n", pos); + memmove(p - 1, p, *size - pos); + (*size)--; // block will shrink by 1 byte + } + if (ctrack->dp->hostcase && HttpFindHost(&pHost,segment,*size)) + { + VPRINT("Changing 'Host:' => '%c%c%c%c:' at pos %td\n", ctrack->dp->hostspell[0], ctrack->dp->hostspell[1], ctrack->dp->hostspell[2], ctrack->dp->hostspell[3], pHost - segment); + memcpy(pHost, ctrack->dp->hostspell, 4); + } + if (ctrack->dp->hostpad && HttpFindHost(&pHost,segment,*size)) + { + // add : XXXXX: dp->unixeol ? 8 : 9; + size_t hostpad = ctrack->dp->hostpaddp->hostpad; + + if ((hsize+*size)>segment_buffer_size) + VPRINT("could not add host padding : buffer too small\n"); + else + { + if ((hostpad+*size)>segment_buffer_size) + { + hostpad=segment_buffer_size-*size; + VPRINT("host padding reduced to %zu bytes : buffer too small\n", hostpad); + } + else + VPRINT("host padding with %zu bytes\n", 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)dp->unixeol) + *p++='\n'; + else + { + *p++='\r'; + *p++='\n'; + } + hostpad-=hsize+padsize; + } + pHost = NULL; // invalidate + } + } + *split_pos = HttpPos(ctrack->dp->split_http_req, ctrack->dp->split_pos, segment, *size); + if (ctrack->dp->disorder_http) *split_flags |= SPLIT_FLAG_DISORDER; + if (ctrack->dp->oob_http) *split_flags |= SPLIT_FLAG_OOB; + break; + + case TLS: + spos = TLSPos(ctrack->dp->split_tls, ctrack->dp->split_pos, segment, *size, 0); + if ((5+*size)<=segment_buffer_size) + { + tpos = TLSPos(ctrack->dp->tlsrec, ctrack->dp->tlsrec_pos+5, segment, *size, 0); + if (tpos>5) + { + // construct 2 TLS records from one + uint16_t l = pntoh16(segment+3); // length + if (l>=2) + { + // length is checked in IsTLSClientHello and cannot exceed buffer size + if ((tpos-5)>=l) tpos=5+1; + VPRINT("making 2 TLS records at pos %zu\n",tpos); + memmove(segment+tpos+5,segment+tpos,*size-tpos); + segment[tpos] = segment[0]; + segment[tpos+1] = segment[1]; + segment[tpos+2] = segment[2]; + phton16(segment+tpos+3,l-(tpos-5)); + phton16(segment+3,tpos-5); + *size += 5; + // split pos present and it is not before tlsrec split. increase split pos by tlsrec header size (5 bytes) + if (spos && spos>=tpos) spos+=5; + } + } + } + + if (spos && spos < *size) + *split_pos = spos; + + if (ctrack->dp->disorder_tls) *split_flags |= SPLIT_FLAG_DISORDER; + if (ctrack->dp->oob_tls) *split_flags |= SPLIT_FLAG_OOB; + + break; + + default: + if (ctrack->dp->split_any_protocol && ctrack->dp->split_pos < *size) + *split_pos = ctrack->dp->split_pos; + } + + if (ctrack->dp->disorder) *split_flags |= SPLIT_FLAG_DISORDER; + if (ctrack->dp->oob) *split_flags |= SPLIT_FLAG_OOB; +} + +static void auto_hostlist_reset_fail_counter(struct desync_profile *dp, const char *hostname) +{ + if (hostname) + { + hostfail_pool *fail_counter; + + fail_counter = HostFailPoolFind(dp->hostlist_auto_fail_counters, hostname); + if (fail_counter) + { + HostFailPoolDel(&dp->hostlist_auto_fail_counters, fail_counter); + VPRINT("auto hostlist (profile %d) : %s : fail counter reset. website is working.\n", dp->n, hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : fail counter reset. website is working.", hostname, dp->n); + } + } +} + +static void auto_hostlist_failed(struct desync_profile *dp, const char *hostname) +{ + hostfail_pool *fail_counter; + + fail_counter = HostFailPoolFind(dp->hostlist_auto_fail_counters, hostname); + if (!fail_counter) + { + fail_counter = HostFailPoolAdd(&dp->hostlist_auto_fail_counters, hostname, dp->hostlist_auto_fail_time); + if (!fail_counter) + { + DLOG_ERR("HostFailPoolAdd: out of memory\n"); + return; + } + } + fail_counter->counter++; + VPRINT("auto hostlist (profile %d) : %s : fail counter %d/%d\n", dp->n , hostname, fail_counter->counter, dp->hostlist_auto_fail_threshold); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : fail counter %d/%d", hostname, dp->n, fail_counter->counter, dp->hostlist_auto_fail_threshold); + if (fail_counter->counter >= dp->hostlist_auto_fail_threshold) + { + VPRINT("auto hostlist (profile %d) : fail threshold reached. adding %s to auto hostlist\n", dp->n , hostname); + HostFailPoolDel(&dp->hostlist_auto_fail_counters, fail_counter); + + VPRINT("auto hostlist (profile %d) : rechecking %s to avoid duplicates\n", dp->n, hostname); + bool bExcluded=false; + if (!HostlistCheck(dp, hostname, &bExcluded) && !bExcluded) + { + VPRINT("auto hostlist (profile %d) : adding %s to %s\n", dp->n, hostname, dp->hostlist_auto_filename); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : adding to %s", hostname, dp->n, dp->hostlist_auto_filename); + if (!StrPoolAddStr(&dp->hostlist, hostname)) + { + DLOG_ERR("StrPoolAddStr out of memory\n"); + return; + } + if (!append_to_list_file(dp->hostlist_auto_filename, hostname)) + { + DLOG_PERROR("write to auto hostlist:"); + return; + } + dp->hostlist_auto_mod_time = file_mod_time(dp->hostlist_auto_filename); + } + else + { + VPRINT("auto hostlist (profile %d) : NOT adding %s\n", dp->n, hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : NOT adding, duplicate detected", hostname, dp->n); + } + } +} + +void tamper_in(t_ctrack *ctrack, uint8_t *segment,size_t segment_buffer_size,size_t *size) +{ + bool bFail=false; + + DBGPRINT("tamper_in hostname=%s\n", ctrack->hostname); + + if (ctrack->dp && ctrack->b_ah_check) + { + HostFailPoolPurgeRateLimited(&ctrack->dp->hostlist_auto_fail_counters); + + if (ctrack->l7proto==HTTP && ctrack->hostname) + { + if (IsHttpReply(segment,*size)) + { + VPRINT("incoming HTTP reply detected for hostname %s\n", ctrack->hostname); + bFail = HttpReplyLooksLikeDPIRedirect(segment, *size, ctrack->hostname); + if (bFail) + { + VPRINT("redirect to another domain detected. possibly DPI redirect.\n"); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : redirect to another domain", ctrack->hostname, ctrack->dp->n); + } + else + VPRINT("local or in-domain redirect detected. it's not a DPI redirect.\n"); + } + else + { + // received not http reply. do not monitor this connection anymore + VPRINT("incoming unknown HTTP data detected for hostname %s\n", ctrack->hostname); + } + if (bFail) auto_hostlist_failed(ctrack->dp, ctrack->hostname); + } + if (!bFail) auto_hostlist_reset_fail_counter(ctrack->dp, ctrack->hostname); + } + ctrack->bTamperInCutoff = true; +} + +void rst_in(t_ctrack *ctrack) +{ + DBGPRINT("rst_in hostname=%s\n", ctrack->hostname); + + if (ctrack->dp && ctrack->b_ah_check) + { + HostFailPoolPurgeRateLimited(&ctrack->dp->hostlist_auto_fail_counters); + + if (!ctrack->bTamperInCutoff && ctrack->hostname) + { + VPRINT("incoming RST detected for hostname %s\n", ctrack->hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : incoming RST", ctrack->hostname, ctrack->dp->n); + auto_hostlist_failed(ctrack->dp, ctrack->hostname); + } + } +} +void hup_out(t_ctrack *ctrack) +{ + DBGPRINT("hup_out hostname=%s\n", ctrack->hostname); + + if (ctrack->dp && ctrack->b_ah_check) + { + HostFailPoolPurgeRateLimited(&ctrack->dp->hostlist_auto_fail_counters); + + if (!ctrack->bTamperInCutoff && ctrack->hostname) + { + // local leg dropped connection after first request. probably due to timeout. + VPRINT("local leg closed connection after first request (timeout ?). hostname: %s\n", ctrack->hostname); + HOSTLIST_DEBUGLOG_APPEND("%s : profile %d : client closed connection without server reply", ctrack->hostname, ctrack->dp->n); + auto_hostlist_failed(ctrack->dp, ctrack->hostname); + } + } +} diff --git a/tpws/tamper.h b/tpws/tamper.h new file mode 100644 index 0000000..ccc5c6f --- /dev/null +++ b/tpws/tamper.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include + +#include "params.h" + +#define SPLIT_FLAG_DISORDER 0x01 +#define SPLIT_FLAG_OOB 0x02 + +typedef enum {UNKNOWN=0, HTTP, TLS} t_l7proto; +typedef struct +{ + // common state + t_l7proto l7proto; + bool bFirstReplyChecked; + bool bTamperInCutoff; + bool b_ah_check; + char *hostname; + struct desync_profile *dp; // desync profile cache +} t_ctrack; + +void apply_desync_profile(t_ctrack *ctrack, const struct sockaddr *dest); + +void tamper_out(t_ctrack *ctrack, const struct sockaddr *dest, uint8_t *segment,size_t segment_buffer_size,size_t *size, size_t *split_pos, uint8_t *split_flags); +void tamper_in(t_ctrack *ctrack, uint8_t *segment,size_t segment_buffer_size,size_t *size); +// connection reset by remote leg +void rst_in(t_ctrack *ctrack); +// local leg closed connection (timeout waiting response ?) +void hup_out(t_ctrack *ctrack); diff --git a/tpws/tpws.c b/tpws/tpws.c new file mode 100644 index 0000000..3e49485 --- /dev/null +++ b/tpws/tpws.c @@ -0,0 +1,1450 @@ +#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 + +#include "tpws.h" + +#ifdef BSD + #include +#endif + +#include "tpws_conn.h" +#include "hostlist.h" +#include "params.h" +#include "sec.h" +#include "redirect.h" +#include "helpers.h" +#include "gzip.h" +#include "pools.h" + +struct params_s params; + +bool bHup = false; +static void onhup(int sig) +{ + printf("HUP received !\n"); + printf("Will reload hostlist on next request (if any)\n"); + bHup = true; +} +// should be called in normal execution +void dohup(void) +{ + if (bHup) + { + if (!LoadIncludeHostLists() || !LoadExcludeHostLists()) + { + // what will we do without hostlist ?? sure, gonna die + exit(1); + } + bHup = false; + } +} + +static void onusr2(int sig) +{ + printf("\nHOSTFAIL POOL DUMP\n"); + + struct desync_profile_list *dpl; + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + { + printf("\nDESYNC PROFILE %d\n",dpl->dp.n); + HostFailPoolDump(dpl->dp.hostlist_auto_fail_counters); + } + + printf("\n"); +} + + +static int8_t block_sigpipe(void) +{ + sigset_t sigset; + memset(&sigset, 0, sizeof(sigset)); + + //Get the old sigset, add SIGPIPE and update sigset + if (sigprocmask(SIG_BLOCK, NULL, &sigset) == -1) { + DLOG_PERROR("sigprocmask (get)"); + return -1; + } + + if (sigaddset(&sigset, SIGPIPE) == -1) { + DLOG_PERROR("sigaddset"); + return -1; + } + + if (sigprocmask(SIG_BLOCK, &sigset, NULL) == -1) { + DLOG_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 int get_default_ttl(void) +{ + int sock,ttl=0; + socklen_t optlen=sizeof(ttl); + + if ((sock=socket(PF_INET, SOCK_DGRAM, IPPROTO_IP))!=-1) + { + getsockopt(sock, IPPROTO_IP, IP_TTL, &ttl, &optlen); + close(sock); + } + return ttl; +} + + +static void exithelp(void) +{ + printf( + " --bind-addr=|\t; for v6 link locals append %%interface_name\n" + " --bind-iface4=\t\t; bind to the first ipv4 addr of interface\n" + " --bind-iface6=\t\t; bind to the first ipv6 addr of interface\n" + " --bind-linklocal=no|unwanted|prefer|force ; prohibit, accept, prefer or force ipv6 link local bind\n" + " --bind-wait-ifup=\t\t\t; wait for interface to appear and up\n" + " --bind-wait-ip=\t\t\t; after ifup wait for ip address to appear up to N seconds\n" + " --bind-wait-ip-linklocal=\t\t; (prefer) accept only LL first N seconds then any (unwanted) accept only globals first N seconds then LL\n" + " --bind-wait-only\t\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" + " --connect-bind-addr=| ; address for outbound connections. for v6 link locals append %%interface_name\n" + " --port=\t\t\t\t; only one port number for all binds is supported\n" + " --socks\t\t\t\t; implement socks4/5 proxy instead of transparent proxy\n" + " --no-resolve\t\t\t\t; disable socks5 remote dns ability\n" + " --resolver-threads=\t\t; number of resolver worker threads\n" + " --local-rcvbuf=\n" + " --local-sndbuf=\n" + " --remote-rcvbuf=\n" + " --remote-sndbuf=\n" +#ifdef SPLICE_PRESENT + " --nosplice\t\t\t\t; do not use splice to transfer data between sockets\n" +#endif + " --skip-nodelay\t\t\t\t; do not set TCP_NODELAY option for outgoing connections (incompatible with split options)\n" +#if defined(__linux__) || defined(__APPLE__) + " --local-tcp-user-timeout=\t; set tcp user timeout for local leg (default : %d, 0 = system default)\n" + " --remote-tcp-user-timeout=\t; set tcp user timeout for remote leg (default : %d, 0 = system default)\n" +#endif + " --maxconn=\n" +#ifdef SPLICE_PRESENT + " --maxfiles=\t\t; should be at least (X*connections+16), where X=6 in tcp proxy mode, X=4 in tampering mode\n" +#else + " --maxfiles=\t\t; should be at least (connections*2+16)\n" +#endif + " --max-orphan-time=\t\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\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" +#if defined(__FreeBSD__) + " --enable-pf\t\t\t\t; enable PF redirector support. required in FreeBSD when used with PF firewall.\n" +#endif + " --debug=0|1|2|syslog|@\t; 1 and 2 means log to console and set debug level. for other targets use --debug-level.\n" + " --debug-level=0|1|2\t\t\t; specify debug level\n" + "\nMULTI-STRATEGY:\n" + " --new\t\t\t\t\t; begin new strategy\n" + " --filter-l3=ipv4|ipv6\t\t\t; L3 protocol filter. multiple comma separated values allowed.\n" + " --filter-tcp=[~]port1[-port2]\t\t; TCP port filter. ~ means negation\n" + "\nHOSTLIST FILTER:\n" + " --hostlist=\t\t\t; only act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)\n" + " --hostlist-exclude=\t\t; do not act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)\n" + " --hostlist-auto=\t\t; detect DPI blocks and build hostlist automatically\n" + " --hostlist-auto-fail-threshold=\t; how many failed attempts cause hostname to be added to auto hostlist (default : %d)\n" + " --hostlist-auto-fail-time=\t; all failed attemps must be within these seconds (default : %d)\n" + " --hostlist-auto-debug=\t; debug auto hostlist positives\n" + "\nTAMPER:\n" + " --split-http-req=method|host\t\t; split at specified logical part of plain http request\n" + " --split-tls=sni|sniext\t\t\t; split at specified logical part of TLS ClientHello\n" + " --split-pos=\t\t; split at specified pos. split-http-req or split-tls take precedence for http.\n" + " --split-any-protocol\t\t\t; split not only http and https\n" +#if defined(BSD) && !defined(__APPLE__) + " --disorder[=http|tls]\t\t\t; when splitting simulate sending second fragment first (BSD sends entire message instead of first fragment, this is not good)\n" +#else + " --disorder[=http|tls]\t\t\t; when splitting simulate sending second fragment first\n" +#endif + " --oob[=http|tls]\t\t\t; when splitting send out of band byte. default is HEX 0x00.\n" + " --oob-data=|0xHEX\t\t; override default 0x00 OOB byte.\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" + " --hostdot\t\t\t\t; add \".\" after Host: name\n" + " --hosttab\t\t\t\t; add tab after Host: name\n" + " --hostnospace\t\t\t\t; remove space after Host:\n" + " --hostpad=\t\t\t; add dummy padding headers before Host:\n" + " --domcase\t\t\t\t; mix domain case : Host: TeSt.cOm\n" + " --methodspace\t\t\t\t; add extra space after method\n" + " --methodeol\t\t\t\t; add end-of-line before method\n" + " --unixeol\t\t\t\t; replace 0D0A to 0A\n" + " --tlsrec=sni|sniext\t\t\t; make 2 TLS records. split at specified logical part. don't split if SNI is not present\n" + " --tlsrec-pos=\t\t\t; make 2 TLS records. split at specified pos\n" +#ifdef __linux__ + " --mss=\t\t\t\t; set client MSS. forces server to split messages but significantly decreases speed !\n" +#endif + " --tamper-start=[n]\t\t; start tampering only from specified outbound stream position. default is 0. 'n' means data block number.\n" + " --tamper-cutoff=[n]\t\t; do not tamper anymore after specified outbound stream position. default is unlimited.\n", +#if defined(__linux__) || defined(__APPLE__) + DEFAULT_TCP_USER_TIMEOUT_LOCAL,DEFAULT_TCP_USER_TIMEOUT_REMOTE, +#endif + HOSTLIST_AUTO_FAIL_THRESHOLD_DEFAULT, HOSTLIST_AUTO_FAIL_TIME_DEFAULT + ); + exit(1); +} +static void cleanup_params(void) +{ + dp_list_destroy(¶ms.desync_profiles); +} +static void exithelp_clean(void) +{ + cleanup_params(); + exithelp(); +} +static void exit_clean(int code) +{ + cleanup_params(); + exit(code); +} +static void nextbind_clean(void) +{ + params.binds_last++; + if (params.binds_last>=MAX_BINDS) + { + DLOG_ERR("maximum of %d binds are supported\n",MAX_BINDS); + exit_clean(1); + } +} +static void checkbind_clean(void) +{ + if (params.binds_last<0) + { + DLOG_ERR("start new bind with --bind-addr,--bind-iface*\n"); + exit_clean(1); + } +} + + +void save_default_ttl(void) +{ + if (!params.ttl_default) + { + params.ttl_default = get_default_ttl(); + if (!params.ttl_default) + { + DLOG_ERR("could not get default ttl\n"); + exit_clean(1); + } + } +} + +bool parse_httpreqpos(const char *s, enum httpreqpos *pos) +{ + if (!strcmp(s, "method")) + *pos = httpreqpos_method; + else if (!strcmp(s, "host")) + *pos = httpreqpos_host; + else + return false; + return true; +} +bool parse_tlspos(const char *s, enum tlspos *pos) +{ + if (!strcmp(s, "sni")) + *pos = tlspos_sni; + else if (!strcmp(s, "sniext")) + *pos = tlspos_sniext; + else + return false; + return true; +} + +static bool wf_make_l3(char *opt, bool *ipv4, bool *ipv6) +{ + char *e,*p,c; + + for (p=opt,*ipv4=*ipv6=false ; p ; ) + { + if ((e = strchr(p,','))) + { + c=*e; + *e=0; + } + + if (!strcmp(p,"ipv4")) + *ipv4 = true; + else if (!strcmp(p,"ipv6")) + *ipv6 = true; + else return false; + + if (e) + { + *e++=c; + } + p = e; + } + return true; +} + +void parse_params(int argc, char *argv[]) +{ + int option_index = 0; + int v, i; + + memset(¶ms, 0, sizeof(params)); + params.maxconn = DEFAULT_MAX_CONN; + params.max_orphan_time = DEFAULT_MAX_ORPHAN_TIME; + params.binds_last = -1; +#if defined(__linux__) || defined(__APPLE__) + params.tcp_user_timeout_local = DEFAULT_TCP_USER_TIMEOUT_LOCAL; + params.tcp_user_timeout_remote = DEFAULT_TCP_USER_TIMEOUT_REMOTE; +#endif + +#if defined(__OpenBSD__) || defined(__APPLE__) + params.pf_enable = true; // OpenBSD and MacOS have no other choice +#endif + if (can_drop_root()) + { + params.uid = params.gid = 0x7FFFFFFF; // default uid:gid + params.droproot = true; + } + + struct desync_profile_list *dpl; + struct desync_profile *dp; + int desync_profile_count=0; + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + dp = &dpl->dp; + dp->n = ++desync_profile_count; + + 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-tls",required_argument,0,0 },// optidx=24 + { "split-pos",required_argument,0,0 },// optidx=25 + { "split-any-protocol",optional_argument,0,0},// optidx=26 + { "disorder",optional_argument,0,0 },// optidx=27 + { "oob",optional_argument,0,0 },// optidx=28 + { "oob-data",required_argument,0,0 },// optidx=29 + { "methodspace",no_argument,0,0 },// optidx=30 + { "methodeol",no_argument,0,0 },// optidx=31 + { "hosttab",no_argument,0,0 },// optidx=32 + { "unixeol",no_argument,0,0 },// optidx=33 + { "tlsrec",required_argument,0,0 },// optidx=34 + { "tlsrec-pos",required_argument,0,0 },// optidx=35 + { "hostlist",required_argument,0,0 },// optidx=36 + { "hostlist-exclude",required_argument,0,0 },// optidx=37 + { "hostlist-auto",required_argument,0,0}, // optidx=38 + { "hostlist-auto-fail-threshold",required_argument,0,0}, // optidx=39 + { "hostlist-auto-fail-time",required_argument,0,0}, // optidx=40 + { "hostlist-auto-debug",required_argument,0,0}, // optidx=41 + { "pidfile",required_argument,0,0 },// optidx=42 + { "debug",optional_argument,0,0 },// optidx=43 + { "debug-level",required_argument,0,0 },// optidx=44 + { "local-rcvbuf",required_argument,0,0 },// optidx=45 + { "local-sndbuf",required_argument,0,0 },// optidx=46 + { "remote-rcvbuf",required_argument,0,0 },// optidx=47 + { "remote-sndbuf",required_argument,0,0 },// optidx=48 + { "socks",no_argument,0,0 },// optidx=40 + { "no-resolve",no_argument,0,0 },// optidx=50 + { "resolver-threads",required_argument,0,0 },// optidx=51 + { "skip-nodelay",no_argument,0,0 },// optidx=52 + { "tamper-start",required_argument,0,0 },// optidx=53 + { "tamper-cutoff",required_argument,0,0 },// optidx=54 + { "connect-bind-addr",required_argument,0,0 },// optidx=55 + + { "new",no_argument,0,0 }, // optidx=56 + { "filter-l3",required_argument,0,0 }, // optidx=57 + { "filter-tcp",required_argument,0,0 }, // optidx=58 + +#if defined(__FreeBSD__) + { "enable-pf",no_argument,0,0 },// optidx=59 +#elif defined(__APPLE__) + { "local-tcp-user-timeout",required_argument,0,0 },// optidx=59 + { "remote-tcp-user-timeout",required_argument,0,0 },// optidx=60 +#elif defined(__linux__) + { "local-tcp-user-timeout",required_argument,0,0 },// optidx=59 + { "remote-tcp-user-timeout",required_argument,0,0 },// optidx=60 + { "mss",required_argument,0,0 },// optidx=61 +#ifdef SPLICE_PRESENT + { "nosplice",no_argument,0,0 },// optidx=62 +#endif +#endif + { "hostlist-auto-retrans-threshold",optional_argument,0,0}, // ignored. for nfqws command line compatibility + { 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, "no")) + params.binds[params.binds_last].bindll=no; + else if (!strcmp(optarg, "prefer")) + params.binds[params.binds_last].bindll=prefer; + else if (!strcmp(optarg, "force")) + params.binds[params.binds_last].bindll=force; + else if (!strcmp(optarg, "unwanted")) + params.binds[params.binds_last].bindll=unwanted; + else + { + DLOG_ERR("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) + { + DLOG_ERR("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) + { + DLOG_ERR("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)<1) + { + DLOG_ERR("--uid should be : uid[:gid]\n"); + exit_clean(1); + } + break; + case 14: /* maxconn */ + params.maxconn = atoi(optarg); + if (params.maxconn <= 0 || params.maxconn > 10000) + { + DLOG_ERR("bad maxconn\n"); + exit_clean(1); + } + break; + case 15: /* maxfiles */ + params.maxfiles = atoi(optarg); + if (params.maxfiles < 0) + { + DLOG_ERR("bad maxfiles\n"); + exit_clean(1); + } + break; + case 16: /* max-orphan-time */ + params.max_orphan_time = atoi(optarg); + if (params.max_orphan_time < 0) + { + DLOG_ERR("bad max_orphan_time\n"); + exit_clean(1); + } + break; + case 17: /* hostcase */ + dp->hostcase = true; + params.tamper = true; + break; + case 18: /* hostspell */ + if (strlen(optarg) != 4) + { + DLOG_ERR("hostspell must be exactly 4 chars long\n"); + exit_clean(1); + } + dp->hostcase = true; + memcpy(dp->hostspell, optarg, 4); + params.tamper = true; + break; + case 19: /* hostdot */ + dp->hostdot = true; + params.tamper = true; + break; + case 20: /* hostnospace */ + dp->hostnospace = true; + params.tamper = true; + break; + case 21: /* hostpad */ + dp->hostpad = atoi(optarg); + params.tamper = true; + break; + case 22: /* domcase */ + dp->domcase = true; + params.tamper = true; + break; + case 23: /* split-http-req */ + if (!parse_httpreqpos(optarg, &dp->split_http_req)) + { + DLOG_ERR("Invalid argument for split-http-req\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 24: /* split-tls */ + if (!parse_tlspos(optarg, &dp->split_tls)) + { + DLOG_ERR("Invalid argument for split-tls\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 25: /* split-pos */ + i = atoi(optarg); + if (i>0) + dp->split_pos = i; + else + { + DLOG_ERR("Invalid argument for split-pos\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 26: /* split-any-protocol */ + dp->split_any_protocol = true; + break; + case 27: /* disorder */ + if (optarg) + { + if (!strcmp(optarg,"http")) dp->disorder_http=true; + else if (!strcmp(optarg,"tls")) dp->disorder_tls=true; + else + { + DLOG_ERR("Invalid argument for disorder\n"); + exit_clean(1); + } + } + else + dp->disorder = true; + save_default_ttl(); + break; + case 28: /* oob */ + if (optarg) + { + if (!strcmp(optarg,"http")) dp->oob_http=true; + else if (!strcmp(optarg,"tls")) dp->oob_tls=true; + else + { + DLOG_ERR("Invalid argument for oob\n"); + exit_clean(1); + } + } + else + dp->oob = true; + break; + case 29: /* oob-data */ + { + size_t l = strlen(optarg); + unsigned int bt; + if (l==1) dp->oob_byte = (uint8_t)*optarg; + else if (l!=4 || sscanf(optarg,"0x%02X",&bt)!=1) + { + DLOG_ERR("Invalid argument for oob-data\n"); + exit_clean(1); + } + else dp->oob_byte = (uint8_t)bt; + } + break; + case 30: /* methodspace */ + dp->methodspace = true; + params.tamper = true; + break; + case 31: /* methodeol */ + dp->methodeol = true; + params.tamper = true; + break; + case 32: /* hosttab */ + dp->hosttab = true; + params.tamper = true; + break; + case 33: /* unixeol */ + dp->unixeol = true; + params.tamper = true; + break; + case 34: /* tlsrec */ + if (!parse_tlspos(optarg, &dp->tlsrec)) + { + DLOG_ERR("Invalid argument for tlsrec\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 35: /* tlsrec-pos */ + if ((dp->tlsrec_pos = atoi(optarg))>0) + dp->tlsrec = tlspos_pos; + else + { + DLOG_ERR("Invalid argument for tlsrec-pos\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 36: /* hostlist */ + if (!strlist_add(&dp->hostlist_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 37: /* hostlist-exclude */ + if (!strlist_add(&dp->hostlist_exclude_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + params.tamper = true; + break; + case 38: /* hostlist-auto */ + if (*dp->hostlist_auto_filename) + { + DLOG_ERR("only one auto hostlist per profile is supported\n"); + exit_clean(1); + } + { + FILE *F = fopen(optarg,"a+t"); + if (!F) + { + DLOG_ERR("cannot create %s\n", optarg); + exit_clean(1); + } + bool bGzip = is_gzip(F); + fclose(F); + if (bGzip) + { + DLOG_ERR("gzipped auto hostlists are not supported\n"); + exit_clean(1); + } + if (params.droproot && chown(optarg, params.uid, -1)) + DLOG_ERR("could not chown %s. auto hostlist file may not be writable after privilege drop\n", optarg); + } + if (!strlist_add(&dp->hostlist_files, optarg)) + { + DLOG_ERR("strlist_add failed\n"); + exit_clean(1); + } + strncpy(dp->hostlist_auto_filename, optarg, sizeof(dp->hostlist_auto_filename)); + dp->hostlist_auto_filename[sizeof(dp->hostlist_auto_filename) - 1] = '\0'; + params.tamper = true; // need to detect blocks and update autohostlist. cannot just slice. + break; + case 39: /* hostlist-auto-fail-threshold */ + dp->hostlist_auto_fail_threshold = (uint8_t)atoi(optarg); + if (dp->hostlist_auto_fail_threshold<1 || dp->hostlist_auto_fail_threshold>20) + { + DLOG_ERR("auto hostlist fail threshold must be within 1..20\n"); + exit_clean(1); + } + break; + case 40: /* hostlist-auto-fail-time */ + dp->hostlist_auto_fail_time = (uint8_t)atoi(optarg); + if (dp->hostlist_auto_fail_time<1) + { + DLOG_ERR("auto hostlist fail time is not valid\n"); + exit_clean(1); + } + break; + case 41: /* hostlist-auto-debug */ + { + FILE *F = fopen(optarg,"a+t"); + if (!F) + { + DLOG_ERR("cannot create %s\n", optarg); + exit_clean(1); + } + fclose(F); + if (params.droproot && chown(optarg, params.uid, -1)) + DLOG_ERR("could not chown %s. auto hostlist debug log may not be writable after privilege drop\n", optarg); + strncpy(params.hostlist_auto_debuglog, optarg, sizeof(params.hostlist_auto_debuglog)); + params.hostlist_auto_debuglog[sizeof(params.hostlist_auto_debuglog) - 1] = '\0'; + } + break; + case 42: /* pidfile */ + strncpy(params.pidfile,optarg,sizeof(params.pidfile)); + params.pidfile[sizeof(params.pidfile)-1]='\0'; + break; + case 43: /* debug */ + if (optarg) + { + if (*optarg=='@') + { + strncpy(params.debug_logfile,optarg+1,sizeof(params.debug_logfile)); + params.debug_logfile[sizeof(params.debug_logfile)-1] = 0; + FILE *F = fopen(params.debug_logfile,"wt"); + if (!F) + { + fprintf(stderr, "cannot create %s\n", params.debug_logfile); + exit_clean(1); + } + if (params.droproot && chown(params.debug_logfile, params.uid, -1)) + fprintf(stderr, "could not chown %s. log file may not be writable after privilege drop\n", params.debug_logfile); + if (!params.debug) params.debug = 1; + params.debug_target = LOG_TARGET_FILE; + } + else if (!strcmp(optarg,"syslog")) + { + if (!params.debug) params.debug = 1; + params.debug_target = LOG_TARGET_SYSLOG; + openlog("tpws",LOG_PID,LOG_USER); + } + else + { + params.debug = atoi(optarg); + params.debug_target = LOG_TARGET_CONSOLE; + } + } + else + { + params.debug = 1; + params.debug_target = LOG_TARGET_CONSOLE; + } + break; + case 44: /* debug-level */ + params.debug = atoi(optarg); + break; + case 45: /* local-rcvbuf */ +#ifdef __linux__ + params.local_rcvbuf = atoi(optarg)/2; +#else + params.local_rcvbuf = atoi(optarg); +#endif + break; + case 46: /* local-sndbuf */ +#ifdef __linux__ + params.local_sndbuf = atoi(optarg)/2; +#else + params.local_sndbuf = atoi(optarg); +#endif + break; + case 47: /* remote-rcvbuf */ +#ifdef __linux__ + params.remote_rcvbuf = atoi(optarg)/2; +#else + params.remote_rcvbuf = atoi(optarg); +#endif + break; + case 48: /* remote-sndbuf */ +#ifdef __linux__ + params.remote_sndbuf = atoi(optarg)/2; +#else + params.remote_sndbuf = atoi(optarg); +#endif + break; + case 49: /* socks */ + params.proxy_type = CONN_TYPE_SOCKS; + break; + case 50: /* no-resolve */ + params.no_resolve = true; + break; + case 51: /* resolver-threads */ + params.resolver_threads = atoi(optarg); + if (params.resolver_threads<1 || params.resolver_threads>300) + { + DLOG_ERR("resolver-threads must be within 1..300\n"); + exit_clean(1); + } + break; + case 52: /* skip-nodelay */ + params.skip_nodelay = true; + break; + case 53: /* tamper-start */ + { + const char *p=optarg; + if (*p=='n') + { + dp->tamper_start_n=true; + p++; + } + else + dp->tamper_start_n=false; + dp->tamper_start = atoi(p); + } + params.tamper_lim = true; + break; + case 54: /* tamper-cutoff */ + { + const char *p=optarg; + if (*p=='n') + { + dp->tamper_cutoff_n=true; + p++; + } + else + dp->tamper_cutoff_n=false; + dp->tamper_cutoff = atoi(p); + } + params.tamper_lim = true; + break; + case 55: /* connect-bind-addr */ + { + char *p = strchr(optarg,'%'); + if (p) *p++=0; + if (inet_pton(AF_INET, optarg, ¶ms.connect_bind4.sin_addr)) + { + params.connect_bind4.sin_family = AF_INET; + } + else if (inet_pton(AF_INET6, optarg, ¶ms.connect_bind6.sin6_addr)) + { + params.connect_bind6.sin6_family = AF_INET6; + if (p && *p) + { + // copy interface name for delayed resolution + strncpy(params.connect_bind6_ifname,p,sizeof(params.connect_bind6_ifname)); + params.connect_bind6_ifname[sizeof(params.connect_bind6_ifname)-1]=0; + } + + } + else + { + DLOG_ERR("bad bind addr : %s\n", optarg); + exit_clean(1); + } + } + break; + + + case 56: /* new */ + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + dp = &dpl->dp; + dp->n = ++desync_profile_count; + break; + case 57: /* filter-l3 */ + if (!wf_make_l3(optarg,&dp->filter_ipv4,&dp->filter_ipv6)) + { + DLOG_ERR("bad value for --filter-l3\n"); + exit_clean(1); + } + break; + case 58: /* filter-tcp */ + if (!pf_parse(optarg,&dp->pf_tcp)) + { + DLOG_ERR("Invalid port filter : %s\n",optarg); + exit_clean(1); + } + break; + +#if defined(__FreeBSD__) + case 59: /* enable-pf */ + params.pf_enable = true; + break; +#elif defined(__linux__) || defined(__APPLE__) + case 59: /* local-tcp-user-timeout */ + params.tcp_user_timeout_local = atoi(optarg); + if (params.tcp_user_timeout_local<0 || params.tcp_user_timeout_local>86400) + { + DLOG_ERR("Invalid argument for tcp user timeout. must be 0..86400\n"); + exit_clean(1); + } + break; + case 60: /* remote-tcp-user-timeout */ + params.tcp_user_timeout_remote = atoi(optarg); + if (params.tcp_user_timeout_remote<0 || params.tcp_user_timeout_remote>86400) + { + DLOG_ERR("Invalid argument for tcp user timeout. must be 0..86400\n"); + exit_clean(1); + } + break; +#endif + +#if defined(__linux__) + case 61: /* mss */ + // this option does not work in any BSD and MacOS. OS may accept but it changes nothing + dp->mss = atoi(optarg); + if (dp->mss<88 || dp->mss>32767) + { + DLOG_ERR("Invalid value for MSS. Linux accepts MSS 88-32767.\n"); + exit_clean(1); + } + break; +#ifdef SPLICE_PRESENT + case 62: /* nosplice */ + params.nosplice = true; + break; +#endif +#endif + } + } + if (!params.bind_wait_only && !params.port) + { + DLOG_ERR("Need port number\n"); + exit_clean(1); + } + if (params.binds_last<=0) + { + params.binds_last=0; // default bind to all + } + if (!params.resolver_threads) params.resolver_threads = 5 + params.maxconn/50; + + VPRINT("adding low-priority default empty desync profile\n"); + // add default empty profile + if (!(dpl = dp_list_add(¶ms.desync_profiles))) + { + DLOG_ERR("desync_profile_add: out of memory\n"); + exit_clean(1); + } + + DLOG_CONDUP("we have %d user defined desync profile(s) and default low priority profile 0\n",desync_profile_count); + + LIST_FOREACH(dpl, ¶ms.desync_profiles, next) + { + dp = &dpl->dp; + if (dp->split_tls==tlspos_none && dp->split_pos) dp->split_tls=tlspos_pos; + if (dp->split_http_req==httpreqpos_none && dp->split_pos) dp->split_http_req=httpreqpos_pos; + if (*dp->hostlist_auto_filename) dp->hostlist_auto_mod_time = file_mod_time(dp->hostlist_auto_filename); + if (params.skip_nodelay && (dp->split_tls || dp->split_http_req || dp->split_pos)) + { + DLOG_ERR("Cannot split with --skip-nodelay\n"); + exit_clean(1); + } + } + + if (!LoadIncludeHostLists()) + { + DLOG_ERR("Include hostlist load failed\n"); + exit_clean(1); + } + if (!LoadExcludeHostLists()) + { + DLOG_ERR("Exclude hostlist load failed\n"); + exit_clean(1); + } +} + + +static bool find_listen_addr(struct sockaddr_storage *salisten, const char *bindiface, bool bind_if6, enum bindll bindll, int *if_index) +{ + struct ifaddrs *addrs,*a; + bool found=false; + + if (getifaddrs(&addrs)<0) + return false; + + // for ipv6 preference order + // bind-linklocal-1 : link-local,any + // bind-linklocal=0 : private,global,link-local + for(int pass=0;pass<3;pass++) + { + a = addrs; + while (a) + { + if (a->ifa_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==prefer || bindll==force)) || + (*bindiface && bind_if6 && !strcmp(a->ifa_name, bindiface))) + && + ((bindll==force && is_linklocal((struct sockaddr_in6*)a->ifa_addr)) || + (bindll==prefer && ((pass==0 && is_linklocal((struct sockaddr_in6*)a->ifa_addr)) || (pass==1 && is_private6((struct sockaddr_in6*)a->ifa_addr)) || pass==2)) || + (bindll==no && ((pass==0 && is_private6((struct sockaddr_in6*)a->ifa_addr)) || (pass==1 && !is_linklocal((struct sockaddr_in6*)a->ifa_addr)))) || + (bindll==unwanted && ((pass==0 && is_private6((struct sockaddr_in6*)a->ifa_addr)) || (pass==1 && !is_linklocal((struct sockaddr_in6*)a->ifa_addr)) || pass==2))) + ) + { + 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(void) +{ + 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), 2 fds (2 socket) for nosplice + // additional 1/2 for unpaired remote legs sending buffers + // 16 for listen_fd, epoll, hostlist, ... +#ifdef SPLICE_PRESENT + fdmax = (params.nosplice ? 2 : (params.tamper && !params.tamper_lim ? 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\n",(uintmax_t)fdmax,(uintmax_t)fdmin_system); + + if (!read_system_maxfiles(&cur_lim)) + return false; + DBGPRINT("set_ulimit : current system file-max=%ju\n",(uintmax_t)cur_lim); + if (cur_lim 0) + { + int sec=0; + if (!is_interface_online(params.binds[i].bindiface)) + { + DLOG_CONDUP("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) + { + DLOG_CONDUP("wait timed out\n"); + goto exiterr; + } + } + } + if (!(if_index = if_nametoindex(params.binds[i].bindiface)) && params.binds[i].bind_wait_ip<=0) + { + DLOG_CONDUP("bad iface %s\n",params.binds[i].bindiface); + goto exiterr; + } + } + list[i].bind_wait_ip_left = params.binds[i].bind_wait_ip; + 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 + { + DLOG_CONDUP("bad bind addr : %s\n", params.binds[i].bindaddr); + goto exiterr; + } + } + else + { + if (*params.binds[i].bindiface || params.binds[i].bindll) + { + bool found; + enum bindll bindll_1; + int sec=0; + + if (params.binds[i].bind_wait_ip > 0) + { + DLOG_CONDUP("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].bind_wait_ip_ll>0) + { + if (params.binds[i].bindll==prefer) + DLOG_CONDUP("during the first %d second(s) accepting only link locals...\n", params.binds[i].bind_wait_ip_ll); + else if (params.binds[i].bindll==unwanted) + DLOG_CONDUP("during the first %d second(s) accepting only ipv6 globals...\n", params.binds[i].bind_wait_ip_ll); + } + } + + for(;;) + { + // allow, no, prefer, force + bindll_1 = (params.binds[i].bindll==prefer && sec=params.binds[i].bind_wait_ip) + break; + + sleep(1); + sec++; + } + + if (!found) + { + DLOG_CONDUP("suitable ip address not found\n"); + goto exiterr; + } + list[i].bind_wait_ip_left = params.binds[i].bind_wait_ip - sec; + 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) + { + DLOG_CONDUP("bind wait condition satisfied\n"); + exit_v = 0; + goto exiterr; + } + + if (params.proxy_type==CONN_TYPE_TRANSPARENT && !redir_init()) + { + DLOG_ERR("could not initialize redirector !!!\n"); + goto exiterr; + } + + for(i=0;i<=params.binds_last;i++) + { + if (params.debug) + { + ntop46_port((struct sockaddr *)&list[i].salisten, ip_port, sizeof(ip_port)); + VPRINT("Binding %d to %s\n",i,ip_port); + } + + if ((listen_fd[i] = socket(list[i].salisten.ss_family, SOCK_STREAM, 0)) == -1) { + DLOG_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) + { + DLOG_PERROR("setsockopt (IPV6_ONLY)"); + goto exiterr; + } +#endif + + if (setsockopt(listen_fd[i], SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1) + { + DLOG_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) + { + DLOG_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) + { + DLOG_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)); + } + } + bool bBindBug=false; + for(;;) + { + if (bind(listen_fd[i], (struct sockaddr *)&list[i].salisten, list[i].salisten_len) == -1) + { + // in linux strange behaviour was observed + // just after ifup and address assignment there's short window when bind() can't bind to addresses got from getifaddrs() + // it does not happen to transparent sockets because they can bind to any non-existend ip + // also only ipv6 seem to be buggy this way + if (errno==EADDRNOTAVAIL && params.proxy_type!=CONN_TYPE_TRANSPARENT && list[i].bind_wait_ip_left) + { + if (!bBindBug) + { + ntop46_port((struct sockaddr *)&list[i].salisten, ip_port, sizeof(ip_port)); + DLOG_CONDUP("address %s is not available. will retry for %d sec\n",ip_port,list[i].bind_wait_ip_left); + bBindBug=true; + } + sleep(1); + list[i].bind_wait_ip_left--; + continue; + } + DLOG_PERROR("bind"); + goto exiterr; + } + break; + } + if (listen(listen_fd[i], BACKLOG) == -1) + { + DLOG_PERROR("listen"); + goto exiterr; + } + } + + set_ulimit(); + sec_harden(); + + 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) { + DLOG_ERR("Could not block SIGPIPE signal\n"); + goto exiterr; + } + + DLOG_CONDUP(params.proxy_type==CONN_TYPE_SOCKS ? "socks mode\n" : "transparent proxy mode\n"); + if (!params.tamper) DLOG_CONDUP("TCP proxy mode (no tampering)\n"); + + signal(SIGHUP, onhup); + signal(SIGUSR2, onusr2); + + retval = event_loop(listen_fd,params.binds_last+1); + exit_v = retval < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + DLOG_CONDUP("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..fa4eb30 --- /dev/null +++ b/tpws/tpws.h @@ -0,0 +1,9 @@ +#pragma once + +#ifdef __linux__ + #define SPLICE_PRESENT +#endif + +#include + +void dohup(void); diff --git a/tpws/tpws_conn.c b/tpws/tpws_conn.c new file mode 100644 index 0000000..3597ae8 --- /dev/null +++ b/tpws/tpws_conn.c @@ -0,0 +1,1690 @@ +#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 "socks.h" +#include "helpers.h" +#include "hostlist.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(void) +{ + VPRINT("Legs : local:%d remote:%d\n", 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); +} + + +ssize_t send_with_ttl(int fd, const void *buf, size_t len, int flags, int ttl) +{ + ssize_t wr; + + if (ttl) + { + DBGPRINT("send_with_ttl %d fd=%d\n",ttl,fd); + if (!set_ttl_hl(fd, ttl)) + //DLOG_ERR("could not set ttl %d to fd=%d\n",ttl,fd); + DLOG_ERR("could not set ttl %d to fd=%d\n",ttl,fd); + } + wr = send(fd, buf, len, flags); + if (ttl) + { + int e=errno; + if (!set_ttl_hl(fd, params.ttl_default)) + DLOG_ERR("could not set ttl %d to fd=%d\n",params.ttl_default,fd); + errno=e; + } + return wr; +} + + +static bool send_buffer_create(send_buffer_t *sb, const void *data, size_t len, size_t extra_bytes, int flags, int ttl) +{ + if (sb->data) + { + DLOG_ERR("FATAL : send_buffer_create but buffer is not empty\n"); + exit(1); + } + sb->data = malloc(len + extra_bytes); + if (!sb->data) + { + DBGPRINT("send_buffer_create failed\n"); + return false; + } + if (data) memcpy(sb->data,data,len); + sb->len = len; + sb->pos = 0; + sb->ttl = ttl; + sb->flags = flags; + return true; +} +static bool send_buffer_realloc(send_buffer_t *sb, size_t extra_bytes) +{ + if (sb->data) + { + uint8_t *p = (uint8_t*)realloc(sb->data, sb->len + extra_bytes); + if (p) + { + sb->data = p; + DBGPRINT("reallocated send_buffer from %zd to %zd\n", sb->len, sb->len + extra_bytes); + return true; + } + else + { + DBGPRINT("failed to realloc send_buffer from %zd to %zd\n", sb->len, sb->len + extra_bytes); + } + } + return false; +} + +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, sb->flags, sb->ttl); + DBGPRINT("send_buffer_send len=%zu pos=%zu wr=%zd err=%d\n",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,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 bool conn_shutdown(tproxy_conn_t *conn) +{ + conn->bShutdown = true; + if (shutdown(conn->fd,SHUT_WR)<0) + { + DLOG_PERROR("shutdown"); + return false; + } + return true; +} + +static ssize_t send_or_buffer(send_buffer_t *sb, int fd, const void *buf, size_t len, int flags, int ttl) +{ + ssize_t wr=0; + if (len) + { + wr = send_with_ttl(fd, buf, len, flags, ttl); + 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\n",fd,v); + sz=sizeof(int); + if (!getsockopt(fd,SOL_SOCKET,SO_SNDBUF,&v,&sz)) + DBGPRINT("fd=%d SO_SNDBUF=%d\n",fd,v); + } +} + +bool set_socket_buffers(int fd, int rcvbuf, int sndbuf) +{ + DBGPRINT("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) + { + DLOG_PERROR("setsockopt (SO_RCVBUF)"); + close(fd); + return false; + } + if (sndbuf && setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(int)) <0) + { + DLOG_PERROR("setsockopt (SO_SNDBUF)"); + close(fd); + return false; + } + dbgprint_socket_buffers(fd); + return true; +} + +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_alive(conn)) 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\n",bres,sock_err,conn->fd,conn->partner->fd); + } + break; + } + return bres; +} + +#if defined(__linux__) || defined(__APPLE__) + +static void set_user_timeout(int fd, int timeout) +{ +#ifdef __linux__ + if (timeout>0) + { + int msec = 1000*timeout; + if (setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &msec, sizeof(int)) <0) + DLOG_PERROR("setsockopt (TCP_USER_TIMEOUT)"); + } +#elif defined(__APPLE__) + if (timeout>0 && setsockopt(fd, IPPROTO_TCP, TCP_RXT_CONNDROPTIME, &timeout, sizeof(int)) <0) + DLOG_PERROR("setsockopt (TCP_RXT_CONNDROPTIME)"); +#endif +} + +#else + +#define set_user_timeout(fd,timeout) + +#endif + + +//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 mss) +{ + int remote_fd = 0, yes = 1, no = 0; + + + if((remote_fd = socket(remote_addr->sa_family, SOCK_STREAM, 0)) < 0) + { + DLOG_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) + { + DLOG_PERROR("socket set O_NONBLOCK (connect_remote)"); + close(remote_fd); + return -1; + } + if (setsockopt(remote_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0) + { + DLOG_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)) + { + DLOG_PERROR("set_keepalive"); + close(remote_fd); + return -1; + } + if (setsockopt(remote_fd, IPPROTO_TCP, TCP_NODELAY, params.skip_nodelay ? &no : &yes, sizeof(int)) <0) + { + DLOG_PERROR("setsockopt (TCP_NODELAY, connect_remote)"); + close(remote_fd); + return -1; + } +#ifdef __linux__ + if (mss) + { + VPRINT("Setting MSS %d\n", mss); + if (setsockopt(remote_fd, IPPROTO_TCP, TCP_MAXSEG, &mss, sizeof(int)) <0) + { + DLOG_PERROR("setsockopt (TCP_MAXSEG, connect_remote)"); + close(remote_fd); + return -1; + } + } +#endif + + // if no bind address specified - address family will be 0 in params_connect_bindX + if(remote_addr->sa_family == params.connect_bind4.sin_family) + { + if (bind(remote_fd, (struct sockaddr *)¶ms.connect_bind4, sizeof(struct sockaddr_in)) == -1) + { + DLOG_PERROR("bind on connect"); + close(remote_fd); + return -1; + } + } + else if(remote_addr->sa_family == params.connect_bind6.sin6_family) + { + if (*params.connect_bind6_ifname && !params.connect_bind6.sin6_scope_id) + { + params.connect_bind6.sin6_scope_id=if_nametoindex(params.connect_bind6_ifname); + if (!params.connect_bind6.sin6_scope_id) + { + DLOG_ERR("interface name not found : %s\n", params.connect_bind6_ifname); + close(remote_fd); + return -1; + } + } + + if (bind(remote_fd, (struct sockaddr *)¶ms.connect_bind6, sizeof(struct sockaddr_in6)) == -1) + { + DLOG_PERROR("bind on connect"); + close(remote_fd); + return -1; + } + } + + set_user_timeout(remote_fd, params.tcp_user_timeout_remote); + + if (connect(remote_fd, remote_addr, remote_addr->sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)) < 0) + { + if(errno != EINPROGRESS) + { + DLOG_PERROR("connect (connect_remote)"); + close(remote_fd); + return -1; + } + } + DBGPRINT("Connecting remote fd=%d\n",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; + if (conn->track.hostname) free(conn->track.hostname); + if (conn->socks_ri) conn->socks_ri->ptr = NULL; // detach conn + 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*) calloc(1, sizeof(tproxy_conn_t))) == NULL) + { + DLOG_ERR("Could not allocate memory for connection\n"); + return NULL; + } + + 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.nosplice && ( !remote || !params.tamper || params.tamper_lim ) && pipe2(conn->splice_pipe, O_NONBLOCK) != 0) + { + DLOG_ERR("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\n",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) + { + DLOG_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\n",conn->fd); + if(epoll_ctl(conn->efd, EPOLL_CTL_DEL, conn->fd, &ev)==-1) + { + DLOG_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 + DBGPRINT("SET FLOW fd=%d to in=%d out=%d state_rdhup=%d\n",conn->fd,conn->bFlowIn,conn->bFlowOut,conn->state==CONN_RDHUP); + uint32_t evtmask = (conn->state==CONN_RDHUP ? 0 : EPOLLRDHUP)|(conn->bFlowIn?EPOLLIN:0)|(conn->bFlowOut?EPOLLOUT:0); + if (!epoll_set(conn, evtmask)) + return false; + 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)) + { + DLOG_ERR("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\n"); + close(local_fd); + return NULL; + } + } + + // socket buffers inherited from listen_fd + dbgprint_socket_buffers(local_fd); + + if(!set_keepalive(local_fd)) + { + DLOG_PERROR("set_keepalive"); + close(local_fd); + return 0; + } + + if (proxy_type==CONN_TYPE_TRANSPARENT) + { + if ((remote_fd = connect_remote((struct sockaddr *)&orig_dst, 0)) < 0) + { + DLOG_ERR("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) + { + sacopy(&conn->dest, (struct sockaddr *)&orig_dst); + + 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++; + } + + if (proxy_type==CONN_TYPE_TRANSPARENT) + apply_desync_profile(&conn->track, (struct sockaddr *)&conn->dest); + + 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; + } + + // 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) + { + DLOG_PERROR("getsockopt (SO_ERROR)"); + return false; + } + if (!errn) + { + if (params.debug>=1) + { + struct sockaddr_storage sa; + socklen_t salen=sizeof(sa); + char ip_port[48]; + + if (getsockname(conn->fd,(struct sockaddr *)&sa,&salen)) + *ip_port=0; + else + ntop46_port((struct sockaddr*)&sa,ip_port,sizeof(ip_port)); + VPRINT("Socket fd=%d (remote) connected from : %s\n", conn->fd, ip_port); + } + if (!epoll_set_flow(conn, true, false) || (conn_partner_alive(conn) && !epoll_set_flow(conn->partner, true, false))) + { + return false; + } + conn->state = CONN_AVAILABLE; + } + proxy_remote_conn_ack(conn,get_so_error(conn->fd)); + return !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\n", + 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)) + return false; + if (conn_partner_alive(conn)) + { + if (!epoll_set_flow(conn->partner, !bHasUnsent && (conn->partner->state != CONN_RDHUP), bHasUnsentPartner)) + return false; + } + return true; +} + +static bool handle_unsent(tproxy_conn_t *conn) +{ + ssize_t wr; + + DBGPRINT("+handle_unsent, fd=%d has_unsent=%d has_unsent_partner=%d\n",conn->fd,conn_has_unsent(conn),conn_partner_alive(conn) ? conn_has_unsent(conn->partner) : false); + +#ifdef SPLICE_PRESENT + if (!params.nosplice && 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\n",conn->wr_unsent,wr,errno); + if (wr<0) + { + if (errno==EAGAIN) wr=0; + else return false; + } + 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\n",wr); + if (wr<0) return false; + } + if (!conn_has_unsent(conn) && conn_partner_alive(conn) && conn->partner->state==CONN_RDHUP) + { + if (!conn->bShutdown) + { + DBGPRINT("fd=%d no more has unsent. partner in RDHUP state. executing delayed shutdown.\n", conn->fd); + if (!conn_shutdown(conn)) + { + DBGPRINT("emergency connection close due to failed shutdown\n"); + return false; + } + } + if (conn->state==CONN_RDHUP && !conn_has_unsent(conn->partner)) + { + DBGPRINT("both partners are in RDHUP state and have no unsent. closing.\n"); + return false; + } + } + + return epoll_set_flow_pair(conn); +} + + +static bool proxy_mode_connect_remote(tproxy_conn_t *conn, struct tailhead *conn_list) +{ + int remote_fd; + + if (params.debug>=1) + { + char ip_port[48]; + ntop46_port((struct sockaddr *)&conn->dest,ip_port,sizeof(ip_port)); + VPRINT("socks target for fd=%d is : %s\n", conn->fd, ip_port); + } + if (check_local_ip((struct sockaddr *)&conn->dest)) + { + VPRINT("Dropping connection to local address for security reasons\n"); + socks_send_rep(conn->socks_ver, conn->fd, S5_REP_NOT_ALLOWED_BY_RULESET); + return false; + } + + apply_desync_profile(&conn->track, (struct sockaddr *)&conn->dest); + + if ((remote_fd = connect_remote((struct sockaddr *)&conn->dest, conn->track.dp ? conn->track.dp->mss : 0)) < 0) + { + DLOG_ERR("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); + DLOG_ERR("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)) + { + DLOG_ERR("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("S_WAIT_CONNECTION\n"); + 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 + + // receive proxy control message + rd=recv(conn->fd, buf, sizeof(buf), MSG_DONTWAIT); + DBGPRINT("handle_proxy_mode rd=%zd\n",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\n"); + if (buf[0] != 5 && buf[0] != 4) return false; // unknown socks version + conn->socks_ver = buf[0]; + DBGPRINT("socks version %u\n", 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\n"); + 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\n"); + ack.method=S5_AUTH_UNACCEPTABLE; + wr=send(conn->fd,&ack,sizeof(ack),MSG_DONTWAIT); + return false; + } + DBGPRINT("socks5 recv valid handshake\n"); + 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\n",wr,errno); + return false; + } + DBGPRINT("socks5 send handshake ack OK\n"); + 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\n"); + return false; + } + if (m->cmd!=S4_CMD_CONNECT) + { + // BIND is not supported + DBGPRINT("socks4 unsupported command %02X\n", m->cmd); + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + if (!S4_REQ_CONNECT_VALID(m, rd)) + { + DBGPRINT("socks4 connect request invalid\n"); + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + if (!m->port) + { + DBGPRINT("socks4 zero port\n"); + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + if (m->ip==htonl(1)) // special ip 0.0.0.1 + { + VPRINT("socks4a protocol not supported\n"); + socks4_send_rep(conn->fd, S4_REP_FAILED); + return false; + } + conn->dest.ss_family = AF_INET; + ((struct sockaddr_in*)&conn->dest)->sin_port = m->port; + ((struct sockaddr_in*)&conn->dest)->sin_addr.s_addr = m->ip; + return proxy_mode_connect_remote(conn, conn_list); + } + break; + case S_WAIT_REQUEST: + DBGPRINT("S_WAIT_REQUEST\n"); + { + s5_req *m = (s5_req*)buf; + + if (!S5_REQ_HEADER_VALID(m,rd)) + { + DBGPRINT("socks5 request invalid\n"); + return false; + } + if (m->cmd!=S5_CMD_CONNECT) + { + // BIND and UDP are not supported + DBGPRINT("socks5 unsupported command %02X\n", 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\n"); + return false; + } + DBGPRINT("socks5 recv valid connect request\n"); + switch(m->atyp) + { + case S5_ATYP_IP4: + conn->dest.ss_family = AF_INET; + ((struct sockaddr_in*)&conn->dest)->sin_port = m->d4.port; + ((struct sockaddr_in*)&conn->dest)->sin_addr = m->d4.addr; + break; + case S5_ATYP_IP6: + conn->dest.ss_family = AF_INET6; + ((struct sockaddr_in6*)&conn->dest)->sin6_port = m->d6.port; + ((struct sockaddr_in6*)&conn->dest)->sin6_addr = m->d6.addr; + ((struct sockaddr_in6*)&conn->dest)->sin6_flowinfo = 0; + ((struct sockaddr_in6*)&conn->dest)->sin6_scope_id = 0; + break; + case S5_ATYP_DOM: + { + uint16_t port; + + if (params.no_resolve) + { + VPRINT("socks5 hostname resolving disabled\n"); + socks5_send_rep(conn->fd,S5_REP_NOT_ALLOWED_BY_RULESET); + return false; + } + port=S5_PORT_FROM_DD(m,rd); + if (!port) + { + VPRINT("socks5 no port is given\n"); + socks5_send_rep(conn->fd,S5_REP_HOST_UNREACHABLE); + return false; + } + m->dd.domport[m->dd.len] = 0; + DBGPRINT("socks5 queue resolve hostname '%s' port '%u'\n",m->dd.domport,port); + conn->socks_ri = resolver_queue(m->dd.domport,port,conn); + if (!conn->socks_ri) + { + VPRINT("socks5 could not queue resolve item\n"); + socks5_send_rep(conn->fd,S5_REP_GENERAL_FAILURE); + return false; + } + conn->socks_state=S_WAIT_RESOLVE; + DBGPRINT("S_WAIT_RESOLVE\n"); + return true; + } + break; + default: + return false; // should not be here. S5_REQ_CONNECT_VALID checks for valid atyp + + } + return proxy_mode_connect_remote(conn,conn_list); + } + break; + case S_WAIT_RESOLVE: + DBGPRINT("socks received message while in S_WAIT_RESOLVE. hanging up\n"); + break; + case S_WAIT_CONNECTION: + DBGPRINT("socks received message while in S_WAIT_CONNECTION. hanging up\n"); + break; + default: + DBGPRINT("socks received message while in an unexpected connection state\n"); + break; + } + break; + } + return false; +} + +static bool resolve_complete(struct resolve_item *ri, struct tailhead *conn_list) +{ + tproxy_conn_t *conn = (tproxy_conn_t *)ri->ptr; + + if (conn && (conn->state != CONN_CLOSED)) + { + if (conn->socks_state==S_WAIT_RESOLVE) + { + DBGPRINT("resolve_complete %s. getaddrinfo result %d\n", ri->dom, ri->ga_res); + if (ri->ga_res) + { + socks5_send_rep(conn->fd,S5_REP_HOST_UNREACHABLE); + return false;; + } + else + { + if (!conn->track.hostname) + { + DBGPRINT("resolve_complete put hostname : %s\n", ri->dom); + conn->track.hostname = strdup(ri->dom); + } + sacopy(&conn->dest, (struct sockaddr *)&ri->ss); + return proxy_mode_connect_remote(conn,conn_list); + } + } + else + DLOG_ERR("resolve_complete: conn in wrong socks_state !!! (%s)\n", ri->dom); + } + else + DBGPRINT("resolve_complete: orphaned resolve for %s\n", ri->dom); + + return true; +} + + +static bool in_tamper_out_range(tproxy_conn_t *conn) +{ + if (!conn->track.dp) return true; + bool in_range = \ + ((conn->track.dp->tamper_start_n ? (conn->tnrd+1) : conn->trd) >= conn->track.dp->tamper_start && + (!conn->track.dp->tamper_cutoff || (conn->track.dp->tamper_cutoff_n ? (conn->tnrd+1) : conn->trd) < conn->track.dp->tamper_cutoff)); + DBGPRINT("tamper_out range check. stream pos %" PRIu64 "(n%" PRIu64 "). tamper range %s%u-%s%u (%s)\n", + conn->trd, conn->tnrd+1, + conn->track.dp ? conn->track.dp->tamper_start_n ? "n" : "" : "?" , conn->track.dp ? conn->track.dp->tamper_start : 0, + conn->track.dp ? conn->track.dp->tamper_cutoff_n ? "n" : "" : "?" , conn->track.dp ? conn->track.dp->tamper_cutoff : 0, + in_range ? "IN RANGE" : "OUT OF RANGE"); + return in_range; + +} + +static void tamper(tproxy_conn_t *conn, uint8_t *segment, size_t segment_buffer_size, size_t *segment_size, size_t *split_pos, uint8_t *split_flags) +{ + *split_pos=0; + if (params.tamper) + { + if (conn->remote) + { + if (conn_partner_alive(conn) && !conn->partner->track.bTamperInCutoff) + tamper_in(&conn->partner->track,segment,segment_buffer_size,segment_size); + } + else + { + if (in_tamper_out_range(conn)) + tamper_out(&conn->track,(struct sockaddr*)&conn->dest,segment,segment_buffer_size,segment_size,split_pos,split_flags); + } + } +} + +// buffer must have at least one extra byte for OOB +static ssize_t send_or_buffer_oob(send_buffer_t *sb, int fd, uint8_t *buf, size_t len, int ttl, bool oob, uint8_t oob_byte) +{ + ssize_t wr; + if (oob) + { + VPRINT("Sending OOB byte %02X\n", oob_byte); + uint8_t oob_save; + oob_save = buf[len]; + buf[len] = oob_byte; + wr = send_or_buffer(sb, fd, buf, len+1, MSG_OOB, ttl); + buf[len] = oob_save; + } + else + wr = send_or_buffer(sb, fd, buf, len, 0, ttl); + return wr; +} + + +#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\n"); + + 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 + uint8_t waste[65070]; + uint64_t trd=0; + + while((rd=recv(conn->fd, waste, sizeof(waste), MSG_DONTWAIT))>0 && trdtrd+=rd; + } + DBGPRINT("wasted recv=%zd all_rd=%" PRIu64 " err=%d\n",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\n",numbytes); + if (numbytes>0) + { + DBGPRINT("%s leg fd=%d stream pos : %" PRIu64 "(n%" PRIu64 ")/%" PRIu64 "\n", conn->remote ? "remote" : "local", conn->fd, conn->trd,conn->tnrd+1,conn->twr); +#ifdef SPLICE_PRESENT + if (!params.nosplice && (!params.tamper || (conn->remote && conn->partner->track.bTamperInCutoff) || (!conn->remote && !in_tamper_out_range(conn)))) + { + // 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\n",conn->fd,conn->remote,SPLICE_LEN,rd,errno); + if (rd<0 && errno==EAGAIN) rd=0; + if (rd>0) + { + conn->tnrd++; + 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\n",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 + uint8_t buf[RD_BLOCK_SIZE + 5]; + + rd = recv(conn->fd, buf, RD_BLOCK_SIZE, MSG_DONTWAIT); + DBGPRINT("recv fd=%d rd=%zd err=%d\n",conn->fd, rd,errno); + if (rd<0 && errno==EAGAIN) rd=0; + if (rd>0) + { + size_t split_pos; + uint8_t split_flags; + + bs = rd; + + // tamper needs to know stream position of the block start + tamper(conn, buf, sizeof(buf), &bs, &split_pos, &split_flags); + // increase after tamper + conn->tnrd++; + conn->trd+=rd; + + if (split_pos && bspartner->wr_buf, conn->partner->fd, buf, split_pos, !!(split_flags & SPLIT_FLAG_DISORDER), !!(split_flags & SPLIT_FLAG_OOB), conn->track.dp ? conn->track.dp->oob_byte : 0); + DBGPRINT("send_or_buffer(1) fd=%d wr=%zd err=%d\n",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, 0, 0); + DBGPRINT("send_or_buffer(2) fd=%d wr=%zd err=%d\n",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, 0, 0); + DBGPRINT("send_or_buffer(3) fd=%d wr=%zd err=%d\n",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\n",rd,wr); + if (oom) DBGPRINT("handle_epoll: OUT_OF_MEMORY\n"); + + // 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); + + epoll_del(conn); + VPRINT("Socket fd=%d (partner_fd=%d, remote=%d) closed, connection removed. total_read=%" PRIu64 " total_write=%" PRIu64 " event_count=%u\n", + 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\n",buffer_number,numbytes); + if (numbytes>0) + { + if (send_buffer_create(conn->partner->wr_buf+buffer_number, NULL, numbytes, 5, 0, 0)) + { + 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; + + size_t split_pos; + uint8_t split_flags; + + tamper(conn, conn->partner->wr_buf[buffer_number].data, numbytes+5, &conn->partner->wr_buf[buffer_number].len, &split_pos, &split_flags); + + 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\n"); + + 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\n",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); + } +} + + +static bool handle_resolve_pipe(tproxy_conn_t **conn, struct tailhead *conn_list, int fd) +{ + ssize_t rd; + struct resolve_item *ri; + bool b; + + rd = read(fd,&ri,sizeof(void*)); + if (rd<0) + { + DLOG_PERROR("resolve_pipe read"); + return false; + } + else if (rd!=sizeof(void*)) + { + // partial pointer read is FATAL. in any case it will cause pointer corruption and coredump + DLOG_ERR("resolve_pipe not full read %zu\n",rd); + exit(1000); + } + b = resolve_complete(ri, conn_list); + *conn = (tproxy_conn_t *)ri->ptr; + if (*conn) (*conn)->socks_ri = NULL; + free(ri); + return b; +} + +int event_loop(const 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; + int resolve_pipe[2]; + + if (!listen_fd_ct) return -1; + + resolve_pipe[0]=resolve_pipe[1]=0; + + 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) { + DLOG_PERROR("epoll_create"); + return -1; + } + + if (!(listen_conn=calloc(listen_fd_ct,sizeof(*listen_conn)))) + { + DLOG_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\n",events[i].events,conn->fd); + + accept_salen = sizeof(accept_sa); + //Accept new connection +#if defined (__APPLE__) + // macos does not have accept4() + tmp_fd = accept(conn->fd, (struct sockaddr*)&accept_sa, &accept_salen); +#else + tmp_fd = accept4(conn->fd, (struct sockaddr*)&accept_sa, &accept_salen, SOCK_NONBLOCK); +#endif + if (tmp_fd < 0) + { + DLOG_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\n", legs_local); + } +#if defined (__APPLE__) + // separate fcntl call to comply with macos + else if (fcntl(tmp_fd, F_SETFL, O_NONBLOCK) < 0) + { + DLOG_PERROR("socket set O_NONBLOCK (accept)"); + close(tmp_fd); + } +#endif + 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\n"); + } + else + { + print_legs(); + + if (params.debug>=1) + { + struct sockaddr_storage sa; + socklen_t salen=sizeof(sa); + char ip_port[48]; + + if (getpeername(conn->fd,(struct sockaddr *)&sa,&salen)) + *ip_port=0; + else + ntop46_port((struct sockaddr*)&sa,ip_port,sizeof(ip_port)); + + VPRINT("Socket fd=%d (local) connected from %s\n", conn->fd, ip_port); + } + set_user_timeout(conn->fd, params.tcp_user_timeout_local); + } + } + else + { + DBGPRINT("\nEVENT mask %08X fd=%d remote=%d fd_partner=%d\n",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)\n",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); + if (errn==ECONNRESET && conn_partner_alive(conn)) + { + if (conn->remote && params.tamper) rst_in(&conn->partner->track); + + struct linger lin; + lin.l_onoff=1; + lin.l_linger=0; + DBGPRINT("setting LINGER=0 to partner to force mirrored RST close\n"); + if (setsockopt(conn->partner->fd,SOL_SOCKET,SO_LINGER,&lin,sizeof(lin))<0) + DLOG_PERROR("setsockopt (SO_LINGER)"); + } + 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\n", conn->fd); + conn_close_both(&conn_list,&close_list,conn); + continue; + } + } + if (events[i].events & EPOLLRDHUP) + { + DBGPRINT("EPOLLRDHUP\n"); + read_all_and_buffer(conn,2); + if (!conn->remote && params.tamper) hup_out(&conn->track); + + conn->state = CONN_RDHUP; // only writes. do not receive RDHUP anymore + if (conn_has_unsent(conn)) + { + DBGPRINT("conn fd=%d has unsent\n", conn->fd); + epoll_set_flow(conn,false,true); + } + else + { + + DBGPRINT("conn fd=%d has no unsent\n", conn->fd); + conn->bFlowIn = false; + epoll_update_flow(conn); + if (conn_partner_alive(conn)) + { + if (conn_has_unsent(conn->partner)) + DBGPRINT("partner has unset. partner shutdown delayed.\n"); + else + { + DBGPRINT("partner has no unsent. shutting down partner.\n"); + if (!conn_shutdown(conn->partner)) + { + DBGPRINT("emergency connection close due to failed shutdown\n"); + conn_close_with_partner_check(&conn_list,&close_list,conn); + } + if (conn->partner->state==CONN_RDHUP) + { + DBGPRINT("both partners are in RDHUP state and have no unsent. closing.\n"); + conn_close_with_partner_check(&conn_list,&close_list,conn); + } + } + } + else + { + DBGPRINT("partner is absent or not alive. closing.\n"); + close_tcp_conn(&conn_list,&close_list,conn); + } + } + continue; + } + + if (events[i].events & (EPOLLIN|EPOLLOUT)) + { + const char *se; + switch (events[i].events & (EPOLLIN|EPOLLOUT)) + { + case EPOLLIN: se="EPOLLIN"; break; + case EPOLLOUT: se="EPOLLOUT"; break; + case EPOLLIN|EPOLLOUT: se="EPOLLIN EPOLLOUT"; break; + default: se=NULL; + } + if (se) DBGPRINT("%s\n",se); + // will not receive this until successful check_connection_attempt() + if (!handle_epoll(conn, &conn_list, events[i].events)) + { + DBGPRINT("handle_epoll false\n"); + conn_close_with_partner_check(&conn_list,&close_list,conn); + continue; + } + if ((conn->state == CONN_RDHUP) && conn_partner_alive(conn) && !conn->partner->bShutdown && !conn_has_unsent(conn)) + { + DBGPRINT("conn fd=%d has no unsent. shutting down partner.\n", conn->fd); + if (!conn_shutdown(conn->partner)) + { + DBGPRINT("emergency connection close due to failed shutdown\n"); + 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); + resolver_deinit(); + if (resolve_pipe[0]) close(resolve_pipe[0]); + if (resolve_pipe[1]) close(resolve_pipe[1]); + return retval; +} diff --git a/tpws/tpws_conn.h b/tpws/tpws_conn.h new file mode 100644 index 0000000..c52cbc8 --- /dev/null +++ b/tpws/tpws_conn.h @@ -0,0 +1,108 @@ +#pragma once + +#include +#include +#include +#include +#include "tamper.h" +#include "params.h" +#include "resolver.h" + +#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 +#define DEFAULT_TCP_USER_TIMEOUT_LOCAL 10 +#define DEFAULT_TCP_USER_TIMEOUT_REMOTE 20 + +int event_loop(const 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 +{ + uint8_t *data; + size_t len,pos; + int ttl, flags; +}; +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 sockaddr_storage dest; + + struct tproxy_conn *partner; // other leg + time_t orphan_since; + + // socks5 state machine + enum { + S_WAIT_HANDSHAKE=0, + S_WAIT_REQUEST, + S_WAIT_RESOLVE, + S_WAIT_CONNECTION, + S_TCP + } socks_state; + uint8_t socks_ver; + struct resolve_item *socks_ri; + + // 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, bShutdown, bFlowInPrev,bFlowOutPrev, bPrevRdhup; + + // total read,write + uint64_t trd,twr, tnrd; + // 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]; + + t_ctrack track; + + //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..9a396b6 --- /dev/null +++ b/tpws/uthash.h @@ -0,0 +1,1136 @@ +/* +Copyright (c) 2003-2021, Troy D. Hanson http://troydhanson.github.io/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.3.0 + +#include /* memcmp, memset, strlen */ +#include /* ptrdiff_t */ +#include /* exit */ + +#if defined(HASH_DEFINE_OWN_STDINT) && HASH_DEFINE_OWN_STDINT +/* This codepath is provided for backward compatibility, but I plan to remove it. */ +#warning "HASH_DEFINE_OWN_STDINT is deprecated; please use HASH_NO_STDINT instead" +typedef unsigned int uint32_t; +typedef unsigned char uint8_t; +#elif defined(HASH_NO_STDINT) && HASH_NO_STDINT +#else +#include /* uint8_t, uint32_t */ +#endif + +/* 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 + +#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_strlen +#define uthash_strlen(s) strlen(s) +#endif + +#ifndef HASH_FUNCTION +#define HASH_FUNCTION(keyptr,keylen,hashv) HASH_JEN(keyptr, keylen, hashv) +#endif + +#ifndef HASH_KEYCMP +#define HASH_KEYCMP(a,b,n) memcmp(a,b,n) +#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*)(void*)(((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_FUNCTION(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 { \ + (out) = NULL; \ + if (head) { \ + 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 = (const void*) (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 +#include /* fprintf, stderr */ +#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 + +/* 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]; /* FALLTHROUGH */ \ + default: ; \ + } \ + 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; \ + break; \ + default: ; \ + } \ + \ + /* 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) + +/* 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 (HASH_KEYCMP((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( \ + sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ + if (!_he_new_buckets) { \ + HASH_RECORD_OOM(oomed); \ + } else { \ + uthash_bzero(_he_new_buckets, \ + sizeof(struct UT_hash_bucket) * (tbl)->num_buckets * 2U); \ + (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++; \ + if (_he_newbkt->count > _he_newbkt->expand_mult * (tbl)->ideal_chain_maxlen) { \ + _he_newbkt->expand_mult++; \ + } \ + } \ + _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*)(void*)(((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 */ + const 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..781c8d5 --- /dev/null +++ b/uninstall_easy.sh @@ -0,0 +1,110 @@ +#!/bin/sh + +# automated script for easy uninstalling zapret + +EXEDIR="$(dirname "$0")" +EXEDIR="$(cd "$EXEDIR"; pwd)" +ZAPRET_BASE=${ZAPRET_BASE:-"$EXEDIR"} +ZAPRET_RW=${ZAPRET_RW:-"$ZAPRET_BASE"} +ZAPRET_CONFIG=${ZAPRET_CONFIG:-"$ZAPRET_RW/config"} +ZAPRET_CONFIG_DEFAULT="$ZAPRET_BASE/config.default" +IPSET_DIR="$ZAPRET_BASE/ipset" + +[ -f "$ZAPRET_CONFIG" ] || { + ZAPRET_CONFIG_DIR="$(dirname "$ZAPRET_CONFIG")" + [ -d "$ZAPRET_CONFIG_DIR" ] || mkdir -p "$ZAPRET_CONFIG_DIR" + cp "$ZAPRET_CONFIG_DEFAULT" "$ZAPRET_CONFIG" +} + +. "$ZAPRET_CONFIG" +. "$ZAPRET_BASE/common/base.sh" +. "$ZAPRET_BASE/common/elevate.sh" +. "$ZAPRET_BASE/common/fwtype.sh" +. "$ZAPRET_BASE/common/dialog.sh" +. "$ZAPRET_BASE/common/ipt.sh" +. "$ZAPRET_BASE/common/nft.sh" +. "$ZAPRET_BASE/common/pf.sh" +. "$ZAPRET_BASE/common/installer.sh" + +remove_systemd() +{ + clear_ipset + service_stop_systemd + service_remove_systemd + timer_remove_systemd + nft_del_table + crontab_del +} + +remove_openrc() +{ + clear_ipset + service_remove_openrc + nft_del_table + crontab_del +} + +remove_linux() +{ + INIT_SCRIPT_SRC="$EXEDIR/init.d/sysv/zapret" + + clear_ipset + + echo \* executing sysv init stop + "$INIT_SCRIPT_SRC" stop + + nft_del_table + crontab_del + + echo + echo '!!! WARNING. YOUR UNINSTALL IS INCOMPLETE !!!' + echo 'you must manually remove zapret auto start from your system' +} + +remove_openwrt() +{ + OPENWRT_FW_INCLUDE=/etc/firewall.zapret + + clear_ipset + service_remove_sysv + remove_openwrt_firewall + remove_openwrt_iface_hook + nft_del_table + restart_openwrt_firewall + crontab_del +} + +remove_macos() +{ + remove_macos_firewall + service_remove_macos + crontab_del +} + + +fix_sbin_path +check_system +require_root + +[ "$SYSTEM" = "macos" ] && . "$EXEDIR/init.d/macos/functions" + +case $SYSTEM in + systemd) + remove_systemd + ;; + openrc) + remove_openrc + ;; + linux) + remove_linux + ;; + openwrt) + remove_openwrt + ;; + macos) + remove_macos + ;; +esac + + +exitp 0

;UHIz~JXX)^ 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 GLjNDKVkpG` literal 0 HcmV?d00001 diff --git a/binaries/x86_64/mdig b/binaries/x86_64/mdig new file mode 100755 index 0000000000000000000000000000000000000000..382e4db0a6bc9bd37ae8f087b44e5dedd8261d81 GIT binary patch literal 46844 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