diff --git a/lite/RRPP_Lite.spec b/lite/RRPP_Lite.spec new file mode 100644 index 0000000..881ecb0 --- /dev/null +++ b/lite/RRPP_Lite.spec @@ -0,0 +1,78 @@ +# -*- mode: python ; coding: utf-8 -*- + +from PyInstaller.utils.hooks import collect_all + +# 强制收集 PyQt5 全部模块及二进制文件 +qt_datas, qt_binaries, qt_hiddenimports = collect_all('PyQt5') + +# 自定义 manifest:普通权限运行 + 声明 PerMonitorV2 DPI 感知, +# 避免程序在不同缩放比例的显示器之间移动时被 Windows 位图拉伸。 +_MANIFEST = r''' + + + Royirin Rosmontis Private Proxy Lite + + + + + + + + + + + + + + + + PerMonitorV2, PerMonitor, system + true/pm + + + + + + + + +''' + +a = Analysis( + ['proxy_lite.py'], + pathex=['..\\.venv\\Lib\\site-packages'], + binaries=qt_binaries, + datas=[('..\\ico.ico', '.'), ('pac_domains.json', '.'), ('pac_ip_cn.json', '.')] + qt_datas, + hiddenimports=qt_hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='Royirin Rosmontis Private Proxy Lite', + debug=False, + bootloader_ignore_signals=False, + strip=False, + # UPX 会压缩资源段(含图标),冷缓存下 Explorer 可能提取不到图标导致任务栏空白 + upx=False, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=['..\\ico.ico'], + manifest=_MANIFEST, +) diff --git a/lite/build_lite.bat b/lite/build_lite.bat new file mode 100644 index 0000000..3526da0 --- /dev/null +++ b/lite/build_lite.bat @@ -0,0 +1,6 @@ +@echo off +cd /d "%~dp0" +call ..\.venv\Scripts\python.exe -m PyInstaller RRPP_Lite.spec +echo. +echo Build complete. Output: dist\Royirin Rosmontis Private Proxy Lite.exe +pause diff --git a/lite/pac_domains.json b/lite/pac_domains.json new file mode 100644 index 0000000..c122d16 --- /dev/null +++ b/lite/pac_domains.json @@ -0,0 +1,216 @@ +{ + "_comment": "强制走代理隧道的域名后缀(IP 智能分流的补充规则):命中这些域名的连接即使解析到国内 IP 也强制走隧道。匹配规则:host == 条目 或 host 以 \".条目\" 结尾。该文件可选:EXE 同目录的 pac_domains.json 优先于打包内置版本,可自行增删。", + "domains": [ + "1e100.net", + "aistudio.google.com", + "akamaihd.net", + "anthropic.com", + "apexlegends.com", + "azure.com", + "azureedge.net", + "azurefd.net", + "battle.net", + "bing.com", + "bing.net", + "bingapis.com", + "blizzard.com", + "canva.com", + "cdninstagram.com", + "cf-cdn.com", + "chatgpt.com", + "clau.de", + "claude.ai", + "claudeusercontent.com", + "cloudflare.com", + "cloudflare.net", + "cloudflarecdn.com", + "cloudflareinsights.com", + "cloudflarestatus.com", + "cloudfront.net", + "cloudinary.com", + "crunchyroll.com", + "deepmind.com", + "deepmind.google.com", + "discord.com", + "discord.gg", + "discord.media", + "discordapp.com", + "discordapp.net", + "disney-plus.net", + "disneyplus.com", + "docker.com", + "docker.io", + "dssott.com", + "duckduckgo.com", + "ea.com", + "eaassets.com", + "epicgames.com", + "facebook.com", + "fastly.net", + "fastlylb.net", + "fb.com", + "fbcdn.net", + "fbsbx.com", + "figma.com", + "gemini.google.com", + "generativeai.googleapis.com", + "ggpht.com", + "ghcr.io", + "github.com", + "github.io", + "githubassets.com", + "githubcopilot.com", + "githubusercontent.com", + "gitlab.com", + "gitlab.io", + "gog.com", + "google", + "google-analytics.com", + "google.co.jp", + "google.com", + "google.com.hk", + "googleapis.com", + "googlehosted.com", + "googletagmanager.com", + "googleusercontent.com", + "googlevideo.com", + "grok.com", + "gstatic.com", + "hf.co", + "huggingface.co", + "huggingfacecdn.com", + "hulu.com", + "imgur.com", + "instagram.com", + "itch.io", + "jsdelivr.net", + "leagueoflegends.com", + "licdn.com", + "line-apps.com", + "line-scdn.net", + "line.me", + "linkedin.com", + "linux.do", + "live.com", + "max.com", + "medium.com", + "messenger.com", + "meta.ai", + "meta.com", + "microsoft.com", + "microsoft365.com", + "microsoftonline.com", + "midjourney.com", + "msecnd.net", + "msftncsi.com", + "msn.com", + "netflix.com", + "netlify.app", + "netlify.com", + "nflxext.com", + "nflximg.net", + "nflxvideo.net", + "nico.ms", + "nicovideo.jp", + "nintendo.com", + "nintendowifi.net", + "oaistatic.com", + "oaiusercontent.com", + "office.com", + "office.net", + "openai.com", + "openaiusercontent.com", + "origin.com", + "pages.dev", + "paramountplus.com", + "patreon.com", + "paypal.com", + "paypalobjects.com", + "perplexity.ai", + "pinimg.com", + "pinterest.com", + "pixiv.net", + "playstation.com", + "poe.com", + "primevideo.com", + "proton.me", + "protonmail.com", + "protonvpn.com", + "pximg.net", + "quora.com", + "redd.it", + "reddit.com", + "redditmedia.com", + "redditstatic.com", + "riotgames.com", + "s-microsoft.com", + "s.team", + "sc-cdn.net", + "scdn.co", + "search.brave.com", + "serverfault.com", + "signal.org", + "slack-edge.com", + "slack-imgs.com", + "slack.com", + "snapchat.com", + "sonyentertainmentnetwork.com", + "spotify.com", + "spotifycdn.com", + "stackexchange.com", + "stackoverflow.com", + "statically.io", + "steam-api.com", + "steam-chat.com", + "steam.com", + "steamcdn-a.akamaihd.net", + "steamcommunity-a.akamaihd.net", + "steamcommunity.com", + "steamcontent.com", + "steamgames.com", + "steampowered.com", + "steamserver.net", + "steamstatic.com", + "steamstore-a.akamaihd.net", + "steamusercontent.com", + "steamuserimages-a.akamaihd.net", + "superuser.com", + "t.me", + "telega.one", + "telegram-cdn.org", + "telegram.org", + "threads.net", + "tiktok.com", + "tiktokcdn.com", + "tiktokv.com", + "ttvnw.net", + "tumblr.com", + "tv.apple.com", + "tvplus.apple.com", + "twimg.com", + "twitch.tv", + "twitchcdn.net", + "twitter.com", + "ubi.com", + "ubisoft.com", + "unpkg.com", + "unrealengine.com", + "valorant.com", + "valvesoftware.com", + "vercel.app", + "vercel.com", + "whatsapp.com", + "whatsapp.net", + "wikimedia.org", + "wikipedia.org", + "workers.dev", + "x.ai", + "x.com", + "xai.com", + "youtube.com", + "ytimg.com", + "zoom.com", + "zoom.us", + "zoomgov.com" + ] +} \ No newline at end of file diff --git a/lite/pac_ip_cn.json b/lite/pac_ip_cn.json new file mode 100644 index 0000000..33912a9 --- /dev/null +++ b/lite/pac_ip_cn.json @@ -0,0 +1,7463 @@ +{ + "_comment": "中国 IPv4 地址段(CIDR 列表)。智能分流依据:解析到的 IP 命中列表 → 直连,未命中 → 走加密隧道。来源: 17mon/china_ip_list,可整体替换为更新版列表。EXE 同目录的 pac_ip_cn.json 优先于打包内置版本。", + "source": "https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt", + "updated": "2026-08-16", + "cidrs": [ + "1.0.1.0/24", + "1.0.2.0/23", + "1.0.8.0/21", + "1.0.32.0/19", + "1.1.0.0/24", + "1.1.2.0/23", + "1.1.4.0/22", + "1.1.9.0/24", + "1.1.10.0/23", + "1.1.12.0/22", + "1.1.16.0/20", + "1.1.32.0/19", + "1.2.0.0/23", + "1.2.2.0/24", + "1.2.4.0/22", + "1.2.8.0/21", + "1.2.16.0/20", + "1.2.32.0/19", + "1.2.64.0/18", + "1.3.0.0/16", + "1.4.1.0/24", + "1.4.2.0/23", + "1.4.4.0/22", + "1.4.8.0/21", + "1.4.16.0/20", + "1.4.32.0/19", + "1.4.64.0/18", + "1.8.0.0/16", + "1.10.0.0/21", + "1.10.8.0/23", + "1.10.11.0/24", + "1.10.12.0/22", + "1.10.16.0/20", + "1.10.32.0/19", + "1.10.64.0/18", + "1.12.16.0/20", + "1.12.32.0/23", + "1.12.36.0/22", + "1.12.40.0/21", + "1.12.48.0/20", + "1.12.64.0/18", + "1.12.128.0/17", + "1.13.0.0/16", + "1.14.0.0/15", + "1.18.128.0/24", + "1.24.0.0/13", + "1.45.0.0/16", + "1.48.0.0/14", + "1.56.0.0/13", + "1.68.0.0/14", + "1.80.0.0/12", + "1.116.0.0/15", + "1.118.1.0/24", + "1.118.3.0/24", + "1.118.4.0/22", + "1.118.8.0/21", + "1.118.16.0/20", + "1.118.36.0/22", + "1.118.40.0/21", + "1.118.48.0/20", + "1.118.64.0/18", + "1.118.128.0/17", + "1.119.0.0/16", + "1.180.0.0/14", + "1.184.0.0/15", + "1.188.0.0/14", + "1.192.0.0/13", + "1.202.0.0/15", + "1.204.0.0/14", + "5.154.155.54/31", + "5.154.155.58/31", + "5.154.156.38/31", + "5.154.156.42/31", + "5.154.156.50/31", + "5.154.156.54/31", + "8.128.0.0/12", + "8.144.0.0/14", + "8.148.0.0/19", + "8.148.32.0/22", + "8.148.36.0/23", + "8.148.38.0/24", + "8.148.42.0/24", + "8.148.44.0/22", + "8.148.48.0/20", + "8.148.64.0/18", + "8.148.128.0/17", + "8.149.0.0/16", + "8.150.0.0/15", + "8.152.0.0/13", + "8.160.0.0/11", + "13.104.184.80/28", + "14.0.0.0/21", + "14.0.12.0/22", + "14.1.0.0/22", + "14.1.24.0/22", + "14.1.108.0/22", + "14.16.0.0/12", + "14.102.128.0/22", + "14.102.180.0/22", + "14.103.0.0/16", + "14.104.0.0/13", + "14.112.0.0/12", + "14.130.0.0/15", + "14.134.0.0/15", + "14.144.0.0/12", + "14.192.61.0/24", + "14.192.62.0/23", + "14.192.76.0/22", + "14.196.0.0/15", + "14.204.0.0/15", + "14.208.0.0/12", + "15.32.104.0/23", + "15.36.64.0/22", + "15.36.75.0/24", + "15.36.76.0/22", + "15.36.101.0/24", + "15.36.102.0/24", + "15.36.116.0/23", + "15.40.80.0/23", + "15.40.83.0/24", + "15.79.88.0/22", + "15.89.164.0/22", + "15.230.41.0/24", + "15.230.49.0/24", + "15.230.141.0/24", + "15.248.5.228/30", + "16.2.142.0/23", + "17.85.6.64/29", + "17.85.34.0/25", + "17.85.38.72/31", + "17.85.164.128/25", + "17.85.192.0/20", + "17.87.0.0/21", + "17.87.9.0/24", + "17.87.10.0/23", + "17.87.12.0/23", + "17.87.16.32/27", + "17.87.16.64/26", + "17.87.16.128/25", + "17.87.17.0/24", + "17.87.18.0/23", + "17.87.20.0/22", + "17.87.24.0/21", + "17.87.72.224/31", + "17.87.112.0/21", + "17.87.138.160/31", + "17.87.144.16/28", + "17.87.145.192/27", + "17.87.245.0/24", + "17.88.2.16/28", + "17.88.73.0/31", + "17.88.75.0/24", + "17.88.80.160/31", + "17.88.96.144/31", + "17.88.104.64/31", + "17.88.108.0/23", + "17.88.112.126/31", + "17.88.118.0/27", + "17.88.207.192/32", + "17.93.8.0/21", + "17.93.24.0/21", + "17.93.48.0/20", + "17.93.64.0/20", + "17.93.96.0/19", + "17.93.136.0/21", + "17.93.152.0/21", + "17.93.184.0/21", + "17.93.200.0/21", + "17.93.208.0/20", + "17.93.224.0/22", + "17.93.232.0/21", + "17.94.0.22/32", + "17.94.0.54/32", + "17.94.0.93/32", + "17.94.3.0/31", + "17.94.3.248/29", + "17.94.16.0/20", + "17.94.32.0/19", + "17.94.64.0/18", + "17.94.128.0/18", + "17.94.192.0/19", + "17.94.224.0/20", + "17.94.240.0/21", + "17.127.128.0/23", + "17.127.130.0/24", + "17.235.160.0/20", + "27.0.128.0/21", + "27.0.160.0/21", + "27.0.188.0/22", + "27.0.204.0/22", + "27.0.208.0/21", + "27.8.0.0/13", + "27.16.0.0/12", + "27.34.232.0/21", + "27.36.0.0/14", + "27.40.0.0/13", + "27.50.40.0/21", + "27.50.128.0/17", + "27.54.72.0/21", + "27.54.152.0/21", + "27.54.192.0/18", + "27.98.208.0/20", + "27.98.224.0/19", + "27.103.0.0/16", + "27.106.128.0/18", + "27.106.204.0/22", + "27.109.32.0/19", + "27.109.124.0/22", + "27.112.0.0/18", + "27.112.80.0/20", + "27.112.112.0/21", + "27.113.128.0/18", + "27.115.0.0/17", + "27.116.44.0/22", + "27.121.72.0/21", + "27.121.120.0/21", + "27.128.0.0/15", + "27.131.220.0/22", + "27.144.0.0/16", + "27.148.0.0/14", + "27.152.0.0/13", + "27.184.0.0/13", + "27.192.0.0/11", + "27.224.0.0/14", + "36.0.0.0/22", + "36.0.8.0/21", + "36.0.16.0/20", + "36.0.32.0/19", + "36.0.64.0/18", + "36.1.0.0/16", + "36.4.0.0/14", + "36.16.0.0/12", + "36.32.0.0/14", + "36.36.0.0/16", + "36.37.0.0/19", + "36.37.36.0/23", + "36.37.39.0/24", + "36.37.40.0/21", + "36.37.48.0/20", + "36.40.0.0/13", + "36.48.0.0/15", + "36.50.226.0/23", + "36.50.254.0/23", + "36.51.0.0/17", + "36.51.128.0/18", + "36.51.192.0/19", + "36.51.227.0/24", + "36.51.228.0/22", + "36.51.232.0/21", + "36.51.240.0/21", + "36.51.249.0/24", + "36.51.250.0/23", + "36.51.252.0/23", + "36.56.0.0/13", + "36.96.0.0/11", + "36.128.0.0/10", + "36.192.0.0/11", + "36.248.0.0/14", + "36.254.0.0/16", + "36.255.116.0/22", + "36.255.128.0/22", + "36.255.164.0/22", + "36.255.172.0/22", + "36.255.176.0/23", + "36.255.179.0/24", + "39.0.0.0/24", + "39.0.2.0/23", + "39.0.4.0/22", + "39.0.8.0/21", + "39.0.16.0/20", + "39.0.32.0/19", + "39.0.64.0/18", + "39.0.128.0/17", + "39.64.0.0/11", + "39.96.0.0/16", + "39.97.0.0/17", + "39.97.128.0/18", + "39.97.192.0/21", + "39.97.200.0/22", + "39.97.208.0/20", + "39.97.224.0/19", + "39.98.0.0/15", + "39.100.0.0/14", + "39.104.0.0/14", + "39.108.0.0/16", + "39.128.0.0/10", + "40.0.176.0/20", + "40.0.248.0/21", + "40.72.0.0/15", + "40.77.136.112/28", + "40.77.236.224/27", + "40.77.254.64/27", + "40.125.128.0/17", + "40.126.64.0/18", + "40.162.0.0/16", + "40.198.10.0/24", + "40.198.16.0/21", + "40.198.24.0/23", + "40.251.225.0/24", + "40.251.227.0/24", + "42.0.0.0/22", + "42.0.8.0/21", + "42.0.16.0/21", + "42.0.24.0/22", + "42.0.32.0/19", + "42.1.0.0/19", + "42.1.32.0/20", + "42.1.48.0/21", + "42.1.56.0/22", + "42.1.128.0/17", + "42.4.0.0/14", + "42.48.0.0/13", + "42.56.0.0/14", + "42.62.0.0/17", + "42.62.128.0/19", + "42.62.160.0/20", + "42.62.180.0/22", + "42.62.184.0/21", + "42.63.0.0/16", + "42.80.0.0/15", + "42.83.64.0/20", + "42.83.80.0/22", + "42.83.88.0/21", + "42.83.96.0/19", + "42.83.128.0/23", + "42.83.135.0/24", + "42.83.136.0/21", + "42.83.144.0/20", + "42.83.160.0/19", + "42.83.192.0/18", + "42.84.0.0/14", + "42.88.0.0/13", + "42.96.64.0/19", + "42.96.96.0/21", + "42.96.108.0/22", + "42.96.112.0/20", + "42.96.128.0/17", + "42.97.0.0/16", + "42.99.0.0/18", + "42.99.64.0/19", + "42.99.96.0/20", + "42.99.112.0/22", + "42.99.120.0/21", + "42.100.0.0/14", + "42.120.0.0/15", + "42.122.0.0/16", + "42.123.0.0/19", + "42.123.36.0/22", + "42.123.40.0/21", + "42.123.48.0/20", + "42.123.64.0/18", + "42.123.128.0/17", + "42.128.0.0/12", + "42.156.0.0/19", + "42.156.36.0/22", + "42.156.40.0/21", + "42.156.48.0/20", + "42.156.64.0/18", + "42.156.128.0/18", + "42.156.192.0/19", + "42.156.224.0/20", + "42.156.240.0/21", + "42.156.248.0/22", + "42.156.252.0/26", + "42.156.252.64/27", + "42.156.252.96/29", + "42.156.252.106/31", + "42.156.252.110/31", + "42.156.252.112/31", + "42.156.252.116/30", + "42.156.252.120/29", + "42.156.252.128/26", + "42.156.252.192/27", + "42.156.252.224/30", + "42.156.252.232/29", + "42.156.252.240/28", + "42.156.253.0/24", + "42.156.254.0/23", + "42.157.0.0/16", + "42.158.0.0/15", + "42.160.0.0/12", + "42.176.0.0/13", + "42.184.0.0/15", + "42.186.0.0/16", + "42.187.0.0/18", + "42.187.64.0/19", + "42.187.96.0/20", + "42.187.112.0/21", + "42.187.120.0/22", + "42.187.128.0/17", + "42.192.0.0/13", + "42.201.0.0/17", + "42.202.0.0/15", + "42.204.0.0/14", + "42.208.0.0/12", + "42.224.0.0/12", + "42.240.0.0/16", + "42.242.0.0/15", + "42.244.0.0/14", + "42.248.0.0/13", + "43.0.0.0/10", + "43.64.0.0/12", + "43.80.0.0/13", + "43.88.0.0/15", + "43.90.0.0/16", + "43.92.0.0/17", + "43.93.0.0/16", + "43.94.0.0/15", + "43.96.6.0/24", + "43.96.30.0/23", + "43.96.37.0/24", + "43.96.38.0/24", + "43.96.41.0/24", + "43.96.42.0/23", + "43.96.44.0/22", + "43.96.48.0/20", + "43.96.79.0/24", + "43.96.82.0/24", + "43.96.86.0/23", + "43.96.89.0/24", + "43.96.90.0/23", + "43.96.92.0/22", + "43.96.98.0/23", + "43.96.100.0/22", + "43.96.104.0/21", + "43.96.112.0/20", + "43.96.128.0/17", + "43.97.0.0/16", + "43.98.0.0/15", + "43.100.0.0/14", + "43.104.0.0/13", + "43.112.0.0/12", + "43.135.224.0/19", + "43.136.0.0/13", + "43.144.0.0/13", + "43.152.16.0/24", + "43.152.38.0/23", + "43.152.46.0/24", + "43.152.48.0/24", + "43.152.118.0/23", + "43.152.120.0/21", + "43.152.141.0/24", + "43.152.165.0/24", + "43.152.167.0/24", + "43.152.189.0/24", + "43.152.191.0/24", + "43.159.66.0/24", + "43.159.68.0/24", + "43.159.75.0/24", + "43.159.76.0/24", + "43.159.92.0/24", + "43.159.101.0/24", + "43.164.64.0/18", + "43.166.192.0/19", + "43.168.0.0/14", + "43.172.0.0/21", + "43.172.8.0/22", + "43.172.12.0/23", + "43.172.14.0/24", + "43.172.16.0/20", + "43.172.32.0/19", + "43.172.64.0/18", + "43.172.128.0/17", + "43.174.107.0/24", + "43.174.108.0/22", + "43.174.112.0/20", + "43.174.128.0/18", + "43.174.202.0/24", + "43.174.208.0/20", + "43.174.226.0/23", + "43.174.228.0/22", + "43.174.232.0/21", + "43.174.240.0/21", + "43.174.252.0/22", + "43.175.223.0/24", + "43.176.0.0/12", + "43.192.0.0/14", + "43.196.0.0/15", + "43.224.12.0/22", + "43.224.24.0/22", + "43.224.44.0/22", + "43.224.52.0/22", + "43.224.56.0/22", + "43.224.68.0/22", + "43.224.72.0/22", + "43.224.80.0/22", + "43.224.100.0/22", + "43.224.160.0/22", + "43.224.176.0/22", + "43.224.184.0/22", + "43.224.200.0/21", + "43.224.208.0/21", + "43.224.216.0/22", + "43.224.240.0/23", + "43.224.242.0/24", + "43.225.76.0/22", + "43.225.86.0/24", + "43.225.120.0/22", + "43.225.180.0/22", + "43.225.208.0/22", + "43.225.216.0/21", + "43.225.224.0/20", + "43.225.240.0/21", + "43.225.252.0/22", + "43.226.32.0/19", + "43.226.64.0/19", + "43.226.96.0/20", + "43.226.112.0/21", + "43.226.120.0/22", + "43.226.128.0/18", + "43.226.192.0/20", + "43.226.208.0/21", + "43.226.236.0/22", + "43.226.240.0/20", + "43.227.0.0/21", + "43.227.8.0/22", + "43.227.32.0/19", + "43.227.64.0/19", + "43.227.96.0/21", + "43.227.104.0/22", + "43.227.136.0/21", + "43.227.144.0/22", + "43.227.152.0/21", + "43.227.160.0/20", + "43.227.176.0/21", + "43.227.188.0/22", + "43.227.192.0/19", + "43.227.232.0/22", + "43.227.248.0/21", + "43.228.0.0/18", + "43.228.64.0/21", + "43.228.76.0/22", + "43.228.100.0/22", + "43.228.116.0/22", + "43.228.132.0/22", + "43.228.136.0/22", + "43.228.148.0/22", + "43.228.152.0/22", + "43.228.188.0/22", + "43.228.204.0/22", + "43.228.240.0/22", + "43.229.40.0/22", + "43.229.48.0/22", + "43.229.56.0/22", + "43.229.96.0/22", + "43.229.136.0/21", + "43.229.168.0/21", + "43.229.176.0/20", + "43.229.192.0/21", + "43.229.216.0/21", + "43.229.232.0/21", + "43.230.20.0/22", + "43.230.32.0/22", + "43.230.68.0/22", + "43.230.72.0/22", + "43.230.124.0/22", + "43.230.220.0/22", + "43.230.224.0/19", + "43.231.32.0/20", + "43.231.80.0/20", + "43.231.96.0/20", + "43.231.136.0/21", + "43.231.144.0/20", + "43.231.160.0/20", + "43.231.176.0/21", + "43.236.0.0/17", + "43.236.128.0/18", + "43.236.192.0/19", + "43.236.224.0/20", + "43.236.240.0/21", + "43.236.248.0/22", + "43.236.253.0/24", + "43.236.254.0/23", + "43.237.0.0/21", + "43.237.11.0/24", + "43.237.12.0/22", + "43.237.16.0/20", + "43.237.32.0/22", + "43.237.37.0/24", + "43.237.40.0/21", + "43.237.48.0/20", + "43.237.64.0/18", + "43.237.128.0/18", + "43.237.192.0/22", + "43.237.200.0/21", + "43.237.208.0/21", + "43.237.217.0/24", + "43.237.219.0/24", + "43.237.220.0/22", + "43.237.224.0/19", + "43.238.0.0/17", + "43.238.128.0/20", + "43.238.145.0/24", + "43.238.146.0/23", + "43.238.148.0/22", + "43.238.152.0/21", + "43.238.160.0/19", + "43.238.192.0/18", + "43.239.0.0/19", + "43.239.32.0/20", + "43.239.48.0/22", + "43.239.116.0/22", + "43.239.120.0/22", + "43.239.172.0/22", + "43.240.0.0/22", + "43.240.56.0/21", + "43.240.68.0/22", + "43.240.72.0/21", + "43.240.84.0/22", + "43.240.124.0/22", + "43.240.128.0/21", + "43.240.136.0/22", + "43.240.156.0/22", + "43.240.160.0/19", + "43.240.192.0/19", + "43.240.240.0/20", + "43.241.0.0/20", + "43.241.16.0/21", + "43.241.48.0/22", + "43.241.76.0/22", + "43.241.80.0/20", + "43.241.112.0/22", + "43.241.168.0/21", + "43.241.176.0/21", + "43.241.184.0/22", + "43.241.208.0/20", + "43.241.224.0/20", + "43.241.240.0/22", + "43.242.8.0/21", + "43.242.16.0/20", + "43.242.48.0/22", + "43.242.53.0/24", + "43.242.54.0/24", + "43.242.56.0/21", + "43.242.64.0/22", + "43.242.72.0/21", + "43.242.80.0/20", + "43.242.96.0/22", + "43.242.144.0/20", + "43.242.160.0/21", + "43.242.168.0/22", + "43.242.180.0/22", + "43.242.188.0/22", + "43.242.192.0/21", + "43.242.204.0/22", + "43.242.216.0/21", + "43.242.252.0/22", + "43.243.4.0/22", + "43.243.8.0/21", + "43.243.16.0/22", + "43.243.88.0/22", + "43.243.128.0/22", + "43.243.136.0/22", + "43.243.144.0/21", + "43.243.156.0/22", + "43.243.180.0/22", + "43.243.228.0/22", + "43.243.232.0/22", + "43.243.244.0/22", + "43.246.0.0/18", + "43.246.64.0/19", + "43.246.96.0/22", + "43.246.112.0/24", + "43.246.228.0/22", + "43.247.4.0/22", + "43.247.8.0/22", + "43.247.44.0/22", + "43.247.48.0/22", + "43.247.68.0/22", + "43.247.76.0/22", + "43.247.84.0/22", + "43.247.88.0/21", + "43.247.96.0/21", + "43.247.108.0/22", + "43.247.112.0/22", + "43.247.148.0/22", + "43.247.152.0/22", + "43.247.176.0/20", + "43.247.196.0/22", + "43.247.200.0/21", + "43.247.208.0/20", + "43.247.224.0/19", + "43.248.0.0/21", + "43.248.20.0/22", + "43.248.28.0/22", + "43.248.48.0/22", + "43.248.76.0/22", + "43.248.80.0/20", + "43.248.96.0/19", + "43.248.128.0/20", + "43.248.144.0/21", + "43.248.177.0/24", + "43.248.178.0/23", + "43.248.180.0/22", + "43.248.184.0/21", + "43.248.192.0/20", + "43.248.208.0/22", + "43.248.228.0/22", + "43.248.232.0/22", + "43.248.244.0/22", + "43.249.4.0/22", + "43.249.120.0/22", + "43.249.132.0/22", + "43.249.136.0/22", + "43.249.144.0/20", + "43.249.160.0/21", + "43.249.168.0/22", + "43.249.192.0/22", + "43.249.236.0/22", + "43.250.4.0/22", + "43.250.12.0/25", + "43.250.12.128/29", + "43.250.12.136/31", + "43.250.12.140/30", + "43.250.12.144/28", + "43.250.12.160/28", + "43.250.12.176/30", + "43.250.12.182/31", + "43.250.12.184/29", + "43.250.12.192/26", + "43.250.13.0/24", + "43.250.14.0/25", + "43.250.14.128/29", + "43.250.14.136/31", + "43.250.14.140/30", + "43.250.14.144/28", + "43.250.14.160/28", + "43.250.14.176/30", + "43.250.14.182/31", + "43.250.14.184/29", + "43.250.14.192/26", + "43.250.15.0/24", + "43.250.16.0/21", + "43.250.28.0/22", + "43.250.32.0/21", + "43.250.96.0/21", + "43.250.107.0/24", + "43.250.108.0/22", + "43.250.112.0/22", + "43.250.128.0/22", + "43.250.144.0/21", + "43.250.160.0/22", + "43.250.168.0/22", + "43.250.176.0/22", + "43.250.200.0/22", + "43.250.212.0/22", + "43.250.216.0/21", + "43.250.236.0/22", + "43.250.244.0/22", + "43.251.4.0/22", + "43.251.9.0/24", + "43.251.10.0/23", + "43.251.36.0/22", + "43.251.192.0/22", + "43.251.232.0/22", + "43.251.244.0/22", + "43.252.48.0/22", + "43.252.56.0/22", + "43.254.0.0/21", + "43.254.8.0/22", + "43.254.24.0/22", + "43.254.36.0/22", + "43.254.44.0/22", + "43.254.52.0/22", + "43.254.64.0/22", + "43.254.72.0/22", + "43.254.84.0/22", + "43.254.88.0/21", + "43.254.100.0/22", + "43.254.104.0/22", + "43.254.112.0/21", + "43.254.136.0/21", + "43.254.144.0/20", + "43.254.168.0/21", + "43.254.180.0/22", + "43.254.184.0/21", + "43.254.192.0/21", + "43.254.200.0/22", + "43.254.208.0/22", + "43.254.220.0/22", + "43.254.224.0/20", + "43.254.240.0/22", + "43.254.248.0/21", + "43.255.0.0/21", + "43.255.8.0/22", + "43.255.16.0/22", + "43.255.48.0/22", + "43.255.64.0/20", + "43.255.84.0/22", + "43.255.96.0/22", + "43.255.144.0/22", + "43.255.176.0/22", + "43.255.184.0/22", + "43.255.192.0/22", + "43.255.200.0/21", + "43.255.208.0/21", + "43.255.224.0/21", + "43.255.232.0/22", + "43.255.244.0/22", + "45.40.192.0/20", + "45.40.208.0/21", + "45.40.224.0/19", + "45.65.16.0/20", + "45.112.132.0/22", + "45.112.188.0/22", + "45.112.208.0/21", + "45.112.216.0/22", + "45.112.220.0/23", + "45.112.222.0/26", + "45.112.222.64/27", + "45.112.222.96/29", + "45.112.222.106/31", + "45.112.222.108/30", + "45.112.222.112/28", + "45.112.222.130/31", + "45.112.222.132/30", + "45.112.222.136/29", + "45.112.222.146/31", + "45.112.222.150/31", + "45.112.222.152/29", + "45.112.222.160/27", + "45.112.222.192/26", + "45.112.223.0/24", + "45.112.228.0/22", + "45.112.232.0/21", + "45.113.12.0/22", + "45.113.16.0/20", + "45.113.40.0/22", + "45.113.56.0/22", + "45.113.72.0/22", + "45.113.144.0/21", + "45.113.168.0/22", + "45.113.176.0/22", + "45.113.184.0/22", + "45.113.200.0/21", + "45.113.208.0/20", + "45.113.240.0/22", + "45.113.252.0/22", + "45.114.0.0/22", + "45.114.32.0/22", + "45.114.40.0/22", + "45.114.52.0/22", + "45.114.96.0/22", + "45.114.136.0/22", + "45.114.196.0/22", + "45.114.200.0/22", + "45.114.228.0/22", + "45.114.252.0/22", + "45.115.44.0/22", + "45.115.100.0/22", + "45.115.120.0/22", + "45.115.132.0/22", + "45.115.144.0/22", + "45.115.156.0/22", + "45.115.164.0/22", + "45.115.200.0/22", + "45.115.212.0/22", + "45.115.244.0/22", + "45.115.248.0/22", + "45.116.16.0/22", + "45.116.24.0/22", + "45.116.32.0/21", + "45.116.52.0/22", + "45.116.96.0/21", + "45.116.140.0/22", + "45.116.152.0/22", + "45.116.208.0/22", + "45.117.8.0/22", + "45.117.20.0/22", + "45.117.68.0/22", + "45.117.124.0/22", + "45.117.252.0/22", + "45.119.60.0/22", + "45.119.64.0/21", + "45.119.72.0/22", + "45.119.104.0/22", + "45.119.116.0/22", + "45.119.232.0/22", + "45.120.100.0/22", + "45.120.140.0/22", + "45.120.164.0/22", + "45.120.180.128/27", + "45.120.182.0/24", + "45.120.240.0/24", + "45.120.242.0/23", + "45.121.52.0/22", + "45.121.64.0/21", + "45.121.72.0/22", + "45.121.92.0/22", + "45.121.96.0/22", + "45.121.172.0/22", + "45.121.176.0/22", + "45.121.240.0/20", + "45.122.0.0/19", + "45.122.32.0/21", + "45.122.40.0/22", + "45.122.60.0/22", + "45.122.64.0/19", + "45.122.96.0/20", + "45.122.112.0/21", + "45.122.160.0/19", + "45.122.192.0/20", + "45.122.208.0/21", + "45.122.216.0/22", + "45.123.28.0/22", + "45.123.32.0/21", + "45.123.44.0/22", + "45.123.48.0/20", + "45.123.64.0/20", + "45.123.80.0/21", + "45.123.120.0/22", + "45.123.128.0/21", + "45.123.136.0/22", + "45.123.148.0/22", + "45.123.152.0/21", + "45.123.164.0/22", + "45.123.168.0/21", + "45.123.176.0/21", + "45.123.184.0/22", + "45.123.204.0/22", + "45.123.212.0/22", + "45.123.224.0/19", + "45.124.0.0/22", + "45.124.20.0/22", + "45.124.28.0/22", + "45.124.32.0/21", + "45.124.44.0/22", + "45.124.68.0/22", + "45.124.76.0/22", + "45.124.80.0/22", + "45.124.100.0/22", + "45.124.124.0/22", + "45.124.172.0/22", + "45.124.176.0/22", + "45.124.208.0/22", + "45.124.248.0/22", + "45.125.24.0/22", + "45.125.44.0/22", + "45.125.52.0/22", + "45.125.56.0/22", + "45.125.76.0/22", + "45.125.80.0/20", + "45.125.96.0/21", + "45.125.136.0/23", + "45.125.138.0/24", + "45.126.48.0/21", + "45.126.100.0/22", + "45.126.108.0/22", + "45.126.112.0/21", + "45.126.120.0/22", + "45.126.220.0/23", + "45.126.222.0/24", + "45.127.8.0/21", + "45.127.128.0/22", + "45.127.144.0/21", + "45.127.156.0/22", + "45.248.8.0/22", + "45.248.80.0/21", + "45.248.88.0/22", + "45.248.96.0/20", + "45.248.128.0/21", + "45.248.204.0/22", + "45.248.208.0/20", + "45.248.224.0/19", + "45.249.0.0/21", + "45.249.12.0/22", + "45.249.16.0/20", + "45.249.32.0/21", + "45.249.112.0/22", + "45.249.188.0/22", + "45.249.192.0/20", + "45.249.208.0/21", + "45.250.12.0/22", + "45.250.16.0/22", + "45.250.28.0/22", + "45.250.32.0/21", + "45.250.40.0/22", + "45.250.76.0/22", + "45.250.80.0/20", + "45.250.96.0/22", + "45.250.104.0/21", + "45.250.112.0/20", + "45.250.128.0/20", + "45.250.144.0/21", + "45.250.152.0/22", + "45.250.164.0/22", + "45.250.180.0/22", + "45.250.184.0/21", + "45.250.192.0/22", + "45.251.0.0/22", + "45.251.8.0/22", + "45.251.16.0/21", + "45.251.54.0/23", + "45.251.84.0/22", + "45.251.88.0/21", + "45.251.96.0/21", + "45.251.120.0/21", + "45.251.140.0/22", + "45.251.144.0/20", + "45.251.160.0/19", + "45.251.192.0/19", + "45.251.224.0/22", + "45.252.0.0/21", + "45.252.9.0/24", + "45.252.10.0/23", + "45.252.12.0/22", + "45.252.16.0/20", + "45.252.32.0/20", + "45.252.48.0/22", + "45.252.84.0/22", + "45.252.88.0/21", + "45.252.96.0/19", + "45.252.128.0/19", + "45.252.160.0/20", + "45.252.176.0/22", + "45.252.192.0/19", + "45.252.224.0/21", + "45.252.232.0/22", + "45.253.0.0/18", + "45.253.64.0/20", + "45.253.80.0/21", + "45.253.92.0/22", + "45.253.96.0/20", + "45.253.112.0/21", + "45.253.120.0/22", + "45.253.132.0/22", + "45.253.136.0/21", + "45.253.144.0/20", + "45.253.160.0/19", + "45.253.192.0/19", + "45.253.224.0/20", + "45.253.240.0/22", + "45.254.0.0/20", + "45.254.16.0/21", + "45.254.28.0/22", + "45.254.40.0/22", + "45.254.48.0/20", + "45.254.64.0/18", + "45.254.128.0/18", + "45.254.192.0/19", + "45.254.224.0/21", + "45.254.236.0/22", + "45.254.240.0/22", + "45.254.248.0/22", + "45.255.0.0/18", + "45.255.64.0/19", + "45.255.96.0/20", + "45.255.112.0/21", + "45.255.120.0/22", + "45.255.136.0/21", + "45.255.144.0/20", + "45.255.160.0/19", + "45.255.192.0/19", + "45.255.224.0/20", + "45.255.240.0/21", + "45.255.248.0/22", + "46.248.24.0/23", + "47.92.0.0/14", + "47.96.0.0/11", + "49.4.0.0/17", + "49.4.128.0/22", + "49.4.160.0/20", + "49.4.178.0/23", + "49.4.180.0/22", + "49.4.184.0/21", + "49.4.192.0/18", + "49.5.0.0/16", + "49.6.0.0/15", + "49.51.57.0/24", + "49.51.58.0/23", + "49.51.60.0/23", + "49.51.110.0/23", + "49.51.112.0/20", + "49.52.0.0/14", + "49.64.0.0/11", + "49.112.0.0/13", + "49.120.0.0/14", + "49.128.0.0/24", + "49.128.2.0/23", + "49.128.4.0/22", + "49.140.0.0/15", + "49.152.0.0/14", + "49.208.0.0/14", + "49.220.0.0/14", + "49.232.0.0/14", + "49.239.0.0/18", + "49.239.192.0/18", + "49.246.224.0/23", + "49.246.228.0/22", + "49.246.232.0/23", + "49.246.236.0/22", + "49.246.240.0/20", + "52.80.0.0/14", + "52.93.242.120/29", + "52.93.242.128/25", + "52.94.249.0/27", + "52.130.0.0/15", + "54.222.0.0/15", + "54.240.224.0/24", + "57.176.0.0/15", + "58.14.0.0/21", + "58.14.16.0/20", + "58.14.32.0/19", + "58.14.64.0/18", + "58.14.128.0/17", + "58.15.0.0/16", + "58.16.0.0/13", + "58.24.0.0/15", + "58.30.0.0/15", + "58.32.0.0/11", + "58.65.232.0/21", + "58.66.0.0/18", + "58.66.192.0/18", + "58.67.0.0/16", + "58.68.128.0/19", + "58.68.160.0/21", + "58.68.200.0/21", + "58.68.208.0/20", + "58.68.224.0/19", + "58.82.0.0/17", + "58.83.0.0/16", + "58.87.64.0/18", + "58.99.128.0/17", + "58.100.0.0/15", + "58.116.0.0/14", + "58.128.0.0/13", + "58.144.0.0/16", + "58.154.0.0/15", + "58.192.0.0/11", + "58.240.0.0/12", + "59.32.0.0/11", + "59.64.0.0/12", + "59.80.0.0/14", + "59.107.0.0/17", + "59.107.128.0/18", + "59.107.252.0/22", + "59.108.0.0/14", + "59.151.0.0/17", + "59.152.16.0/20", + "59.152.36.0/22", + "59.152.64.0/20", + "59.152.112.0/21", + "59.153.4.0/22", + "59.153.32.0/22", + "59.153.64.0/21", + "59.153.72.0/22", + "59.153.92.0/22", + "59.153.136.0/22", + "59.153.152.0/22", + "59.153.164.0/22", + "59.153.168.0/21", + "59.153.176.0/20", + "59.153.192.0/22", + "59.155.0.0/16", + "59.172.0.0/14", + "59.191.0.0/17", + "59.192.0.0/10", + "60.0.0.0/11", + "60.55.0.0/16", + "60.63.0.0/16", + "60.160.0.0/11", + "60.194.0.0/15", + "60.200.0.0/13", + "60.208.0.0/12", + "60.232.0.0/15", + "60.235.0.0/16", + "60.245.128.0/17", + "60.247.0.0/16", + "60.252.0.0/16", + "60.253.128.0/17", + "60.255.0.0/16", + "61.4.80.0/20", + "61.4.176.0/20", + "61.8.160.0/20", + "61.14.212.0/22", + "61.14.216.0/21", + "61.14.240.0/21", + "61.28.0.0/17", + "61.29.128.0/18", + "61.29.194.0/23", + "61.29.196.0/23", + "61.29.198.0/24", + "61.29.201.0/24", + "61.29.202.0/23", + "61.29.204.0/22", + "61.29.208.0/23", + "61.29.212.0/22", + "61.29.216.0/21", + "61.29.224.0/21", + "61.29.232.0/23", + "61.29.235.0/24", + "61.29.236.0/22", + "61.45.128.0/18", + "61.45.224.0/20", + "61.47.128.0/18", + "61.48.0.0/13", + "61.87.192.0/18", + "61.128.0.0/10", + "61.232.0.0/14", + "61.236.0.0/15", + "61.240.0.0/14", + "62.234.0.0/16", + "64.235.230.152/30", + "65.97.55.248/29", + "66.119.149.0/24", + "67.220.137.144/28", + "68.79.0.0/18", + "69.230.192.0/18", + "69.231.128.0/18", + "69.234.192.0/18", + "69.235.128.0/18", + "71.131.192.0/18", + "71.132.0.0/18", + "71.136.64.0/18", + "71.137.0.0/18", + "72.163.240.0/23", + "72.163.248.0/22", + "81.68.0.0/14", + "82.156.0.0/15", + "87.254.207.0/24", + "93.113.109.8/29", + "93.113.109.24/29", + "93.113.109.104/29", + "93.113.109.136/29", + "93.113.109.152/29", + "93.113.109.232/29", + "93.183.14.0/24", + "93.183.18.0/24", + "94.191.0.0/17", + "101.0.0.0/22", + "101.1.0.0/22", + "101.2.172.0/22", + "101.4.0.0/14", + "101.16.0.0/12", + "101.33.128.0/17", + "101.34.0.0/15", + "101.36.0.0/18", + "101.36.64.0/20", + "101.36.82.0/23", + "101.36.85.0/24", + "101.36.86.0/23", + "101.36.88.0/21", + "101.36.128.0/17", + "101.37.0.0/16", + "101.38.0.0/15", + "101.40.0.0/14", + "101.48.0.0/15", + "101.50.8.0/21", + "101.50.56.0/22", + "101.52.0.0/16", + "101.53.100.0/22", + "101.54.0.0/16", + "101.55.224.0/21", + "101.64.0.0/13", + "101.72.0.0/14", + "101.76.0.0/15", + "101.78.0.0/22", + "101.78.32.0/19", + "101.80.0.0/12", + "101.96.0.0/21", + "101.96.8.0/22", + "101.96.16.0/20", + "101.96.128.0/17", + "101.99.96.0/19", + "101.101.64.0/19", + "101.101.100.0/24", + "101.101.102.0/23", + "101.101.104.0/21", + "101.101.112.0/20", + "101.102.64.0/19", + "101.102.100.0/23", + "101.102.102.0/24", + "101.102.104.0/21", + "101.102.112.0/20", + "101.104.0.0/14", + "101.110.64.0/19", + "101.110.96.0/20", + "101.110.116.0/22", + "101.110.120.0/21", + "101.120.0.0/14", + "101.124.0.0/15", + "101.126.0.0/16", + "101.128.0.0/22", + "101.128.8.0/21", + "101.128.16.0/20", + "101.128.32.0/19", + "101.129.0.0/16", + "101.130.0.0/15", + "101.132.0.0/15", + "101.134.0.0/16", + "101.135.0.0/19", + "101.135.32.0/24", + "101.135.34.0/23", + "101.135.36.0/22", + "101.135.40.0/21", + "101.135.48.0/20", + "101.135.64.0/18", + "101.135.128.0/17", + "101.144.0.0/12", + "101.192.0.0/14", + "101.196.0.0/16", + "101.198.0.0/17", + "101.198.128.0/19", + "101.198.170.0/23", + "101.198.172.0/22", + "101.198.176.0/21", + "101.198.184.0/22", + "101.198.189.0/24", + "101.198.190.0/23", + "101.198.196.0/22", + "101.198.200.0/21", + "101.198.208.0/20", + "101.198.224.0/19", + "101.199.0.0/16", + "101.200.0.0/15", + "101.203.128.0/19", + "101.203.160.0/21", + "101.203.172.0/22", + "101.203.176.0/20", + "101.204.0.0/14", + "101.224.0.0/13", + "101.232.0.0/15", + "101.234.64.0/21", + "101.234.76.0/22", + "101.234.80.0/20", + "101.234.96.0/19", + "101.236.0.0/14", + "101.240.0.0/13", + "101.248.0.0/15", + "101.251.0.0/22", + "101.251.8.0/21", + "101.251.16.0/20", + "101.251.32.0/19", + "101.251.64.0/18", + "101.251.128.0/17", + "101.252.0.0/15", + "101.254.0.0/16", + "103.1.8.0/22", + "103.1.20.0/22", + "103.1.24.0/22", + "103.1.72.0/22", + "103.1.88.0/22", + "103.1.168.0/22", + "103.2.108.0/22", + "103.2.156.0/22", + "103.2.164.0/22", + "103.2.188.0/23", + "103.2.200.0/21", + "103.2.208.0/21", + "103.3.84.0/22", + "103.3.88.0/21", + "103.3.96.0/19", + "103.3.128.0/20", + "103.3.148.0/22", + "103.3.152.0/21", + "103.4.56.0/22", + "103.4.168.0/22", + "103.4.184.0/22", + "103.4.224.0/22", + "103.5.36.0/22", + "103.5.52.0/23", + "103.5.56.0/22", + "103.5.152.0/22", + "103.5.168.0/22", + "103.5.192.0/22", + "103.5.252.0/22", + "103.6.76.0/22", + "103.6.108.0/22", + "103.6.220.0/22", + "103.6.228.0/22", + "103.7.140.0/22", + "103.7.212.0/22", + "103.7.216.0/21", + "103.8.0.0/21", + "103.8.8.0/22", + "103.8.32.0/22", + "103.8.52.0/22", + "103.8.68.0/22", + "103.8.108.0/22", + "103.8.156.0/22", + "103.8.200.0/21", + "103.8.220.0/22", + "103.9.8.0/22", + "103.9.24.0/22", + "103.9.108.0/22", + "103.9.152.0/22", + "103.9.248.0/21", + "103.10.0.0/22", + "103.10.16.0/22", + "103.10.84.0/22", + "103.10.140.0/22", + "103.11.16.0/22", + "103.11.168.0/22", + "103.11.180.0/22", + "103.12.32.0/22", + "103.12.98.0/23", + "103.12.136.0/22", + "103.12.184.0/22", + "103.12.232.0/22", + "103.13.12.0/22", + "103.13.124.0/22", + "103.13.145.0/24", + "103.13.147.0/24", + "103.13.196.0/22", + "103.13.244.0/22", + "103.14.84.0/22", + "103.14.132.0/22", + "103.14.136.0/22", + "103.14.156.0/22", + "103.14.240.0/22", + "103.15.4.0/22", + "103.15.8.0/22", + "103.15.16.0/22", + "103.15.96.0/22", + "103.15.200.0/22", + "103.16.52.0/22", + "103.16.80.0/21", + "103.16.88.0/22", + "103.16.108.0/22", + "103.16.124.0/22", + "103.17.40.0/22", + "103.17.64.0/22", + "103.17.120.0/22", + "103.17.136.0/22", + "103.17.160.0/22", + "103.17.204.0/22", + "103.17.228.0/22", + "103.18.186.0/23", + "103.18.192.0/22", + "103.18.208.0/21", + "103.18.224.0/22", + "103.19.12.0/22", + "103.19.40.0/21", + "103.19.64.0/21", + "103.19.72.0/22", + "103.19.232.0/22", + "103.20.12.0/22", + "103.20.32.0/23", + "103.20.34.0/24", + "103.20.68.0/22", + "103.20.112.0/22", + "103.20.128.0/22", + "103.20.160.0/22", + "103.20.248.0/22", + "103.21.98.0/23", + "103.21.102.0/23", + "103.21.112.0/21", + "103.21.140.0/22", + "103.21.176.0/22", + "103.21.240.0/22", + "103.22.0.0/18", + "103.22.64.0/19", + "103.22.100.0/22", + "103.22.104.0/21", + "103.22.112.0/20", + "103.22.157.0/24", + "103.22.188.0/22", + "103.22.228.0/22", + "103.22.252.0/22", + "103.23.8.0/22", + "103.23.56.0/22", + "103.23.160.0/21", + "103.23.176.0/22", + "103.23.228.0/22", + "103.24.24.0/22", + "103.24.83.232/31", + "103.24.83.236/30", + "103.24.83.249/32", + "103.24.83.250/32", + "103.24.83.253/32", + "103.24.116.0/22", + "103.24.128.0/22", + "103.24.144.0/22", + "103.24.176.0/22", + "103.24.184.0/22", + "103.24.228.0/22", + "103.24.252.0/22", + "103.25.20.0/22", + "103.25.24.0/21", + "103.25.32.0/21", + "103.25.40.0/22", + "103.25.48.0/22", + "103.25.64.0/21", + "103.25.148.0/22", + "103.25.156.0/22", + "103.25.216.0/22", + "103.26.0.0/22", + "103.26.64.0/22", + "103.26.76.0/22", + "103.26.132.0/22", + "103.26.156.0/22", + "103.26.160.0/22", + "103.26.228.0/22", + "103.26.240.0/22", + "103.27.4.0/22", + "103.27.12.0/22", + "103.27.24.0/22", + "103.27.56.0/22", + "103.27.96.0/22", + "103.27.240.0/22", + "103.28.4.0/22", + "103.28.8.0/22", + "103.28.184.0/22", + "103.28.204.0/22", + "103.28.212.0/22", + "103.29.16.0/22", + "103.29.24.0/23", + "103.29.29.0/24", + "103.29.128.0/21", + "103.29.136.0/22", + "103.29.236.0/23", + "103.30.20.0/22", + "103.30.96.0/22", + "103.30.104.0/22", + "103.30.148.0/22", + "103.30.228.0/22", + "103.30.236.0/22", + "103.31.0.0/22", + "103.31.48.0/20", + "103.31.64.0/21", + "103.31.148.0/22", + "103.31.160.0/22", + "103.31.168.0/22", + "103.31.200.0/22", + "103.31.237.0/24", + "103.31.239.0/24", + "103.31.242.0/23", + "103.32.0.0/15", + "103.34.0.0/16", + "103.35.0.0/19", + "103.35.32.0/20", + "103.35.48.0/22", + "103.35.104.0/22", + "103.35.220.0/22", + "103.36.28.0/22", + "103.36.36.0/22", + "103.36.56.0/21", + "103.36.64.0/22", + "103.36.72.0/22", + "103.36.96.0/22", + "103.36.132.0/22", + "103.36.136.0/22", + "103.36.160.0/21", + "103.36.168.0/23", + "103.36.172.0/22", + "103.36.176.0/20", + "103.36.192.0/19", + "103.36.224.0/20", + "103.36.240.0/21", + "103.37.12.0/22", + "103.37.16.0/22", + "103.37.24.0/22", + "103.37.44.0/22", + "103.37.52.0/22", + "103.37.56.0/22", + "103.37.72.0/22", + "103.37.100.0/22", + "103.37.104.0/22", + "103.37.136.0/21", + "103.37.144.0/20", + "103.37.160.0/21", + "103.37.172.0/22", + "103.37.176.0/22", + "103.37.188.0/22", + "103.37.208.0/20", + "103.37.252.0/22", + "103.38.0.0/22", + "103.38.32.0/22", + "103.38.40.0/21", + "103.38.56.0/22", + "103.38.76.0/22", + "103.38.84.0/22", + "103.38.92.0/22", + "103.38.96.0/22", + "103.38.116.0/22", + "103.38.132.0/22", + "103.38.140.0/22", + "103.38.224.0/21", + "103.38.232.0/22", + "103.38.252.0/23", + "103.39.64.0/22", + "103.39.88.0/22", + "103.39.100.0/22", + "103.39.104.0/22", + "103.39.160.0/19", + "103.39.200.0/21", + "103.39.208.0/20", + "103.39.224.0/21", + "103.39.232.0/22", + "103.40.12.0/22", + "103.40.16.0/20", + "103.40.32.0/20", + "103.40.88.0/22", + "103.40.158.0/23", + "103.40.192.0/22", + "103.40.212.0/22", + "103.40.220.0/22", + "103.40.228.0/22", + "103.40.232.0/21", + "103.40.240.0/20", + "103.41.0.0/22", + "103.41.52.0/22", + "103.41.116.0/22", + "103.41.127.0/24", + "103.41.140.0/25", + "103.41.140.128/28", + "103.41.140.144/29", + "103.41.140.154/31", + "103.41.140.158/31", + "103.41.140.162/31", + "103.41.140.166/31", + "103.41.140.168/29", + "103.41.140.176/28", + "103.41.140.192/26", + "103.41.141.0/24", + "103.41.142.0/23", + "103.41.148.0/22", + "103.41.152.0/22", + "103.41.160.0/21", + "103.41.220.0/22", + "103.41.224.0/21", + "103.41.232.0/22", + "103.42.8.0/22", + "103.42.24.0/22", + "103.42.32.0/22", + "103.42.64.0/21", + "103.42.76.0/22", + "103.42.232.0/22", + "103.43.96.0/21", + "103.43.105.0/24", + "103.43.106.0/23", + "103.43.124.0/22", + "103.43.132.0/22", + "103.43.184.0/22", + "103.43.192.0/21", + "103.43.208.0/22", + "103.43.220.0/22", + "103.43.224.0/22", + "103.43.240.0/22", + "103.44.58.0/23", + "103.44.80.0/22", + "103.44.120.0/21", + "103.44.144.0/22", + "103.44.168.0/22", + "103.44.176.0/20", + "103.44.192.0/22", + "103.44.196.0/23", + "103.44.199.0/24", + "103.44.200.0/21", + "103.44.224.0/22", + "103.44.236.0/22", + "103.44.240.0/20", + "103.45.0.0/19", + "103.45.32.0/21", + "103.45.41.0/24", + "103.45.42.0/23", + "103.45.44.0/22", + "103.45.48.0/20", + "103.45.72.0/21", + "103.45.80.0/20", + "103.45.96.0/19", + "103.45.128.0/18", + "103.45.192.0/19", + "103.45.224.0/22", + "103.45.248.0/22", + "103.46.0.0/22", + "103.46.12.0/22", + "103.46.16.0/20", + "103.46.32.0/19", + "103.46.64.0/18", + "103.46.128.0/21", + "103.46.136.0/22", + "103.46.152.0/21", + "103.46.160.0/20", + "103.46.176.0/21", + "103.46.244.0/22", + "103.46.248.0/22", + "103.47.4.0/22", + "103.47.20.0/22", + "103.47.36.0/22", + "103.47.40.0/22", + "103.47.48.0/22", + "103.47.80.0/22", + "103.47.96.0/22", + "103.47.116.0/22", + "103.47.120.0/22", + "103.47.136.0/21", + "103.47.212.0/22", + "103.48.52.0/22", + "103.48.92.0/22", + "103.48.148.0/22", + "103.48.152.0/22", + "103.48.202.0/23", + "103.48.216.0/21", + "103.48.224.0/20", + "103.48.240.0/21", + "103.49.12.0/22", + "103.49.20.0/22", + "103.49.72.0/21", + "103.49.96.0/22", + "103.49.108.0/22", + "103.49.176.0/21", + "103.49.197.0/24", + "103.49.212.0/24", + "103.49.214.0/24", + "103.50.36.0/22", + "103.50.44.0/22", + "103.50.48.0/20", + "103.50.64.0/21", + "103.50.72.0/22", + "103.50.108.0/22", + "103.50.112.0/20", + "103.50.132.0/22", + "103.50.136.0/21", + "103.50.172.0/22", + "103.50.176.0/20", + "103.50.192.0/21", + "103.50.200.0/22", + "103.50.220.0/22", + "103.50.224.0/20", + "103.50.240.0/21", + "103.50.248.0/22", + "103.52.40.0/22", + "103.52.72.0/23", + "103.52.74.0/25", + "103.52.74.128/26", + "103.52.74.192/27", + "103.52.74.224/28", + "103.52.74.240/30", + "103.52.74.252/30", + "103.52.75.0/24", + "103.52.76.0/30", + "103.52.76.8/29", + "103.52.76.20/30", + "103.52.76.32/29", + "103.52.76.40/30", + "103.52.76.44/31", + "103.52.76.48/29", + "103.52.76.56/30", + "103.52.76.64/26", + "103.52.76.128/26", + "103.52.76.192/27", + "103.52.76.224/29", + "103.52.76.232/30", + "103.52.76.244/30", + "103.52.76.248/29", + "103.52.77.0/28", + "103.52.77.16/29", + "103.52.77.24/30", + "103.52.77.32/27", + "103.52.77.64/28", + "103.52.77.80/29", + "103.52.77.92/30", + "103.52.77.96/27", + "103.52.77.128/27", + "103.52.77.160/28", + "103.52.77.176/29", + "103.52.77.188/30", + "103.52.77.192/26", + "103.52.78.4/30", + "103.52.78.8/29", + "103.52.78.16/28", + "103.52.78.32/29", + "103.52.78.40/30", + "103.52.78.48/30", + "103.52.78.56/29", + "103.52.78.64/30", + "103.52.78.76/30", + "103.52.78.80/28", + "103.52.78.96/29", + "103.52.78.104/30", + "103.52.78.112/28", + "103.52.78.128/28", + "103.52.78.144/29", + "103.52.78.156/30", + "103.52.78.160/29", + "103.52.78.168/30", + "103.52.78.176/28", + "103.52.78.192/28", + "103.52.78.212/30", + "103.52.78.216/29", + "103.52.78.232/29", + "103.52.78.240/28", + "103.52.79.0/27", + "103.52.79.32/29", + "103.52.79.40/30", + "103.52.79.48/28", + "103.52.79.64/26", + "103.52.79.128/25", + "103.52.80.0/21", + "103.52.96.0/21", + "103.52.104.0/22", + "103.52.160.0/21", + "103.52.172.0/22", + "103.52.176.0/22", + "103.52.184.0/22", + "103.52.196.0/22", + "103.53.64.0/21", + "103.53.92.0/22", + "103.53.100.0/22", + "103.53.124.0/22", + "103.53.128.0/20", + "103.53.144.0/22", + "103.53.181.0/24", + "103.53.182.0/23", + "103.53.204.0/22", + "103.53.208.0/21", + "103.53.236.0/22", + "103.53.248.0/22", + "103.54.8.0/22", + "103.54.48.0/22", + "103.54.160.0/21", + "103.54.212.0/22", + "103.54.240.0/22", + "103.55.5.35/32", + "103.55.5.73/32", + "103.55.80.0/22", + "103.55.120.0/22", + "103.55.152.0/22", + "103.55.172.0/22", + "103.55.204.0/22", + "103.55.208.0/22", + "103.55.228.0/22", + "103.55.236.0/22", + "103.56.20.0/22", + "103.56.32.0/22", + "103.56.56.0/21", + "103.56.72.0/21", + "103.56.94.0/23", + "103.56.100.0/22", + "103.56.104.0/22", + "103.56.140.0/22", + "103.56.152.0/22", + "103.56.184.0/22", + "103.56.200.0/22", + "103.57.12.0/22", + "103.57.52.0/22", + "103.57.56.0/22", + "103.57.76.0/22", + "103.57.136.0/22", + "103.57.196.0/22", + "103.58.24.0/22", + "103.59.76.0/22", + "103.59.112.0/21", + "103.59.120.0/23", + "103.59.124.0/22", + "103.59.128.0/22", + "103.59.148.0/22", + "103.59.164.0/22", + "103.59.168.0/23", + "103.60.32.0/22", + "103.60.44.0/22", + "103.60.164.0/22", + "103.60.228.0/22", + "103.60.236.0/22", + "103.61.60.0/24", + "103.61.104.0/22", + "103.61.140.0/22", + "103.61.152.0/21", + "103.61.160.0/22", + "103.61.172.0/22", + "103.61.176.0/22", + "103.61.188.0/22", + "103.62.24.0/22", + "103.62.72.0/21", + "103.62.80.0/21", + "103.62.88.0/22", + "103.62.96.0/19", + "103.62.128.0/21", + "103.62.156.0/22", + "103.62.160.0/19", + "103.62.192.0/22", + "103.62.204.0/22", + "103.62.208.0/20", + "103.62.224.0/22", + "103.63.32.0/19", + "103.63.64.0/20", + "103.63.80.0/21", + "103.63.88.0/22", + "103.63.140.0/22", + "103.63.144.0/22", + "103.63.152.0/22", + "103.63.160.0/20", + "103.63.176.0/21", + "103.63.184.0/22", + "103.63.192.0/20", + "103.63.208.0/22", + "103.63.240.0/20", + "103.64.0.0/21", + "103.64.24.0/21", + "103.64.32.0/19", + "103.64.64.0/18", + "103.64.140.0/22", + "103.64.144.0/22", + "103.64.152.0/21", + "103.64.160.0/19", + "103.64.192.0/18", + "103.65.0.0/20", + "103.65.16.0/22", + "103.65.48.0/20", + "103.65.64.0/19", + "103.65.100.0/22", + "103.65.104.0/21", + "103.65.112.0/22", + "103.65.144.0/20", + "103.65.160.0/20", + "103.65.204.0/22", + "103.65.224.0/23", + "103.66.32.0/22", + "103.66.40.0/22", + "103.66.108.0/22", + "103.66.200.0/22", + "103.66.240.0/20", + "103.67.0.0/21", + "103.67.8.0/22", + "103.67.100.0/22", + "103.67.104.0/21", + "103.67.112.0/20", + "103.67.128.0/20", + "103.67.144.0/21", + "103.67.172.0/24", + "103.67.175.0/24", + "103.67.192.0/22", + "103.67.212.0/22", + "103.68.88.0/22", + "103.68.100.0/22", + "103.68.128.0/22", + "103.69.16.0/22", + "103.69.62.0/23", + "103.70.8.0/22", + "103.70.14.0/23", + "103.70.148.0/22", + "103.70.236.0/22", + "103.70.252.0/22", + "103.71.0.0/22", + "103.71.68.0/22", + "103.71.72.0/22", + "103.71.80.0/21", + "103.71.88.0/22", + "103.71.120.0/21", + "103.71.128.0/22", + "103.71.196.0/22", + "103.71.200.0/22", + "103.71.232.0/22", + "103.72.12.0/22", + "103.72.16.0/20", + "103.72.32.0/20", + "103.72.48.0/21", + "103.72.112.0/21", + "103.72.124.0/22", + "103.72.128.0/21", + "103.72.172.0/22", + "103.72.180.0/22", + "103.72.224.0/19", + "103.73.0.0/19", + "103.73.48.0/22", + "103.73.99.0/24", + "103.73.116.0/22", + "103.73.120.0/22", + "103.73.128.0/20", + "103.73.144.0/22", + "103.73.168.0/22", + "103.73.176.0/22", + "103.73.204.0/22", + "103.73.208.0/22", + "103.73.244.0/22", + "103.73.248.0/22", + "103.74.24.0/21", + "103.74.32.0/20", + "103.74.48.0/22", + "103.74.56.0/21", + "103.74.80.0/22", + "103.74.124.0/22", + "103.74.148.0/22", + "103.74.152.0/21", + "103.74.204.0/22", + "103.74.232.0/22", + "103.75.83.0/24", + "103.75.88.0/21", + "103.75.104.0/21", + "103.75.112.0/22", + "103.75.120.0/22", + "103.75.128.0/22", + "103.75.144.0/22", + "103.75.152.0/22", + "103.76.60.0/22", + "103.76.64.0/21", + "103.76.72.0/22", + "103.76.92.0/22", + "103.76.216.0/21", + "103.76.224.0/22", + "103.77.28.0/22", + "103.77.52.0/22", + "103.77.56.0/22", + "103.77.88.0/22", + "103.77.132.0/22", + "103.77.148.0/22", + "103.77.220.0/22", + "103.78.56.0/21", + "103.78.64.0/22", + "103.78.124.0/22", + "103.78.172.0/22", + "103.78.176.0/22", + "103.78.196.0/22", + "103.78.228.0/22", + "103.79.24.0/21", + "103.79.36.0/22", + "103.79.40.0/21", + "103.79.56.0/21", + "103.79.64.0/21", + "103.79.80.0/21", + "103.79.136.0/22", + "103.79.188.0/22", + "103.79.192.0/20", + "103.79.208.0/21", + "103.79.228.0/23", + "103.80.44.0/22", + "103.80.72.0/22", + "103.80.176.0/21", + "103.80.184.0/22", + "103.80.192.0/22", + "103.80.200.0/22", + "103.80.232.0/22", + "103.81.4.0/22", + "103.81.8.0/22", + "103.81.16.0/21", + "103.81.44.0/22", + "103.81.48.0/22", + "103.81.96.0/22", + "103.81.120.0/22", + "103.81.148.0/22", + "103.81.164.0/22", + "103.81.200.0/22", + "103.81.232.0/22", + "103.82.60.0/22", + "103.82.68.0/22", + "103.82.84.0/22", + "103.82.104.0/22", + "103.82.224.0/22", + "103.82.236.0/22", + "103.83.44.0/22", + "103.83.52.0/22", + "103.83.60.0/22", + "103.83.72.0/22", + "103.83.112.0/22", + "103.83.180.0/22", + "103.84.0.0/22", + "103.84.12.0/22", + "103.84.16.0/20", + "103.84.48.0/22", + "103.84.64.0/22", + "103.84.72.0/22", + "103.84.170.0/23", + "103.85.44.0/22", + "103.85.48.0/22", + "103.85.84.0/22", + "103.85.136.0/22", + "103.85.144.0/22", + "103.85.164.0/22", + "103.85.168.0/21", + "103.85.176.0/22", + "103.85.186.0/23", + "103.86.28.0/22", + "103.86.32.0/22", + "103.86.60.0/22", + "103.86.80.0/22", + "103.86.204.0/22", + "103.86.208.0/20", + "103.86.224.0/19", + "103.87.0.0/21", + "103.87.20.0/22", + "103.87.32.0/22", + "103.87.96.0/22", + "103.87.132.0/22", + "103.87.180.0/22", + "103.87.224.0/22", + "103.88.4.0/22", + "103.88.8.0/21", + "103.88.16.0/21", + "103.88.32.0/21", + "103.88.60.0/22", + "103.88.64.0/22", + "103.88.72.0/22", + "103.88.96.0/22", + "103.88.164.0/22", + "103.88.212.0/22", + "103.89.28.0/22", + "103.89.96.0/20", + "103.89.112.0/21", + "103.89.148.0/22", + "103.89.172.0/22", + "103.89.184.0/21", + "103.89.192.0/19", + "103.89.224.0/21", + "103.90.51.0/24", + "103.90.52.0/22", + "103.90.56.0/23", + "103.90.92.0/22", + "103.90.100.0/22", + "103.90.104.0/21", + "103.90.112.0/20", + "103.90.128.0/21", + "103.90.152.0/22", + "103.90.168.0/22", + "103.90.173.0/24", + "103.90.176.0/22", + "103.90.188.0/22", + "103.90.192.0/22", + "103.91.36.0/22", + "103.91.40.0/22", + "103.91.108.0/22", + "103.91.112.0/23", + "103.91.138.0/23", + "103.91.152.0/22", + "103.91.176.0/22", + "103.91.200.0/22", + "103.91.208.0/21", + "103.91.236.0/22", + "103.91.252.0/22", + "103.92.0.0/21", + "103.92.8.0/22", + "103.92.12.0/23", + "103.92.48.0/20", + "103.92.64.0/20", + "103.92.80.0/22", + "103.92.88.0/22", + "103.92.108.0/22", + "103.92.124.0/22", + "103.92.132.0/24", + "103.92.134.0/23", + "103.92.156.0/22", + "103.92.164.0/22", + "103.92.168.0/21", + "103.92.176.0/20", + "103.92.192.0/22", + "103.92.236.0/22", + "103.92.240.0/20", + "103.93.0.0/21", + "103.93.28.0/22", + "103.93.84.0/22", + "103.93.142.0/23", + "103.93.152.0/22", + "103.93.180.0/22", + "103.93.204.0/22", + "103.94.12.0/22", + "103.94.20.0/22", + "103.94.32.0/20", + "103.94.72.0/22", + "103.94.88.0/22", + "103.94.116.0/22", + "103.94.160.0/22", + "103.94.200.0/22", + "103.95.52.0/22", + "103.95.68.0/22", + "103.95.88.0/21", + "103.95.136.0/21", + "103.95.144.0/22", + "103.95.152.0/22", + "103.95.216.0/21", + "103.95.224.0/22", + "103.95.236.0/22", + "103.95.240.0/20", + "103.96.8.0/22", + "103.96.124.0/22", + "103.96.136.0/22", + "103.96.152.0/21", + "103.96.160.0/19", + "103.96.192.0/20", + "103.96.208.0/21", + "103.96.216.0/22", + "103.96.224.0/23", + "103.97.16.0/20", + "103.97.40.0/22", + "103.97.60.0/23", + "103.97.64.0/21", + "103.97.112.0/21", + "103.97.144.0/21", + "103.97.188.0/22", + "103.97.192.0/22", + "103.98.0.0/23", + "103.98.40.0/21", + "103.98.48.0/22", + "103.98.56.0/22", + "103.98.80.0/22", + "103.98.88.0/22", + "103.98.100.0/22", + "103.98.124.0/24", + "103.98.126.0/24", + "103.98.136.0/21", + "103.98.144.0/22", + "103.98.164.0/22", + "103.98.168.0/22", + "103.98.180.0/22", + "103.98.196.0/22", + "103.98.216.0/21", + "103.98.224.0/21", + "103.98.232.0/22", + "103.98.240.0/21", + "103.98.248.0/23", + "103.98.252.0/22", + "103.99.56.0/22", + "103.99.104.0/22", + "103.99.116.0/22", + "103.99.120.0/22", + "103.99.152.0/22", + "103.99.220.0/22", + "103.99.232.0/21", + "103.100.0.0/22", + "103.100.32.0/22", + "103.100.40.0/22", + "103.100.48.0/22", + "103.100.56.0/22", + "103.100.64.0/22", + "103.100.88.0/22", + "103.100.116.0/22", + "103.100.144.0/22", + "103.100.240.0/22", + "103.100.248.0/21", + "103.101.8.0/21", + "103.101.60.0/22", + "103.101.121.0/24", + "103.101.122.0/23", + "103.101.124.0/24", + "103.101.126.0/23", + "103.101.144.0/21", + "103.101.180.0/22", + "103.101.184.0/22", + "103.102.76.0/22", + "103.102.80.0/22", + "103.102.168.0/21", + "103.102.180.0/22", + "103.102.184.0/21", + "103.102.192.0/22", + "103.102.196.0/24", + "103.102.200.0/22", + "103.102.208.0/21", + "103.103.12.0/22", + "103.103.16.0/22", + "103.103.36.0/22", + "103.103.68.0/22", + "103.103.72.0/22", + "103.103.188.0/22", + "103.103.200.0/21", + "103.103.221.0/24", + "103.103.222.0/23", + "103.103.224.0/21", + "103.103.232.0/22", + "103.103.248.0/21", + "103.104.0.0/21", + "103.104.36.0/22", + "103.104.40.0/22", + "103.104.64.0/22", + "103.104.152.0/22", + "103.104.188.0/22", + "103.104.252.0/22", + "103.105.0.0/21", + "103.105.12.0/22", + "103.105.16.0/22", + "103.105.60.0/22", + "103.105.116.0/22", + "103.105.180.0/22", + "103.105.184.0/22", + "103.105.200.0/21", + "103.105.220.0/22", + "103.106.36.0/22", + "103.106.40.0/21", + "103.106.60.0/22", + "103.106.68.0/22", + "103.106.96.0/22", + "103.106.120.0/22", + "103.106.128.0/21", + "103.106.196.0/22", + "103.106.212.0/22", + "103.106.252.0/22", + "103.107.0.0/22", + "103.107.28.0/22", + "103.107.32.0/22", + "103.107.44.0/22", + "103.107.72.0/22", + "103.107.164.0/22", + "103.107.168.0/22", + "103.107.188.0/22", + "103.107.192.0/22", + "103.107.208.0/20", + "103.108.52.0/22", + "103.108.160.0/21", + "103.108.196.0/22", + "103.108.208.0/21", + "103.108.224.0/22", + "103.108.244.0/22", + "103.109.20.0/22", + "103.109.48.0/22", + "103.109.88.0/22", + "103.109.248.0/22", + "103.110.92.0/22", + "103.110.116.0/23", + "103.110.119.0/24", + "103.110.132.0/22", + "103.110.136.0/22", + "103.110.156.0/22", + "103.110.188.0/22", + "103.110.204.0/22", + "103.111.64.0/22", + "103.111.172.0/22", + "103.111.252.0/22", + "103.112.72.0/22", + "103.112.88.0/21", + "103.112.108.0/22", + "103.112.112.0/22", + "103.112.140.0/22", + "103.113.4.0/22", + "103.113.220.0/22", + "103.113.232.0/21", + "103.114.4.0/22", + "103.114.28.0/22", + "103.114.68.0/22", + "103.114.100.0/22", + "103.114.148.0/22", + "103.114.176.0/22", + "103.114.212.0/22", + "103.114.236.0/22", + "103.114.240.0/22", + "103.115.52.0/22", + "103.115.68.0/22", + "103.115.92.0/22", + "103.115.120.0/22", + "103.115.148.0/22", + "103.115.248.0/22", + "103.116.42.0/24", + "103.116.76.0/22", + "103.116.92.0/22", + "103.116.120.0/22", + "103.116.128.0/22", + "103.116.138.0/23", + "103.116.184.0/22", + "103.116.220.0/22", + "103.116.224.0/21", + "103.117.16.0/22", + "103.117.73.0/24", + "103.117.74.0/23", + "103.117.88.0/22", + "103.117.188.0/22", + "103.117.220.0/22", + "103.118.52.0/22", + "103.118.56.0/21", + "103.118.64.0/21", + "103.118.72.0/22", + "103.118.88.0/22", + "103.118.173.0/24", + "103.119.28.0/22", + "103.119.115.0/24", + "103.119.156.0/22", + "103.119.180.0/22", + "103.119.200.0/22", + "103.119.224.0/23", + "103.119.227.0/24", + "103.120.52.0/22", + "103.120.72.0/22", + "103.120.88.0/22", + "103.120.96.0/22", + "103.120.140.0/22", + "103.120.196.0/22", + "103.120.224.0/22", + "103.121.52.0/22", + "103.121.160.0/21", + "103.121.252.0/22", + "103.122.48.0/22", + "103.122.192.0/22", + "103.122.240.0/23", + "103.122.242.0/24", + "103.123.4.0/22", + "103.123.56.0/22", + "103.123.88.0/21", + "103.123.116.0/22", + "103.123.176.0/22", + "103.123.200.0/21", + "103.123.208.0/21", + "103.124.24.0/22", + "103.124.48.0/22", + "103.124.64.0/22", + "103.124.212.0/22", + "103.124.216.0/22", + "103.125.20.0/22", + "103.125.44.0/22", + "103.125.132.0/22", + "103.125.164.0/22", + "103.125.196.0/22", + "103.125.236.0/22", + "103.125.249.0/24", + "103.125.250.0/23", + "103.126.0.0/22", + "103.126.16.0/23", + "103.126.44.0/22", + "103.126.124.0/22", + "103.126.128.0/22", + "103.129.55.0/24", + "103.130.132.0/22", + "103.130.160.0/22", + "103.130.228.0/22", + "103.131.20.0/22", + "103.131.36.0/22", + "103.131.138.0/23", + "103.131.152.0/22", + "103.131.168.0/22", + "103.131.224.0/21", + "103.131.240.0/22", + "103.132.22.0/23", + "103.132.60.0/22", + "103.132.64.0/20", + "103.132.80.0/22", + "103.132.104.0/21", + "103.132.112.0/21", + "103.132.120.0/22", + "103.132.188.0/22", + "103.132.208.0/21", + "103.133.12.0/22", + "103.133.40.0/22", + "103.133.128.0/22", + "103.133.232.0/22", + "103.134.196.0/22", + "103.134.232.0/23", + "103.135.80.0/22", + "103.135.124.0/22", + "103.135.148.0/22", + "103.135.156.0/22", + "103.135.160.0/21", + "103.135.176.0/22", + "103.135.184.0/22", + "103.135.192.0/21", + "103.135.236.0/22", + "103.136.128.0/22", + "103.136.232.0/22", + "103.137.58.0/23", + "103.137.60.0/24", + "103.137.136.0/23", + "103.137.180.0/22", + "103.137.236.0/22", + "103.138.2.0/23", + "103.138.135.0/24", + "103.138.208.0/23", + "103.138.220.0/23", + "103.138.248.0/23", + "103.139.22.0/23", + "103.139.134.0/23", + "103.139.172.0/23", + "103.139.204.0/23", + "103.139.212.0/23", + "103.140.14.0/23", + "103.140.140.0/23", + "103.140.192.0/23", + "103.141.10.0/23", + "103.141.58.0/23", + "103.141.128.0/23", + "103.141.186.0/23", + "103.141.242.0/23", + "103.142.28.0/23", + "103.142.58.0/23", + "103.142.82.0/23", + "103.142.96.0/23", + "103.142.122.0/23", + "103.142.128.0/23", + "103.142.154.0/23", + "103.142.156.0/23", + "103.142.172.0/23", + "103.142.180.0/23", + "103.142.186.0/23", + "103.142.234.0/23", + "103.142.238.0/23", + "103.143.16.0/22", + "103.143.74.0/23", + "103.143.124.0/23", + "103.143.132.0/22", + "103.143.174.0/23", + "103.143.228.0/23", + "103.144.66.0/23", + "103.144.70.0/23", + "103.144.72.0/23", + "103.144.136.0/23", + "103.144.158.0/23", + "103.145.42.0/23", + "103.145.98.0/23", + "103.145.188.0/23", + "103.146.72.0/23", + "103.146.91.0/24", + "103.146.126.0/23", + "103.146.138.0/23", + "103.146.236.0/23", + "103.146.252.0/23", + "103.147.124.0/23", + "103.147.206.0/23", + "103.148.174.0/23", + "103.149.6.0/23", + "103.149.17.0/24", + "103.149.44.0/23", + "103.149.210.0/23", + "103.149.214.0/23", + "103.149.220.0/23", + "103.149.242.0/23", + "103.149.244.0/22", + "103.150.10.0/23", + "103.150.24.0/23", + "103.150.66.0/23", + "103.150.72.0/23", + "103.150.122.0/23", + "103.150.126.0/23", + "103.150.128.0/23", + "103.150.146.0/23", + "103.150.164.0/23", + "103.150.172.0/23", + "103.150.200.0/23", + "103.150.216.0/23", + "103.150.244.0/23", + "103.151.142.0/23", + "103.151.148.0/23", + "103.151.158.0/23", + "103.152.28.0/22", + "103.152.56.0/23", + "103.152.76.0/23", + "103.152.120.0/22", + "103.152.152.0/23", + "103.152.168.0/23", + "103.152.186.0/23", + "103.152.192.0/23", + "103.152.200.0/23", + "103.152.208.0/23", + "103.152.224.0/23", + "103.152.250.0/23", + "103.153.114.0/23", + "103.153.122.0/23", + "103.153.132.0/23", + "103.153.146.0/23", + "103.153.160.0/23", + "103.154.18.0/23", + "103.154.30.0/23", + "103.154.32.0/23", + "103.154.40.0/23", + "103.154.66.0/23", + "103.154.162.0/23", + "103.154.164.0/23", + "103.154.168.0/23", + "103.155.14.0/23", + "103.155.34.0/23", + "103.155.48.0/23", + "103.155.76.0/23", + "103.155.120.0/23", + "103.155.248.0/23", + "103.156.28.0/23", + "103.156.68.0/23", + "103.156.78.0/23", + "103.156.104.0/23", + "103.156.158.0/23", + "103.156.174.0/23", + "103.156.186.0/23", + "103.156.228.0/23", + "103.157.30.0/23", + "103.157.174.0/23", + "103.157.212.0/23", + "103.157.234.0/23", + "103.157.254.0/23", + "103.158.0.0/23", + "103.158.8.0/23", + "103.158.16.0/23", + "103.158.200.0/23", + "103.158.222.241/32", + "103.158.224.0/23", + "103.159.80.0/23", + "103.159.122.0/23", + "103.159.124.0/23", + "103.159.134.0/23", + "103.159.142.0/23", + "103.160.33.0/24", + "103.160.34.0/23", + "103.160.112.0/22", + "103.160.244.0/23", + "103.160.254.0/23", + "103.161.14.0/23", + "103.161.102.0/23", + "103.161.139.0/24", + "103.161.208.0/23", + "103.161.220.0/23", + "103.161.254.0/23", + "103.162.10.0/23", + "103.162.32.0/23", + "103.162.116.0/23", + "103.163.28.0/23", + "103.163.32.0/23", + "103.163.46.0/23", + "103.163.74.0/23", + "103.163.180.0/23", + "103.164.4.0/23", + "103.164.32.0/23", + "103.164.40.0/22", + "103.164.64.0/23", + "103.164.76.0/23", + "103.164.178.0/23", + "103.165.44.0/23", + "103.165.52.0/23", + "103.165.82.0/23", + "103.165.110.0/23", + "103.166.20.0/23", + "103.166.50.0/23", + "103.166.52.0/22", + "103.166.84.0/23", + "103.166.138.0/23", + "103.167.0.0/23", + "103.167.36.0/23", + "103.167.100.0/23", + "103.168.98.0/23", + "103.168.170.0/23", + "103.169.50.0/23", + "103.169.62.0/23", + "103.169.108.0/23", + "103.169.162.0/23", + "103.169.202.0/23", + "103.170.4.0/23", + "103.170.134.0/23", + "103.170.212.0/23", + "103.171.32.0/23", + "103.171.214.0/23", + "103.172.32.0/23", + "103.172.160.0/25", + "103.172.160.128/26", + "103.172.160.194/31", + "103.172.160.196/30", + "103.172.160.200/29", + "103.172.160.208/28", + "103.172.160.226/31", + "103.172.160.228/31", + "103.172.160.238/31", + "103.172.160.244/30", + "103.172.160.248/29", + "103.172.161.0/25", + "103.172.161.128/26", + "103.172.161.192/30", + "103.172.161.196/31", + "103.172.161.211/32", + "103.172.161.212/30", + "103.172.161.216/30", + "103.172.161.220/31", + "103.172.161.223/32", + "103.172.161.224/32", + "103.172.161.226/31", + "103.172.161.228/31", + "103.172.161.240/28", + "103.173.102.0/23", + "103.173.182.0/23", + "103.173.184.0/23", + "103.174.94.0/23", + "103.175.114.0/23", + "103.175.118.0/23", + "103.176.52.0/23", + "103.176.222.0/23", + "103.176.244.0/23", + "103.177.28.0/23", + "103.177.70.0/23", + "103.177.162.0/24", + "103.178.240.0/23", + "103.179.76.0/22", + "103.180.226.0/23", + "103.181.234.0/23", + "103.183.26.0/23", + "103.183.66.0/23", + "103.183.122.0/23", + "103.183.124.0/23", + "103.184.46.0/23", + "103.184.60.0/23", + "103.185.78.0/23", + "103.185.80.0/23", + "103.186.4.0/23", + "103.186.108.0/23", + "103.186.158.0/23", + "103.186.228.0/23", + "103.189.92.0/23", + "103.189.152.0/22", + "103.190.20.0/23", + "103.190.71.0/24", + "103.190.104.0/23", + "103.190.116.0/23", + "103.190.122.0/23", + "103.191.102.0/23", + "103.191.242.0/23", + "103.192.0.0/19", + "103.192.48.0/21", + "103.192.56.0/22", + "103.192.84.0/22", + "103.192.88.0/21", + "103.192.96.0/20", + "103.192.112.0/22", + "103.192.128.0/21", + "103.192.139.0/24", + "103.192.140.0/22", + "103.192.144.0/22", + "103.192.164.0/22", + "103.192.188.0/22", + "103.192.208.0/21", + "103.192.216.0/22", + "103.192.252.0/22", + "103.193.42.0/23", + "103.193.44.0/22", + "103.193.120.0/22", + "103.193.140.0/22", + "103.193.160.0/22", + "103.193.188.0/22", + "103.193.192.0/22", + "103.193.212.0/22", + "103.193.216.0/21", + "103.193.224.0/20", + "103.194.18.0/23", + "103.195.112.0/22", + "103.195.152.0/22", + "103.195.160.0/22", + "103.196.64.0/22", + "103.196.72.0/22", + "103.196.88.0/21", + "103.196.96.0/22", + "103.196.168.0/22", + "103.197.0.0/22", + "103.197.228.0/22", + "103.198.20.0/22", + "103.198.60.0/22", + "103.198.64.0/22", + "103.198.72.0/22", + "103.198.124.0/22", + "103.198.156.0/22", + "103.198.180.0/22", + "103.198.196.0/22", + "103.198.216.0/21", + "103.198.224.0/20", + "103.198.240.0/21", + "103.199.164.0/22", + "103.199.196.0/22", + "103.199.228.0/22", + "103.199.252.0/22", + "103.200.52.0/22", + "103.200.64.0/21", + "103.200.136.0/21", + "103.200.144.0/20", + "103.200.160.0/19", + "103.200.192.0/22", + "103.200.220.0/22", + "103.200.224.0/19", + "103.201.0.0/20", + "103.201.16.0/21", + "103.201.28.0/22", + "103.201.32.0/19", + "103.201.64.0/22", + "103.201.76.0/22", + "103.201.80.0/20", + "103.201.96.0/20", + "103.201.112.0/21", + "103.201.120.0/22", + "103.201.152.0/21", + "103.201.160.0/19", + "103.201.192.0/18", + "103.202.0.0/19", + "103.202.32.0/20", + "103.202.56.0/21", + "103.202.64.0/18", + "103.202.128.0/20", + "103.202.144.0/22", + "103.202.152.0/21", + "103.202.160.0/19", + "103.202.192.0/20", + "103.202.212.0/22", + "103.202.228.0/22", + "103.202.236.0/22", + "103.202.240.0/20", + "103.203.0.0/19", + "103.203.32.0/22", + "103.203.96.0/22", + "103.203.104.0/21", + "103.203.112.0/20", + "103.203.128.0/22", + "103.203.140.0/22", + "103.203.164.0/22", + "103.203.168.0/22", + "103.203.192.0/22", + "103.203.200.0/22", + "103.203.212.0/22", + "103.203.216.0/22", + "103.204.24.0/22", + "103.204.72.0/22", + "103.204.88.0/22", + "103.204.112.0/22", + "103.204.136.0/21", + "103.204.144.0/21", + "103.204.152.0/22", + "103.204.196.0/22", + "103.204.216.0/23", + "103.204.232.0/21", + "103.205.4.0/22", + "103.205.40.0/21", + "103.205.52.0/22", + "103.205.108.0/22", + "103.205.116.0/22", + "103.205.136.0/22", + "103.205.162.0/24", + "103.205.188.0/22", + "103.205.192.0/21", + "103.205.200.0/22", + "103.205.236.0/22", + "103.205.248.0/21", + "103.206.0.0/22", + "103.206.44.0/22", + "103.206.148.0/22", + "103.207.104.0/22", + "103.207.184.0/21", + "103.207.192.0/20", + "103.207.208.0/21", + "103.207.220.0/22", + "103.207.228.0/22", + "103.207.232.0/22", + "103.208.12.0/22", + "103.208.16.0/22", + "103.208.28.0/22", + "103.208.40.0/21", + "103.208.48.0/22", + "103.209.112.0/22", + "103.209.136.0/22", + "103.209.201.0/24", + "103.209.202.0/23", + "103.209.209.0/24", + "103.209.210.0/23", + "103.209.216.0/22", + "103.210.96.0/22", + "103.210.156.0/22", + "103.210.164.0/22", + "103.210.168.0/21", + "103.210.176.0/20", + "103.210.217.0/24", + "103.210.218.0/23", + "103.211.44.0/22", + "103.211.96.0/23", + "103.211.98.0/24", + "103.211.156.0/22", + "103.211.164.0/22", + "103.211.220.0/22", + "103.211.248.0/22", + "103.212.0.0/20", + "103.212.44.0/22", + "103.212.48.0/22", + "103.212.84.0/22", + "103.212.100.0/22", + "103.212.109.0/24", + "103.212.148.0/22", + "103.212.164.0/22", + "103.212.196.0/22", + "103.212.200.0/22", + "103.212.252.0/22", + "103.213.40.0/21", + "103.213.48.0/20", + "103.213.64.0/19", + "103.213.96.0/22", + "103.213.132.0/22", + "103.213.136.0/21", + "103.213.144.0/20", + "103.213.160.0/19", + "103.213.196.0/22", + "103.213.226.0/23", + "103.214.48.0/22", + "103.214.84.0/22", + "103.214.212.0/22", + "103.214.240.0/21", + "103.215.28.0/22", + "103.215.32.0/21", + "103.215.44.0/22", + "103.215.100.0/22", + "103.215.108.0/22", + "103.215.116.0/22", + "103.215.120.0/22", + "103.215.140.0/22", + "103.216.4.0/22", + "103.216.8.0/21", + "103.216.16.0/20", + "103.216.32.0/20", + "103.216.64.0/22", + "103.216.108.0/22", + "103.216.136.0/22", + "103.216.152.0/22", + "103.216.156.0/23", + "103.216.224.0/21", + "103.216.240.0/20", + "103.217.0.0/18", + "103.217.168.0/22", + "103.217.180.0/22", + "103.217.184.0/21", + "103.217.192.0/20", + "103.218.8.0/21", + "103.218.16.0/21", + "103.218.28.0/22", + "103.218.32.0/19", + "103.218.64.0/20", + "103.218.80.0/21", + "103.218.88.0/22", + "103.218.178.0/23", + "103.218.192.0/20", + "103.218.208.0/21", + "103.218.216.0/22", + "103.219.24.0/21", + "103.219.32.0/21", + "103.219.64.0/22", + "103.219.84.0/22", + "103.219.88.0/21", + "103.219.96.0/21", + "103.219.176.0/22", + "103.219.184.0/22", + "103.220.48.0/20", + "103.220.64.0/22", + "103.220.92.0/22", + "103.220.96.0/22", + "103.220.100.0/24", + "103.220.102.0/23", + "103.220.104.0/21", + "103.220.116.0/22", + "103.220.120.0/21", + "103.220.128.0/20", + "103.220.144.0/21", + "103.220.152.0/22", + "103.220.160.0/19", + "103.220.192.0/21", + "103.220.200.0/22", + "103.220.240.0/20", + "103.221.0.0/19", + "103.221.32.0/20", + "103.221.50.0/23", + "103.221.88.0/22", + "103.221.92.0/23", + "103.221.96.0/19", + "103.221.128.0/18", + "103.221.192.0/20", + "103.222.0.0/20", + "103.222.16.0/22", + "103.222.24.0/21", + "103.222.33.0/24", + "103.222.34.0/23", + "103.222.36.0/22", + "103.222.40.0/21", + "103.222.48.0/20", + "103.222.64.0/18", + "103.222.128.0/18", + "103.222.192.0/19", + "103.222.224.0/21", + "103.222.232.0/22", + "103.222.240.0/21", + "103.223.16.0/20", + "103.223.32.0/19", + "103.223.64.0/19", + "103.223.96.0/20", + "103.223.112.0/21", + "103.223.124.0/22", + "103.223.128.0/21", + "103.223.140.0/22", + "103.223.144.0/20", + "103.223.160.0/20", + "103.223.176.0/21", + "103.223.188.0/22", + "103.223.192.0/18", + "103.224.0.0/22", + "103.224.40.0/21", + "103.224.60.0/22", + "103.224.220.0/22", + "103.224.224.0/21", + "103.224.232.0/22", + "103.225.18.0/24", + "103.226.40.0/22", + "103.226.56.0/22", + "103.226.80.0/22", + "103.226.132.0/22", + "103.226.156.0/22", + "103.226.180.0/22", + "103.226.196.0/22", + "103.227.48.0/22", + "103.227.72.0/21", + "103.227.80.0/22", + "103.227.100.0/22", + "103.227.120.0/22", + "103.227.132.0/22", + "103.227.136.0/22", + "103.227.196.0/22", + "103.227.204.0/23", + "103.227.206.0/24", + "103.227.212.0/22", + "103.227.228.0/22", + "103.228.12.0/22", + "103.228.88.0/22", + "103.228.136.0/22", + "103.228.160.0/22", + "103.228.176.0/22", + "103.228.204.0/22", + "103.228.208.0/22", + "103.228.228.0/22", + "103.228.232.0/22", + "103.229.20.0/22", + "103.229.136.0/22", + "103.229.148.0/22", + "103.229.172.0/22", + "103.229.212.0/22", + "103.229.216.0/21", + "103.229.228.0/22", + "103.229.236.0/22", + "103.229.240.0/22", + "103.230.0.0/22", + "103.230.28.0/22", + "103.230.44.0/22", + "103.230.96.0/22", + "103.230.110.0/23", + "103.230.196.0/22", + "103.230.200.0/21", + "103.230.212.0/22", + "103.230.236.0/22", + "103.231.16.0/21", + "103.231.64.0/21", + "103.231.180.0/22", + "103.231.186.0/24", + "103.231.244.0/22", + "103.232.4.0/22", + "103.232.17.168/29", + "103.232.144.0/22", + "103.232.166.0/23", + "103.233.4.0/22", + "103.233.44.0/22", + "103.233.52.0/22", + "103.233.104.0/22", + "103.233.128.0/22", + "103.233.136.0/22", + "103.233.162.0/23", + "103.233.228.0/22", + "103.234.0.0/22", + "103.234.20.0/22", + "103.234.56.0/22", + "103.234.128.0/22", + "103.234.172.0/22", + "103.234.180.0/22", + "103.234.244.0/22", + "103.235.48.0/22", + "103.235.56.0/21", + "103.235.80.0/22", + "103.235.85.0/24", + "103.235.87.0/24", + "103.235.100.0/22", + "103.235.128.0/20", + "103.235.144.0/21", + "103.235.184.0/22", + "103.235.192.0/22", + "103.235.200.0/22", + "103.235.220.0/22", + "103.235.224.0/19", + "103.236.0.0/18", + "103.236.64.0/19", + "103.236.96.0/22", + "103.236.116.0/23", + "103.236.120.0/22", + "103.236.184.0/22", + "103.236.240.0/21", + "103.236.248.0/23", + "103.236.250.0/24", + "103.236.252.0/22", + "103.237.0.0/20", + "103.237.24.0/21", + "103.237.68.0/22", + "103.237.88.0/22", + "103.237.152.0/22", + "103.237.176.0/20", + "103.237.192.0/18", + "103.238.0.0/21", + "103.238.18.0/23", + "103.238.20.0/22", + "103.238.24.0/21", + "103.238.32.0/20", + "103.238.48.0/21", + "103.238.56.0/22", + "103.238.88.0/21", + "103.238.96.0/22", + "103.238.132.0/22", + "103.238.140.0/22", + "103.238.144.0/22", + "103.238.152.0/23", + "103.238.160.0/19", + "103.238.196.0/22", + "103.238.204.0/22", + "103.238.252.0/22", + "103.239.0.0/22", + "103.239.44.0/22", + "103.239.68.0/22", + "103.239.152.0/21", + "103.239.180.0/22", + "103.239.184.0/22", + "103.239.192.0/21", + "103.239.204.0/22", + "103.239.208.0/22", + "103.239.224.0/22", + "103.239.244.0/22", + "103.240.16.0/22", + "103.240.36.0/22", + "103.240.42.0/23", + "103.240.72.0/22", + "103.240.84.0/22", + "103.240.124.0/22", + "103.240.172.0/22", + "103.240.188.0/22", + "103.240.200.0/22", + "103.240.244.0/22", + "103.241.12.0/22", + "103.241.92.0/22", + "103.241.96.0/22", + "103.241.160.0/22", + "103.241.172.0/23", + "103.241.184.0/21", + "103.241.220.0/22", + "103.242.64.0/22", + "103.242.128.0/24", + "103.242.131.0/24", + "103.242.160.0/22", + "103.242.168.0/21", + "103.242.176.0/22", + "103.242.200.0/22", + "103.242.212.0/22", + "103.242.220.0/22", + "103.242.240.0/22", + "103.243.136.0/22", + "103.243.252.0/22", + "103.244.16.0/22", + "103.244.26.0/23", + "103.244.58.0/23", + "103.244.60.0/22", + "103.244.64.0/20", + "103.244.80.0/21", + "103.244.119.0/24", + "103.244.164.0/22", + "103.244.232.0/22", + "103.244.252.0/22", + "103.245.23.0/24", + "103.245.52.0/22", + "103.245.60.0/22", + "103.245.80.0/22", + "103.245.124.0/22", + "103.245.128.0/22", + "103.246.8.0/21", + "103.246.120.0/21", + "103.246.132.0/22", + "103.246.152.0/22", + "103.247.168.0/21", + "103.247.176.0/22", + "103.247.191.0/24", + "103.247.200.0/22", + "103.247.212.0/22", + "103.248.0.0/24", + "103.248.64.0/23", + "103.248.100.0/22", + "103.248.124.0/22", + "103.248.152.0/22", + "103.248.168.0/22", + "103.248.192.0/22", + "103.248.212.0/22", + "103.248.224.0/22", + "103.249.8.0/21", + "103.249.52.0/22", + "103.249.128.0/22", + "103.249.136.0/22", + "103.249.144.0/22", + "103.249.164.0/22", + "103.249.168.0/21", + "103.249.176.0/22", + "103.249.188.0/22", + "103.249.244.0/22", + "103.249.252.0/22", + "103.250.32.0/22", + "103.250.104.0/22", + "103.250.124.0/22", + "103.250.180.0/22", + "103.250.192.0/22", + "103.250.216.0/22", + "103.250.224.0/22", + "103.250.236.0/22", + "103.250.248.0/21", + "103.251.32.0/22", + "103.251.84.0/22", + "103.251.96.0/22", + "103.251.124.0/22", + "103.251.129.0/24", + "103.251.131.0/24", + "103.251.160.0/22", + "103.251.192.0/22", + "103.251.204.0/22", + "103.251.240.0/22", + "103.252.28.0/22", + "103.252.36.0/22", + "103.252.64.0/22", + "103.252.96.0/22", + "103.252.104.0/22", + "103.252.172.0/22", + "103.252.204.0/22", + "103.252.208.0/22", + "103.252.232.0/22", + "103.252.248.0/22", + "103.253.4.0/22", + "103.253.60.0/22", + "103.253.204.0/22", + "103.253.220.0/22", + "103.253.224.0/22", + "103.253.232.0/22", + "103.254.8.0/22", + "103.254.20.0/22", + "103.254.64.0/21", + "103.254.76.0/22", + "103.254.112.0/22", + "103.254.176.0/22", + "103.254.188.0/22", + "103.255.68.0/22", + "103.255.88.0/21", + "103.255.136.0/21", + "103.255.184.0/22", + "103.255.200.0/22", + "103.255.212.0/22", + "103.255.228.0/22", + "104.28.9.46/31", + "104.28.9.48/32", + "104.28.37.44/31", + "104.28.43.36/30", + "104.28.43.40/29", + "104.28.43.48/29", + "104.28.66.15/32", + "104.28.66.16/31", + "104.28.66.30/31", + "104.28.66.32/27", + "104.28.66.64/29", + "104.28.66.74/31", + "104.28.66.76/30", + "104.28.66.80/29", + "104.28.66.88/30", + "104.28.66.92/31", + "104.28.66.96/29", + "104.28.66.104/31", + "104.28.69.30/31", + "104.28.69.32/27", + "104.28.69.64/29", + "104.28.69.74/31", + "104.28.69.76/30", + "104.28.69.80/29", + "104.28.69.88/30", + "104.28.69.92/31", + "104.28.69.96/29", + "104.28.69.104/31", + "104.28.83.2/31", + "104.28.83.4/30", + "104.28.83.8/29", + "104.28.83.16/28", + "104.28.83.32/29", + "104.28.83.40/30", + "104.28.83.46/31", + "104.28.83.48/28", + "104.28.83.64/31", + "104.28.83.68/30", + "104.28.83.72/30", + "104.28.83.76/31", + "104.28.99.0/27", + "104.28.99.32/29", + "104.28.99.40/31", + "104.28.99.42/32", + "104.28.99.44/30", + "104.28.99.48/29", + "104.28.99.56/30", + "104.28.99.62/31", + "104.28.99.64/29", + "104.28.101.0/27", + "104.28.101.32/29", + "104.28.101.40/31", + "104.28.101.44/30", + "104.28.101.48/29", + "104.28.101.56/30", + "104.28.101.62/31", + "104.28.101.64/29", + "104.28.117.32/27", + "104.28.117.64/29", + "104.28.117.72/31", + "104.28.117.76/30", + "104.28.117.80/28", + "104.28.117.98/31", + "104.28.117.100/30", + "104.28.117.104/30", + "104.28.120.32/27", + "104.28.120.64/29", + "104.28.120.72/31", + "104.28.120.76/30", + "104.28.120.80/28", + "104.28.120.98/31", + "104.28.120.100/30", + "104.28.120.104/30", + "104.28.143.54/31", + "104.28.148.204/32", + "104.28.156.204/32", + "104.28.162.190/31", + "104.28.192.13/32", + "104.28.192.14/31", + "104.28.192.16/30", + "104.28.192.20/32", + "104.28.192.130/31", + "104.28.192.132/30", + "104.28.192.136/32", + "104.28.192.197/32", + "104.28.192.198/31", + "104.28.192.200/30", + "104.28.193.33/32", + "104.28.193.34/31", + "104.28.193.36/30", + "104.28.193.101/32", + "104.28.193.102/31", + "104.28.193.104/30", + "104.28.193.108/32", + "104.28.195.18/31", + "104.28.195.20/30", + "104.28.195.24/32", + "104.28.195.194/31", + "104.28.195.196/30", + "104.28.195.200/32", + "104.28.197.93/32", + "104.28.197.94/31", + "104.28.197.96/30", + "104.28.197.100/32", + "104.28.198.171/32", + "104.28.198.172/30", + "104.28.198.176/31", + "104.28.199.200/30", + "104.28.199.204/31", + "104.28.199.206/32", + "104.28.204.182/31", + "104.28.204.184/30", + "104.28.204.188/32", + "104.28.207.248/30", + "104.28.207.252/31", + "104.28.207.254/32", + "104.28.208.27/32", + "104.28.208.28/30", + "104.28.208.32/31", + "104.28.208.66/31", + "104.28.208.68/30", + "104.28.208.72/32", + "104.28.208.126/31", + "104.28.208.128/29", + "104.28.208.136/30", + "104.28.208.140/32", + "104.28.208.147/32", + "104.28.208.148/30", + "104.28.208.152/31", + "104.28.209.224/29", + "104.28.209.246/31", + "104.28.209.248/30", + "104.28.209.252/32", + "104.28.211.6/31", + "104.28.211.8/30", + "104.28.211.12/32", + "104.28.211.41/32", + "104.28.211.42/31", + "104.28.211.44/30", + "104.28.212.132/30", + "104.28.212.136/30", + "104.28.213.170/31", + "104.28.213.172/30", + "104.28.213.176/31", + "104.28.213.199/32", + "104.28.213.200/30", + "104.28.213.204/31", + "104.28.216.52/30", + "104.28.216.56/30", + "104.28.216.60/31", + "104.28.216.62/32", + "104.28.216.132/30", + "104.28.216.136/30", + "104.28.216.189/32", + "104.28.216.190/31", + "104.28.216.192/30", + "104.28.219.46/31", + "104.28.219.48/30", + "104.28.219.52/31", + "104.28.219.109/32", + "104.28.219.110/31", + "104.28.219.112/30", + "104.28.220.207/32", + "104.28.220.208/30", + "104.28.220.212/31", + "104.28.221.2/31", + "104.28.221.4/30", + "104.28.221.8/32", + "104.28.222.59/32", + "104.28.222.60/30", + "104.28.222.64/31", + "104.28.222.66/32", + "104.28.223.75/32", + "104.28.223.76/30", + "104.28.223.80/31", + "104.28.223.162/31", + "104.28.223.164/30", + "104.28.223.168/32", + "104.28.223.177/32", + "104.28.223.178/31", + "104.28.223.180/30", + "104.28.223.200/30", + "104.28.223.204/31", + "104.28.223.206/32", + "104.28.224.13/32", + "104.28.224.14/31", + "104.28.224.16/30", + "104.28.224.20/32", + "104.28.224.130/31", + "104.28.224.132/30", + "104.28.224.136/32", + "104.28.224.197/32", + "104.28.224.198/31", + "104.28.224.200/30", + "104.28.225.33/32", + "104.28.225.34/31", + "104.28.225.36/30", + "104.28.225.101/32", + "104.28.225.102/31", + "104.28.225.104/30", + "104.28.225.108/32", + "104.28.227.18/31", + "104.28.227.20/30", + "104.28.227.24/32", + "104.28.227.194/31", + "104.28.227.196/30", + "104.28.227.200/32", + "104.28.229.93/32", + "104.28.229.94/31", + "104.28.229.96/30", + "104.28.229.100/32", + "104.28.230.171/32", + "104.28.230.172/30", + "104.28.230.176/31", + "104.28.231.200/30", + "104.28.231.204/31", + "104.28.231.206/32", + "104.28.236.182/31", + "104.28.236.184/30", + "104.28.236.188/32", + "104.28.239.248/30", + "104.28.239.252/31", + "104.28.239.254/32", + "104.28.240.27/32", + "104.28.240.28/30", + "104.28.240.32/31", + "104.28.240.66/31", + "104.28.240.68/30", + "104.28.240.72/32", + "104.28.240.126/31", + "104.28.240.128/29", + "104.28.240.136/30", + "104.28.240.140/32", + "104.28.240.147/32", + "104.28.240.148/30", + "104.28.240.152/31", + "104.28.241.224/29", + "104.28.241.246/31", + "104.28.241.248/30", + "104.28.241.252/32", + "104.28.243.6/31", + "104.28.243.8/30", + "104.28.243.12/32", + "104.28.243.41/32", + "104.28.243.42/31", + "104.28.243.44/30", + "104.28.244.132/30", + "104.28.244.136/30", + "104.28.245.170/31", + "104.28.245.172/30", + "104.28.245.176/31", + "104.28.245.199/32", + "104.28.245.200/30", + "104.28.245.204/31", + "104.28.248.52/30", + "104.28.248.56/30", + "104.28.248.60/31", + "104.28.248.62/32", + "104.28.248.132/30", + "104.28.248.136/30", + "104.28.248.189/32", + "104.28.248.190/31", + "104.28.248.192/30", + "104.28.251.46/31", + "104.28.251.48/30", + "104.28.251.52/31", + "104.28.251.109/32", + "104.28.251.110/31", + "104.28.251.112/30", + "104.28.252.207/32", + "104.28.252.208/30", + "104.28.252.212/31", + "104.28.253.2/31", + "104.28.253.4/30", + "104.28.253.8/32", + "104.28.254.59/32", + "104.28.254.60/30", + "104.28.254.64/31", + "104.28.254.66/32", + "104.28.255.75/32", + "104.28.255.76/30", + "104.28.255.80/31", + "104.28.255.162/31", + "104.28.255.164/30", + "104.28.255.168/32", + "104.28.255.177/32", + "104.28.255.178/31", + "104.28.255.180/30", + "104.28.255.200/30", + "104.28.255.204/31", + "104.28.255.206/32", + "104.30.161.11/32", + "104.44.213.0/31", + "104.212.68.57/32", + "104.212.68.58/32", + "104.212.68.102/32", + "104.212.68.151/32", + "104.212.68.152/32", + "106.0.0.0/24", + "106.0.2.0/23", + "106.0.4.0/22", + "106.0.8.0/21", + "106.0.16.0/20", + "106.0.44.0/22", + "106.0.64.0/18", + "106.2.0.0/16", + "106.3.0.0/18", + "106.3.64.0/20", + "106.3.80.0/22", + "106.3.88.0/21", + "106.3.96.0/19", + "106.3.128.0/19", + "106.3.164.0/22", + "106.3.168.0/22", + "106.3.172.0/24", + "106.3.174.0/23", + "106.3.176.0/20", + "106.3.192.0/18", + "106.4.0.0/14", + "106.8.0.0/15", + "106.11.0.0/18", + "106.11.64.0/21", + "106.11.72.0/30", + "106.11.72.8/29", + "106.11.72.16/28", + "106.11.72.32/27", + "106.11.72.64/26", + "106.11.72.128/29", + "106.11.72.136/32", + "106.11.72.141/32", + "106.11.72.142/31", + "106.11.72.144/28", + "106.11.72.160/32", + "106.11.72.163/32", + "106.11.72.164/30", + "106.11.72.180/31", + "106.11.72.184/29", + "106.11.72.192/30", + "106.11.72.208/29", + "106.11.72.220/30", + "106.11.72.224/29", + "106.11.72.240/30", + "106.11.72.252/30", + "106.11.73.0/24", + "106.11.74.0/23", + "106.11.76.0/22", + "106.11.80.0/20", + "106.11.96.0/19", + "106.11.128.0/17", + "106.12.0.0/14", + "106.16.0.0/12", + "106.32.0.0/12", + "106.48.0.0/15", + "106.50.0.0/16", + "106.52.0.0/14", + "106.56.0.0/13", + "106.74.0.0/16", + "106.75.0.0/17", + "106.75.128.0/18", + "106.75.200.0/21", + "106.75.208.0/20", + "106.75.224.0/19", + "106.80.0.0/12", + "106.108.0.0/14", + "106.112.0.0/12", + "106.224.0.0/12", + "107.176.0.0/15", + "109.71.4.0/24", + "109.244.0.0/16", + "110.6.0.0/15", + "110.16.0.0/14", + "110.34.40.0/21", + "110.40.0.0/16", + "110.41.0.0/18", + "110.41.64.0/20", + "110.41.80.0/21", + "110.41.88.0/23", + "110.41.91.0/24", + "110.41.92.0/22", + "110.41.96.0/19", + "110.41.128.0/18", + "110.41.192.0/20", + "110.41.208.0/23", + "110.41.211.0/24", + "110.41.212.0/22", + "110.41.216.0/21", + "110.41.224.0/19", + "110.42.0.0/15", + "110.44.12.0/22", + "110.48.0.0/17", + "110.48.128.0/19", + "110.51.0.0/16", + "110.52.0.0/15", + "110.56.0.0/13", + "110.64.0.0/15", + "110.72.0.0/15", + "110.75.0.0/16", + "110.76.0.0/20", + "110.76.16.0/22", + "110.76.20.0/24", + "110.76.22.0/24", + "110.76.24.0/21", + "110.76.32.0/19", + "110.76.132.0/22", + "110.76.156.0/22", + "110.76.184.0/22", + "110.76.192.0/18", + "110.77.0.0/17", + "110.80.0.0/13", + "110.88.0.0/14", + "110.92.68.0/22", + "110.93.32.0/19", + "110.94.0.0/15", + "110.96.0.0/11", + "110.152.0.0/14", + "110.156.0.0/15", + "110.165.37.0/24", + "110.165.38.0/23", + "110.165.40.0/21", + "110.165.48.0/20", + "110.166.0.0/15", + "110.172.200.0/21", + "110.172.208.0/20", + "110.172.224.0/19", + "110.173.0.0/19", + "110.173.32.0/20", + "110.173.64.0/18", + "110.173.192.0/19", + "110.176.0.0/12", + "110.192.0.0/11", + "110.228.0.0/14", + "110.232.32.0/19", + "110.236.0.0/15", + "110.240.0.0/12", + "111.0.0.0/10", + "111.66.0.0/18", + "111.66.64.0/19", + "111.66.96.0/22", + "111.66.100.0/24", + "111.66.102.0/23", + "111.66.104.0/21", + "111.66.112.0/20", + "111.66.128.0/19", + "111.66.160.0/20", + "111.66.176.0/23", + "111.66.178.0/24", + "111.66.180.0/22", + "111.66.184.0/21", + "111.66.192.0/18", + "111.67.192.0/20", + "111.72.0.0/13", + "111.85.0.0/16", + "111.92.248.0/21", + "111.112.0.0/14", + "111.116.0.0/15", + "111.118.200.0/24", + "111.118.202.0/24", + "111.118.204.0/22", + "111.119.64.0/18", + "111.119.128.0/19", + "111.120.0.0/14", + "111.124.0.0/16", + "111.126.0.0/15", + "111.128.0.0/11", + "111.160.0.0/13", + "111.170.0.0/16", + "111.172.0.0/14", + "111.176.0.0/13", + "111.186.0.0/15", + "111.192.0.0/12", + "111.208.0.0/13", + "111.221.28.0/24", + "111.221.128.0/17", + "111.222.0.0/16", + "111.223.4.0/22", + "111.223.8.0/21", + "111.223.16.0/22", + "111.223.240.0/22", + "111.223.248.0/22", + "111.224.0.0/13", + "111.235.96.0/19", + "111.235.156.0/22", + "111.235.160.0/21", + "111.235.170.0/23", + "111.235.172.0/22", + "111.235.176.0/20", + "112.0.0.0/10", + "112.64.0.0/14", + "112.73.64.0/18", + "112.73.128.0/17", + "112.74.0.0/15", + "112.80.0.0/12", + "112.96.0.0/13", + "112.109.128.0/17", + "112.111.0.0/16", + "112.112.0.0/14", + "112.116.0.0/15", + "112.122.0.0/15", + "112.124.0.0/14", + "112.128.0.0/14", + "112.132.0.0/16", + "112.137.48.0/21", + "112.192.0.0/14", + "112.224.0.0/11", + "113.0.0.0/13", + "113.8.0.0/15", + "113.11.192.0/19", + "113.12.0.0/14", + "113.16.0.0/15", + "113.18.0.0/16", + "113.21.232.0/21", + "113.24.0.0/14", + "113.31.88.0/23", + "113.31.96.0/19", + "113.31.136.0/21", + "113.31.144.0/20", + "113.31.160.0/19", + "113.31.192.0/18", + "113.44.0.0/14", + "113.48.0.0/14", + "113.52.160.0/19", + "113.52.228.0/22", + "113.54.0.0/15", + "113.56.0.0/15", + "113.58.0.0/16", + "113.59.0.0/17", + "113.59.224.0/22", + "113.62.0.0/15", + "113.64.0.0/10", + "113.128.0.0/15", + "113.130.96.0/20", + "113.130.112.0/21", + "113.132.0.0/14", + "113.136.0.0/13", + "113.192.40.0/23", + "113.192.57.0/24", + "113.194.0.0/15", + "113.197.100.0/23", + "113.197.102.0/24", + "113.197.104.0/22", + "113.200.0.0/15", + "113.202.0.0/16", + "113.204.0.0/14", + "113.208.96.0/19", + "113.208.128.0/17", + "113.209.0.0/16", + "113.212.0.0/18", + "113.212.100.0/22", + "113.212.184.0/21", + "113.213.0.0/17", + "113.214.0.0/15", + "113.218.0.0/15", + "113.220.0.0/14", + "113.224.0.0/12", + "113.240.0.0/13", + "113.248.0.0/14", + "114.28.0.0/17", + "114.28.128.0/18", + "114.28.194.0/23", + "114.28.196.0/24", + "114.28.200.0/23", + "114.28.209.0/24", + "114.28.211.0/24", + "114.28.212.0/22", + "114.28.216.0/21", + "114.28.232.0/23", + "114.28.234.0/24", + "114.28.236.0/22", + "114.28.240.0/21", + "114.28.248.0/22", + "114.28.252.0/24", + "114.28.254.0/23", + "114.31.64.0/21", + "114.54.0.0/15", + "114.60.0.0/14", + "114.64.0.0/15", + "114.66.0.0/17", + "114.66.128.0/20", + "114.66.144.0/21", + "114.66.152.0/22", + "114.66.176.0/20", + "114.66.192.0/19", + "114.66.228.0/22", + "114.66.232.0/21", + "114.66.240.0/20", + "114.67.0.0/16", + "114.68.0.0/16", + "114.79.64.0/18", + "114.80.0.0/12", + "114.96.0.0/13", + "114.104.0.0/14", + "114.110.0.0/20", + "114.110.64.0/18", + "114.111.0.0/19", + "114.111.160.0/19", + "114.112.4.0/22", + "114.112.8.0/22", + "114.112.22.0/24", + "114.112.24.0/21", + "114.112.32.0/19", + "114.112.64.0/19", + "114.112.96.0/20", + "114.112.116.0/22", + "114.112.120.0/21", + "114.112.136.0/21", + "114.112.144.0/20", + "114.112.160.0/19", + "114.112.192.0/19", + "114.113.0.0/17", + "114.113.128.0/21", + "114.113.140.0/22", + "114.113.144.0/20", + "114.113.160.0/19", + "114.113.196.0/22", + "114.113.200.0/21", + "114.113.208.0/20", + "114.113.224.0/20", + "114.114.0.0/15", + "114.116.0.0/15", + "114.118.0.0/16", + "114.119.0.0/17", + "114.119.192.0/18", + "114.132.0.0/16", + "114.135.0.0/16", + "114.138.0.0/15", + "114.141.64.0/21", + "114.141.80.0/21", + "114.141.128.0/18", + "114.142.136.0/21", + "114.196.0.0/15", + "114.198.248.0/21", + "114.208.0.0/12", + "114.224.0.0/11", + "115.24.0.0/14", + "115.28.0.0/15", + "115.31.64.0/22", + "115.31.72.0/21", + "115.32.0.0/14", + "115.42.56.0/22", + "115.44.0.0/14", + "115.48.0.0/12", + "115.69.64.0/20", + "115.84.0.0/18", + "115.85.192.0/18", + "115.100.0.0/14", + "115.104.0.0/14", + "115.120.0.0/14", + "115.124.16.0/20", + "115.148.0.0/14", + "115.152.0.0/13", + "115.166.64.0/19", + "115.168.0.0/16", + "115.169.0.0/21", + "115.169.8.0/23", + "115.169.10.0/24", + "115.169.14.0/23", + "115.169.16.0/20", + "115.169.32.0/22", + "115.169.38.0/23", + "115.169.40.0/24", + "115.169.42.0/23", + "115.169.44.0/22", + "115.169.48.0/20", + "115.169.64.0/18", + "115.169.128.0/17", + "115.170.0.0/15", + "115.172.0.0/14", + "115.180.0.0/14", + "115.187.0.0/20", + "115.190.0.0/15", + "115.192.0.0/11", + "115.224.0.0/12", + "116.0.8.0/21", + "116.0.24.0/21", + "116.1.0.0/16", + "116.2.0.0/15", + "116.4.0.0/14", + "116.8.0.0/14", + "116.13.0.0/16", + "116.16.0.0/12", + "116.50.0.0/20", + "116.52.0.0/14", + "116.56.0.0/15", + "116.58.128.0/20", + "116.58.208.0/20", + "116.60.0.0/14", + "116.66.0.0/17", + "116.68.136.0/21", + "116.68.176.0/21", + "116.69.0.0/16", + "116.70.64.0/18", + "116.76.0.0/14", + "116.85.0.0/17", + "116.85.128.0/18", + "116.85.192.0/19", + "116.85.224.0/20", + "116.85.240.0/21", + "116.85.248.0/23", + "116.85.250.0/24", + "116.85.252.0/22", + "116.89.144.0/20", + "116.90.80.0/20", + "116.90.184.0/21", + "116.95.0.0/16", + "116.112.0.0/14", + "116.116.0.0/15", + "116.128.0.0/10", + "116.192.0.0/16", + "116.193.16.0/20", + "116.193.32.0/19", + "116.193.176.0/21", + "116.194.0.0/15", + "116.196.0.0/21", + "116.196.8.0/22", + "116.196.12.0/23", + "116.196.32.0/19", + "116.196.64.0/18", + "116.196.128.0/17", + "116.197.160.0/21", + "116.198.0.0/16", + "116.199.0.0/17", + "116.199.128.0/19", + "116.204.0.0/17", + "116.205.0.0/16", + "116.207.0.0/16", + "116.208.0.0/14", + "116.212.160.0/20", + "116.213.46.0/23", + "116.213.64.0/18", + "116.213.128.0/17", + "116.214.32.0/19", + "116.214.64.0/20", + "116.214.128.0/17", + "116.215.0.0/16", + "116.216.0.0/14", + "116.224.0.0/12", + "116.242.0.0/15", + "116.244.0.0/14", + "116.248.0.0/15", + "116.251.65.140/31", + "116.251.66.42/31", + "116.251.68.15/32", + "116.251.79.12/31", + "116.251.84.168/30", + "116.251.84.180/30", + "116.251.84.184/29", + "116.251.84.192/27", + "116.251.84.226/31", + "116.251.84.228/30", + "116.251.84.232/29", + "116.251.84.240/29", + "116.251.84.248/30", + "116.251.88.36/30", + "116.251.88.40/29", + "116.251.88.48/29", + "116.251.88.58/31", + "116.251.88.60/30", + "116.251.88.64/30", + "116.251.88.70/31", + "116.251.88.72/29", + "116.251.88.80/29", + "116.251.88.88/31", + "116.251.88.92/31", + "116.251.88.96/28", + "116.251.88.112/29", + "116.251.88.122/31", + "116.251.88.124/30", + "116.251.88.128/27", + "116.251.88.162/31", + "116.251.88.164/30", + "116.251.88.170/31", + "116.251.88.174/31", + "116.251.88.176/29", + "116.251.88.186/31", + "116.251.88.188/30", + "116.251.88.192/30", + "116.251.88.198/31", + "116.251.88.200/29", + "116.251.88.208/30", + "116.251.88.212/31", + "116.251.88.218/31", + "116.251.88.224/30", + "116.251.88.230/31", + "116.251.88.234/31", + "116.251.88.240/31", + "116.251.88.244/30", + "116.251.88.248/31", + "116.251.88.252/30", + "116.251.89.0/31", + "116.251.89.4/30", + "116.251.89.8/30", + "116.251.89.12/31", + "116.251.89.16/29", + "116.251.89.36/30", + "116.251.89.40/31", + "116.251.89.44/30", + "116.251.89.48/29", + "116.251.89.56/30", + "116.251.89.60/31", + "116.251.89.64/29", + "116.251.89.72/30", + "116.251.89.76/31", + "116.251.89.80/31", + "116.251.89.84/30", + "116.251.89.88/29", + "116.251.89.96/27", + "116.251.89.128/27", + "116.251.89.160/28", + "116.251.89.176/31", + "116.251.89.180/30", + "116.251.89.184/29", + "116.251.89.192/27", + "116.251.89.224/28", + "116.251.89.240/29", + "116.251.89.248/30", + "116.251.90.0/27", + "116.251.90.32/29", + "116.251.90.40/30", + "116.251.90.48/29", + "116.251.90.60/30", + "116.251.90.66/31", + "116.251.90.72/30", + "116.251.90.80/28", + "116.251.90.96/27", + "116.251.90.128/28", + "116.251.90.144/30", + "116.251.90.168/29", + "116.251.90.176/28", + "116.251.90.192/27", + "116.251.90.224/28", + "116.251.90.244/30", + "116.251.91.16/28", + "116.251.91.32/28", + "116.251.91.56/29", + "116.251.91.64/26", + "116.251.91.128/28", + "116.251.91.144/29", + "116.251.91.156/31", + "116.251.91.166/31", + "116.251.91.170/31", + "116.251.91.182/31", + "116.251.91.186/31", + "116.251.91.198/31", + "116.251.91.202/31", + "116.251.91.206/31", + "116.251.91.210/31", + "116.251.91.212/30", + "116.251.91.216/29", + "116.251.91.224/28", + "116.251.91.240/29", + "116.251.91.248/30", + "116.251.92.0/31", + "116.251.92.4/31", + "116.251.93.10/31", + "116.251.93.30/31", + "116.251.93.34/31", + "116.251.93.38/31", + "116.251.93.44/30", + "116.251.93.48/29", + "116.251.93.72/30", + "116.251.93.88/30", + "116.251.93.104/29", + "116.251.93.112/28", + "116.251.93.128/29", + "116.251.93.136/30", + "116.251.93.152/29", + "116.251.93.160/29", + "116.251.93.168/30", + "116.251.93.176/29", + "116.251.93.200/29", + "116.251.93.208/28", + "116.251.94.4/30", + "116.251.94.8/29", + "116.251.94.16/28", + "116.251.94.32/27", + "116.251.94.64/26", + "116.251.94.128/27", + "116.251.94.160/28", + "116.251.94.176/29", + "116.251.94.186/31", + "116.251.94.188/30", + "116.251.94.192/26", + "116.251.95.0/24", + "116.251.100.4/30", + "116.251.100.8/31", + "116.251.100.20/31", + "116.251.100.24/31", + "116.251.100.72/31", + "116.251.100.84/31", + "116.251.100.90/31", + "116.251.100.92/31", + "116.251.100.98/31", + "116.251.100.100/31", + "116.251.100.104/31", + "116.251.100.118/31", + "116.251.100.122/31", + "116.251.100.124/31", + "116.251.100.136/31", + "116.251.100.181/32", + "116.251.100.182/31", + "116.251.100.184/29", + "116.251.100.211/32", + "116.251.100.212/30", + "116.251.100.220/31", + "116.251.100.224/32", + "116.251.100.226/32", + "116.251.100.234/31", + "116.251.100.242/31", + "116.251.100.244/30", + "116.251.100.253/32", + "116.251.100.254/31", + "116.251.101.4/30", + "116.251.101.8/30", + "116.251.101.12/31", + "116.251.101.18/31", + "116.251.101.20/31", + "116.251.101.24/31", + "116.251.101.32/30", + "116.251.101.52/31", + "116.251.101.62/31", + "116.251.101.72/31", + "116.251.101.78/31", + "116.251.101.84/31", + "116.251.101.90/31", + "116.251.101.92/31", + "116.251.101.98/31", + "116.251.101.100/31", + "116.251.101.104/30", + "116.251.101.108/31", + "116.251.101.118/31", + "116.251.101.122/31", + "116.251.101.124/31", + "116.251.101.146/31", + "116.251.101.148/30", + "116.251.101.152/30", + "116.251.101.160/31", + "116.251.101.176/28", + "116.251.101.210/31", + "116.251.101.212/30", + "116.251.101.220/31", + "116.251.101.234/31", + "116.251.101.236/30", + "116.251.101.242/31", + "116.251.101.244/30", + "116.251.101.248/29", + "116.251.102.0/23", + "116.251.104.0/27", + "116.251.104.32/28", + "116.251.104.48/30", + "116.251.104.52/31", + "116.251.104.58/31", + "116.251.104.60/30", + "116.251.104.64/26", + "116.251.104.128/25", + "116.251.105.0/24", + "116.251.106.0/25", + "116.251.106.128/27", + "116.251.106.160/30", + "116.251.106.166/31", + "116.251.106.170/31", + "116.251.106.174/31", + "116.251.106.176/28", + "116.251.106.192/26", + "116.251.107.0/28", + "116.251.107.16/30", + "116.251.107.22/31", + "116.251.107.26/31", + "116.251.107.28/30", + "116.251.107.34/31", + "116.251.107.36/30", + "116.251.107.40/29", + "116.251.107.48/28", + "116.251.107.64/28", + "116.251.107.80/30", + "116.251.107.92/30", + "116.251.107.96/29", + "116.251.107.104/30", + "116.251.107.112/28", + "116.251.107.128/26", + "116.251.107.192/27", + "116.251.107.224/28", + "116.251.107.240/29", + "116.251.107.248/30", + "116.251.108.0/26", + "116.251.108.64/28", + "116.251.108.80/29", + "116.251.108.96/30", + "116.251.108.104/29", + "116.251.108.112/30", + "116.251.108.144/28", + "116.251.108.160/28", + "116.251.108.176/29", + "116.251.108.188/30", + "116.251.108.194/31", + "116.251.108.196/30", + "116.251.108.200/29", + "116.251.109.33/32", + "116.251.109.34/31", + "116.251.109.36/30", + "116.251.109.40/31", + "116.251.109.42/32", + "116.251.109.63/32", + "116.251.109.64/31", + "116.251.109.66/32", + "116.251.109.80/30", + "116.251.109.87/32", + "116.251.109.88/30", + "116.251.109.95/32", + "116.251.109.96/30", + "116.251.109.108/30", + "116.251.109.120/30", + "116.251.109.131/32", + "116.251.109.132/30", + "116.251.109.136/30", + "116.251.109.143/32", + "116.251.109.144/30", + "116.251.109.151/32", + "116.251.109.152/29", + "116.251.109.160/30", + "116.251.109.167/32", + "116.251.109.168/29", + "116.251.109.176/30", + "116.251.109.187/32", + "116.251.109.188/30", + "116.251.109.192/30", + "116.251.109.204/30", + "116.251.109.208/29", + "116.251.109.216/30", + "116.251.109.231/32", + "116.251.109.232/30", + "116.251.109.243/32", + "116.251.109.244/30", + "116.251.109.248/30", + "116.251.110.16/28", + "116.251.110.32/28", + "116.251.110.48/29", + "116.251.110.56/31", + "116.251.110.62/31", + "116.251.110.64/27", + "116.251.110.96/28", + "116.251.110.112/29", + "116.251.110.124/30", + "116.251.110.128/26", + "116.251.110.192/27", + "116.251.110.224/31", + "116.251.110.230/31", + "116.251.110.232/29", + "116.251.110.240/28", + "116.251.111.0/29", + "116.251.111.8/30", + "116.251.111.16/30", + "116.251.111.32/29", + "116.251.111.48/30", + "116.251.111.52/31", + "116.251.111.76/30", + "116.251.111.84/30", + "116.251.111.88/30", + "116.251.111.112/30", + "116.251.111.148/30", + "116.251.111.164/31", + "116.251.111.196/30", + "116.251.111.200/30", + "116.251.111.214/31", + "116.251.111.218/31", + "116.251.111.220/31", + "116.251.111.234/31", + "116.251.111.236/31", + "116.251.112.0/22", + "116.251.116.0/26", + "116.251.116.68/30", + "116.251.116.72/29", + "116.251.116.80/28", + "116.251.116.96/27", + "116.251.116.128/26", + "116.251.116.192/28", + "116.251.116.208/29", + "116.251.116.216/30", + "116.251.116.222/31", + "116.251.116.226/31", + "116.251.116.230/31", + "116.251.116.232/29", + "116.251.116.240/28", + "116.251.117.0/24", + "116.251.118.0/25", + "116.251.118.128/27", + "116.251.118.160/29", + "116.251.118.168/31", + "116.251.118.172/31", + "116.251.118.176/28", + "116.251.118.192/30", + "116.251.118.212/30", + "116.251.118.216/29", + "116.251.118.224/27", + "116.251.119.0/24", + "116.251.120.4/30", + "116.251.120.12/30", + "116.251.120.16/28", + "116.251.120.32/27", + "116.251.120.64/26", + "116.251.120.128/25", + "116.251.124.0/22", + "116.252.0.0/15", + "116.254.104.0/21", + "116.254.128.0/17", + "116.255.128.0/17", + "117.8.0.0/13", + "117.21.0.0/16", + "117.22.0.0/15", + "117.24.0.0/13", + "117.32.0.0/13", + "117.40.0.0/14", + "117.44.0.0/15", + "117.48.0.0/16", + "117.49.0.0/19", + "117.49.32.0/20", + "117.49.48.0/23", + "117.49.50.0/24", + "117.49.51.0/25", + "117.49.51.128/28", + "117.49.51.144/30", + "117.49.51.148/31", + "117.49.51.152/29", + "117.49.51.160/27", + "117.49.51.192/26", + "117.49.52.0/22", + "117.49.56.0/22", + "117.49.60.0/24", + "117.49.61.0/28", + "117.49.61.20/30", + "117.49.61.24/29", + "117.49.61.32/29", + "117.49.61.48/28", + "117.49.61.64/27", + "117.49.61.96/28", + "117.49.61.112/29", + "117.49.61.120/30", + "117.49.61.128/25", + "117.49.62.0/23", + "117.49.64.0/18", + "117.49.128.0/17", + "117.50.0.0/16", + "117.51.128.0/23", + "117.51.131.0/24", + "117.51.132.0/22", + "117.51.136.0/21", + "117.51.144.0/20", + "117.51.160.0/19", + "117.51.192.0/18", + "117.53.48.0/20", + "117.53.176.0/20", + "117.57.0.0/16", + "117.58.0.0/17", + "117.59.0.0/16", + "117.60.0.0/16", + "117.61.0.0/17", + "117.61.128.0/18", + "117.61.192.0/19", + "117.61.240.0/20", + "117.62.0.0/15", + "117.64.0.0/13", + "117.72.0.0/15", + "117.74.64.0/19", + "117.74.128.0/17", + "117.75.0.0/16", + "117.76.0.0/14", + "117.80.0.0/12", + "117.100.0.0/15", + "117.103.16.0/20", + "117.103.40.0/21", + "117.103.72.0/21", + "117.103.128.0/20", + "117.104.168.0/21", + "117.106.0.0/15", + "117.112.0.0/13", + "117.120.64.0/18", + "117.121.0.0/19", + "117.121.32.0/21", + "117.121.40.0/22", + "117.121.44.0/23", + "117.121.46.0/24", + "117.121.48.0/20", + "117.121.64.0/18", + "117.121.128.0/20", + "117.121.148.0/22", + "117.121.152.0/21", + "117.121.160.0/19", + "117.121.192.0/21", + "117.122.128.0/17", + "117.124.0.0/14", + "117.128.0.0/10", + "118.24.0.0/15", + "118.26.0.0/19", + "118.26.40.0/21", + "118.26.48.0/21", + "118.26.64.0/19", + "118.26.96.0/21", + "118.26.112.0/21", + "118.26.121.0/24", + "118.26.122.0/23", + "118.26.124.0/23", + "118.26.128.0/22", + "118.26.133.0/24", + "118.26.134.0/23", + "118.26.136.0/21", + "118.26.160.0/20", + "118.26.188.0/22", + "118.26.192.0/18", + "118.28.0.0/14", + "118.64.0.0/15", + "118.66.0.0/16", + "118.67.112.0/20", + "118.72.0.0/13", + "118.80.0.0/15", + "118.84.0.0/24", + "118.84.1.0/26", + "118.84.1.64/28", + "118.84.1.80/30", + "118.84.1.86/31", + "118.84.1.88/29", + "118.84.1.96/27", + "118.84.1.128/25", + "118.84.2.0/23", + "118.84.5.0/24", + "118.84.6.0/23", + "118.84.8.0/21", + "118.84.16.0/20", + "118.84.32.0/19", + "118.84.64.0/18", + "118.84.128.0/17", + "118.85.0.0/17", + "118.85.128.0/21", + "118.85.136.0/29", + "118.85.136.8/30", + "118.85.136.14/31", + "118.85.136.16/29", + "118.85.136.24/31", + "118.85.136.28/30", + "118.85.136.32/27", + "118.85.136.64/26", + "118.85.136.128/25", + "118.85.137.0/24", + "118.85.138.0/23", + "118.85.140.0/22", + "118.85.144.0/20", + "118.85.160.0/19", + "118.85.192.0/21", + "118.85.200.0/22", + "118.85.207.0/24", + "118.85.208.0/24", + "118.85.209.0/27", + "118.85.209.32/29", + "118.85.209.40/30", + "118.85.209.46/31", + "118.85.209.48/28", + "118.85.209.64/26", + "118.85.209.128/25", + "118.85.210.0/23", + "118.85.212.0/22", + "118.85.216.0/21", + "118.85.224.0/19", + "118.88.32.0/19", + "118.88.64.0/18", + "118.88.128.0/17", + "118.89.0.0/16", + "118.91.240.0/20", + "118.102.16.0/20", + "118.102.32.0/21", + "118.103.164.0/22", + "118.103.168.0/21", + "118.103.176.0/22", + "118.112.0.0/13", + "118.120.0.0/14", + "118.124.0.0/15", + "118.126.0.0/16", + "118.127.128.0/19", + "118.132.0.0/14", + "118.144.0.0/14", + "118.178.0.0/16", + "118.180.0.0/14", + "118.184.4.0/22", + "118.184.12.0/22", + "118.184.16.0/22", + "118.184.20.0/23", + "118.184.23.0/24", + "118.184.24.0/22", + "118.184.28.0/23", + "118.184.31.0/24", + "118.184.32.0/21", + "118.184.53.0/24", + "118.184.54.0/23", + "118.184.56.0/21", + "118.184.65.0/24", + "118.184.70.0/23", + "118.184.74.0/23", + "118.184.80.0/24", + "118.184.89.0/24", + "118.184.90.0/23", + "118.184.108.0/22", + "118.184.128.0/17", + "118.186.0.0/15", + "118.188.0.0/22", + "118.188.8.0/21", + "118.188.16.0/20", + "118.188.32.0/19", + "118.188.64.0/18", + "118.188.160.0/19", + "118.188.192.0/18", + "118.190.0.0/16", + "118.191.0.0/21", + "118.191.8.0/22", + "118.191.12.0/24", + "118.191.17.0/24", + "118.191.18.0/23", + "118.191.20.0/22", + "118.191.48.0/20", + "118.191.64.0/20", + "118.191.80.0/22", + "118.191.132.0/22", + "118.191.136.0/21", + "118.191.144.0/21", + "118.191.153.0/24", + "118.191.154.0/23", + "118.191.156.0/22", + "118.191.176.0/20", + "118.191.192.0/20", + "118.191.217.0/24", + "118.191.218.0/23", + "118.191.242.0/23", + "118.191.244.0/22", + "118.191.248.0/21", + "118.192.0.0/16", + "118.193.0.0/22", + "118.193.8.0/21", + "118.193.48.0/22", + "118.193.52.0/23", + "118.193.54.0/24", + "118.193.96.0/19", + "118.193.130.0/23", + "118.193.132.0/22", + "118.193.137.0/24", + "118.193.139.0/24", + "118.193.140.0/24", + "118.193.149.0/24", + "118.193.150.0/23", + "118.193.163.0/24", + "118.193.169.0/24", + "118.193.170.0/24", + "118.193.172.0/24", + "118.193.177.0/24", + "118.193.178.0/23", + "118.193.180.0/22", + "118.193.184.0/22", + "118.193.192.0/18", + "118.194.0.0/17", + "118.194.128.0/18", + "118.194.192.0/19", + "118.194.240.0/21", + "118.195.0.0/16", + "118.196.0.0/14", + "118.202.0.0/15", + "118.204.0.0/14", + "118.212.0.0/15", + "118.215.192.0/18", + "118.224.0.0/14", + "118.228.0.0/15", + "118.230.0.0/16", + "118.239.0.0/16", + "118.242.0.0/16", + "118.244.0.0/14", + "118.248.0.0/13", + "119.0.0.0/15", + "119.2.0.0/19", + "119.2.128.0/17", + "119.3.0.0/16", + "119.4.0.0/14", + "119.10.0.0/17", + "119.15.136.0/21", + "119.16.0.0/16", + "119.18.192.0/20", + "119.18.208.0/21", + "119.18.224.0/19", + "119.19.0.0/16", + "119.20.0.0/14", + "119.27.64.0/18", + "119.27.128.0/17", + "119.28.28.0/24", + "119.29.0.0/16", + "119.30.48.0/20", + "119.31.192.0/19", + "119.32.0.0/14", + "119.36.0.0/15", + "119.38.0.0/17", + "119.38.129.0/24", + "119.38.130.0/23", + "119.38.132.0/22", + "119.38.136.0/21", + "119.38.144.0/20", + "119.38.160.0/19", + "119.38.192.0/20", + "119.38.208.0/22", + "119.38.212.0/23", + "119.38.214.0/27", + "119.38.214.56/29", + "119.38.214.64/26", + "119.38.214.128/25", + "119.38.215.0/27", + "119.38.215.32/28", + "119.38.215.48/29", + "119.38.215.56/30", + "119.38.215.76/30", + "119.38.215.80/28", + "119.38.215.96/27", + "119.38.215.128/25", + "119.38.216.0/21", + "119.38.224.0/19", + "119.39.0.0/16", + "119.40.0.0/18", + "119.40.64.0/20", + "119.40.128.0/17", + "119.41.0.0/16", + "119.42.0.0/19", + "119.42.128.0/20", + "119.42.224.0/19", + "119.44.0.0/15", + "119.48.0.0/13", + "119.57.0.0/16", + "119.58.0.0/16", + "119.59.128.0/18", + "119.59.208.0/22", + "119.59.220.0/22", + "119.59.236.0/22", + "119.59.244.0/22", + "119.60.0.0/15", + "119.62.0.0/16", + "119.63.32.0/19", + "119.75.208.0/20", + "119.78.0.0/15", + "119.80.0.0/16", + "119.82.208.0/20", + "119.84.0.0/14", + "119.88.0.0/14", + "119.96.0.0/13", + "119.108.0.0/15", + "119.112.0.0/12", + "119.128.0.0/12", + "119.144.0.0/14", + "119.148.160.0/19", + "119.151.192.0/18", + "119.160.200.0/21", + "119.161.120.0/21", + "119.161.160.0/19", + "119.161.192.0/18", + "119.162.0.0/15", + "119.164.0.0/14", + "119.176.0.0/12", + "119.232.0.0/15", + "119.235.128.0/19", + "119.235.160.0/20", + "119.235.181.0/24", + "119.235.184.0/22", + "119.248.0.0/14", + "119.252.96.0/21", + "119.252.240.0/21", + "119.252.249.0/24", + "119.252.252.0/23", + "119.253.0.0/16", + "119.254.0.0/15", + "120.0.0.0/12", + "120.24.0.0/14", + "120.30.0.0/17", + "120.30.128.0/20", + "120.30.144.0/22", + "120.30.148.0/23", + "120.30.151.0/24", + "120.30.152.0/21", + "120.30.160.0/19", + "120.30.192.0/18", + "120.31.0.0/16", + "120.32.0.0/12", + "120.48.0.0/15", + "120.52.0.0/16", + "120.53.0.0/19", + "120.53.32.0/20", + "120.53.48.0/22", + "120.53.54.0/23", + "120.53.56.0/21", + "120.53.64.0/18", + "120.53.128.0/17", + "120.54.0.0/15", + "120.64.0.0/13", + "120.72.32.0/19", + "120.72.128.0/17", + "120.76.0.0/14", + "120.80.0.0/13", + "120.88.8.0/21", + "120.90.0.0/15", + "120.92.0.0/16", + "120.94.0.0/15", + "120.128.0.0/13", + "120.136.16.0/21", + "120.136.128.0/18", + "120.137.0.0/17", + "120.143.128.0/19", + "120.192.0.0/10", + "121.0.8.0/21", + "121.0.16.0/20", + "121.4.0.0/22", + "121.4.8.0/21", + "121.4.16.0/20", + "121.4.32.0/19", + "121.4.64.0/18", + "121.4.128.0/17", + "121.5.0.0/16", + "121.8.0.0/13", + "121.16.0.0/12", + "121.32.0.0/13", + "121.40.0.0/14", + "121.46.0.0/18", + "121.46.76.0/22", + "121.46.128.0/21", + "121.46.141.0/24", + "121.46.160.0/19", + "121.46.192.0/18", + "121.47.0.0/16", + "121.48.0.0/15", + "121.50.8.0/21", + "121.51.0.0/16", + "121.52.160.0/19", + "121.52.208.0/20", + "121.52.224.0/19", + "121.54.176.0/21", + "121.55.0.0/18", + "121.56.0.0/15", + "121.58.0.0/17", + "121.58.136.0/21", + "121.58.144.0/20", + "121.58.160.0/21", + "121.59.0.0/20", + "121.59.16.0/24", + "121.59.18.0/23", + "121.59.20.0/22", + "121.59.24.0/22", + "121.59.28.0/24", + "121.59.30.0/23", + "121.59.36.0/23", + "121.59.39.0/24", + "121.59.40.0/21", + "121.59.48.0/20", + "121.59.64.0/19", + "121.59.96.0/22", + "121.59.102.0/23", + "121.59.104.0/24", + "121.59.108.0/24", + "121.59.110.0/23", + "121.59.112.0/21", + "121.59.121.0/24", + "121.59.123.0/24", + "121.59.125.0/24", + "121.59.126.0/23", + "121.59.160.0/19", + "121.59.192.0/18", + "121.60.0.0/14", + "121.68.0.0/14", + "121.76.0.0/15", + "121.79.128.0/18", + "121.89.0.0/16", + "121.91.104.0/21", + "121.100.128.0/17", + "121.101.0.0/18", + "121.101.208.0/20", + "121.192.0.0/13", + "121.200.192.0/21", + "121.201.0.0/16", + "121.204.0.0/14", + "121.224.0.0/12", + "121.248.0.0/14", + "121.255.0.0/16", + "122.0.64.0/18", + "122.4.0.0/14", + "122.8.0.0/24", + "122.8.23.0/24", + "122.8.70.0/23", + "122.8.72.0/22", + "122.8.116.0/22", + "122.8.192.0/18", + "122.9.0.0/16", + "122.10.132.0/23", + "122.10.136.0/23", + "122.10.164.0/22", + "122.10.168.0/21", + "122.10.194.0/23", + "122.10.200.0/22", + "122.10.205.0/24", + "122.10.206.0/23", + "122.10.208.0/23", + "122.10.210.0/24", + "122.10.212.0/22", + "122.10.216.0/22", + "122.10.228.0/22", + "122.10.232.0/21", + "122.10.240.0/22", + "122.11.32.0/19", + "122.12.0.0/15", + "122.14.0.0/17", + "122.14.128.0/21", + "122.14.172.0/24", + "122.14.174.0/23", + "122.14.176.0/21", + "122.14.184.0/22", + "122.14.188.0/23", + "122.14.190.0/24", + "122.14.192.0/18", + "122.48.0.0/16", + "122.49.0.0/18", + "122.51.0.0/16", + "122.64.0.0/11", + "122.96.0.0/15", + "122.102.0.0/20", + "122.102.64.0/19", + "122.112.0.0/18", + "122.112.64.0/19", + "122.112.118.0/24", + "122.112.122.0/24", + "122.112.125.0/24", + "122.112.128.0/17", + "122.113.0.0/19", + "122.113.32.0/20", + "122.113.48.0/23", + "122.113.51.0/24", + "122.113.52.0/22", + "122.113.56.0/21", + "122.113.64.0/18", + "122.113.128.0/17", + "122.114.0.0/16", + "122.115.0.0/18", + "122.115.80.0/20", + "122.115.96.0/19", + "122.115.128.0/17", + "122.119.0.0/16", + "122.128.100.0/22", + "122.128.120.0/21", + "122.136.0.0/13", + "122.144.128.0/17", + "122.152.192.0/18", + "122.156.0.0/14", + "122.188.0.0/14", + "122.192.0.0/14", + "122.198.0.0/18", + "122.198.68.0/22", + "122.198.72.0/21", + "122.198.80.0/20", + "122.198.96.0/19", + "122.198.128.0/17", + "122.200.40.0/21", + "122.200.64.0/18", + "122.201.48.0/20", + "122.204.0.0/14", + "122.224.0.0/12", + "122.240.0.0/13", + "122.248.24.0/21", + "122.248.48.0/20", + "122.255.64.0/21", + "123.0.128.0/18", + "123.4.0.0/14", + "123.8.0.0/13", + "123.49.128.0/17", + "123.50.160.0/19", + "123.52.0.0/14", + "123.56.0.0/15", + "123.58.0.0/17", + "123.58.128.0/18", + "123.58.224.0/19", + "123.59.0.0/16", + "123.60.0.0/15", + "123.62.0.0/16", + "123.64.0.0/11", + "123.96.0.0/15", + "123.98.4.0/22", + "123.98.8.0/22", + "123.98.16.0/21", + "123.98.28.0/22", + "123.98.32.0/22", + "123.98.40.0/21", + "123.98.48.0/22", + "123.98.56.0/21", + "123.98.68.0/22", + "123.98.76.0/22", + "123.98.80.0/21", + "123.98.88.0/22", + "123.98.96.0/22", + "123.98.104.0/21", + "123.98.112.0/21", + "123.98.120.0/22", + "123.99.128.0/19", + "123.99.160.0/22", + "123.99.164.0/24", + "123.99.166.0/23", + "123.99.168.0/21", + "123.99.176.0/20", + "123.99.192.0/18", + "123.100.0.0/19", + "123.101.0.0/16", + "123.103.0.0/17", + "123.108.88.0/23", + "123.108.130.0/23", + "123.108.132.0/22", + "123.108.136.0/21", + "123.108.208.0/20", + "123.112.0.0/12", + "123.128.0.0/13", + "123.137.0.0/16", + "123.138.0.0/15", + "123.144.0.0/12", + "123.160.0.0/12", + "123.176.60.0/22", + "123.176.80.0/20", + "123.177.0.0/16", + "123.178.0.0/15", + "123.180.0.0/14", + "123.184.0.0/13", + "123.196.0.0/15", + "123.199.128.0/17", + "123.206.0.0/15", + "123.232.0.0/14", + "123.242.192.0/21", + "123.244.0.0/14", + "123.249.0.0/17", + "123.253.240.0/22", + "123.254.96.0/21", + "124.6.64.0/18", + "124.14.0.0/15", + "124.16.0.0/15", + "124.22.0.0/15", + "124.28.192.0/18", + "124.29.0.0/17", + "124.31.0.0/16", + "124.40.112.0/20", + "124.40.128.0/18", + "124.40.192.0/19", + "124.40.240.0/22", + "124.42.0.0/16", + "124.47.0.0/18", + "124.64.0.0/15", + "124.66.0.0/17", + "124.67.0.0/16", + "124.68.0.0/17", + "124.68.128.0/18", + "124.68.192.0/19", + "124.68.224.0/20", + "124.68.240.0/21", + "124.68.248.0/22", + "124.68.254.0/23", + "124.69.0.0/16", + "124.70.0.0/16", + "124.71.0.0/17", + "124.71.128.0/18", + "124.71.192.0/19", + "124.71.224.0/20", + "124.71.240.0/21", + "124.71.250.0/23", + "124.71.254.0/23", + "124.72.0.0/13", + "124.88.0.0/13", + "124.108.8.0/21", + "124.108.41.0/24", + "124.108.42.0/23", + "124.108.44.0/22", + "124.109.96.0/21", + "124.112.0.0/13", + "124.126.0.0/15", + "124.128.0.0/13", + "124.150.137.0/24", + "124.151.0.0/16", + "124.152.0.0/16", + "124.160.0.0/13", + "124.172.0.0/15", + "124.174.0.0/16", + "124.175.0.0/17", + "124.175.160.0/19", + "124.192.0.0/15", + "124.196.0.0/16", + "124.200.0.0/13", + "124.220.0.0/14", + "124.224.0.0/12", + "124.240.0.0/17", + "124.240.128.0/18", + "124.242.0.0/16", + "124.243.192.0/18", + "124.248.0.0/17", + "124.249.0.0/16", + "124.250.0.0/15", + "124.254.0.0/18", + "125.31.192.0/18", + "125.32.0.0/12", + "125.58.128.0/17", + "125.61.128.0/17", + "125.62.0.0/18", + "125.64.0.0/11", + "125.96.0.0/15", + "125.98.0.0/16", + "125.104.0.0/13", + "125.112.0.0/12", + "125.169.0.0/16", + "125.171.0.0/16", + "125.208.0.0/19", + "125.208.37.0/24", + "125.208.40.0/24", + "125.208.45.0/24", + "125.208.46.0/23", + "125.208.48.0/24", + "125.208.50.0/23", + "125.208.52.0/22", + "125.208.56.0/21", + "125.210.0.0/15", + "125.213.0.0/17", + "125.214.96.0/19", + "125.215.0.0/18", + "125.216.0.0/13", + "125.254.128.0/17", + "128.107.24.0/23", + "128.108.0.0/16", + "129.28.0.0/16", + "129.204.0.0/16", + "129.211.0.0/16", + "130.36.146.0/23", + "130.214.218.0/23", + "131.228.96.0/23", + "131.253.12.0/29", + "131.253.12.80/28", + "131.253.12.240/29", + "132.232.0.0/16", + "132.237.134.0/24", + "134.75.107.10/31", + "134.75.107.14/31", + "134.175.0.0/16", + "137.59.59.0/24", + "137.59.88.0/22", + "139.5.56.0/21", + "139.5.80.0/22", + "139.5.92.0/22", + "139.5.128.0/22", + "139.5.160.0/22", + "139.5.192.0/22", + "139.5.204.0/22", + "139.5.244.0/22", + "139.9.0.0/18", + "139.9.64.0/19", + "139.9.96.0/23", + "139.9.100.0/22", + "139.9.104.0/21", + "139.9.112.0/20", + "139.9.128.0/17", + "139.95.4.34/32", + "139.129.0.0/16", + "139.138.238.0/28", + "139.148.0.0/16", + "139.155.0.0/16", + "139.159.0.0/19", + "139.159.32.0/21", + "139.159.40.0/22", + "139.159.52.0/22", + "139.159.56.0/21", + "139.159.64.0/19", + "139.159.96.0/20", + "139.159.112.0/22", + "139.159.116.0/23", + "139.159.120.0/21", + "139.159.128.0/17", + "139.170.0.0/16", + "139.176.0.0/16", + "139.183.0.0/18", + "139.183.64.0/19", + "139.183.96.0/22", + "139.183.101.0/24", + "139.183.102.0/23", + "139.183.104.0/21", + "139.183.112.0/20", + "139.183.128.0/18", + "139.186.0.0/16", + "139.189.0.0/16", + "139.196.0.0/15", + "139.198.0.0/18", + "139.198.66.0/23", + "139.198.68.0/22", + "139.198.72.0/21", + "139.198.80.0/20", + "139.198.96.0/20", + "139.198.114.0/23", + "139.198.116.0/22", + "139.198.122.0/23", + "139.198.124.0/22", + "139.198.128.0/17", + "139.199.0.0/16", + "139.200.0.0/13", + "139.208.0.0/13", + "139.217.0.0/16", + "139.219.0.0/16", + "139.220.0.0/15", + "139.224.0.0/16", + "139.226.0.0/15", + "140.75.0.0/16", + "140.143.0.0/16", + "140.179.0.0/16", + "140.205.0.0/24", + "140.205.2.0/23", + "140.205.4.0/22", + "140.205.8.0/21", + "140.205.16.0/22", + "140.205.20.0/23", + "140.205.22.0/27", + "140.205.22.32/31", + "140.205.22.36/30", + "140.205.22.42/31", + "140.205.22.44/30", + "140.205.22.48/28", + "140.205.22.64/26", + "140.205.22.128/25", + "140.205.23.0/24", + "140.205.24.0/26", + "140.205.24.64/31", + "140.205.24.68/30", + "140.205.24.72/29", + "140.205.24.80/28", + "140.205.24.96/27", + "140.205.24.128/25", + "140.205.25.0/24", + "140.205.26.0/23", + "140.205.28.0/22", + "140.205.32.0/19", + "140.205.64.0/18", + "140.205.128.0/17", + "140.206.0.0/15", + "140.210.0.0/16", + "140.224.0.0/16", + "140.237.0.0/16", + "140.240.0.0/16", + "140.242.223.0/24", + "140.242.224.0/24", + "140.243.0.0/16", + "140.246.0.0/16", + "140.248.33.2/31", + "140.249.0.0/16", + "140.250.0.0/16", + "140.255.0.0/16", + "142.70.0.0/16", + "142.86.0.0/16", + "143.64.0.0/16", + "144.0.0.0/16", + "144.7.0.0/16", + "144.12.0.0/16", + "144.36.147.0/24", + "144.48.64.0/22", + "144.48.88.0/22", + "144.48.156.0/22", + "144.48.180.0/22", + "144.48.184.0/22", + "144.48.204.0/22", + "144.48.208.0/21", + "144.52.0.0/16", + "144.123.0.0/16", + "144.178.30.48/28", + "144.255.0.0/16", + "146.56.192.0/18", + "146.75.187.2/31", + "146.75.189.2/31", + "146.75.196.0/31", + "146.196.56.0/22", + "146.196.68.0/22", + "146.196.92.0/22", + "146.196.112.0/21", + "146.196.124.0/22", + "146.222.79.0/24", + "146.222.81.0/24", + "146.222.94.0/24", + "147.243.29.192/26", + "147.243.30.64/26", + "147.243.30.128/27", + "147.243.103.0/25", + "148.70.0.0/16", + "149.41.0.0/16", + "150.0.0.0/16", + "150.115.0.0/16", + "150.121.0.0/16", + "150.122.0.0/16", + "150.129.136.0/22", + "150.129.192.0/22", + "150.129.252.0/22", + "150.138.0.0/15", + "150.158.0.0/16", + "150.222.64.0/24", + "150.222.88.0/23", + "150.223.0.0/16", + "150.242.0.0/21", + "150.242.8.0/22", + "150.242.28.0/22", + "150.242.44.0/22", + "150.242.48.0/21", + "150.242.56.0/22", + "150.242.76.0/22", + "150.242.80.0/22", + "150.242.92.0/22", + "150.242.96.0/22", + "150.242.112.0/21", + "150.242.120.0/22", + "150.242.152.0/22", + "150.242.160.0/21", + "150.242.168.0/22", + "150.242.184.0/21", + "150.242.192.0/22", + "150.242.212.0/24", + "150.242.226.0/23", + "150.242.232.0/21", + "150.242.240.0/21", + "150.242.248.0/22", + "150.248.0.0/16", + "150.255.0.0/16", + "152.104.128.0/17", + "152.136.0.0/16", + "153.0.0.0/16", + "153.3.0.0/16", + "153.34.0.0/15", + "153.36.0.0/15", + "153.99.0.0/16", + "153.101.0.0/16", + "153.118.0.0/15", + "154.8.128.0/17", + "155.126.176.0/23", + "156.107.160.0/24", + "156.107.170.0/24", + "156.107.179.0/24", + "156.107.181.0/24", + "156.154.62.0/23", + "157.0.0.0/16", + "157.10.35.0/24", + "157.10.36.0/23", + "157.10.112.0/23", + "157.10.118.0/23", + "157.10.130.0/23", + "157.10.218.0/23", + "157.10.220.0/23", + "157.10.246.0/23", + "157.15.74.0/23", + "157.15.94.0/23", + "157.15.100.0/22", + "157.15.104.0/23", + "157.18.0.0/16", + "157.20.33.0/24", + "157.20.136.0/23", + "157.20.194.0/23", + "157.20.246.0/23", + "157.61.0.0/16", + "157.66.70.0/23", + "157.66.88.0/21", + "157.66.164.0/23", + "157.66.244.0/23", + "157.119.8.0/21", + "157.119.16.0/22", + "157.119.28.0/22", + "157.119.132.0/22", + "157.119.136.0/21", + "157.119.144.0/20", + "157.119.160.0/21", + "157.119.172.0/22", + "157.119.192.0/21", + "157.119.240.0/22", + "157.119.252.0/22", + "157.122.0.0/16", + "157.133.186.0/23", + "157.133.192.0/21", + "157.148.0.0/16", + "157.156.0.0/16", + "157.255.0.0/16", + "158.26.192.0/24", + "158.26.194.0/24", + "158.60.0.0/16", + "158.79.0.0/24", + "158.79.2.0/23", + "158.79.4.0/22", + "158.79.8.0/21", + "158.79.16.0/20", + "158.79.32.0/19", + "158.79.64.0/18", + "158.79.128.0/17", + "158.140.252.0/23", + "159.27.0.0/16", + "159.75.0.0/16", + "159.226.0.0/16", + "160.19.76.0/23", + "160.19.82.0/23", + "160.19.208.0/21", + "160.19.216.0/22", + "160.20.16.0/22", + "160.20.48.0/22", + "160.20.130.0/23", + "160.22.58.0/23", + "160.22.82.0/23", + "160.22.148.0/23", + "160.22.188.0/23", + "160.22.224.0/23", + "160.22.230.0/23", + "160.22.244.0/22", + "160.25.10.0/23", + "160.25.12.0/23", + "160.25.194.0/23", + "160.30.40.0/23", + "160.30.150.0/23", + "160.30.194.0/23", + "160.30.196.0/22", + "160.30.230.0/23", + "160.83.110.0/24", + "160.187.223.0/24", + "160.187.252.0/22", + "160.191.0.0/23", + "160.191.104.0/23", + "160.191.110.0/23", + "160.202.60.0/23", + "160.202.62.0/24", + "160.202.148.0/22", + "160.202.152.0/22", + "160.202.212.0/22", + "160.202.216.0/21", + "160.202.224.0/19", + "160.250.14.0/23", + "160.250.16.0/22", + "160.250.24.0/23", + "160.250.84.0/23", + "160.250.90.0/23", + "160.250.102.0/23", + "160.250.104.0/23", + "160.250.160.0/23", + "160.250.170.0/23", + "160.250.214.0/23", + "160.250.252.0/23", + "161.120.0.0/16", + "161.163.0.0/21", + "161.163.28.0/23", + "161.189.0.0/16", + "161.207.0.0/16", + "161.248.20.0/23", + "161.248.42.0/23", + "161.248.84.0/23", + "161.248.92.0/23", + "161.248.136.0/24", + "162.14.0.0/20", + "162.14.16.0/21", + "162.14.26.0/23", + "162.14.28.0/22", + "162.14.32.0/21", + "162.14.40.0/22", + "162.14.52.0/22", + "162.14.56.0/21", + "162.14.64.0/18", + "162.14.128.0/17", + "162.62.240.0/23", + "162.62.242.0/24", + "162.105.0.0/16", + "163.0.0.0/16", + "163.47.4.0/22", + "163.53.0.0/20", + "163.53.36.0/22", + "163.53.40.0/22", + "163.53.44.0/24", + "163.53.48.0/20", + "163.53.64.0/22", + "163.53.88.0/21", + "163.53.96.0/19", + "163.53.128.0/21", + "163.53.136.0/22", + "163.53.160.0/20", + "163.53.188.0/22", + "163.53.240.0/22", + "163.61.63.0/24", + "163.61.178.0/23", + "163.61.202.0/23", + "163.61.214.0/23", + "163.125.0.0/16", + "163.142.0.0/16", + "163.177.0.0/16", + "163.179.0.0/16", + "163.204.0.0/16", + "163.228.0.0/16", + "163.244.246.0/24", + "164.52.74.0/24", + "164.52.80.0/24", + "166.111.0.0/16", + "167.139.0.0/16", + "167.189.0.0/16", + "167.220.244.0/22", + "168.159.144.0/21", + "168.159.152.0/22", + "168.159.156.0/23", + "168.159.158.0/24", + "168.160.0.0/16", + "170.179.0.0/16", + "171.8.0.0/13", + "171.34.0.0/15", + "171.36.0.0/14", + "171.40.0.0/13", + "171.80.0.0/12", + "171.104.0.0/13", + "171.112.0.0/12", + "171.208.0.0/12", + "172.81.192.0/18", + "172.225.51.64/26", + "172.225.58.32/27", + "172.225.58.64/26", + "172.225.80.0/26", + "172.225.126.0/26", + "172.225.181.192/26", + "172.225.200.32/28", + "172.226.47.0/27", + "172.226.138.64/27", + "172.226.180.96/27", + "172.226.180.128/27", + "172.226.214.64/27", + "173.39.200.0/23", + "175.0.0.0/12", + "175.16.0.0/13", + "175.24.0.0/14", + "175.30.0.0/15", + "175.42.0.0/15", + "175.44.0.0/16", + "175.46.0.0/15", + "175.48.0.0/12", + "175.64.0.0/11", + "175.102.0.0/16", + "175.106.128.0/17", + "175.111.144.0/20", + "175.111.160.0/20", + "175.111.184.0/22", + "175.146.0.0/15", + "175.148.0.0/14", + "175.152.0.0/14", + "175.158.96.0/22", + "175.160.0.0/12", + "175.176.156.0/22", + "175.176.176.0/22", + "175.176.188.0/22", + "175.178.0.0/16", + "175.184.128.0/18", + "175.185.0.0/16", + "175.186.0.0/15", + "175.188.0.0/14", + "180.76.16.0/20", + "180.76.32.0/19", + "180.76.64.0/18", + "180.76.128.0/17", + "180.77.0.0/16", + "180.78.0.0/15", + "180.84.0.0/15", + "180.86.0.0/16", + "180.88.0.0/14", + "180.92.176.0/23", + "180.94.56.0/21", + "180.94.96.0/20", + "180.94.120.0/21", + "180.95.128.0/17", + "180.96.0.0/11", + "180.129.128.0/17", + "180.130.0.0/16", + "180.136.0.0/13", + "180.148.16.0/21", + "180.148.152.0/21", + "180.148.216.0/21", + "180.148.224.0/19", + "180.149.128.0/19", + "180.150.160.0/19", + "180.152.0.0/13", + "180.160.0.0/12", + "180.178.112.0/21", + "180.178.192.0/18", + "180.184.0.0/14", + "180.188.0.0/17", + "180.189.148.0/22", + "180.200.252.0/22", + "180.201.0.0/16", + "180.202.0.0/15", + "180.208.0.0/15", + "180.210.212.0/22", + "180.210.228.0/22", + "180.210.232.0/21", + "180.212.0.0/15", + "180.222.224.0/19", + "180.223.0.0/19", + "180.223.40.0/21", + "180.223.48.0/20", + "180.223.128.0/20", + "180.223.144.0/22", + "180.223.152.0/21", + "180.223.160.0/19", + "180.223.212.0/22", + "180.233.0.0/18", + "180.233.64.0/19", + "180.233.144.0/22", + "180.235.64.0/19", + "180.235.112.0/22", + "182.16.144.0/21", + "182.16.192.0/19", + "182.18.0.0/17", + "182.23.184.0/21", + "182.23.200.0/21", + "182.32.0.0/12", + "182.48.96.0/19", + "182.49.0.0/16", + "182.50.0.0/22", + "182.50.8.0/21", + "182.50.112.0/20", + "182.51.0.0/16", + "182.54.0.0/17", + "182.54.244.0/22", + "182.61.0.0/18", + "182.61.128.0/19", + "182.61.192.0/18", + "182.80.0.0/13", + "182.88.0.0/14", + "182.92.0.0/16", + "182.96.0.0/11", + "182.128.0.0/12", + "182.144.0.0/13", + "182.157.0.0/16", + "182.160.64.0/19", + "182.174.0.0/15", + "182.200.0.0/13", + "182.236.128.0/17", + "182.237.24.0/21", + "182.238.0.0/16", + "182.239.0.0/19", + "182.240.0.0/13", + "182.254.0.0/24", + "182.254.1.0/29", + "182.254.1.8/30", + "182.254.1.14/31", + "182.254.1.16/29", + "182.254.1.24/30", + "182.254.1.28/31", + "182.254.1.34/31", + "182.254.1.36/31", + "182.254.1.40/29", + "182.254.1.48/28", + "182.254.1.64/26", + "182.254.1.128/25", + "182.254.2.0/23", + "182.254.4.0/22", + "182.254.8.0/21", + "182.254.16.0/20", + "182.254.32.0/19", + "182.254.64.0/18", + "182.254.128.0/17", + "183.0.0.0/10", + "183.64.0.0/13", + "183.78.161.0/24", + "183.78.162.0/23", + "183.78.164.0/22", + "183.78.180.0/22", + "183.81.180.0/22", + "183.84.0.0/15", + "183.91.128.0/22", + "183.91.136.0/21", + "183.91.144.0/20", + "183.92.0.0/14", + "183.128.0.0/11", + "183.160.0.0/13", + "183.168.0.0/15", + "183.170.0.0/16", + "183.172.0.0/14", + "183.182.0.0/21", + "183.182.8.0/23", + "183.182.12.0/22", + "183.182.16.0/23", + "183.182.23.0/24", + "183.182.24.0/23", + "183.182.26.0/24", + "183.182.28.0/22", + "183.184.0.0/13", + "183.192.0.0/10", + "188.131.128.0/17", + "192.23.191.0/24", + "192.55.46.0/23", + "192.55.68.0/22", + "192.56.99.0/24", + "192.102.204.0/22", + "192.124.154.0/24", + "192.137.31.0/24", + "192.140.128.0/21", + "192.140.136.0/22", + "192.140.156.0/22", + "192.140.160.0/19", + "192.140.192.0/20", + "192.140.208.0/21", + "192.144.128.0/17", + "192.163.11.0/24", + "192.232.97.0/24", + "193.112.0.0/16", + "193.119.0.0/21", + "193.119.8.0/23", + "193.119.11.0/24", + "193.119.12.0/24", + "193.119.14.0/23", + "193.119.16.0/22", + "193.119.21.0/24", + "193.119.22.0/23", + "193.119.24.0/22", + "193.119.28.0/23", + "193.119.31.0/24", + "193.200.222.160/28", + "194.61.237.0/25", + "194.138.136.0/24", + "194.138.202.0/23", + "194.138.245.0/24", + "198.175.100.0/22", + "198.208.17.0/24", + "198.208.19.0/24", + "198.208.30.0/24", + "198.208.61.0/24", + "198.208.63.0/24", + "198.208.67.0/24", + "198.208.112.0/23", + "199.65.192.0/21", + "199.244.144.0/24", + "202.0.100.0/23", + "202.0.122.0/23", + "202.1.86.0/23", + "202.1.90.0/23", + "202.1.105.0/24", + "202.1.106.0/24", + "202.1.110.0/23", + "202.1.112.0/23", + "202.3.128.0/23", + "202.4.128.0/19", + "202.4.252.0/22", + "202.5.208.0/21", + "202.5.216.0/22", + "202.6.6.0/23", + "202.6.66.0/23", + "202.6.72.0/23", + "202.6.87.0/24", + "202.6.88.0/23", + "202.6.92.0/23", + "202.6.103.0/24", + "202.6.108.0/24", + "202.6.110.0/23", + "202.6.114.0/24", + "202.6.176.0/20", + "202.8.0.0/24", + "202.8.2.0/23", + "202.8.4.0/23", + "202.8.12.0/24", + "202.8.24.0/24", + "202.8.77.0/24", + "202.8.128.0/19", + "202.8.192.0/20", + "202.9.32.0/24", + "202.9.34.0/23", + "202.9.48.0/23", + "202.9.51.0/24", + "202.9.52.0/23", + "202.9.54.0/24", + "202.9.57.0/24", + "202.9.58.0/23", + "202.10.64.0/21", + "202.10.74.0/23", + "202.10.76.0/22", + "202.10.112.0/20", + "202.12.1.0/24", + "202.12.2.0/24", + "202.12.17.0/24", + "202.12.18.0/24", + "202.12.72.0/24", + "202.12.84.0/23", + "202.12.96.0/24", + "202.12.98.0/23", + "202.12.106.0/24", + "202.12.111.0/24", + "202.12.116.0/24", + "202.14.64.0/23", + "202.14.69.0/24", + "202.14.73.0/24", + "202.14.74.0/23", + "202.14.76.0/24", + "202.14.78.0/23", + "202.14.88.0/24", + "202.14.97.0/24", + "202.14.104.0/23", + "202.14.108.0/23", + "202.14.111.0/24", + "202.14.114.0/23", + "202.14.118.0/23", + "202.14.124.0/23", + "202.14.127.0/24", + "202.14.129.0/24", + "202.14.135.0/24", + "202.14.136.0/24", + "202.14.149.0/24", + "202.14.151.0/24", + "202.14.157.0/24", + "202.14.158.0/23", + "202.14.169.0/24", + "202.14.170.0/23", + "202.14.172.0/22", + "202.14.176.0/24", + "202.14.184.0/23", + "202.14.208.0/23", + "202.14.213.0/24", + "202.14.219.0/24", + "202.14.220.0/24", + "202.14.222.0/23", + "202.14.225.0/24", + "202.14.226.0/23", + "202.14.231.0/24", + "202.14.235.0/24", + "202.14.236.0/22", + "202.14.246.0/24", + "202.14.251.0/24", + "202.20.66.0/24", + "202.20.79.0/24", + "202.20.87.0/24", + "202.20.88.0/23", + "202.20.90.0/24", + "202.20.94.0/23", + "202.20.114.0/24", + "202.20.117.0/24", + "202.20.120.0/24", + "202.20.125.0/24", + "202.20.126.0/23", + "202.21.48.0/20", + "202.21.131.0/24", + "202.21.132.0/24", + "202.21.141.0/24", + "202.21.142.0/24", + "202.21.147.0/24", + "202.21.148.0/24", + "202.21.150.0/23", + "202.21.152.0/23", + "202.21.154.0/24", + "202.21.156.0/24", + "202.22.248.0/21", + "202.27.12.0/24", + "202.27.14.0/24", + "202.27.136.0/23", + "202.36.226.0/24", + "202.38.0.0/22", + "202.38.8.0/21", + "202.38.48.0/20", + "202.38.64.0/18", + "202.38.128.0/21", + "202.38.136.0/23", + "202.38.140.0/22", + "202.38.146.0/23", + "202.38.149.0/24", + "202.38.150.0/23", + "202.38.152.0/22", + "202.38.156.0/24", + "202.38.158.0/23", + "202.38.164.0/22", + "202.38.168.0/23", + "202.38.170.0/24", + "202.38.176.0/23", + "202.38.184.0/21", + "202.38.192.0/18", + "202.40.4.0/23", + "202.40.7.0/24", + "202.40.15.0/24", + "202.40.135.0/24", + "202.40.136.0/24", + "202.40.140.0/24", + "202.40.143.0/24", + "202.40.144.0/23", + "202.40.150.0/24", + "202.40.155.0/24", + "202.40.156.0/24", + "202.40.158.0/23", + "202.40.162.0/24", + "202.41.8.0/23", + "202.41.11.0/24", + "202.41.12.0/23", + "202.41.128.0/24", + "202.41.130.0/23", + "202.41.142.0/24", + "202.41.152.0/21", + "202.41.192.0/24", + "202.41.196.0/22", + "202.41.200.0/22", + "202.41.240.0/20", + "202.43.76.0/22", + "202.43.144.0/20", + "202.44.16.0/20", + "202.44.48.0/22", + "202.44.67.0/24", + "202.44.74.0/24", + "202.44.97.0/24", + "202.44.129.0/24", + "202.44.132.0/23", + "202.44.146.0/23", + "202.45.0.0/23", + "202.45.2.0/24", + "202.45.15.0/24", + "202.45.16.0/20", + "202.46.16.0/23", + "202.46.18.0/24", + "202.46.20.0/23", + "202.46.40.0/24", + "202.46.128.0/24", + "202.46.224.0/20", + "202.47.82.0/23", + "202.47.96.0/20", + "202.47.126.0/24", + "202.47.128.0/24", + "202.47.130.0/23", + "202.52.33.0/24", + "202.52.34.0/24", + "202.52.47.0/24", + "202.52.143.0/24", + "202.53.140.0/24", + "202.53.143.0/24", + "202.57.192.0/22", + "202.57.196.0/23", + "202.57.201.0/24", + "202.57.202.0/23", + "202.57.206.0/23", + "202.57.212.0/22", + "202.57.216.0/22", + "202.57.240.0/20", + "202.58.0.0/24", + "202.58.112.0/22", + "202.59.0.0/23", + "202.59.212.0/22", + "202.59.236.0/24", + "202.59.240.0/24", + "202.60.48.0/21", + "202.60.96.0/21", + "202.60.112.0/20", + "202.60.132.0/22", + "202.60.136.0/21", + "202.60.144.0/20", + "202.61.68.0/22", + "202.61.76.0/22", + "202.61.88.0/22", + "202.61.123.0/24", + "202.61.127.0/24", + "202.62.112.0/22", + "202.62.248.0/22", + "202.62.252.0/24", + "202.62.255.0/24", + "202.63.80.0/20", + "202.63.160.0/19", + "202.63.248.0/22", + "202.63.253.0/24", + "202.65.0.0/21", + "202.65.8.0/23", + "202.65.100.0/22", + "202.65.104.0/21", + "202.66.169.0/24", + "202.66.170.0/23", + "202.67.0.0/22", + "202.69.4.0/23", + "202.69.16.0/20", + "202.70.0.0/19", + "202.70.96.0/20", + "202.70.192.0/20", + "202.71.32.0/20", + "202.72.40.0/21", + "202.72.80.0/20", + "202.72.112.0/20", + "202.73.128.0/22", + "202.73.240.0/20", + "202.74.8.0/21", + "202.74.36.0/24", + "202.74.42.0/24", + "202.74.52.0/24", + "202.74.80.0/20", + "202.74.254.0/23", + "202.75.208.0/20", + "202.75.252.0/22", + "202.76.247.0/24", + "202.76.252.0/22", + "202.77.80.0/21", + "202.77.92.0/22", + "202.78.8.0/21", + "202.79.224.0/21", + "202.79.248.0/22", + "202.80.192.0/20", + "202.81.0.0/22", + "202.81.176.0/20", + "202.83.252.0/22", + "202.84.0.0/20", + "202.84.16.0/23", + "202.84.22.0/24", + "202.84.24.0/21", + "202.85.208.0/20", + "202.86.249.0/24", + "202.87.80.0/20", + "202.88.32.0/22", + "202.89.8.0/21", + "202.89.96.0/22", + "202.89.108.0/22", + "202.89.119.0/24", + "202.89.232.0/21", + "202.90.16.0/20", + "202.90.37.0/24", + "202.90.96.0/19", + "202.90.193.0/24", + "202.90.196.0/24", + "202.90.205.0/24", + "202.90.224.0/20", + "202.91.0.0/22", + "202.91.96.0/20", + "202.91.176.0/20", + "202.91.224.0/19", + "202.92.8.0/21", + "202.92.48.0/20", + "202.92.252.0/22", + "202.93.252.0/22", + "202.94.74.0/24", + "202.94.81.0/24", + "202.94.92.0/22", + "202.95.3.0/24", + "202.95.240.0/21", + "202.96.0.0/12", + "202.112.0.0/13", + "202.120.0.0/15", + "202.122.0.0/21", + "202.122.32.0/21", + "202.122.64.0/19", + "202.122.112.0/20", + "202.122.132.0/24", + "202.123.96.0/20", + "202.123.116.0/22", + "202.123.120.0/22", + "202.124.16.0/21", + "202.124.24.0/22", + "202.125.107.0/24", + "202.125.109.0/24", + "202.125.112.0/20", + "202.125.176.0/20", + "202.127.0.0/21", + "202.127.12.0/22", + "202.127.16.0/20", + "202.127.40.0/21", + "202.127.48.0/20", + "202.127.112.0/20", + "202.127.128.0/19", + "202.127.192.0/20", + "202.127.212.0/22", + "202.127.216.0/21", + "202.127.224.0/19", + "202.129.208.0/24", + "202.130.0.0/19", + "202.130.39.0/24", + "202.130.224.0/19", + "202.131.16.0/21", + "202.131.48.0/22", + "202.131.54.0/23", + "202.131.56.0/21", + "202.131.208.0/20", + "202.133.32.0/20", + "202.134.58.0/24", + "202.134.128.0/20", + "202.134.208.0/20", + "202.136.48.0/20", + "202.136.208.0/20", + "202.136.224.0/20", + "202.136.248.0/22", + "202.136.255.0/24", + "202.137.231.0/24", + "202.140.140.0/22", + "202.140.144.0/20", + "202.141.160.0/19", + "202.142.16.0/20", + "202.143.4.0/22", + "202.143.16.0/20", + "202.143.32.0/20", + "202.143.56.0/21", + "202.143.100.0/22", + "202.143.104.0/22", + "202.146.160.0/20", + "202.146.184.0/23", + "202.146.186.0/24", + "202.146.188.0/22", + "202.146.196.0/22", + "202.146.200.0/21", + "202.147.144.0/20", + "202.148.32.0/20", + "202.148.64.0/18", + "202.149.32.0/19", + "202.149.160.0/19", + "202.149.224.0/20", + "202.149.240.0/21", + "202.149.248.0/22", + "202.149.252.0/23", + "202.149.255.0/24", + "202.150.16.0/20", + "202.150.32.0/20", + "202.150.56.0/22", + "202.150.192.0/20", + "202.150.224.0/19", + "202.151.0.0/22", + "202.151.33.0/24", + "202.151.128.0/19", + "202.152.176.0/20", + "202.153.0.0/22", + "202.153.7.0/24", + "202.153.48.0/20", + "202.157.192.0/19", + "202.158.160.0/19", + "202.158.242.0/24", + "202.160.140.0/22", + "202.160.156.0/22", + "202.162.67.0/24", + "202.162.75.0/24", + "202.163.1.160/28", + "202.163.8.80/30", + "202.164.0.0/20", + "202.164.96.0/19", + "202.165.176.0/20", + "202.165.208.0/20", + "202.165.239.0/24", + "202.165.240.0/23", + "202.165.243.0/24", + "202.165.245.0/24", + "202.165.251.0/24", + "202.165.252.0/22", + "202.166.224.0/19", + "202.168.80.0/22", + "202.168.128.0/20", + "202.168.160.0/19", + "202.170.128.0/19", + "202.170.216.0/21", + "202.170.224.0/19", + "202.171.216.0/21", + "202.171.232.0/24", + "202.171.235.0/24", + "202.172.0.0/22", + "202.172.7.0/24", + "202.173.0.0/22", + "202.173.6.0/24", + "202.173.8.0/21", + "202.173.112.0/22", + "202.173.224.0/19", + "202.174.64.0/20", + "202.174.124.0/22", + "202.176.224.0/19", + "202.179.160.0/20", + "202.179.240.0/21", + "202.180.128.0/19", + "202.180.208.0/21", + "202.181.8.0/22", + "202.181.28.0/22", + "202.181.112.0/20", + "202.182.32.0/20", + "202.182.192.0/19", + "202.189.0.0/18", + "202.189.80.0/20", + "202.189.184.0/21", + "202.191.0.0/24", + "202.191.68.0/22", + "202.191.72.0/21", + "202.191.80.0/20", + "202.192.0.0/12", + "203.0.4.0/22", + "203.0.10.0/23", + "203.0.18.0/24", + "203.0.24.0/24", + "203.0.42.0/23", + "203.0.45.0/24", + "203.0.46.0/23", + "203.0.81.0/24", + "203.0.82.0/23", + "203.0.90.0/23", + "203.0.96.0/23", + "203.0.104.0/21", + "203.0.114.0/23", + "203.0.122.0/24", + "203.0.128.0/24", + "203.0.130.0/23", + "203.0.132.0/22", + "203.0.137.0/24", + "203.0.142.0/24", + "203.0.144.0/24", + "203.0.146.0/24", + "203.0.148.0/24", + "203.0.150.0/23", + "203.0.152.0/24", + "203.0.177.0/24", + "203.0.224.0/24", + "203.1.4.0/22", + "203.1.18.0/24", + "203.1.26.0/23", + "203.1.65.0/24", + "203.1.66.0/23", + "203.1.70.0/23", + "203.1.76.0/23", + "203.1.90.0/24", + "203.1.97.0/24", + "203.1.98.0/23", + "203.1.100.0/22", + "203.1.108.0/24", + "203.1.253.0/24", + "203.1.254.0/24", + "203.2.64.0/21", + "203.2.73.0/24", + "203.2.112.0/21", + "203.2.126.0/23", + "203.2.140.0/24", + "203.2.150.0/24", + "203.2.152.0/22", + "203.2.156.0/23", + "203.2.160.0/21", + "203.2.180.0/23", + "203.2.196.0/23", + "203.2.209.0/24", + "203.2.214.0/23", + "203.2.226.0/23", + "203.2.229.0/24", + "203.2.236.0/23", + "203.3.68.0/24", + "203.3.72.0/23", + "203.3.75.0/24", + "203.3.80.0/21", + "203.3.96.0/22", + "203.3.105.0/24", + "203.3.112.0/21", + "203.3.120.0/24", + "203.3.123.0/24", + "203.3.135.0/24", + "203.3.139.0/24", + "203.3.143.0/24", + "203.4.132.0/23", + "203.4.134.0/24", + "203.4.151.0/24", + "203.4.152.0/22", + "203.4.174.0/23", + "203.4.180.0/24", + "203.4.186.0/24", + "203.4.205.0/24", + "203.4.208.0/22", + "203.4.227.0/24", + "203.4.230.0/23", + "203.5.4.0/23", + "203.5.7.0/24", + "203.5.8.0/23", + "203.5.11.0/24", + "203.5.21.0/24", + "203.5.22.0/24", + "203.5.44.0/24", + "203.5.46.0/23", + "203.5.52.0/22", + "203.5.56.0/23", + "203.5.60.0/23", + "203.5.114.0/23", + "203.5.118.0/24", + "203.5.120.0/24", + "203.5.172.0/24", + "203.5.180.0/23", + "203.5.182.0/24", + "203.5.185.0/24", + "203.5.186.0/24", + "203.5.188.0/23", + "203.5.190.0/24", + "203.5.195.0/24", + "203.5.214.0/23", + "203.5.218.0/23", + "203.6.131.0/24", + "203.6.136.0/24", + "203.6.138.0/23", + "203.6.142.0/24", + "203.6.150.0/23", + "203.6.157.0/24", + "203.6.159.0/24", + "203.6.224.0/20", + "203.6.248.0/23", + "203.7.129.0/24", + "203.7.138.0/23", + "203.7.147.0/24", + "203.7.150.0/23", + "203.7.158.0/24", + "203.7.192.0/23", + "203.7.200.0/24", + "203.8.0.0/24", + "203.8.8.0/24", + "203.8.23.0/24", + "203.8.70.0/24", + "203.8.82.0/24", + "203.8.86.0/23", + "203.8.91.0/24", + "203.8.110.0/23", + "203.8.115.0/24", + "203.8.166.0/23", + "203.8.169.0/24", + "203.8.173.0/24", + "203.8.184.0/24", + "203.8.186.0/23", + "203.8.190.0/23", + "203.8.192.0/24", + "203.8.197.0/24", + "203.8.198.0/23", + "203.8.203.0/24", + "203.8.209.0/24", + "203.8.210.0/23", + "203.8.212.0/22", + "203.8.217.0/24", + "203.8.220.0/24", + "203.9.32.0/24", + "203.9.36.0/23", + "203.9.57.0/24", + "203.9.63.0/24", + "203.9.65.0/24", + "203.9.70.0/23", + "203.9.72.0/24", + "203.9.75.0/24", + "203.9.76.0/23", + "203.9.96.0/22", + "203.9.100.0/23", + "203.9.108.0/24", + "203.9.158.0/24", + "203.10.34.0/24", + "203.10.56.0/24", + "203.10.74.0/23", + "203.10.84.0/22", + "203.10.88.0/24", + "203.10.95.0/24", + "203.10.125.0/24", + "203.11.70.0/24", + "203.11.76.0/22", + "203.11.82.0/24", + "203.11.84.0/22", + "203.11.100.0/22", + "203.11.109.0/24", + "203.11.117.0/24", + "203.11.122.0/24", + "203.11.126.0/24", + "203.11.136.0/22", + "203.11.141.0/24", + "203.11.142.0/23", + "203.11.180.0/22", + "203.11.208.0/22", + "203.12.16.0/24", + "203.12.19.0/24", + "203.12.24.0/24", + "203.12.57.0/24", + "203.12.65.0/24", + "203.12.66.0/24", + "203.12.70.0/23", + "203.12.87.0/24", + "203.12.100.0/23", + "203.12.103.0/24", + "203.12.114.0/24", + "203.12.118.0/24", + "203.12.130.0/24", + "203.12.137.0/24", + "203.12.196.0/22", + "203.12.211.0/24", + "203.12.219.0/24", + "203.12.226.0/24", + "203.12.240.0/22", + "203.13.18.0/24", + "203.13.24.0/24", + "203.13.44.0/23", + "203.13.88.0/23", + "203.13.92.0/22", + "203.13.173.0/24", + "203.13.224.0/23", + "203.13.227.0/24", + "203.13.233.0/24", + "203.14.24.0/22", + "203.14.33.0/24", + "203.14.56.0/24", + "203.14.61.0/24", + "203.14.62.0/24", + "203.14.104.0/24", + "203.14.114.0/23", + "203.14.118.0/24", + "203.14.162.0/24", + "203.14.192.0/24", + "203.14.194.0/23", + "203.14.214.0/24", + "203.14.231.0/24", + "203.14.246.0/24", + "203.15.0.0/20", + "203.15.20.0/23", + "203.15.22.0/24", + "203.15.87.0/24", + "203.15.88.0/23", + "203.15.105.0/24", + "203.15.112.0/22", + "203.15.119.0/24", + "203.15.130.0/23", + "203.15.149.0/24", + "203.15.151.0/24", + "203.15.156.0/22", + "203.15.174.0/24", + "203.15.227.0/24", + "203.15.232.0/22", + "203.15.238.0/23", + "203.15.240.0/23", + "203.15.246.0/24", + "203.16.10.0/24", + "203.16.12.0/23", + "203.16.16.0/21", + "203.16.27.0/24", + "203.16.38.0/24", + "203.16.49.0/24", + "203.16.50.0/23", + "203.16.58.0/24", + "203.16.63.0/24", + "203.16.133.0/24", + "203.16.161.0/24", + "203.16.162.0/24", + "203.16.186.0/23", + "203.16.228.0/24", + "203.16.238.0/24", + "203.16.240.0/24", + "203.16.245.0/24", + "203.17.2.0/24", + "203.17.18.0/24", + "203.17.28.0/24", + "203.17.39.0/24", + "203.17.56.0/24", + "203.17.74.0/23", + "203.17.88.0/23", + "203.17.136.0/24", + "203.17.164.0/24", + "203.17.187.0/24", + "203.17.190.0/23", + "203.17.231.0/24", + "203.17.233.0/24", + "203.17.248.0/23", + "203.17.255.0/24", + "203.18.2.0/23", + "203.18.4.0/24", + "203.18.7.0/24", + "203.18.31.0/24", + "203.18.37.0/24", + "203.18.48.0/23", + "203.18.52.0/24", + "203.18.72.0/22", + "203.18.80.0/23", + "203.18.87.0/24", + "203.18.100.0/23", + "203.18.105.0/24", + "203.18.107.0/24", + "203.18.110.0/24", + "203.18.129.0/24", + "203.18.131.0/24", + "203.18.132.0/23", + "203.18.144.0/24", + "203.18.153.0/24", + "203.18.199.0/24", + "203.18.208.0/24", + "203.18.211.0/24", + "203.18.215.0/24", + "203.19.1.0/24", + "203.19.18.0/24", + "203.19.24.0/24", + "203.19.30.0/24", + "203.19.41.0/24", + "203.19.44.0/23", + "203.19.46.0/24", + "203.19.58.0/24", + "203.19.60.0/23", + "203.19.64.0/24", + "203.19.68.0/24", + "203.19.72.0/24", + "203.19.101.0/24", + "203.19.111.0/24", + "203.19.131.0/24", + "203.19.133.0/24", + "203.19.144.0/24", + "203.19.147.0/24", + "203.19.149.0/24", + "203.19.156.0/24", + "203.19.176.0/24", + "203.19.178.0/23", + "203.19.208.0/24", + "203.19.228.0/22", + "203.19.233.0/24", + "203.19.242.0/24", + "203.19.248.0/23", + "203.19.255.0/24", + "203.20.17.0/24", + "203.20.40.0/23", + "203.20.44.0/24", + "203.20.48.0/24", + "203.20.61.0/24", + "203.20.65.0/24", + "203.20.84.0/23", + "203.20.89.0/24", + "203.20.106.0/23", + "203.20.115.0/24", + "203.20.117.0/24", + "203.20.118.0/23", + "203.20.122.0/24", + "203.20.126.0/23", + "203.20.135.0/24", + "203.20.150.0/24", + "203.20.230.0/24", + "203.20.232.0/24", + "203.20.236.0/24", + "203.21.0.0/23", + "203.21.2.0/24", + "203.21.8.0/24", + "203.21.10.0/24", + "203.21.18.0/24", + "203.21.33.0/24", + "203.21.34.0/24", + "203.21.41.0/24", + "203.21.44.0/24", + "203.21.68.0/24", + "203.21.82.0/24", + "203.21.96.0/22", + "203.21.124.0/24", + "203.21.136.0/23", + "203.21.145.0/24", + "203.21.206.0/24", + "203.22.24.0/24", + "203.22.28.0/23", + "203.22.31.0/24", + "203.22.68.0/24", + "203.22.76.0/24", + "203.22.78.0/24", + "203.22.84.0/24", + "203.22.87.0/24", + "203.22.92.0/22", + "203.22.99.0/24", + "203.22.106.0/24", + "203.22.122.0/23", + "203.22.131.0/24", + "203.22.163.0/24", + "203.22.166.0/24", + "203.22.170.0/24", + "203.22.194.0/24", + "203.22.242.0/23", + "203.22.245.0/24", + "203.22.246.0/24", + "203.22.252.0/23", + "203.23.0.0/24", + "203.23.47.0/24", + "203.23.61.0/24", + "203.23.62.0/23", + "203.23.73.0/24", + "203.23.85.0/24", + "203.23.92.0/22", + "203.23.98.0/24", + "203.23.107.0/24", + "203.23.112.0/24", + "203.23.130.0/24", + "203.23.140.0/23", + "203.23.172.0/24", + "203.23.182.0/24", + "203.23.186.0/23", + "203.23.192.0/24", + "203.23.197.0/24", + "203.23.198.0/24", + "203.23.204.0/22", + "203.23.224.0/24", + "203.23.226.0/23", + "203.23.228.0/22", + "203.23.249.0/24", + "203.23.251.0/24", + "203.24.13.0/24", + "203.24.18.0/24", + "203.24.27.0/24", + "203.24.43.0/24", + "203.24.56.0/24", + "203.24.58.0/24", + "203.24.67.0/24", + "203.24.74.0/24", + "203.24.79.0/24", + "203.24.80.0/23", + "203.24.84.0/23", + "203.24.86.0/24", + "203.24.90.0/24", + "203.24.111.0/24", + "203.24.112.0/24", + "203.24.116.0/24", + "203.24.122.0/23", + "203.24.145.0/24", + "203.24.152.0/23", + "203.24.157.0/24", + "203.24.161.0/24", + "203.24.167.0/24", + "203.24.186.0/23", + "203.24.199.0/24", + "203.24.202.0/24", + "203.24.212.0/23", + "203.24.217.0/24", + "203.24.219.0/24", + "203.24.244.0/24", + "203.25.19.0/24", + "203.25.20.0/23", + "203.25.46.0/24", + "203.25.64.0/23", + "203.25.91.0/24", + "203.25.99.0/24", + "203.25.100.0/24", + "203.25.106.0/24", + "203.25.131.0/24", + "203.25.135.0/24", + "203.25.138.0/24", + "203.25.147.0/24", + "203.25.153.0/24", + "203.25.154.0/23", + "203.25.164.0/24", + "203.25.166.0/24", + "203.25.174.0/23", + "203.25.180.0/24", + "203.25.182.0/24", + "203.25.191.0/24", + "203.25.199.0/24", + "203.25.200.0/24", + "203.25.202.0/23", + "203.25.208.0/20", + "203.25.229.0/24", + "203.25.235.0/24", + "203.25.236.0/24", + "203.25.242.0/24", + "203.26.12.0/24", + "203.26.34.0/24", + "203.26.49.0/24", + "203.26.50.0/24", + "203.26.55.0/24", + "203.26.56.0/23", + "203.26.60.0/24", + "203.26.65.0/24", + "203.26.68.0/24", + "203.26.76.0/24", + "203.26.80.0/24", + "203.26.84.0/24", + "203.26.97.0/24", + "203.26.102.0/23", + "203.26.115.0/24", + "203.26.116.0/24", + "203.26.129.0/24", + "203.26.143.0/24", + "203.26.144.0/24", + "203.26.148.0/23", + "203.26.154.0/24", + "203.26.158.0/23", + "203.26.170.0/24", + "203.26.173.0/24", + "203.26.176.0/24", + "203.26.185.0/24", + "203.26.202.0/23", + "203.26.210.0/24", + "203.26.214.0/24", + "203.26.222.0/24", + "203.26.224.0/24", + "203.26.228.0/24", + "203.26.232.0/24", + "203.27.0.0/24", + "203.27.10.0/24", + "203.27.15.0/24", + "203.27.16.0/24", + "203.27.20.0/24", + "203.27.22.0/23", + "203.27.40.0/24", + "203.27.45.0/24", + "203.27.53.0/24", + "203.27.65.0/24", + "203.27.66.0/24", + "203.27.81.0/24", + "203.27.88.0/24", + "203.27.102.0/24", + "203.27.109.0/24", + "203.27.117.0/24", + "203.27.121.0/24", + "203.27.122.0/23", + "203.27.125.0/24", + "203.27.200.0/24", + "203.27.202.0/24", + "203.27.233.0/24", + "203.27.241.0/24", + "203.27.250.0/24", + "203.28.10.0/24", + "203.28.12.0/24", + "203.28.33.0/24", + "203.28.34.0/23", + "203.28.43.0/24", + "203.28.44.0/24", + "203.28.54.0/24", + "203.28.56.0/24", + "203.28.73.0/24", + "203.28.74.0/24", + "203.28.76.0/24", + "203.28.86.0/24", + "203.28.88.0/24", + "203.28.112.0/24", + "203.28.131.0/24", + "203.28.136.0/24", + "203.28.140.0/24", + "203.28.145.0/24", + "203.28.165.0/24", + "203.28.169.0/24", + "203.28.170.0/24", + "203.28.178.0/23", + "203.28.185.0/24", + "203.28.187.0/24", + "203.28.196.0/24", + "203.28.226.0/23", + "203.28.239.0/24", + "203.29.2.0/24", + "203.29.8.0/23", + "203.29.13.0/24", + "203.29.14.0/24", + "203.29.28.0/24", + "203.29.46.0/24", + "203.29.57.0/24", + "203.29.61.0/24", + "203.29.63.0/24", + "203.29.69.0/24", + "203.29.73.0/24", + "203.29.81.0/24", + "203.29.90.0/24", + "203.29.95.0/24", + "203.29.100.0/24", + "203.29.103.0/24", + "203.29.112.0/24", + "203.29.120.0/22", + "203.29.182.0/23", + "203.29.187.0/24", + "203.29.189.0/24", + "203.29.190.0/24", + "203.29.205.0/24", + "203.29.210.0/24", + "203.29.217.0/24", + "203.29.227.0/24", + "203.29.231.0/24", + "203.29.233.0/24", + "203.29.234.0/24", + "203.29.248.0/24", + "203.29.254.0/23", + "203.30.16.0/23", + "203.30.25.0/24", + "203.30.27.0/24", + "203.30.29.0/24", + "203.30.66.0/24", + "203.30.81.0/24", + "203.30.87.0/24", + "203.30.111.0/24", + "203.30.121.0/24", + "203.30.123.0/24", + "203.30.152.0/24", + "203.30.156.0/24", + "203.30.162.0/24", + "203.30.173.0/24", + "203.30.175.0/24", + "203.30.187.0/24", + "203.30.194.0/24", + "203.30.217.0/24", + "203.30.220.0/24", + "203.30.222.0/24", + "203.30.232.0/23", + "203.30.235.0/24", + "203.30.240.0/23", + "203.30.246.0/24", + "203.30.250.0/23", + "203.31.45.0/24", + "203.31.46.0/24", + "203.31.49.0/24", + "203.31.51.0/24", + "203.31.54.0/23", + "203.31.69.0/24", + "203.31.72.0/24", + "203.31.80.0/24", + "203.31.85.0/24", + "203.31.97.0/24", + "203.31.105.0/24", + "203.31.106.0/24", + "203.31.108.0/23", + "203.31.124.0/24", + "203.31.162.0/24", + "203.31.174.0/24", + "203.31.177.0/24", + "203.31.181.0/24", + "203.31.187.0/24", + "203.31.189.0/24", + "203.31.204.0/24", + "203.31.220.0/24", + "203.31.222.0/23", + "203.31.225.0/24", + "203.31.229.0/24", + "203.31.248.0/23", + "203.31.253.0/24", + "203.32.20.0/24", + "203.32.48.0/23", + "203.32.56.0/24", + "203.32.60.0/24", + "203.32.62.0/24", + "203.32.68.0/23", + "203.32.76.0/24", + "203.32.81.0/24", + "203.32.84.0/23", + "203.32.95.0/24", + "203.32.102.0/24", + "203.32.105.0/24", + "203.32.130.0/24", + "203.32.133.0/24", + "203.32.140.0/24", + "203.32.152.0/24", + "203.32.186.0/23", + "203.32.192.0/24", + "203.32.196.0/24", + "203.32.203.0/24", + "203.32.204.0/23", + "203.32.212.0/24", + "203.33.4.0/24", + "203.33.12.0/23", + "203.33.21.0/24", + "203.33.26.0/24", + "203.33.32.0/24", + "203.33.63.0/24", + "203.33.64.0/24", + "203.33.67.0/24", + "203.33.68.0/24", + "203.33.73.0/24", + "203.33.79.0/24", + "203.33.100.0/24", + "203.33.122.0/24", + "203.33.129.0/24", + "203.33.131.0/24", + "203.33.145.0/24", + "203.33.156.0/24", + "203.33.158.0/23", + "203.33.174.0/24", + "203.33.185.0/24", + "203.33.200.0/24", + "203.33.202.0/23", + "203.33.204.0/24", + "203.33.206.0/23", + "203.33.214.0/23", + "203.33.224.0/23", + "203.33.226.0/24", + "203.33.233.0/24", + "203.33.243.0/24", + "203.33.250.0/24", + "203.34.4.0/24", + "203.34.21.0/24", + "203.34.27.0/24", + "203.34.39.0/24", + "203.34.48.0/23", + "203.34.54.0/24", + "203.34.56.0/23", + "203.34.67.0/24", + "203.34.69.0/24", + "203.34.76.0/24", + "203.34.92.0/24", + "203.34.106.0/24", + "203.34.113.0/24", + "203.34.147.0/24", + "203.34.150.0/24", + "203.34.152.0/23", + "203.34.161.0/24", + "203.34.162.0/24", + "203.34.187.0/24", + "203.34.198.0/24", + "203.34.204.0/22", + "203.34.232.0/24", + "203.34.240.0/24", + "203.34.242.0/24", + "203.34.245.0/24", + "203.34.251.0/24", + "203.55.2.0/23", + "203.55.4.0/24", + "203.55.10.0/24", + "203.55.13.0/24", + "203.55.22.0/24", + "203.55.30.0/24", + "203.55.93.0/24", + "203.55.101.0/24", + "203.55.109.0/24", + "203.55.110.0/24", + "203.55.116.0/23", + "203.55.119.0/24", + "203.55.128.0/23", + "203.55.146.0/23", + "203.55.192.0/24", + "203.55.196.0/24", + "203.55.218.0/23", + "203.55.221.0/24", + "203.55.224.0/24", + "203.56.1.0/24", + "203.56.4.0/24", + "203.56.12.0/24", + "203.56.24.0/24", + "203.56.38.0/24", + "203.56.40.0/24", + "203.56.46.0/24", + "203.56.68.0/23", + "203.56.82.0/23", + "203.56.84.0/23", + "203.56.95.0/24", + "203.56.110.0/24", + "203.56.121.0/24", + "203.56.161.0/24", + "203.56.169.0/24", + "203.56.172.0/23", + "203.56.175.0/24", + "203.56.183.0/24", + "203.56.185.0/24", + "203.56.187.0/24", + "203.56.192.0/24", + "203.56.198.0/24", + "203.56.201.0/24", + "203.56.208.0/23", + "203.56.210.0/24", + "203.56.214.0/24", + "203.56.216.0/24", + "203.56.227.0/24", + "203.56.228.0/24", + "203.56.232.0/24", + "203.56.240.0/24", + "203.56.252.0/24", + "203.56.254.0/24", + "203.57.5.0/24", + "203.57.6.0/24", + "203.57.12.0/23", + "203.57.28.0/24", + "203.57.39.0/24", + "203.57.46.0/24", + "203.57.58.0/24", + "203.57.61.0/24", + "203.57.66.0/24", + "203.57.69.0/24", + "203.57.70.0/23", + "203.57.73.0/24", + "203.57.90.0/24", + "203.57.101.0/24", + "203.57.109.0/24", + "203.57.123.0/24", + "203.57.157.0/24", + "203.57.200.0/24", + "203.57.202.0/24", + "203.57.206.0/24", + "203.57.222.0/24", + "203.57.224.0/20", + "203.57.246.0/23", + "203.57.249.0/24", + "203.57.253.0/24", + "203.57.254.0/23", + "203.62.2.0/24", + "203.62.131.0/24", + "203.62.139.0/24", + "203.62.161.0/24", + "203.62.197.0/24", + "203.62.228.0/22", + "203.62.234.0/24", + "203.62.246.0/24", + "203.65.240.0/22", + "203.76.160.0/22", + "203.76.168.0/22", + "203.76.208.0/21", + "203.76.216.0/22", + "203.76.240.0/22", + "203.77.180.0/22", + "203.78.48.0/20", + "203.78.156.0/22", + "203.79.0.0/20", + "203.80.4.0/23", + "203.80.32.0/20", + "203.80.57.0/24", + "203.80.129.0/24", + "203.80.132.0/22", + "203.80.144.0/20", + "203.81.16.0/20", + "203.81.244.0/22", + "203.82.0.0/23", + "203.82.112.0/20", + "203.82.224.0/20", + "203.83.0.0/22", + "203.83.12.0/22", + "203.83.56.0/21", + "203.83.224.0/20", + "203.86.0.0/18", + "203.86.64.0/19", + "203.86.96.0/23", + "203.86.108.0/24", + "203.86.110.0/24", + "203.86.117.0/24", + "203.86.250.0/24", + "203.86.254.0/23", + "203.88.32.0/19", + "203.88.192.0/19", + "203.89.136.0/22", + "203.89.144.0/24", + "203.90.8.0/21", + "203.90.128.0/18", + "203.90.192.0/19", + "203.91.32.0/19", + "203.91.96.0/20", + "203.91.120.0/21", + "203.92.0.0/22", + "203.92.6.0/24", + "203.92.160.0/19", + "203.93.0.0/16", + "203.94.0.0/19", + "203.95.0.0/21", + "203.95.96.0/19", + "203.95.128.0/18", + "203.95.200.0/21", + "203.95.208.0/22", + "203.95.224.0/19", + "203.99.16.0/22", + "203.99.20.0/23", + "203.99.30.0/23", + "203.99.80.0/20", + "203.100.32.0/20", + "203.100.58.0/24", + "203.100.60.0/24", + "203.100.63.0/24", + "203.100.80.0/20", + "203.100.96.0/19", + "203.100.192.0/20", + "203.104.32.0/20", + "203.105.96.0/19", + "203.105.128.0/19", + "203.107.0.0/19", + "203.107.32.0/20", + "203.107.52.0/22", + "203.107.56.0/21", + "203.107.69.0/24", + "203.107.70.0/23", + "203.107.72.0/21", + "203.107.80.0/20", + "203.107.96.0/19", + "203.110.160.0/19", + "203.110.208.0/20", + "203.110.232.0/23", + "203.110.234.0/24", + "203.114.80.0/20", + "203.114.244.0/22", + "203.118.192.0/19", + "203.118.241.0/24", + "203.118.248.0/22", + "203.119.24.0/21", + "203.119.32.0/24", + "203.119.34.0/23", + "203.119.80.0/22", + "203.119.85.0/24", + "203.119.113.0/24", + "203.119.114.0/23", + "203.119.116.0/22", + "203.119.128.0/17", + "203.123.58.0/24", + "203.128.32.0/19", + "203.128.96.0/19", + "203.130.32.0/20", + "203.130.49.0/24", + "203.130.50.0/23", + "203.130.52.0/22", + "203.130.56.0/21", + "203.132.32.0/19", + "203.134.240.0/21", + "203.135.96.0/19", + "203.135.160.0/20", + "203.142.219.0/24", + "203.142.224.0/19", + "203.144.96.0/24", + "203.144.107.0/24", + "203.144.108.0/22", + "203.144.112.0/20", + "203.145.0.0/19", + "203.148.0.0/18", + "203.148.64.0/20", + "203.148.80.0/22", + "203.148.86.0/23", + "203.149.92.0/22", + "203.152.64.0/19", + "203.152.128.0/19", + "203.153.0.0/22", + "203.156.192.0/18", + "203.158.16.0/21", + "203.160.70.196/31", + "203.160.70.208/31", + "203.160.129.0/24", + "203.160.192.0/19", + "203.161.0.0/22", + "203.161.180.0/24", + "203.161.183.0/24", + "203.161.192.0/19", + "203.166.160.0/19", + "203.167.28.0/22", + "203.168.0.0/19", + "203.170.58.0/23", + "203.171.0.0/22", + "203.171.208.0/24", + "203.171.224.0/20", + "203.174.4.0/24", + "203.174.6.0/24", + "203.174.96.0/19", + "203.175.128.0/19", + "203.175.192.0/18", + "203.176.0.0/18", + "203.176.64.0/19", + "203.176.168.0/21", + "203.184.80.0/20", + "203.185.189.0/24", + "203.187.160.0/19", + "203.189.0.0/23", + "203.189.6.0/23", + "203.189.112.0/22", + "203.189.192.0/19", + "203.189.240.0/22", + "203.190.96.0/20", + "203.190.249.0/24", + "203.191.0.0/23", + "203.191.2.0/24", + "203.191.5.0/24", + "203.191.7.0/24", + "203.191.16.0/21", + "203.191.28.0/22", + "203.191.64.0/18", + "203.191.133.0/24", + "203.191.144.0/20", + "203.192.0.0/19", + "203.193.224.0/19", + "203.195.64.0/19", + "203.195.128.0/17", + "203.196.0.0/21", + "203.196.28.0/22", + "203.201.181.0/24", + "203.201.182.0/24", + "203.202.236.0/22", + "203.205.64.0/19", + "203.205.130.0/23", + "203.205.132.0/23", + "203.205.148.0/22", + "203.205.152.0/23", + "203.205.154.0/24", + "203.205.158.0/24", + "203.205.160.0/20", + "203.205.176.0/21", + "203.205.184.0/22", + "203.205.189.0/24", + "203.205.190.0/24", + "203.205.200.0/21", + "203.205.208.0/21", + "203.205.216.0/23", + "203.205.225.0/24", + "203.205.226.0/23", + "203.205.228.0/22", + "203.205.243.0/24", + "203.205.244.0/22", + "203.207.64.0/18", + "203.207.128.0/17", + "203.208.32.0/19", + "203.209.224.0/19", + "203.212.0.0/20", + "203.212.80.0/20", + "203.217.164.0/22", + "204.55.160.0/24", + "204.79.135.24/32", + "210.2.0.0/23", + "210.2.2.0/24", + "210.2.5.0/24", + "210.2.6.0/23", + "210.2.8.0/21", + "210.2.16.0/22", + "210.2.20.0/23", + "210.2.24.0/21", + "210.5.0.0/19", + "210.5.128.0/19", + "210.7.56.0/21", + "210.12.0.0/15", + "210.14.64.0/19", + "210.14.112.0/20", + "210.14.128.0/17", + "210.15.0.0/17", + "210.15.128.0/18", + "210.16.128.0/18", + "210.21.0.0/16", + "210.22.0.0/16", + "210.23.32.0/19", + "210.25.0.0/17", + "210.25.128.0/19", + "210.25.160.0/20", + "210.25.176.0/21", + "210.25.184.0/23", + "210.25.186.0/26", + "210.25.186.128/25", + "210.25.187.0/24", + "210.25.188.0/24", + "210.25.189.0/25", + "210.25.189.128/26", + "210.25.189.192/31", + "210.25.189.196/30", + "210.25.189.200/29", + "210.25.189.208/28", + "210.25.189.224/28", + "210.25.189.240/30", + "210.25.189.248/29", + "210.25.190.0/23", + "210.25.192.0/18", + "210.26.0.0/15", + "210.28.0.0/14", + "210.32.0.0/12", + "210.51.0.0/16", + "210.52.0.0/18", + "210.52.64.0/23", + "210.52.66.0/24", + "210.52.69.0/24", + "210.52.70.0/23", + "210.52.72.0/21", + "210.52.80.0/20", + "210.52.96.0/21", + "210.52.104.0/22", + "210.52.108.0/24", + "210.52.110.0/23", + "210.52.112.0/20", + "210.52.128.0/17", + "210.53.0.0/18", + "210.53.64.0/19", + "210.53.96.0/20", + "210.53.112.0/21", + "210.53.120.0/22", + "210.53.124.0/23", + "210.53.128.0/17", + "210.56.192.0/19", + "210.72.0.0/15", + "210.74.0.0/16", + "210.75.0.0/17", + "210.75.160.0/19", + "210.75.192.0/18", + "210.76.0.0/15", + "210.78.0.0/16", + "210.79.64.0/18", + "210.79.224.0/19", + "210.82.0.0/15", + "210.87.72.0/23", + "210.87.114.0/23", + "210.87.128.0/18", + "210.185.192.0/18", + "210.192.96.0/19", + "211.64.0.0/13", + "211.80.0.0/12", + "211.96.0.0/13", + "211.136.0.0/13", + "211.144.0.0/14", + "211.148.0.0/16", + "211.149.0.0/18", + "211.149.64.0/21", + "211.149.72.0/22", + "211.149.80.0/20", + "211.149.96.0/19", + "211.149.128.0/17", + "211.150.0.0/15", + "211.152.0.0/17", + "211.152.134.0/23", + "211.152.140.0/22", + "211.152.150.0/23", + "211.152.157.0/24", + "211.152.160.0/19", + "211.152.192.0/18", + "211.153.0.0/16", + "211.154.0.0/16", + "211.155.0.0/18", + "211.155.67.0/24", + "211.155.68.0/22", + "211.155.72.0/21", + "211.155.80.0/20", + "211.155.96.0/20", + "211.155.112.0/23", + "211.155.114.0/24", + "211.155.116.0/22", + "211.155.120.0/21", + "211.155.128.0/17", + "211.156.0.0/18", + "211.156.64.0/19", + "211.156.96.0/21", + "211.156.104.0/22", + "211.156.108.0/23", + "211.156.112.0/20", + "211.156.128.0/17", + "211.157.0.0/16", + "211.158.0.0/15", + "211.160.0.0/13", + "212.64.0.0/17", + "212.129.128.0/17", + "213.199.169.0/24", + "218.0.0.0/12", + "218.16.0.0/13", + "218.24.0.0/14", + "218.28.0.0/15", + "218.30.0.0/19", + "218.30.64.0/18", + "218.30.128.0/17", + "218.31.0.0/16", + "218.56.0.0/13", + "218.64.0.0/11", + "218.96.0.0/16", + "218.97.0.0/19", + "218.97.32.0/22", + "218.97.36.0/23", + "218.97.38.0/24", + "218.97.39.0/25", + "218.97.39.128/26", + "218.97.39.192/28", + "218.97.39.208/29", + "218.97.39.216/30", + "218.97.39.220/31", + "218.97.39.224/27", + "218.97.40.0/21", + "218.97.48.0/20", + "218.97.64.0/18", + "218.97.128.0/17", + "218.98.0.0/18", + "218.98.64.0/22", + "218.98.68.0/24", + "218.98.73.0/24", + "218.98.74.0/23", + "218.98.76.0/22", + "218.98.86.0/23", + "218.98.88.0/21", + "218.98.96.0/19", + "218.98.128.0/17", + "218.100.96.0/19", + "218.100.128.0/17", + "218.104.0.0/14", + "218.108.0.0/15", + "218.185.192.0/19", + "218.192.0.0/12", + "218.240.0.0/14", + "218.244.0.0/15", + "218.246.0.0/19", + "218.246.32.0/20", + "218.246.48.0/21", + "218.246.56.0/23", + "218.246.58.0/24", + "218.246.60.0/22", + "218.246.64.0/18", + "218.246.128.0/21", + "218.246.136.0/22", + "218.246.144.0/20", + "218.246.160.0/19", + "218.246.192.0/18", + "218.247.0.0/18", + "218.247.96.0/19", + "218.247.128.0/17", + "218.249.0.0/16", + "219.72.0.0/16", + "219.82.0.0/16", + "219.83.128.0/17", + "219.90.68.0/22", + "219.90.72.0/21", + "219.128.0.0/11", + "219.216.0.0/13", + "219.224.0.0/13", + "219.232.0.0/15", + "219.234.10.0/23", + "219.234.12.0/22", + "219.234.32.0/19", + "219.234.64.0/18", + "219.234.128.0/17", + "219.235.0.0/16", + "219.236.0.0/14", + "219.242.0.0/15", + "219.244.0.0/14", + "220.101.192.0/18", + "220.112.0.0/14", + "220.152.128.0/17", + "220.154.0.0/16", + "220.155.0.0/21", + "220.155.9.0/24", + "220.155.10.0/23", + "220.155.12.0/22", + "220.155.16.0/21", + "220.155.24.0/22", + "220.155.28.0/23", + "220.155.31.0/24", + "220.155.32.0/19", + "220.155.64.0/18", + "220.155.128.0/17", + "220.158.240.0/22", + "220.160.0.0/11", + "220.192.0.0/12", + "220.231.0.0/18", + "220.231.128.0/17", + "220.232.64.0/18", + "220.234.0.0/16", + "220.242.0.0/22", + "220.242.4.0/23", + "220.242.6.0/24", + "220.242.8.0/21", + "220.242.17.0/24", + "220.242.18.0/23", + "220.242.20.0/22", + "220.242.24.0/21", + "220.242.32.0/19", + "220.242.64.0/18", + "220.242.128.0/20", + "220.242.144.0/21", + "220.242.152.0/24", + "220.242.154.0/23", + "220.242.156.0/22", + "220.242.160.0/20", + "220.242.176.0/21", + "220.242.184.0/23", + "220.242.186.0/24", + "220.242.188.0/22", + "220.242.192.0/21", + "220.242.200.0/24", + "220.242.202.0/23", + "220.242.205.0/24", + "220.242.206.0/23", + "220.242.208.0/20", + "220.242.224.0/19", + "220.243.0.0/17", + "220.243.128.0/18", + "220.243.192.0/20", + "220.243.208.0/21", + "220.243.216.0/23", + "220.243.218.0/24", + "220.243.220.0/22", + "220.243.224.0/20", + "220.243.240.0/23", + "220.243.243.0/24", + "220.243.244.0/22", + "220.243.248.0/21", + "220.247.136.0/23", + "220.248.0.0/14", + "220.252.0.0/16", + "221.0.0.0/13", + "221.8.0.0/14", + "221.12.0.0/17", + "221.12.128.0/18", + "221.13.0.0/16", + "221.14.0.0/15", + "221.122.0.0/15", + "221.129.0.0/16", + "221.130.0.0/15", + "221.133.225.0/24", + "221.133.226.0/24", + "221.133.228.0/22", + "221.133.232.0/22", + "221.133.240.0/20", + "221.136.0.0/15", + "221.172.0.0/14", + "221.176.0.0/19", + "221.176.32.0/20", + "221.176.48.0/21", + "221.176.56.0/24", + "221.176.58.0/23", + "221.176.60.0/22", + "221.176.64.0/18", + "221.176.128.0/17", + "221.177.0.0/16", + "221.178.0.0/15", + "221.180.0.0/14", + "221.192.0.0/14", + "221.196.0.0/15", + "221.198.0.0/16", + "221.199.0.0/17", + "221.199.128.0/18", + "221.199.192.0/20", + "221.199.224.0/19", + "221.200.0.0/13", + "221.208.0.0/12", + "221.224.0.0/12", + "222.16.0.0/12", + "222.32.0.0/11", + "222.64.0.0/11", + "222.125.0.0/16", + "222.126.128.0/21", + "222.126.136.0/23", + "222.126.139.0/24", + "222.126.140.0/22", + "222.126.144.0/20", + "222.126.160.0/21", + "222.126.168.0/22", + "222.126.172.0/23", + "222.126.174.40/29", + "222.126.174.76/30", + "222.126.174.88/29", + "222.126.174.144/28", + "222.126.176.0/29", + "222.126.178.0/23", + "222.126.180.0/22", + "222.126.184.0/21", + "222.126.192.0/21", + "222.126.200.16/29", + "222.126.200.100/30", + "222.126.200.104/29", + "222.126.200.128/29", + "222.126.200.184/30", + "222.126.200.200/29", + "222.126.206.0/23", + "222.126.208.0/22", + "222.126.212.0/26", + "222.126.212.64/27", + "222.126.212.96/28", + "222.126.212.112/29", + "222.126.212.128/25", + "222.126.213.0/24", + "222.126.214.0/23", + "222.126.216.0/21", + "222.126.224.0/20", + "222.126.240.0/22", + "222.126.244.0/23", + "222.126.246.0/24", + "222.126.247.0/26", + "222.126.247.64/28", + "222.126.247.82/31", + "222.126.247.84/30", + "222.126.247.88/29", + "222.126.247.96/27", + "222.126.247.128/25", + "222.126.248.0/21", + "222.128.0.0/12", + "222.160.0.0/14", + "222.168.0.0/13", + "222.176.0.0/12", + "222.192.0.0/11", + "222.240.0.0/13", + "222.248.0.0/15", + "223.0.0.0/12", + "223.20.0.0/15", + "223.27.184.0/22", + "223.29.208.0/22", + "223.29.252.0/24", + "223.29.255.0/24", + "223.64.0.0/11", + "223.96.0.0/12", + "223.112.0.0/14", + "223.116.0.0/15", + "223.128.0.0/15", + "223.144.0.0/12", + "223.160.0.0/14", + "223.166.0.0/15", + "223.192.0.0/15", + "223.198.0.0/15", + "223.201.0.0/16", + "223.202.0.0/15", + "223.208.0.0/13", + "223.220.0.0/15", + "223.223.176.0/20", + "223.223.192.0/20", + "223.240.0.0/13", + "223.248.0.0/14", + "223.252.128.0/19", + "223.252.192.0/19", + "223.255.0.0/17", + "223.255.236.0/22", + "223.255.252.0/23" + ] +} \ No newline at end of file diff --git a/lite/proxy_lite.py b/lite/proxy_lite.py new file mode 100644 index 0000000..12c9a7c --- /dev/null +++ b/lite/proxy_lite.py @@ -0,0 +1,1341 @@ +# -*- coding: utf-8 -*- + +import sys, os, subprocess, time, ctypes, threading, functools, ssl as _ssl, base64, bisect +from pathlib import Path + +# 私有 HTTPS 端点通常使用自签名/内部证书,创建免校验 SSL 上下文 +# 用于:更新检查等程序内部 HTTP 请求 +_SSL_NO_VERIFY = _ssl._create_unverified_context() + +from PyQt5.QtWidgets import ( + QApplication, QWidget, QLabel, QPushButton, + QVBoxLayout, QHBoxLayout, QFrame, QMessageBox, QTextEdit, + QCheckBox, +) +from PyQt5.QtCore import Qt, QTimer, pyqtSignal +from PyQt5.QtGui import QFont, QIcon, QPixmap, QImage, QColor + +VERSION = "999908162319" +UPDATE_USER = "user" +UPDATE_PASSWORD = "ftA406u@all#2309" + +# 与 nginx 正向代理使用同一套 Basic 认证凭证 +_PROXY_AUTH_BASIC = base64.b64encode(f"{UPDATE_USER}:{UPDATE_PASSWORD}".encode()).decode() + +# GUI 窗口在 96 DPI / 100% 缩放下的逻辑尺寸;启用 Qt 高分屏缩放后, +# Qt 会自动按 devicePixelRatio 放大/缩小,因此代码里保持逻辑尺寸不变即可。 +_BASE_WINDOW_WIDTH = 340 +_BASE_WINDOW_HEIGHT = 470 # 内容区 + 加大日志区 + 底部两行提示小字 + +# ── 配色(Qt StyleSheet 使用)──────────────────────────── +C_TITLE = "#8899aa" # 标题 / 副标题 +C_GREEN = "#51cf66" # 开启按钮、已连接状态 +C_YELLOW = "#ffd43b" # 提示色(保留) +C_RED = "#ff6b6b" # 关闭按钮、未连接 / 错误状态 +C_BG = "#ffffff" # 主背景 +C_CARD = "#f0f2f5" # 卡片背景 +C_BORDER = "#d0d5dd" # 边框 +C_TEXT = "#333333" # 正文 +C_SUBTEXT = "#889099" # 次要文字 + +# ── 路径 ────────────────────────────────────────────── +# frozen=True 表示已被 PyInstaller 打包为 EXE: +# BASE_DIR -> EXE 解压出的临时目录(_MEIPASS) +# PERSIST_DIR -> EXE 所在目录,服务安装等需要持久化的操作都放这里 +if getattr(sys, 'frozen', False): + BASE_DIR = Path(sys._MEIPASS) + PERSIST_DIR = Path(sys.executable).resolve().parent +else: + BASE_DIR = Path(__file__).resolve().parent + PERSIST_DIR = BASE_DIR + + + +def _endpoint_domain(): + return "iam.aeolianchi.me" +def _endpoint_port(default=443): + return 443 + +_TLS_LOCAL_PORT = 1080 +_tls_forwarder = None +_pac_server = None + +PROXY_HOST = "127.0.0.1" +PROXY_PORT = _TLS_LOCAL_PORT +PROXY_REG = r"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" + +# PAC 模式使用全量转发 PAC:所有流量送进本地转发器, +# 由转发器按 IP 智能分流(中国 IP 直连、其余走加密隧道)。 +# 域名表已提取到 pac_domains.json(强制走隧道的补充规则),不再内置。 +_BUILT_IN_PAC = r'''function FindProxyForURL(url, host) { + var proxy = "PROXY 127.0.0.1:1080"; + return proxy; +} +''' + +def _build_pac(proxy_spec: str) -> str: + """生成全量转发 PAC,替换为当前模式对应的代理地址。""" + return _BUILT_IN_PAC.replace( + 'var proxy = "PROXY 127.0.0.1:1080";', + f'var proxy = "PROXY {proxy_spec}";' + ) + +_LAN_BYPASS_PATTERNS = ["10.*", "192.168.*", "169.254.*", "127.*"] +_LAN_BYPASS_PATTERNS += [f"172.{i}.*" for i in range(16, 32)] + +_LAN_BYPASS_JS = ( + " // LAN bypass: RFC1918 / link-local / loopback (resolves domain first)\n" + " var _lanIp = dnsResolve(host);\n" + " if (_lanIp && (" + " ||\n".join(f' shExpMatch(_lanIp, "{p}")' for p in _LAN_BYPASS_PATTERNS) + ")) {\n" + " return \"DIRECT\";\n" + " }\n" +) + +def _apply_lan_bypass(pac_content: str) -> str: + """Inject LAN-direct rules into PAC so private IPs skip the local forwarder.""" + marker = "function FindProxyForURL(url, host) {" + if marker not in pac_content: + return pac_content + return pac_content.replace(marker, marker + "\n" + _LAN_BYPASS_JS, 1) + +def _proxy_override(bypass_lan: bool = False) -> str: + """ProxyOverride for fixed-proxy mode; append common LAN ranges when enabled.""" + if not bypass_lan: + return "" + parts = ["", "10.*"] + parts += [f"172.{i}.*" for i in range(16, 32)] + parts += ["192.168.*", "169.254.*", "127.*"] + return ";".join(parts) + +def _start_pac_server(pac_content: str) -> int: + """在 127.0.0.1 启动内存 PAC HTTP 服务,返回实际监听的端口。""" + global _pac_server + _stop_pac_server() + import http.server + import socketserver + + class _PACHandler(http.server.BaseHTTPRequestHandler): + def do_GET(self): + if self.path == "/proxy.pac": + body = pac_content.encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "application/x-ns-proxy-autoconfig") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + else: + self.send_response(404) + self.end_headers() + + def log_message(self, format, *args): + pass # 避免在日志区输出大量 HTTP 访问日志 + + class _ReuseAddrTCPServer(socketserver.TCPServer): + allow_reuse_address = True + + srv = _ReuseAddrTCPServer(("127.0.0.1", 0), _PACHandler) + port = srv.server_address[1] + threading.Thread(target=srv.serve_forever, daemon=True).start() + _pac_server = {"server": srv, "port": port} + return port + +def _stop_pac_server(): + """停止本地 PAC HTTP 服务;shutdown() 可能阻塞,因此先关闭 socket 再异步收尾。""" + global _pac_server + if _pac_server: + srv = _pac_server["server"] + _pac_server = None + try: + # 先关闭 socket,让 serve_forever() 从 select/accept 中立即退出 + srv.socket.close() + except Exception: + pass + # 在后台线程里尝试优雅 shutdown,最多等 1 秒,避免阻塞 GUI + def _shutdown(): + try: + srv.shutdown() + except Exception: + pass + try: + srv.server_close() + except Exception: + pass + t = threading.Thread(target=_shutdown, daemon=True) + t.start() + t.join(timeout=1.0) + +# ── 日志输出 ────────────────────────────────────────── +# GUI 初始化后会把 _log_func 设为 MainWindow.log_signal.emit +_log_func = None + +def log(msg: str): + """输出一行日志到 GUI 日志区。""" + if _log_func: + _log_func(msg) + +def log_red(msg: str): + """输出一行红色警告日志到 GUI 日志区。""" + if _log_func: + _log_func(f'{msg}') + +# ── 通用工具函数 ────────────────────────────────────── + +def _run(cmd, warn=True): + """无窗口执行子进程,失败时记录警告日志。""" + r = subprocess.run(cmd, capture_output=True, text=True, + creationflags=subprocess.CREATE_NO_WINDOW) + if warn and r.returncode != 0: + err = r.stderr.strip() if r.stderr else "" + log(f"[警告] {' '.join(str(c) for c in cmd)} -> {r.returncode} {err}") + return r + +def _notify_proxy_change(): + """通知 WinINET 和顶层窗口代理设置已变更,让已运行程序立即重读。""" + try: + import ctypes + ctypes.windll.Wininet.InternetSetOptionW(None, 39, None, 0) + ctypes.windll.Wininet.InternetSetOptionW(None, 37, None, 0) + result = ctypes.c_ulong() + ctypes.windll.user32.SendMessageTimeoutW( + 0xFFFF, 0x001A, 0, + ctypes.c_wchar_p("InternetSettings"), + 0x0002, 5000, ctypes.byref(result)) + except Exception: + pass + + +def proxy_on(pac_url=None, bypass_lan=False): + """设置 Windows 系统代理。pac_url 不为空时启用 PAC 模式,否则使用固定代理。""" + if pac_url: + # PAC 模式:仅设置 AutoConfigURL,ProxyEnable 置 0, + # 避免程序读到"固定代理已启用但服务器为空"的混乱状态 + _run(["reg", "add", PROXY_REG, "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "0", "/f"]) + # PAC 模式:清理固定代理遗留项,避免两种设置冲突 + _run(["reg", "delete", PROXY_REG, "/v", "ProxyServer", "/f"], warn=False) + _run(["reg", "delete", PROXY_REG, "/v", "ProxyOverride", "/f"], warn=False) + _run(["reg", "add", PROXY_REG, "/v", "AutoConfigURL", "/t", "REG_SZ", "/d", pac_url, "/f"]) + log("系统代理已设置 (PAC)") + else: + hp = f"{PROXY_HOST}:{PROXY_PORT}" + _run(["reg", "add", PROXY_REG, "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "1", "/f"]) + _run(["reg", "add", PROXY_REG, "/v", "ProxyServer", "/t", "REG_SZ", "/d", hp, "/f"]) + _run(["reg", "add", PROXY_REG, "/v", "ProxyOverride", "/t", "REG_SZ", "/d", _proxy_override(bypass_lan), "/f"]) + log(f"系统代理已设置: {hp}") + _notify_proxy_change() + +def proxy_off(): + """关闭系统代理并停止 TLS 转发器 / PAC 本地服务。""" + log("正在关闭系统代理...") + _run(["reg", "add", PROXY_REG, "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "0", "/f"]) + # 清除 ProxyServer 和 AutoConfigURL,确保 PAC / 固定代理两种模式都能正确关闭 + _run(["reg", "delete", PROXY_REG, "/v", "ProxyServer", "/f"], warn=False) + _run(["reg", "delete", PROXY_REG, "/v", "AutoConfigURL", "/f"], warn=False) + log("系统代理已关闭") + _notify_proxy_change() + _tls_stop() + _stop_pac_server() + # 打印本次转发流量统计 + up, down = _traffic_snapshot() + total = up + down + log(f"本次转发流量共 {_fmt_bytes(total)}") + +# ── 本地认证转发器(直连 / WG 模式均使用) ───────────────── + +# ── 流量统计 ────────────────────────────────────────── +# 所有代理流量都经过本地 127.0.0.1:1080 转发器(直连 / WG / PAC 均如此), +# 在转发器里计数即可覆盖全部模式。每次"开启代理"时清零,即"本次连接"流量。 +_traffic_lock = threading.Lock() +_traffic = {"up": 0, "down": 0} +_traffic_prev = {"up": 0, "down": 0, "ts": 0.0} + +def _traffic_add(up=0, down=0): + with _traffic_lock: + _traffic["up"] += up + _traffic["down"] += down + +def _traffic_reset(): + with _traffic_lock: + _traffic["up"] = _traffic["down"] = 0 + _traffic_prev["up"] = _traffic_prev["down"] = 0 + _traffic_prev["ts"] = time.time() + +def _fmt_bytes(n): + f = float(n) + for unit in ("B", "KB", "MB", "GB", "TB"): + if f < 1024 or unit == "TB": + return f"{int(f)} {unit}" if unit == "B" else f"{f:.1f} {unit}" + f /= 1024 + +def _traffic_rate(): + with _traffic_lock: + now = time.time() + up_total = _traffic["up"] + down_total = _traffic["down"] + prev_up = _traffic_prev["up"] + prev_down = _traffic_prev["down"] + prev_ts = _traffic_prev["ts"] + if prev_ts > 0 and now > prev_ts: + dt = now - prev_ts + up_rate = int((up_total - prev_up) / dt) + down_rate = int((down_total - prev_down) / dt) + else: + up_rate = down_rate = 0 + _traffic_prev["up"] = up_total + _traffic_prev["down"] = down_total + _traffic_prev["ts"] = now + return up_rate, down_rate, up_total, down_total + +def _traffic_snapshot(): + with _traffic_lock: + return _traffic["up"], _traffic["down"] + +def _tls_start(remote_host, remote_port=443, use_tls=True, bypass_lan=False, smart=False): + """启动本地认证转发器:127.0.0.1:1080 -> remote_host:remote_port(可选 TLS 包裹)。 + + smart=True 时启用 IP 智能分流:pac_domains.json 命中或非中国 IP 走隧道, + 其余(中国 IP)直连。 + """ + global _tls_forwarder + _tls_stop() + import socket, ssl + ctx = ssl.create_default_context() + ctx.check_hostname = False + ctx.verify_mode = ssl.CERT_NONE + + svr = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + svr.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + svr.bind(("127.0.0.1", _TLS_LOCAL_PORT)) + svr.listen(32) + svr.settimeout(1) + _tls_forwarder = {"sock": svr, "running": True} + + proto = "TLS" if use_tls else "TCP" + + def _run(): + while _tls_forwarder and _tls_forwarder.get("running"): + try: + client, addr = svr.accept() + threading.Thread(target=_tls_relay, args=(client, remote_host, remote_port, ctx, use_tls, bypass_lan, smart), daemon=True).start() + except socket.timeout: + continue + except Exception: + break + + t = threading.Thread(target=_run, daemon=True) + t.start() + log(f"本地转发器已启动 ({proto} 127.0.0.1:{_TLS_LOCAL_PORT} -> {remote_host}:{remote_port})") + +_HTTP_METHODS = (b"CONNECT ", b"GET ", b"POST ", b"PUT ", b"DELETE ", + b"HEAD ", b"OPTIONS ", b"PATCH ") + +def _starts_with_method(data: bytes) -> bool: + return any(data.startswith(m) for m in _HTTP_METHODS) + +def _inject_proxy_auth(data: bytes) -> bytes: + """在 HTTP 代理请求头中注入 Authorization(如果尚未存在)。 + + nginx 的 auth_basic 校验 Authorization 而非 Proxy-Authorization, + 因此转发器向上游发送 Basic 认证时使用 Authorization 头。 + """ + if not _starts_with_method(data): + return data + end = data.find(b"\r\n\r\n") + if end == -1: + return data + headers_lower = data[:end].lower() + if b"authorization:" in headers_lower: + return data + auth_line = f"Authorization: Basic {_PROXY_AUTH_BASIC}\r\n".encode() + return data[:end + 2] + auth_line + data[end + 2:] + +def _make_request_injector(): + """为明文 HTTP 代理连接生成逐条注入认证的流式处理器。 + + keep-alive 连接上的后续请求同样需要 Authorization,不能只在首包注入。 + 请求头跨包时先缓冲,凑齐 \r\n\r\n(或超过 64KB)后统一处理; + 请求体数据不以方法开头,原样透传。 + 注意:仅用于非 CONNECT 连接;CONNECT 隧道的后续流量是加密的,不能触碰。 + """ + pending = b"" + def feed(data: bytes) -> bytes: + nonlocal pending + if pending: + data, pending = pending + data, b"" + if not _starts_with_method(data): + return data + if b"\r\n\r\n" in data or len(data) >= 65536: + return _inject_proxy_auth(data) + pending = data + return b"" + return feed + +@functools.lru_cache(maxsize=256) +def _is_private_ip(host: str) -> bool: + """判断目标是否命中常用内网/回环 IPv4;域名会解析后判断。""" + try: + import ipaddress + ip = ipaddress.ip_address(host) + addresses = [ip] + except ValueError: + try: + import socket + addresses = [] + for addr in socket.getaddrinfo(host, None, socket.AF_INET, socket.SOCK_STREAM): + try: + addresses.append(ipaddress.ip_address(addr[4][0])) + except ValueError: + pass + except Exception: + return False + for ip in addresses: + if ip.version != 4: + continue + n = int(ip) + if ( + (n & 0xFF000000) == 0x0A000000 or + (n & 0xFFF00000) == 0xAC100000 or + (n & 0xFFFF0000) == 0xC0A80000 or + (n & 0xFF000000) == 0x7F000000 or + (n & 0xFFFF0000) == 0xA9FE0000 + ): + return True + return False + +# ── IP 智能分流(域名表优先,非中国 IP 走隧道,中国 IP 直连) ───── + +_CN_RANGES = None # 合并排序后的 (start, end) 整数段 +_CN_RANGES_LOADED = False +_FORCE_PROXY_SUFFIXES = None +_FORCE_PROXY_LOADED = False + +def _data_path(name: str): + """数据文件路径:EXE 同目录优先(可覆盖更新),其次打包内置目录。""" + for d in (PERSIST_DIR, BASE_DIR): + p = Path(d) / name + if p.is_file(): + return p + return None + +def _load_cn_ranges(): + """加载 pac_ip_cn.json 中的中国 IPv4 段,合并为整数区间供二分查找。""" + global _CN_RANGES, _CN_RANGES_LOADED + if _CN_RANGES_LOADED: + return _CN_RANGES + _CN_RANGES_LOADED = True + try: + import json, ipaddress + path = _data_path("pac_ip_cn.json") + if path is None: + log_red("未找到 pac_ip_cn.json,智能分流不可用(全部走隧道)") + return _CN_RANGES + data = json.loads(Path(path).read_text("utf-8")) + cidrs = data.get("cidrs") or [] + ranges = [] + for c in cidrs: + net = ipaddress.ip_network(str(c).strip(), strict=False) + if net.version != 4: + continue + ranges.append((int(net.network_address), int(net.broadcast_address))) + ranges.sort() + merged = [] + for s, e in ranges: + if merged and s <= merged[-1][1] + 1: + if e > merged[-1][1]: + merged[-1] = (merged[-1][0], e) + else: + merged.append((s, e)) + _CN_RANGES = merged + log(f"已加载中国 IP 段: {len(cidrs)} 条 CIDR,合并为 {len(merged)} 段") + except Exception as e: + log_red(f"pac_ip_cn.json 加载失败: {e}") + return _CN_RANGES + +def _load_force_proxy_suffixes(): + """加载 pac_domains.json:命中这些域名后缀的连接强制走隧道(优先于 IP 判定)。""" + global _FORCE_PROXY_SUFFIXES, _FORCE_PROXY_LOADED + if _FORCE_PROXY_LOADED: + return _FORCE_PROXY_SUFFIXES + _FORCE_PROXY_LOADED = True + try: + import json + path = _data_path("pac_domains.json") + if path is None: + return _FORCE_PROXY_SUFFIXES # 可选文件,缺失不影响 IP 分流 + data = json.loads(Path(path).read_text("utf-8")) + suffixes = sorted({str(d).strip().lower().lstrip("*.") + for d in (data.get("domains") or []) if str(d).strip()}) + _FORCE_PROXY_SUFFIXES = suffixes + log(f"已加载强制代理域名: {len(suffixes)} 条 (pac_domains.json)") + except Exception as e: + log_red(f"pac_domains.json 加载失败: {e}") + return _FORCE_PROXY_SUFFIXES + +def _is_private_int(n: int) -> bool: + """整数形式的 IPv4 是否属于常用内网/回环段。""" + return ((n & 0xFF000000) == 0x0A000000 or + (n & 0xFFF00000) == 0xAC100000 or + (n & 0xFFFF0000) == 0xC0A80000 or + (n & 0xFF000000) == 0x7F000000 or + (n & 0xFFFF0000) == 0xA9FE0000) + +@functools.lru_cache(maxsize=16384) +def _is_china_ip(host: str): + """判断目标是否命中中国 IP 段;域名会先解析。 + + 任一解析结果命中中国段 -> True(直连);全部不命中 -> False(走隧道); + 解析失败或数据未加载 -> None(无法判定,安全起见走隧道)。 + """ + import ipaddress + try: + ip = ipaddress.ip_address(host) + addresses = [ip] + except ValueError: + try: + import socket + addresses = [] + for addr in socket.getaddrinfo(host, None, socket.AF_INET, socket.SOCK_STREAM): + try: + addresses.append(ipaddress.ip_address(addr[4][0])) + except ValueError: + pass + except Exception: + return None + if not addresses: + return None + ranges = _load_cn_ranges() + if not ranges: + return None + for ip in addresses: + if ip.version != 4: + continue + n = int(ip) + # 0.0.0.0 / 内网 / 回环解析结果疑似污染或局域网,不参与判定 + if n == 0 or _is_private_int(n): + continue + i = bisect.bisect_right(ranges, (n, 0xFFFFFFFF)) + if i > 0 and ranges[i - 1][0] <= n <= ranges[i - 1][1]: + return True + return False + +@functools.lru_cache(maxsize=8192) +def _is_force_proxy(host: str) -> bool: + """pac_domains.json 命中的域名强制走隧道(如 claude.ai:国内可连但显示拒绝页)。""" + suffixes = _load_force_proxy_suffixes() + if not suffixes: + return False + h = host.rstrip(".").lower() + return any(h == s or h.endswith("." + s) for s in suffixes) + +def _decide_direct(host: str, bypass_lan: bool, smart: bool) -> bool: + """判断连接是否直连。判定顺序(域名表优先于 IP): + 1. 智能分流:pac_domains.json 命中 -> 强制隧道; + 2. 内网 IP 且勾选 bypass_lan -> 直连; + 3. 智能分流:中国 IP -> 直连,其余 -> 隧道。 + + 域名表与 IP 判定仅在智能分流(PAC)模式下生效; + 固定代理模式下全部走隧道,也不触发数据文件加载。 + """ + if smart and _is_force_proxy(host): + return False + if bypass_lan and _is_private_ip(host): + return True + if smart: + return _is_china_ip(host) is True + return False + +def _parse_connect_authority(first_line: str): + """从 CONNECT 首行提取 (host, port),失败返回 None。""" + parts = first_line.split(" ") + if len(parts) < 2: + return None + authority = parts[1] + if ":" not in authority: + return None + host, _, port_s = authority.rpartition(":") + if not host or not port_s.isdigit(): + return None + return host, int(port_s) + +def _parse_http_absolute(first_line: str): + """从明文 HTTP 代理首行提取 (host, port),失败返回 None。""" + parts = first_line.split(" ") + if len(parts) < 2 or not parts[1].lower().startswith(("http://", "https://")): + return None + from urllib.parse import urlsplit + parsed = urlsplit(parts[1]) + if not parsed.hostname: + return None + port = parsed.port or (443 if parsed.scheme == "https" else 80) + return parsed.hostname, port + +def _force_http_close(buf: bytes) -> bytes: + """直连明文 HTTP 时强制 Connection: close,避免 keep-alive 复用错连其他主机。""" + end = buf.find(b"\r\n\r\n") + if end == -1: + return buf + head, tail = buf[:end], buf[end:] + lines = head.split(b"\r\n") + out = [lines[0]] + conn_seen = False + for line in lines[1:]: + low = line.lower() + if low.startswith(b"connection:"): + out.append(b"Connection: close") + conn_seen = True + elif low.startswith(b"proxy-connection:"): + continue + else: + out.append(line) + if not conn_seen: + out.append(b"Connection: close") + return b"\r\n".join(out) + tail + +def _tls_relay(client, remote_host, remote_port, ctx, use_tls, bypass_lan=False, smart=False): + """处理一条客户端连接:内网(bypass_lan)/中国IP(智能分流)目标直接连接;其余走远端隧道。""" + import socket, select + client.settimeout(2.0) + buf = b"" + is_http = None + is_connect = False + injector = None + direct_target = None + max_headers = 65536 + try: + while len(buf) < max_headers: + try: + chunk = client.recv(4096) + except socket.timeout: + break + if not chunk: + break + buf += chunk + if is_http is None: + first_crlf = buf.find(b"\r\n") + if first_crlf != -1: + is_http = _starts_with_method(buf[:first_crlf] + b" ") + if not is_http: + break + if b"\r\n\r\n" in buf: + break + + if is_http and b"\r\n\r\n" in buf: + is_connect = buf.startswith(b"CONNECT ") + first_line = buf.split(b"\r\n", 1)[0].decode("latin-1", "replace") + if is_connect: + target = _parse_connect_authority(first_line) + else: + target = _parse_http_absolute(first_line) + if target and _decide_direct(target[0], bypass_lan, smart): + direct_target = target + except Exception as e: + log(f"[转发器] 读取首包失败: {e}") + client.close() + return + + count_traffic = direct_target is None + remote = None + try: + if direct_target: + remote = socket.create_connection(direct_target, 10) + if is_connect: + client.sendall(b"HTTP/1.1 200 Connection Established\r\n\r\n") + buf = b"" + else: + buf = _force_http_close(buf) + else: + remote = socket.create_connection((remote_host, remote_port), 10) + if use_tls: + remote = ctx.wrap_socket(remote, server_hostname=remote_host) + if is_http and b"\r\n\r\n" in buf: + if not is_connect: + injector = _make_request_injector() + buf = _inject_proxy_auth(buf) + if buf: + remote.sendall(buf) + if count_traffic: + _traffic_add(up=len(buf)) + except Exception as e: + log(f"[转发器] 连接目标失败: {e}") + try: + client.close() + except Exception: + pass + if remote is not None: + try: + remote.close() + except Exception: + pass + return + + client.settimeout(None) + remote.settimeout(None) + # CONNECT 隧道承载 WebSocket / 推送等长连接,空闲属正常,不设超时; + # 明文 HTTP 连接空闲 120 秒回收 + idle_timeout = None if is_connect else 120 + try: + while True: + r, _, _ = select.select([client, remote], [], [], idle_timeout) + if not r: + break + if client in r: + data = client.recv(65536) + if not data: + break + if injector is not None: + data = injector(data) + if data: + remote.sendall(data) + if count_traffic: + _traffic_add(up=len(data)) + if remote in r: + data = remote.recv(65536) + if not data: + break + client.sendall(data) + if count_traffic: + _traffic_add(down=len(data)) + except Exception: + pass + finally: + try: + client.close() + except Exception: + pass + try: + remote.close() + except Exception: + pass +def _tls_stop(): + """停止 TLS 转发器监听线程。""" + global _tls_forwarder + if _tls_forwarder: + _tls_forwarder["running"] = False + try: + _tls_forwarder["sock"].close() + except Exception: + pass + _tls_forwarder = None + +def is_proxy_on(): + """系统代理是否生效:固定代理已开启,或 AutoConfigURL 指向本地 PAC 服务。""" + r = _run(["reg", "query", PROXY_REG, "/v", "ProxyEnable"], warn=False) + if "0x1" in (r.stdout or ""): + return True + r = _run(["reg", "query", PROXY_REG, "/v", "AutoConfigURL"], warn=False) + return "127.0.0.1" in (r.stdout or "") + +def _cleanup_stale_proxy(): + """清理上次异常退出残留的系统代理设置。 + + TLS 转发器 / PAC 服务只活在进程内,程序启动时若注册表仍指向 + 127.0.0.1:1080 或本地 PAC 地址,说明是残留——不清理会导致全网不通。 + """ + try: + if not is_proxy_on(): + return + r = _run(["reg", "query", PROXY_REG, "/v", "ProxyServer"], warn=False) + r2 = _run(["reg", "query", PROXY_REG, "/v", "AutoConfigURL"], warn=False) + stale = (f"{PROXY_HOST}:{PROXY_PORT}" in (r.stdout or "") + or "127.0.0.1" in (r2.stdout or "")) + if stale: + proxy_off() + except Exception: + pass + +# ── 图标 ────────────────────────────────────────────── + +# 程序图标 base64 编码(原 ico.ico),避免打包后依赖外部资源文件 +_ICO_B64 = "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" + +def load_icon(): + """加载程序图标,base64 解码失败时返回纯色兜底图标。""" + try: + import base64 + data = base64.b64decode(_ICO_B64) + pixmap = QPixmap() + pixmap.loadFromData(data) + if not pixmap.isNull(): + return QIcon(pixmap) + except Exception: + pass + # 兜底:生成一个纯色方形图标 + img = QImage(64, 64, QImage.Format_ARGB32) + img.fill(QColor(C_TITLE)) + return QIcon(QPixmap.fromImage(img)) + +# ── 状态指示灯(小圆点) ─────────────────────────────── + +class StatusDot(QLabel): + def __init__(self): + super().__init__() + self.setFixedSize(14, 14) + self.set_off() + + def set_on(self): + self.setStyleSheet(f""" + QLabel {{ + background-color: {C_GREEN}; + border-radius: 7px; + border: 1px solid rgba(81, 207, 102, 50); + }} + """) + + def set_off(self): + self.setStyleSheet(f""" + QLabel {{ + background-color: {C_RED}; + border-radius: 7px; + border: 1px solid rgba(255, 107, 107, 50); + }} + """) + + def set_disabled(self): + self.setStyleSheet(f""" + QLabel {{ + background-color: {C_BORDER}; + border-radius: 7px; + border: 1px solid rgba(136, 153, 170, 50); + }} + """) + +# ── 主窗口 ──────────────────────────────────────────── + +# ── 主窗口 ──────────────────────────────────────────── + +class MainWindow(QWidget): + log_signal = pyqtSignal(str) + _op_done = pyqtSignal(str, bool) + _update_done = pyqtSignal() + _update_download_done = pyqtSignal(bool, str) + + _status_ready = pyqtSignal(object) + + def __init__(self): + super().__init__() + self._proxy_set_by_us = False # 系统代理是否由本程序开启(退出时只清理自己设置的) + self._status_busy = False # 防止状态轮询线程堆叠 + # 把全局 log() 函数接到 GUI 日志区 + global _log_func + _log_func = self.log_signal.emit + self.log_signal.connect(self._append_log) + self._op_done.connect(self._after_op) + self._update_done.connect(self._on_update_done) + self._update_download_done.connect(self._on_update_download_done) + self._status_ready.connect(self._apply_status) + + self.init_ui() + + # 每 2 秒刷新一次状态指示灯 + self.timer = QTimer() + self.timer.timeout.connect(self.refresh_status) + self.timer.start(2000) + self.refresh_status() + + # 启动时后台检查更新,完成前禁用开启按钮 + threading.Thread(target=self._check_update, daemon=True).start() + + def init_ui(self): + """初始化主界面布局与样式。""" + self.setWindowTitle("Royirin Rosmontis Private Proxy") + self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) + self.setWindowIcon(load_icon()) + self.setFixedSize(_BASE_WINDOW_WIDTH, _BASE_WINDOW_HEIGHT) + + self.setStyleSheet(f""" + QWidget {{ + color: {C_TEXT}; + font-family: "Microsoft YaHei", "Segoe UI", sans-serif; + font-size: 13px; + }} + """) + + layout = QVBoxLayout(self) + layout.setSpacing(14) + layout.setContentsMargins(24, 20, 24, 20) + + # 标题 + title = QLabel("Royirin Rosmontis Private Proxy") + title.setFont(QFont("Microsoft YaHei", 16, QFont.Bold)) + title.setStyleSheet(f"color: {C_TITLE};") + title.setAlignment(Qt.AlignCenter) + layout.addWidget(title) + + # 节点副标题 + subtitle = QLabel(f"节点: {_endpoint_domain()} (JP)") + subtitle.setStyleSheet(f"color: {C_TITLE}; font-size: 12px;") + subtitle.setAlignment(Qt.AlignCenter) + layout.addWidget(subtitle) + + # 连接方式选择区 + pac_layout = QHBoxLayout() + pac_layout.setSpacing(8) + pac_layout.addStretch() + self.cb_bypass_lan = QCheckBox("不代理内网 IP") + self.cb_bypass_lan.setChecked(True) # 默认勾选:内网 IP 直连,不经过本地转发器 + self.cb_bypass_lan.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 12px;") + pac_layout.addWidget(self.cb_bypass_lan) + self.cb_pac = QCheckBox("PAC 规则模式") + self.cb_pac.setChecked(False) # 默认关闭 PAC,由用户按需开启 + self.cb_pac.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 12px;") + self.cb_pac.setToolTip("只代理海外服务,使用域名和解析 IP 匹配。") + pac_layout.addWidget(self.cb_pac) + pac_layout.addStretch() + layout.addLayout(pac_layout) + + # 分隔线 + line = QFrame() + line.setFrameShape(QFrame.HLine) + line.setStyleSheet("background-color: rgba(136, 153, 170, 80); max-height: 1px;") + layout.addWidget(line) + + + # 系统代理状态卡片 + px_frame = QFrame() + px_frame.setStyleSheet(f""" + QFrame {{ + background-color: {C_CARD}; + border: 1px solid {C_BORDER}; + border-radius: 8px; + }} + """) + px_layout = QHBoxLayout(px_frame) + px_layout.setContentsMargins(16, 12, 16, 12) + px_label = QLabel("IE 代理") + px_label.setStyleSheet(f"color: {C_TEXT}; font-weight: bold; background: transparent;") + self.px_dot = StatusDot() + self.px_status = QLabel("检测中...") + self.px_status.setStyleSheet(f"color: {C_SUBTEXT}; background: transparent;") + px_layout.addWidget(px_label) + px_layout.addStretch() + px_layout.addWidget(self.px_status) + px_layout.addWidget(self.px_dot) + layout.addWidget(px_frame) + + traffic_cards = QHBoxLayout() + traffic_cards.setSpacing(8) + self.traffic_up = QLabel("↑0 B/s") + self.traffic_down = QLabel("↓0 B/s") + self.traffic_total = QLabel("0 B") + for card in (self.traffic_up, self.traffic_down, self.traffic_total): + card.setStyleSheet(f""" + QLabel {{ + background-color: {C_CARD}; + border: 1px solid {C_BORDER}; + border-radius: 8px; + color: {C_SUBTEXT}; + font-size: 12px; + padding: 10px 4px; + }} + """) + card.setAlignment(Qt.AlignCenter) + traffic_cards.addWidget(card, 1) + layout.addLayout(traffic_cards) + + layout.addStretch() + + # 开启 / 关闭 代理按钮 + self.btn_toggle = QPushButton("开启代理") + self.btn_toggle.setMinimumHeight(40) + self._set_toggle_button_style(is_start=True) + self.btn_toggle.clicked.connect(self.on_toggle) + self.btn_toggle.setEnabled(False) # 更新检查完成前禁用,避免旧版本被使用 + layout.addWidget(self.btn_toggle) + + # 日志输出区 + self.log_text = QTextEdit() + self.log_text.setReadOnly(True) + self.log_text.setMaximumHeight(140) + self.log_text.setStyleSheet(f""" + QTextEdit {{ + background-color: {C_CARD}; + border: 1px solid {C_BORDER}; + border-radius: 6px; + color: {C_SUBTEXT}; + font-size: 11px; + padding: 4px 6px; + }} + QScrollBar:vertical {{ + width: 6px; + background: transparent; + }} + QScrollBar::handle:vertical {{ + background: {C_BORDER}; + border-radius: 3px; + min-height: 20px; + }} + """) + layout.addWidget(self.log_text) + + # 底部提示小字:独立容器收紧两行间距(主布局 spacing=14 太宽) + hints = QWidget() + hints_layout = QVBoxLayout(hints) + hints_layout.setContentsMargins(0, 0, 0, 0) + hints_layout.setSpacing(1) + + warn_label = QLabel("请勿二次分发此软件!") + warn_label.setStyleSheet(f"color: {C_RED}; font-size: 11px;") + warn_label.setAlignment(Qt.AlignCenter) + hints_layout.addWidget(warn_label) + + # 主背景是白色,纯白字不可见,用接近白的浅灰达到同样的弱化效果 + privacy_label = QLabel("使用此软件将会收集并上报您的IP地址及部分设备信息") + privacy_label.setStyleSheet("color: #c8ccd4; font-size: 9px;") + privacy_label.setAlignment(Qt.AlignCenter) + hints_layout.addWidget(privacy_label) + + layout.addWidget(hints) + + def closeEvent(self, event): + """关闭窗口时自动清理代理和隧道。""" + self.quit_app() + event.accept() + + # ── 开关操作 ── + def _set_toggle_button_style(self, is_start=True): + if is_start: + self.btn_toggle.setText("开启代理") + self.btn_toggle.setStyleSheet(f""" + QPushButton {{ + background-color: {C_GREEN}; color: #fff; border: none; + border-radius: 8px; padding: 10px 24px; + font-size: 14px; font-weight: bold; + }} + QPushButton:hover {{ background-color: #5ed978; }} + QPushButton:pressed {{ background-color: #45b85a; }} + QPushButton:disabled {{ background-color: #2a3a2e; color: #666; }} + """) + else: + self.btn_toggle.setText("关闭代理") + self.btn_toggle.setStyleSheet(f""" + QPushButton {{ + background-color: {C_RED}; color: #fff; border: none; + border-radius: 8px; padding: 10px 24px; + font-size: 14px; font-weight: bold; + }} + QPushButton:hover {{ background-color: #ff8787; }} + QPushButton:pressed {{ background-color: #e05555; }} + QPushButton:disabled {{ background-color: #3a1e1e; color: #666; }} + """) + + def on_toggle(self): + """根据按钮当前文字判断是开启还是关闭。""" + if self.btn_toggle.text() == "开启代理": + self.on_start() + else: + self.on_stop() + + def on_start(self): + self.btn_toggle.setEnabled(False) + self.cb_pac.setEnabled(False) + self.cb_bypass_lan.setEnabled(False) + # 在 GUI 线程读取控件状态传参,避免子线程直接访问 Qt 控件(非线程安全) + use_pac = self.cb_pac.isChecked() + use_bypass_lan = self.cb_bypass_lan.isChecked() + threading.Thread(target=self._start_thread, args=(use_pac, use_bypass_lan), daemon=True).start() + def _start_thread(self, use_pac, use_bypass_lan): + try: + _traffic_reset() + log("TLS 直连模式") + ep = _endpoint_domain() + log(f" 目标域名: {ep}") + # PAC 模式 = 智能分流:PAC 把全部流量送进转发器,由转发器按域名表/解析 IP 决定直连或隧道 + if use_pac: + _load_cn_ranges() + _load_force_proxy_suffixes() + _tls_start(ep, 443, use_tls=True, bypass_lan=use_bypass_lan, smart=use_pac) + if use_pac: + # 本地生成全量转发 PAC(不再从服务器拉取),全部流量交给转发器做智能分流 + pac_content = _build_pac(f"{PROXY_HOST}:{PROXY_PORT}") + if use_bypass_lan: + pac_content = _apply_lan_bypass(pac_content) + # 在内存中启动本地 PAC HTTP 服务,不往 EXE 目录写任何文件 + pac_port = _start_pac_server(pac_content) + pac_url = f"http://127.0.0.1:{pac_port}/proxy.pac" + log(f"使用 PAC: {pac_url}") + proxy_on(pac_url=pac_url) + else: + proxy_on(bypass_lan=use_bypass_lan) + if use_bypass_lan: + log("不代理内网 IP:内网地址将直连") + self._proxy_set_by_us = True # 标记系统代理由本程序设置,退出时据此清理 + log("验证代理连通性...") + import urllib.request + # baidu 验证国内直连路径,google 验证境外隧道路径 + test_urls = [("baidu.com", "http://www.baidu.com"), ("google.com", "http://www.google.com")] + for name, url in test_urls: + try: + req = urllib.request.Request(url) + req.set_proxy(f"{PROXY_HOST}:{PROXY_PORT}", "http") + urllib.request.urlopen(req, timeout=10) + log(f" {name} 可达") + except Exception as e: + log(f" {name} 不可达: {e}") + log("开启成功") + self._op_done.emit("start", True) + except Exception as e: + log(f"[错误] 开启失败: {e}") + self._op_done.emit("start", False) + + def on_stop(self): + """禁用按钮并在后台线程执行关闭流程。""" + self.btn_toggle.setEnabled(False) + threading.Thread(target=self._stop_thread, daemon=True).start() + + def _stop_thread(self): + """后台关闭代理:清理系统代理、停止 TLS/PAC 服务、断开 WG。""" + try: + log("正在关闭代理...") + proxy_off() + self._proxy_set_by_us = False + log("已关闭") + self._op_done.emit("stop", True) + except Exception as e: + log(f"[错误] 关闭失败: {e}") + self._op_done.emit("stop", False) + + + def _after_op(self, op, ok): + """开启/关闭操作完成后刷新界面状态并恢复按钮/控件可用性。""" + self.refresh_status() + self.btn_toggle.setEnabled(True) + # 恢复模式/PAC 控件的时机:关闭完成后、或开启失败时。 + # 不能靠按钮文字判断——refresh_status 是异步的,此刻按钮样式还没更新 + is_off = (op == "stop") or (op == "start" and not ok) + self.cb_pac.setEnabled(is_off) + self.cb_bypass_lan.setEnabled(is_off) + # ── 日志 ── + def _append_log(self, msg: str): + """追加日志并自动滚动,最多保留 200 行。""" + self.log_text.append(msg) + scrollbar = self.log_text.verticalScrollBar() + scrollbar.setValue(scrollbar.maximum()) + if self.log_text.document().blockCount() > 200: + cursor = self.log_text.textCursor() + cursor.movePosition(cursor.Start) + cursor.select(cursor.BlockUnderCursor) + cursor.removeSelectedText() + cursor.deleteChar() + + # ── 状态刷新 ── + def refresh_status(self): + """触发一次后台状态轮询(不在 GUI 线程起子进程,避免周期性卡顿)。""" + if self._status_busy: + return + self._status_busy = True + # GUI 线程读取模式选择,传给后台线程;直连模式下不检测 WG,避免无谓的 wg 子进程 + threading.Thread(target=self._poll_status, daemon=True).start() + + def _poll_status(self): + try: + px = is_proxy_on() + except Exception: + px = False + self._status_ready.emit(px) + def _apply_status(self, px_on_): + """GUI 线程:根据轮询结果刷新状态指示灯、IE代理、流量卡片。""" + self._status_busy = False + + # IE 代理状态 + if px_on_: + self.px_dot.set_on() + self.px_status.setText("已开启") + self.px_status.setStyleSheet(f"color: {C_GREEN}; background: transparent;") + self._set_toggle_button_style(is_start=False) + else: + self.px_dot.set_off() + self.px_status.setText("已关闭") + self.px_status.setStyleSheet(f"color: {C_RED}; background: transparent;") + self._set_toggle_button_style(is_start=True) + + # 流量卡片(始终更新,未连接时显示 0) + px_on = is_proxy_on() + if px_on: + up_rate, down_rate, up_total, down_total = _traffic_rate() + else: + up_rate, down_rate, up_total, down_total = 0, 0, 0, 0 + self.traffic_up.setText(f"↑{_fmt_bytes(up_rate)}/s") + self.traffic_down.setText(f"↓{_fmt_bytes(down_rate)}/s") + self.traffic_total.setText(_fmt_bytes(up_total + down_total)) + def _check_update(self): + """后台检查服务器是否有新版本。""" + try: + import json, urllib.request, base64 + domain = _endpoint_domain() + if domain == "???": + log("更新检查: 无法获取服务器域名") + self._update_done.emit() + return + log("正在检查更新...") + url = f"https://{domain}/latest_version.json" + req = urllib.request.Request(url) + auth = base64.b64encode(f"{UPDATE_USER}:{UPDATE_PASSWORD}".encode()).decode() + req.add_header("Authorization", f"Basic {auth}") + data = urllib.request.urlopen(req, context=_SSL_NO_VERIFY, timeout=10).read().decode("utf-8-sig") + info = json.loads(data) + log("客户端认证成功") + self._latest_version = info.get("latest_version", "") + self._download_url = info.get("download_url", "") + log(f"当前版本: {VERSION},最新版本: {self._latest_version}") + if VERSION.startswith("9999"): + log("您当前正在使用 Lite 版") + except Exception as e: + log(f"更新检查失败: {e}") + self._latest_version = "" + self._download_url = "" + finally: + self._update_done.emit() + + def _on_update_done(self): + """更新检查完成后恢复按钮;发现新版本时弹窗询问是否下载。""" + self.btn_toggle.setEnabled(True) + if self._latest_version and self._latest_version > VERSION: + reply = QMessageBox.question( + self, "发现新版本", + f"当前版本: {VERSION}\n最新版本: {self._latest_version}\n\n是否下载更新?", + QMessageBox.Yes | QMessageBox.No, + QMessageBox.Yes, + ) + if reply == QMessageBox.Yes: + threading.Thread(target=self._download_update, daemon=True).start() + + def _download_update(self): + """后台下载新版本 EXE 到 EXE 所在目录。""" + try: + import urllib.request, urllib.parse, base64 + url = self._download_url + if not url: + self._update_download_done.emit(False, "下载链接为空") + return + + # 对 URL 进行安全编码,兼容空格或已编码空格 + url = urllib.parse.quote(url, safe=':/?#[]@!$&\'()*+,;=%') + save_path = PERSIST_DIR / f"Royirin Rosmontis Private Proxy {self._latest_version}.exe" + log(f"正在下载新版本: {url}") + log(f"保存到: {save_path}") + + req = urllib.request.Request(url) + auth = base64.b64encode(f"{UPDATE_USER}:{UPDATE_PASSWORD}".encode()).decode() + req.add_header("Authorization", f"Basic {auth}") + + with urllib.request.urlopen(req, context=_SSL_NO_VERIFY, timeout=120) as resp: + data = resp.read() + + if len(data) < 1024: + self._update_download_done.emit(False, "下载文件过小,可能不是有效的 EXE") + return + + save_path.write_bytes(data) + log(f"新版本已下载: {save_path}") + self._update_download_done.emit(True, str(save_path)) + except Exception as e: + log(f"下载更新失败: {e}") + self._update_download_done.emit(False, str(e)) + + def _on_update_download_done(self, success, message): + """下载完成后提示用户手动替换 EXE。""" + if success: + QMessageBox.information( + self, "下载完成", + f"新版本已下载到:\n{message}\n\n请关闭本程序后,用该文件替换当前运行的程序,然后重新启动。" + ) + else: + QMessageBox.warning(self, "下载失败", f"无法下载新版本:\n{message}") + + def quit_app(self): + """只清理自己设置的系统代理:用户或其他软件设置的代理不受影响。" + + 本程序异常退出残留的代理设置由下次启动时 _cleanup_stale_proxy() 处理。 + """ + if self._proxy_set_by_us: + proxy_off() + QApplication.quit() + +# ── 程序入口 ────────────────────────────────────────── + +def _set_per_monitor_dpi_aware(): + """在创建 QApplication 前尽量设置为每显示器 DPI 感知, + + 使程序在 2K/4K 高分屏以及多显示器不同缩放比例之间移动时, + 由系统通知 WM_DPICHANGED 而不是被位图拉伸。 + """ + try: + # Windows 10 1607+:Per Monitor V2(最优) + ctypes.windll.user32.SetThreadDpiAwarenessContext(ctypes.c_ssize_t(-4)) + return + except Exception: + pass + try: + # Windows 8.1+:Per Monitor + ctypes.windll.shcore.SetProcessDpiAwareness(2) + return + except Exception: + pass + try: + # 最低兜底:System DPI Aware + ctypes.windll.user32.SetProcessDPIAware() + except Exception: + pass + + +_SINGLE_INSTANCE_MUTEX = None + +def _acquire_single_instance(): + """通过命名互斥体保证单实例运行;已有实例时返回 False。""" + global _SINGLE_INSTANCE_MUTEX + try: + kernel32 = ctypes.windll.kernel32 + _SINGLE_INSTANCE_MUTEX = kernel32.CreateMutexW(None, True, r"Local\RRPP_SingleInstance") + return kernel32.GetLastError() != 183 # ERROR_ALREADY_EXISTS + except Exception: + return True # 互斥体创建失败时放行,避免把用户锁在门外 + +def main(): + """主入口:检查管理员权限、依赖文件,然后启动 GUI。""" + _set_per_monitor_dpi_aware() + + # 单实例:第二个实例直接退出(且不能执行下面的残留代理清理, + # 否则会把第一个实例正在使用的系统代理清掉) + if not _acquire_single_instance(): + app = QApplication(sys.argv) + QMessageBox.information(None, "提示", "程序已在运行中。") + sys.exit(0) + + # 上次异常退出可能残留指向 127.0.0.1:1080 的系统代理(转发器已随进程消失), + # 不清理会导致全网不通,启动时先清掉 + _cleanup_stale_proxy() + + # 任务栏图标:显式设置 AppUserModelID, + # 避免 Windows 依赖 exe 图标缓存推断(冷缓存下任务栏会显示空白/默认图标) + try: + ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID( + "RRPP.RoyirinRosmontisPrivateProxy") + except Exception: + pass + + + # Qt5 默认把缩放因子四舍五入到整数倍:2K 屏常见的 150% 会被取整为 2x, + # 界面直接翻倍过大。改为 PassThrough,按实际比例(1.5x)缩放。 + os.environ.setdefault("QT_SCALE_FACTOR_ROUNDING_POLICY", "PassThrough") + try: + QApplication.setHighDpiScaleFactorRoundingPolicy( + Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) + except Exception: + pass + + QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) + QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True) + app = QApplication(sys.argv) + icon = load_icon() + app.setWindowIcon(icon) + app.setQuitOnLastWindowClosed(True) + + window = MainWindow() + window.show() + # 开机自启等场景下任务栏/Explorer 可能尚未就绪, + # 延迟重设一次图标兜底,避免首次启动任务栏图标丢失 + QTimer.singleShot(2000, lambda: window.setWindowIcon(icon)) + + sys.exit(app.exec_()) + +if __name__ == "__main__": + main() \ No newline at end of file