Showing preview only (1,694K chars total). Download the full file or copy to clipboard to get everything.
Repository: shadowsocks/shadowsocks-android
Branch: master
Commit: ae28fd91931f
Files: 309
Total size: 1.6 MB
Directory structure:
gitextract_e5trxlyi/
├── .circleci/
│ └── config.yml
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── questions-support-requests-other.md
│ ├── doc-json.md
│ ├── faq.md
│ ├── faq.ru.md
│ └── workflows/
│ └── e2e-test.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── AUTHORS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── build.gradle.kts
├── buildSrc/
│ ├── build.gradle.kts
│ ├── settings.gradle.kts
│ └── src/
│ └── main/
│ └── kotlin/
│ └── Helpers.kt
├── core/
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── gfwlist/
│ │ ├── gen.pl
│ │ ├── gen.py
│ │ └── parse.py
│ ├── proguard-rules.pro
│ ├── schemas/
│ │ ├── com.github.shadowsocks.database.PrivateDatabase/
│ │ │ ├── 26.json
│ │ │ ├── 27.json
│ │ │ ├── 28.json
│ │ │ └── 29.json
│ │ └── com.github.shadowsocks.database.PublicDatabase/
│ │ └── 3.json
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── github/
│ │ └── shadowsocks/
│ │ ├── acl/
│ │ │ └── AclTest.kt
│ │ ├── database/
│ │ │ ├── MigrationTest.kt
│ │ │ └── ProfileTest.kt
│ │ └── net/
│ │ └── SubnetTest.kt
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ └── aidl/
│ │ │ ├── IShadowsocksService.aidl
│ │ │ ├── IShadowsocksServiceCallback.aidl
│ │ │ └── TrafficStats.aidl
│ │ ├── assets/
│ │ │ └── acl/
│ │ │ ├── bypass-china.acl
│ │ │ ├── bypass-lan-china.acl
│ │ │ ├── bypass-lan.acl
│ │ │ ├── china-list.acl
│ │ │ └── gfwlist.acl
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ ├── BootReceiver.kt
│ │ │ ├── Core.kt
│ │ │ ├── UrlImportActivity.kt
│ │ │ ├── VpnRequestActivity.kt
│ │ │ ├── acl/
│ │ │ │ ├── Acl.kt
│ │ │ │ └── AclSyncer.kt
│ │ │ ├── aidl/
│ │ │ │ ├── ShadowsocksConnection.kt
│ │ │ │ └── TrafficStats.kt
│ │ │ ├── bg/
│ │ │ │ ├── BaseService.kt
│ │ │ │ ├── Executable.kt
│ │ │ │ ├── GuardedProcessPool.kt
│ │ │ │ ├── LocalDnsWorker.kt
│ │ │ │ ├── ProxyInstance.kt
│ │ │ │ ├── ProxyService.kt
│ │ │ │ ├── ServiceNotification.kt
│ │ │ │ ├── TrafficMonitor.kt
│ │ │ │ ├── TransproxyService.kt
│ │ │ │ └── VpnService.kt
│ │ │ ├── database/
│ │ │ │ ├── KeyValuePair.kt
│ │ │ │ ├── PrivateDatabase.kt
│ │ │ │ ├── Profile.kt
│ │ │ │ ├── ProfileManager.kt
│ │ │ │ ├── PublicDatabase.kt
│ │ │ │ └── migration/
│ │ │ │ └── RecreateSchemaMigration.kt
│ │ │ ├── net/
│ │ │ │ ├── ConcurrentLocalSocketListener.kt
│ │ │ │ ├── DefaultNetworkListener.kt
│ │ │ │ ├── DnsResolverCompat.kt
│ │ │ │ ├── HttpsTest.kt
│ │ │ │ ├── LocalSocketListener.kt
│ │ │ │ └── Subnet.kt
│ │ │ ├── plugin/
│ │ │ │ ├── NativePlugin.kt
│ │ │ │ ├── NoPlugin.kt
│ │ │ │ ├── Plugin.kt
│ │ │ │ ├── PluginConfiguration.kt
│ │ │ │ ├── PluginList.kt
│ │ │ │ ├── PluginManager.kt
│ │ │ │ └── ResolvedPlugin.kt
│ │ │ ├── preference/
│ │ │ │ ├── DataStore.kt
│ │ │ │ ├── EditTextPreferenceModifiers.kt
│ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt
│ │ │ │ └── RoomPreferenceDataStore.kt
│ │ │ ├── subscription/
│ │ │ │ ├── Subscription.kt
│ │ │ │ └── SubscriptionService.kt
│ │ │ ├── utils/
│ │ │ │ ├── ActivityResultContracts.kt
│ │ │ │ ├── ArrayIterator.kt
│ │ │ │ ├── Commandline.kt
│ │ │ │ ├── Constants.kt
│ │ │ │ ├── DeviceStorageApp.kt
│ │ │ │ ├── DirectBoot.kt
│ │ │ │ ├── Sorters.kt
│ │ │ │ └── Utils.kt
│ │ │ └── widget/
│ │ │ └── AutoCollapseTextView.kt
│ │ ├── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── build-shared-executable.mk
│ │ ├── res/
│ │ │ ├── color-v24/
│ │ │ │ └── ic_launcher_foreground_shadow.xml
│ │ │ ├── drawable/
│ │ │ │ ├── ic_file_cloud_download.xml
│ │ │ │ ├── ic_launcher_monochrome.xml
│ │ │ │ └── ic_service_active.xml
│ │ │ ├── drawable-anydpi-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── mipmap-anydpi-v24/
│ │ │ │ └── banner.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_launcher.xml
│ │ │ ├── values/
│ │ │ │ ├── arrays.xml
│ │ │ │ ├── colors.xml
│ │ │ │ └── strings.xml
│ │ │ ├── values-ar/
│ │ │ │ └── strings.xml
│ │ │ ├── values-de/
│ │ │ │ └── strings.xml
│ │ │ ├── values-es/
│ │ │ │ └── strings.xml
│ │ │ ├── values-fa/
│ │ │ │ └── strings.xml
│ │ │ ├── values-fr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ja/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ko/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ru/
│ │ │ │ └── strings.xml
│ │ │ ├── values-tr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-uk/
│ │ │ │ └── strings.xml
│ │ │ ├── values-zh-rCN/
│ │ │ │ └── strings.xml
│ │ │ ├── values-zh-rTW/
│ │ │ │ └── strings.xml
│ │ │ └── xml/
│ │ │ ├── backup_descriptor.xml
│ │ │ ├── default_configs.xml
│ │ │ ├── locales_config.xml
│ │ │ └── network_security_config.xml
│ │ └── rust/
│ │ └── linker-wrapper.py
│ └── test/
│ └── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── database/
│ └── KeyValuePairTest.kt
├── detekt.yml
├── gradle/
│ ├── gradle-daemon-jvm.properties
│ ├── libs.versions.toml
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mobile/
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── google-services.json
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── shadowsocks/
│ │ ├── AboutFragment.kt
│ │ ├── App.kt
│ │ ├── AppManager.kt
│ │ ├── GlobalSettingsFragment.kt
│ │ ├── GlobalSettingsPreferenceFragment.kt
│ │ ├── MainActivity.kt
│ │ ├── ProfileConfigActivity.kt
│ │ ├── ProfileConfigFragment.kt
│ │ ├── ProfilesFragment.kt
│ │ ├── QuickToggleShortcut.kt
│ │ ├── ScannerActivity.kt
│ │ ├── ToolbarFragment.kt
│ │ ├── UdpFallbackProfileActivity.kt
│ │ ├── acl/
│ │ │ └── CustomRulesFragment.kt
│ │ ├── bg/
│ │ │ └── TileService.kt
│ │ ├── preference/
│ │ │ ├── PluginConfigurationDialogFragment.kt
│ │ │ ├── PluginPreference.kt
│ │ │ └── PluginPreferenceDialogFragment.kt
│ │ ├── subscription/
│ │ │ └── SubscriptionFragment.kt
│ │ ├── tasker/
│ │ │ ├── ActionListener.kt
│ │ │ ├── ConfigActivity.kt
│ │ │ └── Settings.kt
│ │ └── widget/
│ │ ├── FabProgressBehavior.kt
│ │ ├── ServiceButton.kt
│ │ ├── StatsBar.kt
│ │ ├── UndoSnackbarManager.kt
│ │ └── WindowInsetsListeners.kt
│ └── res/
│ ├── color/
│ │ ├── background_service.xml
│ │ └── nav_item_tint.xml
│ ├── drawable/
│ │ ├── background_profile.xml
│ │ ├── background_selectable.xml
│ │ ├── ic_action_assignment.xml
│ │ ├── ic_action_copyright.xml
│ │ ├── ic_action_delete.xml
│ │ ├── ic_action_description.xml
│ │ ├── ic_action_dns.xml
│ │ ├── ic_action_done.xml
│ │ ├── ic_action_help_outline.xml
│ │ ├── ic_action_lock.xml
│ │ ├── ic_action_lock_open.xml
│ │ ├── ic_action_note_add.xml
│ │ ├── ic_action_settings.xml
│ │ ├── ic_app_shortcut_background.xml
│ │ ├── ic_av_playlist_add.xml
│ │ ├── ic_communication_phonelink_ring.xml
│ │ ├── ic_device_data_usage.xml
│ │ ├── ic_device_developer_mode.xml
│ │ ├── ic_file_cloud_queue.xml
│ │ ├── ic_file_file_upload.xml
│ │ ├── ic_hardware_router.xml
│ │ ├── ic_image_camera_alt.xml
│ │ ├── ic_image_edit.xml
│ │ ├── ic_image_looks_6.xml
│ │ ├── ic_image_photo.xml
│ │ ├── ic_maps_360.xml
│ │ ├── ic_maps_directions.xml
│ │ ├── ic_maps_directions_boat.xml
│ │ ├── ic_navigation_apps.xml
│ │ ├── ic_navigation_menu.xml
│ │ ├── ic_notification_enhanced_encryption.xml
│ │ ├── ic_qu_camera_launcher.xml
│ │ ├── ic_qu_shadowsocks_foreground.xml
│ │ ├── ic_qu_shadowsocks_launcher.xml
│ │ ├── ic_service_busy.xml
│ │ ├── ic_service_connected.xml
│ │ ├── ic_service_connecting.xml
│ │ ├── ic_service_idle.xml
│ │ ├── ic_service_stopped.xml
│ │ ├── ic_service_stopping.xml
│ │ ├── ic_settings_password.xml
│ │ ├── ic_social_emoji_symbols.xml
│ │ └── ic_social_share.xml
│ ├── drawable-v26/
│ │ ├── ic_qu_camera_launcher.xml
│ │ └── ic_qu_shadowsocks_launcher.xml
│ ├── layout/
│ │ ├── dialog_acl_rule.xml
│ │ ├── dialog_subscription.xml
│ │ ├── icon_list_item_2.xml
│ │ ├── layout_about.xml
│ │ ├── layout_apps.xml
│ │ ├── layout_apps_item.xml
│ │ ├── layout_custom_rules.xml
│ │ ├── layout_global_settings.xml
│ │ ├── layout_list.xml
│ │ ├── layout_main.xml
│ │ ├── layout_profile.xml
│ │ ├── layout_profile_config.xml
│ │ ├── layout_scanner.xml
│ │ ├── layout_subscriptions.xml
│ │ ├── layout_tasker.xml
│ │ ├── layout_udp_fallback.xml
│ │ ├── navigation_header.xml
│ │ └── preference_dialog_password.xml
│ ├── menu/
│ │ ├── app_manager_menu.xml
│ │ ├── custom_rules_menu.xml
│ │ ├── custom_rules_selection.xml
│ │ ├── navigation_main.xml
│ │ ├── profile_config_menu.xml
│ │ ├── profile_manager_menu.xml
│ │ ├── profile_share_popup.xml
│ │ ├── scanner_menu.xml
│ │ └── subscription_menu.xml
│ ├── raw/
│ │ └── about.html
│ ├── values/
│ │ ├── arrays.xml
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ └── styles.xml
│ ├── values-night/
│ │ └── colors.xml
│ └── xml/
│ ├── pref_global.xml
│ ├── pref_profile.xml
│ └── shortcuts.xml
├── plugin/
│ ├── .gitignore
│ ├── CHANGES.md
│ ├── README.md
│ ├── build.gradle.kts
│ ├── doc.md
│ ├── gradle.properties
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ └── plugin/
│ │ │ ├── AlertDialogFragment.kt
│ │ │ ├── ConfigurationActivity.kt
│ │ │ ├── HelpActivity.kt
│ │ │ ├── HelpCallback.kt
│ │ │ ├── NativePluginProvider.kt
│ │ │ ├── OptionsCapableActivity.kt
│ │ │ ├── PathProvider.kt
│ │ │ ├── PluginContract.kt
│ │ │ ├── PluginOptions.kt
│ │ │ ├── Utils.kt
│ │ │ └── fragment/
│ │ │ ├── AlertDialogFragment.kt
│ │ │ └── Utils.kt
│ │ └── res/
│ │ ├── color/
│ │ │ └── mtrl_text_btn_text_color_selector.xml
│ │ ├── drawable/
│ │ │ └── ic_navigation_close.xml
│ │ ├── layout/
│ │ │ └── toolbar_light_dark.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-de/
│ │ │ └── strings.xml
│ │ ├── values-es/
│ │ │ └── strings.xml
│ │ ├── values-fa/
│ │ │ └── strings.xml
│ │ ├── values-fr/
│ │ │ └── strings.xml
│ │ ├── values-ja/
│ │ │ └── strings.xml
│ │ ├── values-ko/
│ │ │ └── strings.xml
│ │ ├── values-night/
│ │ │ └── colors.xml
│ │ ├── values-ru/
│ │ │ └── strings.xml
│ │ ├── values-tr/
│ │ │ └── strings.xml
│ │ ├── values-uk/
│ │ │ └── strings.xml
│ │ ├── values-v29/
│ │ │ └── styles.xml
│ │ ├── values-zh-rCN/
│ │ │ └── strings.xml
│ │ └── values-zh-rTW/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── plugin/
│ └── PluginOptionsTest.kt
├── privacy_policy.md
├── release.sh
├── repositories.gradle.kts
├── settings.gradle.kts
├── test-e2e.sh
├── translate.py
└── tv/
├── .gitignore
├── build.gradle.kts
├── google-services.json
└── src/
├── freedom/
│ └── res/
│ └── values/
│ └── styles.xml
└── main/
├── AndroidManifest.xml
├── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── tv/
│ ├── App.kt
│ ├── MainActivity.kt
│ ├── MainFragment.kt
│ ├── MainPreferenceFragment.kt
│ ├── ProfilesDialogFragment.kt
│ └── preference/
│ └── LeanbackSingleListPreferenceDialogFragment.kt
└── res/
├── layout/
│ ├── activity_main.xml
│ └── leanback_list_preference_item_single_2.xml
├── values/
│ └── styles.xml
└── xml/
└── pref_main.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .circleci/config.yml
================================================
version: 2.1
orbs:
android: circleci/android@2.3.0
jobs:
build:
executor:
name: android/android-docker
tag: 2025.04.1-ndk
resource-class: large
environment:
GRADLE_OPTS: -Dorg.gradle.workers.max=1 -Dorg.gradle.daemon=false -Dkotlin.compiler.execution.strategy="in-process"
RUST_VERSION: 1.86.0
steps:
- checkout
- run: git submodule update --init --recursive
- run: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain $RUST_VERSION -y
- run:
name: Update environment variables
command: |
echo 'export PATH="$HOME"/.cargo/bin:"$PATH"' >> "$BASH_ENV"
- run: rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
- android/restore-gradle-cache
- run:
name: Run Build and Tests
command: ./gradlew assembleDebug check -PCARGO_PROFILE=debug
- android/save-gradle-cache
- store_artifacts:
path: mobile/build/outputs/apk
destination: apk/mobile
- store_artifacts:
path: tv/build/outputs/apk
destination: apk/tv
- store_artifacts:
path: core/build/reports
destination: reports/core
- store_artifacts:
path: mobile/build/reports
destination: reports/mobile
- store_artifacts:
path: plugin/build/reports
destination: reports/plugin
- store_artifacts:
path: tv/build/reports
destination: reports/tv
workflows:
test:
jobs:
- build
================================================
FILE: .github/FUNDING.yml
================================================
github: [Mygod]
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
Please read contributing guidelines. Thanks.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Smartphone (please complete the following information):**
- Android/Chrome OS version: [e.g. "7.0.0_r14" or "71.0.3578.94 (32-bit)", more detailed description is preferred]
- Device: [e.g. Google Pixel XL]
- Version: [e.g. version code "v3.0.0" or commit ID "a073f85"]
- Last version that did not exhibit the issue: [not applicable]
**Configuration**
Put an `x` inside the [ ] that applies.
* [ ] IPv4 server address
* [ ] IPv6 server address
* [ ] Client IPv4 availability
* [ ] Client IPv6 availability
* Encrypt method:
* Route
* [ ] All
* [ ] Bypass LAN
* [ ] Bypass China
* [ ] Bypass LAN & China
* [ ] GFW List
* [ ] China List
* [ ] Custom rules
* [ ] IPv6 route
* [ ] Apps VPN mode
* [ ] Bypass mode
* Remote DNS: 8.8.8.8
* [ ] DNS over UDP
* Plugin configuration (if applicable):
* [ ] Auto Connect
* [ ] TCP Fast Open
* If you're not using VPN mode, please supply more details here:
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
Please read contributing guidelines. Thanks.
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/questions-support-requests-other.md
================================================
---
name: Questions/Support requests/Other
about: You should probably use the forum
title: ''
labels: question
assignees: ''
---
Please use the forum at https://discourse.shadowsocks.org/c/implementations/shadowsocks-android instead. Your issue will probably be closed.
================================================
FILE: .github/doc-json.md
================================================
# Documentation for JSON format
shadowsocks-android accepts processing Shadowsocks configs through JSON files.
This documentation is targeted towards Shadowsocks server maintainers, who might need to distribute server configs through subscription JSON files, which is supported since [v5.0.0](https://github.com/shadowsocks/shadowsocks-android/releases/tag/v5.0.0).
## `Profile` JSON object
In general, shadowsocks-android respects [the specification at shadowsocks.org](https://shadowsocks.org/en/config/quick-guide.html).
A JSON object is recognized as a `Profile` (i.e. a valid server config), if all of the following required fields are present and valid:
* `server`
* `server_port`
* `password`
* `method`
These fields have the same meaning as specified by shadowsocks.org.
The specification at shadowsocks.org additionally specifies two additional fields, which is not used by shadowsocks-android:
* `local_port`: This field is configured globally through "SOCKS5 proxy port".
* `timeout`: This field is hardcoded to 600 in shadowsocks-android (however, it is only used as a write timeout, so long idle connections like GMS heartbeat are allowed).
Additionally, shadowsocks-android accepts the following optional fields:
* `plugin`: shadowsocks-android plugin ID or [alias](https://github.com/shadowsocks/shadowsocks-android/pull/2431).
* `plugin_opts`: Plugin options [as specified in shadowsocks.org](https://shadowsocks.org/en/spec/Plugin.html).
* `remarks`: "Profile Name". (also used by [shadowsocks-windows](https://github.com/shadowsocks/shadowsocks-windows))
* `udp_fallback`: "UDP Fallback", should be a `Profile` JSON object or null.
The following optional fields are "Feature Settings" in shadowsocks-android, if omitted, their values will be copied from currently selected profile:
* `route`: "Route", should be one of `all`, `bypass-lan`, `bypass-china`, `bypass-lan-china`, `gfwlist`, `china-list`, `custom-rules`.
* `ipv6`: "IPv6 Route", Boolean.
* `proxy_apps`: "Apps VPN mode", is a JSON object with the following fields:
- `enabled`: Boolean.
- `bypass`: Boolean, whether the app specified should be bypassed or proxied.
- `android_list`: An array of strings, specifying a list of Android app [package names](https://developer.android.com/studio/build/application-id).
* `udpdns`: "Send DNS over UDP", Boolean.
`Profile` objects can have additional fields, which will be ignored by shadowsocks-android.
## Parsing/Importing JSON
shadowsocks-android imports JSON using the following logic, which should support all reasonable formats of JSON files containing `Profile`s, including `gui-config.json` used by shadowsocks-windows.
1. On input a JSON file, try to recognize it as a `Profile`.
2. If input is an object and all the required fields of a `Profile` is present, return the parsed `Profile`.
3. Otherwise if input is an object, recursively search for `Profile`s in each field and return all found `Profile`s.
4. Otherwise if input is an array, recursively search for `Profile`s for each element and return all found `Profile`s.
5. Conclude that there is no `Profile` in input.
In general, subscription JSON file can be in any structure, as long as they contain the `Profile` JSON objects recognized by the above procedure.
## Exporting JSON
The easiest way to write JSON files is to configure them in shadowsocks-android and export the JSON file using the app.
The output will be a JSON file consisting of a JSON array with all the `Profile`s.
## Subscription update behavior
In shadowsocks-android, `Profile` is indexed by the triple `(server, server_port, remarks)`.
If two `Profile`s share the exact same triple, they will be treated as the exact same `Profile`, despite possibly having different plugins, passwords, or even encryption methods.
When doing subscription updates,
* If an old `Profile` shares the same triple as a new `Profile`, the following field in the old `Profile` will be updated: `password`, `method`, `plugin`, `plugin_opts`, `udp_fallback`.
This ensures that user configured feature settings and traffic stats are preserved.
* If two `Profile` across all the subscriptions share the exact same triple, the behavior is undefined.
Please avoid this if possible.
## Appendix: Sample exported JSON file
```json
[
{
"server": "198.199.101.152",
"server_port": 8388,
"password": "u1rRWTssNv0p",
"method": "aes-256-cfb",
"remarks": "Example 1"
},
{
"server": "198.199.101.12",
"server_port": 8388,
"password": "u1rRWTssNv0p",
"method": "aes-256-cfb",
"plugin": "v2ray",
"plugin_opts": "host=www.example.com",
"remarks": "Example 2",
"route": "bypass-lan-china",
"remote_dns": "dns.google",
"ipv6": true,
"metered": false,
"proxy_apps": {
"enabled": true,
"bypass": true,
"android_list": [
"com.eg.android.AlipayGphone",
"com.wudaokou.hippo",
"com.zhihu.android"
]
},
"udpdns": false
}
]
```
================================================
FILE: .github/faq.md
================================================
### Troubleshooting
Cannot connect to server:
1. Stop battery saver if it's active;
2. Check your config;
3. Wipe app data.
Crash: [Submit an issue](https://github.com/shadowsocks/shadowsocks-android/issues/new) with logcat attached, or submit a crash report to Google Play. Then, try wiping app data.
### How to create a widget and/or switch profile based on network connectivity?
Use [Tasker](http://tasker.dinglisch.net/) integration.
### Why is NAT mode deprecated?
1. Requiring ROOT permission;
2. No IPv6 support;
3. No UDP relay support.
### How to remove the exclamation mark when using VPN mode?
The exclamation mark in the Wi-Fi/cellular icon appears because the system fails to connect to portal server (defaults to `clients3.google.com`) without VPN connection. To remove it, follow the instructions in [this article](https://www.noisyfox.cn/45.html). (in Simplified Chinese)
### Why is my ROM not supported?
1. Some ROM has broken VPNService implementation, especially for IPv6;
2. Some ROM has aggressive (or called broken) background service killing policy;
3. Some ROM like [Flyme](https://github.com/shadowsocks/shadowsocks-android/issues/1821) is basically broken **in every way possible**;
4. If you have Xposed framework and/or battery saver apps, it's likely that this app wouldn't work well with these either.
* Fixes for MIUI: [#772](https://github.com/shadowsocks/shadowsocks-android/issues/772)
* Fixes for EMUI: [#888](https://github.com/shadowsocks/shadowsocks-android/issues/888)
* Fixes for Huawei: [#1091 (comment)](https://github.com/shadowsocks/shadowsocks-android/issues/1091#issuecomment-276949836)
* Related to Xposed: [#1414](https://github.com/shadowsocks/shadowsocks-android/issues/1414)
* Samsung and/or Brevent: [#1410](https://github.com/shadowsocks/shadowsocks-android/issues/1410)
* Another Samsung: [#1712](https://github.com/shadowsocks/shadowsocks-android/issues/1712)
* Samsung with GMS: [#2138](https://github.com/shadowsocks/shadowsocks-android/issues/2138)
* Don't install this app on SD card because of permission issues: [#1124 (comment)](https://github.com/shadowsocks/shadowsocks-android/issues/1124#issuecomment-307556453)
* `INTERACT_ACROSS_USERS` permission missing: [#1184](https://github.com/shadowsocks/shadowsocks-android/issues/1184)
### How to pause Shadowsocks service?
* For Android 7.0+: Use quick switch tile in Quick Settings;
* Use Tasker integration;
* Add a profile with per-app proxy enabled for Shadowsocks only, bypass mode off.
### Why does Shadowsocks consume so much battery on Android 5.0+?
As Shadowsocks takes over the whole device network, any battery used by network activities from other apps are also counted as those from Shadowsocks. So, the battery usage of Shadowsocks equals to the sum of all the network activities of your device. Shadowsocks itself is a totally I/O bound application on modern Android devices, which is expected not to consume any notable battery.
So if you notice a significant increase in battery usage after you use Shadowsocks, it's most likely caused by other apps. For example, Google Play services can consume more battery after being able to connecting to Google, etc.
More details: https://kb.adguard.com/en/android/solving-problems/battery
### It works fine under Wi-Fi but can't connect through cellular data?
Allow this app to consume background data in app settings.
### How to use Transproxy mode?
1. Install [AFWall+](https://github.com/ukanth/afwall);
2. Set custom script:
```sh
IP6TABLES=/system/bin/ip6tables
IPTABLES=/system/bin/iptables
ULIMIT=/system/bin/ulimit
SHADOWSOCKS_UID=`dumpsys package com.github.shadowsocks | grep userId | cut -d= -f2 - | cut -d' ' -f1 -`
PORT_DNS=5450
PORT_TRANSPROXY=8200
$ULIMIT -n 4096
$IP6TABLES -F
$IP6TABLES -A INPUT -j DROP
$IP6TABLES -A OUTPUT -j DROP
$IPTABLES -t nat -F OUTPUT
$IPTABLES -t nat -A OUTPUT -o lo -j RETURN
$IPTABLES -t nat -A OUTPUT -d 127.0.0.1 -j RETURN
$IPTABLES -t nat -A OUTPUT -m owner --uid-owner $SHADOWSOCKS_UID -j RETURN
$IPTABLES -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:$PORT_DNS
$IPTABLES -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:$PORT_DNS
$IPTABLES -t nat -A OUTPUT -p tcp -j DNAT --to-destination 127.0.0.1:$PORT_TRANSPROXY
$IPTABLES -t nat -A OUTPUT -p udp -j DNAT --to-destination 127.0.0.1:$PORT_TRANSPROXY
```
3. Set custom shutdown script:
```sh
IP6TABLES=/system/bin/ip6tables
IPTABLES=/system/bin/iptables
$IPTABLES -t nat -F OUTPUT
$IP6TABLES -F
```
4. Make sure to allow traffic for Shadowsocks;
5. Start Shadowsocks transproxy service and enable firewall.
================================================
FILE: .github/faq.ru.md
================================================
### Решение проблем
Не получается подключиться к серверу:
1. Выключите режим энергосбережения, если он активен;
2. Проверьте настройки;
3. Сотрите данные приложения.
Не работает: [Добавьте отчет](https://github.com/shadowsocks/shadowsocks-android/issues/new) прикрепив лог (logcat), или отправьте отзыв в Google Play. Затем попробуйте стереть данные приложения.
### Как добавить виджет и/или переключать профиль на основании состояния сети?
Использйте интеграцию с [Tasker](http://tasker.dinglisch.net/).
### Почему режим NAT более не поддерживается?
1. Требуются ROOT права;
2. Нет поддержки IPv6;
3. Нет поддержки UDP relay.
### Как убрать восклицательный знак когда используется режим VPN?
Восклицательный знак на значке Wi-Fi/Сотовой связи появляется, потому что система не может подключиться к portal-серверу (по-умолчанию к `clients3.google.com`) без VPN подключения. Чтобы убрать его, следуйте инструкциям в [этом топике](https://www.noisyfox.cn/45.html). (на упрощенном китайском)
### Почему мой ROM не поддерживается?
1. Некоторые ROM используют неправильную реализацию службы VPN, особенно IPv6;
2. Некоторые ROM используют агрессивную (или так называемую испорченную) неправильную политику остановки фоновых служб;
3. Некоторые ROM, такие как [Flyme](https://github.com/shadowsocks/shadowsocks-android/issues/1821) просто не работают **в любом случае**;
4. Если вы используете фреймворк Xposed и/или приложения для энергосбережения, вероятно наше приложение не будет нормально работать с ними.
* Исправления для MIUI: [#772](https://github.com/shadowsocks/shadowsocks-android/issues/772)
* Исправления для EMUI: [#888](https://github.com/shadowsocks/shadowsocks-android/issues/888)
* Иправления для Huawei: [#1091 (комментарий)](https://github.com/shadowsocks/shadowsocks-android/issues/1091#issuecomment-276949836)
* Связанные с Xposed: [#1414](https://github.com/shadowsocks/shadowsocks-android/issues/1414)
* Samsung и/или Brevent: [#1410](https://github.com/shadowsocks/shadowsocks-android/issues/1410)
* Ещё Samsung: [#1712](https://github.com/shadowsocks/shadowsocks-android/issues/1712)
* Не устанавливайте это приложение на SD карту, из-за проблем с разрешениями: [#1124 (комментарий)](https://github.com/shadowsocks/shadowsocks-android/issues/1124#issuecomment-307556453)
* Отсутствует разрешение `INTERACT_ACROSS_USERS`: [#1184](https://github.com/shadowsocks/shadowsocks-android/issues/1184)
### Как приостановить службу Shadowsocks?
* Для Android 7.0+: Используйте переключатель в быстрых настройках;
* Используйте интеграцию с Tasker;
* Добавьте профиль c выбранными приложениями, которые будут работать через Shadowsocks прокси, выключив обходной режим.
### Почему Shadowsocks потребляет так много энергии на Android 5.0+?
Так как Shadowsocks работает со всем траффиком устройства, заряд батареи используемый другими приложениями также считается за тот, что использует Shadowsocks. Таким образом использование батареи Shadowsocks'ом равен сумме всей активности устройства в сети. Shadowsocks сам по себе в общем-то является приложением связанного процесса ввода/вывода на современных Android устройствах, которое, ожидаемо, не потребляет значительного количества энергии.
Так что если вы заметите значительное увеличение потребляемой энергии после того, как вы использовали Shadowsocks, это скорее всего вызванно другими приложениями. Например, сервисы Google Play могут потреблять больше энергии после того, как смогут подключиться к Google, и т.д.
Больше информации: https://kb.adguard.com/en/android/solving-problems/battery
### Оно прекрасно работает при Wi-Fi но не может подключиться через сотовую связь?
Разрешите этому приложению передачу данных в фоновом режиме в настройках приложения.
Если у вас оперератор Yota, то увы, но они запрещают P2P-траффик, коим является (или просто определяется фильтрами оператора как P2P-траффик) Shadowsocks. Оператор не будет предпринимать никаких действий для решения данной проблемы.
### Как использовать режим Transproxy (прозрачный прокси)?
1. Установите [AFWall+](https://github.com/ukanth/afwall);
2. Настройте пользовательский скрипт:
```sh
IP6TABLES=/system/bin/ip6tables
IPTABLES=/system/bin/iptables
ULIMIT=/system/bin/ulimit
SHADOWSOCKS_UID=`dumpsys package com.github.shadowsocks | grep userId | cut -d= -f2 - | cut -d' ' -f1 -`
PORT_DNS=5450
PORT_TRANSPROXY=8200
$ULIMIT -n 4096
$IP6TABLES -F
$IP6TABLES -A INPUT -j DROP
$IP6TABLES -A OUTPUT -j DROP
$IPTABLES -t nat -F OUTPUT
$IPTABLES -t nat -A OUTPUT -o lo -j RETURN
$IPTABLES -t nat -A OUTPUT -d 127.0.0.1 -j RETURN
$IPTABLES -t nat -A OUTPUT -m owner --uid-owner $SHADOWSOCKS_UID -j RETURN
$IPTABLES -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:$PORT_DNS
$IPTABLES -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:$PORT_DNS
$IPTABLES -t nat -A OUTPUT -p tcp -j DNAT --to-destination 127.0.0.1:$PORT_TRANSPROXY
$IPTABLES -t nat -A OUTPUT -p udp -j DNAT --to-destination 127.0.0.1:$PORT_TRANSPROXY
```
3. Настройте пользовательский скрипт отключения:
```sh
IP6TABLES=/system/bin/ip6tables
IPTABLES=/system/bin/iptables
$IPTABLES -t nat -F OUTPUT
$IP6TABLES -F
```
4. Убедитесь, что траффик для Shadowsocks разрешен;
5. Запустите службу прозрачного прокси (transproxy) в Shadowsocks и включите брандмауэр.
================================================
FILE: .github/workflows/e2e-test.yml
================================================
name: E2E Test
on:
push:
branches: [master]
pull_request:
workflow_dispatch:
jobs:
e2e-test:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/setup-java@v4
with:
distribution: jetbrains
java-version: 21
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-linux-android
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Gradle cache
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('**/*.gradle*', 'gradle/wrapper/gradle-wrapper.properties') }}
- name: Cargo cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
core/src/main/rust/shadowsocks-rust/target
key: cargo-${{ hashFiles('core/src/main/rust/shadowsocks-rust/Cargo.lock') }}
- name: Build debug APK (x86_64)
run: ./gradlew assembleDebug -PCARGO_PROFILE=debug -PTARGET_ABI=x86_64
- name: Build ssserver
run: |
cd core/src/main/rust/shadowsocks-rust
cargo build --release --bin ssserver --features "server,aead-cipher,logging"
- name: E2E Test
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: 34
target: google_apis
arch: x86_64
force-avd-creation: true
emulator-options: >-
-no-snapshot-save -no-window -gpu swiftshader_indirect
-noaudio -no-boot-anim
disable-animations: true
script: bash test-e2e.sh
env:
SKIP_EMULATOR_BOOT: "true"
ADB: adb
APK: ${{ github.workspace }}/mobile/build/outputs/apk/debug/mobile-x86_64-debug.apk
SSSERVER: ${{ github.workspace }}/core/src/main/rust/shadowsocks-rust/target/release/ssserver
- name: Upload screenshots
uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-screenshots
path: screen_*.png
================================================
FILE: .gitignore
================================================
# Gradle & Android Studio
local.properties
.gradle/
.externalNativeBuild/
build/
captures/
release/
.idea/
*.iml
# release apks
*.apk
.DS_Store
================================================
FILE: .gitmodules
================================================
[submodule "core/src/main/jni/badvpn"]
path = core/src/main/jni/badvpn
url = https://github.com/shadowsocks/badvpn.git
branch = shadowsocks-android
[submodule "core/src/main/jni/libancillary"]
path = core/src/main/jni/libancillary
url = https://github.com/shadowsocks/libancillary.git
branch = shadowsocks-android
[submodule "core/src/main/jni/libevent"]
path = core/src/main/jni/libevent
url = https://github.com/shadowsocks/libevent.git
branch = shadowsocks-android
[submodule "core/src/main/jni/redsocks"]
path = core/src/main/jni/redsocks
url = https://github.com/shadowsocks/redsocks.git
branch = shadowsocks-android
[submodule "core/src/main/rust/shadowsocks-rust"]
path = core/src/main/rust/shadowsocks-rust
url = https://github.com/shadowsocks/shadowsocks-rust.git
================================================
FILE: .travis.yml
================================================
sudo: required
addons:
artifacts: true
services:
- docker
before_install:
- docker pull circleci/android:api-28-ndk
- chmod -R a+wrx .
script:
- docker run --rm -v ${PWD}:/build circleci/android:api-28-ndk bash -c "cd /build; ./gradlew assembleDebug check"
================================================
FILE: AUTHORS
================================================
Shadowsocks-android was originally created in late 2013, by
Max Lv <max.c.lv@gmail.com>.
Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
people who have submitted patches, fixed bugs, added translations, and
generally made shadowsocks-android that much better:
https://github.com/shadowsocks/shadowsocks-android/graphs/contributors
================================================
FILE: CONTRIBUTING.md
================================================
# Submitting Issues
* Issues can be submitted in two different places:
1) [The GitHub issue log](https://github.com/shadowsocks/shadowsocks-android/issues)
2) [The Shadowsocks.org Discourse Forum](https://discourse.shadowsocks.org/c/implementations/shadowsocks-android)
* Please search for your issues in both places before submitting new issues.
* If you have any questions, please check the [FAQ](https://github.com/shadowsocks/shadowsocks-android/blob/master/.github/faq.md) and the questions submitted at the [Discourse Forum](https://discourse.shadowsocks.org/c/implementations/shadowsocks-android).
* General discussions should go to the [Discourse Forum](https://discourse.shadowsocks.org/c/implementations/shadowsocks-android).
* Always provide information asked in the template unless you know what you're doing.
* Utilizing Logcat would also be helpful.
================================================
FILE: LICENSE
================================================
Copyright (C) 2017 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2017 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
================================================
FILE: README.md
================================================
## [Shadowsocks](https://shadowsocks.org) for Android
[](https://circleci.com/gh/shadowsocks/shadowsocks-android)
[](https://android-arsenal.com/api?level=23)
[](https://github.com/shadowsocks/shadowsocks-android/releases)
[](https://github.com/shadowsocks/shadowsocks-android/search?l=kotlin)
[](https://www.codacy.com/gh/shadowsocks/shadowsocks-android/dashboard?utm_source=github.com&utm_medium=referral&utm_content=shadowsocks/shadowsocks-android&utm_campaign=Badge_Grade)
[](https://www.gnu.org/licenses/gpl-3.0)
<a href="https://play.google.com/store/apps/details?id=com.github.shadowsocks"><img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" height="48"></a>
for Android & Chrome OS ([beta](https://play.google.com/apps/testing/com.github.shadowsocks))
<a href="https://play.google.com/store/apps/details?id=com.github.shadowsocks.tv"><img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" height="48"></a>
for Android TV ([beta](https://play.google.com/apps/testing/com.github.shadowsocks.tv))
### PREREQUISITES
* JDK 11+
* Android SDK
- Android NDK
* Rust with Android targets installed using `rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android`
### BUILD
You can check whether the latest commit builds under UNIX environment by checking Travis status.
* Install prerequisites
* Clone the repo using `git clone --recurse-submodules <repo>` or update submodules using `git submodule update --init --recursive`
* Build it using Android Studio or gradle script
### CONTRIBUTING
If you are interested in contributing or getting involved with this project, please read the CONTRIBUTING page for more information. The page can be found [here](https://github.com/shadowsocks/shadowsocks-android/blob/master/CONTRIBUTING.md).
### [TRANSLATE](https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30)
## OPEN SOURCE LICENSES
<ul>
<li>redsocks: <a href="https://github.com/shadowsocks/redsocks/blob/shadowsocks-android/README">APL 2.0</a></li>
<li>libevent: <a href="https://github.com/shadowsocks/libevent/blob/master/LICENSE">BSD</a></li>
<li>tun2socks: <a href="https://github.com/shadowsocks/badvpn/blob/shadowsocks-android/COPYING">BSD</a></li>
<li>shadowsocks-rust: <a href="https://github.com/shadowsocks/shadowsocks-rust/blob/master/LICENSE">MIT</a></li>
<li>libsodium: <a href="https://github.com/jedisct1/libsodium/blob/master/LICENSE">ISC</a></li>
<li>OpenSSL: <a href="https://www.openssl.org/source/license-openssl-ssleay.txt">OpenSSL License</a></li>
</ul>
### LICENSE
Copyright (C) 2017 by Max Lv <<max.c.lv@gmail.com>>
Copyright (C) 2017 by Mygod Studio <<contact-shadowsocks-android@mygod.be>>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
================================================
FILE: build.gradle.kts
================================================
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.versions)
alias(libs.plugins.ksp) apply false
}
buildscript {
apply(from = "repositories.gradle.kts")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath(libs.android.gradle)
classpath(libs.dokka)
classpath(libs.firebase.crashlytics.gradle)
classpath(libs.google.oss.licenses)
classpath(libs.google.services)
classpath(libs.gradle.maven.publish)
classpath(libs.kotlin.gradle)
classpath(libs.rust.android)
}
}
allprojects {
apply(from = "${rootProject.projectDir}/repositories.gradle.kts")
}
// skip uploading the mapping to Crashlytics
subprojects {
tasks.whenTaskAdded {
if (name.contains("uploadCrashlyticsMappingFile")) enabled = false
}
}
================================================
FILE: buildSrc/build.gradle.kts
================================================
plugins {
`kotlin-dsl`
}
apply(from = "../repositories.gradle.kts")
dependencies {
implementation(libs.android.gradle)
implementation(libs.kotlin.gradle)
}
================================================
FILE: buildSrc/settings.gradle.kts
================================================
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
================================================
FILE: buildSrc/src/main/kotlin/Helpers.kt
================================================
import com.android.build.api.dsl.CommonExtension
import com.android.build.gradle.BaseExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByName
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
private val Project.android get() = extensions.getByName<BaseExtension>("android")
private val BaseExtension.lint get() = (this as CommonExtension<*, *, *, *, *, *>).lint
val Project.currentFlavor get() = gradle.startParameter.taskNames.let { tasks ->
when {
tasks.any { it.contains("Release", ignoreCase = true) } -> "release"
tasks.any { it.contains("Debug", ignoreCase = true) } -> "debug"
else -> "debug".also {
println("Warning: No match found for $tasks")
}
}
}
fun Project.setupCommon() {
val javaVersion = JavaVersion.VERSION_11
android.apply {
compileSdkVersion(36)
defaultConfig {
minSdk = 23
targetSdk = 36
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
lint.apply {
warning += "ExtraTranslation"
warning += "ImpliedQuantity"
informational += "MissingQuantity"
informational += "MissingTranslation"
}
}
extensions.getByName<KotlinAndroidProjectExtension>("kotlin").compilerOptions.jvmTarget
.set(JvmTarget.fromTarget(javaVersion.toString()))
}
fun Project.setupCore() {
setupCommon()
android.apply {
defaultConfig {
versionCode = 5030550
versionName = "5.3.5-nightly"
}
compileOptions.isCoreLibraryDesugaringEnabled = true
lint.apply {
disable += "BadConfigurationProvider"
warning += "RestrictedApi"
disable += "UseAppTint"
}
buildFeatures.buildConfig = true
}
}
fun Project.setupApp() {
setupCore()
android.apply {
defaultConfig.resourceConfigurations.addAll(listOf(
"ar",
"de",
"es",
"fa",
"fr",
"ja",
"ko",
"ru",
"tr",
"uk",
"zh-rCN",
"zh-rTW",
))
buildTypes {
getByName("debug") {
isPseudoLocalesEnabled = true
packagingOptions.doNotStrip("**/libsslocal.so")
}
getByName("release") {
isShrinkResources = true
isMinifyEnabled = true
proguardFile(getDefaultProguardFile("proguard-android.txt"))
}
}
lint.disable += "RemoveWorkManagerInitializer"
packagingOptions.jniLibs.useLegacyPackaging = true
splits.abi {
isEnable = true
isUniversalApk = true
}
}
dependencies.add("implementation", project(":core"))
}
================================================
FILE: core/.gitignore
================================================
/build
/.cxx/
================================================
FILE: core/build.gradle.kts
================================================
import com.android.build.gradle.internal.tasks.factory.dependsOn
plugins {
id("com.android.library")
id("com.google.devtools.ksp")
id("org.mozilla.rust-android-gradle.rust-android")
kotlin("android")
id("kotlin-parcelize")
}
setupCore()
val allAbis = mapOf("arm" to "armeabi-v7a", "arm64" to "arm64-v8a", "x86" to "x86", "x86_64" to "x86_64")
val targetAbi = findProperty("TARGET_ABI")?.toString()
android {
namespace = "com.github.shadowsocks.core"
defaultConfig {
consumerProguardFiles("proguard-rules.pro")
externalNativeBuild.ndkBuild {
val abis = if (targetAbi != null) listOf(allAbis.getValue(targetAbi)) else allAbis.values.toList()
abiFilters(*abis.toTypedArray())
arguments("-j${Runtime.getRuntime().availableProcessors()}")
}
ksp {
arg("room.incremental", "true")
arg("room.schemaLocation", "$projectDir/schemas")
}
}
externalNativeBuild.ndkBuild.path("src/main/jni/Android.mk")
sourceSets.getByName("androidTest") {
assets.setSrcDirs(assets.srcDirs + files("$projectDir/schemas"))
}
buildFeatures.aidl = true
}
cargo {
module = "src/main/rust/shadowsocks-rust"
libname = "sslocal"
targets = if (targetAbi != null) listOf(targetAbi) else listOf("arm", "arm64", "x86", "x86_64")
profile = findProperty("CARGO_PROFILE")?.toString() ?: currentFlavor
extraCargoBuildArguments = listOf("--bin", libname!!)
featureSpec.noDefaultBut(arrayOf(
"stream-cipher",
"aead-cipher-extra",
"logging",
"local-flow-stat",
"local-dns",
"aead-cipher-2022",
))
exec = { spec, toolchain ->
run {
try {
Runtime.getRuntime().exec(arrayOf("python3", "-V"))
spec.environment("RUST_ANDROID_GRADLE_PYTHON_COMMAND", "python3")
project.logger.lifecycle("Python 3 detected.")
} catch (e: java.io.IOException) {
project.logger.lifecycle("No python 3 detected.")
try {
Runtime.getRuntime().exec(arrayOf("python", "-V"))
spec.environment("RUST_ANDROID_GRADLE_PYTHON_COMMAND", "python")
project.logger.lifecycle("Python detected.")
} catch (e: java.io.IOException) {
throw GradleException("No any python version detected. You should install the python first to compile project.")
}
}
// https://developer.android.com/guide/practices/page-sizes#other-build-systems
spec.environment("RUST_ANDROID_GRADLE_CC_LINK_ARG", "-Wl,-z,max-page-size=16384,-soname,lib$libname.so")
spec.environment("RUST_ANDROID_GRADLE_LINKER_WRAPPER_PY", "$projectDir/$module/../linker-wrapper.py")
spec.environment("RUST_ANDROID_GRADLE_TARGET", "target/${toolchain.target}/$profile/lib$libname.so")
}
}
}
tasks.whenTaskAdded {
when (name) {
"mergeDebugJniLibFolders", "mergeReleaseJniLibFolders" -> {
dependsOn("cargoBuild")
inputs.dir(layout.buildDirectory.dir("rustJniLibs/android"))
}
}
}
tasks.register<Exec>("cargoClean") {
executable("cargo") // cargo.cargoCommand
args("clean")
workingDir("$projectDir/${cargo.module}")
}
tasks.clean.dependsOn("cargoClean")
dependencies {
api(project(":plugin"))
api(libs.androidx.core.ktx)
api(libs.androidx.lifecycle.livedata.core.ktx)
api(libs.androidx.preference)
api(libs.androidx.room.runtime)
api(libs.androidx.work.multiprocess)
api(libs.androidx.work.runtime.ktx)
api(libs.dnsjava)
api(libs.firebase.analytics)
api(libs.firebase.crashlytics)
api(libs.kotlinx.coroutines.android)
api(libs.kotlinx.coroutines.play.services)
api(libs.material)
api(libs.play.services.oss.licenses)
api(libs.timber)
coreLibraryDesugaring(libs.desugar)
ksp(libs.androidx.room.compiler)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.junit.ktx)
androidTestImplementation(libs.androidx.room.testing)
androidTestImplementation(libs.androidx.test.runner)
}
================================================
FILE: core/gfwlist/gen.pl
================================================
#!/usr/bin/env perl
## ArchLinux install package via pacman: perl-net-cidr-lite
use strict;
use warnings;
use Net::CIDR::Lite;
my $cidr = Net::CIDR::Lite->new;
while (my $line=<>) {
$cidr->add($line);
}
foreach my $line( @{$cidr->list} ) {
print "<item>$line</item>\n";
}
================================================
FILE: core/gfwlist/gen.py
================================================
#!/usr/bin/python
# -*- encoding: utf8 -*-
import sys
import IPy
def main():
china_list_set = IPy.IPSet()
for line in sys.stdin:
china_list_set.add(IPy.IP(line))
# 输出结果
for ip in china_list_set:
print '<item>' + str(ip) + '</item>'
if __name__ == "__main__":
main()
================================================
FILE: core/gfwlist/parse.py
================================================
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pkgutil
import urlparse
import socket
import logging
from argparse import ArgumentParser
from datetime import date
__all__ = ['main']
def parse_args():
parser = ArgumentParser()
parser.add_argument('-i', '--input', dest='input', required=True,
help='path to gfwlist', metavar='GFWLIST')
parser.add_argument('-f', '--file', dest='output', required=True,
help='path to output acl', metavar='ACL')
return parser.parse_args()
def decode_gfwlist(content):
# decode base64 if have to
try:
return content.decode('base64')
except:
return content
def get_hostname(something):
try:
# quite enough for GFW
if not something.startswith('http:'):
something = 'http://' + something
r = urlparse.urlparse(something)
return r.hostname
except Exception as e:
logging.error(e)
return None
def add_domain_to_set(s, something):
hostname = get_hostname(something)
if hostname is not None:
if hostname.startswith('.'):
hostname = hostname.lstrip('.')
if hostname.endswith('/'):
hostname = hostname.rstrip('/')
if hostname:
s.add(hostname)
def parse_gfwlist(content):
gfwlist = content.splitlines(False)
domains = set()
for line in gfwlist:
if line.find('.*') >= 0:
continue
elif line.find('*') >= 0:
line = line.replace('*', '/')
if line.startswith('!'):
continue
elif line.startswith('['):
continue
elif line.startswith('@'):
# ignore white list
continue
elif line.startswith('||'):
add_domain_to_set(domains, line.lstrip('||'))
elif line.startswith('|'):
add_domain_to_set(domains, line.lstrip('|'))
elif line.startswith('.'):
add_domain_to_set(domains, line.lstrip('.'))
else:
add_domain_to_set(domains, line)
# TODO: reduce ['www.google.com', 'google.com'] to ['google.com']
return domains
def generate_acl(domains):
header ="""#
# GFW list from https://github.com/gfwlist/gfwlist/blob/master/gfwlist.txt
# updated on DATE
#
[bypass_all]
[proxy_list]
"""
header = header.replace('DATE', str(date.today()))
proxy_content = ""
ip_content = ""
for domain in sorted(domains):
try:
socket.inet_aton(domain)
ip_content += (domain + "\n")
except socket.error:
domain = domain.replace('.', '\.')
proxy_content += ('(?:^|\.)' + domain + '$\n')
proxy_content = header + ip_content + proxy_content
return proxy_content
def main():
args = parse_args()
with open(args.input, 'rb') as f:
content = f.read()
content = decode_gfwlist(content)
domains = parse_gfwlist(content)
acl_content = generate_acl(domains)
with open(args.output, 'wb') as f:
f.write(acl_content)
if __name__ == '__main__':
main()
================================================
FILE: core/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
-keepattributes SourceFile,LineNumberTable
-dontobfuscate
-dontwarn lombok.Generated
-dontwarn org.slf4j.impl.StaticLoggerBinder
-dontwarn org.xbill.DNS.spi.DnsjavaInetAddressResolverProvider
-dontwarn sun.net.spi.nameservice.NameServiceDescriptor
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
================================================
FILE: core/schemas/com.github.shadowsocks.database.PrivateDatabase/26.json
================================================
{
"formatVersion": 1,
"database": {
"version": 26,
"identityHash": "a69accf94393d71abdb60873d4ea74a2",
"entities": [
{
"tableName": "Profile",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `host` TEXT NOT NULL, `remotePort` INTEGER NOT NULL, `password` TEXT NOT NULL, `method` TEXT NOT NULL, `route` TEXT NOT NULL, `remoteDns` TEXT NOT NULL, `proxyApps` INTEGER NOT NULL, `bypass` INTEGER NOT NULL, `udpdns` INTEGER NOT NULL, `ipv6` INTEGER NOT NULL, `individual` TEXT NOT NULL, `tx` INTEGER NOT NULL, `rx` INTEGER NOT NULL, `userOrder` INTEGER NOT NULL, `plugin` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remotePort",
"columnName": "remotePort",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "method",
"columnName": "method",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "route",
"columnName": "route",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remoteDns",
"columnName": "remoteDns",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "proxyApps",
"columnName": "proxyApps",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "bypass",
"columnName": "bypass",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "udpdns",
"columnName": "udpdns",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ipv6",
"columnName": "ipv6",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "individual",
"columnName": "individual",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "tx",
"columnName": "tx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "rx",
"columnName": "rx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "userOrder",
"columnName": "userOrder",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "plugin",
"columnName": "plugin",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "KeyValuePair",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))",
"fields": [
{
"fieldPath": "key",
"columnName": "key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "valueType",
"columnName": "valueType",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "value",
"columnName": "value",
"affinity": "BLOB",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"key"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"a69accf94393d71abdb60873d4ea74a2\")"
]
}
}
================================================
FILE: core/schemas/com.github.shadowsocks.database.PrivateDatabase/27.json
================================================
{
"formatVersion": 1,
"database": {
"version": 27,
"identityHash": "8743c2e56bdbdabca7fcb89dff5434ba",
"entities": [
{
"tableName": "Profile",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `host` TEXT NOT NULL, `remotePort` INTEGER NOT NULL, `password` TEXT NOT NULL, `method` TEXT NOT NULL, `route` TEXT NOT NULL, `remoteDns` TEXT NOT NULL, `proxyApps` INTEGER NOT NULL, `bypass` INTEGER NOT NULL, `udpdns` INTEGER NOT NULL, `ipv6` INTEGER NOT NULL, `individual` TEXT NOT NULL, `tx` INTEGER NOT NULL, `rx` INTEGER NOT NULL, `userOrder` INTEGER NOT NULL, `plugin` TEXT, `udpFallback` INTEGER)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remotePort",
"columnName": "remotePort",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "method",
"columnName": "method",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "route",
"columnName": "route",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remoteDns",
"columnName": "remoteDns",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "proxyApps",
"columnName": "proxyApps",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "bypass",
"columnName": "bypass",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "udpdns",
"columnName": "udpdns",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ipv6",
"columnName": "ipv6",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "individual",
"columnName": "individual",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "tx",
"columnName": "tx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "rx",
"columnName": "rx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "userOrder",
"columnName": "userOrder",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "plugin",
"columnName": "plugin",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "udpFallback",
"columnName": "udpFallback",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "KeyValuePair",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))",
"fields": [
{
"fieldPath": "key",
"columnName": "key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "valueType",
"columnName": "valueType",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "value",
"columnName": "value",
"affinity": "BLOB",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"key"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"8743c2e56bdbdabca7fcb89dff5434ba\")"
]
}
}
================================================
FILE: core/schemas/com.github.shadowsocks.database.PrivateDatabase/28.json
================================================
{
"formatVersion": 1,
"database": {
"version": 28,
"identityHash": "b60ecca4d684ffe73173478bffd50a17",
"entities": [
{
"tableName": "Profile",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `host` TEXT NOT NULL, `remotePort` INTEGER NOT NULL, `password` TEXT NOT NULL, `method` TEXT NOT NULL, `route` TEXT NOT NULL, `remoteDns` TEXT NOT NULL, `proxyApps` INTEGER NOT NULL, `bypass` INTEGER NOT NULL, `udpdns` INTEGER NOT NULL, `ipv6` INTEGER NOT NULL, `metered` INTEGER NOT NULL, `individual` TEXT NOT NULL, `tx` INTEGER NOT NULL, `rx` INTEGER NOT NULL, `userOrder` INTEGER NOT NULL, `plugin` TEXT, `udpFallback` INTEGER)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remotePort",
"columnName": "remotePort",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "method",
"columnName": "method",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "route",
"columnName": "route",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remoteDns",
"columnName": "remoteDns",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "proxyApps",
"columnName": "proxyApps",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "bypass",
"columnName": "bypass",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "udpdns",
"columnName": "udpdns",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ipv6",
"columnName": "ipv6",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "metered",
"columnName": "metered",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "individual",
"columnName": "individual",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "tx",
"columnName": "tx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "rx",
"columnName": "rx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "userOrder",
"columnName": "userOrder",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "plugin",
"columnName": "plugin",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "udpFallback",
"columnName": "udpFallback",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "KeyValuePair",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))",
"fields": [
{
"fieldPath": "key",
"columnName": "key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "valueType",
"columnName": "valueType",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "value",
"columnName": "value",
"affinity": "BLOB",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"key"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"b60ecca4d684ffe73173478bffd50a17\")"
]
}
}
================================================
FILE: core/schemas/com.github.shadowsocks.database.PrivateDatabase/29.json
================================================
{
"formatVersion": 1,
"database": {
"version": 29,
"identityHash": "5b5c55a1277c63e14416316f9198ed43",
"entities": [
{
"tableName": "Profile",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT, `host` TEXT NOT NULL, `remotePort` INTEGER NOT NULL, `password` TEXT NOT NULL, `method` TEXT NOT NULL, `route` TEXT NOT NULL, `remoteDns` TEXT NOT NULL, `proxyApps` INTEGER NOT NULL, `bypass` INTEGER NOT NULL, `udpdns` INTEGER NOT NULL, `ipv6` INTEGER NOT NULL, `metered` INTEGER NOT NULL, `individual` TEXT NOT NULL, `plugin` TEXT, `udpFallback` INTEGER, `subscription` INTEGER NOT NULL, `tx` INTEGER NOT NULL, `rx` INTEGER NOT NULL, `userOrder` INTEGER NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remotePort",
"columnName": "remotePort",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "method",
"columnName": "method",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "route",
"columnName": "route",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "remoteDns",
"columnName": "remoteDns",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "proxyApps",
"columnName": "proxyApps",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "bypass",
"columnName": "bypass",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "udpdns",
"columnName": "udpdns",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ipv6",
"columnName": "ipv6",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "metered",
"columnName": "metered",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "individual",
"columnName": "individual",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "plugin",
"columnName": "plugin",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "udpFallback",
"columnName": "udpFallback",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "subscription",
"columnName": "subscription",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "tx",
"columnName": "tx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "rx",
"columnName": "rx",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "userOrder",
"columnName": "userOrder",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "KeyValuePair",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))",
"fields": [
{
"fieldPath": "key",
"columnName": "key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "valueType",
"columnName": "valueType",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "value",
"columnName": "value",
"affinity": "BLOB",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"key"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '5b5c55a1277c63e14416316f9198ed43')"
]
}
}
================================================
FILE: core/schemas/com.github.shadowsocks.database.PublicDatabase/3.json
================================================
{
"formatVersion": 1,
"database": {
"version": 3,
"identityHash": "f1aab1fb633378621635c344dbc8ac7b",
"entities": [
{
"tableName": "KeyValuePair",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))",
"fields": [
{
"fieldPath": "key",
"columnName": "key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "valueType",
"columnName": "valueType",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "value",
"columnName": "value",
"affinity": "BLOB",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"key"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"f1aab1fb633378621635c344dbc8ac7b\")"
]
}
}
================================================
FILE: core/src/androidTest/java/com/github/shadowsocks/acl/AclTest.kt
================================================
/*******************************************************************************
* *
* Copyright (C) 2017 by Max Lv <max.c.lv@gmail.com> *
* Copyright (C) 2017 by Mygod Studio <contact-shadowsocks-android@mygod.be> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
package com.github.shadowsocks.acl
import org.junit.Assert
import org.junit.Test
class AclTest {
companion object {
const val BYPASS_BASE = """[bypass_all]
[proxy_list]"""
const val INPUT1 = """$BYPASS_BASE
1.0.1.0/24
2000::/8
(?:^|\.)4tern\.com$
"""
const val INPUT2 = """[proxy_all]
[bypass_list]
10.3.0.0/16
10.0.0.0/8
(?:^|\.)chrome\.com$
[proxy_list]
# ignored
0.0.0.0/0
(?:^|\.)about\.google$
"""
}
@Test
fun parse() {
Assert.assertEquals(INPUT1, Acl().fromReader(INPUT1.reader()).toString())
Assert.assertEquals(INPUT2, Acl().fromReader(INPUT2.reader()).toString())
}
}
================================================
FILE: core/src/androidTest/java/com/github/shadowsocks/database/MigrationTest.kt
================================================
/*******************************************************************************
* *
* Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com> *
* Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
package com.github.shadowsocks.database
import androidx.room.testing.MigrationTestHelper
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import java.io.IOException
@RunWith(AndroidJUnit4::class)
class MigrationTest {
companion object {
private const val TEST_DB = "migration-test"
}
@get:Rule
val privateDatabase = MigrationTestHelper(InstrumentationRegistry.getInstrumentation(),
PrivateDatabase::class.java.canonicalName, FrameworkSQLiteOpenHelperFactory())
@Test
@Throws(IOException::class)
fun migrate27() {
val db = privateDatabase.createDatabase(TEST_DB, 26)
db.close()
privateDatabase.runMigrationsAndValidate(TEST_DB, 27, true, PrivateDatabase.Migration27)
}
@Test
@Throws(IOException::class)
fun migrate28() {
val db = privateDatabase.createDatabase(TEST_DB, 27)
db.close()
privateDatabase.runMigrationsAndValidate(TEST_DB, 28, true, PrivateDatabase.Migration28)
}
}
================================================
FILE: core/src/androidTest/java/com/github/shadowsocks/database/ProfileTest.kt
================================================
/*******************************************************************************
* *
* Copyright (C) 2017 by Max Lv <max.c.lv@gmail.com> *
* Copyright (C) 2017 by Mygod Studio <contact-shadowsocks-android@mygod.be> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
package com.github.shadowsocks.database
import androidx.core.net.toUri
import org.junit.Assert
import org.junit.Test
class ProfileTest {
@Test
fun parsing() {
val results = Profile.findAllUrls("garble ss://YmYtY2ZiOnRlc3RAMTkyLjE2OC4xMDAuMTo4ODg4#example-server garble")
.toList()
Assert.assertEquals(1, results.size)
Assert.assertEquals("ss://YmYtY2ZiOnRlc3Q@192.168.100.1:8888#example-server".toUri(),
results.single().toUri())
}
}
================================================
FILE: core/src/androidTest/java/com/github/shadowsocks/net/SubnetTest.kt
================================================
package com.github.shadowsocks.net
import android.net.InetAddresses.parseNumericAddress
import org.junit.Assert
import org.junit.Test
import java.net.InetAddress
class SubnetTest {
@Test
fun parsingAndEquals() {
Assert.assertEquals(Subnet(InetAddress.getByName("1.10.11.12"), 25), Subnet.fromString("1.10.11.12/25"))
Assert.assertEquals(Subnet(InetAddress.getByName("12.118.130.86"), 32), Subnet.fromString("12.118.130.86"))
Assert.assertEquals(Subnet(InetAddress.getByName("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78"), 96),
Subnet.fromString("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78/96"))
Assert.assertEquals(Subnet(InetAddress.getByName("be37:44bd:8630:7a0:2a3d:ff95:dd33:42f0"), 128),
Subnet.fromString("be37:44bd:8630:7a0:2a3d:ff95:dd33:42f0"))
Assert.assertNotEquals(Subnet.fromString("1.2.3.4/12"), Subnet.fromString("1.2.3.5/12"))
}
@Test
fun invalidParsings() {
Assert.assertEquals(null, Subnet.fromString("1.2.3.456"))
Assert.assertEquals(null, Subnet.fromString("ffff::f0000"))
Assert.assertEquals(null, Subnet.fromString("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78/129"))
Assert.assertEquals(null, Subnet.fromString("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78/129"))
Assert.assertEquals(null, Subnet.fromString("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78/-99"))
Assert.assertEquals(null, Subnet.fromString("caec:cec6:c4ef:bb7b:1a78:d055:216d:3a78/1/0"))
}
@Test
fun matching1() {
val matcher = Subnet.fromString("1.10.11.12/25")!!.toImmutable()
Assert.assertFalse(matcher.matches(parseNumericAddress("1.10.10.12").address))
Assert.assertTrue(matcher.matches(parseNumericAddress("1.10.11.13").address))
Assert.assertFalse(matcher.matches(parseNumericAddress("1.10.11.212").address))
}
@Test
fun matching2() {
val matcher = Subnet.fromString("14.208.0.0/12")!!.toImmutable()
Assert.assertTrue(matcher.matches(parseNumericAddress("14.215.178.36").address))
Assert.assertTrue(matcher.matches(parseNumericAddress("14.215.178.37").address))
Assert.assertFalse(matcher.matches(parseNumericAddress("1.10.11.212").address))
}
}
================================================
FILE: core/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="internalOnly">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"/>
<queries>
<intent>
<action android:name="com.github.shadowsocks.plugin.ACTION_NATIVE_PLUGIN" />
</intent>
</queries>
<application
android:icon="@mipmap/ic_launcher"
android:allowBackup="true"
android:enableOnBackInvokedCallback="true"
android:extractNativeLibs="true"
android:fullBackupContent="@xml/backup_descriptor"
android:fullBackupOnly="true"
android:hasFragileUserData="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config"
android:banner="@mipmap/banner">
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
android:value="true" />
<meta-data android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAI_zVxZthz2HDuz9toTvkYvL0L5GA-OjeUIfBeXg"/>
<service
android:name="com.github.shadowsocks.bg.VpnService"
android:process=":bg"
android:directBootAware="true"
android:label="@string/app_name"
android:permission="android.permission.BIND_VPN_SERVICE"
android:foregroundServiceType="systemExempted"
android:exported="false"
tools:ignore="ForegroundServicePermission">
<intent-filter>
<action android:name="android.net.VpnService"/>
</intent-filter>
</service>
<service
android:name="com.github.shadowsocks.bg.TransproxyService"
android:process=":bg"
android:directBootAware="true"
android:foregroundServiceType="specialUse"
android:exported="false">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="Proxy service that handles incoming SOCKS5 and Transproxy traffic" />
</service>
<service
android:name="com.github.shadowsocks.bg.ProxyService"
android:process=":bg"
android:directBootAware="true"
android:foregroundServiceType="specialUse"
android:exported="false">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="Proxy service that handles incoming SOCKS5 traffic" />
</service>
<service
android:name="com.github.shadowsocks.subscription.SubscriptionService"
android:exported="false">
</service>
<activity
android:name="com.github.shadowsocks.UrlImportActivity"
android:theme="@style/Theme.Shadowsocks.Translucent"
android:exported="true"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="ss"/>
</intent-filter>
</activity>
<activity
android:name="com.github.shadowsocks.VpnRequestActivity"
android:theme="@style/Theme.Shadowsocks.Translucent"
android:exported="false"
android:excludeFromRecents="true"
android:taskAffinity=""/>
<receiver android:name="com.github.shadowsocks.BootReceiver"
android:process=":bg"
android:directBootAware="true"
android:exported="true"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
<activity android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
android:theme="@style/Theme.Shadowsocks.ActionBar"/>
<activity android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
android:theme="@style/Theme.Shadowsocks.ActionBar"/>
<service android:name="com.google.firebase.components.ComponentDiscoveryService"
android:directBootAware="true"/>
<provider android:name="com.google.firebase.provider.FirebaseInitProvider"
tools:node="remove"/>
<service android:name="androidx.room.MultiInstanceInvalidationService"
android:process=":bg"/>
</application>
</manifest>
================================================
FILE: core/src/main/aidl/com/github/shadowsocks/aidl/IShadowsocksService.aidl
================================================
package com.github.shadowsocks.aidl;
import com.github.shadowsocks.aidl.IShadowsocksServiceCallback;
interface IShadowsocksService {
int getState();
String getProfileName();
void registerCallback(in IShadowsocksServiceCallback cb);
void startListeningForBandwidth(in IShadowsocksServiceCallback cb, long timeout);
oneway void stopListeningForBandwidth(in IShadowsocksServiceCallback cb);
oneway void unregisterCallback(in IShadowsocksServiceCallback cb);
}
================================================
FILE: core/src/main/aidl/com/github/shadowsocks/aidl/IShadowsocksServiceCallback.aidl
================================================
package com.github.shadowsocks.aidl;
import com.github.shadowsocks.aidl.TrafficStats;
oneway interface IShadowsocksServiceCallback {
void stateChanged(int state, String profileName, String msg);
void trafficUpdated(long profileId, in TrafficStats stats);
// Traffic data has persisted to database, listener should refetch their data from database
void trafficPersisted(long profileId);
}
================================================
FILE: core/src/main/aidl/com/github/shadowsocks/aidl/TrafficStats.aidl
================================================
package com.github.shadowsocks.aidl;
parcelable TrafficStats;
================================================
FILE: core/src/main/assets/acl/bypass-china.acl
================================================
[proxy_all]
[bypass_list]
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.8.0/21
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.0.0/14
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/14
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
14.0.0.0/21
14.0.12.0/22
14.1.0.0/22
14.1.24.0/22
14.1.96.0/22
14.1.108.0/22
14.16.0.0/12
14.102.128.0/22
14.102.156.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.60.0/22
14.192.76.0/22
14.196.0.0/15
14.204.0.0/15
14.208.0.0/12
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.99.128.0/17
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.0.128.0/17
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.51.0.0/16
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/22
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/13
39.104.0.0/14
39.108.0.0/16
39.128.0.0/10
40.72.0.0/15
40.125.128.0/17
40.126.64.0/18
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.0.128.0/17
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/17
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/17
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.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.64.0/21
43.224.72.0/22
43.224.80.0/22
43.224.100.0/22
43.224.144.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/22
43.225.76.0/22
43.225.84.0/22
43.225.120.0/21
43.225.140.0/22
43.225.172.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.120.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.229.40.0/22
43.229.48.0/22
43.229.56.0/22
43.229.96.0/22
43.229.120.0/22
43.229.136.0/21
43.229.144.0/22
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.84.0/22
43.230.124.0/22
43.230.136.0/22
43.230.168.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/15
43.238.0.0/16
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.239.176.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.144.0/22
43.240.156.0/22
43.240.160.0/19
43.240.192.0/19
43.240.236.0/22
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.196.0/22
43.241.208.0/20
43.241.224.0/20
43.241.240.0/22
43.241.248.0/21
43.242.8.0/21
43.242.16.0/20
43.242.44.0/22
43.242.48.0/20
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.24.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.168.0/22
43.243.180.0/22
43.243.188.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/22
43.246.212.0/22
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.176.0/20
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.8.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/22
43.250.16.0/21
43.250.28.0/22
43.250.32.0/21
43.250.72.0/22
43.250.96.0/20
43.250.112.0/21
43.250.128.0/22
43.250.144.0/21
43.250.160.0/22
43.250.168.0/21
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.8.0/21
43.251.36.0/22
43.251.100.0/22
43.251.116.0/22
43.251.192.0/22
43.251.232.0/21
43.251.244.0/22
43.252.40.0/22
43.252.48.0/22
43.252.56.0/22
43.252.224.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.128.0/22
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.108.0/22
43.255.144.0/22
43.255.168.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/18
45.65.16.0/20
45.112.132.0/22
45.112.188.0/22
45.112.208.0/20
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.52.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.12.0/22
45.114.32.0/22
45.114.40.0/22
45.114.52.0/22
45.114.96.0/22
45.114.104.0/21
45.114.124.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.228.0/22
45.115.236.0/22
45.115.244.0/22
45.115.248.0/22
45.116.12.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.52.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.220.0/22
45.120.240.0/22
45.121.20.0/22
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.212.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.88.0/22
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.12.0/22
45.125.16.0/22
45.125.24.0/21
45.125.32.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.104.0/22
45.125.136.0/22
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.212.0/22
45.126.220.0/22
45.127.8.0/21
45.127.96.0/22
45.127.116.0/22
45.127.124.0/22
45.127.128.0/22
45.127.144.0/21
45.127.156.0/22
45.127.216.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.92.0/22
45.249.112.0/22
45.249.180.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.52.0/22
45.251.84.0/22
45.251.88.0/21
45.251.96.0/21
45.251.120.0/21
45.251.136.0/21
45.251.144.0/20
45.251.160.0/19
45.251.192.0/19
45.251.224.0/22
45.251.240.0/22
45.252.0.0/19
45.252.32.0/20
45.252.48.0/22
45.252.60.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/19
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/17
45.255.132.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
47.92.0.0/14
47.96.0.0/11
49.4.0.0/14
49.51.0.0/16
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/19
52.80.0.0/14
52.130.0.0/15
54.222.0.0/15
58.14.0.0/15
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/15
58.68.128.0/17
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/16
59.108.0.0/14
59.151.0.0/17
59.152.16.0/20
59.152.32.0/21
59.152.64.0/20
59.152.112.0/21
59.153.4.0/22
59.153.32.0/22
59.153.60.0/22
59.153.64.0/21
59.153.72.0/22
59.153.92.0/22
59.153.116.0/22
59.153.136.0/22
59.153.152.0/21
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.191.240.0/20
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.192.0/19
61.29.224.0/20
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
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
81.68.0.0/14
82.156.0.0/15
91.234.36.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/14
101.40.0.0/13
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/14
101.144.0.0/12
101.192.0.0/13
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.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/22
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.4.0/22
103.7.28.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.192.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.68.0/22
103.12.92.0/22
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.144.0/22
103.13.196.0/22
103.13.220.0/22
103.13.244.0/22
103.14.32.0/22
103.14.84.0/22
103.14.100.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.192.0/22
103.18.208.0/21
103.18.224.0/22
103.19.0.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/22
103.20.44.0/22
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.112.0/21
103.21.136.0/21
103.21.176.0/22
103.21.208.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.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.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.220.0/22
103.24.228.0/22
103.24.248.0/21
103.25.8.0/23
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.184.0/22
103.27.208.0/21
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.128.0/21
103.29.136.0/22
103.30.20.0/22
103.30.96.0/22
103.30.148.0/22
103.30.200.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.236.0/22
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.116.0/22
103.35.180.0/22
103.35.200.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/19
103.36.192.0/19
103.36.224.0/20
103.36.240.0/21
103.37.0.0/22
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.124.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.248.0/21
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/22
103.39.16.0/22
103.39.64.0/22
103.39.88.0/22
103.39.100.0/22
103.39.104.0/21
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.100.0/22
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.16.0/22
103.41.52.0/22
103.41.140.0/22
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/21
103.42.32.0/22
103.42.64.0/21
103.42.76.0/22
103.42.104.0/22
103.42.180.0/22
103.42.232.0/22
103.43.16.0/22
103.43.84.0/22
103.43.96.0/21
103.43.104.0/22
103.43.124.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.232.0/22
103.43.240.0/22
103.44.56.0/22
103.44.80.0/22
103.44.88.0/22
103.44.120.0/21
103.44.132.0/22
103.44.144.0/22
103.44.168.0/22
103.44.176.0/20
103.44.192.0/20
103.44.224.0/22
103.44.236.0/22
103.44.240.0/20
103.45.0.0/18
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.108.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.144.0/20
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.92.0/22
103.49.96.0/22
103.49.108.0/22
103.49.128.0/22
103.49.176.0/21
103.49.196.0/22
103.49.248.0/22
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/21
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.4.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.180.0/22
103.53.204.0/22
103.53.208.0/21
103.53.216.0/22
103.53.236.0/22
103.53.248.0/22
103.54.8.0/22
103.54.48.0/22
103.54.60.0/22
103.54.160.0/21
103.54.212.0/22
103.54.240.0/22
103.55.24.0/22
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.8.0/22
103.56.16.0/21
103.56.32.0/22
103.56.52.0/22
103.56.56.0/21
103.56.72.0/21
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.100.0/22
103.59.112.0/20
103.59.128.0/22
103.59.148.0/22
103.59.164.0/22
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/22
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.184.0/21
103.62.24.0/22
103.62.52.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.36.0/22
103.65.40.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.66.32.0/22
103.66.40.0/22
103.66.92.0/22
103.66.108.0/22
103.66.200.0/22
103.66.216.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/22
103.67.192.0/22
103.67.212.0/22
103.67.252.0/22
103.68.64.0/22
103.68.88.0/22
103.68.100.0/22
103.68.128.0/22
103.68.192.0/22
103.69.16.0/22
103.69.116.0/22
103.69.132.0/22
103.69.152.0/22
103.69.212.0/22
103.70.8.0/22
103.70.148.0/22
103.70.184.0/22
103.70.220.0/22
103.70.224.0/22
103.70.236.0/22
103.70.252.0/22
103.71.0.0/22
103.71.32.0/22
103.71.48.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.144.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/20
103.72.128.0/21
103.72.144.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.88.0/22
103.73.96.0/22
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.240.0/21
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.16.0/22
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.75.236.0/24
103.76.60.0/22
103.76.64.0/21
103.76.72.0/22
103.76.84.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.72.0/22
103.77.88.0/21
103.77.132.0/22
103.77.148.0/22
103.77.220.0/22
103.78.56.0/21
103.78.64.0/21
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.52.0/22
103.79.56.0/21
103.79.64.0/21
103.79.80.0/21
103.79.120.0/22
103.79.136.0/22
103.79.188.0/22
103.79.192.0/20
103.79.208.0/21
103.79.240.0/22
103.80.24.0/21
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.168.0/22
103.81.183.0/24
103.81.184.0/22
103.81.200.0/22
103.81.232.0/22
103.82.52.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.64.0/22
103.83.72.0/22
103.83.112.0/22
103.83.120.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.92.0/22
103.84.108.0/22
103.84.136.0/22
103.85.20.0/22
103.85.24.0/22
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.224.0/22
103.86.28.0/22
103.86.32.0/22
103.86.44.0/22
103.86.60.0/22
103.86.68.0/22
103.86.80.0/21
103.86.88.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.72.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/21
103.88.164.0/22
103.88.176.0/22
103.88.184.0/21
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.52.0/22
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.152.0/22
103.91.176.0/22
103.91.200.0/22
103.91.208.0/21
103.91.219.0/24
103.91.236.0/22
103.91.252.0/22
103.92.0.0/20
103.92.48.0/20
103.92.64.0/20
103.92.80.0/22
103.92.86.0/24
103.92.88.0/22
103.92.108.0/22
103.92.124.0/22
103.92.128.0/24
103.92.132.0/22
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.76.0/22
103.93.84.0/22
103.93.121.0/24
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.28.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.180.0/22
103.94.200.0/22
103.95.28.0/22
103.95.52.0/22
103.95.64.0/21
103.95.88.0/21
103.95.116.0/22
103.95.128.0/22
103.95.136.0/21
103.95.144.0/22
103.95.152.0/22
103.95.207.0/24
103.95.216.0/21
103.95.224.0/22
103.95.236.0/22
103.95.240.0/20
103.96.0.0/22
103.96.8.0/22
103.96.80.0/22
103.96.124.0/22
103.96.136.0/22
103.96.140.0/24
103.96.148.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.97.8.0/21
103.97.16.0/20
103.97.32.0/21
103.97.40.0/22
103.97.56.0/21
103.97.64.0/21
103.97.72.0/22
103.97.80.0/22
103.97.112.0/21
103.97.128.0/22
103.97.144.0/21
103.97.188.0/22
103.97.192.0/22
103.97.224.0/22
103.97.228.0/23
103.98.28.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/21
103.98.96.0/21
103.98.124.0/22
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/20
103.99.40.0/23
103.99.52.0/22
103.99.56.0/21
103.99.76.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/20
103.100.64.0/21
103.100.88.0/22
103.100.116.0/22
103.100.140.0/22
103.100.144.0/22
103.100.236.0/22
103.100.240.0/22
103.100.248.0/21
103.101.4.0/22
103.101.8.0/21
103.101.28.0/22
103.101.60.0/22
103.101.120.0/21
103.101.144.0/21
103.101.153.0/24
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/21
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.176.0/22
103.103.188.0/22
103.103.200.0/21
103.103.220.0/22
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.104.0/22
103.104.152.0/22
103.104.168.0/21
103.104.188.0/22
103.104.198.0/23
103.104.252.0/22
103.105.0.0/21
103.105.12.0/22
103.105.16.0/22
103.105.23.0/24
103.105.56.0/21
103.105.116.0/22
103.105.132.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.160.0/22
103.106.188.0/22
103.106.196.0/22
103.106.202.0/23
103.106.212.0/22
103.106.244.0/22
103.106.252.0/22
103.107.0.0/22
103.107.8.0/24
103.107.28.0/22
103.107.32.0/22
103.107.44.0/22
103.107.72.0/22
103.107.108.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.64.0/22
103.108.160.0/21
103.108.184.0/23
103.108.188.0/23
103.108.192.0/21
103.108.208.0/21
103.108.224.0/22
103.108.244.0/22
103.108.251.0/24
103.109.20.0/22
103.109.48.0/22
103.109.88.0/22
103.109.106.0/23
103.109.248.0/22
103.110.32.0/22
103.110.80.0/23
103.110.92.0/22
103.110.100.0/22
103.110.116.0/22
103.110.127.0/24
103.110.128.0/23
103.110.131.0/24
103.110.132.0/22
103.110.136.0/22
103.110.152.0/21
103.110.188.0/22
103.110.204.0/22
103.111.38.0/23
103.111.64.0/22
103.111.172.0/22
103.111.252.0/22
103.112.28.0/22
103.112.68.0/22
103.112.72.0/22
103.112.88.0/21
103.112.96.0/22
103.112.108.0/22
103.112.112.0/21
103.112.140.0/22
103.112.172.0/22
103.112.184.0/22
103.112.208.0/22
103.113.4.0/22
103.113.92.0/22
103.113.144.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.72.0/22
103.114.100.0/22
103.114.132.0/22
103.114.148.0/22
103.114.156.0/22
103.114.176.0/22
103.114.212.0/22
103.114.236.0/22
103.114.240.0/22
103.115.16.0/22
103.115.40.0/21
103.115.48.0/20
103.115.64.0/21
103.115.92.0/22
103.115.120.0/22
103.115.148.0/22
103.115.204.0/23
103.115.248.0/22
103.116.20.0/22
103.116.40.0/22
103.116.64.0/22
103.116.72.0/21
103.116.92.0/22
103.116.120.0/22
103.116.128.0/22
103.116.132.0/23
103.116.148.0/22
103.116.184.0/22
103.116.206.0/23
103.116.220.0/22
103.116.224.0/21
103.117.16.0/22
103.117.72.0/22
103.117.88.0/22
103.117.132.0/22
103.117.136.0/22
103.117.188.0/22
103.117.220.0/22
103.118.19.0/24
103.118.36.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.118.192.0/19
103.118.240.0/20
103.119.0.0/22
103.119.12.0/22
103.119.16.0/22
103.119.28.0/22
103.119.44.0/22
103.119.104.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/22
103.120.52.0/22
103.120.72.0/22
103.120.76.0/24
103.120.88.0/22
103.120.96.0/21
103.120.140.0/22
103.120.196.0/22
103.120.224.0/22
103.121.52.0/22
103.121.92.0/22
103.121.160.0/21
103.121.250.0/24
103.121.252.0/22
103.122.48.0/22
103.122.176.0/22
103.122.192.0/22
103.122.240.0/22
103.123.4.0/22
103.123.56.0/22
103.123.88.0/21
103.123.116.0/22
103.123.160.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.248.0/22
103.126.0.0/22
103.126.16.0/22
103.126.44.0/22
103.126.100.0/22
103.126.124.0/22
103.126.128.0/21
103.126.208.0/22
103.126.241.0/24
103.129.52.0/22
103.130.132.0/22
103.130.152.0/24
103.130.160.0/22
103.130.228.0/22
103.131.20.0/22
103.131.36.0/22
103.131.152.0/22
103.131.168.0/22
103.131.176.0/22
103.131.224.0/21
103.131.240.0/22
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.160.0/21
103.132.188.0/22
103.132.208.0/21
103.132.234.0/23
103.133.12.0/22
103.133.40.0/22
103.133.128.0/22
103.133.136.0/22
103.133.176.0/22
103.133.232.0/22
103.134.12.0/24
103.134.196.0/22
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.76.0/22
103.137.136.0/23
103.137.149.0/24
103.137.180.0/22
103.137.236.0/22
103.138.2.0/23
103.138.12.0/23
103.138.80.0/22
103.138.134.0/23
103.138.156.0/23
103.138.208.0/23
103.138.220.0/23
103.138.246.0/23
103.138.248.0/23
103.139.0.0/22
103.139.22.0/23
103.139.113.0/24
103.139.134.0/23
103.139.136.0/23
103.139.172.0/23
103.139.200.0/23
103.139.204.0/23
103.139.212.0/23
103.140.8.0/23
103.140.14.0/23
103.140.46.0/23
103.140.70.0/23
103.140.126.0/23
103.140.140.0/23
103.140.144.0/23
103.140.152.0/23
103.140.192.0/22
103.140.228.0/23
103.141.10.0/23
103.141.36.0/23
103.141.58.0/23
103.141.128.0/23
103.141.186.0/23
103.141.190.0/23
103.141.242.0/23
103.142.0.0/23
103.142.28.0/23
103.142.58.0/23
103.142.82.0/23
103.142.96.0/23
103.142.102.0/23
103.142.122.0/23
103.142.126.0/24
103.142.128.0/23
103.142.140.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.190.0/23
103.142.220.0/23
103.142.230.0/24
103.142.234.0/23
103.142.238.0/23
103.142.248.0/23
103.143.16.0/22
103.143.31.0/24
103.143.74.0/23
103.143.120.0/23
103.143.124.0/23
103.143.132.0/22
103.143.174.0/23
103.143.228.0/23
103.144.40.0/23
103.144.52.0/23
103.144.66.0/23
103.144.70.0/23
103.144.72.0/23
103.144.88.0/24
103.144.108.0/23
103.144.136.0/23
103.144.148.0/23
103.144.158.0/23
103.144.240.0/23
103.145.38.0/23
103.145.40.0/22
103.145.60.0/23
103.145.72.0/23
103.145.80.0/23
103.145.86.0/23
103.145.92.0/22
103.145.98.0/23
103.145.106.0/23
103.145.122.0/23
103.145.188.0/22
103.146.6.0/23
103.146.72.0/23
103.146.88.0/22
103.146.124.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/20
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.40.0/21
103.193.120.0/21
103.193.140.0/22
103.193.144.0/21
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.193.240.0/22
103.194.16.0/22
103.195.104.0/22
103.195.112.0/22
103.195.136.0/22
103.195.148.0/22
103.195.152.0/22
103.195.160.0/22
103.195.192.0/22
103.196.60.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.196.204.0/22
103.197.180.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.200.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.248.0/21
103.200.28.0/22
103.200.32.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.52.0/22
103.203.56.0/22
103.203.96.0/19
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.232.0/21
103.205.4.0/22
103.205.8.0/22
103.205.40.0/21
103.205.52.0/22
103.205.108.0/22
103.205.116.0/22
103.205.120.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.108.0/22
103.206.148.0/22
103.207.48.0/22
103.207.104.0/22
103.207.164.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.208.148.0/22
103.209.112.0/22
103.209.136.0/22
103.209.200.0/22
103.209.208.0/22
103.209.216.0/22
103.210.0.0/22
103.210.20.0/22
103.210.96.0/22
103.210.156.0/22
103.210.160.0/19
103.210.216.0/22
103.211.44.0/22
103.211.96.0/21
103.211.156.0/22
103.211.164.0/22
103.211.192.0/22
103.211.220.0/22
103.211.224.0/22
103.211.248.0/22
103.212.0.0/20
103.212.32.0/22
103.212.44.0/22
103.212.48.0/22
103.212.84.0/22
103.212.100.0/22
103.212.104.0/21
103.212.148.0/22
103.212.164.0/22
103.212.196.0/22
103.212.200.0/22
103.212.228.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.248.0/22
103.214.32.0/22
103.214.48.0/22
103.214.84.0/22
103.214.168.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.48.0/22
103.215.100.0/22
103.215.104.0/21
103.215.116.0/22
103.215.120.0/22
103.215.140.0/22
103.215.184.0/22
103.215.228.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.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.0.0/22
103.218.8.0/21
103.218.16.0/21
103.218.28.0/22
103.218.32.0/19
103.218.64.0/19
103.218.184.0/22
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/20
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.48.0/22
103.221.88.0/21
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.32.0/19
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/18
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.80.0/22
103.224.220.0/22
103.224.224.0/21
103.224.232.0/22
103.225.84.0/22
103.226.16.0/22
103.226.40.0/22
103.226.56.0/21
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/22
103.227.212.0/22
103.227.228.0/22
103.228.12.0/22
103.228.28.0/22
103.228.68.0/22
103.228.88.0/22
103.228.128.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.60.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.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.144.0/22
103.231.180.0/22
103.231.184.0/22
103.231.244.0/22
103.232.4.0/22
103.232.144.0/22
103.232.188.0/22
103.232.212.0/22
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.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.16.0/22
103.235.48.0/22
103.235.56.0/21
103.235.80.0/21
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.120.0/22
103.236.184.0/22
103.236.220.0/22
103.236.232.0/22
103.236.240.0/20
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.16.0/20
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.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.96.0/22
103.239.152.0/21
103.239.176.0/21
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.72.0/22
103.240.84.0/22
103.240.124.0/22
103.240.156.0/22
103.240.172.0/22
103.240.188.0/22
103.240.244.0/22
103.241.12.0/22
103.241.72.0/22
103.241.92.0/22
103.241.96.0/22
103.241.160.0/22
103.241.184.0/21
103.241.220.0/22
103.242.64.0/22
103.242.128.0/21
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.58.0/23
103.244.60.0/22
103.244.64.0/20
103.244.80.0/21
103.244.116.0/22
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/21
103.247.168.0/21
103.247.176.0/22
103.247.200.0/22
103.247.212.0/22
103.248.0.0/23
103.248.64.0/22
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.220.0/22
103.248.224.0/22
103.249.8.0/21
103.249.52.0/22
103.249.104.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.192.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/21
103.251.84.0/22
103.251.96.0/22
103.251.124.0/22
103.251.128.0/22
103.251.160.0/22
103.251.192.0/22
103.251.204.0/22
103.251.236.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/20
103.254.112.0/22
103.254.176.0/22
103.254.188.0/22
103.254.196.0/24
103.254.220.0/22
103.255.56.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
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/15
106.4.0.0/14
106.8.0.0/15
106.11.0.0/16
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/15
106.80.0.0/12
106.108.0.0/14
106.112.0.0/12
106.224.0.0/12
109.244.0.0/16
110.6.0.0/15
110.16.0.0/14
110.34.40.0/21
110.40.0.0/14
110.44.12.0/22
110.44.144.0/20
110.48.0.0/16
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/18
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.32.0/19
110.166.0.0/15
110.172.192.0/18
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/16
111.67.192.0/20
111.68.64.0/19
111.72.0.0/13
111.85.0.0/16
111.91.192.0/19
111.92.248.0/21
111.112.0.0/14
111.116.0.0/15
111.118.200.0/21
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/19
112.0.0.0/10
112.64.0.0/14
112.73.0.0/16
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.0.0/16
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.194.0.0/15
113.197.100.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.64.0/22
113.212.88.0/22
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/16
114.31.64.0/21
114.54.0.0/15
114.60.0.0/14
114.64.0.0/14
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.0.0/14
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.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/20
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.84.192.0/19
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/13
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.66.176.0/22
116.68.136.0/21
116.68.176.0/21
116.69.0.0/16
116.70.0.0/17
116.76.0.0/14
116.85.0.0/16
116.89.144.0/20
116.89.240.0/22
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.152.0/22
116.193.164.0/22
116.193.176.0/21
116.194.0.0/15
116.196.0.0/16
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.204.132.0/22
116.204.168.0/22
116.204.216.0/22
116.204.232.0/21
116.204.244.0/22
116.205.0.0/16
116.206.92.0/22
116.206.176.0/22
116.207.0.0/16
116.208.0.0/14
116.212.160.0/20
116.213.44.0/22
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.64.0/18
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/14
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/14
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.120.128.0/17
117.121.0.0/17
117.121.128.0/18
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/16
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/15
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.107.180.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.0.0/16
118.186.0.0/15
118.188.0.0/16
118.190.0.0/15
118.192.0.0/16
118.193.0.0/20
118.193.32.0/19
118.193.64.0/20
118.193.96.0/19
118.193.128.0/17
118.194.0.0/15
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.0.0/15
119.30.48.0/20
119.31.192.0/19
119.32.0.0/13
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.52.0/22
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/17
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.128.0/17
119.162.0.0/15
119.164.0.0/14
119.176.0.0/12
119.232.0.0/15
119.235.128.0/18
119.248.0.0/14
119.252.96.0/21
119.252.240.0/20
119.253.0.0/16
119.254.0.0/15
120.0.0.0/12
120.24.0.0/14
120.30.0.0/15
120.32.0.0/12
120.48.0.0/15
120.52.0.0/14
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/15
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/17
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.54.188.0/22
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/16
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.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.0.128.0/17
122.4.0.0/14
122.8.0.0/15
122.10.128.0/22
122.10.132.0/23
122.10.136.0/23
122.10.164.0/22
122.10.168.0/21
122.10.176.0/20
122.10.192.0/22
122.10.200.0/21
122.10.208.0/21
122.10.216.0/22
122.10.228.0/22
122.10.232.0/21
122.10.240.0/22
122.11.0.0/17
122.12.0.0/15
122.14.0.0/16
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/14
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/16
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/14
123.60.0.0/15
123.62.0.0/16
123.64.0.0/11
123.96.0.0/15
123.98.0.0/17
123.99.128.0/17
123.100.0.0/19
123.101.0.0/16
123.103.0.0/17
123.108.128.0/20
123.108.208.0/20
123.112.0.0/12
123.128.0.0/13
123.136.80.0/20
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.0.0/17
123.242.192.0/21
123.244.0.0/14
123.249.0.0/16
123.253.108.0/22
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.20.0.0/14
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/14
124.72.0.0/13
124.88.0.0/13
124.108.8.0/21
124.108.40.0/21
124.109.96.0/21
124.112.0.0/13
124.126.0.0/15
124.128.0.0/13
124.147.128.0/17
124.150.137.0/24
124.151.0.0/16
124.152.0.0/16
124.160.0.0/13
124.172.0.0/14
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/18
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.108.0.0/16
129.28.0.0/16
129.204.0.0/16
129.211.0.0/16
132.232.0.0/16
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.108.0/22
139.5.128.0/22
139.5.160.0/22
139.5.192.0/22
139.5.204.0/22
139.5.208.0/21
139.5.244.0/22
139.9.0.0/16
139.129.0.0/16
139.148.0.0/16
139.155.0.0/16
139.159.0.0/16
139.170.0.0/16
139.176.0.0/16
139.183.0.0/16
139.186.0.0/16
139.189.0.0/16
139.196.0.0/14
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/16
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.243.0.0/16
140.246.0.0/16
140.249.0.0/16
140.250.0.0/16
140.255.0.0/16
144.0.0.0/16
144.7.0.0/16
144.12.0.0/16
144.48.8.0/22
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.48.220.0/22
144.48.252.0/22
144.52.0.0/16
144.123.0.0/16
144.255.0.0/16
146.56.192.0/18
146.196.56.0/22
146.196.68.0/22
146.196.72.0/22
146.196.92.0/22
146.196.112.0/21
146.196.124.0/22
148.70.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.216.0/22
150.129.252.0/22
150.138.0.0/15
150.158.0.0/16
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/21
150.242.160.0/21
150.242.168.0/22
150.242.184.0/21
150.242.192.0/22
150.242.212.0/22
150.242.224.0/20
150.242.240.0/21
150.242.248.0/22
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
157.0.0.0/16
157.18.0.0/16
157.61.0.0/16
157.119.0.0/22
157.119.8.0/21
157.119.16.0/22
157.119.28.0/22
157.119.68.0/22
157.119.112.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.148.0.0/16
157.156.0.0/16
157.255.0.0/16
159.75.0.0/16
159.226.0.0/16
160.19.208.0/21
160.19.216.0/22
160.20.48.0/22
160.202.60.0/22
160.202.148.0/22
160.202.152.0/22
160.202.168.0/22
160.202.212.0/22
160.202.216.0/21
160.202.224.0/19
160.238.64.0/22
161.189.0.0/16
161.207.0.0/16
162.14.0.0/16
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/21
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.220.0/22
163.53.240.0/22
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
164.52.0.0/17
166.111.0.0/16
167.139.0.0/16
167.189.0.0/16
167.220.244.0/22
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
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.176.192.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.0.0/14
180.84.0.0/15
180.86.0.0/16
180.88.0.0/14
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.149.236.0/22
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.224.0/19
180.212.0.0/15
180.222.224.0/19
180.223.0.0/16
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
180.235.136.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/20
182.50.112.0/20
182.51.0.0/16
182.54.0.0/17
182.54.244.0/22
182.61.0.0/16
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/16
182.255.32.0/21
182.255.60.0/22
183.0.0.0/10
183.64.0.0/13
183.78.160.0/21
183.78.180.0/22
183.81.172.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/19
183.184.0.0/13
183.192.0.0/10
185.203.36.0/22
188.131.128.0/17
192.51.188.0/24
192.55.46.0/24
192.55.68.0/22
192.102.204.0/23
192.124.154.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.197.113.0/24
193.112.0.0/16
198.175.100.0/22
199.212.57.0/24
202.0.100.0/23
202.0.122.0/23
202.0.176.0/22
202.3.128.0/23
202.3.134.0/24
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.120.0/22
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/20
202.10.112.0/20
202.12.1.0/24
202.12.2.0/24
202.12.17.0/24
202.12.18.0/23
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.138.0/24
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.160.0/23
202.38.164.0/22
202.38.168.0/22
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.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.32.0/19
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.52.144.0/24
202.53.140.0/24
202.53.143.0/24
202.57.192.0/20
202.57.212.0/22
202.57.216.0/22
202.57.240.0/20
202.58.0.0/24
202.58.101.0/24
202.58.104.0/22
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.96.0/20
202.66.168.0/22
202.67.0.0/22
202.69.4.0/22
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.232.0/22
202.74.254.0/23
202.75.208.0/20
202.75.252.0/22
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.86.252.0/22
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.0.0/22
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.36.0/22
202.91.96.0/20
202.91.128.0/22
202.91.176.0/20
202.91.224.0/19
202.92.0.0/22
202.92.8.0/21
202.92.48.0/20
202.92.252.0/22
202.93.0.0/22
202.93.252.0/22
202.94.68.0/24
202.94.74.0/24
202.94.81.0/24
202.94.92.0/22
202.95.240.0/21
202.95.252.0/22
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.128.0/24
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.160.0/21
202.127.192.0/20
202.127.208.0/23
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/20
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.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.144.196.0/22
202.146.160.0/20
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/19
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.160.176.0/20
202.162.67.0/24
202.162.75.0/24
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/20
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/21
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/21
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.32.0/21
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.136.0/21
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.176.0/21
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.48.0/21
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.7.0/24
203.33.8.0/21
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.192.0/21
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.48.0/21
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.231.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.76.160.0/22
203.76.168.0/22
203.76.208.0/21
203.76.216.0/22
203.76.240.0/21
203.77.180.0/22
203.78.48.0/20
203.78.156.0/22
203.79.0.0/20
203.79.32.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.136.0/21
203.80.144.0/20
203.81.0.0/21
203.81.16.0/20
203.81.244.0/22
203.82.0.0/23
203.82.16.0/21
203.82.112.0/20
203.82.224.0/20
203.83.0.0/22
203.83.8.0/21
203.83.56.0/21
203.83.224.0/20
203.86.0.0/17
203.86.250.0/24
203.86.254.0/23
203.88.32.0/19
203.88.100.0/22
203.88.192.0/19
203.89.0.0/22
203.89.8.0/21
203.89.100.0/22
203.89.133.0/24
203.89.136.0/22
203.89.144.0/24
203.90.0.0/22
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.8.0/21
203.99.16.0/20
203.99.80.0/20
203.100.32.0/20
203.100.48.0/21
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/17
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/22
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.120.0/21
203.119.128.0/17
203.123.58.0/24
203.128.32.0/19
203.128.96.0/19
203.128.224.0/21
203.129.8.0/21
203.130.32.0/19
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/19
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.52.0/22
203.160.104.0/21
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/23
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.232.0/22
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/20
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.194.120.0/21
203.195.64.0/19
203.195.112.0/21
203.195.128.0/17
203.196.0.0/20
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.128.0/17
203.207.64.0/18
203.207.128.0/17
203.208.0.0/20
203.208.16.0/22
203.208.32.0/19
203.209.224.0/19
203.212.0.0/20
203.212.80.0/20
203.215.232.0/21
203.217.164.0/22
203.223.0.0/20
203.223.16.0/21
204.52.191.0/24
210.2.0.0/19
210.5.0.0/19
210.5.56.0/21
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.104.0/22
210.16.128.0/18
210.21.0.0/16
210.22.0.0/16
210.23.32.0/19
210.25.0.0/16
210.26.0.0/15
210.28.0.0/14
210.32.0.0/12
210.51.0.0/16
210.52.0.0/15
210.56.192.0/19
210.72.0.0/14
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.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/12
211.160.0.0/13
212.64.0.0/17
212.129.128.0/17
218.0.0.0/11
218.56.0.0/13
218.64.0.0/11
218.96.0.0/14
218.100.88.0/21
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.185.240.0/21
218.192.0.0/12
218.240.0.0/13
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/12
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/15
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/15
220.247.136.0/21
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.128.128.0/17
221.129.0.0/16
221.130.0.0/15
221.133.224.0/19
221.136.0.0/15
221.172.0.0/14
221.176.0.0/13
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/17
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/22
223.64.0.0/11
223.96.0.0/12
223.112.0.0/14
223.116.0.0/15
223.120.128.0/17
223.121.128.0/17
223.122.0.0/15
223.124.0.0/14
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/17
223.254.0.0/16
223.255.0.0/17
223.255.236.0/22
223.255.252.0/23
2001:250::/31
2001:252::/32
2001:254::/32
2001:256::/32
2001:7fa:5::/48
2001:7fa:10::/48
2001:c68::/32
2001:cc0::/32
2001:da8::/31
2001:daa::/32
2001:dc7::/32
2001:dd8:1::/48
2001:dd8:5::/48
2001:dd8:1a::/48
2001:dd9::/48
2001:df0:27e::/48
2001:df0:423::/48
2001:df0:2180::/48
2001:df0:2d80::/48
2001:df0:2e00::/48
2001:df0:2e80::/48
2001:df0:4500::/48
2001:df0:4580::/48
2001:df0:5d00::/47
2001:df0:5d80::/48
2001:df0:9a00::/48
2001:df0:b180::/48
2001:df0:bf80::/48
2001:df0:d180::/48
2001:df0:d880::/48
2001:df1:680::/48
2001:df1:c80::/48
2001:df1:2080::/48
2001:df1:3d00::/48
2001:df1:4180::/48
2001:df1:4580::/48
2001:df1:5280::/48
2001:df1:5b80::/48
2001:df1:6180::/48
2001:df1:6b80::/48
2001:df1:8b00::/48
2001:df1:a100::/48
2001:df1:b980::/48
2001:df1:bd80::/48
2001:df1:c900::/48
2001:df1:d100::/48
2001:df1:d180::/48
2001:df1:da00::/48
2001:df1:e600::/48
2001:df1:f480::/48
2001:df1:f580::/48
2001:df1:fd80::/48
2001:df2:80::/48
2001:df2:180::/47
2001:df2:5200::/48
2001:df2:5780::/48
2001:df2:5a80::/48
2001:df3:b100::/48
2001:df4:1500::/48
2001:df4:2f00::/48
2001:df4:5900::/48
2001:df4:cf00::/48
2001:df5:7800::/48
2001:df6:100::/48
2001:df6:f00::/48
2001:df6:1c00::/48
2001:df6:3d00::/48
2001:df6:5d00::/48
2001:df6:6800::/48
2001:df6:df00::/48
2001:df6:f400::/48
2001:df7:5900::/48
2001:df7:6600::/48
2001:df7:ab00::/48
2001:e08::/32
2001:e18::/32
2001:e80::/32
2001:e88::/32
2001:f38::/32
2001:f88::/32
2001:4438::/32
2001:4510::/29
2400:1040::/32
2400:12c0::/32
2400:1340::/32
2400:1380::/32
2400:15c0::/32
2400:1640::/32
2400:16c0::/32
2400:1740::/32
2400:17c0::/32
2400:1840::/32
2400:18c0::/32
2400:1940::/32
2400:19c0::/32
2400:1a40::/32
2400:1ac0::/32
2400:1b40::/32
2400:1cc0::/32
2400:1d40::/32
2400:1dc0::/32
2400:1e40::/32
2400:1ec0::/32
2400:1f40::/32
2400:1fc0::/32
2400:3040::/32
2400:3140::/32
2400:31c0::/32
2400:3200::/32
2400:3280::/32
2400:32c0::/32
2400:3340::/32
2400:33c0::/32
2400:3440::/32
2400:34c0::/32
2400:3540::/32
2400:35c0::/32
2400:3600::/32
2400:3640::/32
2400:36c0::/32
2400:38c0::/32
2400:39c0::/32
2400:3a00::/32
2400:3a40::/32
2400:3b40::/32
2400:3bc0::/32
2400:3c40::/32
2400:3cc0::/32
2400:3e00::/32
2400:3f40::/32
2400:3fc0::/32
2400:4440::/32
2400:44c0::/32
2400:4540::/32
2400:4600::/32
2400:4640::/32
2400:46c0::/32
2400:4740::/32
2400:4bc0::/32
2400:4e00::/32
2400:4e40::/32
2400:5080::/32
2400:5280::/32
2400:5400::/32
2400:5580::/32
2400:55c0::/32
2400:5600::/32
2400:5640::/32
2400:56c0::/32
2400:57c0::/32
2400:5840::/32
2400:5a00::/32
2400:5a40::/32
2400:5ac0::/32
2400:5b40::/32
2400:5bc0::/32
2400:5c40::/32
2400:5c80::/32
2400:5cc0::/32
2400:5e80::/32
2400:5fc0::/32
2400:6000::/32
2400:6040::/32
2400:60c0::/32
2400:61c0::/32
2400:6200::/32
2400:6600::/32
2400:6640::/32
2400:66c0::/32
2400:6740::/32
2400:67c0::/32
2400:6840::/32
2400:68c0::/32
2400:6940::/32
2400:69c0::/32
2400:6a00::/32
2400:6a40::/32
2400:6ac0::/32
2400:6b40::/32
2400:6bc0::/32
2400:6c40::/32
2400:6cc0::/32
2400:6d40::/32
2400:6dc0::/32
2400:6e00::/32
2400:6e40::/32
2400:6ec0::/32
2400:6f40::/32
2400:6f80::/32
2400:6fc0::/32
2400:7040::/32
2400:7100::/32
2400:7140::/32
2400:71c0::/32
2400:7200::/32
2400:7240::/32
2400:72c0::/32
2400:7340::/32
2400:73c0::/32
2400:7440::/32
2400:74c0::/32
2400:7540::/32
2400:75c0::/32
2400:7640::/32
2400:7680::/32
2400:76c0::/32
2400:7740::/32
2400:77c0::/32
2400:79c0::/32
2400:7ac0::/32
2400:7bc0::/32
2400:7f80::/32
2400:7fc0::/32
2400:8080::/32
2400:8200::/32
2400:82c0::/32
2400:8580::/32
2400:8600::/32
2400:8780::/32
2400:87c0::/32
2400:8840::/32
2400:8980::/32
2400:89c0::/32
2400:8e00::/32
2400:8f00::/32
2400:8fc0::/32
2400:9040::/32
2400:9340::/32
2400:9580::/32
2400:95c0::/32
2400:9600::/32
2400:98c0::/32
2400:9a00::/32
2400:9dc0::/32
2400:9e00::/32
2400:a040::/32
2400:a380::/32
2400:a480::/32
2400:a6c0::/32
2400:a780::/32
2400:a8c0::/32
2400:a900::/32
2400:a980::/29
2400:abc0::/32
2400:ae00::/32
2400:b200::/32
2400:b2c0::/32
2400:b500::/32
2400:b600::/32
2400:b6c0::/32
2400:b700::/32
2400:b7c0::/32
2400:b8c0::/32
2400:b9c0::/32
2400:ba00::/32
2400:ba40::/31
2400:bac0::/32
2400:bc40::/32
2400:be00::/32
2400:bf00::/32
2400:c200::/32
2400:c380::/32
2400:c840::/32
2400:c8c0::/32
2400:c940::/32
2400:c9c0::/32
2400:ca40::/32
2400:cac0::/32
2400:cb40::/32
2400:cb80::/32
2400:cbc0::/32
2400:cc40::/32
2400:cc80::/32
2400:ccc0::/32
2400:cd40::/32
2400:cdc0::/32
2400:ce00::/32
2400:ce40::/32
2400:cf40::/32
2400:cf80::/32
2400:cfc0::/32
2400:d0c0::/32
2400:d100::/32
2400:d1c0::/32
2400:d200::/32
2400:d300::/32
2400:d380::/32
2400:d440::/32
2400:d600::/32
2400:d6c0::/32
2400:d780::/32
2400:da00::/32
2400:dd00::/28
2400:dd40::/32
2400:de00::/32
2400:de80::/32
2400:e0c0::/32
2400:e140::/32
2400:e5c0::/32
2400:e680::/32
2400:e880::/32
2400:ebc0::/32
2400:edc0::/32
2400:ee00::/32
2400:eec0::/32
2400:ef40::/32
2400:f480::/32
2400:f540::/32
2400:f5c0::/32
2400:f7c0::/32
2400:f840::/32
2400:f980::/32
2400:fac0::/32
2400:fb40::/32
2400:fbc0::/32
2400:fc40::/32
2400:fcc0::/32
2400:fe00::/32
2401:80::/32
2401:140::/32
2401:1c0::/32
2401:540::/32
2401:780::/32
2401:7c0::/32
2401:9c0::/32
2401:a00::/32
2401:a40::/32
2401:ac0::/32
2401:b40::/32
2401:bc0::/32
2401:c40::/32
2401:cc0::/32
2401:d40::/32
2401:e00::/32
2401:1000::/32
2401:11c0::/32
2401:1200::/32
2401:12c0::/32
2401:15c0::/32
2401:1740::/32
2401:18c0::/32
2401:1940::/32
2401:19c0::/32
2401:1a40::/32
2401:1ac0::/32
2401:1d40::/32
2401:1dc0::/32
2401:1e00::/32
2401:1ec0::/32
2401:1f40::/32
2401:2040::/32
2401:2080::/32
2401:23c0::/32
2401:2600::/32
2401:2780::/32
2401:2980::/32
2401:2a00::/32
2401:2b40::/32
2401:2e00::/32
2401:3100::/32
2401:3380::/32
2401:33c0::/32
2401:3440::/32
2401:3480::/32
2401:34c0::/32
2401:3640::/32
2401:3780::/32
2401:3800::/32
2401:3880::/32
2401:3980::/32
2401:3a00::/32
2401:3a80::/32
2401:3b80::/32
2401:3c80::/32
2401:3d80::/32
2401:3e80::/32
2401:3f80::/32
2401:4080::/32
2401:4180::/32
2401:4280::/32
2401:4380::/32
2401:4480::/32
2401:4580::/32
2401:4680::/32
2401:4780::/32
2401:4880::/32
2401:4a80::/32
2401:4b00::/32
2401:4f80::/32
2401:5180::/32
2401:5680::/32
2401:56c0::/32
2401:59c0::/32
2401:5b40::/32
2401:5c80::/32
2401:7180::/32
2401:71c0::/32
2401:7240::/32
2401:7340::/32
2401:7580::/32
2401:7680::/32
2401:7700::/32
2401:7780::/32
2401:7880::/32
2401:7980::/32
2401:7a00::/32
2401:7a80::/32
2401:7b80::/32
2401:7bc0::/32
2401:7c80::/32
2401:7cc0::/32
2401:7d40::/32
2401:7d80::/32
2401:7e00::/32
2401:7f80::/32
2401:8200::/32
2401:82c0::/32
2401:8380::/32
2401:8540::/32
2401:8600::/32
2401:8680::/32
2401:8840::/32
2401:8d00::/32
2401:8e40::/32
2401:8f40::/32
2401:8fc0::/32
2401:9340::/32
2401:9380::/32
2401:9600::/32
2401:96c0::/32
2401:9740::/32
2401:98c0::/32
2401:9a00::/32
2401:9ac0::/32
2401:9b40::/32
2401:9bc0::/32
2401:9dc0::/32
2401:9e40::/32
2401:9f80::/32
2401:a140::/32
2401:a180::/32
2401:a340::/32
2401:a3c0::/32
2401:a4c0::/32
2401:a540::/32
2401:a5c0::/32
2401:a640::/32
2401:a940::/32
2401:a980::/32
2401:aa00::/32
2401:aa40::/32
2401:acc0::/32
2401:ad40::/32
2401:adc0::/32
2401:b040::/32
2401:b180::/32
2401:b340::/32
2401:b400::/32
2401:b480::/32
2401:b4c0::/32
2401:b540::/32
2401:b580::/32
2401:b600::/32
2401:b680::/32
2401:b6c0::/32
2401:b7c0::/32
2401:b940::/32
2401:ba00::/32
2401:ba40::/32
2401:bb80::/32
2401:be00::/32
2401:c200::/32
2401:c540::/32
2401:c600::/32
2401:c640::/32
2401:c6c0::/32
2401:c840::/32
2401:c8c0::/32
2401:ca00::/32
2401:ca80::/32
2401:cb80::/32
2401:cc00::/32
2401:ce00::/32
2401:cf40::/32
2401:cfc0::/32
2401:d0c0::/32
2401:d140::/32
2401:d180::/32
2401:d2c0::/32
2401:d340::/32
2401:d780::/32
2401:da00::/32
2401:de00::/32
2401:e080::/32
2401:e0c0::/32
2401:e140::/32
2401:e240::/32
2401:e2c0::/32
2401:e340::/32
2401:e6c0::/32
2401:e840::/32
2401:e8c0::/32
2401:e940::/32
2401:e9c0::/32
2401:ec00::/32
2401:ec40::/32
2401:f300::/32
2401:f7c0::/32
2401:fa80::/32
2401:fac0::/32
2401:fb80::/32
2401:fc80::/32
2401:fe80::/32
2401:ffc0::/32
2402:440::/32
2402:5c0::/32
2402:840::/32
2402:880::/32
2402:ac0::/32
2402:e00::/32
2402:fc0::/32
2402:1000::/32
2402:1440::/32
2402:14c0::/32
2402:1540::/32
2402:1600::/32
2402:1740::/32
2402:19c0::/32
2402:1ec0::/32
2402:1f40::/32
2402:1f80::/32
2402:2000::/32
2402:2280::/32
2402:22c0::/32
2402:2440::/32
2402:24c0::/32
2402:2540::/32
2402:2640::/32
2402:2780::/32
2402:27c0::/32
2402:2a00::/32
2402:2b80::/32
2402:2bc0::/32
2402:2d00::/32
2402:2d80::/32
2402:2e80::/32
2402:2f40::/32
2402:3040::/32
2402:3080::/32
2402:3140::/32
2402:3180::/32
2402:31c0::/32
2402:3240::/32
2402:33c0::/32
2402:39c0::/32
2402:3a40::/32
2402:3ac0::/32
2402:3c00::/32
2402:3e00::/32
2402:3ec0::/32
2402:3f40::/32
2402:3f80::/32
2402:4140::/32
2402:42c0::/32
2402:4340::/32
2402:43c0::/32
2402:4440::/32
2402:4500::/32
2402:4540::/32
2402:4a00::/32
2402:4a40::/32
2402:4a80::/32
2402:4ac0::/32
2402:4b80::/32
2402:4bc0::/32
2402:4c40::/32
2402:4d80::/32
2402:4e00::/32
2402:4ec0::/32
2402:4f80::/32
2402:50c0::/32
2402:5140::/32
2402:5180::/32
2402:51c0::/32
2402:5240::/32
2402:52c0::/32
2402:5340::/32
2402:5880::/32
2402:5940::/32
2402:59c0::/32
2402:5a40::/32
2402:5b40::/32
2402:5bc0::/32
2402:5d00::/32
2402:5e00::/32
2402:5e40::/32
2402:5ec0::/32
2402:5f40::/32
2402:6280::/32
2402:62c0::/32
2402:64c0::/32
2402:65c0::/32
2402:66c0::/32
2402:6740::/32
2402:67c0::/32
2402:6a00::/32
2402:6b40::/32
2402:6bc0::/32
2402:6dc0::/32
2402:6e00::/32
2402:6e80::/32
2402:6ec0::/32
2402:6f40::/32
2402:6fc0::/32
2402:7040::/32
2402:7080::/32
2402:70c0::/32
2402:7140::/32
2402:71c0::/32
2402:7240::/32
2402:72c0::/32
2402:7540::/32
2402:75c0::/32
2402:7740::/32
2402:7d00::/32
2402:7d80::/32
2402:8180::/32
2402:8280::/32
2402:8300::/32
2402:8380::/32
2402:85c0::/32
2402:87c0::/32
2402:8800::/32
2402:8840::/32
2402:8900::/32
2402:8940::/32
2402:89c0::/32
2402:8b40::/32
2402:8bc0::/32
2402:8cc0::/32
2402:8d40::/32
2402:8f40::/32
2402:8f80::/32
2402:9240::/32
2402:92c0::/32
2402:93c0::/32
2402:9440::/32
2402:9480::/32
2402:94c0::/32
2402:9580::/32
2402:95c0::/32
2402:9680::/32
2402:96c0::/32
2402:9840::/32
2402:98c0::/32
2402:9940::/32
2402:9a80::/32
2402:9b80::/32
2402:9f80::/32
2402:9fc0::/32
2402:a080::/32
2402:a180::/32
2402:a200::/32
2402:a240::/32
2402:a280::/32
2402:a380::/32
2402:a3c0::/32
2402:a640::/32
2402:a680::/32
2402:a6c0::/32
2402:a840::/32
2402:a880::/32
2402:a9c0::/32
2402:aa80::/32
2402:ab80::/32
2402:ae00::/32
2402:ae40::/32
2402:aec0::/32
2402:af80::/32
2402:afc0::/32
2402:b080::/32
2402:b200::/32
2402:b380::/32
2402:b3c0::/32
2402:b440::/32
2402:b6c0::/32
2402:b880::/32
2402:b8c0::/32
2402:b940::/32
2402:b980::/32
2402:ba80::/32
2402:bac0::/32
2402:bbc0::/32
2402:bec0::/32
2402:bf80::/32
2402:c280::/32
2402:c3c0::/32
2402:c5c0::/32
2402:c9c0::/32
2402:cbc0::/32
2402:cc40::/32
2402:cc80::/32
2402:cf00::/32
2402:cf40::/32
2402:d040::/32
2402:d140::/32
2402:d2c0::/32
2402:d300::/32
2402:d340::/32
2402:d380::/32
2402:d5c0::/32
2402:d6c0::/32
2402:d740::/32
2402:d780::/32
2402:d880::/32
2402:d980::/32
2402:da40::/32
2402:db40::/32
2402:dcc0::/32
2402:de40::/32
2402:dec0::/32
2402:df40::/32
2402:dfc0::/32
2402:e040::/32
2402:e0c0::/32
2402:e140::/32
2402:e2c0::/32
2402:e3c0::/32
2402:e480::/32
2402:e540::/32
2402:e680::/32
2402:e740::/32
2402:e780::/32
2402:e7c0::/32
2402:e880::/32
2402:e980::/32
2402:eb80::/32
2402:ec80::/32
2402:ed80::/32
2402:ef40::/32
2402:ef80::/32
2402:f000::/32
2402:f140::/32
2402:f340::/32
2402:f3c0::/32
2402:f480::/32
2402:f540::/32
2402:f580::/32
2402:f740::/32
2402:f780::/32
2402:f8c0::/32
2402:f980::/32
2402:f9c0::/32
2402:fac0::/32
2402:fcc0::/32
2402:ff40::/32
2402:ffc0::/32
2403:600::/32
2403:700::/32
2403:7c0::/32
2403:800::/31
2403:980::/32
2403:a80::/32
2403:b80::/32
2403:c80::/32
2403:d40::/32
2403:d80::/32
2403:e80::/32
2403:f00::/32
2403:f40::/32
2403:f80::/32
2403:fc0::/32
2403:1180::/32
2403:1340::/32
2403:1440::/32
2403:1580::/32
2403:16c0::/32
2403:17c0::/32
2403:1980::/32
2403:1a40::/32
2403:1b80::/32
2403:1c80::/32
2403:1d80::/32
2403:1dc0::/32
2403:1e80::/32
2403:1ec0::/32
2403:1f80::/32
2403:2040::/32
2403:2080::/32
2403:2180::/32
2403:2240::/32
2403:2280::/32
2403:2380::/32
2403:2440::/32
2403:24c0::/32
2403:2580::/32
2403:25c0::/32
2403:2680::/32
2403:26c0::/32
2403:2740::/32
2403:2780::/32
2403:28c0::/32
2403:2940::/32
2403:2a00::/32
2403:2a40::/32
2403:2ac0::/32
2403:2b40::/32
2403:2bc0::/32
2403:2cc0::/32
2403:2d80::/32
2403:2f40::/32
2403:2fc0::/32
2403:3040::/32
2403:30c0::/32
2403:3140::/32
2403:3280::/32
2403:32c0::/32
2403:3380::/32
2403:3480::/32
2403:3580::/32
2403:3640::/32
2403:3680::/32
2403:36c0::/32
2403:3740::/32
2403:3780::/32
2403:37c0::/32
2403:3840::/32
2403:3880::/32
2403:38c0::/32
2403:3940::/32
2403:3980::/32
2403:39c0::/32
2403:3a40::/32
2403:3b40::/32
2403:3b80::/32
2403:3bc0::/32
2403:3c40::/32
2403:3c80::/32
2403:3cc0::/32
2403:3d40::/32
2403:3d80::/32
2403:3dc0::/32
2403:3e80::/32
2403:3ec0::/32
2403:3f40::/32
2403:3f80::/32
2403:4080::/32
2403:4180::/32
2403:4240::/32
2403:4280::/32
2403:4300::/32
2403:4380::/32
2403:4580::/32
2403:4680::/32
2403:4840::/32
2403:4880::/32
2403:4980::/32
2403:4a40::/32
2403:4a80::/32
2403:4b40::/32
2403:4b80::/32
2403:4c80::/32
2403:4cc0::/32
2403:4d40::/32
2403:4d80::/32
2403:4ec0::/32
2403:5040::/32
2403:5080::/32
2403:50c0::/32
2403:5280::/32
2403:5380::/32
2403:54c0::/32
2403:5540::/32
2403:5580::/32
2403:5640::/32
2403:5780::/32
2403:58c0::/32
2403:5980::/32
2403:5a80::/32
2403:5b40::/32
2403:5b80::/32
2403:5c80::/32
2403:5d80::/32
2403:5e40::/32
2403:5e80::/32
2403:5ec0::/32
2403:5f80::/32
2403:5fc0::/32
2403:6080::/32
2403:6180::/32
2403:6280::/32
2403:62c0::/32
2403:6380::/32
2403:6580::/32
2403:6680::/32
2403:6740::/32
2403:6780::/32
2403:6880::/32
2403:6980::/32
2403:6a00::/32
2403:6c80::/32
2403:6d40::/32
2403:6d80::/32
2403:6e80::/32
2403:6f40::/32
2403:6fc0::/32
2403:7040::/32
2403:7080::/32
2403:7180::/32
2403:7280::/32
2403:7380::/32
2403:7480::/32
2403:7540::/32
2403:7580::/32
2403:76c0::/32
2403:7700::/32
2403:7840::/32
2403:78c0::/32
2403:7a80::/32
2403:7b00::/32
2403:7d80::/32
2403:7e80::/32
2403:7f80::/32
2403:8080::/32
2403:8180::/32
2403:8280::/32
2403:8380::/32
2403:83c0::/32
2403:8480::/32
2403:8580::/32
2403:8880::/32
2403:8900::/32
2403:8980::/32
2403:8a40::/32
2403:8a80::/32
2403:8b00::/32
2403:8b80::/32
2403:8c00::/32
2403:8c80::/32
2403:8d00::/32
2403:8d80::/32
2403:8f80::/32
2403:9080::/32
2403:9180::/32
2403:9280::/32
2403:9380::/32
2403:9480::/32
2403:9580::/32
2403:9680::/32
2403:9780::/32
2403:9880::/32
2403:9a80::/32
2403:9ac0::/32
2403:9b00::/32
2403:9b40::/32
2403:9b80::/32
2403:9c80::/32
2403:9d00::/32
2403:9d80::/32
2403:9e40::/32
2403:9e80::/32
2403:9ec0::/32
2403:9f80::/32
2403:a100::/32
2403:a140::/32
2403:a200::/32
2403:a300::/32
2403:a480::/32
2403:a580::/32
2403:a680::/32
2403:a6c0::/32
2403:a780::/32
2403:a880::/32
2403:a940::/32
2403:a980::/32
2403:a9c0::/32
2403:aa40::/32
2403:aa80::/32
2403:ab80::/32
2403:ac00::/32
2403:af80::/32
2403:b080::/32
2403:b180::/32
2403:b280::/32
2403:b380::/32
2403:b400::/32
2403:b480::/32
2403:b580::/32
2403:b680::/32
2403:b780::/32
2403:b880::/32
2403:b980::/32
2403:ba40::/32
2403:c040::/32
2403:c080::/32
2403:c100::/32
2403:c140::/32
2403:c180::/32
2403:c3c0::/32
2403:c440::/32
2403:c480::/32
2403:c4c0::/32
2403:c980::/32
2403:cdc0::/32
2403:cec0::/32
2403:cf80::/32
2403:d080::/32
2403:d180::/32
2403:d280::/32
2403:d2c0::/32
2403:d380::/32
2403:d400::/32
2403:d440::/32
2403:d480::/32
2403:d580::/32
2403:d680::/32
2403:d780::/32
2403:d7c0::/32
2403:d880::/32
2403:d980::/32
2403:d9c0::/32
2403:da80::/32
2403:dac0::/32
2403:db00::/32
2403:db80::/32
2403:dc80::/32
2403:dd80::/32
2403:de80::/32
2403:df80::/32
2403:e080::/32
2403:e180::/32
2403:e280::/32
2403:e300::/32
2403:e480::/32
2403:e500::/32
2403:e580::/32
2403:e640::/32
2403:e680::/32
2403:e700::/32
2403:e780::/32
2403:e7c0::/32
2403:e880::/32
2403:e980::/32
2403:ea80::/32
2403:eac0::/32
2403:eb80::/32
2403:ec80::/32
2403:ed00::/32
2403:ed40::/32
2403:ed80::/32
2403:ee80::/32
2403:ef80::/32
2403:f080::/32
2403:f100::/32
2403:f180::/32
2403:f240::/32
2403:f280::/32
2403:f300::/32
2403:f380::/32
2403:f4c0::/32
2403:f580::/32
2403:f740::/32
2403:f8c0::/32
2403:f980::/32
2403:fb00::/32
2403:fb80::/32
2403:fc40::/32
2403:fe40::/32
2403:fe80::/32
2403:fec0::/32
2403:ff80::/32
2403:ffc0::/32
2404:100::/32
2404:158::/32
2404:240::/32
2404:280::/32
2404:440::/32
2404:480::/32
2404:680::/32
2404:a80::/32
2404:b80::/32
2404:bc0::/32
2404:c40::/32
2404:d80::/32
2404:f00::/32
2404:f80::/32
2404:1080::/32
2404:10c0::/32
2404:1180::/32
2404:14c0::/32
2404:1880::/32
2404:1c80::/32
2404:1cc0::/32
2404:1d80::/32
2404:1e80::/32
2404:1f40::/32
2404:21c0::/32
2404:30c0::/32
2404:3140::/32
2404:31c0::/32
2404:3240::/32
2404:32c0::/32
2404:3300::/32
2404:3340::/32
2404:3480::/32
2404:35c0::/32
2404:3640::/32
2404:36c0::/32
2404:3700::/32
2404:3740::/32
2404:37c0::/32
2404:3840::/32
2404:3940::/32
2404:3b00::/32
2404:3bc0::/32
2404:3c40::/32
2404:3f40::/32
2404:4080::/32
2404:41c0::/32
2404:4540::/32
2404:4740::/32
2404:4bc0::/32
2404:4d00::/32
2404:4dc0::/32
2404:51c0::/32
2404:5640::/32
2404:5a80::/32
2404:5b00::/32
2404:5d00::/32
2404:5e80::/32
2404:6000::/32
2404:6100::/32
2404:6380::/32
2404:6500::/32
2404:65c0::/32
2404:6a40::/32
2404:6f80::/32
2404:7100::/32
2404:7180::/32
2404:71c0::/32
2404:7240::/32
2404:74c0::/32
2404:7600::/32
2404:7740::/32
2404:7940::/32
2404:7d00::/32
2404:8040::/32
2404:80c0::/32
2404:8140::/32
2404:81c0::/32
2404:8480::/32
2404:8580::/32
2404:8700::/32
2404:8880::/32
2404:8a80::/32
2404:8b00::/32
2404:8dc0::/32
2404:9340::/32
2404:9880::/32
2404:9b80::/32
2404:9c80::/32
2404:a000::/32
2404:a080::/32
2404:a0c0::/32
2404:a180::/32
2404:a240::/32
2404:a740::/32
2404:b100::/32
2404:b340::/32
2404:b3c0::/32
2404:b440::/32
2404:b4c0::/32
2404:b900::/32
2404:bbc0::/32
2404:bc40::/32
2404:c1c0::/32
2404:c240::/32
2404:c2c0::/32
2404:c300::/32
2404:c3c0::/32
2404:c440::/32
2404:c4c0::/32
2404:c540::/32
2404:c5c0::/32
2404:c640::/32
2404:c940::/32
2404:c9c0::/32
2404:cd00::/32
2404:d040::/32
2404:d080::/32
2404:d140::/32
2404:d280::/32
2404:d3c0::/32
2404:d480::/32
2404:d640::/32
2404:d6c0::/32
2404:d780::/32
2404:d7c0::/32
2404:d840::/32
2404:dd80::/32
2404:df00::/32
2404:e180::/32
2404:e280::/32
2404:e540::/32
2404:e5c0::/32
2404:e780::/32
2404:e880::/32
2404:e8c0::/32
2404:eb40::/32
2404:eb80::/32
2404:ec40::/32
2404:ecc0::/32
2404:edc0::/32
2404:f040::/32
2404:f4c0::/32
2404:f7c0::/32
2405:80::/32
2405:480::/32
2405:580::/32
2405:680::/32
2405:6c0::/32
2405:780::/32
2405:880::/32
2405:940::/32
2405:980::/32
2405:9c0::/32
2405:a80::/32
2405:b80::/32
2405:c80::/32
2405:d80::/32
2405:e80::/32
2405:f40::/32
2405:f80::/32
2405:1080::/32
2405:1180::/32
2405:1280::/32
2405:1380::/32
2405:1480::/32
2405:1580::/32
2405:1680::/32
2405:18c0::/32
2405:1c80::/32
2405:1d80::/32
2405:1e80::/32
2405:1f80::/32
2405:1fc0::/32
2405:2080::/32
2405:2180::/32
2405:2280::/32
2405:2340::/32
2405:2380::/32
2405:2480::/32
2405:24c0::/32
2405:2580::/32
2405:2680::/32
2405:2780::/32
2405:2880::/32
2405:2980::/32
2405:2a80::/32
2405:2b80::/32
2405:2bc0::/32
2405:2c80::/32
2405:2d80::/32
2405:2e80::/32
2405:2ec0::/32
2405:2f40::/32
2405:2f80::/32
2405:3140::/32
2405:31c0::/32
2405:37c0::/32
2405:3880::/32
2405:3980::/32
2405:39c0::/32
2405:3a80::/32
2405:3ac0::/32
2405:3b00::/32
2405:3b80::/32
2405:3bc0::/32
2405:3c40::/32
2405:3c80::/32
2405:3d80::/32
2405:3e80::/32
2405:3f40::/32
2405:3f80::/32
2405:4080::/32
2405:4140::/32
2405:4180::/32
2405:41c0::/32
2405:4280::/32
2405:4380::/32
2405:4480::/32
2405:44c0::/32
2405:4540::/32
2405:4580::/32
2405:4680::/32
2405:4780::/32
2405:4880::/32
2405:4980::/32
2405:4a80::/32
2405:4b80::/32
2405:4d40::/32
2405:4e80::/32
2405:4f80::/32
2405:5080::/32
2405:5180::/32
2405:5240::/32
2405:5280::/32
2405:52c0::/32
2405:5380::/32
2405:5480::/32
2405:5580::/32
2405:5680::/32
2405:5780::/32
2405:57c0::/32
2405:5880::/32
2405:5980::/32
2405:5a80::/32
2405:5b00::/32
2405:5b80::/32
2405:5c80::/32
2405:5cc0::/32
2405:5d40::/32
2405:5d80::/32
2405:5dc0::/32
2405:5e80::/32
2405:5f80::/32
2405:6080::/32
2405:6180::/32
2405:6200::/32
2405:66c0::/32
2405:6880::/32
2405:68c0::/32
2405:6940::/32
2405:69c0::/32
2405:6a80::/32
2405:6b80::/32
2405:6c80::/32
2405:6d80::/32
2405:6e80::/32
2405:6f00::/32
2405:6f80::/32
2405:7040::/32
2405:7080::/32
2405:7180::/32
2405:7240::/32
2405:7280::/32
2405:7380::/32
2405:7480::/32
2405:7580::/32
2405:7680::/32
2405:7780::/32
2405:7880::/32
2405:78c0::/32
2405:7980::/32
2405:79c0::/32
2405:7a80::/32
2405:7b80::/32
2405:7c80::/32
2405:7d40::/32
2405:7f40::/32
2405:7fc0::/32
2405:8280::/32
2405:83c0::/32
2405:8480::/32
2405:84c0::/32
2405:8580::/32
2405:8680::/32
2405:8780::/32
2405:8880::/32
2405:8980::/32
2405:8a40::/32
2405:8a80::/32
2405:8ac0::/32
2405:8b40::/32
2405:8b80::/32
2405:8c80::/32
2405:8d80::/32
2405:8e80::/32
2405:8f40::/32
2405:8f80::/32
2405:9080::/32
2405:9180::/32
2405:9280::/32
2405:9300::/32
2405:9340::/32
2405:9380::/32
2405:93c0::/32
2405:9480::/32
2405:94c0::/32
2405:9580::/32
2405:9680::/32
2405:9700::/32
2405:9780::/32
2405:9880::/32
2405:9900::/32
2405:9980::/32
2405:9a80::/32
2405:9b00::/32
2405:9b80::/32
2405:9e00::/32
2405:a500::/32
2405:a680::/32
2405:a900::/32
2405:a980::/32
2405:aa80::/32
2405:ab00::/32
2405:ad00::/32
2405:af00::/32
2405:b100::/32
2405:b300::/32
2405:b880::/32
2405:b980::/32
2405:bb00::/32
2405:bd00::/32
2405:bd80::/32
2405:be80::/32
2405:bf00::/32
2405:c280::/32
2405:c380::/32
2405:c480::/32
2405:c500::/32
2405:c580::/32
2405:c680::/32
2405:c780::/32
2405:c880::/32
2405:c980::/32
2405:ca80::/32
2405:cb80::/32
2405:cc80::/32
2405:cd80::/32
2405:ce80::/32
2405:d280::/32
2405:d700::/32
2405:d900::/32
2405:e000::/32
2405:e600::/32
2405:ee80::/32
2405:f380::/32
2405:f580::/32
2405:fe80::/32
2405:ff80::/32
2406:80::/32
2406:280::/32
2406:880::/32
2406:d80::/32
2406:e80::/32
2406:f80::/32
2406:1080::/32
2406:1100::/32
2406:1180::/32
2406:1280::/32
2406:1380::/32
2406:1480::/32
2406:1580::/32
2406:1680::/32
2406:1780::/32
2406:1880::/32
2406:1980::/32
2406:1a80::/32
2406:1b80::/32
2406:1c80::/32
2406:1d80::/32
2406:1e80::/32
2406:1f80::/32
2406:2080::/32
2406:2580::/32
2406:2700::/32
2406:2780::/32
2406:2880::/32
2406:2980::/32
2406:2a80::/32
2406:2b80::/32
2406:2c80::/32
2406:2d80::/32
2406:2e80::/32
2406:2f80::/32
2406:3080::/32
2406:3180::/32
2406:3280::/32
2406:3300::/32
2406:3380::/32
2406:3480::/32
2406:3580::/32
2406:3680::/32
2406:3700::/32
2406:3780::/32
2406:3880::/32
2406:3980::/32
2406:3d80::/32
2406:3e80::/32
2406:3f80::/32
2406:4080::/32
2406:4180::/32
2406:4280::/32
2406:4380::/32
2406:4480::/32
2406:4500::/32
2406:4680::/32
2406:4980::/32
2406:4b80::/32
2406:4c80::/32
2406:4d00::/32
2406:4d80::/32
2406:4e80::/32
2406:4f00::/32
2406:4f80::/32
2406:5080::/32
2406:5180::/32
2406:5280::/32
2406:5380::/32
2406:5480::/32
2406:5580::/32
2406:5680::/32
2406:5780::/32
2406:5880::/32
2406:5980::/32
2406:5d80::/32
2406:5e80::/32
2406:5f80::/32
2406:6080::/32
2406:6100::/32
2406:6180::/32
2406:6280::/32
2406:6300::/32
2406:6380::/32
2406:6480::/32
2406:6500::/32
2406:6580::/32
2406:6680::/32
2406:6780::/32
2406:6880::/32
2406:6980::/32
2406:6a80::/32
2406:6b80::/32
2406:6c80::/32
2406:6d80::/32
2406:6e80::/32
2406:6f80::/32
2406:7080::/32
2406:7280::/32
2406:7380::/32
2406:7480::/32
2406:7580::/32
2406:7680::/32
2406:7780::/32
2406:7880::/32
2406:7980::/32
2406:7a80::/32
2406:7b80::/32
2406:7c80::/32
2406:7d00::/32
2406:7d80::/32
2406:7e80::/32
2406:7f80::/32
2406:8080::/32
2406:8180::/32
2406:8280::/32
2406:8380::/32
2406:8480::/32
2406:8500::/32
2406:8580::/32
2406:8780::/32
2406:8880::/32
2406:8980::/32
2406:8a80::/32
2406:8b80::/32
2406:8c80::/32
2406:8d80::/32
2406:8e80::/32
2406:8f80::/32
2406:9180::/32
2406:9200::/32
2406:9280::/32
2406:9380::/32
2406:9480::/32
2406:9780::/32
2406:9d80::/32
2406:9e80::/32
2406:9f80::/32
2406:a080::/32
2406:a180::/32
2406:a280::/32
2406:a380::/32
2406:a480::/32
2406:a580::/32
2406:a680::/32
2406:a780::/32
2406:a880::/32
2406:a980::/32
2406:aa80::/32
2406:ab80::/32
2406:ac80::/32
2406:ad80::/32
2406:ae80::/32
2406:af80::/32
2406:b080::/32
2406:b880::/32
2406:b980::/32
2406:ba80::/32
2406:bb80::/32
2406:bc80::/32
2406:bd80::/32
2406:be80::/32
2406:bf80::/32
2406:c080::/32
2406:c180::/32
2406:c280::/32
2406:c480::/32
2406:c580::/32
2406:c680::/32
2406:c780::/32
2406:c880::/32
2406:c900::/32
2406:c980::/32
2406:ca80::/32
2406:cb80::/32
2406:cc80::/32
2406:cd80::/32
2406:ce80::/32
2406:cf00::/30
2406:cf80::/32
2406:d080::/32
2406:d180::/32
2406:d280::/32
2406:d380::/32
2406:d480::/32
2406:d580::/32
2406:d680::/32
2406:d780::/32
2406:d880::/32
2406:d980::/32
2406:db80::/32
2406:dc80::/32
2406:dd00::/32
2406:dd80::/32
2406:de80::/32
2406:df80::/32
2406:e080::/32
2406:e180::/32
2406:e280::/32
2406:e380::/32
2406:e500::/32
2406:e580::/32
2406:e680::/32
2406:e780::/32
2406:f280::/32
2406:f300::/32
2406:f980::/32
2406:fc80::/32
2406:fd80::/32
2406:fe80::/32
2406:ff00::/32
2407:480::/32
2407:580::/32
2407:1180::/32
2407:1900::/32
2407:1d00::/32
2407:1e80::/32
2407:2280::/32
2407:2380::/32
2407:2780::/32
2407:3700::/32
2407:3900::/32
2407:4580::/32
2407:4680::/32
2407:4880::/32
2407:4980::/32
2407:4a80::/32
2407:4c80::/32
2407:4d80::/32
2407:4e80::/32
2407:4f00::/32
2407:5380::/32
2407:5500::/32
2407:5780::/32
2407:6580::/32
2407:6a80::/32
2407:7680::/32
2407:7780::/32
2407:7880::/32
2407:7980::/32
2407:7c80::/32
2407:7d00::/32
2407:7d80::/32
2407:7e80::/32
2407:8880::/32
2407:8b80::/32
2407:9080::/32
2407:9180::/32
2407:9680::/32
2407:9980::/32
2407:9f00::/32
2407:9f80::/32
2407:a480::/32
2407:a880::/32
2407:ad80::/32
2407:ae80::/32
2407:af80::/32
2407:b080::/32
2407:b180::/32
2407:b280::/32
2407:b380::/32
2407:b580::/32
2407:b680::/32
2407:b780::/32
2407:b880::/32
2407:b980::/32
2407:ba00::/32
2407:ba80::/32
2407:bb80::/32
2407:bc00::/32
2407:bc80::/32
2407:bd80::/32
2407:be80::/32
2407:bf80::/32
2407:c080::/32
2407:c380::/32
2407:c400::/32
2407:c480::/32
2407:c580::/32
2407:c680::/32
2407:c780::/32
2407:c880::/32
2407:c900::/32
2407:c980::/32
2407:cb80::/32
2407:cc80::/32
2407:cd80::/32
2407:ce80::/32
2407:cf00::/32
2407:cf80::/32
2407:d480::/32
2407:d580::/32
2407:d680::/32
2407:d780::/32
2407:d880::/32
2407:d980::/32
2407:da80::/32
2407:db80::/32
2407:dc80::/32
2407:dd80::/32
2407:de80::/32
2407:df80::/32
2407:e080::/32
2407:e180::/32
2407:e280::/32
2407:e380::/32
2407:e480::/32
2407:e580::/32
2407:e680::/32
2407:e780::/32
2407:e800::/32
2407:ea80::/32
2407:eb80::/32
2407:ec80::/32
2407:ed80::/32
2407:ee80::/32
2407:ef80::/32
2407:f080::/32
2407:f180::/32
2407:f280::/32
2407:f380::/32
2407:f480::/32
2407:f580::/32
2407:f680::/32
2407:f780::/32
2407:f880::/32
2407:f980::/32
2407:fa80::/32
2407:fb80::/32
2407:fc80::/32
2407:fd80::/32
2408:4000::/22
2408:8000::/20
2409:8000::/20
240a:4000::/21
240a:8000::/21
240a:c000::/20
240b:8000::/21
240c::/28
240c:4000::/22
240c:8000::/21
240c:c000::/20
240d:4000::/21
240d:8000::/24
240e::/18
240f:4000::/24
240f:8000::/24
240f:c000::/24
[proxy_list]
# Telegram IPs$
91.108.4.0/22
91.108.8.0/21
91.108.16.0/21
91.108.36.0/22
91.108.56.0/22
109.239.140.0/24
149.154.160.0/20
14.102.250.18
14.102.250.19
174.142.105.153
50.7.31.230
67.220.91.15
67.220.91.18
67.220.91.23
69.65.19.160
72.52.81.22
85.17.73.31
(?:^|\.)030buy\.com$
(?:^|\.)0rz\.tw$
(?:^|\.)1-apple\.com\.tw$
(?:^|\.)10\.tt$
(?:^|\.)1000giri\.net$
(?:^|\.)100ke\.org$
(?:^|\.)10conditionsoflove\.com$
(?:^|\.)10musume\.com$
(?:^|\.)123rf\.com$
(?:^|\.)12bet\.com$
(?:^|\.)12vpn\.com$
(?:^|\.)12vpn\.net$
(?:^|\.)138\.com$
(?:^|\.)141hongkong\.com$
(?:^|\.)141jj\.com$
(?:^|\.)141tube\.com$
(?:^|\.)1688\.com\.au$
(?:^|\.)173ng\.com$
(?:^|\.)177pic\.info$
(?:^|\.)17t17p\.com$
(?:^|\.)18board\.com$
(?:^|\.)18board\.info$
(?:^|\.)18onlygirls\.com$
(?:^|\.)18p2p\.com$
(?:^|\.)18virginsex\.com$
(?:^|\.)1949er\.org$
(?:^|\.)1984bbs\.com$
(?:^|\.)1984bbs\.org$
(?:^|\.)1989report\.hkja\.org\.hk$
(?:^|\.)1991way\.com$
(?:^|\.)1998cdp\.org$
(?:^|\.)1bao\.org$
(?:^|\.)1dumb\.com$
(?:^|\.)1e100\.net$
(?:^|\.)1eew\.com$
(?:^|\.)1mobile\.com$
(?:^|\.)1pondo\.tv$
(?:^|\.)2-hand\.info$
(?:^|\.)2000fun\.com$
(?:^|\.)2008xianzhang\.info$
(?:^|\.)2017\.hk$
(?:^|\.)21andy\.com$
(?:^|\.)21pron\.com$
(?:^|\.)21sextury\.com$
(?:^|\.)228\.net\.tw$
(?:^|\.)233abc\.com$
(?:^|\.)24hrs\.ca$
(?:^|\.)24smile\.org$
(?:^|\.)25u\.com$
(?:^|\.)2lipstube\.com$
(?:^|\.)2shared\.com$
(?:^|\.)2waky\.com$
(?:^|\.)3-a\.net$
(?:^|\.)30boxes\.com$
(?:^|\.)315lz\.com$
(?:^|\.)32red\.com$
(?:^|\.)36rain\.com$
(?:^|\.)3a5a\.com$
(?:^|\.)3arabtv\.com$
(?:^|\.)3boys2girls\.com$
(?:^|\.)3d-game\.com$
(?:^|\.)3proxy\.ru$
(?:^|\.)3ren\.ca$
(?:^|\.)3tui\.net$
(?:^|\.)43110\.cf$
(?:^|\.)466453\.com$
(?:^|\.)4bluestones\.biz$
(?:^|\.)4chan\.com$
(?:^|\.)4dq\.com$
(?:^|\.)4everproxy\.com$
(?:^|\.)4irc\.com$
(?:^|\.)4mydomain\.com$
(?:^|\.)4pu\.com$
(?:^|\.)4rbtv\.com$
(?:^|\.)4shared\.com$
(?:^|\.)51\.ca$
(?:^|\.)51jav\.org$
(?:^|\.)51luoben\.com$
(?:^|\.)5278\.cc$
(?:^|\.)5299\.tv$
(?:^|\.)56cun04\.jigsy\.com$
(?:^|\.)5aimiku\.com$
(?:^|\.)5i01\.com$
(?:^|\.)5isotoi5\.org$
(?:^|\.)5maodang\.com$
(?:^|\.)63i\.com$
(?:^|\.)64memo$
(?:^|\.)64museum\.org$
(?:^|\.)64tianwang\.com$
(?:^|\.)64wiki\.com$
(?:^|\.)66\.ca$
(?:^|\.)666kb\.com$
(?:^|\.)6park\.com$
(?:^|\.)6parker\.com$
(?:^|\.)7capture\.com$
(?:^|\.)7cow\.com$
(?:^|\.)8-d\.com$
(?:^|\.)85cc\.net$
(?:^|\.)85cc\.us$
(?:^|\.)85st\.com$
(?:^|\.)881903\.com$
(?:^|\.)888\.com$
(?:^|\.)888poker\.com$
(?:^|\.)89-64\.org$
(?:^|\.)89\.64\.charter\.constitutionalism\.solutions$
(?:^|\.)8news\.com\.tw$
(?:^|\.)8z1\.net$
(?:^|\.)9001700\.com$
(?:^|\.)908taiwan\.org$
(?:^|\.)91porn\.com$
(?:^|\.)91vps\.club$
(?:^|\.)92ccav\.com$
(?:^|\.)991\.com$
(?:^|\.)99btgc01\.com$
(?:^|\.)99cn\.info$
(?:^|\.)9bis\.com$
(?:^|\.)9bis\.net$
(?:^|\.)9gag\.com$
(?:^|\.)a-normal-day\.com$
(?:^|\.)a248\.e\.akamai\.net$
(?:^|\.)a5\.com\.ru$
(?:^|\.)aamacau\.com$
(?:^|\.)abc\.com$
(?:^|\.)abc\.net\.au$
(?:^|\.)abc\.pp\.ru$
(?:^|\.)abc\.xyz$
(?:^|\.)abchinese\.com$
(?:^|\.)abclite\.net$
(?:^|\.)abebooks\.com$
(?:^|\.)abematv\.akamaized\.net$
(?:^|\.)abitno\.linpie\.com$
(?:^|\.)ablwang\.com$
(?:^|\.)aboluowang\.com$
(?:^|\.)about\.google$
(?:^|\.)aboutgfw\.com$
(?:^|\.)abs\.edu$
(?:^|\.)ac\.jiruan\.net$
(?:^|\.)accim\.org$
(?:^|\.)aceros-de-hispania\.com$
(?:^|\.)acevpn\.com$
(?:^|\.)acg18\.me$
(?:^|\.)acgkj\.com$
(?:^|\.)acmedia365\.com$
(?:^|\.)acmetoy\.com$
(?:^|\.)acnw\.com\.au$
(?:^|\.)actfortibet\.org$
(?:^|\.)actimes\.com\.au$
(?:^|\.)activpn\.com$
(?:^|\.)aculo\.us$
(?:^|\.)adcex\.com$
(?:^|\.)addictedtocoffee\.de$
(?:^|\.)adelaidebbs\.com$
(?:^|\.)admin\.recaptcha\.net$
(?:^|\.)admob\.com$
(?:^|\.)adpl\.org\.hk$
(?:^|\.)ads-twitter\.com$
(?:^|\.)adsense\.com$
(?:^|\.)adult-sex-games\.com$
(?:^|\.)adult\.friendfinder\.com$
(?:^|\.)adultfriendfinder\.com$
(?:^|\.)adultkeep\.net$
(?:^|\.)advanscene\.com$
(?:^|\.)advertfan\.com$
(?:^|\.)ae\.hao123\.com$
(?:^|\.)ae\.org$
(?:^|\.)aenhancers\.com$
(?:^|\.)aex\.com$
(?:^|\.)af\.mil$
(?:^|\.)afantibbs\.com$
(?:^|\.)agnesb\.fr$
(?:^|\.)agoogleaday\.com$
(?:^|\.)agro\.hk$
(?:^|\.)ahr0chm6ly95zwnslm5lda$
(?:^|\.)ai-kan\.net$
(?:^|\.)ai-wen\.net$
(?:^|\.)ai\.binwang\.me$
(?:^|\.)ai\.google$
(?:^|\.)aiph\.net$
(?:^|\.)airasia\.com$
(?:^|\.)airconsole\.com$
(?:^|\.)airvpn\.org$
(?:^|\.)aisex\.com$
(?:^|\.)ait\.org\.tw$
(?:^|\.)aiweiwei\.com$
(?:^|\.)aiweiweiblog\.com$
(?:^|\.)akademiye\.org$
(?:^|\.)akiba-online\.com$
(?:^|\.)akiba-web\.com$
(?:^|\.)akow\.org$
(?:^|\.)al-islam\.com$
(?:^|\.)al-qimmah\.net$
(?:^|\.)alabout\.com$
(?:^|\.)alanhou\.com$
(?:^|\.)alarab\.qa$
(?:^|\.)alasbarricadas\.org$
(?:^|\.)alexlur\.org$
(?:^|\.)alforattv\.net$
(?:^|\.)alhayat\.com$
(?:^|\.)alicejapan\.co\.jp$
(?:^|\.)aliengu\.com$
(?:^|\.)alkasir\.com$
(?:^|\.)allcoin\.com$
(?:^|\.)allconnected\.co$
(?:^|\.)alldrawnsex\.com$
(?:^|\.)allervpn\.com$
(?:^|\.)allfinegirls\.com$
(?:^|\.)allgirlmassage\.com$
(?:^|\.)allgirlsallowed\.org$
(?:^|\.)allgravure\.com$
(?:^|\.)alliance\.org\.hk$
(?:^|\.)allinfa\.com$
(?:^|\.)alljackpotscasino\.com$
(?:^|\.)allmovie\.com$
(?:^|\.)allowed\.org$
(?:^|\.)almasdarnews\.com$
(?:^|\.)almostmy\.com$
(?:^|\.)alphaporno\.com$
(?:^|\.)alternate-tools\.com$
(?:^|\.)alternativeto\.net$
(?:^|\.)altrec\.com$
(?:^|\.)alvinalexander\.com$
(?:^|\.)alwaysdata\.com$
(?:^|\.)alwaysdata\.net$
(?:^|\.)alwaysvpn\.com$
(?:^|\.)am730\.com\.hk$
(?:^|\.)amazon\.co\.jp$
(?:^|\.)amazon\.com$
(?:^|\.)ameblo\.jp$
(?:^|\.)americangreencard\.com$
(?:^|\.)americanunfinished\.com$
(?:^|\.)amiblockedornot\.com$
(?:^|\.)amigobbs\.net$
(?:^|\.)amitabhafoundation\.us$
(?:^|\.)amnesty\.org$
(?:^|\.)amnesty\.org\.hk$
(?:^|\.)amnesty\.tw$
(?:^|\.)amnestyusa\.org$
(?:^|\.)amnyemachen\.org$
(?:^|\.)amoiist\.com$
(?:^|\.)ampproject\.org$
(?:^|\.)amtb-taipei\.org$
(?:^|\.)anchorfree\.com$
(?:^|\.)ancsconf\.org$
(?:^|\.)andfaraway\.net$
(?:^|\.)android-x86\.org$
(?:^|\.)android\.com$
(?:^|\.)androidify\.com$
(?:^|\.)androidplus\.co$
(?:^|\.)androidtv\.com$
(?:^|\.)andygod\.com$
(?:^|\.)angela-merkel\.de$
(?:^|\.)angelfire\.com$
(?:^|\.)angola\.org$
(?:^|\.)angularjs\.org$
(?:^|\.)animecrazy\.net$
(?:^|\.)animeshippuuden\.com$
(?:^|\.)aniscartujo\.com$
(?:^|\.)annatam\.com$
(?:^|\.)anobii\.com$
(?:^|\.)anontext\.com$
(?:^|\.)anonymise\.us$
(?:^|\.)anonymitynetwork\.com$
(?:^|\.)anonymizer\.com$
(?:^|\.)anonymouse\.org$
(?:^|\.)anpopo\.com$
(?:^|\.)answering-islam\.org$
(?:^|\.)anthonycalzadilla\.com$
(?:^|\.)anti1984\.com$
(?:^|\.)antichristendom\.com$
(?:^|\.)antiwave\.net$
(?:^|\.)anyporn\.com$
(?:^|\.)anysex\.com$
(?:^|\.)aobo\.com\.au$
(?:^|\.)aofriend\.com$
(?:^|\.)aofriend\.com\.au$
(?:^|\.)aojiao\.org$
(?:^|\.)aolchannels\.aol\.com$
(?:^|\.)aomiwang\.com$
(?:^|\.)apartmentratings\.com$
(?:^|\.)apartments\.co
gitextract_e5trxlyi/
├── .circleci/
│ └── config.yml
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── questions-support-requests-other.md
│ ├── doc-json.md
│ ├── faq.md
│ ├── faq.ru.md
│ └── workflows/
│ └── e2e-test.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── AUTHORS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── build.gradle.kts
├── buildSrc/
│ ├── build.gradle.kts
│ ├── settings.gradle.kts
│ └── src/
│ └── main/
│ └── kotlin/
│ └── Helpers.kt
├── core/
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── gfwlist/
│ │ ├── gen.pl
│ │ ├── gen.py
│ │ └── parse.py
│ ├── proguard-rules.pro
│ ├── schemas/
│ │ ├── com.github.shadowsocks.database.PrivateDatabase/
│ │ │ ├── 26.json
│ │ │ ├── 27.json
│ │ │ ├── 28.json
│ │ │ └── 29.json
│ │ └── com.github.shadowsocks.database.PublicDatabase/
│ │ └── 3.json
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── github/
│ │ └── shadowsocks/
│ │ ├── acl/
│ │ │ └── AclTest.kt
│ │ ├── database/
│ │ │ ├── MigrationTest.kt
│ │ │ └── ProfileTest.kt
│ │ └── net/
│ │ └── SubnetTest.kt
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ └── aidl/
│ │ │ ├── IShadowsocksService.aidl
│ │ │ ├── IShadowsocksServiceCallback.aidl
│ │ │ └── TrafficStats.aidl
│ │ ├── assets/
│ │ │ └── acl/
│ │ │ ├── bypass-china.acl
│ │ │ ├── bypass-lan-china.acl
│ │ │ ├── bypass-lan.acl
│ │ │ ├── china-list.acl
│ │ │ └── gfwlist.acl
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ ├── BootReceiver.kt
│ │ │ ├── Core.kt
│ │ │ ├── UrlImportActivity.kt
│ │ │ ├── VpnRequestActivity.kt
│ │ │ ├── acl/
│ │ │ │ ├── Acl.kt
│ │ │ │ └── AclSyncer.kt
│ │ │ ├── aidl/
│ │ │ │ ├── ShadowsocksConnection.kt
│ │ │ │ └── TrafficStats.kt
│ │ │ ├── bg/
│ │ │ │ ├── BaseService.kt
│ │ │ │ ├── Executable.kt
│ │ │ │ ├── GuardedProcessPool.kt
│ │ │ │ ├── LocalDnsWorker.kt
│ │ │ │ ├── ProxyInstance.kt
│ │ │ │ ├── ProxyService.kt
│ │ │ │ ├── ServiceNotification.kt
│ │ │ │ ├── TrafficMonitor.kt
│ │ │ │ ├── TransproxyService.kt
│ │ │ │ └── VpnService.kt
│ │ │ ├── database/
│ │ │ │ ├── KeyValuePair.kt
│ │ │ │ ├── PrivateDatabase.kt
│ │ │ │ ├── Profile.kt
│ │ │ │ ├── ProfileManager.kt
│ │ │ │ ├── PublicDatabase.kt
│ │ │ │ └── migration/
│ │ │ │ └── RecreateSchemaMigration.kt
│ │ │ ├── net/
│ │ │ │ ├── ConcurrentLocalSocketListener.kt
│ │ │ │ ├── DefaultNetworkListener.kt
│ │ │ │ ├── DnsResolverCompat.kt
│ │ │ │ ├── HttpsTest.kt
│ │ │ │ ├── LocalSocketListener.kt
│ │ │ │ └── Subnet.kt
│ │ │ ├── plugin/
│ │ │ │ ├── NativePlugin.kt
│ │ │ │ ├── NoPlugin.kt
│ │ │ │ ├── Plugin.kt
│ │ │ │ ├── PluginConfiguration.kt
│ │ │ │ ├── PluginList.kt
│ │ │ │ ├── PluginManager.kt
│ │ │ │ └── ResolvedPlugin.kt
│ │ │ ├── preference/
│ │ │ │ ├── DataStore.kt
│ │ │ │ ├── EditTextPreferenceModifiers.kt
│ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt
│ │ │ │ └── RoomPreferenceDataStore.kt
│ │ │ ├── subscription/
│ │ │ │ ├── Subscription.kt
│ │ │ │ └── SubscriptionService.kt
│ │ │ ├── utils/
│ │ │ │ ├── ActivityResultContracts.kt
│ │ │ │ ├── ArrayIterator.kt
│ │ │ │ ├── Commandline.kt
│ │ │ │ ├── Constants.kt
│ │ │ │ ├── DeviceStorageApp.kt
│ │ │ │ ├── DirectBoot.kt
│ │ │ │ ├── Sorters.kt
│ │ │ │ └── Utils.kt
│ │ │ └── widget/
│ │ │ └── AutoCollapseTextView.kt
│ │ ├── jni/
│ │ │ ├── Android.mk
│ │ │ ├── Application.mk
│ │ │ └── build-shared-executable.mk
│ │ ├── res/
│ │ │ ├── color-v24/
│ │ │ │ └── ic_launcher_foreground_shadow.xml
│ │ │ ├── drawable/
│ │ │ │ ├── ic_file_cloud_download.xml
│ │ │ │ ├── ic_launcher_monochrome.xml
│ │ │ │ └── ic_service_active.xml
│ │ │ ├── drawable-anydpi-v24/
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── mipmap-anydpi-v24/
│ │ │ │ └── banner.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_launcher.xml
│ │ │ ├── values/
│ │ │ │ ├── arrays.xml
│ │ │ │ ├── colors.xml
│ │ │ │ └── strings.xml
│ │ │ ├── values-ar/
│ │ │ │ └── strings.xml
│ │ │ ├── values-de/
│ │ │ │ └── strings.xml
│ │ │ ├── values-es/
│ │ │ │ └── strings.xml
│ │ │ ├── values-fa/
│ │ │ │ └── strings.xml
│ │ │ ├── values-fr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ja/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ko/
│ │ │ │ └── strings.xml
│ │ │ ├── values-ru/
│ │ │ │ └── strings.xml
│ │ │ ├── values-tr/
│ │ │ │ └── strings.xml
│ │ │ ├── values-uk/
│ │ │ │ └── strings.xml
│ │ │ ├── values-zh-rCN/
│ │ │ │ └── strings.xml
│ │ │ ├── values-zh-rTW/
│ │ │ │ └── strings.xml
│ │ │ └── xml/
│ │ │ ├── backup_descriptor.xml
│ │ │ ├── default_configs.xml
│ │ │ ├── locales_config.xml
│ │ │ └── network_security_config.xml
│ │ └── rust/
│ │ └── linker-wrapper.py
│ └── test/
│ └── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── database/
│ └── KeyValuePairTest.kt
├── detekt.yml
├── gradle/
│ ├── gradle-daemon-jvm.properties
│ ├── libs.versions.toml
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mobile/
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── google-services.json
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── shadowsocks/
│ │ ├── AboutFragment.kt
│ │ ├── App.kt
│ │ ├── AppManager.kt
│ │ ├── GlobalSettingsFragment.kt
│ │ ├── GlobalSettingsPreferenceFragment.kt
│ │ ├── MainActivity.kt
│ │ ├── ProfileConfigActivity.kt
│ │ ├── ProfileConfigFragment.kt
│ │ ├── ProfilesFragment.kt
│ │ ├── QuickToggleShortcut.kt
│ │ ├── ScannerActivity.kt
│ │ ├── ToolbarFragment.kt
│ │ ├── UdpFallbackProfileActivity.kt
│ │ ├── acl/
│ │ │ └── CustomRulesFragment.kt
│ │ ├── bg/
│ │ │ └── TileService.kt
│ │ ├── preference/
│ │ │ ├── PluginConfigurationDialogFragment.kt
│ │ │ ├── PluginPreference.kt
│ │ │ └── PluginPreferenceDialogFragment.kt
│ │ ├── subscription/
│ │ │ └── SubscriptionFragment.kt
│ │ ├── tasker/
│ │ │ ├── ActionListener.kt
│ │ │ ├── ConfigActivity.kt
│ │ │ └── Settings.kt
│ │ └── widget/
│ │ ├── FabProgressBehavior.kt
│ │ ├── ServiceButton.kt
│ │ ├── StatsBar.kt
│ │ ├── UndoSnackbarManager.kt
│ │ └── WindowInsetsListeners.kt
│ └── res/
│ ├── color/
│ │ ├── background_service.xml
│ │ └── nav_item_tint.xml
│ ├── drawable/
│ │ ├── background_profile.xml
│ │ ├── background_selectable.xml
│ │ ├── ic_action_assignment.xml
│ │ ├── ic_action_copyright.xml
│ │ ├── ic_action_delete.xml
│ │ ├── ic_action_description.xml
│ │ ├── ic_action_dns.xml
│ │ ├── ic_action_done.xml
│ │ ├── ic_action_help_outline.xml
│ │ ├── ic_action_lock.xml
│ │ ├── ic_action_lock_open.xml
│ │ ├── ic_action_note_add.xml
│ │ ├── ic_action_settings.xml
│ │ ├── ic_app_shortcut_background.xml
│ │ ├── ic_av_playlist_add.xml
│ │ ├── ic_communication_phonelink_ring.xml
│ │ ├── ic_device_data_usage.xml
│ │ ├── ic_device_developer_mode.xml
│ │ ├── ic_file_cloud_queue.xml
│ │ ├── ic_file_file_upload.xml
│ │ ├── ic_hardware_router.xml
│ │ ├── ic_image_camera_alt.xml
│ │ ├── ic_image_edit.xml
│ │ ├── ic_image_looks_6.xml
│ │ ├── ic_image_photo.xml
│ │ ├── ic_maps_360.xml
│ │ ├── ic_maps_directions.xml
│ │ ├── ic_maps_directions_boat.xml
│ │ ├── ic_navigation_apps.xml
│ │ ├── ic_navigation_menu.xml
│ │ ├── ic_notification_enhanced_encryption.xml
│ │ ├── ic_qu_camera_launcher.xml
│ │ ├── ic_qu_shadowsocks_foreground.xml
│ │ ├── ic_qu_shadowsocks_launcher.xml
│ │ ├── ic_service_busy.xml
│ │ ├── ic_service_connected.xml
│ │ ├── ic_service_connecting.xml
│ │ ├── ic_service_idle.xml
│ │ ├── ic_service_stopped.xml
│ │ ├── ic_service_stopping.xml
│ │ ├── ic_settings_password.xml
│ │ ├── ic_social_emoji_symbols.xml
│ │ └── ic_social_share.xml
│ ├── drawable-v26/
│ │ ├── ic_qu_camera_launcher.xml
│ │ └── ic_qu_shadowsocks_launcher.xml
│ ├── layout/
│ │ ├── dialog_acl_rule.xml
│ │ ├── dialog_subscription.xml
│ │ ├── icon_list_item_2.xml
│ │ ├── layout_about.xml
│ │ ├── layout_apps.xml
│ │ ├── layout_apps_item.xml
│ │ ├── layout_custom_rules.xml
│ │ ├── layout_global_settings.xml
│ │ ├── layout_list.xml
│ │ ├── layout_main.xml
│ │ ├── layout_profile.xml
│ │ ├── layout_profile_config.xml
│ │ ├── layout_scanner.xml
│ │ ├── layout_subscriptions.xml
│ │ ├── layout_tasker.xml
│ │ ├── layout_udp_fallback.xml
│ │ ├── navigation_header.xml
│ │ └── preference_dialog_password.xml
│ ├── menu/
│ │ ├── app_manager_menu.xml
│ │ ├── custom_rules_menu.xml
│ │ ├── custom_rules_selection.xml
│ │ ├── navigation_main.xml
│ │ ├── profile_config_menu.xml
│ │ ├── profile_manager_menu.xml
│ │ ├── profile_share_popup.xml
│ │ ├── scanner_menu.xml
│ │ └── subscription_menu.xml
│ ├── raw/
│ │ └── about.html
│ ├── values/
│ │ ├── arrays.xml
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ └── styles.xml
│ ├── values-night/
│ │ └── colors.xml
│ └── xml/
│ ├── pref_global.xml
│ ├── pref_profile.xml
│ └── shortcuts.xml
├── plugin/
│ ├── .gitignore
│ ├── CHANGES.md
│ ├── README.md
│ ├── build.gradle.kts
│ ├── doc.md
│ ├── gradle.properties
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── github/
│ │ │ └── shadowsocks/
│ │ │ └── plugin/
│ │ │ ├── AlertDialogFragment.kt
│ │ │ ├── ConfigurationActivity.kt
│ │ │ ├── HelpActivity.kt
│ │ │ ├── HelpCallback.kt
│ │ │ ├── NativePluginProvider.kt
│ │ │ ├── OptionsCapableActivity.kt
│ │ │ ├── PathProvider.kt
│ │ │ ├── PluginContract.kt
│ │ │ ├── PluginOptions.kt
│ │ │ ├── Utils.kt
│ │ │ └── fragment/
│ │ │ ├── AlertDialogFragment.kt
│ │ │ └── Utils.kt
│ │ └── res/
│ │ ├── color/
│ │ │ └── mtrl_text_btn_text_color_selector.xml
│ │ ├── drawable/
│ │ │ └── ic_navigation_close.xml
│ │ ├── layout/
│ │ │ └── toolbar_light_dark.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-de/
│ │ │ └── strings.xml
│ │ ├── values-es/
│ │ │ └── strings.xml
│ │ ├── values-fa/
│ │ │ └── strings.xml
│ │ ├── values-fr/
│ │ │ └── strings.xml
│ │ ├── values-ja/
│ │ │ └── strings.xml
│ │ ├── values-ko/
│ │ │ └── strings.xml
│ │ ├── values-night/
│ │ │ └── colors.xml
│ │ ├── values-ru/
│ │ │ └── strings.xml
│ │ ├── values-tr/
│ │ │ └── strings.xml
│ │ ├── values-uk/
│ │ │ └── strings.xml
│ │ ├── values-v29/
│ │ │ └── styles.xml
│ │ ├── values-zh-rCN/
│ │ │ └── strings.xml
│ │ └── values-zh-rTW/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── plugin/
│ └── PluginOptionsTest.kt
├── privacy_policy.md
├── release.sh
├── repositories.gradle.kts
├── settings.gradle.kts
├── test-e2e.sh
├── translate.py
└── tv/
├── .gitignore
├── build.gradle.kts
├── google-services.json
└── src/
├── freedom/
│ └── res/
│ └── values/
│ └── styles.xml
└── main/
├── AndroidManifest.xml
├── java/
│ └── com/
│ └── github/
│ └── shadowsocks/
│ └── tv/
│ ├── App.kt
│ ├── MainActivity.kt
│ ├── MainFragment.kt
│ ├── MainPreferenceFragment.kt
│ ├── ProfilesDialogFragment.kt
│ └── preference/
│ └── LeanbackSingleListPreferenceDialogFragment.kt
└── res/
├── layout/
│ ├── activity_main.xml
│ └── leanback_list_preference_item_single_2.xml
├── values/
│ └── styles.xml
└── xml/
└── pref_main.xml
SYMBOL INDEX (12 symbols across 4 files) FILE: core/gfwlist/gen.py function main (line 9) | def main(): FILE: core/gfwlist/parse.py function parse_args (line 14) | def parse_args(): function decode_gfwlist (line 23) | def decode_gfwlist(content): function get_hostname (line 31) | def get_hostname(something): function add_domain_to_set (line 43) | def add_domain_to_set(s, something): function parse_gfwlist (line 54) | def parse_gfwlist(content): function generate_acl (line 81) | def generate_acl(domains): function main (line 109) | def main(): FILE: core/src/main/rust/linker-wrapper.py function win2posix (line 17) | def win2posix(path): function update_in_place (line 28) | def update_in_place(arglist): function posix2win (line 53) | def posix2win(path): FILE: translate.py function main (line 33) | def main(api_token, project_id, languages, tags, file_path, header_comme...
Condensed preview — 309 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,758K chars).
[
{
"path": ".circleci/config.yml",
"chars": 1595,
"preview": "version: 2.1\n\norbs:\n android: circleci/android@2.3.0\n\njobs:\n build:\n executor:\n name: android/android-docker\n "
},
{
"path": ".github/FUNDING.yml",
"chars": 16,
"preview": "github: [Mygod]\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1500,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\nPlease read con"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 650,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\nPlea"
},
{
"path": ".github/ISSUE_TEMPLATE/questions-support-requests-other.md",
"chars": 272,
"preview": "---\nname: Questions/Support requests/Other\nabout: You should probably use the forum\ntitle: ''\nlabels: question\nassignees"
},
{
"path": ".github/doc-json.md",
"chars": 5008,
"preview": "# Documentation for JSON format\n\nshadowsocks-android accepts processing Shadowsocks configs through JSON files.\nThis doc"
},
{
"path": ".github/faq.md",
"chars": 4644,
"preview": "### Troubleshooting\n\nCannot connect to server:\n\n1. Stop battery saver if it's active;\n2. Check your config;\n3. Wipe app "
},
{
"path": ".github/faq.ru.md",
"chars": 5308,
"preview": "### Решение проблем\n\nНе получается подключиться к серверу:\n\n1. Выключите режим энергосбережения, если он активен;\n2. Про"
},
{
"path": ".github/workflows/e2e-test.yml",
"chars": 2423,
"preview": "name: E2E Test\non:\n push:\n branches: [master]\n pull_request:\n workflow_dispatch:\n\njobs:\n e2e-test:\n runs-on: u"
},
{
"path": ".gitignore",
"chars": 146,
"preview": "# Gradle & Android Studio\nlocal.properties\n.gradle/\n.externalNativeBuild/\nbuild/\ncaptures/\nrelease/\n\n.idea/\n*.iml\n\n# rel"
},
{
"path": ".gitmodules",
"chars": 787,
"preview": "[submodule \"core/src/main/jni/badvpn\"]\n\tpath = core/src/main/jni/badvpn\n\turl = https://github.com/shadowsocks/badvpn.git"
},
{
"path": ".travis.yml",
"chars": 281,
"preview": "sudo: required\n\naddons:\n artifacts: true\n\nservices:\n - docker\n\nbefore_install:\n - docker pull circleci/android:"
},
{
"path": "AUTHORS",
"chars": 360,
"preview": "Shadowsocks-android was originally created in late 2013, by\nMax Lv <max.c.lv@gmail.com>.\n\nHere is an inevitably incomple"
},
{
"path": "CONTRIBUTING.md",
"chars": 873,
"preview": "# Submitting Issues\n\n* Issues can be submitted in two different places:\n 1) [The GitHub issue log](https://github.com"
},
{
"path": "LICENSE",
"chars": 738,
"preview": "\nCopyright (C) 2017 by Max Lv <max.c.lv@gmail.com>\nCopyright (C) 2017 by Mygod Studio <contact-shadowsocks-android@mygod"
},
{
"path": "README.md",
"chars": 3936,
"preview": "## [Shadowsocks](https://shadowsocks.org) for Android\n\n[\n\ndependencies {\n implementation(libs.android"
},
{
"path": "buildSrc/settings.gradle.kts",
"chars": 154,
"preview": "dependencyResolutionManagement {\n versionCatalogs {\n create(\"libs\") {\n from(files(\"../gradle/libs.v"
},
{
"path": "buildSrc/src/main/kotlin/Helpers.kt",
"chars": 3134,
"preview": "import com.android.build.api.dsl.CommonExtension\nimport com.android.build.gradle.BaseExtension\nimport org.gradle.api.Jav"
},
{
"path": "core/.gitignore",
"chars": 14,
"preview": "/build\n/.cxx/\n"
},
{
"path": "core/build.gradle.kts",
"chars": 4305,
"preview": "import com.android.build.gradle.internal.tasks.factory.dependsOn\n\nplugins {\n id(\"com.android.library\")\n id(\"com.go"
},
{
"path": "core/gfwlist/gen.pl",
"chars": 280,
"preview": "#!/usr/bin/env perl\n## ArchLinux install package via pacman: perl-net-cidr-lite\nuse strict;\nuse warnings;\nuse Net::CIDR:"
},
{
"path": "core/gfwlist/gen.py",
"chars": 309,
"preview": "#!/usr/bin/python\n# -*- encoding: utf8 -*-\n\nimport sys\n\nimport IPy\n\n\ndef main():\n china_list_set = IPy.IPSet()\n fo"
},
{
"path": "core/gfwlist/parse.py",
"chars": 3113,
"preview": "#!/usr/bin/python\n# -*- coding: utf-8 -*-\n\nimport pkgutil\nimport urlparse\nimport socket\nimport logging\nfrom argparse imp"
},
{
"path": "core/proguard-rules.pro",
"chars": 956,
"preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
},
{
"path": "core/schemas/com.github.shadowsocks.database.PrivateDatabase/26.json",
"chars": 4719,
"preview": "{\n \"formatVersion\": 1,\n \"database\": {\n \"version\": 26,\n \"identityHash\": \"a69accf94393d71abdb60873d4ea74a2\",\n \""
},
{
"path": "core/schemas/com.github.shadowsocks.database.PrivateDatabase/27.json",
"chars": 4912,
"preview": "{\n \"formatVersion\": 1,\n \"database\": {\n \"version\": 27,\n \"identityHash\": \"8743c2e56bdbdabca7fcb89dff5434ba\",\n \""
},
{
"path": "core/schemas/com.github.shadowsocks.database.PrivateDatabase/28.json",
"chars": 5101,
"preview": "{\n \"formatVersion\": 1,\n \"database\": {\n \"version\": 28,\n \"identityHash\": \"b60ecca4d684ffe73173478bffd50a17\",\n \""
},
{
"path": "core/schemas/com.github.shadowsocks.database.PrivateDatabase/29.json",
"chars": 5320,
"preview": "{\n \"formatVersion\": 1,\n \"database\": {\n \"version\": 29,\n \"identityHash\": \"5b5c55a1277c63e14416316f9198ed43\",\n \""
},
{
"path": "core/schemas/com.github.shadowsocks.database.PublicDatabase/3.json",
"chars": 1275,
"preview": "{\n \"formatVersion\": 1,\n \"database\": {\n \"version\": 3,\n \"identityHash\": \"f1aab1fb633378621635c344dbc8ac7b\",\n \"e"
},
{
"path": "core/src/androidTest/java/com/github/shadowsocks/acl/AclTest.kt",
"chars": 2182,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/androidTest/java/com/github/shadowsocks/database/MigrationTest.kt",
"chars": 2745,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/androidTest/java/com/github/shadowsocks/database/ProfileTest.kt",
"chars": 2045,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/androidTest/java/com/github/shadowsocks/net/SubnetTest.kt",
"chars": 2256,
"preview": "package com.github.shadowsocks.net\n\nimport android.net.InetAddresses.parseNumericAddress\nimport org.junit.Assert\nimport "
},
{
"path": "core/src/main/AndroidManifest.xml",
"chars": 5763,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/t"
},
{
"path": "core/src/main/aidl/com/github/shadowsocks/aidl/IShadowsocksService.aidl",
"chars": 472,
"preview": "package com.github.shadowsocks.aidl;\n\nimport com.github.shadowsocks.aidl.IShadowsocksServiceCallback;\n\ninterface IShadow"
},
{
"path": "core/src/main/aidl/com/github/shadowsocks/aidl/IShadowsocksServiceCallback.aidl",
"chars": 398,
"preview": "package com.github.shadowsocks.aidl;\n\nimport com.github.shadowsocks.aidl.TrafficStats;\n\noneway interface IShadowsocksSer"
},
{
"path": "core/src/main/aidl/com/github/shadowsocks/aidl/TrafficStats.aidl",
"chars": 63,
"preview": "package com.github.shadowsocks.aidl;\n\nparcelable TrafficStats;\n"
},
{
"path": "core/src/main/assets/acl/bypass-china.acl",
"chars": 238930,
"preview": "[proxy_all]\n\n[bypass_list]\n1.0.1.0/24\n1.0.2.0/23\n1.0.8.0/21\n1.0.32.0/19\n1.1.0.0/24\n1.1.2.0/23\n1.1.4.0/22\n1.1.8.0/21\n1.1."
},
{
"path": "core/src/main/assets/acl/bypass-lan-china.acl",
"chars": 239167,
"preview": "[proxy_all]\n\n[bypass_list]\n0.0.0.0/8\n10.0.0.0/8\n100.64.0.0/10\n127.0.0.0/8\n169.254.0.0/16\n172.16.0.0/12\n192.0.0.0/24\n192."
},
{
"path": "core/src/main/assets/acl/bypass-lan.acl",
"chars": 264,
"preview": "[proxy_all]\n\n[bypass_list]\n0.0.0.0/8\n10.0.0.0/8\n100.64.0.0/10\n127.0.0.0/8\n169.254.0.0/16\n172.16.0.0/12\n192.0.0.0/24\n192."
},
{
"path": "core/src/main/assets/acl/china-list.acl",
"chars": 83483,
"preview": "[bypass_all]\n\n[proxy_list]\n1.0.1.0/24\n1.0.2.0/23\n1.0.8.0/21\n1.0.32.0/19\n1.1.0.0/24\n1.1.2.0/23\n1.1.4.0/22\n1.1.8.0/21\n1.1."
},
{
"path": "core/src/main/assets/acl/gfwlist.acl",
"chars": 130660,
"preview": "#\n# GFW list from https://github.com/gfwlist/gfwlist/blob/master/gfwlist.txt\n#\n\n[bypass_all]\n\n[proxy_list]\n# Telegram IP"
},
{
"path": "core/src/main/java/com/github/shadowsocks/BootReceiver.kt",
"chars": 3021,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/Core.kt",
"chars": 9322,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/UrlImportActivity.kt",
"chars": 3789,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/VpnRequestActivity.kt",
"chars": 2979,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/acl/Acl.kt",
"chars": 9351,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/acl/AclSyncer.kt",
"chars": 4157,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt",
"chars": 6733,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/aidl/TrafficStats.kt",
"chars": 2072,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/BaseService.kt",
"chars": 16880,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/Executable.kt",
"chars": 2739,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt",
"chars": 6327,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/LocalDnsWorker.kt",
"chars": 2612,
"preview": "package com.github.shadowsocks.bg\n\nimport android.net.LocalSocket\nimport com.github.shadowsocks.Core\nimport com.github.s"
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/ProxyInstance.kt",
"chars": 6366,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/ProxyService.kt",
"chars": 2320,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/ServiceNotification.kt",
"chars": 6289,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/TrafficMonitor.kt",
"chars": 4851,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/TransproxyService.kt",
"chars": 3051,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/bg/VpnService.kt",
"chars": 10758,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/KeyValuePair.kt",
"chars": 5052,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/PrivateDatabase.kt",
"chars": 4622,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/Profile.kt",
"chars": 16494,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/ProfileManager.kt",
"chars": 6292,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/PublicDatabase.kt",
"chars": 2841,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/database/migration/RecreateSchemaMigration.kt",
"chars": 2230,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/ConcurrentLocalSocketListener.kt",
"chars": 2247,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt",
"chars": 7672,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/DnsResolverCompat.kt",
"chars": 9930,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt",
"chars": 5281,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/LocalSocketListener.kt",
"chars": 3888,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/net/Subnet.kt",
"chars": 4759,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/NativePlugin.kt",
"chars": 1830,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/NoPlugin.kt",
"chars": 260,
"preview": "package com.github.shadowsocks.plugin\n\nimport com.github.shadowsocks.Core.app\n\nobject NoPlugin : Plugin() {\n override"
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/Plugin.kt",
"chars": 2232,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/PluginConfiguration.kt",
"chars": 3431,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/PluginList.kt",
"chars": 2707,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/PluginManager.kt",
"chars": 12436,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/plugin/ResolvedPlugin.kt",
"chars": 3361,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/preference/DataStore.kt",
"chars": 5720,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/preference/EditTextPreferenceModifiers.kt",
"chars": 2418,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/preference/OnPreferenceDataStoreChangeListener.kt",
"chars": 1760,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/preference/RoomPreferenceDataStore.kt",
"chars": 4639,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/subscription/Subscription.kt",
"chars": 2764,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt",
"chars": 10823,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/ActivityResultContracts.kt",
"chars": 3258,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/ArrayIterator.kt",
"chars": 2184,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/Commandline.kt",
"chars": 6847,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/Constants.kt",
"chars": 3437,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/DeviceStorageApp.kt",
"chars": 3420,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/DirectBoot.kt",
"chars": 2109,
"preview": "package com.github.shadowsocks.utils\n\nimport android.annotation.TargetApi\nimport android.content.BroadcastReceiver\nimpor"
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/Sorters.kt",
"chars": 2546,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/utils/Utils.kt",
"chars": 5803,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/java/com/github/shadowsocks/widget/AutoCollapseTextView.kt",
"chars": 2708,
"preview": "/*******************************************************************************\n * "
},
{
"path": "core/src/main/jni/Android.mk",
"chars": 5358,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "core/src/main/jni/Application.mk",
"chars": 62,
"preview": "APP_STL := c++_static\nAPP_SUPPORT_FLEXIBLE_PAGE_SIZES := true\n"
},
{
"path": "core/src/main/jni/build-shared-executable.mk",
"chars": 1343,
"preview": "# Copyright (C) 2009 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "core/src/main/res/color-v24/ic_launcher_foreground_shadow.xml",
"chars": 349,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<gradient xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "core/src/main/res/drawable/ic_file_cloud_download.xml",
"chars": 525,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "core/src/main/res/drawable/ic_launcher_monochrome.xml",
"chars": 808,
"preview": "<vector android:height=\"108dp\" android:viewportHeight=\"108.0\"\n android:viewportWidth=\"108.0\" android:width=\"108dp\" xm"
},
{
"path": "core/src/main/res/drawable/ic_service_active.xml",
"chars": 435,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "core/src/main/res/drawable-anydpi-v24/ic_launcher_foreground.xml",
"chars": 986,
"preview": "<vector android:height=\"108dp\" android:viewportHeight=\"108.0\"\n android:viewportWidth=\"108.0\" android:width=\"108dp"
},
{
"path": "core/src/main/res/mipmap-anydpi-v24/banner.xml",
"chars": 4254,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:aapt=\"http://schemas.android.com/aapt\"\n "
},
{
"path": "core/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 338,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "core/src/main/res/values/arrays.xml",
"chars": 7711,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <string-array name=\"enc_method_entry\" translatable=\"false\">\n "
},
{
"path": "core/src/main/res/values/colors.xml",
"chars": 121,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">#7488A1</color>\n</resources>"
},
{
"path": "core/src/main/res/values/strings.xml",
"chars": 8284,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <string name=\"app_name\">Shadowsocks</string>\n <string name=\"quick"
},
{
"path": "core/src/main/res/values-ar/strings.xml",
"chars": 1757,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-de/strings.xml",
"chars": 10600,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-es/strings.xml",
"chars": 8484,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-fa/strings.xml",
"chars": 10608,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-fr/strings.xml",
"chars": 9342,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-ja/strings.xml",
"chars": 9496,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-ko/strings.xml",
"chars": 6043,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-ru/strings.xml",
"chars": 11305,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-tr/strings.xml",
"chars": 8634,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-uk/strings.xml",
"chars": 7199,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-zh-rCN/strings.xml",
"chars": 8787,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/values-zh-rTW/strings.xml",
"chars": 9015,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>\n Copyright (C) 2019"
},
{
"path": "core/src/main/res/xml/backup_descriptor.xml",
"chars": 393,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<full-backup-content xmlns:tools=\"http://schemas.android.com/tools\"\n "
},
{
"path": "core/src/main/res/xml/default_configs.xml",
"chars": 184,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<defaultsMap>\n <entry>\n <key>proxy_url</key>\n <value>https://soc"
},
{
"path": "core/src/main/res/xml/locales_config.xml",
"chars": 553,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<locale-config xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <l"
},
{
"path": "core/src/main/res/xml/network_security_config.xml",
"chars": 145,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<network-security-config>\n <base-config cleartextTrafficPermitted=\"false\"/>\n</"
},
{
"path": "core/src/main/rust/linker-wrapper.py",
"chars": 3111,
"preview": "from __future__ import absolute_import, print_function, unicode_literals\n\nimport os\nimport shlex\nimport shutil\nimport su"
},
{
"path": "core/src/test/java/com/github/shadowsocks/database/KeyValuePairTest.kt",
"chars": 2182,
"preview": "/*******************************************************************************\n * "
},
{
"path": "detekt.yml",
"chars": 391,
"preview": "comments:\n active: false\n\ncomplexity:\n LabeledExpression:\n active: false\n TooManyFunctions:\n ignoreDeprecated: "
},
{
"path": "gradle/gradle-daemon-jvm.properties",
"chars": 1164,
"preview": "#This file is generated by updateDaemonJvm\ntoolchainUrl.FREE_BSD.AARCH64=https\\://api.foojay.io/disco/v3.0/ids/ff1d4fc92"
},
{
"path": "gradle/libs.versions.toml",
"chars": 3401,
"preview": "[versions]\ncamera = \"1.5.2\"\ncoroutines = \"1.10.2\"\nlifecycle = \"2.10.0\"\nroom = \"2.8.4\"\nwork = \"2.11.0\"\n\n[libraries]\nandro"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 980,
"preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
},
{
"path": "gradlew",
"chars": 8710,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "gradlew.bat",
"chars": 2937,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "mobile/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "mobile/build.gradle.kts",
"chars": 1110,
"preview": "plugins {\n id(\"com.android.application\")\n id(\"com.google.android.gms.oss-licenses-plugin\")\n id(\"com.google.gms."
},
{
"path": "mobile/google-services.json",
"chars": 2572,
"preview": "{\n \"project_info\": {\n \"project_number\": \"261400168171\",\n \"firebase_url\": \"https://admob-app-id-3330146721.firebas"
},
{
"path": "mobile/src/main/AndroidManifest.xml",
"chars": 5295,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/t"
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt",
"chars": 4183,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/App.kt",
"chars": 2063,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/AppManager.kt",
"chars": 15137,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/GlobalSettingsFragment.kt",
"chars": 2287,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/GlobalSettingsPreferenceFragment.kt",
"chars": 4739,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/MainActivity.kt",
"chars": 11356,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/ProfileConfigActivity.kt",
"chars": 4011,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt",
"chars": 14047,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt",
"chars": 22065,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/QuickToggleShortcut.kt",
"chars": 3692,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt",
"chars": 9155,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/ToolbarFragment.kt",
"chars": 2186,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/UdpFallbackProfileActivity.kt",
"chars": 5322,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt",
"chars": 23325,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/bg/TileService.kt",
"chars": 4747,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/preference/PluginConfigurationDialogFragment.kt",
"chars": 3166,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/preference/PluginPreference.kt",
"chars": 3418,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/preference/PluginPreferenceDialogFragment.kt",
"chars": 6641,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/subscription/SubscriptionFragment.kt",
"chars": 11243,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/tasker/ActionListener.kt",
"chars": 2269,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/tasker/ConfigActivity.kt",
"chars": 5601,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/tasker/Settings.kt",
"chars": 3026,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/widget/FabProgressBehavior.kt",
"chars": 2543,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/widget/ServiceButton.kt",
"chars": 7437,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/widget/StatsBar.kt",
"chars": 5153,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/widget/UndoSnackbarManager.kt",
"chars": 3135,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/java/com/github/shadowsocks/widget/WindowInsetsListeners.kt",
"chars": 3128,
"preview": "/*******************************************************************************\n * "
},
{
"path": "mobile/src/main/res/color/background_service.xml",
"chars": 260,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "mobile/src/main/res/color/nav_item_tint.xml",
"chars": 263,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "mobile/src/main/res/drawable/background_profile.xml",
"chars": 985,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item"
},
{
"path": "mobile/src/main/res/drawable/background_selectable.xml",
"chars": 545,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item"
},
{
"path": "mobile/src/main/res/drawable/ic_action_assignment.xml",
"chars": 597,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_copyright.xml",
"chars": 1269,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_delete.xml",
"chars": 429,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_description.xml",
"chars": 484,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_dns.xml",
"chars": 655,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_done.xml",
"chars": 397,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_help_outline.xml",
"chars": 562,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_lock.xml",
"chars": 613,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_lock_open.xml",
"chars": 612,
"preview": "<vector android:autoMirrored=\"true\" android:height=\"24dp\"\n android:tint=\"?attr/colorControlNormal\"\n android:viewpo"
},
{
"path": "mobile/src/main/res/drawable/ic_action_note_add.xml",
"chars": 533,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_action_settings.xml",
"chars": 1209,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_app_shortcut_background.xml",
"chars": 830,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n Copyright 2017 Google Inc.\n\n Licensed under the Apache License, Version 2"
},
{
"path": "mobile/src/main/res/drawable/ic_av_playlist_add.xml",
"chars": 469,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_communication_phonelink_ring.xml",
"chars": 567,
"preview": "<vector android:autoMirrored=\"true\" android:height=\"24dp\"\n android:viewportHeight=\"24.0\" android:viewportWidth=\"24.0\""
},
{
"path": "mobile/src/main/res/drawable/ic_device_data_usage.xml",
"chars": 637,
"preview": "<vector android:autoMirrored=\"true\" android:height=\"24dp\"\n android:viewportHeight=\"24.0\" android:viewportWidth=\"24.0\""
},
{
"path": "mobile/src/main/res/drawable/ic_device_developer_mode.xml",
"chars": 607,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_file_cloud_queue.xml",
"chars": 612,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "mobile/src/main/res/drawable/ic_file_file_upload.xml",
"chars": 380,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_hardware_router.xml",
"chars": 702,
"preview": "<vector android:autoMirrored=\"true\" android:height=\"24dp\"\n android:viewportHeight=\"24.0\" android:viewportWidth=\"24.0\""
},
{
"path": "mobile/src/main/res/drawable/ic_image_camera_alt.xml",
"chars": 641,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_image_edit.xml",
"chars": 504,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_image_looks_6.xml",
"chars": 554,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_image_photo.xml",
"chars": 473,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_maps_360.xml",
"chars": 561,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "mobile/src/main/res/drawable/ic_maps_directions.xml",
"chars": 539,
"preview": "<vector android:autoMirrored=\"true\" android:height=\"24dp\"\n android:viewportHeight=\"24.0\" android:viewportWidth=\"24.0\""
},
{
"path": "mobile/src/main/res/drawable/ic_maps_directions_boat.xml",
"chars": 843,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_navigation_apps.xml",
"chars": 465,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\"24dp\"\n "
},
{
"path": "mobile/src/main/res/drawable/ic_navigation_menu.xml",
"chars": 395,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_notification_enhanced_encryption.xml",
"chars": 565,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "mobile/src/main/res/drawable/ic_qu_camera_launcher.xml",
"chars": 498,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <ite"
},
{
"path": "mobile/src/main/res/drawable/ic_qu_shadowsocks_foreground.xml",
"chars": 475,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
}
]
// ... and 109 more files (download for full content)
About this extraction
This page contains the full source code of the shadowsocks/shadowsocks-android GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 309 files (1.6 MB), approximately 582.8k tokens, and a symbol index with 12 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.